Changeset 959 for LMDZ4/trunk/libf/phylmd/physiq.F
- Timestamp:
- May 27, 2008, 6:42:49 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/trunk/libf/phylmd/physiq.F
r956 r959 9 9 . paprs,pplay,pphi,pphis,presnivs,clesphy0, 10 10 . u,v,t,qx, 11 . omega,12 #ifdef INCA13 11 . flxmass_w, 14 #endif15 12 . d_u, d_v, d_t, d_qx, d_ps 16 13 . , dudyn … … 80 77 c d_t_dyn-input-R-tendance dynamique pour "t" (K/s) 81 78 c d_q_dyn-input-R-tendance dynamique pour "q" (kg/kg/s) 82 c omega---input-R-vitesse verticale en Pa/s79 c flxmass_w -input-R- flux de masse verticale 83 80 c d_u-----output-R-tendance physique de "u" (m/s/s) 84 81 c d_v-----output-R-tendance physique de "v" (m/s/s) … … 119 116 PARAMETER (ok_stratus=.FALSE.) 120 117 c====================================================================== 121 logical rnpb 122 #ifdef INCA 123 parameter(rnpb=.false.) 124 #else 125 parameter(rnpb=.true.) 126 #endif 127 118 LOGICAL :: rnpb=.TRUE. 128 119 cIM "slab" ocean 129 120 REAL tslab(klon) !Temperature du slab-ocean … … 215 206 REAL t(klon,klev),theta(klon,klev) 216 207 REAL qx(klon,klev,nqmax) 217 218 REAL omega(klon,klev)219 220 #ifdef INCA221 208 REAL flxmass_w(klon,klev) 222 #endif 209 REAL omega(klon,klev) ! vitesse verticale en Pa/s 223 210 REAL d_u(klon,klev) 224 211 REAL d_v(klon,klev) … … 682 669 REAL frac_impa(klon,klev) ! fractions d'aerosols lessivees (impaction) 683 670 REAL frac_nucl(klon,klev) ! idem (nucleation) 684 #ifdef INCA685 671 INTEGER :: iii 686 672 REAL :: calday 687 #endif688 673 689 674 cIM cf FH pour Tiedtke 080604 … … 1074 1059 1075 1060 ! Aerosol optical properties 1076 #ifdef INCA 1077 ! Aerosol optical properties by INCA model1061 1062 ! Aerosol optical properties by INCA model 1078 1063 CHARACTER*4 :: rfname(9) 1079 #endif1080 1064 REAL aerindex(klon) ! POLDER aerosol index 1081 1065 … … 1083 1067 LOGICAL ok_ade, ok_aie ! Apply aerosol (in)direct effects or not 1084 1068 REAL bl95_b0, bl95_b1 ! Parameter in Boucher and Lohmann (1995) 1085 cym1086 1069 SAVE ok_ade, ok_aie, bl95_b0, bl95_b1 1087 1070 c$OMP THREADPRIVATE(ok_ade, ok_aie, bl95_b0, bl95_b1) … … 1209 1192 solswai(:)=0. 1210 1193 solswad(:)=0. 1211 #ifdef INCA 1212 tau_inca(:,:,:,:) = 0.1213 piz_inca(:,:,:,:) = 0.1214 cg_inca(:,:,:,:)= 0.1215 ccm(:,:,:)= 0.1216 topswai_inca(:)= 0.1217 topswad_inca(:) = 0.1218 topswad0_inca(:)= 0.1219 topsw_inca(:,:)= 0.1220 topsw0_inca(:,:)= 0.1221 solswai_inca(:)= 0.1222 solswad_inca(:) = 0.1223 solswad0_inca(:)= 0.1224 solsw_inca(:,:)= 0.1225 solsw0_inca(:,:)= 0.1226 #endif 1227 !rv 1228 !ACo 1194 1195 IF (config_inca /= 'none') THEN 1196 tau_inca(:,:,:,:) = 0. 1197 piz_inca(:,:,:,:) = 0. 1198 cg_inca(:,:,:,:) = 0. 1199 ccm(:,:,:) = 0. 1200 topswai_inca(:) = 0. 1201 topswad_inca(:) = 0. 1202 topswad0_inca(:) = 0. 1203 topsw_inca(:,:) = 0. 1204 topsw0_inca(:,:) = 0. 1205 solswai_inca(:) = 0. 1206 solswad_inca(:) = 0. 1207 solswad0_inca(:) = 0. 1208 solsw_inca(:,:) = 0. 1209 solsw0_inca(:,:) = 0. 1210 END IF 1211 1229 1212 rnebcon0(:,:) = 0.0 1230 1213 clwcon0(:,:) = 0.0 1231 1214 rnebcon(:,:) = 0.0 1232 1215 clwcon(:,:) = 0.0 1233 ! fin anne1234 1216 1235 1217 cIM … … 1559 1541 cc ENDDO 1560 1542 c 1543 IF (config_inca /= 'none') THEN 1561 1544 #ifdef INCA 1562 call VTe(VTphysiq) 1563 call VTb(VTinca) 1564 iii = MOD(NINT(xjour),360) 1565 calday = FLOAT(iii) + gmtime 1566 WRITE(lunout,*) 'initial time ', xjour, calday 1567 #ifdef INCAINFO 1568 WRITE(lunout,*) 'Appel CHEMINI ...' 1569 #endif 1570 CALL chemini( 1545 CALL VTe(VTphysiq) 1546 CALL VTb(VTinca) 1547 iii = MOD(NINT(xjour),360) 1548 calday = FLOAT(iii) + gmtime 1549 WRITE(lunout,*) 'initial time ', xjour, calday 1550 1551 CALL chemini( 1571 1552 $ rg, 1572 1553 $ ra, … … 1581 1562 $ annee_ref, 1582 1563 $ day_ini) 1583 #ifdef INCAINFO 1584 WRITE(lunout,*) 'OK.' 1564 1565 CALL VTe(VTinca) 1566 CALL VTb(VTphysiq) 1585 1567 #endif 1586 call VTe(VTinca) 1587 call VTb(VTphysiq) 1588 #endif 1568 END IF 1589 1569 c 1590 1570 ENDIF … … 1939 1919 ENDDO 1940 1920 ENDIF 1921 1922 c Calcule de vitesse verticale a partir de flux de masse verticale 1923 DO k = 1, klev 1924 DO i = 1, klon 1925 omega(i,k) = RG*flxmass_w(i,k) / airephy(i) 1926 END DO 1927 END DO 1928 1941 1929 IF (iflag_con.EQ.1) THEN 1942 1930 stop'reactiver le call conlmd dans physiq.F' … … 2589 2577 cjq - Johannes Quaas, 27/11/2003 (quaas@lmd.jussieu.fr) 2590 2578 IF (ok_ade.OR.ok_aie) THEN 2591 IF ( .NOT. aerosol_couple ) THEN2592 2593 2594 2595 2596 2597 2598 . 2599 2579 IF ( .NOT. aerosol_couple ) THEN 2580 ! Get sulfate aerosol distribution 2581 CALL readsulfate(rjourvrai, debut, sulfate) 2582 CALL readsulfate_preind(rjourvrai, debut, sulfate_pi) 2583 2584 ! Calculate aerosol optical properties (Olivier Boucher) 2585 CALL aeropt(pplay, paprs, t_seri, sulfate, rhcl, 2586 . tau_ae, piz_ae, cg_ae, aerindex) 2587 ENDIF 2600 2588 ELSE 2601 2589 tau_ae(:,:,:)=0.0 2602 2590 piz_ae(:,:,:)=0.0 2603 cg_ae(:,:,:)=0.0 2591 cg_ae(:,:,:)=0.0 2604 2592 ENDIF 2605 2593 … … 2696 2684 ENDDO 2697 2685 2698 2686 IF (config_inca /= 'none') THEN 2699 2687 #ifdef INCA 2700 call VTe(VTphysiq) 2701 call VTb(VTinca) 2702 calday = FLOAT(julien) + gmtime 2703 2704 #ifdef INCA_AER 2705 call AEROSOL_METEO_CALC(calday,pdtphys,pplay,paprs,t,pmflxr,pmflxs 2706 & ,prfl,psfl,pctsrf,airephy,xjour,rlat,rlon,u10m,v10m) 2707 #endif 2708 2709 #ifdef INCAINFO 2710 WRITE(lunout,*)'Appel CHEMHOOK_BEGIN ...' 2711 #endif 2712 2713 zxsnow_dummy(:) = 0.0 2714 2715 CALL chemhook_begin (calday, 2716 #if defined(INCA) && !defined(INCA_CH4) && !defined(INCA_NMHC) && !defined(INCA_AER) 2688 CALL VTe(VTphysiq) 2689 CALL VTb(VTinca) 2690 calday = FLOAT(julien) + gmtime 2691 2692 IF (config_inca == 'aero') THEN 2693 CALL AEROSOL_METEO_CALC(calday,pdtphys,pplay,paprs,t,pmflxr,pmflxs 2694 & ,prfl,psfl,pctsrf,airephy,xjour,rlat,rlon,u10m,v10m) 2695 END IF 2696 2697 zxsnow_dummy(:) = 0.0 2698 2699 CALL chemhook_begin (calday, 2717 2700 $ julien, 2718 2701 $ gmtime, 2719 #endif2720 2702 $ pctsrf(1,1), 2721 2703 $ rlat, … … 2742 2724 $ iim, 2743 2725 $ jjm, 2744 #ifdef INCA_AER2745 2726 $ tr_seri, 2746 2727 $ ftsol, … … 2751 2732 $ pdtphys, 2752 2733 $ itap) 2753 #else 2754 $ tr_seri) 2755 #endif 2756 2757 2758 #ifdef INCAINFO 2759 WRITE(lunout,*)'OK.' 2760 #endif 2761 call VTe(VTinca) 2762 call VTb(VTphysiq) 2763 #endif 2734 2735 CALL VTe(VTinca) 2736 CALL VTb(VTphysiq) 2737 #endif 2738 END IF !config_inca /= 'none' 2764 2739 c 2765 2740 c Calculer les parametres optiques des nuages et quelques 2766 2741 c parametres pour diagnostiques: 2767 2742 c 2768 IF (aerosol_couple ) THEN 2769 #ifdef INCA 2743 2744 IF (aerosol_couple) THEN 2770 2745 sulfate(:,:) = ccm(:,:,1) 2771 2746 sulfate_pi(:,:) = ccm(:,:,2) 2772 #endif2773 2747 ENDIF 2774 2748 … … 2816 2790 2817 2791 IF (aerosol_couple) THEN 2818 #ifdef INCA _AER2819 CALL radlwsw_inca2792 #ifdef INCA 2793 CALL radlwsw_inca 2820 2794 e (kdlon,kflev,dist, rmu0, fract, solaire, 2821 2795 e paprs, pplay,zxtsol,albsol, albsollw, t_seri,q_seri, … … 2838 2812 #endif 2839 2813 ELSE 2840 2814 CALL radlwsw ! nouveau rayonnement (compatible Arpege-IFS) 2841 2815 e (dist, rmu0, fract, 2842 2816 e paprs, pplay,zxtsol,albsol1, albsol2, t_seri,q_seri, … … 2855 2829 s topswai, solswai) ! ="= 2856 2830 ENDIF 2857 2858 2831 itaprad = 0 2859 2832 ENDIF … … 3038 3011 c==================================================================== 3039 3012 C 3013 IF (config_inca /= 'none') rnpb=.FALSE. 3014 3040 3015 call phytrac ( rnpb, 3041 3016 I itap, … … 3092 3067 I dnwd, 3093 3068 I aerosol_couple, 3094 #ifdef INCA3095 3069 I flxmass_w, 3096 3070 I tau_inca, … … 3099 3073 I ccm, 3100 3074 I rfname, 3101 #endif3102 3075 O tr_seri) 3103 3076 … … 3190 3163 #include "calcul_divers.h" 3191 3164 c 3165 IF (config_inca /= 'none') THEN 3192 3166 #ifdef INCA 3193 call VTe(VTphysiq) 3194 call VTb(VTinca) 3195 #ifdef INCAINFO 3196 WRITE(lunout,*)'Appel CHEMHOOK_END ...' 3197 #endif 3198 CALL chemhook_end (calday, 3167 CALL VTe(VTphysiq) 3168 CALL VTb(VTinca) 3169 3170 CALL chemhook_end (calday, 3199 3171 $ dtime, 3200 3172 $ pplay, … … 3207 3179 $ day_ini, 3208 3180 $ airephy, 3209 #ifdef INCA_AER3210 3181 $ xjour, 3211 3182 $ pphi, 3212 3183 $ pphis, 3213 3184 $ zx_rh) 3214 #else3215 3185 $ xjour) 3186 3187 CALL VTe(VTinca) 3188 CALL VTb(VTphysiq) 3216 3189 #endif 3217 #ifdef INCAINFO 3218 WRITE(lunout,*)'OK.' 3219 #endif 3220 call VTe(VTinca) 3221 call VTb(VTphysiq) 3222 #endif 3190 END IF 3223 3191 3224 3192 c=============================================================
Note: See TracChangeset
for help on using the changeset viewer.