Ignore:
Timestamp:
Sep 3, 2025, 11:19:36 PM (6 months ago)
Author:
tbertrand
Message:

Pluto PCM:

  • adding option to use N2 ice fractional maps (n2frac) read in the startfi.nc
  • adding option in newstart to correct (tsurf and tsoil) for too warm or too cold N2-free (correct_t_non2) or N2-rich (correct_t_n2) patches

TB

Location:
trunk/LMDZ.PLUTO/libf/phypluto
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.PLUTO/libf/phypluto/condense_n2.F90

    r3668 r3910  
    44      picen2,psolaralb,pemisurf, &
    55      pdtc,pdtsrfc,pdpsrf,pduc,pdvc, &
    6       pdqc,pdicen2)
     6      pdqc,pdicen2,n2frac)
    77
    88  use comgeomfi_h
     
    7171  REAL pdtsrfc(klon),pdpsrf(klon)
    7272  REAL picen2(klon),psolaralb(klon),pemisurf(klon)
     73  REAL n2frac(klon)
    7374
    7475
     
    370371
    371372         pdtsrfc(ig) = (ztcondsol(ig) - ztsrf(ig))/subtimestep
     373
     374         zcondices(ig) = zcondices(ig)*n2frac(ig) !N2frac added as ponderation
    372375
    373376!        partial sublimation of N2 ice
  • trunk/LMDZ.PLUTO/libf/phypluto/phyetat0_mod.F90

    r3772 r3910  
    2323  use tabfi_mod, only: tabfi,ini_tab_controle_dyn_xios,tab_cntrl_mod
    2424  USE tracer_h, ONLY: noms
    25   USE surfdat_h, only: phisfi, albedodat, zmea, zstd, zsig, zgam, zthe
     25  USE surfdat_h, only: phisfi, albedodat, zmea, zstd, zsig, zgam, zthe, n2frac
    2626  use iostart, only: nid_start, open_startphy, close_startphy, &
    2727                     get_field, get_var, inquire_field, &
     
    9191!
    9292IF (.not. ALLOCATED(albedodat)) ALLOCATE(albedodat(ngrid))
     93IF (.not. ALLOCATED(n2frac)) ALLOCATE(n2frac(ngrid))
    9394IF (.not. ALLOCATED(phisfi)) ALLOCATE(phisfi(ngrid))
    9495IF (.not. ALLOCATED(zmea)) ALLOCATE(zmea(ngrid))
     
    140141if (is_master) write(*,*) "phyetat0: Bare ground albedo <albedodat> range:", &
    141142             minval(albedodat), maxval(albedodat)
     143
     144!n2frac
     145
     146if (startphy_file) then
     147  ! Load bare ground albedo:
     148  call get_field(nid_start,"n2frac",n2frac,found)
     149  if (.not.found) then
     150    call abort_physic(modname,"Failed loading <n2frac>",1)
     151  endif
     152else
     153  ! If no startfi file, use fixed value to test
     154  n2frac(:)=1
     155endif ! of if (startphy_file)
     156if (is_master) write(*,*) "phyetat0: n2 fraction of ice  <n2frac> range:", &
     157             minval(n2frac), maxval(n2frac)
    142158
    143159! ZMEA
  • trunk/LMDZ.PLUTO/libf/phypluto/phyredem.F90

    r3748 r3910  
    173173subroutine physdem1(filename,nsoil,ngrid,nlay,nq, &
    174174                    phystep,time,tsurf,tsoil,inertiesoil, &
    175                     emis,alb,q2,qsurf)
     175                    emis,alb,q2,qsurf,n2frac)
    176176  ! write time-dependent variable to restart file
    177177  use iostart, only : open_restartphy, close_restartphy, &
     
    192192  real,intent(in) :: emis(ngrid)
    193193  real,intent(in) :: alb(ngrid)
     194  real,intent(in) :: n2frac(ngrid)
    194195  real,intent(in) :: inertiesoil(ngrid,nsoil)
    195196  real,intent(in) :: q2(ngrid,nlay+1)
     
    219220  ! Albedo of the surface
    220221  call put_field(nid_restart,"albedodat","Albedo of bare ground",alb)
     222
     223  !n2 fraction on the surface
     224  call put_field(nid_restart,"n2frac","N2 ice fraction on the surface",n2frac)
    221225
    222226  ! Planetary Boundary Layer
  • trunk/LMDZ.PLUTO/libf/phypluto/phys_state_var_mod.F90

    r3754 r3910  
    1414      use radcommon_h, only: glat
    1515      USE radinc_h, only : L_NSPECTI, L_NSPECTV,naerkind
    16       use surfdat_h, only: phisfi, albedodat, &
     16      use surfdat_h, only: phisfi, albedodat, n2frac, &
    1717                        zmea, zstd, zsig, zgam, zthe
    1818      use turb_mod, only: q2,sensibFlux,wstar,ustar,tstar,hfmax_th,zmax_th
     
    127127        ALLOCATE(albedo_n2_ice_SPECTV(L_NSPECTV))
    128128        ALLOCATE(albedo_bareground(klon))
     129        ALLOCATE(n2frac(klon))
    129130        ALLOCATE(emis(klon))
    130131        ALLOCATE(dtrad(klon,klev))
     
    251252        DEALLOCATE(phisfi)
    252253        DEALLOCATE(albedodat)
     254        DEALLOCATE(n2frac)
    253255        DEALLOCATE(zmea)
    254256        DEALLOCATE(zstd)
  • trunk/LMDZ.PLUTO/libf/phypluto/physiq_mod.F90

    r3894 r3910  
    13971397                           qsurf(1,igcm_n2),albedo,emis,                &
    13981398                           zdtc,zdtsurfc,pdpsrf,zduc,zdvc,              &
    1399                            zdqc,zdqsc(1,igcm_n2))
     1399                           zdqc,zdqsc(1,igcm_n2),n2frac)
    14001400
    14011401         pdt(1:ngrid,1:nlayer) = pdt(1:ngrid,1:nlayer)+zdtc(1:ngrid,1:nlayer)
     
    21402140            call physdem1("restartfi.nc",nsoilmx,ngrid,nlayer,nq, &
    21412141                        ptimestep,ztime_restart,tsurf,                &
    2142                         tsoil,therm_inertia,emis,albedo,q2,qsurf)
     2142                        tsoil,therm_inertia,emis,albedo,q2,qsurf,n2frac)
    21432143         endif ! ngrid
    21442144      endif ! is_omp_master
  • trunk/LMDZ.PLUTO/libf/phypluto/surfdat_h.F90

    r3455 r3910  
    33
    44       implicit none
     5
     6       real,allocatable,dimension(:) :: n2frac ! n2 fraction of ice at the surfacestocked in startfi.nc file.
     7!$OMP THREADPRIVATE(n2frac)
    58
    69       real,allocatable,dimension(:) :: albedodat ! albedo of bare ground stocked in startfi.nc file.
Note: See TracChangeset for help on using the changeset viewer.