Local variables to be added
integer          ifac, iel, ii, ivar
integer          izone
integer          ilelt, nlelt
double precision uref2, d2s3
double precision rhomoy, xdh, xustar2
double precision xitur
double precision xkent, xeent
 
integer, allocatable, dimension(:) :: lstelt
double precision, dimension(:), pointer :: boundary_roughness
  
Initialization and finalization
Initialization and finalization is similar to that of the base examples
Example 1
Example of specific boundary conditions fully defined by the user, on the basis of wall conditions selection (mass flow computation, specific logging, ...)
We prescribe for group '1234' a wall, with in addition:
- a Dirichlet condition on velocity (sliding wall with no-slip condition)
 
- a Dirichlet condition on the first scalar.
 
call getfbr(
'1234', nlelt, lstelt)
 
do ilelt = 1, nlelt
 
  ifac = lstelt(ilelt)
 
  itypfb(ifac) = iparoi
 
  icodcl(ifac,iu )  = 1
  rcodcl(ifac,iu,1) = 1.d0
  rcodcl(ifac,iu,2) = rinfin
  rcodcl(ifac,iu,3) = 0.d0
  icodcl(ifac,iv )  = 1
  rcodcl(ifac,iv,1) = 0.d0
  rcodcl(ifac,iv,2) = rinfin
  rcodcl(ifac,iv,3) = 0.d0
  icodcl(ifac,iw )  = 1
  rcodcl(ifac,iw,1) = 0.d0
  rcodcl(ifac,iw,2) = rinfin
  rcodcl(ifac,iw,3) = 0.d0
 
  ivar = isca(1)
  icodcl(ifac,ivar )  = 1
  rcodcl(ifac,ivar,1) = 10.d0
  rcodcl(ifac,ivar,2) = rinfin
  rcodcl(ifac,ivar,3) = 0.d0
 
enddo
  
Example 2
Example of specific boundary conditions fully defined by the user, with no definition of a specific type.
We prescribe at group '5678' a homogeneous Neumann condition for all variables.
call getfbr(
'5678', nlelt, lstelt)
 
do ilelt = 1, nlelt
 
  ifac = lstelt(ilelt)
 
  
 
  itypfb(ifac) = iindef
 
  do ii = 1, nvar
    icodcl(ifac,ii )  = 3
    rcodcl(ifac,ii,1) = 0.d0
    rcodcl(ifac,ii,2) = rinfin
    rcodcl(ifac,ii,3) = 0.d0
  enddo
 
enddo
  
Example 3
Example of specific boundary conditions fully defined by the user, with the definition of a specific type, for example for future selection (mass flow computation, specific logging, ...)
We prescribe for group '6789' a homogeneous Neumann condition for all variables, except for the first scalar, for which we select a homogeneous Dirichlet.
call getfbr(
'6789', nlelt, lstelt)
 
do ilelt = 1, nlelt
 
  ifac = lstelt(ilelt)
 
  
  
  
  
  
 
  itypfb(ifac) = 89
 
  do ii = 1, nvar
    icodcl(ifac,ii )  = 3
    rcodcl(ifac,ii,1) = 0.d0
    rcodcl(ifac,ii,2) = rinfin
    rcodcl(ifac,ii,3) = 0.d0
  enddo
 
  icodcl(ifac,isca(1) )  = 1
  rcodcl(ifac,isca(1),1) = 0.d0
  rcodcl(ifac,isca(1),2) = rinfin
  rcodcl(ifac,isca(1),3) = 0.d0
 
enddo
  
Example 4
Example of wall boundary condition with automatic continuous switch between rough and smooth.
call field_get_val_s_by_name("boundary_roughness", boundary_roughness)
 
call getfbr(
'6789', nlelt, lstelt)
 
do ilelt = 1, nlelt
 
  ifac = lstelt(ilelt)
 
  
  
 
  itypfb(ifac) = iparoi
 
  
  boundary_roughness(ifac) = 0.05
 
enddo