Changeset 2135
- Timestamp:
- May 3, 2019, 1:10:27 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 1 deleted
- 13 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.COMMON/libf/dyn3d/conf_gcm.F90
r2126 r2135 17 17 output_grads_dyn, periodav, planet_type, & 18 18 raz_date, resetvarc, starttime, timestart, & 19 ecritstart, force_conserv_tracer19 ecritstart, cpofT,force_conserv_tracer 20 20 USE infotrac, ONLY : type_trac 21 21 use assert_m, only: assert … … 476 476 iphysiq = 5 477 477 CALL getin('iphysiq', iphysiq) 478 479 !Config Key = cpofT 480 !Config Desc = dependence of Cp on T 481 !Config Def = False 482 !Config Help = dependence of Cp on T (true or false) 483 cpofT = .False. 484 if (planet_type.eq."venus") then 485 cpofT = .True. 486 endif 487 CALL getin('cpofT', cpofT) 478 488 479 489 !Config Key = iflag_trac … … 952 962 write(lunout,*)' iflag_phys = ', iflag_phys 953 963 write(lunout,*)' iphysiq = ', iphysiq 964 write(lunout,*)' cpofT = ', cpofT 954 965 write(lunout,*)' iflag_trac = ', iflag_trac 955 966 write(lunout,*)' iapp_tracvl = ', iapp_tracvl -
trunk/LMDZ.COMMON/libf/dyn3d_common/control_mod.F90
r2126 r2135 29 29 integer,save :: ip_ebil_dyn 30 30 logical,save :: offline 31 logical,save :: cpofT 31 32 logical,save :: force_conserv_tracer ! enforce conservation of tracer mass 32 33 character(len=4),save :: config_inca -
trunk/LMDZ.COMMON/libf/dyn3d_common/cpdet_mod.F90
r1659 r2135 21 21 SUBROUTINE ini_cpdet 22 22 23 USE control_mod, ONLY: planet_type23 USE control_mod, ONLY: cpofT 24 24 USE comconst_mod, ONLY: nu_venus,t0_venus 25 25 IMPLICIT none … … 28 28 !====================================================================== 29 29 30 if ( planet_type.eq."venus") then30 if (cpofT) then 31 31 nu_venus=0.35 32 32 t0_venus=460. … … 44 44 FUNCTION cpdet(t) 45 45 46 USE control_mod, ONLY: planet_type46 USE control_mod, ONLY: cpofT 47 47 USE comconst_mod, ONLY: cpp,t0_venus,nu_venus 48 48 IMPLICIT none … … 53 53 real cpdet 54 54 55 if ( planet_type.eq."venus") then55 if (cpofT) then 56 56 cpdet = cpp*(t/t0_venus)**nu_venus 57 57 else … … 75 75 !====================================================================== 76 76 77 USE control_mod, ONLY: planet_type77 USE control_mod, ONLY: cpofT 78 78 USE comconst_mod, ONLY: cpp,t0_venus,nu_venus 79 79 … … 107 107 !---------------------- 108 108 109 if ( planet_type.eq."venus") then109 if (cpofT) then 110 110 yteta = yt**nu_venus & 111 111 & - nu_venus * t0_venus**nu_venus * log(ypk/cpp) … … 136 136 !====================================================================== 137 137 138 USE control_mod, ONLY: planet_type138 USE control_mod, ONLY: cpofT 139 139 USE comconst_mod, ONLY: cpp,nu_venus,t0_venus 140 140 … … 168 168 !---------------------- 169 169 170 if ( planet_type.eq."venus") then170 if (cpofT) then 171 171 172 172 !---------------------- … … 193 193 SUBROUTINE t2tpot_p(nlon,nlev, yt, yteta, ypk) 194 194 ! Parallel version of t2tpot, for an arbitrary number of columns 195 USE control_mod, only : planet_type195 USE control_mod, only : cpofT 196 196 USE parallel_lmdz, only : OMP_CHUNK 197 197 USE comconst_mod, ONLY: cpp,nu_venus,t0_venus … … 231 231 !---------------------- 232 232 233 if ( planet_type.eq."venus") then233 if (cpofT) then 234 234 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 235 235 do l=1,nlev … … 250 250 enddo 251 251 !$OMP END DO 252 endif ! of if ( planet_type.eq."venus")252 endif ! of if (cpofT) 253 253 254 254 end subroutine t2tpot_p … … 261 261 ! (more efficient than multiple calls to t2tpot_p() with slices of data) 262 262 USE parallel_lmdz, only : jj_begin,jj_end,OMP_CHUNK 263 USE control_mod, only : planet_type263 USE control_mod, only : cpofT 264 264 USE comconst_mod, ONLY: cpp,nu_venus,t0_venus 265 265 … … 306 306 jje=jj_end 307 307 308 if ( planet_type.eq."venus") then308 if (cpofT) then 309 309 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 310 310 do l=1,llm … … 325 325 enddo 326 326 !$OMP END DO 327 endif ! of if ( planet_type.eq."venus")327 endif ! of if (cpofT) 328 328 329 329 end subroutine t2tpot_glo_p … … 334 334 SUBROUTINE tpot2t_p(nlon,nlev,yteta,yt,ypk) 335 335 ! Parallel version of tpot2t, for an arbitrary number of columns 336 USE control_mod, only : planet_type336 USE control_mod, only : cpofT 337 337 USE parallel_lmdz, only : OMP_CHUNK 338 338 USE comconst_mod, ONLY: cpp,nu_venus,t0_venus … … 373 373 !---------------------- 374 374 375 if ( planet_type.eq."venus") then375 if (cpofT) then 376 376 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 377 377 do l=1,nlev … … 391 391 enddo 392 392 !$OMP END DO 393 endif ! of if ( planet_type.eq."venus")393 endif ! of if (cpofT) 394 394 end subroutine tpot2t_p 395 395 … … 401 401 ! (more efficient than multiple calls to tpot2t_p() with slices of data) 402 402 USE parallel_lmdz, only : jj_begin,jj_end,OMP_CHUNK 403 USE control_mod, only : planet_type403 USE control_mod, only : cpofT 404 404 USE comconst_mod, ONLY: cpp,nu_venus,t0_venus 405 405 … … 446 446 jje=jj_end 447 447 448 if ( planet_type.eq."venus") then448 if (cpofT) then 449 449 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 450 450 do l=1,llm … … 465 465 enddo 466 466 !$OMP END DO 467 endif ! of if ( planet_type.eq."venus")467 endif ! of if (cpofT) 468 468 end subroutine tpot2t_glo_p 469 469 -
trunk/LMDZ.COMMON/libf/dyn3dpar/conf_gcm.F90
r2126 r2135 498 498 iphysiq = 5 499 499 CALL getin('iphysiq', iphysiq) 500 501 !Config Key = cpofT 502 !Config Desc = dependence of Cp on T 503 !Config Def = False 504 !Config Help = dependence of Cp on T (true or false) 505 cpofT = .False. 506 if (planet_type.eq."venus") then 507 cpofT = .True. 508 endif 509 CALL getin('cpofT', cpofT) 500 510 501 511 !Config Key = iflag_trac … … 990 1000 write(lunout,*)' iflag_phys = ', iflag_phys 991 1001 write(lunout,*)' iphysiq = ', iphysiq 1002 write(lunout,*)' cpofT = ', cpofT 992 1003 write(lunout,*)' iflag_trac = ', iflag_trac 993 1004 write(lunout,*)' iapp_tracvl = ', iapp_tracvl -
trunk/LMDZ.COMMON/libf/dynphy_lonlat/phyvenus/iniphysiq_mod.F90
r1682 r2135 76 76 77 77 ! Initialize some physical constants 78 call suphec 78 call suphec(pcpp) 79 79 80 80 ! Initialize cpdet_phy module -
trunk/LMDZ.COMMON/libf/dynphy_lonlat/phyvenus/newstart.F
r2049 r2135 1041 1041 c----------------------------------------------------------------------- 1042 1042 1043 IF ( notopo ) THEN 1044 ps=9.2e6 1045 ELSE 1043 1046 c Extrapolation la pression dans la nouvelle grille 1044 1047 call interp_horiz(psold,ps,imold,jmold,iim,jjm,1, 1045 1048 & rlonuold,rlatvold,rlonu,rlatv) 1049 ENDIF 1046 1050 1047 1051 c On assure la conservation de la masse de l'atmosphere -
trunk/LMDZ.VENUS/libf/phyvenus/clesphys.h
r1723 r2135 13 13 LOGICAL callnlte,callnirco2,callthermos 14 14 LOGICAL ok_cloud, ok_chem, reinit_trac, ok_sedim 15 LOGICAL cclmain 16 LOGICAL startphy_file 15 LOGICAL ok_clmain, physideal, startphy_file 17 16 INTEGER nbapp_rad, nbapp_chim, iflag_con, iflag_ajs 18 17 INTEGER lev_histins, lev_histday, lev_histmth 19 18 INTEGER tr_scheme, cl_scheme 20 19 INTEGER nircorr, nltemodel, solvarmod 20 INTEGER nb_mode 21 21 REAL ecriphy 22 22 REAL solaire … … 24 24 REAL ksta, inertie 25 25 REAL euveff, solarcondate 26 INTEGER nb_mode27 26 28 27 COMMON/clesphys_l/ cycle_diurne, soil_model, & 29 28 & ok_orodr, ok_orolf, ok_gw_nonoro, ok_kzmin, & 30 29 & callnlte,callnirco2,callthermos, & 31 & ok_cloud, ok_chem, reinit_trac, ok_sedim, startphy_file 30 & ok_cloud, ok_chem, reinit_trac, ok_sedim, & 31 & ok_clmain, physideal, startphy_file 32 32 33 33 COMMON/clesphys_i/ nbapp_rad, nbapp_chim, & 34 & iflag_con, iflag_ajs, cclmain,&34 & iflag_con, iflag_ajs, & 35 35 & lev_histins, lev_histday, lev_histmth, tr_scheme, & 36 36 & cl_scheme, nircorr, nltemodel, solvarmod, nb_mode -
trunk/LMDZ.VENUS/libf/phyvenus/conf_phys.F90
r1981 r2135 251 251 call getin('ok_kzmin',ok_kzmin) 252 252 253 cclmain = .true. 254 call getin('clmain',cclmain) 253 ok_clmain = .true. 254 call getin('ok_clmain',ok_clmain) 255 256 physideal = .false. 257 call getin('physideal',physideal) 255 258 256 259 !Config Key = iflag_ajs … … 507 510 write(lunout,*)' ok_kzmin = ',ok_kzmin 508 511 write(lunout,*)' inertie = ', inertie 509 write(lunout,*)' clmain = ',cclmain 512 write(lunout,*)' ok_clmain = ',ok_clmain 513 write(lunout,*)' physideal = ',physideal 510 514 write(lunout,*)' iflag_ajs = ', iflag_ajs 511 515 write(lunout,*)' lev_histins = ',lev_histins -
trunk/LMDZ.VENUS/libf/phyvenus/cpdet_phy_mod.F90
r1658 r2135 36 36 real cpdet 37 37 38 cpdet = cpp*(t/t0_venus)**nu_venus 38 if (t0_venus.ne.0.) then 39 cpdet = cpp*(t/t0_venus)**nu_venus 40 else 41 cpdet = cpp 42 endif 39 43 40 44 end function cpdet … … 81 85 !---------------------- 82 86 83 yteta = yt**nu_venus & 87 if (t0_venus.ne.0.) then 88 yteta = yt**nu_venus & 84 89 & - nu_venus * t0_venus**nu_venus * log(ypk/cpp) 85 yteta = yteta**(1./nu_venus) 90 yteta = yteta**(1./nu_venus) 91 else 92 yteta = yt * cpp/ypk 93 endif 94 86 95 !---------------------- 87 96 ! ATMOSPHERE PROFONDE … … 135 144 ! ATMOSPHERE PROFONDE 136 145 !---------------------- 146 if (t0_venus.ne.0.) then 137 147 yt = (yteta/ratio_mod)**nu_venus & 138 148 !---------------------- 139 149 + nu_venus * t0_venus**nu_venus * log(ypk/cpp) 140 150 yt = yt**(1./nu_venus) 151 else 152 yt = (yteta/ratio_mod) * ypk/cpp 153 endif 154 141 155 142 156 end subroutine tpot2t -
trunk/LMDZ.VENUS/libf/phyvenus/phys_state_var_mod.F90
r1723 r2135 77 77 REAL,ALLOCATABLE,SAVE :: d_t_nirco2(:,:),d_t_nlte(:,:) 78 78 !$OMP THREADPRIVATE(d_t_nirco2,d_t_nlte) 79 80 ! Case for Newtonian cooling (physideal=.true.) 81 REAL,ALLOCATABLE,SAVE :: zt_eq(:,:) 82 !$OMP THREADPRIVATE(zt_eq) 79 83 80 84 ! Fluxes (W/m2) … … 145 149 ALLOCATE(d_t_rad(klon,klev),d_t_euv(klon,klev)) 146 150 ALLOCATE(d_t_nirco2(klon,klev),d_t_nlte(klon,klev)) 151 ALLOCATE(zt_eq(klon,klev)) 147 152 148 153 ALLOCATE(swnet(klon,klev+1), lwnet(klon,klev+1)) … … 186 191 deallocate(d_t_rad,d_t_euv) 187 192 deallocate(d_t_nirco2,d_t_nlte) 193 deallocate(zt_eq) 188 194 189 195 deallocate(swnet, lwnet) -
trunk/LMDZ.VENUS/libf/phyvenus/physiq_mod.F
r2125 r2135 234 234 EXTERNAL ajsec ! ajustement sec 235 235 EXTERNAL clmain ! couche limite 236 EXTERNAL clmain_ideal ! couche limite simple 236 237 EXTERNAL hgardfou ! verifier les temperatures 237 238 c EXTERNAL orbite ! calculer l'orbite … … 239 240 EXTERNAL phyredem ! ecrire l'etat de redemarrage de la physique 240 241 EXTERNAL radlwsw ! rayonnements solaire et infrarouge 241 EXTERNAL suphec ! initialiser certaines constantes242 ! EXTERNAL suphec ! initialiser certaines constantes 242 243 EXTERNAL transp ! transport total de l'eau et de l'energie 243 244 EXTERNAL printflag … … 446 447 #endif 447 448 448 CALL suphec ! initialiser constantes et parametres phys. 449 ! The call to suphec is now done in iniphysiq_mod (interface) 450 ! CALL suphec ! initialiser constantes et parametres phys. 449 451 450 452 IF (if_ebil.ge.1) d_h_vcol_phy=0. … … 1130 1132 c VENUS TEST: on ne tient pas compte des calculs de clmain mais on force 1131 1133 c l'equilibre radiatif du sol 1132 if (.not. cclmain) then1134 if (.not. ok_clmain) then 1133 1135 if (debut) then 1134 1136 print*,"ATTENTION, CLMAIN SHUNTEE..." … … 1159 1161 ! ADAPTATION GCM POUR CP(T) 1160 1162 1161 CALL clmain(dtime,itap, 1163 if (physideal) then 1164 CALL clmain_ideal(dtime,itap, 1162 1165 e t_seri,u_seri,v_seri, 1163 1166 e rmu0, … … 1172 1175 s dsens, 1173 1176 s ycoefh,yu1,yv1) 1177 else 1178 CALL clmain(dtime,itap, 1179 e t_seri,u_seri,v_seri, 1180 e rmu0, 1181 e ftsol, 1182 $ ftsoil, 1183 $ paprs,pplay,ppk,radsol,falbe, 1184 e solsw, sollw, sollwdown, fder, 1185 e longitude_deg, latitude_deg, dx, dy, 1186 e debut, lafin, 1187 s d_t_vdf,d_u_vdf,d_v_vdf,d_ts, 1188 s fluxt,fluxu,fluxv,cdragh,cdragm, 1189 s dsens, 1190 s ycoefh,yu1,yv1) 1191 endif 1174 1192 1175 1193 CXXX Incrementation des flux … … 1405 1423 c LTE radiative transfert / solar / IR matrix 1406 1424 c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1407 CALL radlwsw 1425 if (physideal) then 1426 CALL radlwsw_newtoncool 1408 1427 e (dist, rmu0, fract, zzlev, 1409 1428 e paprs, pplay,ftsol, t_seri) 1429 else 1430 CALL radlwsw 1431 e (dist, rmu0, fract, zzlev, 1432 e paprs, pplay,ftsol, t_seri) 1433 endif 1410 1434 1411 1435 c albedo variations: test for Yeon Joo Lee 1412 c +12% in 4 Vd / increment to increase it for 20 Vd => +80% 1413 c heat(:,:)=heat(:,:)*(1.+0.12*(rjourvrai+gmtime)/4.)*1.12**4 1436 c increment to increase it for 20 Vd => +80% 1437 c heat(:,:)=heat(:,:)*(1.+0.80*((rjourvrai-356)+gmtime)/20.) 1438 c or to decrease it for 20 Vd => 1/1.8 1439 c heat(:,:)=heat(:,:)/(1.+0.80*((rjourvrai-356)+gmtime)/20.) 1414 1440 1415 1441 c CO2 near infrared absorption -
trunk/LMDZ.VENUS/libf/phyvenus/phytrac_emiss.F
r1621 r2135 67 67 68 68 integer,parameter :: nblat=5,nblon=4,nbz=3 69 integer,parameter :: Nemiss= 1! duree emission (Ed)69 integer,parameter :: Nemiss=0 ! duree emission (Ed) 70 70 integer,save :: Nheight(nbz) ! layer emission 71 71 real,save :: so2_quantity ! quantity so2 (kg) … … 149 149 if (reinit_trac) then 150 150 tr_seri(:,:,:)=0. 151 c CAS N2 TRACEUR PASSIF POUR EVALUER PROFIL SOUS 7 KM 152 c J'ai mis Nemiss=0 ! 153 do i=1,klon 154 do k=1,klev 155 tr_seri(i,k,:)=max(min(0.035, 156 & 0.035*(1.-log(paprs(i,k)/6.e6)/log(9.e6/6.e6))),0.) 157 enddo 158 enddo 159 c FIN CAS N2 PASSIF 151 160 endif 152 161 -
trunk/LMDZ.VENUS/libf/phyvenus/radlwsw_NewtonCool.F
r2123 r2135 2 2 ! $Header: /home/cvsroot/LMDZ4/libf/phylmd/radlwsw.F,v 1.2 2004/10/27 10:14:46 lmdzadmin Exp $ 3 3 ! 4 SUBROUTINE radlwsw (dist, rmu0, fract, zzlev,4 SUBROUTINE radlwsw_newtoncool(dist, rmu0, fract, zzlev, 5 5 . paprs, pplay,tsol, pt) 6 6 … … 26 26 USE geometry_mod, ONLY: latitude ! in radians 27 27 USE phys_state_var_mod, only: heat,cool,radsol, 28 . topsw,toplw,solsw,sollw,sollwdown,lwnet,swnet28 . topsw,toplw,solsw,sollw,sollwdown,lwnet,swnet,zt_eq 29 29 USE write_field_phy 30 30 IMPLICIT none … … 48 48 parameter (tauCLee=25*86400) ! en s 49 49 real ztemp,zdt,fact 50 real dTsdt(klev),zt_eq(klon,klev) 51 save zt_eq 50 real dTsdt(klev) 52 51 53 52 data etaCLee/9.602e-1,8.679e-1,7.577e-1,6.420e-1,5.299e-1, … … 111 110 112 111 do k = 1,klev 113 dTsdt(k) = -( t(j,k)-zt_eq(j,k))/tauCLee ! en K/s112 dTsdt(k) = -(pt(j,k)-zt_eq(j,k))/tauCLee ! en K/s 114 113 enddo 115 114 -
trunk/LMDZ.VENUS/libf/phyvenus/suphec.F
r97 r2135 2 2 ! $Header: /home/cvsroot/LMDZ4/libf/phylmd/suphec.F,v 1.1.1.1 2004/05/19 12:53:08 lmdzadmin Exp $ 3 3 ! 4 SUBROUTINE suphec 4 SUBROUTINE suphec(cpp_) 5 5 C 6 6 #include "YOMCST.h" 7 7 cIM cf. JLD 8 REAL cpp_ ! from dynamics 8 9 LOGICAL firstcall 9 10 SAVE firstcall … … 132 133 ! VENUS: Cp(T) = RCPD*(T/T0)^nu (RCPD phys = cpp dyn) 133 134 ! avec RCPD=1000., T0=460. et nu=0.35 134 RCPD=1.0e3 135 ! RCPD=9.0e2 ! Version constante 135 RCPD=cpp_ 136 136 137 137 RCVD=RCPD-RD
Note: See TracChangeset
for help on using the changeset viewer.