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

Last change on this file since 2024 was 1974, checked in by mvals, 7 years ago

Mars GCM:
Integration of the detached dust layer parametrizations (rocket dust storm, slope wind lifting, CW, and dust injection scheme, DB).
Still experimental, default behaviour (rdstorm=.false., dustinjection=0) identical to previous revision.
NB: Updated newstart requires an updated "surface.nc" containing the "hmons" field.
EM+MV

File size: 3.3 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 :: hmons(:)
23  real,save,allocatable :: z0(:) ! surface roughness length (m)
24  real,save :: z0_default ! default (constant over planet) surface roughness (m)
25
26  !! variables
27  REAL,SAVE,ALLOCATABLE :: tsurf(:)   ! Surface temperature (K)
28  REAL,SAVE,ALLOCATABLE :: co2ice(:)  ! co2 ice surface layer (kg.m-2) 
29  REAL,SAVE,ALLOCATABLE :: emis(:)    ! Thermal IR surface emissivity
30  REAL,SAVE,ALLOCATABLE :: capcal(:) ! surface heat capacity (J m-2 K-1)
31  REAL,SAVE,ALLOCATABLE :: fluxgrd(:) ! surface conduction flux (W.m-2)
32  REAL,ALLOCATABLE,SAVE :: qsurf(:,:) ! tracer on surface (e.g. kg.m-2)
33
34contains
35
36  subroutine ini_surfdat_h(ngrid,nq)
37 
38  implicit none
39  integer,intent(in) :: ngrid ! number of atmospheric columns
40  integer,intent(in) :: nq ! number of tracers 
41
42    allocate(albedodat(ngrid))
43    allocate(phisfi(ngrid))
44    allocate(watercaptag(ngrid))
45    allocate(dryness(ngrid))
46    allocate(zmea(ngrid))
47    allocate(zstd(ngrid))
48    allocate(zsig(ngrid))
49    allocate(zgam(ngrid))
50    allocate(zthe(ngrid))
51    allocate(z0(ngrid))
52    allocate(qsurf(ngrid,nq))
53    allocate(tsurf(ngrid))
54    allocate(co2ice(ngrid))
55    allocate(emis(ngrid))
56    allocate(capcal(ngrid))
57    allocate(fluxgrd(ngrid))
58    allocate(hmons(ngrid))
59   
60  end subroutine ini_surfdat_h
61
62
63  subroutine end_surfdat_h
64
65  implicit none
66
67    if (allocated(albedodat))   deallocate(albedodat)
68    if (allocated(phisfi))      deallocate(phisfi)
69    if (allocated(watercaptag)) deallocate(watercaptag)
70    if (allocated(dryness))     deallocate(dryness)
71    if (allocated(zmea))        deallocate(zmea)
72    if (allocated(zstd))        deallocate(zstd)
73    if (allocated(zsig))        deallocate(zsig)
74    if (allocated(zgam))        deallocate(zgam)
75    if (allocated(zthe))        deallocate(zthe)
76    if (allocated(z0))          deallocate(z0)
77    if (allocated(qsurf))       deallocate(qsurf)
78    if (allocated(tsurf))       deallocate(tsurf)
79    if (allocated(co2ice))      deallocate(co2ice)
80    if (allocated(emis))        deallocate(emis)
81    if (allocated(capcal))      deallocate(capcal)
82    if (allocated(fluxgrd))     deallocate(fluxgrd)
83    if (allocated(hmons))       deallocate(hmons)
84
85  end subroutine end_surfdat_h
86
87end module surfdat_h
Note: See TracBrowser for help on using the repository browser.