72 TYPE(t_region
),
POINTER :: pregion
78 CHARACTER(CHRLEN) :: rcsidentstring
79 INTEGER :: c1,c2,distrib,gasmodel,icg,ifg,ifl,indcp,indgs,indmol,ipatch, &
81 INTEGER :: dtminloc(1)
82 INTEGER,
DIMENSION(:),
POINTER :: bf2c
83 INTEGER,
DIMENSION(:,:),
POINTER :: f2c
84 REAL(RFREAL) :: as,a1,a2,cp1,cp2,cp,dn,dtmin,dummyrealout,
dx,
dy,
dz,fmue,fs, &
85 fsu,gam,hl,ir1,ir2,minj,mm,mm1,mm2,nm,nx,ny,nz,pl,pr,prlam, &
86 prturb,rgas,rl,rr,r1,r2,srad,tinj,uinj,ul,u1,u2,vinj,vl,v1, &
88 REAL(RFREAL),
DIMENSION(:,:),
POINTER :: pcv,pdv,pgv,ptv,pvals
90 TYPE(t_grid),
POINTER :: pgrid
91 TYPE(t_patch),
POINTER :: ppatch
97 rcsidentstring =
'$RCSfile: RFLU_TimeStepViscous.F90,v $ $Revision: 1.16 $'
99 global => pregion%global
102 'RFLU_TimeStepViscous.F90')
108 pgrid => pregion%grid
112 pcv => pregion%mixt%cv
113 pdv => pregion%mixt%dv
114 pgv => pregion%mixt%gv
115 ptv => pregion%mixt%tv
117 prlam = pregion%mixtInput%prLam
118 prturb = pregion%mixtInput%prTurb
120 indcp = pregion%mixtInput%indCp
121 indmol = pregion%mixtInput%indMol
123 turbmodel = pregion%mixtInput%turbModel
124 gasmodel = pregion%mixtInput%gasModel
130 DO icg = 1,pgrid%nCellsTot
131 pregion%dt(icg) = 0.0_rfreal
142 DO ifg = 1,pgrid%nFaces
143 c1 = pgrid%f2c(1,ifg)
144 c2 = pgrid%f2c(2,ifg)
146 nx = pgrid%fn(xcoord,ifg)
147 ny = pgrid%fn(ycoord,ifg)
148 nz = pgrid%fn(zcoord,ifg)
149 nm = pgrid%fn(xyzmag,ifg)
151 dx = pgrid%cofg(xcoord,c2) - pgrid%cofg(xcoord,c1)
152 dy = pgrid%cofg(ycoord,c2) - pgrid%cofg(ycoord,c1)
153 dz = pgrid%cofg(zcoord,c2) - pgrid%cofg(zcoord,c1)
156 fs = pgrid%gs(indgs*ifg)
158 r1 = pcv(cv_mixt_dens,c1)
159 r2 = pcv(cv_mixt_dens,c2)
164 u1 = pcv(cv_mixt_xmom,c1)*ir1
165 v1 = pcv(cv_mixt_ymom,c1)*ir1
166 w1 = pcv(cv_mixt_zmom,c1)*ir1
167 a1 = pdv(dv_mixt_soun,c1)
169 u2 = pcv(cv_mixt_xmom,c2)*ir2
170 v2 = pcv(cv_mixt_ymom,c2)*ir2
171 w2 = pcv(cv_mixt_zmom,c2)*ir2
172 a2 = pdv(dv_mixt_soun,c2)
174 vc = 0.5_rfreal*((u1+u2)*nx + (v1+v2)*ny + (w1+w2)*nz)
175 as = 0.5_rfreal*(a1+a2)
178 IF ( turbmodel == active )
THEN
179 fmue = 0.5_rfreal*(ptv(tv_mixt_muel,c1) + ptv(tv_mixt_muel,c2))/prlam &
180 + 0.5*rfreal*(ptv(tv_mixt_muet,c1) + ptv(tv_mixt_muet,c2))/prturb
182 fmue = 0.5_rfreal*(ptv(tv_mixt_muel,c1) + ptv(tv_mixt_muel,c2))/prlam
185 fmue = 0.5_rfreal*(ptv(tv_mixt_muel,c1) + ptv(tv_mixt_muel,c2))/prlam
188 srad = (abs(vc - fs) + as)*nm &
189 + 4.0_rfreal*fmue/(0.5_rfreal*(r1 + r2))*nm/dn
191 pregion%dt(c1) = pregion%dt(c1) + srad
192 pregion%dt(c2) = pregion%dt(c2) + srad
199 DO ipatch = 1,pgrid%nPatches
200 ppatch => pregion%patches(ipatch)
202 SELECT CASE ( ppatch%bcType )
208 CASE ( bc_injection:bc_injection+bc_range )
209 pvals => ppatch%mixt%vals
211 distrib = ppatch%mixt%distrib
213 DO ifl = 1,ppatch%nBFaces
214 c1 = ppatch%bf2c(ifl)
216 nx = ppatch%fn(xcoord,ifl)
217 ny = ppatch%fn(ycoord,ifl)
218 nz = ppatch%fn(zcoord,ifl)
219 nm = ppatch%fn(xyzmag,ifl)
221 dx = pgrid%cofg(xcoord,c1) - ppatch%fc(xcoord,ifl)
222 dy = pgrid%cofg(ycoord,c1) - ppatch%fc(ycoord,ifl)
223 dz = pgrid%cofg(zcoord,c1) - ppatch%fc(zcoord,ifl)
226 fs = ppatch%gs(indgs*ifl)
229 rl = pcv(cv_mixt_dens,c1)
230 pl = pdv(dv_mixt_pres,c1)
232 minj = pvals(bcdat_inject_mfrate,distrib*ifl)
234 IF ( minj > 0.0_rfreal )
THEN
235 tinj = pvals(bcdat_inject_temp,distrib*ifl)
237 IF ( gasmodel == gas_model_tcperf )
THEN
238 cp = pgv(gv_mixt_cp ,indcp *c1)
239 mm = pgv(gv_mixt_mol,indmol*c1)
245 vc = ul*nx + vl*ny + wl*nz
250 CALL
errorstop(global,err_reached_default,__line__)
255 a1 = pdv(dv_mixt_soun,c1)
259 IF ( turbmodel == active )
THEN
260 fmue = ptv(tv_mixt_muel,c1)/prlam + ptv(tv_mixt_muet,c1)/prturb
262 fmue = ptv(tv_mixt_muel,c1)/prlam
265 fmue = ptv(tv_mixt_muel,c1)/prlam
268 pregion%dt(c1) = pregion%dt(c1) &
269 + (abs(vc - fsu) + a1)*nm + 4.0_rfreal*fmue/r1*nm/dn
277 DO ifl = 1,ppatch%nBFaces
278 c1 = ppatch%bf2c(ifl)
280 nx = ppatch%fn(xcoord,ifl)
281 ny = ppatch%fn(ycoord,ifl)
282 nz = ppatch%fn(zcoord,ifl)
283 nm = ppatch%fn(xyzmag,ifl)
285 dx = pgrid%cofg(xcoord,c1) - ppatch%fc(xcoord,ifl)
286 dy = pgrid%cofg(ycoord,c1) - ppatch%fc(ycoord,ifl)
287 dz = pgrid%cofg(zcoord,c1) - ppatch%fc(zcoord,ifl)
290 fs = ppatch%gs(indgs*ifl)
293 r1 = pcv(cv_mixt_dens,c1)
297 u1 = pcv(cv_mixt_xmom,c1)*ir1
298 v1 = pcv(cv_mixt_ymom,c1)*ir1
299 w1 = pcv(cv_mixt_zmom,c1)*ir1
300 a1 = pdv(dv_mixt_soun,c1)
302 vc = u1*nx + v1*ny + w1*nz
305 IF ( turbmodel == active )
THEN
306 fmue = ptv(tv_mixt_muel,c1)/prlam + ptv(tv_mixt_muet,c1)/prturb
308 fmue = ptv(tv_mixt_muel,c1)/prlam
311 fmue = ptv(tv_mixt_muel,c1)/prlam
314 pregion%dt(c1) = pregion%dt(c1) &
315 + (abs(vc - fsu) + a1)*nm + 4.0_rfreal*fmue/r1*nm/dn
326 DO icg = 1,pgrid%nCells
327 pregion%dt(icg) = pgrid%vol(icg)/pregion%dt(icg)
330 DO icg = pgrid%nCells+1,pgrid%nCellsTot
331 pregion%dt(icg) =
REAL(ABS(CRAZY_VALUE_INT),kind=rfreal)
338 IF ( global%flowType == flow_unsteady )
THEN
339 dtmin = minval(pregion%dt(1:pgrid%nCells))
340 dtminloc = minloc(pregion%dt(1:pgrid%nCells))
342 pregion%dtMin = dtmin
343 pregion%dtMinLoc = dtminloc(1)
subroutine, public rflu_setrindstateinjectperf(cpGas, mmGas, nx, ny, nz, mInj, tInj, pl, fs, rl, ul, vl, wl, Hl)
subroutine rflu_timestepviscous(pRegion)
real(rfreal) function mixtperf_r_m(M)
subroutine registerfunction(global, funName, fileName)
real(rfreal) function, public rflu_descalegridspeed(pRegion, fs)
real(rfreal) function mixtperf_c_grt(G, R, T)
subroutine errorstop(global, errorCode, errorLine, addMessage)
subroutine deregisterfunction(global)
real(rfreal) function mixtperf_g_cpr(Cp, R)