Ignore:
Timestamp:
Oct 15, 2014, 2:03:57 AM (10 years ago)
Author:
fhourdin
Message:

Introduction du cas Dice couplé atmosphere/surface
+ nouveau paramètre de contrôle f_ri_cd_min, seuil minimum
sur la fonction f(Ri) en facteur du coefficient de traîné neutre.
Par défaut : f_ri_cd_min=0.1 (comme avant)

Introduction of the coupled atmosphere/surface dice case.
+ new parameter f_ri_cd_min, minimum threshold on the f(Ri) fonction
that multiply the neutral drag coefficient.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/1D_interp_cases.h

    r2019 r2126  
    7878
    7979      endif ! forcing_toga
     80!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     81! Interpolation DICE forcing
     82!---------------------------------------------------------------------
     83      if (forcing_dice) then
     84
     85       if (prt_level.ge.1) then
     86        print*,'#### ITAP,day,day1,(day-day1)*86400,(day-day1)*86400/dt_dice=',&
     87     &    day,day1,(day-day1)*86400.,(day-day1)*86400/dt_dice
     88       endif
     89
     90! time interpolation:
     91      CALL interp_dice_time(daytime,day1,annee_ref                    &
     92     &             ,year_ini_dice,day_ju_ini_dice,nt_dice,dt_dice     &
     93     &             ,nlev_dice,shf_dice,lhf_dice,lwup_dice,swup_dice   &
     94     &             ,tg_dice,ustar_dice,psurf_dice,ug_dice,vg_dice     &
     95     &             ,ht_dice,hq_dice,hu_dice,hv_dice,w_dice,omega_dice &
     96     &             ,shf_prof,lhf_prof,lwup_prof,swup_prof,tg_prof     &
     97     &             ,ustar_prof,psurf_prof,ug_profd,vg_profd           &
     98     &             ,ht_profd,hq_profd,hu_profd,hv_profd,w_profd       &
     99     &             ,omega_profd)
     100!     do l = 1, llm
     101!     print *,'llm l omega_profd',llm,l,omega_profd(l)
     102!     enddo
     103
     104        if (type_ts_forcing.eq.1) ts_cur = tg_prof ! SST used in read_tsurf1d
     105
     106! vertical interpolation:
     107      CALL interp_dice_vertical(play,nlev_dice,nt_dice,plev_dice        &
     108     &         ,th_dice,qv_dice,u_dice,v_dice,o3_dice                   &
     109     &         ,ht_profd,hq_profd,hu_profd,hv_profd,w_profd,omega_profd &
     110     &         ,th_mod,qv_mod,u_mod,v_mod,o3_mod                        &
     111     &         ,ht_mod,hq_mod,hu_mod,hv_mod,w_mod,omega_mod,mxcalc)
     112!     do l = 1, llm
     113!      print *,'llm l omega_mod',llm,l,omega_mod(l)
     114!     enddo
     115
     116! Les forcages DICE sont donnes /jour et non /seconde !
     117      ht_mod(:)=ht_mod(:)/86400.
     118      hq_mod(:)=hq_mod(:)/86400.
     119      hu_mod(:)=hu_mod(:)/86400.
     120      hv_mod(:)=hv_mod(:)/86400.
     121
     122!calcul de l'advection verticale a partir du omega (repris cas TWPICE, MPL 05082013)
     123!Calcul des gradients verticaux
     124!initialisation
     125      d_t_z(:)=0.
     126      d_q_z(:)=0.
     127      d_u_z(:)=0.
     128      d_v_z(:)=0.
     129      DO l=2,llm-1
     130       d_t_z(l)=(temp(l+1)-temp(l-1))/(play(l+1)-play(l-1))
     131       d_q_z(l)=(q(l+1,1)-q(l-1,1)) /(play(l+1)-play(l-1))
     132       d_u_z(l)=(u(l+1)-u(l-1))/(play(l+1)-play(l-1))
     133       d_v_z(l)=(v(l+1)-v(l-1))/(play(l+1)-play(l-1))
     134      ENDDO
     135      d_t_z(1)=d_t_z(2)
     136      d_q_z(1)=d_q_z(2)
     137!     d_u_z(1)=u(2)/(play(2)-psurf)/5.
     138!     d_v_z(1)=v(2)/(play(2)-psurf)/5.
     139      d_u_z(1)=0.
     140      d_v_z(1)=0.
     141      d_t_z(llm)=d_t_z(llm-1)
     142      d_q_z(llm)=d_q_z(llm-1)
     143      d_u_z(llm)=d_u_z(llm-1)
     144      d_v_z(llm)=d_v_z(llm-1)
     145
     146!Calcul de l advection verticale:
     147! utiliser omega (Pa/s) et non w (m/s) !! MP 20131108
     148      d_t_dyn_z(:)=omega_mod(:)*d_t_z(:)
     149      d_q_dyn_z(:)=omega_mod(:)*d_q_z(:)
     150      d_u_dyn_z(:)=omega_mod(:)*d_u_z(:)
     151      d_v_dyn_z(:)=omega_mod(:)*d_v_z(:)
     152
     153! large-scale forcing :
     154!     tsurf = tg_prof    MPL 20130925 commente
     155      psurf = psurf_prof
     156! For this case, fluxes are imposed
     157      fsens=-1*shf_prof
     158      flat=-1*lhf_prof
     159      ust=ustar_prof
     160      tg=tg_prof
     161      print *,'ust= ',ust
     162      do l = 1, llm
     163       ug(l)= ug_profd
     164       vg(l)= vg_profd
     165!       omega(l) = w_prof(l)
     166!      rho(l)  = play(l)/(rd*temp(l)*(1.+(rv/rd-1.)*q(l,1)))
     167!       omega2(l)=-rho(l)*omega(l)
     168!      omega(l) = w_mod(l)*(-rg*rho(l))
     169       omega(l) = omega_mod(l)
     170       omega2(l)= omega(l)/rg*airefi ! flxmass_w calcule comme ds physiq
     171
     172       alpha = rd*temp(l)*(1.+(rv/rd-1.)*q(l,1))/play(l)
     173       d_th_adv(l) = alpha*omega(l)/rcpd+ht_mod(l)-d_t_dyn_z(l)
     174       d_q_adv(l,1) = hq_mod(l)-d_q_dyn_z(l)
     175       d_u_adv(l) = hu_mod(l)-d_u_dyn_z(l)
     176       d_v_adv(l) = hv_mod(l)-d_v_dyn_z(l)
     177       dt_cooling(l) = 0.0
     178      enddo
     179
     180      endif ! forcing_dice
     181!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     182!---------------------------------------------------------------------
    80183!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    81184!---------------------------------------------------------------------
Note: See TracChangeset for help on using the changeset viewer.