source: LMDZ6/trunk/libf/phylmd/dyn1d/1D_interp_cases.h @ 3682

Last change on this file since 3682 was 3682, checked in by fhourdin, 4 years ago

rad_t* changed from integer to character (0/1/"adv")
Frédéric

  • Property svn:keywords set to Id
File size: 9.2 KB
Line 
1
2         print*,'FORCING CASE forcing_case2'
3!       print*,                                                             &
4!    & '#### ITAP,day,day1,(day-day1)*86400,(day-day1)*86400/pdt_cas=',     &
5!    &    daytime,day1,(daytime-day1)*86400.,                               &
6!    &    (daytime-day1)*86400/pdt_cas
7
8! time interpolation:
9        CALL interp_case_time_std(day,day1,annee_ref                                 &
10     &         ,nt_cas,nlev_cas                                                      &
11     &         ,ts_cas,ps_cas,ps_forc_cas,plev_cas,ppforc_cas,t_cas,theta_cas,thl_cas&
12     &         ,qt0_cas,qv0_cas,ql0_cas,qi0_cas                                      &
13     &         ,rt0_cas,rv0_cas,rl0_cas,ri0_cas,rh0_cas                              &
14     &         ,u_cas,v_cas,w_cas,omega_cas,ug_cas,vg_cas                            &
15     &         ,temp_nudg_cas,th_nudg_cas,thl_nudg_cas,qt_nudg_cas,qv_nudg_cas       &
16     &         ,rt_nudg_cas,rv_nudg_cas,u_nudg_cas,v_nudg_cas                        &
17     &         ,uadv_cas,vadv_cas,tadv_cas,thadv_cas,thladv_cas                      &
18     &         ,qtadv_cas,qvadv_cas,rtadv_cas,rvadv_cas                              &
19     &         ,trad_cas,thrad_cas,thlrad_cas                                        &
20     &         ,tke_cas,lat_cas,sens_cas,ustar_cas                                   &
21     &         ,wpthetap_cas,wpqtp_cas,wpqvp_cas,wprtp_cas,wprvp_cas                 &
22!
23     &         ,ts_prof_cas,ps_prof_cas,ps_forc_prof_cas,plev_prof_cas,pforc_prof_cas&
24     &         ,t_prof_cas,th_prof_cas,thl_prof_cas                               &
25     &         ,qt_prof_cas,qv_prof_cas,ql_prof_cas,qi_prof_cas                      &
26     &         ,rt_prof_cas,rv_prof_cas,rl_prof_cas,ri_prof_cas,rh_prof_cas          &
27     &         ,u_prof_cas,v_prof_cas,w_prof_cas,omega_prof_cas                      &
28     &         ,ug_prof_cas,vg_prof_cas                                              &
29     &         ,temp_nudg_prof_cas,th_nudg_prof_cas,thl_nudg_prof_cas                &
30     &         ,qt_nudg_prof_cas,qv_nudg_prof_cas                                    &
31     &         ,rt_nudg_prof_cas,rv_nudg_prof_cas,u_nudg_prof_cas,v_nudg_prof_cas    &
32     &         ,uadv_prof_cas,vadv_prof_cas,tadv_prof_cas,thadv_prof_cas,thladv_prof_cas&
33     &         ,qtadv_prof_cas,qvadv_prof_cas,rtadv_prof_cas,rvadv_prof_cas          &
34     &         ,trad_prof_cas,thrad_prof_cas,thlrad_prof_cas                         &
35     &         ,tke_prof_cas,lat_prof_cas,sens_prof_cas,ustar_prof_cas               &
36     &         ,wpthetap_prof_cas,wpqtp_prof_cas,wpqvp_prof_cas,wprtp_prof_cas,wprvp_prof_cas)
37
38             ts_cur = ts_prof_cas
39!            psurf=plev_prof_cas(1)
40             psurf=ps_prof_cas
41
42! vertical interpolation:
43       CALL interp_case_vertical_std(nlev_cas                                                          & 
44     &         ,plev_prof_cas,t_prof_cas,th_prof_cas,thl_prof_cas                                   &
45     &         ,qt_prof_cas,qv_prof_cas,ql_prof_cas,qi_prof_cas                                        &
46     &         ,rt_prof_cas,rv_prof_cas,rl_prof_cas,ri_prof_cas,rh_prof_cas                            &
47     &         ,u_prof_cas,v_prof_cas,w_prof_cas,omega_prof_cas                                        &
48     &         ,ug_prof_cas,vg_prof_cas                                                                &
49     &         ,temp_nudg_prof_cas,th_nudg_prof_cas,thl_nudg_prof_cas                                  &
50     &         ,qt_nudg_prof_cas,qv_nudg_prof_cas                                                      &
51     &         ,rt_nudg_prof_cas,rv_nudg_prof_cas,u_nudg_prof_cas,v_nudg_prof_cas                      &
52     &         ,uadv_prof_cas,vadv_prof_cas,tadv_prof_cas,thadv_prof_cas,thladv_prof_cas               &
53     &         ,qtadv_prof_cas,qvadv_prof_cas,rtadv_prof_cas,rvadv_prof_cas                            &
54     &         ,trad_prof_cas,thrad_prof_cas,thlrad_prof_cas                                           &
55!
56     &         ,plev_mod_cas,t_mod_cas,theta_mod_cas,thl_mod_cas                                       &
57     &         ,qt_mod_cas,qv_mod_cas,ql_mod_cas,qi_mod_cas                                            &
58     &         ,rt_mod_cas,rv_mod_cas,rl_mod_cas,ri_mod_cas,rh_mod_cas                                 &
59     &         ,u_mod_cas,v_mod_cas,w_mod_cas,omega_mod_cas                                            &
60     &         ,ug_mod_cas,vg_mod_cas                                                                  &
61     &         ,temp_nudg_mod_cas,th_nudg_mod_cas,thl_nudg_mod_cas                                     &
62     &         ,qt_nudg_mod_cas,qv_nudg_mod_cas                                                        &
63     &         ,rt_nudg_mod_cas,rv_nudg_mod_cas,u_nudg_mod_cas,v_nudg_mod_cas                          &
64     &         ,uadv_mod_cas,vadv_mod_cas,tadv_mod_cas,thadv_mod_cas,thladv_mod_cas                    &
65     &         ,qtadv_mod_cas,qvadv_mod_cas,rtadv_mod_cas,rvadv_mod_cas                                &
66     &         ,trad_mod_cas,thrad_mod_cas,thlrad_mod_cas)
67
68
69      DO l=1,llm
70      teta(l)=temp(l)*(100000./play(l))**(rd/rcpd)
71      ENDDO
72!calcul de l'advection verticale a partir du omega
73!Calcul des gradients verticaux
74!initialisation
75      d_t_z(:)=0.
76      d_th_z(:)=0.
77      d_q_z(:)=0.
78      d_u_z(:)=0.
79      d_v_z(:)=0.
80      d_t_dyn_z(:)=0.
81      d_th_dyn_z(:)=0.
82      d_q_dyn_z(:)=0.
83      d_u_dyn_z(:)=0.
84      d_v_dyn_z(:)=0.
85      if (1==0) then
86         DO l=2,llm-1
87          d_t_z(l)=(temp(l+1)-temp(l-1))/(play(l+1)-play(l-1))
88          d_th_z(l)=(teta(l+1)-teta(l-1))/(play(l+1)-play(l-1))
89          d_q_z(l)=(q(l+1,1)-q(l-1,1))/(play(l+1)-play(l-1))
90          d_u_z(l)=(u(l+1)-u(l-1))/(play(l+1)-play(l-1))
91          d_v_z(l)=(v(l+1)-v(l-1))/(play(l+1)-play(l-1))
92         ENDDO
93      else
94         DO l=2,llm-1
95            IF (omega(l)>0.) THEN
96             d_t_z(l)=(temp(l+1)-temp(l))/(play(l+1)-play(l))
97             d_th_z(l)=(teta(l+1)-teta(l))/(play(l+1)-play(l))
98             d_q_z(l)=(q(l+1,1)-q(l,1))/(play(l+1)-play(l))
99             d_u_z(l)=(u(l+1)-u(l))/(play(l+1)-play(l))
100             d_v_z(l)=(v(l+1)-v(l))/(play(l+1)-play(l))
101            ELSE
102             d_t_z(l)=(temp(l-1)-temp(l))/(play(l-1)-play(l))
103             d_th_z(l)=(teta(l-1)-teta(l))/(play(l-1)-play(l))
104             d_q_z(l)=(q(l-1,1)-q(l,1))/(play(l-1)-play(l))
105             d_u_z(l)=(u(l-1)-u(l))/(play(l-1)-play(l))
106             d_v_z(l)=(v(l-1)-v(l))/(play(l-1)-play(l))
107            ENDIF
108         ENDDO
109      endif
110      d_t_z(1)=d_t_z(2)
111      d_t_z(1)=d_t_z(2)
112      d_th_z(1)=d_th_z(2)
113      d_q_z(1)=d_q_z(2)
114      d_u_z(1)=d_u_z(2)
115      d_v_z(1)=d_v_z(2)
116      d_t_z(llm)=d_t_z(llm-1)
117      d_th_z(llm)=d_th_z(llm-1)
118      d_q_z(llm)=d_q_z(llm-1)
119      d_u_z(llm)=d_u_z(llm-1)
120      d_v_z(llm)=d_v_z(llm-1)
121
122! TRAVAIL : PRENDRE DES NOTATIONS COHERENTES POUR W
123      do l = 1, llm
124! Modif w_mod_cas -> omega_mod_cas (MM+MPL 20170309)
125       omega(l) = -w_mod_cas(l)*play(l)*rg/(rd*temp(l))
126      enddo
127
128!Calcul de l advection verticale
129! Modif w_mod_cas -> omega_mod_cas (MM+MPL 20170310)
130      d_t_dyn_z(:)=omega(:)*d_t_z(:)
131      d_th_dyn_z(:)=omega(:)*d_th_z(:)
132      d_q_dyn_z(:)=omega(:)*d_q_z(:)
133      d_u_dyn_z(:)=omega(:)*d_u_z(:)
134      d_v_dyn_z(:)=omega(:)*d_v_z(:)
135
136!geostrophic wind
137      if (forc_geo.eq.1) then
138        do l=1,llm
139        ug(l) = ug_mod_cas(l) 
140        vg(l) = vg_mod_cas(l) 
141        enddo
142      endif
143
144      do l = 1, llm
145
146!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
147! Modif w_mod_cas -> omega_mod_cas (MM+MPL 20170309)
148       !!! omega2(l)= omega(l)/rg*airefi ! flxmass_w calcule comme ds physiq
149       omega(l) = omega_mod_cas(l)
150       omega2(l)= omega_mod_cas(l)/rg*airefi ! flxmass_w calcule comme ds physiq
151
152! On effectue la somme du forcage total et de la decomposition
153! horizontal/vertical en supposant que soit l'un soit l'autre
154! sont remplis mais jamais les deux
155
156       d_t_adv(l) = dt_mod_cas(l)+ht_mod_cas(l)+vt_mod_cas(l)
157       d_q_adv(l,1) = dq_mod_cas(l)+hq_mod_cas(l)+vq_mod_cas(l)
158       d_q_adv(l,2) = 0.0
159       d_u_adv(l) = du_mod_cas(l)+hu_mod_cas(l)+vu_mod_cas(l)
160       d_v_adv(l) = dv_mod_cas(l)+hv_mod_cas(l)+vv_mod_cas(l)
161
162!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
163!! CONSERVE EN ATTENDANT QUE LE CAS EN QUESTION FONCTIONNE EN STD !!
164!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
165!if (forc_w==1) then
166!          d_q_adv(l,1)=d_q_adv(l,1)-d_q_dyn_z(l)
167!          d_t_adv(l)=d_t_adv(l)-d_t_dyn_z(l)
168!          d_v_adv(l)=d_v_adv(l)-d_v_dyn_z(l)
169!          d_u_adv(l)=d_u_adv(l)-d_u_dyn_z(l)
170!       endif
171!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
172         
173        if (rad_temp=="1") then
174           tend_rayo=1
175           dt_cooling(l) = dtrad_mod_cas(l)
176!          print *,'dt_cooling=',dt_cooling(l)
177        else
178           dt_cooling(l) = 0.0
179        endif
180      enddo
181
182! Faut-il multiplier par -1 ? (MPL 20160713)
183      IF(ok_flux_surf) THEN
184       fsens=-1.*sens_prof_cas
185       flat=-1.*lat_prof_cas
186       print *,'1D_interp: sens,flat',fsens,flat
187      ENDIF
188!
189      IF (ok_prescr_ust) THEN
190       ust=ustar_prof_cas
191       print *,'ust=',ust
192      ENDIF
Note: See TracBrowser for help on using the repository browser.