Ignore:
Timestamp:
2019-09-02T15:30:17+02:00 (18 months 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
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/cfgs/SHARED/namelist_ref

    r11487 r11489  
    179179!!   namsbc_rnf      river runoffs                                      (ln_rnf     =T) 
    180180!!   namsbc_apr      Atmospheric Pressure                               (ln_apr_dyn =T) 
    181 !!   namsbc_iscpl    coupling option between land ice model and ocean   (ln_isfcav  =T) 
    182181!!   namsbc_wave     external fields from wave model                    (ln_wave    =T) 
    183182!!   namberg         iceberg floats                                     (ln_icebergs=T) 
     
    216215   ln_rnf      = .false.   !  runoffs                                   (T => fill namsbc_rnf) 
    217216   ln_apr_dyn  = .false.   !  Patm gradient added in ocean & ice Eqs.   (T => fill namsbc_apr ) 
    218    ln_isf      = .false.   !  ice shelf                                 (T   => fill namsbc_isf & namsbc_iscpl) 
    219217   ln_wave     = .false.   !  Activate coupling with wave  (T => fill namsbc_wave) 
    220218   ln_cdgw     = .false.   !  Neutral drag coefficient read from wave model (T => ln_wave=.true. & fill namsbc_wave) 
     
    434432/ 
    435433!----------------------------------------------------------------------- 
    436 &namisf       !  Top boundary layer (ISF)                              (ln_isf = T .AND. ln_isfcav: read (ln_read_cfg=T)  
    437 !-----------------------------------------------------------------------                         or set or usr_def_zgr ) 
    438    cn_isfdir = './' 
     434&namisf       !  Top boundary layer (ISF)                               (default: OFF) 
     435!----------------------------------------------------------------------- 
     436   ! 
     437   ! ---------------- general ------------------------------- 
     438   ! 
     439   ln_isf = .false.           ! activate ice shelf module 
     440   cn_isfdir = './'           ! directory for all ice shelf input file 
     441   ! 
     442   ! ---------------- cavities opened ------------------------------- 
     443   ! 
    439444   cn_isfload = 'isomip' 
    440  
     445   ! 
    441446   ln_isfcav_mlt = .false.    ! ice shelf melting into the cavity 
    442447      cn_isfcav_mlt = '3eq'   ! ice shelf melting formulation (spe/2eq/3eq/oasis) 
     
    444449      !                       ! 2eq = ISOMIP  like: 2 equations formulation (Hunter et al., 2006) 
    445450      !                       ! 3eq = ISOMIP+ like: 3 equations formulation (Asay-Davis et al., 2015) 
    446       !                       ! oasis = fwfisf is given by oasis 
     451      !                       ! oasis = fwfisf is given by oasis and pattern by file sn_isfcav_fwf 
    447452      !              !  cn_isfcav_mlt = 2eq or 3eq cases: 
    448453      cn_gammablk = 'ad15'    ! scheme to compute gammat/s (spe,ad15,hj99) 
     
    460465      !           !             !  (if <0  months)  !   name    !  (logical)  !  (T/F)  ! 'monthly' ! filename ! pairing  ! filename      ! 
    461466      sn_isfcav_fwf = 'isfmlt_cav',      -12       , 'fwflisf' ,  .false.    , .true.  , 'yearly'  ,    ''    ,   ''     ,    '' 
    462  
    463  
     467   ! 
     468   ! ---------------- cavities parametrised ------------------------------- 
     469   ! 
    464470   ln_isfpar_mlt = .false.   ! ice shelf melting parametrised 
    465471      cn_isfpar_mlt = 'spe'  ! ice shelf melting parametrisation (spe/bg03/oasis) 
     472      !                      ! spe   = fwfisf is read from a forcing field 
     473      !                      ! bg03  = melt computed using Beckmann and Goosse parametrisation 
     474      !                      ! oasis = fwfisf is given by oasis and pattern by file sn_isfpar_fwf 
    466475      ! 
    467476      !* all cases 
     
    475484      !* 'bg03' case 
    476485      sn_isfpar_Leff = 'isfmlt_par',       0        ,'Leff'     ,  .false.    , .true.  , 'yearly'  ,    ''    ,   ''     ,    '' 
    477  
    478     
     486   ! 
     487   ! ---------------- ice sheet coupling ------------------------------- 
     488   ! 
    479489   ln_isfcpl = .false. 
    480490      nn_drown       = 10        ! number of iteration of the extrapolation loop (fill the new wet cells) 
  • 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.