65 CHARACTER(CHRLEN) :: RCSIdentString = &
66 '$RCSfile: RFLO_ModMoveGridElliptGlo.F90,v $ $Revision: 1.18 $'
108 include
'roccomf90.h'
112 TYPE(t_region
),
POINTER :: regions(:)
115 INTEGER :: ireg, iter, ipatch, ijk
122 REAL(RFREAL) :: resid, globalresid
123 REAL(RFREAL),
POINTER :: xyz(:,:), xyzold(:,:)
129 DOUBLE PRECISION :: dalpha
134 global => regions(1)%global
137 'RFLO_ModMoveGridElliptGlo.F90' )
142 dalpha = global%dtMin/global%dTimeSystem
143 CALL com_call_function( global%genxHandleGm,1,dalpha )
152 IF (somemoved .eqv. .true.)
THEN
159 DO ireg=1,global%nRegions
160 IF (regions(ireg)%procid==global%myProcid .AND. &
161 regions(ireg)%active==active .AND. &
162 regions(ireg)%mixtInput%moveGrid)
THEN
166 grid => regions(ireg)%levels(1)%grid
167 gridold => regions(ireg)%levels(1)%gridOld
171 gridold%xyzOld,
grid%xyz )
187 DO iter=1,global%moveGridNiter
194 IF (global%verbLevel /= verbose_none)
THEN
196 CALL mpi_reduce( resid,globalresid,1,mpi_rfreal,mpi_sum, &
197 masterproc,global%mpiComm,global%mpierr )
198 IF (global%mpierr /= 0) CALL
errorstop( global,err_mpi_trouble,&
203 IF (global%myProcid == masterproc .AND. &
204 global%verbLevel>=verbose_high)
THEN
205 WRITE(stdout,2000) solver_name,global%skewness,global%minVol
206 WRITE(stdout,1000) solver_name,global%moveGridNiter,
sqrt(globalresid)
213 DO ireg=1,global%nRegions
214 IF (regions(ireg)%procid==global%myProcid .AND. &
215 regions(ireg)%active==active .AND. &
216 regions(ireg)%mixtInput%moveGrid)
THEN
220 xyz => regions(ireg)%levels(1)%grid%xyz
221 xyzold => regions(ireg)%levels(1)%gridOld%xyz
223 DO ijk=lbound(xyz,2),ubound(xyz,2)
224 xyz(xcoord,ijk) = xyz(xcoord,ijk) - xyzold(xcoord,ijk)
225 xyz(ycoord,ijk) = xyz(ycoord,ijk) - xyzold(ycoord,ijk)
226 xyz(zcoord,ijk) = xyz(zcoord,ijk) - xyzold(zcoord,ijk)
231 grid => regions(ireg)%levels(1)%grid
232 gridold => regions(ireg)%levels(1)%gridOld
233 grid%boundMoved(:) = .true.
234 grid%edgeMoved(:) = .true.
236 DO ipatch=1,regions(ireg)%nPatches
237 patch => regions(ireg)%levels(1)%patches(ipatch)
238 bctype =
patch%bcType
242 IF (bctype.eq.bc_symmetry)
THEN
250 gridold%xyzOld,
grid%xyz )
259 gridold%xyzOld,
grid%xyz )
263 IF (regions(ireg)%blockShape==region_shape_normal)
THEN
264 DO iter=1,global%moveGridViter
281 IF (global%verbLevel /= verbose_none)
THEN
283 CALL mpi_reduce( resid,globalresid,1,mpi_rfreal,mpi_sum, &
284 masterproc,global%mpiComm,global%mpierr )
285 IF (global%mpierr /= 0) CALL
errorstop( global,err_mpi_trouble,&
290 IF (global%myProcid == masterproc .AND. &
291 global%verbLevel>=verbose_high)
THEN
292 WRITE(stdout,1000) solver_name,global%moveGridViter,
sqrt(globalresid)
298 DO ireg=1,global%nRegions
299 IF (regions(ireg)%procid==global%myProcid .AND. &
300 regions(ireg)%active==active .AND. &
301 regions(ireg)%mixtInput%moveGrid)
THEN
305 IF (regions(ireg)%mixtInput%faceEdgeAvg==fe_avg_linear) &
321 1000
FORMAT(
a,1
x,
'Block-Elliptic-PDE grid motion:',i6,1pe13.4)
322 2000
FORMAT(
a,1
x,
'global skewness, minvol:',2(1pe14.5))
350 #include "Indexing.h"
354 TYPE(t_region
) :: region
357 INTEGER :: ipatch, ijk
360 REAL(RFREAL),
POINTER :: xyz(:,:), xyzold(:,:)
366 global => region%global
369 'RFLO_ModMoveGridElliptGlo.F90' )
373 xyz => region%levels(1)%grid%xyz
374 xyzold => region%levels(1)%gridOld%xyz
376 DO ijk=lbound(xyz,2),ubound(xyz,2)
377 xyz(xcoord,ijk) = xyz(xcoord,ijk) + xyzold(xcoord,ijk)
378 xyz(ycoord,ijk) = xyz(ycoord,ijk) + xyzold(ycoord,ijk)
379 xyz(zcoord,ijk) = xyz(zcoord,ijk) + xyzold(zcoord,ijk)
384 DO ipatch=1,region%nPatches
385 patch => region%levels(1)%patches(ipatch)
387 IF (
patch%bcMotion/=bc_external)
THEN
389 IF (
patch%bndFlat .EQV. .true.)
THEN
393 ELSEIF ((.NOT.
patch%bndFlat) .AND. (
patch%dirFlat > 0))
THEN
395 ELSEIF ((.NOT.
patch%bndFlat) .AND. (
patch%dirFlat < 0))
THEN
408 DO ijk=lbound(xyz,2),ubound(xyz,2)
409 xyz(xcoord,ijk) = xyz(xcoord,ijk) - xyzold(xcoord,ijk)
410 xyz(ycoord,ijk) = xyz(ycoord,ijk) - xyzold(ycoord,ijk)
411 xyz(zcoord,ijk) = xyz(zcoord,ijk) - xyzold(zcoord,ijk)
454 TYPE(t_region
),
POINTER :: regions(:)
465 global => regions(1)%global
468 'RFLO_ModMoveGridElliptGlo.F90' )
474 DO ireg=1,global%nRegions
475 IF (regions(ireg)%procid==global%myProcid .AND. &
476 regions(ireg)%active==active .AND. &
477 regions(ireg)%mixtInput%moveGrid)
THEN
479 grid => regions(ireg)%levels(1)%grid
480 gridold => regions(ireg)%levels(1)%gridOld
485 gridold%indSvel =
grid%indSvel
486 gridold%ipc =
grid%ipc
487 gridold%jpc =
grid%jpc
488 gridold%kpc =
grid%kpc
489 gridold%xyz(:,:) =
grid%xyz(:,:)
490 gridold%si(:,:) =
grid%si(:,:)
491 gridold%sj(:,:) =
grid%sj(:,:)
492 gridold%sk(:,:) =
grid%sk(:,:)
493 gridold%vol(:) =
grid%vol(:)
506 grid%edgeMoved(:) = .false.
510 gridold%xyzOld,gridold%xyz,
grid%xyz )
514 IF (global%moveGridNiter < 1)
THEN
518 gridold%xyzOld,gridold%xyz,
grid%xyz )
526 gridold%xyzOld,
grid%xyz )
562 TYPE(t_region
),
POINTER :: regions(:)
565 INTEGER :: ireg, ipatch, ipass
568 INTEGER :: bctype, iregsrc, ipatchsrc
570 TYPE(t_grid),
POINTER ::
grid, gridold, gridsrc
576 global => regions(1)%global
579 'RFLO_ModMoveGridElliptGlo.F90' )
587 DO ireg=1,global%nRegions
588 IF (regions(ireg)%procid==global%myProcid .AND. &
589 regions(ireg)%active==active .AND. &
590 regions(ireg)%mixtInput%moveGrid)
THEN
592 grid => regions(ireg)%levels(1)%grid
593 gridold => regions(ireg)%levels(1)%gridOld
595 DO ipatch=1,regions(ireg)%nPatches
596 patch => regions(ireg)%levels(1)%patches(ipatch)
597 bctype =
patch%bcType
598 IF ((bctype>=bc_regionconf .AND. bctype<=bc_regionconf+bc_range) .OR. &
599 (bctype>=bc_tra_peri .AND. bctype<=bc_tra_peri +bc_range) .OR. &
600 (bctype>=bc_rot_peri .AND. bctype<=bc_rot_peri +bc_range))
THEN
601 iregsrc =
patch%srcRegion
602 ipatchsrc =
patch%srcPatch
603 patchsrc => regions(iregsrc)%levels(1)%patches(ipatchsrc)
604 gridsrc => regions(iregsrc)%levels(1)%grid
606 IF (regions(iregsrc)%procid == global%myProcid)
THEN
608 patch,patchsrc,.false., &
609 grid%xyz,gridsrc%xyz )
613 gridold%xyzOld,gridold%xyz,
grid%xyz )
617 gridold%xyzOld,
grid%xyz )
630 DO ireg=1,global%nRegions
631 IF (regions(ireg)%procid==global%myProcid .AND. &
632 regions(ireg)%active==active .AND. &
633 regions(ireg)%mixtInput%moveGrid)
THEN
635 grid => regions(ireg)%levels(1)%grid
636 gridold => regions(ireg)%levels(1)%gridOld
638 DO ipatch=1,regions(ireg)%nPatches
639 patch => regions(ireg)%levels(1)%patches(ipatch)
640 bctype =
patch%bcType
641 IF ((bctype>=bc_regionconf .AND. bctype<=bc_regionconf+bc_range) .OR. &
642 (bctype>=bc_tra_peri .AND. bctype<=bc_tra_peri +bc_range) .OR. &
643 (bctype>=bc_rot_peri .AND. bctype<=bc_rot_peri +bc_range))
THEN
644 iregsrc =
patch%srcRegion
645 ipatchsrc =
patch%srcPatch
646 patchsrc => regions(iregsrc)%levels(1)%patches(ipatchsrc)
647 gridsrc => regions(iregsrc)%levels(1)%grid
649 IF (regions(iregsrc)%procid /= global%myProcid)
THEN
655 gridold%xyzOld,gridold%xyz,
grid%xyz )
659 gridold%xyzOld,
grid%xyz )
669 DO ireg=1,global%nRegions
670 IF (regions(ireg)%procid==global%myProcid .AND. &
671 regions(ireg)%active==active .AND. &
672 regions(ireg)%mixtInput%moveGrid)
THEN
710 arclen12,arclen34,arclen56,xyzref,xyzold, &
721 #include "Indexing.h"
724 LOGICAL :: boundmoved(6), edgemoved(12)
726 REAL(RFREAL),
POINTER :: arclen12(:,:), arclen34(:,:), arclen56(:,:)
727 REAL(RFREAL),
POINTER :: dnode(:,:), xyzold(:,:), xyzref(:,:)
729 TYPE(t_region
) :: region
732 INTEGER :: iedge, ind
736 INTEGER :: indbeg, indend, ijkn, ijkn1, ijknbeg, ijknend, inoff, ijnoff
737 INTEGER :: switch(12,9)
739 REAL(RFREAL) :: arclen, ds,
s, dn(3), dnbeg(3), dnend(3)
744 'RFLO_ModMoveGridElliptGlo.F90' )
779 IF (boundmoved(1))
THEN
780 edgemoved( 1) = .true.; edgemoved( 2) = .true.
781 edgemoved( 3) = .true.; edgemoved( 4) = .true.
783 IF (boundmoved(2))
THEN
784 edgemoved( 5) = .true.; edgemoved( 6) = .true.
785 edgemoved( 7) = .true.; edgemoved( 8) = .true.
787 IF (boundmoved(3))
THEN
788 edgemoved( 1) = .true.; edgemoved( 5) = .true.
789 edgemoved( 9) = .true.; edgemoved(10) = .true.
791 IF (boundmoved(4))
THEN
792 edgemoved( 3) = .true.; edgemoved( 7) = .true.
793 edgemoved(11) = .true.; edgemoved(12) = .true.
795 IF (boundmoved(5))
THEN
796 edgemoved( 4) = .true.; edgemoved( 8) = .true.
797 edgemoved( 9) = .true.; edgemoved(11) = .true.
799 IF (boundmoved(6))
THEN
800 edgemoved( 2) = .true.; edgemoved( 6) = .true.
801 edgemoved(10) = .true.; edgemoved(12) = .true.
807 IF ((boundmoved(switch(iedge,1)) .OR. boundmoved(switch(iedge,2))) .AND. &
808 ((.NOT.boundmoved(switch(iedge,3))) .OR. &
809 (.NOT.boundmoved(switch(iedge,4)))) .AND. &
810 (.NOT.edgemoved(iedge)))
THEN
812 edgemoved(iedge) = .true.
815 indbeg = switch(iedge,6)
816 indend = switch(iedge,7)
817 l1c = switch(iedge,8)
818 l2c = switch(iedge,9)
819 DO ind=indbeg+1,indend-1
820 IF (switch(iedge,5) == 12)
THEN
821 ijkn = indijk(ind ,l1c,l2c,inoff,ijnoff)
822 ijkn1 = indijk(ind-1 ,l1c,l2c,inoff,ijnoff)
823 ijknbeg = indijk(indbeg,l1c,l2c,inoff,ijnoff)
824 ijknend = indijk(indend,l1c,l2c,inoff,ijnoff)
825 arclen = arclen12(l1c,l2c)
826 ELSE IF (switch(iedge,5) == 34)
THEN
827 ijkn = indijk(l2c,ind ,l1c,inoff,ijnoff)
828 ijkn1 = indijk(l2c,ind-1 ,l1c,inoff,ijnoff)
829 ijknbeg = indijk(l2c,indbeg,l1c,inoff,ijnoff)
830 ijknend = indijk(l2c,indend,l1c,inoff,ijnoff)
831 arclen = arclen34(l1c,l2c)
832 ELSE IF (switch(iedge,5) == 56)
THEN
833 ijkn = indijk(l1c,l2c,ind ,inoff,ijnoff)
834 ijkn1 = indijk(l1c,l2c,ind-1 ,inoff,ijnoff)
835 ijknbeg = indijk(l1c,l2c,indbeg,inoff,ijnoff)
836 ijknend = indijk(l1c,l2c,indend,inoff,ijnoff)
837 arclen = arclen56(l1c,l2c)
839 dnbeg(:) = dnode(:,ijknbeg) + xyzold(:,ijknbeg) - xyzref(:,ijknbeg)
840 dnend(:) = dnode(:,ijknend) + xyzold(:,ijknend) - xyzref(:,ijknend)
842 ds = ds +
sqrt((xyzref(xcoord,ijkn)-xyzref(xcoord,ijkn1))**2 + &
843 (xyzref(ycoord,ijkn)-xyzref(ycoord,ijkn1))**2 + &
844 (xyzref(zcoord,ijkn)-xyzref(zcoord,ijkn1))**2)
848 dnode(:,ijkn) = dn(:) + xyzref(:,ijkn) - xyzold(:,ijkn)
subroutine, public rflo_elliptgridsmoo(regions, resid)
subroutine rflo_copygeometrydummy(region)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE jpnbeg
subroutine, public rflo_elliptgridsmooregion(region, resid)
subroutine rflo_calccellcentroids(region)
subroutine, public rflo_elliptgridsor2d(region, patch, iPatch)
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_c2eavgcoeffs(region)
subroutine registerfunction(global, funName, fileName)
subroutine, public rflo_elliptgridjac2d(region, patch, iPatch)
subroutine rflo_exchangednoderecv(region, regionSrc, patch, patchSrc, average, dNode)
subroutine rflo_c2favgcoeffs(region)
subroutine rflo_mgelliptedgesglo(region, boundMoved, edgeMoved, arcLen12, arcLen34, arcLen56, xyzRef, xyzOld, dNode)
subroutine rflo_changeinteriorgrid(region, boundMoved, edgeMoved, arcLen12, arcLen34, arcLen56, xyzOld, xyz)
subroutine, public rflo_gridqualityglobal(regions)
subroutine, public rflo_mgelliptbnddeformation(region)
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_calcfacevectors(region)
subroutine rflo_exchangegeometry(regions)
subroutine rflo_movegridsurfaces(regions, someMoved)
subroutine rflo_mgelliptinterfacesglo(regions)
subroutine rflo_generatecoarsegrids(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 ipnbeg
subroutine rflo_clearsendrequests(regions, iReg, geometry)
subroutine rflo_calcgridspeeds(region)
subroutine rflo_getdimensphysnodes(region, iLev, ipnbeg, ipnend, jpnbeg, jpnend, kpnbeg, kpnend)
subroutine rflo_exchangednodecopy(region, regionSrc, patch, patchSrc, average, dNode, dNodeSrc)
subroutine, public rflo_movegridqflatpatch(region, patch, iPatch)
subroutine, public rflo_movegridelliptglo(regions)
subroutine errorstop(global, errorCode, errorLine, addMessage)
subroutine deregisterfunction(global)
subroutine, public rflo_movegridcurvedpatch(region, patch, iPatch)
**********************************************************************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, public rflo_elliptgridgauss2d(region, patch, iPatch)
subroutine rflo_checkmetrics(iReg, region)
subroutine rflo_mgelliptsurfacesglo(regions, someMoved)
subroutine rflo_laplacegridsmoo(regions, resid)