New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 11489 for NEMO/branches/2019/ENHANCE-02_ISF_nemo/src – NEMO

Ignore:
Timestamp:
2019-09-02T15:30:17+02:00 (5 years ago)
Author:
mathiot
Message:

ENHANCE-02_ISF: move ln_isf out of namsbc and add an easy way to run with isf cavity and no ice shelf melt (ticket #2142)

Location:
NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isf.F90

    r11423 r11489  
    3030   ! 0.1 -------- ice shelf cavity parameter -------------- 
    3131   CHARACTER(LEN=256), PUBLIC :: cn_isfdir 
    32    CHARACTER(LEN=256), PUBLIC :: cn_isfload      !: ice shelf load computation method 
    33    ! 
    34    ! 0.2 -------- ice shelf cavity melt namelist parameter ------------- 
     32   ! 
     33   ! 0.2 -------- ice shelf cavity opened namelist parameter ------------- 
    3534   LOGICAL           , PUBLIC :: ln_isfcav_mlt   !: logical for the use of ice shelf parametrisation 
    3635   REAL(wp)          , PUBLIC :: rn_gammat0      !: temperature exchange coeficient    [] 
     
    3938   CHARACTER(LEN=256), PUBLIC :: cn_gammablk     !: gamma formulation 
    4039   CHARACTER(LEN=256), PUBLIC :: cn_isfcav_mlt   !: melt formulation (cavity/param) 
     40   CHARACTER(LEN=256), PUBLIC :: cn_isfload      !: ice shelf load computation method 
    4141   TYPE(FLD_N)       , PUBLIC :: sn_isfcav_fwf   !: information about the isf melting file to be read 
    4242   ! 
    43    ! 0.3 -------- ice shelf param. melt namelist parameter ------------- 
     43   ! 0.3 -------- ice shelf cavity parametrised namelist parameter ------------- 
    4444   LOGICAL           , PUBLIC :: ln_isfpar_mlt   !: logical for the computation of melt inside the cavity 
    4545   CHARACTER(LEN=256), PUBLIC :: cn_isfpar_mlt   !: melt formulation (cavity/param) 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfstp.F90

    r11486 r11489  
    127127      INTEGER               :: ji, jj 
    128128      !!---------------------------------------------------------------------- 
    129       NAMELIST/namisf/ ln_isfcav_mlt, cn_isfcav_mlt, cn_gammablk, rn_gammat0, rn_gammas0, rn_htbl, sn_isfcav_fwf,   & 
     129      NAMELIST/namisf/ ln_isf       ,                                                                               &  
     130         &             ln_isfcav_mlt, cn_isfcav_mlt, cn_gammablk, rn_gammat0, rn_gammas0, rn_htbl, sn_isfcav_fwf,   & 
    130131         &             ln_isfpar_mlt, cn_isfpar_mlt, sn_isfpar_fwf, sn_isfpar_zmin, sn_isfpar_zmax, sn_isfpar_Leff, & 
    131132         &             ln_isfcpl    , nn_drown, ln_isfcpl_cons,                                                     & 
     
    143144      risf_par_tsc(:,:,:) = 0.0_wp    ; risf_par_tsc_b(:,:,:) = 0.0_wp 
    144145      ! 
    145       ! terminate routine now if no ice shelf melt formulation specify 
    146       IF ( .NOT. ln_isf ) RETURN 
    147       ! 
    148146      REWIND( numnam_ref )              ! Namelist namsbc_rnf in reference namelist : Runoffs  
    149147      READ  ( numnam_ref, namisf, IOSTAT = ios, ERR = 901) 
     
    161159         WRITE(numout,*) '   Namelist namisf :' 
    162160         ! 
    163          WRITE(numout,*) '      melt inside the cavity                  ln_isfcav_mlt   = ', ln_isfcav_mlt 
    164          IF ( ln_isfcav ) THEN 
    165             WRITE(numout,*) '         melt formulation                        cn_isfcav_mlt   = ', TRIM(cn_isfcav_mlt) 
    166             WRITE(numout,*) '         thickness of the top boundary layer     rn_htbl     = ', rn_htbl 
    167             WRITE(numout,*) '         gamma formulation                       cn_gammablk = ', TRIM(cn_gammablk)  
    168             IF ( TRIM(cn_gammablk) .NE. 'spe' ) THEN  
    169                WRITE(numout,*) '            gammat coefficient                      rn_gammat0  = ', rn_gammat0   
    170                WRITE(numout,*) '            gammas coefficient                      rn_gammas0  = ', rn_gammas0   
    171                WRITE(numout,*) '            top drag coef. used (from namdrg_top)   rn_Cd0      = ', r_Cdmin_top  
     161         WRITE(numout,*) '   ice shelf cavity (open or parametrised)  ln_isf = ', ln_isf 
     162         ! 
     163         IF ( ln_isf ) THEN 
     164            WRITE(numout,*) '      melt inside the cavity                  ln_isfcav_mlt   = ', ln_isfcav_mlt 
     165            IF ( ln_isfcav ) THEN 
     166               WRITE(numout,*) '         melt formulation                        cn_isfcav_mlt   = ', TRIM(cn_isfcav_mlt) 
     167               WRITE(numout,*) '         thickness of the top boundary layer     rn_htbl     = ', rn_htbl 
     168               WRITE(numout,*) '         gamma formulation                       cn_gammablk = ', TRIM(cn_gammablk)  
     169               IF ( TRIM(cn_gammablk) .NE. 'spe' ) THEN  
     170                  WRITE(numout,*) '            gammat coefficient                      rn_gammat0  = ', rn_gammat0   
     171                  WRITE(numout,*) '            gammas coefficient                      rn_gammas0  = ', rn_gammas0   
     172                  WRITE(numout,*) '            top drag coef. used (from namdrg_top)   rn_Cd0      = ', r_Cdmin_top  
     173               END IF 
    172174            END IF 
    173          END IF 
    174          WRITE(numout,*) '' 
    175          ! 
    176          WRITE(numout,*) '      ice shelf melt parametrisation          ln_isfpar_mlt    = ', ln_isfpar_mlt 
    177          IF ( ln_isfpar_mlt ) THEN 
    178             WRITE(numout,*) '         isf parametrisation formulation         cn_isfpar_mlt   = ', TRIM(cn_isfpar_mlt) 
    179          END IF 
    180          WRITE(numout,*) '' 
    181          ! 
    182          WRITE(numout,*) '      Coupling to an ice sheet model          ln_isfcpl         = ', ln_isfcpl 
    183          IF ( ln_isfcpl ) THEN 
    184             WRITE(numout,*) '         conservation activated ln_isfcpl_cons           = ', ln_isfcpl_cons 
    185             WRITE(numout,*) '            number of call of the extrapolation loop = ', nn_drown 
    186          ENDIF 
    187          ! 
    188          WRITE(numout,*) '      Ice shelf load method                   cn_isfload        = ', TRIM(cn_isfload) 
    189  
     175            WRITE(numout,*) '' 
     176            ! 
     177            WRITE(numout,*) '      ice shelf melt parametrisation          ln_isfpar_mlt    = ', ln_isfpar_mlt 
     178            IF ( ln_isfpar_mlt ) THEN 
     179               WRITE(numout,*) '         isf parametrisation formulation         cn_isfpar_mlt   = ', TRIM(cn_isfpar_mlt) 
     180            END IF 
     181            WRITE(numout,*) '' 
     182            ! 
     183            WRITE(numout,*) '      Coupling to an ice sheet model          ln_isfcpl         = ', ln_isfcpl 
     184            IF ( ln_isfcpl ) THEN 
     185               WRITE(numout,*) '         conservation activated ln_isfcpl_cons           = ', ln_isfcpl_cons 
     186               WRITE(numout,*) '            number of call of the extrapolation loop = ', nn_drown 
     187            ENDIF 
     188            ! 
     189            WRITE(numout,*) '      Ice shelf load method                   cn_isfload        = ', TRIM(cn_isfload) 
     190         ELSE 
     191            IF ( ln_isfcav ) THEN 
     192               WRITE(numout,*) '' 
     193               WRITE(numout,*) '   W A R N I N G: ice shelf cavities are open BUT no melt will be computed or read from file !' 
     194               WRITE(numout,*) '' 
     195            END IF 
     196         END IF 
     197 
     198      END IF 
     199      ! 
     200      !--------------------------------------------------------------------------------------------------------------------- 
     201      ! initialisation ice shelf load 
     202      IF ( ln_isfcav ) THEN 
     203         ! 
     204         ! compute ice shelf mask 
     205         mskisf_cav(:,:) = (1._wp - tmask(:,:,1)) * ssmask(:,:) 
     206         ! 
     207         ! compute ice shelf load 
     208         CALL isf_load( risfload ) 
     209         ! 
    190210      END IF 
    191211      ! 
     
    196216         &   CALL ctl_stop('ice shelf melt in the cavity activated (ln_isfcav_mlt) but no cavity detected in domcfg (ln_isfcav), STOP' ) 
    197217      ! 
     218      ! ice sheet coupling without cavity 
     219      IF ( ln_isfcpl .AND. (.NOT. ln_isfcav) ) & 
     220         &   CALL ctl_stop('coupling with an ice sheet model detected (ln_isfcpl) but no cavity detected in domcfg (ln_isfcav), STOP' ) 
     221      ! 
    198222      IF ( ln_isfcpl .AND. ln_isfcpl_cons .AND. ln_linssh ) & 
    199223         &   CALL ctl_stop( 'The coupling between NEMO and an ice sheet model with the conservation option does not work with the linssh option' ) 
     
    219243      END IF 
    220244      ! 
    221       !--------------------------------------------------------------------------------------------------------------------- 
    222       ! initialisation ice shelf load 
    223       IF ( ln_isfcav ) THEN 
    224          ! 
    225          ! compute ice shelf mask 
    226          mskisf_cav(:,:) = (1._wp - tmask(:,:,1)) * ssmask(:,:) 
    227          ! 
    228          ! compute ice shelf load 
    229          CALL isf_load( risfload ) 
    230          ! 
    231       END IF 
     245      ! terminate routine now if no ice shelf melt formulation specify 
     246      IF ( .NOT. ln_isf ) RETURN 
    232247      ! 
    233248      ! initialisation useful variable 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/SBC/sbcmod.F90

    r11395 r11489  
    4242   USE sbcrnf         ! surface boundary condition: runoffs 
    4343   USE sbcapr         ! surface boundary condition: atmo pressure  
    44    USE isf            ! surface boundary condition: ice shelf 
    4544   USE sbcfwb         ! surface boundary condition: freshwater budget 
    4645   USE icbstp         ! Icebergs 
     
    9089      LOGICAL ::   ll_purecpl, ll_opa, ll_not_nemo   ! local logical 
    9190      !! 
    92       NAMELIST/namsbc/ nn_fsbc  ,                                                    & 
    93          &             ln_usr   , ln_flx   , ln_blk       ,                          & 
    94          &             ln_cpl   , ln_mixcpl, nn_components,                          & 
    95          &             nn_ice   , ln_ice_embd,                                       & 
    96          &             ln_traqsr, ln_dm2dc ,                                         & 
    97          &             ln_rnf   , nn_fwb   , ln_ssr   , ln_isf    , ln_apr_dyn ,     & 
    98          &             ln_wave  , ln_cdgw  , ln_sdw   , ln_tauwoc  , ln_stcor   ,     & 
    99          &             ln_tauw  , nn_lsm, nn_sdrift 
     91      NAMELIST/namsbc/ nn_fsbc  ,                                                  & 
     92         &             ln_usr   , ln_flx     , ln_blk       ,                      & 
     93         &             ln_cpl   , ln_mixcpl  , nn_components,                      & 
     94         &             nn_ice   , ln_ice_embd,                                     & 
     95         &             ln_traqsr, ln_dm2dc   ,                                     & 
     96         &             ln_rnf   , nn_fwb     , ln_ssr   , ln_apr_dyn,              & 
     97         &             ln_wave  , ln_cdgw    , ln_sdw   , ln_tauwoc , ln_stcor,    & 
     98         &             ln_tauw  , nn_lsm     , nn_sdrift 
    10099      !!---------------------------------------------------------------------- 
    101100      ! 
     
    152151         WRITE(numout,*) '         Patm gradient added in ocean & ice Eqs.    ln_apr_dyn    = ', ln_apr_dyn 
    153152         WRITE(numout,*) '         runoff / runoff mouths                     ln_rnf        = ', ln_rnf 
    154          WRITE(numout,*) '         iceshelf formulation                       ln_isf        = ', ln_isf 
    155153         WRITE(numout,*) '         nb of iterations if land-sea-mask applied  nn_lsm        = ', nn_lsm 
    156154         WRITE(numout,*) '         surface wave                               ln_wave       = ', ln_wave 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/TRA/trasbc.F90

    r11395 r11489  
    1010   !!             -   !  2010-09  (C. Ethe, G. Madec) Merge TRA-TRC 
    1111   !!            3.6  !  2014-11  (P. Mathiot) isf melting forcing  
     12   !!            4.1  !  2019-09  (P. Mathiot) isf moved in traisf 
    1213   !!---------------------------------------------------------------------- 
    1314 
     
    6061      !!      (1) Fext, external forcing (i.e. flux through the (air+ice)-sea interface);  
    6162      !!      (2) Fwe , tracer carried with the water that is exchanged with air+ice.  
    62       !!               The input forcing fields (emp, rnf, sfx, isf) contain Fext+Fwe, 
     63      !!               The input forcing fields (emp, rnf, sfx) contain Fext+Fwe, 
    6364      !!             they are simply added to the tracer trend (tsa). 
    6465      !!               In linear free surface case (ln_linssh=T), the volume of the 
Note: See TracChangeset for help on using the changeset viewer.