72 CHARACTER(CHRLEN) :: rcsidentstring = &
73 '$RCSfile: RFLO_ModMoveGridFrame.F90,v $ $Revision: 1.75 $'
113 include
'roccomf90.h'
117 TYPE(t_region
),
POINTER :: regions(:)
120 INTEGER :: ireg, iter, ipatch, ijk
123 LOGICAL :: somemoved, someremesh
125 INTEGER :: bctype, iremesh, jremesh, nremesh, itype
127 REAL(RFREAL) :: resid, globalresid
128 REAL(RFREAL),
POINTER :: xyz(:,:), xyzold(:,:)
134 DOUBLE PRECISION :: dalpha
139 global => regions(1)%global
142 'RFLO_ModMoveGridFrame.F90' )
149 dalpha = global%dtMin/global%dTimeSystem
150 CALL com_call_function( global%genxHandleGm,1,dalpha )
165 DO ireg=1,global%nRegions
166 IF (regions(ireg)%procid==global%myProcid .AND. &
167 regions(ireg)%active==active .AND. &
168 regions(ireg)%mixtInput%moveGrid)
THEN
172 grid => regions(ireg)%levels(1)%grid
173 gridold => regions(ireg)%levels(1)%gridOld
177 gridold%xyzOld,
grid%xyz )
190 IF (global%moveGridNiter < 1)
THEN
191 IF (global%verbLevel >= verbose_high)
THEN
192 IF (global%myProcid == masterproc)
THEN
193 WRITE(stdout,4000) solver_name,global%skewness,global%minVol
194 WRITE(stdout,1000) solver_name, &
195 global%moveGridNiter,global%moveGridNsmatch, &
196 global%moveGridAmplifX,global%moveGridAmplifY, &
197 global%moveGridAmplifZ,global%moveGridPower, &
198 global%moveGridOrthDir,global%moveGridOrthWghtX, &
199 global%moveGridOrthWghtY,global%moveGridOrthWghtZ
206 DO iter=1,global%moveGridNiter
210 IF (global%verbLevel >= verbose_high)
THEN
212 CALL mpi_reduce( resid,globalresid,1,mpi_rfreal,mpi_sum, &
213 masterproc,global%mpiComm,global%mpierr )
214 IF (global%mpierr /= 0) CALL
errorstop( global,err_mpi_trouble,&
219 IF (global%myProcid == masterproc)
THEN
220 WRITE(stdout,4000) solver_name,global%skewness,global%minVol
222 IF (global%moveGridScheme==movegrid_frame)
THEN
223 WRITE(stdout,2000) solver_name, &
224 global%moveGridNiter,global%moveGridNsmatch, &
225 global%moveGridAmplifX,global%moveGridAmplifY, &
226 global%moveGridAmplifZ,global%moveGridPower, &
227 global%moveGridOrthDir,global%moveGridOrthWghtX, &
228 global%moveGridOrthWghtY,global%moveGridOrthWghtZ, &
230 ELSEIF (global%moveGridScheme==movegrid_foms)
THEN
231 WRITE(stdout,3000) solver_name, &
232 global%moveGridNiter,global%moveGridNsmatch, &
233 global%moveGridAmplifX,global%moveGridAmplifY, &
234 global%moveGridAmplifZ,global%moveGridPower, &
235 global%moveGridOrthDir,global%moveGridOrthWghtX, &
236 global%moveGridOrthWghtY,global%moveGridOrthWghtZ, &
237 global%moveGridWeight,global%moveGridOrthCell, &
246 DO ireg=1,global%nRegions
247 IF (regions(ireg)%procid==global%myProcid .AND. &
248 regions(ireg)%active==active .AND. &
249 regions(ireg)%mixtInput%moveGrid)
THEN
253 xyz => regions(ireg)%levels(1)%grid%xyz
254 xyzold => regions(ireg)%levels(1)%gridOld%xyz
264 grid => regions(ireg)%levels(1)%grid
265 gridold => regions(ireg)%levels(1)%gridOld
266 grid%boundMoved(:) = .true.
267 grid%edgeMoved(:) = .true.
268 DO ipatch=1,regions(ireg)%nPatches
269 patch => regions(ireg)%levels(1)%patches(ipatch)
270 bctype =
patch%bcType
274 IF (bctype.EQ.bc_symmetry)
THEN
306 DO ireg=1,global%nRegions
307 IF (regions(ireg)%procid==global%myProcid .AND. &
308 regions(ireg)%active==active .AND. &
309 regions(ireg)%mixtInput%moveGrid)
THEN
313 IF (global%moveGridScheme==movegrid_foms) &
315 IF (regions(ireg)%mixtInput%faceEdgeAvg==fe_avg_linear) &
328 CALL mpi_allreduce( iremesh, nremesh, 1, mpi_integer, mpi_sum, &
329 global%mpiComm, global%mpierr )
330 IF (global%mpierr /=0 ) CALL
errorstop( global,err_mpi_trouble,&
332 IF (nremesh > 0) someremesh = .true.
337 DO ireg=1,global%nRegions
338 IF (regions(ireg)%procid==global%myProcid .AND. &
339 regions(ireg)%active==active .AND. &
344 IF (global%moveGridScheme==movegrid_foms) &
346 IF (regions(ireg)%mixtInput%faceEdgeAvg==fe_avg_linear) &
361 1000
FORMAT(
a,1
x,
'Global-TFI grid motion:', &
362 2i5,4(1pe9.2),i4,3(1pe9.2))
363 2000
FORMAT(
a,1
x,
'Global-Weighted-Laplacian grid motion:', &
364 2i5,4(1pe9.2),i4,3(1pe9.2),1pe13.4)
365 3000
FORMAT(
a,1
x,
'Global-Orthogonal-Laplacian gridmotion:', &
366 2i3,4(1pe9.2),i4,3(1pe9.2),3(1pe9.2),1pe10.2)
367 4000
FORMAT(
a,1
x,
'global skewness, minvol:',2(1pe14.5))
392 #include "Indexing.h"
395 TYPE(t_region
),
POINTER :: regions(:)
398 INTEGER :: l, ipatch, ireg, ipcorn, intcorn, nreg
401 INTEGER,
PARAMETER :: ncmax=100
404 INTEGER :: iptc, jptc, kptc, iblk, jblk, kblk, ijkcurr
405 INTEGER :: inoff, ijnoff, lbound, regnc, errfl
406 INTEGER,
ALLOCATABLE :: ivar(:), ijkcorn(:,:)
415 global => regions(1)%global
418 'RFLO_ModMoveGridFrame.F90' )
422 ALLOCATE( ivar(global%nRegions),stat=errfl )
424 IF (global%error /= 0) CALL
errorstop( global,err_allocate,&
427 ALLOCATE( ijkcorn(ncmax,global%nRegions),stat=errfl )
429 IF (global%error /= 0) CALL
errorstop( global,err_allocate,&
434 DO ireg = 1,global%nRegions
435 IF (regions(ireg)%procid==global%myProcid .AND. &
436 regions(ireg)%active==active)
THEN
438 grid => regions(ireg)%levels(ilev)%grid
446 grid%nCorns(ireg) = 8
448 ijkcorn(2,ireg) = indijk(
ipnbeg,
jpnbeg,kpnend,inoff,ijnoff)
449 ijkcorn(3,ireg) = indijk(
ipnbeg,
jpnend,kpnend,inoff,ijnoff)
452 ijkcorn(6,ireg) = indijk(
ipnend,
jpnbeg,kpnend,inoff,ijnoff)
453 ijkcorn(7,ireg) = indijk(
ipnend,
jpnend,kpnend,inoff,ijnoff)
456 DO ipatch=1,regions(ireg)%nPatches
457 patch => regions(ireg)%levels(ilev)%patches(ipatch)
458 lbound =
patch%lbound
464 IF (lbound==1 .OR. lbound==2)
THEN
466 IF (lbound==1) iblk =
ipnbeg
467 IF (lbound==2) iblk =
ipnend
473 ELSEIF (ipcorn==2)
THEN
478 ELSEIF (ipcorn==3)
THEN
483 ELSEIF (ipcorn==4)
THEN
489 ELSEIF (lbound==3 .OR. lbound==4)
THEN
491 IF (lbound==3) jblk =
jpnbeg
492 IF (lbound==4) jblk =
jpnend
498 ELSEIF (ipcorn==2)
THEN
503 ELSEIF (ipcorn==3)
THEN
508 ELSEIF (ipcorn==4)
THEN
514 ELSEIF (lbound==5 .OR. lbound==6)
THEN
516 IF (lbound==5) kblk =
kpnbeg
517 IF (lbound==6) kblk = kpnend
523 ELSEIF (ipcorn==2)
THEN
528 ELSEIF (ipcorn==3)
THEN
533 ELSEIF (ipcorn==4)
THEN
541 patch%corns(ipcorn) = indijk(iptc,jptc,kptc,inoff,ijnoff)
543 IF (iptc/=iblk .OR. jptc/=jblk .OR. kptc/=kblk)
THEN
545 ijkcurr = indijk(iptc,jptc,kptc,inoff,ijnoff)
546 DO intcorn=1,
grid%nCorns(ireg)
547 IF (ijkcorn(intcorn,ireg)==ijkcurr)
THEN
551 IF (.NOT. wasfound)
THEN
552 grid%nCorns(ireg) =
grid%nCorns(ireg) +1
553 ijkcorn(
grid%nCorns(ireg),ireg) = ijkcurr
556 IF (
grid%nCorns(ireg) >= ncmax)
THEN
557 CALL
errorstop( global,err_illegal_value,&
559 'too low ncMax in RFLO_ModMoveGridFrame/RFLO_MgFrameCornPoints')
564 ivar(ireg) =
grid%nCorns(ireg)
569 DO ireg = 1,global%nRegions
570 CALL mpi_bcast( ivar(ireg),1,mpi_integer, &
571 regions(ireg)%procId,global%mpiComm,global%mpierr )
572 IF (global%mpierr /=0 ) CALL
errorstop( global,err_mpi_trouble,&
575 CALL mpi_bcast( ijkcorn(1:ncmax,ireg),ncmax,mpi_integer, &
576 regions(ireg)%procId,global%mpiComm,global%mpierr )
577 IF (global%mpierr /=0 ) CALL
errorstop( global,err_mpi_trouble,&
583 DO ireg = 1,global%nRegions
584 regnc =
max( regnc,ivar(ireg) )
586 global%moveGridRegNc = regnc
588 DO ireg = 1,global%nRegions
589 IF (regions(ireg)%procid==global%myProcid .AND. &
590 regions(ireg)%active==active)
THEN
592 grid => regions(ireg)%levels(ilev)%grid
593 DO nreg = 1,global%nRegions
594 grid%nCorns(nreg) = ivar(nreg)
597 ALLOCATE(
grid%ijkCorn( regnc,global%nRegions),stat=errfl )
599 IF (global%error /= 0) CALL
errorstop( global,err_allocate,&
602 ALLOCATE(
grid%regCorn( 3,regnc,global%nRegions),stat=errfl )
604 IF (global%error /= 0) CALL
errorstop( global,err_allocate,&
607 ALLOCATE(
grid%regCornOld( 3,regnc,global%nRegions),stat=errfl )
609 IF (global%error /= 0) CALL
errorstop( global,err_allocate,&
612 ALLOCATE(
grid%regCornOrig(3,regnc,global%nRegions),stat=errfl )
614 IF (global%error /= 0) CALL
errorstop( global,err_allocate,&
617 ALLOCATE(
grid%nghbor( 3,global%moveGridNbour,regnc),stat=errfl )
619 IF (global%error /= 0) CALL
errorstop( global,err_allocate,&
622 DO l = 1,
grid%nCorns(ireg)
623 grid%ijkCorn(l,ireg) = ijkcorn(l,ireg)
628 ALLOCATE(
grid%nShared( regnc),stat=errfl )
630 IF (global%error /= 0) CALL
errorstop( global,err_allocate,&
633 ALLOCATE(
grid%regCornBuff(3,regnc,global%nRegions),stat=errfl )
635 IF (global%error /= 0) CALL
errorstop( global,err_allocate,&
638 ALLOCATE(
grid%regCornOrth(3,regnc,global%nRegions),stat=errfl )
640 IF (global%error /= 0) CALL
errorstop( global,err_allocate,&
648 DEALLOCATE( ivar,stat=errfl )
650 IF (global%error /= 0) CALL
errorstop( global,err_deallocate,&
679 #include "Indexing.h"
682 TYPE(t_region
),
POINTER :: regions(:)
683 INTEGER :: iselect, iter
686 INTEGER ::
i, l, ireg
689 INTEGER :: ilev, ncorns, errfl
690 INTEGER,
ALLOCATABLE :: corner(:)
692 REAL(RFREAL),
ALLOCATABLE :: rvar(:,:,:)
693 REAL(RFREAL),
POINTER :: dxyz(:,:), xyzold(:,:)
700 global => regions(1)%global
703 'RFLO_ModMoveGridFrame.F90' )
707 ALLOCATE( rvar(xcoord:zcoord,global%moveGridRegNc,global%nRegions), &
710 IF (global%error /= 0) CALL
errorstop( global,err_allocate,&
716 DO ireg = 1,global%nRegions
717 IF (regions(ireg)%procid==global%myProcid .AND. &
718 regions(ireg)%active==active)
THEN
720 grid => regions(ireg)%levels(ilev)%grid
721 gridold => regions(ireg)%levels(ilev)%gridOld
724 xyzold => gridold%xyz
725 ncorns =
grid%nCorns(ireg)
727 ALLOCATE( corner(ncorns), stat=errfl )
729 IF (global%error /= 0) CALL
errorstop( global,err_allocate,&
733 corner(l) =
grid%ijkCorn(l,ireg)
743 grid%regCornOrig(xcoord,
i,ireg) = dxyz(xcoord,corner(
i))
744 grid%regCornOrig(ycoord,
i,ireg) = dxyz(ycoord,corner(
i))
745 grid%regCornOrig(zcoord,
i,ireg) = dxyz(zcoord,corner(
i))
746 rvar(:,
i,ireg) =
grid%regCornOrig(:,
i,ireg)
748 ELSEIF (iselect==1)
THEN
750 grid%regCornOld(xcoord,
i,ireg) = dxyz(xcoord,corner(
i))
751 grid%regCornOld(ycoord,
i,ireg) = dxyz(ycoord,corner(
i))
752 grid%regCornOld(zcoord,
i,ireg) = dxyz(zcoord,corner(
i))
753 rvar(:,
i,ireg) =
grid%regCornOld(:,
i,ireg)
759 rvar(:,:,ireg) =
grid%regCornOld(:,:,ireg)
766 grid%regCornBuff(:,
i,ireg) = xyzold(:,corner(
i))
767 rvar(:,
i,ireg) =
grid%regCornBuff(:,
i,ireg)
772 rvar(:,
i,ireg) =
grid%regCornOrth(:,
i,ireg)
776 DEALLOCATE( corner, stat=errfl )
778 IF (global%error /= 0) CALL
errorstop( global,err_deallocate,&
785 DO ireg = 1,global%nRegions
786 ncorns = global%moveGridRegNc
788 CALL mpi_bcast( rvar(xcoord:zcoord,1:ncorns,ireg),3*ncorns, &
789 mpi_rfreal,regions(ireg)%procId,global%mpiComm,global%mpierr )
790 IF (global%mpierr /=0 ) CALL
errorstop( global,err_mpi_trouble,&
793 CALL mpi_barrier( global%mpiComm,global%mpierr )
795 DO ireg = 1,global%nRegions
796 IF (regions(ireg)%procid==global%myProcid .AND. &
797 regions(ireg)%active==active)
THEN
799 grid => regions(ireg)%levels(ilev)%grid
802 DO l=1,global%nRegions
803 grid%regCornOrig(:,:,l) = rvar(:,:,l)
805 ELSEIF (iselect==1)
THEN
806 DO l=1,global%nRegions
807 grid%regCornOld(:,:,l) = rvar(:,:,l)
812 DO l=1,global%nRegions
813 grid%regCornOld(:,:,l) = rvar(:,:,l)
818 DO l=1,global%nRegions
819 grid%regCornBuff(:,:,l) = rvar(:,:,l)
823 DO l=1,global%nRegions
824 grid%regCornOrth(:,:,l) = rvar(:,:,l)
845 DEALLOCATE( rvar,stat=errfl )
847 IF (global%error /= 0) CALL
errorstop( global,err_deallocate,&
876 #include "Indexing.h"
879 TYPE(t_region
),
POINTER :: regions(:)
882 INTEGER ::
i,
j,
k, ipatch,
ic, ireg, nc, nreg
885 INTEGER,
PARAMETER :: nsharedmax=16
889 INTEGER :: regnc, ncorns, nbour, nshared, nsmax
890 INTEGER :: ijknode(4), inoff, ijnoff, lbound, errfl
891 INTEGER,
ALLOCATABLE :: ncmin(:), nregmin(:), cshared(:,:,:)
892 REAL(RFREAL) :: edgelen, ds, tol
893 REAL(RFREAL),
POINTER :: xyz(:,:)
894 REAL(RFREAL),
ALLOCATABLE ::
dist(:,:), distmin(:)
902 global => regions(1)%global
905 'RFLO_ModMoveGridFrame.F90' )
909 global%MoveGridNsharedMax = nsharedmax
910 nbour = global%moveGridNbour
911 regnc = global%moveGridRegNc
914 ALLOCATE( ncmin(nbour), stat=errfl );
IF (errfl>0) goto 88
915 ALLOCATE( nregmin(nbour), stat=errfl );
IF (errfl>0) goto 88
916 ALLOCATE( distmin(nbour), stat=errfl );
IF (errfl>0) goto 88
917 ALLOCATE(
dist(regnc,global%nRegions), stat=errfl );
IF (errfl>0) goto 88
918 ALLOCATE( cshared(2,nsharedmax,regnc), stat=errfl );
IF (errfl>0) goto 88
920 DO ireg = 1,global%nRegions
921 IF (regions(ireg)%procid==global%myProcid .AND. &
922 regions(ireg)%active==active)
THEN
924 grid => regions(ireg)%levels(ilev)%grid
926 ncorns =
grid%nCorns(ireg)
934 xyz => regions(ireg)%levels(ilev)%grid%xyz
938 edgelen = 1.e+30_rfreal
943 ijknode(1) = indijk(
i ,
j ,
k ,inoff,ijnoff)
944 ijknode(2) = indijk(
i+1,
j ,
k ,inoff,ijnoff)
945 ijknode(3) = indijk(
i ,
j+1,
k ,inoff,ijnoff)
946 ijknode(4) = indijk(
i ,
j ,
k+1,inoff,ijnoff)
947 ds =
sqrt((xyz(xcoord,ijknode(2))-xyz(xcoord,ijknode(1)))**2+ &
948 (xyz(ycoord,ijknode(2))-xyz(ycoord,ijknode(1)))**2+ &
949 (xyz(zcoord,ijknode(2))-xyz(zcoord,ijknode(1)))**2)
950 edgelen =
min(edgelen,ds)
951 ds =
sqrt((xyz(xcoord,ijknode(3))-xyz(xcoord,ijknode(1)))**2+ &
952 (xyz(ycoord,ijknode(3))-xyz(ycoord,ijknode(1)))**2+ &
953 (xyz(zcoord,ijknode(3))-xyz(zcoord,ijknode(1)))**2)
954 edgelen =
min(edgelen,ds)
955 ds =
sqrt((xyz(xcoord,ijknode(4))-xyz(xcoord,ijknode(1)))**2+ &
956 (xyz(ycoord,ijknode(4))-xyz(ycoord,ijknode(1)))**2+ &
957 (xyz(zcoord,ijknode(4))-xyz(zcoord,ijknode(1)))**2)
958 edgelen =
min(edgelen,ds)
962 tol = 1.e-5_rfreal*edgelen
967 distmin(1:nbour) = 1.e+30_rfreal
971 DO nreg = 1,global%nRegions
972 DO nc = 1,
grid%nCorns(nreg)
973 dist(nc,nreg) =
sqrt((
grid%regCornOrig(xcoord,nc,nreg)- &
974 grid%regCornOrig(xcoord,
ic,ireg))**2 + &
975 (
grid%regCornOrig(ycoord,nc,nreg)- &
976 grid%regCornOrig(ycoord,
ic,ireg))**2 + &
977 (
grid%regCornOrig(zcoord,nc,nreg)- &
978 grid%regCornOrig(zcoord,
ic,ireg))**2)
992 IF (
dist(nc,nreg)<distmin(1) .AND.
dist(nc,nreg)>edgelen)
THEN
994 distmin(
k) = distmin(
k-1)
995 ncmin(
k) = ncmin(
k-1)
996 nregmin(
k) = nregmin(
k-1)
998 distmin(1) =
dist(nc,nreg)
1004 IF (
dist(nc,nreg) > (distmin(
k-1) + tol) .AND. &
1005 dist(nc,nreg) < (distmin(
k) - tol))
THEN
1010 distmin(
j) = distmin(
j-1)
1011 ncmin(
j) = ncmin(
j-1)
1012 nregmin(
j) = nregmin(
j-1)
1014 distmin(
k) =
dist(nc,nreg)
1021 IF (
dist(nc,nreg)<edgelen)
THEN
1023 IF (nshared > nsharedmax)
THEN
1024 CALL
errorstop( global,err_illegal_value,&
1026 'too low nSharedMax in RFLO_MgFrameSrchNeighbors')
1028 cshared(1,nshared,
ic) = nc
1029 cshared(2,nshared,
ic) = nreg
1035 grid%nShared(
ic) = nshared
1036 nsmax =
max( nsmax,nshared )
1048 grid%nghbor(3,:,:) = 1
1052 ALLOCATE(
grid%cshared(2,nsmax,regnc),stat=errfl )
1053 global%error = errfl
1054 IF (global%error /= 0) CALL
errorstop( global,err_allocate,&
1056 grid%cshared(1:2,1:nsmax,1:ncorns) = cshared(1:2,1:nsmax,1:ncorns)
1063 DEALLOCATE( ncmin, stat=errfl );
IF (errfl>0) goto 99
1064 DEALLOCATE( nregmin, stat=errfl );
IF (errfl>0) goto 99
1065 DEALLOCATE( distmin, stat=errfl );
IF (errfl>0) goto 99
1066 DEALLOCATE(
dist, stat=errfl );
IF (errfl>0) goto 99
1067 DEALLOCATE( cshared, stat=errfl );
IF (errfl>0) goto 99
1071 DO ireg = 1,global%nRegions
1072 IF (regions(ireg)%procid==global%myProcid .AND. &
1073 regions(ireg)%active==active)
THEN
1075 grid => regions(ireg)%levels(ilev)%grid
1078 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(1)%interact).OR. &
1079 (.NOT. regions(ireg)%levels(ilev)%edgeCells(1)%interact).OR. &
1080 (.NOT. regions(ireg)%levels(ilev)%edgeCells(4)%interact).OR. &
1081 (.NOT. regions(ireg)%levels(ilev)%edgeCells(9)%interact)) &
1082 grid%nghbor(3,1:nbour,1) = 0
1085 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(2)%interact).OR. &
1086 (.NOT. regions(ireg)%levels(ilev)%edgeCells(1)%interact).OR. &
1087 (.NOT. regions(ireg)%levels(ilev)%edgeCells(2)%interact).OR. &
1088 (.NOT. regions(ireg)%levels(ilev)%edgeCells(10)%interact)) &
1089 grid%nghbor(3,1:nbour,2) = 0
1092 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(3)%interact).OR. &
1093 (.NOT. regions(ireg)%levels(ilev)%edgeCells(2)%interact).OR. &
1094 (.NOT. regions(ireg)%levels(ilev)%edgeCells(3)%interact).OR. &
1095 (.NOT. regions(ireg)%levels(ilev)%edgeCells(11)%interact)) &
1096 grid%nghbor(3,1:nbour,3) = 0
1099 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(4)%interact).OR. &
1100 (.NOT. regions(ireg)%levels(ilev)%edgeCells(3)%interact).OR. &
1101 (.NOT. regions(ireg)%levels(ilev)%edgeCells(4)%interact).OR. &
1102 (.NOT. regions(ireg)%levels(ilev)%edgeCells(12)%interact)) &
1103 grid%nghbor(3,1:nbour,4) = 0
1106 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(5)%interact).OR. &
1107 (.NOT. regions(ireg)%levels(ilev)%edgeCells(5)%interact).OR. &
1108 (.NOT. regions(ireg)%levels(ilev)%edgeCells(8)%interact).OR. &
1109 (.NOT. regions(ireg)%levels(ilev)%edgeCells(9)%interact)) &
1110 grid%nghbor(3,1:nbour,5) = 0
1113 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(6)%interact).OR. &
1114 (.NOT. regions(ireg)%levels(ilev)%edgeCells(5)%interact).OR. &
1115 (.NOT. regions(ireg)%levels(ilev)%edgeCells(6)%interact).OR. &
1116 (.NOT. regions(ireg)%levels(ilev)%edgeCells(10)%interact)) &
1117 grid%nghbor(3,1:nbour,6) = 0
1120 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(7)%interact).OR. &
1121 (.NOT. regions(ireg)%levels(ilev)%edgeCells(6)%interact).OR. &
1122 (.NOT. regions(ireg)%levels(ilev)%edgeCells(7)%interact).OR. &
1123 (.NOT. regions(ireg)%levels(ilev)%edgeCells(11)%interact)) &
1124 grid%nghbor(3,1:nbour,7) = 0
1127 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(8)%interact).OR. &
1128 (.NOT. regions(ireg)%levels(ilev)%edgeCells(7)%interact).OR. &
1129 (.NOT. regions(ireg)%levels(ilev)%edgeCells(8)%interact).OR. &
1130 (.NOT. regions(ireg)%levels(ilev)%edgeCells(12)%interact)) &
1131 grid%nghbor(3,1:nbour,8) = 0
1138 DO ireg = 1,global%nRegions
1139 IF (regions(ireg)%procid==global%myProcid .AND. &
1140 regions(ireg)%active==active)
THEN
1142 grid => regions(ireg)%levels(ilev)%grid
1146 DO ipatch=1,regions(ireg)%nPatches
1147 patch => regions(ireg)%levels(ilev)%patches(ipatch)
1148 lbound =
patch%lbound
1149 bctype =
patch%bcType
1154 IF ((bctype>=bc_inflow .AND. bctype<=bc_inflow +bc_range) .OR. &
1155 (bctype>=bc_outflow .AND. bctype<=bc_outflow +bc_range) .OR. &
1156 (bctype>=bc_slipwall .AND. bctype<=bc_slipwall +bc_range) .OR. &
1157 (bctype>=bc_noslipwall .AND. bctype<=bc_noslipwall+bc_range) .OR. &
1158 (bctype>=bc_farfield .AND. bctype<=bc_farfield +bc_range) .OR. &
1159 (bctype>=bc_injection .AND. bctype<=bc_injection +bc_range) .OR. &
1160 (bctype>=bc_tra_peri .AND. bctype<=bc_tra_peri +bc_range) .OR. &
1161 (bctype>=bc_rot_peri .AND. bctype<=bc_rot_peri +bc_range))
THEN
1162 IF (lbound==1 .OR. lbound==2)
THEN
1164 ijknode(2) = indijk(
ibeg,
jbeg,kend,inoff,ijnoff)
1165 ijknode(3) = indijk(
ibeg,
jend,kend,inoff,ijnoff)
1167 ELSEIF (lbound==3 .OR. lbound==4)
THEN
1169 ijknode(2) = indijk(
ibeg,
jbeg,kend,inoff,ijnoff)
1170 ijknode(3) = indijk(
iend,
jbeg,kend,inoff,ijnoff)
1172 ELSEIF (lbound==5 .OR. lbound==6)
THEN
1178 DO ic = 1,
grid%nCorns(ireg)
1179 IF (ijknode(1)==
grid%ijkCorn(
ic,ireg) .OR. &
1180 ijknode(2)==
grid%ijkCorn(
ic,ireg) .OR. &
1181 ijknode(3)==
grid%ijkCorn(
ic,ireg) .OR. &
1182 ijknode(4)==
grid%ijkCorn(
ic,ireg))
grid%nghbor(3,1:nbour,
ic)= 2
1192 DO ireg = 1,global%nRegions
1193 IF (regions(ireg)%procid==global%myProcid .AND. &
1194 regions(ireg)%active==active)
THEN
1196 grid => regions(ireg)%levels(ilev)%grid
1200 DO ipatch=1,regions(ireg)%nPatches
1201 patch => regions(ireg)%levels(ilev)%patches(ipatch)
1202 lbound =
patch%lbound
1203 bctype =
patch%bcType
1208 IF (
patch%bcMotion == bc_external)
THEN
1209 IF (lbound==1 .OR. lbound==2)
THEN
1211 ijknode(2) = indijk(
ibeg,
jbeg,kend,inoff,ijnoff)
1212 ijknode(3) = indijk(
ibeg,
jend,kend,inoff,ijnoff)
1214 ELSEIF (lbound==3 .OR. lbound==4)
THEN
1216 ijknode(2) = indijk(
ibeg,
jbeg,kend,inoff,ijnoff)
1217 ijknode(3) = indijk(
iend,
jbeg,kend,inoff,ijnoff)
1219 ELSEIF (lbound==5 .OR. lbound==6)
THEN
1225 DO ic = 1,
grid%nCorns(ireg)
1226 IF (ijknode(1)==
grid%ijkCorn(
ic,ireg) .OR. &
1227 ijknode(2)==
grid%ijkCorn(
ic,ireg) .OR. &
1228 ijknode(3)==
grid%ijkCorn(
ic,ireg) .OR. &
1229 ijknode(4)==
grid%ijkCorn(
ic,ireg))
grid%nghbor(3,1:nbour,
ic)= 0
1253 global%error = errfl
1259 global%error = errfl
1289 #include "Indexing.h"
1292 TYPE(t_region
),
POINTER :: regions(:)
1295 INTEGER ::
i,
j,
k,
ic, ireg, nc, nreg, lc, lreg
1299 INTEGER :: ijknode(4), inoff, ijnoff, errfl
1300 REAL(RFREAL) :: edgelen, ds, du2, dumax
1301 REAL(RFREAL),
POINTER :: xyz(:,:)
1302 REAL(RFREAL),
ALLOCATABLE ::
dist(:,:)
1310 global => regions(1)%global
1313 'RFLO_ModMoveGridFrame.F90' )
1317 ALLOCATE(
dist(global%moveGridRegNc,global%nRegions), stat=errfl )
1318 IF (errfl>0) goto 88
1322 DO ireg = 1,global%nRegions
1323 IF (regions(ireg)%procid==global%myProcid .AND. &
1324 regions(ireg)%active==active)
THEN
1326 grid => regions(ireg)%levels(ilev)%grid
1332 xyz => regions(ireg)%levels(ilev)%gridOld%xyz
1336 edgelen = 1.e+30_rfreal
1341 ijknode(1) = indijk(
i ,
j ,
k ,inoff,ijnoff)
1342 ijknode(2) = indijk(
i+1,
j ,
k ,inoff,ijnoff)
1343 ijknode(3) = indijk(
i ,
j+1,
k ,inoff,ijnoff)
1344 ijknode(4) = indijk(
i ,
j ,
k+1,inoff,ijnoff)
1345 ds =
sqrt((xyz(xcoord,ijknode(2))-xyz(xcoord,ijknode(1)))**2+ &
1346 (xyz(ycoord,ijknode(2))-xyz(ycoord,ijknode(1)))**2+ &
1347 (xyz(zcoord,ijknode(2))-xyz(zcoord,ijknode(1)))**2)
1348 edgelen =
min(edgelen,ds)
1349 ds =
sqrt((xyz(xcoord,ijknode(3))-xyz(xcoord,ijknode(1)))**2+ &
1350 (xyz(ycoord,ijknode(3))-xyz(ycoord,ijknode(1)))**2+ &
1351 (xyz(zcoord,ijknode(3))-xyz(zcoord,ijknode(1)))**2)
1352 edgelen =
min(edgelen,ds)
1353 ds =
sqrt((xyz(xcoord,ijknode(4))-xyz(xcoord,ijknode(1)))**2+ &
1354 (xyz(ycoord,ijknode(4))-xyz(ycoord,ijknode(1)))**2+ &
1355 (xyz(zcoord,ijknode(4))-xyz(zcoord,ijknode(1)))**2)
1356 edgelen =
min(edgelen,ds)
1361 DO ic = 1,
grid%nCorns(ireg)
1362 DO k = 1,global%moveGridNbour
1365 dumax = -1.e+20_rfreal
1367 DO lreg = 1,global%nRegions
1368 DO lc = 1,
grid%nCorns(lreg)
1369 dist(lc,lreg) =
sqrt((
grid%regCornOrig(xcoord,nc,nreg)- &
1370 grid%regCornOrig(xcoord,lc,lreg))**2 + &
1371 (
grid%regCornOrig(ycoord,nc,nreg)- &
1372 grid%regCornOrig(ycoord,lc,lreg))**2 + &
1373 (
grid%regCornOrig(zcoord,nc,nreg)- &
1374 grid%regCornOrig(zcoord,lc,lreg))**2)
1376 IF (
dist(lc,lreg) < 0.1_rfreal*edgelen)
THEN
1377 du2 =
grid%regCornOld(xcoord,lc,lreg)**2 + &
1378 grid%regCornOld(ycoord,lc,lreg)**2 + &
1379 grid%regCornOld(zcoord,lc,lreg)**2
1381 IF ( du2 > dumax )
THEN
1397 DEALLOCATE(
dist, stat=errfl );
IF (errfl>0) goto 99
1405 global%error = errfl
1411 global%error = errfl
1440 #include "Indexing.h"
1443 TYPE(t_region
),
POINTER :: regions(:)
1446 INTEGER :: ireg, ico,
k, l
1449 INTEGER :: ilev, interior, ijkcorn, nbour, errfl
1451 INTEGER,
ALLOCATABLE :: nco(:), nreg(:)
1452 REAL(RFREAL) :: rdenom, amp(3), pow,
sum
1453 REAL(RFREAL),
ALLOCATABLE ::
dist(:), wght(:)
1460 global => regions(1)%global
1463 'RFLO_ModMoveGridFrame.F90' )
1468 amp(1) = global%moveGridAmplifX
1469 amp(2) = global%moveGridAmplifY
1470 amp(3) = global%moveGridAmplifZ
1471 pow = global%moveGridPower
1472 nbour = global%moveGridNbour
1474 ALLOCATE( nco(nbour), stat=errfl );
IF (errfl>0) goto 88
1475 ALLOCATE( nreg(nbour), stat=errfl );
IF (errfl>0) goto 88
1477 ALLOCATE(
dist(nbour), stat=errfl );
IF (errfl>0) goto 88
1478 ALLOCATE( wght(nbour), stat=errfl );
IF (errfl>0) goto 88
1480 DO ireg = 1,global%nRegions
1481 IF (regions(ireg)%procid==global%myProcid .AND. &
1482 regions(ireg)%active==active)
THEN
1484 grid => regions(ireg)%levels(ilev)%grid
1486 DO ico = 1,
grid%nCorns(ireg)
1487 nco(1:nbour) =
grid%nghbor(1,1:nbour,ico)
1488 nreg(1:nbour) =
grid%nghbor(2,1:nbour,ico)
1489 interior =
grid%nghbor(3,1 ,ico)
1491 IF (interior==1)
THEN
1493 dist(
k) = (
grid%regCornOrig(xcoord,nco(
k),nreg(
k)) - &
1494 grid%regCornOrig(xcoord,ico,ireg))**2 + &
1495 (
grid%regCornOrig(ycoord,nco(
k),nreg(
k)) - &
1496 grid%regCornOrig(ycoord,ico,ireg))**2 + &
1497 (
grid%regCornOrig(zcoord,nco(
k),nreg(
k)) - &
1498 grid%regCornOrig(zcoord,ico,ireg))**2
1506 rdenom = 1._rfreal/
sum
1512 CALL
errorstop( global,err_illegal_value,&
1514 'invalid weights for global frame motion')
1519 sum =
sum + wght(l)*
grid%regCornOld(xcoord,nco(l),nreg(l))
1521 grid%regCorn(xcoord,ico,ireg) =
sum
1525 sum =
sum + wght(l)*
grid%regCornOld(ycoord,nco(l),nreg(l))
1527 grid%regCorn(ycoord,ico,ireg) =
sum
1531 sum =
sum + wght(l)*
grid%regCornOld(zcoord,nco(l),nreg(l))
1533 grid%regCorn(zcoord,ico,ireg) =
sum
1540 DO ireg = 1,global%nRegions
1541 IF (regions(ireg)%procid==global%myProcid .AND. &
1542 regions(ireg)%active==active)
THEN
1544 grid => regions(ireg)%levels(ilev)%grid
1546 DO ico = 1,
grid%nCorns(ireg)
1547 interior =
grid%nghbor(3, 1, ico)
1548 IF (interior==1)
THEN
1549 grid%regCornOld(xcoord,ico,ireg)=amp(1)*
grid%regCorn(xcoord,ico,ireg)
1550 grid%regCornOld(ycoord,ico,ireg)=amp(2)*
grid%regCorn(ycoord,ico,ireg)
1551 grid%regCornOld(zcoord,ico,ireg)=amp(3)*
grid%regCorn(zcoord,ico,ireg)
1553 ijkcorn =
grid%ijkCorn(ico,ireg)
1554 grid%xyz(xcoord,ijkcorn) =
grid%regCorn(xcoord,ico,ireg)
1555 grid%xyz(ycoord,ijkcorn) =
grid%regCorn(ycoord,ico,ireg)
1556 grid%xyz(zcoord,ijkcorn) =
grid%regCorn(zcoord,ico,ireg)
1565 DEALLOCATE( nco, stat=errfl );
IF (errfl>0) goto 99
1566 DEALLOCATE( nreg, stat=errfl );
IF (errfl>0) goto 99
1568 DEALLOCATE(
dist, stat=errfl );
IF (errfl>0) goto 99
1569 DEALLOCATE( wght, stat=errfl );
IF (errfl>0) goto 99
1577 global%error = errfl
1583 global%error = errfl
1615 #include "Indexing.h"
1618 TYPE(t_region
),
POINTER :: regions(:)
1621 INTEGER :: ireg, ico, lb, mc,
k
1624 INTEGER :: ilev, interior, ijkcorn, ind(6,4,4), kf, nc, nreg
1625 INTEGER :: lbb, lbe, orthdir
1626 REAL(RFREAL) :: rlen, eps, orthwg(xcoord:zcoord)
1627 REAL(RFREAL) :: dif(xcoord:zcoord), shift(xcoord:zcoord)
1628 REAL(RFREAL) :: s1(xcoord:zcoord), s2(xcoord:zcoord), s3(xcoord:zcoord)
1629 REAL(RFREAL),
POINTER :: cbuff(:,:,:), corth(:,:,:)
1637 global => regions(1)%global
1640 'RFLO_ModMoveGridFrame.F90' )
1648 ind(1, 1,:) = (/5, 1, 4, 2/)
1649 ind(1, 2,:) = (/6, 2, 1, 3/)
1650 ind(1, 3,:) = (/7, 3, 2, 4/)
1651 ind(1, 4,:) = (/8, 4, 3, 1/)
1652 ind(2, 1,:) = (/1, 5, 6, 8/)
1653 ind(2, 2,:) = (/2, 6, 7, 5/)
1654 ind(2, 3,:) = (/3, 7, 8, 6/)
1655 ind(2, 4,:) = (/4, 8, 5, 7/)
1656 ind(3, 1,:) = (/4, 1, 2, 5/)
1657 ind(3, 2,:) = (/8, 5, 1, 6/)
1658 ind(3, 3,:) = (/7, 6, 5, 2/)
1659 ind(3, 4,:) = (/3, 2, 6, 1/)
1660 ind(4, 1,:) = (/1, 4, 8, 3/)
1661 ind(4, 2,:) = (/5, 8, 7, 4/)
1662 ind(4, 3,:) = (/6, 7, 3, 8/)
1663 ind(4, 4,:) = (/2, 3, 4, 7/)
1664 ind(5, 1,:) = (/2, 1, 5, 4/)
1665 ind(5, 2,:) = (/3, 4, 1, 8/)
1666 ind(5, 3,:) = (/7, 8, 4, 5/)
1667 ind(5, 4,:) = (/6, 5, 8, 1/)
1668 ind(6, 1,:) = (/1, 2, 3, 6/)
1669 ind(6, 2,:) = (/4, 3, 7, 2/)
1670 ind(6, 3,:) = (/8, 7, 6, 3/)
1671 ind(6, 4,:) = (/5, 6, 2, 7/)
1675 orthdir = global%moveGridOrthDir
1676 orthwg(xcoord) = global%moveGridOrthWghtX *(1._rfreal + global%skewness)
1677 orthwg(ycoord) = global%moveGridOrthWghtY *(1._rfreal + global%skewness)
1678 orthwg(zcoord) = global%moveGridOrthWghtZ *(1._rfreal + global%skewness)
1686 DO ireg = 1,global%nRegions
1687 IF (regions(ireg)%procid==global%myProcid .AND. &
1688 regions(ireg)%active==active)
THEN
1690 grid => regions(ireg)%levels(ilev)%grid
1691 cbuff =>
grid%regCornBuff
1692 corth =>
grid%regCornOrth
1698 IF (
grid%boundMoved(lb)) solidreg = .true.
1701 IF (orthdir==off)
THEN
1704 ELSEIF (orthdir==icoord)
THEN
1707 ELSEIF (orthdir==jcoord)
THEN
1710 ELSEIF (orthdir==kcoord)
THEN
1719 IF (
grid%boundMoved(lb))
THEN
1723 rlen =
sqrt( (cbuff(xcoord,ind(lb,mc,1),ireg)- &
1724 cbuff(xcoord,ind(lb,mc,2),ireg))**2 + &
1725 (cbuff(ycoord,ind(lb,mc,1),ireg)- &
1726 cbuff(ycoord,ind(lb,mc,2),ireg))**2 + &
1727 (cbuff(zcoord,ind(lb,mc,1),ireg)- &
1728 cbuff(zcoord,ind(lb,mc,2),ireg))**2 )
1729 s1(:) = cbuff(:,ind(lb,mc,3),ireg)-cbuff(:,ind(lb,mc,2),ireg)
1730 s2(:) = cbuff(:,ind(lb,mc,4),ireg)-cbuff(:,ind(lb,mc,2),ireg)
1732 corth(:,ind(lb,mc,1),ireg) = cbuff(:,ind(lb,mc,2),ireg)+ &
1745 DO ireg = 1,global%nRegions
1746 IF (regions(ireg)%procid==global%myProcid .AND. &
1747 regions(ireg)%active==active)
THEN
1749 grid => regions(ireg)%levels(ilev)%grid
1750 cbuff =>
grid%regCornBuff
1751 corth =>
grid%regCornOrth
1753 DO ico = 1,
grid%nCorns(ireg)
1754 interior =
grid%nghbor(3, 1, ico)
1756 IF (interior==1)
THEN
1757 ijkcorn =
grid%ijkCorn(ico,ireg)
1760 eps = 100._rfreal*epsilon( 1._rfreal )
1762 DO k = 1,
grid%nshared(ico)
1763 nc =
grid%cshared(1,
k,ico)
1764 nreg =
grid%cshared(2,
k,ico)
1765 dif(:) = corth(:,nc,nreg) - cbuff(:,nc,nreg)
1766 IF ((abs(dif(xcoord)) > eps) .OR. &
1767 (abs(dif(ycoord)) > eps) .OR. &
1768 (abs(dif(zcoord)) > eps)) kf = kf+1
1769 shift(:) = shift(:) + dif(:)
1771 IF ((abs(shift(xcoord)) > eps) .OR. &
1772 (abs(shift(ycoord)) > eps) .OR. &
1773 (abs(shift(zcoord)) > eps))
THEN
1776 grid%regCorn(:,ico,ireg) = (1._rfreal-orthwg(:))* &
1777 grid%regCorn(:,ico,ireg) + &
1778 orthwg(:)*shift(:)/kf
1781 ijkcorn =
grid%ijkCorn(ico,ireg)
1782 grid%xyz(xcoord,ijkcorn) =
grid%regCorn(xcoord,ico,ireg)
1783 grid%xyz(ycoord,ijkcorn) =
grid%regCorn(ycoord,ico,ireg)
1784 grid%xyz(zcoord,ijkcorn) =
grid%regCorn(zcoord,ico,ireg)
1824 LOGICAL :: somemoved
1827 TYPE(t_region
),
POINTER :: regions(:)
1830 INTEGER :: ireg, iter, ipatch,
i,
j,
k, ijkn
1833 INTEGER :: ilev, bctype
1841 global => regions(1)%global
1844 'RFLO_ModMoveGridFrame.F90' )
1851 DO ireg=1,global%nRegions
1852 IF (regions(ireg)%procid==global%myProcid .AND. &
1853 regions(ireg)%active==active .AND. &
1854 regions(ireg)%mixtInput%moveGrid)
THEN
1856 grid => regions(ireg)%levels(ilev)%grid
1857 gridold => regions(ireg)%levels(ilev)%gridOld
1862 gridold%indSvel =
grid%indSvel
1863 gridold%ipc =
grid%ipc
1864 gridold%jpc =
grid%jpc
1865 gridold%kpc =
grid%kpc
1866 gridold%xyz(:,:) =
grid%xyz(:,:)
1867 gridold%si(:,:) =
grid%si(:,:)
1868 gridold%sj(:,:) =
grid%sj(:,:)
1869 gridold%sk(:,:) =
grid%sk(:,:)
1870 gridold%vol(:) =
grid%vol(:)
1900 DO ireg=1,global%nRegions
1901 IF (regions(ireg)%procid==global%myProcid .AND. &
1902 regions(ireg)%active==active .AND. &
1903 regions(ireg)%mixtInput%moveGrid)
THEN
1905 grid => regions(ireg)%levels(ilev)%grid
1906 gridold => regions(ireg)%levels(ilev)%gridOld
1914 gridold%xyzOld,
grid%xyz )
1931 gridold%xyzOld,
grid%xyz )
1964 #include "Indexing.h"
1967 TYPE(t_region
) :: region
1970 INTEGER :: ireg, ipatch,
i,
j,
k
1973 INTEGER :: ilev, ijkn, lbound
1981 global => region%global
1984 'RFLO_ModMoveGridFrame.F90' )
1991 grid => region%levels(ilev)%grid
1995 DO ipatch=1,region%nPatches
1996 patch => region%levels(ilev)%patches(ipatch)
1997 lbound =
patch%lbound
1999 IF (
patch%bcMotion == bc_external .AND. &
2000 (
grid%allExternal(lbound).EQV..false.))
THEN
2008 ijkn = indijk(
i,
j,
k,inoff,ijnoff)
2009 grid%xyz(xcoord,ijkn) =
grid%xyzOld(xcoord,ijkn)
2010 grid%xyz(ycoord,ijkn) =
grid%xyzOld(ycoord,ijkn)
2011 grid%xyz(zcoord,ijkn) =
grid%xyzOld(zcoord,ijkn)
2049 arclen12,arclen34,arclen56,xyzold,dnode )
2055 #include "Indexing.h"
2058 LOGICAL :: boundmoved(6), allexternal(6), edgemoved(12)
2061 REAL(RFREAL),
POINTER :: arclen12(:,:), arclen34(:,:), arclen56(:,:)
2062 REAL(RFREAL),
POINTER :: dnode(:,:), xyzold(:,:)
2064 TYPE(t_region
) :: region
2067 INTEGER :: iedge, ind
2071 INTEGER :: indbeg, indend, ijkn, ijkn1, ijknbeg, ijknend, inoff, ijnoff
2072 INTEGER :: switch(12,11), intertype, iedgeglo
2074 REAL(RFREAL) :: arclen, ds,
s, dn(3), dnbeg(3), dnend(3)
2080 'RFLO_ModMoveGridFrame.F90' )
2102 switch( 1,:) = (/5, 6, 1, 3, 56,
kpnbeg, kpnend,
ipnbeg,
jpnbeg, 1, 2/)
2103 switch( 2,:) = (/3, 4, 1, 6, 34,
jpnbeg,
jpnend, kpnend,
ipnbeg, 2, 3/)
2104 switch( 3,:) = (/5, 6, 1, 4, 56,
kpnbeg, kpnend,
ipnbeg,
jpnend, 4, 3/)
2105 switch( 4,:) = (/3, 4, 1, 5, 34,
jpnbeg,
jpnend,
kpnbeg,
ipnbeg, 1, 4/)
2106 switch( 5,:) = (/5, 6, 2, 3, 56,
kpnbeg, kpnend,
ipnend,
jpnbeg, 5, 6/)
2107 switch( 6,:) = (/3, 4, 2, 6, 34,
jpnbeg,
jpnend, kpnend,
ipnend, 6, 7/)
2108 switch( 7,:) = (/5, 6, 2, 4, 56,
kpnbeg, kpnend,
ipnend,
jpnend, 8, 7/)
2109 switch( 8,:) = (/3, 4, 2, 5, 34,
jpnbeg,
jpnend,
kpnbeg,
ipnend, 5, 8/)
2110 switch( 9,:) = (/1, 2, 3, 5, 12,
ipnbeg,
ipnend,
jpnbeg,
kpnbeg, 1, 5/)
2111 switch(10,:) = (/1, 2, 3, 6, 12,
ipnbeg,
ipnend,
jpnbeg, kpnend, 2, 6/)
2112 switch(11,:) = (/1, 2, 4, 5, 12,
ipnbeg,
ipnend,
jpnend,
kpnbeg, 4, 8/)
2113 switch(12,:) = (/1, 2, 4, 6, 12,
ipnbeg,
ipnend,
jpnend, kpnend, 3, 7/)
2117 edgemoved(:) = .false.
2120 IF (boundmoved(1) .AND. allexternal(1))
THEN
2121 edgemoved( 1) = .true.; edgemoved( 2) = .true.
2122 edgemoved( 3) = .true.; edgemoved( 4) = .true.
2124 IF (boundmoved(2) .AND. allexternal(2))
THEN
2125 edgemoved( 5) = .true.; edgemoved( 6) = .true.
2126 edgemoved( 7) = .true.; edgemoved( 8) = .true.
2128 IF (boundmoved(3) .AND. allexternal(3))
THEN
2129 edgemoved( 1) = .true.; edgemoved( 5) = .true.
2130 edgemoved( 9) = .true.; edgemoved(10) = .true.
2132 IF (boundmoved(4) .AND. allexternal(4))
THEN
2133 edgemoved( 3) = .true.; edgemoved( 7) = .true.
2134 edgemoved(11) = .true.; edgemoved(12) = .true.
2136 IF (boundmoved(5) .AND. allexternal(5))
THEN
2137 edgemoved( 4) = .true.; edgemoved( 8) = .true.
2138 edgemoved( 9) = .true.; edgemoved(11) = .true.
2140 IF (boundmoved(6) .AND. allexternal(6))
THEN
2141 edgemoved( 2) = .true.; edgemoved( 6) = .true.
2142 edgemoved(10) = .true.; edgemoved(12) = .true.
2149 IF (.NOT.edgemoved(iedge))
THEN
2151 edgemoved(iedge) = .true.
2154 indbeg = switch(iedge,6)
2155 indend = switch(iedge,7)
2156 l1c = switch(iedge,8)
2157 l2c = switch(iedge,9)
2160 IF (iedge==11) iedgeglo=12
2161 IF (iedge==12) iedgeglo=11
2162 interact = region%levels(ilev)%edgeCells(iedgeglo)%interact
2163 intertype = region%levels(ilev)%edgeCells(iedgeglo)%interType
2165 IF (((region%levels(ilev)%grid%nghbor(3,1,switch(iedge,10))==1 .OR. &
2166 region%levels(ilev)%grid%nghbor(3,1,switch(iedge,11))==1) .AND. &
2167 ((interact .EQV. .true.) .AND. (intertype==edge_interact_full))) &
2169 region%levels(ilev)%grid%nghbor(3,1,switch(iedge,10))==2 .OR. &
2170 region%levels(ilev)%grid%nghbor(3,1,switch(iedge,11))==2)
THEN
2177 DO ind=indbeg+1,indend-1
2178 IF (switch(iedge,5) == 12)
THEN
2179 ijkn = indijk(ind ,l1c,l2c,inoff,ijnoff)
2180 ijkn1 = indijk(ind-1 ,l1c,l2c,inoff,ijnoff)
2181 ijknbeg = indijk(indbeg,l1c,l2c,inoff,ijnoff)
2182 ijknend = indijk(indend,l1c,l2c,inoff,ijnoff)
2183 arclen = arclen12(l1c,l2c)
2184 dnbeg(:) = dnode(:,ijknbeg)
2185 dnend(:) = dnode(:,ijknend)
2186 ELSE IF (switch(iedge,5) == 34)
THEN
2187 ijkn = indijk(l2c,ind ,l1c,inoff,ijnoff)
2188 ijkn1 = indijk(l2c,ind-1 ,l1c,inoff,ijnoff)
2189 ijknbeg = indijk(l2c,indbeg,l1c,inoff,ijnoff)
2190 ijknend = indijk(l2c,indend,l1c,inoff,ijnoff)
2191 arclen = arclen34(l1c,l2c)
2192 dnbeg(:) = dnode(:,ijknbeg)
2193 dnend(:) = dnode(:,ijknend)
2194 ELSE IF (switch(iedge,5) == 56)
THEN
2195 ijkn = indijk(l1c,l2c,ind ,inoff,ijnoff)
2196 ijkn1 = indijk(l1c,l2c,ind-1 ,inoff,ijnoff)
2197 ijknbeg = indijk(l1c,l2c,indbeg,inoff,ijnoff)
2198 ijknend = indijk(l1c,l2c,indend,inoff,ijnoff)
2199 arclen = arclen56(l1c,l2c)
2200 dnbeg(:) = dnode(:,ijknbeg)
2201 dnend(:) = dnode(:,ijknend)
2203 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2204 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2205 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2209 dnode(:,ijkn) = dn(:)
2246 #include "Indexing.h"
2249 TYPE(t_region
) :: region
2250 LOGICAL :: edgemoved(12)
2251 REAL(RFREAL),
POINTER :: dnode(:,:), xyzold(:,:)
2254 INTEGER :: ipedge, ind, ipatch,
ic
2257 INTEGER :: ilev,
ibeg,
iend,
jbeg,
jend,
kbeg, kend, ib, ie, jb, je , kb, ke
2258 INTEGER :: indbeg, indend, ijkn, ijkn1, ijknbeg, ijknend, inoff, ijnoff
2259 INTEGER :: lbound, intb, inte, ireg, iedge, intertype, ijktest, iset
2261 REAL(RFREAL) :: arclen, ds,
s, dn(3), dnbeg(3), dnend(3), eps
2268 'RFLO_ModMoveGridFrame.F90' )
2272 eps = epsilon( 1._rfreal )
2276 ireg = region%iRegionGlobal
2280 grid => region%levels(ilev)%grid
2284 edgemoved(:) = .true.
2288 DO ipatch=1,region%nPatches
2289 patch => region%levels(ilev)%patches(ipatch)
2290 lbound =
patch%lbound
2295 IF (
patch%bcMotion == bc_external) goto 777
2298 IF (lbound==1 .OR. lbound==2)
THEN
2308 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2309 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2310 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2318 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2319 DO ic = 1,
grid%nCorns(ireg)
2320 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2321 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2323 patch%position(1) = intb
2324 patch%position(2) = inte
2327 DO ind=indbeg+1,indend-1
2328 ijkn = indijk(
ibeg,
jbeg,ind ,inoff,ijnoff)
2329 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2330 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2331 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2337 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2338 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2341 (intb==2 .OR. inte==2) &
2343 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2344 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2345 100._rfreal*eps)) .AND. (iset==0))
THEN
2347 dnbeg(:) = dnode(:,ijknbeg)
2348 dnend(:) = dnode(:,ijknend)
2351 DO ind=indbeg+1,indend
2352 ijkn = indijk(
ibeg,
jbeg,ind ,inoff,ijnoff)
2353 ijkn1 = indijk(
ibeg,
jbeg,ind-1,inoff,ijnoff)
2355 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2356 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2357 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2360 DO ind=indbeg+1,indend-1
2361 ijkn = indijk(
ibeg,
jbeg,ind ,inoff,ijnoff)
2362 ijkn1 = indijk(
ibeg,
jbeg,ind-1,inoff,ijnoff)
2363 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2364 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2365 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2368 dnode(:,ijkn) = dn(:)
2371 ELSEIF (ipedge==2)
THEN
2380 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2381 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2382 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2390 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2391 DO ic = 1,
grid%nCorns(ireg)
2392 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2393 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2398 patch%position(2) = intb
2399 patch%position(3) = inte
2402 DO ind=indbeg+1,indend-1
2403 ijkn = indijk(
ibeg,ind ,kend,inoff,ijnoff)
2404 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2405 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2406 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2412 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2413 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2416 (intb==2 .OR. inte==2) &
2418 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2419 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2420 100._rfreal*eps)) .AND. (iset==0))
THEN
2422 dnbeg(:) = dnode(:,ijknbeg)
2423 dnend(:) = dnode(:,ijknend)
2426 DO ind=indbeg+1,indend
2427 ijkn = indijk(
ibeg,ind ,kend,inoff,ijnoff)
2428 ijkn1 = indijk(
ibeg,ind-1,kend,inoff,ijnoff)
2430 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2431 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2432 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2435 DO ind=indbeg+1,indend-1
2436 ijkn = indijk(
ibeg,ind ,kend,inoff,ijnoff)
2437 ijkn1 = indijk(
ibeg,ind-1,kend,inoff,ijnoff)
2438 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2439 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2440 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2443 dnode(:,ijkn) = dn(:)
2446 ELSEIF (ipedge==3)
THEN
2455 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2456 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2457 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2465 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2466 DO ic = 1,
grid%nCorns(ireg)
2467 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2468 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2470 patch%position(3) = inte
2471 patch%position(4) = intb
2474 DO ind=indbeg+1,indend-1
2475 ijkn = indijk(
ibeg,
jend,ind ,inoff,ijnoff)
2476 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2477 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2478 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2484 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2485 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2488 (intb==2 .OR. inte==2) &
2490 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2491 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2492 100._rfreal*eps)) .AND. (iset==0))
THEN
2494 dnbeg(:) = dnode(:,ijknbeg)
2495 dnend(:) = dnode(:,ijknend)
2498 DO ind=indbeg+1,indend
2499 ijkn = indijk(
ibeg,
jend,ind ,inoff,ijnoff)
2500 ijkn1 = indijk(
ibeg,
jend,ind-1,inoff,ijnoff)
2502 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2503 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2504 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2507 DO ind=indbeg+1,indend-1
2508 ijkn = indijk(
ibeg,
jend,ind ,inoff,ijnoff)
2509 ijkn1 = indijk(
ibeg,
jend,ind-1,inoff,ijnoff)
2510 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2511 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2512 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2515 dnode(:,ijkn) = dn(:)
2518 ELSEIF (ipedge==4)
THEN
2527 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2528 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2529 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2537 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2538 DO ic = 1,
grid%nCorns(ireg)
2539 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2540 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2542 patch%position(4) = inte
2543 patch%position(1) = intb
2546 DO ind=indbeg+1,indend-1
2547 ijkn = indijk(
ibeg,ind ,
kbeg,inoff,ijnoff)
2548 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2549 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2550 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2556 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2557 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2560 (intb==2 .OR. inte==2) &
2562 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2563 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2564 100._rfreal*eps)) .AND. (iset==0))
THEN
2566 dnbeg(:) = dnode(:,ijknbeg)
2567 dnend(:) = dnode(:,ijknend)
2570 DO ind=indbeg+1,indend
2571 ijkn = indijk(
ibeg,ind ,
kbeg,inoff,ijnoff)
2572 ijkn1 = indijk(
ibeg,ind-1,
kbeg,inoff,ijnoff)
2574 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2575 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2576 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2579 DO ind=indbeg+1,indend-1
2580 ijkn = indijk(
ibeg,ind ,
kbeg,inoff,ijnoff)
2581 ijkn1 = indijk(
ibeg,ind-1,
kbeg,inoff,ijnoff)
2582 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2583 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2584 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2587 dnode(:,ijkn) = dn(:)
2595 IF (lbound==3 .OR. lbound==4)
THEN
2605 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2606 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2607 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2615 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2616 DO ic = 1,
grid%nCorns(ireg)
2617 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2618 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2620 patch%position(1) = intb
2621 patch%position(2) = inte
2624 DO ind=indbeg+1,indend-1
2625 ijkn = indijk(ind ,
jbeg,
kbeg,inoff,ijnoff)
2626 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2627 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2628 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2634 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2635 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2638 (intb==2 .OR. inte==2) &
2640 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2641 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2642 100._rfreal*eps)) .AND. (iset==0))
THEN
2644 dnbeg(:) = dnode(:,ijknbeg)
2645 dnend(:) = dnode(:,ijknend)
2648 DO ind=indbeg+1,indend
2649 ijkn = indijk(ind ,
jbeg,
kbeg,inoff,ijnoff)
2650 ijkn1 = indijk(ind-1,
jbeg,
kbeg,inoff,ijnoff)
2652 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2653 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2654 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2657 DO ind=indbeg+1,indend-1
2658 ijkn = indijk(ind ,
jbeg,
kbeg,inoff,ijnoff)
2659 ijkn1 = indijk(ind-1,
jbeg,
kbeg,inoff,ijnoff)
2660 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2661 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2662 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2665 dnode(:,ijkn) = dn(:)
2668 ELSEIF (ipedge==2)
THEN
2677 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2678 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2679 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2687 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2688 DO ic = 1,
grid%nCorns(ireg)
2689 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2690 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2692 patch%position(2) = intb
2693 patch%position(3) = inte
2696 DO ind=indbeg+1,indend-1
2697 ijkn = indijk(
iend,
jbeg,ind ,inoff,ijnoff)
2698 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2699 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2700 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2706 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2707 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2710 (intb==2 .OR. inte==2) &
2712 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2713 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2714 100._rfreal*eps)) .AND. (iset==0))
THEN
2716 dnbeg(:) = dnode(:,ijknbeg)
2717 dnend(:) = dnode(:,ijknend)
2720 DO ind=indbeg+1,indend
2721 ijkn = indijk(
iend,
jbeg,ind ,inoff,ijnoff)
2722 ijkn1 = indijk(
iend,
jbeg,ind-1,inoff,ijnoff)
2724 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2725 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2726 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2729 DO ind=indbeg+1,indend-1
2730 ijkn = indijk(
iend,
jbeg,ind ,inoff,ijnoff)
2731 ijkn1 = indijk(
iend,
jbeg,ind-1,inoff,ijnoff)
2732 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2733 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2734 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2737 dnode(:,ijkn) = dn(:)
2740 ELSEIF (ipedge==3)
THEN
2749 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2750 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2751 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2759 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2760 DO ic = 1,
grid%nCorns(ireg)
2761 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2762 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2764 patch%position(3) = inte
2765 patch%position(4) = intb
2768 DO ind=indbeg+1,indend-1
2769 ijkn = indijk(ind ,
jbeg,kend,inoff,ijnoff)
2770 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2771 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2772 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2778 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2779 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2782 (intb==2 .OR. inte==2) &
2784 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2785 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2786 100._rfreal*eps)) .AND. (iset==0))
THEN
2788 dnbeg(:) = dnode(:,ijknbeg)
2789 dnend(:) = dnode(:,ijknend)
2792 DO ind=indbeg+1,indend
2793 ijkn = indijk(ind ,
jbeg,kend,inoff,ijnoff)
2794 ijkn1 = indijk(ind-1,
jbeg,kend,inoff,ijnoff)
2796 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2797 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2798 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2801 DO ind=indbeg+1,indend-1
2802 ijkn = indijk(ind ,
jbeg,kend,inoff,ijnoff)
2803 ijkn1 = indijk(ind-1,
jbeg,kend,inoff,ijnoff)
2804 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2805 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2806 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2809 dnode(:,ijkn) = dn(:)
2812 ELSEIF (ipedge==4)
THEN
2821 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2822 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2823 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2831 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2832 DO ic = 1,
grid%nCorns(ireg)
2833 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2834 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2836 patch%position(4) = inte
2837 patch%position(1) = intb
2840 DO ind=indbeg+1,indend-1
2841 ijkn = indijk(
ibeg,
jbeg,ind ,inoff,ijnoff)
2842 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2843 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2844 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2850 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2851 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2854 (intb==2 .OR. inte==2) &
2856 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2857 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2858 100._rfreal*eps)) .AND. (iset==0))
THEN
2860 dnbeg(:) = dnode(:,ijknbeg)
2861 dnend(:) = dnode(:,ijknend)
2864 DO ind=indbeg+1,indend
2865 ijkn = indijk(
ibeg,
jbeg,ind ,inoff,ijnoff)
2866 ijkn1 = indijk(
ibeg,
jbeg,ind-1,inoff,ijnoff)
2868 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2869 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2870 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2873 DO ind=indbeg+1,indend-1
2874 ijkn = indijk(
ibeg,
jbeg,ind ,inoff,ijnoff)
2875 ijkn1 = indijk(
ibeg,
jbeg,ind-1,inoff,ijnoff)
2876 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2877 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2878 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2881 dnode(:,ijkn) = dn(:)
2887 IF (lbound==5 .OR. lbound==6)
THEN
2897 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2898 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2899 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2907 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2908 DO ic = 1,
grid%nCorns(ireg)
2909 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2910 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2912 patch%position(1) = intb
2913 patch%position(2) = inte
2916 DO ind=indbeg+1,indend-1
2917 ijkn = indijk(
ibeg,ind ,
kbeg,inoff,ijnoff)
2918 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2919 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2920 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2926 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2927 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2930 (intb==2 .OR. inte==2) &
2932 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2933 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2934 100._rfreal*eps)) .AND. (iset==0))
THEN
2936 dnbeg(:) = dnode(:,ijknbeg)
2937 dnend(:) = dnode(:,ijknend)
2940 DO ind=indbeg+1,indend
2941 ijkn = indijk(
ibeg,ind ,
kbeg,inoff,ijnoff)
2942 ijkn1 = indijk(
ibeg,ind-1,
kbeg,inoff,ijnoff)
2944 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2945 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2946 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2949 DO ind=indbeg+1,indend-1
2950 ijkn = indijk(
ibeg,ind ,
kbeg,inoff,ijnoff)
2951 ijkn1 = indijk(
ibeg,ind-1,
kbeg,inoff,ijnoff)
2952 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2953 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2954 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2957 dnode(:,ijkn) = dn(:)
2960 ELSEIF (ipedge==2)
THEN
2969 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2970 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2971 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2979 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2980 DO ic = 1,
grid%nCorns(ireg)
2981 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2982 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2984 patch%position(2) = intb
2985 patch%position(3) = inte
2988 DO ind=indbeg+1,indend-1
2989 ijkn = indijk(ind ,
jend,
kbeg,inoff,ijnoff)
2990 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2991 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2992 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2998 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2999 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
3002 (intb==2 .OR. inte==2) &
3004 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
3005 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
3006 100._rfreal*eps)) .AND. (iset==0))
THEN
3008 dnbeg(:) = dnode(:,ijknbeg)
3009 dnend(:) = dnode(:,ijknend)
3012 DO ind=indbeg+1,indend
3013 ijkn = indijk(ind ,
jend,
kbeg,inoff,ijnoff)
3014 ijkn1 = indijk(ind-1,
jend,
kbeg,inoff,ijnoff)
3016 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
3017 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
3018 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
3021 DO ind=indbeg+1,indend-1
3022 ijkn = indijk(ind ,
jend,
kbeg,inoff,ijnoff)
3023 ijkn1 = indijk(ind-1,
jend,
kbeg,inoff,ijnoff)
3024 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
3025 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
3026 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
3029 dnode(:,ijkn) = dn(:)
3032 ELSEIF (ipedge==3)
THEN
3041 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
3042 ijknend = indijk(ie,je,ke,inoff,ijnoff)
3043 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
3051 intertype = region%levels(ilev)%edgeCells(iedge)%interType
3052 DO ic = 1,
grid%nCorns(ireg)
3053 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
3054 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
3056 patch%position(3) = inte
3057 patch%position(4) = intb
3060 DO ind=indbeg+1,indend-1
3061 ijkn = indijk(
iend,ind ,
kbeg,inoff,ijnoff)
3062 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
3063 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
3064 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
3070 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
3071 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
3074 (intb==2 .OR. inte==2) &
3076 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
3077 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
3078 100._rfreal*eps)) .AND. (iset==0))
THEN
3080 dnbeg(:) = dnode(:,ijknbeg)
3081 dnend(:) = dnode(:,ijknend)
3084 DO ind=indbeg+1,indend
3085 ijkn = indijk(
iend,ind ,
kbeg,inoff,ijnoff)
3086 ijkn1 = indijk(
iend,ind-1,
kbeg,inoff,ijnoff)
3088 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
3089 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
3090 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
3093 DO ind=indbeg+1,indend-1
3094 ijkn = indijk(
iend,ind ,
kbeg,inoff,ijnoff)
3095 ijkn1 = indijk(
iend,ind-1,
kbeg,inoff,ijnoff)
3096 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
3097 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
3098 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
3101 dnode(:,ijkn) = dn(:)
3104 ELSEIF (ipedge==4)
THEN
3113 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
3114 ijknend = indijk(ie,je,ke,inoff,ijnoff)
3115 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
3123 intertype = region%levels(ilev)%edgeCells(iedge)%interType
3124 DO ic = 1,
grid%nCorns(ireg)
3125 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
3126 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
3128 patch%position(4) = inte
3129 patch%position(1) = intb
3132 DO ind=indbeg+1,indend-1
3133 ijkn = indijk(ind ,
jbeg,
kbeg,inoff,ijnoff)
3134 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
3135 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
3136 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
3142 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
3143 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
3146 (intb==2 .OR. inte==2) &
3148 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
3149 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
3150 100._rfreal*eps)) .AND. (iset==0))
THEN
3152 dnbeg(:) = dnode(:,ijknbeg)
3153 dnend(:) = dnode(:,ijknend)
3156 DO ind=indbeg+1,indend
3157 ijkn = indijk(ind ,
jbeg,
kbeg,inoff,ijnoff)
3158 ijkn1 = indijk(ind-1,
jbeg,
kbeg,inoff,ijnoff)
3160 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
3161 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
3162 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
3165 DO ind=indbeg+1,indend-1
3166 ijkn = indijk(ind ,
jbeg,
kbeg,inoff,ijnoff)
3167 ijkn1 = indijk(ind-1,
jbeg,
kbeg,inoff,ijnoff)
3168 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
3169 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
3170 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
3173 dnode(:,ijkn) = dn(:)
3215 TYPE(t_region
),
POINTER :: regions(:)
3219 INTEGER :: ireg, ipatch, ipass
3222 INTEGER :: bctype, iregsrc, ipatchsrc, ltype, npass
3224 TYPE(t_grid),
POINTER ::
grid, gridold, gridsrc
3230 global => regions(1)%global
3233 'RFLO_ModMoveGridFrame.F90' )
3238 npass = global%moveGridNsmatch
3239 npass =
max( npass,4 )
3244 DO ireg=1,global%nRegions
3245 IF (regions(ireg)%procid==global%myProcid .AND. &
3246 regions(ireg)%active==active .AND. &
3247 regions(ireg)%mixtInput%moveGrid)
THEN
3249 grid => regions(ireg)%levels(1)%grid
3250 gridold => regions(ireg)%levels(1)%gridOld
3252 DO ipatch=1,regions(ireg)%nPatches
3253 patch => regions(ireg)%levels(1)%patches(ipatch)
3254 bctype =
patch%bcType
3255 IF ((bctype>=bc_regionconf .AND. bctype<=bc_regionconf+bc_range) .OR. &
3256 (bctype>=bc_tra_peri .AND. bctype<=bc_tra_peri +bc_range) .OR. &
3257 (bctype>=bc_rot_peri .AND. bctype<=bc_rot_peri +bc_range))
THEN
3258 iregsrc =
patch%srcRegion
3259 ipatchsrc =
patch%srcPatch
3260 patchsrc => regions(iregsrc)%levels(1)%patches(ipatchsrc)
3261 gridsrc => regions(iregsrc)%levels(1)%grid
3263 IF (regions(iregsrc)%procid == global%myProcid)
THEN
3265 patch,patchsrc,.false., &
3266 grid%xyz,gridsrc%xyz )
3267 IF (ipass < npass-1 .AND. ltype==1)
THEN
3269 gridold%xyzOld,
grid%xyz )
3273 ELSEIF (ipass < npass-1 .AND. ltype==2)
THEN
3277 grid%arcLen56,gridold%xyzOld,
grid%xyz )
3282 gridold%xyzOld,
grid%xyz )
3296 DO ireg=1,global%nRegions
3297 IF (regions(ireg)%procid==global%myProcid .AND. &
3298 regions(ireg)%active==active .AND. &
3299 regions(ireg)%mixtInput%moveGrid)
THEN
3301 grid => regions(ireg)%levels(1)%grid
3302 gridold => regions(ireg)%levels(1)%gridOld
3304 DO ipatch=1,regions(ireg)%nPatches
3305 patch => regions(ireg)%levels(1)%patches(ipatch)
3306 bctype =
patch%bcType
3307 IF ((bctype>=bc_regionconf .AND. bctype<=bc_regionconf+bc_range) .OR. &
3308 (bctype>=bc_tra_peri .AND. bctype<=bc_tra_peri +bc_range) .OR. &
3309 (bctype>=bc_rot_peri .AND. bctype<=bc_rot_peri +bc_range))
THEN
3310 iregsrc =
patch%srcRegion
3311 ipatchsrc =
patch%srcPatch
3312 patchsrc => regions(iregsrc)%levels(1)%patches(ipatchsrc)
3313 gridsrc => regions(iregsrc)%levels(1)%grid
3315 IF (regions(iregsrc)%procid /= global%myProcid)
THEN
3319 IF (ipass < npass-1 .AND. ltype==1)
THEN
3321 gridold%xyzOld,
grid%xyz )
3325 ELSEIF (ipass < npass-1 .AND. ltype==2)
THEN
3329 grid%arcLen56,gridold%xyzOld,
grid%xyz )
3334 gridold%xyzOld,
grid%xyz )
3345 DO ireg=1,global%nRegions
3346 IF (regions(ireg)%procid==global%myProcid .AND. &
3347 regions(ireg)%active==active .AND. &
3348 regions(ireg)%mixtInput%moveGrid)
THEN
3383 arclen12,arclen34,arclen56, &
3390 #include "Indexing.h"
3393 LOGICAL :: boundmoved(6), edgemoved(12)
3395 REAL(RFREAL),
POINTER :: arclen12(:,:), arclen34(:,:), arclen56(:,:)
3396 REAL(RFREAL),
POINTER :: dnode(:,:), xyzold(:,:)
3398 TYPE(t_region
) :: region
3401 INTEGER :: ibound, l1, l2
3405 INTEGER :: l1b, l1e, l2b, l2e, lc, ijkn, ijke(4), ijkem(4), inoff, ijnoff
3406 INTEGER :: switch(6,9)
3410 REAL(RFREAL) :: arclen(4), ds(4),
s(4)
3411 REAL(RFREAL) :: corner(3,8), e1(3), e2(3), e3(3), e4(3), &
3412 p1(3), p2(3), p3(3), p4(3), dn(3)
3417 'RFLO_ModMoveGridFrame.F90' )
3442 corner(:,2) = dnode(:,indijk(
ipnbeg,
jpnbeg,kpnend,inoff,ijnoff))
3443 corner(:,3) = dnode(:,indijk(
ipnbeg,
jpnend,kpnend,inoff,ijnoff))
3446 corner(:,6) = dnode(:,indijk(
ipnend,
jpnbeg,kpnend,inoff,ijnoff))
3447 corner(:,7) = dnode(:,indijk(
ipnend,
jpnend,kpnend,inoff,ijnoff))
3457 IF ((edgemoved(switch(ibound,1)) .OR. edgemoved(switch(ibound,2)) .OR. &
3458 edgemoved(switch(ibound,3)) .OR. edgemoved(switch(ibound,4))))
THEN
3460 l1b = switch(ibound,5)
3461 l1e = switch(ibound,6)
3462 l2b = switch(ibound,7)
3463 l2e = switch(ibound,8)
3464 lc = switch(ibound,9)
3466 IF (ibound == 1)
THEN
3471 ELSE IF (ibound == 2)
THEN
3476 ELSE IF (ibound == 3)
THEN
3481 ELSE IF (ibound == 4)
THEN
3486 ELSE IF (ibound == 5)
THEN
3491 ELSE IF (ibound == 6)
THEN
3504 IF (ibound==1 .OR. ibound==2)
THEN
3505 ijkn = indijk(lc,l1 ,l2 ,inoff,ijnoff)
3506 ijke(1) = indijk(lc,
jpnbeg,l2 ,inoff,ijnoff)
3507 ijkem(1) = indijk(lc,
jpnbeg,l2-1 ,inoff,ijnoff)
3508 ijke(2) = indijk(lc,
jpnend,l2 ,inoff,ijnoff)
3509 ijkem(2) = indijk(lc,
jpnend,l2-1 ,inoff,ijnoff)
3510 ijke(3) = indijk(lc,l1 ,
kpnbeg,inoff,ijnoff)
3511 ijkem(3) = indijk(lc,l1-1 ,
kpnbeg,inoff,ijnoff)
3512 ijke(4) = indijk(lc,l1 ,kpnend,inoff,ijnoff)
3513 ijkem(4) = indijk(lc,l1-1 ,kpnend,inoff,ijnoff)
3514 arclen(1) = arclen56(lc,
jpnbeg)
3515 arclen(2) = arclen56(lc,
jpnend)
3516 arclen(3) = arclen34(
kpnbeg,lc)
3517 arclen(4) = arclen34(kpnend,lc)
3518 ELSE IF (ibound==3 .OR. ibound==4)
THEN
3519 ijkn = indijk(l2 ,lc,l1 ,inoff,ijnoff)
3520 ijke(1) = indijk(l2 ,lc,
kpnbeg,inoff,ijnoff)
3521 ijkem(1) = indijk(l2-1 ,lc,
kpnbeg,inoff,ijnoff)
3522 ijke(2) = indijk(l2 ,lc,kpnend,inoff,ijnoff)
3523 ijkem(2) = indijk(l2-1 ,lc,kpnend,inoff,ijnoff)
3524 ijke(3) = indijk(
ipnbeg,lc,l1 ,inoff,ijnoff)
3525 ijkem(3) = indijk(
ipnbeg,lc,l1-1 ,inoff,ijnoff)
3526 ijke(4) = indijk(
ipnend,lc,l1 ,inoff,ijnoff)
3527 ijkem(4) = indijk(
ipnend,lc,l1-1 ,inoff,ijnoff)
3528 arclen(1) = arclen12(lc,
kpnbeg)
3529 arclen(2) = arclen12(lc,kpnend)
3530 arclen(3) = arclen56(
ipnbeg,lc)
3531 arclen(4) = arclen56(
ipnend,lc)
3532 ELSE IF (ibound==5 .OR. ibound==6)
THEN
3533 ijkn = indijk(l1 ,l2 ,lc,inoff,ijnoff)
3534 ijke(1) = indijk(
ipnbeg,l2 ,lc,inoff,ijnoff)
3535 ijkem(1) = indijk(
ipnbeg,l2-1 ,lc,inoff,ijnoff)
3536 ijke(2) = indijk(
ipnend,l2 ,lc,inoff,ijnoff)
3537 ijkem(2) = indijk(
ipnend,l2-1 ,lc,inoff,ijnoff)
3538 ijke(3) = indijk(l1 ,
jpnbeg,lc,inoff,ijnoff)
3539 ijkem(3) = indijk(l1-1 ,
jpnbeg,lc,inoff,ijnoff)
3540 ijke(4) = indijk(l1 ,
jpnend,lc,inoff,ijnoff)
3541 ijkem(4) = indijk(l1-1 ,
jpnend,lc,inoff,ijnoff)
3542 arclen(1) = arclen34(lc,
ipnbeg)
3543 arclen(2) = arclen34(lc,
ipnend)
3544 arclen(3) = arclen12(
jpnbeg,lc)
3545 arclen(4) = arclen12(
jpnend,lc)
3549 sqrt((xyzold(xcoord,ijke(1))-xyzold(xcoord,ijkem(1)))**2 + &
3550 (xyzold(ycoord,ijke(1))-xyzold(ycoord,ijkem(1)))**2 + &
3551 (xyzold(zcoord,ijke(1))-xyzold(zcoord,ijkem(1)))**2)
3553 sqrt((xyzold(xcoord,ijke(2))-xyzold(xcoord,ijkem(2)))**2 + &
3554 (xyzold(ycoord,ijke(2))-xyzold(ycoord,ijkem(2)))**2 + &
3555 (xyzold(zcoord,ijke(2))-xyzold(zcoord,ijkem(2)))**2)
3559 sqrt((xyzold(xcoord,ijke(3))-xyzold(xcoord,ijkem(3)))**2 + &
3560 (xyzold(ycoord,ijke(3))-xyzold(ycoord,ijkem(3)))**2 + &
3561 (xyzold(zcoord,ijke(3))-xyzold(zcoord,ijkem(3)))**2)
3563 sqrt((xyzold(xcoord,ijke(4))-xyzold(xcoord,ijkem(4)))**2 + &
3564 (xyzold(ycoord,ijke(4))-xyzold(ycoord,ijkem(4)))**2 + &
3565 (xyzold(zcoord,ijke(4))-xyzold(zcoord,ijkem(4)))**2)
3566 s(:) = ds(:)/arclen(:)
3567 e1(:) = dnode(:,ijke(1))
3568 e2(:) = dnode(:,ijke(2))
3569 e3(:) = dnode(:,ijke(3))
3570 e4(:) = dnode(:,ijke(4))
3571 CALL
rflo_tfint2d(
s(1),
s(2),
s(3),
s(4),e1,e2,e3,e4,
p1,p2,p3,p4,dn )
3572 dnode(:,ijkn) = dn(:)
3607 #include "Indexing.h"
3611 REAL(RFREAL),
POINTER :: dnode(:,:), xyzold(:,:)
3613 TYPE(t_region
) :: region
3616 INTEGER :: ipatch, l1, l2
3620 INTEGER :: l1b, l1e, l2b, l2e, lc, ijkn, ijke(4), ijkem(4), inoff, ijnoff
3621 INTEGER :: switch(6,9)
3624 REAL(RFREAL) :: arclen(4), ds(4),
s(4)
3625 REAL(RFREAL) :: e1(3), e2(3), e3(3), e4(3), &
3626 p1(3), p2(3), p3(3), p4(3), dn(3)
3632 'RFLO_ModMoveGridFrame.F90' )
3647 DO ipatch=1,region%nPatches
3648 patch => region%levels(ilev)%patches(ipatch)
3649 ibound =
patch%lbound
3654 IF (
patch%bcMotion/=bc_external)
THEN
3663 l1b = switch(ibound,5)
3664 l1e = switch(ibound,6)
3665 l2b = switch(ibound,7)
3666 l2e = switch(ibound,8)
3667 lc = switch(ibound,9)
3669 p1(:) = dnode(:,
patch%corns(1))
3670 p2(:) = dnode(:,
patch%corns(4))
3671 p3(:) = dnode(:,
patch%corns(3))
3672 p4(:) = dnode(:,
patch%corns(2))
3676 IF (ibound==1 .OR. ibound==2)
THEN
3677 arclen(1:2) = 0._rfreal
3679 ijkn = indijk(lc,l1 ,l2 ,inoff,ijnoff)
3680 ijke(1) = indijk(lc,
jbeg ,l2 ,inoff,ijnoff)
3681 ijkem(1) = indijk(lc,
jbeg ,l2-1 ,inoff,ijnoff)
3682 ijke(2) = indijk(lc,
jend ,l2 ,inoff,ijnoff)
3683 ijkem(2) = indijk(lc,
jend ,l2-1 ,inoff,ijnoff)
3684 arclen(1) = arclen(1) + &
3685 sqrt((xyzold(xcoord,ijke(1))-xyzold(xcoord,ijkem(1)))**2 + &
3686 (xyzold(ycoord,ijke(1))-xyzold(ycoord,ijkem(1)))**2 + &
3687 (xyzold(zcoord,ijke(1))-xyzold(zcoord,ijkem(1)))**2)
3688 arclen(2) = arclen(2) + &
3689 sqrt((xyzold(xcoord,ijke(2))-xyzold(xcoord,ijkem(2)))**2 + &
3690 (xyzold(ycoord,ijke(2))-xyzold(ycoord,ijkem(2)))**2 + &
3691 (xyzold(zcoord,ijke(2))-xyzold(zcoord,ijkem(2)))**2)
3693 arclen(3:4) = 0._rfreal
3695 ijkn = indijk(lc,l1 ,l2 ,inoff,ijnoff)
3696 ijke(3) = indijk(lc,l1 ,
kbeg ,inoff,ijnoff)
3697 ijkem(3) = indijk(lc,l1-1 ,
kbeg ,inoff,ijnoff)
3698 ijke(4) = indijk(lc,l1 ,kend ,inoff,ijnoff)
3699 ijkem(4) = indijk(lc,l1-1 ,kend ,inoff,ijnoff)
3700 arclen(3) = arclen(3) + &
3701 sqrt((xyzold(xcoord,ijke(3))-xyzold(xcoord,ijkem(3)))**2 + &
3702 (xyzold(ycoord,ijke(3))-xyzold(ycoord,ijkem(3)))**2 + &
3703 (xyzold(zcoord,ijke(3))-xyzold(zcoord,ijkem(3)))**2)
3704 arclen(4) = arclen(4) + &
3705 sqrt((xyzold(xcoord,ijke(4))-xyzold(xcoord,ijkem(4)))**2 + &
3706 (xyzold(ycoord,ijke(4))-xyzold(ycoord,ijkem(4)))**2 + &
3707 (xyzold(zcoord,ijke(4))-xyzold(zcoord,ijkem(4)))**2)
3709 ELSE IF (ibound==3 .OR. ibound==4)
THEN
3710 arclen(1:2) = 0._rfreal
3712 ijkn = indijk(l2 ,lc,l1 ,inoff,ijnoff)
3713 ijke(1) = indijk(l2 ,lc,
kbeg ,inoff,ijnoff)
3714 ijkem(1) = indijk(l2-1 ,lc,
kbeg ,inoff,ijnoff)
3715 ijke(2) = indijk(l2 ,lc,kend ,inoff,ijnoff)
3716 ijkem(2) = indijk(l2-1 ,lc,kend ,inoff,ijnoff)
3717 arclen(1) = arclen(1) + &
3718 sqrt((xyzold(xcoord,ijke(1))-xyzold(xcoord,ijkem(1)))**2 + &
3719 (xyzold(ycoord,ijke(1))-xyzold(ycoord,ijkem(1)))**2 + &
3720 (xyzold(zcoord,ijke(1))-xyzold(zcoord,ijkem(1)))**2)
3721 arclen(2) = arclen(2) + &
3722 sqrt((xyzold(xcoord,ijke(2))-xyzold(xcoord,ijkem(2)))**2 + &
3723 (xyzold(ycoord,ijke(2))-xyzold(ycoord,ijkem(2)))**2 + &
3724 (xyzold(zcoord,ijke(2))-xyzold(zcoord,ijkem(2)))**2)
3726 arclen(3:4) = 0._rfreal
3728 ijkn = indijk(l2 ,lc,l1 ,inoff,ijnoff)
3729 ijke(3) = indijk(
ibeg ,lc,l1 ,inoff,ijnoff)
3730 ijkem(3) = indijk(
ibeg ,lc,l1-1 ,inoff,ijnoff)
3731 ijke(4) = indijk(
iend ,lc,l1 ,inoff,ijnoff)
3732 ijkem(4) = indijk(
iend ,lc,l1-1 ,inoff,ijnoff)
3733 arclen(3) = arclen(3) + &
3734 sqrt((xyzold(xcoord,ijke(3))-xyzold(xcoord,ijkem(3)))**2 + &
3735 (xyzold(ycoord,ijke(3))-xyzold(ycoord,ijkem(3)))**2 + &
3736 (xyzold(zcoord,ijke(3))-xyzold(zcoord,ijkem(3)))**2)
3737 arclen(4) = arclen(4) + &
3738 sqrt((xyzold(xcoord,ijke(4))-xyzold(xcoord,ijkem(4)))**2 + &
3739 (xyzold(ycoord,ijke(4))-xyzold(ycoord,ijkem(4)))**2 + &
3740 (xyzold(zcoord,ijke(4))-xyzold(zcoord,ijkem(4)))**2)
3742 ELSE IF (ibound==5 .OR. ibound==6)
THEN
3743 arclen(1:2) = 0._rfreal
3745 ijkn = indijk(l1 ,l2 ,lc,inoff,ijnoff)
3746 ijke(1) = indijk(
ibeg ,l2 ,lc,inoff,ijnoff)
3747 ijkem(1) = indijk(
ibeg ,l2-1 ,lc,inoff,ijnoff)
3748 ijke(2) = indijk(
iend ,l2 ,lc,inoff,ijnoff)
3749 ijkem(2) = indijk(
iend ,l2-1 ,lc,inoff,ijnoff)
3750 arclen(1) = arclen(1) + &
3751 sqrt((xyzold(xcoord,ijke(1))-xyzold(xcoord,ijkem(1)))**2 + &
3752 (xyzold(ycoord,ijke(1))-xyzold(ycoord,ijkem(1)))**2 + &
3753 (xyzold(zcoord,ijke(1))-xyzold(zcoord,ijkem(1)))**2)
3754 arclen(2) = arclen(2) + &
3755 sqrt((xyzold(xcoord,ijke(2))-xyzold(xcoord,ijkem(2)))**2 + &
3756 (xyzold(ycoord,ijke(2))-xyzold(ycoord,ijkem(2)))**2 + &
3757 (xyzold(zcoord,ijke(2))-xyzold(zcoord,ijkem(2)))**2)
3759 arclen(3:4) = 0._rfreal
3761 ijkn = indijk(l1 ,l2 ,lc,inoff,ijnoff)
3762 ijke(3) = indijk(l1 ,
jbeg ,lc,inoff,ijnoff)
3763 ijkem(3) = indijk(l1-1 ,
jbeg ,lc,inoff,ijnoff)
3764 ijke(4) = indijk(l1 ,
jend ,lc,inoff,ijnoff)
3765 ijkem(4) = indijk(l1-1 ,
jend ,lc,inoff,ijnoff)
3766 arclen(3) = arclen(3) + &
3767 sqrt((xyzold(xcoord,ijke(3))-xyzold(xcoord,ijkem(3)))**2 + &
3768 (xyzold(ycoord,ijke(3))-xyzold(ycoord,ijkem(3)))**2 + &
3769 (xyzold(zcoord,ijke(3))-xyzold(zcoord,ijkem(3)))**2)
3770 arclen(4) = arclen(4) + &
3771 sqrt((xyzold(xcoord,ijke(4))-xyzold(xcoord,ijkem(4)))**2 + &
3772 (xyzold(ycoord,ijke(4))-xyzold(ycoord,ijkem(4)))**2 + &
3773 (xyzold(zcoord,ijke(4))-xyzold(zcoord,ijkem(4)))**2)
3785 IF (ibound==1 .OR. ibound==2)
THEN
3786 ijkn = indijk(lc,l1 ,l2 ,inoff,ijnoff)
3787 ijke(1) = indijk(lc,
jbeg ,l2 ,inoff,ijnoff)
3788 ijkem(1) = indijk(lc,
jbeg ,l2-1 ,inoff,ijnoff)
3789 ijke(2) = indijk(lc,
jend ,l2 ,inoff,ijnoff)
3790 ijkem(2) = indijk(lc,
jend ,l2-1 ,inoff,ijnoff)
3791 ijke(3) = indijk(lc,l1 ,
kbeg ,inoff,ijnoff)
3792 ijkem(3) = indijk(lc,l1-1 ,
kbeg ,inoff,ijnoff)
3793 ijke(4) = indijk(lc,l1 ,kend ,inoff,ijnoff)
3794 ijkem(4) = indijk(lc,l1-1 ,kend ,inoff,ijnoff)
3795 ELSE IF (ibound==3 .OR. ibound==4)
THEN
3796 ijkn = indijk(l2 ,lc,l1 ,inoff,ijnoff)
3797 ijke(1) = indijk(l2 ,lc,
kbeg ,inoff,ijnoff)
3798 ijkem(1) = indijk(l2-1 ,lc,
kbeg ,inoff,ijnoff)
3799 ijke(2) = indijk(l2 ,lc,kend ,inoff,ijnoff)
3800 ijkem(2) = indijk(l2-1 ,lc,kend ,inoff,ijnoff)
3801 ijke(3) = indijk(
ibeg ,lc,l1 ,inoff,ijnoff)
3802 ijkem(3) = indijk(
ibeg ,lc,l1-1 ,inoff,ijnoff)
3803 ijke(4) = indijk(
iend ,lc,l1 ,inoff,ijnoff)
3804 ijkem(4) = indijk(
iend ,lc,l1-1 ,inoff,ijnoff)
3805 ELSE IF (ibound==5 .OR. ibound==6)
THEN
3806 ijkn = indijk(l1 ,l2 ,lc,inoff,ijnoff)
3807 ijke(1) = indijk(
ibeg ,l2 ,lc,inoff,ijnoff)
3808 ijkem(1) = indijk(
ibeg ,l2-1 ,lc,inoff,ijnoff)
3809 ijke(2) = indijk(
iend ,l2 ,lc,inoff,ijnoff)
3810 ijkem(2) = indijk(
iend ,l2-1 ,lc,inoff,ijnoff)
3811 ijke(3) = indijk(l1 ,
jbeg ,lc,inoff,ijnoff)
3812 ijkem(3) = indijk(l1-1 ,
jbeg ,lc,inoff,ijnoff)
3813 ijke(4) = indijk(l1 ,
jend ,lc,inoff,ijnoff)
3814 ijkem(4) = indijk(l1-1 ,
jend ,lc,inoff,ijnoff)
3818 sqrt((xyzold(xcoord,ijke(1))-xyzold(xcoord,ijkem(1)))**2 + &
3819 (xyzold(ycoord,ijke(1))-xyzold(ycoord,ijkem(1)))**2 + &
3820 (xyzold(zcoord,ijke(1))-xyzold(zcoord,ijkem(1)))**2)
3822 sqrt((xyzold(xcoord,ijke(2))-xyzold(xcoord,ijkem(2)))**2 + &
3823 (xyzold(ycoord,ijke(2))-xyzold(ycoord,ijkem(2)))**2 + &
3824 (xyzold(zcoord,ijke(2))-xyzold(zcoord,ijkem(2)))**2)
3828 sqrt((xyzold(xcoord,ijke(3))-xyzold(xcoord,ijkem(3)))**2 + &
3829 (xyzold(ycoord,ijke(3))-xyzold(ycoord,ijkem(3)))**2 + &
3830 (xyzold(zcoord,ijke(3))-xyzold(zcoord,ijkem(3)))**2)
3832 sqrt((xyzold(xcoord,ijke(4))-xyzold(xcoord,ijkem(4)))**2 + &
3833 (xyzold(ycoord,ijke(4))-xyzold(ycoord,ijkem(4)))**2 + &
3834 (xyzold(zcoord,ijke(4))-xyzold(zcoord,ijkem(4)))**2)
3835 s(:) = ds(:)/arclen(:)
3836 e1(:) = dnode(:,ijke(1))
3837 e2(:) = dnode(:,ijke(2))
3838 e3(:) = dnode(:,ijke(3))
3839 e4(:) = dnode(:,ijke(4))
3840 CALL
rflo_tfint2d(
s(1),
s(2),
s(3),
s(4),e1,e2,e3,e4,
p1,p2,p3,p4,dn )
3841 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)
Tfloat sum() const
Return the sum of all the pixel values in an image.
**********************************************************************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)
subroutine, public rflo_normcrossprod(s1, s2, s3)
**********************************************************************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)
subroutine, public rflo_gridqualityglobal(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 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_mgframeorthoshift(regions)
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
subroutine rflo_mgframebnddeformation0(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 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)