- Timestamp:
- Mar 18, 2021, 6:18:21 PM (4 years ago)
- Location:
- trunk/LMDZ.GENERIC
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.GENERIC/README
r2480 r2482 1620 1620 if they are provided (i.e. if flag diagdtau is .true.) 1621 1621 1622 == 06/03/202 0== YJ1622 == 06/03/2021 == YJ 1623 1623 ModernTrac bug fix in infotrac from commit r2436 24/11/2020 1624 1624 Missing log message, see previous commit r2468 1625 1625 1626 == 08/03/202 0== YJ1626 == 08/03/2021 == YJ 1627 1627 global1d and szangle for 1D simulation moved from callcorrk to callkeys 1628 1628 to defined a consistent 1D sza in physiq_mod used also in chemistry … … 1631 1631 == 16/03/2021 == AB 1632 1632 Commit the last changes in the thermal plume model which was waiting for one year. 1633 1634 == 18/03/2021 == YJ 1635 Clean convadj.F90 specific CO2 Mars convection 1636 Add alb_ocean used in hydrol.F90 as option in .def files 1637 Add kmixmin 1D minimum eddy mix coeff for turbdiff as rcm1d.def option 1638 and comment lines to help coding specific eddy mix coeff in turbdiff with Earth example -
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.