Changeset 2482 for trunk/LMDZ.GENERIC/libf
- Timestamp:
- Mar 18, 2021, 6:18:21 PM (4 years ago)
- Location:
- trunk/LMDZ.GENERIC/libf/phystd
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.GENERIC/libf/phystd/callkeys_mod.F90
r2470 r2482 125 125 real,save :: pceil 126 126 real,save :: albedosnow 127 real,save :: alb_ocean 127 128 real,save :: albedoco2ice 128 129 real,save :: maxicethick 129 !$OMP THREADPRIVATE(co2supsat,pceil,albedosnow,alb edoco2ice,maxicethick)130 !$OMP THREADPRIVATE(co2supsat,pceil,albedosnow,alb_ocean,albedoco2ice,maxicethick) 130 131 real,save :: Tsaldiff 131 132 real,save :: tau_relax … … 146 147 real,save :: noseason_day 147 148 !$OMP THREADPRIVATE(noseason_day) 149 real,save :: kmixmin 150 !$OMP THREADPRIVATE(kmixmin) 148 151 149 152 logical,save :: iscallphys=.false.!existence of callphys.def -
trunk/LMDZ.GENERIC/libf/phystd/convadj.F
r2232 r2482 61 61 62 62 ! Tracers 63 INTEGER iq,ico2 64 save ico2 65 !$OMP THREADPRIVATE(ico2) 63 INTEGER iq 66 64 REAL zq(ngrid,nlay,nq), zq2(ngrid,nlay,nq) 67 65 REAL zqm(nq),zqco2m 68 real m_co2, m_noco2, A , B 69 save A, B 70 !$OMP THREADPRIVATE(A,B) 71 72 real mtot1, mtot2 , mm1, mm2 73 integer l1ref, l2ref 74 LOGICAL vtest(ngrid),down,firstcall 75 save firstcall 76 data firstcall/.true./ 77 !$OMP THREADPRIVATE(firstcall) 66 67 LOGICAL vtest(ngrid),down 78 68 79 69 ! for conservation test … … 85 75 ! Initialisation 86 76 ! -------------- 87 88 IF (firstcall) THEN89 ico2=090 if (tracer) then91 ! Prepare Special treatment if one of the tracers is CO2 gas92 do iq=1,nq93 if (noms(iq).eq."co2") then94 print*,'dont go there'95 ! stop96 ico2=iq97 m_co2 = 44.01E-3 ! CO2 molecular mass (kg/mol)98 m_noco2 = 33.37E-3 ! Non condensible mol mass (kg/mol)99 ! Compute A and B coefficient use to compute100 ! mean molecular mass Mair defined by101 ! 1/Mair = q(ico2)/m_co2 + (1-q(ico2))/m_noco2102 ! 1/Mair = A*q(ico2) + B103 A =(1/m_co2 - 1/m_noco2)104 B=1/m_noco2105 end if106 enddo107 endif108 firstcall=.false.109 ENDIF ! of IF (firstcall)110 77 111 78 DO l=1,nlay … … 141 108 ENDDO 142 109 143 if (ico2.ne.0) then 144 ! Special case if one of the tracers is CO2 gas 145 DO l=1,nlay 146 DO ig=1,ngrid 147 zhc(ig,l) = zh2(ig,l)*(A*zq2(ig,l,ico2)+B) 148 ENDDO 149 ENDDO 150 else 151 CALL scopy(ngrid*nlay,zh2,1,zhc,1) 152 end if 110 CALL scopy(ngrid*nlay,zh2,1,zhc,1) 153 111 154 112 ! Find out which grid points are convectively unstable … … 204 162 zdsm = dsig(l2) 205 163 zhm = zh2(i, l2) 206 if(ico2.ne.0) zqco2m = zq2(i,l2,ico2)207 164 208 165 ! Test loop downwards … … 212 169 zdsm = zdsm + dsig(l) 213 170 zhm = zhm + sdsig(l) * (zh2(i, l) - zhm) / zsm 214 if(ico2.ne.0) then 215 zqco2m = 216 & zqco2m + dsig(l) * (zq2(i,l,ico2) - zqco2m) / zdsm 217 zhmc = zhm*(A*zqco2m+B) 218 else 219 zhmc = zhm 220 end if 171 zhmc = zhm 221 172 222 173 ! do we have to extend the column downwards? … … 261 212 end do 262 213 DO l = l1, l2 263 if(ico2.ne.0) then 264 zalpha=zalpha+ 265 & ABS(zhc(i,l)/(A+B*zqco2m) -zhm)*dsig(l) 266 else 267 zalpha=zalpha+ABS(zh2(i,l)-zhm)*dsig(l) 268 endif 214 zalpha=zalpha+ABS(zh2(i,l)-zhm)*dsig(l) 269 215 zh2(i, l) = zhm 270 216 ! modifs by RDW !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 307 253 end do 308 254 ENDDO 309 if (ico2.ne.0) then310 DO l=l1, l2311 zhc(i,l) = zh2(i,l)*(A*zq2(i,l,ico2)+B)312 ENDDO313 end if314 255 315 256 -
trunk/LMDZ.GENERIC/libf/phystd/hydrol.F90
r1543 r2482 13 13 USE tracer_h 14 14 use slab_ice_h 15 use callkeys_mod, only: albedosnow,alb edoco2ice,ok_slab_ocean,Tsaldiff,maxicethick,co2cond15 use callkeys_mod, only: albedosnow,alb_ocean,albedoco2ice,ok_slab_ocean,Tsaldiff,maxicethick,co2cond 16 16 use radinc_h, only : L_NSPECTV 17 17 … … 190 190 ! else 191 191 do nw=1,L_NSPECTV 192 albedo(ig,nw) = alb_ocean ! For now, alb_ocean is defined in slab_ice_h.F90. Later we could introduce spectral dependency for alb_ocean.192 albedo(ig,nw) = alb_ocean ! For now, alb_ocean is defined in inifis_mod.F90. Later we could introduce spectral dependency for alb_ocean. 193 193 enddo 194 194 ! end if -
trunk/LMDZ.GENERIC/libf/phystd/inifis_mod.F90
r2470 r2482 874 874 write(*,*) " albedosnow = ",albedosnow 875 875 876 write(*,*) "Ocean albedo ?" 877 alb_ocean=0.07 ! default value 878 call getin_p("alb_ocean",alb_ocean) 879 write(*,*) " alb_ocean = ",alb_ocean 880 876 881 write(*,*) "CO2 ice albedo ?" 877 882 albedoco2ice=0.5 ! default value … … 888 893 call getin_p("Tsaldiff",Tsaldiff) 889 894 write(*,*) " Tsaldiff = ",Tsaldiff 895 896 write(*,*) "Minimum eddy mix coeff in 1D ?" 897 kmixmin=1.0e-2 ! default value 898 call getin_p("kmixmin",kmixmin) 899 write(*,*) " kmixmin = ",kmixmin 890 900 891 901 write(*,*) "Does user want to force cpp and mugaz?" -
trunk/LMDZ.GENERIC/libf/phystd/slab_ice_h.F90
r1298 r2482 12 12 real, parameter :: alb_ice_min=0.2 13 13 real, parameter :: alb_ice_max=0.65 14 real, parameter :: alb_ocean=0.0715 14 real, parameter :: ice_frac_min=0.0001 16 15 real, parameter :: ice_frac_max=1.!0.9999 -
trunk/LMDZ.GENERIC/libf/phystd/turbdiff_mod.F90
r2427 r2482 18 18 use tracer_h, only: igcm_h2o_vap, igcm_h2o_ice 19 19 use comcstfi_mod, only: rcp, g, r, cpp 20 use callkeys_mod, only: water,tracer,nosurf 20 use callkeys_mod, only: water,tracer,nosurf,kmixmin 21 21 use turb_mod, only : ustar 22 22 #ifdef MESOSCALE … … 107 107 REAL zcq0(ngrid),zdq0(ngrid) 108 108 REAL zx_alf1(ngrid),zx_alf2(ngrid) 109 ! 1D eddy diffusion coefficient 110 REAL kzz_eddy(nlay) 111 REAL pmin_kzz 109 112 110 113 LOGICAL,SAVE :: firstcall=.true. … … 119 122 REAL zdmassevap(ngrid) 120 123 REAL rho(ngrid) ! near-surface air density 121 REAL kmixmin122 124 123 125 ! Variables added for implicit latent heat inclusion … … 250 252 ! R. Wordsworth & F. Forget (2010) 251 253 if ((ngrid.eq.1)) then 252 kmixmin = 1.0e-2 ! minimum eddy mix coeff in 1D 254 ! kmixmin minimum eddy mix coeff in 1D 255 ! set up in inifis_mod.F90 - default value 1.0e-2 253 256 do ilev=1,nlay 257 258 ! Here to code your specific eddy mix coeff in 1D 259 ! Earth example that can be uncommented below 260 ! ------------------------------------------------- 261 ! *====== Earth kzz from Zahnle et al. 2006 ======* 262 ! ------------------------------------------------- 263 ! if(pzlev(1,ilev).le.11.0e3) then 264 ! kzz_eddy(ilev)=10.0 265 ! pmin_kzz=pplev(1,ilev)*exp((pzlev(1,ilev)-11.0e3)*g/(r*zt(1,ilev))) 266 ! else 267 ! kzz_eddy(ilev)=0.1*(pplev(1,ilev)/pmin_kzz)**(-0.5) 268 ! kzz_eddy(ilev)=min(kzz_eddy(ilev),100.0) 269 ! endif 270 ! do ig=1,ngrid 271 ! zkh(ig,ilev) = max(kzz_eddy(ilev),zkh(ig,ilev)) 272 ! zkv(ig,ilev) = max(kzz_eddy(ilev),zkv(ig,ilev)) 273 ! end do 274 254 275 do ig=1,ngrid 255 276 zkh(ig,ilev) = max(kmixmin,zkh(ig,ilev))
Note: See TracChangeset
for help on using the changeset viewer.