72 TYPE(t_region
),
POINTER :: pregion
78 CHARACTER(CHRLEN) :: rcsidentstring
80 INTEGER :: bctype,burnstat,ejecmodel,icg,ifc,injcdiamdist,ipatch,&
81 itile,iv1,iv2,iv3,iv4,nextidnumber,normdirflag,npatches,
nvert
82 INTEGER :: ifileplagtile
83 INTEGER,
POINTER,
DIMENSION(:) :: bf2c,pcvtilemass
84 INTEGER,
POINTER,
DIMENSION(:,:) :: bf2v
86 REAL(RFREAL) :: cellheight,injcbeta,
pi,volmeanpart
87 REAL(RFREAL) :: injcbetafac,injcbetafacinv,meansuperparticlevolume,spload
89 REAL(RFREAL),
DIMENSION(3,4) :: xyzvertex
91 REAL(RFREAL),
POINTER,
DIMENSION(:) :: pvol
92 REAL(RFREAL),
POINTER,
DIMENSION(:,:) :: fc,fn,pxyz
94 REAL(RFREAL),
POINTER,
DIMENSION(:,:) :: pcvtile,pdvtile
96 TYPE(t_grid),
POINTER :: pgrid
98 TYPE(t_patch),
POINTER :: ppatch
99 TYPE(t_plag),
POINTER :: pplag
106 rcsidentstring =
'$RCSfile: PLAG_RFLU_InjectionDriver.F90,v $ $Revision: 1.14 $'
108 global => pregion%global
111 'PLAG_RFLU_InjectionDriver.F90' )
117 pgrid => pregion%grid
118 pplag => pregion%plag
120 npatches = pgrid%nPatches
125 injcdiamdist = pregion%plagInput%injcDiamDist
126 injcbeta = pregion%plagInput%injcBeta
127 volmeanpart =
pi/6.0_rfreal * pregion%plagInput%injcDiamMean**3
128 ejecmodel = pregion%plagInput%ejecModel
129 spload = pregion%plagInput%spLoad
131 IF ( ejecmodel == plag_ejec_cre )
THEN
132 meansuperparticlevolume = volmeanpart *spload
134 injcbetafac = 2.0_rfreal *injcbeta *meansuperparticlevolume**2
135 injcbetafacinv = 1.0_rfreal/injcbetafac
148 IF (pregion%inrtInput%inrts(inrt_type_burning)%used)
THEN
149 burnstat = inrt_burnstat_on
151 burnstat = inrt_burnstat_off
160 ppatch => pregion%patches(ipatch)
162 bctype = ppatch%bcType
174 IF ( (bctype >= bc_injection .AND. bctype <= bc_injection + bc_range) .OR. &
175 (bctype >= bc_inflow .AND. bctype <= bc_inflow + bc_range) )
THEN
181 ptileplag => ppatch%tilePlag
183 pcvtile => ptileplag%cv
184 pcvtilemass => ptileplag%cvTileMass
185 pdvtile => ptileplag%dv
191 DO ifc = 1, ppatch%nBFaces
199 cellheight = pvol(icg)/fn(xyzmag,ifc)
201 iv1 = ppatch%bv(bf2v(1,ifc))
202 iv2 = ppatch%bv(bf2v(2,ifc))
203 iv3 = ppatch%bv(bf2v(3,ifc))
205 xyzvertex(xcoord:zcoord,1) = pxyz(xcoord:zcoord,iv1)
206 xyzvertex(xcoord:zcoord,2) = pxyz(xcoord:zcoord,iv2)
207 xyzvertex(xcoord:zcoord,3) = pxyz(xcoord:zcoord,iv3)
209 IF ( bf2v(4,ifc) == vert_none )
THEN
212 xyzvertex(xcoord:zcoord,4) = 0.0_rfreal
215 iv4 = ppatch%bv(bf2v(4,ifc))
216 xyzvertex(xcoord:zcoord,4) = pxyz(xcoord:zcoord,iv4)
223 SELECT CASE(ejecmodel)
229 CASE(plag_ejec_model1)
231 itile,icg,burnstat,
nvert, &
232 normdirflag,xyzvertex,volmeanpart, &
233 fn(xcoord:zcoord,ifc), &
234 fc(xcoord:zcoord,ifc), &
243 itile,icg,burnstat,
nvert, &
244 normdirflag,xyzvertex,volmeanpart, &
245 fn(xcoord:zcoord,ifc), &
246 fc(xcoord:zcoord,ifc), &
254 CALL
errorstop( global,err_reached_default,__line__ )
262 ptileplag%nPclsInjc(:) = 0
subroutine, public plag_invokeejecmodel1(pRegion, pPlag, pTilePlag, iTile, icg, burnStat, nVert, normDirFlag, xyzVertex, volMeanPart, fn, fc, cellHeight)
subroutine registerfunction(global, funName, fileName)
subroutine plag_rflu_injectiondriver(pRegion)
subroutine errorstop(global, errorCode, errorLine, addMessage)
subroutine deregisterfunction(global)
subroutine, public plag_invokeconsrandejec(pRegion, pPlag, pTilePlag, iTile, icg, burnStat, nVert, normDirFlag, xyzVertex, volMeanPart, fn, fc, cellHeight)