68 TYPE(t_region
),
POINTER :: regions(:)
71 INTEGER :: ireg,iplag,ipeul,ipeuloutedge
74 INTEGER,
PARAMETER :: nstrkeys_max = 5
75 INTEGER,
PARAMETER :: nkeys_max = 50
76 INTEGER,
PARAMETER :: npeul_max = 10
78 CHARACTER(CHRLEN) :: rcsidentstring
79 CHARACTER(CHRLEN) :: strkeys(nstrkeys_max),keys(nkeys_max)
80 CHARACTER(CHRLEN) :: strvals(nstrkeys_max)
82 INTEGER ::
brbeg,brend
83 INTEGER :: nplag,npeul
84 INTEGER :: iedge,
nedges,npeuloutedges,npeuloxedges
85 INTEGER :: nstrkeys,nfixedimplkeys,nfixednodekeys,nkeys
86 INTEGER :: ind,indmixt,indplag0,indpeul0,indintl
87 INTEGER :: istrkeymaterialin,istrkeymaterialout,istrkeymaterialox
88 INTEGER :: ikey,ikeyused,ikeymodel,ikeyoxused,ikeyheatcoef
89 INTEGER :: ikeyvapormeth,ikeyvaportemp
90 INTEGER :: ikeymfrcplag,ikeymfrcpeul0
91 INTEGER :: ikeynode0,ikeymixtactv,ikeymixtperm,ikeyplagactv,ikeyplagperm
92 INTEGER :: ikeypeulactv0,ikeypeulperm0,ikeyactv,ikeyperm
94 LOGICAL :: plagoutexists,oxused
95 LOGICAL :: defined(nkeys_max),strdefined(nstrkeys_max)
98 REAL(RFREAL) :: vals(nkeys_max)
100 TYPE(t_material),
POINTER :: matin,matout,matox
107 rcsidentstring =
'$RCSfile: INRT_ReadBurning.F90,v $ $Revision: 1.3 $'
109 global => regions(1)%global
112 'INRT_ReadBurning.F90' )
118 istrkeymaterialin = 1
119 istrkeymaterialout = 2
120 istrkeymaterialox = 3
123 strkeys(istrkeymaterialin) =
'MATERIAL_IN'
124 strkeys(istrkeymaterialout) =
'MATERIAL_OUT'
125 strkeys(istrkeymaterialox) =
'MATERIAL_OX'
127 IF (nstrkeys > nstrkeys_max) &
128 CALL
errorstop( global,err_exceeds_decl_mem,__line__ )
141 keys(ikeyused) =
'USED'
142 keys(ikeymodel) =
'MODEL'
143 keys(ikeyoxused) =
'OX_USED'
144 keys(ikeyvapormeth) =
'VAPOR_METH'
145 keys(ikeyvaportemp) =
'VAPOR_TEMP'
146 keys(ikeyheatcoef) =
'HEAT_COEF'
147 keys(ikeymfrcplag) =
'MFRC_PLAG'
149 ikeymfrcpeul0 = nfixedimplkeys
160 ikeynode0 = ikeymfrcpeul0 + npeul_max
161 ikeymixtactv = ikeynode0 + 1
162 ikeymixtperm = ikeynode0 + 2
163 ikeyplagactv = ikeynode0 + 3
164 ikeyplagperm = ikeynode0 + 4
167 keys(ikeymixtactv) =
'MIXT_ACTV'
168 keys(ikeymixtperm) =
'MIXT_PERM'
169 keys(ikeyplagactv) =
'PLAG_ACTV'
170 keys(ikeyplagperm) =
'PLAG_PERM'
172 ikeypeulactv0 = ikeynode0 + nfixednodekeys
173 ikeypeulperm0 = ikeypeulactv0 + npeul_max
185 keys(ikeypeulactv0+ipeul) = trim(keys(ikeypeulactv0+ipeul))//
'_ACTV'
186 keys(ikeypeulperm0+ipeul) = trim(keys(ikeypeulperm0+ipeul))//
'_PERM'
189 nkeys = ikeypeulperm0 + npeul_max
191 IF (nkeys > nkeys_max) CALL
errorstop( global,err_exceeds_decl_mem,__line__ )
197 vals,strvals,
brbeg,brend,defined,strdefined )
201 vals,strvals,defined,strdefined )
202 brbeg = lbound(regions,1)
203 brend = ubound(regions,1)
208 input => regions(ireg)%inrtInput
209 inrt =>
input%inrts(inrt_type_burning)
213 IF (.NOT.
input%defaultRead) &
214 CALL
errorstop( global,err_inrt_defunread,__line__ )
216 IF (inrt%used) CALL
errorstop( global,err_inrt_read,__line__ )
223 IF (npeul > npeul_max) &
224 CALL
errorstop( global,err_exceeds_decl_mem,__line__ )
226 indmixt =
input%indMixt
227 indplag0 =
input%indPlag0
228 indpeul0 =
input%indPeul0
229 indintl =
input%indIntl
235 IF (defined(ikeyused))
THEN
236 IF (nint(vals(ikeyused)) == 0) inrt%used = .false.
239 IF (nplag < 1) inrt%used = .false.
241 IF (.NOT. inrt%used) cycle
247 IF (defined(ikeyoxused) .AND. npeul > 0)
THEN
249 SELECT CASE (nint(vals(ikeyoxused)))
258 CALL
errorstop( global,err_inrt_badswitch,__line__ )
266 IF (strdefined(istrkeymaterialin))
THEN
269 CALL
errorstop( global,err_inrt_missingmat,__line__ )
272 IF (strdefined(istrkeymaterialout))
THEN
275 CALL
errorstop( global,err_inrt_missingmat,__line__ )
278 IF (strdefined(istrkeymaterialox))
THEN
282 IF (oxused) CALL
errorstop( global,err_inrt_missingmat,__line__ )
290 matox%index,oxused,plagoutexists)
296 inrt%switches(inrt_swi_burning_model) = inrt_burning_model_default
298 IF (defined(ikeymodel))
THEN
300 SELECT CASE (nint(vals(ikeymodel)))
303 inrt%switches(inrt_swi_burning_model) = inrt_burning_model_beckstead
306 CALL
errorstop( global,err_inrt_badswitch,__line__ )
315 inrt%switches(inrt_swi_burning_oxused) = 1
318 inrt%switches(inrt_swi_burning_oxused) = 0
324 inrt%switches(inrt_swi_burning_vapor_meth) = inrt_burning_vapor_meth_used
326 IF (defined(ikeyvapormeth))
THEN
328 SELECT CASE (nint(vals(ikeyvapormeth)))
331 inrt%switches(inrt_swi_burning_vapor_meth) = &
332 inrt_burning_vapor_meth_none
335 inrt%switches(inrt_swi_burning_vapor_meth) = &
336 inrt_burning_vapor_meth_used
339 CALL
errorstop( global,err_inrt_badswitch,__line__ )
351 IF (defined(ikeyvaportemp)) coef = vals(ikeyvaportemp)
353 IF (coef < 0._rfreal) CALL
errorstop( global,err_inrt_badval,__line__ )
355 inrt%data(inrt_dat_burning_vapor_temp) = coef
361 IF (defined(ikeyheatcoef)) coef = vals(ikeyheatcoef)
363 IF (coef < 0._rfreal) CALL
errorstop( global,err_inrt_badval,__line__ )
365 inrt%data(inrt_dat_burning_heat_coef) = coef
371 IF (defined(ikeymfrcplag)) coef = vals(ikeymfrcplag)
373 IF (.NOT. plagoutexists) coef = 0._rfreal
375 IF (coef < 0._rfreal) CALL
errorstop( global,err_inrt_badval,__line__ )
377 inrt%data(inrt_dat_burning_mfrc_plag) = coef
381 npeuloutedges = inrt%nEdges - npeuloxedges - inrt_burning_nedges0
383 DO ipeuloutedge = 1,npeuloutedges
385 iedge = inrt_burning_x_mass_s0 + npeuloxedges + ipeuloutedge
387 ipeul = inrt%edges(iedge)%iNode(2) - indpeul0
389 IF (ipeul < 1 .OR. ipeul > npeul) &
390 CALL
errorstop( global,err_inrt_indexrange,__line__ )
392 ikey = ikeymfrcpeul0 + ipeul
393 ind = inrt_dat_burning_mfrc_peul0 + ipeuloutedge
397 IF (defined(ikey)) coef = vals(ikey)
399 IF (coef < 0._rfreal) CALL
errorstop( global,err_inrt_badval,__line__ )
401 inrt%data(ind) = coef
407 IF (defined(ikeymixtactv)) &
409 inrt%activeness(indmixt))
411 IF (defined(ikeymixtperm)) &
413 inrt%permission(indmixt))
419 ind = indplag0 + iplag
421 IF (defined(ikeyplagactv)) &
423 inrt%activeness(ind))
425 IF (defined(ikeyplagperm)) &
427 inrt%permission(ind))
435 ikeyactv = ikeypeulactv0 + ipeul
436 ikeyperm = ikeypeulperm0 + ipeul
437 ind = indpeul0 + ipeul
439 IF (defined(ikeyactv)) &
441 inrt%activeness(ind))
443 IF (defined(ikeyperm)) &
445 inrt%permission(ind))
454 inrt%activeness(indintl) =
min(inrt%activeness(indmixt), &
455 inrt%activeness(indplag0+1))
subroutine makenumberedkeys(keys, indBegin, string, numBegin, numEnd, numSkip)
subroutine readbothsection(global, fileID, nvals, nStrVals, keys, strKeys, vals, strVals, defined, strDefined)
subroutine readbothregionsection(global, fileID, nvals, nStrVals, keys, strKeys, vals, strVals, brbeg, brend, defined, strDefined)
subroutine inrt_setmaterial(global, material, name)
subroutine inrt_readburning(regions)
subroutine registerfunction(global, funName, fileName)
subroutine inrt_determinetokens(region, inrt)
**********************************************************************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 brbeg
subroutine input(X, NNODE, NDC, NCELL, NFCE, NBPTS, NBFACE, ITYP, NPROP, XBNDY, XFAR, YFAR, ZFAR)
subroutine inrt_setactiveness(global, val, actv)
Vector_n min(const Array_n_const &v1, const Array_n_const &v2)
subroutine errorstop(global, errorCode, errorLine, addMessage)
subroutine deregisterfunction(global)
subroutine inrt_setpermission(global, val, perm)
subroutine inrt_defineburning(region, matIndIn, matIndOut, matIndOx, oxUsed, plagOutExists)