My Project
programmer's documentation
Pulverized coal lagrangian

Local variables to be added

integer ifac, ii
integer izone
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

Assign boundary conditions to boundary faces here For each subset:

  • use selection criteria to filter boundary faces of a given subset
  • loop on faces from a subset
  • set the boundary condition for each face The color 15 become a WALL.

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)
! Type de condition aux limites pour les variables standard
itypfb(ifac) = ientre
! Numero de zone (on les numerote de 1 a n)
izone = 1
! - Reperage de la zone a laquelle appartient la face
izfppp(ifac) = izone
! ------ Pour ces faces d'entree , on est a debit impose
ientat(izone) = 1
iqimp(izone) = 1
! - Debit en kg/s pour l'air
qimpat(izone) = 1.46d-03
! - Temperature en K pour l'air
timpat(izone) = 400.d0 + tkelvi
! ------ On impose en couleur 12 une entree a debit impose
! L'utilisateur donne donc ici uniquement
! la direction du vecteur vitesse
rcodcl(ifac,iu,1) = 0.d0
rcodcl(ifac,iv,1) = 0.d0
rcodcl(ifac,iw,1) = 5.d0
! ------ 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
! Exemple de cas ou ICALKE(IZONE) = 0 : DEBUT
! Eliminer ces lignes pour la clarte si on a fait le choix ICALKE(IZONE) = 1
if(icalke(izone).eq.0) then
! Calcul de k et epsilon en entree (XKENT et XEENT) a partir
! l'intensite turbulente et de lois standards en conduite
! circulaire (leur initialisation est inutile mais plus
! propre)
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
! (ITYTUR est un indicateur qui vaut ITURB/10)
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
! Exemple de cas ou ICALKE(IZONE) = 0 : FIN
! ------ Traitement des scalaires physiques particulieres
! Ils sont traites automatiquement
! ------ Traitement des scalaires utilisateurs
if ( (nscal-nscapp).gt.0 ) then
do ii = 1, (nscal-nscapp)
rcodcl(ifac,isca(ii),1) = 1.d0
enddo
endif
enddo

Example 2

The color 15 becomes a WALL.

call getfbr('15', nlelt, lstelt)
!==========
do ilelt = 1, nlelt
ifac = lstelt(ilelt)
! PAROI : DEBIT NUL (FLUX NUL POUR LA PRESSION)
! FROTTEMENT POUR LES VITESSES (+GRANDEURS TURB)
! FLUX NUL SUR LES SCALAIRES
! Type de condition aux limites pour les variables standard
itypfb(ifac) = iparoi
! Numero de zone (on les numerote de 1 a n)
izone = 2
! - Reperage de la zone a laquelle appartient la face
izfppp(ifac) = izone
enddo

Example 3

The color 19 becomes an OUTLET.

call getfbr('19', nlelt, lstelt)
!==========
do ilelt = 1, nlelt
ifac = lstelt(ilelt)
! SORTIE : FLUX NUL VITESSE ET TEMPERATURE, PRESSION IMPOSEE
! Noter que la pression sera recalee a P0
! sur la premiere face de sortie libre (ISOLIB)
! Type de condition aux limites pour les variables standard
itypfb(ifac) = isolib
! Numero de zone (on les numerote de 1 a n)
izone = 3
! - Reperage de la zone a laquelle appartient la face
izfppp(ifac) = izone
enddo

Example 4

The colors 14 and 4 become a symmetry plane.

call getfbr('14 or 4', nlelt, lstelt)
!==========
do ilelt = 1, nlelt
ifac = lstelt(ilelt)
! SYMETRIES
! Type de condition aux limites pour les variables standard
itypfb(ifac) = isymet
! Numero de zone (on les numerote de 1 a n)
izone = 4
! - Reperage de la zone a laquelle appartient la face
izfppp(ifac) = izone
enddo
getfbr
subroutine getfbr(fstr, facnb, faces)
Build the list of boundary faces matching a criteria string.
Definition: cs_selector_f2c.f90:111