| 1 | ! |
|---|
| 2 | ! $Id: phys_output_mod.F90 1198 2009-06-30 16:02:55Z idelkadi $ |
|---|
| 3 | ! |
|---|
| 4 | ! Abderrahmane 12 2007 |
|---|
| 5 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|---|
| 6 | !!! Ecreture des Sorties du modele dans les fichiers Netcdf : |
|---|
| 7 | ! histmth.nc : moyennes mensuelles |
|---|
| 8 | ! histday.nc : moyennes journalieres |
|---|
| 9 | ! histhf.nc : moyennes toutes les 3 heures |
|---|
| 10 | ! histins.nc : valeurs instantanees |
|---|
| 11 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|---|
| 12 | |
|---|
| 13 | MODULE phys_output_mod |
|---|
| 14 | |
|---|
| 15 | IMPLICIT NONE |
|---|
| 16 | |
|---|
| 17 | private histdef2d, histdef3d, conf_physoutputs |
|---|
| 18 | |
|---|
| 19 | |
|---|
| 20 | integer, parameter :: nfiles = 5 |
|---|
| 21 | logical, dimension(nfiles), save :: clef_files |
|---|
| 22 | integer, dimension(nfiles), save :: lev_files |
|---|
| 23 | integer, dimension(nfiles), save :: nid_files |
|---|
| 24 | !!$OMP THREADPRIVATE(clef_files, lev_files,nid_files) |
|---|
| 25 | |
|---|
| 26 | integer, dimension(nfiles), private, save :: nhorim, nvertm |
|---|
| 27 | integer, dimension(nfiles), private, save :: nvertap, nvertbp, nvertAlt |
|---|
| 28 | ! integer, dimension(nfiles), private, save :: nvertp0 |
|---|
| 29 | real, dimension(nfiles), private, save :: zoutm |
|---|
| 30 | real, private, save :: zdtime |
|---|
| 31 | CHARACTER(len=20), dimension(nfiles), private, save :: type_ecri |
|---|
| 32 | !$OMP THREADPRIVATE(nhorim, nvertm, zoutm,zdtime,type_ecri) |
|---|
| 33 | |
|---|
| 34 | ! integer, save :: nid_hf3d |
|---|
| 35 | |
|---|
| 36 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|---|
| 37 | !! Definition pour chaque variable du niveau d ecriture dans chaque fichier |
|---|
| 38 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/ histmth, histday, histhf, histins /),'!!!!!!!!!!!! |
|---|
| 39 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|---|
| 40 | |
|---|
| 41 | integer, private:: levmin(nfiles) = 1 |
|---|
| 42 | integer, private:: levmax(nfiles) |
|---|
| 43 | |
|---|
| 44 | TYPE ctrl_out |
|---|
| 45 | integer,dimension(5) :: flag |
|---|
| 46 | character(len=20) :: name |
|---|
| 47 | END TYPE ctrl_out |
|---|
| 48 | |
|---|
| 49 | !!! Comosentes de la coordonnee sigma-hybride |
|---|
| 50 | !!! Ap et Bp |
|---|
| 51 | type(ctrl_out),save :: o_Ahyb = ctrl_out((/ 1, 1, 1, 1, 1 /), 'Ap') |
|---|
| 52 | type(ctrl_out),save :: o_Bhyb = ctrl_out((/ 1, 1, 1, 1, 1 /), 'Bp') |
|---|
| 53 | type(ctrl_out),save :: o_Alt = ctrl_out((/ 1, 1, 1, 1, 1 /), 'Alt') |
|---|
| 54 | |
|---|
| 55 | !!! 1D |
|---|
| 56 | type(ctrl_out),save :: o_phis = ctrl_out((/ 1, 1, 10, 1, 1 /), 'phis') |
|---|
| 57 | type(ctrl_out),save :: o_aire = ctrl_out((/ 1, 1, 10, 1, 1 /),'aire') |
|---|
| 58 | type(ctrl_out),save :: o_contfracATM = ctrl_out((/ 10, 1, 1, 10, 10 /),'contfracATM') |
|---|
| 59 | type(ctrl_out),save :: o_contfracOR = ctrl_out((/ 10, 1, 1, 10, 10 /),'contfracOR') |
|---|
| 60 | type(ctrl_out),save :: o_aireTER = ctrl_out((/ 10, 10, 1, 10, 10 /),'aireTER') |
|---|
| 61 | |
|---|
| 62 | !!! 2D |
|---|
| 63 | type(ctrl_out),save :: o_flat = ctrl_out((/ 10, 1, 10, 10, 1 /),'flat') |
|---|
| 64 | type(ctrl_out),save :: o_slp = ctrl_out((/ 1, 1, 1, 10, 1 /),'slp') |
|---|
| 65 | type(ctrl_out),save :: o_tsol = ctrl_out((/ 1, 1, 1, 1, 1 /),'tsol') |
|---|
| 66 | type(ctrl_out),save :: o_t2m = ctrl_out((/ 1, 1, 1, 1, 1 /),'t2m') |
|---|
| 67 | type(ctrl_out),save :: o_t2m_min = ctrl_out((/ 1, 1, 10, 10, 10 /),'t2m_min') |
|---|
| 68 | type(ctrl_out),save :: o_t2m_max = ctrl_out((/ 1, 1, 10, 10, 10 /),'t2m_max') |
|---|
| 69 | type(ctrl_out),save,dimension(4) :: o_t2m_srf = (/ ctrl_out((/ 10, 4, 10, 10, 10 /),'t2m_ter'), & |
|---|
| 70 | ctrl_out((/ 10, 4, 10, 10, 10 /),'t2m_lic'), & |
|---|
| 71 | ctrl_out((/ 10, 4, 10, 10, 10 /),'t2m_oce'), & |
|---|
| 72 | ctrl_out((/ 10, 4, 10, 10, 10 /),'t2m_sic') /) |
|---|
| 73 | |
|---|
| 74 | type(ctrl_out),save :: o_wind10m = ctrl_out((/ 1, 1, 1, 10, 10 /),'wind10m') |
|---|
| 75 | type(ctrl_out),save :: o_wind10max = ctrl_out((/ 10, 1, 10, 10, 10 /),'wind10max') |
|---|
| 76 | type(ctrl_out),save :: o_sicf = ctrl_out((/ 1, 1, 10, 10, 10 /),'sicf') |
|---|
| 77 | type(ctrl_out),save :: o_q2m = ctrl_out((/ 1, 1, 1, 1, 1 /),'q2m') |
|---|
| 78 | type(ctrl_out),save :: o_u10m = ctrl_out((/ 1, 1, 1, 1, 1 /),'u10m') |
|---|
| 79 | type(ctrl_out),save :: o_v10m = ctrl_out((/ 1, 1, 1, 1, 1 /),'v10m') |
|---|
| 80 | type(ctrl_out),save :: o_psol = ctrl_out((/ 1, 1, 1, 1, 1 /),'psol') |
|---|
| 81 | type(ctrl_out),save :: o_qsurf = ctrl_out((/ 1, 10, 10, 10, 10 /),'qsurf') |
|---|
| 82 | |
|---|
| 83 | type(ctrl_out),save,dimension(4) :: o_u10m_srf = (/ ctrl_out((/ 10, 4, 10, 10, 10 /),'u10m_ter'), & |
|---|
| 84 | ctrl_out((/ 10, 4, 10, 10, 10 /),'u10m_lic'), & |
|---|
| 85 | ctrl_out((/ 10, 4, 10, 10, 10 /),'u10m_oce'), & |
|---|
| 86 | ctrl_out((/ 10, 4, 10, 10, 10 /),'u10m_sic') /) |
|---|
| 87 | |
|---|
| 88 | type(ctrl_out),save,dimension(4) :: o_v10m_srf = (/ ctrl_out((/ 10, 4, 10, 10, 10 /),'v10m_ter'), & |
|---|
| 89 | ctrl_out((/ 10, 4, 10, 10, 10 /),'v10m_lic'), & |
|---|
| 90 | ctrl_out((/ 10, 4, 10, 10, 10 /),'v10m_oce'), & |
|---|
| 91 | ctrl_out((/ 10, 4, 10, 10, 10 /),'v10m_sic') /) |
|---|
| 92 | |
|---|
| 93 | type(ctrl_out),save :: o_qsol = ctrl_out((/ 1, 10, 10, 1, 1 /),'qsol') |
|---|
| 94 | |
|---|
| 95 | type(ctrl_out),save :: o_ndayrain = ctrl_out((/ 1, 10, 10, 10, 10 /),'ndayrain') |
|---|
| 96 | type(ctrl_out),save :: o_precip = ctrl_out((/ 1, 1, 1, 1, 1 /),'precip') |
|---|
| 97 | type(ctrl_out),save :: o_plul = ctrl_out((/ 1, 1, 1, 1, 10 /),'plul') |
|---|
| 98 | |
|---|
| 99 | type(ctrl_out),save :: o_pluc = ctrl_out((/ 1, 1, 1, 1, 10 /),'pluc') |
|---|
| 100 | type(ctrl_out),save :: o_snow = ctrl_out((/ 1, 1, 10, 1, 10 /),'snow') |
|---|
| 101 | type(ctrl_out),save :: o_evap = ctrl_out((/ 1, 1, 10, 1, 10 /),'evap') |
|---|
| 102 | type(ctrl_out),save :: o_tops = ctrl_out((/ 1, 1, 10, 10, 10 /),'tops') |
|---|
| 103 | type(ctrl_out),save :: o_tops0 = ctrl_out((/ 1, 5, 10, 10, 10 /),'tops0') |
|---|
| 104 | type(ctrl_out),save :: o_topl = ctrl_out((/ 1, 1, 10, 1, 10 /),'topl') |
|---|
| 105 | type(ctrl_out),save :: o_topl0 = ctrl_out((/ 1, 5, 10, 10, 10 /),'topl0') |
|---|
| 106 | type(ctrl_out),save :: o_SWupTOA = ctrl_out((/ 1, 4, 10, 10, 10 /),'SWupTOA') |
|---|
| 107 | type(ctrl_out),save :: o_SWupTOAclr = ctrl_out((/ 1, 4, 10, 10, 10 /),'SWupTOAclr') |
|---|
| 108 | type(ctrl_out),save :: o_SWdnTOA = ctrl_out((/ 1, 4, 10, 10, 10 /),'SWdnTOA') |
|---|
| 109 | type(ctrl_out),save :: o_SWdnTOAclr = ctrl_out((/ 1, 4, 10, 10, 10 /),'SWdnTOAclr') |
|---|
| 110 | type(ctrl_out),save :: o_SWup200 = ctrl_out((/ 1, 10, 10, 10, 10 /),'SWup200') |
|---|
| 111 | type(ctrl_out),save :: o_SWup200clr = ctrl_out((/ 10, 1, 10, 10, 10 /),'SWup200clr') |
|---|
| 112 | type(ctrl_out),save :: o_SWdn200 = ctrl_out((/ 1, 10, 10, 10, 10 /),'SWdn200') |
|---|
| 113 | type(ctrl_out),save :: o_SWdn200clr = ctrl_out((/ 10, 1, 10, 10, 10 /),'SWdn200clr') |
|---|
| 114 | |
|---|
| 115 | ! arajouter |
|---|
| 116 | ! type(ctrl_out),save :: o_LWupTOA = ctrl_out((/ 1, 4, 10, 10, 10 /),'LWupTOA') |
|---|
| 117 | ! type(ctrl_out),save :: o_LWupTOAclr = ctrl_out((/ 1, 4, 10, 10, 10 /),'LWupTOAclr') |
|---|
| 118 | ! type(ctrl_out),save :: o_LWdnTOA = ctrl_out((/ 1, 4, 10, 10, 10 /),'LWdnTOA') |
|---|
| 119 | ! type(ctrl_out),save :: o_LWdnTOAclr = ctrl_out((/ 1, 4, 10, 10, 10 /),'LWdnTOAclr') |
|---|
| 120 | |
|---|
| 121 | type(ctrl_out),save :: o_LWup200 = ctrl_out((/ 1, 10, 10, 10, 10 /),'LWup200') |
|---|
| 122 | type(ctrl_out),save :: o_LWup200clr = ctrl_out((/ 1, 10, 10, 10, 10 /),'LWup200clr') |
|---|
| 123 | type(ctrl_out),save :: o_LWdn200 = ctrl_out((/ 1, 10, 10, 10, 10 /),'LWdn200') |
|---|
| 124 | type(ctrl_out),save :: o_LWdn200clr = ctrl_out((/ 1, 10, 10, 10, 10 /),'LWdn200clr') |
|---|
| 125 | type(ctrl_out),save :: o_sols = ctrl_out((/ 1, 1, 10, 1, 10 /),'sols') |
|---|
| 126 | type(ctrl_out),save :: o_sols0 = ctrl_out((/ 1, 5, 10, 10, 10 /),'sols0') |
|---|
| 127 | type(ctrl_out),save :: o_soll = ctrl_out((/ 1, 1, 10, 1, 10 /),'soll') |
|---|
| 128 | type(ctrl_out),save :: o_soll0 = ctrl_out((/ 1, 5, 10, 10, 10 /),'soll0') |
|---|
| 129 | type(ctrl_out),save :: o_radsol = ctrl_out((/ 1, 1, 10, 10, 10 /),'radsol') |
|---|
| 130 | type(ctrl_out),save :: o_SWupSFC = ctrl_out((/ 1, 4, 10, 10, 10 /),'SWupSFC') |
|---|
| 131 | type(ctrl_out),save :: o_SWupSFCclr = ctrl_out((/ 1, 4, 10, 10, 10 /),'SWupSFCclr') |
|---|
| 132 | type(ctrl_out),save :: o_SWdnSFC = ctrl_out((/ 1, 1, 10, 10, 10 /),'SWdnSFC') |
|---|
| 133 | type(ctrl_out),save :: o_SWdnSFCclr = ctrl_out((/ 1, 4, 10, 10, 10 /),'SWdnSFCclr') |
|---|
| 134 | type(ctrl_out),save :: o_LWupSFC = ctrl_out((/ 1, 4, 10, 10, 10 /),'LWupSFC') |
|---|
| 135 | type(ctrl_out),save :: o_LWupSFCclr = ctrl_out((/ 1, 4, 10, 10, 10 /),'LWupSFCclr') |
|---|
| 136 | type(ctrl_out),save :: o_LWdnSFC = ctrl_out((/ 1, 4, 10, 10, 10 /),'LWdnSFC') |
|---|
| 137 | type(ctrl_out),save :: o_LWdnSFCclr = ctrl_out((/ 1, 4, 10, 10, 10 /),'LWdnSFCclr') |
|---|
| 138 | type(ctrl_out),save :: o_bils = ctrl_out((/ 1, 2, 10, 1, 10 /),'bils') |
|---|
| 139 | type(ctrl_out),save :: o_sens = ctrl_out((/ 1, 1, 10, 1, 1 /),'sens') |
|---|
| 140 | type(ctrl_out),save :: o_fder = ctrl_out((/ 1, 2, 10, 1, 10 /),'fder') |
|---|
| 141 | type(ctrl_out),save :: o_ffonte = ctrl_out((/ 1, 10, 10, 10, 10 /),'ffonte') |
|---|
| 142 | type(ctrl_out),save :: o_fqcalving = ctrl_out((/ 1, 10, 10, 10, 10 /),'fqcalving') |
|---|
| 143 | type(ctrl_out),save :: o_fqfonte = ctrl_out((/ 1, 10, 10, 10, 10 /),'fqfonte') |
|---|
| 144 | |
|---|
| 145 | type(ctrl_out),save,dimension(4) :: o_taux_srf = (/ ctrl_out((/ 1, 4, 10, 1, 10 /),'taux_ter'), & |
|---|
| 146 | ctrl_out((/ 1, 4, 10, 1, 10 /),'taux_lic'), & |
|---|
| 147 | ctrl_out((/ 1, 4, 10, 1, 10 /),'taux_oce'), & |
|---|
| 148 | ctrl_out((/ 1, 4, 10, 1, 10 /),'taux_sic') /) |
|---|
| 149 | |
|---|
| 150 | type(ctrl_out),save,dimension(4) :: o_tauy_srf = (/ ctrl_out((/ 1, 4, 10, 1, 10 /),'tauy_ter'), & |
|---|
| 151 | ctrl_out((/ 1, 4, 10, 1, 10 /),'tauy_lic'), & |
|---|
| 152 | ctrl_out((/ 1, 4, 10, 1, 10 /),'tauy_oce'), & |
|---|
| 153 | ctrl_out((/ 1, 4, 10, 1, 10 /),'tauy_sic') /) |
|---|
| 154 | |
|---|
| 155 | |
|---|
| 156 | type(ctrl_out),save,dimension(4) :: o_pourc_srf = (/ ctrl_out((/ 1, 4, 10, 1, 10 /),'pourc_ter'), & |
|---|
| 157 | ctrl_out((/ 1, 4, 10, 1, 10 /),'pourc_lic'), & |
|---|
| 158 | ctrl_out((/ 1, 4, 10, 1, 10 /),'pourc_oce'), & |
|---|
| 159 | ctrl_out((/ 1, 4, 10, 1, 10 /),'pourc_sic') /) |
|---|
| 160 | |
|---|
| 161 | type(ctrl_out),save,dimension(4) :: o_fract_srf = (/ ctrl_out((/ 1, 4, 10, 1, 10 /),'fract_ter'), & |
|---|
| 162 | ctrl_out((/ 1, 4, 10, 1, 10 /),'fract_lic'), & |
|---|
| 163 | ctrl_out((/ 1, 4, 10, 1, 10 /),'fract_oce'), & |
|---|
| 164 | ctrl_out((/ 1, 4, 10, 1, 10 /),'fract_sic') /) |
|---|
| 165 | |
|---|
| 166 | type(ctrl_out),save,dimension(4) :: o_tsol_srf = (/ ctrl_out((/ 1, 4, 10, 1, 10 /),'tsol_ter'), & |
|---|
| 167 | ctrl_out((/ 1, 4, 10, 1, 10 /),'tsol_lic'), & |
|---|
| 168 | ctrl_out((/ 1, 4, 10, 1, 10 /),'tsol_oce'), & |
|---|
| 169 | ctrl_out((/ 1, 4, 10, 1, 10 /),'tsol_sic') /) |
|---|
| 170 | |
|---|
| 171 | type(ctrl_out),save,dimension(4) :: o_sens_srf = (/ ctrl_out((/ 1, 4, 10, 1, 10 /),'sens_ter'), & |
|---|
| 172 | ctrl_out((/ 1, 4, 10, 1, 10 /),'sens_lic'), & |
|---|
| 173 | ctrl_out((/ 1, 4, 10, 1, 10 /),'sens_oce'), & |
|---|
| 174 | ctrl_out((/ 1, 4, 10, 1, 10 /),'sens_sic') /) |
|---|
| 175 | |
|---|
| 176 | type(ctrl_out),save,dimension(4) :: o_lat_srf = (/ ctrl_out((/ 1, 4, 10, 1, 10 /),'lat_ter'), & |
|---|
| 177 | ctrl_out((/ 1, 4, 10, 1, 10 /),'lat_lic'), & |
|---|
| 178 | ctrl_out((/ 1, 4, 10, 1, 10 /),'lat_oce'), & |
|---|
| 179 | ctrl_out((/ 1, 4, 10, 1, 10 /),'lat_sic') /) |
|---|
| 180 | |
|---|
| 181 | type(ctrl_out),save,dimension(4) :: o_flw_srf = (/ ctrl_out((/ 1, 10, 10, 10, 10 /),'flw_ter'), & |
|---|
| 182 | ctrl_out((/ 1, 10, 10, 10, 10 /),'flw_lic'), & |
|---|
| 183 | ctrl_out((/ 1, 10, 10, 10, 10 /),'flw_oce'), & |
|---|
| 184 | ctrl_out((/ 1, 10, 10, 10, 10 /),'flw_sic') /) |
|---|
| 185 | |
|---|
| 186 | type(ctrl_out),save,dimension(4) :: o_fsw_srf = (/ ctrl_out((/ 1, 10, 10, 10, 10 /),'fsw_ter'), & |
|---|
| 187 | ctrl_out((/ 1, 10, 10, 10, 10 /),'fsw_lic'), & |
|---|
| 188 | ctrl_out((/ 1, 10, 10, 10, 10 /),'fsw_oce'), & |
|---|
| 189 | ctrl_out((/ 1, 10, 10, 10, 10 /),'fsw_sic') /) |
|---|
| 190 | |
|---|
| 191 | type(ctrl_out),save,dimension(4) :: o_wbils_srf = (/ ctrl_out((/ 1, 10, 10, 10, 10 /),'wbils_ter'), & |
|---|
| 192 | ctrl_out((/ 1, 10, 10, 10, 10 /),'wbils_lic'), & |
|---|
| 193 | ctrl_out((/ 1, 10, 10, 10, 10 /),'wbils_oce'), & |
|---|
| 194 | ctrl_out((/ 1, 10, 10, 10, 10 /),'wbils_sic') /) |
|---|
| 195 | |
|---|
| 196 | type(ctrl_out),save,dimension(4) :: o_wbilo_srf = (/ ctrl_out((/ 1, 10, 10, 10, 10 /),'wbilo_ter'), & |
|---|
| 197 | ctrl_out((/ 1, 10, 10, 10, 10 /),'wbilo_lic'), & |
|---|
| 198 | ctrl_out((/ 1, 10, 10, 10, 10 /),'wbilo_oce'), & |
|---|
| 199 | ctrl_out((/ 1, 10, 10, 10, 10 /),'wbilo_sic') /) |
|---|
| 200 | |
|---|
| 201 | |
|---|
| 202 | type(ctrl_out),save :: o_cdrm = ctrl_out((/ 1, 10, 10, 1, 10 /),'cdrm') |
|---|
| 203 | type(ctrl_out),save :: o_cdrh = ctrl_out((/ 1, 10, 10, 1, 10 /),'cdrh') |
|---|
| 204 | type(ctrl_out),save :: o_cldl = ctrl_out((/ 1, 1, 10, 10, 10 /),'cldl') |
|---|
| 205 | type(ctrl_out),save :: o_cldm = ctrl_out((/ 1, 1, 10, 10, 10 /),'cldm') |
|---|
| 206 | type(ctrl_out),save :: o_cldh = ctrl_out((/ 1, 1, 10, 10, 10 /),'cldh') |
|---|
| 207 | type(ctrl_out),save :: o_cldt = ctrl_out((/ 1, 1, 2, 10, 10 /),'cldt') |
|---|
| 208 | type(ctrl_out),save :: o_cldq = ctrl_out((/ 1, 1, 10, 10, 10 /),'cldq') |
|---|
| 209 | type(ctrl_out),save :: o_lwp = ctrl_out((/ 1, 5, 10, 10, 10 /),'lwp') |
|---|
| 210 | type(ctrl_out),save :: o_iwp = ctrl_out((/ 1, 5, 10, 10, 10 /),'iwp') |
|---|
| 211 | type(ctrl_out),save :: o_ue = ctrl_out((/ 1, 10, 10, 10, 10 /),'ue') |
|---|
| 212 | type(ctrl_out),save :: o_ve = ctrl_out((/ 1, 10, 10, 10, 10 /),'ve') |
|---|
| 213 | type(ctrl_out),save :: o_uq = ctrl_out((/ 1, 10, 10, 10, 10 /),'uq') |
|---|
| 214 | type(ctrl_out),save :: o_vq = ctrl_out((/ 1, 10, 10, 10, 10 /),'vq') |
|---|
| 215 | |
|---|
| 216 | type(ctrl_out),save :: o_cape = ctrl_out((/ 1, 10, 10, 10, 10 /),'cape') |
|---|
| 217 | type(ctrl_out),save :: o_pbase = ctrl_out((/ 1, 10, 10, 10, 10 /),'pbase') |
|---|
| 218 | type(ctrl_out),save :: o_ptop = ctrl_out((/ 1, 4, 10, 10, 10 /),'ptop') |
|---|
| 219 | type(ctrl_out),save :: o_fbase = ctrl_out((/ 1, 10, 10, 10, 10 /),'fbase') |
|---|
| 220 | type(ctrl_out),save :: o_prw = ctrl_out((/ 1, 1, 10, 10, 10 /),'prw') |
|---|
| 221 | |
|---|
| 222 | type(ctrl_out),save :: o_s_pblh = ctrl_out((/ 1, 10, 10, 1, 1 /),'s_pblh') |
|---|
| 223 | type(ctrl_out),save :: o_s_pblt = ctrl_out((/ 1, 10, 10, 1, 1 /),'s_pblt') |
|---|
| 224 | type(ctrl_out),save :: o_s_lcl = ctrl_out((/ 1, 10, 10, 1, 10 /),'s_lcl') |
|---|
| 225 | type(ctrl_out),save :: o_s_capCL = ctrl_out((/ 1, 10, 10, 1, 10 /),'s_capCL') |
|---|
| 226 | type(ctrl_out),save :: o_s_oliqCL = ctrl_out((/ 1, 10, 10, 1, 10 /),'s_oliqCL') |
|---|
| 227 | type(ctrl_out),save :: o_s_cteiCL = ctrl_out((/ 1, 10, 10, 1, 1 /),'s_cteiCL') |
|---|
| 228 | type(ctrl_out),save :: o_s_therm = ctrl_out((/ 1, 10, 10, 1, 1 /),'s_therm') |
|---|
| 229 | type(ctrl_out),save :: o_s_trmb1 = ctrl_out((/ 1, 10, 10, 1, 10 /),'s_trmb1') |
|---|
| 230 | type(ctrl_out),save :: o_s_trmb2 = ctrl_out((/ 1, 10, 10, 1, 10 /),'s_trmb2') |
|---|
| 231 | type(ctrl_out),save :: o_s_trmb3 = ctrl_out((/ 1, 10, 10, 1, 10 /),'s_trmb3') |
|---|
| 232 | |
|---|
| 233 | type(ctrl_out),save :: o_slab_bils = ctrl_out((/ 1, 1, 10, 10, 10 /),'slab_bils_oce') |
|---|
| 234 | |
|---|
| 235 | type(ctrl_out),save :: o_ale_bl = ctrl_out((/ 1, 1, 1, 1, 10 /),'ale_bl') |
|---|
| 236 | type(ctrl_out),save :: o_alp_bl = ctrl_out((/ 1, 1, 1, 1, 10 /),'alp_bl') |
|---|
| 237 | type(ctrl_out),save :: o_ale_wk = ctrl_out((/ 1, 1, 1, 1, 10 /),'ale_wk') |
|---|
| 238 | type(ctrl_out),save :: o_alp_wk = ctrl_out((/ 1, 1, 1, 1, 10 /),'alp_wk') |
|---|
| 239 | |
|---|
| 240 | type(ctrl_out),save :: o_ale = ctrl_out((/ 1, 1, 1, 1, 10 /),'ale') |
|---|
| 241 | type(ctrl_out),save :: o_alp = ctrl_out((/ 1, 1, 1, 1, 10 /),'alp') |
|---|
| 242 | type(ctrl_out),save :: o_cin = ctrl_out((/ 1, 1, 1, 1, 10 /),'cin') |
|---|
| 243 | type(ctrl_out),save :: o_wape = ctrl_out((/ 1, 1, 1, 1, 10 /),'wape') |
|---|
| 244 | |
|---|
| 245 | |
|---|
| 246 | ! Champs interpolles sur des niveaux de pression ??? a faire correctement |
|---|
| 247 | ! if=1 on ecrit u v w phi sur 850 700 500 200 au niv 1 |
|---|
| 248 | ! if=2 on ecrit w et ph 500 seulement au niv 1 |
|---|
| 249 | ! et u v sur 850 700 500 200 |
|---|
| 250 | ! if=3 on ecrit ph a 500 seulement au niv 1 |
|---|
| 251 | ! on ecrit u v t q a 850 700 500 200 au niv 3 |
|---|
| 252 | ! on ecrit ph a 500 au niv 3 |
|---|
| 253 | |
|---|
| 254 | |
|---|
| 255 | type(ctrl_out),save,dimension(4) :: o_uSTDlevs = (/ ctrl_out((/ 1, 1, 3, 10, 10 /),'u850'), & |
|---|
| 256 | ctrl_out((/ 1, 1, 3, 10, 10 /),'u700'), & |
|---|
| 257 | ctrl_out((/ 1, 1, 3, 10, 10 /),'u500'), & |
|---|
| 258 | ctrl_out((/ 1, 1, 3, 10, 10 /),'u200') /) |
|---|
| 259 | |
|---|
| 260 | type(ctrl_out),save,dimension(4) :: o_vSTDlevs = (/ ctrl_out((/ 1, 1, 3, 10, 10 /),'v850'), & |
|---|
| 261 | ctrl_out((/ 1, 1, 3, 10, 10 /),'v700'), & |
|---|
| 262 | ctrl_out((/ 1, 1, 3, 10, 10 /),'v500'), & |
|---|
| 263 | ctrl_out((/ 1, 1, 3, 10, 10 /),'v200') /) |
|---|
| 264 | |
|---|
| 265 | type(ctrl_out),save,dimension(4) :: o_wSTDlevs = (/ ctrl_out((/ 1, 1, 3, 10, 10 /),'w850'), & |
|---|
| 266 | ctrl_out((/ 1, 1, 3, 10, 10 /),'w700'), & |
|---|
| 267 | ctrl_out((/ 1, 1, 3, 10, 10 /),'w500'), & |
|---|
| 268 | ctrl_out((/ 1, 1, 3, 10, 10 /),'w200') /) |
|---|
| 269 | |
|---|
| 270 | type(ctrl_out),save,dimension(4) :: o_tSTDlevs = (/ ctrl_out((/ 1, 1, 3, 10, 10 /),'t850'), & |
|---|
| 271 | ctrl_out((/ 1, 1, 3, 10, 10 /),'t700'), & |
|---|
| 272 | ctrl_out((/ 1, 1, 3, 10, 10 /),'t500'), & |
|---|
| 273 | ctrl_out((/ 1, 1, 3, 10, 10 /),'t200') /) |
|---|
| 274 | |
|---|
| 275 | type(ctrl_out),save,dimension(4) :: o_qSTDlevs = (/ ctrl_out((/ 1, 1, 3, 10, 10 /),'q850'), & |
|---|
| 276 | ctrl_out((/ 1, 1, 3, 10, 10 /),'q700'), & |
|---|
| 277 | ctrl_out((/ 1, 1, 3, 10, 10 /),'q500'), & |
|---|
| 278 | ctrl_out((/ 1, 1, 3, 10, 10 /),'q200') /) |
|---|
| 279 | |
|---|
| 280 | type(ctrl_out),save,dimension(4) :: o_phiSTDlevs = (/ ctrl_out((/ 1, 1, 3, 10, 10 /),'phi850'), & |
|---|
| 281 | ctrl_out((/ 1, 1, 3, 10, 10 /),'phi700'), & |
|---|
| 282 | ctrl_out((/ 1, 1, 3, 10, 10 /),'phi500'), & |
|---|
| 283 | ctrl_out((/ 1, 1, 3, 10, 10 /),'phi200') /) |
|---|
| 284 | |
|---|
| 285 | |
|---|
| 286 | type(ctrl_out),save :: o_t_oce_sic = ctrl_out((/ 1, 10, 10, 10, 10 /),'t_oce_sic') |
|---|
| 287 | |
|---|
| 288 | type(ctrl_out),save :: o_weakinv = ctrl_out((/ 10, 1, 10, 10, 10 /),'weakinv') |
|---|
| 289 | type(ctrl_out),save :: o_dthmin = ctrl_out((/ 10, 1, 10, 10, 10 /),'dthmin') |
|---|
| 290 | type(ctrl_out),save,dimension(4) :: o_u10_srf = (/ ctrl_out((/ 10, 4, 10, 10, 10 /),'u10_ter'), & |
|---|
| 291 | ctrl_out((/ 10, 4, 10, 10, 10 /),'u10_lic'), & |
|---|
| 292 | ctrl_out((/ 10, 4, 10, 10, 10 /),'u10_oce'), & |
|---|
| 293 | ctrl_out((/ 10, 4, 10, 10, 10 /),'u10_sic') /) |
|---|
| 294 | |
|---|
| 295 | type(ctrl_out),save,dimension(4) :: o_v10_srf = (/ ctrl_out((/ 10, 4, 10, 10, 10 /),'v10_ter'), & |
|---|
| 296 | ctrl_out((/ 10, 4, 10, 10, 10 /),'v10_lic'), & |
|---|
| 297 | ctrl_out((/ 10, 4, 10, 10, 10 /),'v10_oce'), & |
|---|
| 298 | ctrl_out((/ 10, 4, 10, 10, 10 /),'v10_sic') /) |
|---|
| 299 | |
|---|
| 300 | type(ctrl_out),save :: o_cldtau = ctrl_out((/ 10, 5, 10, 10, 10 /),'cldtau') |
|---|
| 301 | type(ctrl_out),save :: o_cldemi = ctrl_out((/ 10, 5, 10, 10, 10 /),'cldemi') |
|---|
| 302 | type(ctrl_out),save :: o_rh2m = ctrl_out((/ 10, 5, 10, 10, 10 /),'rh2m') |
|---|
| 303 | type(ctrl_out),save :: o_qsat2m = ctrl_out((/ 10, 5, 10, 10, 10 /),'qsat2m') |
|---|
| 304 | type(ctrl_out),save :: o_tpot = ctrl_out((/ 10, 5, 10, 10, 10 /),'tpot') |
|---|
| 305 | type(ctrl_out),save :: o_tpote = ctrl_out((/ 10, 5, 10, 10, 10 /),'tpote') |
|---|
| 306 | type(ctrl_out),save :: o_tke = ctrl_out((/ 4, 10, 10, 10, 10 /),'tke ') |
|---|
| 307 | type(ctrl_out),save :: o_tke_max = ctrl_out((/ 4, 10, 10, 10, 10 /),'tke_max') |
|---|
| 308 | |
|---|
| 309 | type(ctrl_out),save,dimension(4) :: o_tke_srf = (/ ctrl_out((/ 10, 4, 10, 10, 10 /),'tke_ter'), & |
|---|
| 310 | ctrl_out((/ 10, 4, 10, 10, 10 /),'tke_lic'), & |
|---|
| 311 | ctrl_out((/ 10, 4, 10, 10, 10 /),'tke_oce'), & |
|---|
| 312 | ctrl_out((/ 10, 4, 10, 10, 10 /),'tke_sic') /) |
|---|
| 313 | |
|---|
| 314 | type(ctrl_out),save,dimension(4) :: o_tke_max_srf = (/ ctrl_out((/ 10, 4, 10, 10, 10 /),'tke_max_ter'), & |
|---|
| 315 | ctrl_out((/ 10, 4, 10, 10, 10 /),'tke_max_lic'), & |
|---|
| 316 | ctrl_out((/ 10, 4, 10, 10, 10 /),'tke_max_oce'), & |
|---|
| 317 | ctrl_out((/ 10, 4, 10, 10, 10 /),'tke_max_sic') /) |
|---|
| 318 | |
|---|
| 319 | type(ctrl_out),save :: o_kz = ctrl_out((/ 4, 10, 10, 10, 10 /),'kz') |
|---|
| 320 | type(ctrl_out),save :: o_kz_max = ctrl_out((/ 4, 10, 10, 10, 10 /),'kz_max') |
|---|
| 321 | type(ctrl_out),save :: o_SWnetOR = ctrl_out((/ 10, 10, 2, 10, 10 /),'SWnetOR') |
|---|
| 322 | type(ctrl_out),save :: o_SWdownOR = ctrl_out((/ 10, 10, 2, 10, 10 /),'SWdownOR') |
|---|
| 323 | type(ctrl_out),save :: o_LWdownOR = ctrl_out((/ 10, 10, 2, 10, 10 /),'LWdownOR') |
|---|
| 324 | |
|---|
| 325 | type(ctrl_out),save :: o_snowl = ctrl_out((/ 10, 1, 10, 10, 10 /),'snowl') |
|---|
| 326 | type(ctrl_out),save :: o_cape_max = ctrl_out((/ 10, 1, 10, 10, 10 /),'cape_max') |
|---|
| 327 | type(ctrl_out),save :: o_solldown = ctrl_out((/ 10, 1, 10, 1, 10 /),'solldown') |
|---|
| 328 | |
|---|
| 329 | type(ctrl_out),save :: o_dtsvdfo = ctrl_out((/ 10, 10, 10, 1, 10 /),'dtsvdfo') |
|---|
| 330 | type(ctrl_out),save :: o_dtsvdft = ctrl_out((/ 10, 10, 10, 1, 10 /),'dtsvdft') |
|---|
| 331 | type(ctrl_out),save :: o_dtsvdfg = ctrl_out((/ 10, 10, 10, 1, 10 /),'dtsvdfg') |
|---|
| 332 | type(ctrl_out),save :: o_dtsvdfi = ctrl_out((/ 10, 10, 10, 1, 10 /),'dtsvdfi') |
|---|
| 333 | type(ctrl_out),save :: o_rugs = ctrl_out((/ 10, 10, 10, 1, 1 /),'rugs') |
|---|
| 334 | |
|---|
| 335 | type(ctrl_out),save :: o_topswad = ctrl_out((/ 4, 10, 10, 10, 10 /),'topswad') |
|---|
| 336 | type(ctrl_out),save :: o_topswai = ctrl_out((/ 4, 10, 10, 10, 10 /),'topswai') |
|---|
| 337 | type(ctrl_out),save :: o_solswad = ctrl_out((/ 4, 10, 10, 10, 10 /),'solswad') |
|---|
| 338 | type(ctrl_out),save :: o_solswai = ctrl_out((/ 4, 10, 10, 10, 10 /),'solswai') |
|---|
| 339 | !!!!!!!!!!!!!!!!!!!!!! 3D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|---|
| 340 | type(ctrl_out),save :: o_lwcon = ctrl_out((/ 2, 5, 10, 10, 1 /),'lwcon') |
|---|
| 341 | type(ctrl_out),save :: o_iwcon = ctrl_out((/ 2, 5, 10, 10, 10 /),'iwcon') |
|---|
| 342 | type(ctrl_out),save :: o_temp = ctrl_out((/ 2, 3, 4, 1, 1 /),'temp') |
|---|
| 343 | type(ctrl_out),save :: o_theta = ctrl_out((/ 2, 3, 4, 1, 1 /),'theta') |
|---|
| 344 | type(ctrl_out),save :: o_ovap = ctrl_out((/ 2, 3, 4, 1, 1 /),'ovap') |
|---|
| 345 | type(ctrl_out),save :: o_ovapinit = ctrl_out((/ 2, 3, 4, 1, 1 /),'ovapinit') |
|---|
| 346 | type(ctrl_out),save :: o_wvapp = ctrl_out((/ 2, 10, 10, 10, 10 /),'wvapp') |
|---|
| 347 | type(ctrl_out),save :: o_geop = ctrl_out((/ 2, 3, 10, 1, 1 /),'geop') |
|---|
| 348 | type(ctrl_out),save :: o_vitu = ctrl_out((/ 2, 3, 4, 1, 1 /),'vitu') |
|---|
| 349 | type(ctrl_out),save :: o_vitv = ctrl_out((/ 2, 3, 4, 1, 1 /),'vitv') |
|---|
| 350 | type(ctrl_out),save :: o_vitw = ctrl_out((/ 2, 3, 10, 10, 1 /),'vitw') |
|---|
| 351 | type(ctrl_out),save :: o_pres = ctrl_out((/ 2, 3, 10, 1, 1 /),'pres') |
|---|
| 352 | type(ctrl_out),save :: o_rneb = ctrl_out((/ 2, 5, 10, 10, 1 /),'rneb') |
|---|
| 353 | type(ctrl_out),save :: o_rnebcon = ctrl_out((/ 2, 5, 10, 10, 1 /),'rnebcon') |
|---|
| 354 | type(ctrl_out),save :: o_rhum = ctrl_out((/ 2, 10, 10, 10, 10 /),'rhum') |
|---|
| 355 | type(ctrl_out),save :: o_ozone = ctrl_out((/ 2, 10, 10, 10, 10 /),'ozone') |
|---|
| 356 | type(ctrl_out),save :: o_upwd = ctrl_out((/ 2, 10, 10, 10, 10 /),'upwd') |
|---|
| 357 | type(ctrl_out),save :: o_dtphy = ctrl_out((/ 2, 10, 10, 10, 1 /),'dtphy') |
|---|
| 358 | type(ctrl_out),save :: o_dqphy = ctrl_out((/ 2, 10, 10, 10, 1 /),'dqphy') |
|---|
| 359 | type(ctrl_out),save :: o_pr_con_l = ctrl_out((/ 2, 10, 10, 10, 10 /),'pr_con_l') |
|---|
| 360 | type(ctrl_out),save :: o_pr_con_i = ctrl_out((/ 2, 10, 10, 10, 10 /),'pr_con_i') |
|---|
| 361 | type(ctrl_out),save :: o_pr_lsc_l = ctrl_out((/ 2, 10, 10, 10, 10 /),'pr_lsc_l') |
|---|
| 362 | type(ctrl_out),save :: o_pr_lsc_i = ctrl_out((/ 2, 10, 10, 10, 10 /),'pr_lsc_i') |
|---|
| 363 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|---|
| 364 | |
|---|
| 365 | type(ctrl_out),save,dimension(4) :: o_albe_srf = (/ ctrl_out((/ 3, 4, 10, 1, 10 /),'albe_ter'), & |
|---|
| 366 | ctrl_out((/ 3, 4, 10, 1, 10 /),'albe_lic'), & |
|---|
| 367 | ctrl_out((/ 3, 4, 10, 1, 10 /),'albe_oce'), & |
|---|
| 368 | ctrl_out((/ 3, 4, 10, 1, 10 /),'albe_sic') /) |
|---|
| 369 | |
|---|
| 370 | type(ctrl_out),save,dimension(4) :: o_ages_srf = (/ ctrl_out((/ 3, 10, 10, 10, 10 /),'ages_ter'), & |
|---|
| 371 | ctrl_out((/ 3, 10, 10, 10, 10 /),'ages_lic'), & |
|---|
| 372 | ctrl_out((/ 3, 10, 10, 10, 10 /),'ages_oce'), & |
|---|
| 373 | ctrl_out((/ 3, 10, 10, 10, 10 /),'ages_sic') /) |
|---|
| 374 | |
|---|
| 375 | type(ctrl_out),save,dimension(4) :: o_rugs_srf = (/ ctrl_out((/ 3, 4, 10, 1, 10 /),'rugs_ter'), & |
|---|
| 376 | ctrl_out((/ 3, 4, 10, 1, 10 /),'rugs_lic'), & |
|---|
| 377 | ctrl_out((/ 3, 4, 10, 1, 10 /),'rugs_oce'), & |
|---|
| 378 | ctrl_out((/ 3, 4, 10, 1, 10 /),'rugs_sic') /) |
|---|
| 379 | |
|---|
| 380 | type(ctrl_out),save :: o_albs = ctrl_out((/ 3, 10, 10, 1, 10 /),'albs') |
|---|
| 381 | type(ctrl_out),save :: o_albslw = ctrl_out((/ 3, 10, 10, 1, 10 /),'albslw') |
|---|
| 382 | |
|---|
| 383 | type(ctrl_out),save :: o_clwcon = ctrl_out((/ 4, 10, 10, 10, 10 /),'clwcon') |
|---|
| 384 | type(ctrl_out),save :: o_Ma = ctrl_out((/ 4, 10, 10, 10, 10 /),'Ma') |
|---|
| 385 | type(ctrl_out),save :: o_dnwd = ctrl_out((/ 4, 10, 10, 10, 10 /),'dnwd') |
|---|
| 386 | type(ctrl_out),save :: o_dnwd0 = ctrl_out((/ 4, 10, 10, 10, 10 /),'dnwd0') |
|---|
| 387 | type(ctrl_out),save :: o_dtdyn = ctrl_out((/ 4, 10, 10, 10, 1 /),'dtdyn') |
|---|
| 388 | type(ctrl_out),save :: o_dqdyn = ctrl_out((/ 4, 10, 10, 10, 1 /),'dqdyn') |
|---|
| 389 | type(ctrl_out),save :: o_dudyn = ctrl_out((/ 4, 10, 10, 10, 1 /),'dudyn') !AXC |
|---|
| 390 | type(ctrl_out),save :: o_dvdyn = ctrl_out((/ 4, 10, 10, 10, 1 /),'dvdyn') !AXC |
|---|
| 391 | type(ctrl_out),save :: o_dtcon = ctrl_out((/ 4, 5, 10, 10, 10 /),'dtcon') |
|---|
| 392 | type(ctrl_out),save :: o_ducon = ctrl_out((/ 4, 10, 10, 10, 10 /),'ducon') |
|---|
| 393 | type(ctrl_out),save :: o_dqcon = ctrl_out((/ 4, 5, 10, 10, 10 /),'dqcon') |
|---|
| 394 | type(ctrl_out),save :: o_dtwak = ctrl_out((/ 4, 5, 10, 10, 10 /),'dtwak') |
|---|
| 395 | type(ctrl_out),save :: o_dqwak = ctrl_out((/ 4, 5, 10, 10, 10 /),'dqwak') |
|---|
| 396 | type(ctrl_out),save :: o_wake_h = ctrl_out((/ 4, 5, 10, 10, 10 /),'wake_h') |
|---|
| 397 | type(ctrl_out),save :: o_wake_s = ctrl_out((/ 4, 5, 10, 10, 10 /),'wake_s') |
|---|
| 398 | type(ctrl_out),save :: o_wake_deltat = ctrl_out((/ 4, 5, 10, 10, 10 /),'wake_deltat') |
|---|
| 399 | type(ctrl_out),save :: o_wake_deltaq = ctrl_out((/ 4, 5, 10, 10, 10 /),'wake_deltaq') |
|---|
| 400 | type(ctrl_out),save :: o_wake_omg = ctrl_out((/ 4, 5, 10, 10, 10 /),'wake_omg') |
|---|
| 401 | type(ctrl_out),save :: o_Vprecip = ctrl_out((/ 10, 10, 10, 10, 10 /),'Vprecip') |
|---|
| 402 | type(ctrl_out),save :: o_ftd = ctrl_out((/ 4, 5, 10, 10, 10 /),'ftd') |
|---|
| 403 | type(ctrl_out),save :: o_fqd = ctrl_out((/ 4, 5, 10, 10, 10 /),'fqd') |
|---|
| 404 | type(ctrl_out),save :: o_dtlsc = ctrl_out((/ 4, 10, 10, 10, 10 /),'dtlsc') |
|---|
| 405 | type(ctrl_out),save :: o_dtlschr = ctrl_out((/ 4, 10, 10, 10, 10 /),'dtlschr') |
|---|
| 406 | type(ctrl_out),save :: o_dqlsc = ctrl_out((/ 4, 10, 10, 10, 10 /),'dqlsc') |
|---|
| 407 | type(ctrl_out),save :: o_dtvdf = ctrl_out((/ 4, 10, 10, 1, 10 /),'dtvdf') |
|---|
| 408 | type(ctrl_out),save :: o_dqvdf = ctrl_out((/ 4, 10, 10, 1, 10 /),'dqvdf') |
|---|
| 409 | type(ctrl_out),save :: o_dteva = ctrl_out((/ 4, 10, 10, 10, 10 /),'dteva') |
|---|
| 410 | type(ctrl_out),save :: o_dqeva = ctrl_out((/ 4, 10, 10, 10, 10 /),'dqeva') |
|---|
| 411 | type(ctrl_out),save :: o_ptconv = ctrl_out((/ 4, 10, 10, 10, 10 /),'ptconv') |
|---|
| 412 | type(ctrl_out),save :: o_ratqs = ctrl_out((/ 4, 10, 10, 10, 10 /),'ratqs') |
|---|
| 413 | type(ctrl_out),save :: o_dtthe = ctrl_out((/ 4, 10, 10, 10, 10 /),'dtthe') |
|---|
| 414 | type(ctrl_out),save :: o_f_th = ctrl_out((/ 4, 10, 10, 10, 10 /),'f_th') |
|---|
| 415 | type(ctrl_out),save :: o_e_th = ctrl_out((/ 4, 10, 10, 10, 10 /),'e_th') |
|---|
| 416 | type(ctrl_out),save :: o_w_th = ctrl_out((/ 4, 10, 10, 10, 10 /),'w_th') |
|---|
| 417 | type(ctrl_out),save :: o_lambda_th = ctrl_out((/ 4, 10, 10, 10, 10 /),'lambda_th') |
|---|
| 418 | type(ctrl_out),save :: o_q_th = ctrl_out((/ 4, 10, 10, 10, 10 /),'q_th') |
|---|
| 419 | type(ctrl_out),save :: o_a_th = ctrl_out((/ 4, 10, 10, 10, 10 /),'a_th') |
|---|
| 420 | type(ctrl_out),save :: o_d_th = ctrl_out((/ 4, 10, 10, 10, 10 /),'d_th') |
|---|
| 421 | type(ctrl_out),save :: o_f0_th = ctrl_out((/ 4, 10, 10, 10, 10 /),'f0_th') |
|---|
| 422 | type(ctrl_out),save :: o_zmax_th = ctrl_out((/ 4, 10, 10, 10, 10 /),'zmax_th') |
|---|
| 423 | type(ctrl_out),save :: o_dqthe = ctrl_out((/ 4, 10, 10, 10, 1 /),'dqthe') |
|---|
| 424 | type(ctrl_out),save :: o_dtajs = ctrl_out((/ 4, 10, 10, 10, 10 /),'dtajs') |
|---|
| 425 | type(ctrl_out),save :: o_dqajs = ctrl_out((/ 4, 10, 10, 10, 10 /),'dqajs') |
|---|
| 426 | type(ctrl_out),save :: o_dtswr = ctrl_out((/ 4, 10, 10, 10, 1 /),'dtswr') |
|---|
| 427 | type(ctrl_out),save :: o_dtsw0 = ctrl_out((/ 4, 10, 10, 10, 10 /),'dtsw0') |
|---|
| 428 | type(ctrl_out),save :: o_dtlwr = ctrl_out((/ 4, 10, 10, 10, 1 /),'dtlwr') |
|---|
| 429 | type(ctrl_out),save :: o_dtlw0 = ctrl_out((/ 4, 10, 10, 10, 10 /),'dtlw0') |
|---|
| 430 | type(ctrl_out),save :: o_dtec = ctrl_out((/ 4, 10, 10, 10, 10 /),'dtec') |
|---|
| 431 | type(ctrl_out),save :: o_duvdf = ctrl_out((/ 4, 10, 10, 10, 10 /),'duvdf') |
|---|
| 432 | type(ctrl_out),save :: o_dvvdf = ctrl_out((/ 4, 10, 10, 10, 10 /),'dvvdf') |
|---|
| 433 | type(ctrl_out),save :: o_duoro = ctrl_out((/ 4, 10, 10, 10, 10 /),'duoro') |
|---|
| 434 | type(ctrl_out),save :: o_dvoro = ctrl_out((/ 4, 10, 10, 10, 10 /),'dvoro') |
|---|
| 435 | type(ctrl_out),save :: o_dulif = ctrl_out((/ 4, 10, 10, 10, 10 /),'dulif') |
|---|
| 436 | type(ctrl_out),save :: o_dvlif = ctrl_out((/ 4, 10, 10, 10, 10 /),'dvlif') |
|---|
| 437 | |
|---|
| 438 | ! Attention a refaire correctement |
|---|
| 439 | type(ctrl_out),save,dimension(2) :: o_trac = (/ ctrl_out((/ 4, 10, 10, 10, 10 /),'trac01'), & |
|---|
| 440 | ctrl_out((/ 4, 10, 10, 10, 10 /),'trac02') /) |
|---|
| 441 | CONTAINS |
|---|
| 442 | |
|---|
| 443 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|---|
| 444 | !!!!!!!!! Ouverture des fichier et definition des variable de sortie !!!!!!!! |
|---|
| 445 | !! histbeg, histvert et histdef |
|---|
| 446 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|---|
| 447 | |
|---|
| 448 | SUBROUTINE phys_output_open(jjmp1,nlevSTD,clevSTD,nbteta, & |
|---|
| 449 | ctetaSTD,dtime, ok_veget, & |
|---|
| 450 | type_ocean, iflag_pbl,ok_mensuel,ok_journe, & |
|---|
| 451 | ok_hf,ok_instan,ok_LES,ok_ade,ok_aie) |
|---|
| 452 | |
|---|
| 453 | USE iophy |
|---|
| 454 | USE dimphy |
|---|
| 455 | USE infotrac |
|---|
| 456 | USE ioipsl |
|---|
| 457 | USE mod_phys_lmdz_para |
|---|
| 458 | |
|---|
| 459 | IMPLICIT NONE |
|---|
| 460 | include "dimensions.h" |
|---|
| 461 | include "temps.h" |
|---|
| 462 | include "indicesol.h" |
|---|
| 463 | include "clesphys.h" |
|---|
| 464 | include "thermcell.h" |
|---|
| 465 | include "comvert.h" |
|---|
| 466 | |
|---|
| 467 | integer :: jjmp1 |
|---|
| 468 | integer :: nbteta, nlevSTD, radpas |
|---|
| 469 | logical :: ok_mensuel, ok_journe, ok_hf, ok_instan |
|---|
| 470 | logical :: ok_LES,ok_ade,ok_aie |
|---|
| 471 | real :: dtime |
|---|
| 472 | integer :: idayref |
|---|
| 473 | real :: zjulian |
|---|
| 474 | real, dimension(klev) :: Ahyb, Bhyb, Alt |
|---|
| 475 | character(len=4), dimension(nlevSTD) :: clevSTD |
|---|
| 476 | integer :: nsrf, k, iq, iiq, iff, i, j, ilev |
|---|
| 477 | logical :: ok_veget |
|---|
| 478 | integer :: iflag_pbl |
|---|
| 479 | CHARACTER(len=4) :: bb2 |
|---|
| 480 | CHARACTER(len=2) :: bb3 |
|---|
| 481 | character(len=6) :: type_ocean |
|---|
| 482 | CHARACTER(len=3) :: ctetaSTD(nbteta) |
|---|
| 483 | real, dimension(nfiles) :: ecrit_files |
|---|
| 484 | CHARACTER(len=20), dimension(nfiles) :: name_files |
|---|
| 485 | INTEGER, dimension(iim*jjmp1) :: ndex2d |
|---|
| 486 | INTEGER, dimension(iim*jjmp1*klev) :: ndex3d |
|---|
| 487 | integer :: imin_ins, imax_ins |
|---|
| 488 | integer :: jmin_ins, jmax_ins |
|---|
| 489 | CHARACTER(len=20), dimension(nfiles) :: type_ecri_files |
|---|
| 490 | |
|---|
| 491 | !!!!!!!!!! stockage dans une region limitee pour chaque fichier !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|---|
| 492 | ! entre [lonmin_reg,lonmax_reg] et [latmin_reg,latmax_reg] |
|---|
| 493 | |
|---|
| 494 | logical, dimension(nfiles), save :: ok_reglim = (/ .false., .false., .false., .false., .true. /) |
|---|
| 495 | real, dimension(nfiles), save :: lonmin_reg = (/ 0., -45., 0., 0., -162. /) |
|---|
| 496 | real, dimension(nfiles), save :: lonmax_reg = (/ 90., 45., 90., 90., -144. /) |
|---|
| 497 | real, dimension(nfiles), save :: latmin_reg = (/ 0., -45., 0., 0., 7. /) |
|---|
| 498 | real, dimension(nfiles), save :: latmax_reg = (/ 90., 90., 90., 90., 21. /) |
|---|
| 499 | |
|---|
| 500 | levmax = (/ klev, klev, klev, klev, klev /) |
|---|
| 501 | |
|---|
| 502 | name_files(1) = 'histmth' |
|---|
| 503 | name_files(2) = 'histday' |
|---|
| 504 | name_files(3) = 'histhf' |
|---|
| 505 | name_files(4) = 'histins' |
|---|
| 506 | name_files(5) = 'histLES' |
|---|
| 507 | |
|---|
| 508 | type_ecri_files(1) = 'ave(X)' |
|---|
| 509 | type_ecri_files(2) = 'ave(X)' |
|---|
| 510 | type_ecri_files(3) = 'inst(X)' |
|---|
| 511 | type_ecri_files(4) = 'inst(X)' |
|---|
| 512 | type_ecri_files(5) = 'ave(X)' |
|---|
| 513 | |
|---|
| 514 | clef_files(1) = ok_mensuel |
|---|
| 515 | clef_files(2) = ok_journe |
|---|
| 516 | clef_files(3) = ok_hf |
|---|
| 517 | clef_files(4) = ok_instan |
|---|
| 518 | clef_files(5) = ok_LES |
|---|
| 519 | |
|---|
| 520 | lev_files(1) = lev_histmth |
|---|
| 521 | lev_files(2) = lev_histday |
|---|
| 522 | lev_files(3) = lev_histhf |
|---|
| 523 | lev_files(4) = 1 |
|---|
| 524 | lev_files(5) = 1 |
|---|
| 525 | |
|---|
| 526 | ecrit_files(1) = ecrit_mth |
|---|
| 527 | ecrit_files(2) = ecrit_day |
|---|
| 528 | ecrit_files(3) = ecrit_hf |
|---|
| 529 | ecrit_files(4) = ecrit_ins |
|---|
| 530 | ecrit_files(5) = ecrit_LES |
|---|
| 531 | |
|---|
| 532 | !! Lectures des parametres de sorties dans physiq.def |
|---|
| 533 | call getin('phys_out_regfkey',ok_reglim) |
|---|
| 534 | call getin('phys_out_lonmin',lonmin_reg) |
|---|
| 535 | call getin('phys_out_lonmax',lonmax_reg) |
|---|
| 536 | call getin('phys_out_latmin',latmin_reg) |
|---|
| 537 | call getin('phys_out_latmax',latmax_reg) |
|---|
| 538 | call getin('phys_out_levmin',levmin) |
|---|
| 539 | call getin('phys_out_levmax',levmax) |
|---|
| 540 | call getin('phys_out_filenames',name_files) |
|---|
| 541 | call getin('phys_out_filetypes',type_ecri_files) |
|---|
| 542 | call getin('phys_out_filekeys',clef_files) |
|---|
| 543 | call getin('phys_out_filelevels',lev_files) |
|---|
| 544 | call getin('phys_out_filetimesteps',ecrit_files) |
|---|
| 545 | |
|---|
| 546 | type_ecri(:) = type_ecri_files(:) |
|---|
| 547 | |
|---|
| 548 | !!!!!!!!!!!!!!!!!!!!!!! Boucle sur les fichiers !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|---|
| 549 | ! Appel de histbeg et histvert pour creer le fichier et les niveaux verticaux !! |
|---|
| 550 | ! Appel des histbeg pour definir les variables (nom, moy ou inst, freq de sortie .. |
|---|
| 551 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|---|
| 552 | |
|---|
| 553 | zdtime = dtime ! Frequence ou l on moyenne |
|---|
| 554 | |
|---|
| 555 | ! Calcul des Ahyb, Bhyb et Alt |
|---|
| 556 | do k=1,klev |
|---|
| 557 | Ahyb(k)=(ap(k)+ap(k+1))/2. |
|---|
| 558 | Bhyb(k)=(bp(k)+bp(k+1))/2. |
|---|
| 559 | Alt(k)=log(preff/presnivs(k))*8. |
|---|
| 560 | enddo |
|---|
| 561 | ! if(prt_level.ge.1) then |
|---|
| 562 | print*,'Ap Hybrid = ',Ahyb(1:klev) |
|---|
| 563 | print*,'Bp Hybrid = ',Bhyb(1:klev) |
|---|
| 564 | print*,'Alt approx des couches pour une haut d echelle de 8km = ',Alt(1:klev) |
|---|
| 565 | ! endif |
|---|
| 566 | DO iff=1,nfiles |
|---|
| 567 | |
|---|
| 568 | IF (clef_files(iff)) THEN |
|---|
| 569 | |
|---|
| 570 | zoutm(iff) = ecrit_files(iff) ! Frequence ou l on ecrit |
|---|
| 571 | |
|---|
| 572 | idayref = day_ref |
|---|
| 573 | CALL ymds2ju(annee_ref, 1, idayref, 0.0, zjulian) |
|---|
| 574 | |
|---|
| 575 | !!!!!!!!!!!!!!!!! Traitement dans le cas ou l'on veut stocker sur un domaine limite !! |
|---|
| 576 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|---|
| 577 | if (ok_reglim(iff)) then |
|---|
| 578 | |
|---|
| 579 | imin_ins=1 |
|---|
| 580 | imax_ins=iim |
|---|
| 581 | jmin_ins=1 |
|---|
| 582 | jmax_ins=jjmp1 |
|---|
| 583 | |
|---|
| 584 | ! correction abderr do i=1,iim-1 |
|---|
| 585 | do i=1,iim |
|---|
| 586 | print*,'io_lon(i)=',io_lon(i) |
|---|
| 587 | if (io_lon(i).le.lonmin_reg(iff)) imin_ins=i |
|---|
| 588 | if (io_lon(i).le.lonmax_reg(iff)) imax_ins=i |
|---|
| 589 | enddo |
|---|
| 590 | |
|---|
| 591 | do j=1,jjmp1-1 |
|---|
| 592 | print*,'io_lat(j)=',io_lat(j) |
|---|
| 593 | if (io_lat(j).ge.latmin_reg(iff)) jmax_ins=j+1 |
|---|
| 594 | if (io_lat(j).ge.latmax_reg(iff)) jmin_ins=j |
|---|
| 595 | enddo |
|---|
| 596 | |
|---|
| 597 | print*,'On stoke le fichier hist sur, ', & |
|---|
| 598 | imin_ins,imax_ins,jmin_ins,jmax_ins |
|---|
| 599 | print*,'On stoke le fichier instantanne sur, ', & |
|---|
| 600 | io_lon(imin_ins),io_lon(imax_ins), & |
|---|
| 601 | io_lat(jmin_ins),io_lat(jmax_ins) |
|---|
| 602 | |
|---|
| 603 | CALL histbeg(name_files(iff),iim,io_lon,jjmp1,io_lat, & |
|---|
| 604 | imin_ins,imax_ins-imin_ins+1, & |
|---|
| 605 | jmin_ins,jmax_ins-jmin_ins+1, & |
|---|
| 606 | itau_phy,zjulian,dtime,nhorim(iff),nid_files(iff)) |
|---|
| 607 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|---|
| 608 | else |
|---|
| 609 | CALL histbeg_phy(name_files(iff),itau_phy,zjulian,dtime,nhorim(iff),nid_files(iff)) |
|---|
| 610 | endif |
|---|
| 611 | |
|---|
| 612 | CALL histvert(nid_files(iff), "presnivs", "Vertical levels", "mb", & |
|---|
| 613 | levmax(iff) - levmin(iff) + 1, & |
|---|
| 614 | presnivs(levmin(iff):levmax(iff))/100., nvertm(iff)) |
|---|
| 615 | |
|---|
| 616 | !!!!!!!!!!!!! Traitement des champs 3D pour histhf !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|---|
| 617 | !!!!!!!!!!!!!!! A Revoir plus tard !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|---|
| 618 | ! IF (iff.eq.3.and.lev_files(iff).ge.4) THEN |
|---|
| 619 | ! CALL histbeg_phy("histhf3d",itau_phy, & |
|---|
| 620 | ! & zjulian, dtime, & |
|---|
| 621 | ! & nhorim, nid_hf3d) |
|---|
| 622 | |
|---|
| 623 | ! CALL histvert(nid_hf3d, "presnivs", & |
|---|
| 624 | ! & "Vertical levels", "mb", & |
|---|
| 625 | ! & klev, presnivs/100., nvertm) |
|---|
| 626 | ! ENDIF |
|---|
| 627 | ! |
|---|
| 628 | !!!! Composentes de la coordonnee sigma-hybride |
|---|
| 629 | CALL histvert(nid_files(iff), "Ahyb","Ahyb comp of Hyb Cord ", "Pa", & |
|---|
| 630 | levmax(iff) - levmin(iff) + 1,Ahyb,nvertap(iff)) |
|---|
| 631 | |
|---|
| 632 | CALL histvert(nid_files(iff), "Bhyb","Bhyb comp of Hyb Cord", " ", & |
|---|
| 633 | levmax(iff) - levmin(iff) + 1,Bhyb,nvertbp(iff)) |
|---|
| 634 | |
|---|
| 635 | CALL histvert(nid_files(iff), "Alt","Height approx for scale heigh of 8km at levels", "Km", & |
|---|
| 636 | levmax(iff) - levmin(iff) + 1,Alt,nvertAlt(iff)) |
|---|
| 637 | |
|---|
| 638 | ! CALL histvert(nid_files(iff), "preff","Reference pressure", "Pa", & |
|---|
| 639 | ! 1,preff,nvertp0(iff)) |
|---|
| 640 | !!! Champs 1D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|---|
| 641 | CALL histdef2d(iff,o_phis%flag,o_phis%name,"Surface geop.height", "m2/s2") |
|---|
| 642 | type_ecri(1) = 'once' |
|---|
| 643 | type_ecri(2) = 'once' |
|---|
| 644 | type_ecri(3) = 'once' |
|---|
| 645 | type_ecri(4) = 'once' |
|---|
| 646 | type_ecri(5) = 'once' |
|---|
| 647 | CALL histdef2d(iff,o_aire%flag,o_aire%name,"Grid area", "-") |
|---|
| 648 | CALL histdef2d(iff,o_contfracATM%flag,o_contfracATM%name,"% sfce ter+lic", "-") |
|---|
| 649 | type_ecri(:) = type_ecri_files(:) |
|---|
| 650 | |
|---|
| 651 | !!! Champs 2D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|---|
| 652 | CALL histdef2d(iff,o_contfracOR%flag,o_contfracOR%name,"% sfce terre OR", "-" ) |
|---|
| 653 | CALL histdef2d(iff,o_aireTER%flag,o_aireTER%name,"Grid area CONT", "-" ) |
|---|
| 654 | CALL histdef2d(iff,o_flat%flag,o_flat%name, "Latent heat flux", "W/m2") |
|---|
| 655 | CALL histdef2d(iff,o_slp%flag,o_slp%name, "Sea Level Pressure", "Pa" ) |
|---|
| 656 | CALL histdef2d(iff,o_tsol%flag,o_tsol%name, "Surface Temperature", "K") |
|---|
| 657 | CALL histdef2d(iff,o_t2m%flag,o_t2m%name, "Temperature 2m", "K" ) |
|---|
| 658 | type_ecri(1) = 't_min(X)' |
|---|
| 659 | type_ecri(2) = 't_min(X)' |
|---|
| 660 | type_ecri(3) = 't_min(X)' |
|---|
| 661 | type_ecri(4) = 't_min(X)' |
|---|
| 662 | type_ecri(5) = 't_min(X)' |
|---|
| 663 | CALL histdef2d(iff,o_t2m_min%flag,o_t2m_min%name, "Temp 2m min", "K" ) |
|---|
| 664 | type_ecri(1) = 't_max(X)' |
|---|
| 665 | type_ecri(2) = 't_max(X)' |
|---|
| 666 | type_ecri(3) = 't_max(X)' |
|---|
| 667 | type_ecri(4) = 't_max(X)' |
|---|
| 668 | type_ecri(5) = 't_max(X)' |
|---|
| 669 | CALL histdef2d(iff,o_t2m_max%flag,o_t2m_max%name, "Temp 2m max", "K" ) |
|---|
| 670 | type_ecri(:) = type_ecri_files(:) |
|---|
| 671 | CALL histdef2d(iff,o_wind10m%flag,o_wind10m%name, "10-m wind speed", "m/s") |
|---|
| 672 | CALL histdef2d(iff,o_wind10max%flag,o_wind10max%name, "10m wind speed max", "m/s") |
|---|
| 673 | CALL histdef2d(iff,o_sicf%flag,o_sicf%name, "Sea-ice fraction", "-" ) |
|---|
| 674 | CALL histdef2d(iff,o_q2m%flag,o_q2m%name, "Specific humidity 2m", "kg/kg") |
|---|
| 675 | CALL histdef2d(iff,o_u10m%flag,o_u10m%name, "Vent zonal 10m", "m/s" ) |
|---|
| 676 | CALL histdef2d(iff,o_v10m%flag,o_v10m%name, "Vent meridien 10m", "m/s") |
|---|
| 677 | CALL histdef2d(iff,o_psol%flag,o_psol%name, "Surface Pressure", "Pa" ) |
|---|
| 678 | CALL histdef2d(iff,o_qsurf%flag,o_qsurf%name, "Surface Air humidity", "kg/kg") |
|---|
| 679 | |
|---|
| 680 | if (.not. ok_veget) then |
|---|
| 681 | CALL histdef2d(iff,o_qsol%flag,o_qsol%name, "Soil watter content", "mm" ) |
|---|
| 682 | endif |
|---|
| 683 | |
|---|
| 684 | CALL histdef2d(iff,o_ndayrain%flag,o_ndayrain%name, "Number of dayrain(liq+sol)", "-") |
|---|
| 685 | CALL histdef2d(iff,o_precip%flag,o_precip%name, "Precip Totale liq+sol", "kg/(s*m2)" ) |
|---|
| 686 | CALL histdef2d(iff,o_plul%flag,o_plul%name, "Large-scale Precip.", "kg/(s*m2)") |
|---|
| 687 | CALL histdef2d(iff,o_pluc%flag,o_pluc%name, "Convective Precip.", "kg/(s*m2)") |
|---|
| 688 | CALL histdef2d(iff,o_snow%flag,o_snow%name, "Snow fall", "kg/(s*m2)" ) |
|---|
| 689 | CALL histdef2d(iff,o_evap%flag,o_evap%name, "Evaporat", "kg/(s*m2)" ) |
|---|
| 690 | CALL histdef2d(iff,o_tops%flag,o_tops%name, "Solar rad. at TOA", "W/m2") |
|---|
| 691 | CALL histdef2d(iff,o_tops0%flag,o_tops0%name, "CS Solar rad. at TOA", "W/m2") |
|---|
| 692 | CALL histdef2d(iff,o_topl%flag,o_topl%name, "IR rad. at TOA", "W/m2" ) |
|---|
| 693 | CALL histdef2d(iff,o_topl0%flag,o_topl0%name, "IR rad. at TOA", "W/m2") |
|---|
| 694 | CALL histdef2d(iff,o_SWupTOA%flag,o_SWupTOA%name, "SWup at TOA", "W/m2") |
|---|
| 695 | CALL histdef2d(iff,o_SWupTOAclr%flag,o_SWupTOAclr%name, "SWup clear sky at TOA", "W/m2") |
|---|
| 696 | CALL histdef2d(iff,o_SWdnTOA%flag,o_SWdnTOA%name, "SWdn at TOA", "W/m2" ) |
|---|
| 697 | CALL histdef2d(iff,o_SWdnTOAclr%flag,o_SWdnTOAclr%name, "SWdn clear sky at TOA", "W/m2") |
|---|
| 698 | CALL histdef2d(iff,o_SWup200%flag,o_SWup200%name, "SWup at 200mb", "W/m2" ) |
|---|
| 699 | CALL histdef2d(iff,o_SWup200clr%flag,o_SWup200clr%name, "SWup clear sky at 200mb", "W/m2") |
|---|
| 700 | CALL histdef2d(iff,o_SWdn200%flag,o_SWdn200%name, "SWdn at 200mb", "W/m2" ) |
|---|
| 701 | CALL histdef2d(iff,o_SWdn200clr%flag,o_SWdn200clr%name, "SWdn clear sky at 200mb", "W/m2") |
|---|
| 702 | CALL histdef2d(iff,o_LWup200%flag,o_LWup200%name, "LWup at 200mb", "W/m2") |
|---|
| 703 | CALL histdef2d(iff,o_LWup200clr%flag,o_LWup200clr%name, "LWup clear sky at 200mb", "W/m2") |
|---|
| 704 | CALL histdef2d(iff,o_LWdn200%flag,o_LWdn200%name, "LWdn at 200mb", "W/m2") |
|---|
| 705 | CALL histdef2d(iff,o_LWdn200clr%flag,o_LWdn200clr%name, "LWdn clear sky at 200mb", "W/m2") |
|---|
| 706 | CALL histdef2d(iff,o_sols%flag,o_sols%name, "Solar rad. at surf.", "W/m2") |
|---|
| 707 | CALL histdef2d(iff,o_sols0%flag,o_sols0%name, "Solar rad. at surf.", "W/m2") |
|---|
| 708 | CALL histdef2d(iff,o_soll%flag,o_soll%name, "IR rad. at surface", "W/m2") |
|---|
| 709 | CALL histdef2d(iff,o_radsol%flag,o_radsol%name, "Rayonnement au sol", "W/m2") |
|---|
| 710 | CALL histdef2d(iff,o_soll0%flag,o_soll0%name, "IR rad. at surface", "W/m2") |
|---|
| 711 | CALL histdef2d(iff,o_SWupSFC%flag,o_SWupSFC%name, "SWup at surface", "W/m2") |
|---|
| 712 | CALL histdef2d(iff,o_SWupSFCclr%flag,o_SWupSFCclr%name, "SWup clear sky at surface", "W/m2") |
|---|
| 713 | CALL histdef2d(iff,o_SWdnSFC%flag,o_SWdnSFC%name, "SWdn at surface", "W/m2") |
|---|
| 714 | CALL histdef2d(iff,o_SWdnSFCclr%flag,o_SWdnSFCclr%name, "SWdn clear sky at surface", "W/m2") |
|---|
| 715 | CALL histdef2d(iff,o_LWupSFC%flag,o_LWupSFC%name, "Upwd. IR rad. at surface", "W/m2") |
|---|
| 716 | CALL histdef2d(iff,o_LWdnSFC%flag,o_LWdnSFC%name, "Down. IR rad. at surface", "W/m2") |
|---|
| 717 | CALL histdef2d(iff,o_LWupSFCclr%flag,o_LWupSFCclr%name, "CS Upwd. IR rad. at surface", "W/m2") |
|---|
| 718 | CALL histdef2d(iff,o_LWdnSFCclr%flag,o_LWdnSFCclr%name, "Down. CS IR rad. at surface", "W/m2") |
|---|
| 719 | CALL histdef2d(iff,o_bils%flag,o_bils%name, "Surf. total heat flux", "W/m2") |
|---|
| 720 | CALL histdef2d(iff,o_sens%flag,o_sens%name, "Sensible heat flux", "W/m2") |
|---|
| 721 | CALL histdef2d(iff,o_fder%flag,o_fder%name, "Heat flux derivation", "W/m2") |
|---|
| 722 | CALL histdef2d(iff,o_ffonte%flag,o_ffonte%name, "Thermal flux for snow melting", "W/m2") |
|---|
| 723 | CALL histdef2d(iff,o_fqcalving%flag,o_fqcalving%name, "Ice Calving", "kg/m2/s") |
|---|
| 724 | CALL histdef2d(iff,o_fqfonte%flag,o_fqfonte%name, "Land ice melt", "kg/m2/s") |
|---|
| 725 | |
|---|
| 726 | DO nsrf = 1, nbsrf |
|---|
| 727 | CALL histdef2d(iff,o_pourc_srf(nsrf)%flag,o_pourc_srf(nsrf)%name,"% "//clnsurf(nsrf),"%") |
|---|
| 728 | CALL histdef2d(iff,o_fract_srf(nsrf)%flag,o_fract_srf(nsrf)%name,"Fraction "//clnsurf(nsrf),"1") |
|---|
| 729 | CALL histdef2d(iff,o_taux_srf(nsrf)%flag,o_taux_srf(nsrf)%name,"Zonal wind stress"//clnsurf(nsrf),"Pa") |
|---|
| 730 | CALL histdef2d(iff,o_tauy_srf(nsrf)%flag,o_tauy_srf(nsrf)%name,"Meridional wind stress "//clnsurf(nsrf),"Pa") |
|---|
| 731 | CALL histdef2d(iff,o_tsol_srf(nsrf)%flag,o_tsol_srf(nsrf)%name,"Temperature "//clnsurf(nsrf),"K") |
|---|
| 732 | CALL histdef2d(iff,o_u10m_srf(nsrf)%flag,o_u10m_srf(nsrf)%name,"Vent Zonal 10m "//clnsurf(nsrf),"m/s") |
|---|
| 733 | CALL histdef2d(iff,o_v10m_srf(nsrf)%flag,o_v10m_srf(nsrf)%name,"Vent meredien 10m "//clnsurf(nsrf),"m/s") |
|---|
| 734 | CALL histdef2d(iff,o_t2m_srf(nsrf)%flag,o_t2m_srf(nsrf)%name,"Temp 2m "//clnsurf(nsrf),"K") |
|---|
| 735 | CALL histdef2d(iff,o_sens_srf(nsrf)%flag,o_sens_srf(nsrf)%name,"Sensible heat flux "//clnsurf(nsrf),"W/m2") |
|---|
| 736 | CALL histdef2d(iff,o_lat_srf(nsrf)%flag,o_lat_srf(nsrf)%name,"Latent heat flux "//clnsurf(nsrf),"W/m2") |
|---|
| 737 | CALL histdef2d(iff,o_flw_srf(nsrf)%flag,o_flw_srf(nsrf)%name,"LW "//clnsurf(nsrf),"W/m2") |
|---|
| 738 | CALL histdef2d(iff,o_fsw_srf(nsrf)%flag,o_fsw_srf(nsrf)%name,"SW "//clnsurf(nsrf),"W/m2") |
|---|
| 739 | CALL histdef2d(iff,o_wbils_srf(nsrf)%flag,o_wbils_srf(nsrf)%name,"Bilan sol "//clnsurf(nsrf),"W/m2" ) |
|---|
| 740 | CALL histdef2d(iff,o_wbilo_srf(nsrf)%flag,o_wbilo_srf(nsrf)%name,"Bilan eau "//clnsurf(nsrf),"kg/(m2*s)") |
|---|
| 741 | if (iflag_pbl>1 .and. lev_files(iff).gt.10 ) then |
|---|
| 742 | CALL histdef2d(iff,o_tke_srf(nsrf)%flag,o_tke_srf(nsrf)%name,"Max Turb. Kinetic Energy "//clnsurf(nsrf),"-") |
|---|
| 743 | type_ecri(1) = 't_max(X)' |
|---|
| 744 | type_ecri(2) = 't_max(X)' |
|---|
| 745 | type_ecri(3) = 't_max(X)' |
|---|
| 746 | type_ecri(4) = 't_max(X)' |
|---|
| 747 | type_ecri(5) = 't_max(X)' |
|---|
| 748 | CALL histdef2d(iff,o_tke_max_srf(nsrf)%flag,o_tke_max_srf(nsrf)%name,"Max Turb. Kinetic Energy "//clnsurf(nsrf),"-") |
|---|
| 749 | type_ecri(:) = type_ecri_files(:) |
|---|
| 750 | endif |
|---|
| 751 | CALL histdef2d(iff,o_albe_srf(nsrf)%flag,o_albe_srf(nsrf)%name,"Albedo surf. "//clnsurf(nsrf),"-") |
|---|
| 752 | CALL histdef2d(iff,o_rugs_srf(nsrf)%flag,o_rugs_srf(nsrf)%name,"Latent heat flux "//clnsurf(nsrf),"W/m2") |
|---|
| 753 | CALL histdef2d(iff,o_ages_srf(nsrf)%flag,o_ages_srf(nsrf)%name,"Snow age", "day") |
|---|
| 754 | END DO |
|---|
| 755 | |
|---|
| 756 | IF (ok_ade) THEN |
|---|
| 757 | CALL histdef2d(iff,o_topswad%flag,o_topswad%name, "ADE at TOA", "W/m2") |
|---|
| 758 | CALL histdef2d(iff,o_solswad%flag,o_solswad%name, "ADE at SRF", "W/m2") |
|---|
| 759 | ENDIF |
|---|
| 760 | |
|---|
| 761 | IF (ok_aie) THEN |
|---|
| 762 | CALL histdef2d(iff,o_topswai%flag,o_topswai%name, "AIE at TOA", "W/m2") |
|---|
| 763 | CALL histdef2d(iff,o_solswai%flag,o_solswai%name, "AIE at SFR", "W/m2") |
|---|
| 764 | ENDIF |
|---|
| 765 | |
|---|
| 766 | |
|---|
| 767 | CALL histdef2d(iff,o_albs%flag,o_albs%name, "Surface albedo", "-") |
|---|
| 768 | CALL histdef2d(iff,o_albslw%flag,o_albslw%name, "Surface albedo LW", "-") |
|---|
| 769 | CALL histdef2d(iff,o_cdrm%flag,o_cdrm%name, "Momentum drag coef.", "-") |
|---|
| 770 | CALL histdef2d(iff,o_cdrh%flag,o_cdrh%name, "Heat drag coef.", "-" ) |
|---|
| 771 | CALL histdef2d(iff,o_cldl%flag,o_cldl%name, "Low-level cloudiness", "-") |
|---|
| 772 | CALL histdef2d(iff,o_cldm%flag,o_cldm%name, "Mid-level cloudiness", "-") |
|---|
| 773 | CALL histdef2d(iff,o_cldh%flag,o_cldh%name, "High-level cloudiness", "-") |
|---|
| 774 | CALL histdef2d(iff,o_cldt%flag,o_cldt%name, "Total cloudiness", "%") |
|---|
| 775 | CALL histdef2d(iff,o_cldq%flag,o_cldq%name, "Cloud liquid water path", "kg/m2") |
|---|
| 776 | CALL histdef2d(iff,o_lwp%flag,o_lwp%name, "Cloud water path", "kg/m2") |
|---|
| 777 | CALL histdef2d(iff,o_iwp%flag,o_iwp%name, "Cloud ice water path", "kg/m2" ) |
|---|
| 778 | CALL histdef2d(iff,o_ue%flag,o_ue%name, "Zonal energy transport", "-") |
|---|
| 779 | CALL histdef2d(iff,o_ve%flag,o_ve%name, "Merid energy transport", "-") |
|---|
| 780 | CALL histdef2d(iff,o_uq%flag,o_uq%name, "Zonal humidity transport", "-") |
|---|
| 781 | CALL histdef2d(iff,o_vq%flag,o_vq%name, "Merid humidity transport", "-") |
|---|
| 782 | |
|---|
| 783 | IF(iflag_con.GE.3) THEN ! sb |
|---|
| 784 | CALL histdef2d(iff,o_cape%flag,o_cape%name, "Conv avlbl pot ener", "J/kg") |
|---|
| 785 | CALL histdef2d(iff,o_pbase%flag,o_pbase%name, "Cld base pressure", "mb") |
|---|
| 786 | CALL histdef2d(iff,o_ptop%flag,o_ptop%name, "Cld top pressure", "mb") |
|---|
| 787 | CALL histdef2d(iff,o_fbase%flag,o_fbase%name, "Cld base mass flux", "kg/m2/s") |
|---|
| 788 | CALL histdef2d(iff,o_prw%flag,o_prw%name, "Precipitable water", "kg/m2") |
|---|
| 789 | type_ecri(1) = 't_max(X)' |
|---|
| 790 | type_ecri(2) = 't_max(X)' |
|---|
| 791 | type_ecri(3) = 't_max(X)' |
|---|
| 792 | type_ecri(4) = 't_max(X)' |
|---|
| 793 | type_ecri(5) = 't_max(X)' |
|---|
| 794 | CALL histdef2d(iff,o_cape_max%flag,o_cape_max%name, "CAPE max.", "J/kg") |
|---|
| 795 | type_ecri(:) = type_ecri_files(:) |
|---|
| 796 | CALL histdef3d(iff,o_upwd%flag,o_upwd%name, "saturated updraft", "kg/m2/s") |
|---|
| 797 | CALL histdef3d(iff,o_Ma%flag,o_Ma%name, "undilute adiab updraft", "kg/m2/s") |
|---|
| 798 | CALL histdef3d(iff,o_dnwd%flag,o_dnwd%name, "saturated downdraft", "kg/m2/s") |
|---|
| 799 | CALL histdef3d(iff,o_dnwd0%flag,o_dnwd0%name, "unsat. downdraft", "kg/m2/s") |
|---|
| 800 | ENDIF !iflag_con .GE. 3 |
|---|
| 801 | |
|---|
| 802 | CALL histdef2d(iff,o_s_pblh%flag,o_s_pblh%name, "Boundary Layer Height", "m") |
|---|
| 803 | CALL histdef2d(iff,o_s_pblt%flag,o_s_pblt%name, "t at Boundary Layer Height", "K") |
|---|
| 804 | CALL histdef2d(iff,o_s_lcl%flag,o_s_lcl%name, "Condensation level", "m") |
|---|
| 805 | CALL histdef2d(iff,o_s_capCL%flag,o_s_capCL%name, "Conv avlbl pot enerfor ABL", "J/m2" ) |
|---|
| 806 | CALL histdef2d(iff,o_s_oliqCL%flag,o_s_oliqCL%name, "Liq Water in BL", "kg/m2") |
|---|
| 807 | CALL histdef2d(iff,o_s_cteiCL%flag,o_s_cteiCL%name, "Instability criteria(ABL)", "K") |
|---|
| 808 | CALL histdef2d(iff,o_s_therm%flag,o_s_therm%name, "Exces du thermique", "K") |
|---|
| 809 | CALL histdef2d(iff,o_s_trmb1%flag,o_s_trmb1%name, "deep_cape(HBTM2)", "J/m2") |
|---|
| 810 | CALL histdef2d(iff,o_s_trmb2%flag,o_s_trmb2%name, "inhibition (HBTM2)", "J/m2") |
|---|
| 811 | CALL histdef2d(iff,o_s_trmb3%flag,o_s_trmb3%name, "Point Omega (HBTM2)", "m") |
|---|
| 812 | |
|---|
| 813 | ! Champs interpolles sur des niveaux de pression |
|---|
| 814 | ! iif=1 on ecrit u v w phi sur 850 700 500 200 au niv 1 |
|---|
| 815 | ! iif=2 on ecrit w et ph 500 seulement au niv 1 |
|---|
| 816 | ! et u v sur 850 700 500 200 |
|---|
| 817 | ! iif=3 on ecrit ph a 500 seulement au niv 1 |
|---|
| 818 | ! on ecrit u v t q a 850 700 500 200 au niv 3 |
|---|
| 819 | |
|---|
| 820 | type_ecri(1) = 'inst(X)' |
|---|
| 821 | type_ecri(2) = 'inst(X)' |
|---|
| 822 | type_ecri(3) = 'inst(X)' |
|---|
| 823 | type_ecri(4) = 'inst(X)' |
|---|
| 824 | type_ecri(5) = 'inst(X)' |
|---|
| 825 | |
|---|
| 826 | ! Attention a reverifier |
|---|
| 827 | |
|---|
| 828 | ilev=0 |
|---|
| 829 | DO k=1, nlevSTD |
|---|
| 830 | IF(k.GE.2.AND.k.LE.12) bb2=clevSTD(k) |
|---|
| 831 | ! IF(k.GE.13.AND.k.LE.17) bb3=clevSTD(k) |
|---|
| 832 | IF(bb2.EQ."850".OR.bb2.EQ."700".OR.bb2.EQ."500".OR.bb2.EQ."200")THEN |
|---|
| 833 | ilev=ilev+1 |
|---|
| 834 | print*,'ilev bb2 flag name ',ilev,bb2,o_uSTDlevs(ilev)%flag,o_uSTDlevs(ilev)%name |
|---|
| 835 | CALL histdef2d(iff,o_uSTDlevs(ilev)%flag,o_uSTDlevs(ilev)%name,"Zonal wind "//bb2//"mb", "m/s") |
|---|
| 836 | CALL histdef2d(iff,o_vSTDlevs(ilev)%flag,o_vSTDlevs(ilev)%name,"Meridional wind "//bb2//"mb", "m/s") |
|---|
| 837 | CALL histdef2d(iff,o_wSTDlevs(ilev)%flag,o_wSTDlevs(ilev)%name,"Vertical wind "//bb2//"mb", "Pa/s") |
|---|
| 838 | CALL histdef2d(iff,o_phiSTDlevs(ilev)%flag,o_phiSTDlevs(ilev)%name,"Geopotential "//bb2//"mb", "m") |
|---|
| 839 | CALL histdef2d(iff,o_qSTDlevs(ilev)%flag,o_qSTDlevs(ilev)%name,"Specific humidity "//bb2//"mb", "kg/kg" ) |
|---|
| 840 | CALL histdef2d(iff,o_tSTDlevs(ilev)%flag,o_tSTDlevs(ilev)%name,"Temperature "//bb2//"mb", "K") |
|---|
| 841 | ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR."500".OR.bb2.EQ."200") |
|---|
| 842 | ENDDO |
|---|
| 843 | type_ecri(:) = type_ecri_files(:) |
|---|
| 844 | |
|---|
| 845 | CALL histdef2d(iff,o_t_oce_sic%flag,o_t_oce_sic%name, "Temp mixte oce-sic", "K") |
|---|
| 846 | |
|---|
| 847 | IF (type_ocean=='slab') & |
|---|
| 848 | CALL histdef2d(iff,o_slab_bils%flag, o_slab_bils%name,"Bilan au sol sur ocean slab", "W/m2") |
|---|
| 849 | |
|---|
| 850 | ! Couplage conv-CL |
|---|
| 851 | IF (iflag_con.GE.3) THEN |
|---|
| 852 | IF (iflag_coupl.EQ.1) THEN |
|---|
| 853 | CALL histdef2d(iff,o_ale_bl%flag,o_ale_bl%name, "ALE BL", "m2/s2") |
|---|
| 854 | CALL histdef2d(iff,o_alp_bl%flag,o_alp_bl%name, "ALP BL", "m2/s2") |
|---|
| 855 | ENDIF |
|---|
| 856 | ENDIF !(iflag_con.GE.3) |
|---|
| 857 | |
|---|
| 858 | CALL histdef2d(iff,o_weakinv%flag,o_weakinv%name, "Weak inversion", "-") |
|---|
| 859 | CALL histdef2d(iff,o_dthmin%flag,o_dthmin%name, "dTheta mini", "K/m") |
|---|
| 860 | CALL histdef2d(iff,o_rh2m%flag,o_rh2m%name, "Relative humidity at 2m", "%" ) |
|---|
| 861 | CALL histdef2d(iff,o_qsat2m%flag,o_qsat2m%name, "Saturant humidity at 2m", "%") |
|---|
| 862 | CALL histdef2d(iff,o_tpot%flag,o_tpot%name, "Surface air potential temperature", "K") |
|---|
| 863 | CALL histdef2d(iff,o_tpote%flag,o_tpote%name, "Surface air equivalent potential temperature", "K") |
|---|
| 864 | CALL histdef2d(iff,o_SWnetOR%flag,o_SWnetOR%name, "Sfce net SW radiation OR", "W/m2") |
|---|
| 865 | CALL histdef2d(iff,o_SWdownOR%flag,o_SWdownOR%name, "Sfce incident SW radiation OR", "W/m2") |
|---|
| 866 | CALL histdef2d(iff,o_LWdownOR%flag,o_LWdownOR%name, "Sfce incident LW radiation OR", "W/m2") |
|---|
| 867 | CALL histdef2d(iff,o_snowl%flag,o_snowl%name, "Solid Large-scale Precip.", "kg/(m2*s)") |
|---|
| 868 | |
|---|
| 869 | CALL histdef2d(iff,o_solldown%flag,o_solldown%name, "Down. IR rad. at surface", "W/m2") |
|---|
| 870 | CALL histdef2d(iff,o_dtsvdfo%flag,o_dtsvdfo%name, "Boundary-layer dTs(o)", "K/s") |
|---|
| 871 | CALL histdef2d(iff,o_dtsvdft%flag,o_dtsvdft%name, "Boundary-layer dTs(t)", "K/s") |
|---|
| 872 | CALL histdef2d(iff,o_dtsvdfg%flag,o_dtsvdfg%name, "Boundary-layer dTs(g)", "K/s") |
|---|
| 873 | CALL histdef2d(iff,o_dtsvdfi%flag,o_dtsvdfi%name, "Boundary-layer dTs(g)", "K/s") |
|---|
| 874 | CALL histdef2d(iff,o_rugs%flag,o_rugs%name, "rugosity", "-" ) |
|---|
| 875 | |
|---|
| 876 | ! Champs 3D: |
|---|
| 877 | CALL histdef3d(iff,o_lwcon%flag,o_lwcon%name, "Cloud liquid water content", "kg/kg") |
|---|
| 878 | CALL histdef3d(iff,o_iwcon%flag,o_iwcon%name, "Cloud ice water content", "kg/kg") |
|---|
| 879 | CALL histdef3d(iff,o_temp%flag,o_temp%name, "Air temperature", "K" ) |
|---|
| 880 | CALL histdef3d(iff,o_theta%flag,o_theta%name, "Potential air temperature", "K" ) |
|---|
| 881 | CALL histdef3d(iff,o_ovap%flag,o_ovap%name, "Specific humidity + dqphy", "kg/kg" ) |
|---|
| 882 | CALL histdef3d(iff,o_ovapinit%flag,o_ovapinit%name, "Specific humidity", "kg/kg" ) |
|---|
| 883 | CALL histdef3d(iff,o_geop%flag,o_geop%name, "Geopotential height", "m2/s2") |
|---|
| 884 | CALL histdef3d(iff,o_vitu%flag,o_vitu%name, "Zonal wind", "m/s" ) |
|---|
| 885 | CALL histdef3d(iff,o_vitv%flag,o_vitv%name, "Meridional wind", "m/s" ) |
|---|
| 886 | CALL histdef3d(iff,o_vitw%flag,o_vitw%name, "Vertical wind", "Pa/s" ) |
|---|
| 887 | CALL histdef3d(iff,o_pres%flag,o_pres%name, "Air pressure", "Pa" ) |
|---|
| 888 | CALL histdef3d(iff,o_rneb%flag,o_rneb%name, "Cloud fraction", "-") |
|---|
| 889 | CALL histdef3d(iff,o_rnebcon%flag,o_rnebcon%name, "Convective Cloud Fraction", "-") |
|---|
| 890 | CALL histdef3d(iff,o_rhum%flag,o_rhum%name, "Relative humidity", "-") |
|---|
| 891 | CALL histdef3d(iff,o_ozone%flag,o_ozone%name, "Ozone concentration", "ppmv") |
|---|
| 892 | CALL histdef3d(iff,o_dtphy%flag,o_dtphy%name, "Physics dT", "K/s") |
|---|
| 893 | CALL histdef3d(iff,o_dqphy%flag,o_dqphy%name, "Physics dQ", "(kg/kg)/s") |
|---|
| 894 | CALL histdef3d(iff,o_cldtau%flag,o_cldtau%name, "Cloud optical thickness", "1") |
|---|
| 895 | CALL histdef3d(iff,o_cldemi%flag,o_cldemi%name, "Cloud optical emissivity", "1") |
|---|
| 896 | !IM: bug ?? dimensionnement variables (klon,klev+1) pmflxr, pmflxs, prfl, psfl |
|---|
| 897 | ! CALL histdef3d(iff,o_pr_con_l%flag,o_pmflxr%name, "Convective precipitation lic", " ") |
|---|
| 898 | ! CALL histdef3d(iff,o_pr_con_i%flag,o_pmflxs%name, "Convective precipitation ice", " ") |
|---|
| 899 | ! CALL histdef3d(iff,o_pr_lsc_l%flag,o_prfl%name, "Large scale precipitation lic", " ") |
|---|
| 900 | ! CALL histdef3d(iff,o_pr_lsc_i%flag,o_psfl%name, "Large scale precipitation ice", " ") |
|---|
| 901 | |
|---|
| 902 | !FH Sorties pour la couche limite |
|---|
| 903 | if (iflag_pbl>1) then |
|---|
| 904 | CALL histdef3d(iff,o_tke%flag,o_tke%name, "TKE", "m2/s2") |
|---|
| 905 | type_ecri(1) = 't_max(X)' |
|---|
| 906 | type_ecri(2) = 't_max(X)' |
|---|
| 907 | type_ecri(3) = 't_max(X)' |
|---|
| 908 | type_ecri(4) = 't_max(X)' |
|---|
| 909 | type_ecri(5) = 't_max(X)' |
|---|
| 910 | CALL histdef3d(iff,o_tke_max%flag,o_tke_max%name, "TKE max", "m2/s2") |
|---|
| 911 | type_ecri(:) = type_ecri_files(:) |
|---|
| 912 | endif |
|---|
| 913 | |
|---|
| 914 | CALL histdef3d(iff,o_kz%flag,o_kz%name, "Kz melange", "m2/s") |
|---|
| 915 | type_ecri(1) = 't_max(X)' |
|---|
| 916 | type_ecri(2) = 't_max(X)' |
|---|
| 917 | type_ecri(3) = 't_max(X)' |
|---|
| 918 | type_ecri(4) = 't_max(X)' |
|---|
| 919 | type_ecri(5) = 't_max(X)' |
|---|
| 920 | CALL histdef3d(iff,o_kz_max%flag,o_kz_max%name, "Kz melange max", "m2/s" ) |
|---|
| 921 | type_ecri(:) = type_ecri_files(:) |
|---|
| 922 | CALL histdef3d(iff,o_clwcon%flag,o_clwcon%name, "Convective Cloud Liquid water content", "kg/kg") |
|---|
| 923 | CALL histdef3d(iff,o_dtdyn%flag,o_dtdyn%name, "Dynamics dT", "K/s") |
|---|
| 924 | CALL histdef3d(iff,o_dqdyn%flag,o_dqdyn%name, "Dynamics dQ", "(kg/kg)/s") |
|---|
| 925 | CALL histdef3d(iff,o_dudyn%flag,o_dudyn%name, "Dynamics dU", "m/s2") |
|---|
| 926 | CALL histdef3d(iff,o_dvdyn%flag,o_dvdyn%name, "Dynamics dV", "m/s2") |
|---|
| 927 | CALL histdef3d(iff,o_dtcon%flag,o_dtcon%name, "Convection dT", "K/s") |
|---|
| 928 | CALL histdef3d(iff,o_ducon%flag,o_ducon%name, "Convection du", "m/s2") |
|---|
| 929 | CALL histdef3d(iff,o_dqcon%flag,o_dqcon%name, "Convection dQ", "(kg/kg)/s") |
|---|
| 930 | |
|---|
| 931 | ! Wakes |
|---|
| 932 | IF(iflag_con.EQ.3) THEN |
|---|
| 933 | IF (iflag_wake == 1) THEN |
|---|
| 934 | CALL histdef2d(iff,o_ale_wk%flag,o_ale_wk%name, "ALE WK", "m2/s2") |
|---|
| 935 | CALL histdef2d(iff,o_alp_wk%flag,o_alp_wk%name, "ALP WK", "m2/s2") |
|---|
| 936 | CALL histdef2d(iff,o_ale%flag,o_ale%name, "ALE", "m2/s2") |
|---|
| 937 | CALL histdef2d(iff,o_alp%flag,o_alp%name, "ALP", "W/m2") |
|---|
| 938 | CALL histdef2d(iff,o_cin%flag,o_cin%name, "Convective INhibition", "m2/s2") |
|---|
| 939 | CALL histdef2d(iff,o_wape%flag,o_WAPE%name, "WAPE", "m2/s2") |
|---|
| 940 | CALL histdef2d(iff,o_wake_h%flag,o_wake_h%name, "wake_h", "-") |
|---|
| 941 | CALL histdef2d(iff,o_wake_s%flag,o_wake_s%name, "wake_s", "-") |
|---|
| 942 | CALL histdef3d(iff,o_dtwak%flag,o_dtwak%name, "Wake dT", "K/s") |
|---|
| 943 | CALL histdef3d(iff,o_dqwak%flag,o_dqwak%name, "Wake dQ", "(kg/kg)/s") |
|---|
| 944 | CALL histdef3d(iff,o_wake_deltat%flag,o_wake_deltat%name, "wake_deltat", " ") |
|---|
| 945 | CALL histdef3d(iff,o_wake_deltaq%flag,o_wake_deltaq%name, "wake_deltaq", " ") |
|---|
| 946 | CALL histdef3d(iff,o_wake_omg%flag,o_wake_omg%name, "wake_omg", " ") |
|---|
| 947 | ENDIF |
|---|
| 948 | CALL histdef3d(iff,o_Vprecip%flag,o_Vprecip%name, "precipitation vertical profile", "-") |
|---|
| 949 | CALL histdef3d(iff,o_ftd%flag,o_ftd%name, "tend temp due aux descentes precip", "-") |
|---|
| 950 | CALL histdef3d(iff,o_fqd%flag,o_fqd%name,"tend vap eau due aux descentes precip", "-") |
|---|
| 951 | ENDIF !(iflag_con.EQ.3) |
|---|
| 952 | |
|---|
| 953 | CALL histdef3d(iff,o_dtlsc%flag,o_dtlsc%name, "Condensation dT", "K/s") |
|---|
| 954 | CALL histdef3d(iff,o_dtlschr%flag,o_dtlschr%name,"Large-scale condensational heating rate","K/s") |
|---|
| 955 | CALL histdef3d(iff,o_dqlsc%flag,o_dqlsc%name, "Condensation dQ", "(kg/kg)/s") |
|---|
| 956 | CALL histdef3d(iff,o_dtvdf%flag,o_dtvdf%name, "Boundary-layer dT", "K/s") |
|---|
| 957 | CALL histdef3d(iff,o_dqvdf%flag,o_dqvdf%name, "Boundary-layer dQ", "(kg/kg)/s") |
|---|
| 958 | CALL histdef3d(iff,o_dteva%flag,o_dteva%name, "Reevaporation dT", "K/s") |
|---|
| 959 | CALL histdef3d(iff,o_dqeva%flag,o_dqeva%name, "Reevaporation dQ", "(kg/kg)/s") |
|---|
| 960 | CALL histdef3d(iff,o_ptconv%flag,o_ptconv%name, "POINTS CONVECTIFS", " ") |
|---|
| 961 | CALL histdef3d(iff,o_ratqs%flag,o_ratqs%name, "RATQS", " ") |
|---|
| 962 | CALL histdef3d(iff,o_dtthe%flag,o_dtthe%name, "Dry adjust. dT", "K/s") |
|---|
| 963 | |
|---|
| 964 | if(iflag_thermals.gt.1) THEN |
|---|
| 965 | CALL histdef3d(iff,o_f_th%flag,o_f_th%name, "Thermal plume mass flux", "K/s") |
|---|
| 966 | CALL histdef3d(iff,o_e_th%flag,o_e_th%name,"Thermal plume entrainment","K/s") |
|---|
| 967 | CALL histdef3d(iff,o_w_th%flag,o_w_th%name,"Thermal plume vertical velocity","m/s") |
|---|
| 968 | CALL histdef3d(iff,o_lambda_th%flag,o_lambda_th%name,"Thermal plume vertical velocity","m/s") |
|---|
| 969 | CALL histdef3d(iff,o_q_th%flag,o_q_th%name, "Thermal plume total humidity", "kg/kg") |
|---|
| 970 | CALL histdef3d(iff,o_a_th%flag,o_a_th%name, "Thermal plume fraction", "") |
|---|
| 971 | CALL histdef3d(iff,o_d_th%flag,o_d_th%name, "Thermal plume detrainment", "K/s") |
|---|
| 972 | endif !iflag_thermals.gt.1 |
|---|
| 973 | CALL histdef2d(iff,o_f0_th%flag,o_f0_th%name, "Thermal closure mass flux", "K/s") |
|---|
| 974 | CALL histdef2d(iff,o_zmax_th%flag,o_zmax_th%name, "Thermal plume height", "K/s") |
|---|
| 975 | CALL histdef3d(iff,o_dqthe%flag,o_dqthe%name, "Dry adjust. dQ", "(kg/kg)/s") |
|---|
| 976 | CALL histdef3d(iff,o_dtajs%flag,o_dtajs%name, "Dry adjust. dT", "K/s") |
|---|
| 977 | CALL histdef3d(iff,o_dqajs%flag,o_dqajs%name, "Dry adjust. dQ", "(kg/kg)/s") |
|---|
| 978 | CALL histdef3d(iff,o_dtswr%flag,o_dtswr%name, "SW radiation dT", "K/s") |
|---|
| 979 | CALL histdef3d(iff,o_dtsw0%flag,o_dtsw0%name, "CS SW radiation dT", "K/s") |
|---|
| 980 | CALL histdef3d(iff,o_dtlwr%flag,o_dtlwr%name, "LW radiation dT", "K/s") |
|---|
| 981 | CALL histdef3d(iff,o_dtlw0%flag,o_dtlw0%name, "CS LW radiation dT", "K/s") |
|---|
| 982 | CALL histdef3d(iff,o_dtec%flag,o_dtec%name, "Cinetic dissip dT", "K/s") |
|---|
| 983 | CALL histdef3d(iff,o_duvdf%flag,o_duvdf%name, "Boundary-layer dU", "m/s2") |
|---|
| 984 | CALL histdef3d(iff,o_dvvdf%flag,o_dvvdf%name, "Boundary-layer dV", "m/s2") |
|---|
| 985 | |
|---|
| 986 | IF (ok_orodr) THEN |
|---|
| 987 | CALL histdef3d(iff,o_duoro%flag,o_duoro%name, "Orography dU", "m/s2") |
|---|
| 988 | CALL histdef3d(iff,o_dvoro%flag,o_dvoro%name, "Orography dV", "m/s2") |
|---|
| 989 | ENDIF |
|---|
| 990 | |
|---|
| 991 | IF (ok_orolf) THEN |
|---|
| 992 | CALL histdef3d(iff,o_dulif%flag,o_dulif%name, "Orography dU", "m/s2") |
|---|
| 993 | CALL histdef3d(iff,o_dvlif%flag,o_dvlif%name, "Orography dV", "m/s2") |
|---|
| 994 | ENDIF |
|---|
| 995 | |
|---|
| 996 | if (nqtot>=3) THEN |
|---|
| 997 | !Attention DO iq=3,nqtot |
|---|
| 998 | DO iq=3,4 |
|---|
| 999 | iiq=niadv(iq) |
|---|
| 1000 | ! CALL histdef3d (iff, o_trac%flag,'o_'//tnom(iq)%name,ttext(iiq), "-" ) |
|---|
| 1001 | CALL histdef3d (iff, o_trac(iq-2)%flag,o_trac(iq-2)%name,ttext(iiq), "-" ) |
|---|
| 1002 | ENDDO |
|---|
| 1003 | endif |
|---|
| 1004 | |
|---|
| 1005 | CALL histend(nid_files(iff)) |
|---|
| 1006 | |
|---|
| 1007 | ndex2d = 0 |
|---|
| 1008 | ndex3d = 0 |
|---|
| 1009 | |
|---|
| 1010 | ENDIF ! clef_files |
|---|
| 1011 | |
|---|
| 1012 | ENDDO ! |
|---|
| 1013 | end subroutine phys_output_open |
|---|
| 1014 | |
|---|
| 1015 | SUBROUTINE histdef2d (iff,flag_var,nomvar,titrevar,unitvar) |
|---|
| 1016 | |
|---|
| 1017 | use ioipsl |
|---|
| 1018 | USE dimphy |
|---|
| 1019 | USE mod_phys_lmdz_para |
|---|
| 1020 | |
|---|
| 1021 | IMPLICIT NONE |
|---|
| 1022 | |
|---|
| 1023 | include "dimensions.h" |
|---|
| 1024 | include "temps.h" |
|---|
| 1025 | include "indicesol.h" |
|---|
| 1026 | include "clesphys.h" |
|---|
| 1027 | |
|---|
| 1028 | integer :: iff |
|---|
| 1029 | integer, dimension(nfiles) :: flag_var |
|---|
| 1030 | character(len=20) :: nomvar |
|---|
| 1031 | character(len=*) :: titrevar |
|---|
| 1032 | character(len=*) :: unitvar |
|---|
| 1033 | |
|---|
| 1034 | real zstophym |
|---|
| 1035 | |
|---|
| 1036 | if (type_ecri(iff)=='inst(X)') then |
|---|
| 1037 | zstophym=zoutm(iff) |
|---|
| 1038 | else |
|---|
| 1039 | zstophym=zdtime |
|---|
| 1040 | endif |
|---|
| 1041 | |
|---|
| 1042 | ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def |
|---|
| 1043 | call conf_physoutputs(nomvar,flag_var) |
|---|
| 1044 | |
|---|
| 1045 | if ( flag_var(iff)<=lev_files(iff) ) then |
|---|
| 1046 | call histdef (nid_files(iff),nomvar,titrevar,unitvar, & |
|---|
| 1047 | iim,jj_nb,nhorim(iff), 1,1,1, -99, 32, & |
|---|
| 1048 | type_ecri(iff), zstophym,zoutm(iff)) |
|---|
| 1049 | endif |
|---|
| 1050 | end subroutine histdef2d |
|---|
| 1051 | |
|---|
| 1052 | SUBROUTINE histdef3d (iff,flag_var,nomvar,titrevar,unitvar) |
|---|
| 1053 | |
|---|
| 1054 | use ioipsl |
|---|
| 1055 | USE dimphy |
|---|
| 1056 | USE mod_phys_lmdz_para |
|---|
| 1057 | |
|---|
| 1058 | IMPLICIT NONE |
|---|
| 1059 | |
|---|
| 1060 | include "dimensions.h" |
|---|
| 1061 | include "temps.h" |
|---|
| 1062 | include "indicesol.h" |
|---|
| 1063 | include "clesphys.h" |
|---|
| 1064 | |
|---|
| 1065 | integer :: iff |
|---|
| 1066 | integer, dimension(nfiles) :: flag_var |
|---|
| 1067 | character(len=20) :: nomvar |
|---|
| 1068 | character(len=*) :: titrevar |
|---|
| 1069 | character(len=*) :: unitvar |
|---|
| 1070 | |
|---|
| 1071 | real zstophym |
|---|
| 1072 | |
|---|
| 1073 | ! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def |
|---|
| 1074 | call conf_physoutputs(nomvar,flag_var) |
|---|
| 1075 | |
|---|
| 1076 | if (type_ecri(iff)=='inst(X)') then |
|---|
| 1077 | zstophym=zoutm(iff) |
|---|
| 1078 | else |
|---|
| 1079 | zstophym=zdtime |
|---|
| 1080 | endif |
|---|
| 1081 | |
|---|
| 1082 | if ( flag_var(iff)<=lev_files(iff) ) then |
|---|
| 1083 | call histdef (nid_files(iff), nomvar, titrevar, unitvar, & |
|---|
| 1084 | iim, jj_nb, nhorim(iff), klev, levmin(iff), & |
|---|
| 1085 | levmax(iff)-levmin(iff)+1, nvertm(iff), 32, type_ecri(iff), & |
|---|
| 1086 | zstophym, zoutm(iff)) |
|---|
| 1087 | endif |
|---|
| 1088 | end subroutine histdef3d |
|---|
| 1089 | |
|---|
| 1090 | SUBROUTINE conf_physoutputs(nam_var,flag_var) |
|---|
| 1091 | !!! Lecture des noms et niveau de sortie des variables dans output.def |
|---|
| 1092 | ! en utilisant les routines getin de IOIPSL |
|---|
| 1093 | use ioipsl |
|---|
| 1094 | |
|---|
| 1095 | IMPLICIT NONE |
|---|
| 1096 | |
|---|
| 1097 | include 'iniprint.h' |
|---|
| 1098 | |
|---|
| 1099 | character(len=20) :: nam_var |
|---|
| 1100 | integer, dimension(nfiles) :: flag_var |
|---|
| 1101 | |
|---|
| 1102 | IF(prt_level>10) WRITE(lunout,*)'Avant getin: nam_var flag_var ',nam_var,flag_var(:) |
|---|
| 1103 | call getin('flag_'//nam_var,flag_var) |
|---|
| 1104 | call getin('name_'//nam_var,nam_var) |
|---|
| 1105 | IF(prt_level>10) WRITE(lunout,*)'Apres getin: nam_var flag_var ',nam_var,flag_var(:) |
|---|
| 1106 | |
|---|
| 1107 | END SUBROUTINE conf_physoutputs |
|---|
| 1108 | |
|---|
| 1109 | END MODULE phys_output_mod |
|---|
| 1110 | |
|---|