programmer's documentation
Pulverized coal

Local variables to be added

integer ifac, ii
integer izone
integer icha, iclapc
integer ilelt, nlelt
double precision uref2, d2s3
double precision xkent, xeent
integer, allocatable, dimension(:) :: lstelt

Initialization and finalization

Initialization and finalization is similar to that of the base examples

Example 1

BOUNDARY FACE corresponding to AIR INLET, e.g. : secondary or tertiary air.

call getfbr('12', nlelt, lstelt)
!==========
do ilelt = 1, nlelt
ifac = lstelt(ilelt)
! Kind of boundary conditions for standard variables
itypfb(ifac) = ientre
! zone's number (from 1 to n)
izone = 1
! - Allocation of the zone's number to the face
izfppp(ifac) = izone
! - For theses inlet faces, mass flux is fixed
ientat(izone) = 1
iqimp(izone) = 1
! - Oxidizer's number (1 to 3)
inmoxy(izone) = 1
! - Oxidizer mass flow rate in kg/s
qimpat(izone) = 1.46d-03
! - Oxidizer's Temperature in K
timpat(izone) = 400.d0 + tkelvi
! - The color 12 becomes an fixed flow rate inlet
! The user gives speed vector direction
! (speed vector norm is irrelevent)
rcodcl(ifac,iu,1) = 0.d0
rcodcl(ifac,iv,1) = 0.d0
rcodcl(ifac,iw,1) = 5.d0
! ------ Turbulence treatment
! Boundary conditions of turbulence
icalke(izone) = 1
!
! - If ICALKE = 0 the boundary conditions of turbulence at
! the inlet are calculated as follows:
if(icalke(izone).eq.0) then
uref2 = rcodcl(ifac,iu,1)**2 &
+rcodcl(ifac,iv,1)**2 &
+rcodcl(ifac,iw,1)**2
uref2 = max(uref2,1.d-12)
xkent = epzero
xeent = epzero
if (itytur.eq.2) then
rcodcl(ifac,ik,1) = xkent
rcodcl(ifac,iep,1) = xeent
elseif(itytur.eq.3) then
rcodcl(ifac,ir11,1) = d2s3*xkent
rcodcl(ifac,ir22,1) = d2s3*xkent
rcodcl(ifac,ir33,1) = d2s3*xkent
rcodcl(ifac,ir12,1) = 0.d0
rcodcl(ifac,ir13,1) = 0.d0
rcodcl(ifac,ir23,1) = 0.d0
rcodcl(ifac,iep,1) = xeent
elseif (iturb.eq.50) then
rcodcl(ifac,ik,1) = xkent
rcodcl(ifac,iep,1) = xeent
rcodcl(ifac,iphi,1) = d2s3
rcodcl(ifac,ifb,1) = 0.d0
elseif (iturb.eq.60) then
rcodcl(ifac,ik,1) = xkent
rcodcl(ifac,iomg,1) = xeent/cmu/xkent
elseif (iturb.eq.70) then
rcodcl(ifac,inusa,1) = cmu*xkent**2/xeent
endif
endif
!
! - If ICALKE = 1 the boundary conditions of turbulence at
! the inlet refer to both, a hydraulic diameter and a
! reference velocity.
!
dh(izone) = 0.032d0
!
! - If ICALKE = 2 the boundary conditions of turbulence at
! the inlet refer to a turbulence intensity.
!
xintur(izone) = 0.d0
! ------ Automatic treatment of scalars for extended physic
! ------ treatment of user's scalars
if ( (nscal-nscapp).gt.0 ) then
do ii = 1, (nscal-nscapp)
rcodcl(ifac,isca(ii),1) = 1.d0
enddo
endif
enddo

Example 2

BOUNDARY FACE for pulverised COAL & primary air INLET.

call getfbr('11', nlelt, lstelt)
!==========
do ilelt = 1, nlelt
ifac = lstelt(ilelt)
! Kind of boundary conditions for standard variables
itypfb(ifac) = ientre
! zone's number (from 1 to n)
izone = 2
! - Allocation of the zone's number to the face
izfppp(ifac) = izone
! - For theses inlet faces, mass flux is fixed
ientcp(izone) = 1
iqimp(izone) = 1
! - Oxidizer's number (1 to 3)
inmoxy(izone) = 1
! - Oxidizer's mass flow rate in kg/s
qimpat(izone) = 1.46d-03
! - Oxidizer's Temperature in K
timpat(izone) = 800.d0 + tkelvi
! Coal inlet, initialization
do icha = 1, ncharm
qimpcp(izone,icha) = zero
timpcp(izone,icha) = zero
do iclapc = 1, ncpcmx
distch(izone,icha,iclapc) = zero
enddo
enddo
! Code_Saturne deals with NCHA different coals (component of blend)
! every coal is described by NCLPCH(icha) class of particles
! (each of them described by an inlet diameter)
!
! - Treatment for the first coal
icha = 1
! - Coal mass flow rate in kg/s
qimpcp(izone,icha) = 1.46d-4
! - PERCENTAGE mass fraction of each granulometric class
do iclapc = 1, nclpch(icha)
distch(izone,icha,iclapc) = 100.d0/dble(nclpch(icha))
enddo
! - Inlet temperature for coal & primary air
timpcp(izone,icha) = 800.d0 + tkelvi
! - The color 11 becomes an fixed flow rate inlet
! The user gives speed vector direction
! (speed vector norm is irrelevent)
rcodcl(ifac,iu,1) = 0.d0
rcodcl(ifac,iv,1) = 0.d0
rcodcl(ifac,iw,1) = 5.d0
! PPl
! ------ Traitement de la turbulence
! La turbulence est calculee par defaut si ICALKE different de 0
! - soit a partir du diametre hydraulique, d'une vitesse
! de reference adaptes a l'entree courante si ICALKE = 1
! - soit a partir du diametre hydraulique, d'une vitesse
! de reference et de l'intensite turvulente
! adaptes a l'entree courante si ICALKE = 2
! Choix pour le calcul automatique ICALKE = 1 ou 2
icalke(izone) = 1
! Saisie des donnees
dh(izone) = 0.1d0
xintur(izone) = 0.1d0
! PPl
!
enddo

Example 3

The color 15 becomes a WALL.

call getfbr('15', nlelt, lstelt)
!==========
do ilelt = 1, nlelt
ifac = lstelt(ilelt)
! WALL : NUL MASS FLUX (PRESSURE FLUX is zero valued)
! FRICTION FOR SPEED (& TURBULENCE)
! NUL SCALAR FLUX
! Kind of boundary conditions for standard variables
itypfb(ifac) = iparoi
! zone's number (from 1 to n)
izone = 3
! - Allocation of the zone's number to the face
izfppp(ifac) = izone
enddo

Example 4

The color 19 becomes an OUTLET.

call getfbr('19', nlelt, lstelt)
!==========
do ilelt = 1, nlelt
ifac = lstelt(ilelt)
! OUTLET : NUL FLUX for SPEED & SCALARS, FIXED PRESSURE
! Kind of boundary conditions for standard variables
itypfb(ifac) = isolib
! zone's number (from 1 to n)
izone = 4
! - Allocation of the zone's number to the face
izfppp(ifac) = izone
enddo

Example 5

The color 14 becomes a symmetry plane.

call getfbr('14 or 4', nlelt, lstelt)
!==========
do ilelt = 1, nlelt
ifac = lstelt(ilelt)
! SYMETRIES
! Kind of boundary conditions for standard variables
itypfb(ifac) = isymet
! zone's number (from 1 to n)
izone = 5
! - Allocation of the zone's number to the face
izfppp(ifac) = izone
enddo