71 CHARACTER(CHRLEN) :: rcsidentstring = &
72 '$RCSfile: RFLO_ModMoveGridNconform2.F90,v $ $Revision: 1.35 $'
111 include
'roccomf90.h'
115 TYPE(t_region
),
POINTER :: regions(:)
118 INTEGER :: ireg, iter, ipatch, ijk
121 LOGICAL :: somemoved, someremesh
123 INTEGER :: bctype, iremesh, jremesh, nremesh, itype
125 REAL(RFREAL) :: resid, globalresid
126 REAL(RFREAL),
POINTER :: xyz(:,:), xyzold(:,:)
132 DOUBLE PRECISION :: dalpha
137 global => regions(1)%global
140 'RFLO_ModMoveGridNconform2.F90' )
147 dalpha = global%dtMin/global%dTimeSystem
148 CALL com_call_function( global%genxHandleGm,1,dalpha )
163 DO ireg=1,global%nRegions
164 IF (regions(ireg)%procid==global%myProcid .AND. &
165 regions(ireg)%active==active .AND. &
166 regions(ireg)%mixtInput%moveGrid)
THEN
170 grid => regions(ireg)%levels(1)%grid
171 gridold => regions(ireg)%levels(1)%gridOld
175 gridold%xyzOld,
grid%xyz )
188 IF (global%moveGridNiter < 1)
THEN
189 IF (global%verbLevel >= verbose_high)
THEN
190 IF (global%myProcid == masterproc)
THEN
191 WRITE(stdout,4000) solver_name,global%skewness,global%minVol
192 WRITE(stdout,1000) solver_name, &
193 global%moveGridNiter,global%moveGridNsmatch, &
194 global%moveGridAmplifX,global%moveGridAmplifY, &
195 global%moveGridAmplifZ,global%moveGridPower
202 DO iter=1,global%moveGridNiter
206 IF (global%verbLevel >= verbose_high)
THEN
208 CALL mpi_reduce( resid,globalresid,1,mpi_rfreal,mpi_sum, &
209 masterproc,global%mpiComm,global%mpierr )
210 IF (global%mpierr /= 0) CALL
errorstop( global,err_mpi_trouble,__line__ )
214 IF (global%myProcid == masterproc)
THEN
215 WRITE(stdout,4000) solver_name,global%skewness,global%minVol
217 IF (global%moveGridScheme==movegrid_frame)
THEN
218 WRITE(stdout,2000) solver_name, &
219 global%moveGridNiter,global%moveGridNsmatch, &
220 global%moveGridAmplifX,global%moveGridAmplifY, &
221 global%moveGridAmplifZ,global%moveGridPower, &
223 ELSEIF (global%moveGridScheme==movegrid_foms)
THEN
224 WRITE(stdout,3000) solver_name, &
225 global%moveGridNiter,global%moveGridNsmatch, &
226 global%moveGridAmplifX,global%moveGridAmplifY, &
227 global%moveGridAmplifZ,global%moveGridPower, &
228 global%moveGridWeight,global%moveGridOrthCell, &
237 DO ireg=1,global%nRegions
238 IF (regions(ireg)%procid==global%myProcid .AND. &
239 regions(ireg)%active==active .AND. &
240 regions(ireg)%mixtInput%moveGrid)
THEN
244 xyz => regions(ireg)%levels(1)%grid%xyz
245 xyzold => regions(ireg)%levels(1)%gridOld%xyz
247 DO ijk=lbound(xyz,2),ubound(xyz,2)
248 xyz(xcoord,ijk) = xyz(xcoord,ijk) - xyzold(xcoord,ijk)
249 xyz(ycoord,ijk) = xyz(ycoord,ijk) - xyzold(ycoord,ijk)
250 xyz(zcoord,ijk) = xyz(zcoord,ijk) - xyzold(zcoord,ijk)
255 grid => regions(ireg)%levels(1)%grid
256 gridold => regions(ireg)%levels(1)%gridOld
257 grid%boundMoved(:) = .true.
258 grid%edgeMoved(:) = .true.
259 DO ipatch=1,regions(ireg)%nPatches
260 patch => regions(ireg)%levels(1)%patches(ipatch)
261 bctype =
patch%bcType
265 IF ((bctype==bc_symmetry))
THEN
272 gridold%xyzOld,
grid%xyz )
279 gridold%xyzOld,
grid%xyz )
297 DO ireg=1,global%nRegions
298 IF (regions(ireg)%procid==global%myProcid .AND. &
299 regions(ireg)%active==active .AND. &
300 regions(ireg)%mixtInput%moveGrid)
THEN
304 IF (global%moveGridScheme==movegrid_foms) &
306 IF (regions(ireg)%mixtInput%faceEdgeAvg==fe_avg_linear) &
319 CALL mpi_allreduce( iremesh, nremesh, 1, mpi_integer, mpi_sum, &
320 global%mpiComm, global%mpierr )
321 IF (global%mpierr /=0 ) CALL
errorstop( global,err_mpi_trouble,__line__ )
322 IF (nremesh > 0) someremesh = .true.
327 DO ireg=1,global%nRegions
328 IF (regions(ireg)%procid==global%myProcid .AND. &
329 regions(ireg)%active==active .AND. &
334 IF (global%moveGridScheme==movegrid_foms) &
336 IF (regions(ireg)%mixtInput%faceEdgeAvg==fe_avg_linear) &
347 1000
FORMAT(
a,1
x,
'Global-TFI grid motion:',2i5,4(1pe9.2))
348 2000
FORMAT(
a,1
x,
'Global-Weighted-Laplacian grid motion:',2i5,4(1pe9.2),1pe13.4)
349 3000
FORMAT(
a,1
x,
'Global-Orthogonal-Laplacian gridmotion:',2i3,6(1pe9.2),1pe10.2)
350 4000
FORMAT(
a,1
x,
'global skewness, minvol:',2(1pe14.5))
375 #include "Indexing.h"
378 TYPE(t_region
),
POINTER :: regions(:)
381 INTEGER :: l, ipatch, ireg, ipcorn, intcorn, nreg
384 INTEGER,
PARAMETER :: ncmax=100
387 INTEGER :: iptc, jptc, kptc, iblk, jblk, kblk, ijkcurr
388 INTEGER :: inoff, ijnoff, lbound, regnc, errfl
389 INTEGER,
ALLOCATABLE :: ivar(:), ijkcorn(:,:)
398 global => regions(1)%global
401 'RFLO_ModMoveGridNconform2.F90' )
405 ALLOCATE( ivar(global%nRegions),stat=errfl )
407 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
409 ALLOCATE( ijkcorn(ncmax,global%nRegions),stat=errfl )
411 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
415 DO ireg = 1,global%nRegions
416 IF (regions(ireg)%procid==global%myProcid .AND. &
417 regions(ireg)%active==active)
THEN
419 grid => regions(ireg)%levels(ilev)%grid
427 grid%nCorns(ireg) = 8
429 ijkcorn(2,ireg) = indijk(
ipnbeg,
jpnbeg,kpnend,inoff,ijnoff)
430 ijkcorn(3,ireg) = indijk(
ipnbeg,
jpnend,kpnend,inoff,ijnoff)
433 ijkcorn(6,ireg) = indijk(
ipnend,
jpnbeg,kpnend,inoff,ijnoff)
434 ijkcorn(7,ireg) = indijk(
ipnend,
jpnend,kpnend,inoff,ijnoff)
437 DO ipatch=1,regions(ireg)%nPatches
438 patch => regions(ireg)%levels(ilev)%patches(ipatch)
439 lbound =
patch%lbound
445 IF (lbound==1 .OR. lbound==2)
THEN
447 IF (lbound==1) iblk =
ipnbeg
448 IF (lbound==2) iblk =
ipnend
454 ELSEIF (ipcorn==2)
THEN
459 ELSEIF (ipcorn==3)
THEN
464 ELSEIF (ipcorn==4)
THEN
470 ELSEIF (lbound==3 .OR. lbound==4)
THEN
472 IF (lbound==3) jblk =
jpnbeg
473 IF (lbound==4) jblk =
jpnend
479 ELSEIF (ipcorn==2)
THEN
484 ELSEIF (ipcorn==3)
THEN
489 ELSEIF (ipcorn==4)
THEN
495 ELSEIF (lbound==5 .OR. lbound==6)
THEN
497 IF (lbound==5) kblk =
kpnbeg
498 IF (lbound==6) kblk = kpnend
504 ELSEIF (ipcorn==2)
THEN
509 ELSEIF (ipcorn==3)
THEN
514 ELSEIF (ipcorn==4)
THEN
522 patch%corns(ipcorn) = indijk(iptc,jptc,kptc,inoff,ijnoff)
524 IF (iptc/=iblk .OR. jptc/=jblk .OR. kptc/=kblk)
THEN
526 ijkcurr = indijk(iptc,jptc,kptc,inoff,ijnoff)
527 DO intcorn=1,
grid%nCorns(ireg)
528 IF (ijkcorn(intcorn,ireg)==ijkcurr)
THEN
532 IF (.NOT. wasfound)
THEN
533 grid%nCorns(ireg) =
grid%nCorns(ireg) +1
534 ijkcorn(
grid%nCorns(ireg),ireg) = ijkcurr
537 IF (
grid%nCorns(ireg) >= ncmax)
THEN
538 CALL
errorstop( global,err_illegal_value,__line__, &
539 'too low ncMax in RFLO_ModMoveGridNconform/RFLO_MgFrameCornPoints')
544 ivar(ireg) =
grid%nCorns(ireg)
549 DO ireg = 1,global%nRegions
550 CALL mpi_bcast( ivar(ireg),1,mpi_integer, &
551 regions(ireg)%procId,global%mpiComm,global%mpierr )
552 IF (global%mpierr /=0 ) CALL
errorstop( global,err_mpi_trouble,__line__ )
554 CALL mpi_bcast( ijkcorn(1:ncmax,ireg),ncmax,mpi_integer, &
555 regions(ireg)%procId,global%mpiComm,global%mpierr )
556 IF (global%mpierr /=0 ) CALL
errorstop( global,err_mpi_trouble,__line__ )
561 DO ireg = 1,global%nRegions
562 regnc =
max( regnc,ivar(ireg) )
564 global%moveGridRegNc = regnc
566 DO ireg = 1,global%nRegions
567 IF (regions(ireg)%procid==global%myProcid .AND. &
568 regions(ireg)%active==active)
THEN
570 grid => regions(ireg)%levels(ilev)%grid
571 DO nreg = 1,global%nRegions
572 grid%nCorns(nreg) = ivar(nreg)
575 ALLOCATE(
grid%ijkCorn( regnc,global%nRegions),stat=errfl )
577 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
579 ALLOCATE(
grid%regCorn( 3,regnc,global%nRegions),stat=errfl )
581 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
583 ALLOCATE(
grid%regCornOld( 3,regnc,global%nRegions),stat=errfl )
585 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
587 ALLOCATE(
grid%regCornOrig(3,regnc,global%nRegions),stat=errfl )
589 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
591 ALLOCATE(
grid%nghbor( 3,global%moveGridNbour,regnc),stat=errfl )
593 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
595 DO l = 1,
grid%nCorns(ireg)
596 grid%ijkCorn(l,ireg) = ijkcorn(l,ireg)
604 DEALLOCATE( ivar,stat=errfl )
606 IF (global%error /= 0) CALL
errorstop( global,err_deallocate,__line__ )
634 #include "Indexing.h"
637 TYPE(t_region
),
POINTER :: regions(:)
638 INTEGER :: iselect, iter
641 INTEGER ::
i, l, ireg
644 INTEGER :: ilev, ncorns, errfl
646 INTEGER,
ALLOCATABLE :: corner(:)
648 REAL(RFREAL),
ALLOCATABLE :: rvar(:,:,:)
649 REAL(RFREAL),
POINTER :: dxyz(:,:)
656 global => regions(1)%global
659 'RFLO_ModMoveGridNconform2.F90' )
663 ALLOCATE( rvar(xcoord:zcoord,global%moveGridRegNc,global%nRegions), &
666 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
671 DO ireg = 1,global%nRegions
672 IF (regions(ireg)%procid==global%myProcid .AND. &
673 regions(ireg)%active==active)
THEN
675 grid => regions(ireg)%levels(ilev)%grid
684 ncorns =
grid%nCorns(ireg)
686 ALLOCATE( corner(ncorns), stat=errfl )
688 IF (global%error /= 0) CALL
errorstop( global,err_allocate,__line__ )
691 corner(l) =
grid%ijkCorn(l,ireg)
696 grid%regCornOld(xcoord,
i,ireg) = dxyz(xcoord,corner(
i))
697 grid%regCornOld(ycoord,
i,ireg) = dxyz(ycoord,corner(
i))
698 grid%regCornOld(zcoord,
i,ireg) = dxyz(zcoord,corner(
i))
699 rvar(:,
i,ireg) =
grid%regCornOld(:,
i,ireg)
703 grid%regCornOrig(xcoord,
i,ireg) = dxyz(xcoord,corner(
i))
704 grid%regCornOrig(ycoord,
i,ireg) = dxyz(ycoord,corner(
i))
705 grid%regCornOrig(zcoord,
i,ireg) = dxyz(zcoord,corner(
i))
706 rvar(:,
i,ireg) =
grid%regCornOrig(:,
i,ireg)
710 DEALLOCATE( corner, stat=errfl )
712 IF (global%error /= 0) CALL
errorstop( global,err_deallocate,__line__ )
715 rvar(:,:,ireg) =
grid%regCornOld(:,:,ireg)
722 DO ireg = 1,global%nRegions
723 ncorns = global%moveGridRegNc
725 CALL mpi_bcast( rvar(xcoord:zcoord,1:ncorns,ireg),3*ncorns, &
726 mpi_rfreal,regions(ireg)%procId,global%mpiComm,global%mpierr )
727 IF (global%mpierr /=0 ) CALL
errorstop( global,err_mpi_trouble,__line__ )
729 CALL mpi_barrier( global%mpiComm,global%mpierr )
731 DO ireg = 1,global%nRegions
732 IF (regions(ireg)%procid==global%myProcid .AND. &
733 regions(ireg)%active==active)
THEN
735 grid => regions(ireg)%levels(ilev)%grid
738 DO l=1,global%nRegions
739 grid%regCornOld(:,:,l) = rvar(:,:,l)
742 DO l=1,global%nRegions
743 grid%regCornOrig(:,:,l) = rvar(:,:,l)
747 DO l=1,global%nRegions
748 grid%regCornOld(:,:,l) = rvar(:,:,l)
769 DEALLOCATE( rvar,stat=errfl )
771 IF (global%error /= 0) CALL
errorstop( global,err_deallocate,__line__ )
799 #include "Indexing.h"
802 TYPE(t_region
),
POINTER :: regions(:)
805 INTEGER ::
i,
j,
k, ipatch,
ic, ireg, nc, nreg
811 INTEGER :: ijknode(4), inoff, ijnoff, lbound, errfl
812 INTEGER,
ALLOCATABLE :: ncmin(:), nregmin(:)
813 REAL(RFREAL) :: edgelen, ds, tol
814 REAL(RFREAL),
POINTER :: xyz(:,:)
815 REAL(RFREAL),
ALLOCATABLE ::
dist(:,:), distmin(:)
823 global => regions(1)%global
826 'RFLO_ModMoveGridNconform2.F90' )
830 nbour = global%moveGridNbour
833 ALLOCATE( ncmin(nbour), stat=errfl );
IF (errfl>0) goto 88
834 ALLOCATE( nregmin(nbour), stat=errfl );
IF (errfl>0) goto 88
835 ALLOCATE( distmin(nbour), stat=errfl );
IF (errfl>0) goto 88
836 ALLOCATE(
dist(global%moveGridRegNc,global%nRegions), stat=errfl )
839 DO ireg = 1,global%nRegions
840 IF (regions(ireg)%procid==global%myProcid .AND. &
841 regions(ireg)%active==active)
THEN
843 grid => regions(ireg)%levels(ilev)%grid
845 ncorns =
grid%nCorns(ireg)
853 xyz => regions(ireg)%levels(ilev)%grid%xyz
857 edgelen = 1.e+30_rfreal
862 ijknode(1) = indijk(
i ,
j ,
k ,inoff,ijnoff)
863 ijknode(2) = indijk(
i+1,
j ,
k ,inoff,ijnoff)
864 ijknode(3) = indijk(
i ,
j+1,
k ,inoff,ijnoff)
865 ijknode(4) = indijk(
i ,
j ,
k+1,inoff,ijnoff)
866 ds =
sqrt((xyz(xcoord,ijknode(2))-xyz(xcoord,ijknode(1)))**2+ &
867 (xyz(ycoord,ijknode(2))-xyz(ycoord,ijknode(1)))**2+ &
868 (xyz(zcoord,ijknode(2))-xyz(zcoord,ijknode(1)))**2)
869 edgelen =
min(edgelen,ds)
870 ds =
sqrt((xyz(xcoord,ijknode(3))-xyz(xcoord,ijknode(1)))**2+ &
871 (xyz(ycoord,ijknode(3))-xyz(ycoord,ijknode(1)))**2+ &
872 (xyz(zcoord,ijknode(3))-xyz(zcoord,ijknode(1)))**2)
873 edgelen =
min(edgelen,ds)
874 ds =
sqrt((xyz(xcoord,ijknode(4))-xyz(xcoord,ijknode(1)))**2+ &
875 (xyz(ycoord,ijknode(4))-xyz(ycoord,ijknode(1)))**2+ &
876 (xyz(zcoord,ijknode(4))-xyz(zcoord,ijknode(1)))**2)
877 edgelen =
min(edgelen,ds)
881 tol = 1.e-5_rfreal*edgelen
884 distmin(1:nbour) = 1.e+30_rfreal
887 DO nreg = 1,global%nRegions
888 DO nc = 1,
grid%nCorns(nreg)
889 dist(nc,nreg) =
sqrt((
grid%regCornOrig(xcoord,nc,nreg)- &
890 grid%regCornOrig(xcoord,
ic,ireg))**2 + &
891 (
grid%regCornOrig(ycoord,nc,nreg)- &
892 grid%regCornOrig(ycoord,
ic,ireg))**2 + &
893 (
grid%regCornOrig(zcoord,nc,nreg)- &
894 grid%regCornOrig(zcoord,
ic,ireg))**2)
908 IF (
dist(nc,nreg)<distmin(1) .AND.
dist(nc,nreg)>edgelen)
THEN
910 distmin(
k) = distmin(
k-1)
911 ncmin(
k) = ncmin(
k-1)
912 nregmin(
k) = nregmin(
k-1)
914 distmin(1) =
dist(nc,nreg)
920 IF (
dist(nc,nreg) > (distmin(
k-1) + tol) .AND. &
921 dist(nc,nreg) < (distmin(
k) - tol))
THEN
926 distmin(
j) = distmin(
j-1)
927 ncmin(
j) = ncmin(
j-1)
928 nregmin(
j) = nregmin(
j-1)
930 distmin(
k) =
dist(nc,nreg)
947 grid%nghbor(3,:,:) = 1
954 DEALLOCATE( ncmin, stat=errfl );
IF (errfl>0) goto 99
955 DEALLOCATE( nregmin, stat=errfl );
IF (errfl>0) goto 99
956 DEALLOCATE( distmin, stat=errfl );
IF (errfl>0) goto 99
957 DEALLOCATE(
dist, stat=errfl );
IF (errfl>0) goto 99
961 DO ireg = 1,global%nRegions
962 IF (regions(ireg)%procid==global%myProcid .AND. &
963 regions(ireg)%active==active)
THEN
965 grid => regions(ireg)%levels(ilev)%grid
968 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(1)%interact).OR. &
969 (.NOT. regions(ireg)%levels(ilev)%edgeCells(1)%interact).OR. &
970 (.NOT. regions(ireg)%levels(ilev)%edgeCells(4)%interact).OR. &
971 (.NOT. regions(ireg)%levels(ilev)%edgeCells(9)%interact)) &
972 grid%nghbor(3,1:nbour,1) = 0
975 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(2)%interact).OR. &
976 (.NOT. regions(ireg)%levels(ilev)%edgeCells(1)%interact).OR. &
977 (.NOT. regions(ireg)%levels(ilev)%edgeCells(2)%interact).OR. &
978 (.NOT. regions(ireg)%levels(ilev)%edgeCells(10)%interact)) &
979 grid%nghbor(3,1:nbour,2) = 0
982 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(3)%interact).OR. &
983 (.NOT. regions(ireg)%levels(ilev)%edgeCells(2)%interact).OR. &
984 (.NOT. regions(ireg)%levels(ilev)%edgeCells(3)%interact).OR. &
985 (.NOT. regions(ireg)%levels(ilev)%edgeCells(11)%interact)) &
986 grid%nghbor(3,1:nbour,3) = 0
989 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(4)%interact).OR. &
990 (.NOT. regions(ireg)%levels(ilev)%edgeCells(3)%interact).OR. &
991 (.NOT. regions(ireg)%levels(ilev)%edgeCells(4)%interact).OR. &
992 (.NOT. regions(ireg)%levels(ilev)%edgeCells(12)%interact)) &
993 grid%nghbor(3,1:nbour,4) = 0
996 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(5)%interact).OR. &
997 (.NOT. regions(ireg)%levels(ilev)%edgeCells(5)%interact).OR. &
998 (.NOT. regions(ireg)%levels(ilev)%edgeCells(8)%interact).OR. &
999 (.NOT. regions(ireg)%levels(ilev)%edgeCells(9)%interact)) &
1000 grid%nghbor(3,1:nbour,5) = 0
1003 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(6)%interact).OR. &
1004 (.NOT. regions(ireg)%levels(ilev)%edgeCells(5)%interact).OR. &
1005 (.NOT. regions(ireg)%levels(ilev)%edgeCells(6)%interact).OR. &
1006 (.NOT. regions(ireg)%levels(ilev)%edgeCells(10)%interact)) &
1007 grid%nghbor(3,1:nbour,6) = 0
1010 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(7)%interact).OR. &
1011 (.NOT. regions(ireg)%levels(ilev)%edgeCells(6)%interact).OR. &
1012 (.NOT. regions(ireg)%levels(ilev)%edgeCells(7)%interact).OR. &
1013 (.NOT. regions(ireg)%levels(ilev)%edgeCells(11)%interact)) &
1014 grid%nghbor(3,1:nbour,7) = 0
1017 IF ((.NOT. regions(ireg)%levels(ilev)%cornerCells(8)%interact).OR. &
1018 (.NOT. regions(ireg)%levels(ilev)%edgeCells(7)%interact).OR. &
1019 (.NOT. regions(ireg)%levels(ilev)%edgeCells(8)%interact).OR. &
1020 (.NOT. regions(ireg)%levels(ilev)%edgeCells(12)%interact)) &
1021 grid%nghbor(3,1:nbour,8) = 0
1028 DO ireg = 1,global%nRegions
1029 IF (regions(ireg)%procid==global%myProcid .AND. &
1030 regions(ireg)%active==active)
THEN
1032 grid => regions(ireg)%levels(ilev)%grid
1036 DO ipatch=1,regions(ireg)%nPatches
1037 patch => regions(ireg)%levels(ilev)%patches(ipatch)
1038 lbound =
patch%lbound
1039 bctype =
patch%bcType
1044 IF ((bctype>=bc_inflow .AND. bctype<=bc_inflow +bc_range) .OR. &
1045 (bctype>=bc_outflow .AND. bctype<=bc_outflow +bc_range) .OR. &
1046 (bctype>=bc_slipwall .AND. bctype<=bc_slipwall +bc_range) .OR. &
1047 (bctype>=bc_noslipwall .AND. bctype<=bc_noslipwall+bc_range) .OR. &
1048 (bctype>=bc_farfield .AND. bctype<=bc_farfield +bc_range) .OR. &
1049 (bctype>=bc_injection .AND. bctype<=bc_injection +bc_range) .OR. &
1050 (bctype>=bc_tra_peri .AND. bctype<=bc_tra_peri +bc_range) .OR. &
1051 (bctype>=bc_rot_peri .AND. bctype<=bc_rot_peri +bc_range))
THEN
1052 IF (lbound==1 .OR. lbound==2)
THEN
1054 ijknode(2) = indijk(
ibeg,
jbeg,kend,inoff,ijnoff)
1055 ijknode(3) = indijk(
ibeg,
jend,kend,inoff,ijnoff)
1057 ELSEIF (lbound==3 .OR. lbound==4)
THEN
1059 ijknode(2) = indijk(
ibeg,
jbeg,kend,inoff,ijnoff)
1060 ijknode(3) = indijk(
iend,
jbeg,kend,inoff,ijnoff)
1062 ELSEIF (lbound==5 .OR. lbound==6)
THEN
1068 DO ic = 1,
grid%nCorns(ireg)
1069 IF (ijknode(1)==
grid%ijkCorn(
ic,ireg) .OR. &
1070 ijknode(2)==
grid%ijkCorn(
ic,ireg) .OR. &
1071 ijknode(3)==
grid%ijkCorn(
ic,ireg) .OR. &
1072 ijknode(4)==
grid%ijkCorn(
ic,ireg))
grid%nghbor(3,1:nbour,
ic)= 2
1082 DO ireg = 1,global%nRegions
1083 IF (regions(ireg)%procid==global%myProcid .AND. &
1084 regions(ireg)%active==active)
THEN
1086 grid => regions(ireg)%levels(ilev)%grid
1090 DO ipatch=1,regions(ireg)%nPatches
1091 patch => regions(ireg)%levels(ilev)%patches(ipatch)
1092 lbound =
patch%lbound
1093 bctype =
patch%bcType
1098 IF (
patch%bcMotion == bc_external)
THEN
1099 IF (lbound==1 .OR. lbound==2)
THEN
1101 ijknode(2) = indijk(
ibeg,
jbeg,kend,inoff,ijnoff)
1102 ijknode(3) = indijk(
ibeg,
jend,kend,inoff,ijnoff)
1104 ELSEIF (lbound==3 .OR. lbound==4)
THEN
1106 ijknode(2) = indijk(
ibeg,
jbeg,kend,inoff,ijnoff)
1107 ijknode(3) = indijk(
iend,
jbeg,kend,inoff,ijnoff)
1109 ELSEIF (lbound==5 .OR. lbound==6)
THEN
1115 DO ic = 1,
grid%nCorns(ireg)
1116 IF (ijknode(1)==
grid%ijkCorn(
ic,ireg) .OR. &
1117 ijknode(2)==
grid%ijkCorn(
ic,ireg) .OR. &
1118 ijknode(3)==
grid%ijkCorn(
ic,ireg) .OR. &
1119 ijknode(4)==
grid%ijkCorn(
ic,ireg))
grid%nghbor(3,1:nbour,
ic)= 0
1143 global%error = errfl
1144 CALL
errorstop( global,err_allocate,__line__ )
1148 global%error = errfl
1149 CALL
errorstop( global,err_deallocate,__line__ )
1177 #include "Indexing.h"
1180 TYPE(t_region
),
POINTER :: regions(:)
1183 INTEGER ::
i,
j,
k,
ic, ireg, nc, nreg, lc, lreg
1187 INTEGER :: ijknode(4), inoff, ijnoff, errfl
1188 REAL(RFREAL) :: edgelen, ds, du2, dumax
1189 REAL(RFREAL),
POINTER :: xyz(:,:)
1190 REAL(RFREAL),
ALLOCATABLE ::
dist(:,:)
1198 global => regions(1)%global
1201 'RFLO_ModMoveGridNconform2.F90' )
1205 ALLOCATE(
dist(global%moveGridRegNc,global%nRegions), stat=errfl )
1206 IF (errfl>0) goto 88
1210 DO ireg = 1,global%nRegions
1211 IF (regions(ireg)%procid==global%myProcid .AND. &
1212 regions(ireg)%active==active)
THEN
1214 grid => regions(ireg)%levels(ilev)%grid
1220 xyz => regions(ireg)%levels(ilev)%gridOld%xyz
1224 edgelen = 1.e+30_rfreal
1229 ijknode(1) = indijk(
i ,
j ,
k ,inoff,ijnoff)
1230 ijknode(2) = indijk(
i+1,
j ,
k ,inoff,ijnoff)
1231 ijknode(3) = indijk(
i ,
j+1,
k ,inoff,ijnoff)
1232 ijknode(4) = indijk(
i ,
j ,
k+1,inoff,ijnoff)
1233 ds =
sqrt((xyz(xcoord,ijknode(2))-xyz(xcoord,ijknode(1)))**2+ &
1234 (xyz(ycoord,ijknode(2))-xyz(ycoord,ijknode(1)))**2+ &
1235 (xyz(zcoord,ijknode(2))-xyz(zcoord,ijknode(1)))**2)
1236 edgelen =
min(edgelen,ds)
1237 ds =
sqrt((xyz(xcoord,ijknode(3))-xyz(xcoord,ijknode(1)))**2+ &
1238 (xyz(ycoord,ijknode(3))-xyz(ycoord,ijknode(1)))**2+ &
1239 (xyz(zcoord,ijknode(3))-xyz(zcoord,ijknode(1)))**2)
1240 edgelen =
min(edgelen,ds)
1241 ds =
sqrt((xyz(xcoord,ijknode(4))-xyz(xcoord,ijknode(1)))**2+ &
1242 (xyz(ycoord,ijknode(4))-xyz(ycoord,ijknode(1)))**2+ &
1243 (xyz(zcoord,ijknode(4))-xyz(zcoord,ijknode(1)))**2)
1244 edgelen =
min(edgelen,ds)
1249 DO ic = 1,
grid%nCorns(ireg)
1250 DO k = 1,global%moveGridNbour
1253 dumax = -1.e+20_rfreal
1255 DO lreg = 1,global%nRegions
1256 DO lc = 1,
grid%nCorns(lreg)
1257 dist(lc,lreg) =
sqrt((
grid%regCornOrig(xcoord,nc,nreg)- &
1258 grid%regCornOrig(xcoord,lc,lreg))**2 + &
1259 (
grid%regCornOrig(ycoord,nc,nreg)- &
1260 grid%regCornOrig(ycoord,lc,lreg))**2 + &
1261 (
grid%regCornOrig(zcoord,nc,nreg)- &
1262 grid%regCornOrig(zcoord,lc,lreg))**2)
1264 IF (
dist(lc,lreg) < 0.1_rfreal*edgelen)
THEN
1265 du2 =
grid%regCornOld(xcoord,lc,lreg)**2 + &
1266 grid%regCornOld(ycoord,lc,lreg)**2 + &
1267 grid%regCornOld(zcoord,lc,lreg)**2
1269 IF ( du2 > dumax )
THEN
1285 DEALLOCATE(
dist, stat=errfl );
IF (errfl>0) goto 99
1293 global%error = errfl
1294 CALL
errorstop( global,err_allocate,__line__ )
1298 global%error = errfl
1299 CALL
errorstop( global,err_deallocate,__line__ )
1326 #include "Indexing.h"
1329 TYPE(t_region
),
POINTER :: regions(:)
1332 INTEGER :: ireg, ico,
k, l
1335 INTEGER :: ilev, interior, ijkcorn, nbour, errfl
1337 INTEGER,
ALLOCATABLE :: nco(:), nreg(:)
1338 REAL(RFREAL) :: rdenom, amp(3), pow,
sum
1339 REAL(RFREAL),
ALLOCATABLE ::
dist(:), wght(:)
1346 global => regions(1)%global
1349 'RFLO_ModMoveGridNconform2.F90' )
1354 amp(1) = global%moveGridAmplifX
1355 amp(2) = global%moveGridAmplifY
1356 amp(3) = global%moveGridAmplifZ
1357 pow = global%moveGridPower
1358 nbour = global%moveGridNbour
1360 ALLOCATE( nco(nbour), stat=errfl );
IF (errfl>0) goto 88
1361 ALLOCATE( nreg(nbour), stat=errfl );
IF (errfl>0) goto 88
1363 ALLOCATE(
dist(nbour), stat=errfl );
IF (errfl>0) goto 88
1364 ALLOCATE( wght(nbour), stat=errfl );
IF (errfl>0) goto 88
1366 DO ireg = 1,global%nRegions
1367 IF (regions(ireg)%procid==global%myProcid .AND. &
1368 regions(ireg)%active==active)
THEN
1370 grid => regions(ireg)%levels(ilev)%grid
1372 DO ico = 1,
grid%nCorns(ireg)
1373 nco(1:nbour) =
grid%nghbor(1,1:nbour,ico)
1374 nreg(1:nbour) =
grid%nghbor(2,1:nbour,ico)
1375 interior =
grid%nghbor(3,1 ,ico)
1377 IF (interior==1)
THEN
1379 dist(
k) = (
grid%regCornOrig(xcoord,nco(
k),nreg(
k)) - &
1380 grid%regCornOrig(xcoord,ico,ireg))**2 + &
1381 (
grid%regCornOrig(ycoord,nco(
k),nreg(
k)) - &
1382 grid%regCornOrig(ycoord,ico,ireg))**2 + &
1383 (
grid%regCornOrig(zcoord,nco(
k),nreg(
k)) - &
1384 grid%regCornOrig(zcoord,ico,ireg))**2
1392 rdenom = 1._rfreal/
sum
1398 CALL
errorstop( global,err_illegal_value,__line__, &
1399 'invalid weights for global frame motion')
1404 sum =
sum + wght(l)*
grid%regCornOld(xcoord,nco(l),nreg(l))
1406 grid%regCorn(xcoord,ico,ireg) =
sum
1410 sum =
sum + wght(l)*
grid%regCornOld(ycoord,nco(l),nreg(l))
1412 grid%regCorn(ycoord,ico,ireg) =
sum
1416 sum =
sum + wght(l)*
grid%regCornOld(zcoord,nco(l),nreg(l))
1418 grid%regCorn(zcoord,ico,ireg) =
sum
1425 DO ireg = 1,global%nRegions
1426 IF (regions(ireg)%procid==global%myProcid .AND. &
1427 regions(ireg)%active==active)
THEN
1429 grid => regions(ireg)%levels(ilev)%grid
1431 DO ico = 1,
grid%nCorns(ireg)
1432 interior =
grid%nghbor(3, 1, ico)
1433 IF (interior==1)
THEN
1434 grid%regCornOld(xcoord,ico,ireg)=amp(1)*
grid%regCorn(xcoord,ico,ireg)
1435 grid%regCornOld(ycoord,ico,ireg)=amp(2)*
grid%regCorn(ycoord,ico,ireg)
1436 grid%regCornOld(zcoord,ico,ireg)=amp(3)*
grid%regCorn(zcoord,ico,ireg)
1438 ijkcorn =
grid%ijkCorn(ico,ireg)
1439 grid%xyz(xcoord,ijkcorn) =
grid%regCorn(xcoord,ico,ireg)
1440 grid%xyz(ycoord,ijkcorn) =
grid%regCorn(ycoord,ico,ireg)
1441 grid%xyz(zcoord,ijkcorn) =
grid%regCorn(zcoord,ico,ireg)
1450 DEALLOCATE( nco, stat=errfl );
IF (errfl>0) goto 99
1451 DEALLOCATE( nreg, stat=errfl );
IF (errfl>0) goto 99
1453 DEALLOCATE(
dist, stat=errfl );
IF (errfl>0) goto 99
1454 DEALLOCATE( wght, stat=errfl );
IF (errfl>0) goto 99
1462 global%error = errfl
1463 CALL
errorstop( global,err_allocate,__line__ )
1467 global%error = errfl
1468 CALL
errorstop( global,err_deallocate,__line__ )
1502 LOGICAL :: somemoved
1505 TYPE(t_region
),
POINTER :: regions(:)
1508 INTEGER :: ireg, iter, ipatch,
i,
j,
k, ijkn
1511 INTEGER :: ilev, bctype
1519 global => regions(1)%global
1522 'RFLO_ModMoveGridNconform2.F90' )
1529 DO ireg=1,global%nRegions
1530 IF (regions(ireg)%procid==global%myProcid .AND. &
1531 regions(ireg)%active==active .AND. &
1532 regions(ireg)%mixtInput%moveGrid)
THEN
1534 grid => regions(ireg)%levels(ilev)%grid
1535 gridold => regions(ireg)%levels(ilev)%gridOld
1540 gridold%indSvel =
grid%indSvel
1541 gridold%ipc =
grid%ipc
1542 gridold%jpc =
grid%jpc
1543 gridold%kpc =
grid%kpc
1544 gridold%xyz(:,:) =
grid%xyz(:,:)
1545 gridold%si(:,:) =
grid%si(:,:)
1546 gridold%sj(:,:) =
grid%sj(:,:)
1547 gridold%sk(:,:) =
grid%sk(:,:)
1548 gridold%vol(:) =
grid%vol(:)
1576 DO ireg=1,global%nRegions
1577 IF (regions(ireg)%procid==global%myProcid .AND. &
1578 regions(ireg)%active==active .AND. &
1579 regions(ireg)%mixtInput%moveGrid)
THEN
1581 grid => regions(ireg)%levels(ilev)%grid
1582 gridold => regions(ireg)%levels(ilev)%gridOld
1590 gridold%xyzOld,
grid%xyz )
1607 gridold%xyzOld,
grid%xyz )
1640 #include "Indexing.h"
1643 TYPE(t_region
) :: region
1646 INTEGER :: ireg, ipatch,
i,
j,
k
1649 INTEGER :: ilev, ijkn, lbound
1657 global => region%global
1660 'RFLO_ModMoveGridNconform2.F90' )
1667 grid => region%levels(ilev)%grid
1671 DO ipatch=1,region%nPatches
1672 patch => region%levels(ilev)%patches(ipatch)
1673 lbound =
patch%lbound
1675 IF (
patch%bcMotion == bc_external .AND. &
1676 (
grid%allExternal(lbound).EQV..false.))
THEN
1684 ijkn = indijk(
i,
j,
k,inoff,ijnoff)
1685 grid%xyz(xcoord,ijkn) =
grid%xyzOld(xcoord,ijkn)
1686 grid%xyz(ycoord,ijkn) =
grid%xyzOld(ycoord,ijkn)
1687 grid%xyz(zcoord,ijkn) =
grid%xyzOld(zcoord,ijkn)
1725 arclen12,arclen34,arclen56,xyzold,dnode )
1731 #include "Indexing.h"
1734 LOGICAL :: boundmoved(6), allexternal(6), edgemoved(12)
1737 REAL(RFREAL),
POINTER :: arclen12(:,:), arclen34(:,:), arclen56(:,:)
1738 REAL(RFREAL),
POINTER :: dnode(:,:), xyzold(:,:)
1740 TYPE(t_region
) :: region
1743 INTEGER :: iedge, ind
1747 INTEGER :: indbeg, indend, ijkn, ijkn1, ijknbeg, ijknend, inoff, ijnoff
1748 INTEGER :: switch(12,11), intertype, iedgeglo
1750 REAL(RFREAL) :: arclen, ds,
s, dn(3), dnbeg(3), dnend(3)
1756 'RFLO_ModMoveGridNconform2.F90' )
1778 switch( 1,:) = (/5, 6, 1, 3, 56,
kpnbeg, kpnend,
ipnbeg,
jpnbeg, 1, 2/)
1779 switch( 2,:) = (/3, 4, 1, 6, 34,
jpnbeg,
jpnend, kpnend,
ipnbeg, 2, 3/)
1780 switch( 3,:) = (/5, 6, 1, 4, 56,
kpnbeg, kpnend,
ipnbeg,
jpnend, 4, 3/)
1781 switch( 4,:) = (/3, 4, 1, 5, 34,
jpnbeg,
jpnend,
kpnbeg,
ipnbeg, 1, 4/)
1782 switch( 5,:) = (/5, 6, 2, 3, 56,
kpnbeg, kpnend,
ipnend,
jpnbeg, 5, 6/)
1783 switch( 6,:) = (/3, 4, 2, 6, 34,
jpnbeg,
jpnend, kpnend,
ipnend, 6, 7/)
1784 switch( 7,:) = (/5, 6, 2, 4, 56,
kpnbeg, kpnend,
ipnend,
jpnend, 8, 7/)
1785 switch( 8,:) = (/3, 4, 2, 5, 34,
jpnbeg,
jpnend,
kpnbeg,
ipnend, 5, 8/)
1786 switch( 9,:) = (/1, 2, 3, 5, 12,
ipnbeg,
ipnend,
jpnbeg,
kpnbeg, 1, 5/)
1787 switch(10,:) = (/1, 2, 3, 6, 12,
ipnbeg,
ipnend,
jpnbeg, kpnend, 2, 6/)
1788 switch(11,:) = (/1, 2, 4, 5, 12,
ipnbeg,
ipnend,
jpnend,
kpnbeg, 4, 8/)
1789 switch(12,:) = (/1, 2, 4, 6, 12,
ipnbeg,
ipnend,
jpnend, kpnend, 3, 7/)
1793 edgemoved(:) = .false.
1796 IF (boundmoved(1) .AND. allexternal(1))
THEN
1797 edgemoved( 1) = .true.; edgemoved( 2) = .true.
1798 edgemoved( 3) = .true.; edgemoved( 4) = .true.
1800 IF (boundmoved(2) .AND. allexternal(2))
THEN
1801 edgemoved( 5) = .true.; edgemoved( 6) = .true.
1802 edgemoved( 7) = .true.; edgemoved( 8) = .true.
1804 IF (boundmoved(3) .AND. allexternal(3))
THEN
1805 edgemoved( 1) = .true.; edgemoved( 5) = .true.
1806 edgemoved( 9) = .true.; edgemoved(10) = .true.
1808 IF (boundmoved(4) .AND. allexternal(4))
THEN
1809 edgemoved( 3) = .true.; edgemoved( 7) = .true.
1810 edgemoved(11) = .true.; edgemoved(12) = .true.
1812 IF (boundmoved(5) .AND. allexternal(5))
THEN
1813 edgemoved( 4) = .true.; edgemoved( 8) = .true.
1814 edgemoved( 9) = .true.; edgemoved(11) = .true.
1816 IF (boundmoved(6) .AND. allexternal(6))
THEN
1817 edgemoved( 2) = .true.; edgemoved( 6) = .true.
1818 edgemoved(10) = .true.; edgemoved(12) = .true.
1825 IF (.NOT.edgemoved(iedge))
THEN
1827 edgemoved(iedge) = .true.
1830 indbeg = switch(iedge,6)
1831 indend = switch(iedge,7)
1832 l1c = switch(iedge,8)
1833 l2c = switch(iedge,9)
1836 IF (iedge==11) iedgeglo=12
1837 IF (iedge==12) iedgeglo=11
1838 interact = region%levels(ilev)%edgeCells(iedgeglo)%interact
1839 intertype = region%levels(ilev)%edgeCells(iedgeglo)%interType
1841 IF (((region%levels(ilev)%grid%nghbor(3,1,switch(iedge,10))==1 .OR. &
1842 region%levels(ilev)%grid%nghbor(3,1,switch(iedge,11))==1) .AND. &
1843 ((interact .EQV. .true.) .AND. (intertype==edge_interact_full))) &
1845 region%levels(ilev)%grid%nghbor(3,1,switch(iedge,10))==2 .OR. &
1846 region%levels(ilev)%grid%nghbor(3,1,switch(iedge,11))==2)
THEN
1853 DO ind=indbeg+1,indend-1
1854 IF (switch(iedge,5) == 12)
THEN
1855 ijkn = indijk(ind ,l1c,l2c,inoff,ijnoff)
1856 ijkn1 = indijk(ind-1 ,l1c,l2c,inoff,ijnoff)
1857 ijknbeg = indijk(indbeg,l1c,l2c,inoff,ijnoff)
1858 ijknend = indijk(indend,l1c,l2c,inoff,ijnoff)
1859 arclen = arclen12(l1c,l2c)
1860 dnbeg(:) = dnode(:,ijknbeg)
1861 dnend(:) = dnode(:,ijknend)
1862 ELSE IF (switch(iedge,5) == 34)
THEN
1863 ijkn = indijk(l2c,ind ,l1c,inoff,ijnoff)
1864 ijkn1 = indijk(l2c,ind-1 ,l1c,inoff,ijnoff)
1865 ijknbeg = indijk(l2c,indbeg,l1c,inoff,ijnoff)
1866 ijknend = indijk(l2c,indend,l1c,inoff,ijnoff)
1867 arclen = arclen34(l1c,l2c)
1868 dnbeg(:) = dnode(:,ijknbeg)
1869 dnend(:) = dnode(:,ijknend)
1870 ELSE IF (switch(iedge,5) == 56)
THEN
1871 ijkn = indijk(l1c,l2c,ind ,inoff,ijnoff)
1872 ijkn1 = indijk(l1c,l2c,ind-1 ,inoff,ijnoff)
1873 ijknbeg = indijk(l1c,l2c,indbeg,inoff,ijnoff)
1874 ijknend = indijk(l1c,l2c,indend,inoff,ijnoff)
1875 arclen = arclen56(l1c,l2c)
1876 dnbeg(:) = dnode(:,ijknbeg)
1877 dnend(:) = dnode(:,ijknend)
1879 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
1880 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
1881 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
1885 dnode(:,ijkn) = dn(:)
1922 #include "Indexing.h"
1925 TYPE(t_region
) :: region
1926 LOGICAL :: edgemoved(12)
1927 REAL(RFREAL),
POINTER :: dnode(:,:), xyzold(:,:)
1930 INTEGER :: ipedge, ind, ipatch,
ic
1933 INTEGER :: ilev,
ibeg,
iend,
jbeg,
jend,
kbeg, kend, ib, ie, jb, je , kb, ke
1934 INTEGER :: indbeg, indend, ijkn, ijkn1, ijknbeg, ijknend, inoff, ijnoff
1935 INTEGER :: lbound, intb, inte, ireg, iedge, intertype, ijktest, iset
1937 REAL(RFREAL) :: arclen, ds,
s, dn(3), dnbeg(3), dnend(3), eps
1944 'RFLO_ModMoveGridNconform2.F90' )
1948 eps = epsilon( 1._rfreal )
1952 ireg = region%iRegionGlobal
1956 grid => region%levels(ilev)%grid
1960 edgemoved(:) = .true.
1964 DO ipatch=1,region%nPatches
1965 patch => region%levels(ilev)%patches(ipatch)
1966 lbound =
patch%lbound
1971 IF (
patch%bcMotion == bc_external) goto 777
1974 IF (lbound==1 .OR. lbound==2)
THEN
1984 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
1985 ijknend = indijk(ie,je,ke,inoff,ijnoff)
1986 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
1994 intertype = region%levels(ilev)%edgeCells(iedge)%interType
1995 DO ic = 1,
grid%nCorns(ireg)
1996 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
1997 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
1999 patch%position(1) = intb
2000 patch%position(2) = inte
2003 DO ind=indbeg+1,indend-1
2004 ijkn = indijk(
ibeg,
jbeg,ind ,inoff,ijnoff)
2005 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2006 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2007 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2013 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2014 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2017 (intb==2 .OR. inte==2) &
2019 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2020 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2021 100._rfreal*eps)) .AND. (iset==0))
THEN
2023 dnbeg(:) = dnode(:,ijknbeg)
2024 dnend(:) = dnode(:,ijknend)
2027 DO ind=indbeg+1,indend
2028 ijkn = indijk(
ibeg,
jbeg,ind ,inoff,ijnoff)
2029 ijkn1 = indijk(
ibeg,
jbeg,ind-1,inoff,ijnoff)
2031 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2032 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2033 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2036 DO ind=indbeg+1,indend-1
2037 ijkn = indijk(
ibeg,
jbeg,ind ,inoff,ijnoff)
2038 ijkn1 = indijk(
ibeg,
jbeg,ind-1,inoff,ijnoff)
2039 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2040 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2041 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2044 dnode(:,ijkn) = dn(:)
2047 ELSEIF (ipedge==2)
THEN
2056 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2057 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2058 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2066 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2067 DO ic = 1,
grid%nCorns(ireg)
2068 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2069 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2074 patch%position(2) = intb
2075 patch%position(3) = inte
2078 DO ind=indbeg+1,indend-1
2079 ijkn = indijk(
ibeg,ind ,kend,inoff,ijnoff)
2080 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2081 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2082 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2088 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2089 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2092 (intb==2 .OR. inte==2) &
2094 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2095 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2096 100._rfreal*eps)) .AND. (iset==0))
THEN
2098 dnbeg(:) = dnode(:,ijknbeg)
2099 dnend(:) = dnode(:,ijknend)
2102 DO ind=indbeg+1,indend
2103 ijkn = indijk(
ibeg,ind ,kend,inoff,ijnoff)
2104 ijkn1 = indijk(
ibeg,ind-1,kend,inoff,ijnoff)
2106 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2107 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2108 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2111 DO ind=indbeg+1,indend-1
2112 ijkn = indijk(
ibeg,ind ,kend,inoff,ijnoff)
2113 ijkn1 = indijk(
ibeg,ind-1,kend,inoff,ijnoff)
2114 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2115 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2116 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2119 dnode(:,ijkn) = dn(:)
2122 ELSEIF (ipedge==3)
THEN
2131 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2132 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2133 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2141 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2142 DO ic = 1,
grid%nCorns(ireg)
2143 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2144 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2146 patch%position(3) = inte
2147 patch%position(4) = intb
2150 DO ind=indbeg+1,indend-1
2151 ijkn = indijk(
ibeg,
jend,ind ,inoff,ijnoff)
2152 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2153 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2154 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2160 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2161 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2164 (intb==2 .OR. inte==2) &
2166 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2167 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2168 100._rfreal*eps)) .AND. (iset==0))
THEN
2170 dnbeg(:) = dnode(:,ijknbeg)
2171 dnend(:) = dnode(:,ijknend)
2174 DO ind=indbeg+1,indend
2175 ijkn = indijk(
ibeg,
jend,ind ,inoff,ijnoff)
2176 ijkn1 = indijk(
ibeg,
jend,ind-1,inoff,ijnoff)
2178 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2179 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2180 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2183 DO ind=indbeg+1,indend-1
2184 ijkn = indijk(
ibeg,
jend,ind ,inoff,ijnoff)
2185 ijkn1 = indijk(
ibeg,
jend,ind-1,inoff,ijnoff)
2186 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2187 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2188 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2191 dnode(:,ijkn) = dn(:)
2194 ELSEIF (ipedge==4)
THEN
2203 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2204 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2205 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2213 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2214 DO ic = 1,
grid%nCorns(ireg)
2215 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2216 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2218 patch%position(4) = inte
2219 patch%position(1) = intb
2222 DO ind=indbeg+1,indend-1
2223 ijkn = indijk(
ibeg,ind ,
kbeg,inoff,ijnoff)
2224 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2225 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2226 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2232 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2233 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2236 (intb==2 .OR. inte==2) &
2238 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2239 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2240 100._rfreal*eps)) .AND. (iset==0))
THEN
2242 dnbeg(:) = dnode(:,ijknbeg)
2243 dnend(:) = dnode(:,ijknend)
2246 DO ind=indbeg+1,indend
2247 ijkn = indijk(
ibeg,ind ,
kbeg,inoff,ijnoff)
2248 ijkn1 = indijk(
ibeg,ind-1,
kbeg,inoff,ijnoff)
2250 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2251 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2252 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2255 DO ind=indbeg+1,indend-1
2256 ijkn = indijk(
ibeg,ind ,
kbeg,inoff,ijnoff)
2257 ijkn1 = indijk(
ibeg,ind-1,
kbeg,inoff,ijnoff)
2258 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2259 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2260 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2263 dnode(:,ijkn) = dn(:)
2271 IF (lbound==3 .OR. lbound==4)
THEN
2281 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2282 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2283 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2291 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2292 DO ic = 1,
grid%nCorns(ireg)
2293 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2294 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2296 patch%position(1) = intb
2297 patch%position(2) = inte
2300 DO ind=indbeg+1,indend-1
2301 ijkn = indijk(ind ,
jbeg,
kbeg,inoff,ijnoff)
2302 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2303 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2304 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2310 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2311 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2314 (intb==2 .OR. inte==2) &
2316 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2317 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2318 100._rfreal*eps)) .AND. (iset==0))
THEN
2320 dnbeg(:) = dnode(:,ijknbeg)
2321 dnend(:) = dnode(:,ijknend)
2324 DO ind=indbeg+1,indend
2325 ijkn = indijk(ind ,
jbeg,
kbeg,inoff,ijnoff)
2326 ijkn1 = indijk(ind-1,
jbeg,
kbeg,inoff,ijnoff)
2328 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2329 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2330 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2333 DO ind=indbeg+1,indend-1
2334 ijkn = indijk(ind ,
jbeg,
kbeg,inoff,ijnoff)
2335 ijkn1 = indijk(ind-1,
jbeg,
kbeg,inoff,ijnoff)
2336 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2337 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2338 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2341 dnode(:,ijkn) = dn(:)
2344 ELSEIF (ipedge==2)
THEN
2353 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2354 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2355 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2363 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2364 DO ic = 1,
grid%nCorns(ireg)
2365 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2366 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(
iend,
jbeg,ind ,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(
iend,
jbeg,ind ,inoff,ijnoff)
2398 ijkn1 = indijk(
iend,
jbeg,ind-1,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(
iend,
jbeg,ind ,inoff,ijnoff)
2407 ijkn1 = indijk(
iend,
jbeg,ind-1,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(ind ,
jbeg,kend,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(ind ,
jbeg,kend,inoff,ijnoff)
2470 ijkn1 = indijk(ind-1,
jbeg,kend,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(ind ,
jbeg,kend,inoff,ijnoff)
2479 ijkn1 = indijk(ind-1,
jbeg,kend,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,
jbeg,ind ,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,
jbeg,ind ,inoff,ijnoff)
2542 ijkn1 = indijk(
ibeg,
jbeg,ind-1,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,
jbeg,ind ,inoff,ijnoff)
2551 ijkn1 = indijk(
ibeg,
jbeg,ind-1,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(:)
2563 IF (lbound==5 .OR. lbound==6)
THEN
2573 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2574 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2575 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2583 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2584 DO ic = 1,
grid%nCorns(ireg)
2585 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2586 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2588 patch%position(1) = intb
2589 patch%position(2) = inte
2592 DO ind=indbeg+1,indend-1
2593 ijkn = indijk(
ibeg,ind ,
kbeg,inoff,ijnoff)
2594 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2595 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2596 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2602 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2603 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2606 (intb==2 .OR. inte==2) &
2608 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2609 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2610 100._rfreal*eps)) .AND. (iset==0))
THEN
2612 dnbeg(:) = dnode(:,ijknbeg)
2613 dnend(:) = dnode(:,ijknend)
2616 DO ind=indbeg+1,indend
2617 ijkn = indijk(
ibeg,ind ,
kbeg,inoff,ijnoff)
2618 ijkn1 = indijk(
ibeg,ind-1,
kbeg,inoff,ijnoff)
2620 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2621 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2622 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2625 DO ind=indbeg+1,indend-1
2626 ijkn = indijk(
ibeg,ind ,
kbeg,inoff,ijnoff)
2627 ijkn1 = indijk(
ibeg,ind-1,
kbeg,inoff,ijnoff)
2628 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2629 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2630 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2633 dnode(:,ijkn) = dn(:)
2636 ELSEIF (ipedge==2)
THEN
2645 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2646 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2647 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2655 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2656 DO ic = 1,
grid%nCorns(ireg)
2657 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2658 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2660 patch%position(2) = intb
2661 patch%position(3) = inte
2664 DO ind=indbeg+1,indend-1
2665 ijkn = indijk(ind ,
jend,
kbeg,inoff,ijnoff)
2666 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2667 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2668 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2674 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2675 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2678 (intb==2 .OR. inte==2) &
2680 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2681 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2682 100._rfreal*eps)) .AND. (iset==0))
THEN
2684 dnbeg(:) = dnode(:,ijknbeg)
2685 dnend(:) = dnode(:,ijknend)
2688 DO ind=indbeg+1,indend
2689 ijkn = indijk(ind ,
jend,
kbeg,inoff,ijnoff)
2690 ijkn1 = indijk(ind-1,
jend,
kbeg,inoff,ijnoff)
2692 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2693 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2694 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2697 DO ind=indbeg+1,indend-1
2698 ijkn = indijk(ind ,
jend,
kbeg,inoff,ijnoff)
2699 ijkn1 = indijk(ind-1,
jend,
kbeg,inoff,ijnoff)
2700 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2701 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2702 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2705 dnode(:,ijkn) = dn(:)
2708 ELSEIF (ipedge==3)
THEN
2717 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2718 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2719 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2727 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2728 DO ic = 1,
grid%nCorns(ireg)
2729 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2730 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2732 patch%position(3) = inte
2733 patch%position(4) = intb
2736 DO ind=indbeg+1,indend-1
2737 ijkn = indijk(
iend,ind ,
kbeg,inoff,ijnoff)
2738 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2739 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2740 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2746 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2747 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2750 (intb==2 .OR. inte==2) &
2752 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2753 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2754 100._rfreal*eps)) .AND. (iset==0))
THEN
2756 dnbeg(:) = dnode(:,ijknbeg)
2757 dnend(:) = dnode(:,ijknend)
2760 DO ind=indbeg+1,indend
2761 ijkn = indijk(
iend,ind ,
kbeg,inoff,ijnoff)
2762 ijkn1 = indijk(
iend,ind-1,
kbeg,inoff,ijnoff)
2764 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2765 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2766 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2769 DO ind=indbeg+1,indend-1
2770 ijkn = indijk(
iend,ind ,
kbeg,inoff,ijnoff)
2771 ijkn1 = indijk(
iend,ind-1,
kbeg,inoff,ijnoff)
2772 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2773 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2774 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2777 dnode(:,ijkn) = dn(:)
2780 ELSEIF (ipedge==4)
THEN
2789 ijknbeg = indijk(ib,jb,kb,inoff,ijnoff)
2790 ijknend = indijk(ie,je,ke,inoff,ijnoff)
2791 ijktest = indijk((ib+ie)/2,(jb+je)/2,(kb+ke)/2,inoff,ijnoff)
2799 intertype = region%levels(ilev)%edgeCells(iedge)%interType
2800 DO ic = 1,
grid%nCorns(ireg)
2801 IF (
grid%ijkCorn(
ic,ireg)==ijknbeg) intb =
grid%nghbor(3,1,
ic)
2802 IF (
grid%ijkCorn(
ic,ireg)==ijknend) inte =
grid%nghbor(3,1,
ic)
2804 patch%position(4) = inte
2805 patch%position(1) = intb
2808 DO ind=indbeg+1,indend-1
2809 ijkn = indijk(ind ,
jbeg,
kbeg,inoff,ijnoff)
2810 IF (abs( dnode(xcoord,ijkn) ) > 100._rfreal*eps .OR. &
2811 abs( dnode(ycoord,ijkn) ) > 100._rfreal*eps .OR. &
2812 abs( dnode(zcoord,ijkn) ) > 100._rfreal*eps)
THEN
2818 IF ((((intb/=0 .OR. inte/=0) .AND. (intertype==edge_interact_full .AND.&
2819 region%levels(ilev)%edgeCells(iedge)%interact .EQV. .true.)) &
2822 (intb==2 .OR. inte==2) &
2824 ((intb==0 .AND. inte==0) .AND. abs(dnode(xcoord,ijktest)+ &
2825 dnode(ycoord,ijktest)+dnode(zcoord,ijktest)) < &
2826 100._rfreal*eps)) .AND. (iset==0))
THEN
2828 dnbeg(:) = dnode(:,ijknbeg)
2829 dnend(:) = dnode(:,ijknend)
2832 DO ind=indbeg+1,indend
2833 ijkn = indijk(ind ,
jbeg,
kbeg,inoff,ijnoff)
2834 ijkn1 = indijk(ind-1,
jbeg,
kbeg,inoff,ijnoff)
2836 sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2837 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2838 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2841 DO ind=indbeg+1,indend-1
2842 ijkn = indijk(ind ,
jbeg,
kbeg,inoff,ijnoff)
2843 ijkn1 = indijk(ind-1,
jbeg,
kbeg,inoff,ijnoff)
2844 ds = ds +
sqrt((xyzold(xcoord,ijkn)-xyzold(xcoord,ijkn1))**2 + &
2845 (xyzold(ycoord,ijkn)-xyzold(ycoord,ijkn1))**2 + &
2846 (xyzold(zcoord,ijkn)-xyzold(zcoord,ijkn1))**2)
2849 dnode(:,ijkn) = dn(:)
2891 TYPE(t_region
),
POINTER :: regions(:)
2895 INTEGER :: ireg, ipatch, ipass
2898 INTEGER :: bctype, iregsrc, ipatchsrc, ltype, npass
2900 TYPE(t_grid),
POINTER ::
grid, gridold, gridsrc
2906 global => regions(1)%global
2909 'RFLO_ModMoveGridNconform2.F90' )
2914 npass = global%moveGridNsmatch
2919 DO ireg=1,global%nRegions
2920 IF (regions(ireg)%procid==global%myProcid .AND. &
2921 regions(ireg)%active==active .AND. &
2922 regions(ireg)%mixtInput%moveGrid)
THEN
2924 grid => regions(ireg)%levels(1)%grid
2925 gridold => regions(ireg)%levels(1)%gridOld
2927 DO ipatch=1,regions(ireg)%nPatches
2928 patch => regions(ireg)%levels(1)%patches(ipatch)
2929 bctype =
patch%bcType
2930 IF ((bctype>=bc_regionconf .AND. bctype<=bc_regionconf+bc_range) .OR. &
2931 (bctype>=bc_tra_peri .AND. bctype<=bc_tra_peri +bc_range) .OR. &
2932 (bctype>=bc_rot_peri .AND. bctype<=bc_rot_peri +bc_range))
THEN
2933 iregsrc =
patch%srcRegion
2934 ipatchsrc =
patch%srcPatch
2935 patchsrc => regions(iregsrc)%levels(1)%patches(ipatchsrc)
2936 gridsrc => regions(iregsrc)%levels(1)%grid
2938 IF (regions(iregsrc)%procid == global%myProcid)
THEN
2940 patch,patchsrc,.false., &
2941 grid%xyz,gridsrc%xyz )
2942 IF (ipass < npass .AND. ltype==1)
THEN
2944 gridold%xyzOld,
grid%xyz )
2948 ELSEIF (ipass < npass .AND. ltype==2)
THEN
2952 grid%arcLen56,gridold%xyzOld,
grid%xyz )
2957 gridold%xyzOld,
grid%xyz )
2971 DO ireg=1,global%nRegions
2972 IF (regions(ireg)%procid==global%myProcid .AND. &
2973 regions(ireg)%active==active .AND. &
2974 regions(ireg)%mixtInput%moveGrid)
THEN
2976 grid => regions(ireg)%levels(1)%grid
2977 gridold => regions(ireg)%levels(1)%gridOld
2979 DO ipatch=1,regions(ireg)%nPatches
2980 patch => regions(ireg)%levels(1)%patches(ipatch)
2981 bctype =
patch%bcType
2982 IF ((bctype>=bc_regionconf .AND. bctype<=bc_regionconf+bc_range) .OR. &
2983 (bctype>=bc_tra_peri .AND. bctype<=bc_tra_peri +bc_range) .OR. &
2984 (bctype>=bc_rot_peri .AND. bctype<=bc_rot_peri +bc_range))
THEN
2985 iregsrc =
patch%srcRegion
2986 ipatchsrc =
patch%srcPatch
2987 patchsrc => regions(iregsrc)%levels(1)%patches(ipatchsrc)
2988 gridsrc => regions(iregsrc)%levels(1)%grid
2990 IF (regions(iregsrc)%procid /= global%myProcid)
THEN
2994 IF (ipass < npass .AND. ltype==1)
THEN
2996 gridold%xyzOld,
grid%xyz )
3000 ELSEIF (ipass < npass .AND. ltype==2)
THEN
3004 grid%arcLen56,gridold%xyzOld,
grid%xyz )
3009 gridold%xyzOld,
grid%xyz )
3020 DO ireg=1,global%nRegions
3021 IF (regions(ireg)%procid==global%myProcid .AND. &
3022 regions(ireg)%active==active .AND. &
3023 regions(ireg)%mixtInput%moveGrid)
THEN
3058 arclen12,arclen34,arclen56, &
3065 #include "Indexing.h"
3068 LOGICAL :: boundmoved(6), edgemoved(12)
3070 REAL(RFREAL),
POINTER :: arclen12(:,:), arclen34(:,:), arclen56(:,:)
3071 REAL(RFREAL),
POINTER :: dnode(:,:), xyzold(:,:)
3073 TYPE(t_region
) :: region
3076 INTEGER :: ibound, l1, l2
3080 INTEGER :: l1b, l1e, l2b, l2e, lc, ijkn, ijke(4), ijkem(4), inoff, ijnoff
3081 INTEGER :: switch(6,9)
3085 REAL(RFREAL) :: arclen(4), ds(4),
s(4)
3086 REAL(RFREAL) :: corner(3,8), e1(3), e2(3), e3(3), e4(3), &
3087 p1(3), p2(3), p3(3), p4(3), dn(3)
3092 'RFLO_ModMoveGridNconform2.F90' )
3117 corner(:,2) = dnode(:,indijk(
ipnbeg,
jpnbeg,kpnend,inoff,ijnoff))
3118 corner(:,3) = dnode(:,indijk(
ipnbeg,
jpnend,kpnend,inoff,ijnoff))
3121 corner(:,6) = dnode(:,indijk(
ipnend,
jpnbeg,kpnend,inoff,ijnoff))
3122 corner(:,7) = dnode(:,indijk(
ipnend,
jpnend,kpnend,inoff,ijnoff))
3132 IF ((edgemoved(switch(ibound,1)) .OR. edgemoved(switch(ibound,2)) .OR. &
3133 edgemoved(switch(ibound,3)) .OR. edgemoved(switch(ibound,4))))
THEN
3135 l1b = switch(ibound,5)
3136 l1e = switch(ibound,6)
3137 l2b = switch(ibound,7)
3138 l2e = switch(ibound,8)
3139 lc = switch(ibound,9)
3141 IF (ibound == 1)
THEN
3146 ELSE IF (ibound == 2)
THEN
3151 ELSE IF (ibound == 3)
THEN
3156 ELSE IF (ibound == 4)
THEN
3161 ELSE IF (ibound == 5)
THEN
3166 ELSE IF (ibound == 6)
THEN
3179 IF (ibound==1 .OR. ibound==2)
THEN
3180 ijkn = indijk(lc,l1 ,l2 ,inoff,ijnoff)
3181 ijke(1) = indijk(lc,
jpnbeg,l2 ,inoff,ijnoff)
3182 ijkem(1) = indijk(lc,
jpnbeg,l2-1 ,inoff,ijnoff)
3183 ijke(2) = indijk(lc,
jpnend,l2 ,inoff,ijnoff)
3184 ijkem(2) = indijk(lc,
jpnend,l2-1 ,inoff,ijnoff)
3185 ijke(3) = indijk(lc,l1 ,
kpnbeg,inoff,ijnoff)
3186 ijkem(3) = indijk(lc,l1-1 ,
kpnbeg,inoff,ijnoff)
3187 ijke(4) = indijk(lc,l1 ,kpnend,inoff,ijnoff)
3188 ijkem(4) = indijk(lc,l1-1 ,kpnend,inoff,ijnoff)
3189 arclen(1) = arclen56(lc,
jpnbeg)
3190 arclen(2) = arclen56(lc,
jpnend)
3191 arclen(3) = arclen34(
kpnbeg,lc)
3192 arclen(4) = arclen34(kpnend,lc)
3193 ELSE IF (ibound==3 .OR. ibound==4)
THEN
3194 ijkn = indijk(l2 ,lc,l1 ,inoff,ijnoff)
3195 ijke(1) = indijk(l2 ,lc,
kpnbeg,inoff,ijnoff)
3196 ijkem(1) = indijk(l2-1 ,lc,
kpnbeg,inoff,ijnoff)
3197 ijke(2) = indijk(l2 ,lc,kpnend,inoff,ijnoff)
3198 ijkem(2) = indijk(l2-1 ,lc,kpnend,inoff,ijnoff)
3199 ijke(3) = indijk(
ipnbeg,lc,l1 ,inoff,ijnoff)
3200 ijkem(3) = indijk(
ipnbeg,lc,l1-1 ,inoff,ijnoff)
3201 ijke(4) = indijk(
ipnend,lc,l1 ,inoff,ijnoff)
3202 ijkem(4) = indijk(
ipnend,lc,l1-1 ,inoff,ijnoff)
3203 arclen(1) = arclen12(lc,
kpnbeg)
3204 arclen(2) = arclen12(lc,kpnend)
3205 arclen(3) = arclen56(
ipnbeg,lc)
3206 arclen(4) = arclen56(
ipnend,lc)
3207 ELSE IF (ibound==5 .OR. ibound==6)
THEN
3208 ijkn = indijk(l1 ,l2 ,lc,inoff,ijnoff)
3209 ijke(1) = indijk(
ipnbeg,l2 ,lc,inoff,ijnoff)
3210 ijkem(1) = indijk(
ipnbeg,l2-1 ,lc,inoff,ijnoff)
3211 ijke(2) = indijk(
ipnend,l2 ,lc,inoff,ijnoff)
3212 ijkem(2) = indijk(
ipnend,l2-1 ,lc,inoff,ijnoff)
3213 ijke(3) = indijk(l1 ,
jpnbeg,lc,inoff,ijnoff)
3214 ijkem(3) = indijk(l1-1 ,
jpnbeg,lc,inoff,ijnoff)
3215 ijke(4) = indijk(l1 ,
jpnend,lc,inoff,ijnoff)
3216 ijkem(4) = indijk(l1-1 ,
jpnend,lc,inoff,ijnoff)
3217 arclen(1) = arclen34(lc,
ipnbeg)
3218 arclen(2) = arclen34(lc,
ipnend)
3219 arclen(3) = arclen12(
jpnbeg,lc)
3220 arclen(4) = arclen12(
jpnend,lc)
3224 sqrt((xyzold(xcoord,ijke(1))-xyzold(xcoord,ijkem(1)))**2 + &
3225 (xyzold(ycoord,ijke(1))-xyzold(ycoord,ijkem(1)))**2 + &
3226 (xyzold(zcoord,ijke(1))-xyzold(zcoord,ijkem(1)))**2)
3228 sqrt((xyzold(xcoord,ijke(2))-xyzold(xcoord,ijkem(2)))**2 + &
3229 (xyzold(ycoord,ijke(2))-xyzold(ycoord,ijkem(2)))**2 + &
3230 (xyzold(zcoord,ijke(2))-xyzold(zcoord,ijkem(2)))**2)
3234 sqrt((xyzold(xcoord,ijke(3))-xyzold(xcoord,ijkem(3)))**2 + &
3235 (xyzold(ycoord,ijke(3))-xyzold(ycoord,ijkem(3)))**2 + &
3236 (xyzold(zcoord,ijke(3))-xyzold(zcoord,ijkem(3)))**2)
3238 sqrt((xyzold(xcoord,ijke(4))-xyzold(xcoord,ijkem(4)))**2 + &
3239 (xyzold(ycoord,ijke(4))-xyzold(ycoord,ijkem(4)))**2 + &
3240 (xyzold(zcoord,ijke(4))-xyzold(zcoord,ijkem(4)))**2)
3241 s(:) = ds(:)/arclen(:)
3242 e1(:) = dnode(:,ijke(1))
3243 e2(:) = dnode(:,ijke(2))
3244 e3(:) = dnode(:,ijke(3))
3245 e4(:) = dnode(:,ijke(4))
3246 CALL
rflo_tfint2d(
s(1),
s(2),
s(3),
s(4),e1,e2,e3,e4,
p1,p2,p3,p4,dn )
3247 dnode(:,ijkn) = dn(:)
3282 #include "Indexing.h"
3286 REAL(RFREAL),
POINTER :: dnode(:,:), xyzold(:,:)
3288 TYPE(t_region
) :: region
3291 INTEGER :: ipatch, l1, l2
3295 INTEGER :: l1b, l1e, l2b, l2e, lc, ijkn, ijke(4), ijkem(4), inoff, ijnoff
3296 INTEGER :: switch(6,9)
3299 REAL(RFREAL) :: arclen(4), ds(4),
s(4)
3300 REAL(RFREAL) :: e1(3), e2(3), e3(3), e4(3), &
3301 p1(3), p2(3), p3(3), p4(3), dn(3)
3307 'RFLO_ModMoveGridNconform2.F90' )
3322 DO ipatch=1,region%nPatches
3323 patch => region%levels(ilev)%patches(ipatch)
3324 ibound =
patch%lbound
3329 IF (
patch%bcMotion/=bc_external)
THEN
3338 l1b = switch(ibound,5)
3339 l1e = switch(ibound,6)
3340 l2b = switch(ibound,7)
3341 l2e = switch(ibound,8)
3342 lc = switch(ibound,9)
3344 p1(:) = dnode(:,
patch%corns(1))
3345 p2(:) = dnode(:,
patch%corns(4))
3346 p3(:) = dnode(:,
patch%corns(3))
3347 p4(:) = dnode(:,
patch%corns(2))
3351 IF (ibound==1 .OR. ibound==2)
THEN
3352 arclen(1:2) = 0._rfreal
3354 ijkn = indijk(lc,l1 ,l2 ,inoff,ijnoff)
3355 ijke(1) = indijk(lc,
jbeg ,l2 ,inoff,ijnoff)
3356 ijkem(1) = indijk(lc,
jbeg ,l2-1 ,inoff,ijnoff)
3357 ijke(2) = indijk(lc,
jend ,l2 ,inoff,ijnoff)
3358 ijkem(2) = indijk(lc,
jend ,l2-1 ,inoff,ijnoff)
3359 arclen(1) = arclen(1) + &
3360 sqrt((xyzold(xcoord,ijke(1))-xyzold(xcoord,ijkem(1)))**2 + &
3361 (xyzold(ycoord,ijke(1))-xyzold(ycoord,ijkem(1)))**2 + &
3362 (xyzold(zcoord,ijke(1))-xyzold(zcoord,ijkem(1)))**2)
3363 arclen(2) = arclen(2) + &
3364 sqrt((xyzold(xcoord,ijke(2))-xyzold(xcoord,ijkem(2)))**2 + &
3365 (xyzold(ycoord,ijke(2))-xyzold(ycoord,ijkem(2)))**2 + &
3366 (xyzold(zcoord,ijke(2))-xyzold(zcoord,ijkem(2)))**2)
3368 arclen(3:4) = 0._rfreal
3370 ijkn = indijk(lc,l1 ,l2 ,inoff,ijnoff)
3371 ijke(3) = indijk(lc,l1 ,
kbeg ,inoff,ijnoff)
3372 ijkem(3) = indijk(lc,l1-1 ,
kbeg ,inoff,ijnoff)
3373 ijke(4) = indijk(lc,l1 ,kend ,inoff,ijnoff)
3374 ijkem(4) = indijk(lc,l1-1 ,kend ,inoff,ijnoff)
3375 arclen(3) = arclen(3) + &
3376 sqrt((xyzold(xcoord,ijke(3))-xyzold(xcoord,ijkem(3)))**2 + &
3377 (xyzold(ycoord,ijke(3))-xyzold(ycoord,ijkem(3)))**2 + &
3378 (xyzold(zcoord,ijke(3))-xyzold(zcoord,ijkem(3)))**2)
3379 arclen(4) = arclen(4) + &
3380 sqrt((xyzold(xcoord,ijke(4))-xyzold(xcoord,ijkem(4)))**2 + &
3381 (xyzold(ycoord,ijke(4))-xyzold(ycoord,ijkem(4)))**2 + &
3382 (xyzold(zcoord,ijke(4))-xyzold(zcoord,ijkem(4)))**2)
3384 ELSE IF (ibound==3 .OR. ibound==4)
THEN
3385 arclen(1:2) = 0._rfreal
3387 ijkn = indijk(l2 ,lc,l1 ,inoff,ijnoff)
3388 ijke(1) = indijk(l2 ,lc,
kbeg ,inoff,ijnoff)
3389 ijkem(1) = indijk(l2-1 ,lc,
kbeg ,inoff,ijnoff)
3390 ijke(2) = indijk(l2 ,lc,kend ,inoff,ijnoff)
3391 ijkem(2) = indijk(l2-1 ,lc,kend ,inoff,ijnoff)
3392 arclen(1) = arclen(1) + &
3393 sqrt((xyzold(xcoord,ijke(1))-xyzold(xcoord,ijkem(1)))**2 + &
3394 (xyzold(ycoord,ijke(1))-xyzold(ycoord,ijkem(1)))**2 + &
3395 (xyzold(zcoord,ijke(1))-xyzold(zcoord,ijkem(1)))**2)
3396 arclen(2) = arclen(2) + &
3397 sqrt((xyzold(xcoord,ijke(2))-xyzold(xcoord,ijkem(2)))**2 + &
3398 (xyzold(ycoord,ijke(2))-xyzold(ycoord,ijkem(2)))**2 + &
3399 (xyzold(zcoord,ijke(2))-xyzold(zcoord,ijkem(2)))**2)
3401 arclen(3:4) = 0._rfreal
3403 ijkn = indijk(l2 ,lc,l1 ,inoff,ijnoff)
3404 ijke(3) = indijk(
ibeg ,lc,l1 ,inoff,ijnoff)
3405 ijkem(3) = indijk(
ibeg ,lc,l1-1 ,inoff,ijnoff)
3406 ijke(4) = indijk(
iend ,lc,l1 ,inoff,ijnoff)
3407 ijkem(4) = indijk(
iend ,lc,l1-1 ,inoff,ijnoff)
3408 arclen(3) = arclen(3) + &
3409 sqrt((xyzold(xcoord,ijke(3))-xyzold(xcoord,ijkem(3)))**2 + &
3410 (xyzold(ycoord,ijke(3))-xyzold(ycoord,ijkem(3)))**2 + &
3411 (xyzold(zcoord,ijke(3))-xyzold(zcoord,ijkem(3)))**2)
3412 arclen(4) = arclen(4) + &
3413 sqrt((xyzold(xcoord,ijke(4))-xyzold(xcoord,ijkem(4)))**2 + &
3414 (xyzold(ycoord,ijke(4))-xyzold(ycoord,ijkem(4)))**2 + &
3415 (xyzold(zcoord,ijke(4))-xyzold(zcoord,ijkem(4)))**2)
3417 ELSE IF (ibound==5 .OR. ibound==6)
THEN
3418 arclen(1:2) = 0._rfreal
3420 ijkn = indijk(l1 ,l2 ,lc,inoff,ijnoff)
3421 ijke(1) = indijk(
ibeg ,l2 ,lc,inoff,ijnoff)
3422 ijkem(1) = indijk(
ibeg ,l2-1 ,lc,inoff,ijnoff)
3423 ijke(2) = indijk(
iend ,l2 ,lc,inoff,ijnoff)
3424 ijkem(2) = indijk(
iend ,l2-1 ,lc,inoff,ijnoff)
3425 arclen(1) = arclen(1) + &
3426 sqrt((xyzold(xcoord,ijke(1))-xyzold(xcoord,ijkem(1)))**2 + &
3427 (xyzold(ycoord,ijke(1))-xyzold(ycoord,ijkem(1)))**2 + &
3428 (xyzold(zcoord,ijke(1))-xyzold(zcoord,ijkem(1)))**2)
3429 arclen(2) = arclen(2) + &
3430 sqrt((xyzold(xcoord,ijke(2))-xyzold(xcoord,ijkem(2)))**2 + &
3431 (xyzold(ycoord,ijke(2))-xyzold(ycoord,ijkem(2)))**2 + &
3432 (xyzold(zcoord,ijke(2))-xyzold(zcoord,ijkem(2)))**2)
3434 arclen(3:4) = 0._rfreal
3436 ijkn = indijk(l1 ,l2 ,lc,inoff,ijnoff)
3437 ijke(3) = indijk(l1 ,
jbeg ,lc,inoff,ijnoff)
3438 ijkem(3) = indijk(l1-1 ,
jbeg ,lc,inoff,ijnoff)
3439 ijke(4) = indijk(l1 ,
jend ,lc,inoff,ijnoff)
3440 ijkem(4) = indijk(l1-1 ,
jend ,lc,inoff,ijnoff)
3441 arclen(3) = arclen(3) + &
3442 sqrt((xyzold(xcoord,ijke(3))-xyzold(xcoord,ijkem(3)))**2 + &
3443 (xyzold(ycoord,ijke(3))-xyzold(ycoord,ijkem(3)))**2 + &
3444 (xyzold(zcoord,ijke(3))-xyzold(zcoord,ijkem(3)))**2)
3445 arclen(4) = arclen(4) + &
3446 sqrt((xyzold(xcoord,ijke(4))-xyzold(xcoord,ijkem(4)))**2 + &
3447 (xyzold(ycoord,ijke(4))-xyzold(ycoord,ijkem(4)))**2 + &
3448 (xyzold(zcoord,ijke(4))-xyzold(zcoord,ijkem(4)))**2)
3460 IF (ibound==1 .OR. ibound==2)
THEN
3461 ijkn = indijk(lc,l1 ,l2 ,inoff,ijnoff)
3462 ijke(1) = indijk(lc,
jbeg ,l2 ,inoff,ijnoff)
3463 ijkem(1) = indijk(lc,
jbeg ,l2-1 ,inoff,ijnoff)
3464 ijke(2) = indijk(lc,
jend ,l2 ,inoff,ijnoff)
3465 ijkem(2) = indijk(lc,
jend ,l2-1 ,inoff,ijnoff)
3466 ijke(3) = indijk(lc,l1 ,
kbeg ,inoff,ijnoff)
3467 ijkem(3) = indijk(lc,l1-1 ,
kbeg ,inoff,ijnoff)
3468 ijke(4) = indijk(lc,l1 ,kend ,inoff,ijnoff)
3469 ijkem(4) = indijk(lc,l1-1 ,kend ,inoff,ijnoff)
3470 ELSE IF (ibound==3 .OR. ibound==4)
THEN
3471 ijkn = indijk(l2 ,lc,l1 ,inoff,ijnoff)
3472 ijke(1) = indijk(l2 ,lc,
kbeg ,inoff,ijnoff)
3473 ijkem(1) = indijk(l2-1 ,lc,
kbeg ,inoff,ijnoff)
3474 ijke(2) = indijk(l2 ,lc,kend ,inoff,ijnoff)
3475 ijkem(2) = indijk(l2-1 ,lc,kend ,inoff,ijnoff)
3476 ijke(3) = indijk(
ibeg ,lc,l1 ,inoff,ijnoff)
3477 ijkem(3) = indijk(
ibeg ,lc,l1-1 ,inoff,ijnoff)
3478 ijke(4) = indijk(
iend ,lc,l1 ,inoff,ijnoff)
3479 ijkem(4) = indijk(
iend ,lc,l1-1 ,inoff,ijnoff)
3480 ELSE IF (ibound==5 .OR. ibound==6)
THEN
3481 ijkn = indijk(l1 ,l2 ,lc,inoff,ijnoff)
3482 ijke(1) = indijk(
ibeg ,l2 ,lc,inoff,ijnoff)
3483 ijkem(1) = indijk(
ibeg ,l2-1 ,lc,inoff,ijnoff)
3484 ijke(2) = indijk(
iend ,l2 ,lc,inoff,ijnoff)
3485 ijkem(2) = indijk(
iend ,l2-1 ,lc,inoff,ijnoff)
3486 ijke(3) = indijk(l1 ,
jbeg ,lc,inoff,ijnoff)
3487 ijkem(3) = indijk(l1-1 ,
jbeg ,lc,inoff,ijnoff)
3488 ijke(4) = indijk(l1 ,
jend ,lc,inoff,ijnoff)
3489 ijkem(4) = indijk(l1-1 ,
jend ,lc,inoff,ijnoff)
3493 sqrt((xyzold(xcoord,ijke(1))-xyzold(xcoord,ijkem(1)))**2 + &
3494 (xyzold(ycoord,ijke(1))-xyzold(ycoord,ijkem(1)))**2 + &
3495 (xyzold(zcoord,ijke(1))-xyzold(zcoord,ijkem(1)))**2)
3497 sqrt((xyzold(xcoord,ijke(2))-xyzold(xcoord,ijkem(2)))**2 + &
3498 (xyzold(ycoord,ijke(2))-xyzold(ycoord,ijkem(2)))**2 + &
3499 (xyzold(zcoord,ijke(2))-xyzold(zcoord,ijkem(2)))**2)
3503 sqrt((xyzold(xcoord,ijke(3))-xyzold(xcoord,ijkem(3)))**2 + &
3504 (xyzold(ycoord,ijke(3))-xyzold(ycoord,ijkem(3)))**2 + &
3505 (xyzold(zcoord,ijke(3))-xyzold(zcoord,ijkem(3)))**2)
3507 sqrt((xyzold(xcoord,ijke(4))-xyzold(xcoord,ijkem(4)))**2 + &
3508 (xyzold(ycoord,ijke(4))-xyzold(ycoord,ijkem(4)))**2 + &
3509 (xyzold(zcoord,ijke(4))-xyzold(zcoord,ijkem(4)))**2)
3510 s(:) = ds(:)/arclen(:)
3511 e1(:) = dnode(:,ijke(1))
3512 e2(:) = dnode(:,ijke(2))
3513 e3(:) = dnode(:,ijke(3))
3514 e4(:) = dnode(:,ijke(4))
3515 CALL
rflo_tfint2d(
s(1),
s(2),
s(3),
s(4),e1,e2,e3,e4,
p1,p2,p3,p4,dn )
3516 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)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE ic
subroutine, public rflo_movegridframe(regions)
subroutine rflo_exchangednoderecv(region, regionSrc, patch, patchSrc, average, dNode)
subroutine rflo_c2favgcoeffs(region)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE jpcbeg
subroutine rflo_changeinteriorgrid(region, boundMoved, edgeMoved, arcLen12, arcLen34, arcLen56, xyzOld, xyz)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE ipcend
subroutine rflo_movegridinterfaces(regions)
subroutine rflo_calccontrolvolumes(region)
subroutine rflo_tfint1d(s, p1, p2, xyz)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE jpnend
subroutine rflo_getnodeoffset(region, iLev, iNodeOffset, ijNodeOffset)
subroutine rflo_mgframemovecorners(regions)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE knode iend
subroutine rflo_calcfacevectors(region)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE ipcbeg
subroutine rflo_exchangegeometry(regions)
subroutine rflo_movegridsurfaces(regions, someMoved)
subroutine rflo_generatecoarsegrids(region)
subroutine rflo_getpatchindicesnodes(region, patch, iLev, ibeg, iend, jbeg, jend, kbeg, kend)
subroutine rflo_mgframeinterfaces(regions, iType)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE ipnbeg
subroutine, public rflo_mgframesrchneighbors(regions)
subroutine rflo_clearsendrequests(regions, iReg, geometry)
subroutine rflo_calcgridspeeds(region)
Vector_n min(const Array_n_const &v1, const Array_n_const &v2)
subroutine rflo_getdimensphysnodes(region, iLev, ipnbeg, ipnend, jpnbeg, jpnend, kpnbeg, kpnend)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE jpcend
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)