My Project
programmer's documentation
Libby-Williams gas example

Libby-Williams gas example

Local variables to be added

The following local variables need to be defined for the examples in this section:

integer iel, mode, igg, izone
double precision hinit, coefg(ngazgm)
double precision sommqf, sommqt, sommq, tentm, fmelm
character(len=80) :: chaine
integer :: iscal, ivar, ii
double precision :: valmax, valmin
integer, allocatable, dimension(:) :: lstelt
double precision, dimension(:), pointer :: cvar_yfm, cvar_fm, cvar_cyfp2m
double precision, dimension(:), pointer :: cvar_fp2m, cvar_coyfp
double precision, dimension(:), pointer :: cvar_scalt, cvar_scal

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)) ! temporary array for cells selection
! Control output
write(nfecra,9001)
do igg = 1, ngazgm
coefg(igg) = zero
enddo
!===============================================================================
! Variables initialization:
!
! ONLY done if there is no restart computation
!===============================================================================
if ( isuite.eq.0 ) then
! a. Preliminary calculations
sommqf = zero
sommq = zero
sommqt = zero
! Deals with multiple inlets
do izone = 1, nozapm
sommqf = sommqf + qimp(izone)*fment(izone)
sommqt = sommqt + qimp(izone)*tkent(izone)
sommq = sommq + qimp(izone)
enddo
if (abs(sommq).gt.epzero) then
fmelm = sommqf / sommq
tentm = sommqt / sommq
else
fmelm = zero
tentm = t0
endif
! ----- Calculation of the Enthalpy of the gas mixture
! (unburned mean gas)
if ( ippmod(icolwc).eq.1 .or. ippmod(icolwc).eq.3 &
.or. ippmod(icolwc).eq.5 ) then
coefg(1) = fmelm
coefg(2) = (1.d0-fmelm)
coefg(3) = zero
mode = -1
! Converting the mean temperatur boundary conditions into
! enthalpy values
call cothht &
!==========
( mode , ngazg , ngazgm , coefg , &
npo , npot , th , ehgazg , &
hinit , tentm )
endif
do iel = 1, ncel
! b. Initialisation
! Mass fraction of Unburned (fresh) Gas
cvar_yfm(iel) = 0.0d0*fmelm
! Mean Mixture Fraction
cvar_fm(iel) = 0.d0*fmelm
! Variance of fuel Mass fraction
cvar_cyfp2m(iel) = zero
! Variance of Mixture Fraction
cvar_fp2m(iel) = zero
! Covariance for NDIRAC >= 3
if ( ippmod(icolwc).ge. 2 ) then
cvar_coyfp(iel) = zero
endif
! Enthalpy
if ( ippmod(icolwc).eq.1 .or. ippmod(icolwc).eq.3 &
.or. ippmod(icolwc).eq.5 ) then
cvar_scalt(iel) = hinit
endif
enddo
! ---> Control Output of the user defined initialization values
write(nfecra,2000)
do ii = 1, nscapp
iscal = iscapp(ii)
ivar = isca(iscal)
call field_get_val_s(ivarfl(isca(ivar)), cvar_scal)
valmax = -grand
valmin = grand
do iel = 1, ncel
valmax = max(valmax,cvar_scal(iel))
valmin = min(valmin,cvar_scal(iel))
enddo
if ( irangp.ge.0 ) then
call parmax(valmax)
call parmin(valmin)
endif
call field_get_label(ivarfl(ivar), chaine)
write(nfecra,2010)chaine(1:8),valmin,valmax
enddo
write(nfecra,2020)
endif

Finalization

At the end of the subroutine, it is recommended to deallocate the work array lstelt, like in basic example.

cothht
subroutine cothht(mode, nespec, nespem, xespec, npo, npot, th, eh, enthal, temper)
Definition: cothht.f90:29