Ignore:
Timestamp:
Jun 18, 2025, 5:12:20 PM (5 weeks ago)
Author:
aborella
Message:

Merge with trunk r5653

Location:
LMDZ6/branches/contrails
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/contrails

  • LMDZ6/branches/contrails/libf/phylmd/dyn1d/1DUTILS.h

    r5392 r5717  
    415415       CALL getin('tau_soil_nudge',tau_soil_nudge)
    416416
     417!Config  Key  = nb_ter_srf
     418!Config  Desc = nb_ter_srf
     419!Config  Def  = 0
     420!Config  Help =
     421       nb_ter_srf = 0
     422       CALL getin('nb_ter_srf',nb_ter_srf)
     423
     424!Config  Key  = alpha_soil_ter_srf
     425!Config  Desc = alpha_soil_ter_srf
     426!Config  Def  = 2.
     427!Config  Help =
     428       alpha_soil_ter_srf = 2.
     429       CALL getin('alpha_soil_ter_srf',alpha_soil_ter_srf)
     430
     431!Config  Key  = period_ter_srf
     432!Config  Desc = period_ter_srf
     433!Config  Def  = 1800.
     434!Config  Help =
     435       period_ter_srf = 1800.
     436       CALL getin('period_ter_srf',period_ter_srf)
     437
     438!Config  Key  = frac_ter_srf
     439!Config  Desc = frac_ter_srf
     440!Config  Def  = 0.
     441!Config  Help =
     442       frac_ter_srf = 0.
     443       CALL getin('frac_ter_srf',frac_ter_srf)
     444
     445!Config  Key  = rugos_ter_srf
     446!Config  Desc = rugos_ter_srf
     447!Config  Def  = 0.
     448!Config  Help =
     449       rugos_ter_srf = 0.
     450       CALL getin('rugos_ter_srf',rugos_ter_srf)
     451
     452!Config  Key  = ratio_z0m_z0h_ter_srf
     453!Config  Desc = ratio_z0m_z0h_ter_srf
     454!Config  Def  = 10.
     455!Config  Help =
     456       ratio_z0m_z0h_ter_srf = 10.
     457       CALL getin('ratio_z0m_z0h_ter_srf',ratio_z0m_z0h_ter_srf)
     458
     459!Config  Key  = albedo_ter_srf
     460!Config  Desc = albedo_ter_srf
     461!Config  Def  = 0.
     462!Config  Help =
     463       albedo_ter_srf = 0.
     464       CALL getin('albedo_ter_srf',albedo_ter_srf)
     465
     466!Config  Key  = beta_ter_srf
     467!Config  Desc = beta_ter_srf
     468!Config  Def  = 0.
     469!Config  Help =
     470       beta_ter_srf = 0.
     471       CALL getin('beta_ter_srf',beta_ter_srf)
     472
     473!Config  Key  = inertie_ter_srf
     474!Config  Desc = inertie_ter_srf
     475!Config  Def  = 0.
     476!Config  Help =
     477       inertie_ter_srf = 0.
     478       CALL getin('inertie_ter_srf',inertie_ter_srf)
     479
     480!Config  Key  = hcond_ter_srf
     481!Config  Desc = hcond_ter_srf
     482!Config  Def  = 0.
     483!Config  Help =
     484       hcond_ter_srf = 0.
     485       CALL getin('hcond_ter_srf',hcond_ter_srf)
     486
     487!Config  Key  = tsurf_ter_srf
     488!Config  Desc = tsurf_ter_srf
     489!Config  Def  = 283.
     490!Config  Help =
     491       tsurf_ter_srf = 283.
     492       CALL getin('tsurf_ter_srf',tsurf_ter_srf)
     493
     494!Config  Key  = tsoil_ter_srf
     495!Config  Desc = tsoil_ter_srf
     496!Config  Def  = 283.
     497!Config  Help =
     498       tsoil_ter_srf = 283.
     499       CALL getin('tsoil_ter_srf',tsoil_ter_srf)
     500
     501!Config  Key  = tsoil_depths
     502!Config  Desc = tsoil_depths
     503!Config  Def  = 0.
     504!Config  Help =
     505       tsoil_depths = 0.
     506       CALL getin('tsoil_depths',tsoil_depths)
     507
     508!Config  Key  = nb_tsoil_depths
     509!Config  Desc = nb_tsoil_depths
     510!Config  Def  = 0
     511!Config  Help =
     512       nb_tsoil_depths = 0
     513       CALL getin('nb_tsoil_depths',nb_tsoil_depths)
     514
    417515!----------------------------------------------------------
    418516! Param??tres de for??age pour les forcages communs:
     
    631729      write(lunout,*)' nudging_t  = ', nudging_t
    632730      write(lunout,*)' nudging_qv  = ', nudging_qv
     731      write(lunout,*)' nb_ter_srf = ', nb_ter_srf
     732      write(lunout,*)' alpha_soil_ter_srf = ', alpha_soil_ter_srf
     733      write(lunout,*)' period_ter_srf = ', period_ter_srf
     734      write(lunout,*)' frac_ter_srf = ', frac_ter_srf
     735      write(lunout,*)' rugos_ter_srf = ', rugos_ter_srf
     736      write(lunout,*)' ratio_z0m_z0h_ter_srf = ', ratio_z0m_z0h_ter_srf
     737      write(lunout,*)' albedo_ter_srf = ', albedo_ter_srf
     738      write(lunout,*)' beta_ter_srf = ', beta_ter_srf
     739      write(lunout,*)' inertie_ter_srf = ', inertie_ter_srf
     740      write(lunout,*)' hcond_ter_srf = ', hcond_ter_srf
     741      write(lunout,*)' tsurf_ter_srf = ', tsurf_ter_srf
     742      write(lunout,*)' tsoil_ter_srf = ', tsoil_ter_srf
     743
    633744      IF (forcing_type .eq.40) THEN
    634745        write(lunout,*) '--- Forcing type GCSS Old --- with:'
  • LMDZ6/branches/contrails/libf/phylmd/dyn1d/compar1d_mod_h.f90

    r5302 r5717  
    88          iflag_nudge, snowmass, &
    99          restart, ok_old_disvert, &
     10          nb_ter_srf, alpha_soil_ter_srf, period_ter_srf, frac_ter_srf, &
     11          rugos_ter_srf, ratio_z0m_z0h_ter_srf, albedo_ter_srf, beta_ter_srf, &
     12          inertie_ter_srf, hcond_ter_srf, tsurf_ter_srf, tsoil_ter_srf, &
     13          tsoil_depths, nb_tsoil_depths, &
    1014          tadv, tadvv, tadvh, qadv, qadvv, qadvh, thadv, thadvv, thadvh, &
    1115          trad, forc_omega, forc_u, forc_v, forc_w, forc_geo, forc_ustar, &
     
    4448  LOGICAL :: ok_old_disvert
    4549
     50  INTEGER :: nb_ter_srf
     51  REAL :: alpha_soil_ter_srf
     52  REAL :: period_ter_srf
     53  REAL, DIMENSION(5) :: frac_ter_srf
     54  REAL, DIMENSION(5) :: rugos_ter_srf
     55  REAL, DIMENSION(5) :: ratio_z0m_z0h_ter_srf
     56  REAL, DIMENSION(5) :: albedo_ter_srf
     57  REAL, DIMENSION(5) :: beta_ter_srf
     58  REAL, DIMENSION(5) :: inertie_ter_srf
     59  REAL, DIMENSION(5) :: hcond_ter_srf
     60  REAL, DIMENSION(5) :: tsurf_ter_srf
     61  REAL, DIMENSION(5*5) :: tsoil_ter_srf
     62  REAL, DIMENSION(5*5) :: tsoil_depths
     63  INTEGER :: nb_tsoil_depths
     64
    4665  ! Pour les forcages communs: ces entiers valent 0 ou 1
    4766  ! tadv= advection tempe, tadvv= adv tempe verticale, tadvh= adv tempe horizontale
     
    6584  !$OMP      iflag_nudge, snowmass, &
    6685  !$OMP      restart, ok_old_disvert, &
     86  !$OMP      nb_ter_srf, frac_ter_srf, rugos_ter_srf, albedo_ter_srf,         &
     87  !$OMP      beta_ter_srf, inertie_ter_srf, alpha_soil_ter_srf,               &
     88  !$OMP      period_ter_srf, hcond_ter_srf, ratio_z0m_z0h_ter_srf,            &
     89  !$OMP      tsurf_ter_srf, tsoil_ter_srf, tsoil_depths, nb_tsoil_depths,     &
    6790  !$OMP      tadv, tadvv, tadvh, qadv, qadvv, qadvh, thadv, thadvv, thadvh, &
    6891  !$OMP      trad, forc_omega, forc_u, forc_v, forc_w, forc_geo, forc_ustar, &
  • LMDZ6/branches/contrails/libf/phylmd/dyn1d/scm.f90

    r5626 r5717  
    88       clwcon, detr_therm, &
    99       qsol, fevap, z0m, z0h, agesno, &
     10       frac_tersrf, z0m_tersrf, ratio_z0m_z0h_tersrf, &
     11       albedo_tersrf, beta_tersrf, inertie_tersrf, &
     12       alpha_soil_tersrf, period_tersrf, hcond_tersrf, &
     13       tsurfi_tersrf, tsoili_tersrf, tsoil_depth, &
    1014       du_gwd_rando, du_gwd_front, entr_therm, f0, fm_therm, &
    1115       falb_dir, falb_dif, &
     
    179183      real :: fder(1),snsrf(1,nbsrf),qsurfsrf(1,nbsrf)
    180184      real :: tsoil(1,nsoilmx,nbsrf)
     185      ! AM
     186      REAL, ALLOCATABLE, DIMENSION(:,:) :: tsoil_ter_srf2 ! resized initial soil temperature on vertical levels (K)
     187      REAL, ALLOCATABLE, DIMENSION(:,:) :: tsoil_depths2  ! resized soil depth at which inititial temperature is given (m)
    181188
    182189!---------------------------------------------------------------------
     
    223230!                           <> 0, tendencies of forcing are not added
    224231      INTEGER :: flag_inhib_forcing = 0
    225 
     232      CHARACTER(len=80) :: abort_message
     233      CHARACTER(len=20) :: modname = 'scm'
    226234
    227235      print*,'VOUS ENTREZ DANS LE 1D FORMAT STANDARD'
     
    386394!     call init_phys_lmdz(1,1,llm,1,(/1/)) ! job now done via iniphysiq
    387395!     but we still need to initialize dimphy module (klon,klev,etc.)  here.
    388       call init_dimphy1D(1,llm)
     396      call init_dimphy1D(1,llm,nb_ter_srf,nb_tsoil_depths)
    389397      call suphel
    390398      call init_infotrac
     
    561569        agesno  = xagesno
    562570        tsoil(:,:,:)=tsurf
     571
     572        iflag_hetero_surf = 0
     573        CALL getin('iflag_hetero_surf',iflag_hetero_surf)
     574
     575        IF (iflag_hetero_surf .GT. 0) THEN
     576          PRINT*, 'scm iflag_hetero_surf', iflag_hetero_surf
     577          IF ((nbtersrf .LT. 2) .OR. (nbtersrf .GT. max_nbtersrf)) THEN
     578            abort_message='The number of continental sub-surfaces (nb_ter_srf) must be between 2 and 5'
     579            CALL abort_physic(modname,abort_message,1)
     580          ENDIF
     581          ! resized initial soil temperature on vertical levels and soil depth at which inititial temperature is given
     582          ALLOCATE(tsoil_ter_srf2(nbtsoildepths,nbtersrf))
     583          ALLOCATE(tsoil_depths2(nbtsoildepths,nbtersrf))
     584          tsoil_ter_srf2(:,:) = 0.
     585          tsoil_depths2(:,:) = 0.
     586          DO i=1, nbtersrf
     587            DO l=1, nbtsoildepths
     588              k = nbtsoildepths*(i-1)+l
     589              tsoil_ter_srf2(l,i) = tsoil_ter_srf(k)
     590              tsoil_depths2(l,i) = tsoil_depths(k)
     591            ENDDO
     592          ENDDO
     593          !
     594          DO i=1, nbtersrf
     595            frac_tersrf(:,i) = frac_ter_srf(i)                   ! fraction of land surface heterogeneity (-)
     596            z0m_tersrf(:,i) = rugos_ter_srf(i)                   ! roughness length for momentum of land sub-surfaces (m)
     597            ratio_z0m_z0h_tersrf(:,i) = ratio_z0m_z0h_ter_srf(i) ! ratio of heat to momentum roughness length of land sub-surfaces (-)
     598            albedo_tersrf(:,i) = albedo_ter_srf(i)               ! albedo of land sub-surfaces (-)
     599            beta_tersrf(:,i) = beta_ter_srf(i)                   ! evapotranspiration coef of land sub-surfaces (-)
     600            inertie_tersrf(:,i) = inertie_ter_srf(i)             ! soil thermal inertia of land sub-surfaces (J/m2/K/s1/2)
     601            hcond_tersrf(:,i) = hcond_ter_srf(i)                 ! soil heat conductivity (W/(m.K))
     602            tsurfi_tersrf(:,i) = tsurf_ter_srf(i)                ! initial surface temperature (K)
     603            DO l=1, nbtsoildepths
     604              tsoili_tersrf(:,l,i) = tsoil_ter_srf2(l,i)         ! initial soil temperature on vertical levels (K)
     605              tsoil_depth(:,l,i) = tsoil_depths2(l,i)
     606            ENDDO
     607          ENDDO
     608          alpha_soil_tersrf = alpha_soil_ter_srf               ! ratio between the thicknesses of 2 successive layers (-)
     609          period_tersrf = period_ter_srf                       ! temperature oscillation amplitude period
     610          !
     611          DEALLOCATE(tsoil_ter_srf2)
     612          DEALLOCATE(tsoil_depths2)
     613        ENDIF
     614
    563615!-----------------------------------------------------------------------
    564616        call pbl_surface_init(fder, snsrf, qsurfsrf, tsoil)
Note: See TracChangeset for help on using the changeset viewer.