Changeset 1785 for LMDZ5/trunk/libf/phy1d/lmdz1d.F
- Timestamp:
- Jul 16, 2013, 11:22:04 AM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phy1d/lmdz1d.F
r1780 r1785 2 2 3 3 USE ioipsl, only: ju2ymds, ymds2ju, ioconf_calendar 4 usephys_state_var_mod5 usecomgeomphy6 usedimphy7 usesurface_data, only : type_ocean,ok_veget8 use pbl_surface_mod, only : ftsoil, pbl_surface_init,9 $ pbl_surface_final10 use fonte_neige_mod, only : fonte_neige_init, fonte_neige_final 11 12 use infotrac ! new13 use control_mod4 USE phys_state_var_mod 5 USE comgeomphy 6 USE dimphy 7 USE surface_data, only : type_ocean,ok_veget 8 USE pbl_surface_mod, only : pbl_surface_init, pbl_surface_final 9 USE fonte_neige_mod, only : fonte_neige_init, fonte_neige_final 10 11 USE infotrac ! new 12 USE control_mod 13 USE indice_sol_mod 14 14 15 15 implicit none … … 21 21 #include "clesphys.h" 22 22 #include "dimsoil.h" 23 #include "indicesol.h"23 !#include "indicesol.h" 24 24 25 25 #include "comvert.h" 26 26 #include "compar1d.h" 27 27 #include "flux_arp.h" 28 #include "tsoilnudge.h"29 28 #include "fcg_gcssold.h" 30 29 !!!#include "fbforcing.h" … … 88 87 89 88 integer :: kmax = llm 90 integer nlev_max ,llm70091 parameter (nlev_max = 100 0)89 integer nlev_max 90 parameter (nlev_max = 100) 92 91 real timestep, frac, timeit 93 92 real height(nlev_max),tttprof(nlev_max),qtprof(nlev_max), … … 100 99 c integer :: forcing_type 101 100 logical :: forcing_les = .false. 102 logical :: forcing_armcu 101 logical :: forcing_armcu = .false. 103 102 logical :: forcing_rico = .false. 104 103 logical :: forcing_radconv = .false. 105 104 logical :: forcing_toga = .false. 106 105 logical :: forcing_twpice = .false. 107 logical :: forcing_amma = .false.108 106 logical :: forcing_GCM2SCM = .false. 109 107 logical :: forcing_GCSSold = .false. 110 logical :: forcing_sandu = .false.111 logical :: forcing_astex = .false.112 logical :: forcing_fire = .false.113 108 integer :: type_ts_forcing ! 0 = SST constant; 1 = SST read from a file 114 109 ! (cf read_tsurf1d.F) 115 110 116 111 !vertical advection computation 117 !real d_t_z(llm), d_q_z(llm)118 !real d_t_dyn_z(llm), d_q_dyn_z(llm)119 !real zz(llm)120 !real zfact112 real d_t_z(llm), d_q_z(llm) 113 real d_t_dyn_z(llm), d_q_dyn_z(llm) 114 real zz(llm) 115 real zfact 121 116 122 117 !flag forcings … … 135 130 real :: pzero=1.e5 136 131 real :: play (llm),zlay (llm),sig_s(llm),plev(llm+1) 137 real :: playd(llm),zlayd(llm) ,ap_amma(llm+1),bp_amma(llm+1),poub132 real :: playd(llm),zlayd(llm) 138 133 139 134 !--------------------------------------------------------------------- … … 143 138 integer :: iq 144 139 real :: phi(llm) 145 real :: teta(llm),tetal(llm),temp(llm),u(llm),v(llm),w(llm)146 140 real :: rlat_rad(1),rlon_rad(1) 141 real :: teta(llm),temp(llm),u(llm),v(llm) 147 142 real :: omega(llm+1),omega2(llm),rho(llm+1) 148 143 real :: ug(llm),vg(llm),fcoriolis … … 202 197 ! Fichiers et d'autres variables 203 198 !--------------------------------------------------------------------- 204 real ttt ,bow,q1199 real ttt 205 200 integer :: ierr,k,l,i,it=1,mxcalc 206 201 integer jjmp1 … … 258 253 ! initial profiles from RICO files 259 254 ! LS convergence imposed from RICO files 260 !forcing_type = 6 ==> forcing_amma = .true.261 ! initial profiles from AMMA nc file262 ! LS convergence, omega and surface fluxes imposed from AMMA file263 255 !forcing_type = 40 ==> forcing_GCSSold = .true. 264 256 ! initial profile from GCSS file 265 257 ! LS convergence imposed from GCSS file 266 !forcing_type = 59 ==> forcing_sandu = .true.267 ! initial profiles from sanduref file: see prof.inp.001268 ! SST varying with time and divergence constante: see ifa_sanduref.txt file269 ! Radiation has to be computed interactively270 !forcing_type = 60 ==> forcing_astex = .true.271 ! initial profiles from file: see prof.inp.001272 ! SST,divergence,ug,vg,ufa,vfa varying with time : see ifa_astex.txt file273 ! Radiation has to be computed interactively274 258 !forcing_type = 61 ==> forcing_armcu = .true. 275 ! initial profiles from file: see prof.inp.001 276 ! sensible and latent heat flux imposed: see ifa_arm_cu_1.txt 277 ! large scale advective forcing & radiative tendencies applied below 1000m: see ifa_arm_cu_2.txt 278 ! use geostrophic wind ug=10m/s vg=0m/s. Duration of the case 53100s 279 ! Radiation to be switched off 259 ! initial profile from arm_cu file 260 ! LS convergence imposed from arm_cu file 280 261 ! 281 262 if (forcing_type .eq.0) THEN … … 291 272 elseif (forcing_type .eq.5) THEN 292 273 forcing_rico = .true. 293 elseif (forcing_type .eq.6) THEN294 forcing_amma = .true.295 274 elseif (forcing_type .eq.40) THEN 296 275 forcing_GCSSold = .true. 297 elseif (forcing_type .eq.59) THEN298 forcing_sandu = .true.299 elseif (forcing_type .eq.60) THEN300 forcing_astex = .true.301 276 elseif (forcing_type .eq.61) THEN 302 277 forcing_armcu = .true. … … 304 279 else 305 280 write (*,*) 'ERROR : unknown forcing_type ', forcing_type 306 stop 'Forcing_type should be 0,1,2,3 ,4,5,6 or 40,59,60,61'281 stop 'Forcing_type should be 0,1,2,3 or 40' 307 282 ENDIF 308 283 print*,"forcing type=",forcing_type … … 314 289 315 290 type_ts_forcing = 0 316 if (forcing_toga .or. forcing_sandu .or. forcing_astex) 317 : type_ts_forcing = 1 291 if (forcing_toga) type_ts_forcing = 1 318 292 319 293 !--------------------------------------------------------------------- … … 354 328 c Special case for arm_cu which lasts less than one day : 53100s !! (MPL 20111026) 355 329 IF(forcing_type .EQ. 61) fnday=53100./86400. 356 c Special case for amma which lasts less than one day : 64800s !! (MPL 20120216)357 IF(forcing_type .EQ. 6) fnday=64800./86400.358 330 annee_ref = anneeref 359 331 mois = 1 … … 365 337 day_ini = day 366 338 day_end = day_ini + nday 367 368 IF (forcing_type .eq.2) THEN369 339 ! Convert the initial date of Toga-Coare to Julian day 370 340 call ymds2ju 371 341 $ (year_ini_toga,mth_ini_toga,day_ini_toga,heure,day_ju_ini_toga) 372 342 373 ELSEIF (forcing_type .eq.4) THEN374 343 ! Convert the initial date of TWPICE to Julian day 375 344 call ymds2ju 376 345 $ (year_ini_twpi,mth_ini_twpi,day_ini_twpi,heure_ini_twpi 377 346 $ ,day_ju_ini_twpi) 378 ELSEIF (forcing_type .eq.6) THEN 379 ! Convert the initial date of AMMA to Julian day 380 call ymds2ju 381 $ (year_ini_amma,mth_ini_amma,day_ini_amma,heure_ini_amma 382 $ ,day_ju_ini_amma) 383 384 ELSEIF (forcing_type .eq.59) THEN 385 ! Convert the initial date of Sandu case to Julian day 386 call ymds2ju 387 $ (year_ini_sandu,mth_ini_sandu,day_ini_sandu, 388 $ time_ini*3600.,day_ju_ini_sandu) 389 390 ELSEIF (forcing_type .eq.60) THEN 391 ! Convert the initial date of Astex case to Julian day 392 call ymds2ju 393 $ (year_ini_astex,mth_ini_astex,day_ini_astex, 394 $ time_ini*3600.,day_ju_ini_astex) 395 396 ELSEIF (forcing_type .eq.61) THEN 397 398 ! Convert the initial date of Arm_cu case to Julian day 347 348 ! Convert the initial date of Arm_cu to Julian day 399 349 call ymds2ju 400 350 $ (year_ini_armcu,mth_ini_armcu,day_ini_armcu,heure_ini_armcu 401 351 $ ,day_ju_ini_armcu) 402 ENDIF403 352 404 353 daytime = day + time_ini/24. ! 1st day and initial time of the simulation … … 487 436 ccc zlay=-rd*300.*log(play/psurf)/rg ! moved after reading profiles 488 437 489 IF (forcing_type .eq. 59) THEN490 ! pour forcing_sandu, on cherche l'indice le plus proche de 700hpa#3000m491 438 write(*,*) '***********************' 492 439 do l = 1, llm 493 440 write(*,*) 'l,play(l),presnivs(l): ',l,play(l),presnivs(l) 494 if (trouve_700 .and. play(l).le.70000) then495 llm700=l496 print *,'llm700,play=',llm700,play(l)/100.497 trouve_700= .false.498 endif499 441 enddo 500 442 write(*,*) '***********************' 501 ENDIF502 443 503 444 c … … 575 516 agesno = xagesno 576 517 tsoil(:,:,:)=tsurf 577 !------ AMMA 2e run avec modele sol et rayonnement actif (MPL 23052012)578 ! tsoil(1,1,1)=299.18579 ! tsoil(1,2,1)=300.08580 ! tsoil(1,3,1)=301.88581 ! tsoil(1,4,1)=305.48582 ! tsoil(1,5,1)=308.00583 ! tsoil(1,6,1)=308.00584 ! tsoil(1,7,1)=308.00585 ! tsoil(1,8,1)=308.00586 ! tsoil(1,9,1)=308.00587 ! tsoil(1,10,1)=308.00588 ! tsoil(1,11,1)=308.00589 !-----------------------------------------------------------------------590 518 call pbl_surface_init(qsol, fder, snsrf, qsurfsrf, 591 519 & evap, frugs, agesno, tsoil) … … 821 749 endif 822 750 823 if (forcing_toga .or. forcing_GCSSold .or. forcing_twpice 824 : .or.forcing_amma) then 751 if (forcing_toga .or. forcing_GCSSold .or. forcing_twpice) then 825 752 fcoriolis=0.0 ; ug=0. ; vg=0. 826 753 endif … … 887 814 888 815 teta=temp*(pzero/play)**rkappa 889 !890 !---------------------------------------------------------------------891 ! Nudge soil temperature if requested892 !---------------------------------------------------------------------893 894 IF (nudge_tsoil) THEN895 ftsoil(1,isoil_nudge,:) = ftsoil(1,isoil_nudge,:)896 . -timestep/tau_soil_nudge*(ftsoil(1,isoil_nudge,:)-Tsoil_nudge)897 ENDIF898 816 899 817 !---------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.