58 oxused,plagoutexists )
72 TYPE(t_region
),
INTENT(INOUT) :: region
73 INTEGER,
INTENT(IN) :: matindin,matindout,matindox
74 LOGICAL,
INTENT(INOUT) :: oxused
75 LOGICAL,
INTENT(OUT) :: plagoutexists
78 INTEGER :: iplag,ipeul,ipeuloutedge
81 INTEGER,
PARAMETER :: npeuloutedges_max = 10
83 CHARACTER(CHRLEN) :: rcsidentstring
85 INTEGER :: nplag,npeul,
nedges,nplaginedges,nplagoutedges,npeuloutedges
86 INTEGER :: npeuloxedges,matindplag,matindpeul
87 INTEGER :: iplagin,iplagout,ipeulox,ipeuloxedge
88 INTEGER :: ipeularr(npeuloutedges_max)
97 rcsidentstring =
'$RCSfile: INRT_DefineBurning.F90,v $ $Revision: 1.5 $'
99 global => region%global
102 'INRT_DefineBurning.F90' )
108 input => region%inrtInput
109 inrt =>
input%inrts(inrt_type_burning)
111 inrt%name =
"Burning"
124 matindplag = region%plagInput%materialIndex(iplag)
127 IF (matindplag == matindin)
THEN
129 nplaginedges = nplaginedges + 1
132 ELSE IF (matindplag == matindout)
THEN
134 nplagoutedges = nplagoutedges + 1
141 IF (nplaginedges > 1 .OR. nplagoutedges > 1) &
142 CALL
errorstop( global,err_inrt_multplagmat,__line__ )
144 IF (nplaginedges < 1) &
145 CALL
errorstop( global,err_inrt_missplagmat,__line__ )
147 plagoutexists = .true.
148 IF (nplagoutedges < 1)
THEN
149 plagoutexists = .false.
162 matindpeul = region%peulInput%ptypes(ipeul)%material%index
166 matindpeul = region%specInput%specType(ipeul)%pMaterial%index
169 IF (matindpeul == matindout)
THEN
171 ipeuloutedge = ipeuloutedge + 1
173 IF (ipeuloutedge > npeuloutedges_max) &
174 CALL
errorstop( global,err_exceeds_decl_mem,__line__ )
176 ipeularr(ipeuloutedge) = ipeul
178 ELSE IF (oxused)
THEN
180 IF (matindpeul == matindox)
THEN
182 ipeuloxedge = ipeuloxedge + 1
184 IF (ipeuloxedge > 1) &
185 CALL
errorstop( global,err_inrt_only1,__line__ )
195 npeuloutedges = ipeuloutedge
196 npeuloxedges = ipeuloxedge
197 nedges = inrt_burning_nedges0 + npeuloutedges + npeuloxedges
199 IF (oxused .AND. npeuloxedges < 1)
THEN
200 WRITE(stdout,
'(A)') solver_name//
'### INRT_WARNING: no oxidizer smoke '// &
201 'type: setting OX_USED = NO'
206 inrt_swi_burning_total,inrt_dat_burning_total0 + npeuloutedges)
211 inrt%nInputEdges = 2 + npeuloxedges
215 edge => inrt%edges(inrt_burning_g_mass_x)
217 edge%tEdge = inrt_edge_mass
218 edge%iNode(1) =
input%indMixt
219 edge%iNode(2) =
input%indIntl
221 edge => inrt%edges(inrt_burning_l_mass_x)
223 edge%tEdge = inrt_edge_mass
224 edge%iNode(1) =
input%indPlag0 + iplagin
225 edge%iNode(2) =
input%indIntl
227 IF (npeuloxedges > 0)
THEN
229 edge => inrt%edges(inrt_burning_s_mass_x0 + npeuloxedges)
231 edge%tEdge = inrt_edge_mass_gho
232 edge%iNode(1) =
input%indPeul0 + ipeulox
233 edge%iNode(2) =
input%indIntl
237 edge => inrt%edges(inrt_burning_x_ener_g + npeuloxedges)
239 edge%tEdge = inrt_edge_ener
240 edge%iNode(1) =
input%indIntl
241 edge%iNode(2) =
input%indMixt
243 edge => inrt%edges(inrt_burning_x_ener_lv + npeuloxedges)
245 edge%tEdge = inrt_edge_ener
246 edge%iNode(1) =
input%indIntl
247 edge%iNode(2) =
input%indPlagVapor
249 edge => inrt%edges(inrt_burning_x_mass_g + npeuloxedges)
251 edge%tEdge = inrt_edge_mass
252 edge%iNode(1) =
input%indIntl
253 edge%iNode(2) =
input%indMixt
255 edge => inrt%edges(inrt_burning_x_mass_l + npeuloxedges)
257 edge%tEdge = inrt_edge_mass
258 edge%iNode(1) =
input%indIntl
259 edge%iNode(2) =
input%indPlag0 + iplagout
261 DO ipeuloutedge = 1,npeuloutedges
263 edge => inrt%edges(inrt_burning_x_mass_s0 + npeuloxedges + ipeuloutedge)
265 edge%tEdge = inrt_edge_mass
266 edge%iNode(1) =
input%indIntl
267 edge%iNode(2) =
input%indPeul0 + ipeularr(ipeuloutedge)
subroutine registerfunction(global, funName, fileName)
subroutine inrt_allocateauxillary(global, inrt, nEdges, nSwitches, nData)
subroutine input(X, NNODE, NDC, NCELL, NFCE, NBPTS, NBFACE, ITYP, NPROP, XBNDY, XFAR, YFAR, ZFAR)
subroutine errorstop(global, errorCode, errorLine, addMessage)
subroutine deregisterfunction(global)
subroutine inrt_defineburning(region, matIndIn, matIndOut, matIndOx, oxUsed, plagOutExists)