| programmer's documentation

- Main Page
- Related Pages
- Modules
- Data Structures
- Files

All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Compressible example

# Compressible example

## Local variables to be added

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

integer, allocatable, dimension(:) :: lstelt
integer iel
integer iscal, imodif
double precision, allocatable, dimension(:) :: w1, w2, w3, w4
double precision, dimension(:), pointer :: crom

## Allocation

Before user initialization, work arrays must be allocated.

allocate(lstelt(ncel)) ! temporary array for cells selection

## Initialization

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

if ( isuite.eq.0 ) then
! --- Velocity components
do iel = 1, ncel
rtp(iel,iu) = 0.d0
rtp(iel,iv) = 0.d0
rtp(iel,iw) = 0.d0
enddo
! --- User defined scalars
! If there are user defined scalars
if(nscaus.gt.0) then
! For each scalar
do iscal = 1, nscaus
! If the scalar is associated to the considered phase iphas
! if(iphsca(iscal).eq.iphas) then
! Initialize each cell value
do iel = 1, ncel
rtp(iel,isca(iscal)) = 0.d0
enddo
! endif
enddo
endif
! --- Pressure, Density, Temperature, Total Energy
! Only 2 out of these 4 variables are independent: one may choose to
! initialize any pair of variables picked out of these 4, except
! (Temperature-Energy). The remaining 2 variables will be deduced
! automatically.
! Initialize 2 and only 2 variables
! To do so, set iutile=1 for each of the 2 selected variables
! and iutile=0 for each of the 2 others
! In the example provided below, Pressure and Temperature are
! initialized.
! ithvar indicates which variables have been set:
! it is completed automatically for each variable and
! it must not be modified.
! 1. Pressure (Pa)
if(.true.) then
ithvar = ithvar*2
do iel = 1, ncel
rtp(iel,ipr) = p0
enddo
endif
! 2. Density (kg.m-3)
if(.false.) then
ithvar = ithvar*3
do iel = 1, ncel
crom(iel) = ro0
enddo
endif
! 3. Temperature (K -- Warning: Kelvin)
if(.true.) then
ithvar = ithvar*5
do iel = 1, ncel
rtp(iel,isca(itempk)) = t0
enddo
endif
! 4. Total Energy (J/kg)
if(.false.) then
ithvar = ithvar*7
do iel = 1, ncel
rtp(iel,isca(ienerg)) = cv0*t0
enddo
endif
endif

## Finalization

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

deallocate(lstelt) ! temporary array for cells selection
deallocate(w1, w2, w3, w4)