1 | MODULE lmdz_ratqs_ini |
---|
2 | |
---|
3 | IMPLICIT NONE |
---|
4 | |
---|
5 | integer :: lunout |
---|
6 | |
---|
7 | INTEGER, SAVE, PROTECTED :: nbsrf,is_lic,is_ter |
---|
8 | REAL, SAVE, PROTECTED :: RG,RV,RD,RCPD,RLSTT,RLVTT,RTT |
---|
9 | REAL, SAVE, PROTECTED :: a_ratqs_cv |
---|
10 | REAL, SAVE, PROTECTED :: tau_var |
---|
11 | REAL, SAVE, PROTECTED :: fac_tau |
---|
12 | REAL, SAVE, PROTECTED :: tau_cumul |
---|
13 | REAL, SAVE, PROTECTED :: a_ratqs_wake |
---|
14 | INTEGER, SAVE, PROTECTED :: dqimpl |
---|
15 | |
---|
16 | real, allocatable, SAVE :: povariance(:,:) |
---|
17 | !$OMP THREADPRIVATE(povariance) |
---|
18 | real, allocatable, SAVE :: var_conv(:,:) |
---|
19 | !$OMP THREADPRIVATE(var_conv) |
---|
20 | |
---|
21 | !$OMP THREADPRIVATE(nbsrf,is_lic,is_ter,RG,RV,RD,RCPD,RLSTT,RLVTT,RTT) |
---|
22 | !$OMP THREADPRIVATE(a_ratqs_cv,tau_var,fac_tau,tau_cumul,a_ratqs_wake,dqimpl) |
---|
23 | |
---|
24 | |
---|
25 | CONTAINS |
---|
26 | SUBROUTINE ratqs_ini(klon,klev,iflag_thermals,lunout_in,nbsrf_in,is_lic_in,is_ter_in,RG_in,RV_in,RD_in,RCPD_in,RLSTT_in,RLVTT_in,RTT_in) |
---|
27 | |
---|
28 | USE ioipsl_getin_p_mod, ONLY : getin_p |
---|
29 | |
---|
30 | integer, intent(in) :: klon,klev,iflag_thermals,lunout_in |
---|
31 | integer, intent(in) :: nbsrf_in,is_lic_in,is_ter_in |
---|
32 | real, intent(in) :: RG_in,RV_in,RD_in,RCPD_in,RLSTT_in,RLVTT_in,RTT_in |
---|
33 | |
---|
34 | integer :: i,k |
---|
35 | |
---|
36 | nbsrf =nbsrf_in |
---|
37 | is_lic =is_lic_in |
---|
38 | is_ter =is_ter_in |
---|
39 | RG =RG_in |
---|
40 | RV =RV_in |
---|
41 | RD =RD_in |
---|
42 | RCPD =RCPD_in |
---|
43 | RLSTT =RLSTT_in |
---|
44 | RLVTT =RLVTT_in |
---|
45 | RTT =RTT_in |
---|
46 | |
---|
47 | print*,'ratqs_ini' |
---|
48 | if (iflag_thermals==15.or.iflag_thermals==16) then |
---|
49 | dqimpl=-1 |
---|
50 | else |
---|
51 | dqimpl=1 |
---|
52 | endif |
---|
53 | lunout=lunout_in |
---|
54 | |
---|
55 | allocate(povariance(klon,klev)) |
---|
56 | allocate(var_conv(klon,klev)) |
---|
57 | |
---|
58 | |
---|
59 | tau_var = 700. ! temps de relaxation de la variabilit?? pour les thermiques |
---|
60 | fac_tau = 2. |
---|
61 | tau_cumul = 1000 |
---|
62 | a_ratqs_wake = 3. ! param??tre pilotant l'importance du terme d??pendant des poches froides |
---|
63 | a_ratqs_cv = 1. |
---|
64 | CALL getin_p('tau_var', tau_var) |
---|
65 | CALL getin_p('fac_tau', fac_tau) |
---|
66 | CALL getin_p('tau_cumul', tau_cumul) |
---|
67 | CALL getin_p('a_ratqs_wake', a_ratqs_wake) |
---|
68 | CALL getin_p('a_ratqs_cv', a_ratqs_cv) |
---|
69 | |
---|
70 | !-------------------------------------------------------- |
---|
71 | ! Initialisation des variances pour la param??trisation |
---|
72 | ! pronostique des variances de Louis. |
---|
73 | ! Ne marche pour le moment qu'en 1D en forcant une |
---|
74 | ! initialisation des variances ?? une valeur constante. |
---|
75 | ! A terme la variance doit devenir une variable d'etat |
---|
76 | ! passee en argument |
---|
77 | !-------------------------------------------------------- |
---|
78 | |
---|
79 | if (klon.eq.1) then |
---|
80 | do k=1,klev |
---|
81 | do i=1,klon |
---|
82 | povariance(i,k) = 0.00000000001 |
---|
83 | var_conv(i,k) = 0.00000000001 |
---|
84 | enddo |
---|
85 | enddo |
---|
86 | else |
---|
87 | print*, 'conserver la variance dans les restarts' |
---|
88 | endif |
---|
89 | !-------------------------------------------------------- |
---|
90 | |
---|
91 | RETURN |
---|
92 | |
---|
93 | END SUBROUTINE ratqs_ini |
---|
94 | END MODULE lmdz_ratqs_ini |
---|