Changeset 1350
- Timestamp:
- Apr 14, 2010, 10:55:22 AM (15 years ago)
- Location:
- LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/calcul_STDlev.h
r1146 r1350 3 3 c 4 4 c 5 cIM on initialise les champs en debut du jour ou du mois5 cIM on initialise les variables 6 6 c 7 CALL ini_undefSTD(nlevSTD,itap, 8 $ dtime,ecrit_day,ecrit_mth, 9 $ tnondef,tsumSTD) 10 CALL ini_undefSTD(nlevSTD,itap, 11 $ dtime,ecrit_day,ecrit_mth, 12 $ tnondef,usumSTD) 13 CALL ini_undefSTD(nlevSTD,itap, 14 $ dtime,ecrit_day,ecrit_mth, 15 $ tnondef,vsumSTD) 16 CALL ini_undefSTD(nlevSTD,itap, 17 $ dtime,ecrit_day,ecrit_mth, 18 $ tnondef,wsumSTD) 19 CALL ini_undefSTD(nlevSTD,itap, 20 $ dtime,ecrit_day,ecrit_mth, 21 $ tnondef,phisumSTD) 22 CALL ini_undefSTD(nlevSTD,itap, 23 $ dtime,ecrit_day,ecrit_mth, 24 $ tnondef,qsumSTD) 25 CALL ini_undefSTD(nlevSTD,itap, 26 $ dtime,ecrit_day,ecrit_mth, 27 $ tnondef,rhsumSTD) 28 CALL ini_undefSTD(nlevSTD,itap, 29 $ dtime,ecrit_day,ecrit_mth, 30 $ tnondef,uvsumSTD) 31 CALL ini_undefSTD(nlevSTD,itap, 32 $ dtime,ecrit_day,ecrit_mth, 33 $ tnondef,vqsumSTD) 34 CALL ini_undefSTD(nlevSTD,itap, 35 $ dtime,ecrit_day,ecrit_mth, 36 $ tnondef,vTsumSTD) 37 CALL ini_undefSTD(nlevSTD,itap, 38 $ dtime,ecrit_day,ecrit_mth, 39 $ tnondef,wqsumSTD) 40 CALL ini_undefSTD(nlevSTD,itap, 41 $ dtime,ecrit_day,ecrit_mth, 42 $ tnondef,vphisumSTD) 43 CALL ini_undefSTD(nlevSTD,itap, 44 $ dtime,ecrit_day,ecrit_mth, 45 $ tnondef,wTsumSTD) 46 CALL ini_undefSTD(nlevSTD,itap, 47 $ dtime,ecrit_day,ecrit_mth, 48 $ tnondef,u2sumSTD) 49 CALL ini_undefSTD(nlevSTD,itap, 50 $ dtime,ecrit_day,ecrit_mth, 51 $ tnondef,v2sumSTD) 52 CALL ini_undefSTD(nlevSTD,itap, 53 $ dtime,ecrit_day,ecrit_mth, 54 $ tnondef,T2sumSTD) 7 CALL ini_undefSTD(itap,freq_outNMC) 55 8 c 56 cIM on interpole sur les niveaux STD de pression a chaque pas de temps de la physique 9 cIM on interpole les champs sur les niveaux STD de pression 10 cIM a chaque pas de temps de la physique 57 11 c 58 12 c-------------------------------------------------------c … … 163 117 164 118 c 165 cIM on somme les valeurs definies a chaque pas de temps de la physique ou 166 cIM toutes les 6 heures 119 cIM on somme les valeurs toutes les freq_calNMC secondes 167 120 c 168 oknondef(1:klon,1:nlevSTD,1:nout)=.TRUE. 169 CALL undefSTD(nlevSTD,itap,tlevSTD, 170 $ dtime,ecrit_hf, 171 $ oknondef,tnondef,tsumSTD) 121 CALL undefSTD(itap,freq_calNMC) 172 122 c 173 oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE. 174 CALL undefSTD(nlevSTD,itap,ulevSTD, 175 $ dtime,ecrit_hf, 176 $ oknondef,tnondef,usumSTD) 123 cIM on moyenne a la fin du mois ou du jour (toutes les freq_outNMC secondes) 177 124 c 178 oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE. 179 CALL undefSTD(nlevSTD,itap,vlevSTD, 180 $ dtime,ecrit_hf, 181 $ oknondef,tnondef,vsumSTD) 125 CALL moy_undefSTD(itap,freq_outNMC,freq_moyNMC) 182 126 c 183 oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE. 184 CALL undefSTD(nlevSTD,itap,wlevSTD, 185 $ dtime,ecrit_hf, 186 $ oknondef,tnondef,wsumSTD) 187 c 188 oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE. 189 CALL undefSTD(nlevSTD,itap,philevSTD, 190 $ dtime,ecrit_hf, 191 $ oknondef,tnondef,phisumSTD) 192 c 193 oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE. 194 CALL undefSTD(nlevSTD,itap,qlevSTD, 195 $ dtime,ecrit_hf, 196 $ oknondef,tnondef,qsumSTD) 197 c 198 oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE. 199 CALL undefSTD(nlevSTD,itap,rhlevSTD, 200 $ dtime,ecrit_hf, 201 $ oknondef,tnondef,rhsumSTD) 202 c 203 oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE. 204 CALL undefSTD(nlevSTD,itap,uvSTD, 205 $ dtime,ecrit_hf, 206 $ oknondef,tnondef,uvsumSTD) 207 c 208 oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE. 209 CALL undefSTD(nlevSTD,itap,vqSTD, 210 $ dtime,ecrit_hf, 211 $ oknondef,tnondef,vqsumSTD) 212 c 213 oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE. 214 CALL undefSTD(nlevSTD,itap,vTSTD, 215 $ dtime,ecrit_hf, 216 $ oknondef,tnondef,vTsumSTD) 217 c 218 oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE. 219 CALL undefSTD(nlevSTD,itap,wqSTD, 220 $ dtime,ecrit_hf, 221 $ oknondef,tnondef,wqsumSTD) 222 c 223 oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE. 224 CALL undefSTD(nlevSTD,itap,vphiSTD, 225 $ dtime,ecrit_hf, 226 $ oknondef,tnondef,vphisumSTD) 227 c 228 oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE. 229 CALL undefSTD(nlevSTD,itap,wTSTD, 230 $ dtime,ecrit_hf, 231 $ oknondef,tnondef,wTsumSTD) 232 c 233 oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE. 234 CALL undefSTD(nlevSTD,itap,u2STD, 235 $ dtime,ecrit_hf, 236 $ oknondef,tnondef,u2sumSTD) 237 c 238 oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE. 239 CALL undefSTD(nlevSTD,itap,v2STD, 240 $ dtime,ecrit_hf, 241 $ oknondef,tnondef,v2sumSTD) 242 c 243 oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE. 244 CALL undefSTD(nlevSTD,itap,T2STD, 245 $ dtime,ecrit_hf, 246 $ oknondef,tnondef,T2sumSTD) 247 c 248 cIM on moyenne a la fin du jour ou du mois 249 c 250 CALL moy_undefSTD(nlevSTD,itap, 251 $ dtime,ecrit_day,ecrit_mth,ecrit_hf2mth, 252 $ tnondef,tsumSTD) 253 c 254 CALL moy_undefSTD(nlevSTD,itap, 255 $ dtime,ecrit_day,ecrit_mth,ecrit_hf2mth, 256 $ tnondef,usumSTD) 257 c 258 CALL moy_undefSTD(nlevSTD,itap, 259 $ dtime,ecrit_day,ecrit_mth,ecrit_hf2mth, 260 $ tnondef,vsumSTD) 261 c 262 CALL moy_undefSTD(nlevSTD,itap, 263 $ dtime,ecrit_day,ecrit_mth,ecrit_hf2mth, 264 $ tnondef,wsumSTD) 265 c 266 CALL moy_undefSTD(nlevSTD,itap, 267 $ dtime,ecrit_day,ecrit_mth,ecrit_hf2mth, 268 $ tnondef,phisumSTD) 269 c 270 CALL moy_undefSTD(nlevSTD,itap, 271 $ dtime,ecrit_day,ecrit_mth,ecrit_hf2mth, 272 $ tnondef,qsumSTD) 273 c 274 CALL moy_undefSTD(nlevSTD,itap, 275 $ dtime,ecrit_day,ecrit_mth,ecrit_hf2mth, 276 $ tnondef,rhsumSTD) 277 c 278 CALL moy_undefSTD(nlevSTD,itap, 279 $ dtime,ecrit_day,ecrit_mth,ecrit_hf2mth, 280 $ tnondef,uvsumSTD) 281 c 282 CALL moy_undefSTD(nlevSTD,itap, 283 $ dtime,ecrit_day,ecrit_mth,ecrit_hf2mth, 284 $ tnondef,vqsumSTD) 285 c 286 CALL moy_undefSTD(nlevSTD,itap, 287 $ dtime,ecrit_day,ecrit_mth,ecrit_hf2mth, 288 $ tnondef,vTsumSTD) 289 c 290 CALL moy_undefSTD(nlevSTD,itap, 291 $ dtime,ecrit_day,ecrit_mth,ecrit_hf2mth, 292 $ tnondef,wqsumSTD) 293 c 294 CALL moy_undefSTD(nlevSTD,itap, 295 $ dtime,ecrit_day,ecrit_mth,ecrit_hf2mth, 296 $ tnondef,vphisumSTD) 297 c 298 CALL moy_undefSTD(nlevSTD,itap, 299 $ dtime,ecrit_day,ecrit_mth,ecrit_hf2mth, 300 $ tnondef,wTsumSTD) 301 c 302 CALL moy_undefSTD(nlevSTD,itap, 303 $ dtime,ecrit_day,ecrit_mth,ecrit_hf2mth, 304 $ tnondef,u2sumSTD) 305 c 306 CALL moy_undefSTD(nlevSTD,itap, 307 $ dtime,ecrit_day,ecrit_mth,ecrit_hf2mth, 308 $ tnondef,v2sumSTD) 309 c 310 CALL moy_undefSTD(nlevSTD,itap, 311 $ dtime,ecrit_day,ecrit_mth,ecrit_hf2mth, 312 $ tnondef,T2sumSTD) 313 c 314 cIM interpolation a chaque pas de temps du SWup(clr) et SWdn(clr) a 200 hPa 127 CALL plevel(klon,klev,.true.,pplay,50000., 128 & zphi/RG,geo500) 129 130 cIM on interpole a chaque pas de temps le SWup(clr) et SWdn(clr) a 200 hPa 315 131 c 316 132 CALL plevel(klon,klevp1,.true.,paprs,20000., -
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/clesphys.h
r1279 r1350 43 43 !IM lev_histday : niveau sorties journalieres 44 44 !IM lev_histmth : niveau sorties mensuelles 45 !IM lev_histdayNMC : on peut sortir soit sur 8 (comme AR5) ou bien 46 ! sur 17 niveaux de pression 45 47 INTEGER lev_histhf, lev_histday, lev_histmth 48 INTEGER lev_histdayNMC 46 49 Integer lev_histins, lev_histLES 50 !IM freq_outNMC : frequences de sortie fichiers niveaux de pression (histmthNMC, histdayNMC, histhfNMC) 51 !IM freq_calNMC : frequences de calcul fis. hist*NMC.nc 52 !IM pasphys : pas de temps de physique (secondes) 53 REAL pasphys 54 REAL freq_outNMC(3) , freq_calNMC(3) 47 55 CHARACTER(len=4) type_run 48 56 ! aer_type: pour utiliser un fichier constant dans readaerosol … … 68 76 & , f_cdrag_ter,f_cdrag_oce,f_rugoro & 69 77 & , lev_histhf, lev_histday, lev_histmth & 70 & , lev_histins, lev_histLES & 78 & , lev_histins, lev_histLES, lev_histdayNMC & 79 & , pasphys, freq_outNMC, freq_calNMC & 71 80 & , type_run, ok_isccp, ok_regdyn, ok_cosp & 72 81 & , lonmin_ins, lonmax_ins, latmin_ins, latmax_ins & -
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/conf_phys.F90
r1336 r1350 139 139 REAL, SAVE :: fmagic_omp, pmagic_omp 140 140 INTEGER,SAVE :: iflag_pbl_omp,lev_histhf_omp,lev_histday_omp,lev_histmth_omp 141 Integer,save :: lev_histins_omp, lev_histLES_omp 141 Integer, save :: lev_histins_omp, lev_histLES_omp 142 INTEGER, SAVE :: lev_histdayNMC_omp 143 REAL, SAVE :: freq_outNMC_omp(3), freq_calNMC_omp(3) 142 144 CHARACTER*4, SAVE :: type_run_omp 143 145 LOGICAL,SAVE :: ok_isccp_omp … … 1086 1088 lev_histLES_omp = 1 1087 1089 call getin('lev_histLES',lev_histLES_omp) 1088 ! 1090 ! 1091 !Config Key = lev_histdayNMC 1092 !Config Desc = 1093 !Config Def = 8 1094 !Config Help = 1095 ! 1096 lev_histdayNMC_omp = 8 1097 call getin('lev_histdayNMC',lev_histdayNMC_omp) 1098 ! 1099 !histNMC BEG 1100 !Config Key = freq_outNMC 1101 !Config Desc = freq_outNMC(1) = frequence de sortie fichiers histmthNMC 1102 !Config Desc = freq_outNMC(2) = frequence de sortie fichiers histdayNMC 1103 !Config Desc = freq_outNMC(3) = frequence de sortie fichiers histhfNMC 1104 !Config Def = 2592000., 86400., 21600. 1105 !Config Help = 1106 ! 1107 freq_outNMC_omp(1) = 2592000. 1108 freq_outNMC_omp(2) = 86400. 1109 freq_outNMC_omp(3) = 21600. 1110 call getin('freq_outNMC',freq_outNMC_omp) 1111 ! 1112 !Config Key = freq_calNMC 1113 !Config Desc = freq_calNMC(1) = frequence de calcul fichiers histmthNMC 1114 !Config Desc = freq_calNMC(2) = frequence de calcul fichiers histdayNMC 1115 !Config Desc = freq_calNMC(3) = frequence de calcul fichiers histhfNMC 1116 !Config Def = pasphys 1117 !Config Help = 1118 ! 1119 freq_calNMC_omp(1) = pasphys 1120 freq_calNMC_omp(2) = pasphys 1121 freq_calNMC_omp(3) = pasphys 1122 call getin('freq_calNMC',freq_calNMC_omp) 1123 ! 1089 1124 !Config Key = type_run 1090 1125 !Config Desc = … … 1421 1456 lev_histins = lev_histins_omp 1422 1457 lev_histLES = lev_histLES_omp 1458 lev_histdayNMC = lev_histdayNMC_omp 1459 freq_outNMC(:) = freq_outNMC_omp(:) 1460 freq_calNMC(:) = freq_calNMC_omp(:) 1423 1461 1424 1462 type_ocean = type_ocean_omp … … 1603 1641 write(numout,*)' lev_histins = ',lev_histins 1604 1642 write(numout,*)' lev_histLES = ',lev_histLES 1643 write(numout,*)' lev_histdayNMC = ',lev_histdayNMC 1644 write(numout,*)' freq_outNMC = ',freq_outNMC 1645 write(numout,*)' freq_calNMC = ',freq_calNMC 1605 1646 write(numout,*)' iflag_pbl = ', iflag_pbl 1606 1647 write(numout,*)' iflag_thermals = ', iflag_thermals -
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/ini_histmthNMC.h
r1299 r1350 2 2 ! $Id$ 3 3 ! 4 IF (ok_mensuel) THEN5 c6 4 c$OMP MASTER 7 5 8 zstophy = dtime9 zstohf = ecrit_hf10 zstomth = ecrit_mth11 zout = ecrit_mth12 6 c 13 idayref = day_ref 14 CALL ymds2ju(annee_ref, 1, idayref, 0.0, zjulian) 7 zout = freq_outNMC(1) 8 c 9 idayref = day_ref 10 CALL ymds2ju(annee_ref, 1, idayref, 0.0, zjulian) 15 11 c 16 12 cym CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlon,zx_lon) … … 25 21 cym CALL histbeg("histNMC.nc", iim,zx_lon(:,1), jjmp1,zx_lat(1,:), 26 22 cym . 1,iim,1,jjmp1, itau_phy, zjulian, dtime, 27 cym . nhori, nid_ nmc)23 cym . nhori, nid_mthnmc) 28 24 29 CALL histbeg_phy("hist NMC",itau_phy, zjulian, dtime,30 . nhori, nid_ nmc)25 CALL histbeg_phy("histmthNMC",itau_phy, zjulian, dtime, 26 . nhori, nid_mthnmc) 31 27 c 32 CALL histvert(nid_ nmc, "presnivs", "Vertical levels", "mb",33 . nlevSTD, rlevSTD /100., nvert)28 CALL histvert(nid_mthnmc, "plev", "pressure", "Pa", 29 . nlevSTD, rlevSTD, nvert) 34 30 ccc 35 31 ccc Champs 3D interpolles sur des niveaux de pression du NMC 36 32 ccc 37 IF(type_run.EQ."ENSP".OR.type_run.EQ."CLIM") THEN38 33 c 39 CALL histdef(nid_nmc, "temp", 40 . "Temperature","K", 34 c ATTENTION : pour AMIP2 on interpole t,u,v,wphi,q,rh 35 c sur les niveaux du NMC et on somme & moyenne 36 c toutes les freq_moyNMC secondes par des routines undefSTD et 37 c moy_undefSTD pour eliminer les valeurs "undef" 38 c de la moyenne mensuelle 39 c ======> le "inst(X)" ci-dessous est par consequence factice ! 40 c 41 c 42 CALL histdef(nid_mthnmc, "tnondef", 43 . "Valeurs non-definies","-", 41 44 . iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32, 42 45 . "inst(X)", zout,zout) 43 46 c 44 CALL histdef(nid_nmc, "phi",45 . "Geopotential", "m",47 CALL histdef(nid_mthnmc, "ta", 48 . "Air temperature","K", 46 49 . iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32, 47 50 . "inst(X)", zout,zout) 48 51 c 49 CALL histdef(nid_nmc, "q",50 . "Specific humidity","kg/kg",52 CALL histdef(nid_mthnmc, "zg", 53 . "Geopotential height", "m", 51 54 . iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32, 52 55 . "inst(X)", zout,zout) 53 56 c 54 CALL histdef(nid_nmc, "rh", 57 CALL histdef(nid_mthnmc, "hus", 58 . "Specific humidity","1", 59 . iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32, 60 . "inst(X)", zout,zout) 61 c 62 CALL histdef(nid_mthnmc, "hur", 55 63 . "Relative humidity", "%", 56 64 . iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32, 57 65 . "inst(X)", zout,zout) 58 66 c 59 CALL histdef(nid_ nmc, "u",60 . " Zonal wind","m/s",67 CALL histdef(nid_mthnmc, "ua", 68 . "Eastward wind","m s-1", 61 69 . iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32, 62 70 . "inst(X)", zout,zout) 63 71 c 64 CALL histdef(nid_ nmc, "v",65 . " Meridional wind","m/s",72 CALL histdef(nid_mthnmc, "va", 73 . "Northward wind","m s-1", 66 74 . iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32, 67 75 . "inst(X)", zout,zout) 68 76 c 69 ELSE IF(type_run.EQ."AMIP".OR.type_run.EQ."CFMI") THEN 70 c 71 c ATTENTION : pour AMIP2 on interpole t,u,v,wphi,q,rh 72 c sur les niveaux du NMC et on somme & moyenne 73 c toutes les 6 heures par des routines undefSTD et 74 c moy_undefSTD pour eliminer les valeurs "undef" 75 c de la moyenne mensuelle 76 c ======> le "inst(X)" ci-dessous est par consequence factice ! 77 c 78 CALL histdef(nid_nmc, "temp", 79 . "Temperature","K", 77 CALL histdef(nid_mthnmc, "wap", 78 . "Lagrangian tendency of air pressure","Pa s-1", 80 79 . iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32, 81 80 . "inst(X)", zout,zout) 82 81 c 83 CALL histdef(nid_nmc, "phi", 84 . "Geopotential ", "m", 85 . iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32, 86 . "inst(X)", zout,zout) 87 c 88 CALL histdef(nid_nmc, "q", 89 . "Specific humidity","kg/kg", 90 . iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32, 91 . "inst(X)", zout,zout) 92 c 93 CALL histdef(nid_nmc, "rh", 94 . "Relative humidity", "%", 95 . iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32, 96 . "inst(X)", zout,zout) 97 c 98 CALL histdef(nid_nmc, "u", 99 . "Zonal wind","m/s", 100 . iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32, 101 . "inst(X)", zout,zout) 102 c 103 CALL histdef(nid_nmc, "v", 104 . "Meridional wind","m/s", 105 . iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32, 106 . "inst(X)", zout,zout) 107 c 108 CALL histdef(nid_nmc, "w", 109 . "Vertical motion","Pa/s", 110 . iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32, 111 . "inst(X)", zout,zout) 112 c 113 c ATTENTION : pour AMIP2 on interpole t,u,v,wphi,q,rh 114 c sur les niveaux du NMC et on somme & moyenne 115 c toutes les 6 heures par des routines undefSTD et 116 c moy_undefSTD pour eliminer les valeurs "undef" 117 c de la moyenne mensuelle 118 c ======> le "inst(X)" ci-dessus est par consequence factice ! 119 c 120 c 121 CALL histdef(nid_nmc, "psbg", 82 CALL histdef(nid_mthnmc, "psbg", 122 83 . "Pressure sfce below ground","%", 123 84 . iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32, 124 85 . "inst(X)", zout,zout) 125 86 c 126 CALL histdef(nid_ nmc, "uv",87 CALL histdef(nid_mthnmc, "uv", 127 88 . "uv ", 128 89 . "m2/s2",iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32, 129 90 . "inst(X)", zout,zout) 130 91 c 131 CALL histdef(nid_ nmc, "vq",92 CALL histdef(nid_mthnmc, "vq", 132 93 . "vq ", 133 94 . "m/s * (kg/kg)",iim,jj_nb,nhori, … … 135 96 . "inst(X)", zout,zout) 136 97 c 137 CALL histdef(nid_ nmc, "vT",98 CALL histdef(nid_mthnmc, "vT", 138 99 . "vT ", 139 100 . "mK/s",iim,jj_nb,nhori, … … 141 102 . "inst(X)", zout,zout) 142 103 c 143 CALL histdef(nid_ nmc, "wq",104 CALL histdef(nid_mthnmc, "wq", 144 105 . "wq ", 145 106 . "(Pa/s)*(kg/kg)",iim,jj_nb,nhori, … … 147 108 . "inst(X)", zout,zout) 148 109 c 149 CALL histdef(nid_ nmc, "vphi",110 CALL histdef(nid_mthnmc, "vphi", 150 111 . "vphi ", 151 112 . "m2/s",iim,jj_nb,nhori, … … 153 114 . "inst(X)", zout,zout) 154 115 c 155 CALL histdef(nid_ nmc, "wT",116 CALL histdef(nid_mthnmc, "wT", 156 117 . "wT ", 157 118 . "K*Pa/s",iim,jj_nb,nhori, … … 159 120 . "inst(X)", zout,zout) 160 121 c 161 CALL histdef(nid_ nmc, "uxu",122 CALL histdef(nid_mthnmc, "uxu", 162 123 . "u2 ", 163 124 . "m2/s2",iim,jj_nb,nhori, … … 165 126 . "inst(X)", zout,zout) 166 127 c 167 CALL histdef(nid_ nmc, "vxv",128 CALL histdef(nid_mthnmc, "vxv", 168 129 . "v2 ", 169 130 . "m2/s2",iim,jj_nb,nhori, … … 171 132 . "inst(X)", zout,zout) 172 133 c 173 CALL histdef(nid_ nmc, "TxT",134 CALL histdef(nid_mthnmc, "TxT", 174 135 . "T2 ", 175 136 . "K2",iim,jj_nb,nhori, … … 177 138 . "inst(X)", zout,zout) 178 139 c 179 ENDIF !(type_run.EQ."AMIP")180 140 181 CALL histend(nid_ nmc)141 CALL histend(nid_mthnmc) 182 142 c 183 143 c$OMP END MASTER 184 185 ENDIF ! fin de test sur ok_mensuel -
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/ini_undefSTD.F
r776 r1350 3 3 ! 4 4 5 SUBROUTINE ini_undefSTD(nlevSTD,itap, 6 $ dtime,ecrit_day,ecrit_mth, 7 $ tnondef,tsumSTD) 5 SUBROUTINE ini_undefSTD(itap, 6 $ freq_outNMC) 8 7 USE dimphy 8 USE phys_state_var_mod ! Variables sauvegardees de la physique 9 9 IMPLICIT none 10 10 c … … 27 27 c nout=3 !var. mensuelle "NMC" moyennee toutes les 6heures 28 28 c 29 c 30 c NB: mettre "inst(X)" dans le write_histXXX.h ! 29 c NB: mettre "inst(X)" dans le write_hist*NMC.h ! 31 30 c==================================================================== 32 31 c … … 36 35 cym #include "dimphy.h" 37 36 c variables Input/Output 38 39 PARAMETER(klevSTD=17)40 REAL dtime 41 REAL ecrit_day,ecrit_mth 37 c INTEGER nlevSTD, klevSTD, itap 38 INTEGER itap 39 c PARAMETER(klevSTD=17) 40 c REAL dtime 42 41 c 43 42 c variables locales 44 INTEGER i, k, nout 45 PARAMETER(nout=3) !nout=1 day/nout=2 mth/nout=3 NMC 43 c INTEGER i, k, nout, n 44 INTEGER i, k, n 45 c PARAMETER(nout=3) !nout=1 day/nout=2 mth/nout=3 NMC 46 REAL freq_outNMC(nout) 46 47 c 47 48 c variables Output 48 49 49 c REAL tnondef(klon,klevSTD,nout) 50 c REAL tsumSTD(klon,klevSTD,nout) 50 51 c 51 c initialisation variables journalieres en debut de journee 52 DO n=1, nout 52 53 c 53 IF(MOD(itap,NINT(ecrit_day/dtime)).EQ.1.) THEN 54 DO k=1, nlevSTD 55 DO i=1, klon 56 tnondef(i,k,1)=0. 57 tsumSTD(i,k,1)=0. 58 ENDDO !i 59 ENDDO !k 60 ENDIF 54 c initialisation variables en debut de la journee ou du mois 61 55 c 62 c initialisation variables mensuelles (calculees a chaque pas de temps) 63 c en debut de mois : nout=2 56 IF(MOD(itap,NINT(freq_outNMC(n)/dtime)).EQ.1.) THEN 64 57 c 65 IF(MOD(itap,NINT(ecrit_mth/dtime)).EQ.1.) THEN 58 c print*,'n freq_ini=',n,itap,freq_outNMC(n)/dtime 66 59 c 67 DO k=1, nlevSTD 68 DO i=1, klon 69 tnondef(i,k,2)=0. 70 tsumSTD(i,k,2)=0. 71 ENDDO !i 72 ENDDO !k 60 DO k=1, nlevSTD 61 DO i=1, klon 62 tnondef(i,k,n)=0. 63 tsumSTD(i,k,n)=0. 64 usumSTD(i,k,n)=0. 65 vsumSTD(i,k,n)=0. 66 wsumSTD(i,k,n)=0. 67 phisumSTD(i,k,n)=0. 68 qsumSTD(i,k,n)=0. 69 rhsumSTD(i,k,n)=0. 70 uvsumSTD(i,k,n)=0. 71 vqsumSTD(i,k,n)=0. 72 vTsumSTD(i,k,n)=0. 73 wqsumSTD(i,k,n)=0. 74 vphisumSTD(i,k,n)=0. 75 wTsumSTD(i,k,n)=0. 76 u2sumSTD(i,k,n)=0. 77 v2sumSTD(i,k,n)=0. 78 T2sumSTD(i,k,n)=0. 79 ENDDO !i 80 ENDDO !k 73 81 c 74 c initialisation variables mensuelles - runs type Amip - (calculees toutes les 6h) 75 c en debut de mois : nout = 3 82 c if(n.EQ.1.AND.i.EQ.4513.AND.k.EQ.17) THEN 83 if(n.EQ.1.AND.i.EQ.1128.AND.k.EQ.17) THEN 84 print*,'itap rlon rlat tlevSTD=',itap,rlon(i),rlat(i), 85 $tlevSTD(i,k) 86 endif 76 87 c 77 DO k=1, nlevSTD 78 DO i=1, klon 79 tnondef(i,k,3)=0. 80 tsumSTD(i,k,3)=0. 81 ENDDO !i 82 ENDDO !k 88 ENDIF !MOD(itap,NINT(freq_outNMC(n)/dtime)).EQ.1. 83 89 c 84 END IF90 ENDDO !n 85 91 c 86 92 RETURN -
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/moy_undefSTD.F
r1279 r1350 2 2 ! $Header$ 3 3 ! 4 SUBROUTINE moy_undefSTD(nlevSTD,itap, 5 $ dtime,ecrit_day,ecrit_mth,ecrit_hf2mth, 6 $ tnondef,tsumSTD) 4 c SUBROUTINE moy_undefSTD(nlevSTD,itap, 5 c $ dtime,freq_outNMC,freq_moyNMC, 6 c $ tnondef,tsumSTD) 7 SUBROUTINE moy_undefSTD(itap,freq_outNMC,freq_moyNMC) 7 8 USE netcdf 8 9 USE dimphy 10 USE phys_state_var_mod ! Variables sauvegardees de la physique 9 11 IMPLICIT none 10 12 c … … 14 16 c 15 17 c Moyenne - a des frequences differentes - des valeurs bien definies 16 c (.NE. 1.E+20) des variables interpolees a un niveau de18 c (.NE.missing_val) des variables interpolees a un niveau de 17 19 c pression. 18 20 c 1) les variables de type "day" (nout=1) ou "mth" (nout=2) sont sommees … … 23 25 c 24 26 c 25 c NB: mettre "inst(X)" dans le write_hist XXX.h !27 c NB: mettre "inst(X)" dans le write_hist*NMC.h ! 26 28 c==================================================================== 27 29 cym#include "dimensions.h" … … 32 34 c 33 35 c variables Input 34 35 36 REAL dtime, ecrit_day, ecrit_mth, ecrit_hf2mth36 c INTEGER nlevSTD, klevSTD, itap 37 c PARAMETER(klevSTD=17) 38 INTEGER itap 37 39 c 38 40 c variables locales 39 INTEGER i, k, nout 40 PARAMETER(nout=3) !nout=1 day/nout=2 mth/nout=3 NMC 41 c INTEGER i, k, nout, n 42 c PARAMETER(nout=3) !nout=1 day/nout=2 mth/nout=3 NMC 43 INTEGER i, k, n 44 c REAL dtime, freq_outNMC(nout), freq_moyNMC(nout) 45 REAL freq_outNMC(nout), freq_moyNMC(nout) 41 46 c 42 47 c variables Output 43 44 48 c REAL tnondef(klon,klevSTD,nout) 49 c REAL tsumSTD(klon,klevSTD,nout) 45 50 c 46 51 REAL missing_val … … 48 53 missing_val=nf90_fill_real 49 54 c 55 DO n=1, nout 56 c 50 57 c calcul 1 fois par jour 51 58 c 52 IF(MOD(itap,NINT(ecrit_day/dtime)).EQ.0) THEN 53 DO k=1, nlevSTD 54 DO i=1, klon 55 IF (NINT(tnondef(i,k,1)).NE.NINT(ecrit_day/dtime)) THEN 56 tsumSTD(i,k,1)=tsumSTD(i,k,1)/ 57 $ (ecrit_day/dtime-tnondef(i,k,1)) 58 ELSE 59 tsumSTD(i,k,1)=missing_val 60 ENDIF !tnondef 61 ENDDO !i 62 ENDDO !k 63 ENDIF !MOD(itap,ecrit_day).EQ.0 59 IF(MOD(itap,NINT(freq_outNMC(n)/dtime)).EQ.0) THEN 64 60 c 65 c calcul 1 fois par mois61 c print*,'n freq_ini=',n,itap,freq_outNMC(n),missing_val 66 62 c 67 IF(MOD(itap,NINT(ecrit_mth/dtime)).EQ.0) THEN 68 DO k=1, nlevSTD 69 DO i=1, klon 70 IF(tnondef(i,k,2).NE.ecrit_mth/dtime) THEN 71 tsumSTD(i,k,2)=tsumSTD(i,k,2)/ 72 $ (ecrit_mth/dtime-tnondef(i,k,2)) 73 ELSE 74 tsumSTD(i,k,2)=missing_val 75 ENDIF !tnondef 63 DO k=1, nlevSTD 64 DO i=1, klon 65 IF(tnondef(i,k,n).NE.(freq_moyNMC(n))) THEN 66 tsumSTD(i,k,n)=tsumSTD(i,k,n)/ 67 $ (freq_moyNMC(n)-tnondef(i,k,n)) 68 cIM BEG 69 usumSTD(i,k,n)=usumSTD(i,k,n)/ 70 $ (freq_moyNMC(n)-tnondef(i,k,n)) 71 vsumSTD(i,k,n)=vsumSTD(i,k,n)/ 72 $ (freq_moyNMC(n)-tnondef(i,k,n)) 73 wsumSTD(i,k,n)=wsumSTD(i,k,n)/ 74 $ (freq_moyNMC(n)-tnondef(i,k,n)) 75 phisumSTD(i,k,n)=phisumSTD(i,k,n)/ 76 $ (freq_moyNMC(n)-tnondef(i,k,n)) 77 qsumSTD(i,k,n)=qsumSTD(i,k,n)/ 78 $ (freq_moyNMC(n)-tnondef(i,k,n)) 79 rhsumSTD(i,k,n)=rhsumSTD(i,k,n)/ 80 $ (freq_moyNMC(n)-tnondef(i,k,n)) 81 uvsumSTD(i,k,n)=uvsumSTD(i,k,n)/ 82 $ (freq_moyNMC(n)-tnondef(i,k,n)) 83 vqsumSTD(i,k,n)=vqsumSTD(i,k,n)/ 84 $ (freq_moyNMC(n)-tnondef(i,k,n)) 85 vTsumSTD(i,k,n)=vTsumSTD(i,k,n)/ 86 $ (freq_moyNMC(n)-tnondef(i,k,n)) 87 wqsumSTD(i,k,n)=wqsumSTD(i,k,n)/ 88 $ (freq_moyNMC(n)-tnondef(i,k,n)) 89 vphisumSTD(i,k,n)=vphisumSTD(i,k,n)/ 90 $ (freq_moyNMC(n)-tnondef(i,k,n)) 91 wTsumSTD(i,k,n)=wTsumSTD(i,k,n)/ 92 $ (freq_moyNMC(n)-tnondef(i,k,n)) 93 u2sumSTD(i,k,n)=u2sumSTD(i,k,n)/ 94 $ (freq_moyNMC(n)-tnondef(i,k,n)) 95 v2sumSTD(i,k,n)=v2sumSTD(i,k,n)/ 96 $ (freq_moyNMC(n)-tnondef(i,k,n)) 97 T2sumSTD(i,k,n)=T2sumSTD(i,k,n)/ 98 $ (freq_moyNMC(n)-tnondef(i,k,n)) 99 cIM END 100 ELSE 101 tsumSTD(i,k,n)=missing_val 102 usumSTD(i,k,n)=missing_val 103 vsumSTD(i,k,n)=missing_val 104 wsumSTD(i,k,n)=missing_val 105 phisumSTD(i,k,n)=missing_val 106 qsumSTD(i,k,n)=missing_val 107 rhsumSTD(i,k,n)=missing_val 108 uvsumSTD(i,k,n)=missing_val 109 vqsumSTD(i,k,n)=missing_val 110 vTsumSTD(i,k,n)=missing_val 111 wqsumSTD(i,k,n)=missing_val 112 vphisumSTD(i,k,n)=missing_val 113 wTsumSTD(i,k,n)=missing_val 114 u2sumSTD(i,k,n)=missing_val 115 v2sumSTD(i,k,n)=missing_val 116 T2sumSTD(i,k,n)=missing_val 117 ENDIF !tnondef(i,k,n).NE.(freq_moyNMC(n)) 76 118 c 77 IF(tnondef(i,k,3).NE.NINT(ecrit_hf2mth)) THEN 78 tsumSTD(i,k,3)=tsumSTD(i,k,3)/ 79 $ (ecrit_hf2mth-tnondef(i,k,3)) 80 ELSE 81 tsumSTD(i,k,3)=missing_val 82 ENDIF !tnondef 119 c if(n.EQ.1.AND.i.EQ.4513.AND.k.EQ.17) THEN 120 if(n.EQ.1.AND.i.EQ.1128.AND.k.EQ.17) THEN 121 print*,'itap rlon rlat tlevSTD=',itap,rlon(i),rlat(i), 122 $tlevSTD(i,k) 123 endif 83 124 c 84 ENDDO !i 85 ENDDO !k 86 ENDIF !MOD 125 ENDDO !i 126 ENDDO !k 127 ENDIF !MOD(itap,NINT(freq_outNMC(n)/dtime)).EQ.0 128 c 129 ENDDO !n 87 130 c 88 131 RETURN -
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/phys_state_var_mod.F90
r1322 r1350 11 11 USE dimphy 12 12 INTEGER, PARAMETER :: nlevSTD=17 13 INTEGER, PARAMETER :: nlevSTD8=8 14 INTEGER, PARAMETER :: nlevSTD3=3 13 15 INTEGER, PARAMETER :: nout=3 14 16 INTEGER, PARAMETER :: napisccp=1 15 17 INTEGER, SAVE :: radpas 18 !$OMP THREADPRIVATE(radpas) 16 19 REAL, SAVE :: dtime, solaire_etat0 17 !$OMP THREADPRIVATE(radpas)18 20 !$OMP THREADPRIVATE(dtime, solaire_etat0) 19 21 … … 118 120 REAL,ALLOCATABLE,SAVE :: T2sumSTD(:,:,:) 119 121 !$OMP THREADPRIVATE(T2sumSTD) 122 !IM begin 123 REAL,ALLOCATABLE,SAVE :: wlevSTD(:,:), ulevSTD(:,:), vlevSTD(:,:) 124 REAL,ALLOCATABLE,SAVE :: tlevSTD(:,:), qlevSTD(:,:), rhlevSTD(:,:) 125 REAL,ALLOCATABLE,SAVE :: philevSTD(:,:) 126 REAL,ALLOCATABLE,SAVE :: uvSTD(:,:) 127 REAL,ALLOCATABLE,SAVE :: vqSTD(:,:) 128 REAL,ALLOCATABLE,SAVE :: vTSTD(:,:) 129 REAL,ALLOCATABLE,SAVE :: wqSTD(:,:) 130 REAL,ALLOCATABLE,SAVE :: vphiSTD(:,:) 131 REAL,ALLOCATABLE,SAVE :: wTSTD(:,:) 132 REAL,ALLOCATABLE,SAVE :: u2STD(:,:) 133 REAL,ALLOCATABLE,SAVE :: v2STD(:,:) 134 REAL,ALLOCATABLE,SAVE :: T2STD(:,:) 135 !IM end 120 136 INTEGER,ALLOCATABLE,SAVE :: seed_old(:,:) 121 137 !$OMP THREADPRIVATE(seed_old) … … 357 373 ALLOCATE(v2sumSTD(klon,nlevSTD,nout)) 358 374 ALLOCATE(T2sumSTD(klon,nlevSTD,nout)) 375 !IM beg 376 ALLOCATE(wlevSTD(klon,nlevSTD), ulevSTD(klon,nlevSTD), vlevSTD(klon,nlevSTD)) 377 ALLOCATE(tlevSTD(klon,nlevSTD), qlevSTD(klon,nlevSTD), rhlevSTD(klon,nlevSTD)) 378 ALLOCATE(philevSTD(klon,nlevSTD)) 379 ALLOCATE(uvSTD(klon,nlevSTD),vqSTD(klon,nlevSTD)) 380 ALLOCATE(vTSTD(klon,nlevSTD),wqSTD(klon,nlevSTD)) 381 ALLOCATE(vphiSTD(klon,nlevSTD),wTSTD(klon,nlevSTD)) 382 ALLOCATE(u2STD(klon,nlevSTD),v2STD(klon,nlevSTD)) 383 ALLOCATE(T2STD(klon,nlevSTD)) 384 !IM end 359 385 ALLOCATE(seed_old(klon,napisccp)) 360 386 ALLOCATE(zuthe(klon),zvthe(klon)) … … 459 485 deallocate(v2sumSTD) 460 486 deallocate(T2sumSTD) 487 !IM beg 488 deallocate(wlevSTD,ulevSTD,vlevSTD,tlevSTD,qlevSTD,rhlevSTD,philevSTD) 489 deallocate(uvSTD,vqSTD,vTSTD,wqSTD,vphiSTD,wTSTD,u2STD,v2STD,T2STD) 490 !IM end 461 491 deallocate(seed_old) 462 492 deallocate(zuthe, zvthe) -
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/physiq.F
r1347 r1350 35 35 use regr_pr_av_m, only: regr_pr_av 36 36 use netcdf95, only: nf95_close 37 cIM for NMC files 38 use netcdf, only: nf90_fill_real 37 39 use mod_phys_lmdz_mpi_data, only: is_mpi_root 38 40 USE aero_mod … … 56 58 c CLEFS CPP POUR LES IO 57 59 c ===================== 58 c#define histmthNMC60 #define histNMC 59 61 c#define histISCCP 60 62 c====================================================================== … … 259 261 CHARACTER*2 bb3 260 262 c 261 real tlevSTD(klon,nlevSTD), qlevSTD(klon,nlevSTD)262 real rhlevSTD(klon,nlevSTD), philevSTD(klon,nlevSTD)263 real ulevSTD(klon,nlevSTD), vlevSTD(klon,nlevSTD)264 real wlevSTD(klon,nlevSTD)265 263 266 264 real twriteSTD(klon,nlevSTD,nfiles) … … 271 269 real vwriteSTD(klon,nlevSTD,nfiles) 272 270 real wwriteSTD(klon,nlevSTD,nfiles) 271 cIM for NMC files 272 REAL geo500(klon) 273 real :: rlevSTD3(nlevSTD3) 274 DATA rlevSTD3/85000., 50000., 25000./ 275 SAVE rlevSTD3 276 c$OMP THREADPRIVATE(rlevSTD3) 277 real :: rlevSTD8(nlevSTD8) 278 DATA rlevSTD8/100000., 85000., 70000., 50000., 25000., 10000., 279 $ 5000., 1000./ 280 SAVE rlevSTD8 281 c$OMP THREADPRIVATE(rlevSTD8) 282 real twriteSTD3(klon,nlevSTD3) 283 real qwriteSTD3(klon,nlevSTD3) 284 real rhwriteSTD3(klon,nlevSTD3) 285 real phiwriteSTD3(klon,nlevSTD3) 286 real uwriteSTD3(klon,nlevSTD3) 287 real vwriteSTD3(klon,nlevSTD3) 288 real wwriteSTD3(klon,nlevSTD3) 289 c 290 real tnondefSTD8(klon,nlevSTD8) 291 real twriteSTD8(klon,nlevSTD8) 292 real qwriteSTD8(klon,nlevSTD8) 293 real rhwriteSTD8(klon,nlevSTD8) 294 real phiwriteSTD8(klon,nlevSTD8) 295 real uwriteSTD8(klon,nlevSTD8) 296 real vwriteSTD8(klon,nlevSTD8) 297 real wwriteSTD8(klon,nlevSTD8) 298 c 299 c plevSTD3 END 273 300 c 274 301 c nout : niveau de output des variables a une pression donnee … … 278 305 c a partir des valeurs instantannees toutes les 6 h 279 306 c qui sont moyennees sur le mois 280 c281 real uvSTD(klon,nlevSTD)282 real vqSTD(klon,nlevSTD)283 real vTSTD(klon,nlevSTD)284 real wqSTD(klon,nlevSTD)285 c286 real vphiSTD(klon,nlevSTD)287 real wTSTD(klon,nlevSTD)288 real u2STD(klon,nlevSTD)289 real v2STD(klon,nlevSTD)290 real T2STD(klon,nlevSTD)291 307 c 292 308 #include "radopt.h" … … 976 992 REAL zx_tmp_fi2d(klon) ! variable temporaire grille physique 977 993 REAL zx_tmp_fi3d(klon,klev) ! variable temporaire pour champs 3D 978 c#ifdef hist mthNMC994 c#ifdef histNMC 979 995 cym A voir plus tard !!!! 980 996 cym REAL zx_tmp_NC(iim,jjmp1,nlevSTD) … … 984 1000 REAL zx_tmp_2d(iim,jjmp1), zx_tmp_3d(iim,jjmp1,klev) 985 1001 REAL zx_lon(iim,jjmp1), zx_lat(iim,jjmp1) 986 c 987 INTEGER nid_day, nid_mth, nid_ins, nid_nmc, nid_day_seri 988 INTEGER nid_ctesGCM 989 SAVE nid_day, nid_mth, nid_ins, nid_nmc, nid_day_seri 990 SAVE nid_ctesGCM 991 c$OMP THREADPRIVATE(nid_day, nid_mth, nid_ins, nid_nmc) 1002 cIM for NMC files 1003 REAL missing_val 1004 REAL, SAVE :: freq_moyNMC(nout) 1005 c$OMP THREADPRIVATE(freq_moyNMC) 1006 c 1007 INTEGER nid_day, nid_mth, nid_ins, nid_mthnmc, nid_daynmc 1008 INTEGER nid_hfnmc, nid_day_seri, nid_ctesGCM 1009 SAVE nid_day, nid_mth, nid_ins, nid_mthnmc, nid_daynmc 1010 SAVE nid_hfnmc, nid_day_seri, nid_ctesGCM 1011 c$OMP THREADPRIVATE(nid_day, nid_mth, nid_ins) 1012 c$OMP THREADPRIVATE(nid_mthnmc, nid_daynmc, nid_hfnmc) 992 1013 c$OMP THREADPRIVATE(nid_day_seri,nid_ctesGCM) 993 1014 c … … 1112 1133 ! edges of pressure intervals for ozone climatologies, in Pa, in strictly 1113 1134 ! ascending order 1135 cIM for NMC files en parallele 1136 c$OMP THREADPRIVATE(read_climoz, ncid_climoz, press_climoz) 1114 1137 1115 1138 integer, save:: co3i = 0 … … 1135 1158 c============================================================ 1136 1159 real :: mr_ozone(klon,klev) 1160 cIM for NMC files 1161 missing_val=nf90_fill_real 1137 1162 c====================================================================== 1138 1163 ! Ecriture eventuelle d'un profil verticale en entree de la physique. … … 1180 1205 print*, 'Allocation des variables locales et sauvegardees' 1181 1206 call phys_local_var_init 1207 c 1208 pasphys=pdtphys 1182 1209 c appel a la lecture du run.def physique 1183 1210 call conf_phys(ok_journe, ok_mensuel, … … 1197 1224 call phys_state_var_init(read_climoz) 1198 1225 print*, '=================================================' 1199 1226 cIM for NMC files 1227 cIM freq_moyNMC = frequences auxquelles on moyenne les champs accumules 1228 cIM sur les niveaux de pression standard du NMC 1229 DO n=1, nout 1230 freq_moyNMC(n)=freq_outNMC(n)/freq_calNMC(n) 1231 ENDDO 1232 c 1200 1233 cIM beg 1201 1234 dnwd0=0.0 … … 1473 1506 #endif 1474 1507 1475 #ifdef histmthNMC 1508 #ifdef histNMC 1509 #include "ini_histhfNMC.h" 1510 #include "ini_histdayNMC.h" 1476 1511 #include "ini_histmthNMC.h" 1477 1512 #endif … … 1487 1522 1488 1523 ecrit_hf = ecrit_hf * un_jour 1489 !IM1524 cIM 1490 1525 IF(ecrit_day.LE.1.) THEN 1491 1526 ecrit_day = ecrit_day * un_jour !en secondes 1492 1527 ENDIF 1493 !IM1528 cIM 1494 1529 ecrit_mth = ecrit_mth * un_jour 1495 1530 ecrit_ins = ecrit_ins * un_jour … … 2755 2790 & tausum_aero, tau3d_aero) 2756 2791 ELSE 2792 cIM 170310 BEG 2793 tausum_aero(:,:,:) = 0. 2794 cIM 170310 END 2757 2795 tau_aero(:,:,:,:) = 0. 2758 2796 piz_aero(:,:,:,:) = 0. … … 3390 3428 c 3391 3429 #include "calcul_STDlev.h" 3392 twriteSTD(:,:,1)=tsumSTD(:,:, 2)3393 qwriteSTD(:,:,1)=qsumSTD(:,:, 2)3394 rhwriteSTD(:,:,1)=rhsumSTD(:,:, 2)3395 phiwriteSTD(:,:,1)=phisumSTD(:,:, 2)3396 uwriteSTD(:,:,1)=usumSTD(:,:, 2)3397 vwriteSTD(:,:,1)=vsumSTD(:,:, 2)3398 wwriteSTD(:,:,1)=wsumSTD(:,:, 2)3399 3400 twriteSTD(:,:,2)=tsumSTD(:,:, 1)3401 qwriteSTD(:,:,2)=qsumSTD(:,:, 1)3402 rhwriteSTD(:,:,2)=rhsumSTD(:,:, 1)3403 phiwriteSTD(:,:,2)=phisumSTD(:,:, 1)3404 uwriteSTD(:,:,2)=usumSTD(:,:, 1)3405 vwriteSTD(:,:,2)=vsumSTD(:,:, 1)3406 wwriteSTD(:,:,2)=wsumSTD(:,:, 1)3430 twriteSTD(:,:,1)=tsumSTD(:,:,1) 3431 qwriteSTD(:,:,1)=qsumSTD(:,:,1) 3432 rhwriteSTD(:,:,1)=rhsumSTD(:,:,1) 3433 phiwriteSTD(:,:,1)=phisumSTD(:,:,1) 3434 uwriteSTD(:,:,1)=usumSTD(:,:,1) 3435 vwriteSTD(:,:,1)=vsumSTD(:,:,1) 3436 wwriteSTD(:,:,1)=wsumSTD(:,:,1) 3437 3438 twriteSTD(:,:,2)=tsumSTD(:,:,2) 3439 qwriteSTD(:,:,2)=qsumSTD(:,:,2) 3440 rhwriteSTD(:,:,2)=rhsumSTD(:,:,2) 3441 phiwriteSTD(:,:,2)=phisumSTD(:,:,2) 3442 uwriteSTD(:,:,2)=usumSTD(:,:,2) 3443 vwriteSTD(:,:,2)=vsumSTD(:,:,2) 3444 wwriteSTD(:,:,2)=wsumSTD(:,:,2) 3407 3445 3408 3446 twriteSTD(:,:,3)=tlevSTD(:,:) … … 3421 3459 vwriteSTD(:,:,4)=vlevSTD(:,:) 3422 3460 wwriteSTD(:,:,4)=wlevSTD(:,:) 3461 c 3462 cIM ajoute 5eme niveau 170310 BEG 3463 twriteSTD(:,:,5)=tlevSTD(:,:) 3464 qwriteSTD(:,:,5)=qlevSTD(:,:) 3465 rhwriteSTD(:,:,5)=rhlevSTD(:,:) 3466 phiwriteSTD(:,:,5)=philevSTD(:,:) 3467 uwriteSTD(:,:,5)=ulevSTD(:,:) 3468 vwriteSTD(:,:,5)=vlevSTD(:,:) 3469 wwriteSTD(:,:,5)=wlevSTD(:,:) 3470 cIM for NMC files 3471 DO n=1, nlevSTD3 3472 DO k=1, nlevSTD 3473 if(rlevSTD3(n).EQ.rlevSTD(k)) THEN 3474 twriteSTD3(:,n)=tlevSTD(:,k) 3475 qwriteSTD3(:,n)=qlevSTD(:,k) 3476 rhwriteSTD3(:,n)=rhlevSTD(:,k) 3477 phiwriteSTD3(:,n)=philevSTD(:,k) 3478 uwriteSTD3(:,n)=ulevSTD(:,k) 3479 vwriteSTD3(:,n)=vlevSTD(:,k) 3480 wwriteSTD3(:,n)=wlevSTD(:,k) 3481 endif !rlevSTD3(n).EQ.rlevSTD(k) 3482 ENDDO 3483 ENDDO 3484 c 3485 DO n=1, nlevSTD8 3486 DO k=1, nlevSTD 3487 if(rlevSTD8(n).EQ.rlevSTD(k)) THEN 3488 tnondefSTD8(:,n)=tnondef(:,k,2) 3489 twriteSTD8(:,n)=tsumSTD(:,k,2) 3490 qwriteSTD8(:,n)=qsumSTD(:,k,2) 3491 rhwriteSTD8(:,n)=rhsumSTD(:,k,2) 3492 phiwriteSTD8(:,n)=phisumSTD(:,k,2) 3493 uwriteSTD8(:,n)=usumSTD(:,k,2) 3494 vwriteSTD8(:,n)=vsumSTD(:,k,2) 3495 wwriteSTD8(:,n)=wsumSTD(:,k,2) 3496 endif !rlevSTD8(n).EQ.rlevSTD(k) 3497 ENDDO 3498 ENDDO 3423 3499 c 3424 3500 c slp sea level pressure … … 3579 3655 #endif 3580 3656 3581 #ifdef histmthNMC 3657 #ifdef histNMC 3658 #include "write_histhfNMC.h" 3659 #include "write_histdayNMC.h" 3582 3660 #include "write_histmthNMC.h" 3583 3661 #endif -
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/undefSTD.F
r1299 r1350 2 2 ! $Id$ 3 3 ! 4 SUBROUTINE undefSTD(nlevSTD,itap,tlevSTD, 5 $ dtime,ecrit_hf, 6 $ oknondef,tnondef,tsumSTD) 4 c SUBROUTINE undefSTD(nlevSTD,itap,tlevSTD, 5 c $ dtime,freq_calNMC, 6 c $ oknondef,tnondef,tsumSTD) 7 SUBROUTINE undefSTD(itap,freq_calNMC) 7 8 USE netcdf 8 9 USE dimphy 10 USE phys_state_var_mod ! Variables sauvegardees de la physique 9 11 IMPLICIT none 10 12 c … … 13 15 c I. Musat : 09.2004 14 16 c 15 c Calcul * du nombre de pas de temps ( REAL(ecrit_XXX)-tnondef))16 c ou la variable tlevSTD est bien definie (.NE. 1.E+20),17 c Calcul * du nombre de pas de temps (FLOAT(ecrit_XXX)-tnondef)) 18 c ou la variable tlevSTD est bien definie (.NE.missing_val), 17 19 c et 18 20 c * de la somme de tlevSTD => tsumSTD … … 22 24 c nout=2 !var. mensuelle "mth" moyennee sur tous les pas de temps 23 25 c ! de la physique 24 c nout=3 !var. mensuelle "NMC" moyennee toutes les 6heures26 c nout=3 !var. mensuelle "NMC" moyennee toutes les ecrit_hf 25 27 c 26 28 c 27 c NB: mettre "inst(X)" dans le write_hist XXX.h !29 c NB: mettre "inst(X)" dans le write_hist*NMC.h ! 28 30 c==================================================================== 29 31 c … … 34 36 c variables Input 35 37 c 36 INTEGER nlevSTD, klevSTD, itap 37 PARAMETER(klevSTD=17) 38 REAL dtime, ecrit_hf 38 c INTEGER nlevSTD, klevSTD, itap 39 c PARAMETER(klevSTD=17) 40 INTEGER itap 41 c REAL dtime 39 42 c 40 43 c variables locales 41 INTEGER i, k, nout 42 PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC 44 c INTEGER i, k, nout, n 45 c PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC 46 INTEGER i, k, n 47 REAL freq_calNMC(nout) 43 48 c 44 49 c variables Output 45 46 47 50 c REAL tlevSTD(klon,klevSTD), tsumSTD(klon,klevSTD,nout) 51 c LOGICAL oknondef(klon,klevSTD,nout) 52 c REAL tnondef(klon,klevSTD,nout) 48 53 c 49 54 REAL missing_val … … 51 56 missing_val=nf90_fill_real 52 57 c 53 c calcul variables tous les pas de temps de la physique 58 DO n=1, nout 54 59 c 55 DO k=1, nlevSTD56 DO i=1, klon57 IF(tlevSTD(i,k).EQ.missing_val) THEN58 IF(oknondef(i,k,1)) THEN59 tnondef(i,k,1)=tnondef(i,k,1)+1.60 ENDIF !oknondef(i,k)61 60 c 62 IF(oknondef(i,k,2)) THEN 63 tnondef(i,k,2)=tnondef(i,k,2)+1. 64 ENDIF !oknondef(i,k) 61 c calcul variables tous les freq_calNMC(n)/dtime pas de temps 62 c de la physique 65 63 c 66 ELSE IF(tlevSTD(i,k).NE.missing_val) THEN 67 tsumSTD(i,k,1)=tsumSTD(i,k,1)+tlevSTD(i,k) 68 tsumSTD(i,k,2)=tsumSTD(i,k,2)+tlevSTD(i,k) 69 ENDIF 70 ENDDO !i 71 ENDDO !k 64 IF(MOD(itap,NINT(freq_calNMC(n)/dtime)).EQ.0) THEN 72 65 c 73 c calcul variables toutes les 6h66 c print*,'n freq_cal=',n,itap,freq_calNMC(n)/dtime 74 67 c 75 IF(MOD(itap,NINT(ecrit_hf/dtime)).EQ.0) THEN 68 DO k=1, nlevSTD 69 DO i=1, klon 70 IF(tlevSTD(i,k).EQ.missing_val) THEN 71 c IF(oknondef(i,k,n)) THEN 72 tnondef(i,k,n)=tnondef(i,k,n)+1. 73 c ENDIF !oknondef(i,k) 76 74 c 77 DO k=1, nlevSTD 78 DO i=1, klon 79 IF(tlevSTD(i,k).EQ.missing_val) THEN 80 IF(oknondef(i,k,3)) THEN 81 tnondef(i,k,3)=tnondef(i,k,3)+1. 82 ENDIF !oknondef(i,k) 75 ELSE IF(tlevSTD(i,k).NE.missing_val) THEN 76 tsumSTD(i,k,n)=tsumSTD(i,k,n)+tlevSTD(i,k) 77 usumSTD(i,k,n)=usumSTD(i,k,n)+ulevSTD(i,k) 78 vsumSTD(i,k,n)=vsumSTD(i,k,n)+vlevSTD(i,k) 79 wsumSTD(i,k,n)=wsumSTD(i,k,n)+wlevSTD(i,k) 80 phisumSTD(i,k,n)=phisumSTD(i,k,n)+philevSTD(i,k) 81 qsumSTD(i,k,n)=qsumSTD(i,k,n)+qlevSTD(i,k) 82 rhsumSTD(i,k,n)=rhsumSTD(i,k,n)+rhlevSTD(i,k) 83 uvsumSTD(i,k,n)=uvsumSTD(i,k,n)+uvSTD(i,k) 84 vqsumSTD(i,k,n)=vqsumSTD(i,k,n)+vqSTD(i,k) 85 vTsumSTD(i,k,n)=vTsumSTD(i,k,n)+vTSTD(i,k) 86 wqsumSTD(i,k,n)=wqsumSTD(i,k,n)+wqSTD(i,k) 87 vphisumSTD(i,k,n)=vphisumSTD(i,k,n)+vphiSTD(i,k) 88 wTsumSTD(i,k,n)=wTsumSTD(i,k,n)+wTSTD(i,k) 89 u2sumSTD(i,k,n)=u2sumSTD(i,k,n)+u2STD(i,k) 90 v2sumSTD(i,k,n)=v2sumSTD(i,k,n)+v2STD(i,k) 91 T2sumSTD(i,k,n)=T2sumSTD(i,k,n)+T2STD(i,k) 83 92 c 84 ELSE IF(tlevSTD(i,k).NE.missing_val) THEN 85 tsumSTD(i,k,3)=tsumSTD(i,k,3)+tlevSTD(i,k) 86 ENDIF 87 ENDDO !i 88 ENDDO !k 89 90 ENDIF !MOD(itap,NINT(ecrit_hf/dtime)).EQ.0 93 c if(n.EQ.1.AND.i.EQ.4513.AND.k.EQ.17) THEN 94 if(n.EQ.1.AND.i.EQ.1128.AND.k.EQ.17) THEN 95 print*,'itap rlon rlat tlevSTD=',itap,rlon(i),rlat(i), 96 $tlevSTD(i,k) 97 endif 98 c 99 ENDIF 100 ENDDO !i 101 ENDDO !k 102 c 103 ENDIF !MOD(itap,NINT(freq_calNMC(n)/dtime)).EQ.0 104 c 105 ENDDO !n 91 106 c 92 107 RETURN -
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/write_histmthNMC.h
r776 r1350 2 2 ! $Header$ 3 3 ! 4 IF (ok_mensuel) THEN5 4 c 6 5 ndex3d = 0 … … 9 8 c Champs interpolles sur des niveaux de pression du NMC 10 9 c 11 c PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC 10 c PARAMETER(nout=3) 11 c nout=1 : in=pdtphys, out=mth 12 c nout=2 : in=pdtphys, out=day 13 c nout=3 : in=pdtphys, out=hf 12 14 ccc 13 IF(type_run.EQ."CLIM".OR.type_run.EQ."ENSP") THEN 14 ccc 15 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,tsumSTD(:,:,2), 16 cym $ zx_tmp_NC) 17 CALL histwrite_phy(nid_nmc,"temp",itau_w,tsumSTD(:,:,2)) 15 CALL histwrite_phy(nid_mthnmc,"tnondef",itau_w,tnondef(:,:,1)) 18 16 c 19 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,phisumSTD(:,:,2), 20 cym $ zx_tmp_NC) 21 CALL histwrite_phy(nid_nmc,"phi",itau_w,phisumSTD(:,:,2)) 17 c CALL histwrite_phy(nid_mthnmc,"ta",itau_w,twriteSTD(:,:,1)) 18 CALL histwrite_phy(nid_mthnmc,"ta",itau_w,tsumSTD(:,:,1)) 22 19 c 23 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,qsumSTD(:,:,2), 24 cym $ zx_tmp_NC) 25 CALL histwrite_phy(nid_nmc,"q",itau_w,qsumSTD(:,:,2)) 20 CALL histwrite_phy(nid_mthnmc,"zg",itau_w,phiwriteSTD(:,:,1)) 26 21 c 27 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,rhsumSTD(:,:,2), 28 cym $ zx_tmp_NC) 29 CALL histwrite_phy(nid_nmc,"rh",itau_w,rhsumSTD(:,:,2)) 22 CALL histwrite_phy(nid_mthnmc,"hus",itau_w,qwriteSTD(:,:,1)) 30 23 c 31 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,usumSTD(:,:,2), 32 cym $ zx_tmp_NC) 33 CALL histwrite_phy(nid_nmc,"u",itau_w,usumSTD(:,:,2)) 24 CALL histwrite_phy(nid_mthnmc,"hur",itau_w,rhwriteSTD(:,:,1)) 34 25 c 35 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,vsumSTD(:,:,2), 36 cym $ zx_tmp_NC) 37 CALL histwrite_phy(nid_nmc,"v",itau_w,vsumSTD(:,:,2)) 38 ccc 39 ELSE IF(type_run.EQ."AMIP".OR.type_run.EQ."CFMI") THEN 40 ccc 41 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,tsumSTD(:,:,3), 42 cym $ zx_tmp_NC) 43 CALL histwrite_phy(nid_nmc,"temp",itau_w,tsumSTD(:,:,3)) 26 CALL histwrite_phy(nid_mthnmc,"ua",itau_w,uwriteSTD(:,:,1)) 44 27 c 45 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,phisumSTD(:,:,3), 46 cym $ zx_tmp_NC) 47 CALL histwrite_phy(nid_nmc,"phi",itau_w,phisumSTD(:,:,3)) 28 CALL histwrite_phy(nid_mthnmc,"va",itau_w,vwriteSTD(:,:,1)) 48 29 c 49 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,qsumSTD(:,:,3), 50 cym $ zx_tmp_NC) 51 CALL histwrite_phy(nid_nmc,"q",itau_w,qsumSTD(:,:,3)) 52 c 53 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,rhsumSTD(:,:,3), 54 cym $ zx_tmp_NC) 55 CALL histwrite_phy(nid_nmc,"rh",itau_w,rhsumSTD(:,:,3)) 56 c 57 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,usumSTD(:,:,3), 58 cym $ zx_tmp_NC) 59 CALL histwrite_phy(nid_nmc,"u",itau_w,usumSTD(:,:,3)) 60 c 61 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,vsumSTD(:,:,3), 62 cym $ zx_tmp_NC) 63 CALL histwrite_phy(nid_nmc,"v",itau_w,vsumSTD(:,:,3)) 64 c 65 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,wsumSTD(:,:,3), 66 cym $ zx_tmp_NC) 67 CALL histwrite_phy(nid_nmc,"w",itau_w,wsumSTD(:,:,3)) 30 CALL histwrite_phy(nid_mthnmc,"wap",itau_w,wwriteSTD(:,:,1)) 68 31 c 69 32 DO k=1, nlevSTD 70 33 DO i=1, klon 71 IF(tnondef(i,k, 3).NE.1.E+20) THEN72 zx_tmp_fiNC(i,k) = (100.*tnondef(i,k, 3))/ecrit_hf2mth34 IF(tnondef(i,k,1).NE.missing_val) THEN 35 zx_tmp_fiNC(i,k) = (100.*tnondef(i,k,1))/ecrit_hf2mth 73 36 ELSE 74 zx_tmp_fiNC(i,k) = 1.E+2037 zx_tmp_fiNC(i,k) = missing_val 75 38 ENDIF 76 39 ENDDO 77 40 ENDDO !k=1, nlevSTD 78 41 c 79 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,zx_tmp_fiNC,zx_tmp_NC) 80 CALL histwrite_phy(nid_nmc,"psbg",itau_w,zx_tmp_fiNC) 42 CALL histwrite_phy(nid_mthnmc,"psbg",itau_w,zx_tmp_fiNC) 81 43 c 82 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,uvsumSTD(:,:,3), 83 cym $ zx_tmp_NC) 84 CALL histwrite_phy(nid_nmc,"uv",itau_w,uvsumSTD(:,:,3)) 44 CALL histwrite_phy(nid_mthnmc,"uv",itau_w,uvsumSTD(:,:,1)) 85 45 c 86 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,vqsumSTD(:,:,3), 87 cym $ zx_tmp_NC) 88 CALL histwrite_phy(nid_nmc,"vq",itau_w,vqsumSTD(:,:,3)) 46 CALL histwrite_phy(nid_mthnmc,"vq",itau_w,vqsumSTD(:,:,1)) 89 47 c 90 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,vTsumSTD(:,:,3), 91 cym $ zx_tmp_NC) 92 CALL histwrite_phy(nid_nmc,"vT",itau_w,vTsumSTD(:,:,3)) 48 CALL histwrite_phy(nid_mthnmc,"vT",itau_w,vTsumSTD(:,:,1)) 93 49 c 94 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1, wqsumSTD(:,:,3), 95 cym $ zx_tmp_NC) 96 CALL histwrite_phy(nid_nmc,"wq",itau_w,wqsumSTD(:,:,3)) 50 CALL histwrite_phy(nid_mthnmc,"wq",itau_w,wqsumSTD(:,:,1)) 97 51 c 98 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,vphisumSTD(:,:,3), 99 cym $ zx_tmp_NC) 100 CALL histwrite_phy(nid_nmc,"vphi",itau_w,vphisumSTD(:,:,3)) 52 CALL histwrite_phy(nid_mthnmc,"vphi",itau_w,vphisumSTD(:,:,1)) 101 53 c 102 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,wTsumSTD(:,:,3), 103 cym $ zx_tmp_NC) 104 CALL histwrite_phy(nid_nmc,"wT",itau_w,wTsumSTD(:,:,3)) 54 CALL histwrite_phy(nid_mthnmc,"wT",itau_w,wTsumSTD(:,:,1)) 105 55 c 106 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,u2sumSTD(:,:,3), 107 cym $ zx_tmp_NC) 108 CALL histwrite_phy(nid_nmc,"uxu",itau_w,u2sumSTD(:,:,3)) 56 CALL histwrite_phy(nid_mthnmc,"uxu",itau_w,u2sumSTD(:,:,1)) 109 57 c 110 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,v2sumSTD(:,:,3), 111 cym $ zx_tmp_NC) 112 CALL histwrite_phy(nid_nmc,"vxv",itau_w,v2sumSTD(:,:,3)) 58 CALL histwrite_phy(nid_mthnmc,"vxv",itau_w,v2sumSTD(:,:,1)) 113 59 c 114 cym CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,T2sumSTD(:,:,3), 115 cym $ zx_tmp_NC) 116 CALL histwrite_phy(nid_nmc,"TxT",itau_w,T2sumSTD(:,:,3)) 117 c 118 ENDIF !type_run 60 CALL histwrite_phy(nid_mthnmc,"TxT",itau_w,T2sumSTD(:,:,1)) 119 61 c 120 62 if (ok_sync) then 121 63 c$OMP MASTER 122 call histsync(nid_ nmc)64 call histsync(nid_mthnmc) 123 65 c$OMP END MASTER 124 66 endif 125 126 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.