71 CHARACTER(CHRLEN) :: rcsidentstring = &
72 '$RCSfile: RFLO_ModMoveGridNconform.F90,v $ $Revision: 1.37 $'
111 include
'roccomf90.h'
115 TYPE(t_region
),
POINTER :: regions(:)
118 INTEGER :: ireg, iter, ipatch, ijk
121 LOGICAL :: somemoved, someremesh
123 INTEGER :: bctype, iremesh, jremesh, nremesh, itype
125 REAL(RFREAL) :: resid, globalresid
126 REAL(RFREAL),
POINTER :: xyz(:,:), xyzold(:,:)
132 DOUBLE PRECISION :: dalpha
137 global => regions(1)%global
140 'RFLO_ModMoveGridNconform.F90' )
147 dalpha = global%dtMin/global%dTimeSystem
148 CALL com_call_function( global%genxHandleGm,1,dalpha )
163 DO ireg=1,global%nRegions
164 IF (regions(ireg)%procid==global%myProcid .AND. &
165 regions(ireg)%active==active .AND. &
166 regions(ireg)%mixtInput%moveGrid)
THEN
170 grid => regions(ireg)%levels(1)%grid
171 gridold => regions(ireg)%levels(1)%gridOld
175 gridold%xyzOld,
grid%xyz )
188 IF (global%moveGridNiter < 1)
THEN
189 IF (global%verbLevel >= verbose_high)
THEN
190 IF (global%myProcid == masterproc)
THEN
191 WRITE(stdout,4000) solver_name,global%skewness,global%minVol
192 WRITE(stdout,1000) solver_name, global%moveGridNiter, &
193 global%moveGridAmplifX,global%moveGridAmplifY, &
194 global%moveGridAmplifZ,global%moveGridPower
201 DO iter=1,global%moveGridNiter
205 IF (global%verbLevel >= verbose_high)
THEN
207 CALL mpi_reduce( resid,globalresid,1,mpi_rfreal,mpi_sum, &
208 masterproc,global%mpiComm,global%mpierr )
209 IF (global%mpierr /= 0) CALL
errorstop( global,err_mpi_trouble,__line__ )
213 IF (global%myProcid == masterproc)
THEN
214 WRITE(stdout,4000) solver_name,global%skewness,global%minVol
216 IF (global%moveGridScheme==movegrid_frame)
THEN
217 WRITE(stdout,2000) solver_name, &
218 global%moveGridNiter, &
219 global%moveGridAmplifX,global%moveGridAmplifY, &
220 global%moveGridAmplifZ,global%moveGridPower, &
222 ELSEIF (global%moveGridScheme==movegrid_foms)
THEN
223 WRITE(stdout,3000) solver_name, &
224 global%moveGridNiter, &
225 global%moveGridAmplifX,global%moveGridAmplifY, &
226 global%moveGridAmplifZ,global%moveGridPower, &
227 global%moveGridWeight,global%moveGridOrthCell, &
236 DO ireg=1,global%nRegions
237 IF (regions(ireg)%procid==global%myProcid .AND. &
238 regions(ireg)%active==active .AND. &
239 regions(ireg)%mixtInput%moveGrid)
THEN
243 xyz => regions(ireg)%levels(1)%grid%xyz
244 xyzold => regions(ireg)%levels(1)%gridOld%xyz
246 DO ijk=lbound(xyz,2),ubound(xyz,2)
247 xyz(xcoord,ijk) = xyz(xcoord,ijk) - xyzold(xcoord,ijk)
248 xyz(ycoord,ijk) = xyz(ycoord,ijk) - xyzold(ycoord,ijk)
249 xyz(zcoord,ijk) = xyz(zcoord,ijk) - xyzold(zcoord,ijk)
254 grid => regions(ireg)%levels(1)%grid
255 gridold => regions(ireg)%levels(1)%gridOld
256 grid%boundMoved(:) = .true.
257 grid%edgeMoved(:) = .true.
258 DO ipatch=1,regions(ireg)%nPatches
259 patch => regions(ireg)%levels(1)%patches(ipatch)
260 bctype =
patch%bcType
264 IF ((bctype==bc_symmetry))
THEN
271 gridold%xyzOld,
grid%xyz )
278 gridold%xyzOld,
grid%xyz )
296 DO ireg=1,global%nRegions
297 IF (regions(ireg)%procid==global%myProcid .AND. &
298 regions(ireg)%active==active .AND. &
299 regions(ireg)%mixtInput%moveGrid)
THEN
303 IF (global%moveGridScheme==movegrid_foms) &
305 IF (regions(ireg)%mixtInput%faceEdgeAvg==fe_avg_linear) &
318 CALL mpi_allreduce( iremesh, nremesh, 1, mpi_integer, mpi_sum, &
319 global%mpiComm, global%mpierr )
320 IF (global%mpierr /=0 ) CALL
errorstop( global,err_mpi_trouble,__line__ )
321 IF (nremesh > 0) someremesh = .true.
326 DO ireg=1,global%nRegions
327 IF (regions(ireg)%procid==global%myProcid .AND. &
328 regions(ireg)%active==active .AND. &
333 IF (global%moveGridScheme==movegrid_foms) &
335 IF (regions(ireg)%mixtInput%faceEdgeAvg==fe_avg_linear) &
346 1000
FORMAT(
a,1
x,
'Global-TFI grid motion:',i6,4(1pe9.2))
347 2000
FORMAT(
a,1
x,
'Global-Weighted-Laplacian grid motion:',i6,4(1pe9.2),1pe13.4)
348 3000
FORMAT(
a,1
x,
'Global-Orthogonal-Laplacian gridmotion:',i4,6(1pe9.2),1pe10.2)
349 4000
FORMAT(
a,1
x,
'global skewness, minvol:',2(1pe14.5))
374 #include "Indexing.h"
377 TYPE(t_region
),
POINTER :: regions(:)
380 INTEGER :: l, ipatch, ireg, ipcorn, intcorn, nreg
383 INTEGER,
PARAMETER :: ncmax=100
386 INTEGER :: iptc, jptc, kptc, iblk, jblk, kblk, ijkcurr
387 INTEGER :: inoff, ijnoff, lbound, regnc, errfl
388 INTEGER,
ALLOCATABLE :: ivar(:), ijkcorn(:,:)
397 global => regions(1)%global
400 'RFLO_ModMoveGridNconform.F90' )
404 ALLOCATE( ivar(global%nRegions),stat=errfl )
406 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
408 ALLOCATE( ijkcorn(ncmax,global%nRegions),stat=errfl )
410 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
414 DO ireg = 1,global%nRegions
415 IF (regions(ireg)%procid==global%myProcid .AND. &
416 regions(ireg)%active==active)
THEN
418 grid => regions(ireg)%levels(ilev)%grid
426 grid%nCorns(ireg) = 8
428 ijkcorn(2,ireg) = indijk(
ipnbeg,
jpnbeg,kpnend,inoff,ijnoff)
429 ijkcorn(3,ireg) = indijk(
ipnbeg,
jpnend,kpnend,inoff,ijnoff)
432 ijkcorn(6,ireg) = indijk(
ipnend,
jpnbeg,kpnend,inoff,ijnoff)
433 ijkcorn(7,ireg) = indijk(
ipnend,
jpnend,kpnend,inoff,ijnoff)
436 DO ipatch=1,regions(ireg)%nPatches
437 patch => regions(ireg)%levels(ilev)%patches(ipatch)
438 lbound =
patch%lbound
444 IF (lbound==1 .OR. lbound==2)
THEN
446 IF (lbound==1) iblk =
ipnbeg
447 IF (lbound==2) iblk =
ipnend
453 ELSEIF (ipcorn==2)
THEN
458 ELSEIF (ipcorn==3)
THEN
463 ELSEIF (ipcorn==4)
THEN
469 ELSEIF (lbound==3 .OR. lbound==4)
THEN
471 IF (lbound==3) jblk =
jpnbeg
472 IF (lbound==4) jblk =
jpnend
478 ELSEIF (ipcorn==2)
THEN
483 ELSEIF (ipcorn==3)
THEN
488 ELSEIF (ipcorn==4)
THEN
494 ELSEIF (lbound==5 .OR. lbound==6)
THEN
496 IF (lbound==5) kblk =
kpnbeg
497 IF (lbound==6) kblk = kpnend
503 ELSEIF (ipcorn==2)
THEN
508 ELSEIF (ipcorn==3)
THEN
513 ELSEIF (ipcorn==4)
THEN
521 patch%corns(ipcorn) = indijk(iptc,jptc,kptc,inoff,ijnoff)
523 IF (iptc/=iblk .OR. jptc/=jblk .OR. kptc/=kblk)
THEN
525 ijkcurr = indijk(iptc,jptc,kptc,inoff,ijnoff)
526 DO intcorn=1,
grid%nCorns(ireg)
527 IF (ijkcorn(intcorn,ireg)==ijkcurr)
THEN
531 IF (.NOT. wasfound)
THEN
532 grid%nCorns(ireg) =
grid%nCorns(ireg) +1
533 ijkcorn(
grid%nCorns(ireg),ireg) = ijkcurr
536 IF (
grid%nCorns(ireg) >= ncmax)
THEN
537 CALL
errorstop( global,err_illegal_value,__line__, &
538 'too low ncMax in RFLO_ModMoveGridNconform/RFLO_MgFrameCornPoints')
543 ivar(ireg) =
grid%nCorns(ireg)
548 DO ireg = 1,global%nRegions
549 CALL mpi_bcast( ivar(ireg),1,mpi_integer, &
550 regions(ireg)%procId,global%mpiComm,global%mpierr )
551 IF (global%mpierr /=0 ) CALL
errorstop( global,err_mpi_trouble,__line__ )
553 CALL mpi_bcast( ijkcorn(1:ncmax,ireg),ncmax,mpi_integer, &
554 regions(ireg)%procId,global%mpiComm,global%mpierr )
555 IF (global%mpierr /=0 ) CALL
errorstop( global,err_mpi_trouble,__line__ )
560 DO ireg = 1,global%nRegions
561 regnc =
max( regnc,ivar(ireg) )
563 global%moveGridRegNc = regnc
565 DO ireg = 1,global%nRegions
566 IF (regions(ireg)%procid==global%myProcid .AND. &
567 regions(ireg)%active==active)
THEN
569 grid => regions(ireg)%levels(ilev)%grid
570 DO nreg = 1,global%nRegions
571 grid%nCorns(nreg) = ivar(nreg)
574 ALLOCATE(
grid%ijkCorn( regnc,global%nRegions),stat=errfl )
576 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
578 ALLOCATE(
grid%regCorn( 3,regnc,global%nRegions),stat=errfl )
580 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
582 ALLOCATE(
grid%regCornOld( 3,regnc,global%nRegions),stat=errfl )
584 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
586 ALLOCATE(
grid%regCornOrig(3,regnc,global%nRegions),stat=errfl )
588 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
590 ALLOCATE(
grid%nghbor( 3,6,regnc) ,stat=errfl )
592 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
594 DO l = 1,
grid%nCorns(ireg)
595 grid%ijkCorn(l,ireg) = ijkcorn(l,ireg)
603 DEALLOCATE( ivar,stat=errfl )
605 IF (global%error /= 0) CALL
errorstop( global,err_deallocate,__line__ )
633 #include "Indexing.h"
636 TYPE(t_region
),
POINTER :: regions(:)
637 INTEGER :: iselect, iter
640 INTEGER ::
i, l, ireg
643 INTEGER :: ilev, ncorns, errfl
645 INTEGER,
ALLOCATABLE :: corner(:)
647 REAL(RFREAL),
ALLOCATABLE :: rvar(:,:,:)
648 REAL(RFREAL),
POINTER :: dxyz(:,:)
655 global => regions(1)%global
658 'RFLO_ModMoveGridNconform.F90' )
662 ALLOCATE( rvar(xcoord:zcoord,global%moveGridRegNc,global%nRegions), &
665 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
670 DO ireg = 1,global%nRegions
671 IF (regions(ireg)%procid==global%myProcid .AND. &
672 regions(ireg)%active==active)
THEN
674 grid => regions(ireg)%levels(ilev)%grid
683 ncorns =
grid%nCorns(ireg)
685 ALLOCATE( corner(ncorns), stat=errfl )
687 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
690 corner(l) =
grid%ijkCorn(l,ireg)
695 grid%regCornOld(xcoord,
i,ireg) = dxyz(xcoord,corner(
i))
696 grid%regCornOld(ycoord,
i,ireg) = dxyz(ycoord,corner(
i))
697 grid%regCornOld(zcoord,
i,ireg) = dxyz(zcoord,corner(
i))
698 rvar(:,
i,ireg) =
grid%regCornOld(:,
i,ireg)
702 grid%regCornOrig(xcoord,
i,ireg) = dxyz(xcoord,corner(
i))
703 grid%regCornOrig(ycoord,
i,ireg) = dxyz(ycoord,corner(
i))
704 grid%regCornOrig(zcoord,
i,ireg) = dxyz(zcoord,corner(
i))
705 rvar(:,
i,ireg) =
grid%regCornOrig(:,
i,ireg)
709 DEALLOCATE( corner, stat=errfl )
711 IF (global%error /= 0) CALL
errorstop( global,err_deallocate,__line__ )
714 rvar(:,:,ireg) =
grid%regCornOld(:,:,ireg)
721 DO ireg = 1,global%nRegions
722 ncorns = global%moveGridRegNc
724 CALL mpi_bcast( rvar(xcoord:zcoord,1:ncorns,ireg),3*ncorns, &
725 mpi_rfreal,regions(ireg)%procId,global%mpiComm,global%mpierr )
726 IF (global%mpierr /=0 ) CALL
errorstop( global,err_mpi_trouble,__line__ )
728 CALL mpi_barrier( global%mpiComm,global%mpierr )
730 DO ireg = 1,global%nRegions
731 IF (regions(ireg)%procid==global%myProcid .AND. &
732 regions(ireg)%active==active)
THEN
734 grid => regions(ireg)%levels(ilev)%grid
737 DO l=1,global%nRegions
738 grid%regCornOld(:,:,l) = rvar(:,:,l)
741 DO l=1,global%nRegions
742 grid%regCornOrig(:,:,l) = rvar(:,:,l)
746 DO l=1,global%nRegions
747 grid%regCornOld(:,:,l) = rvar(:,:,l)
792 #include "Indexing.h"
795 TYPE(t_region
),
POINTER :: regions(:)
798 INTEGER ::
i,
j,
k, ipatch,
ic, ireg, nc, nreg
804 INTEGER :: ijknode(4), ncmin(6), nregmin(6), inoff, ijnoff, lbound, errfl
805 REAL(RFREAL) :: edgelen, ds, tol, distmin(6)
806 REAL(RFREAL),
POINTER :: xyz(:,:)
807 REAL(RFREAL),
ALLOCATABLE ::
dist(:,:)
815 global => regions(1)%global
818 'RFLO_ModMoveGridNconform.F90' )
824 ALLOCATE(
dist(global%moveGridRegNc,global%nRegions), stat=errfl )
827 DO ireg = 1,global%nRegions
828 IF (regions(ireg)%procid==global%myProcid .AND. &
829 regions(ireg)%active==active)
THEN
831 grid => regions(ireg)%levels(ilev)%grid
833 ncorns =
grid%nCorns(ireg)
841 xyz => regions(ireg)%levels(ilev)%grid%xyz
845 edgelen = 1.e+30_rfreal
850 ijknode(1) = indijk(
i ,
j ,
k ,inoff,ijnoff)
851 ijknode(2) = indijk(
i+1,
j ,
k ,inoff,ijnoff)
852 ijknode(3) = indijk(
i ,
j+1,
k ,inoff,ijnoff)
853 ijknode(4) = indijk(
i ,
j ,
k+1,inoff,ijnoff)
854 ds =
sqrt((xyz(xcoord,ijknode(2))-xyz(xcoord,ijknode(1)))**2+ &
855 (xyz(ycoord,ijknode(2))-xyz(ycoord,ijknode(1)))**2+ &
856 (xyz(zcoord,ijknode(2))-xyz(zcoord,ijknode(1)))**2)
857 edgelen =
min(edgelen,ds)
858 ds =
sqrt((xyz(xcoord,ijknode(3))-xyz(xcoord,ijknode(1)))**2+ &
859 (xyz(ycoord,ijknode(3))-xyz(ycoord,ijknode(1)))**2+ &
860 (xyz(zcoord,ijknode(3))-xyz(zcoord,ijknode(1)))**2)
861 edgelen =
min(edgelen,ds)
862 ds =
sqrt((xyz(xcoord,ijknode(4))-xyz(xcoord,ijknode(1)))**2+ &
863 (xyz(ycoord,ijknode(4))-xyz(ycoord,ijknode(1)))**2+ &
864 (xyz(zcoord,ijknode(4))-xyz(zcoord,ijknode(1)))**2)
865 edgelen =
min(edgelen,ds)
869 tol = 1.e-5_rfreal*edgelen
872 distmin(1:6) = 1.e+30_rfreal
875 DO nreg = 1,global%nRegions
876 DO nc = 1,
grid%nCorns(nreg)
877 dist(nc,nreg) =
sqrt((
grid%regCornOrig(xcoord,nc,nreg)- &
878 grid%regCornOrig(xcoord,
ic,ireg))**2 + &
879 (
grid%regCornOrig(ycoord,nc,nreg)- &
880 grid%regCornOrig(ycoord,
ic,ireg))**2 + &
881 (
grid%regCornOrig(zcoord,nc,nreg)- &
882 grid%regCornOrig(zcoord,
ic,ireg))**2)
896 IF (
dist(nc,nreg)<distmin(1) .AND.
dist(nc,nreg)>edgelen)
THEN
898 distmin(
k) = distmin(
k-1)
899 ncmin(
k) = ncmin(
k-1)
900 nregmin(
k) = nregmin(
k-1)
902 distmin(1) =
dist(nc,nreg)
908 IF (
dist(nc,nreg) > (distmin(
k-1) + tol) .AND. &
909 dist(nc,nreg) < (distmin(
k) - tol))
THEN
914 distmin(
j) = distmin(
j-1)
915 ncmin(
j) = ncmin(
j-1)
916 nregmin(
j) = nregmin(
j-1)
918 distmin(
k) =
dist(nc,nreg)
935 grid%nghbor(3,:,:) = 1
942 DEALLOCATE(
dist, stat=errfl );
IF (errfl>0) goto 99
946 DO ireg = 1,global%nRegions
947 IF (regions(ireg)%procid==global%myProcid .AND. &
948 regions(ireg)%active==active)
THEN
950 grid => regions(ireg)%levels(ilev)%grid
953 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(1)%interact).OR. &
954 (.NOT. regions(ireg)%levels(ilev)%edgeCells(1)%interact).OR. &
955 (.NOT. regions(ireg)%levels(ilev)%edgeCells(4)%interact).OR. &
956 (.NOT. regions(ireg)%levels(ilev)%edgeCells(9)%interact)) &
957 grid%nghbor(3,1:6,1) = 0
960 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(2)%interact).OR. &
961 (.NOT. regions(ireg)%levels(ilev)%edgeCells(1)%interact).OR. &
962 (.NOT. regions(ireg)%levels(ilev)%edgeCells(2)%interact).OR. &
963 (.NOT. regions(ireg)%levels(ilev)%edgeCells(10)%interact)) &
964 grid%nghbor(3,1:6,2) = 0
967 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(3)%interact).OR. &
968 (.NOT. regions(ireg)%levels(ilev)%edgeCells(2)%interact).OR. &
969 (.NOT. regions(ireg)%levels(ilev)%edgeCells(3)%interact).OR. &
970 (.NOT. regions(ireg)%levels(ilev)%edgeCells(11)%interact)) &
971 grid%nghbor(3,1:6,3) = 0
974 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(4)%interact).OR. &
975 (.NOT. regions(ireg)%levels(ilev)%edgeCells(3)%interact).OR. &
976 (.NOT. regions(ireg)%levels(ilev)%edgeCells(4)%interact).OR. &
977 (.NOT. regions(ireg)%levels(ilev)%edgeCells(12)%interact)) &
978 grid%nghbor(3,1:6,4) = 0
981 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(5)%interact).OR. &
982 (.NOT. regions(ireg)%levels(ilev)%edgeCells(5)%interact).OR. &
983 (.NOT. regions(ireg)%levels(ilev)%edgeCells(8)%interact).OR. &
984 (.NOT. regions(ireg)%levels(ilev)%edgeCells(9)%interact)) &
985 grid%nghbor(3,1:6,5) = 0
988 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(6)%interact).OR. &
989 (.NOT. regions(ireg)%levels(ilev)%edgeCells(5)%interact).OR. &
990 (.NOT. regions(ireg)%levels(ilev)%edgeCells(6)%interact).OR. &
991 (.NOT. regions(ireg)%levels(ilev)%edgeCells(10)%interact)) &
992 grid%nghbor(3,1:6,6) = 0
995 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(7)%interact).OR. &
996 (.NOT. regions(ireg)%levels(ilev)%edgeCells(6)%interact).OR. &
997 (.NOT. regions(ireg)%levels(ilev)%edgeCells(7)%interact).OR. &
998 (.NOT. regions(ireg)%levels(ilev)%edgeCells(11)%interact)) &
999 grid%nghbor(3,1:6,7) = 0
1002 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(8)%interact).OR. &
1003 (.NOT. regions(ireg)%levels(ilev)%edgeCells(7)%interact).OR. &
1004 (.NOT. regions(ireg)%levels(ilev)%edgeCells(8)%interact).OR. &
1005 (.NOT. regions(ireg)%levels(ilev)%edgeCells(12)%interact)) &
1006 grid%nghbor(3,1:6,8) = 0
1013 DO ireg = 1,global%nRegions
1014 IF (regions(ireg)%procid==global%myProcid .AND. &
1015 regions(ireg)%active==active)
THEN
1017 grid => regions(ireg)%levels(ilev)%grid
1021 DO ipatch=1,regions(ireg)%nPatches
1022 patch => regions(ireg)%levels(ilev)%patches(ipatch)
1023 lbound =
patch%lbound
1024 bctype =
patch%bcType
1029 IF ((bctype>=bc_inflow .AND. bctype<=bc_inflow +bc_range) .OR. &
1030 (bctype>=bc_outflow .AND. bctype<=bc_outflow +bc_range) .OR. &
1031 (bctype>=bc_slipwall .AND. bctype<=bc_slipwall +bc_range) .OR. &
1032 (bctype>=bc_noslipwall .AND. bctype<=bc_noslipwall+bc_range) .OR. &
1033 (bctype>=bc_farfield .AND. bctype<=bc_farfield +bc_range) .OR. &
1034 (bctype>=bc_injection .AND. bctype<=bc_injection +bc_range) .OR. &
1035 (bctype>=bc_tra_peri .AND. bctype<=bc_tra_peri +bc_range) .OR. &
1036 (bctype>=bc_rot_peri .AND. bctype<=bc_rot_peri +bc_range))
THEN
1037 IF (lbound==1 .OR. lbound==2)
THEN
1039 ijknode(2) = indijk(
ibeg,
jbeg,kend,inoff,ijnoff)
1040 ijknode(3) = indijk(
ibeg,
jend,kend,inoff,ijnoff)
1042 ELSEIF (lbound==3 .OR. lbound==4)
THEN
1044 ijknode(2) = indijk(
ibeg,
jbeg,kend,inoff,ijnoff)
1045 ijknode(3) = indijk(
iend,
jbeg,kend,inoff,ijnoff)
1047 ELSEIF (lbound==5 .OR. lbound==6)
THEN
1053 DO ic = 1,
grid%nCorns(ireg)
1054 IF (ijknode(1)==
grid%ijkCorn(
ic,ireg) .OR. &
1055 ijknode(2)==
grid%ijkCorn(
ic,ireg) .OR. &
1056 ijknode(3)==
grid%ijkCorn(
ic,ireg) .OR. &
1057 ijknode(4)==
grid%ijkCorn(
ic,ireg))
grid%nghbor(3,1:6,
ic)= 2
1067 DO ireg = 1,global%nRegions
1068 IF (regions(ireg)%procid==global%myProcid .AND. &
1069 regions(ireg)%active==active)
THEN
1071 grid => regions(ireg)%levels(ilev)%grid
1075 DO ipatch=1,regions(ireg)%nPatches
1076 patch => regions(ireg)%levels(ilev)%patches(ipatch)
1077 lbound =
patch%lbound
1078 bctype =
patch%bcType
1083 IF (
patch%bcMotion == bc_external)
THEN
1084 IF (lbound==1 .OR. lbound==2)
THEN
1086 ijknode(2) = indijk(
ibeg,
jbeg,kend,inoff,ijnoff)
1087 ijknode(3) = indijk(
ibeg,
jend,kend,inoff,ijnoff)
1089 ELSEIF (lbound==3 .OR. lbound==4)
THEN
1091 ijknode(2) = indijk(
ibeg,
jbeg,kend,inoff,ijnoff)
1092 ijknode(3) = indijk(
iend,
jbeg,kend,inoff,ijnoff)
1094 ELSEIF (lbound==5 .OR. lbound==6)
THEN
1100 DO ic = 1,
grid%nCorns(ireg)
1101 IF (ijknode(1)==
grid%ijkCorn(
ic,ireg) .OR. &
1102 ijknode(2)==
grid%ijkCorn(
ic,ireg) .OR. &
1103 ijknode(3)==
grid%ijkCorn(
ic,ireg) .OR. &
1104 ijknode(4)==
grid%ijkCorn(
ic,ireg))
grid%nghbor(3,1:6,
ic)= 0
1128 global%error = errfl
1129 CALL
errorstop( global,err_allocate,__line__ )
1133 global%error = errfl
1134 CALL
errorstop( global,err_deallocate,__line__ )
1162 #include "Indexing.h"
1165 TYPE(t_region
),
POINTER :: regions(:)
1168 INTEGER ::
i,
j,
k,
ic, ireg, nc, nreg, lc, lreg
1172 INTEGER :: ijknode(4), inoff, ijnoff, errfl
1173 REAL(RFREAL) :: edgelen, ds, du2, dumax
1174 REAL(RFREAL),
POINTER :: xyz(:,:)
1175 REAL(RFREAL),
ALLOCATABLE ::
dist(:,:)
1183 global => regions(1)%global
1186 'RFLO_ModMoveGridNconform.F90' )
1190 ALLOCATE(
dist(global%moveGridRegNc,global%nRegions), stat=errfl )
1191 IF (errfl>0) goto 88
1195 DO ireg = 1,global%nRegions
1196 IF (regions(ireg)%procid==global%myProcid .AND. &
1197 regions(ireg)%active==active)
THEN
1199 grid => regions(ireg)%levels(ilev)%grid
1205 xyz => regions(ireg)%levels(ilev)%gridOld%xyz
1209 edgelen = 1.e+30_rfreal
1214 ijknode(1) = indijk(
i ,
j ,
k ,inoff,ijnoff)
1215 ijknode(2) = indijk(
i+1,
j ,
k ,inoff,ijnoff)
1216 ijknode(3) = indijk(
i ,
j+1,
k ,inoff,ijnoff)
1217 ijknode(4) = indijk(
i ,
j ,
k+1,inoff,ijnoff)
1218 ds =
sqrt((xyz(xcoord,ijknode(2))-xyz(xcoord,ijknode(1)))**2+ &
1219 (xyz(ycoord,ijknode(2))-xyz(ycoord,ijknode(1)))**2+ &
1220 (xyz(zcoord,ijknode(2))-xyz(zcoord,ijknode(1)))**2)
1221 edgelen =
min(edgelen,ds)
1222 ds =
sqrt((xyz(xcoord,ijknode(3))-xyz(xcoord,ijknode(1)))**2+ &
1223 (xyz(ycoord,ijknode(3))-xyz(ycoord,ijknode(1)))**2+ &
1224 (xyz(zcoord,ijknode(3))-xyz(zcoord,ijknode(1)))**2)
1225 edgelen =
min(edgelen,ds)
1226 ds =
sqrt((xyz(xcoord,ijknode(4))-xyz(xcoord,ijknode(1)))**2+ &
1227 (xyz(ycoord,ijknode(4))-xyz(ycoord,ijknode(1)))**2+ &
1228 (xyz(zcoord,ijknode(4))-xyz(zcoord,ijknode(1)))**2)
1229 edgelen =
min(edgelen,ds)
1234 DO ic = 1,
grid%nCorns(ireg)
1238 dumax = -1.e+20_rfreal
1240 DO lreg = 1,global%nRegions
1241 DO lc = 1,
grid%nCorns(lreg)
1242 dist(lc,lreg) =
sqrt((
grid%regCornOrig(xcoord,nc,nreg)- &
1243 grid%regCornOrig(xcoord,lc,lreg))**2 + &
1244 (
grid%regCornOrig(ycoord,nc,nreg)- &
1245 grid%regCornOrig(ycoord,lc,lreg))**2 + &
1246 (
grid%regCornOrig(zcoord,nc,nreg)- &
1247 grid%regCornOrig(zcoord,lc,lreg))**2)
1249 IF (
dist(lc,lreg) < 0.1_rfreal*edgelen)
THEN
1250 du2 =
grid%regCornOld(xcoord,lc,lreg)**2 + &
1251 grid%regCornOld(ycoord,lc,lreg)**2 + &
1252 grid%regCornOld(zcoord,lc,lreg)**2
1254 IF ( du2 > dumax )
THEN
1270 DEALLOCATE(
dist, stat=errfl );
IF (errfl>0) goto 99
1278 global%error = errfl
1279 CALL
errorstop( global,err_allocate,__line__ )
1283 global%error = errfl
1284 CALL
errorstop( global,err_deallocate,__line__ )
1311 #include "Indexing.h"
1314 TYPE(t_region
),
POINTER :: regions(:)
1317 INTEGER :: ireg, ico,
k
1320 INTEGER :: ilev, interior, nco(6), nreg(6), ijkcorn
1322 REAL(RFREAL) :: rdenom, amp(3), pow,
dist(6), wght(6)
1329 global => regions(1)%global
1332 'RFLO_ModMoveGridNconform.F90' )
1337 amp(1) = global%moveGridAmplifX
1338 amp(2) = global%moveGridAmplifY
1339 amp(3) = global%moveGridAmplifZ
1340 pow = global%moveGridPower
1342 DO ireg = 1,global%nRegions
1343 IF (regions(ireg)%procid==global%myProcid .AND. &
1344 regions(ireg)%active==active)
THEN
1346 grid => regions(ireg)%levels(ilev)%grid
1348 DO ico = 1,
grid%nCorns(ireg)
1349 nco(1:6) =
grid%nghbor(1,1:6,ico)
1350 nreg(1:6) =
grid%nghbor(2,1:6,ico)
1351 interior =
grid%nghbor(3,1 ,ico)
1353 IF (interior==1)
THEN
1355 dist(
k) = (
grid%regCornOrig(xcoord,nco(
k),nreg(
k)) - &
1356 grid%regCornOrig(xcoord,ico,ireg))**2 + &
1357 (
grid%regCornOrig(ycoord,nco(
k),nreg(
k)) - &
1358 grid%regCornOrig(ycoord,ico,ireg))**2 + &
1359 (
grid%regCornOrig(zcoord,nco(
k),nreg(
k)) - &
1360 grid%regCornOrig(zcoord,ico,ireg))**2
1369 CALL
errorstop( global,err_illegal_value,__line__, &
1370 'invalid weights for global frame motion')
1373 grid%regCorn(xcoord,ico,ireg) = &
1374 (wght(1)*
grid%regCornOld(xcoord,nco(1),nreg(1)) + &
1375 wght(2)*
grid%regCornOld(xcoord,nco(2),nreg(2)) + &
1376 wght(3)*
grid%regCornOld(xcoord,nco(3),nreg(3)) + &
1377 wght(4)*
grid%regCornOld(xcoord,nco(4),nreg(4)) + &
1378 wght(5)*
grid%regCornOld(xcoord,nco(5),nreg(5)) + &
1379 wght(6)*
grid%regCornOld(xcoord,nco(6),nreg(6)))
1381 grid%regCorn(ycoord,ico,ireg) = &
1382 (wght(1)*
grid%regCornOld(ycoord,nco(1),nreg(1)) + &
1383 wght(2)*
grid%regCornOld(ycoord,nco(2),nreg(2)) + &
1384 wght(3)*
grid%regCornOld(ycoord,nco(3),nreg(3)) + &
1385 wght(4)*
grid%regCornOld(ycoord,nco(4),nreg(4)) + &
1386 wght(5)*
grid%regCornOld(ycoord,nco(5),nreg(5)) + &
1387 wght(6)*
grid%regCornOld(ycoord,nco(6),nreg(6)))
1389 grid%regCorn(zcoord,ico,ireg) = &
1390 (wght(1)*
grid%regCornOld(zcoord,nco(1),nreg(1)) + &
1391 wght(2)*
grid%regCornOld(zcoord,nco(2),nreg(2)) + &
1392 wght(3)*
grid%regCornOld(zcoord,nco(3),nreg(3)) + &
1393 wght(4)*
grid%regCornOld(zcoord,nco(4),nreg(4)) + &
1394 wght(5)*
grid%regCornOld(zcoord,nco(5),nreg(5)) + &
1395 wght(6)*
grid%regCornOld(zcoord,nco(6),nreg(6)))
1401 DO ireg = 1,global%nRegions
1402 IF (regions(ireg)%procid==global%myProcid .AND. &
1403 regions(ireg)%active==active)
THEN
1405 grid => regions(ireg)%levels(ilev)%grid
1407 DO ico = 1,
grid%nCorns(ireg)
1408 interior =
grid%nghbor(3, 1, ico)
1409 IF (interior==1)
THEN
1410 grid%regCornOld(xcoord,ico,ireg)=amp(1)*
grid%regCorn(xcoord,ico,ireg)
1411 grid%regCornOld(ycoord,ico,ireg)=amp(2)*
grid%regCorn(ycoord,ico,ireg)
1412 grid%regCornOld(zcoord,ico,ireg)=amp(3)*
grid%regCorn(zcoord,ico,ireg)
1414 ijkcorn =
grid%ijkCorn(ico,ireg)
1415 grid%xyz(xcoord,ijkcorn) =
grid%regCorn(xcoord,ico,ireg)
1416 grid%xyz(ycoord,ijkcorn) =
grid%regCorn(ycoord,ico,ireg)
1417 grid%xyz(zcoord,ijkcorn) =
grid%regCorn(zcoord,ico,ireg)
1456 LOGICAL :: somemoved
1459 TYPE(t_region
),
POINTER :: regions(:)
1462 INTEGER :: ireg, iter, ipatch,
i,
j,
k, ijkn
1465 INTEGER :: ilev, bctype
1473 global => regions(1)%global
1476 'RFLO_ModMoveGridNconform.F90' )
1483 DO ireg=1,global%nRegions
1484 IF (regions(ireg)%procid==global%myProcid .AND. &
1485 regions(ireg)%active==active .AND. &
1486 regions(ireg)%mixtInput%moveGrid)
THEN
1488 grid => regions(ireg)%levels(ilev)%grid
1489 gridold => regions(ireg)%levels(ilev)%gridOld
1494 gridold%indSvel =
grid%indSvel
1495 gridold%ipc =
grid%ipc
1496 gridold%jpc =
grid%jpc
1497 gridold%kpc =
grid%kpc
1498 gridold%xyz(:,:) =
grid%xyz(:,:)
1499 gridold%si(:,:) =
grid%si(:,:)
1500 gridold%sj(:,:) =
grid%sj(:,:)
1501 gridold%sk(:,:) =
grid%sk(:,:)
1502 gridold%vol(:) =
grid%vol(:)
1530 DO ireg=1,global%nRegions
1531 IF (regions(ireg)%procid==global%myProcid .AND. &
1532 regions(ireg)%active==active .AND. &
1533 regions(ireg)%mixtInput%moveGrid)
THEN
1535 grid => regions(ireg)%levels(ilev)%grid
1536 gridold => regions(ireg)%levels(ilev)%gridOld
1552 gridold%xyzOld,
grid%xyz )
1557 gridold%xyzOld,
grid%xyz )
1590 #include "Indexing.h"
1593 TYPE(t_region
) :: region
1596 INTEGER :: ireg, ipatch,
i,
j,
k
1599 INTEGER :: ilev, ijkn, lbound
1607 global => region%global
1610 'RFLO_ModMoveGridNconform.F90' )
1617 grid => region%levels(ilev)%grid
1621 DO ipatch=1,region%nPatches
1622 patch => region%levels(ilev)%patches(ipatch)
1623 lbound =
patch%lbound
1625 IF (
patch%bcMotion == bc_external .AND. &
1626 (
grid%allExternal(lbound).EQV..false.))
THEN
1634 ijkn = indijk(
i,
j,
k,inoff,ijnoff)
1635 grid%xyz(xcoord,ijkn) =
grid%xyzOld(xcoord,ijkn)
1636 grid%xyz(ycoord,ijkn) =
grid%xyzOld(ycoord,ijkn)
1637 grid%xyz(zcoord,ijkn) =
grid%xyzOld(zcoord,ijkn)
1675 arclen12,arclen34,arclen56,xyzold,dnode )
1681 #include "Indexing.h"
1684 LOGICAL :: boundmoved(6), allexternal(6), edgemoved(12)
1687 REAL(RFREAL),
POINTER :: arclen12(:,:), arclen34(:,:), arclen56(:,:)
1688 REAL(RFREAL),
POINTER :: dnode(:,:), xyzold(:,:)
1690 TYPE(t_region
) :: region
1693 INTEGER :: iedge, ind
1697 INTEGER :: indbeg, indend, ijkn, ijkn1, ijknbeg, ijknend, inoff, ijnoff
1698 INTEGER :: switch(12,11), intertype, iedgeglo
1700 REAL(RFREAL) :: arclen, ds,
s, dn(3), dnbeg(3), dnend(3)
1706 'RFLO_ModMoveGridNconform.F90' )
1728 switch( 1,:) = (/5, 6, 1, 3, 56,
kpnbeg, kpnend,
ipnbeg,
jpnbeg, 1, 2/)
1729 switch( 2,:) = (/3, 4, 1, 6, 34,
jpnbeg,
jpnend, kpnend,
ipnbeg, 2, 3/)
1730 switch( 3,:) = (/5, 6, 1, 4, 56,
kpnbeg, kpnend,
ipnbeg,
jpnend, 4, 3/)
1731 switch( 4,:) = (/3, 4, 1, 5, 34,
jpnbeg,
jpnend,
kpnbeg,
ipnbeg, 1, 4/)
1732 switch( 5,:) = (/5, 6, 2, 3, 56,
kpnbeg, kpnend,
ipnend,
jpnbeg, 5, 6/)
1733 switch( 6,:) = (/3, 4, 2, 6, 34,
jpnbeg,
jpnend, kpnend,
ipnend, 6, 7/)
1734 switch( 7,:) = (/5, 6, 2, 4, 56,
kpnbeg, kpnend,
ipnend,
jpnend, 8, 7/)
1735 switch( 8,:) = (/3, 4, 2, 5, 34,
jpnbeg,
jpnend,
kpnbeg,
ipnend, 5, 8/)
1736 switch( 9,:) = (/1, 2, 3, 5, 12,
ipnbeg,
ipnend,
jpnbeg,
kpnbeg, 1, 5/)
1737 switch(10,:) = (/1, 2, 3, 6, 12,
ipnbeg,
ipnend,
jpnbeg, kpnend, 2, 6/)
1738 switch(11,:) = (/1, 2, 4, 5, 12,
ipnbeg,
ipnend,
jpnend,
kpnbeg, 4, 8/)
1739 switch(12,:) = (/1, 2, 4, 6, 12,
ipnbeg,
ipnend,
jpnend, kpnend, 3, 7/)
1743 edgemoved(:) = .false.
1746 IF (boundmoved(1) .AND. allexternal(1))
THEN
1747 edgemoved( 1) = .true.; edgemoved( 2) = .true.
1748 edgemoved( 3) = .true.; edgemoved( 4) = .true.
1750 IF (boundmoved(2) .AND. allexternal(2))
THEN
1751 edgemoved( 5) = .true.; edgemoved( 6) = .true.
1752 edgemoved( 7) = .true.; edgemoved( 8) = .true.
1754 IF (boundmoved(3) .AND. allexternal(3))
THEN
1755 edgemoved( 1) = .true.; edgemoved( 5) = .true.
1756 edgemoved( 9) = .true.; edgemoved(10) = .true.
1758 IF (boundmoved(4) .AND. allexternal(4))
THEN
1759 edgemoved( 3) = .true.; edgemoved( 7) = .true.
1760 edgemoved(11) = .true.; edgemoved(12) = .true.
1762 IF (boundmoved(5) .AND. allexternal(5))
THEN
1763 edgemoved( 4) = .true.; edgemoved( 8) = .true.
1764 edgemoved( 9) = .true.; edgemoved(11) = .true.
1766 IF (boundmoved(6) .AND. allexternal(6))
THEN
1767 edgemoved( 2) = .true.; edgemoved( 6) = .true.
1768 edgemoved(10) = .true.; edgemoved(12) = .true.
1775 IF (.NOT.edgemoved(iedge))
THEN
1777 edgemoved(iedge) = .true.
1780 indbeg = switch(iedge,6)
1781 indend = switch(iedge,7)
1782 l1c = switch(iedge,8)
1783 l2c = switch(iedge,9)
1786 IF (iedge==11) iedgeglo=12
1787 IF (iedge==12) iedgeglo=11
1788 interact = region%levels(ilev)%edgeCells(iedgeglo)%interact
1789 intertype = region%levels(ilev)%edgeCells(iedgeglo)%interType
1791 IF (((region%levels(ilev)%grid%nghbor(3,1,switch(iedge,10))==1 .OR. &
1792 region%levels(ilev)%grid%nghbor(3,1,switch(iedge,11))==1) .AND. &
1793 ((interact .EQV. .true.) .AND. (intertype==edge_interact_full))) &
1795 region%levels(ilev)%grid%nghbor(3,1,switch(iedge,10))==2 .OR. &
1796 region%levels(ilev)%grid%nghbor(3,1,switch(iedge,11))==2)
THEN
1803 DO ind=indbeg+1,indend-1
1804 IF (switch(iedge,5) == 12)
THEN
1805 ijkn = indijk(ind ,l1c,l2c,inoff,ijnoff)
1806 ijkn1 = indijk(ind-1 ,l1c,l2c,inoff,ijnoff)
1807 ijknbeg = indijk(indbeg,l1c,l2c,inoff,ijnoff)
1808 ijknend = indijk(indend,l1c,l2c,inoff,ijnoff)
1809 arclen = arclen12(l1c,l2c)
1810 dnbeg(:) = dnode(:,ijknbeg)
1811 dnend(:) = dnode(:,ijknend)
1812 ELSE IF (switch(iedge,5) == 34)
THEN
1813 ijkn = indijk(l2c,ind ,l1c,inoff,ijnoff)
1814 ijkn1 = indijk(l2c,ind-1 ,l1c,inoff,ijnoff)
1815 ijknbeg = indijk(l2c,indbeg,l1c,inoff,ijnoff)
1816 ijknend = indijk(l2c,indend,l1c,inoff,ijnoff)
1817 arclen = arclen34(l1c,l2c)
1818 dnbeg(:) = dnode(:,ijknbeg)
1819 dnend(:) = dnode(:,ijknend)
1820 ELSE IF (switch(iedge,5) == 56)
THEN
1821 ijkn = indijk(l1c,l2c,ind ,inoff,ijnoff)
1822 ijkn1 = indijk(l1c,l2c,ind-1 ,inoff,ijnoff)
1823 ijknbeg = indijk(l1c,l2c,indbeg,inoff,ijnoff)
1824 ijknend = indijk(l1c,l2c,indend,inoff,ijnoff)
1825 arclen = arclen56(l1c,l2c)
1826 dnbeg(:) = dnode(:,ijknbeg)
1827 dnend(:) = dnode(:,ijknend)
1829 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
1830 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
1831 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
1835 dnode(:,ijkn) = dn(:)
1872 #include "Indexing.h"
1875 TYPE(t_region
) :: region
1876 LOGICAL :: edgemoved(12)
1877 REAL(RFREAL),
POINTER :: dnode(:,:), xyzold(:,:)
1880 INTEGER :: ipedge, ind, ipatch,
ic
1883 INTEGER :: ilev,
ibeg,
iend,
jbeg,
jend,
kbeg, kend, ib, ie, jb, je , kb, ke
1884 INTEGER :: indbeg, indend, ijkn, ijkn1, ijknbeg, ijknend, inoff, ijnoff
1885 INTEGER :: lbound, intb, inte, iedge, intertype
1887 REAL(RFREAL) :: arclen, ds,
s, dn(3), dnbeg(3), dnend(3)
1894 'RFLO_ModMoveGridNconform.F90' )
1901 grid => region%levels(ilev)%grid
1905 edgemoved(:) = .true.
1909 DO ipatch=1,region%nPatches
1910 patch => region%levels(ilev)%patches(ipatch)
1911 lbound =
patch%lbound
1916 IF (
patch%bcMotion == bc_external) goto 777
1919 IF (lbound==1 .OR. lbound==2)
THEN
1929 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
1930 ijknend = indijk(ie,je,ke,inoff,ijnoff)
1938 intertype = region%levels(ilev)%edgeCells(iedge)%interType
1939 DO ic = 1,
grid%nCorns(region%iRegionGlobal)
1940 IF (
ic==ijknbeg) intb =
grid%nghbor(3,1,
ic)
1941 IF (
ic==ijknend) inte =
grid%nghbor(3,1,
ic)
1944 IF (((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND. &
1945 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) .OR.&
1946 (intb==2 .OR. inte==2))
THEN
1948 dnbeg(:) = dnode(:,ijknbeg)
1949 dnend(:) = dnode(:,ijknend)
1952 DO ind=indbeg+1,indend
1953 ijkn = indijk(
ibeg,
jbeg,ind ,inoff,ijnoff)
1954 ijkn1 = indijk(
ibeg,
jbeg,ind-1,inoff,ijnoff)
1956 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
1957 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
1958 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
1961 DO ind=indbeg+1,indend-1
1962 ijkn = indijk(
ibeg,
jbeg,ind ,inoff,ijnoff)
1963 ijkn1 = indijk(
ibeg,
jbeg,ind-1,inoff,ijnoff)
1964 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
1965 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
1966 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
1969 dnode(:,ijkn) = dn(:)
1972 ELSEIF (ipedge==2)
THEN
1981 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
1982 ijknend = indijk(ie,je,ke,inoff,ijnoff)
1990 intertype = region%levels(ilev)%edgeCells(iedge)%interType
1991 DO ic = 1,
grid%nCorns(region%iRegionGlobal)
1992 IF (
ic==ijknbeg) intb =
grid%nghbor(3,1,
ic)
1993 IF (
ic==ijknend) inte =
grid%nghbor(3,1,
ic)
1996 IF (((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND. &
1997 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) .OR.&
1998 (intb==2 .OR. inte==2))
THEN
2000 dnbeg(:) = dnode(:,ijknbeg)
2001 dnend(:) = dnode(:,ijknend)
2004 DO ind=indbeg+1,indend
2005 ijkn = indijk(
ibeg,ind ,kend,inoff,ijnoff)
2006 ijkn1 = indijk(
ibeg,ind-1,kend,inoff,ijnoff)
2008 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2009 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2010 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2013 DO ind=indbeg+1,indend-1
2014 ijkn = indijk(
ibeg,ind ,kend,inoff,ijnoff)
2015 ijkn1 = indijk(
ibeg,ind-1,kend,inoff,ijnoff)
2016 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2017 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2018 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2021 dnode(:,ijkn) = dn(:)
2024 ELSEIF (ipedge==3)
THEN
2033 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2034 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2042 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2043 DO ic = 1,
grid%nCorns(region%iRegionGlobal)
2044 IF (
ic==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2045 IF (
ic==ijknend) inte =
grid%nghbor(3,1,
ic)
2048 IF (((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND. &
2049 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) .OR.&
2050 (intb==2 .OR. inte==2))
THEN
2052 dnbeg(:) = dnode(:,ijknbeg)
2053 dnend(:) = dnode(:,ijknend)
2056 DO ind=indbeg+1,indend
2057 ijkn = indijk(
ibeg,
jend,ind ,inoff,ijnoff)
2058 ijkn1 = indijk(
ibeg,
jend,ind-1,inoff,ijnoff)
2060 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2061 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2062 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2065 DO ind=indbeg+1,indend-1
2066 ijkn = indijk(
ibeg,
jend,ind ,inoff,ijnoff)
2067 ijkn1 = indijk(
ibeg,
jend,ind-1,inoff,ijnoff)
2068 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2069 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2070 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2073 dnode(:,ijkn) = dn(:)
2076 ELSEIF (ipedge==4)
THEN
2085 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2086 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2094 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2095 DO ic = 1,
grid%nCorns(region%iRegionGlobal)
2096 IF (
ic==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2097 IF (
ic==ijknend) inte =
grid%nghbor(3,1,
ic)
2100 IF (((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND. &
2101 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) .OR.&
2102 (intb==2 .OR. inte==2))
THEN
2104 dnbeg(:) = dnode(:,ijknbeg)
2105 dnend(:) = dnode(:,ijknend)
2108 DO ind=indbeg+1,indend
2109 ijkn = indijk(
ibeg,ind ,
kbeg,inoff,ijnoff)
2110 ijkn1 = indijk(
ibeg,ind-1,
kbeg,inoff,ijnoff)
2112 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2113 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2114 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2117 DO ind=indbeg+1,indend-1
2118 ijkn = indijk(
ibeg,ind ,
kbeg,inoff,ijnoff)
2119 ijkn1 = indijk(
ibeg,ind-1,
kbeg,inoff,ijnoff)
2120 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2121 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2122 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2125 dnode(:,ijkn) = dn(:)
2133 IF (lbound==3 .OR. lbound==4)
THEN
2143 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2144 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2152 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2153 DO ic = 1,
grid%nCorns(region%iRegionGlobal)
2154 IF (
ic==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2155 IF (
ic==ijknend) inte =
grid%nghbor(3,1,
ic)
2158 IF (((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND. &
2159 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) .OR.&
2160 (intb==2 .OR. inte==2))
THEN
2162 dnbeg(:) = dnode(:,ijknbeg)
2163 dnend(:) = dnode(:,ijknend)
2166 DO ind=indbeg+1,indend
2167 ijkn = indijk(ind ,
jbeg,
kbeg,inoff,ijnoff)
2168 ijkn1 = indijk(ind-1,
jbeg,
kbeg,inoff,ijnoff)
2170 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2171 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2172 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2175 DO ind=indbeg+1,indend-1
2176 ijkn = indijk(ind ,
jbeg,
kbeg,inoff,ijnoff)
2177 ijkn1 = indijk(ind-1,
jbeg,
kbeg,inoff,ijnoff)
2178 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2179 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2180 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2183 dnode(:,ijkn) = dn(:)
2186 ELSEIF (ipedge==2)
THEN
2195 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2196 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2204 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2205 DO ic = 1,
grid%nCorns(region%iRegionGlobal)
2206 IF (
ic==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2207 IF (
ic==ijknend) inte =
grid%nghbor(3,1,
ic)
2210 IF (((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND. &
2211 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) .OR.&
2212 (intb==2 .OR. inte==2))
THEN
2214 dnbeg(:) = dnode(:,ijknbeg)
2215 dnend(:) = dnode(:,ijknend)
2218 DO ind=indbeg+1,indend
2219 ijkn = indijk(
iend,
jbeg,ind ,inoff,ijnoff)
2220 ijkn1 = indijk(
iend,
jbeg,ind-1,inoff,ijnoff)
2222 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2223 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2224 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2227 DO ind=indbeg+1,indend-1
2228 ijkn = indijk(
iend,
jbeg,ind ,inoff,ijnoff)
2229 ijkn1 = indijk(
iend,
jbeg,ind-1,inoff,ijnoff)
2230 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2231 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2232 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2235 dnode(:,ijkn) = dn(:)
2238 ELSEIF (ipedge==3)
THEN
2247 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2248 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2256 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2257 DO ic = 1,
grid%nCorns(region%iRegionGlobal)
2258 IF (
ic==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2259 IF (
ic==ijknend) inte =
grid%nghbor(3,1,
ic)
2262 IF (((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND. &
2263 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) .OR.&
2264 (intb==2 .OR. inte==2))
THEN
2266 dnbeg(:) = dnode(:,ijknbeg)
2267 dnend(:) = dnode(:,ijknend)
2270 DO ind=indbeg+1,indend
2271 ijkn = indijk(ind ,
jbeg,kend,inoff,ijnoff)
2272 ijkn1 = indijk(ind-1,
jbeg,kend,inoff,ijnoff)
2274 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2275 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2276 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2279 DO ind=indbeg+1,indend-1
2280 ijkn = indijk(ind ,
jbeg,kend,inoff,ijnoff)
2281 ijkn1 = indijk(ind-1,
jbeg,kend,inoff,ijnoff)
2282 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2283 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2284 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2287 dnode(:,ijkn) = dn(:)
2290 ELSEIF (ipedge==4)
THEN
2299 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2300 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2308 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2309 DO ic = 1,
grid%nCorns(region%iRegionGlobal)
2310 IF (
ic==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2311 IF (
ic==ijknend) inte =
grid%nghbor(3,1,
ic)
2314 IF (((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND. &
2315 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) .OR.&
2316 (intb==2 .OR. inte==2))
THEN
2318 dnbeg(:) = dnode(:,ijknbeg)
2319 dnend(:) = dnode(:,ijknend)
2322 DO ind=indbeg+1,indend
2323 ijkn = indijk(
ibeg,
jbeg,ind ,inoff,ijnoff)
2324 ijkn1 = indijk(
ibeg,
jbeg,ind-1,inoff,ijnoff)
2326 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2327 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2328 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2331 DO ind=indbeg+1,indend-1
2332 ijkn = indijk(
ibeg,
jbeg,ind ,inoff,ijnoff)
2333 ijkn1 = indijk(
ibeg,
jbeg,ind-1,inoff,ijnoff)
2334 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2335 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2336 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2339 dnode(:,ijkn) = dn(:)
2345 IF (lbound==5 .OR. lbound==6)
THEN
2355 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2356 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2364 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2365 DO ic = 1,
grid%nCorns(region%iRegionGlobal)
2366 IF (
ic==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2367 IF (
ic==ijknend) inte =
grid%nghbor(3,1,
ic)
2370 IF (((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND. &
2371 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) .OR.&
2372 (intb==2 .OR. inte==2))
THEN
2374 dnbeg(:) = dnode(:,ijknbeg)
2375 dnend(:) = dnode(:,ijknend)
2378 DO ind=indbeg+1,indend
2379 ijkn = indijk(
ibeg,ind ,
kbeg,inoff,ijnoff)
2380 ijkn1 = indijk(
ibeg,ind-1,
kbeg,inoff,ijnoff)
2382 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2383 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2384 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2387 DO ind=indbeg+1,indend-1
2388 ijkn = indijk(
ibeg,ind ,
kbeg,inoff,ijnoff)
2389 ijkn1 = indijk(
ibeg,ind-1,
kbeg,inoff,ijnoff)
2390 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2391 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2392 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2395 dnode(:,ijkn) = dn(:)
2398 ELSEIF (ipedge==2)
THEN
2407 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2408 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2416 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2417 DO ic = 1,
grid%nCorns(region%iRegionGlobal)
2418 IF (
ic==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2419 IF (
ic==ijknend) inte =
grid%nghbor(3,1,
ic)
2422 IF (((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND. &
2423 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) .OR.&
2424 (intb==2 .OR. inte==2))
THEN
2426 dnbeg(:) = dnode(:,ijknbeg)
2427 dnend(:) = dnode(:,ijknend)
2430 DO ind=indbeg+1,indend
2431 ijkn = indijk(ind ,
jend,
kbeg,inoff,ijnoff)
2432 ijkn1 = indijk(ind-1,
jend,
kbeg,inoff,ijnoff)
2434 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2435 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2436 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2439 DO ind=indbeg+1,indend-1
2440 ijkn = indijk(ind ,
jend,
kbeg,inoff,ijnoff)
2441 ijkn1 = indijk(ind-1,
jend,
kbeg,inoff,ijnoff)
2442 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2443 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2444 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2447 dnode(:,ijkn) = dn(:)
2450 ELSEIF (ipedge==3)
THEN
2459 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2460 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2468 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2469 DO ic = 1,
grid%nCorns(region%iRegionGlobal)
2470 IF (
ic==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2471 IF (
ic==ijknend) inte =
grid%nghbor(3,1,
ic)
2474 IF (((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND. &
2475 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) .OR.&
2476 (intb==2 .OR. inte==2))
THEN
2478 dnbeg(:) = dnode(:,ijknbeg)
2479 dnend(:) = dnode(:,ijknend)
2482 DO ind=indbeg+1,indend
2483 ijkn = indijk(
iend,ind ,
kbeg,inoff,ijnoff)
2484 ijkn1 = indijk(
iend,ind-1,
kbeg,inoff,ijnoff)
2486 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2487 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2488 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2491 DO ind=indbeg+1,indend-1
2492 ijkn = indijk(
iend,ind ,
kbeg,inoff,ijnoff)
2493 ijkn1 = indijk(
iend,ind-1,
kbeg,inoff,ijnoff)
2494 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2495 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2496 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2499 dnode(:,ijkn) = dn(:)
2502 ELSEIF (ipedge==4)
THEN
2511 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2512 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2520 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2521 DO ic = 1,
grid%nCorns(region%iRegionGlobal)
2522 IF (
ic==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2523 IF (
ic==ijknend) inte =
grid%nghbor(3,1,
ic)
2526 IF (((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND. &
2527 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) .OR.&
2528 (intb==2 .OR. inte==2))
THEN
2530 dnbeg(:) = dnode(:,ijknbeg)
2531 dnend(:) = dnode(:,ijknend)
2534 DO ind=indbeg+1,indend
2535 ijkn = indijk(ind ,
jbeg,
kbeg,inoff,ijnoff)
2536 ijkn1 = indijk(ind-1,
jbeg,
kbeg,inoff,ijnoff)
2538 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2539 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2540 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2543 DO ind=indbeg+1,indend-1
2544 ijkn = indijk(ind ,
jbeg,
kbeg,inoff,ijnoff)
2545 ijkn1 = indijk(ind-1,
jbeg,
kbeg,inoff,ijnoff)
2546 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2547 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2548 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2551 dnode(:,ijkn) = dn(:)
2593 TYPE(t_region
),
POINTER :: regions(:)
2597 INTEGER :: ireg, ipatch, ipass
2600 INTEGER :: bctype, iregsrc, ipatchsrc, npass
2602 TYPE(t_grid),
POINTER ::
grid, gridold, gridsrc
2608 global => regions(1)%global
2611 'RFLO_ModMoveGridNconform.F90' )
2615 npass = global%moveGridNsmatch
2620 DO ireg=1,global%nRegions
2621 IF (regions(ireg)%procid==global%myProcid .AND. &
2622 regions(ireg)%active==active .AND. &
2623 regions(ireg)%mixtInput%moveGrid)
THEN
2625 grid => regions(ireg)%levels(1)%grid
2626 gridold => regions(ireg)%levels(1)%gridOld
2628 DO ipatch=1,regions(ireg)%nPatches
2629 patch => regions(ireg)%levels(1)%patches(ipatch)
2630 bctype =
patch%bcType
2631 IF ((bctype>=bc_regionconf .AND. bctype<=bc_regionconf+bc_range) .OR. &
2632 (bctype>=bc_tra_peri .AND. bctype<=bc_tra_peri +bc_range) .OR. &
2633 (bctype>=bc_rot_peri .AND. bctype<=bc_rot_peri +bc_range))
THEN
2634 iregsrc =
patch%srcRegion
2635 ipatchsrc =
patch%srcPatch
2636 patchsrc => regions(iregsrc)%levels(1)%patches(ipatchsrc)
2637 gridsrc => regions(iregsrc)%levels(1)%grid
2639 IF (regions(iregsrc)%procid == global%myProcid)
THEN
2641 patch,patchsrc,.false., &
2642 grid%xyz,gridsrc%xyz )
2643 IF (ipass < npass)
THEN
2647 grid%arcLen56,gridold%xyzOld,
grid%xyz )
2652 gridold%xyzOld,
grid%xyz )
2675 DO ireg=1,global%nRegions
2676 IF (regions(ireg)%procid==global%myProcid .AND. &
2677 regions(ireg)%active==active .AND. &
2678 regions(ireg)%mixtInput%moveGrid)
THEN
2680 grid => regions(ireg)%levels(1)%grid
2681 gridold => regions(ireg)%levels(1)%gridOld
2683 DO ipatch=1,regions(ireg)%nPatches
2684 patch => regions(ireg)%levels(1)%patches(ipatch)
2685 bctype =
patch%bcType
2686 IF ((bctype>=bc_regionconf .AND. bctype<=bc_regionconf+bc_range) .OR. &
2687 (bctype>=bc_tra_peri .AND. bctype<=bc_tra_peri +bc_range) .OR. &
2688 (bctype>=bc_rot_peri .AND. bctype<=bc_rot_peri +bc_range))
THEN
2689 iregsrc =
patch%srcRegion
2690 ipatchsrc =
patch%srcPatch
2691 patchsrc => regions(iregsrc)%levels(1)%patches(ipatchsrc)
2692 gridsrc => regions(iregsrc)%levels(1)%grid
2694 IF (regions(iregsrc)%procid /= global%myProcid)
THEN
2697 IF (ipass < npass)
THEN
2701 grid%arcLen56,gridold%xyzOld,
grid%xyz )
2706 gridold%xyzOld,
grid%xyz )
2727 DO ireg=1,global%nRegions
2728 IF (regions(ireg)%procid==global%myProcid .AND. &
2729 regions(ireg)%active==active .AND. &
2730 regions(ireg)%mixtInput%moveGrid)
THEN
2765 arclen12,arclen34,arclen56, &
2772 #include "Indexing.h"
2775 LOGICAL :: boundmoved(6), edgemoved(12)
2777 REAL(RFREAL),
POINTER :: arclen12(:,:), arclen34(:,:), arclen56(:,:)
2778 REAL(RFREAL),
POINTER :: dnode(:,:), xyzold(:,:)
2780 TYPE(t_region
) :: region
2783 INTEGER :: ibound, l1, l2
2787 INTEGER :: l1b, l1e, l2b, l2e, lc, ijkn, ijke(4), ijkem(4), inoff, ijnoff
2788 INTEGER :: switch(6,9)
2792 REAL(RFREAL) :: arclen(4), ds(4),
s(4)
2793 REAL(RFREAL) :: corner(3,8), e1(3), e2(3), e3(3), e4(3), &
2794 p1(3), p2(3), p3(3), p4(3), dn(3)
2799 'RFLO_ModMoveGridNconform.F90' )
2824 corner(:,2) = dnode(:,indijk(
ipnbeg,
jpnbeg,kpnend,inoff,ijnoff))
2825 corner(:,3) = dnode(:,indijk(
ipnbeg,
jpnend,kpnend,inoff,ijnoff))
2828 corner(:,6) = dnode(:,indijk(
ipnend,
jpnbeg,kpnend,inoff,ijnoff))
2829 corner(:,7) = dnode(:,indijk(
ipnend,
jpnend,kpnend,inoff,ijnoff))
2839 IF ((edgemoved(switch(ibound,1)) .OR. edgemoved(switch(ibound,2)) .OR. &
2840 edgemoved(switch(ibound,3)) .OR. edgemoved(switch(ibound,4))))
THEN
2842 l1b = switch(ibound,5)
2843 l1e = switch(ibound,6)
2844 l2b = switch(ibound,7)
2845 l2e = switch(ibound,8)
2846 lc = switch(ibound,9)
2848 IF (ibound == 1)
THEN
2853 ELSE IF (ibound == 2)
THEN
2858 ELSE IF (ibound == 3)
THEN
2863 ELSE IF (ibound == 4)
THEN
2868 ELSE IF (ibound == 5)
THEN
2873 ELSE IF (ibound == 6)
THEN
2886 IF (ibound==1 .OR. ibound==2)
THEN
2887 ijkn = indijk(lc,l1 ,l2 ,inoff,ijnoff)
2888 ijke(1) = indijk(lc,
jpnbeg,l2 ,inoff,ijnoff)
2889 ijkem(1) = indijk(lc,
jpnbeg,l2-1 ,inoff,ijnoff)
2890 ijke(2) = indijk(lc,
jpnend,l2 ,inoff,ijnoff)
2891 ijkem(2) = indijk(lc,
jpnend,l2-1 ,inoff,ijnoff)
2892 ijke(3) = indijk(lc,l1 ,
kpnbeg,inoff,ijnoff)
2893 ijkem(3) = indijk(lc,l1-1 ,
kpnbeg,inoff,ijnoff)
2894 ijke(4) = indijk(lc,l1 ,kpnend,inoff,ijnoff)
2895 ijkem(4) = indijk(lc,l1-1 ,kpnend,inoff,ijnoff)
2896 arclen(1) = arclen56(lc,
jpnbeg)
2897 arclen(2) = arclen56(lc,
jpnend)
2898 arclen(3) = arclen34(
kpnbeg,lc)
2899 arclen(4) = arclen34(kpnend,lc)
2900 ELSE IF (ibound==3 .OR. ibound==4)
THEN
2901 ijkn = indijk(l2 ,lc,l1 ,inoff,ijnoff)
2902 ijke(1) = indijk(l2 ,lc,
kpnbeg,inoff,ijnoff)
2903 ijkem(1) = indijk(l2-1 ,lc,
kpnbeg,inoff,ijnoff)
2904 ijke(2) = indijk(l2 ,lc,kpnend,inoff,ijnoff)
2905 ijkem(2) = indijk(l2-1 ,lc,kpnend,inoff,ijnoff)
2906 ijke(3) = indijk(
ipnbeg,lc,l1 ,inoff,ijnoff)
2907 ijkem(3) = indijk(
ipnbeg,lc,l1-1 ,inoff,ijnoff)
2908 ijke(4) = indijk(
ipnend,lc,l1 ,inoff,ijnoff)
2909 ijkem(4) = indijk(
ipnend,lc,l1-1 ,inoff,ijnoff)
2910 arclen(1) = arclen12(lc,
kpnbeg)
2911 arclen(2) = arclen12(lc,kpnend)
2912 arclen(3) = arclen56(
ipnbeg,lc)
2913 arclen(4) = arclen56(
ipnend,lc)
2914 ELSE IF (ibound==5 .OR. ibound==6)
THEN
2915 ijkn = indijk(l1 ,l2 ,lc,inoff,ijnoff)
2916 ijke(1) = indijk(
ipnbeg,l2 ,lc,inoff,ijnoff)
2917 ijkem(1) = indijk(
ipnbeg,l2-1 ,lc,inoff,ijnoff)
2918 ijke(2) = indijk(
ipnend,l2 ,lc,inoff,ijnoff)
2919 ijkem(2) = indijk(
ipnend,l2-1 ,lc,inoff,ijnoff)
2920 ijke(3) = indijk(l1 ,
jpnbeg,lc,inoff,ijnoff)
2921 ijkem(3) = indijk(l1-1 ,
jpnbeg,lc,inoff,ijnoff)
2922 ijke(4) = indijk(l1 ,
jpnend,lc,inoff,ijnoff)
2923 ijkem(4) = indijk(l1-1 ,
jpnend,lc,inoff,ijnoff)
2924 arclen(1) = arclen34(lc,
ipnbeg)
2925 arclen(2) = arclen34(lc,
ipnend)
2926 arclen(3) = arclen12(
jpnbeg,lc)
2927 arclen(4) = arclen12(
jpnend,lc)
2931 sqrt((xyzold(xcoord,ijke(1))-xyzold(xcoord,ijkem(1)))**2 + &
2932 (xyzold(ycoord,ijke(1))-xyzold(ycoord,ijkem(1)))**2 + &
2933 (xyzold(zcoord,ijke(1))-xyzold(zcoord,ijkem(1)))**2)
2935 sqrt((xyzold(xcoord,ijke(2))-xyzold(xcoord,ijkem(2)))**2 + &
2936 (xyzold(ycoord,ijke(2))-xyzold(ycoord,ijkem(2)))**2 + &
2937 (xyzold(zcoord,ijke(2))-xyzold(zcoord,ijkem(2)))**2)
2941 sqrt((xyzold(xcoord,ijke(3))-xyzold(xcoord,ijkem(3)))**2 + &
2942 (xyzold(ycoord,ijke(3))-xyzold(ycoord,ijkem(3)))**2 + &
2943 (xyzold(zcoord,ijke(3))-xyzold(zcoord,ijkem(3)))**2)
2945 sqrt((xyzold(xcoord,ijke(4))-xyzold(xcoord,ijkem(4)))**2 + &
2946 (xyzold(ycoord,ijke(4))-xyzold(ycoord,ijkem(4)))**2 + &
2947 (xyzold(zcoord,ijke(4))-xyzold(zcoord,ijkem(4)))**2)
2948 s(:) = ds(:)/arclen(:)
2949 e1(:) = dnode(:,ijke(1))
2950 e2(:) = dnode(:,ijke(2))
2951 e3(:) = dnode(:,ijke(3))
2952 e4(:) = dnode(:,ijke(4))
2953 CALL
rflo_tfint2d(
s(1),
s(2),
s(3),
s(4),e1,e2,e3,e4,
p1,p2,p3,p4,dn )
2954 dnode(:,ijkn) = dn(:)
**********************************************************************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 rflo_copygeometrydummy(region)
**********************************************************************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 jpnbeg
subroutine rflo_calccellcentroids(region)
subroutine rflo_mgframesurfaces(regions, someMoved, iType)
subroutine rflo_mgframeedges(region, iType, boundMoved, allExternal, edgeMoved, arcLen12, arcLen34, arcLen56, xyzOld, dNode)
subroutine rflo_mgframeedgeso(region, iType, boundMoved, allExternal, edgeMoved, arcLen12, arcLen34, arcLen56, xyzOld, dNode)
**********************************************************************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 kpcbeg
Vector_n max(const Array_n_const &v1, const Array_n_const &v2)
subroutine rflo_arclengthbounds(region, xyz, arcLen12, arcLen34, arcLen56)
**********************************************************************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 kpnbeg
subroutine rflo_tfint2d(s1, s2, s3, s4, e1, e2, e3, e4, p1, p2, p3, p4, xyz)
subroutine rflo_c2eavgcoeffs(region)
subroutine, public rflo_mgframebroadcast(regions, iselect, iter)
subroutine registerfunction(global, funName, fileName)
**********************************************************************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 ic
subroutine, public rflo_movegridframe(regions)
subroutine rflo_exchangednoderecv(region, regionSrc, patch, patchSrc, average, dNode)
subroutine rflo_c2favgcoeffs(region)
**********************************************************************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 jpcbeg
subroutine rflo_changeinteriorgrid(region, boundMoved, edgeMoved, arcLen12, arcLen34, arcLen56, xyzOld, xyz)
**********************************************************************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 ipcend
subroutine rflo_movegridinterfaces(regions)
subroutine rflo_calccontrolvolumes(region)
subroutine rflo_tfint1d(s, p1, p2, xyz)
**********************************************************************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 jpnend
subroutine rflo_getnodeoffset(region, iLev, iNodeOffset, ijNodeOffset)
subroutine rflo_mgframemovecorners(regions)
**********************************************************************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_calcfacevectors(region)
**********************************************************************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 ipcbeg
subroutine rflo_exchangegeometry(regions)
subroutine rflo_movegridsurfaces(regions, someMoved)
subroutine rflo_generatecoarsegrids(region)
subroutine rflo_getpatchindicesnodes(region, patch, iLev, ibeg, iend, jbeg, jend, kbeg, kend)
subroutine rflo_mgframeinterfaces(regions, iType)
**********************************************************************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 ipnbeg
subroutine, public rflo_mgframesrchneighbors(regions)
subroutine rflo_clearsendrequests(regions, iReg, geometry)
subroutine rflo_calcgridspeeds(region)
Vector_n min(const Array_n_const &v1, const Array_n_const &v2)
subroutine rflo_getdimensphysnodes(region, iLev, ipnbeg, ipnend, jpnbeg, jpnend, kpnbeg, kpnend)
**********************************************************************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 jpcend
**********************************************************************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 rflo_exchangednodecopy(region, regionSrc, patch, patchSrc, average, dNode, dNodeSrc)
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 dist(long double *coord1, long double *coord2, int size)
subroutine rflo_mgframerestoreexternal(region)
subroutine rflo_mgframebnddeformation(region, boundMoved, edgeMoved, arcLen12, arcLen34, arcLen56, xyzOld, dNode)
**********************************************************************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)
**********************************************************************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 ipnend
subroutine rflo_exchangednodesend(region, regionSrc, patch, dNode)
subroutine rflo_checkmetrics(iReg, region)
subroutine rflo_getdimensphys(region, iLev, ipcbeg, ipcend, jpcbeg, jpcend, kpcbeg, kpcend)
subroutine rflo_laplacegridsmoo(regions, resid)
subroutine rflo_calcfacecentroids(region)
subroutine, public rflo_mgframecornpoints(regions)
subroutine rflo_mgframecorrectneighbors(regions)