72 TYPE(t_region
),
POINTER :: pregion,pregionserial
79 CHARACTER(CHRLEN) :: rcsidentstring
80 INTEGER :: errorflag,icg,icgs,icgsmax,icgsmin,icgsnzpcllow,icgsnzpclmax, &
81 icgsnzpclmin,icgsnzpclupp,icl,iloc,ipclpercellcsr, &
82 ipclpercellcsrlow,ipclpercellcsrupp,ipclserial,isc2pc,isc2pclow, &
84 REAL(RFREAL) :: delfrac,xdel,
xmax,
xmin,xpcl,xpclmax,xpclmin,ydel,
ymax,
ymin, &
85 ypcl,ypclmax,ypclmin,zdel,
zmax,
zmin,zpcl,zpclmax,zpclmin
87 TYPE(t_grid),
POINTER :: pgrid
88 TYPE(t_plag),
POINTER :: pplag,pplagserial
95 '$RCSfile: PLAG_RFLU_InitSolFromSerial.F90,v $ $Revision: 1.7 $'
97 global => pregion%global
100 'PLAG_RFLU_InitSolFromSerial.F90')
102 IF ( global%verbLevel > verbose_none )
THEN
103 WRITE(stdout,
'(A,1X,A)') solver_name,
'Initializing particle solution '// &
104 'from serial region...'
105 WRITE(stdout,
'(A,3X,A,1X,I5.5)') solver_name,
'Global region:', &
106 pregion%iRegionGlobal
113 pgrid => pregion%grid
114 pplag => pregion%plag
115 pplagserial => pregionserial%plag
121 delfrac = 0.05_rfreal
127 xmin = minval(pgrid%xyz(xcoord,1:pgrid%nVert))
128 xmax = maxval(pgrid%xyz(xcoord,1:pgrid%nVert))
129 ymin = minval(pgrid%xyz(ycoord,1:pgrid%nVert))
130 ymax = maxval(pgrid%xyz(ycoord,1:pgrid%nVert))
131 zmin = minval(pgrid%xyz(zcoord,1:pgrid%nVert))
132 zmax = maxval(pgrid%xyz(zcoord,1:pgrid%nVert))
149 xpclmin = huge(1.0_rfreal)
150 xpclmax = -huge(1.0_rfreal)
151 ypclmin = huge(1.0_rfreal)
152 ypclmax = -huge(1.0_rfreal)
153 zpclmin = huge(1.0_rfreal)
154 zpclmax = -huge(1.0_rfreal)
156 DO ipclserial = 1,pplagserial%nPcls
157 xpclmin =
min(xpclmin,pplagserial%cv(cv_plag_xpos,ipclserial))
158 xpclmax =
max(xpclmax,pplagserial%cv(cv_plag_xpos,ipclserial))
159 ypclmin =
min(ypclmin,pplagserial%cv(cv_plag_ypos,ipclserial))
160 ypclmax =
max(ypclmax,pplagserial%cv(cv_plag_ypos,ipclserial))
161 zpclmin =
min(zpclmin,pplagserial%cv(cv_plag_zpos,ipclserial))
162 zpclmax =
max(zpclmax,pplagserial%cv(cv_plag_zpos,ipclserial))
170 IF ( ((xpclmin <
xmax) .AND. (ypclmin <
ymax) .AND. (zpclmin <
zmax)) .AND. &
171 ((xpclmax >
xmin) .AND. (ypclmax >
ymin) .AND. (zpclmax >
zmin)) )
THEN
190 icgsnzpclmin = pplagserial%icgNzPcl(1)
191 icgsnzpclmax = pplagserial%icgNzPcl(pplagserial%nCellsNzPcl)
193 icgsmin = pgrid%sc2pc(1,1)
194 icgsmax = pgrid%sc2pc(1,pgrid%nCells)
202 IF ( (icgsnzpclmin < icgsmax) .AND. (icgsnzpclmax > icgsmin) )
THEN
205 IF ( iloc == element_not_found )
THEN
206 isc2pclow =
max(1,
min(
j,pgrid%nCells))
213 IF ( iloc == element_not_found )
THEN
214 isc2pcupp =
max(1,
min(
j,pgrid%nCells))
220 pplagserial%nCellsNzPcl,icgsmin,iloc,
j)
221 IF ( iloc == element_not_found )
THEN
222 icgsnzpcllow =
max(1,
min(
j,pgrid%nCells))
228 pplagserial%nCellsNzPcl,icgsmax,iloc,
j)
229 IF ( iloc == element_not_found )
THEN
230 icgsnzpclupp =
max(1,
min(
j,pgrid%nCells))
244 DO isc2pc = isc2pclow,isc2pcupp
245 icgs = pgrid%sc2pc(1,isc2pc)
248 icgsnzpclupp-icgsnzpcllow+1,icgs,iloc)
250 IF ( iloc /= element_not_found )
THEN
251 iloc = iloc + icgsnzpcllow - 1
254 ipclpercellcsrlow = pplagserial%iPclPerCellCSRInfo(iloc-1)+1
256 ipclpercellcsrlow = 1
259 ipclpercellcsrupp = pplagserial%iPclPerCellCSRInfo(iloc)
261 DO ipclpercellcsr = ipclpercellcsrlow,ipclpercellcsrupp
262 ipclserial = pplagserial%iPclPerCellCSR(ipclpercellcsr)
264 pplag%nPcls = pplag%nPcls + 1
266 DO ivar = 1,pregion%plag%nCv
267 pplag%cv(ivar,pplag%nPcls) = pplagserial%cv(ivar,ipclserial)
270 DO ivar = 1,pregion%plag%nArv
271 pplag%arv(ivar,pplag%nPcls) = pplagserial%arv(ivar,ipclserial)
274 DO ivar = 1,pregion%plag%nAiv
275 pplag%aiv(ivar,pplag%nPcls) = pplagserial%aiv(ivar,ipclserial)
278 pplag%aiv(aiv_plag_icells,pplag%nPcls) = pgrid%sc2pc(2,isc2pc)
279 pplag%aiv(aiv_plag_regini,pplag%nPcls) = pregion%iRegionGlobal
281 IF ( pplagserial%aiv(aiv_plag_regini,ipclserial) /= 0 )
THEN
282 CALL
errorstop(global,err_plag_dstr_invalid,__line__)
284 pplagserial%aiv(aiv_plag_regini,ipclserial) = &
285 pregion%iRegionGlobal
299 IF ( global%verbLevel > verbose_low )
THEN
300 WRITE(stdout,
'(A,3X,A,1X,I6)') solver_name,
'Number of particles:', &
308 IF ( global%verbLevel > verbose_none )
THEN
309 WRITE(stdout,
'(A,1X,A)') solver_name,
'Initializing particle solution '// &
310 'from serial region done.'
subroutine, public rflu_rnmb_readpxx2sxxmaps(pRegion)
subroutine, public rflu_rnmb_destroypbf2sbfmap(pRegion)
Vector_n max(const Array_n_const &v1, const Array_n_const &v2)
subroutine plag_rflu_initsolfromserial(pRegion, pRegionSerial)
subroutine registerfunction(global, funName, fileName)
subroutine binarysearchinteger(a, n, v, i, j)
subroutine, public rflu_rnmb_buildsc2pcmap(pRegion, sortFlag)
subroutine, public rflu_rnmb_destroysc2pcmap(pRegion)
subroutine, public rflu_rnmb_destroypv2svmap(pRegion)
subroutine, public rflu_rnmb_createpc2scmap(pRegion)
Vector_n min(const Array_n_const &v1, const Array_n_const &v2)
subroutine, public rflu_rnmb_createpv2svmap(pRegion)
subroutine errorstop(global, errorCode, errorLine, addMessage)
subroutine, public rflu_rnmb_createpbf2sbfmap(pRegion)
subroutine deregisterfunction(global)