Ignore:
Timestamp:
Jul 28, 2025, 7:23:15 PM (7 days ago)
Author:
aborella
Message:

Merge with trunk r5789

Location:
LMDZ6/branches/contrails
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/contrails

  • LMDZ6/branches/contrails/libf/phylmd/oasis.F90

    r5618 r5791  
    6161  INTEGER, PARAMETER :: ids_delta_sst = 30, ids_delta_sal = 31, ids_dter = 32, &
    6262       ids_dser = 33, ids_dt_ds = 34
     63  INTEGER, PARAMETER :: ids_atmn2o = 35
     64  INTEGER, PARAMETER :: ids_atmndp = 36
     65  INTEGER, PARAMETER :: ids_atmnh3 = 37
    6366 
    64   INTEGER, PARAMETER :: maxsend    = 34  ! Maximum number of fields to send
    65  
     67  INTEGER, PARAMETER :: maxsend    = 37  ! Maximum number of fields to send
     68  INTEGER, PARAMETER :: maxsend_phys = 34 ! Maximum number of fields to send in LMDZ phys - the last one will be send by Inca
     69
    6670  ! Id for fields received from ocean
    6771
     
    7882  INTEGER, PARAMETER :: idr_ocedms = 10
    7983  INTEGER, PARAMETER :: idr_ocen2o = 11
    80 
    81   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
    8287  INTEGER, PARAMETER :: maxrecv_phys = 9      ! Maximum number of fields to receive in physiq (without fields received in INCA model )
    8388                                              ! will be changed in next version - INCA fields will be received in LMDZ (like for ORCHIDEE fields)
     
    115120    USE carbon_cycle_mod, ONLY : carbon_cycle_cpl
    116121    use wxios_mod, ONLY : wxios_context_init
    117     USE chemistry_cycle_mod, ONLY : dms_cycle_cpl, n2o_cycle_cpl
     122    USE chemistry_cycle_mod, ONLY : dms_cycle_cpl, n2o_cycle_cpl, ndp_cycle_cpl, nh3_cycle_cpl
    118123    USE lmdz_xios 
    119124    USE print_control_mod, ONLY: lunout
     
    227232            infosend(ids_atmco2)%action = .TRUE. ; infosend(ids_atmco2)%name = 'COATMCO2'
    228233        ENDIF
     234        IF (n2o_cycle_cpl) THEN
     235            infosend(ids_atmn2o)%action = .TRUE. ; infosend(ids_atmn2o)%name = 'COATMN2O'
     236        ENDIF
     237        IF (ndp_cycle_cpl) THEN
     238            infosend(ids_atmndp)%action = .TRUE. ; infosend(ids_atmndp)%name = 'COATMNDP'
     239        ENDIF
     240        IF (nh3_cycle_cpl) THEN
     241            infosend(ids_atmnh3)%action = .TRUE. ; infosend(ids_atmnh3)%name = 'COATMNH3'
     242        ENDIF
    229243        infosend(ids_qraioc)%action = .TRUE. ; infosend(ids_qraioc)%name = 'COQRAIOC'
    230244        infosend(ids_qsnooc)%action = .TRUE. ; infosend(ids_qsnooc)%name = 'COQSNOOC'
     
    272286      inforecv(idr_ocen2o)%action = .TRUE. ; inforecv(idr_ocen2o)%name = 'SIN2OFLX'
    273287   ENDIF
    274  
     288   IF (nh3_cycle_cpl) THEN
     289      inforecv(idr_ocenh3)%action = .TRUE. ; inforecv(idr_ocenh3)%name = 'SINH3FLX'
     290   ENDIF
    275291
    276292!************************************************************************************
     
    358374    END DO
    359375
    360 
    361 IF (CPPKEY_INCA) THEN
    362     IF (dms_cycle_cpl .OR. n2o_cycle_cpl) THEN
    363        CALL init_inca_oasis(inforecv(idr_ocedms:idr_ocen2o))
    364     ENDIF
    365 END IF
    366376 
    367377!************************************************************************************
     
    397407    ENDIF
    398408
     409
     410IF (CPPKEY_INCA) THEN
     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))
     413    ENDIF
     414END IF
     415
    399416!$OMP END MASTER
    400417   
     
    451468             .AND. ierror.NE.PRISM_Input .AND. ierror.NE.PRISM_RecvOut &
    452469             .AND. ierror.NE.PRISM_FromRestOut) THEN
    453               WRITE (lunout,*)  'Error with receiving filed : ', inforecv(i)%name, ktime   
     470              WRITE (lunout,*)  'Error with receiving field: ', inforecv(i)%name, ktime   
    454471              abort_message=' Problem in prism_get_proto '
    455472              CALL abort_physic(modname,abort_message,1)
     
    479496    INTEGER, INTENT(IN)                              :: ktime
    480497    LOGICAL, INTENT(IN)                              :: last
    481     REAL, DIMENSION(nbp_lon, jj_nb, maxsend), INTENT(IN) :: tab_put
     498    REAL, DIMENSION(nbp_lon, jj_nb, maxsend_phys), INTENT(IN) :: tab_put
    482499
    483500! Local variables
     
    513530       IF (is_south_pole_dyn) wend=iend-nbp_lon+1
    514531       
    515        DO i = 1, maxsend
     532       DO i = 1, maxsend_phys
    516533          IF (infosend(i)%action) THEN
    517534             field = RESHAPE(tab_put(:,:,i),(/nbp_lon*jj_nb/))
     
    525542!************************************************************************************
    526543
    527     DO i = 1, maxsend
     544    DO i = 1, maxsend_phys
    528545      IF (infosend(i)%action .AND. infosend(i)%nid .NE. -1 ) THEN
    529546          field = RESHAPE(tab_put(:,:,i),(/nbp_lon*jj_nb/))
Note: See TracChangeset for help on using the changeset viewer.