c c $Header$ c cIM on initialise les variables c missing_val=nf90_fill_real c cIM freq_moyNMC = frequences auxquelles on moyenne les champs accumules cIM sur les niveaux de pression standard du NMC DO n=1, nout freq_moyNMC(n)=freq_outNMC(n)/freq_calNMC(n) ENDDO c CALL ini_undefSTD(itap,freq_outNMC) c cIM on interpole les champs sur les niveaux STD de pression cIM a chaque pas de temps de la physique c c-------------------------------------------------------c c positionnement de l'argument logique a .false. c c pour ne pas recalculer deux fois la meme chose ! c c a cet effet un appel a plevel_new a ete deplace c c a la fin de la serie d'appels c c la boucle 'DO k=1, nlevSTD' a ete internalisee c c dans plevel_new, d'ou la creation de cette routine... c c-------------------------------------------------------c c CALL plevel_new(klon,klev,nlevSTD,.true.,pplay,rlevSTD, & t_seri,tlevSTD) CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, & u_seri,ulevSTD) CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, & v_seri,vlevSTD) c c CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, & zphi/RG,philevSTD) CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, & qx(:,:,ivap),qlevSTD) CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, & zx_rh*100.,rhlevSTD) c DO l=1, klev DO i=1, klon zx_tmp_fi3d(i,l)=u_seri(i,l)*v_seri(i,l) ENDDO !i ENDDO !l CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, & zx_tmp_fi3d,uvSTD) c DO l=1, klev DO i=1, klon zx_tmp_fi3d(i,l)=v_seri(i,l)*q_seri(i,l) ENDDO !i ENDDO !l CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, & zx_tmp_fi3d,vqSTD) c DO l=1, klev DO i=1, klon zx_tmp_fi3d(i,l)=v_seri(i,l)*t_seri(i,l) ENDDO !i ENDDO !l CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, & zx_tmp_fi3d,vTSTD) c DO l=1, klev DO i=1, klon zx_tmp_fi3d(i,l)=omega(i,l)*qx(i,l,ivap) ENDDO !i ENDDO !l CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, & zx_tmp_fi3d,wqSTD) c DO l=1, klev DO i=1, klon zx_tmp_fi3d(i,l)=v_seri(i,l)*zphi(i,l)/RG ENDDO !i ENDDO !l CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, & zx_tmp_fi3d,vphiSTD) c DO l=1, klev DO i=1, klon zx_tmp_fi3d(i,l)=omega(i,l)*t_seri(i,l) ENDDO !i ENDDO !l CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, & zx_tmp_fi3d,wTSTD) c DO l=1, klev DO i=1, klon zx_tmp_fi3d(i,l)=u_seri(i,l)*u_seri(i,l) ENDDO !i ENDDO !l CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, & zx_tmp_fi3d,u2STD) c DO l=1, klev DO i=1, klon zx_tmp_fi3d(i,l)=v_seri(i,l)*v_seri(i,l) ENDDO !i ENDDO !l CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, & zx_tmp_fi3d,v2STD) c DO l=1, klev DO i=1, klon zx_tmp_fi3d(i,l)=t_seri(i,l)*t_seri(i,l) ENDDO !i ENDDO !l CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, & zx_tmp_fi3d,T2STD) c zx_tmp_fi3d(:,:)=wo(:,:,1) * dobson_u * 1e3 / zmasse / rmo3 * rmd CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, & zx_tmp_fi3d,O3STD) c if (read_climoz == 2) THEN zx_tmp_fi3d(:,:)=wo(:,:,2) * dobson_u * 1e3 / zmasse / rmo3 * rmd CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, & zx_tmp_fi3d,O3daySTD) endif c DO l=1, klev DO i=1, klon zx_tmp_fi3d(i,l)=paprs(i,l) ENDDO !i ENDDO !l CALL plevel_new(klon,klev,nlevSTD,.true.,zx_tmp_fi3d,rlevSTD, & omega,wlevSTD) c cIM on somme les valeurs toutes les freq_calNMC secondes c CALL undefSTD(itap,freq_calNMC, read_climoz) c cIM on moyenne a la fin du mois ou du jour (toutes les freq_outNMC secondes) c CALL moy_undefSTD(itap,freq_outNMC,freq_moyNMC) c CALL plevel(klon,klev,.true.,pplay,50000., & zphi/RG,geo500) cIM on interpole a chaque pas de temps le SWup(clr) et SWdn(clr) a 200 hPa c CALL plevel(klon,klevp1,.true.,paprs,20000., $ swdn0,SWdn200clr) CALL plevel(klon,klevp1,.false.,paprs,20000., $ swdn,SWdn200) CALL plevel(klon,klevp1,.false.,paprs,20000., $ swup0,SWup200clr) CALL plevel(klon,klevp1,.false.,paprs,20000., $ swup,SWup200) c CALL plevel(klon,klevp1,.false.,paprs,20000., $ lwdn0,LWdn200clr) CALL plevel(klon,klevp1,.false.,paprs,20000., $ lwdn,LWdn200) CALL plevel(klon,klevp1,.false.,paprs,20000., $ lwup0,LWup200clr) CALL plevel(klon,klevp1,.false.,paprs,20000., $ lwup,LWup200) c twriteSTD(:,:,1)=tsumSTD(:,:,1) qwriteSTD(:,:,1)=qsumSTD(:,:,1) rhwriteSTD(:,:,1)=rhsumSTD(:,:,1) phiwriteSTD(:,:,1)=phisumSTD(:,:,1) uwriteSTD(:,:,1)=usumSTD(:,:,1) vwriteSTD(:,:,1)=vsumSTD(:,:,1) wwriteSTD(:,:,1)=wsumSTD(:,:,1) twriteSTD(:,:,2)=tsumSTD(:,:,2) qwriteSTD(:,:,2)=qsumSTD(:,:,2) rhwriteSTD(:,:,2)=rhsumSTD(:,:,2) phiwriteSTD(:,:,2)=phisumSTD(:,:,2) uwriteSTD(:,:,2)=usumSTD(:,:,2) vwriteSTD(:,:,2)=vsumSTD(:,:,2) wwriteSTD(:,:,2)=wsumSTD(:,:,2) twriteSTD(:,:,3)=tlevSTD(:,:) qwriteSTD(:,:,3)=qlevSTD(:,:) rhwriteSTD(:,:,3)=rhlevSTD(:,:) phiwriteSTD(:,:,3)=philevSTD(:,:) uwriteSTD(:,:,3)=ulevSTD(:,:) vwriteSTD(:,:,3)=vlevSTD(:,:) wwriteSTD(:,:,3)=wlevSTD(:,:) twriteSTD(:,:,4)=tlevSTD(:,:) qwriteSTD(:,:,4)=qlevSTD(:,:) rhwriteSTD(:,:,4)=rhlevSTD(:,:) phiwriteSTD(:,:,4)=philevSTD(:,:) uwriteSTD(:,:,4)=ulevSTD(:,:) vwriteSTD(:,:,4)=vlevSTD(:,:) wwriteSTD(:,:,4)=wlevSTD(:,:) c cIM initialisation 5eme fichier de sortie twriteSTD(:,:,5)=tlevSTD(:,:) qwriteSTD(:,:,5)=qlevSTD(:,:) rhwriteSTD(:,:,5)=rhlevSTD(:,:) phiwriteSTD(:,:,5)=philevSTD(:,:) uwriteSTD(:,:,5)=ulevSTD(:,:) vwriteSTD(:,:,5)=vlevSTD(:,:) wwriteSTD(:,:,5)=wlevSTD(:,:) c cIM initialisation 6eme fichier de sortie twriteSTD(:,:,6)=tlevSTD(:,:) qwriteSTD(:,:,6)=qlevSTD(:,:) rhwriteSTD(:,:,6)=rhlevSTD(:,:) phiwriteSTD(:,:,6)=philevSTD(:,:) uwriteSTD(:,:,6)=ulevSTD(:,:) vwriteSTD(:,:,6)=vlevSTD(:,:) wwriteSTD(:,:,6)=wlevSTD(:,:) cIM for NMC files DO n=1, nlevSTD3 DO k=1, nlevSTD if(rlevSTD3(n).EQ.rlevSTD(k)) THEN twriteSTD3(:,n)=tlevSTD(:,k) qwriteSTD3(:,n)=qlevSTD(:,k) rhwriteSTD3(:,n)=rhlevSTD(:,k) phiwriteSTD3(:,n)=philevSTD(:,k) uwriteSTD3(:,n)=ulevSTD(:,k) vwriteSTD3(:,n)=vlevSTD(:,k) wwriteSTD3(:,n)=wlevSTD(:,k) endif !rlevSTD3(n).EQ.rlevSTD(k) ENDDO ENDDO c DO n=1, nlevSTD8 DO k=1, nlevSTD if(rlevSTD8(n).EQ.rlevSTD(k)) THEN tnondefSTD8(:,n)=tnondef(:,k,2) twriteSTD8(:,n)=tsumSTD(:,k,2) qwriteSTD8(:,n)=qsumSTD(:,k,2) rhwriteSTD8(:,n)=rhsumSTD(:,k,2) phiwriteSTD8(:,n)=phisumSTD(:,k,2) uwriteSTD8(:,n)=usumSTD(:,k,2) vwriteSTD8(:,n)=vsumSTD(:,k,2) wwriteSTD8(:,n)=wsumSTD(:,k,2) endif !rlevSTD8(n).EQ.rlevSTD(k) ENDDO ENDDO