72 CHARACTER(CHRLEN) :: rcsidentstring = &
73 '$RCSfile: RFLO_ModMoveGridNconform3.F90,v $ $Revision: 1.26 $'
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_ModMoveGridNconform3.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,__line__ )
218 IF (global%myProcid == masterproc)
THEN
219 WRITE(stdout,4000) solver_name,global%skewness,global%minVol
221 IF (global%moveGridScheme==movegrid_frame)
THEN
222 WRITE(stdout,2000) solver_name, &
223 global%moveGridNiter,global%moveGridNsmatch, &
224 global%moveGridAmplifX,global%moveGridAmplifY, &
225 global%moveGridAmplifZ,global%moveGridPower, &
226 global%moveGridOrthDir,global%moveGridOrthWghtX, &
227 global%moveGridOrthWghtY,global%moveGridOrthWghtZ, &
229 ELSEIF (global%moveGridScheme==movegrid_foms)
THEN
230 WRITE(stdout,3000) solver_name, &
231 global%moveGridNiter,global%moveGridNsmatch, &
232 global%moveGridAmplifX,global%moveGridAmplifY, &
233 global%moveGridAmplifZ,global%moveGridPower, &
234 global%moveGridOrthDir,global%moveGridOrthWghtX, &
235 global%moveGridOrthWghtY,global%moveGridOrthWghtZ, &
236 global%moveGridWeight,global%moveGridOrthCell, &
245 DO ireg=1,global%nRegions
246 IF (regions(ireg)%procid==global%myProcid .AND. &
247 regions(ireg)%active==active .AND. &
248 regions(ireg)%mixtInput%moveGrid)
THEN
252 xyz => regions(ireg)%levels(1)%grid%xyz
253 xyzold => regions(ireg)%levels(1)%gridOld%xyz
263 grid => regions(ireg)%levels(1)%grid
264 gridold => regions(ireg)%levels(1)%gridOld
265 grid%boundMoved(:) = .true.
266 grid%edgeMoved(:) = .true.
267 DO ipatch=1,regions(ireg)%nPatches
268 patch => regions(ireg)%levels(1)%patches(ipatch)
269 bctype =
patch%bcType
273 IF ((bctype==bc_symmetry))
THEN
305 DO ireg=1,global%nRegions
306 IF (regions(ireg)%procid==global%myProcid .AND. &
307 regions(ireg)%active==active .AND. &
308 regions(ireg)%mixtInput%moveGrid)
THEN
312 IF (global%moveGridScheme==movegrid_foms) &
314 IF (regions(ireg)%mixtInput%faceEdgeAvg==fe_avg_linear) &
327 CALL mpi_allreduce( iremesh, nremesh, 1, mpi_integer, mpi_sum, &
328 global%mpiComm, global%mpierr )
329 IF (global%mpierr /=0 ) CALL
errorstop( global,err_mpi_trouble,__line__ )
330 IF (nremesh > 0) someremesh = .true.
335 DO ireg=1,global%nRegions
336 IF (regions(ireg)%procid==global%myProcid .AND. &
337 regions(ireg)%active==active .AND. &
342 IF (global%moveGridScheme==movegrid_foms) &
344 IF (regions(ireg)%mixtInput%faceEdgeAvg==fe_avg_linear) &
359 1000
FORMAT(
a,1
x,
'Global-TFI grid motion:', &
360 2i5,4(1pe9.2),i4,3(1pe9.2))
361 2000
FORMAT(
a,1
x,
'Global-Weighted-Laplacian grid motion:', &
362 2i5,4(1pe9.2),i4,3(1pe9.2),1pe13.4)
363 3000
FORMAT(
a,1
x,
'Global-Orthogonal-Laplacian gridmotion:', &
364 2i3,4(1pe9.2),i4,3(1pe9.2),3(1pe9.2),1pe10.2)
365 4000
FORMAT(
a,1
x,
'global skewness, minvol:',2(1pe14.5))
390 #include "Indexing.h"
393 TYPE(t_region
),
POINTER :: regions(:)
396 INTEGER :: l, ipatch, ireg, ipcorn, intcorn, nreg
399 INTEGER,
PARAMETER :: ncmax=100
402 INTEGER :: iptc, jptc, kptc, iblk, jblk, kblk, ijkcurr
403 INTEGER :: inoff, ijnoff, lbound, regnc, errfl
404 INTEGER,
ALLOCATABLE :: ivar(:), ijkcorn(:,:)
413 global => regions(1)%global
416 'RFLO_ModMoveGridNconform3.F90' )
420 ALLOCATE( ivar(global%nRegions),stat=errfl )
422 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
424 ALLOCATE( ijkcorn(ncmax,global%nRegions),stat=errfl )
426 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
430 DO ireg = 1,global%nRegions
431 IF (regions(ireg)%procid==global%myProcid .AND. &
432 regions(ireg)%active==active)
THEN
434 grid => regions(ireg)%levels(ilev)%grid
442 grid%nCorns(ireg) = 8
444 ijkcorn(2,ireg) = indijk(
ipnbeg,
jpnbeg,kpnend,inoff,ijnoff)
445 ijkcorn(3,ireg) = indijk(
ipnbeg,
jpnend,kpnend,inoff,ijnoff)
448 ijkcorn(6,ireg) = indijk(
ipnend,
jpnbeg,kpnend,inoff,ijnoff)
449 ijkcorn(7,ireg) = indijk(
ipnend,
jpnend,kpnend,inoff,ijnoff)
452 DO ipatch=1,regions(ireg)%nPatches
453 patch => regions(ireg)%levels(ilev)%patches(ipatch)
454 lbound =
patch%lbound
460 IF (lbound==1 .OR. lbound==2)
THEN
462 IF (lbound==1) iblk =
ipnbeg
463 IF (lbound==2) iblk =
ipnend
469 ELSEIF (ipcorn==2)
THEN
474 ELSEIF (ipcorn==3)
THEN
479 ELSEIF (ipcorn==4)
THEN
485 ELSEIF (lbound==3 .OR. lbound==4)
THEN
487 IF (lbound==3) jblk =
jpnbeg
488 IF (lbound==4) jblk =
jpnend
494 ELSEIF (ipcorn==2)
THEN
499 ELSEIF (ipcorn==3)
THEN
504 ELSEIF (ipcorn==4)
THEN
510 ELSEIF (lbound==5 .OR. lbound==6)
THEN
512 IF (lbound==5) kblk =
kpnbeg
513 IF (lbound==6) kblk = kpnend
519 ELSEIF (ipcorn==2)
THEN
524 ELSEIF (ipcorn==3)
THEN
529 ELSEIF (ipcorn==4)
THEN
537 patch%corns(ipcorn) = indijk(iptc,jptc,kptc,inoff,ijnoff)
539 IF (iptc/=iblk .OR. jptc/=jblk .OR. kptc/=kblk)
THEN
541 ijkcurr = indijk(iptc,jptc,kptc,inoff,ijnoff)
542 DO intcorn=1,
grid%nCorns(ireg)
543 IF (ijkcorn(intcorn,ireg)==ijkcurr)
THEN
547 IF (.NOT. wasfound)
THEN
548 grid%nCorns(ireg) =
grid%nCorns(ireg) +1
549 ijkcorn(
grid%nCorns(ireg),ireg) = ijkcurr
552 IF (
grid%nCorns(ireg) >= ncmax)
THEN
553 CALL
errorstop( global,err_illegal_value,__line__, &
554 'too low ncMax in RFLO_ModMoveGridFrame/RFLO_MgFrameCornPoints')
559 ivar(ireg) =
grid%nCorns(ireg)
564 DO ireg = 1,global%nRegions
565 CALL mpi_bcast( ivar(ireg),1,mpi_integer, &
566 regions(ireg)%procId,global%mpiComm,global%mpierr )
567 IF (global%mpierr /=0 ) CALL
errorstop( global,err_mpi_trouble,__line__ )
569 CALL mpi_bcast( ijkcorn(1:ncmax,ireg),ncmax,mpi_integer, &
570 regions(ireg)%procId,global%mpiComm,global%mpierr )
571 IF (global%mpierr /=0 ) CALL
errorstop( global,err_mpi_trouble,__line__ )
576 DO ireg = 1,global%nRegions
577 regnc =
max( regnc,ivar(ireg) )
579 global%moveGridRegNc = regnc
581 DO ireg = 1,global%nRegions
582 IF (regions(ireg)%procid==global%myProcid .AND. &
583 regions(ireg)%active==active)
THEN
585 grid => regions(ireg)%levels(ilev)%grid
586 DO nreg = 1,global%nRegions
587 grid%nCorns(nreg) = ivar(nreg)
590 ALLOCATE(
grid%ijkCorn( regnc,global%nRegions),stat=errfl )
592 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
594 ALLOCATE(
grid%regCorn( 3,regnc,global%nRegions),stat=errfl )
596 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
598 ALLOCATE(
grid%regCornOld( 3,regnc,global%nRegions),stat=errfl )
600 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
602 ALLOCATE(
grid%regCornOrig(3,regnc,global%nRegions),stat=errfl )
604 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
606 ALLOCATE(
grid%nghbor( 3,global%moveGridNbour,regnc),stat=errfl )
608 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
610 DO l = 1,
grid%nCorns(ireg)
611 grid%ijkCorn(l,ireg) = ijkcorn(l,ireg)
616 ALLOCATE(
grid%nShared( regnc),stat=errfl )
618 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
620 ALLOCATE(
grid%regCornBuff(3,regnc,global%nRegions),stat=errfl )
622 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
624 ALLOCATE(
grid%regCornOrth(3,regnc,global%nRegions),stat=errfl )
626 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
633 DEALLOCATE( ivar,stat=errfl )
635 IF (global%error /= 0) CALL
errorstop( global,err_deallocate,__line__ )
663 #include "Indexing.h"
666 TYPE(t_region
),
POINTER :: regions(:)
667 INTEGER :: iselect, iter
670 INTEGER ::
i, l, ireg
673 INTEGER :: ilev, ncorns, errfl
674 INTEGER,
ALLOCATABLE :: corner(:)
676 REAL(RFREAL),
ALLOCATABLE :: rvar(:,:,:)
677 REAL(RFREAL),
POINTER :: dxyz(:,:), xyzold(:,:)
684 global => regions(1)%global
687 'RFLO_ModMoveGridNconform3.F90' )
691 ALLOCATE( rvar(xcoord:zcoord,global%moveGridRegNc,global%nRegions), &
694 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
699 DO ireg = 1,global%nRegions
700 IF (regions(ireg)%procid==global%myProcid .AND. &
701 regions(ireg)%active==active)
THEN
703 grid => regions(ireg)%levels(ilev)%grid
704 gridold => regions(ireg)%levels(ilev)%gridOld
707 xyzold => gridold%xyz
708 ncorns =
grid%nCorns(ireg)
710 ALLOCATE( corner(ncorns), stat=errfl )
712 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
715 corner(l) =
grid%ijkCorn(l,ireg)
725 grid%regCornOrig(xcoord,
i,ireg) = dxyz(xcoord,corner(
i))
726 grid%regCornOrig(ycoord,
i,ireg) = dxyz(ycoord,corner(
i))
727 grid%regCornOrig(zcoord,
i,ireg) = dxyz(zcoord,corner(
i))
728 rvar(:,
i,ireg) =
grid%regCornOrig(:,
i,ireg)
730 ELSEIF (iselect==1)
THEN
732 grid%regCornOld(xcoord,
i,ireg) = dxyz(xcoord,corner(
i))
733 grid%regCornOld(ycoord,
i,ireg) = dxyz(ycoord,corner(
i))
734 grid%regCornOld(zcoord,
i,ireg) = dxyz(zcoord,corner(
i))
735 rvar(:,
i,ireg) =
grid%regCornOld(:,
i,ireg)
741 rvar(:,:,ireg) =
grid%regCornOld(:,:,ireg)
748 grid%regCornBuff(:,
i,ireg) = xyzold(:,corner(
i))
749 rvar(:,
i,ireg) =
grid%regCornBuff(:,
i,ireg)
754 rvar(:,
i,ireg) =
grid%regCornOrth(:,
i,ireg)
758 DEALLOCATE( corner, stat=errfl )
760 IF (global%error /= 0) CALL
errorstop( global,err_deallocate,__line__ )
766 DO ireg = 1,global%nRegions
767 ncorns = global%moveGridRegNc
769 CALL mpi_bcast( rvar(xcoord:zcoord,1:ncorns,ireg),3*ncorns, &
770 mpi_rfreal,regions(ireg)%procId,global%mpiComm,global%mpierr )
771 IF (global%mpierr /=0 ) CALL
errorstop( global,err_mpi_trouble,__line__ )
773 CALL mpi_barrier( global%mpiComm,global%mpierr )
775 DO ireg = 1,global%nRegions
776 IF (regions(ireg)%procid==global%myProcid .AND. &
777 regions(ireg)%active==active)
THEN
779 grid => regions(ireg)%levels(ilev)%grid
782 DO l=1,global%nRegions
783 grid%regCornOrig(:,:,l) = rvar(:,:,l)
785 ELSEIF (iselect==1)
THEN
786 DO l=1,global%nRegions
787 grid%regCornOld(:,:,l) = rvar(:,:,l)
792 DO l=1,global%nRegions
793 grid%regCornOld(:,:,l) = rvar(:,:,l)
798 DO l=1,global%nRegions
799 grid%regCornBuff(:,:,l) = rvar(:,:,l)
803 DO l=1,global%nRegions
804 grid%regCornOrth(:,:,l) = rvar(:,:,l)
825 DEALLOCATE( rvar,stat=errfl )
827 IF (global%error /= 0) CALL
errorstop( global,err_deallocate,__line__ )
855 #include "Indexing.h"
858 TYPE(t_region
),
POINTER :: regions(:)
861 INTEGER ::
i,
j,
k, ipatch,
ic, ireg, nc, nreg
864 INTEGER,
PARAMETER :: nsharedmax=16
868 INTEGER :: regnc, ncorns, nbour, nshared, nsmax
869 INTEGER :: ijknode(4), inoff, ijnoff, lbound, errfl
870 INTEGER,
ALLOCATABLE :: ncmin(:), nregmin(:), cshared(:,:,:)
871 REAL(RFREAL) :: edgelen, ds, tol
872 REAL(RFREAL),
POINTER :: xyz(:,:)
873 REAL(RFREAL),
ALLOCATABLE ::
dist(:,:), distmin(:)
881 global => regions(1)%global
884 'RFLO_ModMoveGridNconform3.F90' )
888 global%MoveGridNsharedMax = nsharedmax
889 nbour = global%moveGridNbour
890 regnc = global%moveGridRegNc
893 ALLOCATE( ncmin(nbour), stat=errfl );
IF (errfl>0) goto 88
894 ALLOCATE( nregmin(nbour), stat=errfl );
IF (errfl>0) goto 88
895 ALLOCATE( distmin(nbour), stat=errfl );
IF (errfl>0) goto 88
896 ALLOCATE(
dist(regnc,global%nRegions), stat=errfl );
IF (errfl>0) goto 88
897 ALLOCATE( cshared(2,nsharedmax,regnc), stat=errfl );
IF (errfl>0) goto 88
899 DO ireg = 1,global%nRegions
900 IF (regions(ireg)%procid==global%myProcid .AND. &
901 regions(ireg)%active==active)
THEN
903 grid => regions(ireg)%levels(ilev)%grid
905 ncorns =
grid%nCorns(ireg)
913 xyz => regions(ireg)%levels(ilev)%grid%xyz
917 edgelen = 1.e+30_rfreal
922 ijknode(1) = indijk(
i ,
j ,
k ,inoff,ijnoff)
923 ijknode(2) = indijk(
i+1,
j ,
k ,inoff,ijnoff)
924 ijknode(3) = indijk(
i ,
j+1,
k ,inoff,ijnoff)
925 ijknode(4) = indijk(
i ,
j ,
k+1,inoff,ijnoff)
926 ds =
sqrt((xyz(xcoord,ijknode(2))-xyz(xcoord,ijknode(1)))**2+ &
927 (xyz(ycoord,ijknode(2))-xyz(ycoord,ijknode(1)))**2+ &
928 (xyz(zcoord,ijknode(2))-xyz(zcoord,ijknode(1)))**2)
929 edgelen =
min(edgelen,ds)
930 ds =
sqrt((xyz(xcoord,ijknode(3))-xyz(xcoord,ijknode(1)))**2+ &
931 (xyz(ycoord,ijknode(3))-xyz(ycoord,ijknode(1)))**2+ &
932 (xyz(zcoord,ijknode(3))-xyz(zcoord,ijknode(1)))**2)
933 edgelen =
min(edgelen,ds)
934 ds =
sqrt((xyz(xcoord,ijknode(4))-xyz(xcoord,ijknode(1)))**2+ &
935 (xyz(ycoord,ijknode(4))-xyz(ycoord,ijknode(1)))**2+ &
936 (xyz(zcoord,ijknode(4))-xyz(zcoord,ijknode(1)))**2)
937 edgelen =
min(edgelen,ds)
941 tol = 1.e-5_rfreal*edgelen
946 distmin(1:nbour) = 1.e+30_rfreal
950 DO nreg = 1,global%nRegions
951 DO nc = 1,
grid%nCorns(nreg)
952 dist(nc,nreg) =
sqrt((
grid%regCornOrig(xcoord,nc,nreg)- &
953 grid%regCornOrig(xcoord,
ic,ireg))**2 + &
954 (
grid%regCornOrig(ycoord,nc,nreg)- &
955 grid%regCornOrig(ycoord,
ic,ireg))**2 + &
956 (
grid%regCornOrig(zcoord,nc,nreg)- &
957 grid%regCornOrig(zcoord,
ic,ireg))**2)
971 IF (
dist(nc,nreg)<distmin(1) .AND.
dist(nc,nreg)>edgelen)
THEN
973 distmin(
k) = distmin(
k-1)
974 ncmin(
k) = ncmin(
k-1)
975 nregmin(
k) = nregmin(
k-1)
977 distmin(1) =
dist(nc,nreg)
983 IF (
dist(nc,nreg) > (distmin(
k-1) + tol) .AND. &
984 dist(nc,nreg) < (distmin(
k) - tol))
THEN
989 distmin(
j) = distmin(
j-1)
990 ncmin(
j) = ncmin(
j-1)
991 nregmin(
j) = nregmin(
j-1)
993 distmin(
k) =
dist(nc,nreg)
1000 IF (
dist(nc,nreg)<edgelen)
THEN
1002 IF (nshared > nsharedmax)
THEN
1003 CALL
errorstop( global,err_illegal_value,__line__, &
1004 'too low nSharedMax in RFLO_MgFrameSrchNeighbors')
1006 cshared(1,nshared,
ic) = nc
1007 cshared(2,nshared,
ic) = nreg
1013 grid%nShared(
ic) = nshared
1014 nsmax =
max( nsmax,nshared )
1026 grid%nghbor(3,:,:) = 1
1030 ALLOCATE(
grid%cshared(2,nsmax,regnc),stat=errfl )
1031 global%error = errfl
1032 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
1033 grid%cshared(1:2,1:nsmax,1:ncorns) = cshared(1:2,1:nsmax,1:ncorns)
1040 DEALLOCATE( ncmin, stat=errfl );
IF (errfl>0) goto 99
1041 DEALLOCATE( nregmin, stat=errfl );
IF (errfl>0) goto 99
1042 DEALLOCATE( distmin, stat=errfl );
IF (errfl>0) goto 99
1043 DEALLOCATE(
dist, stat=errfl );
IF (errfl>0) goto 99
1044 DEALLOCATE( cshared, stat=errfl );
IF (errfl>0) goto 99
1048 DO ireg = 1,global%nRegions
1049 IF (regions(ireg)%procid==global%myProcid .AND. &
1050 regions(ireg)%active==active)
THEN
1052 grid => regions(ireg)%levels(ilev)%grid
1055 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(1)%interact).OR. &
1056 (.NOT. regions(ireg)%levels(ilev)%edgeCells(1)%interact).OR. &
1057 (.NOT. regions(ireg)%levels(ilev)%edgeCells(4)%interact).OR. &
1058 (.NOT. regions(ireg)%levels(ilev)%edgeCells(9)%interact)) &
1059 grid%nghbor(3,1:nbour,1) = 0
1062 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(2)%interact).OR. &
1063 (.NOT. regions(ireg)%levels(ilev)%edgeCells(1)%interact).OR. &
1064 (.NOT. regions(ireg)%levels(ilev)%edgeCells(2)%interact).OR. &
1065 (.NOT. regions(ireg)%levels(ilev)%edgeCells(10)%interact)) &
1066 grid%nghbor(3,1:nbour,2) = 0
1069 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(3)%interact).OR. &
1070 (.NOT. regions(ireg)%levels(ilev)%edgeCells(2)%interact).OR. &
1071 (.NOT. regions(ireg)%levels(ilev)%edgeCells(3)%interact).OR. &
1072 (.NOT. regions(ireg)%levels(ilev)%edgeCells(11)%interact)) &
1073 grid%nghbor(3,1:nbour,3) = 0
1076 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(4)%interact).OR. &
1077 (.NOT. regions(ireg)%levels(ilev)%edgeCells(3)%interact).OR. &
1078 (.NOT. regions(ireg)%levels(ilev)%edgeCells(4)%interact).OR. &
1079 (.NOT. regions(ireg)%levels(ilev)%edgeCells(12)%interact)) &
1080 grid%nghbor(3,1:nbour,4) = 0
1083 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(5)%interact).OR. &
1084 (.NOT. regions(ireg)%levels(ilev)%edgeCells(5)%interact).OR. &
1085 (.NOT. regions(ireg)%levels(ilev)%edgeCells(8)%interact).OR. &
1086 (.NOT. regions(ireg)%levels(ilev)%edgeCells(9)%interact)) &
1087 grid%nghbor(3,1:nbour,5) = 0
1090 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(6)%interact).OR. &
1091 (.NOT. regions(ireg)%levels(ilev)%edgeCells(5)%interact).OR. &
1092 (.NOT. regions(ireg)%levels(ilev)%edgeCells(6)%interact).OR. &
1093 (.NOT. regions(ireg)%levels(ilev)%edgeCells(10)%interact)) &
1094 grid%nghbor(3,1:nbour,6) = 0
1097 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(7)%interact).OR. &
1098 (.NOT. regions(ireg)%levels(ilev)%edgeCells(6)%interact).OR. &
1099 (.NOT. regions(ireg)%levels(ilev)%edgeCells(7)%interact).OR. &
1100 (.NOT. regions(ireg)%levels(ilev)%edgeCells(11)%interact)) &
1101 grid%nghbor(3,1:nbour,7) = 0
1104 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(8)%interact).OR. &
1105 (.NOT. regions(ireg)%levels(ilev)%edgeCells(7)%interact).OR. &
1106 (.NOT. regions(ireg)%levels(ilev)%edgeCells(8)%interact).OR. &
1107 (.NOT. regions(ireg)%levels(ilev)%edgeCells(12)%interact)) &
1108 grid%nghbor(3,1:nbour,8) = 0
1115 DO ireg = 1,global%nRegions
1116 IF (regions(ireg)%procid==global%myProcid .AND. &
1117 regions(ireg)%active==active)
THEN
1119 grid => regions(ireg)%levels(ilev)%grid
1123 DO ipatch=1,regions(ireg)%nPatches
1124 patch => regions(ireg)%levels(ilev)%patches(ipatch)
1125 lbound =
patch%lbound
1126 bctype =
patch%bcType
1131 IF ((bctype>=bc_inflow .AND. bctype<=bc_inflow +bc_range) .OR. &
1132 (bctype>=bc_outflow .AND. bctype<=bc_outflow +bc_range) .OR. &
1133 (bctype>=bc_slipwall .AND. bctype<=bc_slipwall +bc_range) .OR. &
1134 (bctype>=bc_noslipwall .AND. bctype<=bc_noslipwall+bc_range) .OR. &
1135 (bctype>=bc_farfield .AND. bctype<=bc_farfield +bc_range) .OR. &
1136 (bctype>=bc_injection .AND. bctype<=bc_injection +bc_range) .OR. &
1137 (bctype>=bc_tra_peri .AND. bctype<=bc_tra_peri +bc_range) .OR. &
1138 (bctype>=bc_rot_peri .AND. bctype<=bc_rot_peri +bc_range))
THEN
1139 IF (lbound==1 .OR. lbound==2)
THEN
1141 ijknode(2) = indijk(
ibeg,
jbeg,kend,inoff,ijnoff)
1142 ijknode(3) = indijk(
ibeg,
jend,kend,inoff,ijnoff)
1144 ELSEIF (lbound==3 .OR. lbound==4)
THEN
1146 ijknode(2) = indijk(
ibeg,
jbeg,kend,inoff,ijnoff)
1147 ijknode(3) = indijk(
iend,
jbeg,kend,inoff,ijnoff)
1149 ELSEIF (lbound==5 .OR. lbound==6)
THEN
1155 DO ic = 1,
grid%nCorns(ireg)
1156 IF (ijknode(1)==
grid%ijkCorn(
ic,ireg) .OR. &
1157 ijknode(2)==
grid%ijkCorn(
ic,ireg) .OR. &
1158 ijknode(3)==
grid%ijkCorn(
ic,ireg) .OR. &
1159 ijknode(4)==
grid%ijkCorn(
ic,ireg))
grid%nghbor(3,1:nbour,
ic)= 2
1169 DO ireg = 1,global%nRegions
1170 IF (regions(ireg)%procid==global%myProcid .AND. &
1171 regions(ireg)%active==active)
THEN
1173 grid => regions(ireg)%levels(ilev)%grid
1177 DO ipatch=1,regions(ireg)%nPatches
1178 patch => regions(ireg)%levels(ilev)%patches(ipatch)
1179 lbound =
patch%lbound
1180 bctype =
patch%bcType
1185 IF (
patch%bcMotion == bc_external)
THEN
1186 IF (lbound==1 .OR. lbound==2)
THEN
1188 ijknode(2) = indijk(
ibeg,
jbeg,kend,inoff,ijnoff)
1189 ijknode(3) = indijk(
ibeg,
jend,kend,inoff,ijnoff)
1191 ELSEIF (lbound==3 .OR. lbound==4)
THEN
1193 ijknode(2) = indijk(
ibeg,
jbeg,kend,inoff,ijnoff)
1194 ijknode(3) = indijk(
iend,
jbeg,kend,inoff,ijnoff)
1196 ELSEIF (lbound==5 .OR. lbound==6)
THEN
1202 DO ic = 1,
grid%nCorns(ireg)
1203 IF (ijknode(1)==
grid%ijkCorn(
ic,ireg) .OR. &
1204 ijknode(2)==
grid%ijkCorn(
ic,ireg) .OR. &
1205 ijknode(3)==
grid%ijkCorn(
ic,ireg) .OR. &
1206 ijknode(4)==
grid%ijkCorn(
ic,ireg))
grid%nghbor(3,1:nbour,
ic)= 0
1230 global%error = errfl
1231 CALL
errorstop( global,err_allocate,__line__ )
1235 global%error = errfl
1236 CALL
errorstop( global,err_deallocate,__line__ )
1264 #include "Indexing.h"
1267 TYPE(t_region
),
POINTER :: regions(:)
1270 INTEGER ::
i,
j,
k,
ic, ireg, nc, nreg, lc, lreg
1274 INTEGER :: ijknode(4), inoff, ijnoff, errfl
1275 REAL(RFREAL) :: edgelen, ds, du2, dumax
1276 REAL(RFREAL),
POINTER :: xyz(:,:)
1277 REAL(RFREAL),
ALLOCATABLE ::
dist(:,:)
1285 global => regions(1)%global
1288 'RFLO_ModMoveGridNconform3.F90' )
1292 ALLOCATE(
dist(global%moveGridRegNc,global%nRegions), stat=errfl )
1293 IF (errfl>0) goto 88
1297 DO ireg = 1,global%nRegions
1298 IF (regions(ireg)%procid==global%myProcid .AND. &
1299 regions(ireg)%active==active)
THEN
1301 grid => regions(ireg)%levels(ilev)%grid
1307 xyz => regions(ireg)%levels(ilev)%gridOld%xyz
1311 edgelen = 1.e+30_rfreal
1316 ijknode(1) = indijk(
i ,
j ,
k ,inoff,ijnoff)
1317 ijknode(2) = indijk(
i+1,
j ,
k ,inoff,ijnoff)
1318 ijknode(3) = indijk(
i ,
j+1,
k ,inoff,ijnoff)
1319 ijknode(4) = indijk(
i ,
j ,
k+1,inoff,ijnoff)
1320 ds =
sqrt((xyz(xcoord,ijknode(2))-xyz(xcoord,ijknode(1)))**2+ &
1321 (xyz(ycoord,ijknode(2))-xyz(ycoord,ijknode(1)))**2+ &
1322 (xyz(zcoord,ijknode(2))-xyz(zcoord,ijknode(1)))**2)
1323 edgelen =
min(edgelen,ds)
1324 ds =
sqrt((xyz(xcoord,ijknode(3))-xyz(xcoord,ijknode(1)))**2+ &
1325 (xyz(ycoord,ijknode(3))-xyz(ycoord,ijknode(1)))**2+ &
1326 (xyz(zcoord,ijknode(3))-xyz(zcoord,ijknode(1)))**2)
1327 edgelen =
min(edgelen,ds)
1328 ds =
sqrt((xyz(xcoord,ijknode(4))-xyz(xcoord,ijknode(1)))**2+ &
1329 (xyz(ycoord,ijknode(4))-xyz(ycoord,ijknode(1)))**2+ &
1330 (xyz(zcoord,ijknode(4))-xyz(zcoord,ijknode(1)))**2)
1331 edgelen =
min(edgelen,ds)
1336 DO ic = 1,
grid%nCorns(ireg)
1337 DO k = 1,global%moveGridNbour
1340 dumax = -1.e+20_rfreal
1342 DO lreg = 1,global%nRegions
1343 DO lc = 1,
grid%nCorns(lreg)
1344 dist(lc,lreg) =
sqrt((
grid%regCornOrig(xcoord,nc,nreg)- &
1345 grid%regCornOrig(xcoord,lc,lreg))**2 + &
1346 (
grid%regCornOrig(ycoord,nc,nreg)- &
1347 grid%regCornOrig(ycoord,lc,lreg))**2 + &
1348 (
grid%regCornOrig(zcoord,nc,nreg)- &
1349 grid%regCornOrig(zcoord,lc,lreg))**2)
1351 IF (
dist(lc,lreg) < 0.1_rfreal*edgelen)
THEN
1352 du2 =
grid%regCornOld(xcoord,lc,lreg)**2 + &
1353 grid%regCornOld(ycoord,lc,lreg)**2 + &
1354 grid%regCornOld(zcoord,lc,lreg)**2
1356 IF ( du2 > dumax )
THEN
1372 DEALLOCATE(
dist, stat=errfl );
IF (errfl>0) goto 99
1380 global%error = errfl
1381 CALL
errorstop( global,err_allocate,__line__ )
1385 global%error = errfl
1386 CALL
errorstop( global,err_deallocate,__line__ )
1413 #include "Indexing.h"
1416 TYPE(t_region
),
POINTER :: regions(:)
1419 INTEGER :: ireg, ico,
k, l
1422 INTEGER :: ilev, interior, ijkcorn, nbour, errfl
1424 INTEGER,
ALLOCATABLE :: nco(:), nreg(:)
1425 REAL(RFREAL) :: rdenom, amp(3), pow,
sum
1426 REAL(RFREAL),
ALLOCATABLE ::
dist(:), wght(:)
1433 global => regions(1)%global
1436 'RFLO_ModMoveGridNconform3.F90' )
1441 amp(1) = global%moveGridAmplifX
1442 amp(2) = global%moveGridAmplifY
1443 amp(3) = global%moveGridAmplifZ
1444 pow = global%moveGridPower
1445 nbour = global%moveGridNbour
1447 ALLOCATE( nco(nbour), stat=errfl );
IF (errfl>0) goto 88
1448 ALLOCATE( nreg(nbour), stat=errfl );
IF (errfl>0) goto 88
1450 ALLOCATE(
dist(nbour), stat=errfl );
IF (errfl>0) goto 88
1451 ALLOCATE( wght(nbour), stat=errfl );
IF (errfl>0) goto 88
1453 DO ireg = 1,global%nRegions
1454 IF (regions(ireg)%procid==global%myProcid .AND. &
1455 regions(ireg)%active==active)
THEN
1457 grid => regions(ireg)%levels(ilev)%grid
1459 DO ico = 1,
grid%nCorns(ireg)
1460 nco(1:nbour) =
grid%nghbor(1,1:nbour,ico)
1461 nreg(1:nbour) =
grid%nghbor(2,1:nbour,ico)
1462 interior =
grid%nghbor(3,1 ,ico)
1464 IF (interior==1)
THEN
1466 dist(
k) = (
grid%regCornOrig(xcoord,nco(
k),nreg(
k)) - &
1467 grid%regCornOrig(xcoord,ico,ireg))**2 + &
1468 (
grid%regCornOrig(ycoord,nco(
k),nreg(
k)) - &
1469 grid%regCornOrig(ycoord,ico,ireg))**2 + &
1470 (
grid%regCornOrig(zcoord,nco(
k),nreg(
k)) - &
1471 grid%regCornOrig(zcoord,ico,ireg))**2
1479 rdenom = 1._rfreal/
sum
1485 CALL
errorstop( global,err_illegal_value,__line__, &
1486 'invalid weights for global frame motion')
1491 sum =
sum + wght(l)*
grid%regCornOld(xcoord,nco(l),nreg(l))
1493 grid%regCorn(xcoord,ico,ireg) =
sum
1497 sum =
sum + wght(l)*
grid%regCornOld(ycoord,nco(l),nreg(l))
1499 grid%regCorn(ycoord,ico,ireg) =
sum
1503 sum =
sum + wght(l)*
grid%regCornOld(zcoord,nco(l),nreg(l))
1505 grid%regCorn(zcoord,ico,ireg) =
sum
1512 DO ireg = 1,global%nRegions
1513 IF (regions(ireg)%procid==global%myProcid .AND. &
1514 regions(ireg)%active==active)
THEN
1516 grid => regions(ireg)%levels(ilev)%grid
1518 DO ico = 1,
grid%nCorns(ireg)
1519 interior =
grid%nghbor(3, 1, ico)
1520 IF (interior==1)
THEN
1521 grid%regCornOld(xcoord,ico,ireg)=amp(1)*
grid%regCorn(xcoord,ico,ireg)
1522 grid%regCornOld(ycoord,ico,ireg)=amp(2)*
grid%regCorn(ycoord,ico,ireg)
1523 grid%regCornOld(zcoord,ico,ireg)=amp(3)*
grid%regCorn(zcoord,ico,ireg)
1525 ijkcorn =
grid%ijkCorn(ico,ireg)
1526 grid%xyz(xcoord,ijkcorn) =
grid%regCorn(xcoord,ico,ireg)
1527 grid%xyz(ycoord,ijkcorn) =
grid%regCorn(ycoord,ico,ireg)
1528 grid%xyz(zcoord,ijkcorn) =
grid%regCorn(zcoord,ico,ireg)
1537 DEALLOCATE( nco, stat=errfl );
IF (errfl>0) goto 99
1538 DEALLOCATE( nreg, stat=errfl );
IF (errfl>0) goto 99
1540 DEALLOCATE(
dist, stat=errfl );
IF (errfl>0) goto 99
1541 DEALLOCATE( wght, stat=errfl );
IF (errfl>0) goto 99
1549 global%error = errfl
1550 CALL
errorstop( global,err_allocate,__line__ )
1554 global%error = errfl
1555 CALL
errorstop( global,err_deallocate,__line__ )
1585 #include "Indexing.h"
1588 TYPE(t_region
),
POINTER :: regions(:)
1591 INTEGER :: ireg, ico, lb, mc,
k
1594 INTEGER :: ilev, interior, ijkcorn, ind(6,4,4), kf, nc, nreg
1595 INTEGER :: lbb, lbe, orthdir
1596 REAL(RFREAL) :: rlen, eps, orthwg(xcoord:zcoord)
1597 REAL(RFREAL) :: dif(xcoord:zcoord), shift(xcoord:zcoord)
1598 REAL(RFREAL) :: s1(xcoord:zcoord), s2(xcoord:zcoord), s3(xcoord:zcoord)
1599 REAL(RFREAL),
POINTER :: cbuff(:,:,:), corth(:,:,:)
1607 global => regions(1)%global
1610 'RFLO_ModMoveGridNconform3.F90' )
1618 ind(1, 1,:) = (/5, 1, 4, 2/)
1619 ind(1, 2,:) = (/6, 2, 1, 3/)
1620 ind(1, 3,:) = (/7, 3, 2, 4/)
1621 ind(1, 4,:) = (/8, 4, 3, 1/)
1622 ind(2, 1,:) = (/1, 5, 6, 8/)
1623 ind(2, 2,:) = (/2, 6, 7, 5/)
1624 ind(2, 3,:) = (/3, 7, 8, 6/)
1625 ind(2, 4,:) = (/4, 8, 5, 7/)
1626 ind(3, 1,:) = (/4, 1, 2, 5/)
1627 ind(3, 2,:) = (/8, 5, 1, 6/)
1628 ind(3, 3,:) = (/7, 6, 5, 2/)
1629 ind(3, 4,:) = (/3, 2, 6, 1/)
1630 ind(4, 1,:) = (/1, 4, 8, 3/)
1631 ind(4, 2,:) = (/5, 8, 7, 4/)
1632 ind(4, 3,:) = (/6, 7, 3, 8/)
1633 ind(4, 4,:) = (/2, 3, 4, 7/)
1634 ind(5, 1,:) = (/2, 1, 5, 4/)
1635 ind(5, 2,:) = (/3, 4, 1, 8/)
1636 ind(5, 3,:) = (/7, 8, 4, 5/)
1637 ind(5, 4,:) = (/6, 5, 8, 1/)
1638 ind(6, 1,:) = (/1, 2, 3, 6/)
1639 ind(6, 2,:) = (/4, 3, 7, 2/)
1640 ind(6, 3,:) = (/8, 7, 6, 3/)
1641 ind(6, 4,:) = (/5, 6, 2, 7/)
1645 orthdir = global%moveGridOrthDir
1646 orthwg(xcoord) = global%moveGridOrthWghtX *(1._rfreal + global%skewness)
1647 orthwg(ycoord) = global%moveGridOrthWghtY *(1._rfreal + global%skewness)
1648 orthwg(zcoord) = global%moveGridOrthWghtZ *(1._rfreal + global%skewness)
1656 DO ireg = 1,global%nRegions
1657 IF (regions(ireg)%procid==global%myProcid .AND. &
1658 regions(ireg)%active==active)
THEN
1660 grid => regions(ireg)%levels(ilev)%grid
1661 cbuff =>
grid%regCornBuff
1662 corth =>
grid%regCornOrth
1668 IF (
grid%boundMoved(lb)) solidreg = .true.
1671 IF (orthdir==off)
THEN
1674 ELSEIF (orthdir==icoord)
THEN
1677 ELSEIF (orthdir==jcoord)
THEN
1680 ELSEIF (orthdir==kcoord)
THEN
1689 IF (
grid%boundMoved(lb))
THEN
1693 rlen =
sqrt( (cbuff(xcoord,ind(lb,mc,1),ireg)- &
1694 cbuff(xcoord,ind(lb,mc,2),ireg))**2 + &
1695 (cbuff(ycoord,ind(lb,mc,1),ireg)- &
1696 cbuff(ycoord,ind(lb,mc,2),ireg))**2 + &
1697 (cbuff(zcoord,ind(lb,mc,1),ireg)- &
1698 cbuff(zcoord,ind(lb,mc,2),ireg))**2 )
1699 s1(:) = cbuff(:,ind(lb,mc,3),ireg)-cbuff(:,ind(lb,mc,2),ireg)
1700 s2(:) = cbuff(:,ind(lb,mc,4),ireg)-cbuff(:,ind(lb,mc,2),ireg)
1702 corth(:,ind(lb,mc,1),ireg) = cbuff(:,ind(lb,mc,2),ireg)+ &
1715 DO ireg = 1,global%nRegions
1716 IF (regions(ireg)%procid==global%myProcid .AND. &
1717 regions(ireg)%active==active)
THEN
1719 grid => regions(ireg)%levels(ilev)%grid
1720 cbuff =>
grid%regCornBuff
1721 corth =>
grid%regCornOrth
1723 DO ico = 1,
grid%nCorns(ireg)
1724 interior =
grid%nghbor(3, 1, ico)
1726 IF (interior==1)
THEN
1727 ijkcorn =
grid%ijkCorn(ico,ireg)
1730 eps = 100._rfreal*epsilon( 1._rfreal )
1732 DO k = 1,
grid%nshared(ico)
1733 nc =
grid%cshared(1,
k,ico)
1734 nreg =
grid%cshared(2,
k,ico)
1735 dif(:) = corth(:,nc,nreg) - cbuff(:,nc,nreg)
1736 IF ((abs(dif(xcoord)) > eps) .OR. &
1737 (abs(dif(ycoord)) > eps) .OR. &
1738 (abs(dif(zcoord)) > eps)) kf = kf+1
1739 shift(:) = shift(:) + dif(:)
1741 IF ((abs(shift(xcoord)) > eps) .OR. &
1742 (abs(shift(ycoord)) > eps) .OR. &
1743 (abs(shift(zcoord)) > eps))
THEN
1746 grid%regCorn(:,ico,ireg) = (1._rfreal-orthwg(:))* &
1747 grid%regCorn(:,ico,ireg) + &
1748 orthwg(:)*shift(:)/kf
1751 ijkcorn =
grid%ijkCorn(ico,ireg)
1752 grid%xyz(xcoord,ijkcorn) =
grid%regCorn(xcoord,ico,ireg)
1753 grid%xyz(ycoord,ijkcorn) =
grid%regCorn(ycoord,ico,ireg)
1754 grid%xyz(zcoord,ijkcorn) =
grid%regCorn(zcoord,ico,ireg)
1794 LOGICAL :: somemoved
1797 TYPE(t_region
),
POINTER :: regions(:)
1800 INTEGER :: ireg, iter, ipatch,
i,
j,
k, ijkn
1803 INTEGER :: ilev, bctype
1811 global => regions(1)%global
1814 'RFLO_ModMoveGridNconform3.F90' )
1821 DO ireg=1,global%nRegions
1822 IF (regions(ireg)%procid==global%myProcid .AND. &
1823 regions(ireg)%active==active .AND. &
1824 regions(ireg)%mixtInput%moveGrid)
THEN
1826 grid => regions(ireg)%levels(ilev)%grid
1827 gridold => regions(ireg)%levels(ilev)%gridOld
1832 gridold%indSvel =
grid%indSvel
1833 gridold%ipc =
grid%ipc
1834 gridold%jpc =
grid%jpc
1835 gridold%kpc =
grid%kpc
1836 gridold%xyz(:,:) =
grid%xyz(:,:)
1837 gridold%si(:,:) =
grid%si(:,:)
1838 gridold%sj(:,:) =
grid%sj(:,:)
1839 gridold%sk(:,:) =
grid%sk(:,:)
1840 gridold%vol(:) =
grid%vol(:)
1870 DO ireg=1,global%nRegions
1871 IF (regions(ireg)%procid==global%myProcid .AND. &
1872 regions(ireg)%active==active .AND. &
1873 regions(ireg)%mixtInput%moveGrid)
THEN
1875 grid => regions(ireg)%levels(ilev)%grid
1876 gridold => regions(ireg)%levels(ilev)%gridOld
1884 gridold%xyzOld,
grid%xyz )
1901 gridold%xyzOld,
grid%xyz )
1934 #include "Indexing.h"
1937 TYPE(t_region
) :: region
1940 INTEGER :: ireg, ipatch,
i,
j,
k
1943 INTEGER :: ilev, ijkn, lbound
1951 global => region%global
1954 'RFLO_ModMoveGridNconform3.F90' )
1961 grid => region%levels(ilev)%grid
1965 DO ipatch=1,region%nPatches
1966 patch => region%levels(ilev)%patches(ipatch)
1967 lbound =
patch%lbound
1969 IF (
patch%bcMotion == bc_external .AND. &
1970 (
grid%allExternal(lbound).EQV..false.))
THEN
1978 ijkn = indijk(
i,
j,
k,inoff,ijnoff)
1979 grid%xyz(xcoord,ijkn) =
grid%xyzOld(xcoord,ijkn)
1980 grid%xyz(ycoord,ijkn) =
grid%xyzOld(ycoord,ijkn)
1981 grid%xyz(zcoord,ijkn) =
grid%xyzOld(zcoord,ijkn)
2019 arclen12,arclen34,arclen56,xyzold,dnode )
2025 #include "Indexing.h"
2028 LOGICAL :: boundmoved(6), allexternal(6), edgemoved(12)
2031 REAL(RFREAL),
POINTER :: arclen12(:,:), arclen34(:,:), arclen56(:,:)
2032 REAL(RFREAL),
POINTER :: dnode(:,:), xyzold(:,:)
2034 TYPE(t_region
) :: region
2037 INTEGER :: iedge, ind
2041 INTEGER :: indbeg, indend, ijkn, ijkn1, ijknbeg, ijknend, inoff, ijnoff
2042 INTEGER :: switch(12,11), intertype, iedgeglo
2044 REAL(RFREAL) :: arclen, ds,
s, dn(3), dnbeg(3), dnend(3)
2050 'RFLO_ModMoveGridNconform3.F90' )
2072 switch( 1,:) = (/5, 6, 1, 3, 56,
kpnbeg, kpnend,
ipnbeg,
jpnbeg, 1, 2/)
2073 switch( 2,:) = (/3, 4, 1, 6, 34,
jpnbeg,
jpnend, kpnend,
ipnbeg, 2, 3/)
2074 switch( 3,:) = (/5, 6, 1, 4, 56,
kpnbeg, kpnend,
ipnbeg,
jpnend, 4, 3/)
2075 switch( 4,:) = (/3, 4, 1, 5, 34,
jpnbeg,
jpnend,
kpnbeg,
ipnbeg, 1, 4/)
2076 switch( 5,:) = (/5, 6, 2, 3, 56,
kpnbeg, kpnend,
ipnend,
jpnbeg, 5, 6/)
2077 switch( 6,:) = (/3, 4, 2, 6, 34,
jpnbeg,
jpnend, kpnend,
ipnend, 6, 7/)
2078 switch( 7,:) = (/5, 6, 2, 4, 56,
kpnbeg, kpnend,
ipnend,
jpnend, 8, 7/)
2079 switch( 8,:) = (/3, 4, 2, 5, 34,
jpnbeg,
jpnend,
kpnbeg,
ipnend, 5, 8/)
2080 switch( 9,:) = (/1, 2, 3, 5, 12,
ipnbeg,
ipnend,
jpnbeg,
kpnbeg, 1, 5/)
2081 switch(10,:) = (/1, 2, 3, 6, 12,
ipnbeg,
ipnend,
jpnbeg, kpnend, 2, 6/)
2082 switch(11,:) = (/1, 2, 4, 5, 12,
ipnbeg,
ipnend,
jpnend,
kpnbeg, 4, 8/)
2083 switch(12,:) = (/1, 2, 4, 6, 12,
ipnbeg,
ipnend,
jpnend, kpnend, 3, 7/)
2087 edgemoved(:) = .false.
2090 IF (boundmoved(1) .AND. allexternal(1))
THEN
2091 edgemoved( 1) = .true.; edgemoved( 2) = .true.
2092 edgemoved( 3) = .true.; edgemoved( 4) = .true.
2094 IF (boundmoved(2) .AND. allexternal(2))
THEN
2095 edgemoved( 5) = .true.; edgemoved( 6) = .true.
2096 edgemoved( 7) = .true.; edgemoved( 8) = .true.
2098 IF (boundmoved(3) .AND. allexternal(3))
THEN
2099 edgemoved( 1) = .true.; edgemoved( 5) = .true.
2100 edgemoved( 9) = .true.; edgemoved(10) = .true.
2102 IF (boundmoved(4) .AND. allexternal(4))
THEN
2103 edgemoved( 3) = .true.; edgemoved( 7) = .true.
2104 edgemoved(11) = .true.; edgemoved(12) = .true.
2106 IF (boundmoved(5) .AND. allexternal(5))
THEN
2107 edgemoved( 4) = .true.; edgemoved( 8) = .true.
2108 edgemoved( 9) = .true.; edgemoved(11) = .true.
2110 IF (boundmoved(6) .AND. allexternal(6))
THEN
2111 edgemoved( 2) = .true.; edgemoved( 6) = .true.
2112 edgemoved(10) = .true.; edgemoved(12) = .true.
2119 IF (.NOT.edgemoved(iedge))
THEN
2121 edgemoved(iedge) = .true.
2124 indbeg = switch(iedge,6)
2125 indend = switch(iedge,7)
2126 l1c = switch(iedge,8)
2127 l2c = switch(iedge,9)
2130 IF (iedge==11) iedgeglo=12
2131 IF (iedge==12) iedgeglo=11
2132 interact = region%levels(ilev)%edgeCells(iedgeglo)%interact
2133 intertype = region%levels(ilev)%edgeCells(iedgeglo)%interType
2135 IF (((region%levels(ilev)%grid%nghbor(3,1,switch(iedge,10))==1 .OR. &
2136 region%levels(ilev)%grid%nghbor(3,1,switch(iedge,11))==1) .AND. &
2137 ((interact .EQV. .true.) .AND. (intertype==edge_interact_full))) &
2139 region%levels(ilev)%grid%nghbor(3,1,switch(iedge,10))==2 .OR. &
2140 region%levels(ilev)%grid%nghbor(3,1,switch(iedge,11))==2)
THEN
2147 DO ind=indbeg+1,indend-1
2148 IF (switch(iedge,5) == 12)
THEN
2149 ijkn = indijk(ind ,l1c,l2c,inoff,ijnoff)
2150 ijkn1 = indijk(ind-1 ,l1c,l2c,inoff,ijnoff)
2151 ijknbeg = indijk(indbeg,l1c,l2c,inoff,ijnoff)
2152 ijknend = indijk(indend,l1c,l2c,inoff,ijnoff)
2153 arclen = arclen12(l1c,l2c)
2154 dnbeg(:) = dnode(:,ijknbeg)
2155 dnend(:) = dnode(:,ijknend)
2156 ELSE IF (switch(iedge,5) == 34)
THEN
2157 ijkn = indijk(l2c,ind ,l1c,inoff,ijnoff)
2158 ijkn1 = indijk(l2c,ind-1 ,l1c,inoff,ijnoff)
2159 ijknbeg = indijk(l2c,indbeg,l1c,inoff,ijnoff)
2160 ijknend = indijk(l2c,indend,l1c,inoff,ijnoff)
2161 arclen = arclen34(l1c,l2c)
2162 dnbeg(:) = dnode(:,ijknbeg)
2163 dnend(:) = dnode(:,ijknend)
2164 ELSE IF (switch(iedge,5) == 56)
THEN
2165 ijkn = indijk(l1c,l2c,ind ,inoff,ijnoff)
2166 ijkn1 = indijk(l1c,l2c,ind-1 ,inoff,ijnoff)
2167 ijknbeg = indijk(l1c,l2c,indbeg,inoff,ijnoff)
2168 ijknend = indijk(l1c,l2c,indend,inoff,ijnoff)
2169 arclen = arclen56(l1c,l2c)
2170 dnbeg(:) = dnode(:,ijknbeg)
2171 dnend(:) = dnode(:,ijknend)
2173 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2174 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2175 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2179 dnode(:,ijkn) = dn(:)
2216 #include "Indexing.h"
2219 TYPE(t_region
) :: region
2220 LOGICAL :: edgemoved(12)
2221 REAL(RFREAL),
POINTER :: dnode(:,:), xyzold(:,:)
2224 INTEGER :: ipedge, ind, ipatch,
ic
2227 INTEGER :: ilev,
ibeg,
iend,
jbeg,
jend,
kbeg, kend, ib, ie, jb, je , kb, ke
2228 INTEGER :: indbeg, indend, ijkn, ijkn1, ijknbeg, ijknend, inoff, ijnoff
2229 INTEGER :: lbound, intb, inte, ireg, iedge, intertype, ijktest, iset
2231 REAL(RFREAL) :: arclen, ds,
s, dn(3), dnbeg(3), dnend(3), eps
2238 'RFLO_ModMoveGridNconform3.F90' )
2242 eps = epsilon( 1._rfreal )
2246 ireg = region%iRegionGlobal
2250 grid => region%levels(ilev)%grid
2254 edgemoved(:) = .true.
2258 DO ipatch=1,region%nPatches
2259 patch => region%levels(ilev)%patches(ipatch)
2260 lbound =
patch%lbound
2265 IF (
patch%bcMotion == bc_external) goto 777
2268 IF (lbound==1 .OR. lbound==2)
THEN
2278 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2279 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2280 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2288 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2289 DO ic = 1,
grid%nCorns(ireg)
2290 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2291 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2293 patch%position(1) = intb
2294 patch%position(2) = inte
2297 DO ind=indbeg+1,indend-1
2298 ijkn = indijk(
ibeg,
jbeg,ind ,inoff,ijnoff)
2299 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2300 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2301 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2307 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2308 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2311 (intb==2 .OR. inte==2) &
2313 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2314 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2315 100._rfreal*eps)) .AND. (iset==0))
THEN
2317 dnbeg(:) = dnode(:,ijknbeg)
2318 dnend(:) = dnode(:,ijknend)
2321 DO ind=indbeg+1,indend
2322 ijkn = indijk(
ibeg,
jbeg,ind ,inoff,ijnoff)
2323 ijkn1 = indijk(
ibeg,
jbeg,ind-1,inoff,ijnoff)
2325 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2326 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2327 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2330 DO ind=indbeg+1,indend-1
2331 ijkn = indijk(
ibeg,
jbeg,ind ,inoff,ijnoff)
2332 ijkn1 = indijk(
ibeg,
jbeg,ind-1,inoff,ijnoff)
2333 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2334 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2335 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2338 dnode(:,ijkn) = dn(:)
2341 ELSEIF (ipedge==2)
THEN
2350 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2351 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2352 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2360 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2361 DO ic = 1,
grid%nCorns(ireg)
2362 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2363 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2368 patch%position(2) = intb
2369 patch%position(3) = inte
2372 DO ind=indbeg+1,indend-1
2373 ijkn = indijk(
ibeg,ind ,kend,inoff,ijnoff)
2374 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2375 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2376 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2382 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2383 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2386 (intb==2 .OR. inte==2) &
2388 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2389 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2390 100._rfreal*eps)) .AND. (iset==0))
THEN
2392 dnbeg(:) = dnode(:,ijknbeg)
2393 dnend(:) = dnode(:,ijknend)
2396 DO ind=indbeg+1,indend
2397 ijkn = indijk(
ibeg,ind ,kend,inoff,ijnoff)
2398 ijkn1 = indijk(
ibeg,ind-1,kend,inoff,ijnoff)
2400 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2401 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2402 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2405 DO ind=indbeg+1,indend-1
2406 ijkn = indijk(
ibeg,ind ,kend,inoff,ijnoff)
2407 ijkn1 = indijk(
ibeg,ind-1,kend,inoff,ijnoff)
2408 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2409 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2410 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2413 dnode(:,ijkn) = dn(:)
2416 ELSEIF (ipedge==3)
THEN
2425 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2426 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2427 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2435 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2436 DO ic = 1,
grid%nCorns(ireg)
2437 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2438 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2440 patch%position(3) = inte
2441 patch%position(4) = intb
2444 DO ind=indbeg+1,indend-1
2445 ijkn = indijk(
ibeg,
jend,ind ,inoff,ijnoff)
2446 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2447 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2448 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2454 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2455 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2458 (intb==2 .OR. inte==2) &
2460 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2461 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2462 100._rfreal*eps)) .AND. (iset==0))
THEN
2464 dnbeg(:) = dnode(:,ijknbeg)
2465 dnend(:) = dnode(:,ijknend)
2468 DO ind=indbeg+1,indend
2469 ijkn = indijk(
ibeg,
jend,ind ,inoff,ijnoff)
2470 ijkn1 = indijk(
ibeg,
jend,ind-1,inoff,ijnoff)
2472 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2473 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2474 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2477 DO ind=indbeg+1,indend-1
2478 ijkn = indijk(
ibeg,
jend,ind ,inoff,ijnoff)
2479 ijkn1 = indijk(
ibeg,
jend,ind-1,inoff,ijnoff)
2480 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2481 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2482 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2485 dnode(:,ijkn) = dn(:)
2488 ELSEIF (ipedge==4)
THEN
2497 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2498 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2499 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2507 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2508 DO ic = 1,
grid%nCorns(ireg)
2509 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2510 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2512 patch%position(4) = inte
2513 patch%position(1) = intb
2516 DO ind=indbeg+1,indend-1
2517 ijkn = indijk(
ibeg,ind ,
kbeg,inoff,ijnoff)
2518 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2519 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2520 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2526 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2527 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2530 (intb==2 .OR. inte==2) &
2532 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2533 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2534 100._rfreal*eps)) .AND. (iset==0))
THEN
2536 dnbeg(:) = dnode(:,ijknbeg)
2537 dnend(:) = dnode(:,ijknend)
2540 DO ind=indbeg+1,indend
2541 ijkn = indijk(
ibeg,ind ,
kbeg,inoff,ijnoff)
2542 ijkn1 = indijk(
ibeg,ind-1,
kbeg,inoff,ijnoff)
2544 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2545 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2546 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2549 DO ind=indbeg+1,indend-1
2550 ijkn = indijk(
ibeg,ind ,
kbeg,inoff,ijnoff)
2551 ijkn1 = indijk(
ibeg,ind-1,
kbeg,inoff,ijnoff)
2552 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2553 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2554 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2557 dnode(:,ijkn) = dn(:)
2565 IF (lbound==3 .OR. lbound==4)
THEN
2575 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2576 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2577 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2585 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2586 DO ic = 1,
grid%nCorns(ireg)
2587 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2588 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2590 patch%position(1) = intb
2591 patch%position(2) = inte
2594 DO ind=indbeg+1,indend-1
2595 ijkn = indijk(ind ,
jbeg,
kbeg,inoff,ijnoff)
2596 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2597 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2598 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2604 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2605 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2608 (intb==2 .OR. inte==2) &
2610 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2611 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2612 100._rfreal*eps)) .AND. (iset==0))
THEN
2614 dnbeg(:) = dnode(:,ijknbeg)
2615 dnend(:) = dnode(:,ijknend)
2618 DO ind=indbeg+1,indend
2619 ijkn = indijk(ind ,
jbeg,
kbeg,inoff,ijnoff)
2620 ijkn1 = indijk(ind-1,
jbeg,
kbeg,inoff,ijnoff)
2622 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2623 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2624 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2627 DO ind=indbeg+1,indend-1
2628 ijkn = indijk(ind ,
jbeg,
kbeg,inoff,ijnoff)
2629 ijkn1 = indijk(ind-1,
jbeg,
kbeg,inoff,ijnoff)
2630 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2631 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2632 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2635 dnode(:,ijkn) = dn(:)
2638 ELSEIF (ipedge==2)
THEN
2647 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2648 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2649 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2657 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2658 DO ic = 1,
grid%nCorns(ireg)
2659 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2660 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2662 patch%position(2) = intb
2663 patch%position(3) = inte
2666 DO ind=indbeg+1,indend-1
2667 ijkn = indijk(
iend,
jbeg,ind ,inoff,ijnoff)
2668 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2669 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2670 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2676 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2677 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2680 (intb==2 .OR. inte==2) &
2682 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2683 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2684 100._rfreal*eps)) .AND. (iset==0))
THEN
2686 dnbeg(:) = dnode(:,ijknbeg)
2687 dnend(:) = dnode(:,ijknend)
2690 DO ind=indbeg+1,indend
2691 ijkn = indijk(
iend,
jbeg,ind ,inoff,ijnoff)
2692 ijkn1 = indijk(
iend,
jbeg,ind-1,inoff,ijnoff)
2694 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2695 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2696 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2699 DO ind=indbeg+1,indend-1
2700 ijkn = indijk(
iend,
jbeg,ind ,inoff,ijnoff)
2701 ijkn1 = indijk(
iend,
jbeg,ind-1,inoff,ijnoff)
2702 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2703 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2704 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2707 dnode(:,ijkn) = dn(:)
2710 ELSEIF (ipedge==3)
THEN
2719 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2720 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2721 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2729 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2730 DO ic = 1,
grid%nCorns(ireg)
2731 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2732 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2734 patch%position(3) = inte
2735 patch%position(4) = intb
2738 DO ind=indbeg+1,indend-1
2739 ijkn = indijk(ind ,
jbeg,kend,inoff,ijnoff)
2740 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2741 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2742 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2748 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2749 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2752 (intb==2 .OR. inte==2) &
2754 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2755 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2756 100._rfreal*eps)) .AND. (iset==0))
THEN
2758 dnbeg(:) = dnode(:,ijknbeg)
2759 dnend(:) = dnode(:,ijknend)
2762 DO ind=indbeg+1,indend
2763 ijkn = indijk(ind ,
jbeg,kend,inoff,ijnoff)
2764 ijkn1 = indijk(ind-1,
jbeg,kend,inoff,ijnoff)
2766 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2767 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2768 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2771 DO ind=indbeg+1,indend-1
2772 ijkn = indijk(ind ,
jbeg,kend,inoff,ijnoff)
2773 ijkn1 = indijk(ind-1,
jbeg,kend,inoff,ijnoff)
2774 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2775 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2776 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2779 dnode(:,ijkn) = dn(:)
2782 ELSEIF (ipedge==4)
THEN
2791 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2792 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2793 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2801 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2802 DO ic = 1,
grid%nCorns(ireg)
2803 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2804 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2806 patch%position(4) = inte
2807 patch%position(1) = intb
2810 DO ind=indbeg+1,indend-1
2811 ijkn = indijk(
ibeg,
jbeg,ind ,inoff,ijnoff)
2812 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2813 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2814 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2820 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2821 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2824 (intb==2 .OR. inte==2) &
2826 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2827 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2828 100._rfreal*eps)) .AND. (iset==0))
THEN
2830 dnbeg(:) = dnode(:,ijknbeg)
2831 dnend(:) = dnode(:,ijknend)
2834 DO ind=indbeg+1,indend
2835 ijkn = indijk(
ibeg,
jbeg,ind ,inoff,ijnoff)
2836 ijkn1 = indijk(
ibeg,
jbeg,ind-1,inoff,ijnoff)
2838 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2839 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2840 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2843 DO ind=indbeg+1,indend-1
2844 ijkn = indijk(
ibeg,
jbeg,ind ,inoff,ijnoff)
2845 ijkn1 = indijk(
ibeg,
jbeg,ind-1,inoff,ijnoff)
2846 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2847 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2848 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2851 dnode(:,ijkn) = dn(:)
2857 IF (lbound==5 .OR. lbound==6)
THEN
2867 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2868 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2869 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2877 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2878 DO ic = 1,
grid%nCorns(ireg)
2879 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2880 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2882 patch%position(1) = intb
2883 patch%position(2) = inte
2886 DO ind=indbeg+1,indend-1
2887 ijkn = indijk(
ibeg,ind ,
kbeg,inoff,ijnoff)
2888 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2889 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2890 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2896 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2897 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2900 (intb==2 .OR. inte==2) &
2902 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2903 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2904 100._rfreal*eps)) .AND. (iset==0))
THEN
2906 dnbeg(:) = dnode(:,ijknbeg)
2907 dnend(:) = dnode(:,ijknend)
2910 DO ind=indbeg+1,indend
2911 ijkn = indijk(
ibeg,ind ,
kbeg,inoff,ijnoff)
2912 ijkn1 = indijk(
ibeg,ind-1,
kbeg,inoff,ijnoff)
2914 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2915 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2916 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2919 DO ind=indbeg+1,indend-1
2920 ijkn = indijk(
ibeg,ind ,
kbeg,inoff,ijnoff)
2921 ijkn1 = indijk(
ibeg,ind-1,
kbeg,inoff,ijnoff)
2922 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2923 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2924 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2927 dnode(:,ijkn) = dn(:)
2930 ELSEIF (ipedge==2)
THEN
2939 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2940 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2941 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2949 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2950 DO ic = 1,
grid%nCorns(ireg)
2951 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2952 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2954 patch%position(2) = intb
2955 patch%position(3) = inte
2958 DO ind=indbeg+1,indend-1
2959 ijkn = indijk(ind ,
jend,
kbeg,inoff,ijnoff)
2960 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2961 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2962 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2968 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2969 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2972 (intb==2 .OR. inte==2) &
2974 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2975 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2976 100._rfreal*eps)) .AND. (iset==0))
THEN
2978 dnbeg(:) = dnode(:,ijknbeg)
2979 dnend(:) = dnode(:,ijknend)
2982 DO ind=indbeg+1,indend
2983 ijkn = indijk(ind ,
jend,
kbeg,inoff,ijnoff)
2984 ijkn1 = indijk(ind-1,
jend,
kbeg,inoff,ijnoff)
2986 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2987 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2988 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2991 DO ind=indbeg+1,indend-1
2992 ijkn = indijk(ind ,
jend,
kbeg,inoff,ijnoff)
2993 ijkn1 = indijk(ind-1,
jend,
kbeg,inoff,ijnoff)
2994 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2995 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2996 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2999 dnode(:,ijkn) = dn(:)
3002 ELSEIF (ipedge==3)
THEN
3011 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
3012 ijknend = indijk(ie,je,ke,inoff,ijnoff)
3013 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
3021 intertype = region%levels(ilev)%edgeCells(iedge)%interType
3022 DO ic = 1,
grid%nCorns(ireg)
3023 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
3024 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
3026 patch%position(3) = inte
3027 patch%position(4) = intb
3030 DO ind=indbeg+1,indend-1
3031 ijkn = indijk(
iend,ind ,
kbeg,inoff,ijnoff)
3032 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
3033 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
3034 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
3040 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
3041 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
3044 (intb==2 .OR. inte==2) &
3046 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
3047 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
3048 100._rfreal*eps)) .AND. (iset==0))
THEN
3050 dnbeg(:) = dnode(:,ijknbeg)
3051 dnend(:) = dnode(:,ijknend)
3054 DO ind=indbeg+1,indend
3055 ijkn = indijk(
iend,ind ,
kbeg,inoff,ijnoff)
3056 ijkn1 = indijk(
iend,ind-1,
kbeg,inoff,ijnoff)
3058 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
3059 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
3060 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
3063 DO ind=indbeg+1,indend-1
3064 ijkn = indijk(
iend,ind ,
kbeg,inoff,ijnoff)
3065 ijkn1 = indijk(
iend,ind-1,
kbeg,inoff,ijnoff)
3066 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
3067 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
3068 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
3071 dnode(:,ijkn) = dn(:)
3074 ELSEIF (ipedge==4)
THEN
3083 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
3084 ijknend = indijk(ie,je,ke,inoff,ijnoff)
3085 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
3093 intertype = region%levels(ilev)%edgeCells(iedge)%interType
3094 DO ic = 1,
grid%nCorns(ireg)
3095 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
3096 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
3098 patch%position(4) = inte
3099 patch%position(1) = intb
3102 DO ind=indbeg+1,indend-1
3103 ijkn = indijk(ind ,
jbeg,
kbeg,inoff,ijnoff)
3104 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
3105 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
3106 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
3112 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
3113 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
3116 (intb==2 .OR. inte==2) &
3118 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
3119 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
3120 100._rfreal*eps)) .AND. (iset==0))
THEN
3122 dnbeg(:) = dnode(:,ijknbeg)
3123 dnend(:) = dnode(:,ijknend)
3126 DO ind=indbeg+1,indend
3127 ijkn = indijk(ind ,
jbeg,
kbeg,inoff,ijnoff)
3128 ijkn1 = indijk(ind-1,
jbeg,
kbeg,inoff,ijnoff)
3130 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
3131 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
3132 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
3135 DO ind=indbeg+1,indend-1
3136 ijkn = indijk(ind ,
jbeg,
kbeg,inoff,ijnoff)
3137 ijkn1 = indijk(ind-1,
jbeg,
kbeg,inoff,ijnoff)
3138 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
3139 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
3140 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
3143 dnode(:,ijkn) = dn(:)
3185 TYPE(t_region
),
POINTER :: regions(:)
3189 INTEGER :: ireg, ipatch, ipass
3192 INTEGER :: bctype, iregsrc, ipatchsrc, ltype, npass
3194 TYPE(t_grid),
POINTER ::
grid, gridold, gridsrc
3200 global => regions(1)%global
3203 'RFLO_ModMoveGridNconform3.F90' )
3208 npass = global%moveGridNsmatch
3209 npass =
max( npass,4 )
3214 DO ireg=1,global%nRegions
3215 IF (regions(ireg)%procid==global%myProcid .AND. &
3216 regions(ireg)%active==active .AND. &
3217 regions(ireg)%mixtInput%moveGrid)
THEN
3219 grid => regions(ireg)%levels(1)%grid
3220 gridold => regions(ireg)%levels(1)%gridOld
3222 DO ipatch=1,regions(ireg)%nPatches
3223 patch => regions(ireg)%levels(1)%patches(ipatch)
3224 bctype =
patch%bcType
3225 IF ((bctype>=bc_regionconf .AND. bctype<=bc_regionconf+bc_range) .OR. &
3226 (bctype>=bc_tra_peri .AND. bctype<=bc_tra_peri +bc_range) .OR. &
3227 (bctype>=bc_rot_peri .AND. bctype<=bc_rot_peri +bc_range))
THEN
3228 iregsrc =
patch%srcRegion
3229 ipatchsrc =
patch%srcPatch
3230 patchsrc => regions(iregsrc)%levels(1)%patches(ipatchsrc)
3231 gridsrc => regions(iregsrc)%levels(1)%grid
3233 IF (regions(iregsrc)%procid == global%myProcid)
THEN
3235 patch,patchsrc,.false., &
3236 grid%xyz,gridsrc%xyz )
3237 IF (ipass < npass-1 .AND. ltype==1)
THEN
3239 gridold%xyzOld,
grid%xyz )
3243 ELSEIF (ipass < npass-1 .AND. ltype==2)
THEN
3247 grid%arcLen56,gridold%xyzOld,
grid%xyz )
3252 gridold%xyzOld,
grid%xyz )
3266 DO ireg=1,global%nRegions
3267 IF (regions(ireg)%procid==global%myProcid .AND. &
3268 regions(ireg)%active==active .AND. &
3269 regions(ireg)%mixtInput%moveGrid)
THEN
3271 grid => regions(ireg)%levels(1)%grid
3272 gridold => regions(ireg)%levels(1)%gridOld
3274 DO ipatch=1,regions(ireg)%nPatches
3275 patch => regions(ireg)%levels(1)%patches(ipatch)
3276 bctype =
patch%bcType
3277 IF ((bctype>=bc_regionconf .AND. bctype<=bc_regionconf+bc_range) .OR. &
3278 (bctype>=bc_tra_peri .AND. bctype<=bc_tra_peri +bc_range) .OR. &
3279 (bctype>=bc_rot_peri .AND. bctype<=bc_rot_peri +bc_range))
THEN
3280 iregsrc =
patch%srcRegion
3281 ipatchsrc =
patch%srcPatch
3282 patchsrc => regions(iregsrc)%levels(1)%patches(ipatchsrc)
3283 gridsrc => regions(iregsrc)%levels(1)%grid
3285 IF (regions(iregsrc)%procid /= global%myProcid)
THEN
3289 IF (ipass < npass-1 .AND. ltype==1)
THEN
3291 gridold%xyzOld,
grid%xyz )
3295 ELSEIF (ipass < npass-1 .AND. ltype==2)
THEN
3299 grid%arcLen56,gridold%xyzOld,
grid%xyz )
3304 gridold%xyzOld,
grid%xyz )
3315 DO ireg=1,global%nRegions
3316 IF (regions(ireg)%procid==global%myProcid .AND. &
3317 regions(ireg)%active==active .AND. &
3318 regions(ireg)%mixtInput%moveGrid)
THEN
3353 arclen12,arclen34,arclen56, &
3360 #include "Indexing.h"
3363 LOGICAL :: boundmoved(6), edgemoved(12)
3365 REAL(RFREAL),
POINTER :: arclen12(:,:), arclen34(:,:), arclen56(:,:)
3366 REAL(RFREAL),
POINTER :: dnode(:,:), xyzold(:,:)
3368 TYPE(t_region
) :: region
3371 INTEGER :: ibound, l1, l2
3375 INTEGER :: l1b, l1e, l2b, l2e, lc, ijkn, ijke(4), ijkem(4), inoff, ijnoff
3376 INTEGER :: switch(6,9)
3380 REAL(RFREAL) :: arclen(4), ds(4),
s(4)
3381 REAL(RFREAL) :: corner(3,8), e1(3), e2(3), e3(3), e4(3), &
3382 p1(3), p2(3), p3(3), p4(3), dn(3)
3387 'RFLO_ModMoveGridNconform3.F90' )
3412 corner(:,2) = dnode(:,indijk(
ipnbeg,
jpnbeg,kpnend,inoff,ijnoff))
3413 corner(:,3) = dnode(:,indijk(
ipnbeg,
jpnend,kpnend,inoff,ijnoff))
3416 corner(:,6) = dnode(:,indijk(
ipnend,
jpnbeg,kpnend,inoff,ijnoff))
3417 corner(:,7) = dnode(:,indijk(
ipnend,
jpnend,kpnend,inoff,ijnoff))
3427 IF ((edgemoved(switch(ibound,1)) .OR. edgemoved(switch(ibound,2)) .OR. &
3428 edgemoved(switch(ibound,3)) .OR. edgemoved(switch(ibound,4))))
THEN
3430 l1b = switch(ibound,5)
3431 l1e = switch(ibound,6)
3432 l2b = switch(ibound,7)
3433 l2e = switch(ibound,8)
3434 lc = switch(ibound,9)
3436 IF (ibound == 1)
THEN
3441 ELSE IF (ibound == 2)
THEN
3446 ELSE IF (ibound == 3)
THEN
3451 ELSE IF (ibound == 4)
THEN
3456 ELSE IF (ibound == 5)
THEN
3461 ELSE IF (ibound == 6)
THEN
3474 IF (ibound==1 .OR. ibound==2)
THEN
3475 ijkn = indijk(lc,l1 ,l2 ,inoff,ijnoff)
3476 ijke(1) = indijk(lc,
jpnbeg,l2 ,inoff,ijnoff)
3477 ijkem(1) = indijk(lc,
jpnbeg,l2-1 ,inoff,ijnoff)
3478 ijke(2) = indijk(lc,
jpnend,l2 ,inoff,ijnoff)
3479 ijkem(2) = indijk(lc,
jpnend,l2-1 ,inoff,ijnoff)
3480 ijke(3) = indijk(lc,l1 ,
kpnbeg,inoff,ijnoff)
3481 ijkem(3) = indijk(lc,l1-1 ,
kpnbeg,inoff,ijnoff)
3482 ijke(4) = indijk(lc,l1 ,kpnend,inoff,ijnoff)
3483 ijkem(4) = indijk(lc,l1-1 ,kpnend,inoff,ijnoff)
3484 arclen(1) = arclen56(lc,
jpnbeg)
3485 arclen(2) = arclen56(lc,
jpnend)
3486 arclen(3) = arclen34(
kpnbeg,lc)
3487 arclen(4) = arclen34(kpnend,lc)
3488 ELSE IF (ibound==3 .OR. ibound==4)
THEN
3489 ijkn = indijk(l2 ,lc,l1 ,inoff,ijnoff)
3490 ijke(1) = indijk(l2 ,lc,
kpnbeg,inoff,ijnoff)
3491 ijkem(1) = indijk(l2-1 ,lc,
kpnbeg,inoff,ijnoff)
3492 ijke(2) = indijk(l2 ,lc,kpnend,inoff,ijnoff)
3493 ijkem(2) = indijk(l2-1 ,lc,kpnend,inoff,ijnoff)
3494 ijke(3) = indijk(
ipnbeg,lc,l1 ,inoff,ijnoff)
3495 ijkem(3) = indijk(
ipnbeg,lc,l1-1 ,inoff,ijnoff)
3496 ijke(4) = indijk(
ipnend,lc,l1 ,inoff,ijnoff)
3497 ijkem(4) = indijk(
ipnend,lc,l1-1 ,inoff,ijnoff)
3498 arclen(1) = arclen12(lc,
kpnbeg)
3499 arclen(2) = arclen12(lc,kpnend)
3500 arclen(3) = arclen56(
ipnbeg,lc)
3501 arclen(4) = arclen56(
ipnend,lc)
3502 ELSE IF (ibound==5 .OR. ibound==6)
THEN
3503 ijkn = indijk(l1 ,l2 ,lc,inoff,ijnoff)
3504 ijke(1) = indijk(
ipnbeg,l2 ,lc,inoff,ijnoff)
3505 ijkem(1) = indijk(
ipnbeg,l2-1 ,lc,inoff,ijnoff)
3506 ijke(2) = indijk(
ipnend,l2 ,lc,inoff,ijnoff)
3507 ijkem(2) = indijk(
ipnend,l2-1 ,lc,inoff,ijnoff)
3508 ijke(3) = indijk(l1 ,
jpnbeg,lc,inoff,ijnoff)
3509 ijkem(3) = indijk(l1-1 ,
jpnbeg,lc,inoff,ijnoff)
3510 ijke(4) = indijk(l1 ,
jpnend,lc,inoff,ijnoff)
3511 ijkem(4) = indijk(l1-1 ,
jpnend,lc,inoff,ijnoff)
3512 arclen(1) = arclen34(lc,
ipnbeg)
3513 arclen(2) = arclen34(lc,
ipnend)
3514 arclen(3) = arclen12(
jpnbeg,lc)
3515 arclen(4) = arclen12(
jpnend,lc)
3519 sqrt((xyzold(xcoord,ijke(1))-xyzold(xcoord,ijkem(1)))**2 + &
3520 (xyzold(ycoord,ijke(1))-xyzold(ycoord,ijkem(1)))**2 + &
3521 (xyzold(zcoord,ijke(1))-xyzold(zcoord,ijkem(1)))**2)
3523 sqrt((xyzold(xcoord,ijke(2))-xyzold(xcoord,ijkem(2)))**2 + &
3524 (xyzold(ycoord,ijke(2))-xyzold(ycoord,ijkem(2)))**2 + &
3525 (xyzold(zcoord,ijke(2))-xyzold(zcoord,ijkem(2)))**2)
3529 sqrt((xyzold(xcoord,ijke(3))-xyzold(xcoord,ijkem(3)))**2 + &
3530 (xyzold(ycoord,ijke(3))-xyzold(ycoord,ijkem(3)))**2 + &
3531 (xyzold(zcoord,ijke(3))-xyzold(zcoord,ijkem(3)))**2)
3533 sqrt((xyzold(xcoord,ijke(4))-xyzold(xcoord,ijkem(4)))**2 + &
3534 (xyzold(ycoord,ijke(4))-xyzold(ycoord,ijkem(4)))**2 + &
3535 (xyzold(zcoord,ijke(4))-xyzold(zcoord,ijkem(4)))**2)
3536 s(:) = ds(:)/arclen(:)
3537 e1(:) = dnode(:,ijke(1))
3538 e2(:) = dnode(:,ijke(2))
3539 e3(:) = dnode(:,ijke(3))
3540 e4(:) = dnode(:,ijke(4))
3541 CALL
rflo_tfint2d(
s(1),
s(2),
s(3),
s(4),e1,e2,e3,e4,
p1,p2,p3,p4,dn )
3542 dnode(:,ijkn) = dn(:)
3577 #include "Indexing.h"
3581 REAL(RFREAL),
POINTER :: dnode(:,:), xyzold(:,:)
3583 TYPE(t_region
) :: region
3586 INTEGER :: ipatch, l1, l2
3590 INTEGER :: l1b, l1e, l2b, l2e, lc, ijkn, ijke(4), ijkem(4), inoff, ijnoff
3591 INTEGER :: switch(6,9)
3594 REAL(RFREAL) :: arclen(4), ds(4),
s(4)
3595 REAL(RFREAL) :: e1(3), e2(3), e3(3), e4(3), &
3596 p1(3), p2(3), p3(3), p4(3), dn(3)
3602 'RFLO_ModMoveGridNconform3.F90' )
3617 DO ipatch=1,region%nPatches
3618 patch => region%levels(ilev)%patches(ipatch)
3619 ibound =
patch%lbound
3624 IF (
patch%bcMotion/=bc_external)
THEN
3633 l1b = switch(ibound,5)
3634 l1e = switch(ibound,6)
3635 l2b = switch(ibound,7)
3636 l2e = switch(ibound,8)
3637 lc = switch(ibound,9)
3639 p1(:) = dnode(:,
patch%corns(1))
3640 p2(:) = dnode(:,
patch%corns(4))
3641 p3(:) = dnode(:,
patch%corns(3))
3642 p4(:) = dnode(:,
patch%corns(2))
3646 IF (ibound==1 .OR. ibound==2)
THEN
3647 arclen(1:2) = 0._rfreal
3649 ijkn = indijk(lc,l1 ,l2 ,inoff,ijnoff)
3650 ijke(1) = indijk(lc,
jbeg ,l2 ,inoff,ijnoff)
3651 ijkem(1) = indijk(lc,
jbeg ,l2-1 ,inoff,ijnoff)
3652 ijke(2) = indijk(lc,
jend ,l2 ,inoff,ijnoff)
3653 ijkem(2) = indijk(lc,
jend ,l2-1 ,inoff,ijnoff)
3654 arclen(1) = arclen(1) + &
3655 sqrt((xyzold(xcoord,ijke(1))-xyzold(xcoord,ijkem(1)))**2 + &
3656 (xyzold(ycoord,ijke(1))-xyzold(ycoord,ijkem(1)))**2 + &
3657 (xyzold(zcoord,ijke(1))-xyzold(zcoord,ijkem(1)))**2)
3658 arclen(2) = arclen(2) + &
3659 sqrt((xyzold(xcoord,ijke(2))-xyzold(xcoord,ijkem(2)))**2 + &
3660 (xyzold(ycoord,ijke(2))-xyzold(ycoord,ijkem(2)))**2 + &
3661 (xyzold(zcoord,ijke(2))-xyzold(zcoord,ijkem(2)))**2)
3663 arclen(3:4) = 0._rfreal
3665 ijkn = indijk(lc,l1 ,l2 ,inoff,ijnoff)
3666 ijke(3) = indijk(lc,l1 ,
kbeg ,inoff,ijnoff)
3667 ijkem(3) = indijk(lc,l1-1 ,
kbeg ,inoff,ijnoff)
3668 ijke(4) = indijk(lc,l1 ,kend ,inoff,ijnoff)
3669 ijkem(4) = indijk(lc,l1-1 ,kend ,inoff,ijnoff)
3670 arclen(3) = arclen(3) + &
3671 sqrt((xyzold(xcoord,ijke(3))-xyzold(xcoord,ijkem(3)))**2 + &
3672 (xyzold(ycoord,ijke(3))-xyzold(ycoord,ijkem(3)))**2 + &
3673 (xyzold(zcoord,ijke(3))-xyzold(zcoord,ijkem(3)))**2)
3674 arclen(4) = arclen(4) + &
3675 sqrt((xyzold(xcoord,ijke(4))-xyzold(xcoord,ijkem(4)))**2 + &
3676 (xyzold(ycoord,ijke(4))-xyzold(ycoord,ijkem(4)))**2 + &
3677 (xyzold(zcoord,ijke(4))-xyzold(zcoord,ijkem(4)))**2)
3679 ELSE IF (ibound==3 .OR. ibound==4)
THEN
3680 arclen(1:2) = 0._rfreal
3682 ijkn = indijk(l2 ,lc,l1 ,inoff,ijnoff)
3683 ijke(1) = indijk(l2 ,lc,
kbeg ,inoff,ijnoff)
3684 ijkem(1) = indijk(l2-1 ,lc,
kbeg ,inoff,ijnoff)
3685 ijke(2) = indijk(l2 ,lc,kend ,inoff,ijnoff)
3686 ijkem(2) = indijk(l2-1 ,lc,kend ,inoff,ijnoff)
3687 arclen(1) = arclen(1) + &
3688 sqrt((xyzold(xcoord,ijke(1))-xyzold(xcoord,ijkem(1)))**2 + &
3689 (xyzold(ycoord,ijke(1))-xyzold(ycoord,ijkem(1)))**2 + &
3690 (xyzold(zcoord,ijke(1))-xyzold(zcoord,ijkem(1)))**2)
3691 arclen(2) = arclen(2) + &
3692 sqrt((xyzold(xcoord,ijke(2))-xyzold(xcoord,ijkem(2)))**2 + &
3693 (xyzold(ycoord,ijke(2))-xyzold(ycoord,ijkem(2)))**2 + &
3694 (xyzold(zcoord,ijke(2))-xyzold(zcoord,ijkem(2)))**2)
3696 arclen(3:4) = 0._rfreal
3698 ijkn = indijk(l2 ,lc,l1 ,inoff,ijnoff)
3699 ijke(3) = indijk(
ibeg ,lc,l1 ,inoff,ijnoff)
3700 ijkem(3) = indijk(
ibeg ,lc,l1-1 ,inoff,ijnoff)
3701 ijke(4) = indijk(
iend ,lc,l1 ,inoff,ijnoff)
3702 ijkem(4) = indijk(
iend ,lc,l1-1 ,inoff,ijnoff)
3703 arclen(3) = arclen(3) + &
3704 sqrt((xyzold(xcoord,ijke(3))-xyzold(xcoord,ijkem(3)))**2 + &
3705 (xyzold(ycoord,ijke(3))-xyzold(ycoord,ijkem(3)))**2 + &
3706 (xyzold(zcoord,ijke(3))-xyzold(zcoord,ijkem(3)))**2)
3707 arclen(4) = arclen(4) + &
3708 sqrt((xyzold(xcoord,ijke(4))-xyzold(xcoord,ijkem(4)))**2 + &
3709 (xyzold(ycoord,ijke(4))-xyzold(ycoord,ijkem(4)))**2 + &
3710 (xyzold(zcoord,ijke(4))-xyzold(zcoord,ijkem(4)))**2)
3712 ELSE IF (ibound==5 .OR. ibound==6)
THEN
3713 arclen(1:2) = 0._rfreal
3715 ijkn = indijk(l1 ,l2 ,lc,inoff,ijnoff)
3716 ijke(1) = indijk(
ibeg ,l2 ,lc,inoff,ijnoff)
3717 ijkem(1) = indijk(
ibeg ,l2-1 ,lc,inoff,ijnoff)
3718 ijke(2) = indijk(
iend ,l2 ,lc,inoff,ijnoff)
3719 ijkem(2) = indijk(
iend ,l2-1 ,lc,inoff,ijnoff)
3720 arclen(1) = arclen(1) + &
3721 sqrt((xyzold(xcoord,ijke(1))-xyzold(xcoord,ijkem(1)))**2 + &
3722 (xyzold(ycoord,ijke(1))-xyzold(ycoord,ijkem(1)))**2 + &
3723 (xyzold(zcoord,ijke(1))-xyzold(zcoord,ijkem(1)))**2)
3724 arclen(2) = arclen(2) + &
3725 sqrt((xyzold(xcoord,ijke(2))-xyzold(xcoord,ijkem(2)))**2 + &
3726 (xyzold(ycoord,ijke(2))-xyzold(ycoord,ijkem(2)))**2 + &
3727 (xyzold(zcoord,ijke(2))-xyzold(zcoord,ijkem(2)))**2)
3729 arclen(3:4) = 0._rfreal
3731 ijkn = indijk(l1 ,l2 ,lc,inoff,ijnoff)
3732 ijke(3) = indijk(l1 ,
jbeg ,lc,inoff,ijnoff)
3733 ijkem(3) = indijk(l1-1 ,
jbeg ,lc,inoff,ijnoff)
3734 ijke(4) = indijk(l1 ,
jend ,lc,inoff,ijnoff)
3735 ijkem(4) = indijk(l1-1 ,
jend ,lc,inoff,ijnoff)
3736 arclen(3) = arclen(3) + &
3737 sqrt((xyzold(xcoord,ijke(3))-xyzold(xcoord,ijkem(3)))**2 + &
3738 (xyzold(ycoord,ijke(3))-xyzold(ycoord,ijkem(3)))**2 + &
3739 (xyzold(zcoord,ijke(3))-xyzold(zcoord,ijkem(3)))**2)
3740 arclen(4) = arclen(4) + &
3741 sqrt((xyzold(xcoord,ijke(4))-xyzold(xcoord,ijkem(4)))**2 + &
3742 (xyzold(ycoord,ijke(4))-xyzold(ycoord,ijkem(4)))**2 + &
3743 (xyzold(zcoord,ijke(4))-xyzold(zcoord,ijkem(4)))**2)
3755 IF (ibound==1 .OR. ibound==2)
THEN
3756 ijkn = indijk(lc,l1 ,l2 ,inoff,ijnoff)
3757 ijke(1) = indijk(lc,
jbeg ,l2 ,inoff,ijnoff)
3758 ijkem(1) = indijk(lc,
jbeg ,l2-1 ,inoff,ijnoff)
3759 ijke(2) = indijk(lc,
jend ,l2 ,inoff,ijnoff)
3760 ijkem(2) = indijk(lc,
jend ,l2-1 ,inoff,ijnoff)
3761 ijke(3) = indijk(lc,l1 ,
kbeg ,inoff,ijnoff)
3762 ijkem(3) = indijk(lc,l1-1 ,
kbeg ,inoff,ijnoff)
3763 ijke(4) = indijk(lc,l1 ,kend ,inoff,ijnoff)
3764 ijkem(4) = indijk(lc,l1-1 ,kend ,inoff,ijnoff)
3765 ELSE IF (ibound==3 .OR. ibound==4)
THEN
3766 ijkn = indijk(l2 ,lc,l1 ,inoff,ijnoff)
3767 ijke(1) = indijk(l2 ,lc,
kbeg ,inoff,ijnoff)
3768 ijkem(1) = indijk(l2-1 ,lc,
kbeg ,inoff,ijnoff)
3769 ijke(2) = indijk(l2 ,lc,kend ,inoff,ijnoff)
3770 ijkem(2) = indijk(l2-1 ,lc,kend ,inoff,ijnoff)
3771 ijke(3) = indijk(
ibeg ,lc,l1 ,inoff,ijnoff)
3772 ijkem(3) = indijk(
ibeg ,lc,l1-1 ,inoff,ijnoff)
3773 ijke(4) = indijk(
iend ,lc,l1 ,inoff,ijnoff)
3774 ijkem(4) = indijk(
iend ,lc,l1-1 ,inoff,ijnoff)
3775 ELSE IF (ibound==5 .OR. ibound==6)
THEN
3776 ijkn = indijk(l1 ,l2 ,lc,inoff,ijnoff)
3777 ijke(1) = indijk(
ibeg ,l2 ,lc,inoff,ijnoff)
3778 ijkem(1) = indijk(
ibeg ,l2-1 ,lc,inoff,ijnoff)
3779 ijke(2) = indijk(
iend ,l2 ,lc,inoff,ijnoff)
3780 ijkem(2) = indijk(
iend ,l2-1 ,lc,inoff,ijnoff)
3781 ijke(3) = indijk(l1 ,
jbeg ,lc,inoff,ijnoff)
3782 ijkem(3) = indijk(l1-1 ,
jbeg ,lc,inoff,ijnoff)
3783 ijke(4) = indijk(l1 ,
jend ,lc,inoff,ijnoff)
3784 ijkem(4) = indijk(l1-1 ,
jend ,lc,inoff,ijnoff)
3788 sqrt((xyzold(xcoord,ijke(1))-xyzold(xcoord,ijkem(1)))**2 + &
3789 (xyzold(ycoord,ijke(1))-xyzold(ycoord,ijkem(1)))**2 + &
3790 (xyzold(zcoord,ijke(1))-xyzold(zcoord,ijkem(1)))**2)
3792 sqrt((xyzold(xcoord,ijke(2))-xyzold(xcoord,ijkem(2)))**2 + &
3793 (xyzold(ycoord,ijke(2))-xyzold(ycoord,ijkem(2)))**2 + &
3794 (xyzold(zcoord,ijke(2))-xyzold(zcoord,ijkem(2)))**2)
3798 sqrt((xyzold(xcoord,ijke(3))-xyzold(xcoord,ijkem(3)))**2 + &
3799 (xyzold(ycoord,ijke(3))-xyzold(ycoord,ijkem(3)))**2 + &
3800 (xyzold(zcoord,ijke(3))-xyzold(zcoord,ijkem(3)))**2)
3802 sqrt((xyzold(xcoord,ijke(4))-xyzold(xcoord,ijkem(4)))**2 + &
3803 (xyzold(ycoord,ijke(4))-xyzold(ycoord,ijkem(4)))**2 + &
3804 (xyzold(zcoord,ijke(4))-xyzold(zcoord,ijkem(4)))**2)
3805 s(:) = ds(:)/arclen(:)
3806 e1(:) = dnode(:,ijke(1))
3807 e2(:) = dnode(:,ijke(2))
3808 e3(:) = dnode(:,ijke(3))
3809 e4(:) = dnode(:,ijke(4))
3810 CALL
rflo_tfint2d(
s(1),
s(2),
s(3),
s(4),e1,e2,e3,e4,
p1,p2,p3,p4,dn )
3811 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)