[907] | 1 | ! Abderrahmane 12 2007 |
---|
| 2 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
| 3 | !!! Ecreture des Sorties du modele dans les fichiers Netcdf : |
---|
| 4 | ! histmth.nc : moyennes mensuelles |
---|
| 5 | ! histday.nc : moyennes journalieres |
---|
| 6 | ! histhf.nc : moyennes toutes les 3 heures |
---|
| 7 | ! histins.nc : valeurs instantanees |
---|
| 8 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
| 9 | |
---|
| 10 | MODULE phys_output_mod |
---|
| 11 | |
---|
| 12 | IMPLICIT NONE |
---|
| 13 | |
---|
[1065] | 14 | private histdef2d, histdef3d |
---|
| 15 | |
---|
[1054] | 16 | integer, parameter :: nfiles = 5 |
---|
[929] | 17 | logical, dimension(nfiles), save :: clef_files |
---|
| 18 | integer, dimension(nfiles), save :: lev_files |
---|
| 19 | integer, dimension(nfiles), save :: nid_files |
---|
| 20 | |
---|
[1065] | 21 | integer, dimension(nfiles), private, save :: nhorim, nvertm |
---|
| 22 | real, dimension(nfiles), private, save :: zstophym, zoutm |
---|
| 23 | CHARACTER(len=20), dimension(nfiles), private, save :: type_ecri |
---|
[929] | 24 | |
---|
[907] | 25 | ! integer, save :: nid_hf3d |
---|
| 26 | |
---|
| 27 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
| 28 | !! Definition pour chaque variable du niveau d ecriture dans chaque fichier |
---|
| 29 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/ histmth, histday, histhf, histins /)!!!!!!!!!!!! |
---|
| 30 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
| 31 | |
---|
[1065] | 32 | integer, private:: levmin(nfiles) = 1 |
---|
| 33 | integer, private:: levmax(nfiles) |
---|
| 34 | |
---|
[907] | 35 | !!! 1D |
---|
[1054] | 36 | integer, dimension(nfiles) , save :: flag_phis = (/ 1, 1, 10, 1, 1 /) |
---|
| 37 | integer, dimension(nfiles) , save :: flag_aire = (/ 1, 1, 10, 1, 1 /) |
---|
| 38 | integer, dimension(nfiles) , save :: flag_contfracATM = (/ 10, 1, 1, 10, 10 /) |
---|
| 39 | integer, dimension(nfiles) , save :: flag_contfracOR = (/ 10, 1, 1, 10, 10 /) |
---|
| 40 | integer, dimension(nfiles) , save :: flag_aireTER = (/ 10, 10, 1, 10, 10 /) |
---|
[907] | 41 | |
---|
| 42 | !!! 2D |
---|
[1054] | 43 | integer, dimension(nfiles) , save :: flag_flat = (/ 10, 1, 10, 10, 1 /) |
---|
| 44 | integer, dimension(nfiles) , save :: flag_slp = (/ 1, 1, 1, 10, 1 /) |
---|
| 45 | integer, dimension(nfiles) , save :: flag_tsol = (/ 1, 1, 1, 1, 1 /) |
---|
| 46 | integer, dimension(nfiles) , save :: flag_t2m = (/ 1, 1, 1, 1, 1 /) |
---|
| 47 | integer, dimension(nfiles) , save :: flag_t2m_min = (/ 1, 1, 10, 10, 10 /) |
---|
| 48 | integer, dimension(nfiles) , save :: flag_t2m_max = (/ 1, 1, 10, 10, 10 /) |
---|
| 49 | integer, dimension(nfiles) , save :: flag_t2m_sol = (/ 10, 4, 10, 10, 10 /) |
---|
| 50 | integer, dimension(nfiles) , save :: flag_wind10m = (/ 1, 1, 1, 10, 10 /) |
---|
| 51 | integer, dimension(nfiles) , save :: flag_wind10max = (/ 10, 1, 10, 10, 10 /) |
---|
| 52 | integer, dimension(nfiles) , save :: flag_sicf = (/ 1, 1, 10, 10, 10 /) |
---|
| 53 | integer, dimension(nfiles) , save :: flag_q2m = (/ 1, 1, 1, 1, 1 /) |
---|
| 54 | integer, dimension(nfiles) , save :: flag_u10m = (/ 1, 1, 1, 1, 1 /) |
---|
| 55 | integer, dimension(nfiles) , save :: flag_v10m = (/ 1, 1, 1, 1, 1 /) |
---|
| 56 | integer, dimension(nfiles) , save :: flag_psol = (/ 1, 1, 1, 1, 1 /) |
---|
| 57 | integer, dimension(nfiles) , save :: flag_qsurf = (/ 1, 10, 10, 10, 10 /) |
---|
[907] | 58 | |
---|
[1054] | 59 | integer, dimension(nfiles) , save :: flag_u10m_sol = (/ 10, 4, 10, 10, 10 /) |
---|
| 60 | integer, dimension(nfiles) , save :: flag_v10m_sol = (/ 10, 4, 10, 10, 10 /) |
---|
[907] | 61 | |
---|
[1054] | 62 | integer, dimension(nfiles) , save :: flag_qsol = (/ 1, 10, 10, 1, 1 /) |
---|
[907] | 63 | |
---|
[1054] | 64 | integer, dimension(nfiles),save :: flag_ndayrain = (/ 1, 10, 10, 10, 10 /) |
---|
| 65 | integer, dimension(nfiles),save :: flag_precip = (/ 1, 1, 1, 1, 1 /) |
---|
| 66 | integer, dimension(nfiles), save :: flag_plul = (/ 1, 1, 1, 1, 10 /) |
---|
[907] | 67 | |
---|
[1054] | 68 | integer, dimension(nfiles) , save :: flag_pluc = (/ 1, 1, 1, 1, 10 /) |
---|
| 69 | integer, dimension(nfiles) , save :: flag_snow = (/ 1, 1, 10, 1, 10 /) |
---|
| 70 | integer, dimension(nfiles) , save :: flag_evap = (/ 1, 1, 10, 1, 10 /) |
---|
| 71 | integer, dimension(nfiles) , save :: flag_tops = (/ 1, 1, 10, 10, 10 /) |
---|
| 72 | integer, dimension(nfiles) , save :: flag_tops0 = (/ 1, 5, 10, 10, 10 /) |
---|
| 73 | integer, dimension(nfiles) , save :: flag_topl = (/ 1, 1, 10, 1, 10 /) |
---|
| 74 | integer, dimension(nfiles) , save :: flag_topl0 = (/ 1, 5, 10, 10, 10 /) |
---|
| 75 | integer, dimension(nfiles) , save :: flag_SWupTOA = (/ 1, 4, 10, 10, 10 /) |
---|
| 76 | integer, dimension(nfiles) , save :: flag_SWupTOAclr = (/ 1, 4, 10, 10, 10 /) |
---|
| 77 | integer, dimension(nfiles) , save :: flag_SWdnTOA = (/ 1, 4, 10, 10, 10 /) |
---|
| 78 | integer, dimension(nfiles) , save :: flag_SWdnTOAclr = (/ 1, 4, 10, 10, 10 /) |
---|
| 79 | integer, dimension(nfiles) , save :: flag_SWup200 = (/ 1, 10, 10, 10, 10 /) |
---|
| 80 | integer, dimension(nfiles) , save :: flag_SWup200clr = (/ 10, 1, 10, 10, 10 /) |
---|
| 81 | integer, dimension(nfiles) , save :: flag_SWdn200 = (/ 1, 10, 10, 10, 10 /) |
---|
| 82 | integer, dimension(nfiles) , save :: flag_SWdn200clr = (/ 10, 1, 10, 10, 10 /) |
---|
[907] | 83 | |
---|
| 84 | ! arajouter |
---|
[1054] | 85 | ! integer, dimension(nfiles) , save :: flag_LWupTOA = (/ 1, 4, 10, 10, 10 /) |
---|
| 86 | ! integer, dimension(nfiles) , save :: flag_LWupTOAclr = (/ 1, 4, 10, 10, 10 /) |
---|
| 87 | ! integer, dimension(nfiles) , save :: flag_LWdnTOA = (/ 1, 4, 10, 10, 10 /) |
---|
| 88 | ! integer, dimension(nfiles) , save :: flag_LWdnTOAclr = (/ 1, 4, 10, 10, 10 /) |
---|
[907] | 89 | |
---|
[1054] | 90 | integer, dimension(nfiles) , save :: flag_LWup200 = (/ 1, 10, 10, 10, 10 /) |
---|
| 91 | integer, dimension(nfiles) , save :: flag_LWup200clr = (/ 1, 10, 10, 10, 10 /) |
---|
| 92 | integer, dimension(nfiles) , save :: flag_LWdn200 = (/ 1, 10, 10, 10, 10 /) |
---|
| 93 | integer, dimension(nfiles) , save :: flag_LWdn200clr = (/ 1, 10, 10, 10, 10 /) |
---|
| 94 | integer, dimension(nfiles) , save :: flag_sols = (/ 1, 1, 10, 1, 10 /) |
---|
| 95 | integer, dimension(nfiles) , save :: flag_sols0 = (/ 1, 5, 10, 10, 10 /) |
---|
| 96 | integer, dimension(nfiles) , save :: flag_soll = (/ 1, 1, 10, 1, 10 /) |
---|
| 97 | integer, dimension(nfiles) , save :: flag_soll0 = (/ 1, 5, 10, 10, 10 /) |
---|
| 98 | integer, dimension(nfiles) , save :: flag_radsol = (/ 1, 1, 10, 10, 10 /) |
---|
| 99 | integer, dimension(nfiles) , save :: flag_SWupSFC = (/ 1, 4, 10, 10, 10 /) |
---|
| 100 | integer, dimension(nfiles) , save :: flag_SWupSFCclr = (/ 1, 4, 10, 10, 10 /) |
---|
| 101 | integer, dimension(nfiles) , save :: flag_SWdnSFC = (/ 1, 1, 10, 10, 10 /) |
---|
| 102 | integer, dimension(nfiles) , save :: flag_SWdnSFCclr = (/ 1, 4, 10, 10, 10 /) |
---|
| 103 | integer, dimension(nfiles) , save :: flag_LWupSFC = (/ 1, 4, 10, 10, 10 /) |
---|
| 104 | integer, dimension(nfiles) , save :: flag_LWupSFCclr = (/ 1, 4, 10, 10, 10 /) |
---|
| 105 | integer, dimension(nfiles) , save :: flag_LWdnSFC = (/ 1, 4, 10, 10, 10 /) |
---|
| 106 | integer, dimension(nfiles) , save :: flag_LWdnSFCclr = (/ 1, 4, 10, 10, 10 /) |
---|
| 107 | integer, dimension(nfiles) , save :: flag_bils = (/ 1, 2, 10, 1, 10 /) |
---|
| 108 | integer, dimension(nfiles) , save :: flag_sens = (/ 1, 1, 10, 1, 1 /) |
---|
| 109 | integer, dimension(nfiles) , save :: flag_fder = (/ 1, 2, 10, 1, 10 /) |
---|
| 110 | integer, dimension(nfiles) , save :: flag_ffonte = (/ 1, 10, 10, 10, 10 /) |
---|
| 111 | integer, dimension(nfiles) , save :: flag_fqcalving = (/ 1, 10, 10, 10, 10 /) |
---|
| 112 | integer, dimension(nfiles) , save :: flag_fqfonte = (/ 1, 10, 10, 10, 10 /) |
---|
[907] | 113 | |
---|
[1054] | 114 | integer, dimension(nfiles) , save :: flag_taux_sol = (/ 1, 4, 10, 1, 10 /) |
---|
| 115 | integer, dimension(nfiles) , save :: flag_tauy_sol = (/ 1, 4, 10, 1, 10 /) |
---|
[907] | 116 | |
---|
[1054] | 117 | integer, dimension(nfiles) , save :: flag_pourc_sol = (/ 1, 4, 10, 1, 10 /) |
---|
| 118 | integer, dimension(nfiles) , save :: flag_fract_sol = (/ 1, 4, 10, 1, 10 /) |
---|
| 119 | integer, dimension(nfiles) , save :: flag_tsol_sol = (/ 1, 4, 10, 1, 10 /) |
---|
| 120 | integer, dimension(nfiles) , save :: flag_sens_sol = (/ 1, 4, 10, 1, 10 /) |
---|
| 121 | integer, dimension(nfiles) , save :: flag_lat_sol = (/ 1, 4, 10, 1, 10 /) |
---|
| 122 | integer, dimension(nfiles) , save :: flag_flw_sol = (/ 1, 10, 10, 10, 10 /) |
---|
| 123 | integer, dimension(nfiles) , save :: flag_fsw_sol = (/ 1, 10, 10, 10, 10 /) |
---|
| 124 | integer, dimension(nfiles) , save :: flag_wbils_sol = (/ 1, 10, 10, 10, 10 /) |
---|
| 125 | integer, dimension(nfiles) , save :: flag_wbilo_sol = (/ 1, 10, 10, 10, 10 /) |
---|
[907] | 126 | |
---|
[1054] | 127 | integer, dimension(nfiles) , save :: flag_cdrm = (/ 1, 10, 10, 1, 10 /) |
---|
| 128 | integer, dimension(nfiles) , save :: flag_cdrh = (/ 1, 10, 10, 1, 10 /) |
---|
| 129 | integer, dimension(nfiles) , save :: flag_cldl = (/ 1, 1, 10, 10, 10 /) |
---|
| 130 | integer, dimension(nfiles) , save :: flag_cldm = (/ 1, 1, 10, 10, 10 /) |
---|
| 131 | integer, dimension(nfiles) , save :: flag_cldh = (/ 1, 1, 10, 10, 10 /) |
---|
| 132 | integer, dimension(nfiles) , save :: flag_cldt = (/ 1, 1, 2, 10, 10 /) |
---|
| 133 | integer, dimension(nfiles) , save :: flag_cldq = (/ 1, 1, 10, 10, 10 /) |
---|
| 134 | integer, dimension(nfiles) , save :: flag_lwp = (/ 1, 5, 10, 10, 10 /) |
---|
| 135 | integer, dimension(nfiles) , save :: flag_iwp = (/ 1, 5, 10, 10, 10 /) |
---|
| 136 | integer, dimension(nfiles) , save :: flag_ue = (/ 1, 10, 10, 10, 10 /) |
---|
| 137 | integer, dimension(nfiles) , save :: flag_ve = (/ 1, 10, 10, 10, 10 /) |
---|
| 138 | integer, dimension(nfiles) , save :: flag_uq = (/ 1, 10, 10, 10, 10 /) |
---|
| 139 | integer, dimension(nfiles) , save :: flag_vq = (/ 1, 10, 10, 10, 10 /) |
---|
[907] | 140 | |
---|
[1054] | 141 | integer, dimension(nfiles) , save :: flag_cape = (/ 1, 10, 10, 10, 10 /) |
---|
| 142 | integer, dimension(nfiles) , save :: flag_pbase = (/ 1, 10, 10, 10, 10 /) |
---|
| 143 | integer, dimension(nfiles) , save :: flag_ptop = (/ 1, 4, 10, 10, 10 /) |
---|
| 144 | integer, dimension(nfiles) , save :: flag_fbase = (/ 1, 10, 10, 10, 10 /) |
---|
| 145 | integer, dimension(nfiles) , save :: flag_prw = (/ 1, 1, 10, 10, 10 /) |
---|
[907] | 146 | |
---|
[1054] | 147 | integer, dimension(nfiles) , save :: flag_s_pblh = (/ 1, 10, 10, 1, 1 /) |
---|
| 148 | integer, dimension(nfiles) , save :: flag_s_pblt = (/ 1, 10, 10, 1, 1 /) |
---|
| 149 | integer, dimension(nfiles) , save :: flag_s_lcl = (/ 1, 10, 10, 1, 10 /) |
---|
| 150 | integer, dimension(nfiles) , save :: flag_s_capCL = (/ 1, 10, 10, 1, 10 /) |
---|
| 151 | integer, dimension(nfiles) , save :: flag_s_oliqCL = (/ 1, 10, 10, 1, 10 /) |
---|
| 152 | integer, dimension(nfiles) , save :: flag_s_cteiCL = (/ 1, 10, 10, 1, 1 /) |
---|
| 153 | integer, dimension(nfiles) , save :: flag_s_therm = (/ 1, 10, 10, 1, 1 /) |
---|
| 154 | integer, dimension(nfiles) , save :: flag_s_trmb1 = (/ 1, 10, 10, 1, 10 /) |
---|
| 155 | integer, dimension(nfiles) , save :: flag_s_trmb2 = (/ 1, 10, 10, 1, 10 /) |
---|
| 156 | integer, dimension(nfiles) , save :: flag_s_trmb3 = (/ 1, 10, 10, 1, 10 /) |
---|
[907] | 157 | |
---|
[1054] | 158 | integer, dimension(nfiles) , save :: flag_slab_bils = (/ 1, 1, 10, 10, 10 /) |
---|
[907] | 159 | |
---|
[1054] | 160 | integer, dimension(nfiles) , save :: flag_ale_bl = (/ 1, 1, 1, 1, 10 /) |
---|
| 161 | integer, dimension(nfiles) , save :: flag_alp_bl = (/ 1, 1, 1, 1, 10 /) |
---|
| 162 | integer, dimension(nfiles) , save :: flag_ale_wk = (/ 1, 1, 1, 1, 10 /) |
---|
| 163 | integer, dimension(nfiles) , save :: flag_alp_wk = (/ 1, 1, 1, 1, 10 /) |
---|
[945] | 164 | |
---|
[1054] | 165 | integer, dimension(nfiles) , save :: flag_ale = (/ 1, 1, 1, 1, 10 /) |
---|
| 166 | integer, dimension(nfiles) , save :: flag_alp = (/ 1, 1, 1, 1, 10 /) |
---|
| 167 | integer, dimension(nfiles) , save :: flag_cin = (/ 1, 1, 1, 1, 10 /) |
---|
| 168 | integer, dimension(nfiles) , save :: flag_wape = (/ 1, 1, 1, 1, 10 /) |
---|
[973] | 169 | |
---|
| 170 | |
---|
[907] | 171 | ! Champs interpolles sur des niveaux de pression ??? a faire correctement |
---|
| 172 | ! if=1 on ecrit u v w phi sur 850 700 500 200 au niv 1 |
---|
| 173 | ! if=2 on ecrit w et ph 500 seulement au niv 1 |
---|
| 174 | ! et u v sur 850 700 500 200 |
---|
| 175 | ! if=3 on ecrit ph a 500 seulement au niv 1 |
---|
| 176 | ! on ecrit u v t q a 850 700 500 200 au niv 3 |
---|
| 177 | ! on ecrit ph a 500 au niv 3 |
---|
| 178 | |
---|
[1054] | 179 | integer, dimension(nfiles) , save :: flag_ulevsSTD = (/ 1, 1, 3, 10, 10 /) |
---|
| 180 | integer, dimension(nfiles) , save :: flag_vlevsSTD = (/ 1, 1, 3, 10, 10 /) |
---|
| 181 | integer, dimension(nfiles) , save :: flag_wlevsSTD = (/ 1, 1, 10, 10, 10 /) |
---|
| 182 | integer, dimension(nfiles) , save :: flag_tlevsSTD = (/ 10, 10, 3, 10, 10 /) |
---|
| 183 | integer, dimension(nfiles) , save :: flag_qlevsSTD = (/ 10, 10, 3, 10, 10 /) |
---|
| 184 | integer, dimension(nfiles) , save :: flag_philevsSTD = (/ 1, 1, 1, 10, 10 /) |
---|
[907] | 185 | |
---|
[1054] | 186 | integer, dimension(nfiles) , save :: flag_t_oce_sic = (/ 1, 10, 10, 10, 10 /) |
---|
[907] | 187 | |
---|
[1054] | 188 | integer, dimension(nfiles) , save :: flag_weakinv = (/ 10, 1, 10, 10, 10 /) |
---|
| 189 | integer, dimension(nfiles) , save :: flag_dthmin = (/ 10, 1, 10, 10, 10 /) |
---|
| 190 | integer, dimension(nfiles) , save :: flag_u10_sol = (/ 10, 4, 10, 10, 10 /) |
---|
| 191 | integer, dimension(nfiles) , save :: flag_v10_sol = (/ 10, 4, 10, 10, 10 /) |
---|
| 192 | integer, dimension(nfiles) , save :: flag_cldtau = (/ 10, 5, 10, 10, 10 /) |
---|
| 193 | integer, dimension(nfiles) , save :: flag_cldemi = (/ 10, 5, 10, 10, 10 /) |
---|
| 194 | integer, dimension(nfiles) , save :: flag_rh2m = (/ 10, 5, 10, 10, 10 /) |
---|
| 195 | integer, dimension(nfiles) , save :: flag_qsat2m = (/ 10, 5, 10, 10, 10 /) |
---|
| 196 | integer, dimension(nfiles) , save :: flag_tpot = (/ 10, 5, 10, 10, 10 /) |
---|
| 197 | integer, dimension(nfiles) , save :: flag_tpote = (/ 10, 5, 10, 10, 10 /) |
---|
| 198 | integer, dimension(nfiles) , save :: flag_tke = (/ 4, 10, 10, 10, 10 /) |
---|
| 199 | integer, dimension(nfiles) , save :: flag_tke_max = (/ 4, 10, 10, 10, 10 /) |
---|
| 200 | integer, dimension(nfiles) , save :: flag_tke_sol = (/ 10, 4, 10, 10, 10 /) |
---|
| 201 | integer, dimension(nfiles) , save :: flag_tke_max_sol = (/ 10, 4, 10, 10, 10 /) |
---|
| 202 | integer, dimension(nfiles) , save :: flag_kz = (/ 4, 10, 10, 10, 10 /) |
---|
| 203 | integer, dimension(nfiles) , save :: flag_kz_max = (/ 4, 10, 10, 10, 10 /) |
---|
| 204 | integer, dimension(nfiles) , save :: flag_SWnetOR = (/ 10, 10, 2, 10, 10 /) |
---|
| 205 | integer, dimension(nfiles) , save :: flag_SWdownOR = (/ 10, 10, 2, 10, 10 /) |
---|
| 206 | integer, dimension(nfiles) , save :: flag_LWdownOR = (/ 10, 10, 2, 10, 10 /) |
---|
[907] | 207 | |
---|
[1054] | 208 | integer, dimension(nfiles) , save :: flag_snowl = (/ 10, 1, 10, 10, 10 /) |
---|
| 209 | integer, dimension(nfiles) , save :: flag_cape_max = (/ 10, 1, 10, 10, 10 /) |
---|
| 210 | integer, dimension(nfiles) , save :: flag_solldown = (/ 10, 1, 10, 1, 10 /) |
---|
[907] | 211 | |
---|
[1054] | 212 | integer, dimension(nfiles) , save :: flag_dtsvdfo = (/ 10, 10, 10, 1, 10 /) |
---|
| 213 | integer, dimension(nfiles) , save :: flag_dtsvdft = (/ 10, 10, 10, 1, 10 /) |
---|
| 214 | integer, dimension(nfiles) , save :: flag_dtsvdfg = (/ 10, 10, 10, 1, 10 /) |
---|
| 215 | integer, dimension(nfiles) , save :: flag_dtsvdfi = (/ 10, 10, 10, 1, 10 /) |
---|
| 216 | integer, dimension(nfiles) , save :: flag_rugs = (/ 10, 10, 10, 1, 1 /) |
---|
[907] | 217 | |
---|
| 218 | !!!!!!!!!!!!!!!!!!!!!! 3D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
[1054] | 219 | integer, dimension(nfiles) , save :: flag_lwcon = (/ 2, 5, 10, 10, 1 /) |
---|
| 220 | integer, dimension(nfiles) , save :: flag_iwcon = (/ 2, 5, 10, 10, 10 /) |
---|
| 221 | integer, dimension(nfiles) , save :: flag_temp = (/ 2, 3, 4, 1, 1 /) |
---|
| 222 | integer, dimension(nfiles) , save :: flag_theta = (/ 2, 3, 4, 1, 1 /) |
---|
| 223 | integer, dimension(nfiles) , save :: flag_ovap = (/ 2, 3, 4, 1, 1 /) |
---|
| 224 | integer, dimension(nfiles) , save :: flag_wvapp = (/ 2, 10, 10, 10, 10 /) |
---|
| 225 | integer, dimension(nfiles) , save :: flag_geop = (/ 2, 3, 10, 1, 1 /) |
---|
| 226 | integer, dimension(nfiles) , save :: flag_vitu = (/ 2, 3, 4, 1, 1 /) |
---|
| 227 | integer, dimension(nfiles) , save :: flag_vitv = (/ 2, 3, 4, 1, 1 /) |
---|
| 228 | integer, dimension(nfiles) , save :: flag_vitw = (/ 2, 3, 10, 10, 1 /) |
---|
| 229 | integer, dimension(nfiles) , save :: flag_pres = (/ 2, 3, 10, 1, 1 /) |
---|
| 230 | integer, dimension(nfiles) , save :: flag_rneb = (/ 2, 5, 10, 10, 1 /) |
---|
| 231 | integer, dimension(nfiles) , save :: flag_rnebcon = (/ 2, 5, 10, 10, 1 /) |
---|
| 232 | integer, dimension(nfiles) , save :: flag_rhum = (/ 2, 10, 10, 10, 10 /) |
---|
| 233 | integer, dimension(nfiles) , save :: flag_ozone = (/ 2, 10, 10, 10, 10 /) |
---|
| 234 | integer, dimension(nfiles) , save :: flag_upwd = (/ 2, 10, 10, 10, 10 /) |
---|
| 235 | integer, dimension(nfiles) , save :: flag_dtphy = (/ 2, 10, 10, 10, 1 /) |
---|
| 236 | integer, dimension(nfiles) , save :: flag_dqphy = (/ 2, 10, 10, 10, 1 /) |
---|
| 237 | integer, dimension(nfiles) , save :: flag_pr_con_l = (/ 2, 10, 10, 10, 10 /) |
---|
| 238 | integer, dimension(nfiles) , save :: flag_pr_con_i = (/ 2, 10, 10, 10, 10 /) |
---|
| 239 | integer, dimension(nfiles) , save :: flag_pr_lsc_l = (/ 2, 10, 10, 10, 10 /) |
---|
| 240 | integer, dimension(nfiles) , save :: flag_pr_lsc_i = (/ 2, 10, 10, 10, 10 /) |
---|
[929] | 241 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
[907] | 242 | |
---|
[1054] | 243 | integer, dimension(nfiles) , save :: flag_albe_sol = (/ 3, 4, 10, 1, 10 /) |
---|
| 244 | integer, dimension(nfiles) , save :: flag_ages_sol = (/ 3, 10, 10, 10, 10 /) |
---|
| 245 | integer, dimension(nfiles) , save :: flag_rugs_sol = (/ 3, 4, 10, 1, 10 /) |
---|
[907] | 246 | |
---|
[1054] | 247 | integer, dimension(nfiles) , save :: flag_albs = (/ 3, 10, 10, 1, 10 /) |
---|
| 248 | integer, dimension(nfiles) , save :: flag_albslw = (/ 3, 10, 10, 1, 10 /) |
---|
[907] | 249 | |
---|
[1054] | 250 | integer, dimension(nfiles) , save :: flag_clwcon = (/ 4, 10, 10, 10, 10 /) |
---|
| 251 | integer, dimension(nfiles) , save :: flag_Ma = (/ 4, 10, 10, 10, 10 /) |
---|
| 252 | integer, dimension(nfiles) , save :: flag_dnwd = (/ 4, 10, 10, 10, 10 /) |
---|
| 253 | integer, dimension(nfiles) , save :: flag_dnwd0 = (/ 4, 10, 10, 10, 10 /) |
---|
| 254 | integer, dimension(nfiles) , save :: flag_dtdyn = (/ 4, 10, 10, 10, 1 /) |
---|
| 255 | integer, dimension(nfiles) , save :: flag_dqdyn = (/ 4, 10, 10, 10, 1 /) |
---|
| 256 | integer, dimension(nfiles) , save :: flag_dudyn = (/ 4, 10, 10, 10, 1 /) !AXC |
---|
| 257 | integer, dimension(nfiles) , save :: flag_dvdyn = (/ 4, 10, 10, 10, 1 /) !AXC |
---|
| 258 | integer, dimension(nfiles) , save :: flag_dtcon = (/ 4, 5, 10, 10, 10 /) |
---|
| 259 | integer, dimension(nfiles) , save :: flag_ducon = (/ 4, 10, 10, 10, 10 /) |
---|
| 260 | integer, dimension(nfiles) , save :: flag_dqcon = (/ 4, 5, 10, 10, 10 /) |
---|
| 261 | integer, dimension(nfiles) , save :: flag_dtwak = (/ 4, 5, 10, 10, 10 /) |
---|
| 262 | integer, dimension(nfiles) , save :: flag_dqwak = (/ 4, 5, 10, 10, 10 /) |
---|
[1062] | 263 | integer, dimension(nfiles) , save :: flag_wake_h = (/ 4, 5, 10, 10, 10 /) |
---|
| 264 | integer, dimension(nfiles) , save :: flag_wake_s = (/ 4, 5, 10, 10, 10 /) |
---|
| 265 | integer, dimension(nfiles) , save :: flag_wake_deltat = (/ 4, 5, 10, 10, 10 /) |
---|
| 266 | integer, dimension(nfiles) , save :: flag_wake_deltaq = (/ 4, 5, 10, 10, 10 /) |
---|
| 267 | integer, dimension(nfiles) , save :: flag_wake_omg = (/ 4, 5, 10, 10, 10 /) |
---|
| 268 | integer, dimension(nfiles) , save :: flag_Vprecip = (/ 4, 5, 10, 10, 10 /) |
---|
| 269 | integer, dimension(nfiles) , save :: flag_ftd = (/ 4, 5, 10, 10, 10 /) |
---|
| 270 | integer, dimension(nfiles) , save :: flag_fqd = (/ 4, 5, 10, 10, 10 /) |
---|
[1054] | 271 | integer, dimension(nfiles) , save :: flag_dtlsc = (/ 4, 10, 10, 10, 10 /) |
---|
| 272 | integer, dimension(nfiles) , save :: flag_dtlschr = (/ 4, 10, 10, 10, 10 /) |
---|
| 273 | integer, dimension(nfiles) , save :: flag_dqlsc = (/ 4, 10, 10, 10, 10 /) |
---|
| 274 | integer, dimension(nfiles) , save :: flag_dtvdf = (/ 4, 10, 10, 1, 10 /) |
---|
| 275 | integer, dimension(nfiles) , save :: flag_dqvdf = (/ 4, 10, 10, 1, 10 /) |
---|
| 276 | integer, dimension(nfiles) , save :: flag_dteva = (/ 4, 10, 10, 10, 10 /) |
---|
| 277 | integer, dimension(nfiles) , save :: flag_dqeva = (/ 4, 10, 10, 10, 10 /) |
---|
| 278 | integer, dimension(nfiles) , save :: flag_ptconv = (/ 4, 10, 10, 10, 10 /) |
---|
| 279 | integer, dimension(nfiles) , save :: flag_ratqs = (/ 4, 10, 10, 10, 10 /) |
---|
| 280 | integer, dimension(nfiles) , save :: flag_dtthe = (/ 4, 10, 10, 10, 10 /) |
---|
| 281 | integer, dimension(nfiles) , save :: flag_f_th = (/ 4, 10, 10, 10, 10 /) |
---|
| 282 | integer, dimension(nfiles) , save :: flag_e_th = (/ 4, 10, 10, 10, 10 /) |
---|
| 283 | integer, dimension(nfiles) , save :: flag_w_th = (/ 4, 10, 10, 10, 10 /) |
---|
| 284 | integer, dimension(nfiles) , save :: flag_lambda_th = (/ 4, 10, 10, 10, 10 /) |
---|
| 285 | integer, dimension(nfiles) , save :: flag_q_th = (/ 4, 10, 10, 10, 10 /) |
---|
| 286 | integer, dimension(nfiles) , save :: flag_a_th = (/ 4, 10, 10, 10, 10 /) |
---|
| 287 | integer, dimension(nfiles) , save :: flag_d_th = (/ 4, 10, 10, 10, 10 /) |
---|
| 288 | integer, dimension(nfiles) , save :: flag_f0_th = (/ 4, 10, 10, 10, 10 /) |
---|
| 289 | integer, dimension(nfiles) , save :: flag_zmax_th = (/ 4, 10, 10, 10, 10 /) |
---|
| 290 | integer, dimension(nfiles) , save :: flag_dqthe = (/ 4, 10, 10, 10, 1 /) |
---|
| 291 | integer, dimension(nfiles) , save :: flag_dtajs = (/ 4, 10, 10, 10, 10 /) |
---|
| 292 | integer, dimension(nfiles) , save :: flag_dqajs = (/ 4, 10, 10, 10, 10 /) |
---|
| 293 | integer, dimension(nfiles) , save :: flag_dtswr = (/ 4, 10, 10, 10, 1 /) |
---|
| 294 | integer, dimension(nfiles) , save :: flag_dtsw0 = (/ 4, 10, 10, 10, 10 /) |
---|
| 295 | integer, dimension(nfiles) , save :: flag_dtlwr = (/ 4, 10, 10, 10, 1 /) |
---|
| 296 | integer, dimension(nfiles) , save :: flag_dtlw0 = (/ 4, 10, 10, 10, 10 /) |
---|
| 297 | integer, dimension(nfiles) , save :: flag_dtec = (/ 4, 10, 10, 10, 10 /) |
---|
| 298 | integer, dimension(nfiles) , save :: flag_duvdf = (/ 4, 10, 10, 10, 10 /) |
---|
| 299 | integer, dimension(nfiles) , save :: flag_dvvdf = (/ 4, 10, 10, 10, 10 /) |
---|
| 300 | integer, dimension(nfiles) , save :: flag_duoro = (/ 4, 10, 10, 10, 10 /) |
---|
| 301 | integer, dimension(nfiles) , save :: flag_dvoro = (/ 4, 10, 10, 10, 10 /) |
---|
| 302 | integer, dimension(nfiles) , save :: flag_dulif = (/ 4, 10, 10, 10, 10 /) |
---|
| 303 | integer, dimension(nfiles) , save :: flag_dvlif = (/ 4, 10, 10, 10, 10 /) |
---|
| 304 | integer, dimension(nfiles) , save :: flag_trac = (/ 4, 10, 10, 10, 10 /) |
---|
[907] | 305 | |
---|
| 306 | CONTAINS |
---|
| 307 | |
---|
| 308 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
| 309 | !!!!!!!!! Ouverture des fichier et definition des variable de sortie !!!!!!!! |
---|
| 310 | !! histbeg, histvert et histdef |
---|
| 311 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
[929] | 312 | |
---|
| 313 | SUBROUTINE phys_output_open(jjmp1,nqmax,nlevSTD,clevSTD,nbteta, & |
---|
| 314 | ctetaSTD,dtime, presnivs, ok_veget, & |
---|
[1054] | 315 | ocean, iflag_pbl,ok_mensuel,ok_journe, & |
---|
[1065] | 316 | ok_hf,ok_instan,ok_LES) |
---|
[907] | 317 | |
---|
[929] | 318 | USE iophy |
---|
| 319 | USE dimphy |
---|
| 320 | USE ioipsl |
---|
| 321 | USE mod_phys_lmdz_para |
---|
[907] | 322 | |
---|
[929] | 323 | IMPLICIT NONE |
---|
| 324 | include "dimensions.h" |
---|
| 325 | include "temps.h" |
---|
| 326 | include "indicesol.h" |
---|
| 327 | include "advtrac.h" |
---|
| 328 | include "clesphys.h" |
---|
[964] | 329 | include "thermcell.h" |
---|
[907] | 330 | |
---|
[929] | 331 | integer :: jjmp1, nqmax |
---|
| 332 | integer :: nbteta, nlevSTD, radpas |
---|
| 333 | logical :: ok_mensuel, ok_journe, ok_hf, ok_instan |
---|
[1054] | 334 | logical :: ok_LES |
---|
[929] | 335 | real :: dtime |
---|
| 336 | integer :: idayref |
---|
| 337 | real :: zjulian |
---|
| 338 | real, dimension(klev) :: presnivs |
---|
| 339 | character(len=4), dimension(nlevSTD) :: clevSTD |
---|
| 340 | integer :: nsrf, k, iq, iiq, iff, i, j |
---|
| 341 | logical :: ok_veget |
---|
| 342 | integer :: iflag_pbl |
---|
| 343 | CHARACTER(len=3) :: bb2 |
---|
| 344 | CHARACTER(len=2) :: bb3 |
---|
| 345 | character(len=6) :: ocean |
---|
| 346 | CHARACTER(len=3) :: ctetaSTD(nbteta) |
---|
| 347 | real, dimension(nfiles) :: ecrit_files |
---|
| 348 | CHARACTER(len=20), dimension(nfiles) :: name_files |
---|
| 349 | INTEGER, dimension(iim*jjmp1) :: ndex2d |
---|
| 350 | INTEGER, dimension(iim*jjmp1*klev) :: ndex3d |
---|
| 351 | integer :: imin_ins, imax_ins |
---|
| 352 | integer :: jmin_ins, jmax_ins |
---|
[907] | 353 | |
---|
[1065] | 354 | !!!!!!!!!! stockage dans une region limitee pour chaque fichier !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
| 355 | ! entre [lonmin_reg,lonmax_reg] et [latmin_reg,latmax_reg] |
---|
[1054] | 356 | |
---|
[1065] | 357 | logical, dimension(nfiles), save :: ok_reglim = (/ .false., .false., .false., .false., .true. /) |
---|
| 358 | real, dimension(nfiles), save :: lonmin_reg = (/ 0., -45., 0., 0., -162. /) |
---|
| 359 | real, dimension(nfiles), save :: lonmax_reg = (/ 90., 45., 90., 90., -144. /) |
---|
| 360 | real, dimension(nfiles), save :: latmin_reg = (/ 0., -45., 0., 0., 7. /) |
---|
| 361 | real, dimension(nfiles), save :: latmax_reg = (/ 90., 90., 90., 90., 21. /) |
---|
| 362 | |
---|
| 363 | levmax = (/ klev, klev, klev, klev, 17 /) |
---|
| 364 | |
---|
[929] | 365 | name_files(1) = 'histmth' |
---|
| 366 | name_files(2) = 'histday' |
---|
| 367 | name_files(3) = 'histhf' |
---|
| 368 | name_files(4) = 'histins' |
---|
[1054] | 369 | name_files(5) = 'histLES' |
---|
[907] | 370 | |
---|
[929] | 371 | type_ecri(1) = 'ave(X)' |
---|
| 372 | type_ecri(2) = 'ave(X)' |
---|
| 373 | type_ecri(3) = 'ave(X)' |
---|
| 374 | type_ecri(4) = 'inst(X)' |
---|
[1054] | 375 | type_ecri(5) = 'ave(X)' |
---|
[907] | 376 | |
---|
[929] | 377 | clef_files(1) = ok_mensuel |
---|
| 378 | clef_files(2) = ok_journe |
---|
| 379 | clef_files(3) = ok_hf |
---|
| 380 | clef_files(4) = ok_instan |
---|
[1054] | 381 | clef_files(5) = ok_LES |
---|
[907] | 382 | |
---|
[929] | 383 | lev_files(1) = lev_histmth |
---|
| 384 | lev_files(2) = lev_histday |
---|
| 385 | lev_files(3) = lev_histhf |
---|
| 386 | lev_files(4) = 1 |
---|
[1054] | 387 | lev_files(5) = 1 |
---|
[907] | 388 | |
---|
[929] | 389 | ecrit_files(1) = ecrit_mth |
---|
| 390 | ecrit_files(2) = ecrit_day |
---|
| 391 | ecrit_files(3) = ecrit_hf |
---|
| 392 | ecrit_files(4) = ecrit_ins |
---|
[1054] | 393 | ecrit_files(5) = ecrit_LES |
---|
[907] | 394 | |
---|
| 395 | !!!!!!!!!!!!!!!!!!!!!!! Boucle sur les fichiers !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
| 396 | ! Appel de histbeg et histvert pour creer le fichier et les niveaux verticaux !! |
---|
| 397 | ! Appel des histbeg pour definir les variables (nom, moy ou inst, freq de sortie .. |
---|
| 398 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
| 399 | |
---|
[929] | 400 | DO iff=1,nfiles |
---|
| 401 | |
---|
| 402 | IF (clef_files(iff)) THEN |
---|
[907] | 403 | |
---|
[929] | 404 | zstophym(iff) = dtime ! Frequence ou l on moyenne |
---|
| 405 | zoutm(iff) = ecrit_files(iff) ! Frequence ou l on ecrit |
---|
[907] | 406 | |
---|
[929] | 407 | idayref = day_ref |
---|
| 408 | CALL ymds2ju(annee_ref, 1, idayref, 0.0, zjulian) |
---|
[907] | 409 | |
---|
| 410 | !!!!!!!!!!!!!!!!! Traitement dans le cas ou l'on veut stocker sur un domaine limite !! |
---|
| 411 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
[929] | 412 | if (ok_reglim(iff)) then |
---|
[907] | 413 | |
---|
[929] | 414 | imin_ins=1 |
---|
| 415 | imax_ins=iim |
---|
| 416 | jmin_ins=1 |
---|
| 417 | jmax_ins=jjmp1 |
---|
[907] | 418 | |
---|
[1062] | 419 | ! correction abderr do i=1,iim-1 |
---|
| 420 | do i=1,iim |
---|
[929] | 421 | print*,'io_lon(i)=',io_lon(i) |
---|
| 422 | if (io_lon(i).le.lonmin_reg(iff)) imin_ins=i |
---|
| 423 | if (io_lon(i).le.lonmax_reg(iff)) imax_ins=i |
---|
| 424 | enddo |
---|
[907] | 425 | |
---|
[929] | 426 | do j=1,jjmp1-1 |
---|
| 427 | print*,'io_lat(j)=',io_lat(j) |
---|
[932] | 428 | if (io_lat(j).ge.latmin_reg(iff)) jmax_ins=j+1 |
---|
[929] | 429 | if (io_lat(j).ge.latmax_reg(iff)) jmin_ins=j |
---|
| 430 | enddo |
---|
[907] | 431 | |
---|
| 432 | print*,'On stoke le fichier hist sur, ', & |
---|
[929] | 433 | imin_ins,imax_ins,jmin_ins,jmax_ins |
---|
[907] | 434 | print*,'On stoke le fichier instantanne sur, ', & |
---|
[929] | 435 | io_lon(imin_ins),io_lon(imax_ins), & |
---|
| 436 | io_lat(jmin_ins),io_lat(jmax_ins) |
---|
[907] | 437 | |
---|
[929] | 438 | CALL histbeg(name_files(iff),iim,io_lon,jjmp1,io_lat, & |
---|
| 439 | imin_ins,imax_ins-imin_ins+1, & |
---|
| 440 | jmin_ins,jmax_ins-jmin_ins+1, & |
---|
[1065] | 441 | itau_phy,zjulian,dtime,nhorim(iff),nid_files(iff)) |
---|
[907] | 442 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
| 443 | else |
---|
[1065] | 444 | CALL histbeg_phy(name_files(iff),itau_phy,zjulian,dtime,nhorim(iff),nid_files(iff)) |
---|
[907] | 445 | endif |
---|
| 446 | |
---|
[1065] | 447 | CALL histvert(nid_files(iff), "presnivs", "Vertical levels", "mb", & |
---|
| 448 | levmax(iff) - levmin(iff) + 1, & |
---|
| 449 | presnivs(levmin(iff):levmax(iff))/100., nvertm(iff)) |
---|
[907] | 450 | |
---|
| 451 | !!!!!!!!!!!!! Traitement des champs 3D pour histhf !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
| 452 | !!!!!!!!!!!!!!! A Revoir plus tard !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
| 453 | ! IF (iff.eq.3.and.lev_files(iff).ge.4) THEN |
---|
| 454 | ! CALL histbeg_phy("histhf3d",itau_phy, & |
---|
| 455 | ! & zjulian, dtime, & |
---|
[929] | 456 | ! & nhorim, nid_hf3d) |
---|
[907] | 457 | |
---|
| 458 | ! CALL histvert(nid_hf3d,"presnivs", & |
---|
| 459 | ! & "Vertical levels","mb", & |
---|
[929] | 460 | ! & klev, presnivs/100., nvertm) |
---|
[907] | 461 | ! ENDIF |
---|
| 462 | |
---|
| 463 | !!! Champs 1D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
[929] | 464 | CALL histdef2d(iff,flag_phis,"phis","Surface geop.height","m2/s2") |
---|
[1036] | 465 | type_ecri(1) = 'once' |
---|
| 466 | type_ecri(2) = 'once' |
---|
| 467 | type_ecri(3) = 'once' |
---|
| 468 | type_ecri(4) = 'once' |
---|
[929] | 469 | CALL histdef2d(iff,flag_aire,"aire","Grid area","-") |
---|
| 470 | CALL histdef2d(iff,flag_contfracATM,"contfracATM","% sfce ter+lic","-") |
---|
[1036] | 471 | type_ecri(1) = 'ave(X)' |
---|
| 472 | type_ecri(2) = 'ave(X)' |
---|
| 473 | type_ecri(3) = 'ave(X)' |
---|
| 474 | type_ecri(4) = 'inst(X)' |
---|
| 475 | |
---|
| 476 | !!! Champs 2D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|
[929] | 477 | CALL histdef2d(iff,flag_contfracOR,"contfracOR","% sfce terre OR","-" ) |
---|
| 478 | CALL histdef2d(iff,flag_aireTER,"aireTER","Grid area CONT","-" ) |
---|
| 479 | CALL histdef2d(iff,flag_flat,"flat","Latent heat flux","W/m2") |
---|
| 480 | CALL histdef2d(iff,flag_slp,"slp","Sea Level Pressure", "Pa" ) |
---|
| 481 | CALL histdef2d(iff,flag_tsol,"tsol","Surface Temperature", "K") |
---|
| 482 | CALL histdef2d( iff,flag_t2m,"t2m","Temperature 2m", "K" ) |
---|
| 483 | CALL histdef2d(iff,flag_t2m_min,"t2m_min","Temp 2m min", "K" ) |
---|
| 484 | CALL histdef2d(iff,flag_t2m_max,"t2m_max", "Temp 2m max", "K" ) |
---|
| 485 | CALL histdef2d(iff,flag_wind10m,"wind10m","10-m wind speed","m/s") |
---|
| 486 | CALL histdef2d(iff,flag_wind10max,"wind10max","10m wind speed max","m/s") |
---|
| 487 | CALL histdef2d(iff,flag_sicf,"sicf","Sea-ice fraction", "-" ) |
---|
| 488 | CALL histdef2d(iff,flag_q2m,"q2m","Specific humidity 2m", "kg/kg") |
---|
| 489 | CALL histdef2d(iff,flag_u10m,"u10m","Vent zonal 10m", "m/s" ) |
---|
| 490 | CALL histdef2d(iff,flag_v10m,"v10m","Vent meridien 10m", "m/s") |
---|
| 491 | CALL histdef2d(iff,flag_psol,"psol","Surface Pressure","Pa" ) |
---|
| 492 | CALL histdef2d(iff,flag_qsurf,"qsurf","Surface Air humidity", "kg/kg") |
---|
[907] | 493 | |
---|
[929] | 494 | if (.not. ok_veget) then |
---|
| 495 | CALL histdef2d(iff,flag_qsol,"qsol","Soil watter content", "mm" ) |
---|
| 496 | endif |
---|
[907] | 497 | |
---|
[929] | 498 | CALL histdef2d(iff,flag_ndayrain,"ndayrain","Number of dayrain(liq+sol)","-") |
---|
| 499 | CALL histdef2d(iff,flag_precip,"precip","Precip Totale liq+sol","kg/(s*m2)" ) |
---|
| 500 | CALL histdef2d(iff,flag_plul,"plul","Large-scale Precip.","kg/(s*m2)") |
---|
| 501 | CALL histdef2d(iff,flag_pluc,"pluc","Convective Precip.","kg/(s*m2)") |
---|
| 502 | CALL histdef2d(iff,flag_snow,"snow","Snow fall","kg/(s*m2)" ) |
---|
| 503 | CALL histdef2d(iff,flag_evap,"evap","Evaporat", "kg/(s*m2)" ) |
---|
| 504 | CALL histdef2d(iff,flag_tops,"tops","Solar rad. at TOA","W/m2") |
---|
| 505 | CALL histdef2d(iff,flag_tops0,"tops0","CS Solar rad. at TOA", "W/m2") |
---|
| 506 | CALL histdef2d(iff,flag_topl,"topl","IR rad. at TOA", "W/m2" ) |
---|
| 507 | CALL histdef2d(iff,flag_topl0,"topl0", "IR rad. at TOA","W/m2") |
---|
| 508 | CALL histdef2d(iff,flag_SWupTOA,"SWupTOA","SWup at TOA","W/m2") |
---|
| 509 | CALL histdef2d(iff,flag_SWupTOAclr,"SWupTOAclr","SWup clear sky at TOA","W/m2") |
---|
| 510 | CALL histdef2d(iff,flag_SWdnTOA, "SWdnTOA","SWdn at TOA","W/m2" ) |
---|
| 511 | CALL histdef2d(iff,flag_SWdnTOAclr,"SWdnTOAclr","SWdn clear sky at TOA","W/m2") |
---|
| 512 | CALL histdef2d(iff,flag_SWup200,"SWup200","SWup at 200mb","W/m2" ) |
---|
| 513 | CALL histdef2d(iff,flag_SWup200clr,"SWup200clr","SWup clear sky at 200mb","W/m2") |
---|
| 514 | CALL histdef2d(iff,flag_SWdn200,"SWdn200","SWdn at 200mb","W/m2" ) |
---|
| 515 | CALL histdef2d(iff,flag_SWdn200clr,"SWdn200clr","SWdn clear sky at 200mb","W/m2") |
---|
| 516 | CALL histdef2d(iff,flag_LWup200,"LWup200","LWup at 200mb","W/m2") |
---|
| 517 | CALL histdef2d(iff,flag_LWup200clr, "LWup200clr","LWup clear sky at 200mb","W/m2") |
---|
| 518 | CALL histdef2d(iff,flag_LWdn200,"LWdn200","LWdn at 200mb","W/m2") |
---|
| 519 | CALL histdef2d(iff,flag_LWdn200clr, "LWdn200clr","LWdn clear sky at 200mb","W/m2") |
---|
| 520 | CALL histdef2d(iff,flag_sols,"sols","Solar rad. at surf.","W/m2") |
---|
| 521 | CALL histdef2d(iff,flag_sols0,"sols0","Solar rad. at surf.","W/m2") |
---|
| 522 | CALL histdef2d(iff,flag_soll,"soll","IR rad. at surface","W/m2") |
---|
| 523 | CALL histdef2d(iff,flag_radsol,"radsol","Rayonnement au sol","W/m2") |
---|
| 524 | CALL histdef2d(iff,flag_soll0,"soll0","IR rad. at surface","W/m2") |
---|
| 525 | CALL histdef2d(iff,flag_SWupSFC,"SWupSFC","SWup at surface","W/m2") |
---|
| 526 | CALL histdef2d(iff,flag_SWupSFCclr,"SWupSFCclr","SWup clear sky at surface","W/m2") |
---|
| 527 | CALL histdef2d(iff,flag_SWdnSFC,"SWdnSFC","SWdn at surface","W/m2") |
---|
| 528 | CALL histdef2d(iff,flag_SWdnSFCclr,"SWdnSFCclr","SWdn clear sky at surface","W/m2") |
---|
| 529 | CALL histdef2d(iff,flag_LWupSFC,"LWupSFC","Upwd. IR rad. at surface","W/m2") |
---|
| 530 | CALL histdef2d(iff,flag_LWdnSFC,"LWdnSFC","Down. IR rad. at surface","W/m2") |
---|
| 531 | CALL histdef2d(iff,flag_LWupSFCclr,"LWupSFCclr","CS Upwd. IR rad. at surface","W/m2") |
---|
| 532 | CALL histdef2d(iff,flag_LWdnSFCclr,"LWdnSFCclr","Down. CS IR rad. at surface","W/m2") |
---|
| 533 | CALL histdef2d(iff,flag_bils,"bils","Surf. total heat flux","W/m2") |
---|
| 534 | CALL histdef2d(iff,flag_sens,"sens","Sensible heat flux","W/m2") |
---|
| 535 | CALL histdef2d(iff,flag_fder,"fder","Heat flux derivation","W/m2") |
---|
| 536 | CALL histdef2d(iff,flag_ffonte,"ffonte","Thermal flux for snow melting","W/m2") |
---|
| 537 | CALL histdef2d(iff,flag_fqcalving,"fqcalving","Ice Calving","kg/m2/s") |
---|
| 538 | CALL histdef2d(iff,flag_fqfonte,"fqfonte","Land ice melt","kg/m2/s") |
---|
[907] | 539 | |
---|
[929] | 540 | DO nsrf = 1, nbsrf |
---|
| 541 | CALL histdef2d(iff,flag_pourc_sol,"pourc_"//clnsurf(nsrf),"% "//clnsurf(nsrf),"%") |
---|
| 542 | CALL histdef2d(iff,flag_fract_sol,"fract_"//clnsurf(nsrf),"Fraction "//clnsurf(nsrf),"1") |
---|
| 543 | CALL histdef2d(iff,flag_taux_sol,"taux_"//clnsurf(nsrf),"Zonal wind stress"//clnsurf(nsrf),"Pa") |
---|
| 544 | CALL histdef2d(iff,flag_tauy_sol,"tauy_"//clnsurf(nsrf),"Meridional wind stress "//clnsurf(nsrf),"Pa") |
---|
| 545 | CALL histdef2d(iff,flag_tsol_sol,"tsol_"//clnsurf(nsrf),"Temperature "//clnsurf(nsrf),"K") |
---|
| 546 | CALL histdef2d(iff,flag_u10m_sol,"u10m_"//clnsurf(nsrf),"Vent Zonal 10m "//clnsurf(nsrf),"m/s") |
---|
| 547 | CALL histdef2d(iff,flag_v10m_sol,"v10m_"//clnsurf(nsrf),"Vent meredien 10m "//clnsurf(nsrf),"m/s") |
---|
| 548 | CALL histdef2d(iff,flag_t2m_sol,"t2m_"//clnsurf(nsrf),"Temp 2m "//clnsurf(nsrf),"K") |
---|
| 549 | CALL histdef2d(iff,flag_sens_sol,"sens_"//clnsurf(nsrf),"Sensible heat flux "//clnsurf(nsrf),"W/m2") |
---|
| 550 | CALL histdef2d(iff,flag_lat_sol,"lat_"//clnsurf(nsrf),"Latent heat flux "//clnsurf(nsrf),"W/m2") |
---|
| 551 | CALL histdef2d(iff,flag_flw_sol,"flw_"//clnsurf(nsrf),"LW "//clnsurf(nsrf),"W/m2") |
---|
| 552 | CALL histdef2d(iff,flag_fsw_sol,"fsw_"//clnsurf(nsrf),"SW "//clnsurf(nsrf),"W/m2") |
---|
| 553 | CALL histdef2d(iff,flag_wbils_sol,"wbils_"//clnsurf(nsrf),"Bilan sol "//clnsurf(nsrf),"W/m2" ) |
---|
| 554 | CALL histdef2d(iff,flag_wbilo_sol,"wbilo_"//clnsurf(nsrf),"Bilan eau "//clnsurf(nsrf),"kg/(m2*s)") |
---|
| 555 | if (iflag_pbl>1 .and. lev_files(iff).gt.10 ) then |
---|
| 556 | CALL histdef2d(iff,flag_tke_sol,"tke_"//clnsurf(nsrf),"Max Turb. Kinetic Energy "//clnsurf(nsrf),"-") |
---|
| 557 | CALL histdef2d(iff,flag_tke_max_sol,"tke_max_"//clnsurf(nsrf),"Max Turb. Kinetic Energy "//clnsurf(nsrf),"-") |
---|
| 558 | endif |
---|
| 559 | CALL histdef2d(iff,flag_albe_sol, "albe_"//clnsurf(nsrf),"Albedo surf. "//clnsurf(nsrf),"-") |
---|
| 560 | CALL histdef2d(iff,flag_rugs_sol,"rugs_"//clnsurf(nsrf),"Latent heat flux "//clnsurf(nsrf),"W/m2") |
---|
| 561 | CALL histdef2d(iff,flag_ages_sol,"ages_"//clnsurf(nsrf),"Snow age","day") |
---|
| 562 | END DO |
---|
[907] | 563 | |
---|
[929] | 564 | CALL histdef2d(iff,flag_albs,"albs","Surface albedo","-") |
---|
| 565 | CALL histdef2d(iff,flag_albslw,"albslw","Surface albedo LW","-") |
---|
| 566 | CALL histdef2d(iff,flag_cdrm,"cdrm","Momentum drag coef.", "-") |
---|
| 567 | CALL histdef2d(iff,flag_cdrh,"cdrh","Heat drag coef.", "-" ) |
---|
| 568 | CALL histdef2d(iff,flag_cldl,"cldl","Low-level cloudiness", "-") |
---|
| 569 | CALL histdef2d(iff,flag_cldm,"cldm","Mid-level cloudiness", "-") |
---|
| 570 | CALL histdef2d(iff,flag_cldh,"cldh","High-level cloudiness", "-") |
---|
| 571 | CALL histdef2d(iff,flag_cldt,"cldt","Total cloudiness","%") |
---|
| 572 | CALL histdef2d(iff,flag_cldq,"cldq","Cloud liquid water path","kg/m2") |
---|
| 573 | CALL histdef2d(iff,flag_lwp,"lwp","Cloud water path","kg/m2") |
---|
| 574 | CALL histdef2d(iff,flag_iwp,"iwp","Cloud ice water path","kg/m2" ) |
---|
| 575 | CALL histdef2d(iff,flag_ue,"ue","Zonal energy transport","-") |
---|
| 576 | CALL histdef2d(iff,flag_ve,"ve","Merid energy transport", "-") |
---|
| 577 | CALL histdef2d(iff,flag_uq,"uq","Zonal humidity transport", "-") |
---|
| 578 | CALL histdef2d(iff,flag_vq,"vq","Merid humidity transport", "-") |
---|
[907] | 579 | |
---|
[929] | 580 | IF(iflag_con.GE.3) THEN ! sb |
---|
| 581 | CALL histdef2d(iff,flag_cape,"cape","Conv avlbl pot ener","J/kg") |
---|
| 582 | CALL histdef2d(iff,flag_pbase,"pbase","Cld base pressure", "mb") |
---|
| 583 | CALL histdef2d(iff,flag_ptop,"ptop","Cld top pressure", "mb") |
---|
| 584 | CALL histdef2d(iff,flag_fbase,"fbase","Cld base mass flux","kg/m2/s") |
---|
| 585 | CALL histdef2d(iff,flag_prw,"prw","Precipitable water","kg/m2") |
---|
| 586 | ENDIF !iflag_con .GE. 3 |
---|
[907] | 587 | |
---|
[929] | 588 | CALL histdef2d(iff,flag_s_pblh,"s_pblh","Boundary Layer Height","m") |
---|
| 589 | CALL histdef2d(iff,flag_s_pblt,"s_pblt","t at Boundary Layer Height","K") |
---|
| 590 | CALL histdef2d(iff,flag_s_lcl,"s_lcl","Condensation level","m") |
---|
| 591 | CALL histdef2d(iff,flag_s_capCL,"s_capCL","Conv avlbl pot enerfor ABL", "J/m2" ) |
---|
| 592 | CALL histdef2d(iff,flag_s_oliqCL,"s_oliqCL","Liq Water in BL","kg/m2") |
---|
| 593 | CALL histdef2d(iff,flag_s_cteiCL,"s_cteiCL","Instability criteria(ABL)","K") |
---|
| 594 | CALL histdef2d(iff,flag_s_therm,"s_therm","Exces du thermique", "K") |
---|
| 595 | CALL histdef2d(iff,flag_s_trmb1,"s_trmb1","deep_cape(HBTM2)","J/m2") |
---|
| 596 | CALL histdef2d(iff,flag_s_trmb2,"s_trmb2","inhibition (HBTM2)","J/m2") |
---|
| 597 | CALL histdef2d(iff,flag_s_trmb3,"s_trmb3","Point Omega (HBTM2)","m") |
---|
[907] | 598 | |
---|
| 599 | ! Champs interpolles sur des niveaux de pression |
---|
| 600 | ! iif=1 on ecrit u v w phi sur 850 700 500 200 au niv 1 |
---|
| 601 | ! iif=2 on ecrit w et ph 500 seulement au niv 1 |
---|
| 602 | ! et u v sur 850 700 500 200 |
---|
| 603 | ! iif=3 on ecrit ph a 500 seulement au niv 1 |
---|
| 604 | ! on ecrit u v t q a 850 700 500 200 au niv 3 |
---|
| 605 | |
---|
[1055] | 606 | zstophym(iff) = ecrit_files(iff) |
---|
| 607 | type_ecri(1) = 'inst(X)' |
---|
| 608 | type_ecri(2) = 'inst(X)' |
---|
| 609 | type_ecri(3) = 'inst(X)' |
---|
| 610 | type_ecri(4) = 'inst(X)' |
---|
[929] | 611 | DO k=1, nlevSTD |
---|
| 612 | IF(k.GE.2.AND.k.LE.12) bb2=clevSTD(k) |
---|
| 613 | IF(k.GE.13.AND.k.LE.17) bb3=clevSTD(k) |
---|
| 614 | IF(bb2.EQ."850".OR.bb2.EQ."700".OR.bb2.EQ."500".OR.bb2.EQ."200")THEN |
---|
| 615 | CALL histdef2d(iff,flag_ulevsSTD,"u"//bb2,"Zonal wind "//bb2//"mb","m/s") |
---|
| 616 | CALL histdef2d(iff,flag_vlevsSTD,"v"//bb2,"Meridional wind "//bb2//"mb","m/s") |
---|
| 617 | CALL histdef2d(iff,flag_wlevsSTD,"w"//bb2,"Vertical wind "//bb2//"mb","m/s") |
---|
| 618 | CALL histdef2d(iff,flag_philevsSTD,"phi"//bb2,"Geopotential "//bb2//"mb","m") |
---|
| 619 | CALL histdef2d(iff,flag_qlevsSTD,"q"//bb2,"Specific humidity "//bb2//"mb","kg/kg" ) |
---|
| 620 | CALL histdef2d(iff,flag_tlevsSTD,"t"//bb2,"Temperature "//bb2//"mb","K") |
---|
| 621 | ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR. |
---|
[907] | 622 | ENDDO |
---|
[1055] | 623 | zstophym(iff) = dtime |
---|
| 624 | type_ecri(1) = 'ave(X)' |
---|
| 625 | type_ecri(2) = 'ave(X)' |
---|
| 626 | type_ecri(3) = 'ave(X)' |
---|
| 627 | type_ecri(4) = 'inst(X)' |
---|
[907] | 628 | |
---|
[929] | 629 | CALL histdef2d(iff,flag_t_oce_sic,"t_oce_sic","Temp mixte oce-sic","K") |
---|
[907] | 630 | |
---|
[996] | 631 | IF (ocean=='slab') & |
---|
| 632 | CALL histdef2d(iff,flag_slab_bils, "slab_wbils_oce","Bilan au sol sur ocean slab", "W/m2") |
---|
[907] | 633 | |
---|
[1043] | 634 | IF (iflag_con.GE.3) THEN |
---|
[945] | 635 | CALL histdef2d(iff,flag_ale_bl,"ale_bl","ALE BL","m2/s2") |
---|
| 636 | CALL histdef2d(iff,flag_alp_bl,"alp_bl","ALP BL","m2/s2") |
---|
| 637 | CALL histdef2d(iff,flag_ale_wk,"ale_wk","ALE WK","m2/s2") |
---|
| 638 | CALL histdef2d(iff,flag_alp_wk,"alp_wk","ALP WK","m2/s2") |
---|
| 639 | |
---|
[973] | 640 | CALL histdef2d(iff,flag_ale,"ale","ALE","m2/s2") |
---|
| 641 | CALL histdef2d(iff,flag_alp,"alp","ALP","W/m2") |
---|
| 642 | CALL histdef2d(iff,flag_cin,"cin","Convective INhibition","m2/s2") |
---|
| 643 | CALL histdef2d(iff,flag_wape,"WAPE","WAPE","m2/s2") |
---|
[1043] | 644 | ENDIF !(iflag_con.GE.3) |
---|
[973] | 645 | |
---|
[929] | 646 | CALL histdef2d(iff,flag_weakinv, "weakinv","Weak inversion", "-") |
---|
| 647 | CALL histdef2d(iff,flag_dthmin,"dthmin","dTheta mini", "K/m") |
---|
| 648 | CALL histdef2d(iff,flag_rh2m,"rh2m","Relative humidity at 2m", "%" ) |
---|
| 649 | CALL histdef2d(iff,flag_qsat2m,"qsat2m","Saturant humidity at 2m", "%") |
---|
| 650 | CALL histdef2d(iff,flag_tpot,"tpot","Surface air potential temperature","K") |
---|
| 651 | CALL histdef2d(iff,flag_tpote,"tpote","Surface air equivalent potential temperature","K") |
---|
| 652 | CALL histdef2d(iff,flag_SWnetOR,"SWnetOR","Sfce net SW radiation OR", "W/m2") |
---|
| 653 | CALL histdef2d(iff,flag_SWdownOR,"SWdownOR","Sfce incident SW radiation OR","W/m2") |
---|
| 654 | CALL histdef2d(iff,flag_LWdownOR,"LWdownOR","Sfce incident LW radiation OR","W/m2") |
---|
| 655 | CALL histdef2d(iff,flag_snowl,"snowl","Solid Large-scale Precip.","kg/(m2*s)") |
---|
[1043] | 656 | IF (iflag_con.GE.3) THEN |
---|
[929] | 657 | CALL histdef2d(iff,flag_cape_max,"cape_max","CAPE max.", "J/kg") |
---|
[1043] | 658 | ENDIF !(iflag_con.GE.3) |
---|
[929] | 659 | CALL histdef2d(iff,flag_solldown,"solldown","Down. IR rad. at surface","W/m2") |
---|
| 660 | CALL histdef2d(iff,flag_dtsvdfo,"dtsvdfo","Boundary-layer dTs(o)","K/s") |
---|
| 661 | CALL histdef2d(iff,flag_dtsvdft,"dtsvdft","Boundary-layer dTs(t)","K/s") |
---|
| 662 | CALL histdef2d(iff,flag_dtsvdfg,"dtsvdfg","Boundary-layer dTs(g)","K/s") |
---|
| 663 | CALL histdef2d(iff,flag_dtsvdfi,"dtsvdfi","Boundary-layer dTs(g)","K/s") |
---|
| 664 | CALL histdef2d(iff,flag_rugs,"rugs","rugosity", "-" ) |
---|
[907] | 665 | |
---|
| 666 | ! Champs 3D: |
---|
[929] | 667 | CALL histdef3d(iff,flag_lwcon,"lwcon","Cloud liquid water content","kg/kg") |
---|
| 668 | CALL histdef3d(iff,flag_iwcon,"iwcon","Cloud ice water content","kg/kg") |
---|
| 669 | CALL histdef3d(iff,flag_temp,"temp","Air temperature","K" ) |
---|
[945] | 670 | CALL histdef3d(iff,flag_theta,"theta","Potential air temperature","K" ) |
---|
[929] | 671 | CALL histdef3d(iff,flag_ovap,"ovap","Specific humidity","kg/kg" ) |
---|
| 672 | CALL histdef3d(iff,flag_geop,"geop","Geopotential height","m2/s2") |
---|
| 673 | CALL histdef3d(iff,flag_vitu,"vitu","Zonal wind", "m/s" ) |
---|
| 674 | CALL histdef3d(iff,flag_vitv,"vitv","Meridional wind","m/s" ) |
---|
[1081] | 675 | CALL histdef3d(iff,flag_vitw,"vitw","Vertical wind","Pa/s" ) |
---|
[929] | 676 | CALL histdef3d(iff,flag_pres,"pres","Air pressure", "Pa" ) |
---|
| 677 | CALL histdef3d(iff,flag_rneb,"rneb","Cloud fraction","-") |
---|
| 678 | CALL histdef3d(iff,flag_rnebcon,"rnebcon","Convective Cloud Fraction","-") |
---|
| 679 | CALL histdef3d(iff,flag_rhum,"rhum","Relative humidity","-") |
---|
| 680 | CALL histdef3d(iff,flag_ozone,"ozone","Ozone concentration", "ppmv") |
---|
[1043] | 681 | IF(iflag_con.GE.3) THEN |
---|
| 682 | CALL histdef3d(iff,flag_upwd,"upwd","saturated updraft", "kg/m2/s") |
---|
| 683 | ENDIF !iflag_con.GE.3 |
---|
[929] | 684 | CALL histdef3d(iff,flag_dtphy,"dtphy","Physics dT","K/s") |
---|
| 685 | CALL histdef3d(iff,flag_dqphy,"dqphy","Physics dQ", "(kg/kg)/s") |
---|
| 686 | CALL histdef3d(iff,flag_cldtau,"cldtau","Cloud optical thickness","1") |
---|
| 687 | CALL histdef3d(iff,flag_cldemi,"cldemi","Cloud optical emissivity","1") |
---|
[973] | 688 | !IM: bug ?? dimensionnement variables (klon,klev+1) pmflxr, pmflxs, prfl, psfl |
---|
| 689 | ! CALL histdef3d(iff,flag_pr_con_l,"pmflxr","Convective precipitation lic"," ") |
---|
| 690 | ! CALL histdef3d(iff,flag_pr_con_i,"pmflxs","Convective precipitation ice"," ") |
---|
| 691 | ! CALL histdef3d(iff,flag_pr_lsc_l,"prfl","Large scale precipitation lic"," ") |
---|
| 692 | ! CALL histdef3d(iff,flag_pr_lsc_i,"psfl","Large scale precipitation ice"," ") |
---|
[907] | 693 | |
---|
[929] | 694 | !FH Sorties pour la couche limite |
---|
| 695 | if (iflag_pbl>1) then |
---|
| 696 | CALL histdef3d(iff,flag_tke,"tke","TKE","m2/s2") |
---|
| 697 | CALL histdef3d(iff,flag_tke_max,"tke_max","TKE max","m2/s2") |
---|
| 698 | endif |
---|
[907] | 699 | |
---|
[929] | 700 | CALL histdef3d(iff,flag_kz,"kz","Kz melange","m2/s") |
---|
| 701 | CALL histdef3d(iff,flag_kz_max,"kz_max","Kz melange max","m2/s" ) |
---|
| 702 | CALL histdef3d(iff,flag_clwcon,"clwcon","Convective Cloud Liquid water content", "kg/kg") |
---|
[1043] | 703 | IF(iflag_con.GE.3) THEN |
---|
[929] | 704 | CALL histdef3d(iff,flag_Ma,"Ma","undilute adiab updraft","kg/m2/s") |
---|
| 705 | CALL histdef3d(iff,flag_dnwd,"dnwd","saturated downdraft","kg/m2/s") |
---|
| 706 | CALL histdef3d(iff,flag_dnwd0,"dnwd0","unsat. downdraft", "kg/m2/s") |
---|
[1043] | 707 | ENDIF !(iflag_con.GE.3) |
---|
[929] | 708 | CALL histdef3d(iff,flag_dtdyn,"dtdyn","Dynamics dT","K/s") |
---|
| 709 | CALL histdef3d(iff,flag_dqdyn,"dqdyn","Dynamics dQ", "(kg/kg)/s") |
---|
[1054] | 710 | CALL histdef3d(iff,flag_dudyn,"dudyn","Dynamics dU","m/s2") |
---|
| 711 | CALL histdef3d(iff,flag_dvdyn,"dvdyn","Dynamics dV","m/s2") |
---|
[929] | 712 | CALL histdef3d(iff,flag_dtcon,"dtcon","Convection dT","K/s") |
---|
| 713 | CALL histdef3d(iff,flag_ducon,"ducon","Convection du","m/s2") |
---|
| 714 | CALL histdef3d(iff,flag_dqcon,"dqcon","Convection dQ", "(kg/kg)/s") |
---|
[1043] | 715 | IF(iflag_con.GE.3) THEN |
---|
[964] | 716 | IF (iflag_wake == 1) THEN |
---|
[1062] | 717 | CALL histdef2d(iff,flag_wake_h,"wake_h","wake_h", "-") |
---|
| 718 | CALL histdef2d(iff,flag_wake_s,"wake_s","wake_s", "-") |
---|
[964] | 719 | CALL histdef3d(iff,flag_dtwak,"dtwak","Wake dT","K/s") |
---|
| 720 | CALL histdef3d(iff,flag_dqwak,"dqwak","Wake dQ","(kg/kg)/s") |
---|
[1062] | 721 | CALL histdef3d(iff,flag_wake_deltat,"wake_deltat","wake_deltat", " ") |
---|
| 722 | CALL histdef3d(iff,flag_wake_deltaq,"wake_deltaq","wake_deltaq", " ") |
---|
| 723 | CALL histdef3d(iff,flag_wake_omg,"wake_omg","wake_omg", " ") |
---|
[1043] | 724 | ENDIF |
---|
[1062] | 725 | CALL histdef3d(iff,flag_Vprecip,"Vprecip","precipitation vertical profile","-") |
---|
| 726 | CALL histdef3d(iff,flag_ftd,"ftd","tend temp due aux descentes precip","-") |
---|
| 727 | CALL histdef3d(iff,flag_fqd,"fqd","tend vap eau due aux descentes precip","-") |
---|
[1043] | 728 | ENDIF !(iflag_con.GE.3) |
---|
[1062] | 729 | |
---|
[929] | 730 | CALL histdef3d(iff,flag_dtlsc,"dtlsc","Condensation dT", "K/s") |
---|
| 731 | CALL histdef3d(iff,flag_dtlschr,"dtlschr","Large-scale condensational heating rate","K/s") |
---|
| 732 | CALL histdef3d(iff,flag_dqlsc,"dqlsc","Condensation dQ","(kg/kg)/s") |
---|
| 733 | CALL histdef3d(iff,flag_dtvdf,"dtvdf","Boundary-layer dT", "K/s") |
---|
| 734 | CALL histdef3d(iff,flag_dqvdf,"dqvdf","Boundary-layer dQ","(kg/kg)/s") |
---|
| 735 | CALL histdef3d(iff,flag_dteva,"dteva","Reevaporation dT", "K/s") |
---|
| 736 | CALL histdef3d(iff,flag_dqeva,"dqeva","Reevaporation dQ","(kg/kg)/s") |
---|
| 737 | CALL histdef3d(iff,flag_ptconv,"ptconv","POINTS CONVECTIFS"," ") |
---|
| 738 | CALL histdef3d(iff,flag_ratqs,"ratqs", "RATQS"," ") |
---|
| 739 | CALL histdef3d(iff,flag_dtthe,"dtthe","Dry adjust. dT", "K/s") |
---|
[1036] | 740 | |
---|
| 741 | if(iflag_thermals.gt.1) THEN |
---|
[945] | 742 | CALL histdef3d(iff,flag_f_th,"f_th","Thermal plume mass flux", "K/s") |
---|
| 743 | CALL histdef3d(iff,flag_e_th,"e_th","Thermal plume entrainment", "K/s") |
---|
[1028] | 744 | CALL histdef3d(iff,flag_w_th,"w_th","Thermal plume vertical velocity", "m/s") |
---|
| 745 | CALL histdef3d(iff,flag_lambda_th,"lambda_th","Thermal plume vertical velocity", "m/s") |
---|
| 746 | CALL histdef3d(iff,flag_q_th,"q_th","Thermal plume total humidity", "kg/kg") |
---|
| 747 | CALL histdef3d(iff,flag_a_th,"a_th","Thermal plume fraction", "") |
---|
[945] | 748 | CALL histdef3d(iff,flag_d_th,"d_th","Thermal plume detrainment", "K/s") |
---|
[1036] | 749 | endif !iflag_thermals.gt.1 |
---|
[1028] | 750 | CALL histdef2d(iff,flag_f0_th,"f0_th","Thermal closure mass flux", "K/s") |
---|
| 751 | CALL histdef2d(iff,flag_zmax_th,"zmax_th","Thermal plume height", "K/s") |
---|
[929] | 752 | CALL histdef3d(iff,flag_dqthe,"dqthe","Dry adjust. dQ","(kg/kg)/s") |
---|
| 753 | CALL histdef3d(iff,flag_dtajs,"dtajs","Dry adjust. dT", "K/s") |
---|
| 754 | CALL histdef3d(iff,flag_dqajs,"dqajs","Dry adjust. dQ","(kg/kg)/s") |
---|
| 755 | CALL histdef3d(iff,flag_dtswr,"dtswr","SW radiation dT","K/s") |
---|
| 756 | CALL histdef3d(iff,flag_dtsw0,"dtsw0","CS SW radiation dT","K/s") |
---|
| 757 | CALL histdef3d(iff,flag_dtlwr,"dtlwr","LW radiation dT","K/s") |
---|
| 758 | CALL histdef3d(iff,flag_dtlw0,"dtlw0", "CS LW radiation dT","K/s") |
---|
| 759 | CALL histdef3d(iff,flag_dtec,"dtec","Cinetic dissip dT","K/s") |
---|
| 760 | CALL histdef3d(iff,flag_duvdf,"duvdf","Boundary-layer dU","m/s2") |
---|
| 761 | CALL histdef3d(iff,flag_dvvdf,"dvvdf","Boundary-layer dV", "m/s2") |
---|
[907] | 762 | |
---|
[929] | 763 | IF (ok_orodr) THEN |
---|
| 764 | CALL histdef3d(iff,flag_duoro,"duoro","Orography dU","m/s2") |
---|
| 765 | CALL histdef3d(iff,flag_dvoro,"dvoro","Orography dV", "m/s2") |
---|
| 766 | ENDIF |
---|
[907] | 767 | |
---|
[929] | 768 | IF (ok_orolf) THEN |
---|
| 769 | CALL histdef3d(iff,flag_dulif,"dulif","Orography dU","m/s2") |
---|
| 770 | CALL histdef3d(iff,flag_dvlif,"dvlif","Orography dV", "m/s2") |
---|
| 771 | ENDIF |
---|
[907] | 772 | |
---|
[929] | 773 | if (nqmax>=3) THEN |
---|
| 774 | DO iq=3,nqmax |
---|
| 775 | iiq=niadv(iq) |
---|
| 776 | CALL histdef3d ( iff, flag_trac, tnom(iq),ttext(iiq), "-" ) |
---|
| 777 | ENDDO |
---|
[907] | 778 | endif |
---|
| 779 | |
---|
[929] | 780 | CALL histend(nid_files(iff)) |
---|
[907] | 781 | |
---|
[929] | 782 | ndex2d = 0 |
---|
| 783 | ndex3d = 0 |
---|
[907] | 784 | |
---|
[929] | 785 | ENDIF ! clef_files |
---|
[907] | 786 | |
---|
[929] | 787 | ENDDO ! |
---|
| 788 | end subroutine phys_output_open |
---|
[907] | 789 | |
---|
[929] | 790 | SUBROUTINE histdef2d (iff,flag_var,nomvar,titrevar,unitvar) |
---|
| 791 | |
---|
| 792 | use ioipsl |
---|
| 793 | USE dimphy |
---|
| 794 | USE mod_phys_lmdz_para |
---|
[907] | 795 | |
---|
[929] | 796 | IMPLICIT NONE |
---|
| 797 | |
---|
| 798 | include "dimensions.h" |
---|
| 799 | include "temps.h" |
---|
| 800 | include "indicesol.h" |
---|
| 801 | include "advtrac.h" |
---|
| 802 | include "clesphys.h" |
---|
[907] | 803 | |
---|
[929] | 804 | integer :: iff |
---|
| 805 | integer, dimension(nfiles) :: flag_var |
---|
| 806 | character(len=*) :: nomvar |
---|
| 807 | character(len=*) :: titrevar |
---|
| 808 | character(len=*) :: unitvar |
---|
| 809 | |
---|
| 810 | if ( flag_var(iff)<=lev_files(iff) ) then |
---|
| 811 | call histdef (nid_files(iff),nomvar,titrevar,unitvar, & |
---|
| 812 | iim,jj_nb,nhorim(iff), 1,1,1, -99, 32, & |
---|
| 813 | type_ecri(iff), zstophym(iff),zoutm(iff)) |
---|
| 814 | endif |
---|
| 815 | end subroutine histdef2d |
---|
[907] | 816 | |
---|
[929] | 817 | SUBROUTINE histdef3d (iff,flag_var,nomvar,titrevar,unitvar) |
---|
[907] | 818 | |
---|
[929] | 819 | use ioipsl |
---|
| 820 | USE dimphy |
---|
| 821 | USE mod_phys_lmdz_para |
---|
[907] | 822 | |
---|
[929] | 823 | IMPLICIT NONE |
---|
[907] | 824 | |
---|
[929] | 825 | include "dimensions.h" |
---|
| 826 | include "temps.h" |
---|
| 827 | include "indicesol.h" |
---|
| 828 | include "advtrac.h" |
---|
| 829 | include "clesphys.h" |
---|
[907] | 830 | |
---|
[929] | 831 | integer :: iff |
---|
| 832 | integer, dimension(nfiles) :: flag_var |
---|
| 833 | character(len=*) :: nomvar |
---|
| 834 | character(len=*) :: titrevar |
---|
| 835 | character(len=*) :: unitvar |
---|
[907] | 836 | |
---|
[929] | 837 | if ( flag_var(iff)<=lev_files(iff) ) then |
---|
[1065] | 838 | call histdef (nid_files(iff), nomvar, titrevar, unitvar, & |
---|
| 839 | iim, jj_nb, nhorim(iff), klev, levmin(iff), & |
---|
| 840 | levmax(iff)-levmin(iff)+1, nvertm(iff), 32, type_ecri(iff), & |
---|
| 841 | zstophym(iff), zoutm(iff)) |
---|
[929] | 842 | endif |
---|
| 843 | end subroutine histdef3d |
---|
[907] | 844 | |
---|
| 845 | END MODULE phys_output_mod |
---|
| 846 | |
---|