source: trunk/LMDZ.MARS/libf/phymars/phys_state_var_init_mod.F90 @ 2449

Last change on this file since 2449 was 2417, checked in by emillour, 5 years ago

Mars GCM:
Add a new scheme to handle the dust and its radiative impact. Triggered using
a new flag dustscaling_mode=2 (dustscaling_mod=0: no rescaling at all, and
dustscaling_mode=1: full rescaling using tauscaling, GCMv5.3 style). Rescaling
is then only done on the radiative impact (see dust_scaling_mod.F90) of dust.
Moreover the scaling factor "dust_rad_adjust" is evaluated using the target dust
scenario opacity for the next sol and left to evolve linearly until then to not
impose the diurnal evolution of dust.
In practice, main changes or additions in the code are:

  • renamed flag "tauscaling_mode" as "dustscaling_mode"
  • moved parameter "t_scenario_sol" to "dust_param_mod"
  • adapted "compute_dustscaling" routine in "dust_scaling_mod"
  • added module "dust_rad_adjust_mod"
  • 2D fields "dust_rad_adjust_prev" and "dust_rad_adjust_next" required to compute coefficient "dust_rad_adjust" need to be stored in (re)startfi files

EM

File size: 5.5 KB
Line 
1MODULE phys_state_var_init_mod
2
3CONTAINS
4
5      SUBROUTINE phys_state_var_init(ngrid,nlayer,nq,tname, &
6                                     day_ini,hour_ini,pdaysec,ptimestep, &
7                                     prad,pg,pr,pcpp, &
8                                     dyn_nqperes,dyn_nqfils)! MVals: variables isotopes
9
10!=======================================================================
11!
12!   purpose:
13!   -------
14!
15!   Allocate arrays in modules
16!   Fill geometrical arrays
17!   Fill a first set of physical constants
18!   -- was done previously in inifis
19!
20!=======================================================================
21!   
22!   authors: Ehouarn Millour and Aymeric Spiga
23!            14/04/2014
24!
25!   arguments:
26!   ----------
27!
28!   input:
29!   ------
30!
31!    ngrid                 Size of the horizontal grid.
32!    nlayer                Number of vertical layers.
33!    nq                    Number of tracers.
34!
35!=======================================================================
36
37      use init_print_control_mod, only: init_print_control
38      use slope_mod, only: ini_slope_mod,end_slope_mod
39      use comsaison_h, only: ini_comsaison_h,end_comsaison_h
40      use surfdat_h, only: ini_surfdat_h,end_surfdat_h
41      use comgeomfi_h, only: ini_comgeomfi_h,end_comgeomfi_h
42      use comsoil_h, only: ini_comsoil_h,end_comsoil_h
43      use dimradmars_mod, only: ini_dimradmars_mod,end_dimradmars_mod
44      use yomlw_h, only: ini_yomlw_h,end_yomlw_h
45      use conc_mod, only: ini_conc_mod,end_conc_mod
46      use turb_mod, only: ini_turb_mod,end_turb_mod
47      use comcstfi_h, only: pi,rad,cpp,g,r,rcp
48      use tracer_mod, only: ini_tracer_mod,end_tracer_mod
49      use time_phylmdz_mod, only: init_time
50      use co2cloud_mod, only: ini_co2cloud,end_co2cloud
51      use compute_dtau_mod, only: ini_compute_dtau_mod, &
52                                  end_compute_dtau_mod
53      use rocketduststorm_mod, only: ini_rocketduststorm_mod, &
54                                     end_rocketduststorm_mod
55      use topmons_mod, only: ini_topmons_mod, &
56                             end_topmons_mod
57      use calchim_mod, only: ini_calchim_mod,end_calchim_mod
58      use watercloud_mod, only: ini_watercloud_mod, &
59                                end_watercloud_mod
60      use nonoro_gwd_ran_mod, only: ini_nonoro_gwd_ran, &
61                                    end_nonoro_gwd_ran
62      use dust_param_mod, only: ini_dust_param_mod, &
63                                end_dust_param_mod
64      use dust_rad_adjust_mod, only: ini_dust_rad_adjust_mod, &
65                                     end_dust_rad_adjust_mod
66      IMPLICIT NONE
67     
68      INTEGER,INTENT(IN) :: ngrid,nlayer,nq
69      CHARACTER(len=*),INTENT(IN) :: tname(nq)
70      INTEGER,INTENT(IN) :: day_ini
71      REAL,INTENT(IN) :: hour_ini
72      REAL,INTENT(IN) :: pdaysec,ptimestep,prad,pg,pr,pcpp
73!MVals isotopes
74      INTEGER,INTENT(in) :: dyn_nqperes
75      INTEGER,INTENT(in) :: dyn_nqfils(nq)
76
77      ! set dimension and allocate arrays in tracer_mod
78      call end_tracer_mod
79      call ini_tracer_mod(nq,tname,dyn_nqperes,dyn_nqfils)! MVals: variables isotopes
80
81
82      ! initialize "print_control" constants/flags ("prt_level","lunout", etc.)
83      call init_print_control
84     
85      ! set parameters in comcstfi_h
86      pi=2.*asin(1.)
87      rad=prad
88      cpp=pcpp
89      g=pg
90      r=pr
91      rcp=r/cpp
92
93      ! Initialize some "temporal and calendar" related variables
94      call init_time(day_ini,hour_ini,pdaysec,ptimestep)
95
96      ! allocate "slope_mod" arrays
97      call end_slope_mod
98      call ini_slope_mod(ngrid)
99
100      ! allocate "comsaison_h" arrays
101      call end_comsaison_h
102      call ini_comsaison_h(ngrid)
103
104      ! allocate "surfdat_h" arrays
105      call end_surfdat_h
106      call ini_surfdat_h(ngrid,nq)
107
108      ! allocate "comgeomfi_h" arrays
109      call end_comgeomfi_h
110      call ini_comgeomfi_h(ngrid)
111
112      ! allocate "comsoil_h" arrays
113      call end_comsoil_h
114      call ini_comsoil_h(ngrid)
115
116      ! set some variables in "dimradmars_mod"
117      call end_dimradmars_mod
118      call ini_dimradmars_mod(ngrid,nlayer)
119
120      ! allocate arrays in "yomlw_h"
121      call end_yomlw_h
122      call ini_yomlw_h(ngrid)
123
124      ! allocate arrays in "conc_mod" (aeronomars)
125      call end_conc_mod
126      call ini_conc_mod(ngrid,nlayer)
127
128      ! allocate arrays in "turb_mod"
129      call end_turb_mod
130      call ini_turb_mod(ngrid,nlayer)
131     
132      ! allocate arrays in "co2cloud" :
133      ! Memory of the origin of the co2 particles     
134      call end_co2cloud
135      call ini_co2cloud(ngrid,nlayer)
136     
137      ! allocate arrays in "compute_dtau_mod":
138      call end_compute_dtau_mod
139      call ini_compute_dtau_mod(ngrid)
140
141      ! allocate arrays in "rocketduststorm_mod":
142      call end_rocketduststorm_mod
143      call ini_rocketduststorm_mod(ngrid)
144
145      ! allocate arrays in "topmons_mod":
146      call end_topmons_mod
147      call ini_topmons_mod(ngrid,nlayer)
148
149      ! allocate arrays in "calchim_mod" (aeronomars)
150      call end_calchim_mod
151      call ini_calchim_mod(ngrid,nlayer,nq)
152
153      ! allocate arrays in "watercloud_mod"
154      call end_watercloud_mod
155      call ini_watercloud_mod(ngrid,nlayer,nq)
156
157      ! allocate arrays in "nonoro_gwd_ran_mod"
158      call end_nonoro_gwd_ran
159      call ini_nonoro_gwd_ran(ngrid,nlayer)
160
161      ! allocate arrays in "dust_param_mod"
162      call end_dust_param_mod
163      call ini_dust_param_mod(ngrid)
164     
165      ! allocate arrays in "dust_rad_adjust_mod"
166      call end_dust_rad_adjust_mod
167      call ini_dust_rad_adjust_mod(ngrid)
168
169      END SUBROUTINE phys_state_var_init
170
171END MODULE phys_state_var_init_mod
Note: See TracBrowser for help on using the repository browser.