Changeset 1352 for LMDZ4/trunk/libf/phylmd/physiq.F
- Timestamp:
- Apr 14, 2010, 11:41:19 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/trunk/libf/phylmd/physiq.F
r1340 r1352 34 34 use regr_pr_av_m, only: regr_pr_av 35 35 use netcdf95, only: nf95_close 36 cIM for NMC files 37 use netcdf, only: nf90_fill_real 36 38 use mod_phys_lmdz_mpi_data, only: is_mpi_root 37 39 USE aero_mod … … 53 55 c CLEFS CPP POUR LES IO 54 56 c ===================== 55 c#define histmthNMC57 #define histNMC 56 58 c#define histISCCP 57 59 c====================================================================== … … 256 258 CHARACTER*4 bb2 257 259 CHARACTER*2 bb3 258 c 259 real tlevSTD(klon,nlevSTD), qlevSTD(klon,nlevSTD) 260 real rhlevSTD(klon,nlevSTD), philevSTD(klon,nlevSTD) 261 real ulevSTD(klon,nlevSTD), vlevSTD(klon,nlevSTD) 262 real wlevSTD(klon,nlevSTD) 263 260 c 264 261 real twriteSTD(klon,nlevSTD,nfiles) 265 262 real qwriteSTD(klon,nlevSTD,nfiles) … … 269 266 real vwriteSTD(klon,nlevSTD,nfiles) 270 267 real wwriteSTD(klon,nlevSTD,nfiles) 268 cIM for NMC files 269 REAL geo500(klon) 270 real :: rlevSTD3(nlevSTD3) 271 DATA rlevSTD3/85000., 50000., 25000./ 272 SAVE rlevSTD3 273 c$OMP THREADPRIVATE(rlevSTD3) 274 real :: rlevSTD8(nlevSTD8) 275 DATA rlevSTD8/100000., 85000., 70000., 50000., 25000., 10000., 276 $ 5000., 1000./ 277 SAVE rlevSTD8 278 c$OMP THREADPRIVATE(rlevSTD8) 279 real twriteSTD3(klon,nlevSTD3) 280 real qwriteSTD3(klon,nlevSTD3) 281 real rhwriteSTD3(klon,nlevSTD3) 282 real phiwriteSTD3(klon,nlevSTD3) 283 real uwriteSTD3(klon,nlevSTD3) 284 real vwriteSTD3(klon,nlevSTD3) 285 real wwriteSTD3(klon,nlevSTD3) 286 c 287 real tnondefSTD8(klon,nlevSTD8) 288 real twriteSTD8(klon,nlevSTD8) 289 real qwriteSTD8(klon,nlevSTD8) 290 real rhwriteSTD8(klon,nlevSTD8) 291 real phiwriteSTD8(klon,nlevSTD8) 292 real uwriteSTD8(klon,nlevSTD8) 293 real vwriteSTD8(klon,nlevSTD8) 294 real wwriteSTD8(klon,nlevSTD8) 295 c 296 c plevSTD3 END 271 297 c 272 298 c nout : niveau de output des variables a une pression donnee … … 276 302 c a partir des valeurs instantannees toutes les 6 h 277 303 c qui sont moyennees sur le mois 278 c279 real uvSTD(klon,nlevSTD)280 real vqSTD(klon,nlevSTD)281 real vTSTD(klon,nlevSTD)282 real wqSTD(klon,nlevSTD)283 c284 real vphiSTD(klon,nlevSTD)285 real wTSTD(klon,nlevSTD)286 real u2STD(klon,nlevSTD)287 real v2STD(klon,nlevSTD)288 real T2STD(klon,nlevSTD)289 304 c 290 305 #include "radopt.h" … … 971 986 REAL zx_tmp_fi2d(klon) ! variable temporaire grille physique 972 987 REAL zx_tmp_fi3d(klon,klev) ! variable temporaire pour champs 3D 973 c#ifdef hist mthNMC988 c#ifdef histNMC 974 989 cym A voir plus tard !!!! 975 990 cym REAL zx_tmp_NC(iim,jjmp1,nlevSTD) … … 979 994 REAL zx_tmp_2d(iim,jjmp1), zx_tmp_3d(iim,jjmp1,klev) 980 995 REAL zx_lon(iim,jjmp1), zx_lat(iim,jjmp1) 981 c 982 INTEGER nid_day, nid_mth, nid_ins, nid_nmc, nid_day_seri 983 INTEGER nid_ctesGCM 984 SAVE nid_day, nid_mth, nid_ins, nid_nmc, nid_day_seri 985 SAVE nid_ctesGCM 986 c$OMP THREADPRIVATE(nid_day, nid_mth, nid_ins, nid_nmc) 996 cIM for NMC files 997 REAL missing_val 998 REAL, SAVE :: freq_moyNMC(nout) 999 c$OMP THREADPRIVATE(freq_moyNMC) 1000 c 1001 INTEGER nid_day, nid_mth, nid_ins, nid_mthnmc, nid_daynmc 1002 INTEGER nid_hfnmc, nid_day_seri, nid_ctesGCM 1003 SAVE nid_day, nid_mth, nid_ins, nid_mthnmc, nid_daynmc 1004 SAVE nid_hfnmc, nid_day_seri, nid_ctesGCM 1005 c$OMP THREADPRIVATE(nid_day, nid_mth, nid_ins) 1006 c$OMP THREADPRIVATE(nid_mthnmc, nid_daynmc, nid_hfnmc) 987 1007 c$OMP THREADPRIVATE(nid_day_seri,nid_ctesGCM) 988 1008 c … … 1107 1127 ! edges of pressure intervals for ozone climatologies, in Pa, in strictly 1108 1128 ! ascending order 1129 cIM for NMC files en parallele 1130 c$OMP THREADPRIVATE(read_climoz, ncid_climoz, press_climoz) 1109 1131 1110 1132 integer, save:: co3i = 0 … … 1130 1152 c============================================================ 1131 1153 real :: mr_ozone(klon,klev) 1154 cIM for NMC files 1155 missing_val=nf90_fill_real 1132 1156 c====================================================================== 1133 1157 ! Ecriture eventuelle d'un profil verticale en entree de la physique. … … 1175 1199 print*, 'Allocation des variables locales et sauvegardees' 1176 1200 call phys_local_var_init 1201 c 1202 pasphys=pdtphys 1177 1203 c appel a la lecture du run.def physique 1178 1204 call conf_phys(ok_journe, ok_mensuel, … … 1192 1218 call phys_output_var_init 1193 1219 print*, '=================================================' 1194 1220 cIM for NMC files 1221 cIM freq_moyNMC = frequences auxquelles on moyenne les champs accumules 1222 cIM sur les niveaux de pression standard du NMC 1223 DO n=1, nout 1224 freq_moyNMC(n)=freq_outNMC(n)/freq_calNMC(n) 1225 ENDDO 1226 c 1195 1227 cIM beg 1196 1228 dnwd0=0.0 … … 1469 1501 #endif 1470 1502 1471 #ifdef histmthNMC 1503 #ifdef histNMC 1504 #include "ini_histhfNMC.h" 1505 #include "ini_histdayNMC.h" 1472 1506 #include "ini_histmthNMC.h" 1473 1507 #endif … … 1483 1517 1484 1518 ecrit_hf = ecrit_hf * un_jour 1485 !IM1519 cIM 1486 1520 IF(ecrit_day.LE.1.) THEN 1487 1521 ecrit_day = ecrit_day * un_jour !en secondes 1488 1522 ENDIF 1489 !IM1523 cIM 1490 1524 ecrit_mth = ecrit_mth * un_jour 1491 1525 ecrit_ins = ecrit_ins * un_jour … … 3331 3365 c 3332 3366 #include "calcul_STDlev.h" 3333 twriteSTD(:,:,1)=tsumSTD(:,:, 2)3334 qwriteSTD(:,:,1)=qsumSTD(:,:, 2)3335 rhwriteSTD(:,:,1)=rhsumSTD(:,:, 2)3336 phiwriteSTD(:,:,1)=phisumSTD(:,:, 2)3337 uwriteSTD(:,:,1)=usumSTD(:,:, 2)3338 vwriteSTD(:,:,1)=vsumSTD(:,:, 2)3339 wwriteSTD(:,:,1)=wsumSTD(:,:, 2)3340 3341 twriteSTD(:,:,2)=tsumSTD(:,:, 1)3342 qwriteSTD(:,:,2)=qsumSTD(:,:, 1)3343 rhwriteSTD(:,:,2)=rhsumSTD(:,:, 1)3344 phiwriteSTD(:,:,2)=phisumSTD(:,:, 1)3345 uwriteSTD(:,:,2)=usumSTD(:,:, 1)3346 vwriteSTD(:,:,2)=vsumSTD(:,:, 1)3347 wwriteSTD(:,:,2)=wsumSTD(:,:, 1)3367 twriteSTD(:,:,1)=tsumSTD(:,:,1) 3368 qwriteSTD(:,:,1)=qsumSTD(:,:,1) 3369 rhwriteSTD(:,:,1)=rhsumSTD(:,:,1) 3370 phiwriteSTD(:,:,1)=phisumSTD(:,:,1) 3371 uwriteSTD(:,:,1)=usumSTD(:,:,1) 3372 vwriteSTD(:,:,1)=vsumSTD(:,:,1) 3373 wwriteSTD(:,:,1)=wsumSTD(:,:,1) 3374 3375 twriteSTD(:,:,2)=tsumSTD(:,:,2) 3376 qwriteSTD(:,:,2)=qsumSTD(:,:,2) 3377 rhwriteSTD(:,:,2)=rhsumSTD(:,:,2) 3378 phiwriteSTD(:,:,2)=phisumSTD(:,:,2) 3379 uwriteSTD(:,:,2)=usumSTD(:,:,2) 3380 vwriteSTD(:,:,2)=vsumSTD(:,:,2) 3381 wwriteSTD(:,:,2)=wsumSTD(:,:,2) 3348 3382 3349 3383 twriteSTD(:,:,3)=tlevSTD(:,:) … … 3362 3396 vwriteSTD(:,:,4)=vlevSTD(:,:) 3363 3397 wwriteSTD(:,:,4)=wlevSTD(:,:) 3398 c 3399 cIM initialisation 5eme fichier de sortie 3400 twriteSTD(:,:,5)=tlevSTD(:,:) 3401 qwriteSTD(:,:,5)=qlevSTD(:,:) 3402 rhwriteSTD(:,:,5)=rhlevSTD(:,:) 3403 phiwriteSTD(:,:,5)=philevSTD(:,:) 3404 uwriteSTD(:,:,5)=ulevSTD(:,:) 3405 vwriteSTD(:,:,5)=vlevSTD(:,:) 3406 wwriteSTD(:,:,5)=wlevSTD(:,:) 3407 cIM for NMC files 3408 DO n=1, nlevSTD3 3409 DO k=1, nlevSTD 3410 if(rlevSTD3(n).EQ.rlevSTD(k)) THEN 3411 twriteSTD3(:,n)=tlevSTD(:,k) 3412 qwriteSTD3(:,n)=qlevSTD(:,k) 3413 rhwriteSTD3(:,n)=rhlevSTD(:,k) 3414 phiwriteSTD3(:,n)=philevSTD(:,k) 3415 uwriteSTD3(:,n)=ulevSTD(:,k) 3416 vwriteSTD3(:,n)=vlevSTD(:,k) 3417 wwriteSTD3(:,n)=wlevSTD(:,k) 3418 endif !rlevSTD3(n).EQ.rlevSTD(k) 3419 ENDDO 3420 ENDDO 3421 c 3422 DO n=1, nlevSTD8 3423 DO k=1, nlevSTD 3424 if(rlevSTD8(n).EQ.rlevSTD(k)) THEN 3425 tnondefSTD8(:,n)=tnondef(:,k,2) 3426 twriteSTD8(:,n)=tsumSTD(:,k,2) 3427 qwriteSTD8(:,n)=qsumSTD(:,k,2) 3428 rhwriteSTD8(:,n)=rhsumSTD(:,k,2) 3429 phiwriteSTD8(:,n)=phisumSTD(:,k,2) 3430 uwriteSTD8(:,n)=usumSTD(:,k,2) 3431 vwriteSTD8(:,n)=vsumSTD(:,k,2) 3432 wwriteSTD8(:,n)=wsumSTD(:,k,2) 3433 endif !rlevSTD8(n).EQ.rlevSTD(k) 3434 ENDDO 3435 ENDDO 3364 3436 c 3365 3437 c slp sea level pressure … … 3521 3593 #endif 3522 3594 3523 #ifdef histmthNMC 3595 #ifdef histNMC 3596 #include "write_histhfNMC.h" 3597 #include "write_histdayNMC.h" 3524 3598 #include "write_histmthNMC.h" 3525 3599 #endif
Note: See TracChangeset
for help on using the changeset viewer.