Changeset 5773


Ignore:
Timestamp:
Jul 11, 2025, 11:11:36 AM (31 hours ago)
Author:
acozic
Message:

Add possibility to couple nh3 between pisces and inca
use oasis initialization in lmdz
dev by T. Lurton

Location:
LMDZ6/trunk/libf/phylmd
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/chemistry_cycle_mod.f90

    r5687 r5773  
    1515
    1616! Variables read from parmeter file physiq.def
    17   LOGICAL, SAVE, PUBLIC :: dms_cycle_cpl       ! Coupling of DMS fluxes between LMDZ/ORCHIDEE and LMDZ/OCEAN(PISCES)
     17  LOGICAL, SAVE, PUBLIC :: dms_cycle_cpl       ! Coupling of DMS fluxes between INCA and PISCES
    1818!$OMP THREADPRIVATE(dms_cycle_cpl)   
    1919
    20   LOGICAL, SAVE, PUBLIC :: n2o_cycle_cpl       ! Coupling of N2O fluxes between LMDZ/ORCHIDEE and LMDZ/OCEAN(PISCES)
     20  LOGICAL, SAVE, PUBLIC :: n2o_cycle_cpl       ! Coupling of N2O fluxes between INCA and PISCES / PISCES and INCA
    2121!$OMP THREADPRIVATE(n2o_cycle_cpl)   
    2222
    23   LOGICAL, SAVE, PUBLIC :: ndp_cycle_cpl       ! Coupling of N deposition between LMDZ/ORCHIDEE and LMDZ/OCEAN(PISCES)
     23  LOGICAL, SAVE, PUBLIC :: ndp_cycle_cpl       ! Coupling of N deposition between INCA and PISCES
    2424!$OMP THREADPRIVATE(ndp_cycle_cpl)
    2525
     26  LOGICAL, SAVE, PUBLIC :: nh3_cycle_cpl       ! Coupling of NH3 fluxes between PISCES and INCA
     27!$OMP THREADPRIVATE(nh3_cycle_cpl)
    2628 
    2729END MODULE chemistry_cycle_mod
  • LMDZ6/trunk/libf/phylmd/conf_phys_m.f90

    r5687 r5773  
    3636    USE carbon_cycle_mod,  ONLY: read_fco2_ocean_cor,var_fco2_ocean_cor
    3737    USE carbon_cycle_mod,  ONLY: read_fco2_land_cor,var_fco2_land_cor
    38     USE chemistry_cycle_mod, ONLY: dms_cycle_cpl, n2o_cycle_cpl, ndp_cycle_cpl
     38    USE chemistry_cycle_mod, ONLY: dms_cycle_cpl, n2o_cycle_cpl, ndp_cycle_cpl, nh3_cycle_cpl
    3939    USE mod_grid_phy_lmdz, ONLY: klon_glo
    4040    USE print_control_mod, ONLY: lunout
     
    240240    LOGICAL, SAVE :: carbon_cycle_cpl_omp
    241241    LOGICAL, SAVE :: carbon_cycle_rad_omp
    242     LOGICAL, SAVE :: dms_cycle_cpl_omp, n2o_cycle_cpl_omp, ndp_cycle_cpl_omp
     242    LOGICAL, SAVE :: dms_cycle_cpl_omp, n2o_cycle_cpl_omp, ndp_cycle_cpl_omp, nh3_cycle_cpl_omp
    243243    INTEGER, SAVE :: level_coupling_esm_omp
    244244    LOGICAL, SAVE :: read_fco2_ocean_cor_omp
     
    24112411    !Config Desc = send ndep to pisces via oasis
    24122412    !Config Def  = .FALSE.
    2413     !Config Help = can be activated only if lmdz use inca for the atmospheric chemistry
     2413    !Config Help = can be activated only if lmdz use inca for the atmospheric chemistry
     2414
     2415   
     2416    nh3_cycle_cpl_omp=.FALSE.
     2417    CALL getin('transm_nh3_oa',nh3_cycle_cpl_omp)
     2418    !
     2419    !Config Key  = nh3_cycle_cpl
     2420    !Config Desc = send nh3 from and to pisces via oasis
     2421    !Config Def  = .FALSE.
     2422    !Config Help = can be activated only if lmdz use inca for the atmospheric chemistry
    24142423   
    24152424    !$OMP END MASTER
     
    27122721    n2o_cycle_cpl = n2o_cycle_cpl_omp
    27132722    ndp_cycle_cpl = ndp_cycle_cpl_omp
     2723    nh3_cycle_cpl = nh3_cycle_cpl_omp
    27142724    !rajout Olivier Torres
    27152725    kz0=kz0_omp
     
    28372847
    28382848    ! Test on chemistry cycle
    2839     IF ((type_trac .ne. "inca" .AND. type_trac .ne. "inco") .AND. ( dms_cycle_cpl .OR. n2o_cycle_cpl .OR. ndp_cycle_cpl )  ) THEN
    2840        CALL abort_physic('conf_phys', 'dms_cycle_cpl, n2o_cycle_cpl or ndp_cycle_cpl can be TRUE only with INCA coupling model',1)
     2849    IF ((type_trac .ne. "inca" .AND. type_trac .ne. "inco") .AND. ( dms_cycle_cpl .OR. n2o_cycle_cpl .OR. ndp_cycle_cpl .OR. nh3_cycle_cpl )  ) THEN
     2850       CALL abort_physic('conf_phys', 'transm_dms_oa, transm_n2o_oa, transm_ndp_ao or transm_nh3_oa can be TRUE only with INCA coupling model',1)
    28412851    ENDIF
    28422852   
     
    30753085    WRITE(lunout,*) ' n2o_cycle_cpl = ', n2o_cycle_cpl
    30763086    WRITE(lunout,*) ' ndp_cycle_cpl = ', ndp_cycle_cpl
     3087    WRITE(lunout,*) ' nh3_cycle_cpl = ', nh3_cycle_cpl
    30773088    WRITE(lunout,*) ' iflag_tsurf_inlandsis = ', iflag_tsurf_inlandsis
    30783089    WRITE(lunout,*) ' iflag_temp_inlandsis = ', iflag_temp_inlandsis
  • LMDZ6/trunk/libf/phylmd/oasis.F90

    r5687 r5773  
    6363  INTEGER, PARAMETER :: ids_atmn2o = 35
    6464  INTEGER, PARAMETER :: ids_atmndp = 36
     65  INTEGER, PARAMETER :: ids_atmnh3 = 37
    6566 
    66   INTEGER, PARAMETER :: maxsend    = 36  ! Maximum number of fields to send
     67  INTEGER, PARAMETER :: maxsend    = 37  ! Maximum number of fields to send
    6768  INTEGER, PARAMETER :: maxsend_phys = 34 ! Maximum number of fields to send in LMDZ phys - the last one will be send by Inca
    6869
     
    8182  INTEGER, PARAMETER :: idr_ocedms = 10
    8283  INTEGER, PARAMETER :: idr_ocen2o = 11
    83 
    84   INTEGER, PARAMETER :: maxrecv      = 11     ! Maximum number of fields to receive
     84  INTEGER, PARAMETER :: idr_ocenh3 = 12
     85
     86  INTEGER, PARAMETER :: maxrecv      = 12     ! Maximum number of fields to receive
    8587  INTEGER, PARAMETER :: maxrecv_phys = 9      ! Maximum number of fields to receive in physiq (without fields received in INCA model )
    8688                                              ! will be changed in next version - INCA fields will be received in LMDZ (like for ORCHIDEE fields)
     
    118120    USE carbon_cycle_mod, ONLY : carbon_cycle_cpl
    119121    use wxios_mod, ONLY : wxios_context_init
    120     USE chemistry_cycle_mod, ONLY : dms_cycle_cpl, n2o_cycle_cpl, ndp_cycle_cpl
     122    USE chemistry_cycle_mod, ONLY : dms_cycle_cpl, n2o_cycle_cpl, ndp_cycle_cpl, nh3_cycle_cpl
    121123    USE lmdz_xios 
    122124    USE print_control_mod, ONLY: lunout
     
    236238            infosend(ids_atmndp)%action = .TRUE. ; infosend(ids_atmndp)%name = 'COATMNDP'
    237239        ENDIF
     240        IF (nh3_cycle_cpl) THEN
     241            infosend(ids_atmnh3)%action = .TRUE. ; infosend(ids_atmnh3)%name = 'COATMNH3'
     242        ENDIF
    238243        infosend(ids_qraioc)%action = .TRUE. ; infosend(ids_qraioc)%name = 'COQRAIOC'
    239244        infosend(ids_qsnooc)%action = .TRUE. ; infosend(ids_qsnooc)%name = 'COQSNOOC'
     
    281286      inforecv(idr_ocen2o)%action = .TRUE. ; inforecv(idr_ocen2o)%name = 'SIN2OFLX'
    282287   ENDIF
    283  
     288   IF (nh3_cycle_cpl) THEN
     289      inforecv(idr_ocenh3)%action = .TRUE. ; inforecv(idr_ocenh3)%name = 'SINH3FLX'
     290   ENDIF
    284291
    285292!************************************************************************************
     
    402409
    403410IF (CPPKEY_INCA) THEN
    404     IF (dms_cycle_cpl .OR. n2o_cycle_cpl .OR. ndp_cycle_cpl) THEN
    405        CALL init_inca_oasis(inforecv(idr_ocedms:idr_ocen2o),infosend(ids_atmn2o:ids_atmndp))
     411    IF (dms_cycle_cpl .OR. n2o_cycle_cpl .OR. ndp_cycle_cpl .OR. nh3_cycle_cpl) THEN
     412       CALL init_inca_oasis(inforecv(idr_ocedms:idr_ocenh3),infosend(ids_atmn2o:ids_atmnh3))
    406413    ENDIF
    407414END IF
Note: See TracChangeset for help on using the changeset viewer.