source: LMDZ6/branches/Ocean_skin/libf/phylmd/wake_ini_mod.F90 @ 5434

Last change on this file since 5434 was 4368, checked in by lguez, 2 years ago

Sync latest trunk changes to Ocean_skin

File size: 7.3 KB
Line 
1MODULE wake_ini_mod
2IMPLICIT NONE
3
4
5  ! ============================================================================
6
7
8  ! But : Decrire le comportement des poches froides apparaissant dans les
9  ! grands systemes convectifs, et fournir l'energie disponible pour
10  ! le declenchement de nouvelles colonnes convectives.
11
12  ! State variables :
13  ! deltatw    : temperature difference between wake and off-wake regions
14  ! deltaqw    : specific humidity difference between wake and off-wake regions
15  ! sigmaw     : fractional area covered by wakes.
16  ! wdens      : number of wakes per unit area
17
18  ! -------------------------------------------------------------------------
19  ! Declaration de variables
20  ! -------------------------------------------------------------------------
21
22  ! Variables a fixer
23!jyg<
24!!  REAL, SAVE                                            :: stark, wdens_ref, coefgw, alpk
25  INTEGER, SAVE, PROTECTED                                         :: prt_level
26  REAL, SAVE, PROTECTED, DIMENSION(2)                              :: wdens_ref
27  REAL, SAVE, PROTECTED                                            :: stark, coefgw, alpk, pupperbyphs
28!>jyg
29  REAL, SAVE, PROTECTED                                            :: crep_upper, crep_sol 
30  !$OMP THREADPRIVATE(stark, wdens_ref, coefgw, alpk, pupperbyphs, crep_upper, crep_sol)
31
32  REAL, SAVE, PROTECTED                                            :: tau_cv
33  !$OMP THREADPRIVATE(tau_cv)
34  REAL, SAVE, PROTECTED                                            :: rzero, aa0 ! minimal wake radius and area
35  !$OMP THREADPRIVATE(rzero, aa0)
36
37  LOGICAL, SAVE, PROTECTED                                         :: flag_wk_check_trgl
38  !$OMP THREADPRIVATE(flag_wk_check_trgl)
39  INTEGER, SAVE, PROTECTED                                         :: iflag_wk_act
40  !$OMP THREADPRIVATE(iflag_wk_act)
41
42  INTEGER, SAVE, PROTECTED                                         :: iflag_wk_check_trgl
43  !$OMP THREADPRIVATE(iflag_wk_check_trgl)
44  INTEGER, SAVE, PROTECTED                                         :: iflag_wk_pop_dyn
45  !$OMP THREADPRIVATE(iflag_wk_pop_dyn)
46
47  INTEGER, SAVE, PROTECTED                                         :: iflag_wk_profile
48  !$OMP THREADPRIVATE(iflag_wk_profile)
49
50  REAL, SAVE, PROTECTED                                            :: wdensmin
51  !$OMP THREADPRIVATE(wdensmin)
52  REAL, SAVE, PROTECTED                                            :: sigmad, hwmin, wapecut, cstart
53  !$OMP THREADPRIVATE(sigmad, hwmin, wapecut, cstart)
54  REAL, SAVE, PROTECTED                                            :: sigmaw_max
55  !$OMP THREADPRIVATE(sigmaw_max) 
56  REAL, SAVE, PROTECTED                                            :: dens_rate
57  !$OMP THREADPRIVATE(dens_rate)
58  REAL, SAVE, PROTECTED                                            :: epsilon_loc
59  !$OMP THREADPRIVATE(epsilon_loc)
60  REAL, SAVE, PROTECTED                                            :: epsim1,RG,RD
61  !$OMP THREADPRIVATE(epsim1,RG,RD)
62
63
64
65CONTAINS
66
67  ! =========================================================================
68  SUBROUTINE wake_ini(rg_in,rd_in,rv_in,prt_lev)
69  ! =========================================================================
70
71  ! **************************************************************
72  ! *
73  ! WAKE                                                        *
74  ! retour a un Pupper fixe                                *
75  ! *
76  ! written by   :  GRANDPEIX Jean-Yves   09/03/2000            *
77  ! modified by :   ROEHRIG Romain        01/29/2007            *
78  ! **************************************************************
79
80  ! -------------------------------------------------------------------------
81  ! Initialisations
82  ! -------------------------------------------------------------------------
83
84  USE ioipsl_getin_p_mod, ONLY : getin_p
85  real eps
86  integer, intent(in) :: prt_lev
87  real, intent(in) :: rg_in,rd_in,rv_in
88
89  prt_level=prt_lev
90  epsilon_loc=1.E-15
91  wapecut=1. ! previously 5.
92  ! Essais d'initialisation avec sigmaw = 0.02 et hw = 10.
93  sigmad=0.02
94  hwmin=10.
95!!  DATA wdensmin/1.e-12/
96  wdensmin=1.e-14
97  ! cc nrlmd
98  sigmaw_max=0.4
99  dens_rate=0.1
100
101  eps = rd_in/rv_in
102  epsim1 = 1.0/eps - 1.0
103  RG=rg_in
104  RD=rd_in
105
106
107  ! cc
108  ! Longueur de maille (en m)
109  ! -------------------------------------------------------------------------
110
111  ! ALON = 3.e5
112  ! alon = 1.E6
113
114  ! Configuration de coefgw,stark,wdens (22/02/06 by YU Jingmei)
115
116  ! coefgw : Coefficient pour les ondes de gravite
117  ! stark : Coefficient k dans Cstar=k*sqrt(2*WAPE)
118  ! wdens : Densite surfacique de poche froide
119  ! -------------------------------------------------------------------------
120
121  ! cc nrlmd      coefgw=10
122  ! coefgw=1
123  ! wdens0 = 1.0/(alon**2)
124  ! cc nrlmd      wdens = 1.0/(alon**2)
125  ! cc nrlmd      stark = 0.50
126  ! CRtest
127  ! cc nrlmd      alpk=0.1
128  ! alpk = 1.0
129  ! alpk = 0.5
130  ! alpk = 0.05
131
132
133
134  crep_upper = 0.9
135  crep_sol = 1.0
136
137  ! Get wapecut from parameter file
138  wapecut = 1.
139
140print*,'wapecut',wapecut
141  CALL getin_p('wapecut', wapecut)
142print*,'wapecut',wapecut
143
144  ! cc nrlmd Lecture du fichier wake_param.data
145
146
147  ! cc nrlmd Lecture du fichier wake_param.data
148  stark=0.33
149  CALL getin_p('stark',stark)
150  cstart = stark*sqrt(2.*wapecut)
151
152  alpk=0.25
153  CALL getin_p('alpk',alpk)
154 
155  pupperbyphs=0.6
156  CALL getin_p('pupperbyphs',pupperbyphs)
157
158
159!jyg<
160!!  wdens_ref=8.E-12
161!!  CALL getin_p('wdens_ref',wdens_ref)
162  wdens_ref(1)=8.E-12
163  wdens_ref(2)=8.E-12
164  CALL getin_p('wdens_ref_o',wdens_ref(1))    !wake number per unit area ; ocean
165  CALL getin_p('wdens_ref_l',wdens_ref(2))    !wake number per unit area ; land
166!>jyg
167!
168!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
169!!!!!!!!!  Population dynamics parameters    !!!!!!!!!!!!!!!!!!!!!!!!!!!!
170!------------------------------------------------------------------------
171
172  iflag_wk_pop_dyn = 0
173  CALL getin_p('iflag_wk_pop_dyn',iflag_wk_pop_dyn) ! switch between wdens prescribed
174                                                    ! and wdens prognostic
175  iflag_wk_act = 0
176  CALL getin_p('iflag_wk_act',iflag_wk_act) ! 0: act(:)=0.
177                                            ! 1: act(:)=1.
178                                            ! 2: act(:)=f(Wape)
179
180  iflag_wk_profile = 0
181  CALL getin_p('iflag_wk_profile',iflag_wk_profile) ! switch between wdens prescribed
182                                                    ! and wdens prognostic
183  rzero = 5000.
184  CALL getin_p('rzero_wk', rzero)
185  aa0 = 3.14*rzero*rzero
186!
187  tau_cv = 4000.
188  CALL getin_p('tau_cv', tau_cv)
189
190!------------------------------------------------------------------------
191
192  coefgw=4.
193  CALL getin_p('coefgw',coefgw)
194
195  WRITE(*,*) 'stark=', stark
196  WRITE(*,*) 'alpk=', alpk
197  WRITE(*,*) 'pupperbyphs=', pupperbyphs
198!jyg<
199!!  WRITE(*,*) 'wdens_ref=', wdens_ref
200  WRITE(*,*) 'wdens_ref_o=', wdens_ref(1)
201  WRITE(*,*) 'wdens_ref_l=', wdens_ref(2)
202!>jyg
203  WRITE(*,*) 'iflag_wk_pop_dyn=',iflag_wk_pop_dyn
204  WRITE(*,*) 'iflag_wk_act',iflag_wk_act
205  WRITE(*,*) 'coefgw=', coefgw
206
207  flag_wk_check_trgl=.false.
208  CALL getin_p('flag_wk_check_trgl ', flag_wk_check_trgl)
209  WRITE(*,*) 'flag_wk_check_trgl=', flag_wk_check_trgl
210  WRITE(*,*) 'flag_wk_check_trgl OBSOLETE. Utilisr iflag_wk_check_trgl plutot'
211  iflag_wk_check_trgl=0 ; IF (flag_wk_check_trgl) iflag_wk_check_trgl=1
212  CALL getin_p('iflag_wk_check_trgl ', iflag_wk_check_trgl)
213  WRITE(*,*) 'iflag_wk_check_trgl=', iflag_wk_check_trgl
214
215 RETURN
216
217END SUBROUTINE wake_ini
218
219END MODULE wake_ini_mod
Note: See TracBrowser for help on using the repository browser.