Changeset 5158 for LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d
- Timestamp:
- Aug 2, 2024, 2:12:03 PM (11 months ago)
- Location:
- LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d
- Files:
-
- 1 deleted
- 14 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/1D_decl_cases.h
r5135 r5158 13 13 REAL dt_toga 14 14 parameter (dt_toga=6.*3600.) 15 !! 15 16 16 INTEGER year_print, month_print, day_print 17 17 real sec_print 18 !! 18 19 19 REAL ts_toga(nt_toga) 20 20 REAL plev_toga(nlev_toga,nt_toga),w_toga(nlev_toga,nt_toga) … … 33 33 REAL w_mod(llm), t_mod(llm),q_mod(llm) 34 34 REAL u_mod(llm),v_mod(llm), ht_mod(llm),vt_mod(llm),ug_mod(llm),vg_mod(llm) 35 real temp_nudg_mod(llm),qv_nudg_mod(llm),u_nudg_mod(llm),v_nudg_mod(llm) 35 real temp_nudg_mod(llm),qv_nudg_mod(llm),u_nudg_mod(llm),v_nudg_mod(llm) 36 36 REAL hq_mod(llm),vq_mod(llm),qv_mod(llm),ql_mod(llm),qt_mod(llm) 37 37 REAL th_mod(llm) 38 38 39 ! EV comment these lines40 ! real ts_cur41 ! common /sst_forcing/ts_cur ! also in read_tsurf1d.F42 39 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 43 40 ! Declarations specifiques au cas RICO … … 188 185 real dtime_frcg 189 186 LOGICAL :: Turb_fcg_gcssold 190 191 common /turb_forcing/ &192 dtime_frcg,hthturb_gcssold, hqturb_gcssold,Turb_fcg_gcssold193 187 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 194 188 ! Declarations specifiques au cas Arm_cu -
LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/1D_interp_cases.h
r5128 r5158 88 88 else 89 89 DO l=2,llm-1 90 90 IF (omega(l)>0.) THEN 91 91 d_t_z(l)=(temp(l+1)-temp(l))/(play(l+1)-play(l)) 92 92 d_th_z(l)=(teta(l+1)-teta(l))/(play(l+1)-play(l)) … … 94 94 d_u_z(l)=(u(l+1)-u(l))/(play(l+1)-play(l)) 95 95 d_v_z(l)=(v(l+1)-v(l))/(play(l+1)-play(l)) 96 96 ELSE 97 97 d_t_z(l)=(temp(l-1)-temp(l))/(play(l-1)-play(l)) 98 98 d_th_z(l)=(teta(l-1)-teta(l))/(play(l-1)-play(l)) … … 100 100 d_u_z(l)=(u(l-1)-u(l))/(play(l-1)-play(l)) 101 101 d_v_z(l)=(v(l-1)-v(l))/(play(l-1)-play(l)) 102 103 102 ENDIF 103 ENDDO 104 104 endif 105 105 d_t_z(1)=d_t_z(2) … … 116 116 117 117 ! TRAVAIL : PRENDRE DES NOTATIONS COHERENTES POUR W 118 dol = 1, llm118 DO l = 1, llm 119 119 ! Modif w_mod_cas -> omega_mod_cas (MM+MPL 20170309) 120 121 120 PRINT*, l, llm 121 PRINT*, play(l), temp(l) 122 122 omega(l) = -w_mod_cas(l)*play(l)*rg/(rd*temp(l)) 123 123 enddo … … 133 133 !geostrophic wind 134 134 IF (forc_geo.EQ.1) THEN 135 dol=1,llm135 DO l=1,llm 136 136 ug(l) = ug_mod_cas(l) 137 137 vg(l) = vg_mod_cas(l) … … 139 139 endif 140 140 141 dol = 1, llm141 DO l = 1, llm 142 142 143 143 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -
LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/1D_read_forc_cases.h
r5128 r5158 16 16 CALL read_SCM_cas 17 17 WRITE(*,*) 'Forcing read' 18 18 PRINT*,'PS ps_cas',ps_cas 19 19 20 20 !Time interpolation for initial conditions using interpolation routine … … 44 44 ,sens_prof_cas,ustar_prof_cas,uw_prof_cas,vw_prof_cas,q1_prof_cas,q2_prof_cas,tkes_prof_cas) 45 45 46 dol = 1, nlev_cas46 DO l = 1, nlev_cas 47 47 print *,'apres 1ere interp: plev_cas, plev_prof_cas=',l,plev_cas(l,1),plev_prof_cas(l) 48 48 enddo … … 92 92 93 93 94 dol = 1, llm94 DO l = 1, llm 95 95 temp(l) = t_mod_cas(l) 96 96 q(l,1) = qv_mod_cas(l) … … 119 119 ! Etienne pour initialisation de TKE 120 120 121 dol=1,llm+1121 DO l=1,llm+1 122 122 pbl_tke(:,l,:)=tke_mod_cas(l) 123 123 enddo -
LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/lmdz_1dutils.f90
r5153 r5158 4 4 disvert0, advect_vert, advect_va, lstendh, nudge_rht_init, nudge_uv_init, & 5 5 nudge_rht, nudge_uv, interp2_case_vertical 6 6 7 CONTAINS 7 8 REAL FUNCTION fq_sat(kelvin, millibar) … … 67 68 USE lmdz_fcs_gcssold, ONLY: imp_fcg_gcssold, ts_fcg_gcssold, Tp_fcg_gcssold, Tp_ini_gcssold, xTurb_fcg_gcssold 68 69 USE lmdz_tsoilnudge, ONLY: nudge_tsoil, isoil_nudge, Tsoil_nudge, tau_soil_nudge 70 USE lmdz_compar1d 71 72 IMPLICIT NONE 69 73 !----------------------------------------------------------------------- 70 74 ! Auteurs : A. Lahellec . 71 72 ! Declarations :73 ! --------------74 75 include "compar1d.h"76 include "fcg_racmo.h"77 78 79 ! local:80 ! ------81 82 ! CHARACTER ch1*72,ch2*72,ch3*72,ch4*1283 75 84 76 ! ------------------------------------------------------------------- … … 1148 1140 !--------------------------------------------------------------- 1149 1141 1150 dol = 1, llm1142 DO l = 1, llm 1151 1143 zw(l) = dt * w(l) 1152 1144 zm(l) = plev(l) - plev(l + 1) … … 1156 1148 zw(llm + 1) = 0. 1157 1149 1158 dol = 1, llm1150 DO l = 1, llm 1159 1151 qold = q(l) 1160 1152 q(l) = (q(l) * zm(l) + zwq(l + 1) - zwq(l)) / (zm(l) + zw(l + 1) - zw(l)) … … 1186 1178 REAL alpha, omgdown, omgup 1187 1179 1188 dol = 1, llm1180 DO l = 1, llm 1189 1181 IF(l==1) THEN 1190 1182 !si omgup pour la couche 1, alors tendance nulle … … 1271 1263 cor(:) = rkappa * temp * (1. + q(:, 1) * rv / rd) / (play * (1. + q(:, 1))) 1272 1264 1273 dok = 2, llm - 11265 DO k = 2, llm - 1 1274 1266 1275 1267 dph (k - 1) = (play(k) - play(k - 1)) … … 1286 1278 dtdp (llm) = dtdp (llm - 1) 1287 1279 1288 dok = 2, llm - 11280 DO k = 2, llm - 1 1289 1281 omdn = max(0.0, omega(k + 1)) 1290 1282 omup = min(0.0, omega(k)) … … 1325 1317 1326 1318 IMPLICIT NONE 1327 INCLUDE "FCTTRE.h"1319 INCLUDE "FCTTRE.h" 1328 1320 1329 1321 ! ======================================================== … … 1399 1391 1400 1392 IMPLICIT NONE 1401 INCLUDE "FCTTRE.h"1393 INCLUDE "FCTTRE.h" 1402 1394 1403 1395 ! ======================================================== … … 1593 1585 ! enddo 1594 1586 1595 dol = 1, llm1587 DO l = 1, llm 1596 1588 1597 1589 IF (play(l)>=plev_prof_cas(nlev_cas)) THEN … … 1602 1594 1603 1595 IF (play(l)<=plev_prof_cas(1)) THEN 1604 dok = 1, nlev_cas - 11596 DO k = 1, nlev_cas - 1 1605 1597 IF (play(l)<=plev_prof_cas(k).AND. play(l)>plev_prof_cas(k + 1)) THEN 1606 1598 k1 = k … … 1612 1604 WRITE(*, *) 'PB! k1, k2 = ', k1, k2 1613 1605 WRITE(*, *) 'l,play(l) = ', l, play(l) / 100 1614 dok = 1, nlev_cas - 11606 DO k = 1, nlev_cas - 1 1615 1607 WRITE(*, *) 'k,plev_prof_cas(k) = ', k, plev_prof_cas(k) / 100 1616 1608 enddo -
LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/lmdz_compar1d.f90
r5157 r5158 1 MODULE lmdz_compar1d 2 IMPLICIT NONE; PRIVATE 3 PUBLIC nat_surf, tsurf, beta_surf, rugos, rugosh, & 4 xqsol, qsurf, psurf, zsurf, albedo, time, time_ini, xlat, xlon, airefi, & 5 wtsurf, wqsurf, restart_runoff, xagesno, qsolinp, zpicinp, & 6 forcing_type, tend_u, tend_v, tend_w, tend_t, tend_q, tend_rayo, & 7 nudge_u, nudge_v, nudge_w, nudge_t, nudge_q, & 8 iflag_nudge, snowmass, & 9 restart, ok_old_disvert, & 10 tadv, tadvv, tadvh, qadv, qadvv, qadvh, thadv, thadvv, thadvh, & 11 trad, forc_omega, forc_u, forc_v, forc_w, forc_geo, forc_ustar, & 12 nudging_u, nudging_v, nudging_t, nudging_qv, nudging_w, & 13 p_nudging_u, p_nudging_v, p_nudging_t, p_nudging_qv, p_nudging_w 1 14 2 ! $Id: compar1d.h 2010-08-04 17:02:56Z lahellec $ 15 INTEGER :: forcing_type 16 INTEGER :: tend_u, tend_v, tend_w, tend_t, tend_q, tend_rayo 17 REAL :: nudge_u, nudge_v, nudge_w, nudge_t, nudge_q 18 INTEGER :: iflag_nudge 19 REAL :: nat_surf 20 REAL :: tsurf 21 REAL :: beta_surf 22 REAL :: rugos 23 REAL :: rugosh 24 REAL :: xqsol(1:2) 25 REAL :: qsurf 26 REAL :: psurf 27 REAL :: zsurf 28 REAL :: albedo 29 REAL :: snowmass 3 30 4 INTEGER :: forcing_type 5 INTEGER :: tend_u,tend_v,tend_w,tend_t,tend_q,tend_rayo 6 REAL :: nudge_u,nudge_v,nudge_w,nudge_t,nudge_q 7 INTEGER :: iflag_nudge 8 REAL :: nat_surf 9 REAL :: tsurf 10 REAL :: beta_surf 11 REAL :: rugos 12 REAL :: rugosh 13 REAL :: xqsol(1:2) 14 REAL :: qsurf 15 REAL :: psurf 16 REAL :: zsurf 17 REAL :: albedo 18 REAL :: snowmass 31 REAL :: time 32 REAL :: time_ini 33 REAL :: xlat 34 REAL :: xlon 35 REAL :: airefi 36 REAL :: wtsurf 37 REAL :: wqsurf 38 REAL :: restart_runoff 39 REAL :: xagesno 40 REAL :: qsolinp 41 REAL :: zpicinp 19 42 20 REAL :: time 21 REAL :: time_ini 22 REAL :: xlat 23 REAL :: xlon 24 REAL :: airefi 25 REAL :: wtsurf 26 REAL :: wqsurf 27 REAL :: restart_runoff 28 REAL :: xagesno 29 REAL :: qsolinp 30 REAL :: zpicinp 43 LOGICAL :: restart 44 LOGICAL :: ok_old_disvert 31 45 32 LOGICAL :: restart 33 LOGICAL :: ok_old_disvert 46 ! Pour les forcages communs: ces entiers valent 0 ou 1 47 ! tadv= advection tempe, tadvv= adv tempe verticale, tadvh= adv tempe horizontale 48 ! idem pour l advection en theta 49 ! qadv= advection q, qadvv= adv q verticale, qadvh= adv q horizontale 50 ! trad= 0 (rayonnement actif) ou 1 (prescrit par tend_rad) ou adv (prescir et contenu dans les tadv) 51 ! forcages en omega, w, vent geostrophique ou ustar 52 ! Parametres de nudging en u,v,t,q valent 0 ou 1 ou le temps de nudging 34 53 35 ! Pour les forcages communs: ces entiers valent 0 ou 1 36 ! tadv= advection tempe, tadvv= adv tempe verticale, tadvh= adv tempe horizontale 37 ! idem pour l advection en theta 38 ! qadv= advection q, qadvv= adv q verticale, qadvh= adv q horizontale 39 ! trad= 0 (rayonnement actif) ou 1 (prescrit par tend_rad) ou adv (prescir et contenu dans les tadv) 40 ! forcages en omega, w, vent geostrophique ou ustar 41 ! Parametres de nudging en u,v,t,q valent 0 ou 1 ou le temps de nudging 42 43 INTEGER :: tadv, tadvv, tadvh, qadv, qadvv, qadvh, thadv, thadvv, thadvh, trad 44 INTEGER :: forc_omega, forc_u, forc_v, forc_w, forc_geo, forc_ustar 45 real :: nudging_u, nudging_v, nudging_w, nudging_t, nudging_qv 46 real :: p_nudging_u, p_nudging_v, p_nudging_w, p_nudging_t, p_nudging_qv 47 common/com_par1d/ & 48 nat_surf,tsurf,beta_surf,rugos,rugosh, & 49 xqsol,qsurf,psurf,zsurf,albedo,time,time_ini,xlat,xlon,airefi, & 50 wtsurf,wqsurf,restart_runoff,xagesno,qsolinp,zpicinp, & 51 forcing_type,tend_u,tend_v,tend_w,tend_t,tend_q,tend_rayo, & 52 nudge_u,nudge_v,nudge_w,nudge_t,nudge_q, & 53 iflag_nudge,snowmass, & 54 restart,ok_old_disvert, & 55 tadv, tadvv, tadvh, qadv, qadvv, qadvh, thadv, thadvv, thadvh, & 56 trad, forc_omega, forc_u, forc_v, forc_w, forc_geo, forc_ustar, & 57 nudging_u, nudging_v, nudging_t, nudging_qv, nudging_w, & 58 p_nudging_u, p_nudging_v, p_nudging_t, p_nudging_qv, p_nudging_w 59 60 !$OMP THREADPRIVATE(/com_par1d/) 54 INTEGER :: tadv, tadvv, tadvh, qadv, qadvv, qadvh, thadv, thadvv, thadvh, trad 55 INTEGER :: forc_omega, forc_u, forc_v, forc_w, forc_geo, forc_ustar 56 REAL :: nudging_u, nudging_v, nudging_w, nudging_t, nudging_qv 57 REAL :: p_nudging_u, p_nudging_v, p_nudging_w, p_nudging_t, p_nudging_qv 61 58 62 59 60 !$OMP THREADPRIVATE(nat_surf, tsurf, beta_surf, rugos, rugosh, & 61 !$OMP xqsol, qsurf, psurf, zsurf, albedo, time, time_ini, xlat, xlon, airefi, & 62 !$OMP wtsurf, wqsurf, restart_runoff, xagesno, qsolinp, zpicinp, & 63 !$OMP forcing_type, tend_u, tend_v, tend_w, tend_t, tend_q, tend_rayo, & 64 !$OMP nudge_u, nudge_v, nudge_w, nudge_t, nudge_q, & 65 !$OMP iflag_nudge, snowmass, & 66 !$OMP restart, ok_old_disvert, & 67 !$OMP tadv, tadvv, tadvh, qadv, qadvv, qadvh, thadv, thadvv, thadvh, & 68 !$OMP trad, forc_omega, forc_u, forc_v, forc_w, forc_geo, forc_ustar, & 69 !$OMP nudging_u, nudging_v, nudging_t, nudging_qv, nudging_w, & 70 !$OMP p_nudging_u, p_nudging_v, p_nudging_t, p_nudging_qv, p_nudging_w) 63 71 64 65 66 67 68 69 70 71 72 END MODULE lmdz_compar1d -
LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/lmdz_date_cas.f90
r5157 r5158 1 INTEGER :: year_ini_cas ! initial year of the case 2 INTEGER :: mth_ini_cas ! initial month of the case 3 INTEGER :: day_deb ! initial day of the case 4 REAL :: heure_ini_cas ! start time of the case 5 REAL :: pdt_cas ! forcing_frequency 6 REAL :: day_ju_ini_cas ! julian day of initial day of the case 1 MODULE lmdz_date_cas 2 IMPLICIT NONE; PRIVATE 3 PUBLIC year_ini_cas, mth_ini_cas, day_deb, heure_ini_cas, pdt_cas, day_ju_ini_cas 7 4 8 common /date_cas/year_ini_cas,mth_ini_cas,day_deb,heure_ini_cas,pdt_cas,day_ju_ini_cas 5 INTEGER :: year_ini_cas ! initial year of the case 6 INTEGER :: mth_ini_cas ! initial month of the case 7 INTEGER :: day_deb ! initial day of the case 8 REAL :: heure_ini_cas ! start time of the case 9 REAL :: pdt_cas ! forcing_frequency 10 REAL :: day_ju_ini_cas ! julian day of initial day of the case 11 END MODULE lmdz_date_cas 9 12 -
LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/lmdz_old_1dconv.f90
r5144 r5158 2 2 PRIVATE ! -- We'd love to put IMPLICIT NONE; here... 3 3 PUBLIC get_uvd, copie, get_uvd2, rdgrads, spaces 4 5 REAL play(100) !pression en Pa au milieu de chaque couche GCM 6 INTEGER JM(100) !pression en Pa au milieu de chaque couche GCM 7 REAL coef1(100) !coefficient d interpolation 8 REAL coef2(100) !coefficient d interpolation 9 INTEGER klev 10 11 INTEGER nblvlm !nombre de niveau de pression du mesoNH 12 REAL playm(100) !pression en Pa au milieu de chaque couche Meso-NH 13 REAL hplaym(100) !pression en hPa milieux des couches Meso-NH 14 15 4 16 CONTAINS 5 17 … … 16 28 ! pouvoir calculer la convergence et le cisaillement dans la physiq 17 29 !cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 18 19 INTEGER klev20 REAL play(100) !pression en Pa au milieu de chaque couche GCM21 INTEGER JM(100) !pression en Pa au milieu de chaque couche GCM22 REAL coef1(100) !coefficient d interpolation23 REAL coef2(100) !coefficient d interpolation24 25 INTEGER nblvlm !nombre de niveau de pression du mesoNH26 REAL playm(100) !pression en Pa au milieu de chaque couche Meso-NH27 REAL hplaym(100) !pression en hPa milieux des couches Meso-NH28 29 30 INTEGER i, j, k, ll, in 30 31 31 CHARACTER*80 file_forctl, file_fordat 32 33 COMMON/com1_phys_gcss/play, coef1, coef2, JM, klev34 COMMON/com2_phys_gcss/playm, hplaym, nblvlm35 32 36 33 !====================================================================== … … 162 159 !*** precedent en format gcm *** 163 160 IF(pas>pasprev)THEN 164 doi = 1, klev161 DO i = 1, klev 165 162 htbef(i) = htaft(i) 166 163 hqbef(i) = hqaft(i) … … 192 189 IF(Tp_fcg) THEN 193 190 ! (le forcage est donne en temperature potentielle) 194 doi = 1, nblvlm191 DO i = 1, nblvlm 195 192 ht_mes(i) = ht_mes(i) * (hplaym(i) / 1000.)**rkappa 196 193 enddo 197 194 endif ! Tp_fcg 198 195 IF(Turb_fcg) THEN 199 doi = 1, nblvlm196 DO i = 1, nblvlm 200 197 hThTurb_mes(i) = hThTurb_mes(i) * (hplaym(i) / 1000.)**rkappa 201 198 enddo … … 216 213 !*** on interpole les champs meso_NH sur les niveaux de pression*** 217 214 !*** gcm . on obtient le nouveau champ after *** 218 dok = 1, klev215 DO k = 1, klev 219 216 IF (JM(k) == 0) THEN 220 217 htaft(k) = ht_mes(jm(k) + 1) … … 254 251 !*** on conserve les derniers champs calcules *** 255 252 IF(temps>=pasmax)THEN 256 doll = 1, klev253 DO ll = 1, klev 257 254 ht(ll) = htaft(ll) 258 255 hq(ll) = hqaft(ll) … … 267 264 !*** on interpole sur les pas de temps de 10mn du gcm a partir *** 268 265 !** des pas de temps de 1h du meso_NH *** 269 doj = 1, klev266 DO j = 1, klev 270 267 ht(j) = ((timeaft - time) * htbef(j) + (time - timebef) * htaft(j)) / dt 271 268 hq(j) = ((timeaft - time) * hqbef(j) + (time - timebef) * hqaft(j)) / dt … … 287 284 print *, ' time,timebef,timeaft', time, timebef, timeaft 288 285 print *, ' ht,htbef,htaft,hthturb,hthturbbef,hthturbaft' 289 doj = 1, klev286 DO j = 1, klev 290 287 print *, j, ht(j), htbef(j), htaft(j), & 291 288 & hthturb(j), hthturbbef(j), hthturbaft(j) 292 289 enddo 293 290 print *, ' hq,hqbef,hqaft,hqturb,hqturbbef,hqturbaft' 294 doj = 1, klev291 DO j = 1, klev 295 292 print *, j, hq(j), hqbef(j), hqaft(j), & 296 293 & hqturb(j), hqturbbef(j), hqturbaft(j) … … 317 314 318 315 !------------------ 319 doi = 1, 1000316 DO i = 1, 1000 320 317 read(97, 1000, end = 999) string 321 318 1000 format (a4) … … 373 370 !------------------------------------------------------------------------ 374 371 IF(Tp_fcg) THEN 375 doi = 1, nblvlm372 DO i = 1, nblvlm 376 373 ht_mes(i) = ht_mes(i) * (hplaym(i) / 1000.)**rkappa 377 374 enddo … … 393 390 ! on interpole sur les niveaux du gcm(niveau pression bien sur!) 394 391 !----------------------------------------------------------------------- 395 dok = 1, klev392 DO k = 1, klev 396 393 IF (JM(k) == 0) THEN 397 394 !FKC bug? ne faut il pas convertir tsol en tendance ???? … … 426 423 tsaft = ts_subr 427 424 ! valeurs initiales des champs de convergence 428 dok = 1, klev425 DO k = 1, klev 429 426 ht(k) = htaft(k) 430 427 hq(k) = hqaft(k) … … 473 470 data alx, aly /100000., 150000./ 474 471 475 dok = 1, klev472 DO k = 1, klev 476 473 du = abs(vu_f(k) - cx) / alx 477 474 dv = abs(vv_f(k) - cy) / aly … … 489 486 IMPLICIT NONE 490 487 491 !cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc492 ! cette routine remplit les COMMON com1_phys_gcss et com2_phys_gcss.h493 !ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc494 495 INTEGER klev !nombre de niveau de pression du GCM496 REAL play(100) !pression en Pa au milieu de chaque couche GCM497 INTEGER JM(100)498 REAL coef1(100) !coefficient d interpolation499 REAL coef2(100) !coefficient d interpolation500 501 INTEGER nblvlm !nombre de niveau de pression du mesoNH502 REAL playm(100) !pression en Pa au milieu de chaque couche Meso-NH503 REAL hplaym(100)!pression en hecto-Pa des milieux de couche Meso-NH504 505 COMMON/com1_phys_gcss/play, coef1, coef2, JM, klev506 COMMON/com2_phys_gcss/playm, hplaym, nblvlm507 508 488 INTEGER k, klevgcm 509 489 REAL playgcm(klevgcm) ! pression en milieu de couche du gcm … … 518 498 !--------------------------------------------------------------------- 519 499 520 dok = 1, klev500 DO k = 1, klev 521 501 play(k) = playgcm(k) 522 502 PRINT*, 'la pression gcm est:', play(k) … … 526 506 ! lecture du descripteur des donnees Meso-NH (forcing.ctl): 527 507 ! -> nb niveaux du meso.NH (nblvlm) + pressions meso.NH 528 ! (on remplit le COMMON com2_phys_gcss)529 508 !---------------------------------------------------------------------- 530 509 … … 536 515 ! etude de la correspondance entre les niveaux meso.NH et GCM; 537 516 ! calcul des coefficients d interpolation coef1 et coef2 538 ! (on remplit le COMMON com1_phys_gcss)539 517 !---------------------------------------------------------------------- 540 518 … … 549 527 WRITE(*, *) '--------------------------------------' 550 528 WRITE(*, *) 'GCM: nb niveaux:', klev, ' et pression, coeffs:' 551 dok = 1, klev529 DO k = 1, klev 552 530 WRITE(*, *) play(k), coef1(k), coef2(k) 553 531 enddo 554 532 WRITE(*, *) 'MESO-NH: nb niveaux:', nblvlm, ' et pression:' 555 dok = 1, nblvlm533 DO k = 1, nblvlm 556 534 WRITE(*, *) playm(k), hplaym(k) 557 535 enddo … … 570 548 !ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 571 549 572 INTEGER nblvlm !nombre de niveau de pression du mesoNH573 REAL playm(100) !pression en Pa milieu de chaque couche Meso-NH574 REAL hplaym(100) !pression en hPa des milieux de couche Meso-NH575 COMMON/com2_phys_gcss/playm, hplaym, nblvlm576 577 550 INTEGER i, lu, mlz, mlzh 578 551 … … 586 559 open(lu, file = file_forctl, form = 'formatted') 587 560 588 doi = 1, 1000561 DO i = 1, 1000 589 562 read(lu, 1000, end = 999) a 590 563 IF (a == 'ZDEF') go to 100 … … 608 581 ! Si la pression est en HPa, la multiplier par 100 609 582 IF (playm(1) < 10000.) THEN 610 domlz = 1, nblvlm583 DO mlz = 1, nblvlm 611 584 playm(mlz) = playm(mlz) * 100. 612 585 enddo … … 617 590 618 591 PRINT*, ' ' 619 domlzh = 1, nblvlm592 DO mlzh = 1, nblvlm 620 593 hplaym(mlzh) = playm(mlzh) / 100. 621 594 enddo … … 644 617 icomp = icount 645 618 646 dok = 1, nl619 DO k = 1, nl 647 620 icomp = icomp + 1 648 621 read(itape, rec = icomp)z(k) 649 622 print *, 'icomp,k,z(k) ', icomp, k, z(k) 650 623 enddo 651 dok = 1, nl624 DO k = 1, nl 652 625 icomp = icomp + 1 653 626 read(itape, rec = icomp)hT(k) 654 627 PRINT*, hT(k), k 655 628 enddo 656 dok = 1, nl629 DO k = 1, nl 657 630 icomp = icomp + 1 658 631 read(itape, rec = icomp)hQ(k) … … 660 633 661 634 IF(turb_fcg) THEN 662 dok = 1, nl635 DO k = 1, nl 663 636 icomp = icomp + 1 664 637 read(itape, rec = icomp)hThTur(k) 665 638 enddo 666 dok = 1, nl639 DO k = 1, nl 667 640 icomp = icomp + 1 668 641 read(itape, rec = icomp)hqTur(k) … … 672 645 673 646 IF(imp_fcg) THEN 674 dok = 1, nl647 DO k = 1, nl 675 648 icomp = icomp + 1 676 649 read(itape, rec = icomp)hu(k) 677 650 enddo 678 dok = 1, nl651 DO k = 1, nl 679 652 icomp = icomp + 1 680 653 read(itape, rec = icomp)hv(k) … … 683 656 endif 684 657 685 dok = 1, nl658 DO k = 1, nl 686 659 icomp = icomp + 1 687 660 read(itape, rec = icomp)hw(k) … … 707 680 !ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 708 681 709 INTEGER klev !nombre de niveau de pression du GCM710 REAL play(100) !pression en Pa au milieu de chaque couche GCM711 INTEGER JM(100)712 REAL coef1(100) !coefficient d interpolation713 REAL coef2(100) !coefficient d interpolation714 715 INTEGER nblvlm !nombre de niveau de pression du mesoNH716 REAL playm(100) !pression en Pa milieu de chaque couche Meso-NH717 REAL hplaym(100)!pression en hPa des milieux de couche Meso-NH718 719 COMMON/com1_phys_gcss/play, coef1, coef2, JM, klev720 COMMON/com2_phys_gcss/playm, hplaym, nblvlm721 722 682 REAL psol 723 683 REAL val 724 684 INTEGER k, mlz 725 685 726 dok = 1, klev686 DO k = 1, klev 727 687 val = play(k) 728 688 IF (val > playm(1)) THEN … … 732 692 coef2(1) = (val - psol) / (playm(mlz + 1) - psol) 733 693 ELSE IF (val > playm(nblvlm)) THEN 734 domlz = 1, nblvlm694 DO mlz = 1, nblvlm 735 695 IF (val <= playm(mlz).AND. val > playm(mlz + 1))THEN 736 696 JM(k) = mlz -
LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/lmdz_old_lmdz1d.F90
r5144 r5158 57 57 USE lmdz_tsoilnudge, ONLY: nudge_tsoil, isoil_nudge, Tsoil_nudge, tau_soil_nudge 58 58 USE lmdz_yomcst 59 USE lmdz_compar1d 60 USE lmdz_date_cas, ONLY: year_ini_cas, mth_ini_cas, day_deb, heure_ini_cas, pdt_cas, day_ju_ini_cas 61 62 IMPLICIT NONE 59 63 60 64 INCLUDE "dimensions.h" 61 65 INCLUDE "dimsoil.h" 62 INCLUDE "compar1d.h"63 INCLUDE "date_cas.h"64 66 65 67 !===================================================================== … … 454 456 ! Initialization of the LOGICAL switch for nudging 455 457 jcode = iflag_nudge 456 doi = 1, nudge_max458 DO i = 1, nudge_max 457 459 nudge(i) = mod(jcode, 10) >= 1 458 460 jcode = jcode / 10 … … 696 698 ! pour forcing_sandu, on cherche l'indice le plus proche de 700hpa#3000m 697 699 WRITE(*, *) '***********************' 698 dol = 1, llm700 DO l = 1, llm 699 701 WRITE(*, *) 'l,play(l),presnivs(l): ', l, play(l), presnivs(l) 700 702 IF (trouve_700 .AND. play(l)<=70000) THEN … … 1004 1006 PRINT*, temp(1), q(1, 1), u(1), v(1), plev(1), phis 1005 1007 ! raz for safety 1006 dol = 1, llm1008 DO l = 1, llm 1007 1009 dq_dyn(l, 1) = 0. 1008 1010 enddo … … 1049 1051 1050 1052 phi(1) = RD * temp(1) * (plev(1) - play(1)) / (.5 * (plev(1) + play(1))) 1051 dol = 1, llm - 11053 DO l = 1, llm - 1 1052 1054 phi(l + 1) = phi(l) + RD * (temp(l) + temp(l + 1)) * & 1053 1055 (play(l) - play(l + 1)) / (play(l) + play(l + 1)) … … 1151 1153 1152 1154 !on calcule dt_cooling 1153 dol = 1, llm1155 DO l = 1, llm 1154 1156 IF (play(l)>=20000.) THEN 1155 1157 dt_cooling(l) = -1.5 / 86400. … … 1219 1221 d_t_adv = 0. 1220 1222 d_q_adv = 0. 1221 dol = 2, llm - 11223 DO l = 2, llm - 1 1222 1224 IF (zlay(l)<=1100) THEN 1223 1225 wwww = -0.00001 * zlay(l) -
LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/lmdz_scm.F90
r5144 r5158 50 50 USE lmdz_tsoilnudge, ONLY: nudge_tsoil, isoil_nudge, Tsoil_nudge, tau_soil_nudge 51 51 USE lmdz_yomcst 52 USE lmdz_compar1d 53 USE lmdz_date_cas, ONLY: year_ini_cas, mth_ini_cas, day_deb, heure_ini_cas, pdt_cas, day_ju_ini_cas 52 54 53 55 INCLUDE "dimensions.h" 54 56 INCLUDE "dimsoil.h" 55 INCLUDE "compar1d.h"56 INCLUDE "date_cas.h"57 57 58 58 !===================================================================== … … 280 280 281 281 jcode = iflag_nudge 282 doi = 1, nudge_max282 DO i = 1, nudge_max 283 283 nudge(i) = mod(jcode, 10) >= 1 284 284 jcode = jcode / 10 … … 459 459 ! pour forcing_sandu, on cherche l'indice le plus proche de 700hpa#3000m 460 460 WRITE(*, *) '***********************' 461 dol = 1, llm461 DO l = 1, llm 462 462 WRITE(*, *) 'l,play(l),presnivs(l): ', l, play(l), presnivs(l) 463 463 IF (trouve_700 .AND. play(l)<=70000) THEN … … 717 717 ! phy_fter,phy_foce,phy_flic,phy_fsic) 718 718 !------------------------------------------------------------------------ 719 doi = 1, year_len719 DO i = 1, year_len 720 720 phy_nat(i) = nat_surf 721 721 phy_alb(i) = albedo … … 759 759 PRINT*, temp(1), q(1, 1), u(1), v(1), plev(1), phis(1) 760 760 ! raz for safety 761 dol = 1, llm761 DO l = 1, llm 762 762 d_q_vert_adv(l, 1) = 0. 763 763 enddo … … 780 780 781 781 it_end = nint(fnday*day_step) 782 dowhile(it<=it_end)782 DO while(it<=it_end) 783 783 784 784 IF (prt_level>=1) THEN … … 804 804 phi(1)= RD*temp(1)*(plev(1)-play(1))/(.5*(plev(1)+play(1))) 805 805 806 dol = 1, llm-1806 DO l = 1, llm-1 807 807 phi(l+1)= phi(l)+RD*(temp(l)+temp(l+1))* & 808 808 (play(l)-play(l+1))/(play(l)+play(l+1)) … … 824 824 825 825 teta = temp*(pzero/play)**rkappa 826 dol = 2, llm-1826 DO l = 2, llm-1 827 827 ! vertical tendencies computed as d X / d t = -W d X / d z 828 828 d_u_vert_adv(l)= -w_adv(l)*(u(l+1)-u(l-1))/(z_adv(l+1)-z_adv(l-1)) -
LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_amma_read.F90
r5135 r5158 1 1 MODULE mod_1D_amma_read 2 USE netcdf, ONLY: nf90_get_var,nf90_open,nf90_noerr,nf90_open,nf90_nowrite,&3 nf90_inq_dimid,nf90_inquire_dimension,nf90_strerror,nf90_inq_varid4 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!5 !Declarations specifiques au cas AMMA6 7 ! Option du cas AMMA ou on impose la discretisation verticale (Ap,Bp)8 9 10 11 12 13 parameter (year_ini_amma=2006)14 parameter (mth_ini_amma=7)15 parameter (day_ini_amma=10) ! 10 = 10Juil200616 parameter (heure_ini_amma=0.) !0h en secondes17 18 parameter (dt_amma=1800.)19 20 !profils initiaux:21 REAL, ALLOCATABLE::plev_amma(:)22 23 REAL, ALLOCATABLE::z_amma(:)24 REAL, ALLOCATABLE:: th_amma(:),q_amma(:)25 REAL, ALLOCATABLE::u_amma(:)26 REAL, ALLOCATABLE::v_amma(:)27 28 REAL, ALLOCATABLE:: th_ammai(:),q_ammai(:)29 REAL, ALLOCATABLE::u_ammai(:)30 REAL, ALLOCATABLE::v_ammai(:)31 REAL, ALLOCATABLE::vitw_ammai(:)32 REAL, ALLOCATABLE::ht_ammai(:)33 REAL, ALLOCATABLE::hq_ammai(:)34 REAL, ALLOCATABLE::vt_ammai(:)35 REAL, ALLOCATABLE::vq_ammai(:)36 37 !forcings38 REAL, ALLOCATABLE:: ht_amma(:,:)39 REAL, ALLOCATABLE:: hq_amma(:,:)40 REAL, ALLOCATABLE:: vitw_amma(:,:)41 REAL, ALLOCATABLE:: lat_amma(:),sens_amma(:)42 43 !champs interpoles44 REAL, ALLOCATABLE::vitw_profamma(:)45 REAL, ALLOCATABLE::ht_profamma(:)46 REAL, ALLOCATABLE::hq_profamma(:)47 REAL lat_profamma,sens_profamma48 REAL, ALLOCATABLE::vt_profamma(:)49 REAL, ALLOCATABLE::vq_profamma(:)50 REAL, ALLOCATABLE::th_profamma(:)51 REAL, ALLOCATABLE::q_profamma(:)52 REAL, ALLOCATABLE::u_profamma(:)53 REAL, ALLOCATABLE::v_profamma(:)2 USE netcdf, ONLY: nf90_get_var, nf90_open, nf90_noerr, nf90_open, nf90_nowrite, & 3 nf90_inq_dimid, nf90_inquire_dimension, nf90_strerror, nf90_inq_varid 4 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 5 !Declarations specifiques au cas AMMA 6 CHARACTER*80 :: fich_amma 7 ! Option du cas AMMA ou on impose la discretisation verticale (Ap,Bp) 8 INTEGER nlev_amma, nt_amma 9 10 INTEGER year_ini_amma, day_ini_amma, mth_ini_amma 11 REAL heure_ini_amma 12 REAL day_ju_ini_amma ! Julian day of amma first day 13 parameter (year_ini_amma = 2006) 14 parameter (mth_ini_amma = 7) 15 parameter (day_ini_amma = 10) ! 10 = 10Juil2006 16 parameter (heure_ini_amma = 0.) !0h en secondes 17 REAL dt_amma 18 parameter (dt_amma = 1800.) 19 20 !profils initiaux: 21 REAL, ALLOCATABLE :: plev_amma(:) 22 23 REAL, ALLOCATABLE :: z_amma(:) 24 REAL, ALLOCATABLE :: th_amma(:), q_amma(:) 25 REAL, ALLOCATABLE :: u_amma(:) 26 REAL, ALLOCATABLE :: v_amma(:) 27 28 REAL, ALLOCATABLE :: th_ammai(:), q_ammai(:) 29 REAL, ALLOCATABLE :: u_ammai(:) 30 REAL, ALLOCATABLE :: v_ammai(:) 31 REAL, ALLOCATABLE :: vitw_ammai(:) 32 REAL, ALLOCATABLE :: ht_ammai(:) 33 REAL, ALLOCATABLE :: hq_ammai(:) 34 REAL, ALLOCATABLE :: vt_ammai(:) 35 REAL, ALLOCATABLE :: vq_ammai(:) 36 37 !forcings 38 REAL, ALLOCATABLE :: ht_amma(:, :) 39 REAL, ALLOCATABLE :: hq_amma(:, :) 40 REAL, ALLOCATABLE :: vitw_amma(:, :) 41 REAL, ALLOCATABLE :: lat_amma(:), sens_amma(:) 42 43 !champs interpoles 44 REAL, ALLOCATABLE :: vitw_profamma(:) 45 REAL, ALLOCATABLE :: ht_profamma(:) 46 REAL, ALLOCATABLE :: hq_profamma(:) 47 REAL lat_profamma, sens_profamma 48 REAL, ALLOCATABLE :: vt_profamma(:) 49 REAL, ALLOCATABLE :: vq_profamma(:) 50 REAL, ALLOCATABLE :: th_profamma(:) 51 REAL, ALLOCATABLE :: q_profamma(:) 52 REAL, ALLOCATABLE :: u_profamma(:) 53 REAL, ALLOCATABLE :: v_profamma(:) 54 54 55 55 56 56 CONTAINS 57 57 58 SUBROUTINE read_1D_cases 59 IMPLICIT NONE 60 61 INTEGER nid,rid,ierr 62 63 fich_amma='amma.nc' 64 PRINT*,'fich_amma ',fich_amma 65 ierr = nf90_open(fich_amma,nf90_nowrite,nid) 66 PRINT*,'fich_amma,nf90_nowrite,nid ',fich_amma,nf90_nowrite,nid 67 IF (ierr/=nf90_noerr) THEN 68 WRITE(*,*) 'ERROR: GROS Pb opening forcings nc file ' 69 WRITE(*,*) nf90_strerror(ierr) 70 stop "" 58 SUBROUTINE read_1D_cases 59 IMPLICIT NONE 60 61 INTEGER nid, rid, ierr 62 63 fich_amma = 'amma.nc' 64 PRINT*, 'fich_amma ', fich_amma 65 ierr = nf90_open(fich_amma, nf90_nowrite, nid) 66 PRINT*, 'fich_amma,nf90_nowrite,nid ', fich_amma, nf90_nowrite, nid 67 IF (ierr/=nf90_noerr) THEN 68 WRITE(*, *) 'ERROR: GROS Pb opening forcings nc file ' 69 WRITE(*, *) nf90_strerror(ierr) 70 stop "" 71 endif 72 !....................................................................... 73 ierr = nf90_inq_dimid(nid, 'lev', rid) 74 IF (ierr/=nf90_noerr) THEN 75 PRINT*, 'Oh probleme lecture dimension zz' 76 ENDIF 77 ierr = nf90_inquire_dimension(nid, rid, len = nlev_amma) 78 PRINT*, 'OK nid,rid,nlev_amma', nid, rid, nlev_amma 79 !....................................................................... 80 ierr = nf90_inq_dimid(nid, 'time', rid) 81 PRINT*, 'nid,rid', nid, rid 82 nt_amma = 0 83 IF (ierr/=nf90_noerr) THEN 84 stop 'probleme lecture dimension sens' 85 ENDIF 86 ierr = nf90_inquire_dimension(nid, rid, len = nt_amma) 87 PRINT*, 'nid,rid,nlev_amma', nid, rid, nt_amma 88 89 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 90 !profils initiaux: 91 allocate(plev_amma(nlev_amma)) 92 93 allocate(z_amma(nlev_amma)) 94 allocate(th_amma(nlev_amma), q_amma(nlev_amma)) 95 allocate(u_amma(nlev_amma)) 96 allocate(v_amma(nlev_amma)) 97 98 !forcings 99 allocate(ht_amma(nlev_amma, nt_amma)) 100 allocate(hq_amma(nlev_amma, nt_amma)) 101 allocate(vitw_amma(nlev_amma, nt_amma)) 102 allocate(lat_amma(nt_amma), sens_amma(nt_amma)) 103 104 !profils initiaux: 105 allocate(th_ammai(nlev_amma), q_ammai(nlev_amma)) 106 allocate(u_ammai(nlev_amma)) 107 allocate(v_ammai(nlev_amma)) 108 allocate(vitw_ammai(nlev_amma)) 109 allocate(ht_ammai(nlev_amma)) 110 allocate(hq_ammai(nlev_amma)) 111 allocate(vt_ammai(nlev_amma)) 112 allocate(vq_ammai(nlev_amma)) 113 114 !champs interpoles 115 allocate(vitw_profamma(nlev_amma)) 116 allocate(ht_profamma(nlev_amma)) 117 allocate(hq_profamma(nlev_amma)) 118 allocate(vt_profamma(nlev_amma)) 119 allocate(vq_profamma(nlev_amma)) 120 allocate(th_profamma(nlev_amma)) 121 allocate(q_profamma(nlev_amma)) 122 allocate(u_profamma(nlev_amma)) 123 allocate(v_profamma(nlev_amma)) 124 125 PRINT*, 'Allocations OK' 126 CALL read_amma(nid, nlev_amma, nt_amma & 127 , z_amma, plev_amma, th_amma, q_amma, u_amma, v_amma, vitw_amma & 128 , ht_amma, hq_amma, sens_amma, lat_amma) 129 130 END SUBROUTINE read_1D_cases 131 132 133 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 134 SUBROUTINE deallocate_1D_cases 135 !profils initiaux: 136 deallocate(plev_amma) 137 138 deallocate(z_amma) 139 deallocate(th_amma, q_amma) 140 deallocate(u_amma) 141 deallocate(v_amma) 142 143 deallocate(th_ammai, q_ammai) 144 deallocate(u_ammai) 145 deallocate(v_ammai) 146 deallocate(vitw_ammai) 147 deallocate(ht_ammai) 148 deallocate(hq_ammai) 149 deallocate(vt_ammai) 150 deallocate(vq_ammai) 151 152 !forcings 153 deallocate(ht_amma) 154 deallocate(hq_amma) 155 deallocate(vitw_amma) 156 deallocate(lat_amma, sens_amma) 157 158 !champs interpoles 159 deallocate(vitw_profamma) 160 deallocate(ht_profamma) 161 deallocate(hq_profamma) 162 deallocate(vt_profamma) 163 deallocate(vq_profamma) 164 deallocate(th_profamma) 165 deallocate(q_profamma) 166 deallocate(u_profamma) 167 deallocate(v_profamma) 168 END SUBROUTINE deallocate_1D_cases 169 170 171 !===================================================================== 172 SUBROUTINE read_amma(nid, nlevel, ntime & 173 , zz, pp, temp, qv, u, v, dw & 174 , dt, dq, sens, flat) 175 176 !program reading forcings of the AMMA case study 177 IMPLICIT NONE 178 179 INTEGER ntime, nlevel 180 181 REAL zz(nlevel) 182 REAL temp(nlevel), pp(nlevel) 183 REAL qv(nlevel), u(nlevel) 184 REAL v(nlevel) 185 REAL dw(nlevel, ntime) 186 REAL dt(nlevel, ntime) 187 REAL dq(nlevel, ntime) 188 REAL flat(ntime), sens(ntime) 189 190 INTEGER nid, ierr, rid 191 INTEGER nbvar3d 192 parameter(nbvar3d = 30) 193 INTEGER var3didin(nbvar3d) 194 195 ierr = nf90_inq_varid(nid, "zz", var3didin(1)) 196 IF(ierr/=nf90_noerr) THEN 197 WRITE(*, *) nf90_strerror(ierr) 198 stop 'lev' 199 endif 200 201 ierr = nf90_inq_varid(nid, "temp", var3didin(2)) 202 IF(ierr/=nf90_noerr) THEN 203 WRITE(*, *) nf90_strerror(ierr) 204 stop 'temp' 205 endif 206 207 ierr = nf90_inq_varid(nid, "qv", var3didin(3)) 208 IF(ierr/=nf90_noerr) THEN 209 WRITE(*, *) nf90_strerror(ierr) 210 stop 'qv' 211 endif 212 213 ierr = nf90_inq_varid(nid, "u", var3didin(4)) 214 IF(ierr/=nf90_noerr) THEN 215 WRITE(*, *) nf90_strerror(ierr) 216 stop 'u' 217 endif 218 219 ierr = nf90_inq_varid(nid, "v", var3didin(5)) 220 IF(ierr/=nf90_noerr) THEN 221 WRITE(*, *) nf90_strerror(ierr) 222 stop 'v' 223 endif 224 225 ierr = nf90_inq_varid(nid, "dw", var3didin(6)) 226 IF(ierr/=nf90_noerr) THEN 227 WRITE(*, *) nf90_strerror(ierr) 228 stop 'dw' 229 endif 230 231 ierr = nf90_inq_varid(nid, "dt", var3didin(7)) 232 IF(ierr/=nf90_noerr) THEN 233 WRITE(*, *) nf90_strerror(ierr) 234 stop 'dt' 235 endif 236 237 ierr = nf90_inq_varid(nid, "dq", var3didin(8)) 238 IF(ierr/=nf90_noerr) THEN 239 WRITE(*, *) nf90_strerror(ierr) 240 stop 'dq' 241 endif 242 243 ierr = nf90_inq_varid(nid, "sens", var3didin(9)) 244 IF(ierr/=nf90_noerr) THEN 245 WRITE(*, *) nf90_strerror(ierr) 246 stop 'sens' 247 endif 248 249 ierr = nf90_inq_varid(nid, "flat", var3didin(10)) 250 IF(ierr/=nf90_noerr) THEN 251 WRITE(*, *) nf90_strerror(ierr) 252 stop 'flat' 253 endif 254 255 ierr = nf90_inq_varid(nid, "pp", var3didin(11)) 256 IF(ierr/=nf90_noerr) THEN 257 WRITE(*, *) nf90_strerror(ierr) 258 endif 259 260 !dimensions lecture 261 ! CALL catchaxis(nid,ntime,nlevel,time,z,ierr) 262 263 ierr = nf90_get_var(nid, var3didin(1), zz) 264 IF(ierr/=nf90_noerr) THEN 265 WRITE(*, *) nf90_strerror(ierr) 266 stop "getvarup" 267 endif 268 ! WRITE(*,*)'lecture z ok',zz 269 270 ierr = nf90_get_var(nid, var3didin(2), temp) 271 IF(ierr/=nf90_noerr) THEN 272 WRITE(*, *) nf90_strerror(ierr) 273 stop "getvarup" 274 endif 275 ! WRITE(*,*)'lecture th ok',temp 276 277 ierr = nf90_get_var(nid, var3didin(3), qv) 278 IF(ierr/=nf90_noerr) THEN 279 WRITE(*, *) nf90_strerror(ierr) 280 stop "getvarup" 281 endif 282 ! WRITE(*,*)'lecture qv ok',qv 283 284 ierr = nf90_get_var(nid, var3didin(4), u) 285 IF(ierr/=nf90_noerr) THEN 286 WRITE(*, *) nf90_strerror(ierr) 287 stop "getvarup" 288 endif 289 ! WRITE(*,*)'lecture u ok',u 290 291 ierr = nf90_get_var(nid, var3didin(5), v) 292 IF(ierr/=nf90_noerr) THEN 293 WRITE(*, *) nf90_strerror(ierr) 294 stop "getvarup" 295 endif 296 ! WRITE(*,*)'lecture v ok',v 297 298 ierr = nf90_get_var(nid, var3didin(6), dw) 299 IF(ierr/=nf90_noerr) THEN 300 WRITE(*, *) nf90_strerror(ierr) 301 stop "getvarup" 302 endif 303 ! WRITE(*,*)'lecture w ok',dw 304 305 ierr = nf90_get_var(nid, var3didin(7), dt) 306 IF(ierr/=nf90_noerr) THEN 307 WRITE(*, *) nf90_strerror(ierr) 308 stop "getvarup" 309 endif 310 ! WRITE(*,*)'lecture dt ok',dt 311 312 ierr = nf90_get_var(nid, var3didin(8), dq) 313 IF(ierr/=nf90_noerr) THEN 314 WRITE(*, *) nf90_strerror(ierr) 315 stop "getvarup" 316 endif 317 ! WRITE(*,*)'lecture dq ok',dq 318 319 ierr = nf90_get_var(nid, var3didin(9), sens) 320 IF(ierr/=nf90_noerr) THEN 321 WRITE(*, *) nf90_strerror(ierr) 322 stop "getvarup" 323 endif 324 ! WRITE(*,*)'lecture sens ok',sens 325 326 ierr = nf90_get_var(nid, var3didin(10), flat) 327 IF(ierr/=nf90_noerr) THEN 328 WRITE(*, *) nf90_strerror(ierr) 329 stop "getvarup" 330 endif 331 ! WRITE(*,*)'lecture flat ok',flat 332 333 ierr = nf90_get_var(nid, var3didin(11), pp) 334 IF(ierr/=nf90_noerr) THEN 335 WRITE(*, *) nf90_strerror(ierr) 336 stop "getvarup" 337 endif 338 ! WRITE(*,*)'lecture pp ok',pp 339 340 END SUBROUTINE read_amma 341 !====================================================================== 342 SUBROUTINE interp_amma_time(day, day1, annee_ref & 343 , year_ini_amma, day_ini_amma, nt_amma, dt_amma, nlev_amma & 344 , vitw_amma, ht_amma, hq_amma, lat_amma, sens_amma & 345 , vitw_prof, ht_prof, hq_prof, lat_prof, sens_prof) 346 347 USE lmdz_compar1d 348 349 IMPLICIT NONE 350 351 !--------------------------------------------------------------------------------------- 352 ! Time interpolation of a 2D field to the timestep corresponding to day 353 354 ! day: current julian day (e.g. 717538.2) 355 ! day1: first day of the simulation 356 ! nt_amma: total nb of data in the forcing (e.g. 48 for AMMA) 357 ! dt_amma: total time interval (in sec) between 2 forcing data (e.g. 30min for AMMA) 358 !--------------------------------------------------------------------------------------- 359 360 ! inputs: 361 INTEGER annee_ref 362 INTEGER nt_amma, nlev_amma 363 INTEGER year_ini_amma 364 REAL day, day1, day_ini_amma, dt_amma 365 REAL vitw_amma(nlev_amma, nt_amma) 366 REAL ht_amma(nlev_amma, nt_amma) 367 REAL hq_amma(nlev_amma, nt_amma) 368 REAL lat_amma(nt_amma) 369 REAL sens_amma(nt_amma) 370 ! outputs: 371 REAL vitw_prof(nlev_amma) 372 REAL ht_prof(nlev_amma) 373 REAL hq_prof(nlev_amma) 374 REAL lat_prof, sens_prof 375 ! local: 376 INTEGER it_amma1, it_amma2, k 377 REAL timeit, time_amma1, time_amma2, frac 378 379 IF (forcing_type==6) THEN 380 ! Check that initial day of the simulation consistent with AMMA case: 381 IF (annee_ref/=2006) THEN 382 PRINT*, 'Pour AMMA, annee_ref doit etre 2006' 383 PRINT*, 'Changer annee_ref dans run.def' 384 stop 71 385 endif 72 !....................................................................... 73 ierr=nf90_inq_dimid(nid,'lev',rid) 74 IF (ierr/=nf90_noerr) THEN 75 PRINT*, 'Oh probleme lecture dimension zz' 76 ENDIF 77 ierr=nf90_inquire_dimension(nid,rid,len=nlev_amma) 78 PRINT*,'OK nid,rid,nlev_amma',nid,rid,nlev_amma 79 !....................................................................... 80 ierr=nf90_inq_dimid(nid,'time',rid) 81 PRINT*,'nid,rid',nid,rid 82 nt_amma=0 83 IF (ierr/=nf90_noerr) THEN 84 stop 'probleme lecture dimension sens' 85 ENDIF 86 ierr=nf90_inquire_dimension(nid,rid,len=nt_amma) 87 PRINT*,'nid,rid,nlev_amma',nid,rid,nt_amma 88 89 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 90 !profils initiaux: 91 allocate(plev_amma(nlev_amma)) 92 93 allocate(z_amma(nlev_amma)) 94 allocate(th_amma(nlev_amma),q_amma(nlev_amma)) 95 allocate(u_amma(nlev_amma)) 96 allocate(v_amma(nlev_amma)) 97 98 !forcings 99 allocate(ht_amma(nlev_amma,nt_amma)) 100 allocate(hq_amma(nlev_amma,nt_amma)) 101 allocate(vitw_amma(nlev_amma,nt_amma)) 102 allocate(lat_amma(nt_amma),sens_amma(nt_amma)) 103 104 !profils initiaux: 105 allocate(th_ammai(nlev_amma),q_ammai(nlev_amma)) 106 allocate(u_ammai(nlev_amma)) 107 allocate(v_ammai(nlev_amma)) 108 allocate(vitw_ammai(nlev_amma) ) 109 allocate(ht_ammai(nlev_amma)) 110 allocate(hq_ammai(nlev_amma)) 111 allocate(vt_ammai(nlev_amma)) 112 allocate(vq_ammai(nlev_amma)) 113 114 !champs interpoles 115 allocate(vitw_profamma(nlev_amma)) 116 allocate(ht_profamma(nlev_amma)) 117 allocate(hq_profamma(nlev_amma)) 118 allocate(vt_profamma(nlev_amma)) 119 allocate(vq_profamma(nlev_amma)) 120 allocate(th_profamma(nlev_amma)) 121 allocate(q_profamma(nlev_amma)) 122 allocate(u_profamma(nlev_amma)) 123 allocate(v_profamma(nlev_amma)) 124 125 PRINT*,'Allocations OK' 126 CALL read_amma(nid,nlev_amma,nt_amma & 127 ,z_amma,plev_amma,th_amma,q_amma,u_amma,v_amma,vitw_amma & 128 ,ht_amma,hq_amma,sens_amma,lat_amma) 129 130 END SUBROUTINE read_1D_cases 131 132 133 134 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 135 SUBROUTINE deallocate_1D_cases 136 !profils initiaux: 137 deallocate(plev_amma) 138 139 deallocate(z_amma) 140 deallocate(th_amma,q_amma) 141 deallocate(u_amma) 142 deallocate(v_amma) 143 144 deallocate(th_ammai,q_ammai) 145 deallocate(u_ammai) 146 deallocate(v_ammai) 147 deallocate(vitw_ammai ) 148 deallocate(ht_ammai) 149 deallocate(hq_ammai) 150 deallocate(vt_ammai) 151 deallocate(vq_ammai) 152 153 !forcings 154 deallocate(ht_amma) 155 deallocate(hq_amma) 156 deallocate(vitw_amma) 157 deallocate(lat_amma,sens_amma) 158 159 !champs interpoles 160 deallocate(vitw_profamma) 161 deallocate(ht_profamma) 162 deallocate(hq_profamma) 163 deallocate(vt_profamma) 164 deallocate(vq_profamma) 165 deallocate(th_profamma) 166 deallocate(q_profamma) 167 deallocate(u_profamma) 168 deallocate(v_profamma) 169 END SUBROUTINE deallocate_1D_cases 170 171 172 !===================================================================== 173 SUBROUTINE read_amma(nid,nlevel,ntime & 174 ,zz,pp,temp,qv,u,v,dw & 175 ,dt,dq,sens,flat) 176 177 !program reading forcings of the AMMA case study 178 IMPLICIT NONE 179 180 INTEGER ntime,nlevel 181 182 REAL zz(nlevel) 183 REAL temp(nlevel),pp(nlevel) 184 REAL qv(nlevel),u(nlevel) 185 REAL v(nlevel) 186 REAL dw(nlevel,ntime) 187 REAL dt(nlevel,ntime) 188 REAL dq(nlevel,ntime) 189 REAL flat(ntime),sens(ntime) 190 191 192 INTEGER nid, ierr,rid 193 INTEGER nbvar3d 194 parameter(nbvar3d=30) 195 INTEGER var3didin(nbvar3d) 196 197 ierr=nf90_inq_varid(nid,"zz",var3didin(1)) 198 IF(ierr/=nf90_noerr) THEN 199 WRITE(*,*) nf90_strerror(ierr) 200 stop 'lev' 201 endif 202 203 204 ierr=nf90_inq_varid(nid,"temp",var3didin(2)) 205 IF(ierr/=nf90_noerr) THEN 206 WRITE(*,*) nf90_strerror(ierr) 207 stop 'temp' 208 endif 209 210 ierr=nf90_inq_varid(nid,"qv",var3didin(3)) 211 IF(ierr/=nf90_noerr) THEN 212 WRITE(*,*) nf90_strerror(ierr) 213 stop 'qv' 214 endif 215 216 ierr=nf90_inq_varid(nid,"u",var3didin(4)) 217 IF(ierr/=nf90_noerr) THEN 218 WRITE(*,*) nf90_strerror(ierr) 219 stop 'u' 220 endif 221 222 ierr=nf90_inq_varid(nid,"v",var3didin(5)) 223 IF(ierr/=nf90_noerr) THEN 224 WRITE(*,*) nf90_strerror(ierr) 225 stop 'v' 226 endif 227 228 ierr=nf90_inq_varid(nid,"dw",var3didin(6)) 229 IF(ierr/=nf90_noerr) THEN 230 WRITE(*,*) nf90_strerror(ierr) 231 stop 'dw' 232 endif 233 234 ierr=nf90_inq_varid(nid,"dt",var3didin(7)) 235 IF(ierr/=nf90_noerr) THEN 236 WRITE(*,*) nf90_strerror(ierr) 237 stop 'dt' 238 endif 239 240 ierr=nf90_inq_varid(nid,"dq",var3didin(8)) 241 IF(ierr/=nf90_noerr) THEN 242 WRITE(*,*) nf90_strerror(ierr) 243 stop 'dq' 244 endif 245 246 ierr=nf90_inq_varid(nid,"sens",var3didin(9)) 247 IF(ierr/=nf90_noerr) THEN 248 WRITE(*,*) nf90_strerror(ierr) 249 stop 'sens' 250 endif 251 252 ierr=nf90_inq_varid(nid,"flat",var3didin(10)) 253 IF(ierr/=nf90_noerr) THEN 254 WRITE(*,*) nf90_strerror(ierr) 255 stop 'flat' 256 endif 257 258 ierr=nf90_inq_varid(nid,"pp",var3didin(11)) 259 IF(ierr/=nf90_noerr) THEN 260 WRITE(*,*) nf90_strerror(ierr) 386 IF (annee_ref==2006 .AND. day1<day_ini_amma) THEN 387 PRINT*, 'AMMA a débuté le 10 juillet 2006', day1, day_ini_amma 388 PRINT*, 'Changer dayref dans run.def' 389 stop 261 390 endif 262 263 !dimensions lecture 264 ! CALL catchaxis(nid,ntime,nlevel,time,z,ierr) 265 266 ierr = nf90_get_var(nid,var3didin(1),zz) 267 IF(ierr/=nf90_noerr) THEN 268 WRITE(*,*) nf90_strerror(ierr) 269 stop "getvarup" 270 endif 271 ! WRITE(*,*)'lecture z ok',zz 272 273 ierr = nf90_get_var(nid,var3didin(2),temp) 274 IF(ierr/=nf90_noerr) THEN 275 WRITE(*,*) nf90_strerror(ierr) 276 stop "getvarup" 277 endif 278 ! WRITE(*,*)'lecture th ok',temp 279 280 ierr = nf90_get_var(nid,var3didin(3),qv) 281 IF(ierr/=nf90_noerr) THEN 282 WRITE(*,*) nf90_strerror(ierr) 283 stop "getvarup" 284 endif 285 ! WRITE(*,*)'lecture qv ok',qv 286 287 ierr = nf90_get_var(nid,var3didin(4),u) 288 IF(ierr/=nf90_noerr) THEN 289 WRITE(*,*) nf90_strerror(ierr) 290 stop "getvarup" 291 endif 292 ! WRITE(*,*)'lecture u ok',u 293 294 ierr = nf90_get_var(nid,var3didin(5),v) 295 IF(ierr/=nf90_noerr) THEN 296 WRITE(*,*) nf90_strerror(ierr) 297 stop "getvarup" 298 endif 299 ! WRITE(*,*)'lecture v ok',v 300 301 ierr = nf90_get_var(nid,var3didin(6),dw) 302 IF(ierr/=nf90_noerr) THEN 303 WRITE(*,*) nf90_strerror(ierr) 304 stop "getvarup" 305 endif 306 ! WRITE(*,*)'lecture w ok',dw 307 308 ierr = nf90_get_var(nid,var3didin(7),dt) 309 IF(ierr/=nf90_noerr) THEN 310 WRITE(*,*) nf90_strerror(ierr) 311 stop "getvarup" 312 endif 313 ! WRITE(*,*)'lecture dt ok',dt 314 315 ierr = nf90_get_var(nid,var3didin(8),dq) 316 IF(ierr/=nf90_noerr) THEN 317 WRITE(*,*) nf90_strerror(ierr) 318 stop "getvarup" 319 endif 320 ! WRITE(*,*)'lecture dq ok',dq 321 322 ierr = nf90_get_var(nid,var3didin(9),sens) 323 IF(ierr/=nf90_noerr) THEN 324 WRITE(*,*) nf90_strerror(ierr) 325 stop "getvarup" 326 endif 327 ! WRITE(*,*)'lecture sens ok',sens 328 329 ierr = nf90_get_var(nid,var3didin(10),flat) 330 IF(ierr/=nf90_noerr) THEN 331 WRITE(*,*) nf90_strerror(ierr) 332 stop "getvarup" 333 endif 334 ! WRITE(*,*)'lecture flat ok',flat 335 336 ierr = nf90_get_var(nid,var3didin(11),pp) 337 IF(ierr/=nf90_noerr) THEN 338 WRITE(*,*) nf90_strerror(ierr) 339 stop "getvarup" 340 endif 341 ! WRITE(*,*)'lecture pp ok',pp 342 343 344 END SUBROUTINE read_amma 345 !====================================================================== 346 SUBROUTINE interp_amma_time(day,day1,annee_ref & 347 ,year_ini_amma,day_ini_amma,nt_amma,dt_amma,nlev_amma & 348 ,vitw_amma,ht_amma,hq_amma,lat_amma,sens_amma & 349 ,vitw_prof,ht_prof,hq_prof,lat_prof,sens_prof) 350 IMPLICIT NONE 351 352 !--------------------------------------------------------------------------------------- 353 ! Time interpolation of a 2D field to the timestep corresponding to day 354 355 ! day: current julian day (e.g. 717538.2) 356 ! day1: first day of the simulation 357 ! nt_amma: total nb of data in the forcing (e.g. 48 for AMMA) 358 ! dt_amma: total time interval (in sec) between 2 forcing data (e.g. 30min for AMMA) 359 !--------------------------------------------------------------------------------------- 360 361 INCLUDE "compar1d.h" 362 363 ! inputs: 364 INTEGER annee_ref 365 INTEGER nt_amma,nlev_amma 366 INTEGER year_ini_amma 367 REAL day, day1,day_ini_amma,dt_amma 368 REAL vitw_amma(nlev_amma,nt_amma) 369 REAL ht_amma(nlev_amma,nt_amma) 370 REAL hq_amma(nlev_amma,nt_amma) 371 REAL lat_amma(nt_amma) 372 REAL sens_amma(nt_amma) 373 ! outputs: 374 REAL vitw_prof(nlev_amma) 375 REAL ht_prof(nlev_amma) 376 REAL hq_prof(nlev_amma) 377 REAL lat_prof,sens_prof 378 ! local: 379 INTEGER it_amma1, it_amma2,k 380 REAL timeit,time_amma1,time_amma2,frac 381 382 383 IF (forcing_type==6) THEN 384 ! Check that initial day of the simulation consistent with AMMA case: 385 IF (annee_ref/=2006) THEN 386 PRINT*,'Pour AMMA, annee_ref doit etre 2006' 387 PRINT*,'Changer annee_ref dans run.def' 391 IF (annee_ref==2006 .AND. day1>day_ini_amma + 1) THEN 392 PRINT*, 'AMMA a fini le 11 juillet' 393 PRINT*, 'Changer dayref ou nday dans run.def' 388 394 stop 389 endif 390 IF (annee_ref==2006 .AND. day1<day_ini_amma) THEN 391 PRINT*,'AMMA a débuté le 10 juillet 2006',day1,day_ini_amma 392 PRINT*,'Changer dayref dans run.def' 393 stop 394 endif 395 IF (annee_ref==2006 .AND. day1>day_ini_amma+1) THEN 396 PRINT*,'AMMA a fini le 11 juillet' 397 PRINT*,'Changer dayref ou nday dans run.def' 398 stop 399 endif 400 endif 401 402 ! Determine timestep relative to the 1st day of AMMA: 403 ! timeit=(day-day1)*86400. 404 ! if (annee_ref.EQ.1992) THEN 405 ! timeit=(day-day_ini_toga)*86400. 406 ! else 407 ! timeit=(day+61.-1.)*86400. ! 61 days between Nov01 and Dec31 1992 408 ! endif 409 timeit=(day-day_ini_amma)*86400 410 411 ! Determine the closest observation times: 412 ! it_amma1=INT(timeit/dt_amma)+1 413 ! it_amma2=it_amma1 + 1 414 ! time_amma1=(it_amma1-1)*dt_amma 415 ! time_amma2=(it_amma2-1)*dt_amma 416 417 it_amma1=INT(timeit/dt_amma)+1 418 IF (it_amma1 == nt_amma) THEN 419 it_amma2=it_amma1 420 ELSE 421 it_amma2=it_amma1 + 1 422 ENDIF 423 time_amma1=(it_amma1-1)*dt_amma 424 time_amma2=(it_amma2-1)*dt_amma 425 426 IF (it_amma1 > nt_amma) THEN 427 WRITE(*,*) 'PB-stop: day, it_amma1, it_amma2, timeit: ' & 428 ,day,day_ini_amma,it_amma1,it_amma2,timeit/86400. 429 stop 430 endif 431 432 ! time interpolation: 433 IF (it_amma1 == it_amma2) THEN 434 frac=0. 435 ELSE 436 frac=(time_amma2-timeit)/(time_amma2-time_amma1) 437 frac=max(frac,0.0) 438 ENDIF 439 440 lat_prof = lat_amma(it_amma2) & 441 -frac*(lat_amma(it_amma2)-lat_amma(it_amma1)) 442 sens_prof = sens_amma(it_amma2) & 443 -frac*(sens_amma(it_amma2)-sens_amma(it_amma1)) 444 445 do k=1,nlev_amma 446 vitw_prof(k) = vitw_amma(k,it_amma2) & 447 -frac*(vitw_amma(k,it_amma2)-vitw_amma(k,it_amma1)) 448 ht_prof(k) = ht_amma(k,it_amma2) & 449 -frac*(ht_amma(k,it_amma2)-ht_amma(k,it_amma1)) 450 hq_prof(k) = hq_amma(k,it_amma2) & 451 -frac*(hq_amma(k,it_amma2)-hq_amma(k,it_amma1)) 452 enddo 453 454 RETURN 455 END 395 endif 396 endif 397 398 ! Determine timestep relative to the 1st day of AMMA: 399 ! timeit=(day-day1)*86400. 400 ! if (annee_ref.EQ.1992) THEN 401 ! timeit=(day-day_ini_toga)*86400. 402 ! else 403 ! timeit=(day+61.-1.)*86400. ! 61 days between Nov01 and Dec31 1992 404 ! endif 405 timeit = (day - day_ini_amma) * 86400 406 407 ! Determine the closest observation times: 408 ! it_amma1=INT(timeit/dt_amma)+1 409 ! it_amma2=it_amma1 + 1 410 ! time_amma1=(it_amma1-1)*dt_amma 411 ! time_amma2=(it_amma2-1)*dt_amma 412 413 it_amma1 = INT(timeit / dt_amma) + 1 414 IF (it_amma1 == nt_amma) THEN 415 it_amma2 = it_amma1 416 ELSE 417 it_amma2 = it_amma1 + 1 418 ENDIF 419 time_amma1 = (it_amma1 - 1) * dt_amma 420 time_amma2 = (it_amma2 - 1) * dt_amma 421 422 IF (it_amma1 > nt_amma) THEN 423 WRITE(*, *) 'PB-stop: day, it_amma1, it_amma2, timeit: ' & 424 , day, day_ini_amma, it_amma1, it_amma2, timeit / 86400. 425 stop 426 endif 427 428 ! time interpolation: 429 IF (it_amma1 == it_amma2) THEN 430 frac = 0. 431 ELSE 432 frac = (time_amma2 - timeit) / (time_amma2 - time_amma1) 433 frac = max(frac, 0.0) 434 ENDIF 435 436 lat_prof = lat_amma(it_amma2) & 437 - frac * (lat_amma(it_amma2) - lat_amma(it_amma1)) 438 sens_prof = sens_amma(it_amma2) & 439 - frac * (sens_amma(it_amma2) - sens_amma(it_amma1)) 440 441 DO k = 1, nlev_amma 442 vitw_prof(k) = vitw_amma(k, it_amma2) & 443 - frac * (vitw_amma(k, it_amma2) - vitw_amma(k, it_amma1)) 444 ht_prof(k) = ht_amma(k, it_amma2) & 445 - frac * (ht_amma(k, it_amma2) - ht_amma(k, it_amma1)) 446 hq_prof(k) = hq_amma(k, it_amma2) & 447 - frac * (hq_amma(k, it_amma2) - hq_amma(k, it_amma1)) 448 enddo 449 450 RETURN 451 END 456 452 457 453 END MODULE mod_1D_amma_read -
LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_cases_read.F90
r5135 r5158 1 1 MODULE mod_1D_cases_read 2 USE netcdf, ONLY: nf90_noerr,nf90_strerror,nf90_inq_varid,nf90_inquire_dimension,nf90_inq_dimid,& 3 nf90_nowrite,nf90_open,nf90_get_var 4 5 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 6 !Declarations specifiques au cas standard 7 CHARACTER*80 :: fich_cas 8 ! Discr?tisation 9 INTEGER nlev_cas, nt_cas 10 11 12 ! integer year_ini_cas, day_ini_cas, mth_ini_cas 13 ! real heure_ini_cas 14 ! real day_ju_ini_cas ! Julian day of case first day 15 ! parameter (year_ini_cas=2011) 16 ! parameter (year_ini_cas=1969) 17 ! parameter (mth_ini_cas=10) 18 ! parameter (mth_ini_cas=6) 19 ! parameter (day_ini_cas=1) ! 10 = 10Juil2006 20 ! parameter (day_ini_cas=24) ! 24 = 24 juin 1969 21 ! parameter (heure_ini_cas=0.) !0h en secondes 22 ! real pdt_cas 23 ! parameter (pdt_cas=3.*3600) 24 25 !CR ATTENTION TEST AMMA 26 ! parameter (year_ini_cas=2006) 27 ! parameter (mth_ini_cas=7) 28 ! parameter (day_ini_cas=10) ! 10 = 10Juil2006 29 ! parameter (heure_ini_cas=0.) !0h en secondes 30 ! parameter (pdt_cas=1800.) 31 32 !profils environnementaux 33 REAL, ALLOCATABLE:: plev_cas(:,:) 34 35 REAL, ALLOCATABLE:: z_cas(:,:) 36 REAL, ALLOCATABLE:: t_cas(:,:),q_cas(:,:),rh_cas(:,:) 37 REAL, ALLOCATABLE:: th_cas(:,:),rv_cas(:,:) 38 REAL, ALLOCATABLE:: u_cas(:,:) 39 REAL, ALLOCATABLE:: v_cas(:,:) 40 41 !forcing 42 REAL, ALLOCATABLE:: ht_cas(:,:),vt_cas(:,:),dt_cas(:,:),dtrad_cas(:,:) 43 REAL, ALLOCATABLE:: hth_cas(:,:),vth_cas(:,:),dth_cas(:,:) 44 REAL, ALLOCATABLE:: hq_cas(:,:),vq_cas(:,:),dq_cas(:,:) 45 REAL, ALLOCATABLE:: hr_cas(:,:),vr_cas(:,:),dr_cas(:,:) 46 REAL, ALLOCATABLE:: hu_cas(:,:),vu_cas(:,:),du_cas(:,:) 47 REAL, ALLOCATABLE:: hv_cas(:,:),vv_cas(:,:),dv_cas(:,:) 48 REAL, ALLOCATABLE:: vitw_cas(:,:) 49 REAL, ALLOCATABLE:: ug_cas(:,:),vg_cas(:,:) 50 REAL, ALLOCATABLE:: lat_cas(:),sens_cas(:),ts_cas(:),ustar_cas(:) 51 REAL, ALLOCATABLE:: uw_cas(:,:),vw_cas(:,:),q1_cas(:,:),q2_cas(:,:) 52 53 !champs interpoles 54 REAL, ALLOCATABLE:: plev_prof_cas(:) 55 REAL, ALLOCATABLE:: t_prof_cas(:) 56 REAL, ALLOCATABLE:: q_prof_cas(:) 57 REAL, ALLOCATABLE:: u_prof_cas(:) 58 REAL, ALLOCATABLE:: v_prof_cas(:) 59 60 REAL, ALLOCATABLE:: vitw_prof_cas(:) 61 REAL, ALLOCATABLE:: ug_prof_cas(:) 62 REAL, ALLOCATABLE:: vg_prof_cas(:) 63 REAL, ALLOCATABLE:: ht_prof_cas(:) 64 REAL, ALLOCATABLE:: hq_prof_cas(:) 65 REAL, ALLOCATABLE:: vt_prof_cas(:) 66 REAL, ALLOCATABLE:: vq_prof_cas(:) 67 REAL, ALLOCATABLE:: dt_prof_cas(:) 68 REAL, ALLOCATABLE:: dtrad_prof_cas(:) 69 REAL, ALLOCATABLE:: dq_prof_cas(:) 70 REAL, ALLOCATABLE:: hu_prof_cas(:) 71 REAL, ALLOCATABLE:: hv_prof_cas(:) 72 REAL, ALLOCATABLE:: vu_prof_cas(:) 73 REAL, ALLOCATABLE:: vv_prof_cas(:) 74 REAL, ALLOCATABLE:: du_prof_cas(:) 75 REAL, ALLOCATABLE:: dv_prof_cas(:) 76 REAL, ALLOCATABLE:: uw_prof_cas(:) 77 REAL, ALLOCATABLE:: vw_prof_cas(:) 78 REAL, ALLOCATABLE:: q1_prof_cas(:) 79 REAL, ALLOCATABLE:: q2_prof_cas(:) 80 81 82 REAL lat_prof_cas,sens_prof_cas,ts_prof_cas,ustar_prof_cas 83 2 USE netcdf, ONLY: nf90_noerr, nf90_strerror, nf90_inq_varid, nf90_inquire_dimension, nf90_inq_dimid, & 3 nf90_nowrite, nf90_open, nf90_get_var 4 5 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 6 !Declarations specifiques au cas standard 7 CHARACTER*80 :: fich_cas 8 ! Discr?tisation 9 INTEGER nlev_cas, nt_cas 10 11 12 ! integer year_ini_cas, day_ini_cas, mth_ini_cas 13 ! real heure_ini_cas 14 ! real day_ju_ini_cas ! Julian day of case first day 15 ! parameter (year_ini_cas=2011) 16 ! parameter (year_ini_cas=1969) 17 ! parameter (mth_ini_cas=10) 18 ! parameter (mth_ini_cas=6) 19 ! parameter (day_ini_cas=1) ! 10 = 10Juil2006 20 ! parameter (day_ini_cas=24) ! 24 = 24 juin 1969 21 ! parameter (heure_ini_cas=0.) !0h en secondes 22 ! real pdt_cas 23 ! parameter (pdt_cas=3.*3600) 24 25 !CR ATTENTION TEST AMMA 26 ! parameter (year_ini_cas=2006) 27 ! parameter (mth_ini_cas=7) 28 ! parameter (day_ini_cas=10) ! 10 = 10Juil2006 29 ! parameter (heure_ini_cas=0.) !0h en secondes 30 ! parameter (pdt_cas=1800.) 31 32 !profils environnementaux 33 REAL, ALLOCATABLE :: plev_cas(:, :) 34 35 REAL, ALLOCATABLE :: z_cas(:, :) 36 REAL, ALLOCATABLE :: t_cas(:, :), q_cas(:, :), rh_cas(:, :) 37 REAL, ALLOCATABLE :: th_cas(:, :), rv_cas(:, :) 38 REAL, ALLOCATABLE :: u_cas(:, :) 39 REAL, ALLOCATABLE :: v_cas(:, :) 40 41 !forcing 42 REAL, ALLOCATABLE :: ht_cas(:, :), vt_cas(:, :), dt_cas(:, :), dtrad_cas(:, :) 43 REAL, ALLOCATABLE :: hth_cas(:, :), vth_cas(:, :), dth_cas(:, :) 44 REAL, ALLOCATABLE :: hq_cas(:, :), vq_cas(:, :), dq_cas(:, :) 45 REAL, ALLOCATABLE :: hr_cas(:, :), vr_cas(:, :), dr_cas(:, :) 46 REAL, ALLOCATABLE :: hu_cas(:, :), vu_cas(:, :), du_cas(:, :) 47 REAL, ALLOCATABLE :: hv_cas(:, :), vv_cas(:, :), dv_cas(:, :) 48 REAL, ALLOCATABLE :: vitw_cas(:, :) 49 REAL, ALLOCATABLE :: ug_cas(:, :), vg_cas(:, :) 50 REAL, ALLOCATABLE :: lat_cas(:), sens_cas(:), ts_cas(:), ustar_cas(:) 51 REAL, ALLOCATABLE :: uw_cas(:, :), vw_cas(:, :), q1_cas(:, :), q2_cas(:, :) 52 53 !champs interpoles 54 REAL, ALLOCATABLE :: plev_prof_cas(:) 55 REAL, ALLOCATABLE :: t_prof_cas(:) 56 REAL, ALLOCATABLE :: q_prof_cas(:) 57 REAL, ALLOCATABLE :: u_prof_cas(:) 58 REAL, ALLOCATABLE :: v_prof_cas(:) 59 60 REAL, ALLOCATABLE :: vitw_prof_cas(:) 61 REAL, ALLOCATABLE :: ug_prof_cas(:) 62 REAL, ALLOCATABLE :: vg_prof_cas(:) 63 REAL, ALLOCATABLE :: ht_prof_cas(:) 64 REAL, ALLOCATABLE :: hq_prof_cas(:) 65 REAL, ALLOCATABLE :: vt_prof_cas(:) 66 REAL, ALLOCATABLE :: vq_prof_cas(:) 67 REAL, ALLOCATABLE :: dt_prof_cas(:) 68 REAL, ALLOCATABLE :: dtrad_prof_cas(:) 69 REAL, ALLOCATABLE :: dq_prof_cas(:) 70 REAL, ALLOCATABLE :: hu_prof_cas(:) 71 REAL, ALLOCATABLE :: hv_prof_cas(:) 72 REAL, ALLOCATABLE :: vu_prof_cas(:) 73 REAL, ALLOCATABLE :: vv_prof_cas(:) 74 REAL, ALLOCATABLE :: du_prof_cas(:) 75 REAL, ALLOCATABLE :: dv_prof_cas(:) 76 REAL, ALLOCATABLE :: uw_prof_cas(:) 77 REAL, ALLOCATABLE :: vw_prof_cas(:) 78 REAL, ALLOCATABLE :: q1_prof_cas(:) 79 REAL, ALLOCATABLE :: q2_prof_cas(:) 80 81 REAL lat_prof_cas, sens_prof_cas, ts_prof_cas, ustar_prof_cas 84 82 85 83 86 84 CONTAINS 87 85 88 SUBROUTINE read_1D_cas 89 90 INTEGER nid,rid,ierr 91 INTEGER ii,jj 92 93 fich_cas='setup/cas.nc' 94 PRINT*,'fich_cas ',fich_cas 95 ierr = nf90_open(fich_cas,nf90_nowrite,nid) 96 PRINT*,'fich_cas,nf90_nowrite,nid ',fich_cas,nf90_nowrite,nid 97 IF (ierr/=nf90_noerr) THEN 98 WRITE(*,*) 'ERROR: GROS Pb opening forcings nc file ' 99 WRITE(*,*) nf90_strerror(ierr) 100 stop "" 101 endif 102 !....................................................................... 103 ierr=nf90_inq_dimid(nid,'lat',rid) 104 IF (ierr/=nf90_noerr) THEN 105 PRINT*, 'Oh probleme lecture dimension lat' 106 ENDIF 107 ierr=nf90_inquire_dimension(nid,rid,len=ii) 108 PRINT*,'OK1 nid,rid,lat',nid,rid,ii 109 !....................................................................... 110 ierr=nf90_inq_dimid(nid,'lon',rid) 111 IF (ierr/=nf90_noerr) THEN 112 PRINT*, 'Oh probleme lecture dimension lon' 113 ENDIF 114 ierr=nf90_inquire_dimension(nid,rid,len=jj) 115 PRINT*,'OK2 nid,rid,lat',nid,rid,jj 116 !....................................................................... 117 ierr=nf90_inq_dimid(nid,'lev',rid) 118 IF (ierr/=nf90_noerr) THEN 119 PRINT*, 'Oh probleme lecture dimension zz' 120 ENDIF 121 ierr=nf90_inquire_dimension(nid,rid,len=nlev_cas) 122 PRINT*,'OK3 nid,rid,nlev_cas',nid,rid,nlev_cas 123 !....................................................................... 124 ierr=nf90_inq_dimid(nid,'time',rid) 125 PRINT*,'nid,rid',nid,rid 126 nt_cas=0 127 IF (ierr/=nf90_noerr) THEN 128 stop 'probleme lecture dimension sens' 129 ENDIF 130 ierr=nf90_inquire_dimension(nid,rid,len=nt_cas) 131 PRINT*,'OK4 nid,rid,nt_cas',nid,rid,nt_cas 132 133 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 134 !profils moyens: 135 allocate(plev_cas(nlev_cas,nt_cas)) 136 allocate(z_cas(nlev_cas,nt_cas)) 137 allocate(t_cas(nlev_cas,nt_cas),q_cas(nlev_cas,nt_cas),rh_cas(nlev_cas,nt_cas)) 138 allocate(th_cas(nlev_cas,nt_cas),rv_cas(nlev_cas,nt_cas)) 139 allocate(u_cas(nlev_cas,nt_cas)) 140 allocate(v_cas(nlev_cas,nt_cas)) 141 142 !forcing 143 allocate(ht_cas(nlev_cas,nt_cas),vt_cas(nlev_cas,nt_cas),dt_cas(nlev_cas,nt_cas),dtrad_cas(nlev_cas,nt_cas)) 144 allocate(hq_cas(nlev_cas,nt_cas),vq_cas(nlev_cas,nt_cas),dq_cas(nlev_cas,nt_cas)) 145 allocate(hth_cas(nlev_cas,nt_cas),vth_cas(nlev_cas,nt_cas),dth_cas(nlev_cas,nt_cas)) 146 allocate(hr_cas(nlev_cas,nt_cas),vr_cas(nlev_cas,nt_cas),dr_cas(nlev_cas,nt_cas)) 147 allocate(hu_cas(nlev_cas,nt_cas),vu_cas(nlev_cas,nt_cas),du_cas(nlev_cas,nt_cas)) 148 allocate(hv_cas(nlev_cas,nt_cas),vv_cas(nlev_cas,nt_cas),dv_cas(nlev_cas,nt_cas)) 149 allocate(vitw_cas(nlev_cas,nt_cas)) 150 allocate(ug_cas(nlev_cas,nt_cas)) 151 allocate(vg_cas(nlev_cas,nt_cas)) 152 allocate(lat_cas(nt_cas),sens_cas(nt_cas),ts_cas(nt_cas),ustar_cas(nt_cas)) 153 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)) 154 155 156 !champs interpoles 157 allocate(plev_prof_cas(nlev_cas)) 158 allocate(t_prof_cas(nlev_cas)) 159 allocate(q_prof_cas(nlev_cas)) 160 allocate(u_prof_cas(nlev_cas)) 161 allocate(v_prof_cas(nlev_cas)) 162 163 allocate(vitw_prof_cas(nlev_cas)) 164 allocate(ug_prof_cas(nlev_cas)) 165 allocate(vg_prof_cas(nlev_cas)) 166 allocate(ht_prof_cas(nlev_cas)) 167 allocate(hq_prof_cas(nlev_cas)) 168 allocate(hu_prof_cas(nlev_cas)) 169 allocate(hv_prof_cas(nlev_cas)) 170 allocate(vt_prof_cas(nlev_cas)) 171 allocate(vq_prof_cas(nlev_cas)) 172 allocate(vu_prof_cas(nlev_cas)) 173 allocate(vv_prof_cas(nlev_cas)) 174 allocate(dt_prof_cas(nlev_cas)) 175 allocate(dtrad_prof_cas(nlev_cas)) 176 allocate(dq_prof_cas(nlev_cas)) 177 allocate(du_prof_cas(nlev_cas)) 178 allocate(dv_prof_cas(nlev_cas)) 179 allocate(uw_prof_cas(nlev_cas)) 180 allocate(vw_prof_cas(nlev_cas)) 181 allocate(q1_prof_cas(nlev_cas)) 182 allocate(q2_prof_cas(nlev_cas)) 183 184 PRINT*,'Allocations OK' 185 CALL read_cas(nid,nlev_cas,nt_cas & 186 ,z_cas,plev_cas,t_cas,q_cas,rh_cas,th_cas,rv_cas,u_cas,v_cas & 187 ,ug_cas,vg_cas,vitw_cas,du_cas,hu_cas,vu_cas,dv_cas,hv_cas,vv_cas & 188 ,dt_cas,dtrad_cas,ht_cas,vt_cas,dq_cas,hq_cas,vq_cas & 189 ,dth_cas,hth_cas,vth_cas,dr_cas,hr_cas,vr_cas,sens_cas,lat_cas,ts_cas& 190 ,ustar_cas,uw_cas,vw_cas,q1_cas,q2_cas) 191 PRINT*,'Read cas OK' 192 193 194 END SUBROUTINE read_1D_cas 195 196 197 198 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 199 SUBROUTINE deallocate_1D_cases 200 !profils environnementaux: 201 deallocate(plev_cas) 202 203 deallocate(z_cas) 204 deallocate(t_cas,q_cas,rh_cas) 205 deallocate(th_cas,rv_cas) 206 deallocate(u_cas) 207 deallocate(v_cas) 208 209 !forcing 210 deallocate(ht_cas,vt_cas,dt_cas,dtrad_cas) 211 deallocate(hq_cas,vq_cas,dq_cas) 212 deallocate(hth_cas,vth_cas,dth_cas) 213 deallocate(hr_cas,vr_cas,dr_cas) 214 deallocate(hu_cas,vu_cas,du_cas) 215 deallocate(hv_cas,vv_cas,dv_cas) 216 deallocate(vitw_cas) 217 deallocate(ug_cas) 218 deallocate(vg_cas) 219 deallocate(lat_cas,sens_cas,ts_cas,ustar_cas,uw_cas,vw_cas,q1_cas,q2_cas) 220 221 !champs interpoles 222 deallocate(plev_prof_cas) 223 deallocate(t_prof_cas) 224 deallocate(q_prof_cas) 225 deallocate(u_prof_cas) 226 deallocate(v_prof_cas) 227 228 deallocate(vitw_prof_cas) 229 deallocate(ug_prof_cas) 230 deallocate(vg_prof_cas) 231 deallocate(ht_prof_cas) 232 deallocate(hq_prof_cas) 233 deallocate(hu_prof_cas) 234 deallocate(hv_prof_cas) 235 deallocate(vt_prof_cas) 236 deallocate(vq_prof_cas) 237 deallocate(vu_prof_cas) 238 deallocate(vv_prof_cas) 239 deallocate(dt_prof_cas) 240 deallocate(dtrad_prof_cas) 241 deallocate(dq_prof_cas) 242 deallocate(du_prof_cas) 243 deallocate(dv_prof_cas) 244 deallocate(t_prof_cas) 245 deallocate(q_prof_cas) 246 deallocate(u_prof_cas) 247 deallocate(v_prof_cas) 248 deallocate(uw_prof_cas) 249 deallocate(vw_prof_cas) 250 deallocate(q1_prof_cas) 251 deallocate(q2_prof_cas) 252 253 END SUBROUTINE deallocate_1D_cases 86 SUBROUTINE read_1D_cas 87 88 INTEGER nid, rid, ierr 89 INTEGER ii, jj 90 91 fich_cas = 'setup/cas.nc' 92 PRINT*, 'fich_cas ', fich_cas 93 ierr = nf90_open(fich_cas, nf90_nowrite, nid) 94 PRINT*, 'fich_cas,nf90_nowrite,nid ', fich_cas, nf90_nowrite, nid 95 IF (ierr/=nf90_noerr) THEN 96 WRITE(*, *) 'ERROR: GROS Pb opening forcings nc file ' 97 WRITE(*, *) nf90_strerror(ierr) 98 stop "" 99 endif 100 !....................................................................... 101 ierr = nf90_inq_dimid(nid, 'lat', rid) 102 IF (ierr/=nf90_noerr) THEN 103 PRINT*, 'Oh probleme lecture dimension lat' 104 ENDIF 105 ierr = nf90_inquire_dimension(nid, rid, len = ii) 106 PRINT*, 'OK1 nid,rid,lat', nid, rid, ii 107 !....................................................................... 108 ierr = nf90_inq_dimid(nid, 'lon', rid) 109 IF (ierr/=nf90_noerr) THEN 110 PRINT*, 'Oh probleme lecture dimension lon' 111 ENDIF 112 ierr = nf90_inquire_dimension(nid, rid, len = jj) 113 PRINT*, 'OK2 nid,rid,lat', nid, rid, jj 114 !....................................................................... 115 ierr = nf90_inq_dimid(nid, 'lev', rid) 116 IF (ierr/=nf90_noerr) THEN 117 PRINT*, 'Oh probleme lecture dimension zz' 118 ENDIF 119 ierr = nf90_inquire_dimension(nid, rid, len = nlev_cas) 120 PRINT*, 'OK3 nid,rid,nlev_cas', nid, rid, nlev_cas 121 !....................................................................... 122 ierr = nf90_inq_dimid(nid, 'time', rid) 123 PRINT*, 'nid,rid', nid, rid 124 nt_cas = 0 125 IF (ierr/=nf90_noerr) THEN 126 stop 'probleme lecture dimension sens' 127 ENDIF 128 ierr = nf90_inquire_dimension(nid, rid, len = nt_cas) 129 PRINT*, 'OK4 nid,rid,nt_cas', nid, rid, nt_cas 130 131 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 132 !profils moyens: 133 allocate(plev_cas(nlev_cas, nt_cas)) 134 allocate(z_cas(nlev_cas, nt_cas)) 135 allocate(t_cas(nlev_cas, nt_cas), q_cas(nlev_cas, nt_cas), rh_cas(nlev_cas, nt_cas)) 136 allocate(th_cas(nlev_cas, nt_cas), rv_cas(nlev_cas, nt_cas)) 137 allocate(u_cas(nlev_cas, nt_cas)) 138 allocate(v_cas(nlev_cas, nt_cas)) 139 140 !forcing 141 allocate(ht_cas(nlev_cas, nt_cas), vt_cas(nlev_cas, nt_cas), dt_cas(nlev_cas, nt_cas), dtrad_cas(nlev_cas, nt_cas)) 142 allocate(hq_cas(nlev_cas, nt_cas), vq_cas(nlev_cas, nt_cas), dq_cas(nlev_cas, nt_cas)) 143 allocate(hth_cas(nlev_cas, nt_cas), vth_cas(nlev_cas, nt_cas), dth_cas(nlev_cas, nt_cas)) 144 allocate(hr_cas(nlev_cas, nt_cas), vr_cas(nlev_cas, nt_cas), dr_cas(nlev_cas, nt_cas)) 145 allocate(hu_cas(nlev_cas, nt_cas), vu_cas(nlev_cas, nt_cas), du_cas(nlev_cas, nt_cas)) 146 allocate(hv_cas(nlev_cas, nt_cas), vv_cas(nlev_cas, nt_cas), dv_cas(nlev_cas, nt_cas)) 147 allocate(vitw_cas(nlev_cas, nt_cas)) 148 allocate(ug_cas(nlev_cas, nt_cas)) 149 allocate(vg_cas(nlev_cas, nt_cas)) 150 allocate(lat_cas(nt_cas), sens_cas(nt_cas), ts_cas(nt_cas), ustar_cas(nt_cas)) 151 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)) 152 153 154 !champs interpoles 155 allocate(plev_prof_cas(nlev_cas)) 156 allocate(t_prof_cas(nlev_cas)) 157 allocate(q_prof_cas(nlev_cas)) 158 allocate(u_prof_cas(nlev_cas)) 159 allocate(v_prof_cas(nlev_cas)) 160 161 allocate(vitw_prof_cas(nlev_cas)) 162 allocate(ug_prof_cas(nlev_cas)) 163 allocate(vg_prof_cas(nlev_cas)) 164 allocate(ht_prof_cas(nlev_cas)) 165 allocate(hq_prof_cas(nlev_cas)) 166 allocate(hu_prof_cas(nlev_cas)) 167 allocate(hv_prof_cas(nlev_cas)) 168 allocate(vt_prof_cas(nlev_cas)) 169 allocate(vq_prof_cas(nlev_cas)) 170 allocate(vu_prof_cas(nlev_cas)) 171 allocate(vv_prof_cas(nlev_cas)) 172 allocate(dt_prof_cas(nlev_cas)) 173 allocate(dtrad_prof_cas(nlev_cas)) 174 allocate(dq_prof_cas(nlev_cas)) 175 allocate(du_prof_cas(nlev_cas)) 176 allocate(dv_prof_cas(nlev_cas)) 177 allocate(uw_prof_cas(nlev_cas)) 178 allocate(vw_prof_cas(nlev_cas)) 179 allocate(q1_prof_cas(nlev_cas)) 180 allocate(q2_prof_cas(nlev_cas)) 181 182 PRINT*, 'Allocations OK' 183 CALL read_cas(nid, nlev_cas, nt_cas & 184 , z_cas, plev_cas, t_cas, q_cas, rh_cas, th_cas, rv_cas, u_cas, v_cas & 185 , ug_cas, vg_cas, vitw_cas, du_cas, hu_cas, vu_cas, dv_cas, hv_cas, vv_cas & 186 , dt_cas, dtrad_cas, ht_cas, vt_cas, dq_cas, hq_cas, vq_cas & 187 , dth_cas, hth_cas, vth_cas, dr_cas, hr_cas, vr_cas, sens_cas, lat_cas, ts_cas& 188 , ustar_cas, uw_cas, vw_cas, q1_cas, q2_cas) 189 PRINT*, 'Read cas OK' 190 191 END SUBROUTINE read_1D_cas 192 193 194 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 195 SUBROUTINE deallocate_1D_cases 196 !profils environnementaux: 197 deallocate(plev_cas) 198 199 deallocate(z_cas) 200 deallocate(t_cas, q_cas, rh_cas) 201 deallocate(th_cas, rv_cas) 202 deallocate(u_cas) 203 deallocate(v_cas) 204 205 !forcing 206 deallocate(ht_cas, vt_cas, dt_cas, dtrad_cas) 207 deallocate(hq_cas, vq_cas, dq_cas) 208 deallocate(hth_cas, vth_cas, dth_cas) 209 deallocate(hr_cas, vr_cas, dr_cas) 210 deallocate(hu_cas, vu_cas, du_cas) 211 deallocate(hv_cas, vv_cas, dv_cas) 212 deallocate(vitw_cas) 213 deallocate(ug_cas) 214 deallocate(vg_cas) 215 deallocate(lat_cas, sens_cas, ts_cas, ustar_cas, uw_cas, vw_cas, q1_cas, q2_cas) 216 217 !champs interpoles 218 deallocate(plev_prof_cas) 219 deallocate(t_prof_cas) 220 deallocate(q_prof_cas) 221 deallocate(u_prof_cas) 222 deallocate(v_prof_cas) 223 224 deallocate(vitw_prof_cas) 225 deallocate(ug_prof_cas) 226 deallocate(vg_prof_cas) 227 deallocate(ht_prof_cas) 228 deallocate(hq_prof_cas) 229 deallocate(hu_prof_cas) 230 deallocate(hv_prof_cas) 231 deallocate(vt_prof_cas) 232 deallocate(vq_prof_cas) 233 deallocate(vu_prof_cas) 234 deallocate(vv_prof_cas) 235 deallocate(dt_prof_cas) 236 deallocate(dtrad_prof_cas) 237 deallocate(dq_prof_cas) 238 deallocate(du_prof_cas) 239 deallocate(dv_prof_cas) 240 deallocate(t_prof_cas) 241 deallocate(q_prof_cas) 242 deallocate(u_prof_cas) 243 deallocate(v_prof_cas) 244 deallocate(uw_prof_cas) 245 deallocate(vw_prof_cas) 246 deallocate(q1_prof_cas) 247 deallocate(q2_prof_cas) 248 249 END SUBROUTINE deallocate_1D_cases 254 250 255 251 !===================================================================== 256 SUBROUTINE read_cas(nid,nlevel,ntime & 257 ,zz,pp,temp,qv,rh,theta,rv,u,v,ug,vg,w, & 258 du,hu,vu,dv,hv,vv,dt,dtrad,ht,vt,dq,hq,vq, & 259 dth,hth,vth,dr,hr,vr,sens,flat,ts,ustar,uw,vw,q1,q2) 260 261 !program reading forcing of the case study 262 263 INTEGER ntime,nlevel 264 265 REAL zz(nlevel,ntime) 266 REAL pp(nlevel,ntime) 267 REAL temp(nlevel,ntime),qv(nlevel,ntime),rh(nlevel,ntime) 268 REAL theta(nlevel,ntime),rv(nlevel,ntime) 269 REAL u(nlevel,ntime) 270 REAL v(nlevel,ntime) 271 REAL ug(nlevel,ntime) 272 REAL vg(nlevel,ntime) 273 REAL w(nlevel,ntime) 274 REAL du(nlevel,ntime),hu(nlevel,ntime),vu(nlevel,ntime) 275 REAL dv(nlevel,ntime),hv(nlevel,ntime),vv(nlevel,ntime) 276 REAL dt(nlevel,ntime),ht(nlevel,ntime),vt(nlevel,ntime) 277 REAL dtrad(nlevel,ntime) 278 REAL dq(nlevel,ntime),hq(nlevel,ntime),vq(nlevel,ntime) 279 REAL dth(nlevel,ntime),hth(nlevel,ntime),vth(nlevel,ntime) 280 REAL dr(nlevel,ntime),hr(nlevel,ntime),vr(nlevel,ntime) 281 REAL flat(ntime),sens(ntime),ts(ntime),ustar(ntime) 282 REAL uw(nlevel,ntime),vw(nlevel,ntime),q1(nlevel,ntime),q2(nlevel,ntime) 283 284 285 INTEGER nid, ierr,rid 286 INTEGER nbvar3d 287 parameter(nbvar3d=39) 288 INTEGER var3didin(nbvar3d) 289 290 ierr=nf90_inq_varid(nid,"zz",var3didin(1)) 291 IF(ierr/=nf90_noerr) THEN 292 WRITE(*,*) nf90_strerror(ierr) 293 stop 'lev' 294 endif 295 296 ierr=nf90_inq_varid(nid,"pp",var3didin(2)) 297 IF(ierr/=nf90_noerr) THEN 298 WRITE(*,*) nf90_strerror(ierr) 299 stop 'plev' 300 endif 301 302 303 ierr=nf90_inq_varid(nid,"temp",var3didin(3)) 304 IF(ierr/=nf90_noerr) THEN 305 WRITE(*,*) nf90_strerror(ierr) 306 stop 'temp' 307 endif 308 309 ierr=nf90_inq_varid(nid,"qv",var3didin(4)) 310 IF(ierr/=nf90_noerr) THEN 311 WRITE(*,*) nf90_strerror(ierr) 312 stop 'qv' 313 endif 314 315 ierr=nf90_inq_varid(nid,"rh",var3didin(5)) 316 IF(ierr/=nf90_noerr) THEN 317 WRITE(*,*) nf90_strerror(ierr) 318 stop 'rh' 319 endif 320 321 ierr=nf90_inq_varid(nid,"theta",var3didin(6)) 322 IF(ierr/=nf90_noerr) THEN 323 WRITE(*,*) nf90_strerror(ierr) 324 stop 'theta' 325 endif 326 327 ierr=nf90_inq_varid(nid,"rv",var3didin(7)) 328 IF(ierr/=nf90_noerr) THEN 329 WRITE(*,*) nf90_strerror(ierr) 330 stop 'rv' 331 endif 332 333 334 ierr=nf90_inq_varid(nid,"u",var3didin(8)) 335 IF(ierr/=nf90_noerr) THEN 336 WRITE(*,*) nf90_strerror(ierr) 337 stop 'u' 338 endif 339 340 ierr=nf90_inq_varid(nid,"v",var3didin(9)) 341 IF(ierr/=nf90_noerr) THEN 342 WRITE(*,*) nf90_strerror(ierr) 343 stop 'v' 344 endif 345 346 ierr=nf90_inq_varid(nid,"ug",var3didin(10)) 347 IF(ierr/=nf90_noerr) THEN 348 WRITE(*,*) nf90_strerror(ierr) 349 stop 'ug' 350 endif 351 352 ierr=nf90_inq_varid(nid,"vg",var3didin(11)) 353 IF(ierr/=nf90_noerr) THEN 354 WRITE(*,*) nf90_strerror(ierr) 355 stop 'vg' 356 endif 357 358 ierr=nf90_inq_varid(nid,"w",var3didin(12)) 359 IF(ierr/=nf90_noerr) THEN 360 WRITE(*,*) nf90_strerror(ierr) 361 stop 'w' 362 endif 363 364 ierr=nf90_inq_varid(nid,"advu",var3didin(13)) 365 IF(ierr/=nf90_noerr) THEN 366 WRITE(*,*) nf90_strerror(ierr) 367 stop 'advu' 368 endif 369 370 ierr=nf90_inq_varid(nid,"hu",var3didin(14)) 371 IF(ierr/=nf90_noerr) THEN 372 WRITE(*,*) nf90_strerror(ierr) 373 stop 'hu' 374 endif 375 376 ierr=nf90_inq_varid(nid,"vu",var3didin(15)) 377 IF(ierr/=nf90_noerr) THEN 378 WRITE(*,*) nf90_strerror(ierr) 379 stop 'vu' 380 endif 381 382 ierr=nf90_inq_varid(nid,"advv",var3didin(16)) 383 IF(ierr/=nf90_noerr) THEN 384 WRITE(*,*) nf90_strerror(ierr) 385 stop 'advv' 386 endif 387 388 ierr=nf90_inq_varid(nid,"hv",var3didin(17)) 389 IF(ierr/=nf90_noerr) THEN 390 WRITE(*,*) nf90_strerror(ierr) 391 stop 'hv' 392 endif 393 394 ierr=nf90_inq_varid(nid,"vv",var3didin(18)) 395 IF(ierr/=nf90_noerr) THEN 396 WRITE(*,*) nf90_strerror(ierr) 397 stop 'vv' 398 endif 399 400 ierr=nf90_inq_varid(nid,"advT",var3didin(19)) 401 IF(ierr/=nf90_noerr) THEN 402 WRITE(*,*) nf90_strerror(ierr) 403 stop 'advT' 404 endif 405 406 ierr=nf90_inq_varid(nid,"hT",var3didin(20)) 407 IF(ierr/=nf90_noerr) THEN 408 WRITE(*,*) nf90_strerror(ierr) 409 stop 'hT' 410 endif 411 412 ierr=nf90_inq_varid(nid,"vT",var3didin(21)) 413 IF(ierr/=nf90_noerr) THEN 414 WRITE(*,*) nf90_strerror(ierr) 415 stop 'vT' 416 endif 417 418 ierr=nf90_inq_varid(nid,"advq",var3didin(22)) 419 IF(ierr/=nf90_noerr) THEN 420 WRITE(*,*) nf90_strerror(ierr) 421 stop 'advq' 422 endif 423 424 ierr=nf90_inq_varid(nid,"hq",var3didin(23)) 425 IF(ierr/=nf90_noerr) THEN 426 WRITE(*,*) nf90_strerror(ierr) 427 stop 'hq' 428 endif 429 430 ierr=nf90_inq_varid(nid,"vq",var3didin(24)) 431 IF(ierr/=nf90_noerr) THEN 432 WRITE(*,*) nf90_strerror(ierr) 433 stop 'vq' 434 endif 435 436 ierr=nf90_inq_varid(nid,"advth",var3didin(25)) 437 IF(ierr/=nf90_noerr) THEN 438 WRITE(*,*) nf90_strerror(ierr) 439 stop 'advth' 440 endif 441 442 ierr=nf90_inq_varid(nid,"hth",var3didin(26)) 443 IF(ierr/=nf90_noerr) THEN 444 WRITE(*,*) nf90_strerror(ierr) 445 stop 'hth' 446 endif 447 448 ierr=nf90_inq_varid(nid,"vth",var3didin(27)) 449 IF(ierr/=nf90_noerr) THEN 450 WRITE(*,*) nf90_strerror(ierr) 451 stop 'vth' 452 endif 453 454 ierr=nf90_inq_varid(nid,"advr",var3didin(28)) 455 IF(ierr/=nf90_noerr) THEN 456 WRITE(*,*) nf90_strerror(ierr) 457 stop 'advr' 458 endif 459 460 ierr=nf90_inq_varid(nid,"hr",var3didin(29)) 461 IF(ierr/=nf90_noerr) THEN 462 WRITE(*,*) nf90_strerror(ierr) 463 stop 'hr' 464 endif 465 466 ierr=nf90_inq_varid(nid,"vr",var3didin(30)) 467 IF(ierr/=nf90_noerr) THEN 468 WRITE(*,*) nf90_strerror(ierr) 469 stop 'vr' 470 endif 471 472 ierr=nf90_inq_varid(nid,"radT",var3didin(31)) 473 IF(ierr/=nf90_noerr) THEN 474 WRITE(*,*) nf90_strerror(ierr) 475 stop 'radT' 476 endif 477 478 ierr=nf90_inq_varid(nid,"sens",var3didin(32)) 479 IF(ierr/=nf90_noerr) THEN 480 WRITE(*,*) nf90_strerror(ierr) 481 stop 'sens' 482 endif 483 484 ierr=nf90_inq_varid(nid,"flat",var3didin(33)) 485 IF(ierr/=nf90_noerr) THEN 486 WRITE(*,*) nf90_strerror(ierr) 487 stop 'flat' 488 endif 489 490 ierr=nf90_inq_varid(nid,"ts",var3didin(34)) 491 IF(ierr/=nf90_noerr) THEN 492 WRITE(*,*) nf90_strerror(ierr) 493 stop 'ts' 494 endif 495 496 ierr=nf90_inq_varid(nid,"ustar",var3didin(35)) 497 IF(ierr/=nf90_noerr) THEN 498 WRITE(*,*) nf90_strerror(ierr) 499 stop 'ustar' 500 endif 501 502 ierr=nf90_inq_varid(nid,"uw",var3didin(36)) 503 IF(ierr/=nf90_noerr) THEN 504 WRITE(*,*) nf90_strerror(ierr) 505 stop 'uw' 506 endif 507 508 ierr=nf90_inq_varid(nid,"vw",var3didin(37)) 509 IF(ierr/=nf90_noerr) THEN 510 WRITE(*,*) nf90_strerror(ierr) 511 stop 'vw' 512 endif 513 514 ierr=nf90_inq_varid(nid,"q1",var3didin(38)) 515 IF(ierr/=nf90_noerr) THEN 516 WRITE(*,*) nf90_strerror(ierr) 517 stop 'q1' 518 endif 519 520 ierr=nf90_inq_varid(nid,"q2",var3didin(39)) 521 IF(ierr/=nf90_noerr) THEN 522 WRITE(*,*) nf90_strerror(ierr) 523 stop 'q2' 524 endif 525 526 ierr = nf90_get_var(nid,var3didin(1),zz) 527 IF(ierr/=nf90_noerr) THEN 528 WRITE(*,*) nf90_strerror(ierr) 529 stop "getvarup" 530 endif 531 ! WRITE(*,*)'lecture z ok',zz 532 533 ierr = nf90_get_var(nid,var3didin(2),pp) 534 IF(ierr/=nf90_noerr) THEN 535 WRITE(*,*) nf90_strerror(ierr) 536 stop "getvarup" 537 endif 538 ! WRITE(*,*)'lecture pp ok',pp 539 540 541 ierr = nf90_get_var(nid,var3didin(3),temp) 542 IF(ierr/=nf90_noerr) THEN 543 WRITE(*,*) nf90_strerror(ierr) 544 stop "getvarup" 545 endif 546 ! WRITE(*,*)'lecture T ok',temp 547 548 ierr = nf90_get_var(nid,var3didin(4),qv) 549 IF(ierr/=nf90_noerr) THEN 550 WRITE(*,*) nf90_strerror(ierr) 551 stop "getvarup" 552 endif 553 ! WRITE(*,*)'lecture qv ok',qv 554 555 ierr = nf90_get_var(nid,var3didin(5),rh) 556 IF(ierr/=nf90_noerr) THEN 557 WRITE(*,*) nf90_strerror(ierr) 558 stop "getvarup" 559 endif 560 ! WRITE(*,*)'lecture rh ok',rh 561 562 ierr = nf90_get_var(nid,var3didin(6),theta) 563 IF(ierr/=nf90_noerr) THEN 564 WRITE(*,*) nf90_strerror(ierr) 565 stop "getvarup" 566 endif 567 ! WRITE(*,*)'lecture theta ok',theta 568 569 ierr = nf90_get_var(nid,var3didin(7),rv) 570 IF(ierr/=nf90_noerr) THEN 571 WRITE(*,*) nf90_strerror(ierr) 572 stop "getvarup" 573 endif 574 ! WRITE(*,*)'lecture rv ok',rv 575 576 ierr = nf90_get_var(nid,var3didin(8),u) 577 IF(ierr/=nf90_noerr) THEN 578 WRITE(*,*) nf90_strerror(ierr) 579 stop "getvarup" 580 endif 581 ! WRITE(*,*)'lecture u ok',u 582 583 ierr = nf90_get_var(nid,var3didin(9),v) 584 IF(ierr/=nf90_noerr) THEN 585 WRITE(*,*) nf90_strerror(ierr) 586 stop "getvarup" 587 endif 588 ! WRITE(*,*)'lecture v ok',v 589 590 ierr = nf90_get_var(nid,var3didin(10),ug) 591 IF(ierr/=nf90_noerr) THEN 592 WRITE(*,*) nf90_strerror(ierr) 593 stop "getvarup" 594 endif 595 ! WRITE(*,*)'lecture ug ok',ug 596 597 ierr = nf90_get_var(nid,var3didin(11),vg) 598 IF(ierr/=nf90_noerr) THEN 599 WRITE(*,*) nf90_strerror(ierr) 600 stop "getvarup" 601 endif 602 ! WRITE(*,*)'lecture vg ok',vg 603 604 ierr = nf90_get_var(nid,var3didin(12),w) 605 IF(ierr/=nf90_noerr) THEN 606 WRITE(*,*) nf90_strerror(ierr) 607 stop "getvarup" 608 endif 609 ! WRITE(*,*)'lecture w ok',w 610 611 ierr = nf90_get_var(nid,var3didin(13),du) 612 IF(ierr/=nf90_noerr) THEN 613 WRITE(*,*) nf90_strerror(ierr) 614 stop "getvarup" 615 endif 616 ! WRITE(*,*)'lecture du ok',du 617 618 ierr = nf90_get_var(nid,var3didin(14),hu) 619 IF(ierr/=nf90_noerr) THEN 620 WRITE(*,*) nf90_strerror(ierr) 621 stop "getvarup" 622 endif 623 ! WRITE(*,*)'lecture hu ok',hu 624 625 ierr = nf90_get_var(nid,var3didin(15),vu) 626 IF(ierr/=nf90_noerr) THEN 627 WRITE(*,*) nf90_strerror(ierr) 628 stop "getvarup" 629 endif 630 ! WRITE(*,*)'lecture vu ok',vu 631 632 ierr = nf90_get_var(nid,var3didin(16),dv) 633 IF(ierr/=nf90_noerr) THEN 634 WRITE(*,*) nf90_strerror(ierr) 635 stop "getvarup" 636 endif 637 ! WRITE(*,*)'lecture dv ok',dv 638 639 ierr = nf90_get_var(nid,var3didin(17),hv) 640 IF(ierr/=nf90_noerr) THEN 641 WRITE(*,*) nf90_strerror(ierr) 642 stop "getvarup" 643 endif 644 ! WRITE(*,*)'lecture hv ok',hv 645 646 ierr = nf90_get_var(nid,var3didin(18),vv) 647 IF(ierr/=nf90_noerr) THEN 648 WRITE(*,*) nf90_strerror(ierr) 649 stop "getvarup" 650 endif 651 ! WRITE(*,*)'lecture vv ok',vv 652 653 ierr = nf90_get_var(nid,var3didin(19),dt) 654 IF(ierr/=nf90_noerr) THEN 655 WRITE(*,*) nf90_strerror(ierr) 656 stop "getvarup" 657 endif 658 ! WRITE(*,*)'lecture dt ok',dt 659 660 ierr = nf90_get_var(nid,var3didin(20),ht) 661 IF(ierr/=nf90_noerr) THEN 662 WRITE(*,*) nf90_strerror(ierr) 663 stop "getvarup" 664 endif 665 ! WRITE(*,*)'lecture ht ok',ht 666 667 ierr = nf90_get_var(nid,var3didin(21),vt) 668 IF(ierr/=nf90_noerr) THEN 669 WRITE(*,*) nf90_strerror(ierr) 670 stop "getvarup" 671 endif 672 ! WRITE(*,*)'lecture vt ok',vt 673 674 ierr = nf90_get_var(nid,var3didin(22),dq) 675 IF(ierr/=nf90_noerr) THEN 676 WRITE(*,*) nf90_strerror(ierr) 677 stop "getvarup" 678 endif 679 ! WRITE(*,*)'lecture dq ok',dq 680 681 ierr = nf90_get_var(nid,var3didin(23),hq) 682 IF(ierr/=nf90_noerr) THEN 683 WRITE(*,*) nf90_strerror(ierr) 684 stop "getvarup" 685 endif 686 ! WRITE(*,*)'lecture hq ok',hq 687 688 ierr = nf90_get_var(nid,var3didin(24),vq) 689 IF(ierr/=nf90_noerr) THEN 690 WRITE(*,*) nf90_strerror(ierr) 691 stop "getvarup" 692 endif 693 ! WRITE(*,*)'lecture vq ok',vq 694 695 ierr = nf90_get_var(nid,var3didin(25),dth) 696 IF(ierr/=nf90_noerr) THEN 697 WRITE(*,*) nf90_strerror(ierr) 698 stop "getvarup" 699 endif 700 ! WRITE(*,*)'lecture dth ok',dth 701 702 ierr = nf90_get_var(nid,var3didin(26),hth) 703 IF(ierr/=nf90_noerr) THEN 704 WRITE(*,*) nf90_strerror(ierr) 705 stop "getvarup" 706 endif 707 ! WRITE(*,*)'lecture hth ok',hth 708 709 ierr = nf90_get_var(nid,var3didin(27),vth) 710 IF(ierr/=nf90_noerr) THEN 711 WRITE(*,*) nf90_strerror(ierr) 712 stop "getvarup" 713 endif 714 ! WRITE(*,*)'lecture vth ok',vth 715 716 ierr = nf90_get_var(nid,var3didin(28),dr) 717 IF(ierr/=nf90_noerr) THEN 718 WRITE(*,*) nf90_strerror(ierr) 719 stop "getvarup" 720 endif 721 ! WRITE(*,*)'lecture dr ok',dr 722 723 ierr = nf90_get_var(nid,var3didin(29),hr) 724 IF(ierr/=nf90_noerr) THEN 725 WRITE(*,*) nf90_strerror(ierr) 726 stop "getvarup" 727 endif 728 ! WRITE(*,*)'lecture hr ok',hr 729 730 ierr = nf90_get_var(nid,var3didin(30),vr) 731 IF(ierr/=nf90_noerr) THEN 732 WRITE(*,*) nf90_strerror(ierr) 733 stop "getvarup" 734 endif 735 ! WRITE(*,*)'lecture vr ok',vr 736 737 ierr = nf90_get_var(nid,var3didin(31),dtrad) 738 IF(ierr/=nf90_noerr) THEN 739 WRITE(*,*) nf90_strerror(ierr) 740 stop "getvarup" 741 endif 742 ! WRITE(*,*)'lecture dtrad ok',dtrad 743 744 ierr = nf90_get_var(nid,var3didin(32),sens) 745 IF(ierr/=nf90_noerr) THEN 746 WRITE(*,*) nf90_strerror(ierr) 747 stop "getvarup" 748 endif 749 ! WRITE(*,*)'lecture sens ok',sens 750 751 ierr = nf90_get_var(nid,var3didin(33),flat) 752 IF(ierr/=nf90_noerr) THEN 753 WRITE(*,*) nf90_strerror(ierr) 754 stop "getvarup" 755 endif 756 ! WRITE(*,*)'lecture flat ok',flat 757 758 ierr = nf90_get_var(nid,var3didin(34),ts) 759 IF(ierr/=nf90_noerr) THEN 760 WRITE(*,*) nf90_strerror(ierr) 761 stop "getvarup" 762 endif 763 ! WRITE(*,*)'lecture ts ok',ts 764 765 ierr = nf90_get_var(nid,var3didin(35),ustar) 766 IF(ierr/=nf90_noerr) THEN 767 WRITE(*,*) nf90_strerror(ierr) 768 stop "getvarup" 769 endif 770 ! WRITE(*,*)'lecture ustar ok',ustar 771 772 ierr = nf90_get_var(nid,var3didin(36),uw) 773 IF(ierr/=nf90_noerr) THEN 774 WRITE(*,*) nf90_strerror(ierr) 775 stop "getvarup" 776 endif 777 ! WRITE(*,*)'lecture uw ok',uw 778 779 ierr = nf90_get_var(nid,var3didin(37),vw) 780 IF(ierr/=nf90_noerr) THEN 781 WRITE(*,*) nf90_strerror(ierr) 782 stop "getvarup" 783 endif 784 ! WRITE(*,*)'lecture vw ok',vw 785 786 ierr = nf90_get_var(nid,var3didin(38),q1) 787 IF(ierr/=nf90_noerr) THEN 788 WRITE(*,*) nf90_strerror(ierr) 789 stop "getvarup" 790 endif 791 ! WRITE(*,*)'lecture q1 ok',q1 792 793 ierr = nf90_get_var(nid,var3didin(39),q2) 794 IF(ierr/=nf90_noerr) THEN 795 WRITE(*,*) nf90_strerror(ierr) 796 stop "getvarup" 797 endif 798 ! WRITE(*,*)'lecture q2 ok',q2 799 800 801 802 END SUBROUTINE read_cas 803 !====================================================================== 804 SUBROUTINE interp_case_time(day,day1,annee_ref & 805 ! & ,year_cas,day_cas,nt_cas,pdt_forc,nlev_cas & 806 ,nt_cas,nlev_cas & 807 ,ts_cas,plev_cas,t_cas,q_cas,u_cas,v_cas & 808 ,ug_cas,vg_cas,vitw_cas,du_cas,hu_cas,vu_cas & 809 ,dv_cas,hv_cas,vv_cas,dt_cas,ht_cas,vt_cas,dtrad_cas & 810 ,dq_cas,hq_cas,vq_cas,lat_cas,sens_cas,ustar_cas & 811 ,uw_cas,vw_cas,q1_cas,q2_cas & 812 ,ts_prof_cas,plev_prof_cas,t_prof_cas,q_prof_cas & 813 ,u_prof_cas,v_prof_cas,ug_prof_cas,vg_prof_cas & 814 ,vitw_prof_cas,du_prof_cas,hu_prof_cas,vu_prof_cas & 815 ,dv_prof_cas,hv_prof_cas,vv_prof_cas,dt_prof_cas & 816 ,ht_prof_cas,vt_prof_cas,dtrad_prof_cas,dq_prof_cas & 817 ,hq_prof_cas,vq_prof_cas,lat_prof_cas,sens_prof_cas & 818 ,ustar_prof_cas,uw_prof_cas,vw_prof_cas,q1_prof_cas,q2_prof_cas) 819 820 821 IMPLICIT NONE 822 823 !--------------------------------------------------------------------------------------- 824 ! Time interpolation of a 2D field to the timestep corresponding to day 825 826 ! day: current julian day (e.g. 717538.2) 827 ! day1: first day of the simulation 828 ! nt_cas: total nb of data in the forcing 829 ! pdt_cas: total time interval (in sec) between 2 forcing data 830 !--------------------------------------------------------------------------------------- 831 832 INCLUDE "compar1d.h" 833 INCLUDE "date_cas.h" 834 835 ! inputs: 836 INTEGER annee_ref 837 INTEGER nt_cas,nlev_cas 838 REAL day, day1,day_cas 839 REAL ts_cas(nt_cas) 840 REAL plev_cas(nlev_cas,nt_cas) 841 REAL t_cas(nlev_cas,nt_cas),q_cas(nlev_cas,nt_cas) 842 REAL u_cas(nlev_cas,nt_cas),v_cas(nlev_cas,nt_cas) 843 REAL ug_cas(nlev_cas,nt_cas),vg_cas(nlev_cas,nt_cas) 844 REAL vitw_cas(nlev_cas,nt_cas) 845 REAL du_cas(nlev_cas,nt_cas),hu_cas(nlev_cas,nt_cas),vu_cas(nlev_cas,nt_cas) 846 REAL dv_cas(nlev_cas,nt_cas),hv_cas(nlev_cas,nt_cas),vv_cas(nlev_cas,nt_cas) 847 REAL dt_cas(nlev_cas,nt_cas),ht_cas(nlev_cas,nt_cas),vt_cas(nlev_cas,nt_cas) 848 REAL dtrad_cas(nlev_cas,nt_cas) 849 REAL dq_cas(nlev_cas,nt_cas),hq_cas(nlev_cas,nt_cas),vq_cas(nlev_cas,nt_cas) 850 REAL lat_cas(nt_cas) 851 REAL sens_cas(nt_cas) 852 REAL ustar_cas(nt_cas),uw_cas(nlev_cas,nt_cas),vw_cas(nlev_cas,nt_cas) 853 REAL q1_cas(nlev_cas,nt_cas),q2_cas(nlev_cas,nt_cas) 854 855 ! outputs: 856 REAL plev_prof_cas(nlev_cas) 857 REAL t_prof_cas(nlev_cas),q_prof_cas(nlev_cas) 858 REAL u_prof_cas(nlev_cas),v_prof_cas(nlev_cas) 859 REAL ug_prof_cas(nlev_cas),vg_prof_cas(nlev_cas) 860 REAL vitw_prof_cas(nlev_cas) 861 REAL du_prof_cas(nlev_cas),hu_prof_cas(nlev_cas),vu_prof_cas(nlev_cas) 862 REAL dv_prof_cas(nlev_cas),hv_prof_cas(nlev_cas),vv_prof_cas(nlev_cas) 863 REAL dt_prof_cas(nlev_cas),ht_prof_cas(nlev_cas),vt_prof_cas(nlev_cas) 864 REAL dtrad_prof_cas(nlev_cas) 865 REAL dq_prof_cas(nlev_cas),hq_prof_cas(nlev_cas),vq_prof_cas(nlev_cas) 866 REAL lat_prof_cas,sens_prof_cas,ts_prof_cas,ustar_prof_cas 867 REAL uw_prof_cas(nlev_cas),vw_prof_cas(nlev_cas),q1_prof_cas(nlev_cas),q2_prof_cas(nlev_cas) 868 ! local: 869 INTEGER it_cas1, it_cas2,k 870 REAL timeit,time_cas1,time_cas2,frac 871 872 873 PRINT*,'Check time',day1,day_ju_ini_cas,day_deb+1,pdt_cas 874 875 ! On teste si la date du cas AMMA est correcte. 876 ! C est pour memoire car en fait les fichiers .def 877 ! sont censes etre corrects. 878 ! A supprimer a terme (MPL 20150623) 879 ! if ((forcing_type.EQ.10).AND.(1.EQ.0)) THEN 880 ! Check that initial day of the simulation consistent with AMMA case: 881 ! if (annee_ref.NE.2006) THEN 882 ! PRINT*,'Pour AMMA, annee_ref doit etre 2006' 883 ! PRINT*,'Changer annee_ref dans run.def' 884 ! stop 885 ! endif 886 ! if (annee_ref.EQ.2006 .AND. day1.lt.day_cas) THEN 887 ! PRINT*,'AMMA a debute le 10 juillet 2006',day1,day_cas 888 ! PRINT*,'Changer dayref dans run.def' 889 ! stop 890 ! endif 891 ! if (annee_ref.EQ.2006 .AND. day1.gt.day_cas+1) THEN 892 ! PRINT*,'AMMA a fini le 11 juillet' 893 ! PRINT*,'Changer dayref ou nday dans run.def' 894 ! stop 895 ! endif 896 ! endif 897 898 ! Determine timestep relative to the 1st day: 899 ! timeit=(day-day1)*86400. 900 ! if (annee_ref.EQ.1992) THEN 901 ! timeit=(day-day_cas)*86400. 902 ! else 903 ! timeit=(day+61.-1.)*86400. ! 61 days between Nov01 and Dec31 1992 904 ! endif 905 timeit=(day-day_ju_ini_cas)*86400 906 print *,'day=',day 907 print *,'day_ju_ini_cas=',day_ju_ini_cas 908 print *,'pdt_cas=',pdt_cas 909 print *,'timeit=',timeit 910 print *,'nt_cas=',nt_cas 911 912 ! Determine the closest observation times: 913 ! it_cas1=INT(timeit/pdt_cas)+1 914 ! it_cas2=it_cas1 + 1 915 ! time_cas1=(it_cas1-1)*pdt_cas 916 ! time_cas2=(it_cas2-1)*pdt_cas 917 918 it_cas1=INT(timeit/pdt_cas)+1 919 IF (it_cas1 == nt_cas) THEN 920 it_cas2=it_cas1 921 ELSE 922 it_cas2=it_cas1 + 1 923 ENDIF 924 time_cas1=(it_cas1-1)*pdt_cas 925 time_cas2=(it_cas2-1)*pdt_cas 926 print *,'it_cas1=',it_cas1 927 print *,'it_cas2=',it_cas2 928 print *,'time_cas1=',time_cas1 929 print *,'time_cas2=',time_cas2 930 931 IF (it_cas1 > nt_cas) THEN 932 WRITE(*,*) 'PB-stop: day, day_ju_ini_cas,it_cas1, it_cas2, timeit: ' & 933 ,day,day_ju_ini_cas,it_cas1,it_cas2,timeit 934 stop 935 endif 936 937 ! time interpolation: 938 IF (it_cas1 == it_cas2) THEN 939 frac=0. 940 ELSE 941 frac=(time_cas2-timeit)/(time_cas2-time_cas1) 942 frac=max(frac,0.0) 943 ENDIF 944 945 lat_prof_cas = lat_cas(it_cas2) & 946 -frac*(lat_cas(it_cas2)-lat_cas(it_cas1)) 947 sens_prof_cas = sens_cas(it_cas2) & 948 -frac*(sens_cas(it_cas2)-sens_cas(it_cas1)) 949 ts_prof_cas = ts_cas(it_cas2) & 950 -frac*(ts_cas(it_cas2)-ts_cas(it_cas1)) 951 ustar_prof_cas = ustar_cas(it_cas2) & 952 -frac*(ustar_cas(it_cas2)-ustar_cas(it_cas1)) 953 954 do k=1,nlev_cas 955 plev_prof_cas(k) = plev_cas(k,it_cas2) & 956 -frac*(plev_cas(k,it_cas2)-plev_cas(k,it_cas1)) 957 t_prof_cas(k) = t_cas(k,it_cas2) & 958 -frac*(t_cas(k,it_cas2)-t_cas(k,it_cas1)) 959 q_prof_cas(k) = q_cas(k,it_cas2) & 960 -frac*(q_cas(k,it_cas2)-q_cas(k,it_cas1)) 961 u_prof_cas(k) = u_cas(k,it_cas2) & 962 -frac*(u_cas(k,it_cas2)-u_cas(k,it_cas1)) 963 v_prof_cas(k) = v_cas(k,it_cas2) & 964 -frac*(v_cas(k,it_cas2)-v_cas(k,it_cas1)) 965 ug_prof_cas(k) = ug_cas(k,it_cas2) & 966 -frac*(ug_cas(k,it_cas2)-ug_cas(k,it_cas1)) 967 vg_prof_cas(k) = vg_cas(k,it_cas2) & 968 -frac*(vg_cas(k,it_cas2)-vg_cas(k,it_cas1)) 969 vitw_prof_cas(k) = vitw_cas(k,it_cas2) & 970 -frac*(vitw_cas(k,it_cas2)-vitw_cas(k,it_cas1)) 971 du_prof_cas(k) = du_cas(k,it_cas2) & 972 -frac*(du_cas(k,it_cas2)-du_cas(k,it_cas1)) 973 hu_prof_cas(k) = hu_cas(k,it_cas2) & 974 -frac*(hu_cas(k,it_cas2)-hu_cas(k,it_cas1)) 975 vu_prof_cas(k) = vu_cas(k,it_cas2) & 976 -frac*(vu_cas(k,it_cas2)-vu_cas(k,it_cas1)) 977 dv_prof_cas(k) = dv_cas(k,it_cas2) & 978 -frac*(dv_cas(k,it_cas2)-dv_cas(k,it_cas1)) 979 hv_prof_cas(k) = hv_cas(k,it_cas2) & 980 -frac*(hv_cas(k,it_cas2)-hv_cas(k,it_cas1)) 981 vv_prof_cas(k) = vv_cas(k,it_cas2) & 982 -frac*(vv_cas(k,it_cas2)-vv_cas(k,it_cas1)) 983 dt_prof_cas(k) = dt_cas(k,it_cas2) & 984 -frac*(dt_cas(k,it_cas2)-dt_cas(k,it_cas1)) 985 ht_prof_cas(k) = ht_cas(k,it_cas2) & 986 -frac*(ht_cas(k,it_cas2)-ht_cas(k,it_cas1)) 987 vt_prof_cas(k) = vt_cas(k,it_cas2) & 988 -frac*(vt_cas(k,it_cas2)-vt_cas(k,it_cas1)) 989 dtrad_prof_cas(k) = dtrad_cas(k,it_cas2) & 990 -frac*(dtrad_cas(k,it_cas2)-dtrad_cas(k,it_cas1)) 991 dq_prof_cas(k) = dq_cas(k,it_cas2) & 992 -frac*(dq_cas(k,it_cas2)-dq_cas(k,it_cas1)) 993 hq_prof_cas(k) = hq_cas(k,it_cas2) & 994 -frac*(hq_cas(k,it_cas2)-hq_cas(k,it_cas1)) 995 vq_prof_cas(k) = vq_cas(k,it_cas2) & 996 -frac*(vq_cas(k,it_cas2)-vq_cas(k,it_cas1)) 997 uw_prof_cas(k) = uw_cas(k,it_cas2) & 998 -frac*(uw_cas(k,it_cas2)-uw_cas(k,it_cas1)) 999 vw_prof_cas(k) = vw_cas(k,it_cas2) & 1000 -frac*(vw_cas(k,it_cas2)-vw_cas(k,it_cas1)) 1001 q1_prof_cas(k) = q1_cas(k,it_cas2) & 1002 -frac*(q1_cas(k,it_cas2)-q1_cas(k,it_cas1)) 1003 q2_prof_cas(k) = q2_cas(k,it_cas2) & 1004 -frac*(q2_cas(k,it_cas2)-q2_cas(k,it_cas1)) 1005 enddo 1006 1007 RETURN 1008 END 1009 1010 !********************************************************************************************** 252 SUBROUTINE read_cas(nid, nlevel, ntime & 253 , zz, pp, temp, qv, rh, theta, rv, u, v, ug, vg, w, & 254 du, hu, vu, dv, hv, vv, dt, dtrad, ht, vt, dq, hq, vq, & 255 dth, hth, vth, dr, hr, vr, sens, flat, ts, ustar, uw, vw, q1, q2) 256 257 !program reading forcing of the case study 258 259 INTEGER ntime, nlevel 260 261 REAL zz(nlevel, ntime) 262 REAL pp(nlevel, ntime) 263 REAL temp(nlevel, ntime), qv(nlevel, ntime), rh(nlevel, ntime) 264 REAL theta(nlevel, ntime), rv(nlevel, ntime) 265 REAL u(nlevel, ntime) 266 REAL v(nlevel, ntime) 267 REAL ug(nlevel, ntime) 268 REAL vg(nlevel, ntime) 269 REAL w(nlevel, ntime) 270 REAL du(nlevel, ntime), hu(nlevel, ntime), vu(nlevel, ntime) 271 REAL dv(nlevel, ntime), hv(nlevel, ntime), vv(nlevel, ntime) 272 REAL dt(nlevel, ntime), ht(nlevel, ntime), vt(nlevel, ntime) 273 REAL dtrad(nlevel, ntime) 274 REAL dq(nlevel, ntime), hq(nlevel, ntime), vq(nlevel, ntime) 275 REAL dth(nlevel, ntime), hth(nlevel, ntime), vth(nlevel, ntime) 276 REAL dr(nlevel, ntime), hr(nlevel, ntime), vr(nlevel, ntime) 277 REAL flat(ntime), sens(ntime), ts(ntime), ustar(ntime) 278 REAL uw(nlevel, ntime), vw(nlevel, ntime), q1(nlevel, ntime), q2(nlevel, ntime) 279 280 INTEGER nid, ierr, rid 281 INTEGER nbvar3d 282 parameter(nbvar3d = 39) 283 INTEGER var3didin(nbvar3d) 284 285 ierr = nf90_inq_varid(nid, "zz", var3didin(1)) 286 IF(ierr/=nf90_noerr) THEN 287 WRITE(*, *) nf90_strerror(ierr) 288 stop 'lev' 289 endif 290 291 ierr = nf90_inq_varid(nid, "pp", var3didin(2)) 292 IF(ierr/=nf90_noerr) THEN 293 WRITE(*, *) nf90_strerror(ierr) 294 stop 'plev' 295 endif 296 297 ierr = nf90_inq_varid(nid, "temp", var3didin(3)) 298 IF(ierr/=nf90_noerr) THEN 299 WRITE(*, *) nf90_strerror(ierr) 300 stop 'temp' 301 endif 302 303 ierr = nf90_inq_varid(nid, "qv", var3didin(4)) 304 IF(ierr/=nf90_noerr) THEN 305 WRITE(*, *) nf90_strerror(ierr) 306 stop 'qv' 307 endif 308 309 ierr = nf90_inq_varid(nid, "rh", var3didin(5)) 310 IF(ierr/=nf90_noerr) THEN 311 WRITE(*, *) nf90_strerror(ierr) 312 stop 'rh' 313 endif 314 315 ierr = nf90_inq_varid(nid, "theta", var3didin(6)) 316 IF(ierr/=nf90_noerr) THEN 317 WRITE(*, *) nf90_strerror(ierr) 318 stop 'theta' 319 endif 320 321 ierr = nf90_inq_varid(nid, "rv", var3didin(7)) 322 IF(ierr/=nf90_noerr) THEN 323 WRITE(*, *) nf90_strerror(ierr) 324 stop 'rv' 325 endif 326 327 ierr = nf90_inq_varid(nid, "u", var3didin(8)) 328 IF(ierr/=nf90_noerr) THEN 329 WRITE(*, *) nf90_strerror(ierr) 330 stop 'u' 331 endif 332 333 ierr = nf90_inq_varid(nid, "v", var3didin(9)) 334 IF(ierr/=nf90_noerr) THEN 335 WRITE(*, *) nf90_strerror(ierr) 336 stop 'v' 337 endif 338 339 ierr = nf90_inq_varid(nid, "ug", var3didin(10)) 340 IF(ierr/=nf90_noerr) THEN 341 WRITE(*, *) nf90_strerror(ierr) 342 stop 'ug' 343 endif 344 345 ierr = nf90_inq_varid(nid, "vg", var3didin(11)) 346 IF(ierr/=nf90_noerr) THEN 347 WRITE(*, *) nf90_strerror(ierr) 348 stop 'vg' 349 endif 350 351 ierr = nf90_inq_varid(nid, "w", var3didin(12)) 352 IF(ierr/=nf90_noerr) THEN 353 WRITE(*, *) nf90_strerror(ierr) 354 stop 'w' 355 endif 356 357 ierr = nf90_inq_varid(nid, "advu", var3didin(13)) 358 IF(ierr/=nf90_noerr) THEN 359 WRITE(*, *) nf90_strerror(ierr) 360 stop 'advu' 361 endif 362 363 ierr = nf90_inq_varid(nid, "hu", var3didin(14)) 364 IF(ierr/=nf90_noerr) THEN 365 WRITE(*, *) nf90_strerror(ierr) 366 stop 'hu' 367 endif 368 369 ierr = nf90_inq_varid(nid, "vu", var3didin(15)) 370 IF(ierr/=nf90_noerr) THEN 371 WRITE(*, *) nf90_strerror(ierr) 372 stop 'vu' 373 endif 374 375 ierr = nf90_inq_varid(nid, "advv", var3didin(16)) 376 IF(ierr/=nf90_noerr) THEN 377 WRITE(*, *) nf90_strerror(ierr) 378 stop 'advv' 379 endif 380 381 ierr = nf90_inq_varid(nid, "hv", var3didin(17)) 382 IF(ierr/=nf90_noerr) THEN 383 WRITE(*, *) nf90_strerror(ierr) 384 stop 'hv' 385 endif 386 387 ierr = nf90_inq_varid(nid, "vv", var3didin(18)) 388 IF(ierr/=nf90_noerr) THEN 389 WRITE(*, *) nf90_strerror(ierr) 390 stop 'vv' 391 endif 392 393 ierr = nf90_inq_varid(nid, "advT", var3didin(19)) 394 IF(ierr/=nf90_noerr) THEN 395 WRITE(*, *) nf90_strerror(ierr) 396 stop 'advT' 397 endif 398 399 ierr = nf90_inq_varid(nid, "hT", var3didin(20)) 400 IF(ierr/=nf90_noerr) THEN 401 WRITE(*, *) nf90_strerror(ierr) 402 stop 'hT' 403 endif 404 405 ierr = nf90_inq_varid(nid, "vT", var3didin(21)) 406 IF(ierr/=nf90_noerr) THEN 407 WRITE(*, *) nf90_strerror(ierr) 408 stop 'vT' 409 endif 410 411 ierr = nf90_inq_varid(nid, "advq", var3didin(22)) 412 IF(ierr/=nf90_noerr) THEN 413 WRITE(*, *) nf90_strerror(ierr) 414 stop 'advq' 415 endif 416 417 ierr = nf90_inq_varid(nid, "hq", var3didin(23)) 418 IF(ierr/=nf90_noerr) THEN 419 WRITE(*, *) nf90_strerror(ierr) 420 stop 'hq' 421 endif 422 423 ierr = nf90_inq_varid(nid, "vq", var3didin(24)) 424 IF(ierr/=nf90_noerr) THEN 425 WRITE(*, *) nf90_strerror(ierr) 426 stop 'vq' 427 endif 428 429 ierr = nf90_inq_varid(nid, "advth", var3didin(25)) 430 IF(ierr/=nf90_noerr) THEN 431 WRITE(*, *) nf90_strerror(ierr) 432 stop 'advth' 433 endif 434 435 ierr = nf90_inq_varid(nid, "hth", var3didin(26)) 436 IF(ierr/=nf90_noerr) THEN 437 WRITE(*, *) nf90_strerror(ierr) 438 stop 'hth' 439 endif 440 441 ierr = nf90_inq_varid(nid, "vth", var3didin(27)) 442 IF(ierr/=nf90_noerr) THEN 443 WRITE(*, *) nf90_strerror(ierr) 444 stop 'vth' 445 endif 446 447 ierr = nf90_inq_varid(nid, "advr", var3didin(28)) 448 IF(ierr/=nf90_noerr) THEN 449 WRITE(*, *) nf90_strerror(ierr) 450 stop 'advr' 451 endif 452 453 ierr = nf90_inq_varid(nid, "hr", var3didin(29)) 454 IF(ierr/=nf90_noerr) THEN 455 WRITE(*, *) nf90_strerror(ierr) 456 stop 'hr' 457 endif 458 459 ierr = nf90_inq_varid(nid, "vr", var3didin(30)) 460 IF(ierr/=nf90_noerr) THEN 461 WRITE(*, *) nf90_strerror(ierr) 462 stop 'vr' 463 endif 464 465 ierr = nf90_inq_varid(nid, "radT", var3didin(31)) 466 IF(ierr/=nf90_noerr) THEN 467 WRITE(*, *) nf90_strerror(ierr) 468 stop 'radT' 469 endif 470 471 ierr = nf90_inq_varid(nid, "sens", var3didin(32)) 472 IF(ierr/=nf90_noerr) THEN 473 WRITE(*, *) nf90_strerror(ierr) 474 stop 'sens' 475 endif 476 477 ierr = nf90_inq_varid(nid, "flat", var3didin(33)) 478 IF(ierr/=nf90_noerr) THEN 479 WRITE(*, *) nf90_strerror(ierr) 480 stop 'flat' 481 endif 482 483 ierr = nf90_inq_varid(nid, "ts", var3didin(34)) 484 IF(ierr/=nf90_noerr) THEN 485 WRITE(*, *) nf90_strerror(ierr) 486 stop 'ts' 487 endif 488 489 ierr = nf90_inq_varid(nid, "ustar", var3didin(35)) 490 IF(ierr/=nf90_noerr) THEN 491 WRITE(*, *) nf90_strerror(ierr) 492 stop 'ustar' 493 endif 494 495 ierr = nf90_inq_varid(nid, "uw", var3didin(36)) 496 IF(ierr/=nf90_noerr) THEN 497 WRITE(*, *) nf90_strerror(ierr) 498 stop 'uw' 499 endif 500 501 ierr = nf90_inq_varid(nid, "vw", var3didin(37)) 502 IF(ierr/=nf90_noerr) THEN 503 WRITE(*, *) nf90_strerror(ierr) 504 stop 'vw' 505 endif 506 507 ierr = nf90_inq_varid(nid, "q1", var3didin(38)) 508 IF(ierr/=nf90_noerr) THEN 509 WRITE(*, *) nf90_strerror(ierr) 510 stop 'q1' 511 endif 512 513 ierr = nf90_inq_varid(nid, "q2", var3didin(39)) 514 IF(ierr/=nf90_noerr) THEN 515 WRITE(*, *) nf90_strerror(ierr) 516 stop 'q2' 517 endif 518 519 ierr = nf90_get_var(nid, var3didin(1), zz) 520 IF(ierr/=nf90_noerr) THEN 521 WRITE(*, *) nf90_strerror(ierr) 522 stop "getvarup" 523 endif 524 ! WRITE(*,*)'lecture z ok',zz 525 526 ierr = nf90_get_var(nid, var3didin(2), pp) 527 IF(ierr/=nf90_noerr) THEN 528 WRITE(*, *) nf90_strerror(ierr) 529 stop "getvarup" 530 endif 531 ! WRITE(*,*)'lecture pp ok',pp 532 533 ierr = nf90_get_var(nid, var3didin(3), temp) 534 IF(ierr/=nf90_noerr) THEN 535 WRITE(*, *) nf90_strerror(ierr) 536 stop "getvarup" 537 endif 538 ! WRITE(*,*)'lecture T ok',temp 539 540 ierr = nf90_get_var(nid, var3didin(4), qv) 541 IF(ierr/=nf90_noerr) THEN 542 WRITE(*, *) nf90_strerror(ierr) 543 stop "getvarup" 544 endif 545 ! WRITE(*,*)'lecture qv ok',qv 546 547 ierr = nf90_get_var(nid, var3didin(5), rh) 548 IF(ierr/=nf90_noerr) THEN 549 WRITE(*, *) nf90_strerror(ierr) 550 stop "getvarup" 551 endif 552 ! WRITE(*,*)'lecture rh ok',rh 553 554 ierr = nf90_get_var(nid, var3didin(6), theta) 555 IF(ierr/=nf90_noerr) THEN 556 WRITE(*, *) nf90_strerror(ierr) 557 stop "getvarup" 558 endif 559 ! WRITE(*,*)'lecture theta ok',theta 560 561 ierr = nf90_get_var(nid, var3didin(7), rv) 562 IF(ierr/=nf90_noerr) THEN 563 WRITE(*, *) nf90_strerror(ierr) 564 stop "getvarup" 565 endif 566 ! WRITE(*,*)'lecture rv ok',rv 567 568 ierr = nf90_get_var(nid, var3didin(8), u) 569 IF(ierr/=nf90_noerr) THEN 570 WRITE(*, *) nf90_strerror(ierr) 571 stop "getvarup" 572 endif 573 ! WRITE(*,*)'lecture u ok',u 574 575 ierr = nf90_get_var(nid, var3didin(9), v) 576 IF(ierr/=nf90_noerr) THEN 577 WRITE(*, *) nf90_strerror(ierr) 578 stop "getvarup" 579 endif 580 ! WRITE(*,*)'lecture v ok',v 581 582 ierr = nf90_get_var(nid, var3didin(10), ug) 583 IF(ierr/=nf90_noerr) THEN 584 WRITE(*, *) nf90_strerror(ierr) 585 stop "getvarup" 586 endif 587 ! WRITE(*,*)'lecture ug ok',ug 588 589 ierr = nf90_get_var(nid, var3didin(11), vg) 590 IF(ierr/=nf90_noerr) THEN 591 WRITE(*, *) nf90_strerror(ierr) 592 stop "getvarup" 593 endif 594 ! WRITE(*,*)'lecture vg ok',vg 595 596 ierr = nf90_get_var(nid, var3didin(12), w) 597 IF(ierr/=nf90_noerr) THEN 598 WRITE(*, *) nf90_strerror(ierr) 599 stop "getvarup" 600 endif 601 ! WRITE(*,*)'lecture w ok',w 602 603 ierr = nf90_get_var(nid, var3didin(13), du) 604 IF(ierr/=nf90_noerr) THEN 605 WRITE(*, *) nf90_strerror(ierr) 606 stop "getvarup" 607 endif 608 ! WRITE(*,*)'lecture du ok',du 609 610 ierr = nf90_get_var(nid, var3didin(14), hu) 611 IF(ierr/=nf90_noerr) THEN 612 WRITE(*, *) nf90_strerror(ierr) 613 stop "getvarup" 614 endif 615 ! WRITE(*,*)'lecture hu ok',hu 616 617 ierr = nf90_get_var(nid, var3didin(15), vu) 618 IF(ierr/=nf90_noerr) THEN 619 WRITE(*, *) nf90_strerror(ierr) 620 stop "getvarup" 621 endif 622 ! WRITE(*,*)'lecture vu ok',vu 623 624 ierr = nf90_get_var(nid, var3didin(16), dv) 625 IF(ierr/=nf90_noerr) THEN 626 WRITE(*, *) nf90_strerror(ierr) 627 stop "getvarup" 628 endif 629 ! WRITE(*,*)'lecture dv ok',dv 630 631 ierr = nf90_get_var(nid, var3didin(17), hv) 632 IF(ierr/=nf90_noerr) THEN 633 WRITE(*, *) nf90_strerror(ierr) 634 stop "getvarup" 635 endif 636 ! WRITE(*,*)'lecture hv ok',hv 637 638 ierr = nf90_get_var(nid, var3didin(18), vv) 639 IF(ierr/=nf90_noerr) THEN 640 WRITE(*, *) nf90_strerror(ierr) 641 stop "getvarup" 642 endif 643 ! WRITE(*,*)'lecture vv ok',vv 644 645 ierr = nf90_get_var(nid, var3didin(19), dt) 646 IF(ierr/=nf90_noerr) THEN 647 WRITE(*, *) nf90_strerror(ierr) 648 stop "getvarup" 649 endif 650 ! WRITE(*,*)'lecture dt ok',dt 651 652 ierr = nf90_get_var(nid, var3didin(20), ht) 653 IF(ierr/=nf90_noerr) THEN 654 WRITE(*, *) nf90_strerror(ierr) 655 stop "getvarup" 656 endif 657 ! WRITE(*,*)'lecture ht ok',ht 658 659 ierr = nf90_get_var(nid, var3didin(21), vt) 660 IF(ierr/=nf90_noerr) THEN 661 WRITE(*, *) nf90_strerror(ierr) 662 stop "getvarup" 663 endif 664 ! WRITE(*,*)'lecture vt ok',vt 665 666 ierr = nf90_get_var(nid, var3didin(22), dq) 667 IF(ierr/=nf90_noerr) THEN 668 WRITE(*, *) nf90_strerror(ierr) 669 stop "getvarup" 670 endif 671 ! WRITE(*,*)'lecture dq ok',dq 672 673 ierr = nf90_get_var(nid, var3didin(23), hq) 674 IF(ierr/=nf90_noerr) THEN 675 WRITE(*, *) nf90_strerror(ierr) 676 stop "getvarup" 677 endif 678 ! WRITE(*,*)'lecture hq ok',hq 679 680 ierr = nf90_get_var(nid, var3didin(24), vq) 681 IF(ierr/=nf90_noerr) THEN 682 WRITE(*, *) nf90_strerror(ierr) 683 stop "getvarup" 684 endif 685 ! WRITE(*,*)'lecture vq ok',vq 686 687 ierr = nf90_get_var(nid, var3didin(25), dth) 688 IF(ierr/=nf90_noerr) THEN 689 WRITE(*, *) nf90_strerror(ierr) 690 stop "getvarup" 691 endif 692 ! WRITE(*,*)'lecture dth ok',dth 693 694 ierr = nf90_get_var(nid, var3didin(26), hth) 695 IF(ierr/=nf90_noerr) THEN 696 WRITE(*, *) nf90_strerror(ierr) 697 stop "getvarup" 698 endif 699 ! WRITE(*,*)'lecture hth ok',hth 700 701 ierr = nf90_get_var(nid, var3didin(27), vth) 702 IF(ierr/=nf90_noerr) THEN 703 WRITE(*, *) nf90_strerror(ierr) 704 stop "getvarup" 705 endif 706 ! WRITE(*,*)'lecture vth ok',vth 707 708 ierr = nf90_get_var(nid, var3didin(28), dr) 709 IF(ierr/=nf90_noerr) THEN 710 WRITE(*, *) nf90_strerror(ierr) 711 stop "getvarup" 712 endif 713 ! WRITE(*,*)'lecture dr ok',dr 714 715 ierr = nf90_get_var(nid, var3didin(29), hr) 716 IF(ierr/=nf90_noerr) THEN 717 WRITE(*, *) nf90_strerror(ierr) 718 stop "getvarup" 719 endif 720 ! WRITE(*,*)'lecture hr ok',hr 721 722 ierr = nf90_get_var(nid, var3didin(30), vr) 723 IF(ierr/=nf90_noerr) THEN 724 WRITE(*, *) nf90_strerror(ierr) 725 stop "getvarup" 726 endif 727 ! WRITE(*,*)'lecture vr ok',vr 728 729 ierr = nf90_get_var(nid, var3didin(31), dtrad) 730 IF(ierr/=nf90_noerr) THEN 731 WRITE(*, *) nf90_strerror(ierr) 732 stop "getvarup" 733 endif 734 ! WRITE(*,*)'lecture dtrad ok',dtrad 735 736 ierr = nf90_get_var(nid, var3didin(32), sens) 737 IF(ierr/=nf90_noerr) THEN 738 WRITE(*, *) nf90_strerror(ierr) 739 stop "getvarup" 740 endif 741 ! WRITE(*,*)'lecture sens ok',sens 742 743 ierr = nf90_get_var(nid, var3didin(33), flat) 744 IF(ierr/=nf90_noerr) THEN 745 WRITE(*, *) nf90_strerror(ierr) 746 stop "getvarup" 747 endif 748 ! WRITE(*,*)'lecture flat ok',flat 749 750 ierr = nf90_get_var(nid, var3didin(34), ts) 751 IF(ierr/=nf90_noerr) THEN 752 WRITE(*, *) nf90_strerror(ierr) 753 stop "getvarup" 754 endif 755 ! WRITE(*,*)'lecture ts ok',ts 756 757 ierr = nf90_get_var(nid, var3didin(35), ustar) 758 IF(ierr/=nf90_noerr) THEN 759 WRITE(*, *) nf90_strerror(ierr) 760 stop "getvarup" 761 endif 762 ! WRITE(*,*)'lecture ustar ok',ustar 763 764 ierr = nf90_get_var(nid, var3didin(36), uw) 765 IF(ierr/=nf90_noerr) THEN 766 WRITE(*, *) nf90_strerror(ierr) 767 stop "getvarup" 768 endif 769 ! WRITE(*,*)'lecture uw ok',uw 770 771 ierr = nf90_get_var(nid, var3didin(37), vw) 772 IF(ierr/=nf90_noerr) THEN 773 WRITE(*, *) nf90_strerror(ierr) 774 stop "getvarup" 775 endif 776 ! WRITE(*,*)'lecture vw ok',vw 777 778 ierr = nf90_get_var(nid, var3didin(38), q1) 779 IF(ierr/=nf90_noerr) THEN 780 WRITE(*, *) nf90_strerror(ierr) 781 stop "getvarup" 782 endif 783 ! WRITE(*,*)'lecture q1 ok',q1 784 785 ierr = nf90_get_var(nid, var3didin(39), q2) 786 IF(ierr/=nf90_noerr) THEN 787 WRITE(*, *) nf90_strerror(ierr) 788 stop "getvarup" 789 endif 790 ! WRITE(*,*)'lecture q2 ok',q2 791 792 END SUBROUTINE read_cas 793 !====================================================================== 794 SUBROUTINE interp_case_time(day, day1, annee_ref & 795 ! & ,year_cas,day_cas,nt_cas,pdt_forc,nlev_cas & 796 , nt_cas, nlev_cas & 797 , ts_cas, plev_cas, t_cas, q_cas, u_cas, v_cas & 798 , ug_cas, vg_cas, vitw_cas, du_cas, hu_cas, vu_cas & 799 , dv_cas, hv_cas, vv_cas, dt_cas, ht_cas, vt_cas, dtrad_cas & 800 , dq_cas, hq_cas, vq_cas, lat_cas, sens_cas, ustar_cas & 801 , uw_cas, vw_cas, q1_cas, q2_cas & 802 , ts_prof_cas, plev_prof_cas, t_prof_cas, q_prof_cas & 803 , u_prof_cas, v_prof_cas, ug_prof_cas, vg_prof_cas & 804 , vitw_prof_cas, du_prof_cas, hu_prof_cas, vu_prof_cas & 805 , dv_prof_cas, hv_prof_cas, vv_prof_cas, dt_prof_cas & 806 , ht_prof_cas, vt_prof_cas, dtrad_prof_cas, dq_prof_cas & 807 , hq_prof_cas, vq_prof_cas, lat_prof_cas, sens_prof_cas & 808 , ustar_prof_cas, uw_prof_cas, vw_prof_cas, q1_prof_cas, q2_prof_cas) 809 810 USE lmdz_compar1d 811 USE lmdz_date_cas, ONLY: year_ini_cas, mth_ini_cas, day_deb, heure_ini_cas, pdt_cas, day_ju_ini_cas 812 813 IMPLICIT NONE 814 815 !--------------------------------------------------------------------------------------- 816 ! Time interpolation of a 2D field to the timestep corresponding to day 817 818 ! day: current julian day (e.g. 717538.2) 819 ! day1: first day of the simulation 820 ! nt_cas: total nb of data in the forcing 821 ! pdt_cas: total time interval (in sec) between 2 forcing data 822 !--------------------------------------------------------------------------------------- 823 824 ! inputs: 825 INTEGER annee_ref 826 INTEGER nt_cas, nlev_cas 827 REAL day, day1, day_cas 828 REAL ts_cas(nt_cas) 829 REAL plev_cas(nlev_cas, nt_cas) 830 REAL t_cas(nlev_cas, nt_cas), q_cas(nlev_cas, nt_cas) 831 REAL u_cas(nlev_cas, nt_cas), v_cas(nlev_cas, nt_cas) 832 REAL ug_cas(nlev_cas, nt_cas), vg_cas(nlev_cas, nt_cas) 833 REAL vitw_cas(nlev_cas, nt_cas) 834 REAL du_cas(nlev_cas, nt_cas), hu_cas(nlev_cas, nt_cas), vu_cas(nlev_cas, nt_cas) 835 REAL dv_cas(nlev_cas, nt_cas), hv_cas(nlev_cas, nt_cas), vv_cas(nlev_cas, nt_cas) 836 REAL dt_cas(nlev_cas, nt_cas), ht_cas(nlev_cas, nt_cas), vt_cas(nlev_cas, nt_cas) 837 REAL dtrad_cas(nlev_cas, nt_cas) 838 REAL dq_cas(nlev_cas, nt_cas), hq_cas(nlev_cas, nt_cas), vq_cas(nlev_cas, nt_cas) 839 REAL lat_cas(nt_cas) 840 REAL sens_cas(nt_cas) 841 REAL ustar_cas(nt_cas), uw_cas(nlev_cas, nt_cas), vw_cas(nlev_cas, nt_cas) 842 REAL q1_cas(nlev_cas, nt_cas), q2_cas(nlev_cas, nt_cas) 843 844 ! outputs: 845 REAL plev_prof_cas(nlev_cas) 846 REAL t_prof_cas(nlev_cas), q_prof_cas(nlev_cas) 847 REAL u_prof_cas(nlev_cas), v_prof_cas(nlev_cas) 848 REAL ug_prof_cas(nlev_cas), vg_prof_cas(nlev_cas) 849 REAL vitw_prof_cas(nlev_cas) 850 REAL du_prof_cas(nlev_cas), hu_prof_cas(nlev_cas), vu_prof_cas(nlev_cas) 851 REAL dv_prof_cas(nlev_cas), hv_prof_cas(nlev_cas), vv_prof_cas(nlev_cas) 852 REAL dt_prof_cas(nlev_cas), ht_prof_cas(nlev_cas), vt_prof_cas(nlev_cas) 853 REAL dtrad_prof_cas(nlev_cas) 854 REAL dq_prof_cas(nlev_cas), hq_prof_cas(nlev_cas), vq_prof_cas(nlev_cas) 855 REAL lat_prof_cas, sens_prof_cas, ts_prof_cas, ustar_prof_cas 856 REAL uw_prof_cas(nlev_cas), vw_prof_cas(nlev_cas), q1_prof_cas(nlev_cas), q2_prof_cas(nlev_cas) 857 ! local: 858 INTEGER it_cas1, it_cas2, k 859 REAL timeit, time_cas1, time_cas2, frac 860 861 PRINT*, 'Check time', day1, day_ju_ini_cas, day_deb + 1, pdt_cas 862 863 ! On teste si la date du cas AMMA est correcte. 864 ! C est pour memoire car en fait les fichiers .def 865 ! sont censes etre corrects. 866 ! A supprimer a terme (MPL 20150623) 867 ! if ((forcing_type.EQ.10).AND.(1.EQ.0)) THEN 868 ! Check that initial day of the simulation consistent with AMMA case: 869 ! if (annee_ref.NE.2006) THEN 870 ! PRINT*,'Pour AMMA, annee_ref doit etre 2006' 871 ! PRINT*,'Changer annee_ref dans run.def' 872 ! stop 873 ! endif 874 ! if (annee_ref.EQ.2006 .AND. day1.lt.day_cas) THEN 875 ! PRINT*,'AMMA a debute le 10 juillet 2006',day1,day_cas 876 ! PRINT*,'Changer dayref dans run.def' 877 ! stop 878 ! endif 879 ! if (annee_ref.EQ.2006 .AND. day1.gt.day_cas+1) THEN 880 ! PRINT*,'AMMA a fini le 11 juillet' 881 ! PRINT*,'Changer dayref ou nday dans run.def' 882 ! stop 883 ! endif 884 ! endif 885 886 ! Determine timestep relative to the 1st day: 887 ! timeit=(day-day1)*86400. 888 ! if (annee_ref.EQ.1992) THEN 889 ! timeit=(day-day_cas)*86400. 890 ! else 891 ! timeit=(day+61.-1.)*86400. ! 61 days between Nov01 and Dec31 1992 892 ! endif 893 timeit = (day - day_ju_ini_cas) * 86400 894 print *, 'day=', day 895 print *, 'day_ju_ini_cas=', day_ju_ini_cas 896 print *, 'pdt_cas=', pdt_cas 897 print *, 'timeit=', timeit 898 print *, 'nt_cas=', nt_cas 899 900 ! Determine the closest observation times: 901 ! it_cas1=INT(timeit/pdt_cas)+1 902 ! it_cas2=it_cas1 + 1 903 ! time_cas1=(it_cas1-1)*pdt_cas 904 ! time_cas2=(it_cas2-1)*pdt_cas 905 906 it_cas1 = INT(timeit / pdt_cas) + 1 907 IF (it_cas1 == nt_cas) THEN 908 it_cas2 = it_cas1 909 ELSE 910 it_cas2 = it_cas1 + 1 911 ENDIF 912 time_cas1 = (it_cas1 - 1) * pdt_cas 913 time_cas2 = (it_cas2 - 1) * pdt_cas 914 print *, 'it_cas1=', it_cas1 915 print *, 'it_cas2=', it_cas2 916 print *, 'time_cas1=', time_cas1 917 print *, 'time_cas2=', time_cas2 918 919 IF (it_cas1 > nt_cas) THEN 920 WRITE(*, *) 'PB-stop: day, day_ju_ini_cas,it_cas1, it_cas2, timeit: ' & 921 , day, day_ju_ini_cas, it_cas1, it_cas2, timeit 922 stop 923 endif 924 925 ! time interpolation: 926 IF (it_cas1 == it_cas2) THEN 927 frac = 0. 928 ELSE 929 frac = (time_cas2 - timeit) / (time_cas2 - time_cas1) 930 frac = max(frac, 0.0) 931 ENDIF 932 933 lat_prof_cas = lat_cas(it_cas2) & 934 - frac * (lat_cas(it_cas2) - lat_cas(it_cas1)) 935 sens_prof_cas = sens_cas(it_cas2) & 936 - frac * (sens_cas(it_cas2) - sens_cas(it_cas1)) 937 ts_prof_cas = ts_cas(it_cas2) & 938 - frac * (ts_cas(it_cas2) - ts_cas(it_cas1)) 939 ustar_prof_cas = ustar_cas(it_cas2) & 940 - frac * (ustar_cas(it_cas2) - ustar_cas(it_cas1)) 941 942 DO k = 1, nlev_cas 943 plev_prof_cas(k) = plev_cas(k, it_cas2) & 944 - frac * (plev_cas(k, it_cas2) - plev_cas(k, it_cas1)) 945 t_prof_cas(k) = t_cas(k, it_cas2) & 946 - frac * (t_cas(k, it_cas2) - t_cas(k, it_cas1)) 947 q_prof_cas(k) = q_cas(k, it_cas2) & 948 - frac * (q_cas(k, it_cas2) - q_cas(k, it_cas1)) 949 u_prof_cas(k) = u_cas(k, it_cas2) & 950 - frac * (u_cas(k, it_cas2) - u_cas(k, it_cas1)) 951 v_prof_cas(k) = v_cas(k, it_cas2) & 952 - frac * (v_cas(k, it_cas2) - v_cas(k, it_cas1)) 953 ug_prof_cas(k) = ug_cas(k, it_cas2) & 954 - frac * (ug_cas(k, it_cas2) - ug_cas(k, it_cas1)) 955 vg_prof_cas(k) = vg_cas(k, it_cas2) & 956 - frac * (vg_cas(k, it_cas2) - vg_cas(k, it_cas1)) 957 vitw_prof_cas(k) = vitw_cas(k, it_cas2) & 958 - frac * (vitw_cas(k, it_cas2) - vitw_cas(k, it_cas1)) 959 du_prof_cas(k) = du_cas(k, it_cas2) & 960 - frac * (du_cas(k, it_cas2) - du_cas(k, it_cas1)) 961 hu_prof_cas(k) = hu_cas(k, it_cas2) & 962 - frac * (hu_cas(k, it_cas2) - hu_cas(k, it_cas1)) 963 vu_prof_cas(k) = vu_cas(k, it_cas2) & 964 - frac * (vu_cas(k, it_cas2) - vu_cas(k, it_cas1)) 965 dv_prof_cas(k) = dv_cas(k, it_cas2) & 966 - frac * (dv_cas(k, it_cas2) - dv_cas(k, it_cas1)) 967 hv_prof_cas(k) = hv_cas(k, it_cas2) & 968 - frac * (hv_cas(k, it_cas2) - hv_cas(k, it_cas1)) 969 vv_prof_cas(k) = vv_cas(k, it_cas2) & 970 - frac * (vv_cas(k, it_cas2) - vv_cas(k, it_cas1)) 971 dt_prof_cas(k) = dt_cas(k, it_cas2) & 972 - frac * (dt_cas(k, it_cas2) - dt_cas(k, it_cas1)) 973 ht_prof_cas(k) = ht_cas(k, it_cas2) & 974 - frac * (ht_cas(k, it_cas2) - ht_cas(k, it_cas1)) 975 vt_prof_cas(k) = vt_cas(k, it_cas2) & 976 - frac * (vt_cas(k, it_cas2) - vt_cas(k, it_cas1)) 977 dtrad_prof_cas(k) = dtrad_cas(k, it_cas2) & 978 - frac * (dtrad_cas(k, it_cas2) - dtrad_cas(k, it_cas1)) 979 dq_prof_cas(k) = dq_cas(k, it_cas2) & 980 - frac * (dq_cas(k, it_cas2) - dq_cas(k, it_cas1)) 981 hq_prof_cas(k) = hq_cas(k, it_cas2) & 982 - frac * (hq_cas(k, it_cas2) - hq_cas(k, it_cas1)) 983 vq_prof_cas(k) = vq_cas(k, it_cas2) & 984 - frac * (vq_cas(k, it_cas2) - vq_cas(k, it_cas1)) 985 uw_prof_cas(k) = uw_cas(k, it_cas2) & 986 - frac * (uw_cas(k, it_cas2) - uw_cas(k, it_cas1)) 987 vw_prof_cas(k) = vw_cas(k, it_cas2) & 988 - frac * (vw_cas(k, it_cas2) - vw_cas(k, it_cas1)) 989 q1_prof_cas(k) = q1_cas(k, it_cas2) & 990 - frac * (q1_cas(k, it_cas2) - q1_cas(k, it_cas1)) 991 q2_prof_cas(k) = q2_cas(k, it_cas2) & 992 - frac * (q2_cas(k, it_cas2) - q2_cas(k, it_cas1)) 993 enddo 994 995 RETURN 996 END 997 998 !********************************************************************************************** 1011 999 END MODULE mod_1D_cases_read -
LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_cases_read2.F90
r5135 r5158 1 2 1 ! $Id: mod_1D_cases_read.F90 2373 2015-10-13 17:28:01Z jyg $ 3 2 4 3 MODULE mod_1D_cases_read2 5 USE netcdf, ONLY: nf90_get_var, nf90_noerr,nf90_inq_varid,nf90_inquire_dimension,nf90_strerror,nf90_open,&6 nf90_nowrite, nf90_inq_dimid7 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!4 USE netcdf, ONLY: nf90_get_var, nf90_noerr, nf90_inq_varid, nf90_inquire_dimension, nf90_strerror, nf90_open, & 5 nf90_nowrite, nf90_inq_dimid 6 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 8 7 !Declarations specifiques au cas standard 9 8 CHARACTER*80 :: fich_cas 10 ! Discr?tisation 9 ! Discr?tisation 11 10 INTEGER nlev_cas, nt_cas 12 11 13 12 14 13 !profils environnementaux 15 REAL, ALLOCATABLE :: plev_cas(:,:),plevh_cas(:)16 REAL, ALLOCATABLE :: ap_cas(:),bp_cas(:)17 18 REAL, ALLOCATABLE :: z_cas(:,:),zh_cas(:)19 REAL, ALLOCATABLE :: t_cas(:,:),q_cas(:,:),qv_cas(:,:),ql_cas(:,:),qi_cas(:,:),rh_cas(:,:)20 REAL, ALLOCATABLE :: th_cas(:,:),thv_cas(:,:),thl_cas(:,:),rv_cas(:,:)21 REAL, ALLOCATABLE :: u_cas(:,:),v_cas(:,:),vitw_cas(:,:),omega_cas(:,:)14 REAL, ALLOCATABLE :: plev_cas(:, :), plevh_cas(:) 15 REAL, ALLOCATABLE :: ap_cas(:), bp_cas(:) 16 17 REAL, ALLOCATABLE :: z_cas(:, :), zh_cas(:) 18 REAL, ALLOCATABLE :: t_cas(:, :), q_cas(:, :), qv_cas(:, :), ql_cas(:, :), qi_cas(:, :), rh_cas(:, :) 19 REAL, ALLOCATABLE :: th_cas(:, :), thv_cas(:, :), thl_cas(:, :), rv_cas(:, :) 20 REAL, ALLOCATABLE :: u_cas(:, :), v_cas(:, :), vitw_cas(:, :), omega_cas(:, :) 22 21 23 22 !forcing 24 REAL, ALLOCATABLE :: ht_cas(:,:),vt_cas(:,:),dt_cas(:,:),dtrad_cas(:,:)25 REAL, ALLOCATABLE :: hth_cas(:,:),vth_cas(:,:),dth_cas(:,:)26 REAL, ALLOCATABLE :: hq_cas(:,:),vq_cas(:,:),dq_cas(:,:)27 REAL, ALLOCATABLE :: hr_cas(:,:),vr_cas(:,:),dr_cas(:,:)28 REAL, ALLOCATABLE :: hu_cas(:,:),vu_cas(:,:),du_cas(:,:)29 REAL, ALLOCATABLE :: hv_cas(:,:),vv_cas(:,:),dv_cas(:,:)30 REAL, ALLOCATABLE :: ug_cas(:,:),vg_cas(:,:)31 REAL, ALLOCATABLE :: lat_cas(:),sens_cas(:),ts_cas(:),ps_cas(:),ustar_cas(:)32 REAL, ALLOCATABLE :: uw_cas(:,:),vw_cas(:,:),q1_cas(:,:),q2_cas(:,:),tke_cas(:)23 REAL, ALLOCATABLE :: ht_cas(:, :), vt_cas(:, :), dt_cas(:, :), dtrad_cas(:, :) 24 REAL, ALLOCATABLE :: hth_cas(:, :), vth_cas(:, :), dth_cas(:, :) 25 REAL, ALLOCATABLE :: hq_cas(:, :), vq_cas(:, :), dq_cas(:, :) 26 REAL, ALLOCATABLE :: hr_cas(:, :), vr_cas(:, :), dr_cas(:, :) 27 REAL, ALLOCATABLE :: hu_cas(:, :), vu_cas(:, :), du_cas(:, :) 28 REAL, ALLOCATABLE :: hv_cas(:, :), vv_cas(:, :), dv_cas(:, :) 29 REAL, ALLOCATABLE :: ug_cas(:, :), vg_cas(:, :) 30 REAL, ALLOCATABLE :: lat_cas(:), sens_cas(:), ts_cas(:), ps_cas(:), ustar_cas(:) 31 REAL, ALLOCATABLE :: uw_cas(:, :), vw_cas(:, :), q1_cas(:, :), q2_cas(:, :), tke_cas(:) 33 32 34 33 !champs interpoles 35 REAL, ALLOCATABLE:: plev_prof_cas(:) 36 REAL, ALLOCATABLE:: t_prof_cas(:) 37 REAL, ALLOCATABLE:: theta_prof_cas(:) 38 REAL, ALLOCATABLE:: thl_prof_cas(:) 39 REAL, ALLOCATABLE:: thv_prof_cas(:) 40 REAL, ALLOCATABLE:: q_prof_cas(:) 41 REAL, ALLOCATABLE:: qv_prof_cas(:) 42 REAL, ALLOCATABLE:: ql_prof_cas(:) 43 REAL, ALLOCATABLE:: qi_prof_cas(:) 44 REAL, ALLOCATABLE:: rh_prof_cas(:) 45 REAL, ALLOCATABLE:: rv_prof_cas(:) 46 REAL, ALLOCATABLE:: u_prof_cas(:) 47 REAL, ALLOCATABLE:: v_prof_cas(:) 48 REAL, ALLOCATABLE:: vitw_prof_cas(:) 49 REAL, ALLOCATABLE:: omega_prof_cas(:) 50 REAL, ALLOCATABLE:: ug_prof_cas(:) 51 REAL, ALLOCATABLE:: vg_prof_cas(:) 52 REAL, ALLOCATABLE:: ht_prof_cas(:) 53 REAL, ALLOCATABLE:: hth_prof_cas(:) 54 REAL, ALLOCATABLE:: hq_prof_cas(:) 55 REAL, ALLOCATABLE:: vt_prof_cas(:) 56 REAL, ALLOCATABLE:: vth_prof_cas(:) 57 REAL, ALLOCATABLE:: vq_prof_cas(:) 58 REAL, ALLOCATABLE:: dt_prof_cas(:) 59 REAL, ALLOCATABLE:: dth_prof_cas(:) 60 REAL, ALLOCATABLE:: dtrad_prof_cas(:) 61 REAL, ALLOCATABLE:: dq_prof_cas(:) 62 REAL, ALLOCATABLE:: hu_prof_cas(:) 63 REAL, ALLOCATABLE:: hv_prof_cas(:) 64 REAL, ALLOCATABLE:: vu_prof_cas(:) 65 REAL, ALLOCATABLE:: vv_prof_cas(:) 66 REAL, ALLOCATABLE:: du_prof_cas(:) 67 REAL, ALLOCATABLE:: dv_prof_cas(:) 68 REAL, ALLOCATABLE:: uw_prof_cas(:) 69 REAL, ALLOCATABLE:: vw_prof_cas(:) 70 REAL, ALLOCATABLE:: q1_prof_cas(:) 71 REAL, ALLOCATABLE:: q2_prof_cas(:) 72 73 74 REAL lat_prof_cas,sens_prof_cas,ts_prof_cas,ps_prof_cas,ustar_prof_cas,tke_prof_cas 75 REAL o3_cas,orog_cas,albedo_cas,emiss_cas,t_skin_cas,q_skin_cas,mom_rough,heat_rough,rugos_cas,sand_cas,clay_cas 76 34 REAL, ALLOCATABLE :: plev_prof_cas(:) 35 REAL, ALLOCATABLE :: t_prof_cas(:) 36 REAL, ALLOCATABLE :: theta_prof_cas(:) 37 REAL, ALLOCATABLE :: thl_prof_cas(:) 38 REAL, ALLOCATABLE :: thv_prof_cas(:) 39 REAL, ALLOCATABLE :: q_prof_cas(:) 40 REAL, ALLOCATABLE :: qv_prof_cas(:) 41 REAL, ALLOCATABLE :: ql_prof_cas(:) 42 REAL, ALLOCATABLE :: qi_prof_cas(:) 43 REAL, ALLOCATABLE :: rh_prof_cas(:) 44 REAL, ALLOCATABLE :: rv_prof_cas(:) 45 REAL, ALLOCATABLE :: u_prof_cas(:) 46 REAL, ALLOCATABLE :: v_prof_cas(:) 47 REAL, ALLOCATABLE :: vitw_prof_cas(:) 48 REAL, ALLOCATABLE :: omega_prof_cas(:) 49 REAL, ALLOCATABLE :: ug_prof_cas(:) 50 REAL, ALLOCATABLE :: vg_prof_cas(:) 51 REAL, ALLOCATABLE :: ht_prof_cas(:) 52 REAL, ALLOCATABLE :: hth_prof_cas(:) 53 REAL, ALLOCATABLE :: hq_prof_cas(:) 54 REAL, ALLOCATABLE :: vt_prof_cas(:) 55 REAL, ALLOCATABLE :: vth_prof_cas(:) 56 REAL, ALLOCATABLE :: vq_prof_cas(:) 57 REAL, ALLOCATABLE :: dt_prof_cas(:) 58 REAL, ALLOCATABLE :: dth_prof_cas(:) 59 REAL, ALLOCATABLE :: dtrad_prof_cas(:) 60 REAL, ALLOCATABLE :: dq_prof_cas(:) 61 REAL, ALLOCATABLE :: hu_prof_cas(:) 62 REAL, ALLOCATABLE :: hv_prof_cas(:) 63 REAL, ALLOCATABLE :: vu_prof_cas(:) 64 REAL, ALLOCATABLE :: vv_prof_cas(:) 65 REAL, ALLOCATABLE :: du_prof_cas(:) 66 REAL, ALLOCATABLE :: dv_prof_cas(:) 67 REAL, ALLOCATABLE :: uw_prof_cas(:) 68 REAL, ALLOCATABLE :: vw_prof_cas(:) 69 REAL, ALLOCATABLE :: q1_prof_cas(:) 70 REAL, ALLOCATABLE :: q2_prof_cas(:) 71 72 REAL lat_prof_cas, sens_prof_cas, ts_prof_cas, ps_prof_cas, ustar_prof_cas, tke_prof_cas 73 REAL o3_cas, orog_cas, albedo_cas, emiss_cas, t_skin_cas, q_skin_cas, mom_rough, heat_rough, rugos_cas, sand_cas, clay_cas 77 74 78 75 … … 82 79 IMPLICIT NONE 83 80 84 INTEGER nid, rid,ierr85 INTEGER ii, jj86 87 fich_cas ='setup/cas.nc'88 PRINT*, 'fich_cas ',fich_cas89 ierr = nf90_open(fich_cas, nf90_nowrite,nid)90 PRINT*, 'fich_cas,nf90_nowrite,nid ',fich_cas,nf90_nowrite,nid81 INTEGER nid, rid, ierr 82 INTEGER ii, jj 83 84 fich_cas = 'setup/cas.nc' 85 PRINT*, 'fich_cas ', fich_cas 86 ierr = nf90_open(fich_cas, nf90_nowrite, nid) 87 PRINT*, 'fich_cas,nf90_nowrite,nid ', fich_cas, nf90_nowrite, nid 91 88 IF (ierr/=nf90_noerr) THEN 92 WRITE(*,*) 'ERROR: GROS Pb opening forcings nc file '93 WRITE(*,*) nf90_strerror(ierr)94 89 WRITE(*, *) 'ERROR: GROS Pb opening forcings nc file ' 90 WRITE(*, *) nf90_strerror(ierr) 91 stop "" 95 92 endif 96 93 !....................................................................... 97 ierr =nf90_inq_dimid(nid,'lat',rid)94 ierr = nf90_inq_dimid(nid, 'lat', rid) 98 95 IF (ierr/=nf90_noerr) THEN 99 100 ENDIF 101 ierr =nf90_inquire_dimension(nid,rid,len=ii)102 PRINT*, 'OK1 nid,rid,lat',nid,rid,ii96 PRINT*, 'Oh probleme lecture dimension lat' 97 ENDIF 98 ierr = nf90_inquire_dimension(nid, rid, len = ii) 99 PRINT*, 'OK1 nid,rid,lat', nid, rid, ii 103 100 !....................................................................... 104 ierr =nf90_inq_dimid(nid,'lon',rid)101 ierr = nf90_inq_dimid(nid, 'lon', rid) 105 102 IF (ierr/=nf90_noerr) THEN 106 107 ENDIF 108 ierr =nf90_inquire_dimension(nid,rid,len=jj)109 PRINT*, 'OK2 nid,rid,lat',nid,rid,jj103 PRINT*, 'Oh probleme lecture dimension lon' 104 ENDIF 105 ierr = nf90_inquire_dimension(nid, rid, len = jj) 106 PRINT*, 'OK2 nid,rid,lat', nid, rid, jj 110 107 !....................................................................... 111 ierr =nf90_inq_dimid(nid,'lev',rid)108 ierr = nf90_inq_dimid(nid, 'lev', rid) 112 109 IF (ierr/=nf90_noerr) THEN 113 114 ENDIF 115 ierr =nf90_inquire_dimension(nid,rid,len=nlev_cas)116 PRINT*, 'OK3 nid,rid,nlev_cas',nid,rid,nlev_cas110 PRINT*, 'Oh probleme lecture dimension zz' 111 ENDIF 112 ierr = nf90_inquire_dimension(nid, rid, len = nlev_cas) 113 PRINT*, 'OK3 nid,rid,nlev_cas', nid, rid, nlev_cas 117 114 !....................................................................... 118 ierr =nf90_inq_dimid(nid,'time',rid)119 PRINT*, 'nid,rid',nid,rid120 nt_cas =0115 ierr = nf90_inq_dimid(nid, 'time', rid) 116 PRINT*, 'nid,rid', nid, rid 117 nt_cas = 0 121 118 IF (ierr/=nf90_noerr) THEN 122 123 ENDIF 124 ierr =nf90_inquire_dimension(nid,rid,len=nt_cas)125 PRINT*, 'OK4 nid,rid,nt_cas',nid,rid,nt_cas126 127 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!119 stop 'probleme lecture dimension sens' 120 ENDIF 121 ierr = nf90_inquire_dimension(nid, rid, len = nt_cas) 122 PRINT*, 'OK4 nid,rid,nt_cas', nid, rid, nt_cas 123 124 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 128 125 !profils moyens: 129 allocate(plev_cas(nlev_cas, nt_cas))130 allocate(z_cas(nlev_cas, nt_cas))131 allocate(t_cas(nlev_cas, nt_cas),q_cas(nlev_cas,nt_cas),rh_cas(nlev_cas,nt_cas))132 allocate(th_cas(nlev_cas, nt_cas),rv_cas(nlev_cas,nt_cas))133 allocate(u_cas(nlev_cas, nt_cas))134 allocate(v_cas(nlev_cas, nt_cas))126 allocate(plev_cas(nlev_cas, nt_cas)) 127 allocate(z_cas(nlev_cas, nt_cas)) 128 allocate(t_cas(nlev_cas, nt_cas), q_cas(nlev_cas, nt_cas), rh_cas(nlev_cas, nt_cas)) 129 allocate(th_cas(nlev_cas, nt_cas), rv_cas(nlev_cas, nt_cas)) 130 allocate(u_cas(nlev_cas, nt_cas)) 131 allocate(v_cas(nlev_cas, nt_cas)) 135 132 136 133 !forcing 137 allocate(ht_cas(nlev_cas, nt_cas),vt_cas(nlev_cas,nt_cas),dt_cas(nlev_cas,nt_cas),dtrad_cas(nlev_cas,nt_cas))138 allocate(hq_cas(nlev_cas, nt_cas),vq_cas(nlev_cas,nt_cas),dq_cas(nlev_cas,nt_cas))139 allocate(hth_cas(nlev_cas, nt_cas),vth_cas(nlev_cas,nt_cas),dth_cas(nlev_cas,nt_cas))140 allocate(hr_cas(nlev_cas, nt_cas),vr_cas(nlev_cas,nt_cas),dr_cas(nlev_cas,nt_cas))141 allocate(hu_cas(nlev_cas, nt_cas),vu_cas(nlev_cas,nt_cas),du_cas(nlev_cas,nt_cas))142 allocate(hv_cas(nlev_cas, nt_cas),vv_cas(nlev_cas,nt_cas),dv_cas(nlev_cas,nt_cas))143 allocate(vitw_cas(nlev_cas, nt_cas))144 allocate(ug_cas(nlev_cas, nt_cas))145 allocate(vg_cas(nlev_cas, nt_cas))146 allocate(lat_cas(nt_cas), sens_cas(nt_cas),ts_cas(nt_cas),ps_cas(nt_cas),ustar_cas(nt_cas))147 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))134 allocate(ht_cas(nlev_cas, nt_cas), vt_cas(nlev_cas, nt_cas), dt_cas(nlev_cas, nt_cas), dtrad_cas(nlev_cas, nt_cas)) 135 allocate(hq_cas(nlev_cas, nt_cas), vq_cas(nlev_cas, nt_cas), dq_cas(nlev_cas, nt_cas)) 136 allocate(hth_cas(nlev_cas, nt_cas), vth_cas(nlev_cas, nt_cas), dth_cas(nlev_cas, nt_cas)) 137 allocate(hr_cas(nlev_cas, nt_cas), vr_cas(nlev_cas, nt_cas), dr_cas(nlev_cas, nt_cas)) 138 allocate(hu_cas(nlev_cas, nt_cas), vu_cas(nlev_cas, nt_cas), du_cas(nlev_cas, nt_cas)) 139 allocate(hv_cas(nlev_cas, nt_cas), vv_cas(nlev_cas, nt_cas), dv_cas(nlev_cas, nt_cas)) 140 allocate(vitw_cas(nlev_cas, nt_cas)) 141 allocate(ug_cas(nlev_cas, nt_cas)) 142 allocate(vg_cas(nlev_cas, nt_cas)) 143 allocate(lat_cas(nt_cas), sens_cas(nt_cas), ts_cas(nt_cas), ps_cas(nt_cas), ustar_cas(nt_cas)) 144 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)) 148 145 149 146 … … 176 173 allocate(q2_prof_cas(nlev_cas)) 177 174 178 PRINT*,'Allocations OK' 179 CALL read_cas2(nid,nlev_cas,nt_cas & 180 ,z_cas,plev_cas,t_cas,q_cas,rh_cas,th_cas,rv_cas,u_cas,v_cas & 181 ,ug_cas,vg_cas,vitw_cas,du_cas,hu_cas,vu_cas,dv_cas,hv_cas,vv_cas & 182 ,dt_cas,dtrad_cas,ht_cas,vt_cas,dq_cas,hq_cas,vq_cas & 183 ,dth_cas,hth_cas,vth_cas,dr_cas,hr_cas,vr_cas,sens_cas,lat_cas,ts_cas& 184 ,ustar_cas,uw_cas,vw_cas,q1_cas,q2_cas) 185 PRINT*,'Read cas OK' 186 175 PRINT*, 'Allocations OK' 176 CALL read_cas2(nid, nlev_cas, nt_cas & 177 , z_cas, plev_cas, t_cas, q_cas, rh_cas, th_cas, rv_cas, u_cas, v_cas & 178 , ug_cas, vg_cas, vitw_cas, du_cas, hu_cas, vu_cas, dv_cas, hv_cas, vv_cas & 179 , dt_cas, dtrad_cas, ht_cas, vt_cas, dq_cas, hq_cas, vq_cas & 180 , dth_cas, hth_cas, vth_cas, dr_cas, hr_cas, vr_cas, sens_cas, lat_cas, ts_cas& 181 , ustar_cas, uw_cas, vw_cas, q1_cas, q2_cas) 182 PRINT*, 'Read cas OK' 187 183 188 184 END SUBROUTINE read_1D_cas … … 191 187 IMPLICIT NONE 192 188 193 INTEGER nid, rid,ierr194 INTEGER ii, jj195 196 fich_cas ='setup/cas.nc'197 PRINT*, 'fich_cas ',fich_cas198 ierr = nf90_open(fich_cas, nf90_nowrite,nid)199 PRINT*, 'fich_cas,nf90_nowrite,nid ',fich_cas,nf90_nowrite,nid189 INTEGER nid, rid, ierr 190 INTEGER ii, jj 191 192 fich_cas = 'setup/cas.nc' 193 PRINT*, 'fich_cas ', fich_cas 194 ierr = nf90_open(fich_cas, nf90_nowrite, nid) 195 PRINT*, 'fich_cas,nf90_nowrite,nid ', fich_cas, nf90_nowrite, nid 200 196 IF (ierr/=nf90_noerr) THEN 201 WRITE(*,*) 'ERROR: GROS Pb opening forcings nc file '202 WRITE(*,*) nf90_strerror(ierr)203 197 WRITE(*, *) 'ERROR: GROS Pb opening forcings nc file ' 198 WRITE(*, *) nf90_strerror(ierr) 199 stop "" 204 200 endif 205 201 !....................................................................... 206 ierr =nf90_inq_dimid(nid,'lat',rid)202 ierr = nf90_inq_dimid(nid, 'lat', rid) 207 203 IF (ierr/=nf90_noerr) THEN 208 209 ENDIF 210 ierr =nf90_inquire_dimension(nid,rid,len=ii)211 PRINT*, 'OK1 read2: nid,rid,lat',nid,rid,ii204 PRINT*, 'Oh probleme lecture dimension lat' 205 ENDIF 206 ierr = nf90_inquire_dimension(nid, rid, len = ii) 207 PRINT*, 'OK1 read2: nid,rid,lat', nid, rid, ii 212 208 !....................................................................... 213 ierr =nf90_inq_dimid(nid,'lon',rid)209 ierr = nf90_inq_dimid(nid, 'lon', rid) 214 210 IF (ierr/=nf90_noerr) THEN 215 216 ENDIF 217 ierr =nf90_inquire_dimension(nid,rid,len=jj)218 PRINT*, 'OK2 read2: nid,rid,lat',nid,rid,jj211 PRINT*, 'Oh probleme lecture dimension lon' 212 ENDIF 213 ierr = nf90_inquire_dimension(nid, rid, len = jj) 214 PRINT*, 'OK2 read2: nid,rid,lat', nid, rid, jj 219 215 !....................................................................... 220 ierr =nf90_inq_dimid(nid,'nlev',rid)216 ierr = nf90_inq_dimid(nid, 'nlev', rid) 221 217 IF (ierr/=nf90_noerr) THEN 222 223 ENDIF 224 ierr =nf90_inquire_dimension(nid,rid,len=nlev_cas)225 PRINT*, 'OK3 read2: nid,rid,nlev_cas',nid,rid,nlev_cas218 PRINT*, 'Oh probleme lecture dimension nlev' 219 ENDIF 220 ierr = nf90_inquire_dimension(nid, rid, len = nlev_cas) 221 PRINT*, 'OK3 read2: nid,rid,nlev_cas', nid, rid, nlev_cas 226 222 !....................................................................... 227 ierr =nf90_inq_dimid(nid,'time',rid)228 nt_cas =0223 ierr = nf90_inq_dimid(nid, 'time', rid) 224 nt_cas = 0 229 225 IF (ierr/=nf90_noerr) THEN 230 231 ENDIF 232 ierr =nf90_inquire_dimension(nid,rid,len=nt_cas)233 PRINT*, 'OK4 read2: nid,rid,nt_cas',nid,rid,nt_cas234 235 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!226 stop 'Oh probleme lecture dimension time' 227 ENDIF 228 ierr = nf90_inquire_dimension(nid, rid, len = nt_cas) 229 PRINT*, 'OK4 read2: nid,rid,nt_cas', nid, rid, nt_cas 230 231 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 236 232 !profils moyens: 237 allocate(plev_cas(nlev_cas, nt_cas),plevh_cas(nlev_cas+1))238 allocate(z_cas(nlev_cas, nt_cas),zh_cas(nlev_cas+1))239 allocate(ap_cas(nlev_cas +1),bp_cas(nlev_cas+1))240 allocate(t_cas(nlev_cas, nt_cas),q_cas(nlev_cas,nt_cas),qv_cas(nlev_cas,nt_cas),ql_cas(nlev_cas,nt_cas), &241 qi_cas(nlev_cas,nt_cas),rh_cas(nlev_cas,nt_cas))242 allocate(th_cas(nlev_cas, nt_cas),thl_cas(nlev_cas,nt_cas),thv_cas(nlev_cas,nt_cas),rv_cas(nlev_cas,nt_cas))243 allocate(u_cas(nlev_cas, nt_cas),v_cas(nlev_cas,nt_cas),vitw_cas(nlev_cas,nt_cas),omega_cas(nlev_cas,nt_cas))233 allocate(plev_cas(nlev_cas, nt_cas), plevh_cas(nlev_cas + 1)) 234 allocate(z_cas(nlev_cas, nt_cas), zh_cas(nlev_cas + 1)) 235 allocate(ap_cas(nlev_cas + 1), bp_cas(nlev_cas + 1)) 236 allocate(t_cas(nlev_cas, nt_cas), q_cas(nlev_cas, nt_cas), qv_cas(nlev_cas, nt_cas), ql_cas(nlev_cas, nt_cas), & 237 qi_cas(nlev_cas, nt_cas), rh_cas(nlev_cas, nt_cas)) 238 allocate(th_cas(nlev_cas, nt_cas), thl_cas(nlev_cas, nt_cas), thv_cas(nlev_cas, nt_cas), rv_cas(nlev_cas, nt_cas)) 239 allocate(u_cas(nlev_cas, nt_cas), v_cas(nlev_cas, nt_cas), vitw_cas(nlev_cas, nt_cas), omega_cas(nlev_cas, nt_cas)) 244 240 245 241 !forcing 246 allocate(ht_cas(nlev_cas, nt_cas),vt_cas(nlev_cas,nt_cas),dt_cas(nlev_cas,nt_cas),dtrad_cas(nlev_cas,nt_cas))247 allocate(hq_cas(nlev_cas, nt_cas),vq_cas(nlev_cas,nt_cas),dq_cas(nlev_cas,nt_cas))248 allocate(hth_cas(nlev_cas, nt_cas),vth_cas(nlev_cas,nt_cas),dth_cas(nlev_cas,nt_cas))249 allocate(hr_cas(nlev_cas, nt_cas),vr_cas(nlev_cas,nt_cas),dr_cas(nlev_cas,nt_cas))250 allocate(hu_cas(nlev_cas, nt_cas),vu_cas(nlev_cas,nt_cas),du_cas(nlev_cas,nt_cas))251 allocate(hv_cas(nlev_cas, nt_cas),vv_cas(nlev_cas,nt_cas),dv_cas(nlev_cas,nt_cas))252 allocate(ug_cas(nlev_cas, nt_cas))253 allocate(vg_cas(nlev_cas, nt_cas))254 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))255 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))242 allocate(ht_cas(nlev_cas, nt_cas), vt_cas(nlev_cas, nt_cas), dt_cas(nlev_cas, nt_cas), dtrad_cas(nlev_cas, nt_cas)) 243 allocate(hq_cas(nlev_cas, nt_cas), vq_cas(nlev_cas, nt_cas), dq_cas(nlev_cas, nt_cas)) 244 allocate(hth_cas(nlev_cas, nt_cas), vth_cas(nlev_cas, nt_cas), dth_cas(nlev_cas, nt_cas)) 245 allocate(hr_cas(nlev_cas, nt_cas), vr_cas(nlev_cas, nt_cas), dr_cas(nlev_cas, nt_cas)) 246 allocate(hu_cas(nlev_cas, nt_cas), vu_cas(nlev_cas, nt_cas), du_cas(nlev_cas, nt_cas)) 247 allocate(hv_cas(nlev_cas, nt_cas), vv_cas(nlev_cas, nt_cas), dv_cas(nlev_cas, nt_cas)) 248 allocate(ug_cas(nlev_cas, nt_cas)) 249 allocate(vg_cas(nlev_cas, nt_cas)) 250 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)) 251 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)) 256 252 257 253 … … 296 292 allocate(q2_prof_cas(nlev_cas)) 297 293 298 PRINT*, 'Allocations OK'299 CALL read2_cas (nid, nlev_cas,nt_cas,&300 ap_cas,bp_cas,z_cas,plev_cas,zh_cas,plevh_cas,t_cas,th_cas,thv_cas,thl_cas,qv_cas,&301 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,&302 dv_cas,hv_cas,vv_cas,dt_cas,ht_cas,vt_cas,dq_cas,hq_cas,vq_cas,dth_cas,hth_cas,vth_cas,&303 dr_cas,hr_cas,vr_cas,dtrad_cas,sens_cas,lat_cas,ts_cas,ps_cas,ustar_cas,tke_cas,&304 uw_cas,vw_cas,q1_cas,q2_cas,orog_cas,albedo_cas,emiss_cas,t_skin_cas,q_skin_cas,mom_rough,heat_rough, &305 o3_cas,rugos_cas,clay_cas,sand_cas)306 PRINT*, 'Read2 cas OK'307 do ii=1,nlev_cas308 PRINT*,'apres read2_cas, plev_cas=',ii,plev_cas(ii,1)294 PRINT*, 'Allocations OK' 295 CALL read2_cas (nid, nlev_cas, nt_cas, & 296 ap_cas, bp_cas, z_cas, plev_cas, zh_cas, plevh_cas, t_cas, th_cas, thv_cas, thl_cas, qv_cas, & 297 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, & 298 dv_cas, hv_cas, vv_cas, dt_cas, ht_cas, vt_cas, dq_cas, hq_cas, vq_cas, dth_cas, hth_cas, vth_cas, & 299 dr_cas, hr_cas, vr_cas, dtrad_cas, sens_cas, lat_cas, ts_cas, ps_cas, ustar_cas, tke_cas, & 300 uw_cas, vw_cas, q1_cas, q2_cas, orog_cas, albedo_cas, emiss_cas, t_skin_cas, q_skin_cas, mom_rough, heat_rough, & 301 o3_cas, rugos_cas, clay_cas, sand_cas) 302 PRINT*, 'Read2 cas OK' 303 DO ii = 1, nlev_cas 304 PRINT*, 'apres read2_cas, plev_cas=', ii, plev_cas(ii, 1) 309 305 enddo 310 311 306 312 307 END SUBROUTINE read2_1D_cas … … 314 309 !********************************************************************************************** 315 310 SUBROUTINE old_read_SCM_cas 311 USE lmdz_date_cas, ONLY: year_ini_cas, mth_ini_cas, day_deb, heure_ini_cas, pdt_cas, day_ju_ini_cas 312 316 313 IMPLICIT NONE 317 314 318 INCLUDE "date_cas.h" 319 320 INTEGER nid,rid,ierr 321 INTEGER ii,jj,timeid 315 INTEGER nid, rid, ierr 316 INTEGER ii, jj, timeid 322 317 REAL, ALLOCATABLE :: time_val(:) 323 318 324 fich_cas ='cas.nc'325 PRINT*, 'fich_cas ',fich_cas326 ierr = nf90_open(fich_cas, nf90_nowrite,nid)327 PRINT*, 'fich_cas,nf90_nowrite,nid ',fich_cas,nf90_nowrite,nid319 fich_cas = 'cas.nc' 320 PRINT*, 'fich_cas ', fich_cas 321 ierr = nf90_open(fich_cas, nf90_nowrite, nid) 322 PRINT*, 'fich_cas,nf90_nowrite,nid ', fich_cas, nf90_nowrite, nid 328 323 IF (ierr/=nf90_noerr) THEN 329 WRITE(*,*) 'ERROR: GROS Pb opening forcings nc file '330 WRITE(*,*) nf90_strerror(ierr)331 324 WRITE(*, *) 'ERROR: GROS Pb opening forcings nc file ' 325 WRITE(*, *) nf90_strerror(ierr) 326 stop "" 332 327 endif 333 328 !....................................................................... 334 ierr =nf90_inq_dimid(nid,'lat',rid)329 ierr = nf90_inq_dimid(nid, 'lat', rid) 335 330 IF (ierr/=nf90_noerr) THEN 336 337 ENDIF 338 ierr =nf90_inquire_dimension(nid,rid,len=ii)339 PRINT*, 'OK1 read2: nid,rid,lat',nid,rid,ii331 PRINT*, 'Oh probleme lecture dimension lat' 332 ENDIF 333 ierr = nf90_inquire_dimension(nid, rid, len = ii) 334 PRINT*, 'OK1 read2: nid,rid,lat', nid, rid, ii 340 335 !....................................................................... 341 ierr =nf90_inq_dimid(nid,'lon',rid)336 ierr = nf90_inq_dimid(nid, 'lon', rid) 342 337 IF (ierr/=nf90_noerr) THEN 343 344 ENDIF 345 ierr =nf90_inquire_dimension(nid,rid,len=jj)346 PRINT*, 'OK2 read2: nid,rid,lat',nid,rid,jj338 PRINT*, 'Oh probleme lecture dimension lon' 339 ENDIF 340 ierr = nf90_inquire_dimension(nid, rid, len = jj) 341 PRINT*, 'OK2 read2: nid,rid,lat', nid, rid, jj 347 342 !....................................................................... 348 ierr =nf90_inq_dimid(nid,'lev',rid)343 ierr = nf90_inq_dimid(nid, 'lev', rid) 349 344 IF (ierr/=nf90_noerr) THEN 350 351 ENDIF 352 ierr =nf90_inquire_dimension(nid,rid,len=nlev_cas)353 PRINT*, 'OK3 read2: nid,rid,nlev_cas',nid,rid,nlev_cas354 IF ( .NOT. ( nlev_cas > 10 .AND. nlev_cas < 1000)) THEN355 PRINT*,'Valeur de nlev_cas peu probable'356 345 PRINT*, 'Oh probleme lecture dimension nlev' 346 ENDIF 347 ierr = nf90_inquire_dimension(nid, rid, len = nlev_cas) 348 PRINT*, 'OK3 read2: nid,rid,nlev_cas', nid, rid, nlev_cas 349 IF (.NOT. (nlev_cas > 10 .AND. nlev_cas < 1000)) THEN 350 PRINT*, 'Valeur de nlev_cas peu probable' 351 STOP 357 352 ENDIF 358 353 !....................................................................... 359 ierr =nf90_inq_dimid(nid,'time',rid)360 nt_cas =0354 ierr = nf90_inq_dimid(nid, 'time', rid) 355 nt_cas = 0 361 356 IF (ierr/=nf90_noerr) THEN 362 363 ENDIF 364 ierr =nf90_inquire_dimension(nid,rid,len=nt_cas)365 PRINT*, 'OK4 read2: nid,rid,nt_cas',nid,rid,nt_cas357 stop 'Oh probleme lecture dimension time' 358 ENDIF 359 ierr = nf90_inquire_dimension(nid, rid, len = nt_cas) 360 PRINT*, 'OK4 read2: nid,rid,nt_cas', nid, rid, nt_cas 366 361 ! Lecture de l'axe des temps 367 PRINT*, 'LECTURE DU TEMPS'368 ierr =nf90_inq_varid(nid,'time',timeid)362 PRINT*, 'LECTURE DU TEMPS' 363 ierr = nf90_inq_varid(nid, 'time', timeid) 369 364 IF(ierr/=nf90_noerr) THEN 370 print *,'Variable time manquante dans cas.nc:'371 ierr=nf90_noerr365 print *, 'Variable time manquante dans cas.nc:' 366 ierr = nf90_noerr 372 367 else 373 374 ierr = nf90_get_var(nid,timeid,time_val)375 376 print *,'Pb a la lecture de time cas.nc: '377 368 allocate(time_val(nt_cas)) 369 ierr = nf90_get_var(nid, timeid, time_val) 370 IF(ierr/=nf90_noerr) THEN 371 print *, 'Pb a la lecture de time cas.nc: ' 372 endif 378 373 endif 379 374 IF (nt_cas>1) THEN 380 pdt_cas=time_val(2)-time_val(1)375 pdt_cas = time_val(2) - time_val(1) 381 376 ELSE 382 pdt_cas=0.383 ENDIF 384 385 386 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!377 pdt_cas = 0. 378 ENDIF 379 380 381 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 387 382 !profils moyens: 388 allocate(plev_cas(nlev_cas, nt_cas),plevh_cas(nlev_cas+1))389 allocate(z_cas(nlev_cas, nt_cas),zh_cas(nlev_cas+1))390 allocate(ap_cas(nlev_cas +1),bp_cas(nlev_cas+1))391 allocate(t_cas(nlev_cas, nt_cas),q_cas(nlev_cas,nt_cas),qv_cas(nlev_cas,nt_cas),ql_cas(nlev_cas,nt_cas), &392 qi_cas(nlev_cas,nt_cas),rh_cas(nlev_cas,nt_cas))393 allocate(th_cas(nlev_cas, nt_cas),thl_cas(nlev_cas,nt_cas),thv_cas(nlev_cas,nt_cas),rv_cas(nlev_cas,nt_cas))394 allocate(u_cas(nlev_cas, nt_cas),v_cas(nlev_cas,nt_cas),vitw_cas(nlev_cas,nt_cas),omega_cas(nlev_cas,nt_cas))383 allocate(plev_cas(nlev_cas, nt_cas), plevh_cas(nlev_cas + 1)) 384 allocate(z_cas(nlev_cas, nt_cas), zh_cas(nlev_cas + 1)) 385 allocate(ap_cas(nlev_cas + 1), bp_cas(nlev_cas + 1)) 386 allocate(t_cas(nlev_cas, nt_cas), q_cas(nlev_cas, nt_cas), qv_cas(nlev_cas, nt_cas), ql_cas(nlev_cas, nt_cas), & 387 qi_cas(nlev_cas, nt_cas), rh_cas(nlev_cas, nt_cas)) 388 allocate(th_cas(nlev_cas, nt_cas), thl_cas(nlev_cas, nt_cas), thv_cas(nlev_cas, nt_cas), rv_cas(nlev_cas, nt_cas)) 389 allocate(u_cas(nlev_cas, nt_cas), v_cas(nlev_cas, nt_cas), vitw_cas(nlev_cas, nt_cas), omega_cas(nlev_cas, nt_cas)) 395 390 396 391 !forcing 397 allocate(ht_cas(nlev_cas, nt_cas),vt_cas(nlev_cas,nt_cas),dt_cas(nlev_cas,nt_cas),dtrad_cas(nlev_cas,nt_cas))398 allocate(hq_cas(nlev_cas, nt_cas),vq_cas(nlev_cas,nt_cas),dq_cas(nlev_cas,nt_cas))399 allocate(hth_cas(nlev_cas, nt_cas),vth_cas(nlev_cas,nt_cas),dth_cas(nlev_cas,nt_cas))400 allocate(hr_cas(nlev_cas, nt_cas),vr_cas(nlev_cas,nt_cas),dr_cas(nlev_cas,nt_cas))401 allocate(hu_cas(nlev_cas, nt_cas),vu_cas(nlev_cas,nt_cas),du_cas(nlev_cas,nt_cas))402 allocate(hv_cas(nlev_cas, nt_cas),vv_cas(nlev_cas,nt_cas),dv_cas(nlev_cas,nt_cas))403 allocate(ug_cas(nlev_cas, nt_cas))404 allocate(vg_cas(nlev_cas, nt_cas))405 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))406 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))392 allocate(ht_cas(nlev_cas, nt_cas), vt_cas(nlev_cas, nt_cas), dt_cas(nlev_cas, nt_cas), dtrad_cas(nlev_cas, nt_cas)) 393 allocate(hq_cas(nlev_cas, nt_cas), vq_cas(nlev_cas, nt_cas), dq_cas(nlev_cas, nt_cas)) 394 allocate(hth_cas(nlev_cas, nt_cas), vth_cas(nlev_cas, nt_cas), dth_cas(nlev_cas, nt_cas)) 395 allocate(hr_cas(nlev_cas, nt_cas), vr_cas(nlev_cas, nt_cas), dr_cas(nlev_cas, nt_cas)) 396 allocate(hu_cas(nlev_cas, nt_cas), vu_cas(nlev_cas, nt_cas), du_cas(nlev_cas, nt_cas)) 397 allocate(hv_cas(nlev_cas, nt_cas), vv_cas(nlev_cas, nt_cas), dv_cas(nlev_cas, nt_cas)) 398 allocate(ug_cas(nlev_cas, nt_cas)) 399 allocate(vg_cas(nlev_cas, nt_cas)) 400 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)) 401 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)) 407 402 408 403 … … 447 442 allocate(q2_prof_cas(nlev_cas)) 448 443 449 PRINT*, 'Allocations OK'450 CALL old_read_SCM (nid, nlev_cas,nt_cas,&451 ap_cas,bp_cas,z_cas,plev_cas,zh_cas,plevh_cas,t_cas,th_cas,thv_cas,thl_cas,qv_cas,&452 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,&453 dv_cas,hv_cas,vv_cas,dt_cas,ht_cas,vt_cas,dq_cas,hq_cas,vq_cas,dth_cas,hth_cas,vth_cas,&454 dr_cas,hr_cas,vr_cas,dtrad_cas,sens_cas,lat_cas,ts_cas,ps_cas,ustar_cas,tke_cas,&455 uw_cas,vw_cas,q1_cas,q2_cas,orog_cas,albedo_cas,emiss_cas,t_skin_cas,q_skin_cas,mom_rough,heat_rough, &456 o3_cas,rugos_cas,clay_cas,sand_cas)457 PRINT*, 'Read2 cas OK'458 do ii=1,nlev_cas459 PRINT*,'apres read2_cas, plev_cas=',ii,plev_cas(ii,1)444 PRINT*, 'Allocations OK' 445 CALL old_read_SCM (nid, nlev_cas, nt_cas, & 446 ap_cas, bp_cas, z_cas, plev_cas, zh_cas, plevh_cas, t_cas, th_cas, thv_cas, thl_cas, qv_cas, & 447 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, & 448 dv_cas, hv_cas, vv_cas, dt_cas, ht_cas, vt_cas, dq_cas, hq_cas, vq_cas, dth_cas, hth_cas, vth_cas, & 449 dr_cas, hr_cas, vr_cas, dtrad_cas, sens_cas, lat_cas, ts_cas, ps_cas, ustar_cas, tke_cas, & 450 uw_cas, vw_cas, q1_cas, q2_cas, orog_cas, albedo_cas, emiss_cas, t_skin_cas, q_skin_cas, mom_rough, heat_rough, & 451 o3_cas, rugos_cas, clay_cas, sand_cas) 452 PRINT*, 'Read2 cas OK' 453 DO ii = 1, nlev_cas 454 PRINT*, 'apres read2_cas, plev_cas=', ii, plev_cas(ii, 1) 460 455 enddo 461 456 462 463 457 END SUBROUTINE old_read_SCM_cas 464 458 465 459 466 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!460 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 467 461 SUBROUTINE deallocate2_1D_cases 468 462 !profils environnementaux: 469 deallocate(plev_cas, plevh_cas)470 471 deallocate(z_cas, zh_cas)472 deallocate(ap_cas, bp_cas)473 deallocate(t_cas, q_cas,qv_cas,ql_cas,qi_cas,rh_cas)474 deallocate(th_cas, thl_cas,thv_cas,rv_cas)475 deallocate(u_cas, v_cas,vitw_cas,omega_cas)463 deallocate(plev_cas, plevh_cas) 464 465 deallocate(z_cas, zh_cas) 466 deallocate(ap_cas, bp_cas) 467 deallocate(t_cas, q_cas, qv_cas, ql_cas, qi_cas, rh_cas) 468 deallocate(th_cas, thl_cas, thv_cas, rv_cas) 469 deallocate(u_cas, v_cas, vitw_cas, omega_cas) 476 470 477 471 !forcing 478 deallocate(ht_cas, vt_cas,dt_cas,dtrad_cas)479 deallocate(hq_cas, vq_cas,dq_cas)480 deallocate(hth_cas, vth_cas,dth_cas)481 deallocate(hr_cas, vr_cas,dr_cas)482 deallocate(hu_cas, vu_cas,du_cas)483 deallocate(hv_cas, vv_cas,dv_cas)472 deallocate(ht_cas, vt_cas, dt_cas, dtrad_cas) 473 deallocate(hq_cas, vq_cas, dq_cas) 474 deallocate(hth_cas, vth_cas, dth_cas) 475 deallocate(hr_cas, vr_cas, dr_cas) 476 deallocate(hu_cas, vu_cas, du_cas) 477 deallocate(hv_cas, vv_cas, dv_cas) 484 478 deallocate(ug_cas) 485 479 deallocate(vg_cas) 486 deallocate(lat_cas, sens_cas,ts_cas,ps_cas,ustar_cas,tke_cas,uw_cas,vw_cas,q1_cas,q2_cas)480 deallocate(lat_cas, sens_cas, ts_cas, ps_cas, ustar_cas, tke_cas, uw_cas, vw_cas, q1_cas, q2_cas) 487 481 488 482 !champs interpoles … … 528 522 529 523 530 !===================================================================== 531 SUBROUTINE read_cas2(nid,nlevel,ntime & 532 ,zz,pp,temp,qv,rh,theta,rv,u,v,ug,vg,w, & 533 du,hu,vu,dv,hv,vv,dt,dtrad,ht,vt,dq,hq,vq, & 534 dth,hth,vth,dr,hr,vr,sens,flat,ts,ustar,uw,vw,q1,q2) 535 536 !program reading forcing of the case study 537 IMPLICIT NONE 538 539 INTEGER ntime,nlevel 540 541 REAL zz(nlevel,ntime) 542 REAL pp(nlevel,ntime) 543 REAL temp(nlevel,ntime),qv(nlevel,ntime),rh(nlevel,ntime) 544 REAL theta(nlevel,ntime),rv(nlevel,ntime) 545 REAL u(nlevel,ntime) 546 REAL v(nlevel,ntime) 547 REAL ug(nlevel,ntime) 548 REAL vg(nlevel,ntime) 549 REAL w(nlevel,ntime) 550 REAL du(nlevel,ntime),hu(nlevel,ntime),vu(nlevel,ntime) 551 REAL dv(nlevel,ntime),hv(nlevel,ntime),vv(nlevel,ntime) 552 REAL dt(nlevel,ntime),ht(nlevel,ntime),vt(nlevel,ntime) 553 REAL dtrad(nlevel,ntime) 554 REAL dq(nlevel,ntime),hq(nlevel,ntime),vq(nlevel,ntime) 555 REAL dth(nlevel,ntime),hth(nlevel,ntime),vth(nlevel,ntime) 556 REAL dr(nlevel,ntime),hr(nlevel,ntime),vr(nlevel,ntime) 557 REAL flat(ntime),sens(ntime),ts(ntime),ustar(ntime) 558 REAL uw(nlevel,ntime),vw(nlevel,ntime),q1(nlevel,ntime),q2(nlevel,ntime),resul(nlevel,ntime),resul1(ntime) 559 560 561 INTEGER nid, ierr, ierr1,ierr2,rid,i 562 INTEGER nbvar3d 563 parameter(nbvar3d=39) 564 INTEGER var3didin(nbvar3d) 565 CHARACTER*5 name_var(1:nbvar3d) 566 data name_var/'zz','pp','temp','qv','rh','theta','rv','u','v','ug','vg','w','advu','hu','vu',& 567 'advv','hv','vv','advT','hT','vT','advq','hq','vq','advth','hth','vth','advr','hr','vr',& 568 'radT','uw','vw','q1','q2','sens','flat','ts','ustar'/ 569 570 571 do i=1,nbvar3d 572 print *,'Dans read_cas2, on va lire ',nid,i,name_var(i) 573 enddo 574 do i=1,nbvar3d 575 ierr=nf90_inq_varid(nid,name_var(i),var3didin(i)) 576 print *,'ierr=',i,ierr,name_var(i),var3didin(i) 577 IF(ierr/=nf90_noerr) THEN 578 print *,'Variable manquante dans cas.nc:',name_var(i) 579 endif 580 enddo 581 do i=1,nbvar3d 582 print *,'Dans read_cas2, on va lire ',var3didin(i),name_var(i) 583 IF(i<=35) THEN 584 ierr = nf90_get_var(nid,var3didin(i),resul, count = [1, 1, nlevel, ntime]) 585 print *,'Dans read_cas2, on a lu ',ierr,var3didin(i),name_var(i) 524 !===================================================================== 525 SUBROUTINE read_cas2(nid, nlevel, ntime & 526 , zz, pp, temp, qv, rh, theta, rv, u, v, ug, vg, w, & 527 du, hu, vu, dv, hv, vv, dt, dtrad, ht, vt, dq, hq, vq, & 528 dth, hth, vth, dr, hr, vr, sens, flat, ts, ustar, uw, vw, q1, q2) 529 530 !program reading forcing of the case study 531 IMPLICIT NONE 532 533 INTEGER ntime, nlevel 534 535 REAL zz(nlevel, ntime) 536 REAL pp(nlevel, ntime) 537 REAL temp(nlevel, ntime), qv(nlevel, ntime), rh(nlevel, ntime) 538 REAL theta(nlevel, ntime), rv(nlevel, ntime) 539 REAL u(nlevel, ntime) 540 REAL v(nlevel, ntime) 541 REAL ug(nlevel, ntime) 542 REAL vg(nlevel, ntime) 543 REAL w(nlevel, ntime) 544 REAL du(nlevel, ntime), hu(nlevel, ntime), vu(nlevel, ntime) 545 REAL dv(nlevel, ntime), hv(nlevel, ntime), vv(nlevel, ntime) 546 REAL dt(nlevel, ntime), ht(nlevel, ntime), vt(nlevel, ntime) 547 REAL dtrad(nlevel, ntime) 548 REAL dq(nlevel, ntime), hq(nlevel, ntime), vq(nlevel, ntime) 549 REAL dth(nlevel, ntime), hth(nlevel, ntime), vth(nlevel, ntime) 550 REAL dr(nlevel, ntime), hr(nlevel, ntime), vr(nlevel, ntime) 551 REAL flat(ntime), sens(ntime), ts(ntime), ustar(ntime) 552 REAL uw(nlevel, ntime), vw(nlevel, ntime), q1(nlevel, ntime), q2(nlevel, ntime), resul(nlevel, ntime), resul1(ntime) 553 554 INTEGER nid, ierr, ierr1, ierr2, rid, i 555 INTEGER nbvar3d 556 parameter(nbvar3d = 39) 557 INTEGER var3didin(nbvar3d) 558 CHARACTER*5 name_var(1:nbvar3d) 559 data name_var/'zz', 'pp', 'temp', 'qv', 'rh', 'theta', 'rv', 'u', 'v', 'ug', 'vg', 'w', 'advu', 'hu', 'vu', & 560 'advv', 'hv', 'vv', 'advT', 'hT', 'vT', 'advq', 'hq', 'vq', 'advth', 'hth', 'vth', 'advr', 'hr', 'vr', & 561 'radT', 'uw', 'vw', 'q1', 'q2', 'sens', 'flat', 'ts', 'ustar'/ 562 563 DO i = 1, nbvar3d 564 print *, 'Dans read_cas2, on va lire ', nid, i, name_var(i) 565 enddo 566 DO i = 1, nbvar3d 567 ierr = nf90_inq_varid(nid, name_var(i), var3didin(i)) 568 print *, 'ierr=', i, ierr, name_var(i), var3didin(i) 569 IF(ierr/=nf90_noerr) THEN 570 print *, 'Variable manquante dans cas.nc:', name_var(i) 571 endif 572 enddo 573 DO i = 1, nbvar3d 574 print *, 'Dans read_cas2, on va lire ', var3didin(i), name_var(i) 575 IF(i<=35) THEN 576 ierr = nf90_get_var(nid, var3didin(i), resul, count = [1, 1, nlevel, ntime]) 577 print *, 'Dans read_cas2, on a lu ', ierr, var3didin(i), name_var(i) 586 578 IF(ierr/=nf90_noerr) THEN 587 print *,'Pb a la lecture de cas.nc: ',name_var(i)588 579 print *, 'Pb a la lecture de cas.nc: ', name_var(i) 580 stop "getvarup" 589 581 endif 590 else591 print *, 'Dans read_cas2, on a lu ',ierr,var3didin(i),name_var(i)592 ierr = nf90_get_var(nid, var3didin(i),resul1, count = [1, 1, ntime])582 else 583 print *, 'Dans read_cas2, on a lu ', ierr, var3didin(i), name_var(i) 584 ierr = nf90_get_var(nid, var3didin(i), resul1, count = [1, 1, ntime]) 593 585 IF(ierr/=nf90_noerr) THEN 594 print *,'Pb a la lecture de cas.nc: ',name_var(i)595 586 print *, 'Pb a la lecture de cas.nc: ', name_var(i) 587 stop "getvarup" 596 588 endif 597 endif 598 select case(i) 599 case(1) ; zz=resul 600 case(2) ; pp=resul 601 case(3) ; temp=resul 602 case(4) ; qv=resul 603 case(5) ; rh=resul 604 case(6) ; theta=resul 605 case(7) ; rv=resul 606 case(8) ; u=resul 607 case(9) ; v=resul 608 case(10) ; ug=resul 609 case(11) ; vg=resul 610 case(12) ; w=resul 611 case(13) ; du=resul 612 case(14) ; hu=resul 613 case(15) ; vu=resul 614 case(16) ; dv=resul 615 case(17) ; hv=resul 616 case(18) ; vv=resul 617 case(19) ; dt=resul 618 case(20) ; ht=resul 619 case(21) ; vt=resul 620 case(22) ; dq=resul 621 case(23) ; hq=resul 622 case(24) ; vq=resul 623 case(25) ; dth=resul 624 case(26) ; hth=resul 625 case(27) ; vth=resul 626 case(28) ; dr=resul 627 case(29) ; hr=resul 628 case(30) ; vr=resul 629 case(31) ; dtrad=resul 630 case(32) ; uw=resul 631 case(33) ; vw=resul 632 case(34) ; q1=resul 633 case(35) ; q2=resul 634 case(36) ; sens=resul1 635 case(37) ; flat=resul1 636 case(38) ; ts=resul1 637 case(39) ; ustar=resul1 638 end select 639 enddo 640 641 642 END SUBROUTINE read_cas2 643 !====================================================================== 644 SUBROUTINE read2_cas(nid,nlevel,ntime, & 645 ap,bp,zz,pp,zzh,pph,temp,theta,thv,thl,qv,ql,qi,rh,rv,u,v,vitw,omega,ug,vg,& 646 du,hu,vu,dv,hv,vv,dt,ht,vt,dq,hq,vq, & 647 dth,hth,vth,dr,hr,vr,dtrad,sens,flat,ts,ps,ustar,tke,uw,vw,q1,q2, & 648 orog_cas,albedo_cas,emiss_cas,t_skin_cas,q_skin_cas,mom_rough, & 649 heat_rough,o3_cas,rugos_cas,clay_cas,sand_cas) 650 651 !program reading forcing of the case study 652 IMPLICIT NONE 653 654 INTEGER ntime,nlevel 655 656 REAL ap(nlevel+1),bp(nlevel+1) 657 REAL zz(nlevel,ntime),zzh(nlevel+1) 658 REAL pp(nlevel,ntime),pph(nlevel+1) 659 REAL temp(nlevel,ntime),qv(nlevel,ntime),ql(nlevel,ntime),qi(nlevel,ntime),rh(nlevel,ntime) 660 REAL theta(nlevel,ntime),thv(nlevel,ntime),thl(nlevel,ntime),rv(nlevel,ntime) 661 REAL u(nlevel,ntime),v(nlevel,ntime) 662 REAL ug(nlevel,ntime),vg(nlevel,ntime) 663 REAL vitw(nlevel,ntime),omega(nlevel,ntime) 664 REAL du(nlevel,ntime),hu(nlevel,ntime),vu(nlevel,ntime) 665 REAL dv(nlevel,ntime),hv(nlevel,ntime),vv(nlevel,ntime) 666 REAL dt(nlevel,ntime),ht(nlevel,ntime),vt(nlevel,ntime) 667 REAL dtrad(nlevel,ntime) 668 REAL dq(nlevel,ntime),hq(nlevel,ntime),vq(nlevel,ntime) 669 REAL dth(nlevel,ntime),hth(nlevel,ntime),vth(nlevel,ntime),hthl(nlevel,ntime) 670 REAL dr(nlevel,ntime),hr(nlevel,ntime),vr(nlevel,ntime) 671 REAL flat(ntime),sens(ntime),ustar(ntime) 672 REAL uw(nlevel,ntime),vw(nlevel,ntime),q1(nlevel,ntime),q2(nlevel,ntime) 673 REAL ts(ntime),ps(ntime),tke(ntime) 674 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 675 REAL apbp(nlevel+1),resul(nlevel,ntime),resul1(nlevel),resul2(ntime),resul3 676 677 678 INTEGER nid, ierr,ierr1,ierr2,rid,i 679 INTEGER nbvar3d 680 parameter(nbvar3d=62) 681 INTEGER var3didin(nbvar3d),missing_var(nbvar3d) 682 CHARACTER*12 name_var(1:nbvar3d) 683 data name_var/'coor_par_a','coor_par_b','height_h','pressure_h',& 684 'w','omega','ug','vg','uadv','uadvh','uadvv','vadv','vadvh','vadvv','tadv','tadvh','tadvv',& 685 'qadv','qadvh','qadvv','thadv','thadvh','thadvv','thladvh','radv','radvh','radvv','radcool','q1','q2','ustress','vstress', & 686 'rh',& 687 'height_f','pressure_f','temp','theta','thv','thl','qv','ql','qi','rv','u','v',& 688 'sfc_sens_flx','sfc_lat_flx','ts','ps','ustar','tke',& 689 'orog','albedo','emiss','t_skin','q_skin','mom_rough','heat_rough','o3','rugos','clay','sand'/ 690 do i=1,nbvar3d 691 missing_var(i)=0. 692 enddo 693 694 !----------------------------------------------------------------------- 695 do i=1,nbvar3d 696 ierr=nf90_inq_varid(nid,name_var(i),var3didin(i)) 697 IF(ierr/=nf90_noerr) THEN 698 print *,'Variable manquante dans cas.nc:',i,name_var(i) 699 ierr=nf90_noerr 700 missing_var(i)=1 701 else 589 endif 590 select case(i) 591 case(1) ; zz = resul 592 case(2) ; pp = resul 593 case(3) ; temp = resul 594 case(4) ; qv = resul 595 case(5) ; rh = resul 596 case(6) ; theta = resul 597 case(7) ; rv = resul 598 case(8) ; u = resul 599 case(9) ; v = resul 600 case(10) ; ug = resul 601 case(11) ; vg = resul 602 case(12) ; w = resul 603 case(13) ; du = resul 604 case(14) ; hu = resul 605 case(15) ; vu = resul 606 case(16) ; dv = resul 607 case(17) ; hv = resul 608 case(18) ; vv = resul 609 case(19) ; dt = resul 610 case(20) ; ht = resul 611 case(21) ; vt = resul 612 case(22) ; dq = resul 613 case(23) ; hq = resul 614 case(24) ; vq = resul 615 case(25) ; dth = resul 616 case(26) ; hth = resul 617 case(27) ; vth = resul 618 case(28) ; dr = resul 619 case(29) ; hr = resul 620 case(30) ; vr = resul 621 case(31) ; dtrad = resul 622 case(32) ; uw = resul 623 case(33) ; vw = resul 624 case(34) ; q1 = resul 625 case(35) ; q2 = resul 626 case(36) ; sens = resul1 627 case(37) ; flat = resul1 628 case(38) ; ts = resul1 629 case(39) ; ustar = resul1 630 end select 631 enddo 632 633 END SUBROUTINE read_cas2 634 !====================================================================== 635 SUBROUTINE read2_cas(nid, nlevel, ntime, & 636 ap, bp, zz, pp, zzh, pph, temp, theta, thv, thl, qv, ql, qi, rh, rv, u, v, vitw, omega, ug, vg, & 637 du, hu, vu, dv, hv, vv, dt, ht, vt, dq, hq, vq, & 638 dth, hth, vth, dr, hr, vr, dtrad, sens, flat, ts, ps, ustar, tke, uw, vw, q1, q2, & 639 orog_cas, albedo_cas, emiss_cas, t_skin_cas, q_skin_cas, mom_rough, & 640 heat_rough, o3_cas, rugos_cas, clay_cas, sand_cas) 641 642 !program reading forcing of the case study 643 IMPLICIT NONE 644 645 INTEGER ntime, nlevel 646 647 REAL ap(nlevel + 1), bp(nlevel + 1) 648 REAL zz(nlevel, ntime), zzh(nlevel + 1) 649 REAL pp(nlevel, ntime), pph(nlevel + 1) 650 REAL temp(nlevel, ntime), qv(nlevel, ntime), ql(nlevel, ntime), qi(nlevel, ntime), rh(nlevel, ntime) 651 REAL theta(nlevel, ntime), thv(nlevel, ntime), thl(nlevel, ntime), rv(nlevel, ntime) 652 REAL u(nlevel, ntime), v(nlevel, ntime) 653 REAL ug(nlevel, ntime), vg(nlevel, ntime) 654 REAL vitw(nlevel, ntime), omega(nlevel, ntime) 655 REAL du(nlevel, ntime), hu(nlevel, ntime), vu(nlevel, ntime) 656 REAL dv(nlevel, ntime), hv(nlevel, ntime), vv(nlevel, ntime) 657 REAL dt(nlevel, ntime), ht(nlevel, ntime), vt(nlevel, ntime) 658 REAL dtrad(nlevel, ntime) 659 REAL dq(nlevel, ntime), hq(nlevel, ntime), vq(nlevel, ntime) 660 REAL dth(nlevel, ntime), hth(nlevel, ntime), vth(nlevel, ntime), hthl(nlevel, ntime) 661 REAL dr(nlevel, ntime), hr(nlevel, ntime), vr(nlevel, ntime) 662 REAL flat(ntime), sens(ntime), ustar(ntime) 663 REAL uw(nlevel, ntime), vw(nlevel, ntime), q1(nlevel, ntime), q2(nlevel, ntime) 664 REAL ts(ntime), ps(ntime), tke(ntime) 665 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 666 REAL apbp(nlevel + 1), resul(nlevel, ntime), resul1(nlevel), resul2(ntime), resul3 667 668 INTEGER nid, ierr, ierr1, ierr2, rid, i 669 INTEGER nbvar3d 670 parameter(nbvar3d = 62) 671 INTEGER var3didin(nbvar3d), missing_var(nbvar3d) 672 CHARACTER*12 name_var(1:nbvar3d) 673 data name_var/'coor_par_a', 'coor_par_b', 'height_h', 'pressure_h', & 674 'w', 'omega', 'ug', 'vg', 'uadv', 'uadvh', 'uadvv', 'vadv', 'vadvh', 'vadvv', 'tadv', 'tadvh', 'tadvv', & 675 'qadv', 'qadvh', 'qadvv', 'thadv', 'thadvh', 'thadvv', 'thladvh', 'radv', 'radvh', 'radvv', 'radcool', 'q1', 'q2', 'ustress', 'vstress', & 676 'rh', & 677 'height_f', 'pressure_f', 'temp', 'theta', 'thv', 'thl', 'qv', 'ql', 'qi', 'rv', 'u', 'v', & 678 'sfc_sens_flx', 'sfc_lat_flx', 'ts', 'ps', 'ustar', 'tke', & 679 'orog', 'albedo', 'emiss', 't_skin', 'q_skin', 'mom_rough', 'heat_rough', 'o3', 'rugos', 'clay', 'sand'/ 680 DO i = 1, nbvar3d 681 missing_var(i) = 0. 682 enddo 683 684 !----------------------------------------------------------------------- 685 DO i = 1, nbvar3d 686 ierr = nf90_inq_varid(nid, name_var(i), var3didin(i)) 687 IF(ierr/=nf90_noerr) THEN 688 print *, 'Variable manquante dans cas.nc:', i, name_var(i) 689 ierr = nf90_noerr 690 missing_var(i) = 1 691 else 702 692 !----------------------------------------------------------------------- 703 693 IF(i<=4) then ! Lecture des coord pression en (nlevelp1,lat,lon) 704 ierr = nf90_get_var(nid,var3didin(i),apbp, count = [1, 1, nlevel + 1])705 print *,'read2_cas(apbp), on a lu ',i,name_var(i)706 707 print *,'Pb a la lecture de cas.nc: ',name_var(i)708 709 710 694 ierr = nf90_get_var(nid, var3didin(i), apbp, count = [1, 1, nlevel + 1]) 695 print *, 'read2_cas(apbp), on a lu ', i, name_var(i) 696 IF(ierr/=nf90_noerr) THEN 697 print *, 'Pb a la lecture de cas.nc: ', name_var(i) 698 stop "getvarup" 699 endif 700 !----------------------------------------------------------------------- 711 701 else IF(i>4.AND.i<=45) then ! Lecture des variables en (time,nlevel,lat,lon) 712 ierr = nf90_get_var(nid,var3didin(i),resul, count = [1, 1, nlevel, ntime])713 print *,'read2_cas(resul), on a lu ',i,name_var(i)714 715 print *,'Pb a la lecture de cas.nc: ',name_var(i)716 717 718 702 ierr = nf90_get_var(nid, var3didin(i), resul, count = [1, 1, nlevel, ntime]) 703 print *, 'read2_cas(resul), on a lu ', i, name_var(i) 704 IF(ierr/=nf90_noerr) THEN 705 print *, 'Pb a la lecture de cas.nc: ', name_var(i) 706 stop "getvarup" 707 endif 708 !----------------------------------------------------------------------- 719 709 ELSE IF (i>45.AND.i<=51) then ! Lecture des variables en (time,lat,lon) 720 ierr = nf90_get_var(nid,var3didin(i),resul2, count = [1, 1, ntime])721 print *,'read2_cas(resul2), on a lu ',i,name_var(i)722 723 print *,'Pb a la lecture de cas.nc: ',name_var(i)724 725 726 710 ierr = nf90_get_var(nid, var3didin(i), resul2, count = [1, 1, ntime]) 711 print *, 'read2_cas(resul2), on a lu ', i, name_var(i) 712 IF(ierr/=nf90_noerr) THEN 713 print *, 'Pb a la lecture de cas.nc: ', name_var(i) 714 stop "getvarup" 715 endif 716 !----------------------------------------------------------------------- 727 717 else ! Lecture des constantes (lat,lon) 728 ierr = nf90_get_var(nid,var3didin(i),resul3)729 print *,'read2_cas(resul3), on a lu ',i,name_var(i)730 731 print *,'Pb a la lecture de cas.nc: ',name_var(i)732 733 718 ierr = nf90_get_var(nid, var3didin(i), resul3) 719 print *, 'read2_cas(resul3), on a lu ', i, name_var(i) 720 IF(ierr/=nf90_noerr) THEN 721 print *, 'Pb a la lecture de cas.nc: ', name_var(i) 722 stop "getvarup" 723 endif 734 724 endif 735 endif 736 !----------------------------------------------------------------------- 737 select case(i) 738 case(1) ; ap=apbp ! donnees indexees en nlevel+1 739 case(2) ; bp=apbp 740 case(3) ; zzh=apbp 741 case(4) ; pph=apbp 742 case(5) ; vitw=resul ! donnees indexees en nlevel,time 743 case(6) ; omega=resul 744 case(7) ; ug=resul 745 case(8) ; vg=resul 746 case(9) ; du=resul 747 case(10) ; hu=resul 748 case(11) ; vu=resul 749 case(12) ; dv=resul 750 case(13) ; hv=resul 751 case(14) ; vv=resul 752 case(15) ; dt=resul 753 case(16) ; ht=resul 754 case(17) ; vt=resul 755 case(18) ; dq=resul 756 case(19) ; hq=resul 757 case(20) ; vq=resul 758 case(21) ; dth=resul 759 case(22) ; hth=resul 760 case(23) ; vth=resul 761 case(24) ; hthl=resul 762 case(25) ; dr=resul 763 case(26) ; hr=resul 764 case(27) ; vr=resul 765 case(28) ; dtrad=resul 766 case(29) ; q1=resul 767 case(30) ; q2=resul 768 case(31) ; uw=resul 769 case(32) ; vw=resul 770 case(33) ; rh=resul 771 case(34) ; zz=resul ! donnees en time,nlevel pour profil initial 772 case(35) ; pp=resul 773 case(36) ; temp=resul 774 case(37) ; theta=resul 775 case(38) ; thv=resul 776 case(39) ; thl=resul 777 case(40) ; qv=resul 778 case(41) ; ql=resul 779 case(42) ; qi=resul 780 case(43) ; rv=resul 781 case(44) ; u=resul 782 case(45) ; v=resul 783 case(46) ; sens=resul2 ! donnees indexees en time 784 case(47) ; flat=resul2 785 case(48) ; ts=resul2 786 case(49) ; ps=resul2 787 case(50) ; ustar=resul2 788 case(51) ; tke=resul2 789 case(52) ; orog_cas=resul3 ! constantes 790 case(53) ; albedo_cas=resul3 791 case(54) ; emiss_cas=resul3 792 case(55) ; t_skin_cas=resul3 793 case(56) ; q_skin_cas=resul3 794 case(57) ; mom_rough=resul3 795 case(58) ; heat_rough=resul3 796 case(59) ; o3_cas=resul3 797 case(60) ; rugos_cas=resul3 798 case(61) ; clay_cas=resul3 799 case(62) ; sand_cas=resul3 800 end select 801 resul=0. 802 resul1=0. 803 resul2=0. 804 resul3=0. 805 enddo 806 !----------------------------------------------------------------------- 807 808 809 810 END SUBROUTINE read2_cas 811 812 !====================================================================== 813 SUBROUTINE old_read_SCM(nid,nlevel,ntime, & 814 ap,bp,zz,pp,zzh,pph,temp,theta,thv,thl,qv,ql,qi,rh,rv,u,v,vitw,omega,ug,vg,& 815 du,hu,vu,dv,hv,vv,dt,ht,vt,dq,hq,vq, & 816 dth,hth,vth,dr,hr,vr,dtrad,sens,flat,ts,ps,ustar,tke,uw,vw,q1,q2, & 817 orog_cas,albedo_cas,emiss_cas,t_skin_cas,q_skin_cas,mom_rough, & 818 heat_rough,o3_cas,rugos_cas,clay_cas,sand_cas) 819 820 !program reading forcing of the case study 821 IMPLICIT NONE 822 823 INTEGER ntime,nlevel,k,t 824 825 REAL ap(nlevel+1),bp(nlevel+1) 826 REAL zz(nlevel,ntime),zzh(nlevel+1) 827 REAL pp(nlevel,ntime),pph(nlevel+1) 828 !profils initiaux 829 REAL temp0(nlevel),qv0(nlevel),ql0(nlevel),qi0(nlevel),u0(nlevel),v0(nlevel),tke0(nlevel) 830 REAL pp0(nlevel) 831 REAL temp(nlevel,ntime),qv(nlevel,ntime),ql(nlevel,ntime),qi(nlevel,ntime),rh(nlevel,ntime) 832 REAL theta(nlevel,ntime),thv(nlevel,ntime),thl(nlevel,ntime),rv(nlevel,ntime) 833 REAL u(nlevel,ntime),v(nlevel,ntime),tke(nlevel,ntime) 834 REAL ug(nlevel,ntime),vg(nlevel,ntime) 835 REAL vitw(nlevel,ntime),omega(nlevel,ntime) 836 REAL du(nlevel,ntime),hu(nlevel,ntime),vu(nlevel,ntime) 837 REAL dv(nlevel,ntime),hv(nlevel,ntime),vv(nlevel,ntime) 838 REAL dt(nlevel,ntime),ht(nlevel,ntime),vt(nlevel,ntime) 839 REAL dtrad(nlevel,ntime) 840 REAL dq(nlevel,ntime),hq(nlevel,ntime),vq(nlevel,ntime) 841 REAL dth(nlevel,ntime),hth(nlevel,ntime),vth(nlevel,ntime),hthl(nlevel,ntime) 842 REAL dr(nlevel,ntime),hr(nlevel,ntime),vr(nlevel,ntime) 843 REAL flat(ntime),sens(ntime),ustar(ntime) 844 REAL uw(nlevel,ntime),vw(nlevel,ntime),q1(nlevel,ntime),q2(nlevel,ntime) 845 REAL ts(ntime),ps(ntime) 846 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 847 REAL apbp(nlevel+1),resul(nlevel,ntime),resul1(nlevel),resul2(ntime),resul3 848 849 850 INTEGER nid, ierr,ierr1,ierr2,rid,i 851 INTEGER nbvar3d 852 parameter(nbvar3d=70) 853 INTEGER var3didin(nbvar3d),missing_var(nbvar3d) 854 CHARACTER*13 name_var(1:nbvar3d) 855 data name_var/'coor_par_a','coor_par_b','height_h','pressure_h',& 856 'temp','qv','ql','qi','u','v','tke','pressure',& 857 'w','omega','ug','vg','uadv','uadvh','uadvv','vadv','vadvh','vadvv','tadv','tadvh','tadvv',& 858 'qvadv','qvadvh','qvadvv','thadv','thadvh','thadvv','thladvh','radv','radvh','radvv','radcool','q1','q2','ustress', & 859 'vstress','rh',& 860 'height_f','pressure_forc','tempt','theta','thv','thl','qvt','qlt','qit','rv','ut','vt','tket',& 861 'sfc_sens_flx','sfc_lat_flx','ts','ps','ustar',& 862 'orog','albedo','emiss','t_skin','q_skin','mom_rough','heat_rough','o3','rugos','clay','sand'/ 863 do i=1,nbvar3d 864 missing_var(i)=0. 865 enddo 866 867 !----------------------------------------------------------------------- 868 869 PRINT*,'ON EST LA' 870 do i=1,nbvar3d 871 ierr=nf90_inq_varid(nid,name_var(i),var3didin(i)) 872 IF(ierr/=nf90_noerr) THEN 873 print *,'Variable manquante dans cas.nc:',i,name_var(i) 874 ierr=nf90_noerr 875 missing_var(i)=1 876 else 725 endif 726 !----------------------------------------------------------------------- 727 select case(i) 728 case(1) ; ap = apbp ! donnees indexees en nlevel+1 729 case(2) ; bp = apbp 730 case(3) ; zzh = apbp 731 case(4) ; pph = apbp 732 case(5) ; vitw = resul ! donnees indexees en nlevel,time 733 case(6) ; omega = resul 734 case(7) ; ug = resul 735 case(8) ; vg = resul 736 case(9) ; du = resul 737 case(10) ; hu = resul 738 case(11) ; vu = resul 739 case(12) ; dv = resul 740 case(13) ; hv = resul 741 case(14) ; vv = resul 742 case(15) ; dt = resul 743 case(16) ; ht = resul 744 case(17) ; vt = resul 745 case(18) ; dq = resul 746 case(19) ; hq = resul 747 case(20) ; vq = resul 748 case(21) ; dth = resul 749 case(22) ; hth = resul 750 case(23) ; vth = resul 751 case(24) ; hthl = resul 752 case(25) ; dr = resul 753 case(26) ; hr = resul 754 case(27) ; vr = resul 755 case(28) ; dtrad = resul 756 case(29) ; q1 = resul 757 case(30) ; q2 = resul 758 case(31) ; uw = resul 759 case(32) ; vw = resul 760 case(33) ; rh = resul 761 case(34) ; zz = resul ! donnees en time,nlevel pour profil initial 762 case(35) ; pp = resul 763 case(36) ; temp = resul 764 case(37) ; theta = resul 765 case(38) ; thv = resul 766 case(39) ; thl = resul 767 case(40) ; qv = resul 768 case(41) ; ql = resul 769 case(42) ; qi = resul 770 case(43) ; rv = resul 771 case(44) ; u = resul 772 case(45) ; v = resul 773 case(46) ; sens = resul2 ! donnees indexees en time 774 case(47) ; flat = resul2 775 case(48) ; ts = resul2 776 case(49) ; ps = resul2 777 case(50) ; ustar = resul2 778 case(51) ; tke = resul2 779 case(52) ; orog_cas = resul3 ! constantes 780 case(53) ; albedo_cas = resul3 781 case(54) ; emiss_cas = resul3 782 case(55) ; t_skin_cas = resul3 783 case(56) ; q_skin_cas = resul3 784 case(57) ; mom_rough = resul3 785 case(58) ; heat_rough = resul3 786 case(59) ; o3_cas = resul3 787 case(60) ; rugos_cas = resul3 788 case(61) ; clay_cas = resul3 789 case(62) ; sand_cas = resul3 790 end select 791 resul = 0. 792 resul1 = 0. 793 resul2 = 0. 794 resul3 = 0. 795 enddo 796 !----------------------------------------------------------------------- 797 798 END SUBROUTINE read2_cas 799 800 !====================================================================== 801 SUBROUTINE old_read_SCM(nid, nlevel, ntime, & 802 ap, bp, zz, pp, zzh, pph, temp, theta, thv, thl, qv, ql, qi, rh, rv, u, v, vitw, omega, ug, vg, & 803 du, hu, vu, dv, hv, vv, dt, ht, vt, dq, hq, vq, & 804 dth, hth, vth, dr, hr, vr, dtrad, sens, flat, ts, ps, ustar, tke, uw, vw, q1, q2, & 805 orog_cas, albedo_cas, emiss_cas, t_skin_cas, q_skin_cas, mom_rough, & 806 heat_rough, o3_cas, rugos_cas, clay_cas, sand_cas) 807 808 !program reading forcing of the case study 809 IMPLICIT NONE 810 811 INTEGER ntime, nlevel, k, t 812 813 REAL ap(nlevel + 1), bp(nlevel + 1) 814 REAL zz(nlevel, ntime), zzh(nlevel + 1) 815 REAL pp(nlevel, ntime), pph(nlevel + 1) 816 !profils initiaux 817 REAL temp0(nlevel), qv0(nlevel), ql0(nlevel), qi0(nlevel), u0(nlevel), v0(nlevel), tke0(nlevel) 818 REAL pp0(nlevel) 819 REAL temp(nlevel, ntime), qv(nlevel, ntime), ql(nlevel, ntime), qi(nlevel, ntime), rh(nlevel, ntime) 820 REAL theta(nlevel, ntime), thv(nlevel, ntime), thl(nlevel, ntime), rv(nlevel, ntime) 821 REAL u(nlevel, ntime), v(nlevel, ntime), tke(nlevel, ntime) 822 REAL ug(nlevel, ntime), vg(nlevel, ntime) 823 REAL vitw(nlevel, ntime), omega(nlevel, ntime) 824 REAL du(nlevel, ntime), hu(nlevel, ntime), vu(nlevel, ntime) 825 REAL dv(nlevel, ntime), hv(nlevel, ntime), vv(nlevel, ntime) 826 REAL dt(nlevel, ntime), ht(nlevel, ntime), vt(nlevel, ntime) 827 REAL dtrad(nlevel, ntime) 828 REAL dq(nlevel, ntime), hq(nlevel, ntime), vq(nlevel, ntime) 829 REAL dth(nlevel, ntime), hth(nlevel, ntime), vth(nlevel, ntime), hthl(nlevel, ntime) 830 REAL dr(nlevel, ntime), hr(nlevel, ntime), vr(nlevel, ntime) 831 REAL flat(ntime), sens(ntime), ustar(ntime) 832 REAL uw(nlevel, ntime), vw(nlevel, ntime), q1(nlevel, ntime), q2(nlevel, ntime) 833 REAL ts(ntime), ps(ntime) 834 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 835 REAL apbp(nlevel + 1), resul(nlevel, ntime), resul1(nlevel), resul2(ntime), resul3 836 837 INTEGER nid, ierr, ierr1, ierr2, rid, i 838 INTEGER nbvar3d 839 parameter(nbvar3d = 70) 840 INTEGER var3didin(nbvar3d), missing_var(nbvar3d) 841 CHARACTER*13 name_var(1:nbvar3d) 842 data name_var/'coor_par_a', 'coor_par_b', 'height_h', 'pressure_h', & 843 'temp', 'qv', 'ql', 'qi', 'u', 'v', 'tke', 'pressure', & 844 'w', 'omega', 'ug', 'vg', 'uadv', 'uadvh', 'uadvv', 'vadv', 'vadvh', 'vadvv', 'tadv', 'tadvh', 'tadvv', & 845 'qvadv', 'qvadvh', 'qvadvv', 'thadv', 'thadvh', 'thadvv', 'thladvh', 'radv', 'radvh', 'radvv', 'radcool', 'q1', 'q2', 'ustress', & 846 'vstress', 'rh', & 847 'height_f', 'pressure_forc', 'tempt', 'theta', 'thv', 'thl', 'qvt', 'qlt', 'qit', 'rv', 'ut', 'vt', 'tket', & 848 'sfc_sens_flx', 'sfc_lat_flx', 'ts', 'ps', 'ustar', & 849 'orog', 'albedo', 'emiss', 't_skin', 'q_skin', 'mom_rough', 'heat_rough', 'o3', 'rugos', 'clay', 'sand'/ 850 DO i = 1, nbvar3d 851 missing_var(i) = 0. 852 enddo 853 854 !----------------------------------------------------------------------- 855 856 PRINT*, 'ON EST LA' 857 DO i = 1, nbvar3d 858 ierr = nf90_inq_varid(nid, name_var(i), var3didin(i)) 859 IF(ierr/=nf90_noerr) THEN 860 print *, 'Variable manquante dans cas.nc:', i, name_var(i) 861 ierr = nf90_noerr 862 missing_var(i) = 1 863 else 877 864 !----------------------------------------------------------------------- 878 865 IF(i<=4) then ! Lecture des coord pression en (nlevelp1,lat,lon) 879 ierr = nf90_get_var(nid,var3didin(i),apbp)880 print *,'read2_cas(apbp), on a lu ',i,name_var(i)881 882 print *,'Pb a la lecture de cas.nc: ',name_var(i)883 884 885 866 ierr = nf90_get_var(nid, var3didin(i), apbp) 867 print *, 'read2_cas(apbp), on a lu ', i, name_var(i) 868 IF(ierr/=nf90_noerr) THEN 869 print *, 'Pb a la lecture de cas.nc: ', name_var(i) 870 stop "getvarup" 871 endif 872 !----------------------------------------------------------------------- 886 873 else IF(i>4.AND.i<=12) then ! Lecture des variables en (time,nlevel,lat,lon) 887 ierr = nf90_get_var(nid,var3didin(i),resul1)888 print *,'read2_cas(resul1), on a lu ',i,name_var(i)889 890 print *,'Pb a la lecture de cas.nc: ',name_var(i)891 892 893 PRINT*,'Lecture de la variable #i ',i,name_var(i),minval(resul1),maxval(resul1)894 874 ierr = nf90_get_var(nid, var3didin(i), resul1) 875 print *, 'read2_cas(resul1), on a lu ', i, name_var(i) 876 IF(ierr/=nf90_noerr) THEN 877 print *, 'Pb a la lecture de cas.nc: ', name_var(i) 878 stop "getvarup" 879 endif 880 PRINT*, 'Lecture de la variable #i ', i, name_var(i), minval(resul1), maxval(resul1) 881 !----------------------------------------------------------------------- 895 882 else IF(i>12.AND.i<=54) then ! Lecture des variables en (time,nlevel,lat,lon) 896 ierr = nf90_get_var(nid,var3didin(i),resul)897 print *,'read2_cas(resul), on a lu ',i,name_var(i)898 899 print *,'Pb a la lecture de cas.nc: ',name_var(i)900 901 902 PRINT*,'Lecture de la variable #i ',i,name_var(i),minval(resul),maxval(resul)903 883 ierr = nf90_get_var(nid, var3didin(i), resul) 884 print *, 'read2_cas(resul), on a lu ', i, name_var(i) 885 IF(ierr/=nf90_noerr) THEN 886 print *, 'Pb a la lecture de cas.nc: ', name_var(i) 887 stop "getvarup" 888 endif 889 PRINT*, 'Lecture de la variable #i ', i, name_var(i), minval(resul), maxval(resul) 890 !----------------------------------------------------------------------- 904 891 ELSE IF (i>54.AND.i<=65) then ! Lecture des variables en (time,lat,lon) 905 ierr = nf90_get_var(nid,var3didin(i),resul2)906 print *,'read2_cas(resul2), on a lu ',i,name_var(i)907 908 print *,'Pb a la lecture de cas.nc: ',name_var(i)909 910 911 PRINT*,'Lecture de la variable #i ',i,name_var(i),minval(resul2),maxval(resul2)912 892 ierr = nf90_get_var(nid, var3didin(i), resul2) 893 print *, 'read2_cas(resul2), on a lu ', i, name_var(i) 894 IF(ierr/=nf90_noerr) THEN 895 print *, 'Pb a la lecture de cas.nc: ', name_var(i) 896 stop "getvarup" 897 endif 898 PRINT*, 'Lecture de la variable #i ', i, name_var(i), minval(resul2), maxval(resul2) 899 !----------------------------------------------------------------------- 913 900 else ! Lecture des constantes (lat,lon) 914 ierr = nf90_get_var(nid,var3didin(i),resul3)915 print *,'read2_cas(resul3), on a lu ',i,name_var(i)916 917 print *,'Pb a la lecture de cas.nc: ',name_var(i)918 919 920 PRINT*,'Lecture de la variable #i ',i,name_var(i),resul3901 ierr = nf90_get_var(nid, var3didin(i), resul3) 902 print *, 'read2_cas(resul3), on a lu ', i, name_var(i) 903 IF(ierr/=nf90_noerr) THEN 904 print *, 'Pb a la lecture de cas.nc: ', name_var(i) 905 stop "getvarup" 906 endif 907 PRINT*, 'Lecture de la variable #i ', i, name_var(i), resul3 921 908 endif 922 endif923 !-----------------------------------------------------------------------924 select case(i)909 endif 910 !----------------------------------------------------------------------- 911 select case(i) 925 912 !case(1) ; ap=apbp ! donnees indexees en nlevel+1 926 913 ! case(2) ; bp=apbp 927 case(3) ; zzh=apbp 928 case(4) ; pph=apbp 929 case(5) ; temp0=resul1 ! donnees initiales 930 case(6) ; qv0=resul1 931 case(7) ; ql0=resul1 932 case(8) ; qi0=resul1 933 case(9) ; u0=resul1 934 case(10) ; v0=resul1 935 case(11) ; tke0=resul1 936 case(12) ; pp0=resul1 937 case(13) ; vitw=resul ! donnees indexees en nlevel,time 938 case(14) ; omega=resul 939 case(15) ; ug=resul 940 case(16) ; vg=resul 941 case(17) ; du=resul 942 case(18) ; hu=resul 943 case(19) ; vu=resul 944 case(20) ; dv=resul 945 case(21) ; hv=resul 946 case(22) ; vv=resul 947 case(23) ; dt=resul 948 case(24) ; ht=resul 949 case(25) ; vt=resul 950 case(26) ; dq=resul 951 case(27) ; hq=resul 952 case(28) ; vq=resul 953 case(29) ; dth=resul 954 case(30) ; hth=resul 955 case(31) ; vth=resul 956 case(32) ; hthl=resul 957 case(33) ; dr=resul 958 case(34) ; hr=resul 959 case(35) ; vr=resul 960 case(36) ; dtrad=resul 961 case(37) ; q1=resul 962 case(38) ; q2=resul 963 case(39) ; uw=resul 964 case(40) ; vw=resul 965 case(41) ; rh=resul 966 case(42) ; zz=resul ! donnees en time,nlevel pour profil initial 967 case(43) ; pp=resul 968 case(44) ; temp=resul 969 case(45) ; theta=resul 970 case(46) ; thv=resul 971 case(47) ; thl=resul 972 case(48) ; qv=resul 973 case(49) ; ql=resul 974 case(50) ; qi=resul 975 case(51) ; rv=resul 976 case(52) ; u=resul 977 case(53) ; v=resul 978 case(54) ; tke=resul 979 case(55) ; sens=resul2 ! donnees indexees en time 980 case(56) ; flat=resul2 981 case(57) ; ts=resul2 982 case(58) ; ps=resul2 983 case(59) ; ustar=resul2 984 case(60) ; orog_cas=resul3 ! constantes 985 case(61) ; albedo_cas=resul3 986 case(62) ; emiss_cas=resul3 987 case(63) ; t_skin_cas=resul3 988 case(64) ; q_skin_cas=resul3 989 case(65) ; mom_rough=resul3 990 case(66) ; heat_rough=resul3 991 case(67) ; o3_cas=resul3 992 case(68) ; rugos_cas=resul3 993 case(69) ; clay_cas=resul3 994 case(70) ; sand_cas=resul3 995 end select 996 resul=0. 997 resul1=0. 998 resul2=0. 999 resul3=0. 1000 enddo 1001 PRINT*,'Lecture de la variable APRES ,sens ',minval(sens),maxval(sens) 1002 PRINT*,'Lecture de la variable APRES ,flat ',minval(flat),maxval(flat) 1003 1004 !CR:ATTENTION EN ATTENTE DE REGLER LA QUESTION DU PAS DE TEMPS INITIAL 1005 do t=1,ntime 1006 do k=1,nlevel 1007 temp(k,t)=temp0(k) 1008 qv(k,t)=qv0(k) 1009 ql(k,t)=ql0(k) 1010 qi(k,t)=qi0(k) 1011 u(k,t)=u0(k) 1012 v(k,t)=v0(k) 1013 tke(k,t)=tke0(k) 1014 enddo 1015 enddo 1016 !----------------------------------------------------------------------- 1017 1018 1019 END SUBROUTINE old_read_SCM 1020 !====================================================================== 1021 1022 !====================================================================== 1023 SUBROUTINE interp_case_time2(day,day1,annee_ref & 1024 ! & ,year_cas,day_cas,nt_cas,pdt_forc,nlev_cas & 1025 ,nt_cas,nlev_cas & 1026 ,ts_cas,ps_cas,plev_cas,t_cas,q_cas,u_cas,v_cas & 1027 ,ug_cas,vg_cas,vitw_cas,du_cas,hu_cas,vu_cas & 1028 ,dv_cas,hv_cas,vv_cas,dt_cas,ht_cas,vt_cas,dtrad_cas & 1029 ,dq_cas,hq_cas,vq_cas,lat_cas,sens_cas,ustar_cas & 1030 ,uw_cas,vw_cas,q1_cas,q2_cas & 1031 ,ts_prof_cas,plev_prof_cas,t_prof_cas,q_prof_cas & 1032 ,u_prof_cas,v_prof_cas,ug_prof_cas,vg_prof_cas & 1033 ,vitw_prof_cas,du_prof_cas,hu_prof_cas,vu_prof_cas & 1034 ,dv_prof_cas,hv_prof_cas,vv_prof_cas,dt_prof_cas & 1035 ,ht_prof_cas,vt_prof_cas,dtrad_prof_cas,dq_prof_cas & 1036 ,hq_prof_cas,vq_prof_cas,lat_prof_cas,sens_prof_cas & 1037 ,ustar_prof_cas,uw_prof_cas,vw_prof_cas,q1_prof_cas,q2_prof_cas) 1038 1039 1040 IMPLICIT NONE 1041 1042 !--------------------------------------------------------------------------------------- 1043 ! Time interpolation of a 2D field to the timestep corresponding to day 1044 1045 ! day: current julian day (e.g. 717538.2) 1046 ! day1: first day of the simulation 1047 ! nt_cas: total nb of data in the forcing 1048 ! pdt_cas: total time interval (in sec) between 2 forcing data 1049 !--------------------------------------------------------------------------------------- 1050 1051 INCLUDE "compar1d.h" 1052 INCLUDE "date_cas.h" 1053 1054 ! inputs: 1055 INTEGER annee_ref 1056 INTEGER nt_cas,nlev_cas 1057 REAL day, day1,day_cas 1058 REAL ts_cas(nt_cas),ps_cas(nt_cas) 1059 REAL plev_cas(nlev_cas,nt_cas) 1060 REAL t_cas(nlev_cas,nt_cas),q_cas(nlev_cas,nt_cas) 1061 REAL u_cas(nlev_cas,nt_cas),v_cas(nlev_cas,nt_cas) 1062 REAL ug_cas(nlev_cas,nt_cas),vg_cas(nlev_cas,nt_cas) 1063 REAL vitw_cas(nlev_cas,nt_cas) 1064 REAL du_cas(nlev_cas,nt_cas),hu_cas(nlev_cas,nt_cas),vu_cas(nlev_cas,nt_cas) 1065 REAL dv_cas(nlev_cas,nt_cas),hv_cas(nlev_cas,nt_cas),vv_cas(nlev_cas,nt_cas) 1066 REAL dt_cas(nlev_cas,nt_cas),ht_cas(nlev_cas,nt_cas),vt_cas(nlev_cas,nt_cas) 1067 REAL dtrad_cas(nlev_cas,nt_cas) 1068 REAL dq_cas(nlev_cas,nt_cas),hq_cas(nlev_cas,nt_cas),vq_cas(nlev_cas,nt_cas) 1069 REAL lat_cas(nt_cas) 1070 REAL sens_cas(nt_cas) 1071 REAL ustar_cas(nt_cas),uw_cas(nlev_cas,nt_cas),vw_cas(nlev_cas,nt_cas) 1072 REAL q1_cas(nlev_cas,nt_cas),q2_cas(nlev_cas,nt_cas) 1073 1074 ! outputs: 1075 REAL plev_prof_cas(nlev_cas) 1076 REAL t_prof_cas(nlev_cas),q_prof_cas(nlev_cas) 1077 REAL u_prof_cas(nlev_cas),v_prof_cas(nlev_cas) 1078 REAL ug_prof_cas(nlev_cas),vg_prof_cas(nlev_cas) 1079 REAL vitw_prof_cas(nlev_cas) 1080 REAL du_prof_cas(nlev_cas),hu_prof_cas(nlev_cas),vu_prof_cas(nlev_cas) 1081 REAL dv_prof_cas(nlev_cas),hv_prof_cas(nlev_cas),vv_prof_cas(nlev_cas) 1082 REAL dt_prof_cas(nlev_cas),ht_prof_cas(nlev_cas),vt_prof_cas(nlev_cas) 1083 REAL dtrad_prof_cas(nlev_cas) 1084 REAL dq_prof_cas(nlev_cas),hq_prof_cas(nlev_cas),vq_prof_cas(nlev_cas) 1085 REAL lat_prof_cas,sens_prof_cas,ts_prof_cas,ustar_prof_cas 1086 REAL uw_prof_cas(nlev_cas),vw_prof_cas(nlev_cas),q1_prof_cas(nlev_cas),q2_prof_cas(nlev_cas) 1087 ! local: 1088 INTEGER it_cas1, it_cas2,k 1089 REAL timeit,time_cas1,time_cas2,frac 1090 1091 1092 PRINT*,'Check time',day1,day_ju_ini_cas,day_deb+1,pdt_cas 1093 1094 ! On teste si la date du cas AMMA est correcte. 1095 ! C est pour memoire car en fait les fichiers .def 1096 ! sont censes etre corrects. 1097 ! A supprimer a terme (MPL 20150623) 1098 ! if ((forcing_type.EQ.10).AND.(1.EQ.0)) THEN 1099 ! Check that initial day of the simulation consistent with AMMA case: 1100 ! if (annee_ref.NE.2006) THEN 1101 ! PRINT*,'Pour AMMA, annee_ref doit etre 2006' 1102 ! PRINT*,'Changer annee_ref dans run.def' 1103 ! stop 1104 ! endif 1105 ! if (annee_ref.EQ.2006 .AND. day1.lt.day_cas) THEN 1106 ! PRINT*,'AMMA a debute le 10 juillet 2006',day1,day_cas 1107 ! PRINT*,'Changer dayref dans run.def' 1108 ! stop 1109 ! endif 1110 ! if (annee_ref.EQ.2006 .AND. day1.gt.day_cas+1) THEN 1111 ! PRINT*,'AMMA a fini le 11 juillet' 1112 ! PRINT*,'Changer dayref ou nday dans run.def' 1113 ! stop 1114 ! endif 1115 ! endif 1116 1117 ! Determine timestep relative to the 1st day: 1118 ! timeit=(day-day1)*86400. 1119 ! if (annee_ref.EQ.1992) THEN 1120 ! timeit=(day-day_cas)*86400. 1121 ! else 1122 ! timeit=(day+61.-1.)*86400. ! 61 days between Nov01 and Dec31 1992 1123 ! endif 1124 timeit=(day-day_ju_ini_cas)*86400 1125 !print *,'day=',day 1126 !print *,'day_ju_ini_cas=',day_ju_ini_cas 1127 !print *,'pdt_cas=',pdt_cas 1128 !print *,'timeit=',timeit 1129 !print *,'nt_cas=',nt_cas 1130 1131 ! Determine the closest observation times: 1132 ! it_cas1=INT(timeit/pdt_cas)+1 1133 ! it_cas2=it_cas1 + 1 1134 ! time_cas1=(it_cas1-1)*pdt_cas 1135 ! time_cas2=(it_cas2-1)*pdt_cas 1136 1137 it_cas1=INT(timeit/pdt_cas)+1 1138 IF (it_cas1 == nt_cas) THEN 1139 it_cas2=it_cas1 1140 ELSE 1141 it_cas2=it_cas1 + 1 1142 ENDIF 1143 time_cas1=(it_cas1-1)*pdt_cas 1144 time_cas2=(it_cas2-1)*pdt_cas 1145 !print *,'it_cas1,it_cas2,time_cas1,time_cas2=',it_cas1,it_cas2,time_cas1,time_cas2 1146 1147 IF (it_cas1 > nt_cas) THEN 1148 WRITE(*,*) 'PB-stop: day, day_ju_ini_cas,it_cas1, it_cas2, timeit: ' & 1149 ,day,day_ju_ini_cas,it_cas1,it_cas2,timeit 1150 stop 1151 ENDIF 1152 1153 ! time interpolation: 1154 IF (it_cas1 == it_cas2) THEN 1155 frac=0. 1156 ELSE 1157 frac=(time_cas2-timeit)/(time_cas2-time_cas1) 1158 frac=max(frac,0.0) 1159 ENDIF 1160 1161 lat_prof_cas = lat_cas(it_cas2) & 1162 -frac*(lat_cas(it_cas2)-lat_cas(it_cas1)) 1163 sens_prof_cas = sens_cas(it_cas2) & 1164 -frac*(sens_cas(it_cas2)-sens_cas(it_cas1)) 1165 ts_prof_cas = ts_cas(it_cas2) & 1166 -frac*(ts_cas(it_cas2)-ts_cas(it_cas1)) 1167 ustar_prof_cas = ustar_cas(it_cas2) & 1168 -frac*(ustar_cas(it_cas2)-ustar_cas(it_cas1)) 1169 1170 do k=1,nlev_cas 1171 plev_prof_cas(k) = plev_cas(k,it_cas2) & 1172 -frac*(plev_cas(k,it_cas2)-plev_cas(k,it_cas1)) 1173 t_prof_cas(k) = t_cas(k,it_cas2) & 1174 -frac*(t_cas(k,it_cas2)-t_cas(k,it_cas1)) 1175 q_prof_cas(k) = q_cas(k,it_cas2) & 1176 -frac*(q_cas(k,it_cas2)-q_cas(k,it_cas1)) 1177 u_prof_cas(k) = u_cas(k,it_cas2) & 1178 -frac*(u_cas(k,it_cas2)-u_cas(k,it_cas1)) 1179 v_prof_cas(k) = v_cas(k,it_cas2) & 1180 -frac*(v_cas(k,it_cas2)-v_cas(k,it_cas1)) 1181 ug_prof_cas(k) = ug_cas(k,it_cas2) & 1182 -frac*(ug_cas(k,it_cas2)-ug_cas(k,it_cas1)) 1183 vg_prof_cas(k) = vg_cas(k,it_cas2) & 1184 -frac*(vg_cas(k,it_cas2)-vg_cas(k,it_cas1)) 1185 vitw_prof_cas(k) = vitw_cas(k,it_cas2) & 1186 -frac*(vitw_cas(k,it_cas2)-vitw_cas(k,it_cas1)) 1187 du_prof_cas(k) = du_cas(k,it_cas2) & 1188 -frac*(du_cas(k,it_cas2)-du_cas(k,it_cas1)) 1189 hu_prof_cas(k) = hu_cas(k,it_cas2) & 1190 -frac*(hu_cas(k,it_cas2)-hu_cas(k,it_cas1)) 1191 vu_prof_cas(k) = vu_cas(k,it_cas2) & 1192 -frac*(vu_cas(k,it_cas2)-vu_cas(k,it_cas1)) 1193 dv_prof_cas(k) = dv_cas(k,it_cas2) & 1194 -frac*(dv_cas(k,it_cas2)-dv_cas(k,it_cas1)) 1195 hv_prof_cas(k) = hv_cas(k,it_cas2) & 1196 -frac*(hv_cas(k,it_cas2)-hv_cas(k,it_cas1)) 1197 vv_prof_cas(k) = vv_cas(k,it_cas2) & 1198 -frac*(vv_cas(k,it_cas2)-vv_cas(k,it_cas1)) 1199 dt_prof_cas(k) = dt_cas(k,it_cas2) & 1200 -frac*(dt_cas(k,it_cas2)-dt_cas(k,it_cas1)) 1201 ht_prof_cas(k) = ht_cas(k,it_cas2) & 1202 -frac*(ht_cas(k,it_cas2)-ht_cas(k,it_cas1)) 1203 vt_prof_cas(k) = vt_cas(k,it_cas2) & 1204 -frac*(vt_cas(k,it_cas2)-vt_cas(k,it_cas1)) 1205 dtrad_prof_cas(k) = dtrad_cas(k,it_cas2) & 1206 -frac*(dtrad_cas(k,it_cas2)-dtrad_cas(k,it_cas1)) 1207 dq_prof_cas(k) = dq_cas(k,it_cas2) & 1208 -frac*(dq_cas(k,it_cas2)-dq_cas(k,it_cas1)) 1209 hq_prof_cas(k) = hq_cas(k,it_cas2) & 1210 -frac*(hq_cas(k,it_cas2)-hq_cas(k,it_cas1)) 1211 vq_prof_cas(k) = vq_cas(k,it_cas2) & 1212 -frac*(vq_cas(k,it_cas2)-vq_cas(k,it_cas1)) 1213 uw_prof_cas(k) = uw_cas(k,it_cas2) & 1214 -frac*(uw_cas(k,it_cas2)-uw_cas(k,it_cas1)) 1215 vw_prof_cas(k) = vw_cas(k,it_cas2) & 1216 -frac*(vw_cas(k,it_cas2)-vw_cas(k,it_cas1)) 1217 q1_prof_cas(k) = q1_cas(k,it_cas2) & 1218 -frac*(q1_cas(k,it_cas2)-q1_cas(k,it_cas1)) 1219 q2_prof_cas(k) = q2_cas(k,it_cas2) & 1220 -frac*(q2_cas(k,it_cas2)-q2_cas(k,it_cas1)) 1221 enddo 1222 1223 1224 END SUBROUTINE interp_case_time2 1225 1226 !********************************************************************************************** 1227 SUBROUTINE interp2_case_time(day,day1,annee_ref & 1228 ! & ,year_cas,day_cas,nt_cas,pdt_forc,nlev_cas & 1229 ,nt_cas,nlev_cas & 1230 ,ts_cas,ps_cas,plev_cas,t_cas,theta_cas,thv_cas,thl_cas & 1231 ,qv_cas,ql_cas,qi_cas,u_cas,v_cas & 1232 ,ug_cas,vg_cas,vitw_cas,omega_cas,du_cas,hu_cas,vu_cas & 1233 ,dv_cas,hv_cas,vv_cas,dt_cas,ht_cas,vt_cas,dtrad_cas & 1234 ,dq_cas,hq_cas,vq_cas,dth_cas,hth_cas,vth_cas & 1235 ,lat_cas,sens_cas,ustar_cas & 1236 ,uw_cas,vw_cas,q1_cas,q2_cas,tke_cas & 1237 1238 ,ts_prof_cas,plev_prof_cas,t_prof_cas,theta_prof_cas & 1239 ,thv_prof_cas,thl_prof_cas,qv_prof_cas,ql_prof_cas,qi_prof_cas & 1240 ,u_prof_cas,v_prof_cas,ug_prof_cas,vg_prof_cas & 1241 ,vitw_prof_cas,omega_prof_cas,du_prof_cas,hu_prof_cas,vu_prof_cas & 1242 ,dv_prof_cas,hv_prof_cas,vv_prof_cas,dt_prof_cas & 1243 ,ht_prof_cas,vt_prof_cas,dtrad_prof_cas,dq_prof_cas & 1244 ,hq_prof_cas,vq_prof_cas,dth_prof_cas,hth_prof_cas,vth_prof_cas & 1245 ,lat_prof_cas,sens_prof_cas & 1246 ,ustar_prof_cas,uw_prof_cas,vw_prof_cas,q1_prof_cas,q2_prof_cas,tke_prof_cas) 1247 1248 1249 IMPLICIT NONE 1250 1251 !--------------------------------------------------------------------------------------- 1252 ! Time interpolation of a 2D field to the timestep corresponding to day 1253 1254 ! day: current julian day (e.g. 717538.2) 1255 ! day1: first day of the simulation 1256 ! nt_cas: total nb of data in the forcing 1257 ! pdt_cas: total time interval (in sec) between 2 forcing data 1258 !--------------------------------------------------------------------------------------- 1259 1260 INCLUDE "compar1d.h" 1261 INCLUDE "date_cas.h" 1262 1263 ! inputs: 1264 INTEGER annee_ref 1265 INTEGER nt_cas,nlev_cas 1266 REAL day, day1,day_cas 1267 REAL ts_cas(nt_cas),ps_cas(nt_cas) 1268 REAL plev_cas(nlev_cas,nt_cas) 1269 REAL t_cas(nlev_cas,nt_cas),theta_cas(nlev_cas,nt_cas),thv_cas(nlev_cas,nt_cas),thl_cas(nlev_cas,nt_cas) 1270 REAL qv_cas(nlev_cas,nt_cas),ql_cas(nlev_cas,nt_cas),qi_cas(nlev_cas,nt_cas) 1271 REAL u_cas(nlev_cas,nt_cas),v_cas(nlev_cas,nt_cas) 1272 REAL ug_cas(nlev_cas,nt_cas),vg_cas(nlev_cas,nt_cas) 1273 REAL vitw_cas(nlev_cas,nt_cas),omega_cas(nlev_cas,nt_cas) 1274 REAL du_cas(nlev_cas,nt_cas),hu_cas(nlev_cas,nt_cas),vu_cas(nlev_cas,nt_cas) 1275 REAL dv_cas(nlev_cas,nt_cas),hv_cas(nlev_cas,nt_cas),vv_cas(nlev_cas,nt_cas) 1276 REAL dt_cas(nlev_cas,nt_cas),ht_cas(nlev_cas,nt_cas),vt_cas(nlev_cas,nt_cas) 1277 REAL dth_cas(nlev_cas,nt_cas),hth_cas(nlev_cas,nt_cas),vth_cas(nlev_cas,nt_cas) 1278 REAL dtrad_cas(nlev_cas,nt_cas) 1279 REAL dq_cas(nlev_cas,nt_cas),hq_cas(nlev_cas,nt_cas),vq_cas(nlev_cas,nt_cas) 1280 REAL lat_cas(nt_cas),sens_cas(nt_cas),tke_cas(nt_cas) 1281 REAL ustar_cas(nt_cas),uw_cas(nlev_cas,nt_cas),vw_cas(nlev_cas,nt_cas) 1282 REAL q1_cas(nlev_cas,nt_cas),q2_cas(nlev_cas,nt_cas) 1283 1284 ! outputs: 1285 REAL plev_prof_cas(nlev_cas) 1286 REAL t_prof_cas(nlev_cas),theta_prof_cas(nlev_cas),thl_prof_cas(nlev_cas),thv_prof_cas(nlev_cas) 1287 REAL qv_prof_cas(nlev_cas),ql_prof_cas(nlev_cas),qi_prof_cas(nlev_cas) 1288 REAL u_prof_cas(nlev_cas),v_prof_cas(nlev_cas) 1289 REAL ug_prof_cas(nlev_cas),vg_prof_cas(nlev_cas) 1290 REAL vitw_prof_cas(nlev_cas),omega_prof_cas(nlev_cas) 1291 REAL du_prof_cas(nlev_cas),hu_prof_cas(nlev_cas),vu_prof_cas(nlev_cas) 1292 REAL dv_prof_cas(nlev_cas),hv_prof_cas(nlev_cas),vv_prof_cas(nlev_cas) 1293 REAL dt_prof_cas(nlev_cas),ht_prof_cas(nlev_cas),vt_prof_cas(nlev_cas) 1294 REAL dth_prof_cas(nlev_cas),hth_prof_cas(nlev_cas),vth_prof_cas(nlev_cas) 1295 REAL dtrad_prof_cas(nlev_cas) 1296 REAL dq_prof_cas(nlev_cas),hq_prof_cas(nlev_cas),vq_prof_cas(nlev_cas) 1297 REAL lat_prof_cas,sens_prof_cas,tke_prof_cas,ts_prof_cas,ustar_prof_cas 1298 REAL uw_prof_cas(nlev_cas),vw_prof_cas(nlev_cas),q1_prof_cas(nlev_cas),q2_prof_cas(nlev_cas) 1299 ! local: 1300 INTEGER it_cas1, it_cas2,k 1301 REAL timeit,time_cas1,time_cas2,frac 1302 1303 1304 PRINT*,'Check time',day1,day_ju_ini_cas,day_deb+1,pdt_cas 1305 ! do k=1,nlev_cas 1306 ! PRINT*,'debut de interp2_case_time, plev_cas=',k,plev_cas(k,1) 1307 ! enddo 1308 1309 ! On teste si la date du cas AMMA est correcte. 1310 ! C est pour memoire car en fait les fichiers .def 1311 ! sont censes etre corrects. 1312 ! A supprimer a terme (MPL 20150623) 1313 ! if ((forcing_type.EQ.10).AND.(1.EQ.0)) THEN 1314 ! Check that initial day of the simulation consistent with AMMA case: 1315 ! if (annee_ref.NE.2006) THEN 1316 ! PRINT*,'Pour AMMA, annee_ref doit etre 2006' 1317 ! PRINT*,'Changer annee_ref dans run.def' 1318 ! stop 1319 ! endif 1320 ! if (annee_ref.EQ.2006 .AND. day1.lt.day_cas) THEN 1321 ! PRINT*,'AMMA a debute le 10 juillet 2006',day1,day_cas 1322 ! PRINT*,'Changer dayref dans run.def' 1323 ! stop 1324 ! endif 1325 ! if (annee_ref.EQ.2006 .AND. day1.gt.day_cas+1) THEN 1326 ! PRINT*,'AMMA a fini le 11 juillet' 1327 ! PRINT*,'Changer dayref ou nday dans run.def' 1328 ! stop 1329 ! endif 1330 ! endif 1331 1332 ! Determine timestep relative to the 1st day: 1333 ! timeit=(day-day1)*86400. 1334 ! if (annee_ref.EQ.1992) THEN 1335 ! timeit=(day-day_cas)*86400. 1336 ! else 1337 ! timeit=(day+61.-1.)*86400. ! 61 days between Nov01 and Dec31 1992 1338 ! endif 1339 timeit=(day-day_ju_ini_cas)*86400 1340 !print *,'day=',day 1341 !print *,'day_ju_ini_cas=',day_ju_ini_cas 1342 !print *,'pdt_cas=',pdt_cas 1343 !print *,'timeit=',timeit 1344 !print *,'nt_cas=',nt_cas 1345 1346 ! Determine the closest observation times: 1347 ! it_cas1=INT(timeit/pdt_cas)+1 1348 ! it_cas2=it_cas1 + 1 1349 ! time_cas1=(it_cas1-1)*pdt_cas 1350 ! time_cas2=(it_cas2-1)*pdt_cas 1351 1352 it_cas1=INT(timeit/pdt_cas)+1 1353 IF (it_cas1 == nt_cas) THEN 1354 it_cas2=it_cas1 1355 ELSE 1356 it_cas2=it_cas1 + 1 1357 ENDIF 1358 time_cas1=(it_cas1-1)*pdt_cas 1359 time_cas2=(it_cas2-1)*pdt_cas 1360 !print *,'timeit,pdt_cas,nt_cas=',timeit,pdt_cas,nt_cas 1361 !print *,'it_cas1,it_cas2,time_cas1,time_cas2=',it_cas1,it_cas2,time_cas1,time_cas2 1362 1363 IF (it_cas1 > nt_cas) THEN 1364 WRITE(*,*) 'PB-stop: day, day_ju_ini_cas,it_cas1, it_cas2, timeit: ' & 1365 ,day,day_ju_ini_cas,it_cas1,it_cas2,timeit 1366 stop 1367 ENDIF 1368 1369 ! time interpolation: 1370 IF (it_cas1 == it_cas2) THEN 1371 frac=0. 1372 ELSE 1373 frac=(time_cas2-timeit)/(time_cas2-time_cas1) 1374 frac=max(frac,0.0) 1375 ENDIF 1376 1377 lat_prof_cas = lat_cas(it_cas2) & 1378 -frac*(lat_cas(it_cas2)-lat_cas(it_cas1)) 1379 sens_prof_cas = sens_cas(it_cas2) & 1380 -frac*(sens_cas(it_cas2)-sens_cas(it_cas1)) 1381 tke_prof_cas = tke_cas(it_cas2) & 1382 -frac*(tke_cas(it_cas2)-tke_cas(it_cas1)) 1383 ts_prof_cas = ts_cas(it_cas2) & 1384 -frac*(ts_cas(it_cas2)-ts_cas(it_cas1)) 1385 ustar_prof_cas = ustar_cas(it_cas2) & 1386 -frac*(ustar_cas(it_cas2)-ustar_cas(it_cas1)) 1387 1388 do k=1,nlev_cas 1389 plev_prof_cas(k) = plev_cas(k,it_cas2) & 1390 -frac*(plev_cas(k,it_cas2)-plev_cas(k,it_cas1)) 1391 t_prof_cas(k) = t_cas(k,it_cas2) & 1392 -frac*(t_cas(k,it_cas2)-t_cas(k,it_cas1)) 1393 !print *,'k,frac,plev_cas1,plev_cas2=',k,frac,plev_cas(k,it_cas1),plev_cas(k,it_cas2) 1394 theta_prof_cas(k) = theta_cas(k,it_cas2) & 1395 -frac*(theta_cas(k,it_cas2)-theta_cas(k,it_cas1)) 1396 thv_prof_cas(k) = thv_cas(k,it_cas2) & 1397 -frac*(thv_cas(k,it_cas2)-thv_cas(k,it_cas1)) 1398 thl_prof_cas(k) = thl_cas(k,it_cas2) & 1399 -frac*(thl_cas(k,it_cas2)-thl_cas(k,it_cas1)) 1400 qv_prof_cas(k) = qv_cas(k,it_cas2) & 1401 -frac*(qv_cas(k,it_cas2)-qv_cas(k,it_cas1)) 1402 ql_prof_cas(k) = ql_cas(k,it_cas2) & 1403 -frac*(ql_cas(k,it_cas2)-ql_cas(k,it_cas1)) 1404 qi_prof_cas(k) = qi_cas(k,it_cas2) & 1405 -frac*(qi_cas(k,it_cas2)-qi_cas(k,it_cas1)) 1406 u_prof_cas(k) = u_cas(k,it_cas2) & 1407 -frac*(u_cas(k,it_cas2)-u_cas(k,it_cas1)) 1408 v_prof_cas(k) = v_cas(k,it_cas2) & 1409 -frac*(v_cas(k,it_cas2)-v_cas(k,it_cas1)) 1410 ug_prof_cas(k) = ug_cas(k,it_cas2) & 1411 -frac*(ug_cas(k,it_cas2)-ug_cas(k,it_cas1)) 1412 vg_prof_cas(k) = vg_cas(k,it_cas2) & 1413 -frac*(vg_cas(k,it_cas2)-vg_cas(k,it_cas1)) 1414 vitw_prof_cas(k) = vitw_cas(k,it_cas2) & 1415 -frac*(vitw_cas(k,it_cas2)-vitw_cas(k,it_cas1)) 1416 omega_prof_cas(k) = omega_cas(k,it_cas2) & 1417 -frac*(omega_cas(k,it_cas2)-omega_cas(k,it_cas1)) 1418 du_prof_cas(k) = du_cas(k,it_cas2) & 1419 -frac*(du_cas(k,it_cas2)-du_cas(k,it_cas1)) 1420 hu_prof_cas(k) = hu_cas(k,it_cas2) & 1421 -frac*(hu_cas(k,it_cas2)-hu_cas(k,it_cas1)) 1422 vu_prof_cas(k) = vu_cas(k,it_cas2) & 1423 -frac*(vu_cas(k,it_cas2)-vu_cas(k,it_cas1)) 1424 dv_prof_cas(k) = dv_cas(k,it_cas2) & 1425 -frac*(dv_cas(k,it_cas2)-dv_cas(k,it_cas1)) 1426 hv_prof_cas(k) = hv_cas(k,it_cas2) & 1427 -frac*(hv_cas(k,it_cas2)-hv_cas(k,it_cas1)) 1428 vv_prof_cas(k) = vv_cas(k,it_cas2) & 1429 -frac*(vv_cas(k,it_cas2)-vv_cas(k,it_cas1)) 1430 dt_prof_cas(k) = dt_cas(k,it_cas2) & 1431 -frac*(dt_cas(k,it_cas2)-dt_cas(k,it_cas1)) 1432 ht_prof_cas(k) = ht_cas(k,it_cas2) & 1433 -frac*(ht_cas(k,it_cas2)-ht_cas(k,it_cas1)) 1434 vt_prof_cas(k) = vt_cas(k,it_cas2) & 1435 -frac*(vt_cas(k,it_cas2)-vt_cas(k,it_cas1)) 1436 dth_prof_cas(k) = dth_cas(k,it_cas2) & 1437 -frac*(dth_cas(k,it_cas2)-dth_cas(k,it_cas1)) 1438 hth_prof_cas(k) = hth_cas(k,it_cas2) & 1439 -frac*(hth_cas(k,it_cas2)-hth_cas(k,it_cas1)) 1440 vth_prof_cas(k) = vth_cas(k,it_cas2) & 1441 -frac*(vth_cas(k,it_cas2)-vth_cas(k,it_cas1)) 1442 dtrad_prof_cas(k) = dtrad_cas(k,it_cas2) & 1443 -frac*(dtrad_cas(k,it_cas2)-dtrad_cas(k,it_cas1)) 1444 dq_prof_cas(k) = dq_cas(k,it_cas2) & 1445 -frac*(dq_cas(k,it_cas2)-dq_cas(k,it_cas1)) 1446 hq_prof_cas(k) = hq_cas(k,it_cas2) & 1447 -frac*(hq_cas(k,it_cas2)-hq_cas(k,it_cas1)) 1448 vq_prof_cas(k) = vq_cas(k,it_cas2) & 1449 -frac*(vq_cas(k,it_cas2)-vq_cas(k,it_cas1)) 1450 uw_prof_cas(k) = uw_cas(k,it_cas2) & 1451 -frac*(uw_cas(k,it_cas2)-uw_cas(k,it_cas1)) 1452 vw_prof_cas(k) = vw_cas(k,it_cas2) & 1453 -frac*(vw_cas(k,it_cas2)-vw_cas(k,it_cas1)) 1454 q1_prof_cas(k) = q1_cas(k,it_cas2) & 1455 -frac*(q1_cas(k,it_cas2)-q1_cas(k,it_cas1)) 1456 q2_prof_cas(k) = q2_cas(k,it_cas2) & 1457 -frac*(q2_cas(k,it_cas2)-q2_cas(k,it_cas1)) 1458 enddo 1459 1460 1461 END SUBROUTINE interp2_case_time 1462 1463 !********************************************************************************************** 914 case(3) ; zzh = apbp 915 case(4) ; pph = apbp 916 case(5) ; temp0 = resul1 ! donnees initiales 917 case(6) ; qv0 = resul1 918 case(7) ; ql0 = resul1 919 case(8) ; qi0 = resul1 920 case(9) ; u0 = resul1 921 case(10) ; v0 = resul1 922 case(11) ; tke0 = resul1 923 case(12) ; pp0 = resul1 924 case(13) ; vitw = resul ! donnees indexees en nlevel,time 925 case(14) ; omega = resul 926 case(15) ; ug = resul 927 case(16) ; vg = resul 928 case(17) ; du = resul 929 case(18) ; hu = resul 930 case(19) ; vu = resul 931 case(20) ; dv = resul 932 case(21) ; hv = resul 933 case(22) ; vv = resul 934 case(23) ; dt = resul 935 case(24) ; ht = resul 936 case(25) ; vt = resul 937 case(26) ; dq = resul 938 case(27) ; hq = resul 939 case(28) ; vq = resul 940 case(29) ; dth = resul 941 case(30) ; hth = resul 942 case(31) ; vth = resul 943 case(32) ; hthl = resul 944 case(33) ; dr = resul 945 case(34) ; hr = resul 946 case(35) ; vr = resul 947 case(36) ; dtrad = resul 948 case(37) ; q1 = resul 949 case(38) ; q2 = resul 950 case(39) ; uw = resul 951 case(40) ; vw = resul 952 case(41) ; rh = resul 953 case(42) ; zz = resul ! donnees en time,nlevel pour profil initial 954 case(43) ; pp = resul 955 case(44) ; temp = resul 956 case(45) ; theta = resul 957 case(46) ; thv = resul 958 case(47) ; thl = resul 959 case(48) ; qv = resul 960 case(49) ; ql = resul 961 case(50) ; qi = resul 962 case(51) ; rv = resul 963 case(52) ; u = resul 964 case(53) ; v = resul 965 case(54) ; tke = resul 966 case(55) ; sens = resul2 ! donnees indexees en time 967 case(56) ; flat = resul2 968 case(57) ; ts = resul2 969 case(58) ; ps = resul2 970 case(59) ; ustar = resul2 971 case(60) ; orog_cas = resul3 ! constantes 972 case(61) ; albedo_cas = resul3 973 case(62) ; emiss_cas = resul3 974 case(63) ; t_skin_cas = resul3 975 case(64) ; q_skin_cas = resul3 976 case(65) ; mom_rough = resul3 977 case(66) ; heat_rough = resul3 978 case(67) ; o3_cas = resul3 979 case(68) ; rugos_cas = resul3 980 case(69) ; clay_cas = resul3 981 case(70) ; sand_cas = resul3 982 end select 983 resul = 0. 984 resul1 = 0. 985 resul2 = 0. 986 resul3 = 0. 987 enddo 988 PRINT*, 'Lecture de la variable APRES ,sens ', minval(sens), maxval(sens) 989 PRINT*, 'Lecture de la variable APRES ,flat ', minval(flat), maxval(flat) 990 991 !CR:ATTENTION EN ATTENTE DE REGLER LA QUESTION DU PAS DE TEMPS INITIAL 992 DO t = 1, ntime 993 DO k = 1, nlevel 994 temp(k, t) = temp0(k) 995 qv(k, t) = qv0(k) 996 ql(k, t) = ql0(k) 997 qi(k, t) = qi0(k) 998 u(k, t) = u0(k) 999 v(k, t) = v0(k) 1000 tke(k, t) = tke0(k) 1001 enddo 1002 enddo 1003 !----------------------------------------------------------------------- 1004 1005 END SUBROUTINE old_read_SCM 1006 !====================================================================== 1007 1008 !====================================================================== 1009 SUBROUTINE interp_case_time2(day, day1, annee_ref & 1010 ! & ,year_cas,day_cas,nt_cas,pdt_forc,nlev_cas & 1011 , nt_cas, nlev_cas & 1012 , ts_cas, ps_cas, plev_cas, t_cas, q_cas, u_cas, v_cas & 1013 , ug_cas, vg_cas, vitw_cas, du_cas, hu_cas, vu_cas & 1014 , dv_cas, hv_cas, vv_cas, dt_cas, ht_cas, vt_cas, dtrad_cas & 1015 , dq_cas, hq_cas, vq_cas, lat_cas, sens_cas, ustar_cas & 1016 , uw_cas, vw_cas, q1_cas, q2_cas & 1017 , ts_prof_cas, plev_prof_cas, t_prof_cas, q_prof_cas & 1018 , u_prof_cas, v_prof_cas, ug_prof_cas, vg_prof_cas & 1019 , vitw_prof_cas, du_prof_cas, hu_prof_cas, vu_prof_cas & 1020 , dv_prof_cas, hv_prof_cas, vv_prof_cas, dt_prof_cas & 1021 , ht_prof_cas, vt_prof_cas, dtrad_prof_cas, dq_prof_cas & 1022 , hq_prof_cas, vq_prof_cas, lat_prof_cas, sens_prof_cas & 1023 , ustar_prof_cas, uw_prof_cas, vw_prof_cas, q1_prof_cas, q2_prof_cas) 1024 1025 USE lmdz_compar1d 1026 USE lmdz_date_cas, ONLY: year_ini_cas, mth_ini_cas, day_deb, heure_ini_cas, pdt_cas, day_ju_ini_cas 1027 1028 IMPLICIT NONE 1029 1030 !--------------------------------------------------------------------------------------- 1031 ! Time interpolation of a 2D field to the timestep corresponding to day 1032 1033 ! day: current julian day (e.g. 717538.2) 1034 ! day1: first day of the simulation 1035 ! nt_cas: total nb of data in the forcing 1036 ! pdt_cas: total time interval (in sec) between 2 forcing data 1037 !--------------------------------------------------------------------------------------- 1038 1039 ! inputs: 1040 INTEGER annee_ref 1041 INTEGER nt_cas, nlev_cas 1042 REAL day, day1, day_cas 1043 REAL ts_cas(nt_cas), ps_cas(nt_cas) 1044 REAL plev_cas(nlev_cas, nt_cas) 1045 REAL t_cas(nlev_cas, nt_cas), q_cas(nlev_cas, nt_cas) 1046 REAL u_cas(nlev_cas, nt_cas), v_cas(nlev_cas, nt_cas) 1047 REAL ug_cas(nlev_cas, nt_cas), vg_cas(nlev_cas, nt_cas) 1048 REAL vitw_cas(nlev_cas, nt_cas) 1049 REAL du_cas(nlev_cas, nt_cas), hu_cas(nlev_cas, nt_cas), vu_cas(nlev_cas, nt_cas) 1050 REAL dv_cas(nlev_cas, nt_cas), hv_cas(nlev_cas, nt_cas), vv_cas(nlev_cas, nt_cas) 1051 REAL dt_cas(nlev_cas, nt_cas), ht_cas(nlev_cas, nt_cas), vt_cas(nlev_cas, nt_cas) 1052 REAL dtrad_cas(nlev_cas, nt_cas) 1053 REAL dq_cas(nlev_cas, nt_cas), hq_cas(nlev_cas, nt_cas), vq_cas(nlev_cas, nt_cas) 1054 REAL lat_cas(nt_cas) 1055 REAL sens_cas(nt_cas) 1056 REAL ustar_cas(nt_cas), uw_cas(nlev_cas, nt_cas), vw_cas(nlev_cas, nt_cas) 1057 REAL q1_cas(nlev_cas, nt_cas), q2_cas(nlev_cas, nt_cas) 1058 1059 ! outputs: 1060 REAL plev_prof_cas(nlev_cas) 1061 REAL t_prof_cas(nlev_cas), q_prof_cas(nlev_cas) 1062 REAL u_prof_cas(nlev_cas), v_prof_cas(nlev_cas) 1063 REAL ug_prof_cas(nlev_cas), vg_prof_cas(nlev_cas) 1064 REAL vitw_prof_cas(nlev_cas) 1065 REAL du_prof_cas(nlev_cas), hu_prof_cas(nlev_cas), vu_prof_cas(nlev_cas) 1066 REAL dv_prof_cas(nlev_cas), hv_prof_cas(nlev_cas), vv_prof_cas(nlev_cas) 1067 REAL dt_prof_cas(nlev_cas), ht_prof_cas(nlev_cas), vt_prof_cas(nlev_cas) 1068 REAL dtrad_prof_cas(nlev_cas) 1069 REAL dq_prof_cas(nlev_cas), hq_prof_cas(nlev_cas), vq_prof_cas(nlev_cas) 1070 REAL lat_prof_cas, sens_prof_cas, ts_prof_cas, ustar_prof_cas 1071 REAL uw_prof_cas(nlev_cas), vw_prof_cas(nlev_cas), q1_prof_cas(nlev_cas), q2_prof_cas(nlev_cas) 1072 ! local: 1073 INTEGER it_cas1, it_cas2, k 1074 REAL timeit, time_cas1, time_cas2, frac 1075 1076 PRINT*, 'Check time', day1, day_ju_ini_cas, day_deb + 1, pdt_cas 1077 1078 ! On teste si la date du cas AMMA est correcte. 1079 ! C est pour memoire car en fait les fichiers .def 1080 ! sont censes etre corrects. 1081 ! A supprimer a terme (MPL 20150623) 1082 ! if ((forcing_type.EQ.10).AND.(1.EQ.0)) THEN 1083 ! Check that initial day of the simulation consistent with AMMA case: 1084 ! if (annee_ref.NE.2006) THEN 1085 ! PRINT*,'Pour AMMA, annee_ref doit etre 2006' 1086 ! PRINT*,'Changer annee_ref dans run.def' 1087 ! stop 1088 ! endif 1089 ! if (annee_ref.EQ.2006 .AND. day1.lt.day_cas) THEN 1090 ! PRINT*,'AMMA a debute le 10 juillet 2006',day1,day_cas 1091 ! PRINT*,'Changer dayref dans run.def' 1092 ! stop 1093 ! endif 1094 ! if (annee_ref.EQ.2006 .AND. day1.gt.day_cas+1) THEN 1095 ! PRINT*,'AMMA a fini le 11 juillet' 1096 ! PRINT*,'Changer dayref ou nday dans run.def' 1097 ! stop 1098 ! endif 1099 ! endif 1100 1101 ! Determine timestep relative to the 1st day: 1102 ! timeit=(day-day1)*86400. 1103 ! if (annee_ref.EQ.1992) THEN 1104 ! timeit=(day-day_cas)*86400. 1105 ! else 1106 ! timeit=(day+61.-1.)*86400. ! 61 days between Nov01 and Dec31 1992 1107 ! endif 1108 timeit = (day - day_ju_ini_cas) * 86400 1109 !print *,'day=',day 1110 !print *,'day_ju_ini_cas=',day_ju_ini_cas 1111 !print *,'pdt_cas=',pdt_cas 1112 !print *,'timeit=',timeit 1113 !print *,'nt_cas=',nt_cas 1114 1115 ! Determine the closest observation times: 1116 ! it_cas1=INT(timeit/pdt_cas)+1 1117 ! it_cas2=it_cas1 + 1 1118 ! time_cas1=(it_cas1-1)*pdt_cas 1119 ! time_cas2=(it_cas2-1)*pdt_cas 1120 1121 it_cas1 = INT(timeit / pdt_cas) + 1 1122 IF (it_cas1 == nt_cas) THEN 1123 it_cas2 = it_cas1 1124 ELSE 1125 it_cas2 = it_cas1 + 1 1126 ENDIF 1127 time_cas1 = (it_cas1 - 1) * pdt_cas 1128 time_cas2 = (it_cas2 - 1) * pdt_cas 1129 !print *,'it_cas1,it_cas2,time_cas1,time_cas2=',it_cas1,it_cas2,time_cas1,time_cas2 1130 1131 IF (it_cas1 > nt_cas) THEN 1132 WRITE(*, *) 'PB-stop: day, day_ju_ini_cas,it_cas1, it_cas2, timeit: ' & 1133 , day, day_ju_ini_cas, it_cas1, it_cas2, timeit 1134 stop 1135 ENDIF 1136 1137 ! time interpolation: 1138 IF (it_cas1 == it_cas2) THEN 1139 frac = 0. 1140 ELSE 1141 frac = (time_cas2 - timeit) / (time_cas2 - time_cas1) 1142 frac = max(frac, 0.0) 1143 ENDIF 1144 1145 lat_prof_cas = lat_cas(it_cas2) & 1146 - frac * (lat_cas(it_cas2) - lat_cas(it_cas1)) 1147 sens_prof_cas = sens_cas(it_cas2) & 1148 - frac * (sens_cas(it_cas2) - sens_cas(it_cas1)) 1149 ts_prof_cas = ts_cas(it_cas2) & 1150 - frac * (ts_cas(it_cas2) - ts_cas(it_cas1)) 1151 ustar_prof_cas = ustar_cas(it_cas2) & 1152 - frac * (ustar_cas(it_cas2) - ustar_cas(it_cas1)) 1153 1154 DO k = 1, nlev_cas 1155 plev_prof_cas(k) = plev_cas(k, it_cas2) & 1156 - frac * (plev_cas(k, it_cas2) - plev_cas(k, it_cas1)) 1157 t_prof_cas(k) = t_cas(k, it_cas2) & 1158 - frac * (t_cas(k, it_cas2) - t_cas(k, it_cas1)) 1159 q_prof_cas(k) = q_cas(k, it_cas2) & 1160 - frac * (q_cas(k, it_cas2) - q_cas(k, it_cas1)) 1161 u_prof_cas(k) = u_cas(k, it_cas2) & 1162 - frac * (u_cas(k, it_cas2) - u_cas(k, it_cas1)) 1163 v_prof_cas(k) = v_cas(k, it_cas2) & 1164 - frac * (v_cas(k, it_cas2) - v_cas(k, it_cas1)) 1165 ug_prof_cas(k) = ug_cas(k, it_cas2) & 1166 - frac * (ug_cas(k, it_cas2) - ug_cas(k, it_cas1)) 1167 vg_prof_cas(k) = vg_cas(k, it_cas2) & 1168 - frac * (vg_cas(k, it_cas2) - vg_cas(k, it_cas1)) 1169 vitw_prof_cas(k) = vitw_cas(k, it_cas2) & 1170 - frac * (vitw_cas(k, it_cas2) - vitw_cas(k, it_cas1)) 1171 du_prof_cas(k) = du_cas(k, it_cas2) & 1172 - frac * (du_cas(k, it_cas2) - du_cas(k, it_cas1)) 1173 hu_prof_cas(k) = hu_cas(k, it_cas2) & 1174 - frac * (hu_cas(k, it_cas2) - hu_cas(k, it_cas1)) 1175 vu_prof_cas(k) = vu_cas(k, it_cas2) & 1176 - frac * (vu_cas(k, it_cas2) - vu_cas(k, it_cas1)) 1177 dv_prof_cas(k) = dv_cas(k, it_cas2) & 1178 - frac * (dv_cas(k, it_cas2) - dv_cas(k, it_cas1)) 1179 hv_prof_cas(k) = hv_cas(k, it_cas2) & 1180 - frac * (hv_cas(k, it_cas2) - hv_cas(k, it_cas1)) 1181 vv_prof_cas(k) = vv_cas(k, it_cas2) & 1182 - frac * (vv_cas(k, it_cas2) - vv_cas(k, it_cas1)) 1183 dt_prof_cas(k) = dt_cas(k, it_cas2) & 1184 - frac * (dt_cas(k, it_cas2) - dt_cas(k, it_cas1)) 1185 ht_prof_cas(k) = ht_cas(k, it_cas2) & 1186 - frac * (ht_cas(k, it_cas2) - ht_cas(k, it_cas1)) 1187 vt_prof_cas(k) = vt_cas(k, it_cas2) & 1188 - frac * (vt_cas(k, it_cas2) - vt_cas(k, it_cas1)) 1189 dtrad_prof_cas(k) = dtrad_cas(k, it_cas2) & 1190 - frac * (dtrad_cas(k, it_cas2) - dtrad_cas(k, it_cas1)) 1191 dq_prof_cas(k) = dq_cas(k, it_cas2) & 1192 - frac * (dq_cas(k, it_cas2) - dq_cas(k, it_cas1)) 1193 hq_prof_cas(k) = hq_cas(k, it_cas2) & 1194 - frac * (hq_cas(k, it_cas2) - hq_cas(k, it_cas1)) 1195 vq_prof_cas(k) = vq_cas(k, it_cas2) & 1196 - frac * (vq_cas(k, it_cas2) - vq_cas(k, it_cas1)) 1197 uw_prof_cas(k) = uw_cas(k, it_cas2) & 1198 - frac * (uw_cas(k, it_cas2) - uw_cas(k, it_cas1)) 1199 vw_prof_cas(k) = vw_cas(k, it_cas2) & 1200 - frac * (vw_cas(k, it_cas2) - vw_cas(k, it_cas1)) 1201 q1_prof_cas(k) = q1_cas(k, it_cas2) & 1202 - frac * (q1_cas(k, it_cas2) - q1_cas(k, it_cas1)) 1203 q2_prof_cas(k) = q2_cas(k, it_cas2) & 1204 - frac * (q2_cas(k, it_cas2) - q2_cas(k, it_cas1)) 1205 enddo 1206 1207 END SUBROUTINE interp_case_time2 1208 1209 !********************************************************************************************** 1210 SUBROUTINE interp2_case_time(day, day1, annee_ref & 1211 ! & ,year_cas,day_cas,nt_cas,pdt_forc,nlev_cas & 1212 , nt_cas, nlev_cas & 1213 , ts_cas, ps_cas, plev_cas, t_cas, theta_cas, thv_cas, thl_cas & 1214 , qv_cas, ql_cas, qi_cas, u_cas, v_cas & 1215 , ug_cas, vg_cas, vitw_cas, omega_cas, du_cas, hu_cas, vu_cas & 1216 , dv_cas, hv_cas, vv_cas, dt_cas, ht_cas, vt_cas, dtrad_cas & 1217 , dq_cas, hq_cas, vq_cas, dth_cas, hth_cas, vth_cas & 1218 , lat_cas, sens_cas, ustar_cas & 1219 , uw_cas, vw_cas, q1_cas, q2_cas, tke_cas & 1220 1221 , ts_prof_cas, plev_prof_cas, t_prof_cas, theta_prof_cas & 1222 , thv_prof_cas, thl_prof_cas, qv_prof_cas, ql_prof_cas, qi_prof_cas & 1223 , u_prof_cas, v_prof_cas, ug_prof_cas, vg_prof_cas & 1224 , vitw_prof_cas, omega_prof_cas, du_prof_cas, hu_prof_cas, vu_prof_cas & 1225 , dv_prof_cas, hv_prof_cas, vv_prof_cas, dt_prof_cas & 1226 , ht_prof_cas, vt_prof_cas, dtrad_prof_cas, dq_prof_cas & 1227 , hq_prof_cas, vq_prof_cas, dth_prof_cas, hth_prof_cas, vth_prof_cas & 1228 , lat_prof_cas, sens_prof_cas & 1229 , ustar_prof_cas, uw_prof_cas, vw_prof_cas, q1_prof_cas, q2_prof_cas, tke_prof_cas) 1230 1231 USE lmdz_compar1d 1232 USE lmdz_date_cas, ONLY: year_ini_cas, mth_ini_cas, day_deb, heure_ini_cas, pdt_cas, day_ju_ini_cas 1233 1234 IMPLICIT NONE 1235 1236 !--------------------------------------------------------------------------------------- 1237 ! Time interpolation of a 2D field to the timestep corresponding to day 1238 1239 ! day: current julian day (e.g. 717538.2) 1240 ! day1: first day of the simulation 1241 ! nt_cas: total nb of data in the forcing 1242 ! pdt_cas: total time interval (in sec) between 2 forcing data 1243 !--------------------------------------------------------------------------------------- 1244 1245 ! inputs: 1246 INTEGER annee_ref 1247 INTEGER nt_cas, nlev_cas 1248 REAL day, day1, day_cas 1249 REAL ts_cas(nt_cas), ps_cas(nt_cas) 1250 REAL plev_cas(nlev_cas, nt_cas) 1251 REAL t_cas(nlev_cas, nt_cas), theta_cas(nlev_cas, nt_cas), thv_cas(nlev_cas, nt_cas), thl_cas(nlev_cas, nt_cas) 1252 REAL qv_cas(nlev_cas, nt_cas), ql_cas(nlev_cas, nt_cas), qi_cas(nlev_cas, nt_cas) 1253 REAL u_cas(nlev_cas, nt_cas), v_cas(nlev_cas, nt_cas) 1254 REAL ug_cas(nlev_cas, nt_cas), vg_cas(nlev_cas, nt_cas) 1255 REAL vitw_cas(nlev_cas, nt_cas), omega_cas(nlev_cas, nt_cas) 1256 REAL du_cas(nlev_cas, nt_cas), hu_cas(nlev_cas, nt_cas), vu_cas(nlev_cas, nt_cas) 1257 REAL dv_cas(nlev_cas, nt_cas), hv_cas(nlev_cas, nt_cas), vv_cas(nlev_cas, nt_cas) 1258 REAL dt_cas(nlev_cas, nt_cas), ht_cas(nlev_cas, nt_cas), vt_cas(nlev_cas, nt_cas) 1259 REAL dth_cas(nlev_cas, nt_cas), hth_cas(nlev_cas, nt_cas), vth_cas(nlev_cas, nt_cas) 1260 REAL dtrad_cas(nlev_cas, nt_cas) 1261 REAL dq_cas(nlev_cas, nt_cas), hq_cas(nlev_cas, nt_cas), vq_cas(nlev_cas, nt_cas) 1262 REAL lat_cas(nt_cas), sens_cas(nt_cas), tke_cas(nt_cas) 1263 REAL ustar_cas(nt_cas), uw_cas(nlev_cas, nt_cas), vw_cas(nlev_cas, nt_cas) 1264 REAL q1_cas(nlev_cas, nt_cas), q2_cas(nlev_cas, nt_cas) 1265 1266 ! outputs: 1267 REAL plev_prof_cas(nlev_cas) 1268 REAL t_prof_cas(nlev_cas), theta_prof_cas(nlev_cas), thl_prof_cas(nlev_cas), thv_prof_cas(nlev_cas) 1269 REAL qv_prof_cas(nlev_cas), ql_prof_cas(nlev_cas), qi_prof_cas(nlev_cas) 1270 REAL u_prof_cas(nlev_cas), v_prof_cas(nlev_cas) 1271 REAL ug_prof_cas(nlev_cas), vg_prof_cas(nlev_cas) 1272 REAL vitw_prof_cas(nlev_cas), omega_prof_cas(nlev_cas) 1273 REAL du_prof_cas(nlev_cas), hu_prof_cas(nlev_cas), vu_prof_cas(nlev_cas) 1274 REAL dv_prof_cas(nlev_cas), hv_prof_cas(nlev_cas), vv_prof_cas(nlev_cas) 1275 REAL dt_prof_cas(nlev_cas), ht_prof_cas(nlev_cas), vt_prof_cas(nlev_cas) 1276 REAL dth_prof_cas(nlev_cas), hth_prof_cas(nlev_cas), vth_prof_cas(nlev_cas) 1277 REAL dtrad_prof_cas(nlev_cas) 1278 REAL dq_prof_cas(nlev_cas), hq_prof_cas(nlev_cas), vq_prof_cas(nlev_cas) 1279 REAL lat_prof_cas, sens_prof_cas, tke_prof_cas, ts_prof_cas, ustar_prof_cas 1280 REAL uw_prof_cas(nlev_cas), vw_prof_cas(nlev_cas), q1_prof_cas(nlev_cas), q2_prof_cas(nlev_cas) 1281 ! local: 1282 INTEGER it_cas1, it_cas2, k 1283 REAL timeit, time_cas1, time_cas2, frac 1284 1285 PRINT*, 'Check time', day1, day_ju_ini_cas, day_deb + 1, pdt_cas 1286 ! do k=1,nlev_cas 1287 ! PRINT*,'debut de interp2_case_time, plev_cas=',k,plev_cas(k,1) 1288 ! enddo 1289 1290 ! On teste si la date du cas AMMA est correcte. 1291 ! C est pour memoire car en fait les fichiers .def 1292 ! sont censes etre corrects. 1293 ! A supprimer a terme (MPL 20150623) 1294 ! if ((forcing_type.EQ.10).AND.(1.EQ.0)) THEN 1295 ! Check that initial day of the simulation consistent with AMMA case: 1296 ! if (annee_ref.NE.2006) THEN 1297 ! PRINT*,'Pour AMMA, annee_ref doit etre 2006' 1298 ! PRINT*,'Changer annee_ref dans run.def' 1299 ! stop 1300 ! endif 1301 ! if (annee_ref.EQ.2006 .AND. day1.lt.day_cas) THEN 1302 ! PRINT*,'AMMA a debute le 10 juillet 2006',day1,day_cas 1303 ! PRINT*,'Changer dayref dans run.def' 1304 ! stop 1305 ! endif 1306 ! if (annee_ref.EQ.2006 .AND. day1.gt.day_cas+1) THEN 1307 ! PRINT*,'AMMA a fini le 11 juillet' 1308 ! PRINT*,'Changer dayref ou nday dans run.def' 1309 ! stop 1310 ! endif 1311 ! endif 1312 1313 ! Determine timestep relative to the 1st day: 1314 ! timeit=(day-day1)*86400. 1315 ! if (annee_ref.EQ.1992) THEN 1316 ! timeit=(day-day_cas)*86400. 1317 ! else 1318 ! timeit=(day+61.-1.)*86400. ! 61 days between Nov01 and Dec31 1992 1319 ! endif 1320 timeit = (day - day_ju_ini_cas) * 86400 1321 !print *,'day=',day 1322 !print *,'day_ju_ini_cas=',day_ju_ini_cas 1323 !print *,'pdt_cas=',pdt_cas 1324 !print *,'timeit=',timeit 1325 !print *,'nt_cas=',nt_cas 1326 1327 ! Determine the closest observation times: 1328 ! it_cas1=INT(timeit/pdt_cas)+1 1329 ! it_cas2=it_cas1 + 1 1330 ! time_cas1=(it_cas1-1)*pdt_cas 1331 ! time_cas2=(it_cas2-1)*pdt_cas 1332 1333 it_cas1 = INT(timeit / pdt_cas) + 1 1334 IF (it_cas1 == nt_cas) THEN 1335 it_cas2 = it_cas1 1336 ELSE 1337 it_cas2 = it_cas1 + 1 1338 ENDIF 1339 time_cas1 = (it_cas1 - 1) * pdt_cas 1340 time_cas2 = (it_cas2 - 1) * pdt_cas 1341 !print *,'timeit,pdt_cas,nt_cas=',timeit,pdt_cas,nt_cas 1342 !print *,'it_cas1,it_cas2,time_cas1,time_cas2=',it_cas1,it_cas2,time_cas1,time_cas2 1343 1344 IF (it_cas1 > nt_cas) THEN 1345 WRITE(*, *) 'PB-stop: day, day_ju_ini_cas,it_cas1, it_cas2, timeit: ' & 1346 , day, day_ju_ini_cas, it_cas1, it_cas2, timeit 1347 stop 1348 ENDIF 1349 1350 ! time interpolation: 1351 IF (it_cas1 == it_cas2) THEN 1352 frac = 0. 1353 ELSE 1354 frac = (time_cas2 - timeit) / (time_cas2 - time_cas1) 1355 frac = max(frac, 0.0) 1356 ENDIF 1357 1358 lat_prof_cas = lat_cas(it_cas2) & 1359 - frac * (lat_cas(it_cas2) - lat_cas(it_cas1)) 1360 sens_prof_cas = sens_cas(it_cas2) & 1361 - frac * (sens_cas(it_cas2) - sens_cas(it_cas1)) 1362 tke_prof_cas = tke_cas(it_cas2) & 1363 - frac * (tke_cas(it_cas2) - tke_cas(it_cas1)) 1364 ts_prof_cas = ts_cas(it_cas2) & 1365 - frac * (ts_cas(it_cas2) - ts_cas(it_cas1)) 1366 ustar_prof_cas = ustar_cas(it_cas2) & 1367 - frac * (ustar_cas(it_cas2) - ustar_cas(it_cas1)) 1368 1369 DO k = 1, nlev_cas 1370 plev_prof_cas(k) = plev_cas(k, it_cas2) & 1371 - frac * (plev_cas(k, it_cas2) - plev_cas(k, it_cas1)) 1372 t_prof_cas(k) = t_cas(k, it_cas2) & 1373 - frac * (t_cas(k, it_cas2) - t_cas(k, it_cas1)) 1374 !print *,'k,frac,plev_cas1,plev_cas2=',k,frac,plev_cas(k,it_cas1),plev_cas(k,it_cas2) 1375 theta_prof_cas(k) = theta_cas(k, it_cas2) & 1376 - frac * (theta_cas(k, it_cas2) - theta_cas(k, it_cas1)) 1377 thv_prof_cas(k) = thv_cas(k, it_cas2) & 1378 - frac * (thv_cas(k, it_cas2) - thv_cas(k, it_cas1)) 1379 thl_prof_cas(k) = thl_cas(k, it_cas2) & 1380 - frac * (thl_cas(k, it_cas2) - thl_cas(k, it_cas1)) 1381 qv_prof_cas(k) = qv_cas(k, it_cas2) & 1382 - frac * (qv_cas(k, it_cas2) - qv_cas(k, it_cas1)) 1383 ql_prof_cas(k) = ql_cas(k, it_cas2) & 1384 - frac * (ql_cas(k, it_cas2) - ql_cas(k, it_cas1)) 1385 qi_prof_cas(k) = qi_cas(k, it_cas2) & 1386 - frac * (qi_cas(k, it_cas2) - qi_cas(k, it_cas1)) 1387 u_prof_cas(k) = u_cas(k, it_cas2) & 1388 - frac * (u_cas(k, it_cas2) - u_cas(k, it_cas1)) 1389 v_prof_cas(k) = v_cas(k, it_cas2) & 1390 - frac * (v_cas(k, it_cas2) - v_cas(k, it_cas1)) 1391 ug_prof_cas(k) = ug_cas(k, it_cas2) & 1392 - frac * (ug_cas(k, it_cas2) - ug_cas(k, it_cas1)) 1393 vg_prof_cas(k) = vg_cas(k, it_cas2) & 1394 - frac * (vg_cas(k, it_cas2) - vg_cas(k, it_cas1)) 1395 vitw_prof_cas(k) = vitw_cas(k, it_cas2) & 1396 - frac * (vitw_cas(k, it_cas2) - vitw_cas(k, it_cas1)) 1397 omega_prof_cas(k) = omega_cas(k, it_cas2) & 1398 - frac * (omega_cas(k, it_cas2) - omega_cas(k, it_cas1)) 1399 du_prof_cas(k) = du_cas(k, it_cas2) & 1400 - frac * (du_cas(k, it_cas2) - du_cas(k, it_cas1)) 1401 hu_prof_cas(k) = hu_cas(k, it_cas2) & 1402 - frac * (hu_cas(k, it_cas2) - hu_cas(k, it_cas1)) 1403 vu_prof_cas(k) = vu_cas(k, it_cas2) & 1404 - frac * (vu_cas(k, it_cas2) - vu_cas(k, it_cas1)) 1405 dv_prof_cas(k) = dv_cas(k, it_cas2) & 1406 - frac * (dv_cas(k, it_cas2) - dv_cas(k, it_cas1)) 1407 hv_prof_cas(k) = hv_cas(k, it_cas2) & 1408 - frac * (hv_cas(k, it_cas2) - hv_cas(k, it_cas1)) 1409 vv_prof_cas(k) = vv_cas(k, it_cas2) & 1410 - frac * (vv_cas(k, it_cas2) - vv_cas(k, it_cas1)) 1411 dt_prof_cas(k) = dt_cas(k, it_cas2) & 1412 - frac * (dt_cas(k, it_cas2) - dt_cas(k, it_cas1)) 1413 ht_prof_cas(k) = ht_cas(k, it_cas2) & 1414 - frac * (ht_cas(k, it_cas2) - ht_cas(k, it_cas1)) 1415 vt_prof_cas(k) = vt_cas(k, it_cas2) & 1416 - frac * (vt_cas(k, it_cas2) - vt_cas(k, it_cas1)) 1417 dth_prof_cas(k) = dth_cas(k, it_cas2) & 1418 - frac * (dth_cas(k, it_cas2) - dth_cas(k, it_cas1)) 1419 hth_prof_cas(k) = hth_cas(k, it_cas2) & 1420 - frac * (hth_cas(k, it_cas2) - hth_cas(k, it_cas1)) 1421 vth_prof_cas(k) = vth_cas(k, it_cas2) & 1422 - frac * (vth_cas(k, it_cas2) - vth_cas(k, it_cas1)) 1423 dtrad_prof_cas(k) = dtrad_cas(k, it_cas2) & 1424 - frac * (dtrad_cas(k, it_cas2) - dtrad_cas(k, it_cas1)) 1425 dq_prof_cas(k) = dq_cas(k, it_cas2) & 1426 - frac * (dq_cas(k, it_cas2) - dq_cas(k, it_cas1)) 1427 hq_prof_cas(k) = hq_cas(k, it_cas2) & 1428 - frac * (hq_cas(k, it_cas2) - hq_cas(k, it_cas1)) 1429 vq_prof_cas(k) = vq_cas(k, it_cas2) & 1430 - frac * (vq_cas(k, it_cas2) - vq_cas(k, it_cas1)) 1431 uw_prof_cas(k) = uw_cas(k, it_cas2) & 1432 - frac * (uw_cas(k, it_cas2) - uw_cas(k, it_cas1)) 1433 vw_prof_cas(k) = vw_cas(k, it_cas2) & 1434 - frac * (vw_cas(k, it_cas2) - vw_cas(k, it_cas1)) 1435 q1_prof_cas(k) = q1_cas(k, it_cas2) & 1436 - frac * (q1_cas(k, it_cas2) - q1_cas(k, it_cas1)) 1437 q2_prof_cas(k) = q2_cas(k, it_cas2) & 1438 - frac * (q2_cas(k, it_cas2) - q2_cas(k, it_cas1)) 1439 enddo 1440 1441 END SUBROUTINE interp2_case_time 1442 1443 !********************************************************************************************** 1464 1444 1465 1445 END MODULE mod_1D_cases_read2 -
LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_cases_read_std.F90
r5144 r5158 86 86 !********************************************************************************************** 87 87 SUBROUTINE read_SCM_cas 88 USE lmdz_date_cas, ONLY: year_ini_cas, mth_ini_cas, day_deb, heure_ini_cas, pdt_cas, day_ju_ini_cas 89 88 90 IMPLICIT NONE 89 90 INCLUDE "date_cas.h"91 91 92 92 INTEGER nid, rid, ierr … … 239 239 o3_cas, rugos_cas, clay_cas, sand_cas) 240 240 PRINT*, 'read_SCM cas OK' 241 doii = 1, nlev_cas241 DO ii = 1, nlev_cas 242 242 PRINT*, 'apres read_SCM_cas, plev_cas=', ii, plev_cas(ii, 1) 243 243 !PRINT*,'apres read_SCM, plev_cas=',ii,omega_cas(ii,nt_cas/2+1) … … 325 325 326 326 !program reading forcing of the case study 327 USE lmdz_compar1d 328 327 329 IMPLICIT NONE 328 INCLUDE "compar1d.h"329 330 330 331 INTEGER ntime, nlevel, k, t … … 419 420 !----------------------------------------------------------------------- 420 421 421 doi = 1, nbvar3d422 DO i = 1, nbvar3d 422 423 missing_var(i) = 0. 423 424 ierr = nf90_inq_varid(nid, name_var(i), var3didin(i)) … … 596 597 597 598 !CR:ATTENTION EN ATTENTE DE REGLER LA QUESTION DU PAS DE TEMPS INITIAL 598 dot = 1, ntime599 dok = 1, nlevel599 DO t = 1, ntime 600 DO k = 1, nlevel 600 601 temp(k, t) = temp0(k) 601 602 qv(k, t) = qv0(k) … … 644 645 , ustar_prof_cas, uw_prof_cas, vw_prof_cas, q1_prof_cas, q2_prof_cas, tkes_prof_cas) 645 646 647 USE lmdz_compar1d 648 USE lmdz_date_cas, ONLY: year_ini_cas, mth_ini_cas, day_deb, heure_ini_cas, pdt_cas, day_ju_ini_cas 649 646 650 IMPLICIT NONE 647 651 … … 654 658 ! pdt_cas: total time interval (in sec) between 2 forcing data 655 659 !--------------------------------------------------------------------------------------- 656 657 INCLUDE "compar1d.h"658 INCLUDE "date_cas.h"659 660 660 661 ! inputs: … … 799 800 - frac * (ustar_cas(it_cas2) - ustar_cas(it_cas1)) 800 801 801 dok = 1, nlev_cas802 DO k = 1, nlev_cas 802 803 plev_prof_cas(k) = plev_cas(k, it_cas2) & 803 804 - frac * (plev_cas(k, it_cas2) - plev_cas(k, it_cas1)) … … 970 971 ! for variables defined at the middle of layers 971 972 972 dol = 1, llm973 DO l = 1, llm 973 974 974 975 IF (play(l)>=plev_prof_cas(nlev_cas)) THEN … … 979 980 980 981 IF (play(l)<=plev_prof_cas(1)) THEN 981 dok = 1, nlev_cas - 1982 DO k = 1, nlev_cas - 1 982 983 IF (play(l)<=plev_prof_cas(k).AND. play(l)>plev_prof_cas(k + 1)) THEN 983 984 k1 = k … … 989 990 WRITE(*, *) 'PB! k1, k2 = ', k1, k2 990 991 WRITE(*, *) 'l,play(l) = ', l, play(l) / 100 991 dok = 1, nlev_cas - 1992 DO k = 1, nlev_cas - 1 992 993 WRITE(*, *) 'k,plev_prof_cas(k) = ', k, plev_prof_cas(k) / 100 993 994 enddo … … 1141 1142 ! for variables defined at layer interfaces (EV): 1142 1143 1143 dol = 1, llm + 11144 DO l = 1, llm + 1 1144 1145 1145 1146 IF (plev(l)>=plev_prof_cas(nlev_cas)) THEN … … 1149 1150 1150 1151 IF (plev(l)<=plev_prof_cas(1)) THEN 1151 dok = 1, nlev_cas - 11152 DO k = 1, nlev_cas - 1 1152 1153 IF (plev(l)<=plev_prof_cas(k).AND. plev(l)>plev_prof_cas(k + 1)) THEN 1153 1154 k1 = k … … 1159 1160 WRITE(*, *) 'PB! k1, k2 = ', k1, k2 1160 1161 WRITE(*, *) 'l,plev(l) = ', l, plev(l) / 100 1161 dok = 1, nlev_cas - 11162 DO k = 1, nlev_cas - 1 1162 1163 WRITE(*, *) 'k,plev_prof_cas(k) = ', k, plev_prof_cas(k) / 100 1163 1164 enddo -
LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/old_1DUTILS_read_interp.h
r5144 r5158 29 29 open(21,file=trim(fich_toga),form='formatted') 30 30 read(21,'(a)') 31 doip = 1, nt_toga31 DO ip = 1, nt_toga 32 32 read(21,'(a)') 33 33 read(21,'(a)') … … 36 36 read(21,'(a)') 37 37 38 dok = 1, nlev_toga38 DO k = 1, nlev_toga 39 39 read(21,230) plev_toga(k,ip), t_toga(k,ip), q_toga(k,ip) & 40 40 & ,u_toga(k,ip), v_toga(k,ip), w_toga(k,ip) & … … 85 85 open(21,file=trim(fich_sandu),form='formatted') 86 86 read(21,'(a)') 87 doip = 1, nt_sandu87 DO ip = 1, nt_sandu 88 88 read(21,'(a)') 89 89 read(21,'(a)') … … 124 124 read(21,'(a)') 125 125 read(21,'(a)') 126 doip = 1, nt_astex126 DO ip = 1, nt_astex 127 127 read(21,'(a)') 128 128 read(21,'(a)') … … 308 308 309 309 !pressure 310 dol=1,ntime311 dok=1,nlevel310 DO l=1,ntime 311 DO k=1,nlevel 312 312 plev(k,l)=lev(k) 313 313 enddo … … 356 356 ! WRITE(*,*)'lecture q ok' 357 357 !q in kg/kg 358 dol=1,ntime359 dok=1,nlevel358 DO l=1,ntime 359 DO k=1,nlevel 360 360 q(k,l)=q(k,l)/1000. 361 361 enddo … … 382 382 ! WRITE(*,*)'lecture omega ok' 383 383 !omega in mb/hour 384 dol=1,ntime385 dok=1,nlevel384 DO l=1,ntime 385 DO k=1,nlevel 386 386 omega(k,l)=omega(k,l)*100./3600. 387 387 enddo … … 402 402 ! WRITE(*,*)'lecture T_adv_h ok' 403 403 !T adv in K/s 404 dol=1,ntime405 dok=1,nlevel404 DO l=1,ntime 405 DO k=1,nlevel 406 406 T_adv_h(k,l)=T_adv_h(k,l)/3600. 407 407 enddo … … 416 416 ! WRITE(*,*)'lecture T_adv_v ok' 417 417 !T adv in K/s 418 dol=1,ntime419 dok=1,nlevel418 DO l=1,ntime 419 DO k=1,nlevel 420 420 T_adv_v(k,l)=T_adv_v(k,l)/3600. 421 421 enddo … … 429 429 ! WRITE(*,*)'lecture q_adv_h ok' 430 430 !q adv in kg/kg/s 431 dol=1,ntime432 dok=1,nlevel431 DO l=1,ntime 432 DO k=1,nlevel 433 433 q_adv_h(k,l)=q_adv_h(k,l)/1000./3600. 434 434 enddo … … 443 443 ! WRITE(*,*)'lecture q_adv_v ok' 444 444 !q adv in kg/kg/s 445 dol=1,ntime446 dok=1,nlevel445 DO l=1,ntime 446 DO k=1,nlevel 447 447 q_adv_v(k,l)=q_adv_v(k,l)/1000./3600. 448 448 enddo … … 572 572 REAL frac,frac1,frac2,fact 573 573 574 dol = 1, llm574 DO l = 1, llm 575 575 576 576 IF (play(l).ge.plev_prof(nlev_sandu)) THEN … … 580 580 581 581 IF (play(l).le.plev_prof(1)) THEN 582 dok = 1, nlev_sandu-1582 DO k = 1, nlev_sandu-1 583 583 IF (play(l).le.plev_prof(k).AND. play(l).gt.plev_prof(k+1)) THEN 584 584 k1=k … … 590 590 WRITE(*,*) 'PB! k1, k2 = ',k1,k2 591 591 WRITE(*,*) 'l,play(l) = ',l,play(l)/100 592 dok = 1, nlev_sandu-1592 DO k = 1, nlev_sandu-1 593 593 WRITE(*,*) 'k,plev_prof(k) = ',k,plev_prof(k)/100 594 594 enddo … … 641 641 enddo ! l 642 642 643 dol = 1,llm643 DO l = 1,llm 644 644 ! print *,'t_mod(l),thl_mod(l),q_mod(l),u_mod(l),v_mod(l) ', 645 645 ! $ l,t_mod(l),thl_mod(l),q_mod(l),u_mod(l),v_mod(l) … … 685 685 REAL frac,frac1,frac2,fact 686 686 687 dol = 1, llm687 DO l = 1, llm 688 688 689 689 IF (play(l).ge.plev_prof(nlev_astex)) THEN … … 693 693 694 694 IF (play(l).le.plev_prof(1)) THEN 695 dok = 1, nlev_astex-1695 DO k = 1, nlev_astex-1 696 696 IF (play(l).le.plev_prof(k).AND. play(l).gt.plev_prof(k+1)) THEN 697 697 k1=k … … 703 703 WRITE(*,*) 'PB! k1, k2 = ',k1,k2 704 704 WRITE(*,*) 'l,play(l) = ',l,play(l)/100 705 dok = 1, nlev_astex-1705 DO k = 1, nlev_astex-1 706 706 WRITE(*,*) 'k,plev_prof(k) = ',k,plev_prof(k)/100 707 707 enddo … … 760 760 enddo ! l 761 761 762 dol = 1,llm762 DO l = 1,llm 763 763 ! print *,'t_mod(l),thl_mod(l),qv_mod(l),u_mod(l),v_mod(l) ', 764 764 ! $ l,t_mod(l),thl_mod(l),qv_mod(l),u_mod(l),v_mod(l) … … 801 801 PRINT*,fich_rico 802 802 open(21,file=trim(fich_rico),form='formatted') 803 dok=1,llm803 DO k=1,llm 804 804 zlay(k)=0. 805 805 enddo … … 808 808 prico(1)=ps_rico 809 809 zrico(1)=0.0 810 dol=2,nlev_rico810 DO l=2,nlev_rico 811 811 read(21,*) k,prico(l),zrico(l) 812 812 enddo 813 813 close(21) 814 814 815 dok=1,llm816 dol=1,80815 DO k=1,llm 816 DO l=1,80 817 817 IF(prico(l)>play(k)) THEN 818 818 IF(play(k)>prico(l+1)) THEN … … 922 922 enddo 923 923 924 dok=1,llm924 DO k=1,llm 925 925 q_rico(k)=q_rico(k)/1e3 926 926 dqh_dyn(k)=dqh_dyn(k)/1e3 … … 1029 1029 open(21,file=trim(fich_armcu),form='formatted') 1030 1030 read(21,'(a)') 1031 doip = 1, nt_armcu1031 DO ip = 1, nt_armcu 1032 1032 read(21,'(a)') 1033 1033 read(21,'(a)') … … 1082 1082 REAL frac,frac1,frac2,fact 1083 1083 1084 dol = 1, llm1084 DO l = 1, llm 1085 1085 1086 1086 IF (play(l).ge.plev_prof(nlev_toga)) THEN … … 1090 1090 1091 1091 IF (play(l).le.plev_prof(1)) THEN 1092 dok = 1, nlev_toga-11092 DO k = 1, nlev_toga-1 1093 1093 IF (play(l).le.plev_prof(k).AND. play(l).gt.plev_prof(k+1)) THEN 1094 1094 k1=k … … 1100 1100 WRITE(*,*) 'PB! k1, k2 = ',k1,k2 1101 1101 WRITE(*,*) 'l,play(l) = ',l,play(l)/100 1102 dok = 1, nlev_toga-11102 DO k = 1, nlev_toga-1 1103 1103 WRITE(*,*) 'k,plev_prof(k) = ',k,plev_prof(k)/100 1104 1104 enddo … … 1208 1208 REAL frac,frac1,frac2,fact 1209 1209 1210 dol = 1, llm1210 DO l = 1, llm 1211 1211 1212 1212 IF (play(l).ge.plev_prof_cas(nlev_cas)) THEN … … 1216 1216 1217 1217 IF (play(l).le.plev_prof_cas(1)) THEN 1218 dok = 1, nlev_cas-11218 DO k = 1, nlev_cas-1 1219 1219 IF (play(l).le.plev_prof_cas(k).AND. play(l).gt.plev_prof_cas(k+1)) THEN 1220 1220 k1=k … … 1226 1226 WRITE(*,*) 'PB! k1, k2 = ',k1,k2 1227 1227 WRITE(*,*) 'l,play(l) = ',l,play(l)/100 1228 dok = 1, nlev_cas-11228 DO k = 1, nlev_cas-1 1229 1229 WRITE(*,*) 'k,plev_prof_cas(k) = ',k,plev_prof_cas(k)/100 1230 1230 enddo … … 1356 1356 REAL aa,frac,frac1,frac2,fact 1357 1357 1358 dol = 1, llm1358 DO l = 1, llm 1359 1359 1360 1360 IF (play(l).ge.plev_prof(nlev_dice)) THEN … … 1364 1364 1365 1365 IF (play(l).le.plev_prof(1)) THEN 1366 dok = 1, nlev_dice-11366 DO k = 1, nlev_dice-1 1367 1367 IF (play(l).le.plev_prof(k) .AND. play(l).gt.plev_prof(k+1)) THEN 1368 1368 k1=k … … 1374 1374 WRITE(*,*) 'PB! k1, k2 = ',k1,k2 1375 1375 WRITE(*,*) 'l,play(l) = ',l,play(l)/100 1376 dok = 1, nlev_dice-11376 DO k = 1, nlev_dice-1 1377 1377 WRITE(*,*) 'k,plev_prof(k) = ',k,plev_prof(k)/100 1378 1378 enddo … … 1540 1540 & ,ts_prof,plev_prof,t_prof,q_prof,u_prof,v_prof,w_prof & 1541 1541 & ,ht_prof,vt_prof,hq_prof,vq_prof) 1542 1543 USE lmdz_compar1d 1544 1542 1545 IMPLICIT NONE 1543 1546 … … 1550 1553 ! dt_toga: total time interval (in sec) between 2 forcing data (e.g. 6h for TOGA-COARE) 1551 1554 !--------------------------------------------------------------------------------------- 1552 1553 INCLUDE "compar1d.h"1554 1555 1555 1556 ! inputs: … … 1646 1647 ! :day,annee_ref,day_ini_toga,timeit/86400.,it_toga1,it_toga2,ts_prof 1647 1648 1648 dok=1,nlev_toga1649 DO k=1,nlev_toga 1649 1650 plev_prof(k) = 100.*(plev_toga(k,it_toga2) & 1650 1651 & -frac*(plev_toga(k,it_toga2)-plev_toga(k,it_toga1))) … … 1681 1682 & ,ustar_prof,psurf_prof,ug_prof,vg_prof & 1682 1683 & ,ht_prof,hq_prof,hu_prof,hv_prof,w_prof,omega_prof) 1684 1685 USE lmdz_compar1d 1686 1683 1687 IMPLICIT NONE 1684 1688 … … 1691 1695 ! dt_dice: total time interval (in sec) between 2 forcing data (e.g. 30min. for Dice) 1692 1696 !--------------------------------------------------------------------------------------- 1693 1694 INCLUDE "compar1d.h"1695 1697 1696 1698 ! inputs: … … 1777 1779 ! :day,annee_ref,day_ini_dice,timeit/86400.,it_dice1,it_dice2,ts_prof 1778 1780 1779 dok=1,nlev_dice1781 DO k=1,nlev_dice 1780 1782 ht_prof(k) = ht_dice(k,it_dice2)-frac*(ht_dice(k,it_dice2)-ht_dice(k,it_dice1)) 1781 1783 hq_prof(k) = hq_dice(k,it_dice2)-frac*(hq_dice(k,it_dice2)-hq_dice(k,it_dice1)) … … 1794 1796 & ,ug_gabls4,vg_gabls4,ht_gabls4,hq_gabls4,tg_gabls4 & 1795 1797 & ,ug_prof,vg_prof,ht_prof,hq_prof,tg_prof) 1798 1799 USE lmdz_compar1d 1800 1796 1801 IMPLICIT NONE 1797 1802 … … 1804 1809 ! dt_gabls4: total time interval (in sec) between 2 forcing data (e.g. 60min. for gabls4) 1805 1810 !--------------------------------------------------------------------------------------- 1806 1807 INCLUDE "compar1d.h"1808 1811 1809 1812 ! inputs: … … 1866 1869 1867 1870 1868 dok=1,nlev_gabls41871 DO k=1,nlev_gabls4 1869 1872 ug_prof(k) = ug_gabls4(k,it_gabls42)-frac*(ug_gabls4(k,it_gabls42)-ug_gabls4(k,it_gabls41)) 1870 1873 vg_prof(k) = vg_gabls4(k,it_gabls42)-frac*(vg_gabls4(k,it_gabls42)-vg_gabls4(k,it_gabls41)) … … 1982 1985 IF (ierr /= 0) stop 'ERROR:Prof.inp does not exist' 1983 1986 read (ilesfile,*) kmax 1984 dok=1,kmax1987 DO k=1,kmax 1985 1988 read (ilesfile,*) height1(k),thlprof(k),qtprof (k), & 1986 1989 & uprof (k),vprof (k),e12prof(k) … … 1996 1999 stop 'lecture profiles' 1997 2000 endif 1998 dok=1,kmax2001 DO k=1,kmax 1999 2002 read (ilesfile,*) height(k),ugprof(k),vgprof(k),wfls(k), & 2000 2003 & dqtdxls(k),dqtdyls(k),dqtdtls(k),thlpcar(k) 2001 2004 END DO 2002 dok=1,kmax2005 DO k=1,kmax 2003 2006 IF (height(k) .NE. height1(k)) THEN 2004 2007 print *, 'fichiers prof.inp et lscale.inp incompatibles :' … … 2022 2025 stop 'lecture profiles' 2023 2026 endif 2024 dok=1,kmax2027 DO k=1,kmax 2025 2028 read (ilesfile,*) height(k),(tracer(k,itrac),itrac=nt1,nt2) 2026 2029 END DO … … 2052 2055 IF (ierr /= 0) stop 'ERROR:Prof.inp does not exist' 2053 2056 read (ilesfile,*) kmax 2054 dok=1,kmax2057 DO k=1,kmax 2055 2058 read (ilesfile,*) height(k),pprof(k), tprof(k),thlprof(k), & 2056 2059 & qprof (k),uprof(k), vprof(k), wprof(k), & … … 2084 2087 IF (ierr /= 0) stop 'ERROR:Prof.inp does not exist' 2085 2088 read (ilesfile,*) kmax 2086 dok=1,kmax2089 DO k=1,kmax 2087 2090 read (ilesfile,*) height(k),pprof(k), tprof(k),thlprof(k), & 2088 2091 & qvprof (k),qlprof (k),qtprof (k), & … … 2126 2129 IF (ierr /= 0) stop 'ERROR:Prof.inp does not exist' 2127 2130 read (ilesfile,*) kmax 2128 dok=1,kmax2131 DO k=1,kmax 2129 2132 read (ilesfile,*) height(k) ,pprof(k), uprof(k), vprof(k), & 2130 2133 & thetaprof(k) ,tprof(k), qvprof(k),rvprof(k) … … 2143 2146 ENDIF 2144 2147 read (ifile,*) kmax 2145 dok=1,kmax2148 DO k=1,kmax 2146 2149 read (ifile,*) jtot,aprof(k),bprof(k) 2147 2150 enddo … … 2559 2562 endif 2560 2563 ! WRITE(*,*)'lecture th ok',th 2561 dok=1,nlevel2564 DO k=1,nlevel 2562 2565 t(k)=th(k)*(pres(k)/pzero)**rkappa 2563 2566 enddo … … 2925 2928 2926 2929 ! On remet les variables lues dans le bon ordre des niveaux (MPL 20141024) 2927 dok=1,nlevel2930 DO k=1,nlevel 2928 2931 zz(k)=zz_i(nlevel+1-k) 2929 2932 ug(k,:)=ug_i(nlevel+1-k,:) … … 2948 2951 2949 2952 USE lmdz_yomcst 2950 2953 2954 INTEGER :: ncm_1, nlev_circ, ilev, iskip, icm_1, il 2951 2955 parameter (ncm_1=49180) 2952 2956 2953 REAL albsfc(ncm_1), albsfc_w(ncm_1) 2957 REAL albsfc(ncm_1), albsfc_w(ncm_1), aer_alpha, sw_dn_toa, tsfc 2954 2958 REAL cf(nlev_circ), icefra(nlev_circ), deice(nlev_circ), & 2955 2959 reliq(nlev_circ), reice(nlev_circ), lwp(nlev_circ), iwp(nlev_circ) … … 2975 2979 2976 2980 ! Read scalar information 2977 doiskip=1,52981 DO iskip=1,5 2978 2982 read (11, *) 2979 2983 enddo … … 2988 2992 ! Read level information 2989 2993 read (12, *) 2990 doil=1,nlev2994 DO il=1,nlev 2991 2995 read (12, 302) ilev, z(il), p(il), t(il) 2992 2996 z(il)=z(il)*1000. ! z donne en km … … 2997 3001 2998 3002 ! Read layer information (midpoint values) 2999 doiskip=1,33003 DO iskip=1,3 3000 3004 read (13, *) 3001 3005 enddo 3002 doil=1,nlev-13006 DO il=1,nlev-1 3003 3007 read (13, 303) ilev,pm(il),tm(il),h2o(il),co2(il),o3(il), & 3004 3008 n2o(il),co(il),ch4(il),o2(il),ccl4(il), & … … 3010 3014 3011 3015 ! Read aerosol layer information 3012 doiskip=1,33016 DO iskip=1,3 3013 3017 read (14, *) 3014 3018 enddo … … 3016 3020 read (14, *) 3017 3021 read (14, *) 3018 doil=1,nlev-13022 DO il=1,nlev-1 3019 3023 read (14, 304) ilev, aer_beta(il), waer(il), gaer(il) 3020 3024 enddo … … 3023 3027 3024 3028 ! Read cloud information 3025 doiskip=1,33029 DO iskip=1,3 3026 3030 read (15, *) 3027 3031 enddo 3028 doil=1,nlev-13032 DO il=1,nlev-1 3029 3033 read (15, 305) ilev, cf(il), lwp(il), iwp(il), reliq(il), reice(il) 3030 3034 lwp(il)=lwp(il)/1000. ! lwp donne en g/kg … … 3037 3041 3038 3042 ! Read surface albedo (weighted & unweighted) and spectral solar irradiance 3039 doiskip=1,63043 DO iskip=1,6 3040 3044 read (16, *) 3041 3045 enddo 3042 doicm_1=1,ncm_13046 DO icm_1=1,ncm_1 3043 3047 read (16, 306) wavn(icm_1), albsfc(icm_1), albsfc_w(icm_1), ssf(icm_1) 3044 3048 enddo … … 3055 3059 USE lmdz_yomcst 3056 3060 3061 INTEGER nlev_rtmip, il 3057 3062 REAL t(nlev_rtmip), pt(nlev_rtmip),pb(nlev_rtmip),h2o(nlev_rtmip), o3(nlev_rtmip) 3058 3063 REAL temp(nlev_rtmip), play(nlev_rtmip),ovap(nlev_rtmip), oz(nlev_rtmip),plev(nlev_rtmip+1) … … 3066 3071 ! Read level information 3067 3072 read (11, *) 3068 doil=1,nlev_rtmip3073 DO il=1,nlev_rtmip 3069 3074 read (11, 302) pt(il), pb(il), t(il),h2o(il),o3(il) 3070 3075 enddo 3071 doil=1,nlev_rtmip3076 DO il=1,nlev_rtmip 3072 3077 play(il)=pt(nlev_rtmip-il+1)*100. ! p donne en mb 3073 3078 temp(il)=t(nlev_rtmip-il+1) … … 3075 3080 oz(il)=o3(nlev_rtmip-il+1) 3076 3081 enddo 3077 doil=1,393082 DO il=1,39 3078 3083 plev(il)=play(il)+(play(il+1)-play(il))/2. 3079 3084 print *,'il p t ovap oz=',il,plev(il),temp(il),ovap(il),oz(il) -
LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/old_1D_interp_cases.h
r5117 r5158 26 26 ! large-scale forcing : 27 27 !!! tsurf = ts_gcssold 28 dol = 1, llm28 DO l = 1, llm 29 29 ! u(l) = hu_gcssold(l) ! on prescrit le vent 30 30 ! v(l) = hv_gcssold(l) ! on prescrit le vent … … 72 72 ! large-scale forcing : 73 73 tsurf = ts_prof 74 dol = 1, llm74 DO l = 1, llm 75 75 u(l) = u_mod(l) ! sb: on prescrit le vent 76 76 v(l) = v_mod(l) ! sb: on prescrit le vent … … 169 169 tg=tg_prof 170 170 print *,'ust= ',ust 171 dol = 1, llm171 DO l = 1, llm 172 172 ug(l)= ug_profd 173 173 vg(l)= vg_profd … … 217 217 & ,ht_mod,hq_mod,ug_mod,vg_mod,w_mod,omega_mod,mxcalc) 218 218 219 dol = 1, llm219 DO l = 1, llm 220 220 ug(l)= ug_mod(l) 221 221 vg(l)= vg_mod(l) … … 276 276 277 277 !wind nudging above 500m with a 2h time scale 278 dol=1,llm278 DO l=1,llm 279 279 IF (nudge_wind) THEN 280 280 ! if (phi(l).gt.5000.) THEN … … 291 291 !CR:nudging of q and theta with a 6h time scale above 15km 292 292 IF (nudge_thermo) THEN 293 dol=1,llm293 DO l=1,llm 294 294 zz(l)=phi(l)/9.8 295 295 IF ((zz(l).le.16000.).AND.(zz(l).gt.15000.)) THEN … … 304 304 endif 305 305 306 dol = 1, llm306 DO l = 1, llm 307 307 omega(l) = w_mod(l) 308 308 omega2(l)= omega(l)/rg*airefi ! flxmass_w calcule comme ds physiq … … 343 343 PRINT*,'apres interpolation temporelle AMMA' 344 344 345 dok=1,nlev_amma345 DO k=1,nlev_amma 346 346 th_profamma(k)=0. 347 347 q_profamma(k)=0. … … 365 365 !Calcul des gradients verticaux 366 366 !initialisation 367 dol=1,llm367 DO l=1,llm 368 368 d_t_z(l)=0. 369 369 d_q_z(l)=0. … … 380 380 381 381 382 dol = 1, llm382 DO l = 1, llm 383 383 rho(l) = play(l)/(rd*temp(l)*(1.+(rv/rd-1.)*q(l,1))) 384 384 omega(l) = w_mod(l)*(-rg*rho(l)) … … 414 414 CALL lstendH(llm,nqtot,omega,dt_dyn,dq_dyn,q,temp,u,v,play) 415 415 416 dol=1,llm416 DO l=1,llm 417 417 d_t_adv(l) = (dth_rico(l) + dt_dyn(l)) 418 418 d_q_adv(l,1) = (dqh_rico(l) + dq_dyn(l,1)) … … 446 446 447 447 ! Advective forcings are given in K or g/kg ... BY HOUR 448 dol = 1, llm448 DO l = 1, llm 449 449 ug(l)= u_mod(l) 450 450 vg(l)= v_mod(l) … … 539 539 tsurf = ts_prof 540 540 WRITE(*,*) 'SST suivante: ',tsurf 541 dol = 1, llm541 DO l = 1, llm 542 542 omega(l) = omega_mod(l) 543 543 omega2(l)= omega(l)/rg*airefi ! flxmass_w calcule comme ds physiq … … 620 620 tsurf = ts_prof 621 621 WRITE(*,*) 'SST suivante: ',tsurf 622 dol = 1, llm622 DO l = 1, llm 623 623 omega(l) = w_mod(l) 624 624 omega2(l)= omega(l)/rg*airefi ! flxmass_w calcule comme ds physiq … … 715 715 !wind nudging 716 716 IF (nudge_u.gt.0.) THEN 717 dol=1,llm717 DO l=1,llm 718 718 u(l)=u(l)+timestep*(u_mod_cas(l)-u(l))/(nudge_u) 719 719 enddo 720 720 else 721 dol=1,llm721 DO l=1,llm 722 722 u(l) = u_mod_cas(l) 723 723 enddo … … 725 725 726 726 IF (nudge_v.gt.0.) THEN 727 dol=1,llm727 DO l=1,llm 728 728 v(l)=v(l)+timestep*(v_mod_cas(l)-v(l))/(nudge_v) 729 729 enddo 730 730 else 731 dol=1,llm731 DO l=1,llm 732 732 v(l) = v_mod_cas(l) 733 733 enddo … … 735 735 736 736 IF (nudge_w.gt.0.) THEN 737 dol=1,llm737 DO l=1,llm 738 738 w(l)=w(l)+timestep*(w_mod_cas(l)-w(l))/(nudge_w) 739 739 enddo 740 740 else 741 dol=1,llm741 DO l=1,llm 742 742 w(l) = w_mod_cas(l) 743 743 enddo … … 746 746 !nudging of q and temp 747 747 IF (nudge_t.gt.0.) THEN 748 dol=1,llm748 DO l=1,llm 749 749 temp(l)=temp(l)+timestep*(t_mod_cas(l)-temp(l))/(nudge_t) 750 750 enddo 751 751 endif 752 752 IF (nudge_q.gt.0.) THEN 753 dol=1,llm753 DO l=1,llm 754 754 q(l,1)=q(l,1)+timestep*(q_mod_cas(l)-q(l,1))/(nudge_q) 755 755 enddo 756 756 endif 757 757 758 dol = 1, llm758 DO l = 1, llm 759 759 omega(l) = w_mod_cas(l) ! juste car w_mod_cas en Pa/s (MPL 20170310) 760 760 omega2(l)= omega(l)/rg*airefi ! flxmass_w calcule comme ds physiq … … 905 905 !geostrophic wind 906 906 IF (forc_geo.EQ.1) THEN 907 dol=1,llm907 DO l=1,llm 908 908 ug(l) = ug_mod_cas(l) 909 909 vg(l) = vg_mod_cas(l) … … 912 912 !wind nudging 913 913 IF (nudging_u.gt.0.) THEN 914 dol=1,llm914 DO l=1,llm 915 915 u(l)=u(l)+timestep*(u_mod_cas(l)-u(l))/(nudge_u) 916 916 enddo … … 922 922 923 923 IF (nudging_v.gt.0.) THEN 924 dol=1,llm924 DO l=1,llm 925 925 v(l)=v(l)+timestep*(v_mod_cas(l)-v(l))/(nudge_v) 926 926 enddo … … 932 932 933 933 IF (nudging_w.gt.0.) THEN 934 dol=1,llm934 DO l=1,llm 935 935 w(l)=w(l)+timestep*(w_mod_cas(l)-w(l))/(nudge_w) 936 936 enddo … … 943 943 !nudging of q and temp 944 944 IF (nudging_t.gt.0.) THEN 945 dol=1,llm945 DO l=1,llm 946 946 temp(l)=temp(l)+timestep*(t_mod_cas(l)-temp(l))/(nudge_t) 947 947 enddo 948 948 endif 949 949 IF (nudging_qv.gt.0.) THEN 950 dol=1,llm950 DO l=1,llm 951 951 q(l,1)=q(l,1)+timestep*(q_mod_cas(l)-q(l,1))/(nudge_q) 952 952 enddo 953 953 endif 954 954 955 dol = 1, llm955 DO l = 1, llm 956 956 ! Modif w_mod_cas -> omega_mod_cas (MM+MPL 20170309) 957 957 omega(l) = omega_mod_cas(l) -
LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/old_1D_read_forc_cases.h
r5117 r5158 39 39 ! compute altitudes of play levels. 40 40 zlay(1) =zsurf + rd*tsurf*(psurf-play(1))/(rg*psurf) 41 dol = 2,llm41 DO l = 2,llm 42 42 zlay(l) = zlay(l-1)+rd*tsurf*(psurf-play(1))/(rg*psurf) 43 43 enddo … … 48 48 !---------------------------------------------------------------------- 49 49 zlay(1) = zsurf + rd*tsurf*(psurf-play(1))/(rg*psurf) 50 dol=1,llm50 DO l=1,llm 51 51 ! Above the max altutide of the input file 52 52 … … 74 74 dq_dyn(l,1) = dqtdtls(kmax)-frac*(dqtdtls(kmax)-dqtdtls(kmax-1)) 75 75 dt_cooling(l)=thlpcar(kmax)-frac*(thlpcar(kmax)-thlpcar(kmax-1)) 76 dok=2,kmax76 DO k=2,kmax 77 77 print *,'k l height(k) height(k-1) zlay(l) frac=',k,l,height(k),height(k-1),zlay(l),frac 78 78 frac = (height(k)-zlay(l))/(height(k)-height(k-1)) … … 167 167 mxcalc=llm 168 168 print *, airefi, ' airefi ' 169 dol = 1, llm169 DO l = 1, llm 170 170 rho(l) = play(l)/(rd*t_rico(l)*(1.+(rv/rd-1.)*q_rico(l))) 171 171 temp(l) = t_rico(l) … … 214 214 tsurf = ts_prof 215 215 WRITE(*,*) 'SST initiale: ',tsurf 216 dol = 1, llm216 DO l = 1, llm 217 217 temp(l) = t_mod(l) 218 218 q(l,1) = q_mod(l) … … 266 266 ! tsurf = ts_proftwp 267 267 WRITE(*,*) 'SST initiale: ',tsurf 268 dol = 1, llm268 DO l = 1, llm 269 269 temp(l) = t_mod(l) 270 270 q(l,1) = q_mod(l) … … 296 296 297 297 !champs initiaux: 298 dok=1,nlev_amma298 DO k=1,nlev_amma 299 299 th_ammai(k)=th_amma(k) 300 300 q_ammai(k)=q_amma(k) … … 322 322 ! tsurf = ts_proftwp 323 323 WRITE(*,*) 'SST initiale mxcalc: ',tsurf,mxcalc 324 dol = 1, llm324 DO l = 1, llm 325 325 ! Ligne du dessous ?? decommenter si on lit theta au lieu de temp 326 326 ! temp(l) = t_mod(l)*(play(l)/pzero)**rkappa … … 372 372 373 373 !champs initiaux: 374 dok=1,nlev_dice374 DO k=1,nlev_dice 375 375 t_dicei(k)=t_dice(k) 376 376 qv_dicei(k)=qv_dice(k) … … 420 420 ! initial and boundary conditions : 421 421 WRITE(*,*) 'SST initiale mxcalc: ',tsurf,mxcalc 422 dol = 1, llm422 DO l = 1, llm 423 423 ! Ligne du dessous ?? decommenter si on lit theta au lieu de temp 424 424 ! temp(l) = th_mod(l)*(play(l)/pzero)**rkappa … … 480 480 fich_gabls4='gabls4_driver.nc' 481 481 482 482 483 483 CALL read_gabls4(fich_gabls4,nlev_gabls4,nt_gabls4,nsol_gabls4,zz_gabls4,depth_sn_gabls4,ug_gabls4,vg_gabls4 & 484 484 & ,plev_gabls4,th_gabls4,t_gabls4,qv_gabls4,u_gabls4,v_gabls4,ht_gabls4,hq_gabls4,tg_gabls4,tsnow_gabls4,snow_dens_gabls4) … … 487 487 488 488 !champs initiaux: 489 dok=1,nlev_gabls4489 DO k=1,nlev_gabls4 490 490 t_gabi(k)=t_gabls4(k) 491 491 qv_gabi(k)=qv_gabls4(k) … … 527 527 ! initial and boundary conditions : 528 528 WRITE(*,*) 'SST initiale mxcalc: ',tsurf,mxcalc 529 dol = 1, llm529 DO l = 1, llm 530 530 ! Ligne du dessous ?? decommenter si on lit theta au lieu de temp 531 531 ! temp(l) = th_mod(l)*(play(l)/pzero)**rkappa … … 539 539 vg(l)=vg_mod(l) 540 540 541 ! 541 ! tg=tsurf 542 542 543 543 print *,'***** tsurf=',tsurf … … 637 637 ! tsurf read in lmdz1d.def 638 638 WRITE(*,*) 'Tsurf initiale: ',tsurf 639 dol = 1, llm639 DO l = 1, llm 640 640 play(l)=play_mod(l)*100. 641 641 presnivs(l)=play(l) … … 670 670 ! plev at half levels is given in proh.inp.19 or proh.inp.40 files 671 671 plev(1)= ap(llm+1)+bp(llm+1)*psurf 672 dol = 1, llm672 DO l = 1, llm 673 673 plev(l+1) = ap(llm-l+1)+bp(llm-l+1)*psurf 674 674 print *,'Read_forc: l height play plev zlay temp', & … … 733 733 tsurf = ts_prof 734 734 WRITE(*,*) 'SST initiale: ',tsurf 735 dol = 1, llm735 DO l = 1, llm 736 736 temp(l) = t_mod(l) 737 737 tetal(l)=thl_mod(l) … … 809 809 tsurf = ts_prof 810 810 WRITE(*,*) 'SST initiale: ',tsurf 811 dol = 1, llm811 DO l = 1, llm 812 812 temp(l) = t_mod(l) 813 813 tetal(l)=thl_mod(l) … … 873 873 psurf=plev_prof_cas(1) 874 874 WRITE(*,*) 'SST initiale: ',tsurf 875 dol = 1, llm875 DO l = 1, llm 876 876 temp(l) = t_mod_cas(l) 877 877 q(l,1) = q_mod_cas(l) … … 934 934 & ,sens_prof_cas,ustar_prof_cas,uw_prof_cas,vw_prof_cas,q1_prof_cas,q2_prof_cas,tke_prof_cas) 935 935 936 dol = 1, nlev_cas936 DO l = 1, nlev_cas 937 937 print *,'apres 1ere interp: plev_cas, plev_prof_cas=',l,plev_cas(l,1),plev_prof_cas(l) 938 938 enddo … … 962 962 psurf=plev_prof_cas(1) 963 963 WRITE(*,*) 'SST initiale: ',tsurf 964 dol = 1, llm964 DO l = 1, llm 965 965 temp(l) = t_mod_cas(l) 966 966 q(l,1) = qv_mod_cas(l) … … 1032 1032 & ,sens_prof_cas,ustar_prof_cas,uw_prof_cas,vw_prof_cas,q1_prof_cas,q2_prof_cas,tke_prof_cas) 1033 1033 1034 dol = 1, nlev_cas1034 DO l = 1, nlev_cas 1035 1035 print *,'apres 1ere interp: plev_cas, plev_prof_cas=',l,plev_cas(l,1),plev_prof_cas(l) 1036 1036 enddo … … 1061 1061 psurf=plev_prof_cas(1) 1062 1062 WRITE(*,*) 'SST initiale: ',tsurf 1063 dol = 1, llm1063 DO l = 1, llm 1064 1064 temp(l) = t_mod_cas(l) 1065 1065 q(l,1) = qv_mod_cas(l)
Note: See TracChangeset
for help on using the changeset viewer.