119 include
'roccomf90.h'
123 TYPE(t_region
),
POINTER :: regions(:)
125 LOGICAL :: ftermnew, residfterm
128 INTEGER :: ireg, ireglocal,
ic, istage
133 INTEGER :: ilev, icoff, ijcoff
135 INTEGER :: ibc, iec, iectot, ldiss(5), flowmodel, gasmodel
140 REAL(RFREAL) :: smoocf
143 REAL(RFREAL) :: cfl, ark(5), betrk(5), blend1, fac, adtv
144 REAL(RFREAL) ::
alpha, time
145 REAL(RFREAL),
POINTER :: cv(:,:), cvold(:,:), dt(:), diss(:,:),
rhs(:,:)
146 REAL(RFREAL),
POINTER :: vol(:), fterm(:,:)
150 TYPE(t_region
),
POINTER :: pregion
155 global => regions(1)%global
158 'ExplicitMultistage.F90' )
163 time = global%currentTime + global%dtMin
164 alpha = (time-global%timeStamp)/global%dTimeSystem
169 DO istage=1,regions(1)%global%nrkSteps
171 DO ireg=1,global%nRegions
172 IF (regions(ireg)%procid==global%myProcid .AND. &
173 regions(ireg)%active==active)
THEN
176 DO ireglocal = 1,global%nRegionsLocal
179 regions(ireg)%irkStep = istage
183 ldiss(:) = regions(ireg)%mixtInput%ldiss(:)
184 cfl = regions(ireg)%mixtInput%cfl
185 ark(:) = regions(ireg)%mixtInput%ark(:)
186 betrk(:) = regions(ireg)%mixtInput%betrk(:)
187 flowmodel = regions(ireg)%mixtInput%flowModel
188 gasmodel = regions(ireg)%mixtInput%gasModel
189 movegrid = regions(ireg)%mixtInput%moveGrid
192 ilev = regions(ireg)%currLevel
201 smoocf = regions(ireg)%mixtInput%smoocf
203 cv => regions(ireg)%levels(ilev)%mixt%cv
204 cvold => regions(ireg)%levels(ilev)%mixt%cvOld
205 diss => regions(ireg)%levels(ilev)%mixt%diss
206 rhs => regions(ireg)%levels(ilev)%mixt%rhs
207 vol => regions(ireg)%levels(ilev)%grid%vol
208 dt => regions(ireg)%levels(ilev)%dt
209 IF (residfterm) fterm => regions(ireg)%levels(ilev)%mixt%fterm
213 pregion => regions(ireg)
216 iec = pregion%grid%nCells
217 iectot = pregion%grid%nCellsTot
219 cv => pregion%mixt%cv
220 cvold => pregion%mixt%cvOld
221 diss => pregion%mixt%diss
222 rhs => pregion%mixt%rhs
223 vol => pregion%grid%vol
225 IF (residfterm) fterm => pregion%mixt%fterm
231 IF (istage == 1)
THEN
232 IF (flowmodel == flow_euler)
THEN
237 IF (smoocf > 0._rfreal)
THEN
241 IF (global%peulUsed)
THEN
244 IF (regions(ireg)%peulInput%smoocf > 0._rfreal)
THEN
250 IF (flowmodel == flow_navst .AND. &
251 regions(ireg)%mixtInput%turbModel /= turb_model_none)
THEN
254 IF (regions(ireg)%turbInput%smoocf > 0._rfreal)
THEN
264 IF (istage == 1)
THEN
266 cvold(cv_mixt_dens,
ic) = cv(cv_mixt_dens,
ic)
267 cvold(cv_mixt_xmom,
ic) = cv(cv_mixt_xmom,
ic)
268 cvold(cv_mixt_ymom,
ic) = cv(cv_mixt_ymom,
ic)
269 cvold(cv_mixt_zmom,
ic) = cv(cv_mixt_zmom,
ic)
270 cvold(cv_mixt_ener,
ic) = cv(cv_mixt_ener,
ic)
271 diss(cv_mixt_dens,
ic) = 0._rfreal
272 diss(cv_mixt_xmom,
ic) = 0._rfreal
273 diss(cv_mixt_ymom,
ic) = 0._rfreal
274 diss(cv_mixt_zmom,
ic) = 0._rfreal
275 diss(cv_mixt_ener,
ic) = 0._rfreal
281 IF (istage>1 .AND. ldiss(istage)/=0)
THEN
282 blend1 = 1._rfreal - betrk(istage)
284 diss(cv_mixt_dens,
ic) = blend1*diss(cv_mixt_dens,
ic)
285 diss(cv_mixt_xmom,
ic) = blend1*diss(cv_mixt_xmom,
ic)
286 diss(cv_mixt_ymom,
ic) = blend1*diss(cv_mixt_ymom,
ic)
287 diss(cv_mixt_zmom,
ic) = blend1*diss(cv_mixt_zmom,
ic)
288 diss(cv_mixt_ener,
ic) = blend1*diss(cv_mixt_ener,
ic)
295 IF ( regions(ireg)%mixtInput%spaceOrder > 1 )
THEN
296 pregion => regions(ireg)
298 CALL rflu_computegradcells(pregion,cv_mixt_dens,cv_mixt_pres, &
299 grc_mixt_dens,grc_mixt_pres, &
300 pregion%mixt%cv,pregion%mixt%gradCell)
301 CALL rflu_computegradcellseno(pregion,grc_mixt_dens,grc_mixt_pres, &
302 pregion%mixt%gradCell)
304 grc_mixt_dens,grc_mixt_pres, &
305 pregion%mixt%cv,pregion%mixt%cvInfo, &
306 pregion%mixt%gradCell)
312 IF (flowmodel == flow_navst .AND. &
313 regions(ireg)%mixtInput%turbModel /= turb_model_none) &
319 IF (ldiss(istage) /= 0)
THEN
324 IF (ldiss(istage) /= 0 .AND. flowmodel == flow_navst .AND. &
325 regions(ireg)%mixtInput%turbModel /= turb_model_none)
THEN
332 IF (flowmodel==flow_navst .AND. ldiss(istage)/=0)
THEN
341 IF (flowmodel == flow_navst .AND. &
342 regions(ireg)%mixtInput%turbModel /= turb_model_none)
THEN
352 IF (global%inrtUsed)
THEN
363 IF (flowmodel == flow_navst .AND. &
364 regions(ireg)%mixtInput%turbModel /= turb_model_none)
THEN
375 pregion => regions(ireg)
379 IF (flowmodel == flow_navst .AND. &
380 regions(ireg)%mixtInput%turbModel /= turb_model_none)
THEN
389 fterm(cv_mixt_dens,
ic) = fterm(cv_mixt_dens,
ic) - &
391 fterm(cv_mixt_xmom,
ic) = fterm(cv_mixt_xmom,
ic) - &
393 fterm(cv_mixt_ymom,
ic) = fterm(cv_mixt_ymom,
ic) - &
395 fterm(cv_mixt_zmom,
ic) = fterm(cv_mixt_zmom,
ic) - &
397 fterm(cv_mixt_ener,
ic) = fterm(cv_mixt_ener,
ic) - &
406 fac = ark(istage)*cfl
410 adtv = fac*dt(
ic)/vol(
ic)
411 rhs(cv_mixt_dens,
ic) = adtv*(
rhs(cv_mixt_dens,
ic)+ &
412 fterm(cv_mixt_dens,
ic))
413 rhs(cv_mixt_xmom,
ic) = adtv*(
rhs(cv_mixt_xmom,
ic)+ &
414 fterm(cv_mixt_xmom,
ic))
415 rhs(cv_mixt_ymom,
ic) = adtv*(
rhs(cv_mixt_ymom,
ic)+ &
416 fterm(cv_mixt_ymom,
ic))
417 rhs(cv_mixt_zmom,
ic) = adtv*(
rhs(cv_mixt_zmom,
ic)+ &
418 fterm(cv_mixt_zmom,
ic))
419 rhs(cv_mixt_ener,
ic) = adtv*(
rhs(cv_mixt_ener,
ic)+ &
420 fterm(cv_mixt_ener,
ic))
424 adtv = fac*dt(
ic)/vol(
ic)
425 rhs(cv_mixt_dens,
ic) = adtv*
rhs(cv_mixt_dens,
ic)
426 rhs(cv_mixt_xmom,
ic) = adtv*
rhs(cv_mixt_xmom,
ic)
427 rhs(cv_mixt_ymom,
ic) = adtv*
rhs(cv_mixt_ymom,
ic)
428 rhs(cv_mixt_zmom,
ic) = adtv*
rhs(cv_mixt_zmom,
ic)
429 rhs(cv_mixt_ener,
ic) = adtv*
rhs(cv_mixt_ener,
ic)
436 IF (smoocf > 0._rfreal)
THEN
441 IF (global%peulUsed .AND. &
442 regions(ireg)%peulInput%smoocf > 0._rfreal)
THEN
444 regions(ireg)%levels(ilev)%peul%rhs )
449 IF (flowmodel == flow_navst .AND. &
450 regions(ireg)%mixtInput%turbModel /= turb_model_none .AND. &
451 regions(ireg)%turbInput%smoocf > 0._rfreal)
THEN
460 IF (global%solverType == solv_implicit)
THEN
461 fac = 1.5_rfreal*ark(istage)*cfl/global%dtMin
463 adtv = 1._rfreal/(1._rfreal+fac*dt(
ic))
464 cv(cv_mixt_dens,
ic) = cvold(cv_mixt_dens,
ic) - &
465 adtv*
rhs(cv_mixt_dens,
ic)
466 cv(cv_mixt_xmom,
ic) = cvold(cv_mixt_xmom,
ic) - &
467 adtv*
rhs(cv_mixt_xmom,
ic)
468 cv(cv_mixt_ymom,
ic) = cvold(cv_mixt_ymom,
ic) - &
469 adtv*
rhs(cv_mixt_ymom,
ic)
470 cv(cv_mixt_zmom,
ic) = cvold(cv_mixt_zmom,
ic) - &
471 adtv*
rhs(cv_mixt_zmom,
ic)
472 cv(cv_mixt_ener,
ic) = cvold(cv_mixt_ener,
ic) - &
473 adtv*
rhs(cv_mixt_ener,
ic)
477 cv(cv_mixt_dens,
ic) = cvold(cv_mixt_dens,
ic) -
rhs(cv_mixt_dens,
ic)
478 cv(cv_mixt_xmom,
ic) = cvold(cv_mixt_xmom,
ic) -
rhs(cv_mixt_xmom,
ic)
479 cv(cv_mixt_ymom,
ic) = cvold(cv_mixt_ymom,
ic) -
rhs(cv_mixt_ymom,
ic)
480 cv(cv_mixt_zmom,
ic) = cvold(cv_mixt_zmom,
ic) -
rhs(cv_mixt_zmom,
ic)
481 cv(cv_mixt_ener,
ic) = cvold(cv_mixt_ener,
ic) -
rhs(cv_mixt_ener,
ic)
486 IF (regions(ireg)%periInput%flowKind /= off)
THEN
491 IF (flowmodel == flow_navst .AND. &
492 regions(ireg)%mixtInput%turbModel /= turb_model_none)
THEN
504 pregion => regions(ireg)
515 IF (flowmodel == flow_navst .AND. &
516 regions(ireg)%mixtInput%turbModel /= turb_model_none)
THEN
524 pregion => regions(ireg)
532 IF (gasmodel == gas_model_tcperf)
THEN
552 CALL com_call_function( global%genxHandleBc,2,
alpha,1 )
554 DO ireg=1,global%nRegions
555 IF (regions(ireg)%procid==global%myProcid .AND. &
556 regions(ireg)%active==active)
THEN
557 IF (regions(ireg)%mixtInput%externalBc)
THEN
565 CALL com_call_function( global%genxHandleBc,2,
alpha,2 )
568 DO ireg=1,global%nRegions
569 IF (regions(ireg)%procid==global%myProcid .AND. &
570 regions(ireg)%active==active)
THEN
571 IF (regions(ireg)%mixtInput%externalBc)
THEN
574 IF (global%solverType == solv_implicit)
THEN
575 CALL
updatetbc( regions(ireg),time,global%dtMin,.true. )
579 IF (flowmodel == flow_navst .AND. &
580 regions(ireg)%mixtInput%turbModel /= turb_model_none)
THEN
589 DO ireg=1,global%nRegions
590 IF (regions(ireg)%procid==global%myProcid .AND. &
591 regions(ireg)%active==active)
THEN
594 IF (flowmodel == flow_navst .AND. &
595 regions(ireg)%mixtInput%turbModel /= turb_model_none)
THEN
604 DO ireg=1,global%nRegions
605 IF (regions(ireg)%procid==global%myProcid .AND. &
606 regions(ireg)%active==active)
THEN
609 IF (flowmodel == flow_navst .AND. &
610 regions(ireg)%mixtInput%turbModel /= turb_model_none)
THEN
635 DO ireg = 1,global%nRegionsLocal
636 pregion => regions(ireg)
639 CALL
rflu_setvars(pregion,pregion%grid%nCells+1,pregion%grid%nCellsTot)
642 DO ireg = 1,global%nRegionsLocal
643 pregion => regions(ireg)
subroutine rflu_setvars(pRegion, icgBeg, icgEnd)
subroutine rflu_timestepviscous(pRegion)
subroutine turb_emsinit(region, istage)
**********************************************************************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 idcend
subroutine radi_sourceterms(region)
subroutine turb_ranszerodummycells(region)
subroutine rflu_timestepinviscid(pRegion)
subroutine peul_spectralradii(region)
subroutine peri_sourceterms(region)
subroutine turb_rflo_ransspectralradii(region)
subroutine, public rflu_mpi_isendwrapper(pRegion)
subroutine registerfunction(global, funName, fileName)
subroutine rflu_zerovirtualcellvars(pRegion, var)
**********************************************************************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 rflu_mpi_clearrequestwrapper(pRegion)
subroutine turb_ransconvectivefluxes(region)
subroutine turb_rflo_ransressmoothing(region)
subroutine, public rflu_limitgradcellssimple(pRegion, iBegVar, iEndVar, iBegGrad, iEndGrad, var, varInfo, grad)
subroutine explicitmultistage(regions, ftermNew, residFterm)
subroutine, public rflu_convertcvcons2prim(pRegion, cvStateFuture)
subroutine rflo_getdimensdummy(region, iLev, idcbeg, idcend, jdcbeg, jdcend, kdcbeg, kdcend)
subroutine turb_rflo_ransbndconditionsrecv(regions, iReg)
**********************************************************************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 kdcbeg
subroutine rflu_checkpositivitywrapper(pRegion)
subroutine rflo_sendboundaryvaluesalpha(region)
subroutine, public rflo_boundaryconditionssend(regions, iReg)
subroutine updatetbc(region, t, dt, final)
subroutine, public rflu_convertcvprim2cons(pRegion, cvStateFuture)
subroutine, public rflu_mpi_recvwrapper(pRegion)
subroutine, public rflo_boundaryconditionsrecv(regions, iReg)
subroutine rflo_getcelloffset(region, iLev, iCellOffset, ijCellOffset)
**********************************************************************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 idcbeg
subroutine peul_residualsmoothing(region)
subroutine rflo_zerodummycells(region, var)
subroutine turb_solutionupdate(region, istage, ibc, iec)
subroutine rflo_sendboundaryvalues(region, initialize)
subroutine peri_solutionupdate(region)
subroutine rflo_residualsmoothing(region)
subroutine inrt_sourceterms(region)
subroutine peul_residualsmoothingcoeffs(region)
subroutine rflo_getboundaryvalues(region)
subroutine rflo_checkvalidity(region)
subroutine rflo_clearsendrequests(regions, iReg, geometry)
subroutine turb_rflo_ransbndconditionssend(regions, iReg)
**********************************************************************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 jdcend
subroutine viscousfluxes(region)
subroutine convectivefluxes(region)
subroutine globalcommunicationmp(regions)
subroutine, public rflo_boundaryconditionsset(regions, iReg)
**********************************************************************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 jdcbeg
subroutine turb_rflo_ransressmoothingcoeff(region)
subroutine turb_ranssourceterms(region)
subroutine turb_rflo_ransclearsendrequests(regions, iReg)
subroutine rflo_timestepviscous(region)
subroutine, public rflu_mpi_copywrapper(regions)
subroutine mixtureproperties(region, inBeg, inEnd, gasUpdate)
unsigned char alpha() const
subroutine turb_ransnumericaldissipation(region)
subroutine deregisterfunction(global)
subroutine rflo_residualsmoothingcoeffs(region)
subroutine sourceterms(region)
subroutine rflu_checkvaliditywrapper(pRegion)
subroutine rflo_timestepinviscid(region)
subroutine numericaldissipation(region)
subroutine turb_rflo_ransbndconditionsset(regions, iReg)