Ignore:
Timestamp:
2019-09-02T15:30:17+02:00 (2 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)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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 
Note: See TracChangeset for help on using the changeset viewer.