Changeset 204 for LMDZ.3.3/trunk
- Timestamp:
- Apr 13, 2001, 12:44:53 PM (24 years ago)
- Location:
- LMDZ.3.3/trunk/libf
- Files:
-
- 5 deleted
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ.3.3/trunk/libf/dyn3d/grilles_gcm_netcdf.F
r198 r204 1 c 1 2 c $Header 3 c 4 2 5 PROGRAM create_fausse_var 3 6 C … … 9 12 #include "comconst.h" 10 13 #include "comgeom.h" 14 #include "comvert.h" 15 16 real temp(iim+1,jjm+1) 11 17 #include "netcdf.inc" 12 18 … … 19 25 integer*4 out_latudim,out_latvdim,out_dim(3) 20 26 21 c champs a faire disparaitre 22 real ucov(ijp1llm),vcov(ijmllm),teta(ijp1llm) 23 real masse(ijp1llm),ps(ip1jmp1),phis(ip1jmp1) 24 real q(ijp1llm*nqmx) 25 real time_0 26 27 real clesphy0(20),pa,preff 27 INTEGER longcles 28 PARAMETER ( longcles = 20 ) 29 REAL clesphy0( longcles ) 30 31 integer start(4),count(4) 28 32 29 33 integer status,i,j … … 31 35 real rlonudeg(iip1),rlonvdeg(iip1) 32 36 37 real dlon1(iip1),dlon2(iip1),dlat1(jjp1),dlat2(jjp1) 38 real acoslat,dxkm,dykm,resol(iip1,jjp1) 39 40 #include "serre.h" 41 #include "fxyprim.h" 42 43 print*,'OK0' 33 44 34 45 rad = 6400000 … … 42 53 pa= 50000. 43 54 44 c CALL dynetat0("start.nc",nqmx,vcov,ucov,45 c . teta,q,masse,ps,phis, time_0)46 47 48 55 open(99,file='run.def',status='old',form='formatted') 49 CALL defrun_new( 99, .TRUE. ,clesphy0)56 CALL defrun_new( 99, .TRUE.,clesphy0 ) 50 57 close(99) 51 58 CALL iniconst 52 print*,'inigeom pas OK'53 59 CALL inigeom 54 print*,'inigeom OK' 55 60 61 62 print*,'OK1' 56 63 do j=1,jjp1 57 64 rlatudeg(j)=rlatu(j)*180./pi … … 66 73 enddo 67 74 68 print*,' 2 ----- OUVERTURE DE LA SORTIE NETCDF' 75 76 print*,'OK2' 77 c 2 ----- OUVERTURE DE LA SORTIE NETCDF 69 78 c --------------------------------------------------- 70 79 c CREATION OUTPUT … … 78 87 status=NF_DEF_DIM(ncid_out,'latv',jjm,out_latvdim) 79 88 89 90 print*,'OK3' 80 91 c Longitudes en u 81 92 print *,'OUTID: ',ncid_out … … 138 149 % 16,'Grille aux point v') 139 150 140 151 c ecriture de la grille u 152 out_dim(1)=out_lonvdim 153 out_dim(2)=out_latudim 154 status=NF_DEF_VAR(ncid_out,'grille_s',NF_FLOAT,2,out_dim, 155 % out_varid) 156 call handle_err(status) 157 status=NF_PUT_ATT_TEXT(ncid_out,out_varid,'units', 158 % 6,'Kelvin') 159 status=NF_PUT_ATT_TEXT(ncid_out,out_varid,'long_name', 160 % 16,'Grille aux point u') 161 162 163 print*,'OK4' 141 164 status=NF_ENDDEF(ncid_out) 142 print*,' 5) ----- FERMETURE DES FICHIERS NETCDF-' 165 c 5) ----- FERMETURE DES FICHIERS NETCDF------------------ 143 166 c -------------------------------------------------------- 144 167 c 3-b- Ecriture de la grille pour la sortie … … 150 173 status=NF_PUT_VARA_REAL(ncid_out,out_latvid,1,jjm,rlatvdeg) 151 174 175 start(1)=1 176 start(2)=1 177 start(3)=1 178 start(4)=1 179 180 count(1)=iim+1 181 count(2)=jjm+1 182 count(3)=1 183 count(4)=1 184 185 do j=1,jjm+1 186 do i=1,iim+1 187 temp(i,j)=mod(i,2)+mod(j,2) 188 enddo 189 enddo 190 191 status=NF_PUT_VARA_REAL(ncid_out,out_varid,start, 192 s count,temp) 152 193 153 194 c fermeture du fichier netcdf … … 155 196 write(*,*) 'Fermeture: ',fich_out 156 197 198 199 print*,'OK5' 200 c Ecriture grads 201 open (20,file='grille.dat',form='unformatted',access='direct' 202 s ,recl=4*ip1jmp1) 203 write(20,rec=1) ((float(mod(i,2)+mod(j,2)),i=1,iip1),j=1,jjp1) 204 write(20,rec=2) ((float(mod(i,2)*mod(j,2)),i=1,iip1),j=1,jjp1) 205 do j=2,jjm 206 dlat1(j)=180.*(rlatv(j)-rlatv(j-1))/pi 207 c dlat2(j)=180.*fyprim(float(j))/pi 208 enddo 209 do i=2,iip1 210 dlon1(i)=180.*(rlonu(i)-rlonu(i-1))/pi 211 c dlon2(i)=180.*fxprim(float(i))/pi 212 enddo 213 do j=2,jjm 214 dykm=(rlatv(j)-rlatv(j-1))*6400. 215 acoslat=6400.*cos(rlatu(j)) 216 do i=2,iip1 217 dxkm=acoslat*(rlonu(i)-rlonu(i-1)) 218 resol(i,j)=sqrt(dykm*dykm+dxkm*dxkm) 219 enddo 220 resol(1,j)=resol(iip1,j) 221 enddo 222 write(20,rec=3) resol 223 dlon1(1)=dlon1(iip1) 224 dlon2(1)=dlon2(iip1) 225 write(20,rec=4) ((dlon1(i),i=1,iip1),j=1,jjp1) 226 write(20,rec=5) ((dlon2(i),i=1,iip1),j=1,jjp1) 227 write(20,rec=6) ((dlat1(j),i=1,iip1),j=1,jjp1) 228 write(20,rec=7) ((dlat2(j),i=1,iip1),j=1,jjp1) 229 230 open (21,file='grille.ctl',form='formatted') 231 232 c WARNING! on reecrase le fichier .ctl a chaque ecriture 233 write(21,'(a5,1x,a40)') 234 & 'DSET ','^grille.dat' 235 236 write(21,'(a12)') 'UNDEF 1.0E30' 237 write(21,'(a5,1x,a40)') 'TITLE ','grille' 238 call formcoord(21,iip1,rlonv,180./pi,.false.,'XDEF') 239 call formcoord(21,jjp1,rlatu,180./pi,.true.,'YDEF') 240 call formcoord(21,1,0.,1.,.false.,'ZDEF') 241 write(21,'(a4,i10,a30)') 242 & 'TDEF ',1,' LINEAR 23OCT1994 3hr ' 243 write(21,'(a4,2x,i5)') 'VARS',7 244 write(21,'(a18)') 'grille 0 99 grille' 245 write(21,'(a18)') 'gril 0 99 gril ' 246 write(21,'(a29)') 'resol 0 99 resolution (km) ' 247 write(21,'(a18)') 'dlon1 0 99 dlon1 ' 248 write(21,'(a18)') 'dlon2 0 99 dlon2 ' 249 write(21,'(a18)') 'dlat1 0 99 dlat1 ' 250 write(21,'(a18)') 'dlat2 0 99 dlat2 ' 251 write(21,'(a7)') 'ENDVARS' 252 253 254 255 256 257 print*,'OK6' 157 258 end 158 259 … … 161 262 subroutine handle_err(status) 162 263 #include "netcdf.inc" 264 265 163 266 integer status 164 267 print *,'handle code err: ',NF_NOERR -
LMDZ.3.3/trunk/libf/dyn3d/nudge.F
r198 r204 99 99 s ,'1: en-ligne, 0: hors-ligne (x=x_rea), -1: climat (x=x_gcm)' 100 100 cnec read(*,*) online 101 online=-1 102 print*,'Entrer les constantes de temps de rappel en jours' 103 print*,'alphaT,alphau,alphav,alphaP' 101 cnec online=-1 102 cnec print*,'Entrer les constantes de temps de rappel en jours' 104 103 cnec read(*,*)alphaT 105 104 cnec read(*,*)alphau … … 110 109 alphav=0.1 111 110 alphaP=1.e10 111 print*,'alphaT,alphau,alphav,alphaP' 112 s ,alphaT,alphau,alphav,alphaP 112 113 if(online.eq.-1) return 113 114 print*,'alpha rappel pour T, u, v, P ', … … 142 143 c Lecture du premier etat des reanalyses. 143 144 call read_reanalyse(1 144 s ,ucovrea2,vcovrea2,tetarea2,masserea2,ps rea2,1)145 s ,ucovrea2,vcovrea2,tetarea2,masserea2,ps,1) 145 146 146 147 c----------------------------------------------------------------------- … … 171 172 CALL SCOPY( ijp1llm,ucovrea2, 1, ucovrea1 , 1 ) 172 173 CALL SCOPY( ijp1llm,tetarea2,1,tetarea1 , 1 ) 173 174 174 c CALL SCOPY( ijp1llm,masserea2,1,masserea1 , 1 ) 175 c CALL SCOPY( ip1jmp1,psrea2, 1, psrea1, 1 ) 175 176 176 177 print*,'LECTURE REANALYSES, pas ',step_rea … … 179 180 itau_test=itau 180 181 call read_reanalyse(step_rea 181 s ,ucovrea2,vcovrea2,tetarea2,masserea2,ps rea2,1)182 s ,ucovrea2,vcovrea2,tetarea2,masserea2,ps,1) 182 183 endif 183 184 else … … 205 206 a=(1.-tau)*tetarea1(ij,l)+tau*tetarea2(ij,l) 206 207 teta(ij,l)=alphaT*teta(ij,l)+(1-alphaT)*a 207 208 208 c a=(1.-tau)*masserea1(ij,l)+tau*masserea2(ij,l) 209 c masse(ij,l)=alphaP*masse(ij,l)+(1-alphaP)*a 209 210 enddo 210 211 do ij=1,ip1jm -
LMDZ.3.3/trunk/libf/dyn3d/offlinenc.F
r187 r204 1 c 2 c $Header 3 c 1 4 PROGRAM offlinenc 2 5 USE ioipsl … … 66 69 integer iiinj 67 70 integer jour0,isplit,nsplit_dyn,nsplit_phy,nsplit 68 logical debut,lectstart,rnpb 71 logical debut,lectstart,rnpb,lafin 69 72 70 73 EXTERNAL inidissip,iniconst,inifilr … … 190 193 . teta,q,masse,ps,phis, time_0) 191 194 print*,'Lecture du start' 195 c On zappe le radon et le plomb. 196 q(:,:,:,1)=q(:,:,:,3) 197 q(:,:,:,2)=q(:,:,:,4) 198 c Initialisation d'un traceur ` 1 pour tester l'impact du lessivage. 199 q(:,:,:,3)=1. 192 200 else 193 201 day_ini=0 … … 203 211 C print*,'av iniconst' 204 212 c lecture du jour de demarrage 205 c premiere initialisation, eventuellement bidon206 CALL iniconst213 c premiere cnitialisation, eventuellement bidon 214 cALL iniconst 207 215 CALL inigeom 208 216 C 209 print*,'ENTREE DANS redecoupenc ou lectfluxnc 0217 print*,'ENTREE DANS redecoupenc ou lectfluxnc 210 218 s pour irec=0' 211 219 … … 219 227 s frac_impa,frac_nucl,phis) 220 228 else 221 call lectfluxnc 0(0,masse,pbaru,pbarv,w,teta,phi,229 call lectfluxnc(0,masse,pbaru,pbarv,w,teta,phi, 222 230 s nrec,avant,airefi,pphis, 223 231 s t,zmfu, zmfd, zen_u, zde_u,zen_d, zde_d, coefkz, … … 373 381 s frac_impa,frac_nucl,phis) 374 382 else 375 call lectfluxnc 0(irec,masse,pbaru,pbarv,w,teta,phi,383 call lectfluxnc(irec,masse,pbaru,pbarv,w,teta,phi, 376 384 s nrec,avant,airefi,pphis, 377 385 s t,zmfu, zmfd, zen_u, zde_u,zen_d, zde_d, coefkz, … … 380 388 endif 381 389 390 391 print*,'TESTPHYS: ON PREND LA PUIS ',1./float(nsplit*nsplit_phy) 392 s ,' DES FRAC A IT=',itau 393 frac_impa(:,:)=frac_impa(:,:)**(1./float(nsplit*nsplit_phy)) 394 frac_nucl(:,:)=frac_nucl(:,:)**(1./float(nsplit*nsplit_phy)) 382 395 c ... ouverture du fichier de stockage netcdf ... 383 396 C … … 391 404 mode=1 392 405 393 394 406 c CALL initdynav(dynhistave_file,day_ini,anne_ini,dtav, 407 c . t_ops, t_wrt, nq,mode, histaveid) 395 408 396 409 pi=2.*asin(1.) … … 832 845 do iii=1,nsplit_phy 833 846 C 847 lafin=.false. ! en attendant mieux. 834 848 print*,'dtphys avant phytrac ',dtphys 835 call phytrac(rnpb, 836 I ecritphy, debutphy, 849 print*,'TESTPHYS: APPEL A PHYTRAC IT=',itau 850 851 call phytrac(rnpb,ecritphy, 852 c I ecritphy, debutphy, 853 I debutphy, lafin, 837 854 I nq, 838 855 I ngridmx,llm,dtphys, … … 855 872 itauav=(itau-1)*nsplit+isplit 856 873 c itauav=itau*nsplit+isplit 857 858 874 c CALL writedynav(histaveid, nq,mode, itauav,vcov , 875 c , ucov,teta,pk,phi,q,masse,ps,phis) 859 876 c qmoy(:,:,:)=qmoy(:,:,:)+q(:,:,1,:) 860 877 do iq=1,nq -
LMDZ.3.3/trunk/libf/dyn3d/read_reanalyse.F
r198 r204 1 c 1 2 c $Header 3 c 2 4 subroutine read_reanalyse(timestep,u,v,t,masse,ps,mode) 3 5 … … 14 16 integer nlevnc 15 17 cModef 11-2-99 parameter (nlevnc=15) 16 parameter (nlevnc= 15)18 parameter (nlevnc=21) 17 19 integer timestep,mode,l 18 20 … … 58 60 varidt=NCVID(ncidt,'AIR',rcode) 59 61 print*,'ncidt,varidt',ncidt,varidt 60 61 62 62 c ncidps=NCOPN('ps.nc',NCNOWRIT,rcode) 63 c varidps=NCVID(ncidps,'SP',rcode) 64 c print*,'ncidps,varidps',ncidps,varidps 63 65 endif 64 66 … … 106 108 count(4)=0 107 109 c ps 108 110 c status=NF_GET_VARA_REAL(ncidps,varidps,start,count,psnc) 109 111 c call dump2d(iip1,jjp1,psnc,'PSNC COUCHE 1 ') 110 112 c call correctbid(iim,jjp1,psnc) 111 113 112 114 c Transformations … … 187 189 c ----------------------------------------------------------------- 188 190 189 190 191 192 193 194 191 c do j=1,jjp1 192 c do i=1,iim 193 c ps(i,j)=psnc(i,jjp1+1-j) 194 c enddo 195 c ps(iip1,j)=ps(1,j) 196 c enddo 195 197 196 198 CALL pression( ip1jmp1, ap, bp, ps, p ) … … 200 202 unskap=1./kappa 201 203 prefkap = preff ** kappa 202 204 c PRINT *,' Pref kappa unskap ',preff,kappa,unskap 203 205 DO l = 1, llm 204 206 DO j=1,jjp1 -
LMDZ.3.3/trunk/libf/dyn3d/redecoupenc.F
r198 r204 1 c 1 2 c $Header 3 c 2 4 SUBROUTINE redecoupenc 3 5 s (irec,massemn,pbarun,pbarvn,wn,tetan,phin, 4 s nrec,avant,airefi ,5 s zmfu, zmfd, zen_u, zde_u,zen_d, zde_d, coefkz,6 s yu1 ,yv1,ftsol,pctsrf,7 s frac_impa ,frac_nucl,phisn)6 s nrec,avant,airefin,phisfin, 7 s tn,zmfu, zmfd, zen_u, zde_u,zen_d, zde_d, coefkzn, 8 s yu1n,yv1n,ftsoln,pctsrfn, 9 s frac_impan,frac_nucln,phisn) 8 10 9 11 IMPLICIT NONE … … 11 13 #include "dimensions.h" 12 14 #include "paramet.h" 13 14 15 #include "comvert.h" 15 16 #include "comconst.h" 16 17 #include "comgeom2.h" 17 18 18 #include "tracstoke.h" 19 #include "logic.h" 19 20 20 21 integer irec,nrec,i,j 21 22 22 integer ig,l 23 23 integer imo,jmo,imn,jmn,ii,jj,ig … … 32 32 real zmfd(ngridn,llm),zde_d(ngridn,llm),zen_d(ngridn,llm) 33 33 real zmfu(ngridn,llm),zde_u(ngridn,llm),zen_u(ngridn,llm) 34 real mfd(ngridn,llm),de_d(ngridn,llm),en_d(ngridn,llm)35 real mfu(ngridn,llm),de_u(ngridn,llm),en_u(ngridn,llm)36 34 37 real*4 airedy(iip1,jjp1) 38 real*4 rlonu_dy(iip1,jjp1),rlonv_dy(iip1,jjm), 39 . rlatu_dy(iip1,jjp1),rlatv_dy(iip1,jjm) 40 41 real coefkz(ngridn,llm) 42 real frac_impa(ngridn,llm),frac_nucl(ngridn,llm) 43 real yu1(ngridn), yv1(ngridn) 44 real ftsol(ngridn,nbsrf),pctsrf(ngridn,nbsrf) 45 integer imfu,imfd,ien_u,ide_u, 46 s ien_d,ide_d, 47 s icoefkz,izu1,izv1, 48 s itsol,ipsf, 49 s ilei, ilec 50 parameter(imfu=1,imfd=llm+1,ien_u=2*llm+1,ide_u=3*llm+1, 51 s ien_d=4*llm+1,ide_d=5*llm+1, 52 s icoefkz=6*llm+1, 53 s ilei=7*llm+1,ilec=8*llm+1, 54 s izu1=9*llm+1,izv1=9*llm+2, 55 s itsol=9*llm+3,ipsf=9*llm+3+nbsrf) 56 logical avant 57 35 logical avant 58 36 59 37 real massefi(ngridn,llm) … … 63 41 real wn(imn+1,jmn+1,llm),phin(imn+1,jmn+1,llm) 64 42 real phisn(imn+1,jmn+1) 65 real phisfi(imn,jmn+1) 43 66 44 real massemo(imo+1,jmo+1,llm),tetao(imo+1,jmo+1,llm) 67 45 real pbaruo(imo+1,jmo+1,llm),pbarvo(imo+1,jmo,llm) … … 71 49 real pbarvst(imo+1,jmo+1,llm) 72 50 73 real airefi(ngridn) 74 75 real xlecn(ngridn,9*llm+2+2*nbsrf),tmpn(imn+1,jmn+1) 76 real xleco(ngrido,9*llm+2+2*nbsrf),tmpo(imo+1,jmo+1) 51 real tmpo2(imo+1,jmo+1,llm),tmpo1(imo,jmo+1,llm) 52 real tmpo4(imo+1,jmo+1,nbsrf),tmpo3(imo,jmo+1,nbsrf) 53 real tmpo6(imo+1,jmo+1),tmpo5(imo,jmo+1) 54 real tmpn6(imn+1,jmn+1),tmpn5(imn,jmn+1) 55 real tmpn2(imn+1,jmn+1,llm),tmpn1(imn,jmn+1,llm) 56 real tmpn4(imn+1,jmn+1,nbsrf),tmpn3(imn,jmn+1,nbsrf) 57 58 real airefio(ngrido),phisfio(ngrido), 59 . mfuo(ngrido,llm),mfdo(ngrido,llm),en_uo(ngrido,llm), 60 . de_uo(ngrido,llm),en_do(ngrido,llm), 61 . de_do(ngrido,llm),coefkzo(ngrido,llm), 62 . frac_impao(ngrido,llm),frac_nuclo(ngrido,llm), 63 . yu1o(ngrido),yv1o(ngrido),ftsolo(ngrido,nbsrf), 64 . pctsrfo(ngrido,nbsrf),to(ngrido,llm) 65 66 real airefin(ngridn),phisfin(ngridn), 67 . mfun(ngridn,llm),en_un(ngridn,llm),mfdn(ngridn,llm), 68 . de_un(ngridn,llm),en_dn(ngridn,llm), 69 . de_dn(ngridn,llm),coefkzn(ngridn,llm), 70 . frac_impan(ngridn,llm),frac_nucln(ngridn,llm), 71 . ftsoln(ngridn,nbsrf),yu1n(ngridn),yv1n(ngridn), 72 . pctsrfn(ngridn,nbsrf),tn(ngridn,llm) 77 73 78 74 real zcontrole(ngridn),zmass,tmpdyn(imn+1,jmn+1),zflux 79 75 80 real ziadvtrac,z rec,ziadvtrac2,zrec281 real zim,zjm,zlm,zklon,zklev76 real ziadvtrac,ziadvtrac2,zrec2 77 integer zim,zjm,zlm,zklon,zklev,zrec 82 78 83 79 real zpi 80 84 81 c longitudes et latitudes lues 85 real rlonul( 1:imo+1),rlatvl(1:jmo)86 real rlonvl( 1:imo+1),rlatul(1:jmo+1)82 real rlonul(imo+1,jmo+1),rlatvl(imo+1,jmo) 83 real rlonvl(imo+1,jmo),rlatul(imo+1,jmo+1) 87 84 c longitudes et latitudes anciennes 88 85 real rlonuo(0:imo+1),rlatvo(0:jmo+1) 86 real rlonvo(0:imo+1),rlatuo(0:jmo+1) 89 87 c longitudes et latitudes nouvelles 90 88 real rlonun(0:imn+1),rlatvn(0:jmn+1) 89 real rlonvn(0:imn+1),rlatun(0:jmn+1) 91 90 real aireo(imo+1,jmo+1) 92 91 … … 95 94 real alphaxo(imo+1) 96 95 real alpha(imn+1,jmn+1) 97 96 real alphat(imn+1,jmn+1,llm) 98 97 real aa,uu(0:imo+1),vv(imo+1,0:jmo+1) 99 98 … … 105 104 integer i,j 106 105 real dlatm,dlatp,dlonm,dlonp 107 108 106 c abd 107 character*10 file 108 character*10 nom 109 character*2 str2 110 c fin ab 109 111 zpi=2.*asin(1.) 110 112 … … 161 163 162 164 iest(1)=0 165 print*,'iest(1)=0' 163 166 do io=2,imo+1 164 167 iest(io)=iest(io-1)+ndecx(io-1) 165 168 iouest(io-1)=iest(io) 169 print*,'iest(',io,')=',iest(io),'iouest(' 170 s ,io-1,')=',iouest(io-1) 171 166 172 enddo 167 173 iouest(imo+1)=iest(imo+1)+ndecx(imo+1) 174 print*,'iouest(',imo+1,')=',iouest(imo+1) 168 175 169 176 jnord(1)=0 177 print*,'jnord(1)=0' 170 178 do jo=2,jmo+1 171 179 jnord(jo)=jnord(jo-1)+ndecy(jo-1) 172 180 jsud(jo-1)=jnord(jo) 181 print*,'jnord(',jo,')=',jnord(jo),'jsud(' 182 s ,jo-1,')=',jsud(jo-1) 173 183 enddo 174 184 jsud(jmo+1)=jnord(jmo+1)+ndecy(jmo+1) 185 print*,'jsud(',jmo+1,')=',jsud(jmo+1) 175 186 176 187 c================================================================== … … 182 193 CALL read_fstoke(0, 183 194 . zrec,zim,zjm,zlm, 184 . rlonu _dy,rlonv_dy,rlatu_dy,rlatv_dy,aireo,phiso,195 . rlonul,rlonvl,rlatul,rlatvl,aireo,phiso, 185 196 . massemo,pbaruo,pbarvo,wo,tetao,phio) 186 187 197 198 print*,'zrec,zdtvr,ziadvtrac,zim,zjm,zlm' 188 199 print*,zrec,zdtvr,ziadvtrac,zim,zjm,zlm 189 190 if((imo-nint(zim))*(jmo-nint(zjm)).ne.0) then191 print*,'Modifier les dimensions dans redecoupe '192 print*,'Mettre imo=',zim,' jmo=',zjm193 stop194 endif195 196 CALL read_pstoke(0,197 . zrec,zklon,zklev,airefi,phisfi,198 . mfu,mfd,en_u,de_u,en_d,de_d,coefkz,199 . frac_impa,frac_nucl,yu1,yv1,ftsol,pctsrf)200 201 print*,'Entete du fichier physique'202 print*,zrec2,ziadvtrac2,zklon,zklev203 200 204 201 nrec=zrec … … 207 204 istphy=ziadvtrac2 208 205 206 print*,'rlonul ' 207 do io=1,imo+1 208 print*,io,rlonul(io,1) 209 enddo 210 print*,'rlonvl ' 211 do io=1,imo+1 212 print*,io,rlonvl(io,1) 213 enddo 214 print*,'rlatul ' 215 do jo=1,jmo+1 216 print*,jo,rlatul(1,jo) 217 enddo 218 print*,'rlatvl' 219 do jo=1,jmo 220 print*,jo,rlatvl(1,jo) 221 enddo 222 223 c if((imo-nint(zim))*(jmo-nint(zjm)).ne.0) then 224 c print*,'Modifier les dimensions dans redecoupe ' 225 c print*,'Mettre imo=',zim,' jmo=',zjm 226 c abderr stop 227 c endif 228 229 c abderrahmane 230 if(physic)then 231 CALL read_pstoke(0, 232 . zrec,zklon,zklev,airefio,phisfio, 233 . to,mfuo,mfdo,en_uo,de_uo,en_do,de_do,coefkzo, 234 . frac_impao,frac_nuclo,yu1o,yv1o,ftsolo,pctsrfo) 235 236 print*,'Entete du fichier physique' 237 print*,zrec,zklon,zklev 238 endif 239 240 209 241 c================================================================== 210 242 c Definition des anciennes latitudes et longitudes … … 212 244 c================================================================== 213 245 214 rlonuo(0)=-zpi 246 215 247 do io=1,imo 216 c rlonuo(io)=2.*zpi/FLOAT(imo)*(io+0.5-0.5*FLOAT(imo)-1.) 217 c print*,'LON ',io,rlonuo(io),rlonul(io) 218 rlonuo(io)=rlonul(io) 219 enddo 220 rlonuo(imo+1)=zpi 248 rlonuo(io)=rlonul(io,1)*zpi/180. 249 print*,'LON ',io,rlonuo(io)*180./zpi 250 enddo 251 c abderr 252 rlonuo(imo+1)=0.5*(rlonul(imo,1)+rlonul(imo+1,1))*zpi/180. 253 print*,'LON ',imo+1,rlonuo(imo+1)*180./zpi 254 rlonuo(0)=rlonuo(imo+1)-2.*zpi 255 print*,'LON ',0,rlonuo(0)*180./zpi 256 257 c abder 258 c ATTENTION A REVOIR 259 c goto 22 260 do io=1,imo 261 rlonvo(io)=rlonvl(io,1)*zpi/180. 262 print*,'LON ',io,rlonvo(io)*180./zpi 263 enddo 264 rlonvo(imo+1)=0.5*(rlonvl(imo,1)+rlonvl(imo+1,1))*zpi/180. 265 print*,'LON ',imo+1,rlonvo(imo+1)*180./zpi 266 rlonvo(0)=rlonvo(imo+1)-2.*zpi 267 print*,'LON ',0,rlonvo(0)*180./zpi 268 22 continue 269 c fin ab 221 270 222 271 rlatvo(0)=zpi/2. 272 print*,'LAT ',0,rlatvo(0)*180./zpi 223 273 do jo=1,jmo 224 c rlatvo(jo)=zpi/FLOAT(jmo)*(0.5*FLOAT(jmo)+1.-jo-0.5) 225 c print*,'LAT ',jo,rlatvo(jo),rlatvl(jo) 226 rlatvo(jo)=rlatvl(jo) 227 enddo 228 rlatvo(jmo+1)=-zpi/2. 229 230 c do jo=1,jmo+1 231 c do io=1,imo+1 232 c aireo(io,jo)=rad*rad 233 c s *(rlonuo(io)-rlonuo(io-1)) 234 c s *(sin(rlatvo(jo-1))-sin(rlatvo(jo))) 235 c aireo(io,jo)=airel(io,jo) 236 c enddo 237 c aireo(1,jo)=aireo(1,jo)+aireo(imo+1,jo) 238 c aireo(imo+1,jo)=aireo(1,jo) 239 c enddo 274 rlatvo(jo)=rlatvl(1,jo)*zpi/180. 275 print*,'LAT ',jo,rlatvo(jo)*180./zpi 276 enddo 277 rlatvo(jmo+1)=-zpi/2. 278 print*,'LAT ',jmo+1,rlatvo(jmo+1)*180./zpi 279 c abd 280 c ATTENTION A REVOIR 281 c goto 33 282 c rlatuo(0)=zpi/2. 283 c print*,'LAT ',0,rlatuo(0)*180./zpi 284 do jo=1,jmo+1 285 rlatuo(jo-1)=rlatul(1,jo)*zpi/180. 286 print*,'LAT ',jo-1,rlatuo(jo-1)*180./zpi 287 enddo 288 rlatuo(jmo+1)=-zpi/2. 289 print*,'LAT ',jmo+1,rlatuo(jmo+1)*180./zpi 290 33 continue 291 c abd 240 292 241 293 do io=2,imo … … 250 302 c================================================================== 251 303 252 rlonun(0)=-zpi 304 c Nouvelles longitudes rlonun 305 rlonun(0)=rlonuo(0) 253 306 do io=1,imo+1 254 307 do iin=1,iouest(io)-iest(io) … … 259 312 alphax(in)=alphaxo(io)/ndecx(io) 260 313 print787,io,rlonuo(io-1)*180./zpi,in 261 s ,iest(io),iouest(io),rlonun(in)*180./zpi,alphax(in) 262 enddo 263 enddo 264 314 s ,iest(io),iouest(io),rlonun(in)*180./zpi,alphax(in) 315 enddo 316 enddo 317 318 c Nouvelles longitudes rlonvn 319 c goto 44 320 rlonvn(0)=rlonvo(0) 321 do io=1,imo+1 322 do iin=1,iouest(io)-iest(io) 323 in=iin+iest(io) 324 rlonvn(in)= 325 s rlonvo(io-1)+iin*(rlonvo(io)-rlonvo(io-1)) 326 s /ndecx(io) 327 alphax(in)=alphaxo(io)/ndecx(io) 328 print787,io,rlonvo(io-1)*180./zpi,in 329 s ,iest(io),iouest(io),rlonvn(in)*180./zpi,alphax(in) 330 enddo 331 enddo 332 44 continue 333 334 c Nouvelles latitudes rlatvn 265 335 rlatvn(0)=0.5*zpi 266 336 do jo=1,jmo+1 267 print*,'jo=',jo268 337 do jjn=1,jsud(jo)-jnord(jo) 269 338 jn=jnord(jo)+jjn 270 rlatvn(jn)=rlatvo(jo-1)+jjn*(rlatvo(jo)-rlatvo(jo-1)) 339 rlatvn(jn)= 340 s rlatvo(jo-1)+jjn*(rlatvo(jo)-rlatvo(jo-1)) 271 341 s /ndecy(jo) 272 342 alphay(jn)=(sin(rlatvn(jn-1))-sin(rlatvn(jn))) 273 343 s /(sin(rlatvo(jo-1))-sin(rlatvo(jo))) 274 print787,jo,rlatvo(jo-1)*180./zpi,jn 275 s ,jnord(jo),jsud(jo),rlatvn(jn)*180./zpi,alphay(jn) 276 enddo 277 enddo 278 279 787 format(i5,f10.2,3(i5),2(f10.2)) 344 print*,jn,rlatvn(jn)*180./zpi 345 enddo 346 enddo 347 348 c Nouvelles latitudes rlatun 349 c goto 55 350 rlatun(0)=0.5*zpi 351 do jo=1,jmo+1 352 do jjn=1,jsud(jo)-jnord(jo) 353 jn=jnord(jo)+jjn 354 rlatun(jn)= 355 s rlatuo(jo-1)+jjn*(rlatuo(jo)-rlatuo(jo-1)) 356 s /ndecy(jo) 357 print*,jn,rlatvn(jn)*180./zpi 358 enddo 359 enddo 360 55 continue 361 362 787 format(i5,f10.2,3(i5),2(f12.6)) 280 363 do in=1,imn 281 364 rlonu(in)=rlonun(in) … … 295 378 do in=1,imn 296 379 alpha(in,jn)=alphax(in)*alphay(jn) 380 alphat(in,jn,1)=alpha(in,jn) 297 381 enddo 298 382 alpha(imn+1,jn)=0. 299 enddo 300 383 alphat(imn+1,jn,1)=0. 384 enddo 385 c abderr 19 4 00 386 do l=2,llm 387 do jn=1,jmn+1 388 do in=1,imn+1 389 alphat(in,jn,l)=alphat(in,jn,1) 390 enddo 391 enddo 392 enddo 301 393 c call dump2d(iip1,jjp1,alpha,'ALPHA ') 302 394 … … 358 450 c call dump2d(iip1,jjp1,aire,'AIRE ') 359 451 360 c do jn=1,jjp1361 c do in=1,iim362 c aire(in,jn)=rad*rad*(sin(rlatvn(jn-1))-sin(rlatvn(jn)))363 c s *(rlonun(in)-rlonun(in-1))364 c unsaire(in,jn)=1./aire(in,jn)365 c enddo366 c aire(iip1,jn)=aire(1,jn)367 c unsaire(iip1,jn)=unsaire(1,jn)368 c enddo369 c call dump2d(iip1,jjp1,aire,'AIRE2 ')370 452 DO 42 j = 1,jjp1 371 453 DO 41 i = 1,iim … … 404 486 enddo 405 487 enddo 406 407 488 Print*,'Fin irec=0' 489 go to 435 490 file='pbur' 491 call inigrads(11,iip1 492 s ,rlonu,180./pi,-180.,180.,jjp1,rlatu,-90.,90.,180./pi 493 s ,llm,presnivs,1. 494 s ,1800.,file,'gcmq2 ') 495 file='pbvr' 496 call inigrads(12,iip1 497 s ,rlonv,180./pi,-180.,180.,jjm,rlatv,-90.,90.,180./pi 498 s ,llm,presnivs,1. 499 s ,1800.,file,'gcmq2 ') 500 435 continue 408 501 c================================================================== 409 502 c Fin des initialisations … … 415 508 c Lecture des fichiers fluxmass et physique: 416 509 c ----------------------------------------------------- 417 510 print*,'Entrer dans read_fstoke a irec=',irec 418 511 CALL read_fstoke(irec, 419 512 . zrec,zim,zjm,zlm, 420 . rlonu _dy,rlonv_dy,rlatu_dy,rlatv_dy,aireo,phiso,513 . rlonul,rlonvl,rlatul,rlatvl,aireo,phiso, 421 514 . massemo,pbaruo,pbarvo,wo,tetao,phio) 422 515 423 do l=1,llm 424 do j=1,jmo 425 do i=1,imo+1 426 pbarvo(i,j,l)=pbarvst(i,j,l) 427 enddo 428 enddo 429 enddo 516 print*,'Apres read_fstoke a irec=',irec 517 518 c do l=1,llm 519 c do j=1,jmo 520 c do i=1,imo+1 521 c pbarvo(i,j,l)=pbarvst(i,j,l) 522 c enddo 523 c enddo 524 c enddo 430 525 431 526 do l=1,llm … … 434 529 do jn=jnord(jo)+1,jsud(jo) 435 530 do in=iest(io)+1,iouest(io) 436 wn(in,jn,l)=alpha(in,jn)*wo(io,jo,l) 437 massemn(in,jn,l)=alpha(in,jn) 438 s *massemo(io,jo,l) 531 c wn(in,jn,l)=alpha(in,jn)*wo(io,jo,l) 532 c massemn(in,jn,l)=alpha(in,jn) 533 wn(in,jn,l)=alphat(in,jn,l)*wo(io,jo,l) 534 massemn(in,jn,l)=alphat(in,jn,l) 535 s *massemo(io,jo,l) 439 536 tetan(in,jn,l)=tetao(io,jo,l) 440 537 phin(in,jn,l)=phio(io,jo,l) 441 c marine442 phisn(i,jn) = phiso(io,jo)443 538 enddo 444 539 enddo … … 450 545 tetan(imn+1,jn,l)=tetan(1,jn,l) 451 546 phin(imn+1,jn,l)=phin(1,jn,l) 452 c marine 453 phisn(imn+1,jn)=phisn(1,jn) 454 455 enddo 456 enddo 457 547 enddo 548 enddo 549 c Test massemn 550 print*,'MASSE DANS LA NOUVELLE GRILLE' 551 goto 908 552 do jo=1,jmo+1 553 do io=1,imo+1 554 do jn=jnord(jo)+1,jsud(jo) 555 do in=iest(io)+1,iouest(io) 556 print*,'massemn(',in,jn,1,')=',massemn(in,jn,1) 557 enddo 558 enddo 559 enddo 560 enddo 561 do jn=1,jmn+1 562 print*,'massemn(',imn+1,jn,1,')=',massemn(imn+1,jn,1) 563 enddo 564 908 continue 565 print*,'Fin calcul de massemn pour nouv. gril.' 458 566 do l=1,llm 459 567 do jo=1,jmo+1 … … 478 586 enddo 479 587 enddo 588 print*,'Fin calcul de pbarun' 480 589 481 590 do l=1,llm … … 507 616 enddo 508 617 509 510 CALL read_pstoke(irec, 511 . zrec,zklon,zklev,airefi,phisfi, 512 . mfu,mfd,en_u,de_u,en_d,de_d,coefkz, 513 . frac_impa,frac_nucl,yu1,yv1,ftsol,pctsrf) 514 618 c abd 619 go to 456 620 nom='pbaru' 621 call wrgrads(11,llm,pbarun(:,:,1),nom,nom) 622 nom='pbarv' 623 call wrgrads(12,llm,pbarvn(:,:,1),nom,nom) 624 nom='masse' 625 call wrgrads(11,llm,massemn(:,:,1),nom,nom) 626 nom='w' 627 call wrgrads(11,llm,wn(:,:,1),nom,nom) 628 456 continue 629 c fin ab 630 631 if(physic)then 632 CALL read_pstoke(irec, 633 . zrec,zklon,zklev,airefio,phisfio, 634 . to,mfuo,mfdo,en_uo,de_uo,en_do,de_do,coefkzo, 635 . frac_impao,frac_nuclo,yu1o,yv1o,ftsolo,pctsrfo) 636 print*,'OK read_pstoke pour irec=',irec 515 637 c================================================================== 516 638 c Passage a la nouvelle grille 517 639 c================================================================== 518 do l=1,9*llm+2+2*nbsrf 519 c passage aa la grille dynamique ancienne 520 do io=1,imo+1 521 tmpo(io,1)=xleco(1,l) 522 tmpo(io,jmo+1)=xleco(ngrido,l) 523 enddo 524 do jo=2,jmo 525 do io=1,imo 526 tmpo(io,jo)=xleco((jo-2)*imo+io+1,l) 527 enddo 528 tmpo(imo+1,jo)=tmpo(1,jo) 529 enddo 530 c passage a la grillle dynamique nouvelle 531 do jo=1,jmo+1 532 do io=1,imo+1 533 do jn=jnord(jo)+1,jsud(jo) 534 do in=iest(io)+1,iouest(io) 535 tmpn(in,jn)=tmpo(io,jo) 536 enddo 537 enddo 538 enddo 539 enddo 540 c passage a la grille physique nouvelle 541 xlecn(1,l)=tmpn(1,1) 542 xlecn(ngridn,l)=tmpn(1,jmn+1) 543 do jn=2,jmn 544 do in=1,imn 545 xlecn((jn-2)*imn+in+1,l)=tmpn(in,jn) 546 enddo 547 enddo 548 enddo 549 640 call gr_fi_ecrit(llm,ngrido,imo,jmo+1,to,tmpo1) 641 do l=1,llm 642 do jo=1,jmo+1 643 do io=1,imo 644 tmpo2(io,jo,l)=tmpo1(io,jo,l) 645 enddo 646 enddo 647 648 tmpo2(imo+1,1,l)=to(1,l) 649 tmpo2(imo+1,jmo+1,l)=to(ngrido,l) 650 do jo=2,jmo 651 tmpo2(imo+1,jo,l)=tmpo1(1,jo,l) 652 enddo 653 c passage a la grillle dynamique nouvelle 654 do jo=1,jmo+1 655 do io=1,imo+1 656 do jn=jnord(jo)+1,jsud(jo) 657 do in=iest(io)+1,iouest(io) 658 tmpn2(in,jn,l)=tmpo2(io,jo,l) 659 enddo 660 enddo 661 enddo 662 enddo 663 do jn=1,jmn+1 664 do in=1,imn 665 tmpn1(in,jn,l)=tmpn2(in,jn,l) 666 enddo 667 enddo 668 enddo 669 call gr_ecrit_fi(llm,ngridn,imn,jmn+1,tmpn1,tn) 670 call initial0(llm*(imo+1)*(jmo+1),tmpo2) 671 call initial0(llm*imo*(jmo+1),tmpo1) 672 call initial0(llm*imn*(jmn+1),tmpn1) 673 call initial0(llm*(imn+1)*(jmn+1),tmpn2) 674 675 call gr_fi_ecrit(llm,ngrido,imo,jmo+1,mfuo,tmpo1) 676 do l=1,llm 677 do jo=1,jmo+1 678 do io=1,imo 679 tmpo2(io,jo,l)=tmpo1(io,jo,l) 680 enddo 681 enddo 682 683 tmpo2(imo+1,1,l)=mfuo(1,l) 684 tmpo2(imo+1,jmo+1,l)=mfuo(ngrido,l) 685 do jo=2,jmo 686 tmpo2(imo+1,jo,l)=tmpo1(1,jo,l) 687 enddo 688 c passage a la grillle dynamique nouvelle 689 do jo=1,jmo+1 690 do io=1,imo+1 691 do jn=jnord(jo)+1,jsud(jo) 692 do in=iest(io)+1,iouest(io) 693 tmpn2(in,jn,l)=tmpo2(io,jo,l) 694 enddo 695 enddo 696 enddo 697 enddo 698 do jn=1,jmn+1 699 do in=1,imn 700 tmpn1(in,jn,l)=tmpn2(in,jn,l) 701 enddo 702 enddo 703 enddo 704 call gr_ecrit_fi(llm,ngridn,imn,jmn+1,tmpn1,mfun) 705 call initial0(llm*(imo+1)*(jmo+1),tmpo2) 706 call initial0(llm*imo*(jmo+1),tmpo1) 707 call initial0(llm*imn*(jmn+1),tmpn1) 708 call initial0(llm*(imn+1)*(jmn+1),tmpn2) 709 call gr_fi_ecrit(llm,ngrido,imo,jmo+1,mfdo,tmpo1) 710 do l=1,llm 711 do jo=1,jmo+1 712 do io=1,imo 713 tmpo2(io,jo,l)=tmpo1(io,jo,l) 714 enddo 715 enddo 716 717 tmpo2(imo+1,1,l)=mfdo(1,l) 718 tmpo2(imo+1,jmo+1,l)=mfdo(ngrido,l) 719 do jo=2,jmo 720 tmpo2(imo+1,jo,l)=tmpo1(1,jo,l) 721 enddo 722 c passage a la grillle dynamique nouvelle 723 do jo=1,jmo+1 724 do io=1,imo+1 725 do jn=jnord(jo)+1,jsud(jo) 726 do in=iest(io)+1,iouest(io) 727 tmpn2(in,jn,l)=tmpo2(io,jo,l) 728 enddo 729 enddo 730 enddo 731 enddo 732 do jn=1,jmn+1 733 do in=1,imn 734 tmpn1(in,jn,l)=tmpn2(in,jn,l) 735 enddo 736 enddo 737 enddo 738 call gr_ecrit_fi(llm,ngridn,imn,jmn+1,tmpn1,mfdn) 739 call initial0(llm*(imo+1)*(jmo+1),tmpo2) 740 call initial0(llm*imo*(jmo+1),tmpo1) 741 call initial0(llm*imn*(jmn+1),tmpn1) 742 call initial0(llm*(imn+1)*(jmn+1),tmpn2) 743 call gr_fi_ecrit(llm,ngrido,imo,jmo+1,en_uo,tmpo1) 744 do l=1,llm 745 do jo=1,jmo+1 746 do io=1,imo 747 tmpo2(io,jo,l)=tmpo1(io,jo,l) 748 enddo 749 enddo 750 751 tmpo2(imo+1,1,l)=en_uo(1,l) 752 tmpo2(imo+1,jmo+1,l)=en_uo(ngrido,l) 753 do jo=2,jmo 754 tmpo2(imo+1,jo,l)=tmpo1(1,jo,l) 755 enddo 756 c passage a la grillle dynamique nouvelle 757 do jo=1,jmo+1 758 do io=1,imo+1 759 do jn=jnord(jo)+1,jsud(jo) 760 do in=iest(io)+1,iouest(io) 761 tmpn2(in,jn,l)=tmpo2(io,jo,l) 762 enddo 763 enddo 764 enddo 765 enddo 766 do jn=1,jmn+1 767 do in=1,imn 768 tmpn1(in,jn,l)=tmpn2(in,jn,l) 769 enddo 770 enddo 771 enddo 772 call gr_ecrit_fi(llm,ngridn,imn,jmn+1,tmpn1,en_un) 773 call initial0(llm*(imo+1)*(jmo+1),tmpo2) 774 call initial0(llm*imo*(jmo+1),tmpo1) 775 call initial0(llm*imn*(jmn+1),tmpn1) 776 call initial0(llm*(imn+1)*(jmn+1),tmpn2) 777 call gr_fi_ecrit(llm,ngrido,imo,jmo+1,en_do,tmpo1) 778 do l=1,llm 779 do jo=1,jmo+1 780 do io=1,imo 781 tmpo2(io,jo,l)=tmpo1(io,jo,l) 782 enddo 783 enddo 784 785 tmpo2(imo+1,1,l)=en_do(1,l) 786 tmpo2(imo+1,jmo+1,l)=en_do(ngrido,l) 787 do jo=2,jmo 788 tmpo2(imo+1,jo,l)=tmpo1(1,jo,l) 789 enddo 790 c passage a la grillle dynamique nouvelle 791 do jo=1,jmo+1 792 do io=1,imo+1 793 do jn=jnord(jo)+1,jsud(jo) 794 do in=iest(io)+1,iouest(io) 795 tmpn2(in,jn,l)=tmpo2(io,jo,l) 796 enddo 797 enddo 798 enddo 799 enddo 800 do jn=1,jmn+1 801 do in=1,imn 802 tmpn1(in,jn,l)=tmpn2(in,jn,l) 803 enddo 804 enddo 805 enddo 806 call gr_ecrit_fi(llm,ngridn,imn,jmn+1,tmpn1,en_dn) 807 call initial0(llm*(imo+1)*(jmo+1),tmpo2) 808 call initial0(llm*imo*(jmo+1),tmpo1) 809 call initial0(llm*imn*(jmn+1),tmpn1) 810 call initial0(llm*(imn+1)*(jmn+1),tmpn2) 811 call gr_fi_ecrit(llm,ngrido,imo,jmo+1,de_do,tmpo1) 812 do l=1,llm 813 do jo=1,jmo+1 814 do io=1,imo 815 tmpo2(io,jo,l)=tmpo1(io,jo,l) 816 enddo 817 enddo 818 819 tmpo2(imo+1,1,l)=de_do(1,l) 820 tmpo2(imo+1,jmo+1,l)=de_do(ngrido,l) 821 do jo=2,jmo 822 tmpo2(imo+1,jo,l)=tmpo1(1,jo,l) 823 enddo 824 c passage a la grillle dynamique nouvelle 825 do jo=1,jmo+1 826 do io=1,imo+1 827 do jn=jnord(jo)+1,jsud(jo) 828 do in=iest(io)+1,iouest(io) 829 tmpn2(in,jn,l)=tmpo2(io,jo,l) 830 enddo 831 enddo 832 enddo 833 enddo 834 do jn=1,jmn+1 835 do in=1,imn 836 tmpn1(in,jn,l)=tmpn2(in,jn,l) 837 enddo 838 enddo 839 enddo 840 call gr_ecrit_fi(llm,ngridn,imn,jmn+1,tmpn1,de_dn) 841 call initial0(llm*(imo+1)*(jmo+1),tmpo2) 842 call initial0(llm*imo*(jmo+1),tmpo1) 843 call initial0(llm*imn*(jmn+1),tmpn1) 844 call initial0(llm*(imn+1)*(jmn+1),tmpn2) 845 call gr_fi_ecrit(llm,ngrido,imo,jmo+1,de_uo,tmpo1) 846 do l=1,llm 847 do jo=1,jmo+1 848 do io=1,imo 849 tmpo2(io,jo,l)=tmpo1(io,jo,l) 850 enddo 851 enddo 852 853 tmpo2(imo+1,1,l)=de_uo(1,l) 854 tmpo2(imo+1,jmo+1,l)=de_uo(ngrido,l) 855 do jo=2,jmo 856 tmpo2(imo+1,jo,l)=tmpo1(1,jo,l) 857 enddo 858 c passage a la grillle dynamique nouvelle 859 do jo=1,jmo+1 860 do io=1,imo+1 861 do jn=jnord(jo)+1,jsud(jo) 862 do in=iest(io)+1,iouest(io) 863 tmpn2(in,jn,l)=tmpo2(io,jo,l) 864 enddo 865 enddo 866 enddo 867 enddo 868 do jn=1,jmn+1 869 do in=1,imn 870 tmpn1(in,jn,l)=tmpn2(in,jn,l) 871 enddo 872 enddo 873 enddo 874 call gr_ecrit_fi(llm,ngridn,imn,jmn+1,tmpn1,de_un) 875 call initial0(llm*(imo+1)*(jmo+1),tmpo2) 876 call initial0(llm*imo*(jmo+1),tmpo1) 877 call initial0(llm*imn*(jmn+1),tmpn1) 878 call initial0(llm*(imn+1)*(jmn+1),tmpn2) 879 call gr_fi_ecrit(llm,ngrido,imo,jmo+1,coefkzo,tmpo1) 880 do l=1,llm 881 do jo=1,jmo+1 882 do io=1,imo 883 tmpo2(io,jo,l)=tmpo1(io,jo,l) 884 enddo 885 enddo 886 887 tmpo2(imo+1,1,l)=coefkzo(1,l) 888 tmpo2(imo+1,jmo+1,l)=coefkzo(ngrido,l) 889 890 do jo=2,jmo 891 tmpo2(imo+1,jo,l)=tmpo2(1,jo,l) 892 enddo 893 enddo 894 895 c passage a la grillle dynamique nouvelle 896 do l=1,llm 897 do jo=1,jmo+1 898 do io=1,imo+1 899 do jn=jnord(jo)+1,jsud(jo) 900 do in=iest(io)+1,iouest(io) 901 tmpn2(in,jn,l)=tmpo2(io,jo,l) 902 enddo 903 enddo 904 enddo 905 enddo 906 do jn=1,jmn+1 907 do in=1,imn 908 tmpn1(in,jn,l)=tmpn2(in,jn,l) 909 enddo 910 enddo 911 enddo 912 call gr_ecrit_fi(llm,ngridn,imn,jmn+1,tmpn1,coefkzn) 913 call initial0(llm*(imo+1)*(jmo+1),tmpo2) 914 call initial0(llm*imo*(jmo+1),tmpo1) 915 call initial0(llm*imn*(jmn+1),tmpn1) 916 call initial0(llm*(imn+1)*(jmn+1),tmpn2) 917 call gr_fi_ecrit(llm,ngrido,imo,jmo+1,frac_impao,tmpo1) 918 do l=1,llm 919 do jo=1,jmo+1 920 do io=1,imo 921 tmpo2(io,jo,l)=tmpo1(io,jo,l) 922 enddo 923 enddo 924 925 tmpo2(imo+1,1,l)=frac_impao(1,l) 926 tmpo2(imo+1,jmo+1,l)=frac_impao(ngrido,l) 927 do jo=2,jmo 928 tmpo2(imo+1,jo,l)=tmpo1(1,jo,l) 929 enddo 930 c passage a la grillle dynamique nouvelle 931 do jo=1,jmo+1 932 do io=1,imo+1 933 do jn=jnord(jo)+1,jsud(jo) 934 do in=iest(io)+1,iouest(io) 935 tmpn2(in,jn,l)=tmpo2(io,jo,l) 936 enddo 937 enddo 938 enddo 939 enddo 940 do jn=1,jmn+1 941 do in=1,imn 942 tmpn1(in,jn,l)=tmpn2(in,jn,l) 943 enddo 944 enddo 945 enddo 946 call gr_ecrit_fi(llm,ngridn,imn,jmn+1,tmpn1,frac_impan) 947 call initial0(llm*(imo+1)*(jmo+1),tmpo2) 948 call initial0(llm*imo*(jmo+1),tmpo1) 949 call initial0(llm*imn*(jmn+1),tmpn1) 950 call initial0(llm*(imn+1)*(jmn+1),tmpn2) 951 call gr_fi_ecrit(llm,ngrido,imo,jmo+1,frac_nuclo,tmpo1) 952 do l=1,llm 953 do jo=1,jmo+1 954 do io=1,imo 955 tmpo2(io,jo,l)=tmpo1(io,jo,l) 956 enddo 957 enddo 958 959 tmpo2(imo+1,1,l)=frac_nuclo(1,l) 960 tmpo2(imo+1,jmo+1,l)=frac_nuclo(ngrido,l) 961 do jo=2,jmo 962 tmpo2(imo+1,jo,l)=tmpo1(1,jo,l) 963 enddo 964 c passage a la grillle dynamique nouvelle 965 do jo=1,jmo+1 966 do io=1,imo+1 967 do jn=jnord(jo)+1,jsud(jo) 968 do in=iest(io)+1,iouest(io) 969 tmpn2(in,jn,l)=tmpo2(io,jo,l) 970 enddo 971 enddo 972 enddo 973 enddo 974 do jn=1,jmn+1 975 do in=1,imn 976 tmpn1(in,jn,l)=tmpn2(in,jn,l) 977 enddo 978 enddo 979 enddo 980 call gr_ecrit_fi(llm,ngridn,imn,jmn+1,tmpn1,frac_nucln) 981 982 call gr_fi_ecrit(nbsrf,ngrido,imo,jmo+1,ftsolo,tmpo3) 983 do l=1,nbsrf 984 do jo=1,jmo+1 985 do io=1,imo 986 tmpo4(io,jo,l)=tmpo3(io,jo,l) 987 enddo 988 enddo 989 990 tmpo4(imo+1,1,l)=ftsolo(1,l) 991 tmpo4(imo+1,jmo+1,l)=ftsolo(ngrido,l) 992 do jo=2,jmo 993 tmpo4(imo+1,jo,l)=tmpo3(1,jo,l) 994 enddo 995 c passage a la grillle dynamique nouvelle 996 do jo=1,jmo+1 997 do io=1,imo+1 998 do jn=jnord(jo)+1,jsud(jo) 999 do in=iest(io)+1,iouest(io) 1000 tmpn4(in,jn,l)=tmpo3(io,jo,l) 1001 enddo 1002 enddo 1003 enddo 1004 enddo 1005 do jn=1,jmn+1 1006 do in=1,imn 1007 tmpn3(in,jn,l)=tmpn4(in,jn,l) 1008 enddo 1009 enddo 1010 enddo 1011 call gr_ecrit_fi(nbsrf,ngridn,imn,jmn+1,tmpn3,ftsoln) 1012 1013 call initial0(nbsrf*(imo+1)*(jmo+1),tmpo4) 1014 call initial0(nbsrf*imo*(jmo+1),tmpo3) 1015 call initial0(nbsrf*imn*(jmn+1),tmpn3) 1016 call initial0(nbsrf*(imn+1)*(jmn+1),tmpn4) 1017 call gr_fi_ecrit(nbsrf,ngrido,imo,jmo+1,pctsrfo,tmpo3) 1018 do l=1,nbsrf 1019 do jo=1,jmo+1 1020 do io=1,imo 1021 tmpo4(io,jo,l)=tmpo3(io,jo,l) 1022 enddo 1023 enddo 1024 1025 tmpo4(imo+1,1,l)=pctsrfo(1,l) 1026 tmpo4(imo+1,jmo+1,l)=pctsrfo(ngrido,l) 1027 do jo=2,jmo 1028 tmpo4(imo+1,jo,l)=tmpo3(1,jo,l) 1029 enddo 1030 c passage a la grillle dynamique nouvelle 1031 do jo=1,jmo+1 1032 do io=1,imo+1 1033 do jn=jnord(jo)+1,jsud(jo) 1034 do in=iest(io)+1,iouest(io) 1035 tmpn4(in,jn,l)=tmpo3(io,jo,l) 1036 enddo 1037 enddo 1038 enddo 1039 enddo 1040 do jn=1,jmn+1 1041 do in=1,imn 1042 tmpn3(in,jn,l)=tmpn4(in,jn,l) 1043 enddo 1044 enddo 1045 enddo 1046 call gr_ecrit_fi(nbsrf,ngridn,imn,jmn+1,tmpn3,pctsrfn) 1047 1048 call gr_fi_ecrit(1,ngrido,imo,jmo+1,yv1o,tmpo5) 1049 1050 do jo=1,jmo+1 1051 do io=1,imo 1052 tmpo6(io,jo)=tmpo5(io,jo) 1053 enddo 1054 enddo 1055 1056 tmpo6(imo+1,1)=yv1o(1) 1057 tmpo6(imo+1,jmo+1)=yv1o(ngrido) 1058 do jo=2,jmo 1059 tmpo6(imo+1,jo)=tmpo5(1,jo) 1060 enddo 1061 c passage a la grillle dynamique nouvelle 1062 do jo=1,jmo+1 1063 do io=1,imo+1 1064 do jn=jnord(jo)+1,jsud(jo) 1065 do in=iest(io)+1,iouest(io) 1066 tmpn6(in,jn)=tmpo5(io,jo) 1067 enddo 1068 enddo 1069 enddo 1070 enddo 1071 do jn=1,jmn+1 1072 do in=1,imn 1073 tmpn5(in,jn)=tmpn6(in,jn) 1074 enddo 1075 enddo 1076 call gr_ecrit_fi(1,ngridn,imn,jmn+1,tmpn5,yv1n) 1077 1078 call initial0((imo+1)*(jmo+1),tmpo6) 1079 call initial0(imo*(jmo+1),tmpo5) 1080 call initial0(imn*(jmn+1),tmpn5) 1081 call initial0((imn+1)*(jmn+1),tmpn6) 1082 call gr_fi_ecrit(1,ngrido,imo,jmo+1,yu1o,tmpo5) 1083 1084 do jo=1,jmo+1 1085 do io=1,imo 1086 tmpo6(io,jo)=tmpo5(io,jo) 1087 enddo 1088 enddo 1089 1090 tmpo6(imo+1,1)=yu1o(1) 1091 tmpo6(imo+1,jmo+1)=yu1o(ngrido) 1092 do jo=2,jmo 1093 tmpo6(imo+1,jo)=tmpo5(1,jo) 1094 enddo 1095 c passage a la grillle dynamique nouvelle 1096 do jo=1,jmo+1 1097 do io=1,imo+1 1098 do jn=jnord(jo)+1,jsud(jo) 1099 do in=iest(io)+1,iouest(io) 1100 tmpn6(in,jn)=tmpo5(io,jo) 1101 enddo 1102 enddo 1103 enddo 1104 enddo 1105 do jn=1,jmn+1 1106 do in=1,imn 1107 tmpn5(in,jn)=tmpn6(in,jn) 1108 enddo 1109 enddo 1110 call gr_ecrit_fi(1,ngridn,imn,jmn+1,tmpn5,yu1n) 550 1111 c================================================================== 551 1112 if (avant) then 552 1113 c Simu directe 553 do l=1,llm1114 do l=1,llm 554 1115 do ig=1,ngridn 555 zmfu(ig,l)=mfu(ig,l)556 zmf d(ig,l)=mfd(ig,l)557 z de_u(ig,l)=de_u(ig,l)558 z en_u(ig,l)=en_u(ig,l)559 z de_d(ig,l)=de_d(ig,l)560 z en_d(ig,l)=en_d(ig,l)1116 zmfd(ig,l)=mfdn(ig,l) 1117 zmfu(ig,l)=mfun(ig,l) 1118 zen_d(ig,l)=en_dn(ig,l) 1119 zde_d(ig,l)=de_dn(ig,l) 1120 zen_u(ig,l)=en_un(ig,l) 1121 zde_u(ig,l)=de_un(ig,l) 561 1122 enddo 562 1123 enddo … … 565 1126 do l=1,llm 566 1127 do ig=1,ngridn 567 zmfd(ig,l)=-mf u(ig,l)568 zmfu(ig,l)=-mf d(ig,l)569 zen_d(ig,l)= de_u(ig,l)570 zde_d(ig,l)= en_u(ig,l)571 zen_u(ig,l)= de_d(ig,l)572 zde_u(ig,l)= en_d(ig,l)1128 zmfd(ig,l)=-mfdn(ig,l) 1129 zmfu(ig,l)=-mfun(ig,l) 1130 zen_d(ig,l)=en_dn(ig,l) 1131 zde_d(ig,l)=de_dn(ig,l) 1132 zen_u(ig,l)=en_un(ig,l) 1133 zde_u(ig,l)=de_un(ig,l) 573 1134 enddo 574 1135 enddo … … 585 1146 zcontrole(ig)=1. 586 1147 enddo 587 c zmass=(max(massemn(ig,l),massemn(ig,l-1))/airefi (ig)1148 c zmass=(max(massemn(ig,l),massemn(ig,l-1))/airefin(ig) 588 1149 do l=2,llm 589 1150 do ig=1,ngridn 590 zmass=max(massefi(ig,l),massefi(ig,l-1))/airefi (ig)1151 zmass=max(massefi(ig,l),massefi(ig,l-1))/airefin(ig) 591 1152 zflux=max(abs(zmfu(ig,l)),abs(zmfd(ig,l)))*dtphys 592 1153 if(zflux.gt.0.9*zmass) then … … 615 1176 enddo 616 1177 enddo 617 1178 endif ! physic 618 1179 619 1180 endif ! irec=0 -
LMDZ.3.3/trunk/libf/phylmd/phystokenc.F
r199 r204 6 6 I pt,pmfu, pmfd, pen_u, pde_u, pen_d, pde_d, 7 7 I pcoefh,yu1,yv1,ftsol,pctsrf, 8 I frac_impa,frac_nucl,8 I pfrac_impa,pfrac_nucl, 9 9 I pphis,paire,dtime,itap) 10 10 USE ioipsl … … 63 63 c ---------- 64 64 c 65 REAL frac_impa(klon,klev)66 REAL frac_nucl(klon,klev)65 REAL pfrac_impa(klon,klev) 66 REAL pfrac_nucl(klon,klev) 67 67 c 68 68 c Arguments necessaires pour les sources et puits de traceur … … 82 82 REAL coefh(klon,klev) ! flux detraine dans le panache descendant 83 83 REAL t(klon,klev) 84 REAL frac_impa(klon,klev) 85 REAL frac_nucl(klon,klev) 86 REAL rain(klon) 84 87 85 88 REAL pyu1(klon),pyv1(klon) … … 95 98 save t,mfu,mfd,en_u,de_u,en_d,de_d,coefh,dtcum 96 99 save iadvtr,irec 100 save frac_impa,frac_nucl,rain 97 101 save pyu1,pyv1,pftsol,ppsrf 98 102 … … 133 137 do k=1,klev 134 138 do i=1,klon 139 frac_impa(i,k)=1. 140 frac_nucl(i,k)=1. 135 141 mfu(i,k)=0. 136 142 mfd(i,k)=0. … … 144 150 enddo 145 151 do i=1,klon 152 rain(i)=0. 146 153 pyv1(i)=0. 147 154 pyu1(i)=0. … … 159 166 do k=1,klev 160 167 do i=1,klon 168 frac_impa(i,k)=frac_impa(i,k)*pfrac_impa(i,k) 169 frac_nucl(i,k)=frac_nucl(i,k)*pfrac_nucl(i,k) 161 170 mfu(i,k)=mfu(i,k)+pmfu(i,k)*pdtphys 162 171 mfd(i,k)=mfd(i,k)+pmfd(i,k)*pdtphys … … 187 196 do k=1,klev 188 197 do i=1,klon 198 c frac_impa=frac_impa : c'est la fraction cumulee qu'on stoke 199 c frac_nucl=frac_nucl : c'est la fraction cumulee qu'on stoke 189 200 mfu(i,k)=mfu(i,k)/dtcum 190 201 mfd(i,k)=mfd(i,k)/dtcum … … 198 209 enddo 199 210 do i=1,klon 211 rain(i)=rain(i)/dtcum 200 212 pyv1(i)=pyv1(i)/dtcum 201 213 pyu1(i)=pyu1(i)/dtcum … … 226 238 227 239 ccccc 240 print*,'AVANT ECRITURE' 228 241 CALL gr_fi_ecrit(klev,klon,iim,jjm+1, t, zx_tmp_3d) 229 242 CALL histwrite(physid,"t",itap,zx_tmp_3d, 230 243 . iim*(jjm+1)*klev,ndex) 244 print*,'APRES ECRITURE' 231 245 232 246 CALL gr_fi_ecrit(klev,klon,iim,jjm+1, mfu, zx_tmp_3d) … … 279 293 CALL gr_fi_ecrit(1,klon,iim,jjm+1, pftsol4, zx_tmp_2d) 280 294 CALL histwrite(physid,"ftsol4",itap,zx_tmp_2d, 295 . iim*(jjm+1),ndex) 296 297 CALL gr_fi_ecrit(1,klon,iim,jjm+1, rain, zx_tmp_2d) 298 CALL histwrite(physid,"rain",itap,zx_tmp_2d, 281 299 . iim*(jjm+1),ndex) 282 300 -
LMDZ.3.3/trunk/libf/phylmd/phytrac.F
r199 r204 30 30 #include "dimphy.h" 31 31 #include "indicesol.h" 32 #include "control.h"33 #include "temps.h"34 32 c====================================================================== 35 33 … … 51 49 real pplay(nlon,nlev) ! pression pour le mileu de chaque couche (en Pa) 52 50 real presnivs(klev) ! pressions approximat. des milieux couches ( en PA) 53 real znivsig(klev) ! niveaux sigma54 51 real paire(klon) 55 52 real pphis(klon) … … 95 92 real ftsol(nlon,nbsrf) ! Temperature du sol (surf)(Kelvin) 96 93 real pctsrf(nlon,nbsrf) ! Pourcentage de sol f(nature du sol) 97 94 c abder 95 real pftsol1(nlon),pftsol2(nlon),pftsol3(nlon),pftsol4(nlon) 96 real ppsrf1(nlon),ppsrf2(nlon),ppsrf3(nlon),ppsrf4(nlon) 97 c fin 98 98 cAA ---------------------------- 99 99 cAA VARIABLES LOCALES TRACEURS … … 136 136 INTEGER nid_tra 137 137 SAVE nid_tra 138 INTEGER ndex2d(iim*(jjm+1)),ndex3d(iim*(jjm+1)*klev) 138 c REAL x(klon,klev,nbtr+2) ! traceurs 139 INTEGER ndex(1) 139 140 REAL zx_tmp_2d(iim,jjm+1), zx_tmp_3d(iim,jjm+1,klev) 140 141 REAL zx_lon(iim,jjm+1), zx_lat(iim,jjm+1) … … 164 165 c 165 166 c--modif convection tiedtke 166 INTEGER i, k, it 167 167 INTEGER i, k, it,itap 168 save itap 168 169 REAL delp(klon,klev) 169 170 c--end modif … … 211 212 c print*,'DANS PHYTRAC debutphy=',debutphy 212 213 213 ecrit_tra = NINT(86400./pdtphys *ecritphy)214 zsto = pdtphys215 zout = pdtphys * FLOAT(ecrit_tra)216 214 if (debutphy) then 215 216 print*,'dans phytrac ',pdtphys,ecritphy,ecrit_tra 217 ecrit_tra = NINT(86400./pdtphys/2.) ! tous les 12H 218 c ecrit_tra = NINT(86400./pdtphys) ! tous les 24H 217 219 218 220 if(nbtr.lt.nqmax) then … … 226 228 PRINT*, 'La frequence de sortie traceurs est ', ecrit_tra 227 229 itra=0 230 itap=0 228 231 C 229 232 CALL ymds2ju(anne_ini, 1, 1, 0.0, zjulian) … … 242 245 . 1,iim,1,jjm+1, 0, zjulian, pdtphys, 243 246 . nhori, nid_tra) 244 call histvert(nid_tra, 'sig_s', 'Niveaux sigma','-', 245 . klev, znivsig, nvert) 246 C 247 C CALL histvert(nid_tra, "presnivs", "Vertical levels", "mb", 248 C . klev, presnivs, nvert) 247 CALL histvert(nid_tra, "presnivs", "Vertical levels", "mb", 248 . klev, presnivs, nvert) 249 zsto = pdtphys 250 zout = pdtphys * FLOAT(ecrit_tra) 249 251 c 250 252 CALL histdef(nid_tra, "phis", "Surface geop. height", "-", … … 255 257 . iim,jjm+1,nhori, 1,1,1, -99, 32, 256 258 . "once", zsto,zout) 259 260 goto 666 261 CALL histdef(nid_tra, "pyu1", "Vent niv 1", "-", 262 . iim,jjm+1,nhori, 1,1,1, -99, 32, 263 . "inst(X)", zsto,zout) 264 265 CALL histdef(nid_tra, "pyv1", "Vent niv 1", "-", 266 . iim,jjm+1,nhori, 1,1,1, -99, 32, 267 . "inst(X)", zsto,zout) 268 CALL histdef(nid_tra, "psrf1", "nature sol", "-", 269 . iim,jjm+1,nhori, 1,1,1, -99, 32, 270 . "inst(X)", zsto,zout) 271 CALL histdef(nid_tra, "psrf2", "nature sol", "-", 272 . iim,jjm+1,nhori, 1,1,1, -99, 32, 273 . "inst(X)", zsto,zout) 274 CALL histdef(nid_tra, "psrf3", "nature sol", "-", 275 . iim,jjm+1,nhori, 1,1,1, -99, 32, 276 . "inst(X)", zsto,zout) 277 CALL histdef(nid_tra, "psrf4", "nature sol", "-", 278 . iim,jjm+1,nhori, 1,1,1, -99, 32, 279 . "inst(X)", zsto,zout) 280 CALL histdef(nid_tra, "ftsol1", "temper sol", "-", 281 . iim,jjm+1,nhori, 1,1,1, -99, 32, 282 . "inst(X)", zsto,zout) 283 CALL histdef(nid_tra, "ftsol2", "temper sol", "-", 284 . iim,jjm+1,nhori, 1,1,1, -99, 32, 285 . "inst(X)", zsto,zout) 286 CALL histdef(nid_tra, "ftsol3", "temper sol", "-", 287 . iim,jjm+1,nhori, 1,1,1, -99, 32, 288 . "inst", zsto,zout) 289 CALL histdef(nid_tra, "ftsol4", "temper sol", "-", 290 . iim,jjm+1,nhori, 1,1,1, -99, 32, 291 . "inst(X)", zsto,zout) 292 CALL histdef(nid_tra, "pplay", "flux u mont","-", 293 . iim,jjm+1,nhori, klev,1,klev,nvert, 32, 294 . "inst(X)", zsto,zout) 295 CALL histdef(nid_tra, "t", "flux u mont","-", 296 . iim,jjm+1,nhori, klev,1,klev,nvert, 32, 297 . "inst(X)", zsto,zout) 298 CALL histdef(nid_tra, "mfu", "flux u mont","-", 299 . iim,jjm+1,nhori, klev,1,klev,nvert, 32, 300 . "ave(X)", zsto,zout) 301 CALL histdef(nid_tra, "mfd", "flux u decen","-", 302 . iim,jjm+1,nhori, klev,1,klev,nvert, 32, 303 . "ave(X)", zsto,zout) 304 CALL histdef(nid_tra, "en_u", "flux u mont","-", 305 . iim,jjm+1,nhori, klev,1,klev,nvert, 32, 306 . "ave(X)", zsto,zout) 307 CALL histdef(nid_tra, "en_d", "flux u mont","-", 308 . iim,jjm+1,nhori, klev,1,klev,nvert, 32, 309 . "ave(X)", zsto,zout) 310 CALL histdef(nid_tra, "de_u", "flux u mont","-", 311 . iim,jjm+1,nhori, klev,1,klev,nvert, 32, 312 . "ave(X)", zsto,zout) 313 CALL histdef(nid_tra, "de_d", "flux u mont","-", 314 . iim,jjm+1,nhori, klev,1,klev,nvert, 32, 315 . "ave(X)", zsto,zout) 316 CALL histdef(nid_tra, "coefh", "turbulent coef","-", 317 . iim,jjm+1,nhori, klev,1,klev,nvert, 32, 318 . "ave(X)", zsto,zout) 319 320 666 continue 257 321 c 258 322 DO it=1,nqmax … … 274 338 ENDDO 275 339 CALL histend(nid_tra) 340 ndex(1) = 0 341 c 342 i = NINT(zout/zsto) 343 CALL gr_fi_ecrit(1,klon,iim,jjm+1,pphis,zx_tmp_2d) 344 CALL histwrite(nid_tra,"phis",i,zx_tmp_2d,iim*(jjm+1),ndex) 345 C 346 i = NINT(zout/zsto) 347 CALL gr_fi_ecrit(1,klon,iim,jjm+1,paire,zx_tmp_2d) 348 CALL histwrite(nid_tra,"aire",i,zx_tmp_2d,iim*(jjm+1),ndex) 276 349 277 350 c====================================================================== … … 327 400 inirnpb=.false. 328 401 endif 402 if(nqmax.gt.2) aerosol(3)=.true. 403 404 405 c abder 406 goto 777 407 do i=1,nlon 408 pftsol1(i) = ftsol(i,1) 409 pftsol2(i) = ftsol(i,2) 410 pftsol3(i) = ftsol(i,3) 411 pftsol4(i) = ftsol(i,4) 412 413 ppsrf1(i) = pctsrf(i,1) 414 ppsrf2(i) = pctsrf(i,2) 415 ppsrf3(i) = pctsrf(i,3) 416 ppsrf4(i) = pctsrf(i,4) 417 418 enddo 419 ndex(1)=0 420 itap=itap+1 421 CALL gr_fi_ecrit(1,klon,iim,jjm+1,yu1,zx_tmp_2d) 422 CALL histwrite(nid_tra,"pyu1",itap,zx_tmp_2d, 423 s iim*(jjm+1),ndex) 424 425 CALL gr_fi_ecrit(1,klon,iim,jjm+1,yv1,zx_tmp_2d) 426 CALL histwrite(nid_tra,"pyv1",itap,zx_tmp_2d, 427 s iim*(jjm+1),ndex) 428 429 CALL gr_fi_ecrit(1,klon,iim,jjm+1,pftsol1,zx_tmp_2d) 430 CALL histwrite(nid_tra,"ftsol1",itap,zx_tmp_2d, 431 s iim*(jjm+1),ndex) 432 433 CALL gr_fi_ecrit(1,klon,iim,jjm+1,pftsol2,zx_tmp_2d) 434 CALL histwrite(nid_tra,"ftsol2",itap,zx_tmp_2d, 435 s iim*(jjm+1),ndex) 436 437 CALL gr_fi_ecrit(1,klon,iim,jjm+1,pftsol3,zx_tmp_2d) 438 CALL histwrite(nid_tra,"ftsol3",itap,zx_tmp_2d, 439 s iim*(jjm+1),ndex) 440 441 CALL gr_fi_ecrit(1,klon,iim,jjm+1,pftsol4,zx_tmp_2d) 442 CALL histwrite(nid_tra,"ftsol4",itap,zx_tmp_2d, 443 s iim*(jjm+1),ndex) 444 445 CALL gr_fi_ecrit(1,klon,iim,jjm+1,ppsrf1,zx_tmp_2d) 446 CALL histwrite(nid_tra,"psrf1",itap,zx_tmp_2d, 447 s iim*(jjm+1),ndex) 448 449 CALL gr_fi_ecrit(1,klon,iim,jjm+1,ppsrf2,zx_tmp_2d) 450 CALL histwrite(nid_tra,"psrf2",itap,zx_tmp_2d, 451 s iim*(jjm+1),ndex) 452 453 CALL gr_fi_ecrit(1,klon,iim,jjm+1,ppsrf3,zx_tmp_2d) 454 CALL histwrite(nid_tra,"psrf3",itap,zx_tmp_2d, 455 s iim*(jjm+1),ndex) 456 457 CALL gr_fi_ecrit(1,klon,iim,jjm+1,ppsrf4,zx_tmp_2d) 458 CALL histwrite(nid_tra,"psrf4",itap,zx_tmp_2d, 459 s iim*(jjm+1),ndex) 460 777 continue 329 461 c====================================================================== 330 462 c Calcul de l'effet de la convection 331 463 c====================================================================== 464 print*,'Avant convection' 465 do it=1,nqmax 466 WRITE(itn,'(i1)') it 467 c call diagtracphy(tr_seri(:,:,it),paprs,'Avant conv'//itn) 468 enddo 332 469 333 470 if (convection) then 334 471 335 cprint*,'Pas de temps dans phytrac : ',pdtphys472 print*,'Pas de temps dans phytrac : ',pdtphys 336 473 DO it=1, nqmax 337 474 CALL nflxtr(pdtphys, pmfu, pmfd, pen_u, pde_u, pen_d, pde_d, … … 342 479 ENDDO 343 480 ENDDO 344 WRITE(itn,'(i1)') it345 CALL minmaxqfi(tr_seri(1,1,it),0.,1.e33,'convection it='//itn)346 ENDDO 347 c print*,'apres nflxtr'481 c WRITE(itn,'(i1)') it 482 c CALL minmaxqfi(tr_seri(1,1,it),0.,1.e33,'convection it='//itn) 483 ENDDO 484 c print*,'apres nflxtr' 348 485 349 486 350 487 endif ! convection 488 c print*,'Apres convection' 489 c do it=1,nqmax 490 c WRITE(itn,'(i1)') it 491 c call diagtracphy(tr_seri(:,:,it),paprs,'Avant conv'//itn) 492 c enddo 351 493 352 494 c====================================================================== 353 495 c Calcul de l'effet de la couche limite 354 496 c====================================================================== 355 356 c print*,'avant couchelimite' 497 c print *,'Avant couchelimite' 498 c do it=1,nqmax 499 c WRITE(itn,'(i1)') it 500 c call diagtracphy(tr_seri(:,:,it),paprs,'Avant CL '//itn) 501 c enddo 502 357 503 if (couchelimite) then 358 504 … … 413 559 endif ! couche limite 414 560 415 c print*,'apres couchelimite' 561 c print*,'Apres couchelimite' 562 c do it=1,nqmax 563 c WRITE(itn,'(i1)') it 564 c call diagtracphy(tr_seri(:,:,it),paprs,'Avant CL '//itn) 565 c enddo 416 566 417 567 c====================================================================== … … 442 592 c====================================================================== 443 593 594 print*,'LESSIVAGE =',lessivage 444 595 IF (lessivage) THEN 445 596 … … 474 625 c Mise a jour due a l'impaction et a la nucleation 475 626 c 627 c call dump2d(iim,jjm-1,frac_impa(2:klon-1,10),'FRACIMPA') 628 c call dump2d(iim,jjm-1,frac_nucl(2:klon-1,10),'FRACNUCL') 629 c call dump2d(iim,jjm-1,tr_seri(2:klon-1,10,3),'TRACEUR3') 476 630 DO it = 1, nqmax 631 c print*,'IT=',it,aerosol(it) 477 632 IF (aerosol(it)) THEN 633 c print*,'IT=',it,' On lessive' 478 634 DO k = 1, nlev 479 635 DO i = 1, klon 480 tr_seri(i,k,it) = tr_seri(i,k,it) *481 s ( frac_impa(i,k) + frac_nucl(i,k) - 1. )636 tr_seri(i,k,it)=tr_seri(i,k,it) 637 s *frac_impa(i,k)*frac_nucl(i,k) 482 638 ENDDO 483 639 ENDDO 484 640 ENDIF 485 641 ENDDO 642 c call dump2d(iim,jjm-1,tr_seri(2:klon-1,10,3),'TRACEUR3B') 486 643 c 487 644 c Flux lessivage total … … 517 674 ENDDO 518 675 itra=itra+1 519 520 C 521 C Sorties IOIPSL 522 ndex2d = 0 523 ndex3d = 0 524 c 525 c write(*,*)'sorties ioipsl phytrac',zsto,zout 526 CALL gr_fi_ecrit(1,klon,iim,jjm+1,pphis,zx_tmp_2d) 527 CALL histwrite(nid_tra,"phis",itra,zx_tmp_2d,iim*(jjm+1),ndex2d) 528 C 529 CALL gr_fi_ecrit(1,klon,iim,jjm+1,paire,zx_tmp_2d) 530 CALL histwrite(nid_tra,"aire",itra,zx_tmp_2d,iim*(jjm+1),ndex2d) 676 ndex(1) = 0 531 677 DO it=1,nqmax 532 678 IF (it.LE.99) THEN … … 535 681 CALL gr_fi_ecrit(klev,klon,iim,jjm+1,tr_seri(1,1,it),zx_tmp_3d) 536 682 CALL histwrite(nid_tra,"tr"//str2,itra,zx_tmp_3d, 537 . iim*(jjm+1)*klev,ndex 3d)538 539 540 541 . iim*(jjm+1)*klev,ndex3d)542 683 . iim*(jjm+1)*klev,ndex) 684 c IF (lessivage) THEN 685 c CALL gr_fi_ecrit(klev,klon,iim,jjm+1,flestottr(1,1,it),zx_tmp_3d) 686 c CALL histwrite(nid_tra,"fl"//str2,itra,zx_tmp_3d, 687 c . iim*(jjm+1)*klev,ndex) 688 c ENDIF 543 689 ELSE 544 690 PRINT*, "Trop de traceurs" … … 546 692 ENDIF 547 693 ENDDO 548 if (ok_sync) call histsync(nid_tra) 694 695 goto 888 696 CALL gr_fi_ecrit(klev,klon,iim,jjm+1,pplay,zx_tmp_3d) 697 CALL histwrite(nid_tra,"pplay",itra,zx_tmp_3d, 698 . iim*(jjm+1)*klev,ndex) 699 700 CALL gr_fi_ecrit(klev,klon,iim,jjm+1,t_seri,zx_tmp_3d) 701 CALL histwrite(nid_tra,"t",itra,zx_tmp_3d, 702 . iim*(jjm+1)*klev,ndex) 703 CALL gr_fi_ecrit(klev,klon,iim,jjm+1,pmfu,zx_tmp_3d) 704 CALL histwrite(nid_tra,"mfu",itra,zx_tmp_3d, 705 . iim*(jjm+1)*klev,ndex) 706 CALL gr_fi_ecrit(klev,klon,iim,jjm+1,pmfd,zx_tmp_3d) 707 CALL histwrite(nid_tra,"mfd",itra,zx_tmp_3d, 708 . iim*(jjm+1)*klev,ndex) 709 CALL gr_fi_ecrit(klev,klon,iim,jjm+1,pen_u,zx_tmp_3d) 710 CALL histwrite(nid_tra,"en_u",itra,zx_tmp_3d, 711 . iim*(jjm+1)*klev,ndex) 712 CALL gr_fi_ecrit(klev,klon,iim,jjm+1,pen_d,zx_tmp_3d) 713 CALL histwrite(nid_tra,"en_d",itra,zx_tmp_3d, 714 . iim*(jjm+1)*klev,ndex) 715 CALL gr_fi_ecrit(klev,klon,iim,jjm+1,pde_d,zx_tmp_3d) 716 CALL histwrite(nid_tra,"de_d",itra,zx_tmp_3d, 717 . iim*(jjm+1)*klev,ndex) 718 CALL gr_fi_ecrit(klev,klon,iim,jjm+1,pde_u,zx_tmp_3d) 719 CALL histwrite(nid_tra,"de_u",itra,zx_tmp_3d, 720 . iim*(jjm+1)*klev,ndex) 721 CALL gr_fi_ecrit(klev,klon,iim,jjm+1,coefh,zx_tmp_3d) 722 CALL histwrite(nid_tra,"coefh",itra,zx_tmp_3d, 723 . iim*(jjm+1)*klev,ndex) 724 725 888 continue 726 727 c print*,'Sortie phytrac' 728 c do it=1,nqmax 729 c WRITE(itn,'(i1)') it 730 c call diagtracphy(tr_seri(:,:,it),paprs,'Fin Phys '//itn) 731 c enddo 549 732 550 733 if (lafin) then
Note: See TracChangeset
for help on using the changeset viewer.