1 |
subroutine read_reanalyse(timestep,psi & |
subroutine read_reanalyse(timestep,psi,u,v,t,q,masse,mode,nlevnc) |
|
,u,v,t,q,masse,ps,mode,nlevnc) |
|
2 |
|
|
3 |
! |
! |
4 |
! $Header: /home/cvsroot/LMDZ4/libf/dyn3d/read_reanalyse.F,v 1.3 2005/04/15 12:31:21 lmdzadmin Exp $ |
! $Header: /home/cvsroot/LMDZ4/libf/dyn3d/read_reanalyse.F,v 1.3 2005/04/15 12:31:21 lmdzadmin Exp $ |
13 |
! ----------------------------------------------------------------- |
! ----------------------------------------------------------------- |
14 |
use dimens_m |
use dimens_m |
15 |
use paramet_m |
use paramet_m |
16 |
use comvert |
use disvert_m |
17 |
use comgeom |
use comgeom |
18 |
use guide_m |
use conf_guide_m |
19 |
use netcdf |
use netcdf |
20 |
|
|
21 |
IMPLICIT NONE |
IMPLICIT NONE |
23 |
! common |
! common |
24 |
! ------ |
! ------ |
25 |
|
|
|
include "netcdf.inc" |
|
|
|
|
|
|
|
26 |
! arguments |
! arguments |
27 |
! --------- |
! --------- |
28 |
integer nlevnc |
integer nlevnc |
29 |
integer timestep,mode,l |
integer timestep,mode,l |
30 |
|
|
31 |
real psi(iip1,jjp1) |
real, intent(in):: psi(iip1,jjp1) |
32 |
real u(iip1,jjp1,llm),v(iip1,jjm,llm) |
real u(iip1,jjp1,llm),v(iip1,jjm,llm) |
33 |
real t(iip1,jjp1,llm),ps(iip1,jjp1),q(iip1,jjp1,llm) |
real t(iip1,jjp1,llm),q(iip1,jjp1,llm) |
34 |
real masse(iip1,jjp1,llm),pk(iip1,jjp1,llm) |
real masse(iip1,jjp1,llm),pk(iip1,jjp1,llm) |
35 |
|
|
36 |
|
|
97 |
if (ncidpl.eq.-99) ncidpl=ncidQ |
if (ncidpl.eq.-99) ncidpl=ncidQ |
98 |
endif |
endif |
99 |
|
|
|
! Pression de surface |
|
|
if (guide_P) then |
|
|
rcode=nf90_open('ps.nc',nf90_nowrite,ncidps) |
|
|
rcode = nf90_inq_varid(ncidps, 'SP', varidps) |
|
|
print*,'ncidps,varidps',ncidps,varidps |
|
|
endif |
|
|
|
|
100 |
! Coordonnee verticale |
! Coordonnee verticale |
101 |
if (ncep) then |
if (ncep) then |
102 |
print*,'Vous etes entrain de lire des donnees NCEP' |
print*,'Vous etes entrain de lire des donnees NCEP' |
112 |
! Niveaux de pression |
! Niveaux de pression |
113 |
print*,'WARNING!!! Il n y a pas de test de coherence' |
print*,'WARNING!!! Il n y a pas de test de coherence' |
114 |
print*,'sur le nombre de niveaux verticaux dans le fichier nc' |
print*,'sur le nombre de niveaux verticaux dans le fichier nc' |
115 |
status=NF_GET_VARA_REAL(ncidpl,varidpl,1,nlevnc,pl) |
status=NF90_GET_VAR(ncidpl,varidpl,pl) |
116 |
! passage en pascal |
! passage en pascal |
117 |
pl(:)=100.*pl(:) |
pl(:)=100.*pl(:) |
118 |
if (first) then |
if (first) then |
122 |
endif |
endif |
123 |
|
|
124 |
! ----------------------------------------------------------------- |
! ----------------------------------------------------------------- |
125 |
! lecture des champs u, v, T, ps |
! lecture des champs u, v, T |
126 |
! ----------------------------------------------------------------- |
! ----------------------------------------------------------------- |
127 |
|
|
128 |
! dimensions pour les champs scalaires et le vent zonal |
! dimensions pour les champs scalaires et le vent zonal |
150 |
|
|
151 |
if (guide_u) then |
if (guide_u) then |
152 |
print*,'avant la lecture de UNCEP nd de niv:',nlevnc |
print*,'avant la lecture de UNCEP nd de niv:',nlevnc |
153 |
status=NF_GET_VARA_REAL(ncidu,varidu,start,count,unc) |
status=NF90_GET_VAR(ncidu,varidu,unc,start,count) |
154 |
! call dump2d(iip1,jjp1,unc,'VENT NCEP ') |
! call dump2d(iip1,jjp1,unc,'VENT NCEP ') |
155 |
! call dump2d(iip1,40,unc(1,1,nlevnc),'VENT NCEP ') |
! call dump2d(iip1,40,unc(1,1,nlevnc),'VENT NCEP ') |
156 |
print*,'WARNING!!! Correction bidon pour palier a un ' |
print*,'WARNING!!! Correction bidon pour palier a un ' |
165 |
print*,'ncidt=',ncidt,'varidt=',varidt,'start=',start |
print*,'ncidt=',ncidt,'varidt=',varidt,'start=',start |
166 |
print*,'count=',count |
print*,'count=',count |
167 |
if (guide_T) then |
if (guide_T) then |
168 |
status=NF_GET_VARA_REAL(ncidt,varidt,start,count,tnc) |
status=NF90_GET_VAR(ncidt,varidt,tnc,start,count) |
169 |
call dump2d(iip1,jjp1,tnc,'TNC COUCHE 1 AAA ') |
call dump2d(iip1,jjp1,tnc,'TNC COUCHE 1 AAA ') |
170 |
call correctbid(iim,jjp1*nlevnc,tnc) |
call correctbid(iim,jjp1*nlevnc,tnc) |
171 |
call dump2d(iip1,jjp1,tnc,'TNC COUCHE 1 BBB ') |
call dump2d(iip1,jjp1,tnc,'TNC COUCHE 1 BBB ') |
175 |
! -------- |
! -------- |
176 |
|
|
177 |
if (guide_Q) then |
if (guide_Q) then |
178 |
status=NF_GET_VARA_REAL(ncidQ,varidQ,start,count,Qnc) |
status=NF90_GET_VAR(ncidQ,varidQ,Qnc,start,count) |
179 |
call correctbid(iim,jjp1*nlevnc,Qnc) |
call correctbid(iim,jjp1*nlevnc,Qnc) |
180 |
call dump2d(iip1,jjp1,Qnc,'QNC COUCHE 1 ') |
call dump2d(iip1,jjp1,Qnc,'QNC COUCHE 1 ') |
181 |
endif |
endif |
185 |
! ------------- |
! ------------- |
186 |
|
|
187 |
if (guide_v) then |
if (guide_v) then |
188 |
status=NF_GET_VARA_REAL(ncidv,varidv,start,count,vnc) |
status=NF90_GET_VAR(ncidv,varidv,vnc,start,count) |
189 |
call correctbid(iim,jjm*nlevnc,vnc) |
call correctbid(iim,jjm*nlevnc,vnc) |
190 |
call dump2d(iip1,jjm,vnc,'VNC COUCHE 1 ') |
call dump2d(iip1,jjm,vnc,'VNC COUCHE 1 ') |
191 |
endif |
endif |
196 |
count(3)=1 |
count(3)=1 |
197 |
count(4)=0 |
count(4)=0 |
198 |
|
|
|
! Pression de surface |
|
|
! ------------------- |
|
|
|
|
|
if (guide_P) then |
|
|
status=NF_GET_VARA_REAL(ncidps,varidps,start,count,psnc) |
|
|
call dump2d(iip1,jjp1,psnc,'PSNC COUCHE 1 ') |
|
|
call correctbid(iim,jjp1,psnc) |
|
|
endif |
|
|
|
|
|
|
|
|
|
|
|
! ----------------------------------------------------------------- |
|
199 |
! Interpollation verticale sur les niveaux modele |
! Interpollation verticale sur les niveaux modele |
200 |
! ----------------------------------------------------------------- |
! ----------------------------------------------------------------- |
201 |
call reanalyse2nat(nlevnc,psi,unc,vnc,tnc,Qnc,psnc,pl,u,v,t,Q & |
call reanalyse2nat(nlevnc,psi,unc,vnc,tnc,Qnc,psnc,pl,u,v,t,Q,masse,pk) |
|
,ps,masse,pk) |
|
202 |
|
|
203 |
call dump2d(iip1,jjm,v,'V COUCHE APRES ') |
call dump2d(iip1,jjm,v,'V COUCHE APRES ') |
204 |
|
|