source: trunk/LMDZ.MARS/libf/phymars/surfdat_h.F90 @ 1911

Last change on this file since 1911 was 1770, checked in by aslmd, 7 years ago

LMDZ.MARS setting the stage for maybe fixing nesting in the LMD_MM_MARS 1. add the possibility to deallocate common modules with subroutines

File size: 3.2 KB
Line 
1module surfdat_h
2
3  ! arrays are allocated in conf_phys
4  real,save,allocatable :: albedodat(:) ! albedo of bare ground
5  real,save,allocatable :: phisfi(:) ! geopotential at ground level
6  real,save :: albedice(2) ! default albedo for ice (1: North H. 2: South H.)
7  real,save :: emisice(2) ! ice emissivity; 1:Northern hemisphere 2:Southern hemisphere
8  real,save :: emissiv ! emissivity of bare ground
9  logical,save :: TESicealbedo ! use TES ice cap albedoes (if set to .true.)
10  logical,save,allocatable :: watercaptag(:) ! flag for water ice surface
11  real, save, allocatable :: dryness(:)
12     
13  logical,save :: temptag !temp tag for water caps
14     
15  real,save :: albedo_h2o_ice ! water ice albedo
16  real,save :: inert_h2o_ice ! water ice thermal inertia
17  real,save :: frost_albedo_threshold ! water frost thickness on the ground (kg.m^-2, ie mm)
18  real,save :: TESice_Ncoef ! coefficient for TES ice albedo in Northern hemisphere
19  real,save :: TESice_Scoef ! coefficient for TES ice albedo in Southern hemisphere
20  real,save :: iceradius(2) , dtemisice(2)
21  real,save,allocatable :: zmea(:),zstd(:),zsig(:),zgam(:),zthe(:)
22  real,save,allocatable :: z0(:) ! surface roughness length (m)
23  real,save :: z0_default ! default (constant over planet) surface roughness (m)
24
25  !! variables
26  REAL,SAVE,ALLOCATABLE :: tsurf(:)   ! Surface temperature (K)
27  REAL,SAVE,ALLOCATABLE :: co2ice(:)  ! co2 ice surface layer (kg.m-2) 
28  REAL,SAVE,ALLOCATABLE :: emis(:)    ! Thermal IR surface emissivity
29  REAL,SAVE,ALLOCATABLE :: capcal(:) ! surface heat capacity (J m-2 K-1)
30  REAL,SAVE,ALLOCATABLE :: fluxgrd(:) ! surface conduction flux (W.m-2)
31  REAL,ALLOCATABLE,SAVE :: qsurf(:,:) ! tracer on surface (e.g. kg.m-2)
32
33contains
34
35  subroutine ini_surfdat_h(ngrid,nq)
36 
37  implicit none
38  integer,intent(in) :: ngrid ! number of atmospheric columns
39  integer,intent(in) :: nq ! number of tracers 
40
41    allocate(albedodat(ngrid))
42    allocate(phisfi(ngrid))
43    allocate(watercaptag(ngrid))
44    allocate(dryness(ngrid))
45    allocate(zmea(ngrid))
46    allocate(zstd(ngrid))
47    allocate(zsig(ngrid))
48    allocate(zgam(ngrid))
49    allocate(zthe(ngrid))
50    allocate(z0(ngrid))
51    allocate(qsurf(ngrid,nq))
52    allocate(tsurf(ngrid))
53    allocate(co2ice(ngrid))
54    allocate(emis(ngrid))
55    allocate(capcal(ngrid))
56    allocate(fluxgrd(ngrid))
57 
58  end subroutine ini_surfdat_h
59
60
61  subroutine end_surfdat_h
62
63  implicit none
64
65    if (allocated(albedodat))   deallocate(albedodat)
66    if (allocated(phisfi))      deallocate(phisfi)
67    if (allocated(watercaptag)) deallocate(watercaptag)
68    if (allocated(dryness))     deallocate(dryness)
69    if (allocated(zmea))        deallocate(zmea)
70    if (allocated(zstd))        deallocate(zstd)
71    if (allocated(zsig))        deallocate(zsig)
72    if (allocated(zgam))        deallocate(zgam)
73    if (allocated(zthe))        deallocate(zthe)
74    if (allocated(z0))          deallocate(z0)
75    if (allocated(qsurf))       deallocate(qsurf)
76    if (allocated(tsurf))       deallocate(tsurf)
77    if (allocated(co2ice))      deallocate(co2ice)
78    if (allocated(emis))        deallocate(emis)
79    if (allocated(capcal))      deallocate(capcal)
80    if (allocated(fluxgrd))     deallocate(fluxgrd)
81
82  end subroutine end_surfdat_h
83
84end module surfdat_h
Note: See TracBrowser for help on using the repository browser.