Changeset 3144 for trunk/LMDZ.MARS/libf


Ignore:
Timestamp:
Nov 29, 2023, 4:04:35 PM (14 months ago)
Author:
jliu
Message:

Mars PCM
New scheme "nonoro_gwd_mix_mod" to simulate non-orographic gravity waves induced mixing. The scheme flag "calljliu_gwimix" has been put to "false" as default.
There are three tunable parameters that have been set up, as "nonoro_gwimixing_eff=0.1", "nonoro_gwimixing_eff1=0.1", "nonoro_gwimixing_vdl=1.5".
Remember to use full-layers model configuration (64x48x73) when you try to call this scheme because we need to evaluate the saturation altitude of each monochromatic wave.
More than ~75% of the waves saturated at altitude above 120 km.
Jliu

Location:
trunk/LMDZ.MARS/libf/phymars
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.MARS/libf/phymars/conf_phys.F

    r3130 r3144  
    4141      use microphys_h, only: mteta
    4242      use comsoil_h, only: adsorption_soil, choice_ads
     43      use nonoro_gwd_mix_mod, only: calljliu_gwimix
    4344
    4445      IMPLICIT NONE
     
    296297         call getin_p("calllott_nonoro",calllott_nonoro)
    297298         write(*,*)" calllott_nonoro = ",calllott_nonoro
     299
     300         write(*,*)"call jliu's nonoro GWs-induced mixing ",
     301     &             "scheme ?"
     302         calljliu_gwimix=.false. ! default value
     303         call getin_p("calljliu_gwimix",calljliu_gwimix)
     304         write(*,*)" calljliu_gwimix = ",calljliu_gwimix
     305
    298306
    299307! rocket dust storm injection scheme
  • trunk/LMDZ.MARS/libf/phymars/phyetat0_mod.F90

    r3142 r3144  
    2121                     inquire_dimension, inquire_dimension_length
    2222  use nonoro_gwd_ran_mod, only: du_nonoro_gwd, dv_nonoro_gwd
     23  use nonoro_gwd_mix_mod, only: du_eddymix_gwd, dv_eddymix_gwd, de_eddymix_rto, &
     24                                df_eddymix_flx !dr_depflux_gwd
     25
    2326  use compute_dtau_mod, only: dtau
    2427  use dust_rad_adjust_mod, only: dust_rad_adjust_prev,dust_rad_adjust_next
     
    621624write(*,*) " <dv_nonoro_gwd> range:", &
    622625             minval(dv_nonoro_gwd), maxval(dv_nonoro_gwd)
     626if (startphy_file) then
     627   call get_field("du_eddymix_gwd",du_eddymix_gwd,found,indextime)
     628   if (.not.found) then
     629      write(*,*) "phyetat0: <du_eddymix_gwd> not in file"
     630      du_eddymix_gwd(:,:)=0.
     631   endif
     632else
     633du_eddymix_gwd(:,:)=0.
     634endif ! if (startphy_file)
     635write(*,*) "phyetat0: Memory of zonal wind tendency due to non-orographic GW mixing"
     636write(*,*) " <du_eddymix_gwd> range:", &
     637             minval(du_eddymix_gwd), maxval(du_eddymix_gwd)
     638 
     639
     640if (startphy_file) then
     641   call get_field("dv_nonoro_gwd",dv_nonoro_gwd,found,indextime)
     642   if (.not.found) then
     643      write(*,*) "phyetat0: <dv_nonoro_gwd> not in file"
     644      dv_nonoro_gwd(:,:)=0.
     645   endif
     646else ! ! if (startphy_file)
     647dv_nonoro_gwd(:,:)=0.
     648endif ! if (startphy_file)
     649write(*,*) "phyetat0: Memory of meridional wind tendency due to non-orographic GW"
     650write(*,*) " <dv_nonoro_gwd> range:", &
     651             minval(dv_nonoro_gwd), maxval(dv_nonoro_gwd)
     652
     653if (startphy_file) then
     654   call get_field("dv_eddymix_gwd",dv_eddymix_gwd,found,indextime)
     655   if (.not.found) then
     656      write(*,*) "phyetat0: <dv_eddymix_gwd> not in file"
     657      dv_eddymix_gwd(:,:)=0.
     658   endif
     659else ! ! if (startphy_file)
     660dv_eddymix_gwd(:,:)=0.
     661endif ! if (startphy_file)
     662write(*,*) "phyetat0: Memory of meridional wind tendency due to non-orographic GW mixing"
     663write(*,*) " <dv_eddymix_gwd> range:", &
     664             minval(dv_eddymix_gwd), maxval(dv_eddymix_gwd)
     665
     666!if (startphy_file) then
     667!   call get_field("dr_depflux_gwd",dr_depflux_gwd,found,indextime)
     668!   if (.not.found) then
     669!      write(*,*) "phyetat0: <dr_depflux_gwd> not in file"
     670!      dr_depflux_gwd(:,:,:)=0.
     671!   endif
     672!else ! ! if (startphy_file)
     673!!dr_depflux_gwd(:,:,:)=0.
     674!endif ! if (startphy_file)
     675!write(*,*) "phyetat0: Memory of meridional wind tendency due to non-orographic GW mixing"
     676!write(*,*) " <dr_depflux_gwd> range:", &
     677!             minval(dr_depflux_gwd), maxval(dr_depflux_gwd)
     678
     679if (startphy_file) then
     680   call get_field("de_eddymix_rto",de_eddymix_rto,found,indextime)
     681   if (.not.found) then
     682      write(*,*) "phyetat0: <de_eddymix_rto> not in file"
     683      de_eddymix_rto(:,:)=0.
     684   endif
     685else ! ! if (startphy_file)
     686de_eddymix_rto(:,:)=0.
     687endif ! if (startphy_file)
     688write(*,*) "phyetat0: Memory of meridional wind tendency due to non-orographic GW mixing"
     689write(*,*) " <de_eddymix_rto> range:", &
     690             minval(de_eddymix_rto), maxval(de_eddymix_rto)
     691
     692if (startphy_file) then
     693   call get_field("df_eddymix_flx ",df_eddymix_flx ,found,indextime)
     694   if (.not.found) then
     695      write(*,*) "phyetat0: <df_eddymix_flx > not in file"
     696      df_eddymix_flx (:,:)=0.
     697   endif
     698else ! ! if (startphy_file)
     699df_eddymix_flx (:,:)=0.
     700endif ! if (startphy_file)
     701write(*,*) "phyetat0: Memory of meridional wind tendency due to non-orographic GW mixing"
     702write(*,*) " <df_eddymix_flx > range:", &
     703             minval(df_eddymix_flx ), maxval(df_eddymix_flx )
     704
     705
    623706
    624707! tracer on surface
  • trunk/LMDZ.MARS/libf/phymars/phys_state_var_init_mod.F90

    r3095 r3144  
    5757      use nonoro_gwd_ran_mod, only: ini_nonoro_gwd_ran, &
    5858                                    end_nonoro_gwd_ran
     59      use nonoro_gwd_mix_mod, only: ini_nonoro_gwd_mix, &
     60                                    end_nonoro_gwd_mix
    5961      use dust_param_mod, only: ini_dust_param_mod, &
    6062                                end_dust_param_mod
     
    170172      call ini_nonoro_gwd_ran(ngrid,nlayer)
    171173
     174      ! allocate arrays in "nonoro_gwd_mix_mod"
     175      call end_nonoro_gwd_mix
     176      call ini_nonoro_gwd_mix(ngrid,nlayer)
     177
    172178      ! allocate arrays in "dust_param_mod"
    173179      call end_dust_param_mod
  • trunk/LMDZ.MARS/libf/phymars/physiq_mod.F

    r3142 r3144  
    9090      use compute_dtau_mod, only: compute_dtau
    9191      use nonoro_gwd_ran_mod, only: nonoro_gwd_ran
     92      use nonoro_gwd_mix_mod, only: nonoro_gwd_mix, calljliu_gwimix
    9293      use check_fields_mod, only: check_physics_fields
    9394      use surfini_mod, only: surfini
     
    492493      REAL d_u_hin(ngrid,nlayer), d_v_hin(ngrid,nlayer)
    493494      REAL d_t_hin(ngrid,nlayer)
     495      REAL d_u_mix(ngrid,nlayer), d_v_mix(ngrid,nlayer)
     496      REAL d_t_mix(ngrid,nlayer), zdq_mix(ngrid,nlayer,nq)
     497
    494498c  Diagnostics 2D of gw_nonoro
    495499      REAL zustrhi(ngrid), zvstrhi(ngrid)
     
    16901694     &               zustrhi,zvstrhi,
    16911695     &               d_t_hin, d_u_hin, d_v_hin)
     1696         IF (calljliu_gwimix) THEN
     1697          CALL nonoro_gwd_mix(ngrid,nlayer,ptimestep,
     1698     &               nq,cpnew, rnew,
     1699     &               zplay, 
     1700     &               zmax_th,
     1701     &               pt, pu, pv, pq,
     1702                !loss,  chemical reaction loss rates
     1703     &               pdt, pdu, pdv, pdq,
     1704                !  zustrhi,zvstrhi,
     1705     &               zdq_mix, d_t_mix, d_u_mix, d_v_mix)
     1706         ENDIF
    16921707
    16931708!  Update tendencies
     
    16981713         pdv(1:ngrid,1:nlayer)=pdv(1:ngrid,1:nlayer)
    16991714     &                         +d_v_hin(1:ngrid,1:nlayer)
     1715!  Update tendencies of gw mixing
     1716        IF (calljliu_gwimix) THEN
     1717         pdt(1:ngrid,1:nlayer)=pdt(1:ngrid,1:nlayer)
     1718     &                         +d_t_mix(1:ngrid,1:nlayer)
     1719         pdu(1:ngrid,1:nlayer)=pdu(1:ngrid,1:nlayer)
     1720     &                         +d_u_mix(1:ngrid,1:nlayer)
     1721         pdv(1:ngrid,1:nlayer)=pdv(1:ngrid,1:nlayer)
     1722     &                         +d_v_mix(1:ngrid,1:nlayer)
     1723       pdq(1:ngrid,1:nlayer,1:nq)=pdq(1:ngrid,1:nlayer,1:nq)
     1724     &                       +zdq_mix(1:ngrid,1:nlayer,1:nq)
     1725        ENDIF
     1726
    17001727
    17011728      ENDIF ! of IF (calllott_nonoro)
Note: See TracChangeset for help on using the changeset viewer.