source: trunk/LMDZ.COMMON/libf/evolution/comsoil_h_PEM.F90 @ 3130

Last change on this file since 3130 was 3123, checked in by llange, 20 months ago

MARS PEM
1) Adapting the Mars PEM soil grid to the one of the PCM. The first layers in the PEM follow those from the PCM (PYM grid), and then, for layers at depth, we use the classical power low grid.
2) Correction when reading the soil temperature, water density at the surface, and initialization of the ice table.
LL

File size: 3.6 KB
Line 
1module comsoil_h_PEM
2
3implicit none
4  integer, parameter :: nsoilmx_PEM = 68                 ! number of layers in the PEM
5  real,save,allocatable,dimension(:) :: layer_PEM        ! soil layer depths   [m]
6  real,save,allocatable,dimension(:) :: mlayer_PEM       ! soil mid-layer depths [m]
7  real,save,allocatable,dimension(:,:,:) :: TI_PEM       ! soil thermal inertia [SI]
8  real,save,allocatable,dimension(:,:) :: inertiedat_PEM ! soil thermal inertia saved as reference for current climate [SI]
9  ! variables (FC: built in firstcall in soil.F)
10  REAL,SAVE,ALLOCATABLE :: tsoil_PEM(:,:,:)              ! sub-surface temperatures [K]
11  real,save,allocatable :: mthermdiff_PEM(:,:)           ! (FC) mid-layer thermal diffusivity [SI]
12  real,save,allocatable :: thermdiff_PEM(:,:)            ! (FC) inter-layer thermal diffusivity [SI]
13  real,save,allocatable :: coefq_PEM(:)                  ! (FC) q_{k+1/2} coefficients [SI]
14  real,save,allocatable :: coefd_PEM(:,:)                ! (FC) d_k coefficients [SI]
15  real,save,allocatable :: alph_PEM(:,:)                 ! (FC) alpha_k coefficients [SI]
16  real,save,allocatable :: beta_PEM(:,:)                 ! beta_k coefficients [SI]
17  real,save :: mu_PEM                                    ! mu coefficient [SI]
18  real,save :: fluxgeo                                   ! Geothermal flux [W/m^2]
19  real,save :: depth_breccia                             ! Depth at which we have breccia [m]
20  real,save :: depth_bedrock                             ! Depth at which we have bedrock [m]
21  integer,save :: index_breccia                          ! last index of the depth grid before having breccia
22  integer,save :: index_bedrock                          ! last index of the depth grid before having bedrock
23  LOGICAL soil_pem  ! True by default, to run with the subsurface physic. Read in pem.def
24  real,save,allocatable,dimension(:) :: water_reservoir  ! Large reserve of water   [kg/m^2]
25  real,save :: water_reservoir_nom                       ! Nominal value for the large reserve of water   [kg/m^2]
26  logical, save :: reg_thprop_dependp                    ! thermal properites of the regolith vary with the surface pressure
27
28contains
29
30  subroutine ini_comsoil_h_PEM(ngrid,nslope)
31 
32  implicit none
33  integer,intent(in) :: ngrid ! number of atmospheric columns
34  integer,intent(in) :: nslope ! number of slope within a mesh
35
36    allocate(layer_PEM(nsoilmx_PEM))
37    allocate(mlayer_PEM(0:nsoilmx_PEM-1))
38    allocate(TI_PEM(ngrid,nsoilmx_PEM,nslope))
39    allocate(tsoil_PEM(ngrid,nsoilmx_PEM,nslope))
40    allocate(mthermdiff_PEM(ngrid,0:nsoilmx_PEM-1))
41    allocate(thermdiff_PEM(ngrid,nsoilmx_PEM-1))
42    allocate(coefq_PEM(0:nsoilmx_PEM-1))
43    allocate(coefd_PEM(ngrid,nsoilmx_PEM-1))
44    allocate(alph_PEM(ngrid,nsoilmx_PEM-1))
45    allocate(beta_PEM(ngrid,nsoilmx_PEM-1))
46    allocate(inertiedat_PEM(ngrid,nsoilmx_PEM))
47    allocate(water_reservoir(ngrid))
48  end subroutine ini_comsoil_h_PEM
49
50
51  subroutine end_comsoil_h_PEM
52
53  implicit none
54
55    if (allocated(layer_PEM)) deallocate(layer_PEM)
56    if (allocated(mlayer_PEM)) deallocate(mlayer_PEM)
57    if (allocated(TI_PEM)) deallocate(TI_PEM)
58    if (allocated(tsoil_PEM)) deallocate(tsoil_PEM)
59    if (allocated(mthermdiff_PEM)) deallocate(mthermdiff_PEM)
60    if (allocated(thermdiff_PEM)) deallocate(thermdiff_PEM)
61    if (allocated(coefq_PEM)) deallocate(coefq_PEM)
62    if (allocated(coefd_PEM)) deallocate(coefd_PEM)
63    if (allocated(alph_PEM)) deallocate(alph_PEM)
64    if (allocated(beta_PEM)) deallocate(beta_PEM)
65    if (allocated(inertiedat_PEM)) deallocate(inertiedat_PEM)
66    if (allocated(water_reservoir)) deallocate(water_reservoir)
67  end subroutine end_comsoil_h_PEM
68
69end module comsoil_h_PEM
Note: See TracBrowser for help on using the repository browser.