53 open(4, file=file, action=
'write')
55 write(4,
'("graph G {")')
56 write(4,
'("node [color=black,")')
57 write(4,
'("fillcolor=white,")')
58 write(4,
'("shape=circle,")')
59 write(4,
'("style=filled")')
62 if(parent(i) .ne. 0)
then 63 write(4,
'(i6," -- ",i6)')parent(i),i
101 character :: file*(*)
102 integer :: parent(:), rc(:)
106 integer,
allocatable :: nvar(:)
107 real(kind(1.d0)) :: s
113 if(parent(i) .lt. 0)
then 114 nvar(-parent(i)) = nvar(-parent(i))+1
115 if(nvar(-parent(i)) .gt. maxnv) maxnv=nvar(-parent(i))
120 open(4, file=file, action=
'write')
122 write(4,
'("graph G {")')
123 write(4,
'("node [color=black,")')
124 write(4,
'("fillcolor=white,")')
125 write(4,
'("shape=circle,")')
126 write(4,
'("style=filled")')
130 if(parent(i) .ge. 0)
then 131 s = 5.d0/(
real(maxnv,kind(1.d0))/
real(nvar(i),kind(1.d0)) )
132 write(4,
'("node",i6.6,"[label="" node:",i6,"\n rc:",i6,'//&
133 &
'"\n nv:",i6,""", shape=circle, height=",i6.6,",'// &
134 &
'fontsize=",i6.6,"];")')i,i,rc(i),nvar(i),nvar(i),20*nvar(i)
139 if(parent(i) .gt. 0)
then 140 write(4,
'("node",i6.6," -- node",i6.6)')parent(i),i
141 else if (parent(i) .eq. 0)
then 142 write(4,
'("node",i6.6)')i
170 character :: file*(*)
171 real(kind(1.d0)),
optional :: weight(:)
174 integer,
allocatable :: tmp(:)
177 open(4, file=file, action=
'write')
179 write(4,
'("graph G {")')
180 write(4,
'("node [color=black,")')
181 write(4,
'("fillcolor=white,")')
182 write(4,
'("shape=circle,")')
183 write(4,
'("style=filled")')
186 if(
present(weight))
then 193 if(adata%small(i) .eq. 1)
then 194 write(4,
'("node",i6.6,"[fillcolor=red, label="" node:",i6,"\n m:",i6,"\n n:",'//&
195 &
'i6,"\n np:",i6,"\n pv:",i6,"\n w:",f4.1,"% ""];")')i,i,adata%nfrows(i),adata%rc(i),&
196 &adata%cp_ptr(i+1)-adata%cp_ptr(i),adata%cperm(adata%cp_ptr(i)), weight(i)
201 if((p .gt. 0) .and. (tmp(p) .eq.0))
then 202 write(4,
'("node",i6.6,"[label="" node:",i6,"\n m:",i6,"\n n:",'//&
203 &
'i6,"\n np:",i6,"\n pv:",i6,"\n w:",f4.1,"% ""];")')p,p,adata%nfrows(p),adata%rc(p),&
204 &adata%cp_ptr(p+1)-adata%cp_ptr(p),adata%cperm(adata%cp_ptr(p)), weight(p)
216 if(adata%small(i) .eq. 1)
then 220 if (tmp(n) .eq. 0)
then 222 write(4,
'("node",i6.6," -- node",i6.6)')p,n
225 else if (p .eq. 0)
then 226 write(4,
'("node",i6.6)')n
241 if(adata%small(i) .eq. 1)
then 242 write(4,
'("node",i6.6,"[fillcolor=red, label="" node:",i6,"\n m:",i6,"\n n:",'//&
243 &
'i6,"\n np:",i6,"\n pv:",i6,"\n w:",f4.1,"% ""];")')i,i,adata%nfrows(i),adata%rc(i),&
244 &adata%cp_ptr(i+1)-adata%cp_ptr(i),adata%cperm(adata%cp_ptr(i)),weight(i)
246 write(4,
'("node",i6.6,"[label="" node:",i6,"\n m:",i6,"\n n:",'//&
247 &
'i6,"\n np:",i6,"\n pv:",i6,"\n w:",f4.1,"% ""];")')i,i,adata%nfrows(i),adata%rc(i),&
248 &adata%cp_ptr(i+1)-adata%cp_ptr(i),adata%cperm(adata%cp_ptr(i)),weight(i)
253 if(adata%parent(i) .gt. 0)
then 254 write(4,
'("node",i6.6," -- node",i6.6)')adata%parent(i),i
255 else if (adata%parent(i) .eq. 0)
then 256 write(4,
'("node",i6.6)')i
261 if(adata%nnodes .gt. 10)
then 266 if(adata%small(i) .eq. 1)
then 267 write(4,
'("node",i6.6,"[fillcolor=red, label="" node:",i6,"\n m:",i6,"\n n:",'//&
268 &
'i6,"\n np:",i6,"\n pv:",i6,"""];")')i,i,adata%nfrows(i),adata%rc(i),&
269 &adata%cp_ptr(i+1)-adata%cp_ptr(i),adata%cperm(adata%cp_ptr(i))
274 if((p .gt. 0) .and. (tmp(p) .eq.0))
then 275 write(4,
'("node",i6.6,"[label="" node:",i6,"\n m:",i6,"\n n:",'//&
276 &
'i6,"\n np:",i6,"\n pv:",i6,"""];")')p,p,adata%nfrows(p),adata%rc(p),&
277 &adata%cp_ptr(p+1)-adata%cp_ptr(p),adata%cperm(adata%cp_ptr(p))
289 if(adata%small(i) .eq. 1)
then 293 if (tmp(n) .eq. 0)
then 295 write(4,
'("node",i6.6," -- node",i6.6)')p,n
298 else if (p .eq. 0)
then 299 write(4,
'("node",i6.6)')n
314 if(adata%small(i) .eq. 1)
then 315 write(4,
'("node",i6.6,"[fillcolor=red, label="" node:",i6,"\n m:",i6,"\n n:",'//&
316 &
'i6,"\n np:",i6,"\n pv:",i6,"""];")')i,i,adata%nfrows(i),adata%rc(i),&
317 &adata%cp_ptr(i+1)-adata%cp_ptr(i),adata%cperm(adata%cp_ptr(i))
319 write(4,
'("node",i6.6,"[label="" node:",i6,"\n m:",i6,"\n n:",'//&
320 &
'i6,"\n np:",i6,"\n pv:",i6,"""];")')i,i,adata%nfrows(i),adata%rc(i),&
321 &adata%cp_ptr(i+1)-adata%cp_ptr(i),adata%cperm(adata%cp_ptr(i))
326 if(adata%parent(i) .gt. 0)
then 327 write(4,
'("node",i6.6," -- node",i6.6)')adata%parent(i),i
328 else if (adata%parent(i) .eq. 0)
then 329 write(4,
'("node",i6.6)')i
subroutine qrm_print_asm_tree(file, parent, rc, n)
This subroutine prints on a file the assembly tree described by a parent and a postorder arrays...
Generic interface for the qrm_adealloc_i, qrm_adealloc_2i, qrm_adealloc_s, qrm_adealloc_2s, qrm_adealloc_3s, qrm_adealloc_d, qrm_adealloc_2d, qrm_adealloc_3d, qrm_adealloc_c, qrm_adealloc_2c, qrm_adealloc_3c, qrm_adealloc_z, qrm_adealloc_2z, qrm_adealloc_3z, routines.
subroutine qrm_print_nsteps_tree(file, adata, weight)
prints an assembly tree in compressed format
This module contains the definition of the analysis data type.
subroutine qrm_print_elim_tree(file, parent, n)
This subroutine prints on a file the elimination tree described by a parent array. The tree is written in "dot" format (see graphviz)
The main data type for the analysis phase.
Generic interface for the qrm_aalloc_i, qrm_aalloc_2i, qrm_aalloc_s, qrm_aalloc_2s, qrm_aalloc_3s, qrm_aalloc_d, qrm_aalloc_2d, qrm_aalloc_3d, qrm_aalloc_c, qrm_aalloc_2c, qrm_aalloc_3c, qrm_aalloc_z, qrm_aalloc_2z, qrm_aalloc_3z, routines.
This module implements the memory handling routines. Pretty mucch allocations and deallocations...