Changeset 2135 for trunk/LMDZ.VENUS/libf


Ignore:
Timestamp:
May 3, 2019, 1:10:27 PM (6 years ago)
Author:
slebonnois
Message:

SL, Venus: new keys for flexibility cp0/cp(T) and Held-Suarez type physics

Location:
trunk/LMDZ.VENUS/libf/phyvenus
Files:
1 added
1 deleted
7 edited
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.VENUS/libf/phyvenus/clesphys.h

    r1723 r2135  
    1313       LOGICAL callnlte,callnirco2,callthermos
    1414       LOGICAL ok_cloud, ok_chem, reinit_trac, ok_sedim
    15        LOGICAL cclmain
    16        LOGICAL startphy_file
     15       LOGICAL ok_clmain, physideal, startphy_file
    1716       INTEGER nbapp_rad, nbapp_chim, iflag_con, iflag_ajs
    1817       INTEGER lev_histins, lev_histday, lev_histmth
    1918       INTEGER tr_scheme, cl_scheme
    2019       INTEGER nircorr, nltemodel, solvarmod
     20       INTEGER nb_mode
    2121       REAL    ecriphy
    2222       REAL    solaire
     
    2424       REAL    ksta, inertie
    2525       REAL    euveff, solarcondate
    26        INTEGER nb_mode
    2726
    2827       COMMON/clesphys_l/ cycle_diurne, soil_model,                     &
    2928     &     ok_orodr, ok_orolf, ok_gw_nonoro, ok_kzmin,                  &
    3029     &     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
    3232
    3333       COMMON/clesphys_i/ nbapp_rad, nbapp_chim,                        &
    34      &     iflag_con, iflag_ajs,cclmain,                                &
     34     &     iflag_con, iflag_ajs,                                        &
    3535     &     lev_histins, lev_histday, lev_histmth, tr_scheme,            &
    3636     &     cl_scheme, nircorr, nltemodel, solvarmod, nb_mode
  • trunk/LMDZ.VENUS/libf/phyvenus/conf_phys.F90

    r1981 r2135  
    251251  call getin('ok_kzmin',ok_kzmin)
    252252
    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)
    255258
    256259!Config Key  = iflag_ajs
     
    507510  write(lunout,*)' ok_kzmin = ',ok_kzmin
    508511  write(lunout,*)' inertie = ', inertie
    509   write(lunout,*)' clmain = ',cclmain
     512  write(lunout,*)' ok_clmain = ',ok_clmain
     513  write(lunout,*)' physideal = ',physideal
    510514  write(lunout,*)' iflag_ajs = ', iflag_ajs
    511515  write(lunout,*)' lev_histins = ',lev_histins
  • trunk/LMDZ.VENUS/libf/phyvenus/cpdet_phy_mod.F90

    r1658 r2135  
    3636      real cpdet
    3737
    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
    3943
    4044      end function cpdet
     
    8185!----------------------
    8286
    83       yteta = yt**nu_venus                                          &
     87      if (t0_venus.ne.0.) then
     88       yteta = yt**nu_venus                                          &
    8489     &            - 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
    8695!----------------------
    8796! ATMOSPHERE PROFONDE
     
    135144! ATMOSPHERE PROFONDE
    136145!----------------------
     146      if (t0_venus.ne.0.) then
    137147     yt = (yteta/ratio_mod)**nu_venus                               &
    138148!----------------------
    139149         + nu_venus * t0_venus**nu_venus * log(ypk/cpp)
    140150     yt = yt**(1./nu_venus)
     151      else
     152     yt = (yteta/ratio_mod) * ypk/cpp
     153      endif
     154 
    141155 
    142156      end subroutine tpot2t
  • trunk/LMDZ.VENUS/libf/phyvenus/phys_state_var_mod.F90

    r1723 r2135  
    7777     REAL,ALLOCATABLE,SAVE :: d_t_nirco2(:,:),d_t_nlte(:,:)
    7878!$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)
    7983
    8084! Fluxes (W/m2)
     
    145149      ALLOCATE(d_t_rad(klon,klev),d_t_euv(klon,klev))
    146150      ALLOCATE(d_t_nirco2(klon,klev),d_t_nlte(klon,klev))
     151      ALLOCATE(zt_eq(klon,klev))
    147152
    148153      ALLOCATE(swnet(klon,klev+1), lwnet(klon,klev+1))
     
    186191      deallocate(d_t_rad,d_t_euv)
    187192      deallocate(d_t_nirco2,d_t_nlte)
     193      deallocate(zt_eq)
    188194
    189195      deallocate(swnet, lwnet)
  • trunk/LMDZ.VENUS/libf/phyvenus/physiq_mod.F

    r2125 r2135  
    234234      EXTERNAL ajsec     ! ajustement sec
    235235      EXTERNAL clmain    ! couche limite
     236      EXTERNAL clmain_ideal    ! couche limite simple
    236237      EXTERNAL hgardfou  ! verifier les temperatures
    237238c     EXTERNAL orbite    ! calculer l'orbite
     
    239240      EXTERNAL phyredem  ! ecrire l'etat de redemarrage de la physique
    240241      EXTERNAL radlwsw   ! rayonnements solaire et infrarouge
    241       EXTERNAL suphec    ! initialiser certaines constantes
     242!      EXTERNAL suphec    ! initialiser certaines constantes
    242243      EXTERNAL transp    ! transport total de l'eau et de l'energie
    243244      EXTERNAL printflag
     
    446447#endif
    447448
    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.
    449451
    450452         IF (if_ebil.ge.1) d_h_vcol_phy=0.
     
    11301132c VENUS TEST: on ne tient pas compte des calculs de clmain mais on force
    11311133c l'equilibre radiatif du sol
    1132       if (.not. cclmain) then
     1134      if (.not. ok_clmain) then
    11331135              if (debut) then
    11341136                print*,"ATTENTION, CLMAIN SHUNTEE..."
     
    11591161! ADAPTATION GCM POUR CP(T)
    11601162
    1161       CALL clmain(dtime,itap,
     1163      if (physideal) then
     1164       CALL clmain_ideal(dtime,itap,
    11621165     e            t_seri,u_seri,v_seri,
    11631166     e            rmu0,
     
    11721175     s            dsens,
    11731176     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
    11741192
    11751193CXXX Incrementation des flux
     
    14051423c       LTE radiative transfert / solar / IR matrix
    14061424c       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    1407       CALL radlwsw
     1425      if (physideal) then
     1426       CALL radlwsw_newtoncool
    14081427     e            (dist, rmu0, fract, zzlev,
    14091428     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
    14101434
    14111435c 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
     1436c  increment to increase it for 20 Vd => +80%
     1437c       heat(:,:)=heat(:,:)*(1.+0.80*((rjourvrai-356)+gmtime)/20.)
     1438c  or to decrease it for 20 Vd => 1/1.8
     1439c       heat(:,:)=heat(:,:)/(1.+0.80*((rjourvrai-356)+gmtime)/20.)
    14141440
    14151441c       CO2 near infrared absorption
  • trunk/LMDZ.VENUS/libf/phyvenus/phytrac_emiss.F

    r1621 r2135  
    6767
    6868      integer,parameter :: nblat=5,nblon=4,nbz=3
    69       integer,parameter :: Nemiss=1     ! duree emission (Ed)
     69      integer,parameter :: Nemiss=0     ! duree emission (Ed)
    7070      integer,save :: Nheight(nbz)      ! layer emission
    7171      real,save :: so2_quantity         ! quantity so2 (kg)
     
    149149         if (reinit_trac) then
    150150           tr_seri(:,:,:)=0.
     151c CAS N2 TRACEUR PASSIF POUR EVALUER PROFIL SOUS 7 KM
     152c 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
     159c FIN CAS N2 PASSIF
    151160         endif
    152161         
  • trunk/LMDZ.VENUS/libf/phyvenus/radlwsw_NewtonCool.F

    r2123 r2135  
    22! $Header: /home/cvsroot/LMDZ4/libf/phylmd/radlwsw.F,v 1.2 2004/10/27 10:14:46 lmdzadmin Exp $
    33!
    4       SUBROUTINE radlwsw(dist, rmu0, fract, zzlev,
     4      SUBROUTINE radlwsw_newtoncool(dist, rmu0, fract, zzlev,
    55     .                  paprs, pplay,tsol, pt)
    66     
     
    2626      USE geometry_mod, ONLY: latitude ! in radians
    2727      USE phys_state_var_mod, only: heat,cool,radsol,
    28      .      topsw,toplw,solsw,sollw,sollwdown,lwnet,swnet
     28     .  topsw,toplw,solsw,sollw,sollwdown,lwnet,swnet,zt_eq
    2929      USE write_field_phy
    3030      IMPLICIT none
     
    4848      parameter (tauCLee=25*86400) ! en s
    4949      real   ztemp,zdt,fact
    50       real   dTsdt(klev),zt_eq(klon,klev)
    51       save   zt_eq
     50      real   dTsdt(klev)
    5251     
    5352      data     etaCLee/9.602e-1,8.679e-1,7.577e-1,6.420e-1,5.299e-1,
     
    111110 
    112111          do k = 1,klev
    113              dTsdt(k) = -(t(j,k)-zt_eq(j,k))/tauCLee   ! en K/s
     112             dTsdt(k) = -(pt(j,k)-zt_eq(j,k))/tauCLee   ! en K/s
    114113          enddo
    115114       
  • trunk/LMDZ.VENUS/libf/phyvenus/suphec.F

    r97 r2135  
    22! $Header: /home/cvsroot/LMDZ4/libf/phylmd/suphec.F,v 1.1.1.1 2004/05/19 12:53:08 lmdzadmin Exp $
    33!
    4       SUBROUTINE suphec
     4      SUBROUTINE suphec(cpp_)
    55C
    66#include "YOMCST.h"
    77cIM cf. JLD
     8       REAL cpp_   ! from dynamics
    89       LOGICAL firstcall
    910       SAVE firstcall
     
    132133! VENUS: Cp(T) = RCPD*(T/T0)^nu (RCPD phys = cpp dyn)
    133134! avec RCPD=1000., T0=460. et nu=0.35
    134       RCPD=1.0e3
    135 !     RCPD=9.0e2  ! Version constante
     135      RCPD=cpp_
    136136
    137137      RCVD=RCPD-RD
Note: See TracChangeset for help on using the changeset viewer.