One can get any field using field_get_val_s_by_name function. cvar_*
(iel) is the value of this variable in cell number iel
. ONLY done if there is no restart computation
Unified combustion coal example
Local variables to be added
The following local variables need to be defined for the examples in this section:
integer iel, ige, mode, icla, icha
integer ioxy
double precision t1init, h1init, coefe(ngazem)
double precision t2init, h2init
double precision f1mc(ncharm), f2mc(ncharm)
double precision xkent, xeent, d2s3
double precision wmh2o,wmco2,wmn2,wmo2,dmas
integer, allocatable, dimension(:) :: lstelt
double precision, dimension(:), pointer :: cvar_k, cvar_cep, cvar_phi, cvar_fb
double precision, dimension(:), pointer :: cvar_omg, cvar_nusa
double precision, dimension(:), pointer :: cvar_r11, cvar_r22, cvar_r33
double precision, dimension(:), pointer :: cvar_r12, cvar_r13, cvar_r23
double precision, dimension(:), pointer :: cvar_xch, cvar_xck, cvar_np, cvar_h2
double precision, dimension(:), pointer :: cvar_scalt
double precision, dimension(:), pointer :: cvar_f1m, cvar_f2m, cvar_f4m
double precision, dimension(:), pointer :: cvar_f5m, cvar_f6m, cvar_f7m
double precision, dimension(:), pointer :: cvar_f8m, cvar_f9m, cvar_fvp2m
double precision, dimension(:), pointer :: cvar_yco2
double precision, dimension(:), pointer :: cvar_yhcn, cvar_yno, cvar_hox
Allocation
Before user initialization, work arrays lstelt must be allocated, like in basic example.
Initialization
The following initialization block needs to be added for the following examples:
allocate(lstelt(ncel))
write(nfecra,9001)
d2s3 = 2.d0/3.d0
if (isuite.eq.0) then
xkent = 1.d-10
xeent = 1.d-10
if (itytur.eq.2) then
call field_get_val_s(ivarfl(ik), cvar_k)
call field_get_val_s(ivarfl(iep), cvar_cep)
do iel = 1, ncel
cvar_k(iel) = xkent
cvar_cep(iel) = xeent
enddo
elseif (itytur.eq.3) then
call field_get_val_s(ivarfl(ir11), cvar_r11)
call field_get_val_s(ivarfl(ir22), cvar_r22)
call field_get_val_s(ivarfl(ir33), cvar_r33)
call field_get_val_s(ivarfl(ir12), cvar_r12)
call field_get_val_s(ivarfl(ir13), cvar_r13)
call field_get_val_s(ivarfl(ir23), cvar_r23)
call field_get_val_s(ivarfl(iep), cvar_cep)
do iel = 1, ncel
cvar_r11(iel) = d2s3*xkent
cvar_r22(iel) = d2s3*xkent
cvar_r33(iel) = d2s3*xkent
cvar_r12(iel) = 0.d0
cvar_r13(iel) = 0.d0
cvar_r23(iel) = 0.d0
cvar_cep(iel) = xeent
enddo
elseif (iturb.eq.50) then
call field_get_val_s(ivarfl(ik), cvar_k)
call field_get_val_s(ivarfl(iep), cvar_cep)
call field_get_val_s(ivarfl(iphi), cvar_phi)
call field_get_val_s(ivarfl(ifb), cvar_fb)
do iel = 1, ncel
cvar_k(iel) = xkent
cvar_cep(iel) = xeent
cvar_phi(iel) = d2s3
cvar_fb(iel) = 0.d0
enddo
elseif (iturb.eq.60) then
call field_get_val_s(ivarfl(ik), cvar_k)
call field_get_val_s(ivarfl(iomg), cvar_omg)
do iel = 1, ncel
cvar_k(iel) = xkent
cvar_omg(iel) = xeent/cmu/xkent
enddo
elseif (iturb.eq.70) then
call field_get_val_s(ivarfl(inusa), cvar_nusa)
do iel = 1, ncel
cvar_nusa(iel) = cmu*xkent**2/xeent
enddo
endif
t1init = t0
t2init = t0
do icla = 1, nclacp
icha = ichcor(icla)
call field_get_val_s(ivarfl(isca(ixch(icla))), cvar_xch)
call field_get_val_s(ivarfl(isca(ixck(icla))), cvar_xck)
call field_get_val_s(ivarfl(isca(inp(icla))), cvar_np)
call field_get_val_s(ivarfl(isca(ih2(icla))), cvar_h2)
do iel = 1, ncel
cvar_xch(iel) = zero
cvar_xck(iel) = zero
cvar_np(iel) = zero
cvar_h2(iel) = zero
enddo
enddo
do ige = 1, ngazem
coefe(ige) = zero
enddo
coefe(io2) = wmole(io2)*oxyo2(1) &
/( wmole(io2) *oxyo2(1) +wmole(in2) *oxyn2(1) &
+wmole(ih2o)*oxyh2o(1)+wmole(ico2)*oxyco2(1))
coefe(ih2o) = wmole(ih2o)*oxyh2o(1) &
/( wmole(io2) *oxyo2(1) +wmole(in2) *oxyn2(1) &
+wmole(ih2o)*oxyh2o(1)+wmole(ico2)*oxyco2(1))
coefe(ico2) = wmole(ico2)*oxyco2(1) &
/( wmole(io2) *oxyo2(1) +wmole(in2) *oxyn2(1) &
+wmole(ih2o)*oxyh2o(1)+wmole(ico2)*oxyco2(1))
coefe(in2) = 1.d0-coefe(io2)-coefe(ih2o)-coefe(ico2)
do icha = 1, ncharm
f1mc(icha) = zero
f2mc(icha) = zero
enddo
mode = -1
call field_get_val_s(ivarfl(isca(iscalt)), cvar_scalt)
do iel = 1, ncel
cvar_scalt(iel) = h1init
enddo
do icha = 1, ncharb
call field_get_val_s(ivarfl(isca(if1m(icha))), cvar_f1m)
call field_get_val_s(ivarfl(isca(if2m(icha))), cvar_f2m)
do iel = 1, ncel
cvar_f1m(iel) = zero
cvar_f2m(iel) = zero
enddo
enddo
if (noxyd .ge. 2) then
call field_get_val_s(ivarfl(isca(if4m)), cvar_f4m)
endif
if (noxyd .ge. 3) then
call field_get_val_s(ivarfl(isca(if5m)), cvar_f5m)
endif
if (ippmod(iccoal) .ge. 1) then
call field_get_val_s(ivarfl(isca(if6m)), cvar_f6m)
endif
call field_get_val_s(ivarfl(isca(if7m)), cvar_f7m)
if (ihtco2 .eq. 1) then
call field_get_val_s(ivarfl(isca(if8m)), cvar_f8m)
endif
if (ihth2o .eq. 1) then
call field_get_val_s(ivarfl(isca(if9m)), cvar_f9m)
endif
call field_get_val_s(ivarfl(isca(ifvp2m)), cvar_fvp2m)
call field_get_val_s(ivarfl(isca(iyco2)), cvar_yco2)
call field_get_val_s(ivarfl(isca(iyhcn)), cvar_yhcn)
call field_get_val_s(ivarfl(isca(iyno)), cvar_yno)
call field_get_val_s(ivarfl(isca(ihox)), cvar_hox)
do iel = 1, ncel
if (noxyd .ge. 2) then
cvar_f4m(iel) = zero
endif
if (noxyd .ge. 3) then
cvar_f5m(iel) = zero
endif
if (ippmod(iccoal) .ge. 1) then
cvar_f6m(iel) = zero
endif
cvar_f7m(iel) = zero
if (ihtco2 .eq. 1) then
cvar_f8m(iel) = zero
endif
if (ihth2o .eq. 1) then
cvar_f9m(iel) = zero
endif
cvar_fvp2m(iel) = zero
if (ieqco2.ge.1) then
ioxy = 1
wmo2 = wmole(io2)
wmco2 = wmole(ico2)
wmh2o = wmole(ih2o)
wmn2 = wmole(in2)
dmas = ( oxyo2(ioxy)*wmo2 +oxyn2(ioxy)*wmn2 &
+oxyh2o(ioxy)*wmh2o+oxyco2(ioxy)*wmco2 )
xco2 = oxyco2(ioxy)*wmco2/dmas
cvar_yco2(iel) = oxyco2(ioxy)*wmco2/dmas
endif
if (ieqnox .eq. 1) then
cvar_yhcn(iel) = 0.d0
cvar_yno(iel) = 0.d0
cvar_hox(iel) = h1init
endif
enddo
endif
Finalization
At the end of the subroutine, it is recommended to deallocate the work array lstelt, like in basic example.