Changeset 1301 for trunk/LMDZ.VENUS/libf/phyvenus/physiq.F
- Timestamp:
- Jun 26, 2014, 12:25:31 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.VENUS/libf/phyvenus/physiq.F
r1160 r1301 7 7 . paprs,pplay,ppk,pphi,pphis,presnivs, 8 8 . u,v,t,qx, 9 . omega,9 . flxmw, 10 10 . d_u, d_v, d_t, d_qx, d_ps) 11 11 … … 46 46 c qx------input-R-mass mixing ratio traceurs (kg/kg) 47 47 c d_t_dyn-input-R-tendance dynamique pour "t" (K/s) 48 c omega---input-R-vitesse verticale en Pa/s48 c flxmw---input-R-flux de masse vertical en kg/s 49 49 c 50 50 c d_u-----output-R-tendance physique de "u" (m/s/s) … … 125 125 REAL d_t_dyn(klon,klev) 126 126 127 REAL omega(klon,klev)127 REAL flxmw(klon,klev) 128 128 129 129 REAL d_u(klon,klev) … … 146 146 c Variables propres a la physique 147 147 c 148 REAL,save,allocatable :: rlev(:,:) ! altitude a chaque niveau (interface inferieure de la couche)149 148 INTEGER,save :: itap ! compteur pour la physique 150 149 REAL delp(klon,klev) ! epaisseur d'une couche 150 REAL omega(klon,klev) ! vitesse verticale en Pa/s 151 151 152 152 153 INTEGER igwd,idx(klon),itest(klon) … … 242 243 c 243 244 REAL zphi(klon,klev) 244 c 245 REAL zzlev(klon,klev+1),zzlay(klon,klev),z1,z2 246 245 247 c Variables du changement 246 248 c … … 362 364 c======================== 363 365 IF (debut) THEN 364 allocate(rlev(klon,klevp1))365 366 allocate(source(klon,nqmax)) 366 367 … … 621 622 ENDIF 622 623 c==================================================================== 624 625 c Calcule de vitesse verticale a partir de flux de masse verticale 626 DO k = 1, klev 627 DO i = 1, klon 628 omega(i,k) = RG*flxmw(i,k) / airephy(i) 629 END DO 630 END DO 631 623 632 c 624 633 c Ajouter le geopotentiel du sol: … … 629 638 ENDDO 630 639 ENDDO 640 641 c calcul du geopotentiel aux niveaux intercouches 642 c ponderation des altitudes au niveau des couches en dp/p 643 644 DO k=1,klev 645 DO i=1,klon 646 zzlay(i,k)=zphi(i,k)/RG 647 ENDDO 648 ENDDO 649 DO i=1,klon 650 zzlev(i,1)=pphis(i)/RG 651 ENDDO 652 DO k=2,klev 653 DO i=1,klon 654 z1=(pplay(i,k-1)+paprs(i,k))/(pplay(i,k-1)-paprs(i,k)) 655 z2=(paprs(i,k) +pplay(i,k))/(paprs(i,k) -pplay(i,k)) 656 zzlev(i,k)=(z1*zzlay(i,k-1)+z2*zzlay(i,k))/(z1+z2) 657 ENDDO 658 ENDDO 659 DO i=1,klon 660 zzlev(i,klev+1)=zzlay(i,klev)+(zzlay(i,klev)-zzlev(i,klev)) 661 ENDDO 662 631 663 c==================================================================== 632 664 c … … 729 761 fder = dlw 730 762 731 c print*,"radsol avant clmain=",radsol(klon/2)732 c print*,"solsw avant clmain=",solsw(klon/2)733 c print*,"sollw avant clmain=",sollw(klon/2)734 735 763 ! ADAPTATION GCM POUR CP(T) 736 764 … … 749 777 s ycoefh,yu1,yv1) 750 778 751 c print*,"radsol apres clmain=",radsol(klon/2)752 c print*,"solsw apres clmain=",solsw(klon/2)753 c print*,"sollw apres clmain=",sollw(klon/2)754 755 779 CXXX Incrementation des flux 756 780 DO i = 1, klon … … 770 794 ENDDO 771 795 ENDDO 772 c773 c print*,"d_t_vdf1=",d_t_vdf(1,:)*dtime774 c print*,"d_t_vdf2=",d_t_vdf(klon/2,:)*dtime775 c print*,"d_t_vdf3=",d_t_vdf(klon,:)*dtime776 c print*,"d_u_vdf=",d_u_vdf(klon/2,:)*dtime777 c print*,"d_v_vdf=",d_v_vdf(klon/2,:)*dtime778 796 779 797 C TRACEURS … … 810 828 c Incrementer la temperature du sol 811 829 c 812 c print*,'Tsol avant clmain:',ftsol(1)813 830 DO i = 1, klon 814 831 ftsol(i) = ftsol(i) + d_ts(i) 815 832 ENDDO 816 c print*,'Tsol apres clmain:',ftsol(1)817 833 818 834 c Calculer la derive du flux infrarouge … … 878 894 v_seri(:,:) = v_seri(:,:) + d_v_ajs(:,:) 879 895 d_v_ajs(:,:)= d_v_ajs(:,:)/dtime ! (m/s)/s 880 if (iflag_trac.eq.1) then 896 897 if (iflag_trac.eq.1) then 881 898 tr_seri(:,:,:) = tr_seri(:,:,:) + d_tr_ajs(:,:,:) 882 899 d_tr_ajs(:,:,:)= d_tr_ajs(:,:,:)/dtime ! /s 883 endif 884 885 c print*,"d_t_ajs1=",d_t_ajs(1,:)*dtime 886 c print*,"d_t_ajs2=",d_t_ajs(klon/2,:)*dtime 887 c print*,"d_t_ajs3=",d_t_ajs(klon,:)*dtime 888 c print*,"d_u_ajs=",d_u_ajs(klon/2,:)*dtime 889 c print*,"d_v_ajs=",d_v_ajs(klon/2,:)*dtime 900 endif 890 901 891 902 endif … … 919 930 c PRINT*,'dtimerad,dtime,radpas',dtimerad,dtime,radpas 920 931 921 c print*,"radsol avant radlwsw=",radsol(klon/2)922 c print*,"solsw avant radlwsw=",solsw(klon/2)923 c print*,"sollw avant radlwsw=",sollw(klon/2)924 c print*,"avant radlwsw"925 926 932 CALL radlwsw 927 e (dist, rmu0, fract, 933 e (dist, rmu0, fract, zzlev, 928 934 e paprs, pplay,ftsol, t_seri, 929 935 s heat,cool,radsol, … … 932 938 s lwnet, swnet) 933 939 934 c print*,"apres radlwsw"935 c print*,"radsol apres radlwsw=",radsol(klon/2)936 c print*,"solsw apres radlwsw=",solsw(klon/2)937 c print*,"sollw apres radlwsw=",sollw(klon/2)938 940 itaprad = 0 939 941 DO k = 1, klev 940 942 DO i = 1, klon 941 dtrad(i,k) = heat(i,k)-cool(i,k) 942 dtrad(i,k) = dtrad(i,k)/RDAY !K/s 943 ENDDO 944 ENDDO 945 c print*,"dtrad1=",dtrad(1,:)*dtime 946 c print*,"dtrad2=",dtrad(klon/2,:)*dtime 947 c print*,"dtrad3=",dtrad(klon,:)*dtime 948 943 dtrad(i,k) = heat(i,k)-cool(i,k) !K/s 944 ENDDO 945 ENDDO 946 949 947 ENDIF 950 948 itaprad = itaprad + 1
Note: See TracChangeset
for help on using the changeset viewer.