Changeset 808 for trunk/LMDZ.TITAN/libf/phytitan
- Timestamp:
- Oct 16, 2012, 12:57:35 PM (12 years ago)
- Location:
- trunk/LMDZ.TITAN/libf/phytitan
- Files:
-
- 3 added
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.TITAN/libf/phytitan/cnuages3D.F
r175 r808 131 131 real especes(NG,NL,3*nrad+1) 132 132 real condens(NG,NL,nrad) 133 real gg,xmair 133 real gg(NL),xmair 134 real effg ! effg est une fonction(z), z en m. 134 135 135 136 integer jsup,jinf,h,i,j,k,ndim … … 143 144 ndim=3*nrad+1 144 145 145 gg=g0 146 do j=1,NL 147 gg(j)=effg(z(j)) 148 enddo 146 149 147 150 ********************************************* … … 167 170 enddo 168 171 169 gg=g0*rtit**2/(rtit+z(j))**2. 170 xmair=(pb(j+1)-pb(j))/gg/dzb(j) 172 xmair=(pb(j+1)-pb(j))/gg(j)/dzb(j) 171 173 172 174 do k=1,nrad … … 196 198 do j=1,NL 197 199 198 gg=g0*rtit**2/(rtit+z(j))**2. 199 xmair=(pb(j+1)-pb(j))/gg/dzb(j) 200 xmair=(pb(j+1)-pb(j))/gg(j)/dzb(j) 200 201 201 202 * ici ce sont les tendances a sortir de nuages.F pour le methane.... … … 245 246 enddo 246 247 247 gg=g0*rtit**2/(rtit+z(j))**2. 248 xmair=(pb(j+1)-pb(j))/gg/dzb(j) 248 xmair=(pb(j+1)-pb(j))/gg(j)/dzb(j) 249 249 250 250 do k=1,nrad … … 267 267 do i=1,ng1 268 268 do j=1,NL 269 gg=g0*rtit**2/(rtit+z(j))**2. 270 xmair=(pb(j+1)-pb(j))/gg/dzb(j) 269 xmair=(pb(j+1)-pb(j))/gg(j)/dzb(j) 271 270 272 271 * ici ce sont les tendances a sortir de nuages.F pour l'ethane.... … … 311 310 tdq( i,j,k,3) = 0. 312 311 enddo 313 gg=g0*rtit**2/(rtit+z(j))**2. 314 xmair=(pb(j+1)-pb(j))/gg/dzb(j) 312 xmair=(pb(j+1)-pb(j))/gg(j)/dzb(j) 315 313 316 314 do k=1,nrad … … 333 331 do j=1,NL 334 332 335 gg=g0*rtit**2/(rtit+z(j))**2. 336 xmair=(pb(j+1)-pb(j))/gg/dzb(j) 333 xmair=(pb(j+1)-pb(j))/gg(j)/dzb(j) 337 334 338 335 * ici ce sont les tendances a sortir de nuages.F pour l'ethane.... -
trunk/LMDZ.TITAN/libf/phytitan/cooling.F
r495 r808 58 58 #include "dimensions.h" 59 59 #include "YOMCST.h" 60 #include "clesphys.h" 60 61 INTEGER NLAYER,NSPECI,NSPC1I 61 62 PARAMETER(NLAYER=llm) -
trunk/LMDZ.TITAN/libf/phytitan/effg.F
r306 r808 1 1 FUNCTION EFFG(Z) 2 2 #include "YOMCST.h" 3 ! RA en m, Z en km... 4 EFFG = RG * (RA/(RA + Z*1000. ) )**2 3 ! RA en m, Z en m... 4 5 ! Quand on prendra atmosphere epaisse dans dynamique 6 ! (et dans physique, attention a clmain et autres...) 7 8 ! EFFG = RG * (RA/(RA + Z ) )**2 9 10 ! Pour l'instant: 11 EFFG = RG 5 12 RETURN 6 13 END -
trunk/LMDZ.TITAN/libf/phytitan/gasses.F
r3 r808 16 16 DO 159 J=1,NLAYER 17 17 EMU=(XMU(J+1)+XMU(J))*0.5 18 COLDEN(J)=RHOP*(PRESS(J+1)-PRESS(J))/EFFG(Z(J)) 18 c attention ici, Z en km doit etre passe en m 19 COLDEN(J)=RHOP*(PRESS(J+1)-PRESS(J))/EFFG(Z(J)*1000.) 19 20 GAS1(J)=(16./EMU)*AVERGE(CH4(J+1),CH4(J)) 20 21 159 CONTINUE -
trunk/LMDZ.TITAN/libf/phytitan/optci.F
r495 r808 268 268 c if ((microfi.eq.0).or.(ig.eq.(klon/2+16))) iout=1 269 269 if (seulmtunpt.eq.0) then 270 call optci_1pt 2(zqaer_1pt,rmcbar(ig,:),xfbar(ig,:,:),270 call optci_1pt3(zqaer_1pt,rmcbar(ig,:),xfbar(ig,:,:), 271 271 & iopti,iout) 272 272 iopti = 1 -
trunk/LMDZ.TITAN/libf/phytitan/optci_1pt.F
r495 r808 90 90 PBAR=SQRT(PRESS(J)*PRESS(J+1)) 91 91 BMU=0.5*(XMU(J+1)+XMU(J)) 92 c attention ici, Z en km doit etre passe en m 92 93 COEF1=RGAS*273.15**2*.5E5* (PRESS(J+1)**2 - PRESS(J)**2) 93 & /(1.01325**2 *EFFG(Z(J) )*TBAR*BMU)94 95 IF (IPRINT .GT. 9) WRITE(6,21) J,EFFG(Z(J) ),TBAR,BMU,COEF194 & /(1.01325**2 *EFFG(Z(J)*1000.)*TBAR*BMU) 95 96 IF (IPRINT .GT. 9) WRITE(6,21) J,EFFG(Z(J)*1000.),TBAR,BMU,COEF1 96 97 21 FORMAT(' J, EFFG, TBAR, BMU, COEF1,: ',I3,1P6E10.3) 97 98 -
trunk/LMDZ.TITAN/libf/phytitan/optci_1pt_2.F
r495 r808 90 90 PBAR=SQRT(PRESS(J)*PRESS(J+1)) 91 91 BMU=0.5*(XMU(J+1)+XMU(J)) 92 c attention ici, Z en km doit etre passe en m 92 93 COEF1=RGAS*273.15**2*.5E5* (PRESS(J+1)**2 - PRESS(J)**2) 93 & /(1.01325**2 *EFFG(Z(J) )*TBAR*BMU)94 95 IF (IPRINT .GT. 9) WRITE(6,21) J,EFFG(Z(J) ),TBAR,BMU,COEF194 & /(1.01325**2 *EFFG(Z(J)*1000.)*TBAR*BMU) 95 96 IF (IPRINT .GT. 9) WRITE(6,21) J,EFFG(Z(J)*1000.),TBAR,BMU,COEF1 96 97 21 FORMAT(' J, EFFG, TBAR, BMU, COEF1,: ',I3,1P6E10.3) 97 98 -
trunk/LMDZ.TITAN/libf/phytitan/optcv.F
r495 r808 202 202 c if ((microfi.eq.0).or.(ig.eq.klon/2)) iout=1 203 203 if (seulmtunpt.eq.0) then 204 call optcv_1pt 2(zqaer_1pt,rmcbar(ig,:),xfbar(ig,:,:),204 call optcv_1pt3(zqaer_1pt,rmcbar(ig,:),xfbar(ig,:,:), 205 205 & ioptv,IPRINT) 206 206 ioptv = 1 -
trunk/LMDZ.TITAN/libf/phytitan/phyetat0.F
r175 r808 92 92 itau_phy = tab_cntrl(15) 93 93 94 c Attention si raz_date est active : 95 c il faut remettre a zero itau_phy apres phyetat0 ! 96 IF (raz_date.eq.1) THEN 97 itau_phy=0 98 ENDIF 99 94 100 c 95 101 c Lecture des latitudes (coordonnees): -
trunk/LMDZ.TITAN/libf/phytitan/physiq.F
r495 r808 286 286 REAL dist, rmu0(klon), fract(klon), pdecli 287 287 REAL zday 288 REAL zls 288 REAL zls,zlsm1 289 289 c 290 290 INTEGER i, k, iq, ig, j, ll, l … … 794 794 DO l=1,klev 795 795 DO i=1,klon 796 czzlay(i,l)=zphi(i,l)/RG796 zzlay(i,l)=zphi(i,l)/RG 797 797 c SI ON TIENT COMPTE DE LA VARIATION DE G AVEC L'ALTITUDE: 798 798 c zzlay(i,l)=RG*RA*RA/(RG*RA-zphi(i,l))-RA 799 799 ENDDO 800 800 ENDDO … … 863 863 print*,'Ls',zls*180./RPI ! zls est en radians !! 864 864 CALL orbite(zls,dist,pdecli) 865 IF (debut) zlsm1=zls 865 866 866 867 c dans zenang, Ls en degres ; dans mucorr, Ls en radians -
trunk/LMDZ.TITAN/libf/phytitan/phytrac.F
r474 r808 732 732 d_tr_mph(i,l,iq) = (qaer(i,l,iq)-qaer0(i,l,iq))/ 733 733 & ptimestep 734 c Traceurs microphysiques: passage en intensif: n/m^2 --> n/kg735 d_tr_mph(i,l,iq) = d_tr_mph(i,l,iq)*RG/delp(i,l)736 734 ENDDO 737 735 ENDDO … … 743 741 DO i = 1, klon 744 742 d_tr_mph(i,l,iq)=(qaer(i,l,iq)-qaer0(i,l,iq))/ptimestep 743 ENDDO 744 ENDDO 745 ENDDO 746 747 ENDIF ! microfi 748 749 DO iq=1,nmicro 750 DO l=1,llm 751 DO i = 1, klon 745 752 c Traceurs microphysiques: passage en intensif: n/m^2 --> n/kg 746 d_tr_mph(i,l,iq) = d_tr_mph(i,l,iq)*RG/delp(i,l) 747 ENDDO 748 ENDDO 749 ENDDO 750 751 ENDIF ! microfi 753 d_tr_mph(i,l,iq) = d_tr_mph(i,l,iq)*RG/delp(i,l) 754 ENDDO 755 ENDDO 756 ENDDO 752 757 753 758 c AUTRES TRACEURS … … 970 975 RETURN 971 976 END 977 -
trunk/LMDZ.TITAN/libf/phytitan/radtitan.F
r175 r808 34 34 use dimphy 35 35 USE comgeomphy 36 USE optcld, only : iniqcld 36 37 IMPLICIT NONE 37 38 #include "dimensions.h" … … 136 137 print*,'FHVIS = ',FHVIS 137 138 print*,'FHIR = ',FHIR 139 c on initialise le paquet optcld 140 call iniqcld() 138 141 iprem=1 139 142 endif … … 225 228 enddo 226 229 do i=1,nlayer 227 colden(i)=rhop*(press(i+1)-press(i))/effg(z(i)) 230 c attention ici, Z en km doit etre passe en m 231 colden(i)=rhop*(press(i+1)-press(i))/effg(z(i)*1000.) 228 232 gas1(i)=0. 229 233 emu=(xmu(i+1)+xmu(i))/2. -
trunk/LMDZ.TITAN/libf/phytitan/sources.F
r474 r808 47 47 REAL zcdv(klon),zu2,pz0 48 48 REAL xmair,gg,zrho,ws,ch,qch4,flux 49 REAL effg ! effg est une fonction(z), z en m. 49 50 REAL xmuair 50 51 REAL zmem,zmem2,zmem3 … … 92 93 DO ig=1,ngrid 93 94 zu2=pu(ig)*pu(ig)+pv(ig)*pv(ig)+umin 94 zcdv(ig)=pz0*( 1.+sqrt(zu2))95 zcdv(ig)=pz0*(sqrt(zu2)) 95 96 c write(99,'(I4,3(ES24.17,1X))') ig, 96 c & pz0,zu2,( 1.+sqrt(zu2))97 c & pz0,zu2,(sqrt(zu2)) 97 98 ENDDO 98 99 c write(99,*) "" … … 107 108 zevapch4=0. 108 109 restemp=0. 109 gg= RG*RA**2/(RA+pzlay(ig,1))**2.110 gg=effg(pzlay(ig,1)) 110 111 zrho=(pplev(ig,1)-pplev(ig,2))/gg 111 112 zrho=zrho/(pzlev(ig,2)-pzlev(ig,1)) … … 127 128 & /(1.+flux*ptimestep) 128 129 129 gg= RG!*RA**2/(RA+pzlay(ig,1))**2.130 gg=effg(pzlay(ig,1)) 130 131 xmair=(pplev(ig,1)-pplev(ig,1+1))/gg 131 132 xmair=xmair/(pzlev(ig,1+1)-pzlev(ig,1)) … … 156 157 ENDIF 157 158 c 158 evapch4(ig) =evapch4(ig)+zevapch4 ! evapch4 doit etre < 0159 evapch4(ig) = zevapch4 ! < 0 si volume évaporé (m3/m2) 159 160 160 161 ENDDO … … 168 169 DO ilev=nlay,nlay-4,-1 169 170 * calcule de zrho (kg/m3) pour la couche... 170 gg= RG*RA**2/(RA+pzlay(ig,ilev))**2.171 gg=effg(pzlay(ig,ilev)) 171 172 zrho=(pplev(ig,ilev)-pplev(ig,ilev+1))/gg 172 173 zrho=zrho/(pzlev(ig,ilev+1)-pzlev(ig,ilev)) … … 202 203 DO ilev=nlay,nlay-4,-1 203 204 * calcule de zrho (kg/m3) pour la couche... 204 gg= RG*RA**2/(RA+pzlay(ig,ilev))**2.205 gg=effg(pzlay(ig,ilev)) 205 206 zrho=(pplev(ig,ilev)-pplev(ig,ilev+1))/gg 206 207 zrho=zrho/(pzlev(ig,ilev+1)-pzlev(ig,ilev)) -
trunk/LMDZ.TITAN/libf/phytitan/write_histday.h
r474 r808 27 27 CALL histwrite(nid_day,"aire",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d) 28 28 c 29 ccccccc axe Ls 29 ccccccc axe Ls ... Faudrait le reduire a axe temporel seulement... 30 30 do j=1,jjmp1 31 31 do i=1,iim … … 33 33 enddo 34 34 enddo 35 c Correction passage de 360 à 0... Sinon probleme avec moyenne 36 if (zls.lt.zlsm1) then 37 zx_tmp_2d = zx_tmp_2d+360. 38 zlsm1 = 2.*RPI 39 else 40 zlsm1 = zls 41 endif 35 42 CALL histwrite(nid_day,"ls",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d) 36 43 c -
trunk/LMDZ.TITAN/libf/phytitan/write_histins.h
r175 r808 27 27 CALL histwrite(nid_ins,"aire",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d) 28 28 c 29 ccccccc axe Ls 29 ccccccc axe Ls ... Faudrait le reduire a axe temporel seulement... 30 30 do j=1,jjmp1 31 31 do i=1,iim -
trunk/LMDZ.TITAN/libf/phytitan/write_histmth.h
r474 r808 23 23 CALL histwrite(nid_mth,"aire",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d) 24 24 c 25 ccccccc axe Ls 25 ccccccc axe Ls ... Faudrait le reduire a axe temporel seulement... 26 26 do j=1,jjmp1 27 27 do i=1,iim … … 29 29 enddo 30 30 enddo 31 c Correction passage de 360 à 0... Sinon probleme avec moyenne 32 if (zls.lt.zlsm1) then 33 zx_tmp_2d = zx_tmp_2d+360. 34 zlsm1 = 2.*RPI 35 else 36 zlsm1 = zls 37 endif 31 38 CALL histwrite(nid_mth,"ls",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d) 32 39 c -
trunk/LMDZ.TITAN/libf/phytitan/yamada4.F
r102 r808 434 434 435 435 do ig=1,ngrid 436 coriol(ig)=1.e-4 437 pblhmin(ig)=0.07*ustar(ig)/max(abs(coriol(ig)),2.546e-5 )438 enddo 439 440 441 436 coriol(ig)=1.e-4*86400/RDAY !! scaling... should be checked 437 pblhmin(ig)=0.07*ustar(ig)/max(abs(coriol(ig)),2.546e-5*86400/RDAY) 438 enddo 439 c if (first) then 440 c print*,'A REVOIR!! coriol ?? pblhmin ',pblhmin 441 c endif 442 442 CTest a remettre 21 11 02 443 443 c test abd 13 05 02 if(0.eq.1) then
Note: See TracChangeset
for help on using the changeset viewer.