Changeset 3593 for LMDZ6/trunk


Ignore:
Timestamp:
Oct 28, 2019, 5:35:54 PM (5 years ago)
Author:
fhourdin
Message:

Significant progress for the SCM standard format

Location:
LMDZ6/trunk/libf/phylmd/dyn1d
Files:
1 added
9 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/dyn1d/1DUTILS.h

    r3541 r3593  
    540540       CALL getin('nudging_w',nudging_w)
    541541
     542! RELIQUE ANCIENS FORMAT. ECRASE PAR LE SUIVANT
    542543!Config  Key  = nudging_q
    543544!Config  Desc = forcage ou non par nudging sur q
    544545!Config  Def  = false
    545546!Config  Help = forcage ou non par nudging sur q
    546        nudging_q =0
    547        CALL getin('nudging_q',nudging_q)
     547       nudging_qv =0
     548       CALL getin('nudging_q',nudging_qv)
     549       CALL getin('nudging_qv',nudging_qv)
     550
    548551
    549552!Config  Key  = nudging_t
     
    599602      write(lunout,*)' nudging_v  = ', nudging_v
    600603      write(lunout,*)' nudging_t  = ', nudging_t
    601       write(lunout,*)' nudging_q  = ', nudging_q
     604      write(lunout,*)' nudging_qv  = ', nudging_qv
    602605      IF (forcing_type .eq.40) THEN
    603606        write(lunout,*) '--- Forcing type GCSS Old --- with:'
  • LMDZ6/trunk/libf/phylmd/dyn1d/1D_decl_cases.h

    r3223 r3593  
    3434        real w_mod(llm), t_mod(llm),q_mod(llm)
    3535        real u_mod(llm),v_mod(llm), ht_mod(llm),vt_mod(llm),ug_mod(llm),vg_mod(llm)
     36        real temp_nudg_mod(llm),qv_nudg_mod(llm),u_nudg_mod(llm),v_nudg_mod(llm)
    3637        real hq_mod(llm),vq_mod(llm),qv_mod(llm),ql_mod(llm),qt_mod(llm)
    3738        real th_mod(llm)
     
    9596!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    9697!Declarations specifiques au cas GABLS4   (MPL 20141023)
    97         character*80 :: fich_gabls4
    98         integer nlev_gabls4, nt_gabls4, nsol_gabls4
    99         parameter (nlev_gabls4=90, nt_gabls4=37, nsol_gabls4=19) 
    100         integer year_ini_gabls4, day_ini_gabls4, mth_ini_gabls4
    101         real heure_ini_gabls4
    102         real day_ju_ini_gabls4   ! Julian day of gabls4 first day
    103         parameter (year_ini_gabls4=2009)
    104         parameter (mth_ini_gabls4=12)
    105         parameter (day_ini_gabls4=11)  ! 11 = 11 decembre 2009
    106         parameter (heure_ini_gabls4=0.) !0UTC en secondes
    107         real dt_gabls4
    108         parameter (dt_gabls4=3600.) ! 1 forcage ttes les heures
    109 
     98!FHADETRUIRE
     99!       character*80 :: fich_gabls4
     100!       integer nlev_gabls4, nt_gabls4, nsol_gabls4
     101!       parameter (nlev_gabls4=90, nt_gabls4=37, nsol_gabls4=19) 
     102!       integer year_ini_gabls4, day_ini_gabls4, mth_ini_gabls4
     103!       real heure_ini_gabls4
     104!       real day_ju_ini_gabls4   ! Julian day of gabls4 first day
     105!       parameter (year_ini_gabls4=2009)
     106!       parameter (mth_ini_gabls4=12)
     107!       parameter (day_ini_gabls4=11)  ! 11 = 11 decembre 2009
     108!       parameter (heure_ini_gabls4=0.) !0UTC en secondes
     109!       real dt_gabls4
     110!       parameter (dt_gabls4=3600.) ! 1 forcage ttes les heures
     111!
    110112!profils initiaux:
    111         real plev_gabls4(nlev_gabls4)
    112         real zz_gabls4(nlev_gabls4)
    113         real th_gabls4(nlev_gabls4),t_gabls4(nlev_gabls4),qv_gabls4(nlev_gabls4)
    114         real u_gabls4(nlev_gabls4), v_gabls4(nlev_gabls4)
    115         real depth_sn_gabls4(nsol_gabls4),tsnow_gabls4(nsol_gabls4),snow_dens_gabls4(nsol_gabls4)
    116         real t_gabi(nlev_gabls4),qv_gabi(nlev_gabls4)
    117         real u_gabi(nlev_gabls4), v_gabi(nlev_gabls4),ug_gabi(nlev_gabls4), vg_gabi(nlev_gabls4)
    118         real ht_gabi(nlev_gabls4),hq_gabi(nlev_gabls4),poub(nlev_gabls4)
    119         
     113!       real plev_gabls4(nlev_gabls4)
     114!       real zz_gabls4(nlev_gabls4)
     115!       real th_gabls4(nlev_gabls4),t_gabls4(nlev_gabls4),qv_gabls4(nlev_gabls4)
     116!       real u_gabls4(nlev_gabls4), v_gabls4(nlev_gabls4)
     117!       real depth_sn_gabls4(nsol_gabls4),tsnow_gabls4(nsol_gabls4),snow_dens_gabls4(nsol_gabls4)
     118!       real t_gabi(nlev_gabls4),qv_gabi(nlev_gabls4)
     119!       real u_gabi(nlev_gabls4), v_gabi(nlev_gabls4),ug_gabi(nlev_gabls4), vg_gabi(nlev_gabls4)
     120!       real ht_gabi(nlev_gabls4),hq_gabi(nlev_gabls4),poub(nlev_gabls4)
     121!       
    120122!forcings
    121         real ht_gabls4(nlev_gabls4,nt_gabls4),hq_gabls4(nlev_gabls4,nt_gabls4)
    122         real ug_gabls4(nlev_gabls4,nt_gabls4),vg_gabls4(nlev_gabls4,nt_gabls4)
    123         real tg_gabls4(nt_gabls4)
    124         real ht_profg(nlev_gabls4),hq_profg(nlev_gabls4)
    125         real ug_profg(nlev_gabls4),vg_profg(nlev_gabls4)
    126         real tg_profg
    127          
     123! Lignes a detruire ...
     124!       real ht_gabls4(nlev_gabls4,nt_gabls4),hq_gabls4(nlev_gabls4,nt_gabls4)
     125!       real ug_gabls4(nlev_gabls4,nt_gabls4),vg_gabls4(nlev_gabls4,nt_gabls4)
     126!       real tg_gabls4(nt_gabls4)
     127!       real ht_profg(nlev_gabls4),hq_profg(nlev_gabls4)
     128!       real ug_profg(nlev_gabls4),vg_profg(nlev_gabls4)
     129!       real tg_profg
     130!       
    128131!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    129132
     
    281284        real qv_mod_cas(llm),ql_mod_cas(llm),qi_mod_cas(llm)
    282285        real ug_mod_cas(llm),vg_mod_cas(llm)
     286        real temp_nudg_mod_cas(llm),qv_nudg_mod_cas(llm),v_nudg_mod_cas(llm),u_nudg_mod_cas(llm)
    283287        real u_mod_cas(llm),v_mod_cas(llm)
    284288        real omega_mod_cas(llm)
  • LMDZ6/trunk/libf/phylmd/dyn1d/1D_interp_cases.h

    r3592 r3593  
    1111     &       ,nt_cas,nlev_cas                                                               &
    1212     &       ,ts_cas,ps_cas,plev_cas,t_cas,th_cas,thv_cas,thl_cas,qv_cas,ql_cas,qi_cas      &
    13      &       ,u_cas,v_cas,ug_cas,vg_cas,vitw_cas,omega_cas,du_cas,hu_cas,vu_cas             &
     13     &       ,u_cas,v_cas,ug_cas,vg_cas                                                     &
     14     &       ,temp_nudg_cas,qv_nudg_cas,u_nudg_cas,v_nudg_cas                               &
     15     &       ,vitw_cas,omega_cas,du_cas,hu_cas,vu_cas                                       &
    1416     &       ,dv_cas,hv_cas,vv_cas,dt_cas,ht_cas,vt_cas,dtrad_cas                           &
    1517     &       ,dq_cas,hq_cas,vq_cas,dth_cas,hth_cas,vth_cas,lat_cas,sens_cas,ustar_cas       &
     
    1820     &       ,ts_prof_cas,ps_prof_cas,plev_prof_cas,t_prof_cas,theta_prof_cas,thv_prof_cas  &
    1921     &       ,thl_prof_cas,qv_prof_cas,ql_prof_cas,qi_prof_cas                              &
    20      &       ,u_prof_cas,v_prof_cas,ug_prof_cas,vg_prof_cas,vitw_prof_cas,omega_prof_cas    &
     22     &       ,u_prof_cas,v_prof_cas,ug_prof_cas,vg_prof_cas                                 &
     23     &       ,temp_nudg_prof_cas,qv_nudg_prof_cas,u_nudg_prof_cas,v_nudg_prof_cas           &
     24     &       ,vitw_prof_cas,omega_prof_cas                                                  &
    2125     &       ,du_prof_cas,hu_prof_cas,vu_prof_cas                                           &
    2226     &       ,dv_prof_cas,hv_prof_cas,vv_prof_cas,dt_prof_cas,ht_prof_cas,vt_prof_cas       &
     
    3034
    3135! vertical interpolation:
    32       CALL interp2_case_vertical(play,nlev_cas,plev_prof_cas                                              &
    33      &         ,t_prof_cas,theta_prof_cas,thv_prof_cas,thl_prof_cas                                          &
     36      CALL interp2_case_vertical_std(play,nlev_cas,plev_prof_cas                                              &
     37     &         ,t_prof_cas,theta_prof_cas,thv_prof_cas,thl_prof_cas                                       &
    3438     &         ,qv_prof_cas,ql_prof_cas,qi_prof_cas,u_prof_cas,v_prof_cas                                 &
    35      &         ,ug_prof_cas,vg_prof_cas,vitw_prof_cas,omega_prof_cas                                      &
     39     &         ,ug_prof_cas,vg_prof_cas                                                                   &
     40     &         ,temp_nudg_prof_cas,qv_nudg_prof_cas,u_nudg_prof_cas,v_nudg_prof_cas                       &
     41     &         ,vitw_prof_cas,omega_prof_cas                                      &
    3642     &         ,du_prof_cas,hu_prof_cas,vu_prof_cas,dv_prof_cas,hv_prof_cas,vv_prof_cas                   &
    3743     &         ,dt_prof_cas,ht_prof_cas,vt_prof_cas,dtrad_prof_cas,dq_prof_cas,hq_prof_cas,vq_prof_cas    &
     
    3945!
    4046     &         ,t_mod_cas,theta_mod_cas,thv_mod_cas,thl_mod_cas,qv_mod_cas,ql_mod_cas,qi_mod_cas          &
    41      &         ,u_mod_cas,v_mod_cas,ug_mod_cas,vg_mod_cas,w_mod_cas,omega_mod_cas                         &
     47     &         ,u_mod_cas,v_mod_cas,ug_mod_cas,vg_mod_cas                                                 &
     48     &         ,temp_nudg_mod_cas,qv_nudg_mod_cas,u_nudg_mod_cas,v_nudg_mod_cas                           &
     49     &         ,w_mod_cas,omega_mod_cas                                                                   &
    4250     &         ,du_mod_cas,hu_mod_cas,vu_mod_cas,dv_mod_cas,hv_mod_cas,vv_mod_cas                         &
    4351     &         ,dt_mod_cas,ht_mod_cas,vt_mod_cas,dtrad_mod_cas,dq_mod_cas,hq_mod_cas,vq_mod_cas           &
     
    119127        enddo
    120128      endif
    121 !wind nudging
    122       if (nudging_u.gt.0.) then
    123         do l=1,llm
    124            u(l)=u(l)+timestep*(u_mod_cas(l)-u(l))/(nudge_u)
    125         enddo
    126 !     else
    127 !       do l=1,llm
    128 !          u(l) = u_mod_cas(l)
    129 !       enddo
    130       endif
    131 
    132       if (nudging_v.gt.0.) then
    133         do l=1,llm
    134            v(l)=v(l)+timestep*(v_mod_cas(l)-v(l))/(nudge_v)
    135         enddo
    136 !     else
    137 !       do l=1,llm
    138 !          v(l) = v_mod_cas(l)
    139 !       enddo
    140       endif
    141 
    142       if (nudging_w.gt.0.) then
    143         do l=1,llm
    144            w(l)=w(l)+timestep*(w_mod_cas(l)-w(l))/(nudge_w)
    145         enddo
    146  !    else
    147  !      do l=1,llm
    148  !         w(l) = w_mod_cas(l)
    149  !      enddo
    150       endif
    151 
    152 !nudging of q and temp
    153       if (nudging_t.gt.0.) then
    154         do l=1,llm
    155            temp(l)=temp(l)+timestep*(t_mod_cas(l)-temp(l))/(nudge_t)
    156         enddo
    157       endif
    158       if (nudging_q.gt.0.) then
    159         do l=1,llm
    160            q(l,1)=q(l,1)+timestep*(q_mod_cas(l)-q(l,1))/(nudge_q)
    161         enddo
    162       endif
    163129
    164130      do l = 1, llm
     
    170136       omega2(l)= omega_mod_cas(l)/rg*airefi ! flxmass_w calcule comme ds physiq
    171137
    172        alpha = rd*temp(l)*(1.+(rv/rd-1.)*q(l,1))/play(l)
     138! On effectue la somme du forcage total et de la decomposition
     139! horizontal/vertical en supposant que soit l'un soit l'autre
     140! sont remplis mais jamais les deux
    173141
    174 !calcul advections
    175         d_u_adv(l)=du_mod_cas(l)
    176         d_v_adv(l)=dv_mod_cas(l)
    177         !!! d_t_adv(l)=alpha*omega(l)/rcpd+dt_mod_cas(l)
    178         !d_t_adv(l)=alpha*omega_mod_cas(l)/rcpd+dt_mod_cas(l)
    179         d_t_adv(l)=dt_mod_cas(l)
    180         !print*,'d_t_adv(l) ', alpha,omega_mod_cas(l),rcpd,dt_mod_cas(l)*86400,d_t_adv(l)*86400
    181         d_q_adv(l,1)=dq_mod_cas(l)
     142       d_t_adv(l) = dt_mod_cas(l)+ht_mod_cas(l)+vt_mod_cas(l)
     143       d_q_adv(l,1) = dq_mod_cas(l)+hq_mod_cas(l)+vq_mod_cas(l)
     144       d_q_adv(l,2) = 0.0
     145       d_u_adv(l) = du_mod_cas(l)+hu_mod_cas(l)+vu_mod_cas(l)
     146       d_v_adv(l) = dv_mod_cas(l)+hv_mod_cas(l)+vv_mod_cas(l)
    182147
    183148!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • LMDZ6/trunk/libf/phylmd/dyn1d/1D_read_forc_cases.h

    r3592 r3593  
    2525     &       ,nt_cas,nlev_cas                                                               &
    2626     &       ,ts_cas,ps_cas,plev_cas,t_cas,th_cas,thv_cas,thl_cas,qv_cas,ql_cas,qi_cas      &
    27      &       ,u_cas,v_cas,ug_cas,vg_cas,vitw_cas,omega_cas,du_cas,hu_cas,vu_cas             &
     27     &       ,u_cas,v_cas,ug_cas,vg_cas                                                     &
     28     &       ,temp_nudg_cas,qv_nudg_cas,u_nudg_cas,v_nudg_cas                               &
     29     &       ,vitw_cas,omega_cas,du_cas,hu_cas,vu_cas                                       &
    2830     &       ,dv_cas,hv_cas,vv_cas,dt_cas,ht_cas,vt_cas,dtrad_cas                           &
    2931     &       ,dq_cas,hq_cas,vq_cas,dth_cas,hth_cas,vth_cas,lat_cas,sens_cas,ustar_cas       &
     
    3234     &       ,ts_prof_cas,ps_prof_cas,plev_prof_cas,t_prof_cas,theta_prof_cas,thv_prof_cas  &
    3335     &       ,thl_prof_cas,qv_prof_cas,ql_prof_cas,qi_prof_cas                              &
    34      &       ,u_prof_cas,v_prof_cas,ug_prof_cas,vg_prof_cas,vitw_prof_cas,omega_prof_cas    &
     36     &       ,u_prof_cas,v_prof_cas,ug_prof_cas,vg_prof_cas                                 &
     37     &       ,temp_nudg_prof_cas,qv_nudg_prof_cas,u_nudg_prof_cas,v_nudg_prof_cas           &
     38     &       ,vitw_prof_cas,omega_prof_cas                                                  &
    3539     &       ,du_prof_cas,hu_prof_cas,vu_prof_cas                                           &
    3640     &       ,dv_prof_cas,hv_prof_cas,vv_prof_cas,dt_prof_cas,ht_prof_cas,vt_prof_cas       &
     
    4549! vertical interpolation using interpolation routine:
    4650!      write(*,*)'avant interp vert', t_prof
    47       CALL interp2_case_vertical(play,nlev_cas,plev_prof_cas                                              &
     51      CALL interp2_case_vertical_std(play,nlev_cas,plev_prof_cas                                              &
    4852     &         ,t_prof_cas,theta_prof_cas,thv_prof_cas,thl_prof_cas                                          &
    4953     &         ,qv_prof_cas,ql_prof_cas,qi_prof_cas,u_prof_cas,v_prof_cas                                 &
    50      &         ,ug_prof_cas,vg_prof_cas,vitw_prof_cas,omega_prof_cas                                      &
     54     &         ,ug_prof_cas,vg_prof_cas                                                                   &
     55     &       ,temp_nudg_prof_cas,qv_nudg_prof_cas,u_nudg_prof_cas,v_nudg_prof_cas                         &
     56
     57     &         ,vitw_prof_cas,omega_prof_cas                                                              &
    5158     &         ,du_prof_cas,hu_prof_cas,vu_prof_cas,dv_prof_cas,hv_prof_cas,vv_prof_cas                   &
    5259     &         ,dt_prof_cas,ht_prof_cas,vt_prof_cas,dtrad_prof_cas,dq_prof_cas,hq_prof_cas,vq_prof_cas    &
     
    5461!
    5562     &         ,t_mod_cas,theta_mod_cas,thv_mod_cas,thl_mod_cas,qv_mod_cas,ql_mod_cas,qi_mod_cas          &
    56      &         ,u_mod_cas,v_mod_cas,ug_mod_cas,vg_mod_cas,w_mod_cas,omega_mod_cas                         &
     63     &         ,u_mod_cas,v_mod_cas,ug_mod_cas,vg_mod_cas                                                 &
     64     &         ,temp_nudg_mod_cas,qv_nudg_mod_cas,u_nudg_mod_cas,v_nudg_mod_cas                           &
     65     &         ,w_mod_cas,omega_mod_cas                                                                   &
    5766     &         ,du_mod_cas,hu_mod_cas,vu_mod_cas,dv_mod_cas,hv_mod_cas,vv_mod_cas                         &
    5867     &         ,dt_mod_cas,ht_mod_cas,vt_mod_cas,dtrad_mod_cas,dq_mod_cas,hq_mod_cas,vq_mod_cas           &
     
    7685       omega2(l)=omega(l)/rg*airefi ! flxmass_w calcule comme ds physiq
    7786
    78        alpha = rd*temp(l)*(1.+(rv/rd-1.)*q(l,1))/play(l)
    79 !on applique le forcage total au premier pas de temps
    80 !attention: signe different de toga
    81        !d_t_adv(l) = alpha*omega(l)/rcpd+(ht_mod_cas(l)+vt_mod_cas(l))
    82        d_t_adv(l) = ht_mod_cas(l)+vt_mod_cas(l)
    83        print*,'DTADV MODIFIE '
     87
     88! On effectue la somme du forcage total et de la decomposition
     89! horizontal/vertical en supposant que soit l'un soit l'autre
     90! sont remplis mais jamais les deux
     91
     92       d_t_adv(l) = dt_mod_cas(l)+ht_mod_cas(l)+vt_mod_cas(l)
     93       d_q_adv(l,1) = dq_mod_cas(l)+hq_mod_cas(l)+vq_mod_cas(l)
     94       d_q_adv(l,2) = 0.0
     95       d_u_adv(l) = du_mod_cas(l)+hu_mod_cas(l)+vu_mod_cas(l)
     96       d_v_adv(l) = dv_mod_cas(l)+hv_mod_cas(l)+vv_mod_cas(l)
     97
    8498!print*,'d_t_adv ',d_t_adv(1:20)*86400
    85 !      d_q_adv(l,1) = (hq_mod_cas(l)+vq_mod_cas(l))
    86        d_q_adv(l,1) = dq_mod_cas(l)
    87        d_q_adv(l,2) = 0.0
    88 !      d_u_adv(l) = (hu_mod_cas(l)+vu_mod_cas(l))
    89        d_u_adv(l) = du_mod_cas(l)
    90 !      d_v_adv(l) = (hv_mod_cas(l)+vv_mod_cas(l))
    91 ! correction bug d_u -> d_v (MM+MPL 20170310)
    92        d_v_adv(l) = dv_mod_cas(l)
     99
    93100      enddo     
    94101
  • LMDZ6/trunk/libf/phylmd/dyn1d/compar1d.h

    r3575 r3593  
    4242      integer :: tadv, tadvv, tadvh, qadv, qadvv, qadvh, thadv, thadvv, thadvh, trad
    4343      integer :: forc_omega, forc_u, forc_v, forc_w, forc_geo, forc_ustar
    44       real    :: nudging_u, nudging_v, nudging_w, nudging_t, nudging_q
     44      real    :: nudging_u, nudging_v, nudging_w, nudging_t, nudging_qv
    4545      common/com_par1d/                                                 &
    4646     & nat_surf,tsurf,rugos,rugosh,                                     &
     
    5353     & tadv, tadvv, tadvh, qadv, qadvv, qadvh, thadv, thadvv, thadvh,   &
    5454     & trad, forc_omega, forc_u, forc_v, forc_w, forc_geo, forc_ustar,                  &
    55      & nudging_u, nudging_v, nudging_t, nudging_q, nudging_w
     55     & nudging_u, nudging_v, nudging_t, nudging_qv, nudging_w
    5656
    5757!$OMP THREADPRIVATE(/com_par1d/)
  • LMDZ6/trunk/libf/phylmd/dyn1d/mod_1D_cases_read_std.F90

    r3592 r3593  
    2828        real, allocatable::  hv_cas(:,:),vv_cas(:,:),dv_cas(:,:)
    2929        real, allocatable::  ug_cas(:,:),vg_cas(:,:)
     30        real, allocatable::  temp_nudg_cas(:,:),qv_nudg_cas(:,:),u_nudg_cas(:,:),v_nudg_cas(:,:)
    3031        real, allocatable::  lat_cas(:),sens_cas(:),ts_cas(:),ps_cas(:),ustar_cas(:)
    3132        real, allocatable::  uw_cas(:,:),vw_cas(:,:),q1_cas(:,:),q2_cas(:,:),tke_cas(:)
     
    4950        real, allocatable::  ug_prof_cas(:)
    5051        real, allocatable::  vg_prof_cas(:)
     52        real, allocatable::  temp_nudg_prof_cas(:),qv_nudg_prof_cas(:),u_nudg_prof_cas(:),v_nudg_prof_cas(:)
    5153        real, allocatable::  ht_prof_cas(:)
    5254        real, allocatable::  hth_prof_cas(:)
     
    174176        allocate(hu_cas(nlev_cas,nt_cas),vu_cas(nlev_cas,nt_cas),du_cas(nlev_cas,nt_cas))
    175177        allocate(hv_cas(nlev_cas,nt_cas),vv_cas(nlev_cas,nt_cas),dv_cas(nlev_cas,nt_cas))
    176         allocate(ug_cas(nlev_cas,nt_cas))
    177         allocate(vg_cas(nlev_cas,nt_cas))
     178        allocate(ug_cas(nlev_cas,nt_cas),vg_cas(nlev_cas,nt_cas))
     179        allocate(temp_nudg_cas(nlev_cas,nt_cas),qv_nudg_cas(nlev_cas,nt_cas))
     180        allocate(u_nudg_cas(nlev_cas,nt_cas),v_nudg_cas(nlev_cas,nt_cas))
    178181        allocate(lat_cas(nt_cas),sens_cas(nt_cas),ts_cas(nt_cas),ps_cas(nt_cas),ustar_cas(nt_cas),tke_cas(nt_cas))
    179182        allocate(uw_cas(nlev_cas,nt_cas),vw_cas(nlev_cas,nt_cas),q1_cas(nlev_cas,nt_cas),q2_cas(nlev_cas,nt_cas))
     
    199202        allocate(ug_prof_cas(nlev_cas))
    200203        allocate(vg_prof_cas(nlev_cas))
     204        allocate(temp_nudg_prof_cas(nlev_cas),qv_nudg_prof_cas(nlev_cas))
     205        allocate(u_nudg_prof_cas(nlev_cas),v_nudg_prof_cas(nlev_cas))
    201206        allocate(ht_prof_cas(nlev_cas))
    202207        allocate(hth_prof_cas(nlev_cas))
     
    222227        print*,'Allocations OK'
    223228        CALL read_SCM (nid,nlev_cas,nt_cas,                                                                     &
    224      &     ap_cas,bp_cas,z_cas,plev_cas,zh_cas,plevh_cas,t_cas,th_cas,thv_cas,thl_cas,qv_cas,                    &
    225      &     ql_cas,qi_cas,rh_cas,rv_cas,u_cas,v_cas,vitw_cas,omega_cas,ug_cas,vg_cas,du_cas,hu_cas,vu_cas,        &
     229     &     ap_cas,bp_cas,z_cas,plev_cas,zh_cas,plevh_cas,t_cas,th_cas,thv_cas,thl_cas,qv_cas,                   &
     230     &     ql_cas,qi_cas,rh_cas,rv_cas,u_cas,v_cas,vitw_cas,omega_cas,ug_cas,vg_cas,                            &
     231     &     temp_nudg_cas,qv_nudg_cas,u_nudg_cas,v_nudg_cas,                                                     &
     232     &     du_cas,hu_cas,vu_cas,                                                                                &
    226233     &     dv_cas,hv_cas,vv_cas,dt_cas,ht_cas,vt_cas,dq_cas,hq_cas,vq_cas,dth_cas,hth_cas,vth_cas,               &
    227234     &     dr_cas,hr_cas,vr_cas,dtrad_cas,sens_cas,lat_cas,ts_cas,ps_cas,ustar_cas,tke_cas,                      &
     
    278285        deallocate(ug_prof_cas)
    279286        deallocate(vg_prof_cas)
     287        deallocate(temp_nudg_prof_cas,qv_nudg_prof_cas,u_nudg_prof_cas,v_nudg_prof_cas)
    280288        deallocate(ht_prof_cas)
    281289        deallocate(hq_prof_cas)
     
    303311
    304312!=====================================================================
    305       SUBROUTINE read_cas2(nid,nlevel,ntime                          &
    306      &     ,zz,pp,temp,qv,rh,theta,rv,u,v,ug,vg,w,                   &
    307      &     du,hu,vu,dv,hv,vv,dt,dtrad,ht,vt,dq,hq,vq,                     &
    308      &     dth,hth,vth,dr,hr,vr,sens,flat,ts,ustar,uw,vw,q1,q2)
    309 
    310 !program reading forcing of the case study
    311       implicit none
    312 #include "netcdf.inc"
    313 
    314       integer ntime,nlevel
    315 
    316       real zz(nlevel,ntime)
    317       real pp(nlevel,ntime)
    318       real temp(nlevel,ntime),qv(nlevel,ntime),rh(nlevel,ntime)
    319       real theta(nlevel,ntime),rv(nlevel,ntime)
    320       real u(nlevel,ntime)
    321       real v(nlevel,ntime)
    322       real ug(nlevel,ntime)
    323       real vg(nlevel,ntime)
    324       real w(nlevel,ntime)
    325       real du(nlevel,ntime),hu(nlevel,ntime),vu(nlevel,ntime)
    326       real dv(nlevel,ntime),hv(nlevel,ntime),vv(nlevel,ntime)
    327       real dt(nlevel,ntime),ht(nlevel,ntime),vt(nlevel,ntime)
    328       real dtrad(nlevel,ntime)
    329       real dq(nlevel,ntime),hq(nlevel,ntime),vq(nlevel,ntime)
    330       real dth(nlevel,ntime),hth(nlevel,ntime),vth(nlevel,ntime)
    331       real dr(nlevel,ntime),hr(nlevel,ntime),vr(nlevel,ntime)
    332       real flat(ntime),sens(ntime),ts(ntime),ustar(ntime)
    333       real uw(nlevel,ntime),vw(nlevel,ntime),q1(nlevel,ntime),q2(nlevel,ntime),resul(nlevel,ntime),resul1(ntime)
    334 
    335 
    336       integer nid, ierr, ierr1,ierr2,rid,i
    337       integer nbvar3d
    338       parameter(nbvar3d=39)
    339       integer var3didin(nbvar3d)
    340       character*5 name_var(1:nbvar3d)
    341       data name_var/'zz','pp','temp','qv','rh','theta','rv','u','v','ug','vg','w','advu','hu','vu',&
    342      &'advv','hv','vv','advT','hT','vT','advq','hq','vq','advth','hth','vth','advr','hr','vr',&
    343      &'radT','uw','vw','q1','q2','sens','flat','ts','ustar'/
    344 
    345        do i=1,nbvar3d
    346          print *,'Dans read_cas2, on va lire ',nid,i,name_var(i)
    347        enddo
    348        do i=1,nbvar3d
    349          ierr=NF_INQ_VARID(nid,name_var(i),var3didin(i))
    350          print *,'ierr=',i,ierr,name_var(i),var3didin(i)
    351          if(ierr/=NF_NOERR) then
    352            print *,'Variable manquante dans cas.nc:',name_var(i)
    353          endif
    354        enddo
    355        do i=1,nbvar3d
    356          print *,'Dans read_cas2, on va lire ',var3didin(i),name_var(i)
    357          if(i.LE.35) then
    358 #ifdef NC_DOUBLE
    359          ierr = NF_GET_VAR_DOUBLE(nid,var3didin(i),resul)
    360 #else
    361          ierr = NF_GET_VAR_REAL(nid,var3didin(i),resul)
    362 #endif
    363          print *,'Dans read_cas2, on a lu ',ierr,var3didin(i),name_var(i)
    364          if(ierr/=NF_NOERR) then
    365             print *,'Pb a la lecture de cas.nc: ',name_var(i)
    366             stop "getvarup"
    367          endif
    368          else
    369 #ifdef NC_DOUBLE
    370          ierr = NF_GET_VAR_DOUBLE(nid,var3didin(i),resul1)
    371 #else
    372          ierr = NF_GET_VAR_REAL(nid,var3didin(i),resul1)
    373 #endif
    374          print *,'Dans read_cas2, on a lu ',ierr,var3didin(i),name_var(i)
    375          if(ierr/=NF_NOERR) then
    376             print *,'Pb a la lecture de cas.nc: ',name_var(i)
    377             stop "getvarup"
    378          endif
    379          endif
    380          select case(i)
    381            case(1) ; zz=resul
    382            case(2) ; pp=resul
    383            case(3) ; temp=resul
    384            case(4) ; qv=resul
    385            case(5) ; rh=resul
    386            case(6) ; theta=resul
    387            case(7) ; rv=resul
    388            case(8) ; u=resul
    389            case(9) ; v=resul
    390            case(10) ; ug=resul
    391            case(11) ; vg=resul
    392            case(12) ; w=resul
    393            case(13) ; du=resul
    394            case(14) ; hu=resul
    395            case(15) ; vu=resul
    396            case(16) ; dv=resul
    397            case(17) ; hv=resul
    398            case(18) ; vv=resul
    399            case(19) ; dt=resul
    400            case(20) ; ht=resul
    401            case(21) ; vt=resul
    402            case(22) ; dq=resul
    403            case(23) ; hq=resul
    404            case(24) ; vq=resul
    405            case(25) ; dth=resul
    406            case(26) ; hth=resul
    407            case(27) ; vth=resul
    408            case(28) ; dr=resul
    409            case(29) ; hr=resul
    410            case(30) ; vr=resul
    411            case(31) ; dtrad=resul
    412            case(32) ; uw=resul
    413            case(33) ; vw=resul
    414            case(34) ; q1=resul
    415            case(35) ; q2=resul
    416            case(36) ; sens=resul1
    417            case(37) ; flat=resul1
    418            case(38) ; ts=resul1
    419            case(39) ; ustar=resul1
    420          end select
    421        enddo
    422 
    423          return
    424          END SUBROUTINE read_cas2
    425 !======================================================================
    426       SUBROUTINE read2_cas(nid,nlevel,ntime,                                       &
     313      SUBROUTINE read_SCM(nid,nlevel,ntime,                                       &
    427314     &     ap,bp,zz,pp,zzh,pph,temp,theta,thv,thl,qv,ql,qi,rh,rv,u,v,vitw,omega,ug,vg,&
     315     &     temp_nudg,qv_nudg,u_nudg,v_nudg,                                        &
    428316     &     du,hu,vu,dv,hv,vv,dt,ht,vt,dq,hq,vq,                                    &
    429317     &     dth,hth,vth,dr,hr,vr,dtrad,sens,flat,ts,ps,ustar,tke,uw,vw,q1,q2,       &
     
    434322      implicit none
    435323#include "netcdf.inc"
    436 
    437       integer ntime,nlevel
    438 
    439       real ap(nlevel+1),bp(nlevel+1)
    440       real zz(nlevel,ntime),zzh(nlevel+1)
    441       real pp(nlevel,ntime),pph(nlevel+1)
    442       real temp(nlevel,ntime),qv(nlevel,ntime),ql(nlevel,ntime),qi(nlevel,ntime),rh(nlevel,ntime)
    443       real theta(nlevel,ntime),thv(nlevel,ntime),thl(nlevel,ntime),rv(nlevel,ntime)
    444       real u(nlevel,ntime),v(nlevel,ntime)
    445       real ug(nlevel,ntime),vg(nlevel,ntime)
    446       real vitw(nlevel,ntime),omega(nlevel,ntime)
    447       real du(nlevel,ntime),hu(nlevel,ntime),vu(nlevel,ntime)
    448       real dv(nlevel,ntime),hv(nlevel,ntime),vv(nlevel,ntime)
    449       real dt(nlevel,ntime),ht(nlevel,ntime),vt(nlevel,ntime)
    450       real dtrad(nlevel,ntime)
    451       real dq(nlevel,ntime),hq(nlevel,ntime),vq(nlevel,ntime)
    452       real dth(nlevel,ntime),hth(nlevel,ntime),vth(nlevel,ntime),hthl(nlevel,ntime)
    453       real dr(nlevel,ntime),hr(nlevel,ntime),vr(nlevel,ntime)
    454       real flat(ntime),sens(ntime),ustar(ntime)
    455       real uw(nlevel,ntime),vw(nlevel,ntime),q1(nlevel,ntime),q2(nlevel,ntime)
    456       real ts(ntime),ps(ntime),tke(ntime)
    457       real orog_cas,albedo_cas,emiss_cas,t_skin_cas,q_skin_cas,mom_rough,heat_rough,o3_cas,rugos_cas,clay_cas,sand_cas
    458       real apbp(nlevel+1),resul(nlevel,ntime),resul1(nlevel),resul2(ntime),resul3
    459 
    460 
    461       integer nid, ierr,ierr1,ierr2,rid,i
    462       integer nbvar3d
    463       parameter(nbvar3d=62)
    464       integer var3didin(nbvar3d),missing_var(nbvar3d)
    465       character*12 name_var(1:nbvar3d)
    466       data name_var/'coor_par_a','coor_par_b','height_h','pressure_h',&
    467      &'w','omega','ug','vg','uadv','uadvh','uadvv','vadv','vadvh','vadvv','tadv','tadvh','tadvv',&
    468      &'qadv','qadvh','qadvv','thadv','thadvh','thadvv','thladvh','radv','radvh','radvv','radcool','q1','q2','ustress','vstress', &
    469      'rh',&
    470      &'height_f','pressure_f','temp','theta','thv','thl','qv','ql','qi','rv','u','v',&
    471      &'sfc_sens_flx','sfc_lat_flx','ts','ps','ustar','tke',&
    472      &'orog','albedo','emiss','t_skin','q_skin','mom_rough','heat_rough','o3','rugos','clay','sand'/
    473       do i=1,nbvar3d
    474         missing_var(i)=0.
    475       enddo
    476 
    477 !-----------------------------------------------------------------------
    478        do i=1,nbvar3d
    479          ierr=NF_INQ_VARID(nid,name_var(i),var3didin(i))
    480          if(ierr/=NF_NOERR) then
    481            print *,'Variable manquante dans cas.nc:',i,name_var(i)
    482            ierr=NF_NOERR
    483            missing_var(i)=1
    484          else
    485 !-----------------------------------------------------------------------
    486            if(i.LE.4) then     ! Lecture des coord pression en (nlevelp1,lat,lon)
    487 #ifdef NC_DOUBLE
    488            ierr = NF_GET_VAR_DOUBLE(nid,var3didin(i),apbp)
    489 #else
    490            ierr = NF_GET_VAR_REAL(nid,var3didin(i),apbp)
    491 #endif
    492            print *,'read2_cas(apbp), on a lu ',i,name_var(i)
    493            if(ierr/=NF_NOERR) then
    494               print *,'Pb a la lecture de cas.nc: ',name_var(i)
    495               stop "getvarup"
    496            endif
    497 !-----------------------------------------------------------------------
    498            else if(i.gt.4.and.i.LE.45) then   ! Lecture des variables en (time,nlevel,lat,lon)
    499 #ifdef NC_DOUBLE
    500            ierr = NF_GET_VAR_DOUBLE(nid,var3didin(i),resul)
    501 #else
    502            ierr = NF_GET_VAR_REAL(nid,var3didin(i),resul)
    503 #endif
    504            print *,'read2_cas(resul), on a lu ',i,name_var(i)
    505            if(ierr/=NF_NOERR) then
    506               print *,'Pb a la lecture de cas.nc: ',name_var(i)
    507               stop "getvarup"
    508            endif
    509 !-----------------------------------------------------------------------
    510            else if (i.gt.45.and.i.LE.51) then   ! Lecture des variables en (time,lat,lon)
    511 #ifdef NC_DOUBLE
    512            ierr = NF_GET_VAR_DOUBLE(nid,var3didin(i),resul2)
    513 #else
    514            ierr = NF_GET_VAR_REAL(nid,var3didin(i),resul2)
    515 #endif
    516            print *,'read2_cas(resul2), on a lu ',i,name_var(i)
    517            if(ierr/=NF_NOERR) then
    518               print *,'Pb a la lecture de cas.nc: ',name_var(i)
    519               stop "getvarup"
    520            endif
    521 !-----------------------------------------------------------------------
    522            else     ! Lecture des constantes (lat,lon)
    523 #ifdef NC_DOUBLE
    524            ierr = NF_GET_VAR_DOUBLE(nid,var3didin(i),resul3)
    525 #else
    526            ierr = NF_GET_VAR_REAL(nid,var3didin(i),resul3)
    527 #endif
    528            print *,'read2_cas(resul3), on a lu ',i,name_var(i)
    529            if(ierr/=NF_NOERR) then
    530               print *,'Pb a la lecture de cas.nc: ',name_var(i)
    531               stop "getvarup"
    532            endif
    533            endif
    534          endif
    535 !-----------------------------------------------------------------------
    536          select case(i)
    537            case(1) ; ap=apbp       ! donnees indexees en nlevel+1
    538            case(2) ; bp=apbp
    539            case(3) ; zzh=apbp
    540            case(4) ; pph=apbp
    541            case(5) ; vitw=resul    ! donnees indexees en nlevel,time
    542            case(6) ; omega=resul
    543            case(7) ; ug=resul
    544            case(8) ; vg=resul
    545            case(9) ; du=resul
    546            case(10) ; hu=resul
    547            case(11) ; vu=resul
    548            case(12) ; dv=resul
    549            case(13) ; hv=resul
    550            case(14) ; vv=resul
    551            case(15) ; dt=resul
    552            case(16) ; ht=resul
    553            case(17) ; vt=resul
    554            case(18) ; dq=resul
    555            case(19) ; hq=resul
    556            case(20) ; vq=resul
    557            case(21) ; dth=resul
    558            case(22) ; hth=resul
    559            case(23) ; vth=resul
    560            case(24) ; hthl=resul
    561            case(25) ; dr=resul
    562            case(26) ; hr=resul
    563            case(27) ; vr=resul
    564            case(28) ; dtrad=resul
    565            case(29) ; q1=resul
    566            case(30) ; q2=resul
    567            case(31) ; uw=resul
    568            case(32) ; vw=resul
    569            case(33) ; rh=resul
    570            case(34) ; zz=resul      ! donnees en time,nlevel pour profil initial
    571            case(35) ; pp=resul
    572            case(36) ; temp=resul
    573            case(37) ; theta=resul
    574            case(38) ; thv=resul
    575            case(39) ; thl=resul
    576            case(40) ; qv=resul
    577            case(41) ; ql=resul
    578            case(42) ; qi=resul
    579            case(43) ; rv=resul
    580            case(44) ; u=resul
    581            case(45) ; v=resul
    582            case(46) ; sens=resul2   ! donnees indexees en time
    583            case(47) ; flat=resul2
    584            case(48) ; ts=resul2
    585            case(49) ; ps=resul2
    586            case(50) ; ustar=resul2
    587            case(51) ; tke=resul2
    588            case(52) ; orog_cas=resul3      ! constantes
    589            case(53) ; albedo_cas=resul3
    590            case(54) ; emiss_cas=resul3
    591            case(55) ; t_skin_cas=resul3
    592            case(56) ; q_skin_cas=resul3
    593            case(57) ; mom_rough=resul3
    594            case(58) ; heat_rough=resul3
    595            case(59) ; o3_cas=resul3       
    596            case(60) ; rugos_cas=resul3
    597            case(61) ; clay_cas=resul3
    598            case(62) ; sand_cas=resul3
    599          end select
    600          resul=0.
    601          resul1=0.
    602          resul2=0.
    603          resul3=0.
    604        enddo
    605 !-----------------------------------------------------------------------
    606 
    607         print*,'omega STD ', omega
    608         stop
    609          return
    610          END SUBROUTINE read2_cas
    611 
    612 !======================================================================
    613       SUBROUTINE read_SCM(nid,nlevel,ntime,                                       &
    614      &     ap,bp,zz,pp,zzh,pph,temp,theta,thv,thl,qv,ql,qi,rh,rv,u,v,vitw,omega,ug,vg,&
    615      &     du,hu,vu,dv,hv,vv,dt,ht,vt,dq,hq,vq,                                    &
    616      &     dth,hth,vth,dr,hr,vr,dtrad,sens,flat,ts,ps,ustar,tke,uw,vw,q1,q2,       &
    617      &     orog_cas,albedo_cas,emiss_cas,t_skin_cas,q_skin_cas,mom_rough,          &
    618      &     heat_rough,o3_cas,rugos_cas,clay_cas,sand_cas)
    619 
    620 !program reading forcing of the case study
    621       implicit none
    622 #include "netcdf.inc"
     324#include "compar1d.h"
    623325
    624326      integer ntime,nlevel,k,t
     
    633335      real theta(nlevel,ntime),thv(nlevel,ntime),thl(nlevel,ntime),rv(nlevel,ntime)
    634336      real u(nlevel,ntime),v(nlevel,ntime),tke(nlevel,ntime)
     337      real temp_nudg(nlevel,ntime),qv_nudg(nlevel,ntime),u_nudg(nlevel,ntime),v_nudg(nlevel,ntime)
    635338      real ug(nlevel,ntime),vg(nlevel,ntime)
    636339      real vitw(nlevel,ntime),omega(nlevel,ntime)
     
    651354      integer nid, ierr,ierr1,ierr2,rid,i
    652355      integer nbvar3d
    653       parameter(nbvar3d=70)
     356      parameter(nbvar3d=74)
    654357      integer var3didin(nbvar3d),missing_var(nbvar3d)
    655358      character*13 name_var(1:nbvar3d)
    656       data name_var/'coor_par_a','coor_par_b','height_h','pressure_h',&
    657      &'temp','qv','ql','qi','u','v','tke','pressure',&
    658      &'w','omega','ug','vg','uadv','uadvh','uadvv','vadv','vadvh','vadvv','tadv','tadvh','tadvv',&
    659      &'qvadv','qvadvh','qvadvv','thadv','thadvh','thadvv','thladvh','radv','radvh','radvv','radcool','q1','q2','ustress','vstress', &
    660      'rh',&
     359
     360
     361      data name_var/ &
     362     ! coordonnees pression (n+1 niveaux) #4
     363     & 'coor_par_a','coor_par_b','height_h','pressure_h',& ! #1-#4
     364     ! coordonnees pression (n niveaux) #8
     365     &'temp','qv','ql','qi','u','v','tke','pressure',& ! #5-#12
     366     ! coordonnees pression + temps #42
     367     &'w','omega','ug','vg','uadv','uadvh','uadvv','vadv','vadvh','vadvv','tadv','tadvh','tadvv',& !  #13 - #25
     368     &'qvadv','qvadvh','qvadvv','thadv','thadvh','thadvv','thladvh',                             & ! #26 - #33
     369     & 'radv','radvh','radvv','radcool','q1','q2','ustress','vstress',                           & ! #34 - #41
     370     & 'rh','temp_nudg','qv_nudg','u_nudg','v_nudg',&
    661371     &'height_f','pressure_forc','tempt','theta','thv','thl','qvt','qlt','qit','rv','ut','vt','tket',&
     372     ! coordonnees temps #12
    662373     &'sfc_sens_flx','sfc_lat_flx','ts','ps','ustar',&
    663      &'orog','albedo','emiss','t_skin','q_skin','mom_rough','heat_rough','o3','rugos','clay','sand'/
     374     &'orog','albedo','emiss','t_skin','q_skin','mom_rough','heat_rough',&
     375     ! scalaires #4
     376     &'o3','rugos','clay','sand'/
     377
    664378      do i=1,nbvar3d
    665379        missing_var(i)=0.
     
    675389           missing_var(i)=1
    676390         else
     391
     392!-----------------------------------------------------------------------
     393! Activation de quelques cles en fonction des variables disponibles
     394!-----------------------------------------------------------------------
     395            if ( name_var(i) == 'temp_nudg' .and. nint(nudging_t)==0) stop 'Nudging inconsistency temp'
     396            if ( name_var(i) == 'qv_nudg' .and. nint(nudging_qv)==0) stop 'Nudging inconsistency qv'
     397            if ( name_var(i) == 'u_nudg' .and. nint(nudging_u)==0) stop 'Nudging inconsistency u'
     398            if ( name_var(i) == 'v_nudg' .and. nint(nudging_u)==0) stop 'Nudging inconsistency v'
     399
    677400!-----------------------------------------------------------------------
    678401           if(i.LE.4) then     ! Lecture des coord pression en (nlevelp1,lat,lon)
     
    712435              stop "getvarup"
    713436           endif
     437
    714438         print*,'Lecture de la variable #i ',i,name_var(i),minval(resul),maxval(resul)
    715439!-----------------------------------------------------------------------
     
    784508           case(40) ; vw=resul
    785509           case(41) ; rh=resul
    786            case(42) ; zz=resul      ! donnees en time,nlevel pour profil initial
    787            case(43) ; pp=resul
    788            case(44) ; temp=resul
    789            case(45) ; theta=resul
    790            case(46) ; thv=resul
    791            case(47) ; thl=resul
    792            case(48) ; qv=resul
    793            case(49) ; ql=resul
    794            case(50) ; qi=resul
    795            case(51) ; rv=resul
    796            case(52) ; u=resul
    797            case(53) ; v=resul
    798            case(54) ; tke=resul
    799            case(55) ; sens=resul2   ! donnees indexees en time
    800            case(56) ; flat=resul2
    801            case(57) ; ts=resul2
    802            case(58) ; ps=resul2
    803            case(59) ; ustar=resul2
    804            case(60) ; orog_cas=resul3      ! constantes
    805            case(61) ; albedo_cas=resul3
    806            case(62) ; emiss_cas=resul3
    807            case(63) ; t_skin_cas=resul3
    808            case(64) ; q_skin_cas=resul3
    809            case(65) ; mom_rough=resul3
    810            case(66) ; heat_rough=resul3
    811            case(67) ; o3_cas=resul3       
    812            case(68) ; rugos_cas=resul3
    813            case(69) ; clay_cas=resul3
    814            case(70) ; sand_cas=resul3
     510           case(42) ; temp_nudg=resul
     511           case(43) ; qv_nudg=resul
     512           case(44) ; u_nudg=resul
     513           case(45) ; v_nudg=resul
     514           case(46) ; zz=resul      ! donnees en time,nlevel pour profil initial
     515           case(47) ; pp=resul
     516           case(48) ; temp=resul
     517           case(49) ; theta=resul
     518           case(50) ; thv=resul
     519           case(51) ; thl=resul
     520           case(52) ; qv=resul
     521           case(53) ; ql=resul
     522           case(54) ; qi=resul
     523           case(55) ; rv=resul
     524           case(56) ; u=resul
     525           case(57) ; v=resul
     526           case(58) ; tke=resul
     527           case(59) ; sens=resul2   ! donnees indexees en time
     528           case(60) ; flat=resul2
     529           case(61) ; ts=resul2
     530           case(62) ; ps=resul2
     531           case(63) ; ustar=resul2
     532           case(64) ; orog_cas=resul3      ! constantes
     533           case(65) ; albedo_cas=resul3
     534           case(66) ; emiss_cas=resul3
     535           case(67) ; t_skin_cas=resul3
     536           case(68) ; q_skin_cas=resul3
     537           case(69) ; mom_rough=resul3
     538           case(70) ; heat_rough=resul3
     539           case(71) ; o3_cas=resul3       
     540           case(72) ; rugos_cas=resul3
     541           case(73) ; clay_cas=resul3
     542           case(74) ; sand_cas=resul3
    815543         end select
    816544         resul=0.
     
    850578     &         ,ts_cas,ps_cas,plev_cas,t_cas,theta_cas,thv_cas,thl_cas            &
    851579     &         ,qv_cas,ql_cas,qi_cas,u_cas,v_cas                                  &
    852      &         ,ug_cas,vg_cas,vitw_cas,omega_cas,du_cas,hu_cas,vu_cas             &
     580     &         ,ug_cas,vg_cas,temp_nudg_cas,qv_nudg_cas,u_nudg_cas,v_nudg_cas     &
     581     &         ,vitw_cas,omega_cas,du_cas,hu_cas,vu_cas             &
    853582     &         ,dv_cas,hv_cas,vv_cas,dt_cas,ht_cas,vt_cas,dtrad_cas               &
    854583     &         ,dq_cas,hq_cas,vq_cas,dth_cas,hth_cas,vth_cas                      &
     
    859588     &         ,thv_prof_cas,thl_prof_cas,qv_prof_cas,ql_prof_cas,qi_prof_cas     &
    860589     &         ,u_prof_cas,v_prof_cas,ug_prof_cas,vg_prof_cas                     &
     590     &         ,temp_nudg_prof_cas,qv_nudg_prof_cas,u_nudg_prof_cas,v_nudg_prof_cas     &
    861591     &         ,vitw_prof_cas,omega_prof_cas,du_prof_cas,hu_prof_cas,vu_prof_cas  &
    862592     &         ,dv_prof_cas,hv_prof_cas,vv_prof_cas,dt_prof_cas                   &
     
    891621        real u_cas(nlev_cas,nt_cas),v_cas(nlev_cas,nt_cas)
    892622        real ug_cas(nlev_cas,nt_cas),vg_cas(nlev_cas,nt_cas)
     623        real temp_nudg_cas(nlev_cas,nt_cas),qv_nudg_cas(nlev_cas,nt_cas)
     624        real u_nudg_cas(nlev_cas,nt_cas),v_nudg_cas(nlev_cas,nt_cas)
     625
    893626        real vitw_cas(nlev_cas,nt_cas),omega_cas(nlev_cas,nt_cas)
    894627        real du_cas(nlev_cas,nt_cas),hu_cas(nlev_cas,nt_cas),vu_cas(nlev_cas,nt_cas)
     
    908641        real u_prof_cas(nlev_cas),v_prof_cas(nlev_cas)
    909642        real ug_prof_cas(nlev_cas),vg_prof_cas(nlev_cas)
     643        real temp_nudg_prof_cas(nlev_cas),qv_nudg_prof_cas(nlev_cas)
     644        real u_nudg_prof_cas(nlev_cas),v_nudg_prof_cas(nlev_cas)
     645
    910646        real vitw_prof_cas(nlev_cas),omega_prof_cas(nlev_cas)
    911647        real du_prof_cas(nlev_cas),hu_prof_cas(nlev_cas),vu_prof_cas(nlev_cas)
     
    1013749        t_prof_cas(k) = t_cas(k,it_cas2)                                 &       
    1014750     &          -frac*(t_cas(k,it_cas2)-t_cas(k,it_cas1))
    1015         print *,'k,frac,plev_cas1,plev_cas2=',k,frac,plev_cas(k,it_cas1),plev_cas(k,it_cas2)
     751        !print *,'k,frac,plev_cas1,plev_cas2=',k,frac,plev_cas(k,it_cas1),plev_cas(k,it_cas2)
    1016752        theta_prof_cas(k) = theta_cas(k,it_cas2)                         &                     
    1017753     &          -frac*(theta_cas(k,it_cas2)-theta_cas(k,it_cas1))
     
    1034770        vg_prof_cas(k) = vg_cas(k,it_cas2)                               &
    1035771     &          -frac*(vg_cas(k,it_cas2)-vg_cas(k,it_cas1))
     772        temp_nudg_prof_cas(k) = temp_nudg_cas(k,it_cas2)                    &
     773     &          -frac*(temp_nudg_cas(k,it_cas2)-temp_nudg_cas(k,it_cas1))
     774        qv_nudg_prof_cas(k) = qv_nudg_cas(k,it_cas2)                        &
     775     &          -frac*(qv_nudg_cas(k,it_cas2)-qv_nudg_cas(k,it_cas1))
     776        u_nudg_prof_cas(k) = u_nudg_cas(k,it_cas2)                          &
     777     &          -frac*(u_nudg_cas(k,it_cas2)-u_nudg_cas(k,it_cas1))
     778        v_nudg_prof_cas(k) = v_nudg_cas(k,it_cas2)                          &
     779     &          -frac*(v_nudg_cas(k,it_cas2)-v_nudg_cas(k,it_cas1))
    1036780        vitw_prof_cas(k) = vitw_cas(k,it_cas2)                           &
    1037781     &          -frac*(vitw_cas(k,it_cas2)-vitw_cas(k,it_cas1))
     
    1084828
    1085829!**********************************************************************************************
     830!=====================================================================
     831       SUBROUTINE interp2_case_vertical_std(play,nlev_cas,plev_prof_cas                                &
     832     &         ,t_prof_cas,th_prof_cas,thv_prof_cas,thl_prof_cas                                       &
     833     &         ,qv_prof_cas,ql_prof_cas,qi_prof_cas,u_prof_cas,v_prof_cas                              &
     834     &         ,ug_prof_cas,vg_prof_cas                                                                &
     835     &         ,temp_nudg_prof_cas,qv_nudg_prof_cas,u_nudg_prof_cas,v_nudg_prof_cas                    &
     836     &         ,vitw_prof_cas,omega_prof_cas                                                           &
     837     &         ,du_prof_cas,hu_prof_cas,vu_prof_cas,dv_prof_cas,hv_prof_cas,vv_prof_cas                &
     838     &         ,dt_prof_cas,ht_prof_cas,vt_prof_cas,dtrad_prof_cas,dq_prof_cas,hq_prof_cas,vq_prof_cas &
     839     &         ,dth_prof_cas,hth_prof_cas,vth_prof_cas                                                 &
     840!
     841     &         ,t_mod_cas,theta_mod_cas,thv_mod_cas,thl_mod_cas                                        &
     842     &         ,qv_mod_cas,ql_mod_cas,qi_mod_cas,u_mod_cas,v_mod_cas                                   &
     843     &         ,ug_mod_cas,vg_mod_cas                                                                  &
     844     &         ,temp_nudg_mod_cas,qv_nudg_mod_cas,u_nudg_mod_cas,v_nudg_mod_cas                        &
     845     &         ,w_mod_cas,omega_mod_cas                                                                &
     846     &         ,du_mod_cas,hu_mod_cas,vu_mod_cas,dv_mod_cas,hv_mod_cas,vv_mod_cas                      &
     847     &         ,dt_mod_cas,ht_mod_cas,vt_mod_cas,dtrad_mod_cas,dq_mod_cas,hq_mod_cas,vq_mod_cas        &
     848     &         ,dth_mod_cas,hth_mod_cas,vth_mod_cas,mxcalc)
     849 
     850       implicit none
     851 
     852#include "YOMCST.h"
     853#include "dimensions.h"
     854
     855!-------------------------------------------------------------------------
     856! Vertical interpolation of generic case forcing data onto mod_casel levels
     857!-------------------------------------------------------------------------
     858 
     859       integer nlevmax
     860       parameter (nlevmax=41)
     861       integer nlev_cas,mxcalc
     862!       real play(llm), plev_prof(nlevmax)
     863!       real t_prof(nlevmax),q_prof(nlevmax)
     864!       real u_prof(nlevmax),v_prof(nlevmax), w_prof(nlevmax)
     865!       real ht_prof(nlevmax),vt_prof(nlevmax)
     866!       real hq_prof(nlevmax),vq_prof(nlevmax)
     867 
     868       real play(llm), plev_prof_cas(nlev_cas)
     869       real t_prof_cas(nlev_cas),th_prof_cas(nlev_cas),thv_prof_cas(nlev_cas),thl_prof_cas(nlev_cas)
     870       real qv_prof_cas(nlev_cas),ql_prof_cas(nlev_cas),qi_prof_cas(nlev_cas)
     871       real u_prof_cas(nlev_cas),v_prof_cas(nlev_cas)
     872       real ug_prof_cas(nlev_cas),vg_prof_cas(nlev_cas), vitw_prof_cas(nlev_cas),omega_prof_cas(nlev_cas)
     873       real temp_nudg_prof_cas(nlev_cas),qv_nudg_prof_cas(nlev_cas)
     874       real u_nudg_prof_cas(nlev_cas),v_nudg_prof_cas(nlev_cas)
     875
     876       real du_prof_cas(nlev_cas),hu_prof_cas(nlev_cas),vu_prof_cas(nlev_cas)
     877       real dv_prof_cas(nlev_cas),hv_prof_cas(nlev_cas),vv_prof_cas(nlev_cas)
     878       real dt_prof_cas(nlev_cas),ht_prof_cas(nlev_cas),vt_prof_cas(nlev_cas),dtrad_prof_cas(nlev_cas)
     879       real dth_prof_cas(nlev_cas),hth_prof_cas(nlev_cas),vth_prof_cas(nlev_cas)
     880       real dq_prof_cas(nlev_cas),hq_prof_cas(nlev_cas),vq_prof_cas(nlev_cas)
     881 
     882       real t_mod_cas(llm),theta_mod_cas(llm),thv_mod_cas(llm),thl_mod_cas(llm)
     883       real qv_mod_cas(llm),ql_mod_cas(llm),qi_mod_cas(llm)
     884       real u_mod_cas(llm),v_mod_cas(llm)
     885       real ug_mod_cas(llm),vg_mod_cas(llm), w_mod_cas(llm),omega_mod_cas(llm)
     886       real temp_nudg_mod_cas(llm),qv_nudg_mod_cas(llm)
     887       real u_nudg_mod_cas(llm),v_nudg_mod_cas(llm)
     888       real du_mod_cas(llm),hu_mod_cas(llm),vu_mod_cas(llm)
     889       real dv_mod_cas(llm),hv_mod_cas(llm),vv_mod_cas(llm)
     890       real dt_mod_cas(llm),ht_mod_cas(llm),vt_mod_cas(llm),dtrad_mod_cas(llm)
     891       real dth_mod_cas(llm),hth_mod_cas(llm),vth_mod_cas(llm)
     892       real dq_mod_cas(llm),hq_mod_cas(llm),vq_mod_cas(llm)
     893 
     894       integer l,k,k1,k2
     895       real frac,frac1,frac2,fact
     896 
     897!       do l = 1, llm
     898!       print *,'debut interp2, play=',l,play(l)
     899!       enddo
     900!      do l = 1, nlev_cas
     901!      print *,'debut interp2, plev_prof_cas=',l,play(l),plev_prof_cas(l)
     902!      enddo
     903
     904       do l = 1, llm
     905
     906        if (play(l).ge.plev_prof_cas(nlev_cas)) then
     907 
     908        mxcalc=l
     909!        print *,'debut interp2, mxcalc=',mxcalc
     910         k1=0
     911         k2=0
     912
     913         if (play(l).le.plev_prof_cas(1)) then
     914
     915         do k = 1, nlev_cas-1
     916          if (play(l).le.plev_prof_cas(k).and. play(l).gt.plev_prof_cas(k+1)) then
     917            k1=k
     918            k2=k+1
     919          endif
     920         enddo
     921
     922         if (k1.eq.0 .or. k2.eq.0) then
     923          write(*,*) 'PB! k1, k2 = ',k1,k2
     924          write(*,*) 'l,play(l) = ',l,play(l)/100
     925         do k = 1, nlev_cas-1
     926          write(*,*) 'k,plev_prof_cas(k) = ',k,plev_prof_cas(k)/100
     927         enddo
     928         endif
     929
     930         frac = (plev_prof_cas(k2)-play(l))/(plev_prof_cas(k2)-plev_prof_cas(k1))
     931         t_mod_cas(l)= t_prof_cas(k2) - frac*(t_prof_cas(k2)-t_prof_cas(k1))
     932         theta_mod_cas(l)= th_prof_cas(k2) - frac*(th_prof_cas(k2)-th_prof_cas(k1))
     933         if(theta_mod_cas(l).NE.0) t_mod_cas(l)= theta_mod_cas(l)*(play(l)/100000.)**(RD/RCPD)
     934         thv_mod_cas(l)= thv_prof_cas(k2) - frac*(thv_prof_cas(k2)-thv_prof_cas(k1))
     935         thl_mod_cas(l)= thl_prof_cas(k2) - frac*(thl_prof_cas(k2)-thl_prof_cas(k1))
     936         qv_mod_cas(l)= qv_prof_cas(k2) - frac*(qv_prof_cas(k2)-qv_prof_cas(k1))
     937         ql_mod_cas(l)= ql_prof_cas(k2) - frac*(ql_prof_cas(k2)-ql_prof_cas(k1))
     938         qi_mod_cas(l)= qi_prof_cas(k2) - frac*(qi_prof_cas(k2)-qi_prof_cas(k1))
     939         u_mod_cas(l)= u_prof_cas(k2) - frac*(u_prof_cas(k2)-u_prof_cas(k1))
     940         v_mod_cas(l)= v_prof_cas(k2) - frac*(v_prof_cas(k2)-v_prof_cas(k1))
     941         ug_mod_cas(l)= ug_prof_cas(k2) - frac*(ug_prof_cas(k2)-ug_prof_cas(k1))
     942         vg_mod_cas(l)= vg_prof_cas(k2) - frac*(vg_prof_cas(k2)-vg_prof_cas(k1))
     943         temp_nudg_mod_cas(l)= temp_nudg_prof_cas(k2) - frac*(temp_nudg_prof_cas(k2)-temp_nudg_prof_cas(k1))
     944         qv_nudg_mod_cas(l)= qv_nudg_prof_cas(k2) - frac*(qv_nudg_prof_cas(k2)-qv_nudg_prof_cas(k1))
     945         u_nudg_mod_cas(l)= u_nudg_prof_cas(k2) - frac*(u_nudg_prof_cas(k2)-u_nudg_prof_cas(k1))
     946         v_nudg_mod_cas(l)= v_nudg_prof_cas(k2) - frac*(v_nudg_prof_cas(k2)-v_nudg_prof_cas(k1))
     947         w_mod_cas(l)= vitw_prof_cas(k2) - frac*(vitw_prof_cas(k2)-vitw_prof_cas(k1))
     948         omega_mod_cas(l)= omega_prof_cas(k2) - frac*(omega_prof_cas(k2)-omega_prof_cas(k1))
     949         du_mod_cas(l)= du_prof_cas(k2) - frac*(du_prof_cas(k2)-du_prof_cas(k1))
     950         hu_mod_cas(l)= hu_prof_cas(k2) - frac*(hu_prof_cas(k2)-hu_prof_cas(k1))
     951         vu_mod_cas(l)= vu_prof_cas(k2) - frac*(vu_prof_cas(k2)-vu_prof_cas(k1))
     952         dv_mod_cas(l)= dv_prof_cas(k2) - frac*(dv_prof_cas(k2)-dv_prof_cas(k1))
     953         hv_mod_cas(l)= hv_prof_cas(k2) - frac*(hv_prof_cas(k2)-hv_prof_cas(k1))
     954         vv_mod_cas(l)= vv_prof_cas(k2) - frac*(vv_prof_cas(k2)-vv_prof_cas(k1))
     955         dt_mod_cas(l)= dt_prof_cas(k2) - frac*(dt_prof_cas(k2)-dt_prof_cas(k1))
     956         ht_mod_cas(l)= ht_prof_cas(k2) - frac*(ht_prof_cas(k2)-ht_prof_cas(k1))
     957         vt_mod_cas(l)= vt_prof_cas(k2) - frac*(vt_prof_cas(k2)-vt_prof_cas(k1))
     958         dth_mod_cas(l)= dth_prof_cas(k2) - frac*(dth_prof_cas(k2)-dth_prof_cas(k1))
     959         hth_mod_cas(l)= hth_prof_cas(k2) - frac*(hth_prof_cas(k2)-hth_prof_cas(k1))
     960         vth_mod_cas(l)= vth_prof_cas(k2) - frac*(vth_prof_cas(k2)-vth_prof_cas(k1))
     961         dq_mod_cas(l)= dq_prof_cas(k2) - frac*(dq_prof_cas(k2)-dq_prof_cas(k1))
     962         hq_mod_cas(l)= hq_prof_cas(k2) - frac*(hq_prof_cas(k2)-hq_prof_cas(k1))
     963         vq_mod_cas(l)= vq_prof_cas(k2) - frac*(vq_prof_cas(k2)-vq_prof_cas(k1))
     964         dtrad_mod_cas(l)= dtrad_prof_cas(k2) - frac*(dtrad_prof_cas(k2)-dtrad_prof_cas(k1))
     965     
     966         else !play>plev_prof_cas(1)
     967
     968         k1=1
     969         k2=2
     970         print *,'interp2_vert, k1,k2=',plev_prof_cas(k1),plev_prof_cas(k2)
     971         frac1 = (play(l)-plev_prof_cas(k2))/(plev_prof_cas(k1)-plev_prof_cas(k2))
     972         frac2 = (play(l)-plev_prof_cas(k1))/(plev_prof_cas(k1)-plev_prof_cas(k2))
     973         t_mod_cas(l)= frac1*t_prof_cas(k1) - frac2*t_prof_cas(k2)
     974         theta_mod_cas(l)= frac1*th_prof_cas(k1) - frac2*th_prof_cas(k2)
     975         if(theta_mod_cas(l).NE.0) t_mod_cas(l)= theta_mod_cas(l)*(play(l)/100000.)**(RD/RCPD)
     976         thv_mod_cas(l)= frac1*thv_prof_cas(k1) - frac2*thv_prof_cas(k2)
     977         thl_mod_cas(l)= frac1*thl_prof_cas(k1) - frac2*thl_prof_cas(k2)
     978         qv_mod_cas(l)= frac1*qv_prof_cas(k1) - frac2*qv_prof_cas(k2)
     979         ql_mod_cas(l)= frac1*ql_prof_cas(k1) - frac2*ql_prof_cas(k2)
     980         qi_mod_cas(l)= frac1*qi_prof_cas(k1) - frac2*qi_prof_cas(k2)
     981         u_mod_cas(l)= frac1*u_prof_cas(k1) - frac2*u_prof_cas(k2)
     982         v_mod_cas(l)= frac1*v_prof_cas(k1) - frac2*v_prof_cas(k2)
     983         ug_mod_cas(l)= frac1*ug_prof_cas(k1) - frac2*ug_prof_cas(k2)
     984         vg_mod_cas(l)= frac1*vg_prof_cas(k1) - frac2*vg_prof_cas(k2)
     985         temp_nudg_mod_cas(l)= frac1*temp_nudg_prof_cas(k1) - frac2*temp_nudg_prof_cas(k2)
     986         qv_nudg_mod_cas(l)= frac1*qv_nudg_prof_cas(k1) - frac2*qv_nudg_prof_cas(k2)
     987         u_nudg_mod_cas(l)= frac1*u_nudg_prof_cas(k1) - frac2*u_nudg_prof_cas(k2)
     988         v_nudg_mod_cas(l)= frac1*v_nudg_prof_cas(k1) - frac2*v_nudg_prof_cas(k2)
     989         w_mod_cas(l)= frac1*vitw_prof_cas(k1) - frac2*vitw_prof_cas(k2)
     990         omega_mod_cas(l)= frac1*omega_prof_cas(k1) - frac2*omega_prof_cas(k2)
     991         du_mod_cas(l)= frac1*du_prof_cas(k1) - frac2*du_prof_cas(k2)
     992         hu_mod_cas(l)= frac1*hu_prof_cas(k1) - frac2*hu_prof_cas(k2)
     993         vu_mod_cas(l)= frac1*vu_prof_cas(k1) - frac2*vu_prof_cas(k2)
     994         dv_mod_cas(l)= frac1*dv_prof_cas(k1) - frac2*dv_prof_cas(k2)
     995         hv_mod_cas(l)= frac1*hv_prof_cas(k1) - frac2*hv_prof_cas(k2)
     996         vv_mod_cas(l)= frac1*vv_prof_cas(k1) - frac2*vv_prof_cas(k2)
     997         dt_mod_cas(l)= frac1*dt_prof_cas(k1) - frac2*dt_prof_cas(k2)
     998         ht_mod_cas(l)= frac1*ht_prof_cas(k1) - frac2*ht_prof_cas(k2)
     999         vt_mod_cas(l)= frac1*vt_prof_cas(k1) - frac2*vt_prof_cas(k2)
     1000         dth_mod_cas(l)= frac1*dth_prof_cas(k1) - frac2*dth_prof_cas(k2)
     1001         hth_mod_cas(l)= frac1*hth_prof_cas(k1) - frac2*hth_prof_cas(k2)
     1002         vth_mod_cas(l)= frac1*vth_prof_cas(k1) - frac2*vth_prof_cas(k2)
     1003         dq_mod_cas(l)= frac1*dq_prof_cas(k1) - frac2*dq_prof_cas(k2)
     1004         hq_mod_cas(l)= frac1*hq_prof_cas(k1) - frac2*hq_prof_cas(k2)
     1005         vq_mod_cas(l)= frac1*vq_prof_cas(k1) - frac2*vq_prof_cas(k2)
     1006         dtrad_mod_cas(l)= frac1*dtrad_prof_cas(k1) - frac2*dtrad_prof_cas(k2)
     1007
     1008         endif ! play.le.plev_prof_cas(1)
     1009
     1010        else ! above max altitude of forcing file
     1011 
     1012!jyg
     1013         fact=20.*(plev_prof_cas(nlev_cas)-play(l))/plev_prof_cas(nlev_cas) !jyg
     1014         fact = max(fact,0.)                                           !jyg
     1015         fact = exp(-fact)                                             !jyg
     1016         t_mod_cas(l)= t_prof_cas(nlev_cas)                            !jyg
     1017         theta_mod_cas(l)= th_prof_cas(nlev_cas)                       !jyg
     1018         thv_mod_cas(l)= thv_prof_cas(nlev_cas)                        !jyg
     1019         thl_mod_cas(l)= thl_prof_cas(nlev_cas)                        !jyg
     1020         qv_mod_cas(l)= qv_prof_cas(nlev_cas)*fact                     !jyg
     1021         ql_mod_cas(l)= ql_prof_cas(nlev_cas)*fact                     !jyg
     1022         qi_mod_cas(l)= qi_prof_cas(nlev_cas)*fact                     !jyg
     1023         u_mod_cas(l)= u_prof_cas(nlev_cas)*fact                       !jyg
     1024         v_mod_cas(l)= v_prof_cas(nlev_cas)*fact                       !jyg
     1025         ug_mod_cas(l)= ug_prof_cas(nlev_cas)                          !jyg
     1026         vg_mod_cas(l)= vg_prof_cas(nlev_cas)                          !jyg
     1027         temp_nudg_mod_cas(l)= temp_nudg_prof_cas(nlev_cas)                          !jyg
     1028         qv_nudg_mod_cas(l)= qv_nudg_prof_cas(nlev_cas)                          !jyg
     1029         u_nudg_mod_cas(l)= u_nudg_prof_cas(nlev_cas)                          !jyg
     1030         v_nudg_mod_cas(l)= v_nudg_prof_cas(nlev_cas)                          !jyg
     1031         thv_mod_cas(l)= thv_prof_cas(nlev_cas)                        !jyg
     1032         w_mod_cas(l)= 0.0                                             !jyg
     1033         omega_mod_cas(l)= 0.0                                         !jyg
     1034         du_mod_cas(l)= du_prof_cas(nlev_cas)*fact
     1035         hu_mod_cas(l)= hu_prof_cas(nlev_cas)*fact                     !jyg
     1036         vu_mod_cas(l)= vu_prof_cas(nlev_cas)*fact                     !jyg
     1037         dv_mod_cas(l)= dv_prof_cas(nlev_cas)*fact
     1038         hv_mod_cas(l)= hv_prof_cas(nlev_cas)*fact                     !jyg
     1039         vv_mod_cas(l)= vv_prof_cas(nlev_cas)*fact                     !jyg
     1040         dt_mod_cas(l)= dt_prof_cas(nlev_cas)
     1041         ht_mod_cas(l)= ht_prof_cas(nlev_cas)                          !jyg
     1042         vt_mod_cas(l)= vt_prof_cas(nlev_cas)                          !jyg
     1043         dth_mod_cas(l)= dth_prof_cas(nlev_cas)
     1044         hth_mod_cas(l)= hth_prof_cas(nlev_cas)                        !jyg
     1045         vth_mod_cas(l)= vth_prof_cas(nlev_cas)                        !jyg
     1046         dq_mod_cas(l)= dq_prof_cas(nlev_cas)*fact
     1047         hq_mod_cas(l)= hq_prof_cas(nlev_cas)*fact                     !jyg
     1048         vq_mod_cas(l)= vq_prof_cas(nlev_cas)*fact                     !jyg
     1049         dtrad_mod_cas(l)= dtrad_prof_cas(nlev_cas)*fact               !jyg
     1050 
     1051        endif ! play
     1052 
     1053       enddo ! l
     1054
     1055          return
     1056          end
     1057!*****************************************************************************
     1058
     1059
     1060
     1061
    10861062
    10871063END MODULE mod_1D_cases_read_std
  • LMDZ6/trunk/libf/phylmd/dyn1d/old_1D_interp_cases.h

    r3541 r3593  
    957957        enddo
    958958      endif
    959       if (nudging_q.gt.0.) then
     959      if (nudging_qv.gt.0.) then
    960960        do l=1,llm
    961961           q(l,1)=q(l,1)+timestep*(q_mod_cas(l)-q(l,1))/(nudge_q)
  • LMDZ6/trunk/libf/phylmd/dyn1d/old_lmdz1d.F90

    r3575 r3593  
    162162!=====================================================================
    163163!
    164 #include "1D_decl_cases.h"
     164#include "old_1D_decl_cases.h"
    165165!
    166166!---------------------------------------------------------------------
  • LMDZ6/trunk/libf/phylmd/dyn1d/scm.F90

    r3592 r3593  
    818818       endif
    819819!
    820 !---------------------------------------------------------------------
    821 !    Initialize target profile for RHT nudging if needed
    822 !---------------------------------------------------------------------
    823       if (nudge(inudge_RHT)) then
    824         call nudge_RHT_init(plev,play,temp,q(:,1),t_targ,rh_targ)
    825       endif
    826       if (nudge(inudge_UV)) then
    827         call nudge_UV_init(plev,play,u,v,u_targ,v_targ)
    828       endif
    829 !
    830820!=====================================================================
    831821       CALL iophys_ini
     
    863853   d_q_adv(:,1)=d_q_adv(:,1)+dq_dyn(:,1)
    864854
     855   print*,'OMEGA ',omega_mod_cas(10),omega(10)
    865856!---------------------------------------------------------------------
    866857!  Geopotential :
     
    10171008!!!!!!!!!!!!!!!!!!!!!!!!
    10181009      d_t_nudge(:) = 0.
    1019       d_q_nudge(:,:) = 0.
    10201010      d_u_nudge(:) = 0.
    10211011      d_v_nudge(:) = 0.
    1022       if (nudge(inudge_RHT)) then
    1023         call nudge_RHT(timestep,plev,play,t_targ,rh_targ,temp,q(:,1),     &
    1024     &                  d_t_nudge,d_q_nudge(:,1))
    1025       endif
    1026       if (nudge(inudge_UV)) then
    1027         call nudge_UV(timestep,plev,play,u_targ,v_targ,u,v,     &
    1028     &                  d_u_nudge,d_v_nudge)
    1029       endif
     1012      d_q_nudge(:,:) = 0.
     1013      print*,'GUIDAGE ABSURDE POUR SANDU '
     1014      nudging_t=0.
     1015      nudging_qv=0.
     1016      IF ( nint(nudging_t) /= 0 ) d_t_nudge(:)=(temp_nudg_mod_cas(:)-temp(:))/nudging_t
     1017      IF ( nint(nudging_qv) /= 0 ) d_q_nudge(:,1)  =(qv_nudg_mod_cas(:)  -q(:,1) )/nudging_qv
     1018      IF ( nint(nudging_u*nudging_v) /= 0 ) THEN
     1019              d_u_nudge(:)=(u_nudg_mod_cas(:)-u(:))/nudging_u
     1020              d_v_nudge(:)=(v_nudg_mod_cas(:)-v(:))/nudging_u
     1021      ENDIF
     1022      !CALL iophys_ecrit('qv',klev,'qv','g/kg',1000*q(:,1))
     1023      !CALL iophys_ecrit('qvnud',klev,'qvnud','g/kg',1000*u_nudg_mod_cas)
     1024      !CALL iophys_ecrit('u',klev,'u','m/s',u)
     1025      !CALL iophys_ecrit('unud',klev,'unud','m/s',u_nudg_mod_cas)
     1026      !CALL iophys_ecrit('v',klev,'v','m/s',v)
     1027      !CALL iophys_ecrit('vnud',klev,'vnud','m/s',v_nudg_mod_cas)
     1028
    10301029!
    10311030!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Note: See TracChangeset for help on using the changeset viewer.