Changeset 1999 for LMDZ5/branches/testing/libf/phy1d/lmdz1d.F
- Timestamp:
- Mar 20, 2014, 10:57:19 AM (10 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 1922-1927,1929-1933,1937-1939,1943-1997
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/libf/phy1d/lmdz1d.F
r1921 r1999 81 81 integer :: an 82 82 83 !84 real :: paire = 1. ! aire de la maille85 !** common /flux_arp/fsens,flat,ok_flux_surf86 87 83 !--------------------------------------------------------------------- 88 84 ! Declarations related to forcing and initial profiles … … 90 86 91 87 integer :: kmax = llm 92 integer nlev_max,llm70093 parameter (nlev_max = 1000)94 real timestep, frac , timeit88 integer llm700,nq1,nq2 89 INTEGER, PARAMETER :: nlev_max=1000, nqmx=1000 90 real timestep, frac 95 91 real height(nlev_max),tttprof(nlev_max),qtprof(nlev_max), 96 92 . uprof(nlev_max),vprof(nlev_max),e12prof(nlev_max), 97 93 . ugprof(nlev_max),vgprof(nlev_max),wfls(nlev_max), 98 94 . dqtdxls(nlev_max),dqtdyls(nlev_max), 99 . dqtdtls(nlev_max),thlpcar(nlev_max) 100 101 real :: fff 95 . dqtdtls(nlev_max),thlpcar(nlev_max), 96 . qprof(nlev_max,nqmx) 97 102 98 c integer :: forcing_type 103 99 logical :: forcing_les = .false. … … 143 139 !--------------------------------------------------------------------- 144 140 145 integer :: iq146 141 real :: phi(llm) 147 142 real :: teta(llm),tetal(llm),temp(llm),u(llm),v(llm),w(llm) … … 151 146 real :: sfdt, cfdt 152 147 real :: du_phys(llm),dv_phys(llm),dt_phys(llm) 153 real :: du_dyn(llm),dv_dyn(llm),dt_dyn(llm) 154 real :: dt_cooling(llm),d_t_cool(llm),d_th_adv(llm) 155 real :: dq_cooling(llm),d_q_cool(llm) 156 real :: tmpvar(llm) 148 real :: dt_dyn(llm) 149 real :: dt_cooling(llm),d_th_adv(llm) 157 150 real :: alpha 151 real :: ttt 158 152 159 153 REAL, ALLOCATABLE, DIMENSION(:,:):: q … … 161 155 REAL, ALLOCATABLE, DIMENSION(:,:):: dq_dyn 162 156 REAL, ALLOCATABLE, DIMENSION(:,:):: d_q_adv 157 ! REAL, ALLOCATABLE, DIMENSION(:):: d_th_adv 163 158 164 159 !--------------------------------------------------------------------- … … 204 199 ! Fichiers et d'autres variables 205 200 !--------------------------------------------------------------------- 206 real ttt,bow,q1 207 integer :: ierr,k,l,i,it=1,mxcalc 201 integer :: k,l,i,it=1,mxcalc 208 202 integer jjmp1 209 203 parameter (jjmp1=jjm+1-1/jjm) … … 230 224 !--------------------------------------------------------------------- 231 225 cAl1 232 call conf_unicol (99)226 call conf_unicol 233 227 cAl1 moves this gcssold var from common fcg_gcssold to 234 228 Turb_fcg_gcssold = xTurb_fcg_gcssold … … 357 351 c Le numero du jour est dans "day". L heure est traitee separement. 358 352 c La date complete est dans "daytime" (l'unite est le jour). 359 fnday=nday 353 if (nday>0) then 354 fnday=nday 355 else 356 fnday=-nday/float(day_step) 357 endif 358 360 359 c Special case for arm_cu which lasts less than one day : 53100s !! (MPL 20111026) 361 360 IF(forcing_type .EQ. 61) fnday=53100./86400. … … 369 368 itau_phy = 0 370 369 call ymds2ju(annee_ref,mois,day_ref,heure,day) 371 day_ini = day372 day_end = day_ini + nday370 day_ini = int(day) 371 day_end = day_ini + fnday 373 372 374 373 IF (forcing_type .eq.2) THEN … … 422 421 call infotrac_init 423 422 423 if (nqtot>nqmx) STOP'Augmenter nqmx dans lmdz1d.F' 424 424 allocate(q(llm,nqtot)) ; q(:,:)=0. 425 425 allocate(dq(llm,nqtot)) 426 426 allocate(dq_dyn(llm,nqtot)) 427 427 allocate(d_q_adv(llm,nqtot)) 428 ! allocate(d_th_adv(llm)) 428 429 429 430 c … … 463 464 !! mpl et jyg le 22/08/2012 : 464 465 !! pour que les cas a flux de surface imposes marchent 465 IF(.NOT.ok_flux_surf ) THEN466 IF(.NOT.ok_flux_surf.or.max(abs(wtsurf),abs(wqsurf))>0.) THEN 466 467 fsens=-wtsurf*rcpd*rho(1) 467 468 flat=-wqsurf*rlvtt*rho(1) 468 469 print *,'Flux: ok_flux wtsurf wqsurf',ok_flux_surf,wtsurf,wqsurf 469 470 ENDIF 471 print*,'Flux sol ',fsens,flat 470 472 !! ok_flux_surf=.false. 471 473 !! fsens=-wtsurf*rcpd*rho(1) … … 851 853 ! 852 854 du_age(1:mxcalc)= -2.*sfdt/timestep* 853 :(sfdt*(u(1:mxcalc)-ug(1:mxcalc)) -854 :cfdt*(v(1:mxcalc)-vg(1:mxcalc)) )855 s (sfdt*(u(1:mxcalc)-ug(1:mxcalc)) - 856 s cfdt*(v(1:mxcalc)-vg(1:mxcalc)) ) 855 857 !! : fcoriolis*(v(1:mxcalc)-vg(1:mxcalc)) 856 858 ! 857 859 dv_age(1:mxcalc)= -2.*sfdt/timestep* 858 :(cfdt*(u(1:mxcalc)-ug(1:mxcalc)) +859 :sfdt*(v(1:mxcalc)-vg(1:mxcalc)) )860 s (cfdt*(u(1:mxcalc)-ug(1:mxcalc)) + 861 s sfdt*(v(1:mxcalc)-vg(1:mxcalc)) ) 860 862 !! : -fcoriolis*(u(1:mxcalc)-ug(1:mxcalc)) 861 863 ! … … 870 872 !! Increment state variables 871 873 !!!!!!!!!!!!!!!!!!!!!!!!!!!!! 874 ! pour les cas sandu et astex, on reclacule u,v,q,temp et teta dans 1D_nudge_sandu_astex.h 875 ! au dessus de 700hpa, on relaxe vers les profils initiaux 876 if (forcing_sandu .OR. forcing_astex) then 877 #include "1D_nudge_sandu_astex.h" 878 else 872 879 u(1:mxcalc)=u(1:mxcalc) + timestep*( 873 :du_phys(1:mxcalc)874 :+du_age(1:mxcalc) )880 s du_phys(1:mxcalc) 881 s +du_age(1:mxcalc) ) 875 882 v(1:mxcalc)=v(1:mxcalc) + timestep*( 876 :dv_phys(1:mxcalc)877 :+dv_age(1:mxcalc) )883 s dv_phys(1:mxcalc) 884 s +dv_age(1:mxcalc) ) 878 885 q(1:mxcalc,:)=q(1:mxcalc,:)+timestep*( 879 :dq(1:mxcalc,:)880 :+d_q_adv(1:mxcalc,:) )886 s dq(1:mxcalc,:) 887 s +d_q_adv(1:mxcalc,:) ) 881 888 882 889 if (prt_level.ge.1) then … … 893 900 . +d_th_adv(1:mxcalc) 894 901 . +dt_cooling(1:mxcalc)) ! Taux de chauffage ou refroid. 902 903 endif ! forcing_sandu or forcing_astex 895 904 896 905 teta=temp*(pzero/play)**rkappa
Note: See TracChangeset
for help on using the changeset viewer.