Changeset 1350 for LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/physiq.F
- Timestamp:
- Apr 14, 2010, 10:55:22 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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
Note: See TracChangeset
for help on using the changeset viewer.