8 #include <petsc/finclude/petsc.h>
23 integer(kind=intType) :: nrow, ncol, nnz, nnzlocal
24 integer(kind=intType),
dimension(:),
pointer :: colind, rowptr
25 real(kind=realtype),
dimension(:),
pointer ::
data
26 integer(Kind=intType),
dimension(:),
pointer :: assignedproc
29 logical :: allocated = .false.
38 integer(kind=intType) :: il, jl, kl
41 integer(kind=intType) :: cluster
44 real(kind=realtype),
dimension(:, :),
pointer :: qualdonor
47 integer(kind=intType),
dimension(:, :),
pointer :: hexaconn
50 real(kind=realtype),
dimension(:, :),
pointer :: xadt
53 integer(kind=intType),
dimension(:, :, :),
pointer :: globalcell
56 integer(kind=intType),
dimension(:, :, :),
pointer :: nearwall
59 integer(kind=intType),
dimension(:, :, :),
pointer :: invaliddonor
62 real(kind=realtype) :: minvol
68 integer(kind=intType) :: proc
74 real(kind=realtype),
dimension(:),
allocatable :: rbuffer
75 integer(kind=intType),
dimension(:),
allocatable :: ibuffer
78 logical :: allocated = .false.
81 logical :: realbufferready = .false.
82 logical :: intbufferready = .false.
89 integer(kind=intType) :: proc
95 integer(kind=intType) :: il, jl, kl, nx, ny, nz
98 integer(kind=intType) :: cluster
101 real(kind=realtype),
dimension(:),
allocatable :: rbuffer
102 integer(kind=intType),
dimension(:),
allocatable :: ibuffer
105 real(kind=realtype),
dimension(:, :),
allocatable :: x
108 real(kind=realtype),
dimension(:, :),
allocatable :: xseed
111 integer(kind=intType),
dimension(:),
allocatable :: wallind
115 integer(kind=intType),
dimension(:),
allocatable :: iswall
119 integer(kind=intType) :: ndonor = 0
120 integer(kind=intType),
dimension(:, :),
pointer :: fringeintbuffer => null()
121 real(kind=realtype),
dimension(:, :),
pointer :: fringerealbuffer => null()
124 logical :: allocated = .false.
127 logical :: realbufferready = .false.
128 logical :: intbufferready = .false.
131 integer(kind=intType) :: fringereturnsize = 0
138 integer(kind=intType) :: il, jl, kl
139 integer(kind=intType) :: nnodes = 0
140 integer(kind=intType) :: ncells = 0
141 integer(kind=intType) :: maxcells = 0
142 integer(kind=intType) :: cluster = 0
145 real(kind=realtype),
dimension(:),
allocatable :: rbuffer
146 integer(kind=intType),
dimension(:),
allocatable :: ibuffer
149 real(kind=realtype),
dimension(:, :),
pointer :: x => null()
153 real(kind=realtype),
dimension(:, :),
pointer :: xprimalcen => null()
157 real(kind=realtype),
dimension(:, :),
pointer :: norm => null()
160 real(kind=realtype),
dimension(:),
pointer :: delta => null()
163 integer(kind=intType),
dimension(:, :),
pointer :: conn => null()
166 integer(kind=intType),
dimension(:),
pointer :: ind => null()
170 integer(kind=intType),
dimension(:),
pointer :: indprimal => null()
173 integer(kind=intType),
dimension(:),
pointer :: indcell
176 integer(kind=intType),
dimension(:),
allocatable :: iblank
177 integer(kind=intType),
dimension(:),
allocatable :: cellptr
180 integer(kind=intType),
dimension(:, :),
allocatable :: nte
189 logical :: realbufferready = .false.
190 logical :: intbufferready = .false.
193 logical :: allocated = .false.
202 integer(kind=intType) :: nnodes, nelems
205 integer(kind=intType) :: myid
208 logical :: isperiodic = .false.
211 logical :: ispocket = .false.
217 real(kind=realtype),
dimension(:, :),
pointer :: nodedata => null()
220 real(kind=realtype),
dimension(:, :),
pointer :: x => null()
223 real(kind=realtype),
dimension(:, :),
pointer :: norm => null()
226 real(kind=realtype),
dimension(:, :),
pointer :: perpnorm => null()
229 real(kind=realtype),
dimension(:),
pointer :: h => null()
234 integer(kind=intType),
dimension(:, :),
pointer :: intnodedata => null()
237 integer(kind=intType),
dimension(:),
pointer :: ind => null()
240 integer(kind=intType),
dimension(:),
pointer :: cluster => null()
243 integer(kind=intType),
dimension(:),
pointer :: family => null()
247 integer(kind=intType),
dimension(:, :),
pointer :: conn => null()
250 integer(kind=intType),
dimension(:),
pointer :: pnodes => null()
253 integer(kind=intType),
dimension(:),
pointer :: pelems => null()
256 integer(kind=intType),
dimension(:, :),
pointer :: cnodes => null()
260 integer(kind=intType),
dimension(:, :),
pointer :: otherid => null()
265 integer(kind=intType),
dimension(:, :),
pointer :: nte => null()
269 integer(kind=intType),
dimension(:, :),
pointer :: substr => null()
272 integer(kind=intType),
dimension(2) :: nsubstr
276 integer(kind=intType),
dimension(:),
pointer :: elemused => null()
280 integer(kind=intType),
dimension(:),
pointer :: xzipnodeused => null()
296 integer(kind=intTYpe) :: nedges
299 integer(kind=intType),
dimension(:, :),
pointer :: tris => null()
302 integer(kind=intType) :: ntris
306 integer(kind=intType),
dimension(:),
pointer :: surfcellid
312 integer(kind=intType) :: n1, n2
315 interface operator(<=)
317 end interface operator(<=)
319 interface operator(<)
321 end interface operator(<)
327 integer(kind=intType) :: n1, n2
330 interface operator(<=)
332 end interface operator(<=)
334 interface operator(<)
336 end interface operator(<)
338 interface operator(==)
340 end interface operator(==)
345 integer(kind=intType),
dimension(:, :),
allocatable :: conn
346 integer(kind=intType),
dimension(:),
allocatable :: fam, indices
347 logical :: allocated = .false.
349 vecscatter :: scatter
367 integer(kind=intType),
dimension(:),
allocatable ::
clusters
379 real(kind=realtype),
dimension(iTotal) ::
tstart
399 integer(kind=intType) :: nsum1, nsum2, ndiff1, ndiff2
403 nsum1 = e1%n1 + e1%n2
404 nsum2 = e2%n1 + e2%n2
405 ndiff1 = e1%n2 - e1%n1
406 ndiff2 = e2%n2 - e2%n1
409 if (abs(nsum1) < abs(nsum2))
then
412 else if (abs(nsum1) > abs(nsum2))
then
417 if (abs(nsum1) /= abs(nsum2)) &
418 stop
' *** Error in lessEqualEdgeType ***'
421 if (abs(ndiff1) < abs(ndiff2))
then
424 else if (abs(ndiff1) > abs(ndiff2))
then
431 if (ndiff1 < ndiff2)
then
434 else if (ndiff1 > ndiff2)
then
459 integer(kind=intType) :: nsum1, nsum2, ndiff1, ndiff2
463 nsum1 = e1%n1 + e1%n2
464 nsum2 = e2%n1 + e2%n2
465 ndiff1 = e1%n2 - e1%n1
466 ndiff2 = e2%n2 - e2%n1
469 if (abs(nsum1) < abs(nsum2))
then
472 else if (abs(nsum1) > abs(nsum2))
then
477 if (abs(nsum1) /= abs(nsum2)) &
478 stop
' *** Error in lessEdgeType ***'
481 if (abs(ndiff1) < abs(ndiff2))
then
484 else if (abs(ndiff1) > abs(ndiff2))
then
491 if (ndiff1 < ndiff2)
then
494 else if (ndiff1 > ndiff2)
then
515 if (e1%n2 < e2%n2)
then
518 else if (e1%n2 > e2%n2)
then
538 if (e1%N2 < e2%N2)
then
541 else if (e1%N2 > e2%N2)
then
561 if (e1%N2 == e2%N2)
then
real(kind=realtype), dimension(:), allocatable clusterareas
real(kind=realtype), dimension(itotal) oversettimes
logical function lessequalpocketedgen2(e1, e2)
integer(kind=inttype), dimension(:), allocatable ndomproc
logical function equalpocketedgen2(e1, e2)
integer(kind=inttype) nclusters
type(zippermesh), dimension(nfamexchange), target zippermeshes
type(fringetype), dimension(:), pointer localwallfringes
integer(kind=inttype) nwallfringe
type(fringetype), dimension(:), pointer wallfringes
logical function lesspocketedgen2(e1, e2)
integer(kind=inttype) nlocalwallfringe
integer(kind=inttype) ndomtotal
type(fringetype), dimension(:), pointer tmpfringeptr
type(oversetwall), dimension(:), allocatable, target clusterwalls
logical function lessequaledgetype(e1, e2)
real(kind=realtype), dimension(itotal) tstart
integer(kind=inttype), dimension(:), allocatable cumdomproc
logical function lessedgetype(e1, e2)
integer(kind=inttype), dimension(:), allocatable clusters
real(kind=realtype), dimension(:), allocatable clustermarchdist
type(csrmatrix), dimension(:, :), allocatable, target overlapmatrix