source: LMDZ6/trunk/libf/phylmd/lmdz_thermcell_ini.f90 @ 5435

Last change on this file since 5435 was 5434, checked in by fhourdin, 15 hours ago

Superessing CPP in lmdz_*

Not possible for lmdz_thermcell_main because of isotopes

File size: 7.0 KB
RevLine 
[4590]1MODULE lmdz_thermcell_ini
2
[4090]3IMPLICIT NONE
4
5save
[4441]6
[4090]7
[4690]8integer, protected :: dvdq=1,dqimpl=-1,prt_level=0,lunout
9real   , protected :: RG,RD,RCPD,RKAPPA,RLVTT,RLvCp,RETV
10
[5434]11
12
[4090]13!$OMP THREADPRIVATE(dvdq,dqimpl,prt_level,lunout)
[5400]14!$OMP THREADPRIVATE(RG,RD,RCPD,RKAPPA,RLVTT,RLvCp,RETV)
[4690]15
16
17! Parameters that can be modified directly by a getin call
18real,    protected :: r_aspect_thermals=2.       ! Aspect ratio for thermal celles
19real,    protected :: tau_thermals = 0.          ! relaxation time constant
20real,    protected :: fact_thermals_ed_dz = 0.1  ! bouyancy computed with a delta
21real,    protected :: betalpha=0.9               !
22real,    protected :: afact=2./3.                !
23real,    protected :: fact_shell=1.              !
24real,    protected :: detr_min=1.e-5             !
25real,    protected :: entr_min=1.e-5             !
26real,    protected :: detr_q_coef=0.012          !
27real,    protected :: detr_q_power=0.5           !
28real,    protected :: mix0=0.                    !
29integer, protected :: iflag_thermals_ed = 0      !
30integer, protected :: iflag_thermals_optflux = 0 !
31integer, protected :: iflag_thermals_closure = 1 !
32integer, protected :: iflag_thermals_down = 0    !
[4863]33real, protected    :: fact_thermals_down = 0.5   !
[4690]34integer, protected :: thermals_flag_alim=0       !
35integer, protected :: iflag_thermals_tenv=0      !
36
37   ! WARNING !!! fact_epsilon is not protected. It can be modified in thermcell_plume*
38   ! depending on other flags.
39
40   real               :: fact_epsilon=0.002
41
[4090]42!$OMP THREADPRIVATE(r_aspect_thermals,tau_thermals,fact_thermals_ed_dz)
43!$OMP THREADPRIVATE(iflag_thermals_ed,iflag_thermals_optflux,iflag_thermals_closure)
[4381]44!$OMP THREADPRIVATE(iflag_thermals_down)
[4443]45!$OMP THREADPRIVATE(fact_thermals_down)
[4090]46!$OMP THREADPRIVATE(fact_epsilon, betalpha, afact, fact_shell)
47!$OMP THREADPRIVATE(detr_min, entr_min, detr_q_coef, detr_q_power)
48!$OMP THREADPRIVATE( mix0, thermals_flag_alim)
[4690]49!$OMP THREADPRIVATE(iflag_thermals_tenv)
[4090]50
[5434]51integer, protected       :: thermals_subsid_advect_more_than_one=1
52character*6, protected :: thermals_subsid_advect_scheme = 'upwind' ! or 'center'
[4090]53
[5434]54!$OMP THREADPRIVATE(thermals_subsid_advect_scheme,thermals_subsid_advect_more_than_one)
55
[4090]56CONTAINS
57
58SUBROUTINE thermcell_ini(iflag_thermals,prt_level_in,tau_thermals_in,lunout_in, &
59   &    RG_in,RD_in,RCPD_in,RKAPPA_in,RLVTT_in,RETV_in)
60
61   USE ioipsl_getin_p_mod, ONLY : getin_p
62
63integer, intent(in) :: iflag_thermals,prt_level_in,lunout_in
64real, intent(in) :: RG_in,RD_in,RCPD_in,RKAPPA_in,RLVTT_in,RETV_in,tau_thermals_in
65
66print*,'thermcell_ini'
67      if (iflag_thermals==15.or.iflag_thermals==16) then
68         dvdq=0
69         dqimpl=-1
70      else
71         dvdq=1
72         dqimpl=1
73      endif
74   prt_level=prt_level_in
75   RG=RG_in
76   RD=RD_in
77   RCPD=RCPD_in
78   RKAPPA=RKAPPA_in
79   RLVTT=RLVTT_in
80   RLvCp = RLVTT/RCPD
81   RETV=RETV_in
82   tau_thermals=tau_thermals_in
83   lunout=lunout_in
84
85
86!=====================================================================
87! a la fois les vieilles param et thermcell_main :
88!=====================================================================
89
90   CALL getin_p('r_aspect_thermals',r_aspect_thermals)
91   CALL getin_p('tau_thermals',tau_thermals)
92   CALL getin_p('fact_thermals_ed_dz',fact_thermals_ed_dz)
93   CALL getin_p('iflag_thermals_ed',iflag_thermals_ed)
94   CALL getin_p('iflag_thermals_optflux',iflag_thermals_optflux)
95   CALL getin_p('iflag_thermals_closure',iflag_thermals_closure)
[4381]96   CALL getin_p('iflag_thermals_down',iflag_thermals_down)
[4441]97   CALL getin_p('fact_thermals_down',fact_thermals_down)
[4690]98   CALL getin_p('thermals_fact_epsilon',fact_epsilon)
99   CALL getin_p('thermals_betalpha',betalpha)
100   CALL getin_p('thermals_afact',afact)
101   CALL getin_p('thermals_fact_shell',fact_shell)
102   CALL getin_p('thermals_detr_min',detr_min)
103   CALL getin_p('thermals_entr_min',entr_min)
104   CALL getin_p('thermals_detr_q_coef',detr_q_coef)
105   CALL getin_p('thermals_detr_q_power',detr_q_power)
106   CALL getin_p('thermals_mix0',mix0)
107   CALL getin_p('thermals_flag_alim',thermals_flag_alim)
108   CALL getin_p('iflag_thermals_tenv',iflag_thermals_tenv)
[5434]109   CALL getin_p('thermals_subsid_advect_scheme',thermals_subsid_advect_scheme)
110   CALL getin_p('thermals_subsid_advect_more_than_one',thermals_subsid_advect_more_than_one)
[4381]111
[4090]112
[4664]113write(lunout,*) 'thermcell_ini ,prt_level                =',  prt_level                   
114write(lunout,*) 'thermcell_ini ,RG                       =',  RG                     
115write(lunout,*) 'thermcell_ini ,RD                       =',  RD                       
116write(lunout,*) 'thermcell_ini ,RCPD                     =',  RCPD                   
117write(lunout,*) 'thermcell_ini ,RKAPPA                   =',  RKAPPA                 
118write(lunout,*) 'thermcell_ini ,RLVTT                    =',  RLVTT                   
119write(lunout,*) 'thermcell_ini ,RLvCp                    =',  RLvCp                   
120write(lunout,*) 'thermcell_ini ,RETV                     =',  RETV                   
121write(lunout,*) 'thermcell_ini ,tau_thermals             =',  tau_thermals           
122write(lunout,*) 'thermcell_ini ,lunout                   =',  lunout                 
123write(lunout,*) 'thermcell_ini ,r_aspect_thermals        =',  r_aspect_thermals       
124write(lunout,*) 'thermcell_ini ,tau_thermals             =',  tau_thermals           
125write(lunout,*) 'thermcell_ini ,fact_thermals_ed_dz      =',  fact_thermals_ed_dz
126write(lunout,*) 'thermcell_ini ,fact_thermals_ed_dz      =',  fact_thermals_ed_dz
127write(lunout,*) 'thermcell_ini ,iflag_thermals_ed        =',  iflag_thermals_ed       
128write(lunout,*) 'thermcell_ini ,iflag_thermals_optflux   =',  iflag_thermals_optflux
129write(lunout,*) 'thermcell_ini ,iflag_thermals_closure   =',  iflag_thermals_closure
130write(lunout,*) 'thermcell_ini ,iflag_thermals_down      =',  iflag_thermals_down
131write(lunout,*) 'thermcell_ini ,fact_thermals_down       =',  fact_thermals_down
132write(lunout,*) 'thermcell_ini ,fact_epsilon             =',  fact_epsilon           
133write(lunout,*) 'thermcell_ini ,betalpha                 =',  betalpha               
134write(lunout,*) 'thermcell_ini ,afact                    =',  afact                   
135write(lunout,*) 'thermcell_ini ,fact_shell               =',  fact_shell             
136write(lunout,*) 'thermcell_ini ,detr_min                 =',  detr_min               
137write(lunout,*) 'thermcell_ini ,entr_min                 =',  entr_min               
138write(lunout,*) 'thermcell_ini ,detr_q_coef              =',  detr_q_coef             
139write(lunout,*) 'thermcell_ini ,detr_q_power             =',  detr_q_power           
140write(lunout,*) 'thermcell_ini ,mix0                     =',  mix0                   
141write(lunout,*) 'thermcell_ini ,thermals_flag_alim       =',  thermals_flag_alim
[4690]142write(lunout,*) 'thermcell_ini ,iflag_thermals_tenv      =',  iflag_thermals_tenv
[5434]143write(lunout,*) 'thermcell_ini ,thermals_subsid_advect_scheme=',thermals_subsid_advect_scheme
144write(lunout,*) 'thermcell_ini ,thermals_subsid_advect_more_than_one=',thermals_subsid_advect_more_than_one
[4664]145
[4094]146 RETURN
[4090]147
148END SUBROUTINE thermcell_ini
[4590]149END MODULE lmdz_thermcell_ini
Note: See TracBrowser for help on using the repository browser.