Changeset 2560


Ignore:
Timestamp:
Sep 7, 2021, 3:28:26 PM (3 years ago)
Author:
slebonnois
Message:

SL: Implementation of SW computation based on generic model. Switch between this new SW module or old module that reads R. Haus tables implemented with a key (solarchoice)

Location:
trunk/LMDZ.VENUS
Files:
26 added
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.VENUS/deftank/context_lmdz_physics-78niv.xml

    r2465 r2560  
    101101                   long_name="Vertical wind"
    102102                   unit="Pa/s" />
     103           <field id="vitwz"
     104                   long_name="Vertical wind (m/s)"
     105                   unit="m/s" />
    103106            <field id="Kz"
    104107                   long_name="vertical diffusion coef"
  • trunk/LMDZ.VENUS/deftank/context_lmdz_physics-notrac.xml

    r2465 r2560  
    101101                   long_name="Vertical wind"
    102102                   unit="Pa/s" />
     103           <field id="vitwz"
     104                   long_name="Vertical wind (m/s)"
     105                   unit="m/s" />
    103106            <field id="Kz"
    104107                   long_name="vertical diffusion coef"
  • trunk/LMDZ.VENUS/deftank/context_lmdz_physics.xml

    r2465 r2560  
    101101                   long_name="Vertical wind"
    102102                   unit="Pa/s" />
     103           <field id="vitwz"
     104                   long_name="Vertical wind (m/s)"
     105                   unit="m/s" />
    103106            <field id="Kz"
    104107                   long_name="vertical diffusion coef"
  • trunk/LMDZ.VENUS/deftank/physiq-96x96x50-chemistry.def

    r2279 r2560  
    7373#
    7474iflag_ajs = 1
     75
     76# Solar radiation module
     77##~~~~~~~~~~~~~~~~~~~~~~
     78## 1 = Rainer Haus Tables
     79## 2 = Generic solar module
    7580#
     81solarchoice=1
     82
    7683# Thermosphere and nlte parameters
    7784##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • trunk/LMDZ.VENUS/deftank/physiq-96x96x50-notrac.def

    r2279 r2560  
    7373#
    7474iflag_ajs = 1
     75
     76# Solar radiation module
     77##~~~~~~~~~~~~~~~~~~~~~~
     78## 1 = Rainer Haus Tables
     79## 2 = Generic solar module
    7580#
     81solarchoice=1
     82
    7683# Thermosphere and nlte parameters
    7784##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • trunk/LMDZ.VENUS/deftank/physiq-96x96x78-chemistry.def

    r2465 r2560  
    7373#
    7474iflag_ajs = 1
     75
     76# Solar radiation module
     77##~~~~~~~~~~~~~~~~~~~~~~
     78## 1 = Rainer Haus Tables
     79## 2 = Generic solar module
    7580#
     81solarchoice=1
     82
    7683# Thermosphere and nlte parameters
    7784##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • trunk/LMDZ.VENUS/deftank/physiq-96x96x90-chemistry.def

    r2465 r2560  
    7373#
    7474iflag_ajs = 1
     75
     76# Solar radiation module
     77##~~~~~~~~~~~~~~~~~~~~~~
     78## 1 = Rainer Haus Tables
     79## 2 = Generic solar module
    7580#
     81solarchoice=1
     82
    7683# Thermosphere and nlte parameters
    7784##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • trunk/LMDZ.VENUS/deftank/physiq.def

    r2279 r2560  
    7373#
    7474iflag_ajs = 1
     75
     76# Solar radiation module
     77##~~~~~~~~~~~~~~~~~~~~~~
     78## 1 = Rainer Haus Tables
     79## 2 = Generic solar module
    7580#
     81solarchoice=1
     82
    7683# Thermosphere and nlte parameters
    7784##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • trunk/LMDZ.VENUS/libf/phyvenus/clesphys.h

    r2487 r2560  
    1919       INTEGER nircorr, nltemodel, solvarmod
    2020       INTEGER nb_mode
     21       INTEGER solarchoice
    2122       REAL    ecriphy
    2223       REAL    z0, lmixmin
     
    3334     &     iflag_con, iflag_ajs,                                        &
    3435     &     lev_histins, lev_histday, lev_histmth, tr_scheme,            &
    35      &     cl_scheme, nircorr, nltemodel, solvarmod, nb_mode
     36     &     cl_scheme, nircorr, nltemodel, solvarmod, nb_mode,           &
     37     &     solarchoice
    3638
    3739       COMMON/clesphys_r/ ecriphy, z0, lmixmin,                         &
  • trunk/LMDZ.VENUS/libf/phyvenus/conf_phys.F90

    r2487 r2560  
    388388  call getin('nb_mode',nb_mode)
    389389 
     390!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     391! PARAMETER FOR SOLAR RADIATION
     392!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     393
     394!
     395!Config Key  = solarchoice
     396!Config Desc =
     397!Config Def  = 1
     398!Config Help =
     399!
     400! 1 = RH Tables
     401! 2 = Generic module
     402  solarchoice = 1
     403  call getin('solarchoice',solarchoice)
     404
    390405!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    391406! PARAMETER FOR NLTE PHYSICS
     
    514529  write(lunout,*)' ok_sedim = ',ok_sedim
    515530  write(lunout,*)' nb_mode = ',nb_mode
     531  write(lunout,*)' solarchoice = ',solarchoice
    516532  write(lunout,*)' callnlte = ',callnlte
    517533  write(lunout,*)' nltemodel = ',nltemodel
  • trunk/LMDZ.VENUS/libf/phyvenus/radlwsw.F

    r2534 r2560  
    3333     .      topsw,toplw,solsw,sollw,sollwdown,lwnet,swnet
    3434      use write_field_phy
     35      use radinc_h, only: ini_radinc_h
    3536
    3637#ifdef CPP_XIOS     
     
    6061!===========
    6162      INTEGER k, kk, i, j, band
     63      integer,save :: i_sw
     64      integer,parameter :: subloop=100
    6265
    6366      REAL   PPB(klev+1)
     
    103106        call load_ksi(ksive)
    104107
     108        i_sw = subloop
     109c for sw_venus_corrk
     110        if (solarchoice.eq.2) call ini_radinc_h(klev)
     111       
    105112      endif ! firstcall
    106113c-------------------------------------------
     
    108115      DO k = 1, klev
    109116       DO i = 1, klon
    110          heat(i,k)=0.
     117! Solar heating rates from generic => directly on klon
     118! only once every subloop calls, because of high frequency needed by lw...
     119         if (i_sw.eq.subloop) heat(i,k)=0.
    111120         cool(i,k)=0.
    112121       ENDDO
     
    600609c      CALL SW_venus_rh_1Dglobave(zrmu0,zfract,   ! pour moy globale
    601610c     S        PPB,temp,
    602       CALL SW_venus_rh(zrmu0,zfract,latdeg,
     611c     S        zheat,
     612c     S        ztopsw,zsolsw,ZFSNET)
     613
     614cc SOLAR : RH TABLES
     615       if (solarchoice.eq.1) then
     616        CALL SW_venus_rh(zrmu0,zfract,latdeg,
    603617     S        PPA,PPB,temp,
    604618     S        zheat,
    605619     S        ztopsw,zsolsw,ZFSNET)
     620       endif ! solarchoice.eq.1
     621
    606622c======================================================================
    607          radsol(j) = zsolsw - zsollw  ! + vers bas
    608          topsw(j) = ztopsw            ! + vers bas
     623c lw into klon grid:
     624         radsol(j) =  - zsollw        ! + vers bas
    609625         toplw(j) = ztoplw            ! + vers haut
    610          solsw(j) = zsolsw            ! + vers bas
    611626         sollw(j) = -zsollw           ! + vers bas
    612627         sollwdown(j) = zsollwdown    ! + vers bas
    613628
    614629         DO k = 1, klev+1
    615          lwnet  (j,k)   = ZFLNET(k)
    616          swnet  (j,k)   = ZFSNET(k)
     630           lwnet  (j,k)   = ZFLNET(k)    ! + vers haut
    617631         ENDDO
    618632
     633cc SOLAR : RH TABLES
     634c sw into klon grid (if not using the generic routine)
     635         if (solarchoice.eq.1) then
     636           radsol(j)= radsol(j)+zsolsw  ! + vers bas
     637           topsw(j) = ztopsw            ! + vers bas
     638           solsw(j) = zsolsw            ! + vers bas
     639           DO k = 1, klev+1
     640            swnet  (j,k)   = ZFSNET(k)   ! + vers bas
     641           ENDDO
     642         endif ! solarchoice.eq.1
     643
    619644c
    620 C heat/cool with upper atmosphere
     645C cool with upper atmosphere
    621646C
    622647      IF(callnlte) THEN
    623648         DO k = 1,nlaylte
    624            heat(j,k) = zheat(k)
    625649           cool(j,k) = zcool(k)
    626650         ENDDO
     
    628652       if (klev.gt.nlaylte) then
    629653         do k = nlaylte+1,  klev
    630            heat(j,k) = 0.
    631654           cool(j,k) = 0.
    632655         enddo
     
    634657      ELSE
    635658         DO k = 1, klev
    636            heat(j,k) = zheat(k)
    637659           cool(j,k) = zcool(k)
    638660         ENDDO
    639661      ENDIF ! callnlte
     662
     663cc SOLAR : RH TABLES
     664C heat with upper atmosphere
     665      IF(solarchoice.eq.1) THEN
     666       IF(callnlte) THEN
     667         DO k = 1,nlaylte
     668           heat(j,k) = zheat(k)
     669         ENDDO
     670c     Zero tendencies for any remaining layers between nlaylte and klev
     671        if (klev.gt.nlaylte) then
     672         do k = nlaylte+1,  klev
     673           heat(j,k) = 0.
     674         enddo
     675        endif   
     676       ELSE
     677         DO k = 1, klev
     678           heat(j,k) = zheat(k)
     679         ENDDO
     680       ENDIF ! callnlte
     681      ENDIF ! solarchoice.eq.1
     682
    640683      ENDDO ! of DO j = 1, klon
    641684c+++++++ FIN BOUCLE SUR LA GRILLE +++++++++++++++++++++++++
     685
     686cc SOLAR : GENERICS
     687! Solar heating rates from generic => directly on klon
     688! only once every subloop calls, because of high frequency needed by lw...
     689      if (solarchoice.eq.2) then
     690
     691       if (i_sw.eq.subloop) then
     692
     693        call sw_venus_corrk(klon,klev,rmu0,paprs,pplay,t,tsol,
     694     .       fract,dist,heat,solsw,topsw,swnet,firstcall)
     695
     696        IF(callnlte) THEN
     697c     Zero tendencies for any remaining layers between nlaylte and klev
     698         if (klev.gt.nlaylte) then
     699          do k = nlaylte+1,klev
     700           heat(:,k) = 0.
     701          enddo
     702         endif   
     703        ENDIF ! callnlte
     704       
     705        i_sw=0
     706       endif ! i_sw=subloop
     707
     708       radsol(:)=radsol(:)+solsw(:)
     709       i_sw=i_sw+1
     710      endif ! solarchoice.eq.2
     711
     712!----------------------------------------------------------
    642713
    643714! for tests: write output fields...
  • trunk/LMDZ.VENUS/libf/phyvenus/write_histins.h

    r1661 r2560  
    4646c     call histwrite_phy(nid_ins,.false.,"mang",itau_w,mang)
    4747c     call histwrite_phy(nid_ins,.false.,"Kz",itau_w,ycoefh)
    48       call histwrite_phy(nid_ins,.false.,"mmean",itau_w,mmean)
    49       call histwrite_phy(nid_ins,.false.,"rho",itau_w,rho)
     48c     call histwrite_phy(nid_ins,.false.,"mmean",itau_w,mmean)
     49c     call histwrite_phy(nid_ins,.false.,"rho",itau_w,rho)
    5050
    5151c plusieurs traceurs  !!!outputs in [vmr]
     
    104104       ENDIF
    105105             
    106       call histwrite_phy(nid_ins,.false.,"WH2SO4",itau_w,WH2SO4)
     106c     call histwrite_phy(nid_ins,.false.,"WH2SO4",itau_w,WH2SO4)
    107107     
    108       call histwrite_phy(nid_ins,.false.,"rho_droplet",itau_w,
    109      & rho_droplet)
     108c     call histwrite_phy(nid_ins,.false.,"rho_droplet",itau_w,
     109c    & rho_droplet)
    110110                ENDIF
    111111
  • trunk/LMDZ.VENUS/libf/phyvenus/write_histmth.h

    r1667 r2560  
    5151c plusieurs traceurs  !!!outputs in [vmr]
    5252       IF (iflag_trac.eq.1) THEN
    53          DO iq=1,nqmax
     53         DO iq=1,nqmax-nmicro
    5454       call histwrite_phy(nid_mth,.false.,tname(iq),itau_w,qx(:,:,iq)
    5555     &                   *mmean(:,:)/M_tr(iq))
     56         ENDDO
     57         DO iq=nqmax-nmicro+1,nqmax
     58       call histwrite_phy(nid_mth,.false.,tname(iq),itau_w,qx(:,:,iq))
    5659         ENDDO
    5760       ENDIF
     
    105108c en K/s     
    106109      call histwrite_phy(nid_mth,.false.,"dtswr",itau_w,dtsw)
    107       call histwrite_phy(nid_mth,.false.,"dtswrNLTE",itau_w,d_t_nirco2)
    108       call histwrite_phy(nid_mth,.false.,"dtswrDCrisp",itau_w,heat)
     110c     call histwrite_phy(nid_mth,.false.,"dtswrNLTE",itau_w,d_t_nirco2)
     111c     call histwrite_phy(nid_mth,.false.,"dtswrDCrisp",itau_w,heat)
    109112c en K/s     
    110113      call histwrite_phy(nid_mth,.false.,"dtlwr",itau_w,dtlw)
Note: See TracChangeset for help on using the changeset viewer.