[1279] | 1 | ! |
---|
| 2 | ! $Id: phys_local_var_mod.F90 1279 2009-12-10 09:02:56Z fairhead $ |
---|
| 3 | ! |
---|
[904] | 4 | MODULE phys_local_var_mod |
---|
[1279] | 5 | |
---|
[904] | 6 | ! Variables locales pour effectuer les appels en serie |
---|
| 7 | !====================================================================== |
---|
| 8 | ! |
---|
| 9 | ! |
---|
| 10 | !====================================================================== |
---|
| 11 | ! Declaration des variables |
---|
| 12 | |
---|
[987] | 13 | REAL, SAVE, ALLOCATABLE :: t_seri(:,:), q_seri(:,:) |
---|
| 14 | !$OMP THREADPRIVATE(t_seri, q_seri) |
---|
| 15 | REAL, SAVE, ALLOCATABLE :: ql_seri(:,:),qs_seri(:,:) |
---|
| 16 | !$OMP THREADPRIVATE(ql_seri,qs_seri) |
---|
| 17 | REAL, SAVE, ALLOCATABLE :: u_seri(:,:), v_seri(:,:) |
---|
| 18 | !$OMP THREADPRIVATE(u_seri, v_seri) |
---|
[904] | 19 | |
---|
[987] | 20 | REAL, SAVE, ALLOCATABLE :: tr_seri(:,:,:) |
---|
| 21 | !$OMP THREADPRIVATE(tr_seri) |
---|
| 22 | REAL, SAVE, ALLOCATABLE :: d_t_dyn(:,:), d_q_dyn(:,:) |
---|
| 23 | !$OMP THREADPRIVATE(d_t_dyn, d_q_dyn) |
---|
[1054] | 24 | REAL, SAVE, ALLOCATABLE :: d_u_dyn(:,:), d_v_dyn(:,:) |
---|
| 25 | !$OMP THREADPRIVATE(d_u_dyn, d_v_dyn) |
---|
[987] | 26 | REAL, SAVE, ALLOCATABLE :: d_t_con(:,:),d_q_con(:,:) |
---|
| 27 | !$OMP THREADPRIVATE(d_t_con,d_q_con) |
---|
| 28 | REAL, SAVE, ALLOCATABLE :: d_u_con(:,:),d_v_con(:,:) |
---|
| 29 | !$OMP THREADPRIVATE(d_u_con,d_v_con) |
---|
| 30 | REAL, SAVE, ALLOCATABLE :: d_t_wake(:,:),d_q_wake(:,:) |
---|
| 31 | !$OMP THREADPRIVATE( d_t_wake,d_q_wake) |
---|
| 32 | REAL, SAVE, ALLOCATABLE :: d_t_lsc(:,:),d_q_lsc(:,:),d_ql_lsc(:,:) |
---|
| 33 | !$OMP THREADPRIVATE(d_t_lsc,d_q_lsc,d_ql_lsc) |
---|
| 34 | REAL, SAVE, ALLOCATABLE :: d_t_ajsb(:,:), d_q_ajsb(:,:) |
---|
| 35 | !$OMP THREADPRIVATE(d_t_ajsb, d_q_ajsb) |
---|
| 36 | REAL, SAVE, ALLOCATABLE :: d_t_ajs(:,:), d_q_ajs(:,:) |
---|
| 37 | !$OMP THREADPRIVATE(d_t_ajs, d_q_ajs) |
---|
| 38 | REAL, SAVE, ALLOCATABLE :: d_u_ajs(:,:), d_v_ajs(:,:) |
---|
| 39 | !$OMP THREADPRIVATE(d_u_ajs, d_v_ajs) |
---|
| 40 | REAL, SAVE, ALLOCATABLE :: d_t_eva(:,:),d_q_eva(:,:) |
---|
| 41 | !$OMP THREADPRIVATE(d_t_eva,d_q_eva) |
---|
[909] | 42 | !tendances dues a oro et lif |
---|
[987] | 43 | REAL, SAVE, ALLOCATABLE :: d_t_oli(:,:) |
---|
| 44 | !$OMP THREADPRIVATE(d_t_oli) |
---|
| 45 | REAL, SAVE, ALLOCATABLE :: d_u_oli(:,:), d_v_oli(:,:) |
---|
| 46 | !$OMP THREADPRIVATE(d_u_oli, d_v_oli) |
---|
| 47 | REAL, SAVE, ALLOCATABLE :: d_t_vdf(:,:), d_q_vdf(:,:) |
---|
| 48 | !$OMP THREADPRIVATE( d_t_vdf, d_q_vdf) |
---|
| 49 | REAL, SAVE, ALLOCATABLE :: d_u_vdf(:,:), d_v_vdf(:,:) |
---|
| 50 | !$OMP THREADPRIVATE(d_u_vdf, d_v_vdf) |
---|
| 51 | REAL, SAVE, ALLOCATABLE :: d_t_oro(:,:) |
---|
| 52 | !$OMP THREADPRIVATE(d_t_oro) |
---|
| 53 | REAL, SAVE, ALLOCATABLE :: d_u_oro(:,:), d_v_oro(:,:) |
---|
| 54 | !$OMP THREADPRIVATE(d_u_oro, d_v_oro) |
---|
| 55 | REAL, SAVE, ALLOCATABLE :: d_t_lif(:,:) |
---|
| 56 | !$OMP THREADPRIVATE(d_t_lif) |
---|
| 57 | REAL, SAVE, ALLOCATABLE :: d_u_lif(:,:), d_v_lif(:,:) |
---|
| 58 | !$OMP THREADPRIVATE(d_u_lif, d_v_lif) |
---|
[1001] | 59 | ! Tendances Ondes de G non oro (runs strato). |
---|
| 60 | REAL, SAVE, ALLOCATABLE :: d_u_hin(:,:) |
---|
| 61 | !$OMP THREADPRIVATE(d_u_hin) |
---|
| 62 | REAL, SAVE, ALLOCATABLE :: d_v_hin(:,:) |
---|
| 63 | !$OMP THREADPRIVATE(d_v_hin) |
---|
| 64 | REAL, SAVE, ALLOCATABLE :: d_t_hin(:,:) |
---|
| 65 | !$OMP THREADPRIVATE(d_t_hin) |
---|
| 66 | |
---|
[909] | 67 | ! tendance du a la conersion Ec -> E thermique |
---|
[987] | 68 | REAL, SAVE, ALLOCATABLE :: d_t_ec(:,:) |
---|
| 69 | !$OMP THREADPRIVATE(d_t_ec) |
---|
| 70 | REAL, SAVE, ALLOCATABLE :: d_ts(:,:), d_tr(:,:,:) |
---|
| 71 | !$OMP THREADPRIVATE(d_ts, d_tr) |
---|
[1279] | 72 | |
---|
| 73 | ! diagnostique pour le rayonnement |
---|
| 74 | REAL, SAVE, ALLOCATABLE :: topswad_aero(:), solswad_aero(:) ! diag |
---|
| 75 | !$OMP THREADPRIVATE(topswad_aero,solswad_aero) |
---|
| 76 | REAL, SAVE, ALLOCATABLE :: topswai_aero(:), solswai_aero(:) ! diag |
---|
| 77 | !$OMP THREADPRIVATE(topswai_aero,solswai_aero) |
---|
| 78 | REAL, SAVE, ALLOCATABLE :: topswad0_aero(:), solswad0_aero(:) ! diag |
---|
| 79 | !$OMP THREADPRIVATE(topswad0_aero,solswad0_aero) |
---|
| 80 | REAL, SAVE, ALLOCATABLE :: topsw_aero(:,:), solsw_aero(:,:) ! diag |
---|
| 81 | !$OMP THREADPRIVATE(topsw_aero,solsw_aero) |
---|
| 82 | REAL, SAVE, ALLOCATABLE :: topsw0_aero(:,:), solsw0_aero(:,:) ! diag |
---|
| 83 | !$OMP THREADPRIVATE(topsw0_aero,solsw0_aero) |
---|
| 84 | REAL, SAVE, ALLOCATABLE :: topswcf_aero(:,:), solswcf_aero(:,:) ! diag |
---|
| 85 | !$OMP THREADPRIVATE(topswcf_aero,solswcf_aero) |
---|
| 86 | REAL, SAVE, ALLOCATABLE :: tausum_aero(:,:,:) |
---|
| 87 | !$OMP THREADPRIVATE(tausum_aero) |
---|
| 88 | REAL, SAVE, ALLOCATABLE :: tau3d_aero(:,:,:,:) |
---|
| 89 | !$OMP THREADPRIVATE(tau3d_aero) |
---|
| 90 | |
---|
[904] | 91 | CONTAINS |
---|
| 92 | |
---|
| 93 | !====================================================================== |
---|
| 94 | SUBROUTINE phys_local_var_init |
---|
| 95 | use dimphy |
---|
[1146] | 96 | use infotrac, ONLY : nbtr |
---|
[1279] | 97 | USE aero_mod |
---|
| 98 | |
---|
[904] | 99 | IMPLICIT NONE |
---|
[909] | 100 | #include "indicesol.h" |
---|
[904] | 101 | allocate(t_seri(klon,klev),q_seri(klon,klev),ql_seri(klon,klev),qs_seri(klon,klev)) |
---|
| 102 | allocate(u_seri(klon,klev),v_seri(klon,klev)) |
---|
[909] | 103 | |
---|
| 104 | allocate(tr_seri(klon,klev,nbtr)) |
---|
| 105 | allocate(d_t_dyn(klon,klev),d_q_dyn(klon,klev)) |
---|
[1054] | 106 | allocate(d_u_dyn(klon,klev),d_v_dyn(klon,klev)) |
---|
[909] | 107 | allocate(d_t_con(klon,klev),d_q_con(klon,klev)) |
---|
| 108 | allocate(d_u_con(klon,klev),d_v_con(klon,klev)) |
---|
| 109 | allocate(d_t_wake(klon,klev),d_q_wake(klon,klev)) |
---|
| 110 | allocate(d_t_lsc(klon,klev),d_q_lsc(klon,klev)) |
---|
| 111 | allocate(d_ql_lsc(klon,klev)) |
---|
| 112 | allocate(d_t_ajsb(klon,klev),d_q_ajsb(klon,klev)) |
---|
| 113 | allocate(d_t_ajs(klon,klev),d_q_ajs(klon,klev)) |
---|
| 114 | allocate(d_u_ajs(klon,klev),d_v_ajs(klon,klev)) |
---|
| 115 | allocate(d_t_eva(klon,klev),d_q_eva(klon,klev)) |
---|
| 116 | allocate(d_t_vdf(klon,klev),d_q_vdf(klon,klev)) |
---|
| 117 | allocate(d_u_vdf(klon,klev),d_v_vdf(klon,klev)) |
---|
| 118 | allocate(d_t_oli(klon,klev),d_t_oro(klon,klev)) |
---|
| 119 | allocate(d_u_oli(klon,klev),d_v_oli(klon,klev)) |
---|
| 120 | allocate(d_u_oro(klon,klev),d_v_oro(klon,klev)) |
---|
| 121 | allocate(d_t_lif(klon,klev),d_t_ec(klon,klev)) |
---|
| 122 | allocate(d_u_lif(klon,klev),d_v_lif(klon,klev)) |
---|
| 123 | allocate(d_ts(klon,klev), d_tr(klon,klev,nbtr)) |
---|
[1279] | 124 | allocate(topswad_aero(klon), solswad_aero(klon)) |
---|
| 125 | allocate(topswai_aero(klon), solswai_aero(klon)) |
---|
| 126 | allocate(topswad0_aero(klon), solswad0_aero(klon)) |
---|
| 127 | allocate(topsw_aero(klon,naero_grp), solsw_aero(klon,naero_grp)) |
---|
| 128 | allocate(topsw0_aero(klon,naero_grp), solsw0_aero(klon,naero_grp)) |
---|
| 129 | allocate(topswcf_aero(klon,3), solswcf_aero(klon,3)) |
---|
| 130 | allocate(d_u_hin(klon,klev),d_v_hin(klon,klev),d_t_hin(klon,klev)) |
---|
| 131 | allocate(tausum_aero(klon,nwave,naero_spc)) |
---|
| 132 | allocate(tau3d_aero(klon,klev,nwave,naero_spc)) |
---|
| 133 | |
---|
[904] | 134 | END SUBROUTINE phys_local_var_init |
---|
| 135 | |
---|
| 136 | !====================================================================== |
---|
| 137 | SUBROUTINE phys_local_var_end |
---|
| 138 | use dimphy |
---|
| 139 | IMPLICIT NONE |
---|
[909] | 140 | #include "indicesol.h" |
---|
[904] | 141 | deallocate(t_seri,q_seri,ql_seri,qs_seri) |
---|
| 142 | deallocate(u_seri,v_seri) |
---|
[909] | 143 | |
---|
| 144 | deallocate(tr_seri) |
---|
| 145 | deallocate(d_t_dyn,d_q_dyn) |
---|
[1054] | 146 | deallocate(d_u_dyn,d_v_dyn) |
---|
[909] | 147 | deallocate(d_t_con,d_q_con) |
---|
| 148 | deallocate(d_u_con,d_v_con) |
---|
| 149 | deallocate(d_t_wake,d_q_wake) |
---|
| 150 | deallocate(d_t_lsc,d_q_lsc) |
---|
| 151 | deallocate(d_ql_lsc) |
---|
| 152 | deallocate(d_t_ajsb,d_q_ajsb) |
---|
| 153 | deallocate(d_t_ajs,d_q_ajs) |
---|
| 154 | deallocate(d_u_ajs,d_v_ajs) |
---|
| 155 | deallocate(d_t_eva,d_q_eva) |
---|
| 156 | deallocate(d_t_vdf,d_q_vdf) |
---|
| 157 | deallocate(d_u_vdf,d_v_vdf) |
---|
| 158 | deallocate(d_t_oli,d_t_oro) |
---|
| 159 | deallocate(d_u_oli,d_v_oli) |
---|
| 160 | deallocate(d_u_oro,d_v_oro) |
---|
| 161 | deallocate(d_t_lif,d_t_ec) |
---|
| 162 | deallocate(d_u_lif,d_v_lif) |
---|
| 163 | deallocate(d_ts, d_tr) |
---|
[1279] | 164 | deallocate(topswad_aero,solswad_aero) |
---|
| 165 | deallocate(topswai_aero,solswai_aero) |
---|
| 166 | deallocate(topswad0_aero,solswad0_aero) |
---|
| 167 | deallocate(topsw_aero,solsw_aero) |
---|
| 168 | deallocate(topsw0_aero,solsw0_aero) |
---|
| 169 | deallocate(topswcf_aero,solswcf_aero) |
---|
| 170 | deallocate(tausum_aero) |
---|
| 171 | deallocate(tau3d_aero) |
---|
| 172 | deallocate(d_u_hin,d_v_hin,d_t_hin) |
---|
| 173 | |
---|
[904] | 174 | END SUBROUTINE phys_local_var_end |
---|
| 175 | |
---|
| 176 | END MODULE phys_local_var_mod |
---|