2 !
$Id: 1D_interp_cases.h 2332 2015-07-21 15:40:58Z fhourdin $
4 !---------------------------------------------------------------------
5 ! Interpolation
forcing in
time and onto model levels
6 !---------------------------------------------------------------------
7 if (forcing_GCSSold) then
19 !!! tsurf = ts_gcssold
24 ! rho(l) =
play(l)/(
rd*temp(l)*(1.+(
rv/
rd-1.)*
q(l,1)))
25 ! omega2(l)=-rho(l)*
omega(l)
27 omega2(l)=
omega(l)/
rg*airefi ! flxmass_w calcule comme ds
physiq
35 endif ! forcing_GCSSold
36 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
37 !---------------------------------------------------------------------
39 !---------------------------------------------------------------------
40 if (forcing_toga) then
44 & '
#### ITAP,day,day1,(day-day1)*86400,(day-day1)*86400/dt_toga=', &
49 CALL interp_toga_time(daytime,day1,
annee_ref &
62 & ,t_mod,q_mod,
u_mod,v_mod,w_mod &
63 & ,ht_mod,vt_mod,hq_mod,vq_mod,mxcalc)
68 u(l) = u_mod(l) ! sb: on prescrit le vent
69 v(l) = v_mod(l) ! sb: on prescrit le vent
70 !
omega(l) = w_prof(l)
71 ! rho(l) = play(l)/(
rd*temp(l)*(1.+(
rv/
rd-1.)*
q(l,1)))
72 ! omega2(l)=-rho(l)*
omega(l)
74 omega2(l)=
omega(l)/
rg*airefi ! flxmass_w calcule comme ds
physiq
78 d_q_adv(l,1) = -(hq_mod(l)+vq_mod(l))
83 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
85 !---------------------------------------------------------------------
86 if (forcing_dice) then
89 print*,'
#### ITAP,day,day1,(day-day1)*86400,(day-day1)*86400/dt_dice=',&
94 CALL interp_dice_time(daytime,day1,
annee_ref &
107 if (type_ts_forcing.eq.1) ts_cur = tg_prof ! SST used in
read_tsurf1d
111 & ,th_dice,qv_dice,u_dice,v_dice,o3_dice &
113 & ,th_mod,qv_mod,u_mod,v_mod,o3_mod &
114 & ,ht_mod,hq_mod,hu_mod,hv_mod,w_mod,
omega_mod,mxcalc)
119 ! Les forcages DICE sont donnes /jour et non /seconde !
120 ht_mod(:)=ht_mod(:)/86400.
121 hq_mod(:)=hq_mod(:)/86400.
122 hu_mod(:)=hu_mod(:)/86400.
123 hv_mod(:)=hv_mod(:)/86400.
125 !calcul
de l
'advection verticale a partir du omega (repris cas TWPICE, MPL 05082013)
126 !Calcul des gradients verticaux
133 d_t_z(l)=(temp(l+1)-temp(l-1))/(play(l+1)-play(l-1))
134 d_q_z(l)=(q(l+1,1)-q(l-1,1)) /(play(l+1)-play(l-1))
135 d_u_z(l)=(u(l+1)-u(l-1))/(play(l+1)-play(l-1))
136 d_v_z(l)=(v(l+1)-v(l-1))/(play(l+1)-play(l-1))
140 ! d_u_z(1)=u(2)/(play(2)-psurf)/5.
141 ! d_v_z(1)=v(2)/(play(2)-psurf)/5.
144 d_t_z(llm)=d_t_z(llm-1)
145 d_q_z(llm)=d_q_z(llm-1)
146 d_u_z(llm)=d_u_z(llm-1)
147 d_v_z(llm)=d_v_z(llm-1)
149 !Calcul de l advection verticale:
150 ! utiliser omega (Pa/s) et non w (m/s) !! MP 20131108
151 d_t_dyn_z(:)=omega_mod(:)*d_t_z(:)
152 d_q_dyn_z(:)=omega_mod(:)*d_q_z(:)
153 d_u_dyn_z(:)=omega_mod(:)*d_u_z(:)
154 d_v_dyn_z(:)=omega_mod(:)*d_v_z(:)
156 ! large-scale forcing :
157 ! tsurf = tg_prof MPL 20130925 commente
159 ! For this case, fluxes are imposed
168 ! omega(l) = w_prof(l)
169 ! rho(l) = play(l)/(rd*temp(l)*(1.+(rv/rd-1.)*q(l,1)))
170 ! omega2(l)=-rho(l)*omega(l)
171 ! omega(l) = w_mod(l)*(-rg*rho(l))
172 omega(l) = omega_mod(l)
173 omega2(l)= omega(l)/rg*airefi ! flxmass_w calcule comme ds physiq
175 alpha = rd*temp(l)*(1.+(rv/rd-1.)*q(l,1))/play(l)
176 d_th_adv(l) = alpha*omega(l)/rcpd+ht_mod(l)-d_t_dyn_z(l)
177 d_q_adv(l,1) = hq_mod(l)-d_q_dyn_z(l)
178 d_u_adv(l) = hu_mod(l)-d_u_dyn_z(l)
179 d_v_adv(l) = hv_mod(l)-d_v_dyn_z(l)
184 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
185 !---------------------------------------------------------------------
186 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
187 !---------------------------------------------------------------------
188 ! Interpolation forcing TWPice
189 !---------------------------------------------------------------------
190 if (forcing_twpice) then
193 & '#### ITAP,
day,
day1,(day-
day1)*86400,(day-day1)*86400/dt_twpi=
', &
194 & daytime,day1,(daytime-day1)*86400., &
195 & (daytime-day1)*86400/dt_twpi
197 ! time interpolation:
198 CALL interp_toga_time(daytime,day1,annee_ref &
199 & ,year_ini_twpi,day_ju_ini_twpi,nt_twpi,dt_twpi,nlev_twpi &
200 & ,ts_twpi,plev_twpi,t_twpi,q_twpi,u_twpi,v_twpi,w_twpi &
201 & ,ht_twpi,vt_twpi,hq_twpi,vq_twpi &
202 & ,ts_proftwp,plev_proftwp,t_proftwp,q_proftwp,u_proftwp &
203 & ,v_proftwp,w_proftwp &
204 & ,ht_proftwp,vt_proftwp,hq_proftwp,vq_proftwp)
206 ! vertical interpolation:
207 CALL interp_toga_vertical(play,nlev_twpi,plev_proftwp &
208 & ,t_proftwp,q_proftwp,u_proftwp,v_proftwp,w_proftwp &
209 & ,ht_proftwp,vt_proftwp,hq_proftwp,vq_proftwp &
210 & ,t_mod,q_mod,u_mod,v_mod,w_mod &
211 & ,ht_mod,vt_mod,hq_mod,vq_mod,mxcalc)
214 !calcul de l'advection verticale a partir
du omega
215 !Calcul des gradients verticaux
222 d_t_z(l)=(temp(l+1)-temp(l-1))/(
play(l+1)-
play(l-1))
223 d_q_z(l)=(
q(l+1,1)-
q(l-1,1))/(
play(l+1)-
play(l-1))
227 d_t_z(llm)=d_t_z(llm-1)
228 d_q_z(llm)=d_q_z(llm-1)
230 !Calcul
de l advection verticale
231 d_t_dyn_z(:)=w_mod(:)*d_t_z(:)
232 d_q_dyn_z(:)=w_mod(:)*d_q_z(:)
234 !wind nudging above 500m with a 2h
time scale
237 !
if (
phi(l).gt.5000.) then
238 if (
phi(l).gt.0.) then
240 v(l)=v(l)+
timestep*(v_mod(l)-v(l))/(2.*3600.)
248 !CR:nudging of
q and
theta with a 6h
time scale above 15km
249 if (nudge_thermo) then
252 if ((zz(l).le.16000.).and.(zz(l).gt.15000.)) then
253 zfact=(zz(l)-15000.)/1000.
254 q(l,1)=
q(l,1)+
timestep*(q_mod(l)-
q(l,1))/(6.*3600.)*zfact
255 temp(l)=temp(l)+
timestep*(t_mod(l)-temp(l))/(6.*3600.)*zfact
256 else
if (zz(l).gt.16000.) then
257 q(l,1)=
q(l,1)+
timestep*(q_mod(l)-
q(l,1))/(6.*3600.)
258 temp(l)=temp(l)+
timestep*(t_mod(l)-temp(l))/(6.*3600.)
265 omega2(l)=
omega(l)/
rg*airefi ! flxmass_w calcule comme ds
physiq
267 !calcul
de l'advection totale
270 ! print*,'temp vert adv',l,ht_mod(l),vt_mod(l),-d_t_dyn_z(l)
271 d_q_adv(l,1) = hq_mod(l)-d_q_dyn_z(l)
272 ! print*,'
q vert adv',l,hq_mod(l),vq_mod(l),-d_q_dyn_z(l)
275 d_q_adv(l,1) = (hq_mod(l)+vq_mod(l))
280 endif ! forcing_twpice
282 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
283 !---------------------------------------------------------------------
285 !---------------------------------------------------------------------
287 if (forcing_amma) then
290 & '
#### ITAP,day,day1,(day-day1)*86400,(day-day1)*86400/dt_amma=', &
291 & daytime,
day1,(daytime-
day1)*86400., &
312 ! write(*,*)'avant interp vert', t_proftwp
317 & ,t_mod,q_mod,u_mod,v_mod,w_mod &
318 & ,ht_mod,vt_mod,hq_mod,vq_mod,mxcalc)
319 write(*,*) 'Profil initial
forcing AMMA interpole'
322 !calcul
de l'advection verticale a partir
du omega
323 !Calcul des gradients verticaux
331 d_t_z(l)=(temp(l+1)-temp(l-1))/(play(l+1)-play(l-1))
332 d_q_z(l)=(
q(l+1,1)-
q(l-1,1))/(play(l+1)-play(l-1))
336 d_t_z(llm)=d_t_z(llm-1)
337 d_q_z(llm)=d_q_z(llm-1)
341 rho(l) = play(l)/(
rd*temp(l)*(1.+(
rv/
rd-1.)*
q(l,1)))
342 omega(l) = w_mod(l)*(-
rg*rho(l))
343 omega2(l)=
omega(l)/
rg*airefi ! flxmass_w calcule comme ds
physiq
345 !calcul
de l'advection totale
347 !attention: on impose dth
349 & ht_mod(l)*(play(l)/pzero)**
rkappa-
omega(l)*d_t_z(l)
351 ! print*,'temp vert adv',l,ht_mod(l),vt_mod(l),-d_t_dyn_z(l)
354 ! print*,'
q vert adv',l,hq_mod(l),vq_mod(l),-d_q_dyn_z(l)
366 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
367 !---------------------------------------------------------------------
369 !---------------------------------------------------------------------
370 if (forcing_rico) then
371 ! call lstendH(llm,
omega,dt_dyn,dq_dyn,du_dyn, dv_dyn,
373 call lstendH(llm,
nqtot,omega,dt_dyn,dq_dyn,q,temp,u,v,play)
376 d_th_adv(l) = (dth_rico(l) + dt_dyn(l))
377 d_q_adv(l,1) = (dqh_rico(l) + dq_dyn(l,1))
381 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
382 !---------------------------------------------------------------------
384 !---------------------------------------------------------------------
385 if (forcing_armcu) then
388 & '
#### ITAP,day,day1,(day-day1)*86400,(day-day1)*86400/dt_armcu=', &
389 &
day,
day1,(day-
day1)*86400.,(day-day1)*86400/dt_armcu
392 ! ATTENTION, cet appel ne convient pas pour TOGA !!
393 ! revoir 1DUTILS.h et les arguments
394 CALL interp_armcu_time(daytime,day1,
annee_ref &
395 & ,year_ini_armcu,day_ju_ini_armcu,nt_armcu,dt_armcu &
396 & ,nlev_armcu,sens_armcu,flat_armcu,adv_theta_armcu &
397 & ,rad_theta_armcu,adv_qt_armcu,sens_prof,flat_prof &
398 & ,adv_theta_prof,rad_theta_prof,adv_qt_prof)
403 ! For
this case, fluxes are
imposed
407 ! Advective forcings are given in K or
g/kg ... BY HOUR
412 d_th_adv(l) = (adv_theta_prof + rad_theta_prof)/3600.
413 d_q_adv(l,1) = adv_qt_prof/1000./3600.
415 ! print *,'INF1000:
phi dth dq1 dq2',
417 ELSEIF ((
phi(l)/RG).GE.1000.AND.(
phi(l)/RG).lt.3000) THEN
418 fact=((
phi(l)/RG)-1000.)/2000.
420 d_th_adv(l) = (adv_theta_prof + rad_theta_prof)*fact/3600.
421 d_q_adv(l,1) = adv_qt_prof*fact/1000./3600.
423 ! print *,'SUP1000:
phi fact dth dq1 dq2',
429 ! print *,'SUP3000:
phi dth dq1 dq2',
433 ! print *,'Interp armcu:
phi dth dq1 dq2',
436 endif ! forcing_armcu
437 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
438 !---------------------------------------------------------------------
439 ! Interpolation
forcing in
time and onto model levels
440 !---------------------------------------------------------------------
441 if (forcing_sandu) then
444 & '
#### ITAP,day,day1,(day-day1)*86400,(day-day1)*86400/dt_sandu=', &
445 &
day,
day1,(day-
day1)*86400.,(day-day1)*86400/dt_sandu
448 ! ATTENTION, cet appel ne convient pas pour TOGA !!
449 ! revoir 1DUTILS.h et les arguments
450 CALL interp_sandu_time(daytime,day1,
annee_ref &
451 & ,year_ini_sandu,day_ju_ini_sandu,nt_sandu,dt_sandu &
458 CALL interp_sandu_vertical(play,nlev_sandu,plev_profs &
459 & ,t_profs,thl_profs,q_profs,u_profs,v_profs,w_profs &
460 & ,omega_profs,o3mmr_profs &
461 & ,t_mod,thl_mod,q_mod,u_mod,v_mod,w_mod &
463 !calcul
de l'advection verticale
464 !Calcul des gradients verticaux
472 ! d_t_z(l)=(temp(l+1)-temp(l-1))
473 ! & /(play(l+1)-play(l-1))
474 ! d_q_z(l)=(q(l+1,1)-q(l-1,1))
475 ! & /(play(l+1)-play(l-1))
478 d_t_z(l)=(temp(l+1)-temp(l))/(play(l+1)-play(l))
479 d_q_z(l)=(q(l+1,1)-q(l,1))/(play(l+1)-play(l))
480 ! print *,'l temp2 temp0 play2 play0 omega_mod',
481 ! & temp(l+1),temp(l-1),play(l+1),play(l-1),omega_mod(l)
485 d_t_z(llm)=d_t_z(llm-1)
486 d_q_z(llm)=d_q_z(llm-1)
488 ! calcul
de l advection verticale
489 ! Confusion
w (m/s) et omega (Pa/s) !!
490 d_t_dyn_z(:)=omega_mod(:)*d_t_z(:)
491 d_q_dyn_z(:)=omega_mod(:)*d_q_z(:)
494 ! :l,d_t_dyn_z(l),omega_mod(l),d_t_z(l),d_q_dyn_z(l),d_q_z(l)
498 ! large-scale
forcing : pour le
cas Sandu ces forcages sont la SST
499 ! et une divergence constante -> profil
de omega
501 write(*,*) 'SST suivante: ',tsurf
503 omega(l) = omega_mod(l)
504 omega2(l)= omega(l)/
rg*airefi ! flxmass_w calcule comme ds
physiq
511 !calcul
de l'advection verticale
512 d_th_adv(l) =
alpha*omega(l)/
rcpd-d_t_dyn_z(l)
513 ! print*,'temp adv',l,-d_t_dyn_z(l)
515 ! print*,'q adv',l,-d_q_dyn_z(l)
518 endif ! forcing_sandu
519 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
520 !---------------------------------------------------------------------
521 ! Interpolation
forcing in
time and onto model levels
522 !---------------------------------------------------------------------
523 if (forcing_astex) then
526 & '
#### ITAP,day,day1,(day-day1)*86400,(day-day1)*86400/dt_astex=', &
527 &
day,
day1,(day-
day1)*86400.,(day-day1)*86400/dt_astex
530 ! ATTENTION, cet appel ne convient pas pour TOGA !!
531 ! revoir 1DUTILS.h et les arguments
532 CALL interp_astex_time(daytime,day1,
annee_ref &
533 & ,year_ini_astex,day_ju_ini_astex,nt_astex,dt_astex &
534 & ,nlev_astex,div_astex,ts_astex,ug_astex,vg_astex &
535 & ,ufa_astex,vfa_astex,div_prof,
ts_prof,ug_prof,vg_prof &
536 & ,ufa_prof,vfa_prof)
541 CALL interp_astex_vertical(play,nlev_astex,plev_profa &
542 & ,t_profa,thl_profa,qv_profa,ql_profa,qt_profa &
543 & ,u_profa,v_profa,w_profa,tke_profa,o3mmr_profa &
544 & ,t_mod,thl_mod,qv_mod,ql_mod,qt_mod,u_mod,v_mod,w_mod &
545 & ,tke_mod,o3mmr_mod,mxcalc)
546 !calcul
de l'advection verticale
547 !Calcul des gradients verticaux
555 ! d_t_z(l)=(temp(l+1)-temp(l-1))
556 ! & /(play(l+1)-play(l-1))
557 ! d_q_z(l)=(q(l+1,1)-q(l-1,1))
558 ! & /(play(l+1)-play(l-1))
561 d_t_z(l)=(temp(l+1)-temp(l))/(play(l+1)-play(l))
562 d_q_z(l)=(q(l+1,1)-q(l,1))/(play(l+1)-play(l))
563 ! print *,'l temp2 temp0 play2 play0 omega_mod',
564 ! & temp(l+1),temp(l-1),play(l+1),play(l-1),omega_mod(l)
568 d_t_z(llm)=d_t_z(llm-1)
569 d_q_z(llm)=d_q_z(llm-1)
571 ! calcul
de l advection verticale
572 ! Confusion
w (m/s) et omega (Pa/s) !!
573 d_t_dyn_z(:)=w_mod(:)*d_t_z(:)
574 d_q_dyn_z(:)=w_mod(:)*d_q_z(:)
577 ! :l,d_t_dyn_z(l),omega_mod(l),d_t_z(l),d_q_dyn_z(l),d_q_z(l)
581 ! large-scale
forcing : pour le
cas Astex ces forcages sont la SST
582 ! la divergence,ug,vg,ufa,vfa
584 write(*,*) 'SST suivante: ',tsurf
587 omega2(l)= omega(l)/
rg*airefi ! flxmass_w calcule comme ds
physiq
594 !calcul
de l'advection verticale
595 d_th_adv(l) =
alpha*omega(l)/
rcpd-d_t_dyn_z(l)
596 ! print*,'temp adv',l,-d_t_dyn_z(l)
598 ! print*,'q adv',l,-d_q_dyn_z(l)
601 endif ! forcing_astex
603 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
604 !---------------------------------------------------------------------
605 ! Interpolation
forcing standard case
606 !---------------------------------------------------------------------
607 if (forcing_case) then
610 & '
#### ITAP,day,day1,(day-day1)*86400,(day-day1)*86400/pdt_cas=', &
611 & daytime,
day1,(daytime-
day1)*86400., &
637 & ,t_mod_cas,q_mod_cas,u_mod_cas,v_mod_cas,ug_mod_cas,vg_mod_cas,w_mod_cas &
638 & ,du_mod_cas,hu_mod_cas,vu_mod_cas,dv_mod_cas,hv_mod_cas,vv_mod_cas &
639 & ,dt_mod_cas,ht_mod_cas,vt_mod_cas,dtrad_mod_cas,dq_mod_cas,hq_mod_cas,vq_mod_cas,mxcalc)
642 !calcul
de l'advection verticale a partir
du omega
643 !Calcul des gradients verticaux
654 d_t_z(l)=(temp(l+1)-temp(l-1))/(play(l+1)-play(l-1))
655 d_q_z(l)=(q(l+1,1)-q(l-1,1))/(play(l+1)-play(l-1))
656 d_u_z(l)=(u(l+1)-u(l-1))/(play(l+1)-play(l-1))
657 d_v_z(l)=(v(l+1)-v(l-1))/(play(l+1)-play(l-1))
663 d_t_z(llm)=d_t_z(llm-1)
664 d_q_z(llm)=d_q_z(llm-1)
665 d_u_z(llm)=d_u_z(llm-1)
666 d_v_z(llm)=d_v_z(llm-1)
668 !Calcul
de l advection verticale
669 d_t_dyn_z(:)=w_mod_cas(:)*d_t_z(:)
670 d_q_dyn_z(:)=w_mod_cas(:)*d_q_z(:)
671 d_u_dyn_z(:)=w_mod_cas(:)*d_u_z(:)
672 d_v_dyn_z(:)=w_mod_cas(:)*d_v_z(:)
675 if (nudge_u.gt.0.) then
677 u(l)=u(l)+
timestep*(u_mod_cas(l)-u(l))/(nudge_u)
705 !nudging of q and temp
711 if (nudge_q.gt.0.) then
713 q(l,1)=q(l,1)+
timestep*(q_mod_cas(l)-q(l,1))/(nudge_q)
718 omega(l) = w_mod_cas(l)
719 omega2(l)= omega(l)/
rg*airefi ! flxmass_w calcule comme ds
physiq
723 if ((tend_u.eq.1).and.(
tend_w.eq.0)) then
724 d_u_adv(l)=du_mod_cas(l)
725 else
if ((tend_u.eq.1).and.(
tend_w.eq.1)) then
726 d_u_adv(l)=hu_mod_cas(l)-d_u_dyn_z(l)
730 d_v_adv(l)=dv_mod_cas(l)
732 d_v_adv(l)=hv_mod_cas(l)-d_v_dyn_z(l)
736 ! d_th_adv(l)=
alpha*omega(l)/
rcpd+dt_mod_cas(l)
737 d_th_adv(l)=
alpha*omega(l)/
rcpd-dt_mod_cas(l)
739 ! d_th_adv(l)=
alpha*omega(l)/
rcpd+ht_mod_cas(l)-d_t_dyn_z(l)
740 d_th_adv(l)=
alpha*omega(l)/
rcpd-ht_mod_cas(l)-d_t_dyn_z(l)
747 !
d_q_adv(l,1)=hq_mod_cas(l)-d_q_dyn_z(l)
748 d_q_adv(l,1)=-1*hq_mod_cas(l)-d_q_dyn_z(l)
751 if (tend_rayo.eq.1) then
752 dt_cooling(l) = dtrad_mod_cas(l)
753 ! print *,'dt_cooling=',dt_cooling(l)
762 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice w_dice
real, dimension(:), allocatable u_prof_cas
!$Id Turb_fcg_gcssold if(prt_level.ge.1) then print *
real, dimension(:), allocatable v_prof_cas
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice lhf_prof
real, dimension(:), allocatable ug_prof_cas
real, dimension(:), allocatable t_prof_cas
real, dimension(:), allocatable v_profamma
real, dimension(:), allocatable vw_prof_cas
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice tg_prof vg_profd hv_profd
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice tg_prof vg_profd ht_profd
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice ustar_dice
real, dimension(:,:,:), pointer, save q
!$Id mode_top_bound COMMON comconstr g
subroutine read_tsurf1d(knon, sst_out)
real, dimension(:), allocatable ht_profamma
!$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 u_prof
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice ug_dice
real, dimension(:,:), allocatable vv_cas
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day1
real, dimension(:), allocatable hq_profamma
real, dimension(:), allocatable vt_profamma
!$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 plev_prof
real, dimension(:), allocatable uw_prof_cas
!$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 w_toga
!$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 vt_prof
real, dimension(:,:), allocatable q1_cas
!$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 v_prof
real, dimension(:,:), allocatable, save d_t_dyn
real, dimension(:,:), allocatable dv_cas
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice ht_dice
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice tg_prof vg_profd w_profd omega_profd!do llm!print llm l llm
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 d_q_adv(l, 1)!print *
real, dimension(:), allocatable ts_cas
integer::year_ini_cas!initial year of the case integer::mth_ini_cas!initial month of the case integer::day_deb!initial day of the case real::heure_ini_cas!start time of the case real::pdt_cas!forcing_frequency real::day_ju_ini_cas!julian day of initial day of the case common date_cas year_ini_cas
real, dimension(:), allocatable vu_prof_cas
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale forcing
c c $Id c c calculs statistiques distribution nuage ftion du regime dynamique c c Ce calcul doit etre fait a partir de valeurs mensuelles CALL nbregdyn DO k
real, dimension(:,:), allocatable v_cas
!$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 q_prof
!$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
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice tg_prof vg_profd w_profd omega_profd!do llm!print llm l llm!print llm l omega_mod
real, dimension(:,:), allocatable u_cas
!$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 t_prof
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice lwup_prof
real, dimension(:), allocatable sens_amma
!surface temperature imposed
real, dimension(:,:), allocatable vw_cas
real, dimension(:,:), allocatable dt_cas
real, dimension(:,:), pointer, save w
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice hu_dice
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice tg_prof vg_profd hq_profd
!$Id Turb_fcg_gcssold get_uvd it
subroutine interp_case_time(day, day1, annee_ref
real, dimension(:), allocatable th_profamma
real, dimension(:,:), allocatable du_cas
real, dimension(:), allocatable q_profamma
!$Id klon IF(pctsrf(i, is_ter).GT.0.) THEN paire_ter(i)
real, dimension(:,:), allocatable q_cas
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga t_toga
real, dimension(:,:), allocatable hq_amma
real, dimension(:,:), allocatable, save d_q_dyn
real, dimension(:,:), allocatable vu_cas
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice lhf_dice
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi RG
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice tg_prof ug_profd
real, dimension(:), allocatable plev_prof_cas
real, dimension(:), allocatable lat_cas
real, dimension(:,:), allocatable vitw_cas
real, dimension(:,:), allocatable hq_cas
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref day_ju_ini_toga
subroutine physiq(nlon, nlev, debut, lafin, jD_cur, jH_cur, pdtphys, paprs, pplay, pphi, pphis, presnivs, u, v, rot, t, qx, flxmass_w, d_u, d_v, d_t, d_qx, d_ps, dudyn)
real, dimension(:,:), pointer, save phi
real, dimension(:), allocatable plev_amma
real, dimension(:,:), allocatable t_cas
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice tg_prof ustar_prof
real, dimension(:,:), allocatable vitw_amma
real, dimension(:,:), allocatable ht_amma
real, dimension(:,:), allocatable vg_cas
real, dimension(:), allocatable q1_prof_cas
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice swup_prof
real, dimension(:), allocatable ustar_cas
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm &&& day
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice tg_prof psurf_prof
real, dimension(:,:), allocatable ht_cas
!FH On elimine toutes les clefs physiques dans la dynamique prt_level
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref nt_toga
!$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
real, dimension(:,:), allocatable uw_cas
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref year_ini_toga
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice psurf_dice
real, dimension(:,:), allocatable vq_cas
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice tg_prof vg_profd w_profd omega_profd!do llm!print llm l omega_profd
!$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 vq_prof_cas
real, dimension(:), allocatable vt_prof_cas
!$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 ts_prof
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga ts_toga
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice shf_dice
real, dimension(:,:), allocatable vt_cas
real, dimension(:), allocatable vitw_profamma
real, dimension(:,:), allocatable hu_cas
!$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 vt_toga
real, dimension(:,:), allocatable q2_cas
real, dimension(:), allocatable hq_prof_cas
!$Id!Parameters for nlm real spfac!IM cf epmax real ptcrit real omtrain real dttrig real alpha real delta real betad COMMON cv30param nlm spfac &!IM cf ptcrit omtrain dttrig alpha
real, dimension(:), allocatable q2_prof_cas
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice shf_prof
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice tg_dice
!$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 day day1 day day1 *dt_dice endif!time annee_ref year_ini_dice
!$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 ht_toga
real, dimension(:), allocatable dtrad_prof_cas
real, dimension(:), allocatable q_prof_cas
real, dimension(:,:), pointer, save du
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga plev_toga
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga q_toga
real, dimension(:), allocatable lat_amma
real, dimension(:), allocatable ht_prof_cas
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga nlev_toga
real, dimension(:), allocatable du_prof_cas
real, dimension(:), allocatable vitw_prof_cas
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 u_mod(l)!if(l.ge.llm700) then relax_q(l
!$Id Turb_fcg!implicit none!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc!cette routine permet d obtenir hq et ainsi de!pouvoir calculer la convergence et le cisaillement dans la physiq!cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc INTEGER klev REAL in CHARACTER file_fordat COMMON com1_phys_gcss play
real, dimension(:), allocatable dt_prof_cas
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice hv_dice
integer::year_ini_cas!initial year of the case integer::mth_ini_cas!initial month of the case integer::day_deb!initial day of the case real::heure_ini_cas!start time of the case real::pdt_cas!forcing_frequency real::day_ju_ini_cas!julian day of initial day of the case common date_cas pdt_cas
real, dimension(:), allocatable hu_prof_cas
real, dimension(:), allocatable dv_prof_cas
!$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 hq_toga
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice nlev_dice
real, dimension(:,:), allocatable hv_cas
real, dimension(:,:), allocatable plev_cas
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, save omega
real, dimension(:), allocatable sens_cas
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice hq_dice
real, dimension(:), allocatable vq_profamma
real, dimension(:,:), allocatable, save theta
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice lwup_dice
real, dimension(:), allocatable dq_prof_cas
real, dimension(:,:), allocatable dq_cas
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice tg_prof vg_profd w_profd omega_profd!do l
real, dimension(:), allocatable vg_prof_cas
!$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 v_toga
do llm!au dessus on relaxe vers profil init!on fait l hypothese que dans ce cas
real, dimension(:,:), allocatable dtrad_cas
!$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 day day1 day day1 *dt_dice endif!time annee_ref nt_dice
!$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 day day1 day day1 *dt_dice endif!time annee_ref day_ju_ini_dice
!$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 day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice tg_prof vg_profd hu_profd
real, dimension(:), allocatable vv_prof_cas
real, dimension(:), allocatable hv_prof_cas
real, dimension(:), allocatable u_profamma
real, dimension(:,:), allocatable ug_cas