62 TYPE(t_region
) :: region, regionsrc
66 INTEGER :: idum,
i,
j,
k, ijkbuff
69 INTEGER :: bctype,
ibeg,
iend,
jbeg,
jend,
kbeg, kend, inoff, ijnoff, ijkn, &
70 ijknb, n1, n2, ndim, dest,
tag, request, ibnd, jbnd, kbnd
71 INTEGER :: lb, l1srcdir, l2srcdir, l1beg, l1end, l1step, l2beg, l2end, l2step
75 REAL(RFREAL) :: v1(3), v2(3)
76 REAL(RFREAL),
POINTER :: xyz(:,:)
82 global => region%global
85 'RFLO_ExchangeGeometrySend.F90' )
89 IF (regionsrc%active == off)
THEN
90 CALL
errorstop( global,err_srcregion_off,__line__ )
99 xyz => region%levels(1)%grid%xyz
103 ndim = n1*n2*regionsrc%nDumCells
107 bctype =
patch%bcType
114 ELSE IF (
patch%srcL1beg ==
patch%srcL1end)
THEN
115 IF (lb==1 .OR. lb==2)
THEN
120 v2(:) = xyz(:,indijk(
ibeg,
jbeg,kend,inoff,ijnoff)) - &
123 ELSE IF (lb==3 .OR. lb==4)
THEN
125 v2(:) = xyz(:,indijk(
ibeg,
jbeg,kend,inoff,ijnoff)) - &
131 ELSE IF (lb==5 .OR. lb==6)
THEN
140 v1(:) =
patch%l1VecSrc(:)
147 ELSE IF (
patch%srcL2beg ==
patch%srcL2end)
THEN
148 IF (lb==1 .OR. lb==2)
THEN
150 v2(:) = xyz(:,indijk(
ibeg,
jbeg,kend,inoff,ijnoff)) - &
156 ELSE IF (lb==3 .OR. lb==4)
THEN
161 v2(:) = xyz(:,indijk(
ibeg,
jbeg,kend,inoff,ijnoff)) - &
164 ELSE IF (lb==5 .OR. lb==6)
THEN
173 v1(:) =
patch%l2VecSrc(:)
181 DO idum=1,regionsrc%nDumCells
185 IF (lb==1 .OR. lb==2)
THEN
190 ELSE IF (lb == 2)
THEN
196 IF (l1srcdir > 0)
THEN
204 IF (l2srcdir > 0)
THEN
212 IF ((bctype>=bc_regionconf .AND. bctype<=bc_regionconf+bc_range) .OR. &
213 (bctype>=bc_rot_peri .AND. bctype<=bc_rot_peri +bc_range))
THEN
214 DO k=l2beg,l2end,l2step
215 DO j=l1beg,l1end,l1step
216 ijkn = indijk(
i,
j,
k,inoff,ijnoff)
217 ijkbuff = ijkbuff + 1
218 patch%mixt%sendBuff(ijkbuff ) = xyz(xcoord,ijkn)
219 patch%mixt%sendBuff(ijkbuff+ ndim) = xyz(ycoord,ijkn)
220 patch%mixt%sendBuff(ijkbuff+2*ndim) = xyz(zcoord,ijkn)
223 ELSE IF (bctype>=bc_tra_peri .AND. bctype<=bc_tra_peri+bc_range)
THEN
224 DO k=l2beg,l2end,l2step
225 DO j=l1beg,l1end,l1step
226 ijkn = indijk(
i ,
j,
k,inoff,ijnoff)
227 ijknb = indijk(ibnd,
j,
k,inoff,ijnoff)
228 ijkbuff = ijkbuff + 1
229 patch%mixt%sendBuff(ijkbuff ) = xyz(xcoord,ijkn ) - &
231 patch%mixt%sendBuff(ijkbuff+ ndim) = xyz(ycoord,ijkn ) - &
233 patch%mixt%sendBuff(ijkbuff+2*ndim) = xyz(zcoord,ijkn ) - &
239 IF (l1srcdir > 0)
THEN
247 IF (l2srcdir > 0)
THEN
255 IF ((bctype>=bc_regionconf .AND. bctype<=bc_regionconf+bc_range) .OR. &
256 (bctype>=bc_rot_peri .AND. bctype<=bc_rot_peri +bc_range))
THEN
257 DO j=l2beg,l2end,l2step
258 DO k=l1beg,l1end,l1step
259 ijkn = indijk(
i,
j,
k,inoff,ijnoff)
260 ijkbuff = ijkbuff + 1
261 patch%mixt%sendBuff(ijkbuff ) = xyz(xcoord,ijkn)
262 patch%mixt%sendBuff(ijkbuff+ ndim) = xyz(ycoord,ijkn)
263 patch%mixt%sendBuff(ijkbuff+2*ndim) = xyz(zcoord,ijkn)
266 ELSE IF (bctype>=bc_tra_peri .AND. bctype<=bc_tra_peri+bc_range)
THEN
267 DO j=l2beg,l2end,l2step
268 DO k=l1beg,l1end,l1step
269 ijkn = indijk(
i ,
j,
k,inoff,ijnoff)
270 ijknb = indijk(ibnd,
j,
k,inoff,ijnoff)
271 ijkbuff = ijkbuff + 1
272 patch%mixt%sendBuff(ijkbuff ) = xyz(xcoord,ijkn ) - &
274 patch%mixt%sendBuff(ijkbuff+ ndim) = xyz(ycoord,ijkn ) - &
276 patch%mixt%sendBuff(ijkbuff+2*ndim) = xyz(zcoord,ijkn ) - &
285 ELSE IF (lb==3 .OR. lb==4)
THEN
290 ELSE IF (lb == 4)
THEN
296 IF (l1srcdir > 0)
THEN
304 IF (l2srcdir > 0)
THEN
312 IF ((bctype>=bc_regionconf .AND. bctype<=bc_regionconf+bc_range) .OR. &
313 (bctype>=bc_rot_peri .AND. bctype<=bc_rot_peri +bc_range))
THEN
314 DO i=l2beg,l2end,l2step
315 DO k=l1beg,l1end,l1step
316 ijkn = indijk(
i,
j,
k,inoff,ijnoff)
317 ijkbuff = ijkbuff + 1
318 patch%mixt%sendBuff(ijkbuff ) = xyz(xcoord,ijkn)
319 patch%mixt%sendBuff(ijkbuff+ ndim) = xyz(ycoord,ijkn)
320 patch%mixt%sendBuff(ijkbuff+2*ndim) = xyz(zcoord,ijkn)
323 ELSE IF (bctype>=bc_tra_peri .AND. bctype<=bc_tra_peri+bc_range)
THEN
324 DO i=l2beg,l2end,l2step
325 DO k=l1beg,l1end,l1step
326 ijkn = indijk(
i,
j ,
k,inoff,ijnoff)
327 ijknb = indijk(
i,jbnd,
k,inoff,ijnoff)
328 ijkbuff = ijkbuff + 1
329 patch%mixt%sendBuff(ijkbuff ) = xyz(xcoord,ijkn ) - &
331 patch%mixt%sendBuff(ijkbuff+ ndim) = xyz(ycoord,ijkn ) - &
333 patch%mixt%sendBuff(ijkbuff+2*ndim) = xyz(zcoord,ijkn ) - &
339 IF (l1srcdir > 0)
THEN
347 IF (l2srcdir > 0)
THEN
355 IF ((bctype>=bc_regionconf .AND. bctype<=bc_regionconf+bc_range) .OR. &
356 (bctype>=bc_rot_peri .AND. bctype<=bc_rot_peri +bc_range))
THEN
357 DO k=l2beg,l2end,l2step
358 DO i=l1beg,l1end,l1step
359 ijkn = indijk(
i,
j,
k,inoff,ijnoff)
360 ijkbuff = ijkbuff + 1
361 patch%mixt%sendBuff(ijkbuff ) = xyz(xcoord,ijkn)
362 patch%mixt%sendBuff(ijkbuff+ ndim) = xyz(ycoord,ijkn)
363 patch%mixt%sendBuff(ijkbuff+2*ndim) = xyz(zcoord,ijkn)
366 ELSE IF (bctype>=bc_tra_peri .AND. bctype<=bc_tra_peri+bc_range)
THEN
367 DO k=l2beg,l2end,l2step
368 DO i=l1beg,l1end,l1step
369 ijkn = indijk(
i,
j ,
k,inoff,ijnoff)
370 ijknb = indijk(
i,jbnd,
k,inoff,ijnoff)
371 ijkbuff = ijkbuff + 1
372 patch%mixt%sendBuff(ijkbuff ) = xyz(xcoord,ijkn ) - &
374 patch%mixt%sendBuff(ijkbuff+ ndim) = xyz(ycoord,ijkn ) - &
376 patch%mixt%sendBuff(ijkbuff+2*ndim) = xyz(zcoord,ijkn ) - &
385 ELSE IF (lb==5 .OR. lb==6)
THEN
390 ELSE IF (lb == 6)
THEN
396 IF (l1srcdir > 0)
THEN
404 IF (l2srcdir > 0)
THEN
412 IF ((bctype>=bc_regionconf .AND. bctype<=bc_regionconf+bc_range) .OR. &
413 (bctype>=bc_rot_peri .AND. bctype<=bc_rot_peri +bc_range))
THEN
414 DO j=l2beg,l2end,l2step
415 DO i=l1beg,l1end,l1step
416 ijkn = indijk(
i,
j,
k,inoff,ijnoff)
417 ijkbuff = ijkbuff + 1
418 patch%mixt%sendBuff(ijkbuff ) = xyz(xcoord,ijkn)
419 patch%mixt%sendBuff(ijkbuff+ ndim) = xyz(ycoord,ijkn)
420 patch%mixt%sendBuff(ijkbuff+2*ndim) = xyz(zcoord,ijkn)
423 ELSE IF (bctype>=bc_tra_peri .AND. bctype<=bc_tra_peri+bc_range)
THEN
424 DO j=l2beg,l2end,l2step
425 DO i=l1beg,l1end,l1step
426 ijkn = indijk(
i,
j,
k ,inoff,ijnoff)
427 ijknb = indijk(
i,
j,kbnd,inoff,ijnoff)
428 ijkbuff = ijkbuff + 1
429 patch%mixt%sendBuff(ijkbuff ) = xyz(xcoord,ijkn ) - &
431 patch%mixt%sendBuff(ijkbuff+ ndim) = xyz(ycoord,ijkn ) - &
433 patch%mixt%sendBuff(ijkbuff+2*ndim) = xyz(zcoord,ijkn ) - &
439 IF (l1srcdir > 0)
THEN
447 IF (l2srcdir > 0)
THEN
455 IF ((bctype>=bc_regionconf .AND. bctype<=bc_regionconf+bc_range) .OR. &
456 (bctype>=bc_rot_peri .AND. bctype<=bc_rot_peri +bc_range))
THEN
457 DO i=l2beg,l2end,l2step
458 DO j=l1beg,l1end,l1step
459 ijkn = indijk(
i,
j,
k,inoff,ijnoff)
460 ijkbuff = ijkbuff + 1
461 patch%mixt%sendBuff(ijkbuff ) = xyz(xcoord,ijkn)
462 patch%mixt%sendBuff(ijkbuff+ ndim) = xyz(ycoord,ijkn)
463 patch%mixt%sendBuff(ijkbuff+2*ndim) = xyz(zcoord,ijkn)
466 ELSE IF (bctype>=bc_tra_peri .AND. bctype<=bc_tra_peri+bc_range)
THEN
467 DO i=l2beg,l2end,l2step
468 DO j=l1beg,l1end,l1step
469 ijkn = indijk(
i,
j,
k ,inoff,ijnoff)
470 ijknb = indijk(
i,
j,kbnd,inoff,ijnoff)
471 ijkbuff = ijkbuff + 1
472 patch%mixt%sendBuff(ijkbuff ) = xyz(xcoord,ijkn ) - &
474 patch%mixt%sendBuff(ijkbuff+ ndim) = xyz(ycoord,ijkn ) - &
476 patch%mixt%sendBuff(ijkbuff+2*ndim) = xyz(zcoord,ijkn ) - &
490 dest = regionsrc%procid
491 tag = regionsrc%localNumber + mpi_patchoff*
patch%srcPatch
492 CALL mpi_isend(
patch%mixt%sendBuff,3*ndim,mpi_rfreal,dest,
tag, &
493 global%mpiComm,global%requests(
patch%mixt%iRequest), &
495 IF (global%mpierr /= 0) CALL
errorstop( global,err_mpi_trouble,__line__ )
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE ibeg
subroutine registerfunction(global, funName, fileName)
subroutine rflo_exchangegeometrysend(region, regionSrc, patch)
subroutine rflo_getnodeoffset(region, iLev, iNodeOffset, ijNodeOffset)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE knode iend
subroutine rflo_getpatchindicesnodes(region, patch, iLev, ibeg, iend, jbeg, jend, kbeg, kend)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE knode jend
subroutine errorstop(global, errorCode, errorLine, addMessage)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE knode jbeg
long double dot_product(pnt vec1, pnt vec2)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE knode kbeg
subroutine deregisterfunction(global)