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