programmer's documentation
Examples of data settings for radiative transfers
radiative_tr_sketch.gif
Sketch of thermal flux in boundary walls

The radiative boundary condition is based on the calculation of a new wall temperature. This temperature is computed with a thermal flux balance:

\[{ Q_{conduction} = Q_{convection} + (Q_{rayt_{absorption}} - Q_{rayt_{emission}}}) \]

Therefore :

\[ \dfrac{xlamp}{epap} (T_{fluid} - T_{wall}) = h_{fluid} (T_{fluid} - T_{wall}) + epsp (Q_{incid} - \sigma * T_{wall}) \]

Note
In Code_Saturne the flux is positive when it is oriented from inside to outside.
Corps Emissivity
polished steel 0.06
oxidized steel 0.80
steel rough 0.94
polished aluminium 0.04
oxidiezd aluminium (inside) 0.09
oxidized aluminium (wet air)0.90
brick 0.93
concrete 0.93
paper 0.8 to 0.9
water 0.96

Boundary faces identification

Boundary faces may be identified using the getfbr subroutine. The syntax of this subroutine is described in the cs_user_boundary_conditions subroutine, but a more thorough description can be found in the user guide.

Note
These usefull constant are definded
$ TKELVI = 273.16D0 $
$ SIG = 5.6703D-8 $

Initialization and finalization

The following initialization block needs to be added for the following examples:

! Allocate a temporary array for boundary faces selection
allocate(lstelt(nfabor))

At the end of the subroutine, it is recommended to deallocate the work array:

! Deallocate the temporary array
deallocate(lstelt)

In theory Fortran 95 deallocates locally-allocated arrays automatically, but deallocating arrays in a symetric manner to their allocation is good pratice, and avoids using a different logic for C and Fortran.

Remaining initialisation

ivar: number of the thermal variable

ivar = isca(iscalt)

Min and Max values for the wall temperatures (clipping otherwise)

$ T_{min} $ and $T_{max} $ are given in Kelvin.

tmin = 0.d0
tmax = grand + tkelvi

Assign boundary conditions to boundary wall

Zones definition

We define zones of wall boundary, and we assign a type. This allows to apply the boundary conditions and realize balance sheets by treating them separately for each zone.

For each boundary face ifac (not just the faces of wall) the user defines his own choice by a number of zone izfrdp(ifac) from color of the boundary face or more generally, their properties (color, groups ...), or boundary conditions specified in cs_user_boundary_conditions, or even of their coordinates.

Warning
It is essential that ALL boundary faces have been assigned to a zone. The number of zones (the value of izfrdp(ifac)) is arbitrarily chosen by the user, but must be a positive integer and less than or equal to nbzrdm (value set in parameter radiat::h).

Wall caracteristics

Warning
The unit of the temperature is the Kelvin

Mandatory data

Other data (depending of the isothp)

Examples of boundary conditions

Here is a list of examples:

Gray or black wall with profil of fixed inside temperature

For wall boundary faces, selection criteria: color 1

call getfbr('1',nlelt,lstelt)
do ilelt = 1, nlelt
ifac = lstelt(ilelt)
if (itypfb(ifac).eq.iparoi) then
! zone number
izfrdp(ifac) = 51
! Type of condition: gray or black wall with fixed inside temperature
isothp(ifac) = itpimp
! Emissivity
epsp(ifac) = 0.1d0
! profil of fixed inside temperature
tintp(ifac) = 200.d0 + tkelvi
endif
enddo

Gray or black wall with fixed outside temperature \f$ T_{ext} \f$

For wall boundary faces, selection criteria: color 2

call getfbr('2',nlelt,lstelt)
do ilelt = 1, nlelt
ifac = lstelt(ilelt)
if (itypfb(ifac).eq.iparug) then
! zone number
izfrdp(ifac) = 52
! Type of condition: gray or black wall with fixed outside temperature TEXTP
isothp(ifac) = ipgrno
! Emissivity
epsp(ifac) = 0.9d0
! Conductivity (W/m/K)
xlamp(ifac) = 3.0d0
! Thickness (m)
epap(ifac) = 0.1d0
! Fixed outside temperature: 473.16 K
textp(ifac) = 200.d0 + tkelvi
! Initial inside temperature: 473.16 K
tintp(ifac) = 200.d0 + tkelvi
endif
enddo

Reflecting wall (\f$ epsp = 0 \f$) with fixed outside temperature \f$ T_{ext} \f$

For wall boundary faces, selection criteria: color 3

call getfbr('3',nlelt,lstelt)
do ilelt = 1, nlelt
ifac = lstelt(ilelt)
if (itypfb(ifac).eq.iparoi) then
! zone number
izfrdp(ifac) = 53
! Type of condition: reflecting wall with fixed outside temperature TEXTP
isothp(ifac) = iprefl
! Conductivity (W/m/K)
xlamp(ifac) = 3.0d0
! Thickness (m)
epap(ifac) = 0.1d0
! Fixed outside temperature: 473.16 K
textp(ifac) = 200.d0 + tkelvi
! Initial inside temperature: 473.16 K
tintp(ifac) = 200.d0 + tkelvi
endif
enddo

Gray or black wall and fixed conduction flux through the wall

For wall boundary faces which have the color 4:

\[ \begin{array}{rcl} \frac{\texttt{xlamp}}{\texttt{epap}} \cdot (T_{wall} - T_{ext}) &=& \text{fixed conduction flux in } W.m^{-2} \\ &=& \texttt{rodcl(ifac,ivar,3)} \end{array} \]

If the conduction flux is zero then the wall is adiabatic. The array $ \texttt{rcodcl(ifac,ivar,3)}$ has the value of the flux.
Flux density (< 0 if gain for the fluid)

\[ rcodcl(ifac,ivar,3)=C_p (viscls+\frac{visct}{\sigma})\cdot \grad{T}\cdot \vect{n} \]

call getfbr('4',nlelt,lstelt)
do ilelt = 1, nlelt
ifac = lstelt(ilelt)
if (itypfb(ifac).eq.iparoi) then
! zone number
izfrdp(ifac) = 54
! Type of condition: gray or black wall with fixed conduction flux through the wall
isothp(ifac) = ifgrno
! Emissivity
epsp(ifac) = 0.9d0
! Conduction flux (W/m2)
rcodcl(ifac,ivar,3) = 0.d0
! Initial inside temperature: 473.16 K
tintp(ifac) = 200.d0 + tkelvi
endif
enddo

Reflecting wall and fixed conduction flux through the wall

For wall boundary faces which have the color 5:

\[ \frac{xlamp}{epap} \cdot (T_{wall} - T_{ext}) = \text{fixed conduction flux} \]

and $ epsp = 0 $

If the conduction flux is zero then the wall is adiabatic. Flux density (< 0 if gain for the fluid)

call getfbr('5',nlelt,lstelt)
do ilelt = 1, nlelt
ifac = lstelt(ilelt)
if (itypfb(ifac).eq.iparoi) then
! zone number
izfrdp(ifac) = 55
! Type of condition: reflecting wall with fixed conduction flux through the wall
isothp(ifac) = ifrefl
! Conduction flux (W/m2)
rcodcl(ifac,ivar,3) = 0.d0
! Initial inside temperature: 473.16 K
tintp(ifac) = 200.d0 + tkelvi
endif
enddo

Warning

For all boundary faces that are not wall it is MANDATORY to impose a number of zone in the array izfrdp. For each zone, informations will be displayed in the listing.

do ifac = 1, nfabor
if (itypfb(ifac).eq.isolib) then
izfrdp(ifac) = 60
elseif (itypfb(ifac).eq.ifrent) then
izfrdp(ifac) = 61
elseif (itypfb(ifac).eq.ientre) then
izfrdp(ifac) = 62
elseif (itypfb(ifac).eq.i_convective_inlet) then
izfrdp(ifac) = 63
elseif (itypfb(ifac).eq.isymet) then
izfrdp(ifac) = 64

Verification that all boundary faces have been treated

elseif ( itypfb(ifac).eq.iparoi .or. &
itypfb(ifac).eq.iparug ) then
if (izfrdp(ifac) .eq. -1) then
write(nfecra,1000)ifac
iok = iok + 1
endif
endif

End of the loop on the boundary faces

enddo
! Stop if there are forgotten faces
if(iok.ne.0) then
call csexit (1)
!==========
endif

Format

1000 format( &
'@',/, &
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
'@',/, &
'@ @@ WARNING: stop in definition of boundary conditions',/, &
'@ =======',/, &
'@ Radiative data are missing for face: ',i10,/, &
'@',/, &
'@ The user subroutine ''cs_user_radiative_transfer_bcs.f90' ,/,&
'@ must be completed.' ,/,&
'@' ,/,&
'@ The calculation will not be run.' ,/,&
'@' ,/,&
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,&
'@',/)