71 TYPE(t_region
),
POINTER :: regions(:)
74 INTEGER :: ireg, iter, ipatch, ijk
77 LOGICAL :: somemoved, someremesh
79 INTEGER :: bctype, iremesh, jremesh, nremesh
81 REAL(RFREAL) :: resid, globalresid
82 REAL(RFREAL),
POINTER :: xyz(:,:), xyzold(:,:)
88 DOUBLE PRECISION :: dalpha
93 global => regions(1)%global
96 'RFLO_MoveGridGlobal.F90' )
101 dalpha = global%dtMin/global%dTimeSystem
102 CALL com_call_function( global%genxHandleGm,1,dalpha )
118 DO ireg=1,global%nRegions
119 IF (regions(ireg)%procid==global%myProcid .AND. &
120 regions(ireg)%active==active .AND. &
121 regions(ireg)%mixtInput%moveGrid)
THEN
125 grid => regions(ireg)%levels(1)%grid
126 gridold => regions(ireg)%levels(1)%gridOld
130 gridold%xyzOld,
grid%xyz )
145 DO iter=1,global%moveGridNiter
149 IF (global%verbLevel /= verbose_none)
THEN
151 CALL mpi_reduce( resid,globalresid,1,mpi_rfreal,mpi_sum, &
152 masterproc,global%mpiComm,global%mpierr )
153 IF (global%mpierr /= 0) CALL
errorstop( global,err_mpi_trouble,__line__ )
157 IF (global%myProcid == masterproc)
THEN
158 WRITE(stdout,1000) solver_name,global%moveGridNiter,
sqrt(globalresid)
165 DO ireg=1,global%nRegions
166 IF (regions(ireg)%procid==global%myProcid .AND. &
167 regions(ireg)%active==active .AND. &
168 regions(ireg)%mixtInput%moveGrid)
THEN
172 xyz => regions(ireg)%levels(1)%grid%xyz
173 xyzold => regions(ireg)%levels(1)%gridOld%xyz
175 DO ijk=lbound(xyz,2),ubound(xyz,2)
176 xyz(xcoord,ijk) = xyz(xcoord,ijk) - xyzold(xcoord,ijk)
177 xyz(ycoord,ijk) = xyz(ycoord,ijk) - xyzold(ycoord,ijk)
178 xyz(zcoord,ijk) = xyz(zcoord,ijk) - xyzold(zcoord,ijk)
183 grid => regions(ireg)%levels(1)%grid
184 gridold => regions(ireg)%levels(1)%gridOld
185 grid%boundMoved(:) = .true.
186 grid%edgeMoved(:) = .true.
187 DO ipatch=1,regions(ireg)%nPatches
188 patch => regions(ireg)%levels(1)%patches(ipatch)
189 bctype =
patch%bcType
190 IF ((bctype>=bc_symmetry .AND. bctype<=bc_symmetry+bc_range))
THEN
197 gridold%xyzOld,
grid%xyz )
204 gridold%xyzOld,
grid%xyz )
220 DO ireg=1,global%nRegions
221 IF (regions(ireg)%procid==global%myProcid .AND. &
222 regions(ireg)%active==active .AND. &
223 regions(ireg)%mixtInput%moveGrid)
THEN
227 IF (regions(ireg)%mixtInput%faceEdgeAvg==fe_avg_linear) &
240 CALL mpi_allreduce( iremesh, nremesh, 1, mpi_integer, mpi_sum, &
241 global%mpiComm, global%mpierr )
242 IF (global%mpierr /=0 ) CALL
errorstop( global,err_mpi_trouble,__line__ )
243 IF (nremesh > 0) someremesh = .true.
248 DO ireg=1,global%nRegions
249 IF (regions(ireg)%procid==global%myProcid .AND. &
250 regions(ireg)%active==active .AND. &
255 IF (regions(ireg)%mixtInput%faceEdgeAvg==fe_avg_linear) &
266 1000
FORMAT(
a,1
x,
'Block Laplacian grid motion: ',i6,1pe13.4)
subroutine rflo_copygeometrydummy(region)
subroutine rflo_calccellcentroids(region)
subroutine rflo_c2eavgcoeffs(region)
subroutine registerfunction(global, funName, fileName)
subroutine rflo_c2favgcoeffs(region)
subroutine rflo_changeinteriorgrid(region, boundMoved, edgeMoved, arcLen12, arcLen34, arcLen56, xyzOld, xyz)
subroutine rflo_movegridinterfaces(regions)
subroutine rflo_calccontrolvolumes(region)
subroutine rflo_calcfacevectors(region)
subroutine rflo_exchangegeometry(regions)
subroutine rflo_movegridsurfaces(regions, someMoved)
subroutine rflo_generatecoarsegrids(region)
subroutine rflo_calcgridspeeds(region)
subroutine rflo_gridremesh(region)
subroutine rflo_movegridglobal(regions)
subroutine errorstop(global, errorCode, errorLine, addMessage)
subroutine deregisterfunction(global)
subroutine rflo_checkmetrics(iReg, region)
subroutine rflo_laplacegridsmoo(regions, resid)