Changeset 1780 for LMDZ5/trunk/libf/phy1d/lmdz1d.F
- Timestamp:
- Jul 5, 2013, 10:38:13 AM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phy1d/lmdz1d.F
r1763 r1780 6 6 use dimphy 7 7 use surface_data, only : type_ocean,ok_veget 8 use pbl_surface_mod, only : pbl_surface_init, pbl_surface_final 8 use pbl_surface_mod, only : ftsoil, pbl_surface_init, 9 $ pbl_surface_final 9 10 use fonte_neige_mod, only : fonte_neige_init, fonte_neige_final 10 11 … … 25 26 #include "compar1d.h" 26 27 #include "flux_arp.h" 28 #include "tsoilnudge.h" 27 29 #include "fcg_gcssold.h" 28 30 !!!#include "fbforcing.h" … … 86 88 87 89 integer :: kmax = llm 88 integer nlev_max 89 parameter (nlev_max = 100 )90 integer nlev_max,llm700 91 parameter (nlev_max = 1000) 90 92 real timestep, frac, timeit 91 93 real height(nlev_max),tttprof(nlev_max),qtprof(nlev_max), … … 98 100 c integer :: forcing_type 99 101 logical :: forcing_les = .false. 100 logical :: forcing_armcu = .false.102 logical :: forcing_armcu = .false. 101 103 logical :: forcing_rico = .false. 102 104 logical :: forcing_radconv = .false. 103 105 logical :: forcing_toga = .false. 104 106 logical :: forcing_twpice = .false. 107 logical :: forcing_amma = .false. 105 108 logical :: forcing_GCM2SCM = .false. 106 109 logical :: forcing_GCSSold = .false. 110 logical :: forcing_sandu = .false. 111 logical :: forcing_astex = .false. 112 logical :: forcing_fire = .false. 107 113 integer :: type_ts_forcing ! 0 = SST constant; 1 = SST read from a file 108 114 ! (cf read_tsurf1d.F) 109 115 110 116 !vertical advection computation 111 112 113 114 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 zfact 115 121 116 122 !flag forcings … … 129 135 real :: pzero=1.e5 130 136 real :: play (llm),zlay (llm),sig_s(llm),plev(llm+1) 131 real :: playd(llm),zlayd(llm) 137 real :: playd(llm),zlayd(llm),ap_amma(llm+1),bp_amma(llm+1),poub 132 138 133 139 !--------------------------------------------------------------------- … … 137 143 integer :: iq 138 144 real :: phi(llm) 145 real :: teta(llm),tetal(llm),temp(llm),u(llm),v(llm),w(llm) 139 146 real :: rlat_rad(1),rlon_rad(1) 140 real :: teta(llm),temp(llm),u(llm),v(llm)141 147 real :: omega(llm+1),omega2(llm),rho(llm+1) 142 148 real :: ug(llm),vg(llm),fcoriolis … … 196 202 ! Fichiers et d'autres variables 197 203 !--------------------------------------------------------------------- 198 real ttt 204 real ttt,bow,q1 199 205 integer :: ierr,k,l,i,it=1,mxcalc 200 206 integer jjmp1 … … 252 258 ! initial profiles from RICO files 253 259 ! LS convergence imposed from RICO files 260 !forcing_type = 6 ==> forcing_amma = .true. 261 ! initial profiles from AMMA nc file 262 ! LS convergence, omega and surface fluxes imposed from AMMA file 254 263 !forcing_type = 40 ==> forcing_GCSSold = .true. 255 264 ! initial profile from GCSS file 256 265 ! LS convergence imposed from GCSS file 266 !forcing_type = 59 ==> forcing_sandu = .true. 267 ! initial profiles from sanduref file: see prof.inp.001 268 ! SST varying with time and divergence constante: see ifa_sanduref.txt file 269 ! Radiation has to be computed interactively 270 !forcing_type = 60 ==> forcing_astex = .true. 271 ! initial profiles from file: see prof.inp.001 272 ! SST,divergence,ug,vg,ufa,vfa varying with time : see ifa_astex.txt file 273 ! Radiation has to be computed interactively 257 274 !forcing_type = 61 ==> forcing_armcu = .true. 258 ! initial profile from arm_cu file 259 ! LS convergence imposed from arm_cu file 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 260 280 ! 261 281 if (forcing_type .eq.0) THEN … … 271 291 elseif (forcing_type .eq.5) THEN 272 292 forcing_rico = .true. 293 elseif (forcing_type .eq.6) THEN 294 forcing_amma = .true. 273 295 elseif (forcing_type .eq.40) THEN 274 296 forcing_GCSSold = .true. 297 elseif (forcing_type .eq.59) THEN 298 forcing_sandu = .true. 299 elseif (forcing_type .eq.60) THEN 300 forcing_astex = .true. 275 301 elseif (forcing_type .eq.61) THEN 276 302 forcing_armcu = .true. … … 278 304 else 279 305 write (*,*) 'ERROR : unknown forcing_type ', forcing_type 280 stop 'Forcing_type should be 0,1,2,3 or 40'306 stop 'Forcing_type should be 0,1,2,3,4,5,6 or 40,59,60,61' 281 307 ENDIF 282 308 print*,"forcing type=",forcing_type … … 288 314 289 315 type_ts_forcing = 0 290 if (forcing_toga) type_ts_forcing = 1 316 if (forcing_toga .or. forcing_sandu .or. forcing_astex) 317 : type_ts_forcing = 1 291 318 292 319 !--------------------------------------------------------------------- … … 327 354 c Special case for arm_cu which lasts less than one day : 53100s !! (MPL 20111026) 328 355 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. 329 358 annee_ref = anneeref 330 359 mois = 1 … … 336 365 day_ini = day 337 366 day_end = day_ini + nday 367 368 IF (forcing_type .eq.2) THEN 338 369 ! Convert the initial date of Toga-Coare to Julian day 339 370 call ymds2ju 340 371 $ (year_ini_toga,mth_ini_toga,day_ini_toga,heure,day_ju_ini_toga) 341 372 373 ELSEIF (forcing_type .eq.4) THEN 342 374 ! Convert the initial date of TWPICE to Julian day 343 375 call ymds2ju 344 376 $ (year_ini_twpi,mth_ini_twpi,day_ini_twpi,heure_ini_twpi 345 377 $ ,day_ju_ini_twpi) 346 347 ! Convert the initial date of Arm_cu to Julian day 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 348 399 call ymds2ju 349 400 $ (year_ini_armcu,mth_ini_armcu,day_ini_armcu,heure_ini_armcu 350 401 $ ,day_ju_ini_armcu) 402 ENDIF 351 403 352 404 daytime = day + time_ini/24. ! 1st day and initial time of the simulation … … 435 487 ccc zlay=-rd*300.*log(play/psurf)/rg ! moved after reading profiles 436 488 489 IF (forcing_type .eq. 59) THEN 490 ! pour forcing_sandu, on cherche l'indice le plus proche de 700hpa#3000m 437 491 write(*,*) '***********************' 438 492 do l = 1, llm 439 493 write(*,*) 'l,play(l),presnivs(l): ',l,play(l),presnivs(l) 494 if (trouve_700 .and. play(l).le.70000) then 495 llm700=l 496 print *,'llm700,play=',llm700,play(l)/100. 497 trouve_700= .false. 498 endif 440 499 enddo 441 500 write(*,*) '***********************' 501 ENDIF 442 502 443 503 c … … 515 575 agesno = xagesno 516 576 tsoil(:,:,:)=tsurf 577 !------ AMMA 2e run avec modele sol et rayonnement actif (MPL 23052012) 578 ! tsoil(1,1,1)=299.18 579 ! tsoil(1,2,1)=300.08 580 ! tsoil(1,3,1)=301.88 581 ! tsoil(1,4,1)=305.48 582 ! tsoil(1,5,1)=308.00 583 ! tsoil(1,6,1)=308.00 584 ! tsoil(1,7,1)=308.00 585 ! tsoil(1,8,1)=308.00 586 ! tsoil(1,9,1)=308.00 587 ! tsoil(1,10,1)=308.00 588 ! tsoil(1,11,1)=308.00 589 !----------------------------------------------------------------------- 517 590 call pbl_surface_init(qsol, fder, snsrf, qsurfsrf, 518 591 & evap, frugs, agesno, tsoil) … … 748 821 endif 749 822 750 if (forcing_toga .or. forcing_GCSSold .or. forcing_twpice) then 823 if (forcing_toga .or. forcing_GCSSold .or. forcing_twpice 824 : .or.forcing_amma) then 751 825 fcoriolis=0.0 ; ug=0. ; vg=0. 752 826 endif … … 813 887 814 888 teta=temp*(pzero/play)**rkappa 889 ! 890 !--------------------------------------------------------------------- 891 ! Nudge soil temperature if requested 892 !--------------------------------------------------------------------- 893 894 IF (nudge_tsoil) THEN 895 ftsoil(1,isoil_nudge,:) = ftsoil(1,isoil_nudge,:) 896 . -timestep/tau_soil_nudge*(ftsoil(1,isoil_nudge,:)-Tsoil_nudge) 897 ENDIF 815 898 816 899 !---------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.