68 print*,
'fich_amma,NF_NOWRITE,nid ',
fich_amma,nf_nowrite,nid
69 if (ierr.NE.nf_noerr)
then
70 write(*,*)
'ERROR: GROS Pb opening forcings nc file '
71 write(*,*) nf_strerror(ierr)
75 ierr=nf_inq_dimid(nid,
'lev',rid)
76 IF (ierr.NE.nf_noerr)
THEN
77 print*,
'Oh probleme lecture dimension zz'
80 print*,
'OK nid,rid,nlev_amma',nid,rid,
nlev_amma
82 ierr=nf_inq_dimid(nid,
'time',rid)
83 print*,
'nid,rid',nid,rid
85 IF (ierr.NE.nf_noerr)
THEN
86 stop
'probleme lecture dimension sens'
88 ierr=nf_inq_dimlen(nid,rid,
nt_amma)
89 print*,
'nid,rid,nlev_amma',nid,rid,
nt_amma
127 print*,
'Allocations OK'
177 & ,zz,pp,temp,qv,
u,v,dw &
182 #include "netcdf.inc"
187 real temp(nlevel),pp(nlevel)
188 real qv(nlevel),u(nlevel)
190 real dw(nlevel,ntime)
191 real dt(nlevel,ntime)
192 real dq(nlevel,ntime)
193 real flat(ntime),sens(ntime)
196 integer nid, ierr,rid
199 integer var3didin(nbvar3d)
201 ierr=nf_inq_varid(nid,
"zz",var3didin(1))
202 if(ierr/=nf_noerr)
then
203 write(*,*) nf_strerror(ierr)
208 ierr=nf_inq_varid(nid,
"temp",var3didin(2))
209 if(ierr/=nf_noerr)
then
210 write(*,*) nf_strerror(ierr)
214 ierr=nf_inq_varid(nid,
"qv",var3didin(3))
215 if(ierr/=nf_noerr)
then
216 write(*,*) nf_strerror(ierr)
220 ierr=nf_inq_varid(nid,
"u",var3didin(4))
221 if(ierr/=nf_noerr)
then
222 write(*,*) nf_strerror(ierr)
226 ierr=nf_inq_varid(nid,
"v",var3didin(5))
227 if(ierr/=nf_noerr)
then
228 write(*,*) nf_strerror(ierr)
232 ierr=nf_inq_varid(nid,
"dw",var3didin(6))
233 if(ierr/=nf_noerr)
then
234 write(*,*) nf_strerror(ierr)
238 ierr=nf_inq_varid(nid,
"dt",var3didin(7))
239 if(ierr/=nf_noerr)
then
240 write(*,*) nf_strerror(ierr)
244 ierr=nf_inq_varid(nid,
"dq",var3didin(8))
245 if(ierr/=nf_noerr)
then
246 write(*,*) nf_strerror(ierr)
250 ierr=nf_inq_varid(nid,
"sens",var3didin(9))
251 if(ierr/=nf_noerr)
then
252 write(*,*) nf_strerror(ierr)
256 ierr=nf_inq_varid(nid,
"flat",var3didin(10))
257 if(ierr/=nf_noerr)
then
258 write(*,*) nf_strerror(ierr)
262 ierr=nf_inq_varid(nid,
"pp",var3didin(11))
263 if(ierr/=nf_noerr)
then
264 write(*,*) nf_strerror(ierr)
271 ierr = nf_get_var_double(nid,var3didin(1),zz)
273 ierr = nf_get_var_real(nid,var3didin(1),zz)
275 if(ierr/=nf_noerr)
then
276 write(*,*) nf_strerror(ierr)
282 ierr = nf_get_var_double(nid,var3didin(2),temp)
284 ierr = nf_get_var_real(nid,var3didin(2),temp)
286 if(ierr/=nf_noerr)
then
287 write(*,*) nf_strerror(ierr)
293 ierr = nf_get_var_double(nid,var3didin(3),qv)
295 ierr = nf_get_var_real(nid,var3didin(3),qv)
297 if(ierr/=nf_noerr)
then
298 write(*,*) nf_strerror(ierr)
304 ierr = nf_get_var_double(nid,var3didin(4),u)
306 ierr = nf_get_var_real(nid,var3didin(4),u)
308 if(ierr/=nf_noerr)
then
309 write(*,*) nf_strerror(ierr)
315 ierr = nf_get_var_double(nid,var3didin(5),v)
317 ierr = nf_get_var_real(nid,var3didin(5),v)
319 if(ierr/=nf_noerr)
then
320 write(*,*) nf_strerror(ierr)
326 ierr = nf_get_var_double(nid,var3didin(6),dw)
328 ierr = nf_get_var_real(nid,var3didin(6),dw)
330 if(ierr/=nf_noerr)
then
331 write(*,*) nf_strerror(ierr)
337 ierr = nf_get_var_double(nid,var3didin(7),dt)
339 ierr = nf_get_var_real(nid,var3didin(7),dt)
341 if(ierr/=nf_noerr)
then
342 write(*,*) nf_strerror(ierr)
348 ierr = nf_get_var_double(nid,var3didin(8),dq)
350 ierr = nf_get_var_real(nid,var3didin(8),dq)
352 if(ierr/=nf_noerr)
then
353 write(*,*) nf_strerror(ierr)
359 ierr = nf_get_var_double(nid,var3didin(9),sens)
361 ierr = nf_get_var_real(nid,var3didin(9),sens)
363 if(ierr/=nf_noerr)
then
364 write(*,*) nf_strerror(ierr)
370 ierr = nf_get_var_double(nid,var3didin(10),flat)
372 ierr = nf_get_var_real(nid,var3didin(10),flat)
374 if(ierr/=nf_noerr)
then
375 write(*,*) nf_strerror(ierr)
381 ierr = nf_get_var_double(nid,var3didin(11),pp)
383 ierr = nf_get_var_real(nid,var3didin(11),pp)
385 if(ierr/=nf_noerr)
then
386 write(*,*) nf_strerror(ierr)
395 & ,year_ini_amma,day_ini_amma,nt_amma,dt_amma,nlev_amma &
396 & ,vitw_amma,ht_amma,hq_amma,lat_amma,sens_amma &
409 #include "compar1d.h"
413 integer nt_amma,nlev_amma
414 integer year_ini_amma
415 real day, day1,day_ini_amma,dt_amma
416 real vitw_amma(nlev_amma,nt_amma)
417 real ht_amma(nlev_amma,nt_amma)
418 real hq_amma(nlev_amma,nt_amma)
419 real lat_amma(nt_amma)
420 real sens_amma(nt_amma)
422 real vitw_prof(nlev_amma)
423 real ht_prof(nlev_amma)
424 real hq_prof(nlev_amma)
425 real lat_prof,sens_prof
427 integer it_amma1, it_amma2,k
428 real timeit,time_amma1,time_amma2,frac
431 if (forcing_type.eq.6)
then
433 if (annee_ref.ne.2006)
then
434 print*,
'Pour AMMA, annee_ref doit etre 2006'
435 print*,
'Changer annee_ref dans run.def'
438 if (annee_ref.eq.2006 .and. day1.lt.day_ini_amma)
then
439 print*,
'AMMA a débuté le 10 juillet 2006',day1,day_ini_amma
440 print*,
'Changer dayref dans run.def'
443 if (annee_ref.eq.2006 .and. day1.gt.day_ini_amma+1)
then
444 print*,
'AMMA a fini le 11 juillet'
445 print*,
'Changer dayref ou nday dans run.def'
457 timeit=(day-day_ini_amma)*86400
465 it_amma1=int(timeit/dt_amma)+1
466 IF (it_amma1 .EQ. nt_amma)
THEN
469 it_amma2=it_amma1 + 1
471 time_amma1=(it_amma1-1)*dt_amma
472 time_amma2=(it_amma2-1)*dt_amma
474 if (it_amma1 .gt. nt_amma)
then
475 write(*,*)
'PB-stop: day, it_amma1, it_amma2, timeit: ' &
476 & ,day,day_ini_amma,it_amma1,it_amma2,timeit/86400.
481 IF (it_amma1 .EQ. it_amma2)
THEN
484 frac=(time_amma2-timeit)/(time_amma2-time_amma1)
488 lat_prof = lat_amma(it_amma2) &
489 & -frac*(lat_amma(it_amma2)-lat_amma(it_amma1))
490 sens_prof = sens_amma(it_amma2) &
491 & -frac*(sens_amma(it_amma2)-sens_amma(it_amma1))
494 vitw_prof(k) = vitw_amma(k,it_amma2) &
495 & -frac*(vitw_amma(k,it_amma2)-vitw_amma(k,it_amma1))
496 ht_prof(k) = ht_amma(k,it_amma2) &
497 & -frac*(ht_amma(k,it_amma2)-ht_amma(k,it_amma1))
498 hq_prof(k) = hq_amma(k,it_amma2) &
499 & -frac*(hq_amma(k,it_amma2)-hq_amma(k,it_amma1))
real, dimension(:), allocatable q_ammai
real, dimension(:), allocatable v_profamma
real, dimension(:), allocatable u_amma
real, dimension(:), allocatable ht_profamma
do llm!au dessus on relaxe vers profil init!on fait l hypothese que dans ce il n y a plus d eau liq au dessus!donc la relaxation en thetal et qt devient relaxation en tempe et qv l dq1 relax dq(l, 1)
real, dimension(:), allocatable hq_profamma
real, dimension(:), allocatable vt_profamma
subroutine read_amma(nid, nlevel, ntime, zz, pp, temp, qv, u, v, dw, dt, dq, sens, flat)
!$Id calend INTEGER itaufin INTEGER itau_phy INTEGER day_ref REAL dt
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga u_toga vq_toga w_prof ht_prof
real, dimension(:), allocatable sens_amma
real, dimension(:), allocatable th_ammai
real, dimension(:), allocatable th_profamma
real, dimension(:), allocatable q_profamma
real, dimension(:,:), allocatable hq_amma
real, dimension(:), allocatable vq_ammai
real, dimension(:), allocatable v_ammai
real, dimension(:), allocatable plev_amma
real, dimension(:,:), allocatable vitw_amma
real, dimension(:,:), allocatable ht_amma
real, dimension(:), allocatable u_ammai
real, dimension(:), allocatable q_amma
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga u_toga vq_toga w_prof hq_prof
!$Header!integer nvarmx parameter(nfmx=10, imx=200, jmx=150, lmx=200, nvarmx=1000) real xd(imx
subroutine deallocate_1d_cases
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga u_toga vq_toga w_prof vq_prof llm u(l)
real, dimension(:), allocatable vitw_profamma
real, dimension(:), allocatable hq_ammai
real, dimension(:), allocatable v_amma
real, dimension(:), allocatable vitw_ammai
real, dimension(:), allocatable lat_amma
real, dimension(:), allocatable vt_ammai
real, dimension(:), allocatable th_amma
real, dimension(:), allocatable z_amma
real, dimension(:), allocatable ht_ammai
subroutine interp_amma_time(day, day1, annee_ref, year_ini_amma, day_ini_amma, nt_amma, dt_amma, nlev_amma, vitw_amma, ht_amma, hq_amma, lat_amma, sens_amma, vitw_prof, ht_prof, hq_prof, lat_prof, sens_prof)
real, dimension(:), allocatable vq_profamma
real, dimension(:), allocatable u_profamma