Changeset 12062


Ignore:
Timestamp:
2019-12-05T10:57:46+01:00 (12 months ago)
Author:
mathiot
Message:

changes required by N.J. review

Location:
NEMO/branches/2019/ENHANCE-02_ISF_nemo
Files:
1 added
1 deleted
19 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/cfgs/SHARED/field_def_nemo-oce.xml

    r11908 r12062  
    264264 
    265265          <!-- * variable related to ice shelf forcing * --> 
    266           <field id="isftfrz_par"     long_name="fzp temperature at ocean/isf interface"        unit="degC"     /> 
    267           <field id="isftfrz_cav"     long_name="fzp temperature at ocean/isf interface"        unit="degC"     /> 
    268           <field id="fwfisf_cav"      long_name="Ice shelf melting"                             unit="kg/m2/s"  /> 
    269           <field id="fwfisf_par"      long_name="Ice shelf melting"                             unit="kg/m2/s"  /> 
     266          <field id="isftfrz_cav"     long_name="freezing point temperature at ocean/isf interface"                unit="degC"     /> 
     267          <field id="isftfrz_par"     long_name="freezing point temperature in the parametrization boundary layer" unit="degC"     /> 
     268          <field id="fwfisf_cav"      long_name="Ice shelf melt rate"                           unit="kg/m2/s"  /> 
     269          <field id="fwfisf_par"      long_name="Ice shelf melt rate"                           unit="kg/m2/s"  /> 
    270270          <field id="qoceisf_cav"     long_name="Ice shelf ocean  heat flux"                    unit="W/m2"     /> 
    271271          <field id="qoceisf_par"     long_name="Ice shelf ocean  heat flux"                    unit="W/m2"     /> 
    272272          <field id="qlatisf_cav"     long_name="Ice shelf latent heat flux"                    unit="W/m2"     /> 
    273273          <field id="qlatisf_par"     long_name="Ice shelf latent heat flux"                    unit="W/m2"     /> 
    274           <field id="qhcisf_cav"      long_name="Ice shelf heat content flux"                  unit="W/m2"     /> 
    275           <field id="qhcisf_par"      long_name="Ice shelf heat content flux"                  unit="W/m2"     /> 
    276           <field id="fwfisf3d_cav"    long_name="Ice shelf melting"                             unit="kg/m2/s"  grid_ref="grid_T_3D" /> 
    277           <field id="fwfisf3d_par"    long_name="Ice shelf melting"                             unit="kg/m2/s"  grid_ref="grid_T_3D" /> 
     274          <field id="qhcisf_cav"      long_name="Ice shelf heat content flux of injected water" unit="W/m2"     /> 
     275          <field id="qhcisf_par"      long_name="Ice shelf heat content flux of injected water" unit="W/m2"     /> 
     276          <field id="fwfisf3d_cav"    long_name="Ice shelf melt rate"                           unit="kg/m2/s"  grid_ref="grid_T_3D" /> 
     277          <field id="fwfisf3d_par"    long_name="Ice shelf melt rate"                           unit="kg/m2/s"  grid_ref="grid_T_3D" /> 
    278278          <field id="qoceisf3d_cav"   long_name="Ice shelf ocean  heat flux"                    unit="W/m2"     grid_ref="grid_T_3D" /> 
    279279          <field id="qoceisf3d_par"   long_name="Ice shelf ocean  heat flux"                    unit="W/m2"     grid_ref="grid_T_3D" /> 
    280280          <field id="qlatisf3d_cav"   long_name="Ice shelf latent heat flux"                    unit="W/m2"     grid_ref="grid_T_3D" /> 
    281281          <field id="qlatisf3d_par"   long_name="Ice shelf latent heat flux"                    unit="W/m2"     grid_ref="grid_T_3D" /> 
    282           <field id="qhcisf3d_cav"    long_name="Ice shelf heat content flux"                  unit="W/m2"     grid_ref="grid_T_3D" /> 
    283           <field id="qhcisf3d_par"    long_name="Ice shelf heat content flux"                  unit="W/m2"     grid_ref="grid_T_3D" /> 
    284           <field id="ttbl_cav"        long_name="temperature in the tracer sample depth      "  unit="C"        /> 
    285           <field id="ttbl_par"        long_name="temperature in the tracer sample depth      "  unit="C"        /> 
    286           <field id="isfthermald_cav" long_name="thermal driving of ice shelf melting        "  unit="C"        /> 
    287           <field id="isfthermald_par" long_name="thermal driving of ice shelf melting        "  unit="C"        /> 
    288           <field id="isfgammat"       long_name="transfert coefficient for isf (temperature) "  unit="m/s"      /> 
    289           <field id="isfgammas"       long_name="transfert coefficient for isf (salinity)    "  unit="m/s"      /> 
    290           <field id="stbl"            long_name="salinity in the Losh tbl                    "  unit="PSU"      /> 
    291           <field id="utbl"            long_name="zonal current in the Losh tbl at T point    "  unit="m/s"      /> 
    292           <field id="vtbl"            long_name="merid current in the Losh tbl at T point    "  unit="m/s"      /> 
    293           <field id="isfustar"        long_name="ustar at T point used in ice shelf melting  "  unit="m/s"      /> 
     282          <field id="qhcisf3d_cav"    long_name="Ice shelf heat content flux of injected water" unit="W/m2"     grid_ref="grid_T_3D" /> 
     283          <field id="qhcisf3d_par"    long_name="Ice shelf heat content flux of injected water" unit="W/m2"     grid_ref="grid_T_3D" /> 
     284          <field id="ttbl_cav"        long_name="temperature in Losch tbl"                      unit="degC"     /> 
     285          <field id="ttbl_par"        long_name="temperature in the parametrisation boundary layer" unit="degC" /> 
     286          <field id="isfthermald_cav" long_name="thermal driving of ice shelf melting"          unit="degC"     /> 
     287          <field id="isfthermald_par" long_name="thermal driving of ice shelf melting"          unit="degC"     /> 
     288          <field id="isfgammat"       long_name="Ice shelf heat-transfert velocity"             unit="m/s"      /> 
     289          <field id="isfgammas"       long_name="Ice shelf salt-transfert velocity"             unit="m/s"      /> 
     290          <field id="stbl"            long_name="salinity in the Losh tbl"                      unit="1e-3"     /> 
     291          <field id="utbl"            long_name="zonal current in the Losh tbl at T point"      unit="m/s"      /> 
     292          <field id="vtbl"            long_name="merid current in the Losh tbl at T point"      unit="m/s"      /> 
     293          <field id="isfustar"        long_name="ustar at T point used in ice shelf melting  unit="m/s"      /> 
    294294          <field id="qconisf"         long_name="Conductive heat flux through the ice shelf"    unit="W/m2"     /> 
    295295 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/cfgs/SHARED/namelist_ref

    r11876 r12062  
    436436   ! ---------------- ice shelf load ------------------------------- 
    437437   ! 
    438    cn_isfload = 'isomip'      ! scheme to compute ice shelf load (ln_isfcav = .true. in domain_cfg.nc) 
     438   cn_isfload = 'uniform'      ! scheme to compute ice shelf load (ln_isfcav = .true. in domain_cfg.nc) 
     439      rn_isfload_T = -1.9 
     440      rn_isfload_S = 34.4 
    439441   ! 
    440442   ! ---------------- ice shelf melt formulation ------------------------------- 
     
    449451         cn_isfcav_mlt = '3eq'   ! ice shelf melting formulation (spe/2eq/3eq/oasis) 
    450452         !                       ! spe = fwfisf is read from a forcing field 
    451          !                       ! 2eq = ISOMIP  like: 2 equations formulation (Hunter et al., 2006) 
    452          !                       ! 3eq = ISOMIP+ like: 3 equations formulation (Asay-Davis et al., 2015) 
     453         !                       ! 2eq = ISOMIP  like: 2 equations formulation (Hunter et al., 2006 for a short description) 
     454         !                       ! 3eq = ISOMIP+ like: 3 equations formulation (Asay-Davis et al., 2016 for a short description) 
    453455         !                       ! oasis = fwfisf is given by oasis and pattern by file sn_isfcav_fwf 
    454456         !              !  cn_isfcav_mlt = 2eq or 3eq cases: 
    455          cn_gammablk = 'ad15'    ! scheme to compute gammat/s (spe,ad15,hj99) 
    456          !                       ! ad15 = velocity dependend Gamma (u* * gammat/s)  (Jenkins et al. 2010) 
    457          !                       ! hj99 = velocity and stability dependent Gamma    (Holland et al. 1999) 
    458          rn_gammat0  = 1.4e-2    ! gammat coefficient used in blk formula 
    459          rn_gammas0  = 4.e-4    ! gammas coefficient used in blk formula 
     457         cn_gammablk = 'vel'     ! scheme to compute gammat/s (spe,ad15,hj99) 
     458         !                       ! spe      = constant transfert velocity (rn_gammat0, rn_gammas0) 
     459         !                       ! vel      = velocity dependent transfert velocity (u* * gammat/s) (Asay-Davis et al. 2016 for a short description) 
     460         !                       ! vel_stab = velocity and stability dependent transfert coeficient (Holland et al. 1999 for a complete description) 
     461         rn_gammat0  = 1.4e-2    ! gammat coefficient used in spe, vel and vel_stab gamma computation method 
     462         rn_gammas0  = 4.0e-4    ! gammas coefficient used in spe, vel and vel_stab gamma computation method 
    460463         ! 
    461464         rn_htbl     =  30.      ! thickness of the top boundary layer    (Losh et al. 2008) 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/cfgs/WED025/EXPREF/namelist_cfg

    r11844 r12062  
    211211!----------------------------------------------------------------------- 
    212212   ! 
    213    ! ---------------- ice shelf load ------------------------------- 
    214    ! 
    215    cn_isfload = 'isomip'      ! scheme to compute ice shelf load (ln_isfcav = .true. in domain_cfg.nc) 
    216    ! 
    217213   ! ---------------- ice shelf melt formulation ------------------------------- 
    218214   ! 
     
    229225         !                       ! oasis = fwfisf is given by oasis and pattern by file sn_isfcav_fwf 
    230226         !              !  cn_isfcav_mlt = 2eq or 3eq cases: 
    231          cn_gammablk = 'ad15'    ! scheme to compute gammat/s (spe,ad15,hj99) 
     227         cn_gammablk = 'vel'     ! scheme to compute gammat/s (spe,ad15,hj99) 
    232228         !                       ! ad15 = velocity dependend Gamma (u* * gammat/s)  (Jenkins et al. 2010) 
    233229         !                       ! hj99 = velocity and stability dependent Gamma    (Holland et al. 1999) 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isf_oce.F90

    r11987 r12062  
    3939   REAL(wp)          , PUBLIC :: rn_gammas0      !: salinity    exchange coeficient    [] 
    4040   REAL(wp)          , PUBLIC :: rn_htbl         !: Losch top boundary layer thickness [m] 
     41   REAL(wp)          , PUBLIC :: rn_isfload_T    !:  
     42   REAL(wp)          , PUBLIC :: rn_isfload_S    !:  
    4143   CHARACTER(LEN=256), PUBLIC :: cn_gammablk     !: gamma formulation 
    4244   CHARACTER(LEN=256), PUBLIC :: cn_isfcav_mlt   !: melt formulation (cavity/param) 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfcav.F90

    r11987 r12062  
    2525   USE par_oce  , ONLY: jpi,jpj                ! ocean space and time domain 
    2626   USE phycst   , ONLY: grav,rau0,r1_rau0_rcp  ! physical constants 
    27    USE eosbn2   , ONLY: l_useCT                ! l_useCT 
     27   USE eosbn2   , ONLY: ln_teos10               ! use ln_teos10 or not 
    2828   ! 
    2929   USE in_out_manager ! I/O manager 
     
    8484      ! 
    8585      ! initialisation 
    86       IF (TRIM(cn_gammablk) == 'HJ99' ) zqoce_b (:,:) = ptsc(:,:,jp_tem) * rau0_rcp ! last time step total heat fluxes (to speed up convergence) 
     86      IF (TRIM(cn_gammablk) == 'vel_stab' ) zqoce_b (:,:) = ptsc(:,:,jp_tem) * rau0_rcp ! last time step total heat fluxes (to speed up convergence) 
    8787      ! 
    8888      ! compute ice shelf melting 
     
    103103         ! define if we need to iterate 
    104104         SELECT CASE ( cn_gammablk ) 
    105          CASE ( 'spe','ad15' ) 
     105         CASE ( 'spe','vel' ) 
    106106            ! no convergence needed 
    107107            lit = .FALSE. 
    108          CASE ( 'hj99' ) 
     108         CASE ( 'vel_stab' ) 
    109109            ! compute error between 2 iterations 
    110110            zerr = MAXVAL(ABS(zqoce(:,:) - zqoce_b(:,:))) 
     
    112112            ! define if iteration needed 
    113113            IF (nit >= 100) THEN              ! too much iteration 
    114                CALL ctl_stop( 'STOP', 'isf_cav: HJ99 gamma formulation had too many iterations ...' ) 
     114               CALL ctl_stop( 'STOP', 'isf_cav: vel_stab gamma formulation had too many iterations ...' ) 
    115115            ELSE IF ( zerr <= 0.01_wp ) THEN  ! convergence is achieve 
    116116               lit = .FALSE. 
     
    163163      INTEGER :: ierr 
    164164      !!--------------------------------------------------------------------- 
    165       PRINT *, cn_isfcav_mlt 
    166165      ! 
    167166      !============== 
     
    212211         ! coeficient for linearisation of potential tfreez 
    213212         ! Crude approximation for pressure (but commonly used) 
    214          IF ( l_useCT ) THEN   ! linearisation from Jourdain et al. (2017) 
     213         IF ( ln_teos10 ) THEN   ! linearisation from Jourdain et al. (2017) 
    215214            risf_lamb1 =-0.0564_wp 
    216215            risf_lamb2 = 0.0773_wp 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfcavgam.F90

    r11987 r12062  
    4646      !! 
    4747      !! ** Method     : select the gamma formulation 
    48       !!                 3 method available (cst, AD15 and HJ99) 
     48      !!                 3 method available (cst, vel and vel_stab) 
    4949      !!--------------------------------------------------------------------- 
    5050      !!-------------------------- OUT ------------------------------------- 
     
    6565         ! gamma is constant (specified in namelist) 
    6666         ! nothing to do 
    67       CASE ('ad15', 'hj99') 
     67      CASE ('vel', 'vel_stab') 
    6868         ! compute velocity in tbl 
    6969         CALL isf_tbl(un(:,:,:) ,zutbl(:,:),'U', miku, rhisf_tbl_cav) 
     
    8989         pgt(:,:) = rn_gammat0 
    9090         pgs(:,:) = rn_gammas0 
    91       CASE ( 'ad15' ) ! gamma is proportional to u* 
    92          CALL gammats_AD15 (              zutbl, zvtbl, rCd0_top, r_ke0_top,               pgt, pgs ) 
    93       CASE ( 'hj99' ) ! gamma depends of stability of boundary layer and u* 
    94          CALL gammats_HJ99 (pttbl, pstbl, zutbl, zvtbl, rCd0_top, r_ke0_top, pqoce, pqfwf, pgt, pgs ) 
     91      CASE ( 'vel' ) ! gamma is proportional to u* 
     92         CALL gammats_vel      (              zutbl, zvtbl, rCd0_top, r_ke0_top,               pgt, pgs ) 
     93      CASE ( 'vel_stab' ) ! gamma depends of stability of boundary layer and u* 
     94         CALL gammats_vel_stab (pttbl, pstbl, zutbl, zvtbl, rCd0_top, r_ke0_top, pqoce, pqfwf, pgt, pgs ) 
    9595      CASE DEFAULT 
    9696         CALL ctl_stop('STOP','method to compute gamma (cn_gammablk) is unknown (should not see this)') 
     
    115115   !!----------------------------------------------------------------------------------------------------- 
    116116   ! 
    117    SUBROUTINE gammats_AD15(putbl, pvtbl, pCd, pke2, &   ! <<== in 
     117   SUBROUTINE gammats_vel( putbl, pvtbl, pCd, pke2, &   ! <<== in 
    118118      &                                  pgt, pgs   )   ! ==>> out gammats [m/s] 
    119119      !!---------------------------------------------------------------------- 
     
    122122      !! ** Method     : gamma is velocity dependent ( gt= gt0 * Ustar ) 
    123123      !! 
    124       !! ** Reference  : Jenkins et al., 2010, JPO, p2298-2312 
    125       !!                 Asay-Davis et al., Geosci. Model Dev., 9, 2471-2497, 2016 
     124      !! ** Reference  : Asay-Davis et al., Geosci. Model Dev., 9, 2471-2497, 2016 
    126125      !!--------------------------------------------------------------------- 
    127126      !!-------------------------- OUT ------------------------------------- 
     
    145144      CALL iom_put('isfustar',zustar(:,:)) 
    146145      ! 
    147    END SUBROUTINE gammats_AD15 
    148  
    149    SUBROUTINE gammats_HJ99( pttbl, pstbl, putbl, pvtbl, pCd, pke2, pqoce, pqfwf, &  ! <<== in 
    150       &                                                            pgt  , pgs    )  ! ==>> out gammats [m/s] 
     146   END SUBROUTINE gammats_vel 
     147 
     148   SUBROUTINE gammats_vel_stab( pttbl, pstbl, putbl, pvtbl, pCd, pke2, pqoce, pqfwf, &  ! <<== in 
     149      &                                                                pgt  , pgs    )  ! ==>> out gammats [m/s] 
    151150      !!---------------------------------------------------------------------- 
    152151      !! ** Purpose    : compute the coefficient echange coefficient  
     
    252251      END DO 
    253252 
    254    END SUBROUTINE gammats_HJ99 
     253   END SUBROUTINE gammats_vel_stab 
    255254 
    256255END MODULE isfcavgam 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfcpl.F90

    r11987 r12062  
    2525   PRIVATE 
    2626 
    27    PUBLIC isfcpl_rst_write, isfcpl_init  ! iceshelf restart read and write  
    28    PUBLIC isfcpl_ssh, isfcpl_tra, isfcpl_vol, isfcpl_cons 
     27   PUBLIC isfcpl_rst_write, isfcpl_init                    ! iceshelf restart read and write  
     28   PUBLIC isfcpl_ssh, isfcpl_tra, isfcpl_vol, isfcpl_cons  ! iceshelf correction for ssh, tra, dyn and conservation  
    2929 
    3030   TYPE isfcons 
     
    4848   SUBROUTINE isfcpl_init() 
    4949      !!--------------------------------------------------------------------- 
     50      !!                   ***  ROUTINE iscpl_init  *** 
     51      !!  
     52      !! ** Purpose : correct ocean state for new wet cell and horizontal divergence  
     53      !!              correction for the dynamical adjustement 
     54      !! 
     55      !! ** Action : - compute ssh on new wet cell 
     56      !!             - compute T/S on new wet cell 
     57      !!             - compute horizontal divergence correction as a volume flux 
     58      !!             - compute the T/S/vol correction increment to keep trend to 0 
    5059      !! 
    5160      !!--------------------------------------------------------------------- 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfdiags.F90

    r11987 r12062  
    11MODULE isfdiags 
    22   !!====================================================================== 
    3    !!                       ***  MODULE  sbcisf  *** 
    4    !! Surface module :  update surface ocean boundary condition under ice 
    5    !!                   shelf 
     3   !!                       ***  MODULE  isfdiags  *** 
     4   !! ice shelf diagnostics module :  manage the 2d and 3d flux outputs from the ice shelf module 
    65   !!====================================================================== 
    76   !! History :  3.2  !  2011-02  (C.Harris  ) Original code isf cav 
     
    3534   SUBROUTINE isf_diags_flx(ktop, kbot, phtbl, pfrac, cdisf, pqfwf, pqoce, pqlat, pqhc) 
    3635      !!--------------------------------------------------------------------- 
    37       !!                  ***  ROUTINE isf_diags_2dto3d *** 
     36      !!                  ***  ROUTINE isf_diags_flx *** 
    3837      !! 
    39       !! ** Purpose :  
     38      !! ** Purpose : manage the 2d and 3d flux outputs of the ice shelf module 
     39      !!              fwf, latent heat flux, heat content flux, oce->ice heat flux 
    4040      !! 
    4141      !!---------------------------------------------------------------------- 
     
    5757      cvarqhc  = 'qhcisf_'//cdisf  ; cvarqhc3d  = 'qhcisf3d_'//cdisf 
    5858      ! 
    59       ! output 2d melt rate, latent heat and heat content flux 
    60       CALL iom_put( TRIM(cvarqfwf), pqfwf(:,:) )   ! isf mass flux (opposite sign) 
    61       CALL iom_put( TRIM(cvarqoce), pqoce(:,:) )   ! isf oce to ice   flux  (cpo*gt*dt) 
    62       CALL iom_put( TRIM(cvarqlat), pqlat(:,:) )   ! isf oce to ice   flux  (cpo*gt*dt) 
    63       CALL iom_put( TRIM(cvarqhc) , pqhc (:,:) )   ! isf heat content flux  (cpo*fwf*Tfrz) 
     59      ! output 2d melt rate, latent heat and heat content flux from the injected water 
     60      CALL iom_put( TRIM(cvarqfwf), pqfwf(:,:) )   ! mass         flux ( >0 out ) 
     61      CALL iom_put( TRIM(cvarqoce), pqoce(:,:) )   ! oce to ice   flux ( >0 out ) 
     62      CALL iom_put( TRIM(cvarqlat), pqlat(:,:) )   ! latent heat  flux ( >0 out ) 
     63      CALL iom_put( TRIM(cvarqhc) , pqhc (:,:) )   ! heat content flux ( >0 out ) 
    6464      ! 
    6565      ! output 3d Diagnostics 
     
    7575      !!                  ***  ROUTINE isf_diags_2dto3d *** 
    7676      !! 
    77       !! ** Purpose :  
     77      !! ** Purpose : compute the 3d flux outputs as they are injected into NEMO  
     78      !!              (ie uniformaly spread into the top boundary layer or parametrisation layer) 
    7879      !! 
    7980      !!---------------------------------------------------------------------- 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfhdiv.F90

    r11987 r12062  
    5151         IF ( ln_isfcpl .AND. kt /= 0 ) THEN 
    5252            ! 
    53             ! correct divergence only for the first time step 
     53            ! Dynamical stability at start up after change in under ice shelf cavity geometry is achieve by correcting the divergence. 
     54            ! This is achieved by applying a volume flux in order to keep the horizontal divergence after remapping  
     55            ! the same as at the end of the latest time step. So correction need to be apply at nit000 (euler time step) and 
     56            ! half of it at nit000+1 (leap frog time step). 
    5457            IF ( kt == nit000   ) CALL isf_hdiv_cpl(risfcpl_vol       , phdiv) 
    55             IF ( kt == nit000+1 ) CALL isf_hdiv_cpl(risfcpl_vol*0.5_wp, phdiv) 
     58            IF ( kt == nit000+1 ) CALL isf_hdiv_cpl(risfcpl_vol*0.5_wp, phdiv) ! risfcpl_vol*0.5_wp = 0.5 * (risfcpl_vol_b + risfcpl_vol_n) 
    5659            ! 
    5760            ! correct divergence every time step to remove any trend due to coupling 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfload.F90

    r11987 r12062  
    1111   !!---------------------------------------------------------------------- 
    1212 
    13    USE isf_oce, ONLY: cn_isfload                    ! ice shelf variables 
     13   USE isf_oce, ONLY: cn_isfload, rn_isfload_T, rn_isfload_S ! ice shelf variables 
    1414 
    15    USE dom_oce, ONLY: e3w_n, gdept_n, risfdep, mikt ! vertical scale factor 
    16    USE eosbn2 , ONLY: eos                           ! eos routine 
     15   USE dom_oce, ONLY: e3w_n, gdept_n, risfdep, mikt          ! vertical scale factor 
     16   USE eosbn2 , ONLY: eos                                    ! eos routine 
    1717 
    18    USE lib_mpp, ONLY: ctl_stop                      ! ctl_stop routine 
    19    USE in_out_manager                               !  
     18   USE lib_mpp, ONLY: ctl_stop                               ! ctl_stop routine 
     19   USE in_out_manager                                        !  
    2020 
    2121   IMPLICIT NONE 
     
    4444      ! ice shelf cavity 
    4545      SELECT CASE ( cn_isfload ) 
    46       CASE ( 'isomip' ) 
    47          CALL isf_load_isomip ( pisfload ) 
     46      CASE ( 'uniform' ) 
     47         CALL isf_load_uniform ( pisfload ) 
    4848      CASE DEFAULT 
    4949         CALL ctl_stop('STOP','method cn_isfload to compute ice shelf load does not exist (isomip), check your namelist') 
     
    5252   END SUBROUTINE isf_load 
    5353 
    54    SUBROUTINE isf_load_isomip( pisfload ) 
     54   SUBROUTINE isf_load_uniform( pisfload ) 
    5555      !!-------------------------------------------------------------------- 
    5656      !!                  ***  SUBROUTINE isf_load  *** 
     
    7777      znad = 1._wp                     !- To use density and not density anomaly 
    7878      ! 
    79       !                                !- assume water displaced by the ice shelf is at T=-1.9 and S=34.4 (rude) 
    80       zts_top(:,:,jp_tem) = -1.9_wp   ;   zts_top(:,:,jp_sal) = 34.4_wp 
     79      !                                !- assume water displaced by the ice shelf is at T=rn_isfload_T and S=rn_isfload_S (rude) 
     80      zts_top(:,:,jp_tem) = rn_isfload_T   ;   zts_top(:,:,jp_sal) = rn_isfload_S 
    8181      ! 
    8282      DO jk = 1, jpk                   !- compute density of the water displaced by the ice shelf  
     
    111111      END DO 
    112112      ! 
    113    END SUBROUTINE isf_load_isomip 
     113   END SUBROUTINE isf_load_uniform 
    114114 
    115115END MODULE isfload 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfpar.F90

    r11987 r12062  
    4848      !! 
    4949      !! ** Purpose : compute the heat and fresh water due to ice shelf melting/freezing using a parametrisation  
     50      !! 
     51      !! ** Comment : in isf_par and all its call tree,  
     52      !!              'tbl' means parametrisation layer (ie how the far field temperature/salinity is computed)  
     53      !!              instead of in a proper top boundary layer as at the ice shelf ocean interface 
     54      !!              as the action to compute the properties of the tbl or the parametrisation layer are the same, 
     55      !!              (ie average T/S over a specific depth (can be across multiple levels)) 
     56      !!              the name tbl was kept. 
    5057      !! 
    5158      !!--------------------------------------------------------------------- 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfstp.F90

    r11987 r12062  
    220220         END IF 
    221221 
    222          IF (ln_isfcav) WRITE(numout,*) '      Ice shelf load method                   cn_isfload        = ', TRIM(cn_isfload) 
     222         IF (ln_isfcav) THEN 
     223            WRITE(numout,*) '      Ice shelf load method                   cn_isfload        = ', TRIM(cn_isfload) 
     224            WRITE(numout,*) '         Temperature used to compute the ice shelf load            = ', rn_isfload_T 
     225            WRITE(numout,*) '         Salinity    used to compute the ice shelf load            = ', rn_isfload_S 
     226         END IF 
    223227         WRITE(numout,*) '' 
    224228         FLUSH(numout) 
     
    276280      INTEGER               :: ios                  ! Local integer output status for namelist read 
    277281      !!---------------------------------------------------------------------- 
    278       NAMELIST/namisf/ ln_isf       ,                                                                               &  
    279          &             ln_isfcav_mlt, cn_isfcav_mlt, cn_gammablk, rn_gammat0, rn_gammas0, rn_htbl, sn_isfcav_fwf,   & 
    280          &             ln_isfpar_mlt, cn_isfpar_mlt, sn_isfpar_fwf, sn_isfpar_zmin, sn_isfpar_zmax, sn_isfpar_Leff, & 
    281          &             ln_isfcpl    , nn_drown, ln_isfcpl_cons, ln_isfdebug,                                        & 
    282          &             cn_isfload   , cn_isfdir 
     282      NAMELIST/namisf/ ln_isf        ,                                                           &  
     283         &             cn_gammablk   , rn_gammat0    , rn_gammas0    , rn_htbl, sn_isfcav_fwf,   & 
     284         &             ln_isfcav_mlt , cn_isfcav_mlt , sn_isfcav_fwf ,                           & 
     285         &             ln_isfpar_mlt , cn_isfpar_mlt , sn_isfpar_fwf ,                           & 
     286         &             sn_isfpar_zmin, sn_isfpar_zmax, sn_isfpar_Leff,                           & 
     287         &             ln_isfcpl     , nn_drown      , ln_isfcpl_cons, ln_isfdebug,              & 
     288         &             cn_isfload    , rn_isfload_T  , rn_isfload_S  , cn_isfdir 
    283289      !!---------------------------------------------------------------------- 
    284290      ! 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfutils.F90

    r12032 r12062  
    8787      ! 
    8888      ! print out 
    89       IF (lwp) WRITE(numout,*) TRIM(cdtxt),' (min, max, sum, tag) : ',zmin, zmax, zsum, itmps 
    90       ! 
    91       CALL FLUSH(numout) 
     89      IF (lwp) THEN 
     90         WRITE(numout,*) TRIM(cdtxt),' (min, max, sum, tag) : ',zmin, zmax, zsum, itmps 
     91         CALL FLUSH(numout) 
     92      END IF 
    9293      ! 
    9394   END SUBROUTINE debug2d 
     
    130131      ! 
    131132      ! print out 
    132       IF (lwp) WRITE(numout,*) TRIM(cdtxt),' (min, max, sum, tag) : ',zmin, zmax, zsum, itmps 
    133       ! 
    134       CALL FLUSH(numout) 
     133      IF (lwp) THEN 
     134         WRITE(numout,*) TRIM(cdtxt),' (min, max, sum, tag) : ',zmin, zmax, zsum, itmps 
     135         CALL FLUSH(numout) 
     136      END IF 
    135137      ! 
    136138   END SUBROUTINE debug3d 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/TRA/traisf.F90

    r11987 r12062  
    1010   !!   tra_isf       : update the tracer trend at ocean surface 
    1111   !!---------------------------------------------------------------------- 
    12    USE oce            ! ocean dynamics and active tracers 
    13    USE dom_oce        ! ocean space domain variables 
    14    USE isf_oce        ! Ice shelf variable 
    15    USE phycst         ! physical constant 
    16    USE eosbn2         ! Equation Of State 
    17    USE isfutils       ! 
    18    ! 
    19    USE in_out_manager ! I/O manager 
    20    USE iom            ! xIOS server 
    21    USE timing         ! Timing 
     12   USE isf_oce                                     ! Ice shelf variables 
     13   USE oce     , ONLY : tsa                        ! ocean dynamics and active tracers 
     14   USE dom_oce , ONLY : e3t_n, r1_e1e2t            ! ocean space domain variables 
     15   USE isfutils, ONLY : debug                      ! debug option 
     16   USE timing  , ONLY : timing_start, timing_stop  ! Timing 
     17   USE in_out_manager                              ! I/O manager 
    2218 
    2319   IMPLICIT NONE 
     
    6359      IF ( ln_isfcpl ) THEN 
    6460         ! 
     61         ! Dynamical stability at start up after change in under ice shelf cavity geometry is achieve by correcting the divergence. 
     62         ! This is achieved by applying a volume flux in order to keep the horizontal divergence after remapping  
     63         ! the same as at the end of the latest time step. So correction need to be apply at nit000 (euler time step) and 
     64         ! half of it at nit000+1 (leap frog time step). 
     65         ! in accordance to this, the heat content flux due to injected water need to be added in the temperature and salt trend 
     66         ! at time step nit000 and nit000+1 
    6567         IF ( kt == nit000  ) CALL tra_isf_cpl(risfcpl_tsc       , tsa) 
    6668         IF ( kt == nit000+1) CALL tra_isf_cpl(risfcpl_tsc*0.5_wp, tsa) 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/step.F90

    r11931 r12062  
    113113      IF( ln_apr_dyn )   CALL sbc_apr ( kstp )                   ! atmospheric pressure (NB: call before bdy_dta which needs ssh_ib)  
    114114      IF( ln_bdy     )   CALL bdy_dta ( kstp, time_offset=+1 )   ! update dynamic & tracer data at open boundaries 
    115       IF( ln_isf     )   CALL isf_stp ( kstp ) 
     115      IF( ln_isf     )   CALL isf_stp ( kstp )                   ! ice shelf/ocean boundary condition 
    116116                         CALL sbc     ( kstp )                   ! Sea Boundary Condition (including sea-ice) 
    117117 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/tests/ISOMIP+/EXPREF/namelist_cfg

    r11896 r12062  
    165165   ! ---------------- ice shelf load ------------------------------- 
    166166   ! 
    167    cn_isfload = 'isomip'      ! scheme to compute ice shelf load (ln_isfcav = .true. in domain_cfg.nc) 
     167   cn_isfload = 'uniform'      ! scheme to compute ice shelf load (ln_isfcav = .true. in domain_cfg.nc) 
     168      rn_isfload_T = -1.0 
     169      rn_isfload_S =  34.2 
    168170   ! 
    169171   ! ---------------- ice shelf melt formulation ------------------------------- 
     
    182184         !                       ! oasis = fwfisf is given by oasis and pattern by file sn_isfcav_fwf 
    183185         !              !  cn_isfcav_mlt = 2eq or 3eq cases: 
    184          cn_gammablk = 'ad15'    ! scheme to compute gammat/s (spe,ad15,hj99) 
    185          !                       ! ad15 = velocity dependend Gamma (u* * gammat/s)  (Jenkins et al. 2010) 
    186          !                       ! hj99 = velocity and stability dependent Gamma    (Holland et al. 1999) 
     186         cn_gammablk = 'vel'     ! scheme to compute gammat/s (spe,ad15,hj99) 
     187         !                       ! spe      = constant transfert velocity (rn_gammat0, rn_gammas0) 
     188         !                       ! vel      = velocity dependent transfert velocity (u* * gammat/s) (Asay-Davis et al. 2016 for a short description) 
     189         !                       ! vel_stab = velocity and stability dependent transfert coeficient (Holland et al. 1999 for a complete description) 
    187190         rn_gammat0  = 0.0215    ! gammat coefficient used in blk formula 
    188191         rn_gammas0  = 0.614e-3  ! gammas coefficient used in blk formula 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/tests/ISOMIP+/MY_SRC/isfcavgam.F90

    r11987 r12062  
    6565         ! gamma is constant (specified in namelist) 
    6666         ! nothing to do 
    67       CASE ('ad15', 'hj99') 
     67      CASE ('vel', 'vel_stab') 
    6868         ! compute velocity in tbl 
    6969         CALL isf_tbl(un(:,:,:) ,zutbl(:,:),'U', miku, rhisf_tbl_cav) 
     
    8989         pgt(:,:) = rn_gammat0 
    9090         pgs(:,:) = rn_gammas0 
    91       CASE ( 'ad15' ) ! gamma is proportional to u* 
    92          CALL gammats_AD15 (              zutbl, zvtbl, rCd0_top, rn_vtide**2,               pgt, pgs ) 
    93       CASE ( 'hj99' ) ! gamma depends of stability of boundary layer and u* 
    94          CALL gammats_HJ99 (pttbl, pstbl, zutbl, zvtbl, rCd0_top, r_ke0_top, pqoce, pqfwf, pgt, pgs ) 
     91      CASE ( 'vel' ) ! gamma is proportional to u* 
     92         CALL gammats_vel      (              zutbl, zvtbl, rCd0_top, rn_vtide**2,             pgt, pgs ) 
     93      CASE ( 'vel_stab' ) ! gamma depends of stability of boundary layer and u* 
     94         CALL gammats_vel_stab (pttbl, pstbl, zutbl, zvtbl, rCd0_top, r_ke0_top, pqoce, pqfwf, pgt, pgs ) 
    9595      CASE DEFAULT 
    9696         CALL ctl_stop('STOP','method to compute gamma (cn_gammablk) is unknown (should not see this)') 
     
    115115   !!----------------------------------------------------------------------------------------------------- 
    116116   ! 
    117    SUBROUTINE gammats_AD15(putbl, pvtbl, pCd, pke2, &   ! <<== in 
     117   SUBROUTINE gammats_vel( putbl, pvtbl, pCd, pke2, &   ! <<== in 
    118118      &                                  pgt, pgs   )   ! ==>> out gammats [m/s] 
    119119      !!---------------------------------------------------------------------- 
     
    145145      CALL iom_put('isfustar',zustar(:,:)) 
    146146      ! 
    147    END SUBROUTINE gammats_AD15 
    148  
    149    SUBROUTINE gammats_HJ99( pttbl, pstbl, putbl, pvtbl, pCd, pke2, pqoce, pqfwf, &  ! <<== in 
    150       &                                                            pgt  , pgs    )  ! ==>> out gammats [m/s] 
     147   END SUBROUTINE gammats_vel 
     148 
     149   SUBROUTINE gammats_vel_stab( pttbl, pstbl, putbl, pvtbl, pCd, pke2, pqoce, pqfwf, &  ! <<== in 
     150      &                                                                pgt  , pgs    )  ! ==>> out gammats [m/s] 
    151151      !!---------------------------------------------------------------------- 
    152152      !! ** Purpose    : compute the coefficient echange coefficient  
     
    252252      END DO 
    253253 
    254    END SUBROUTINE gammats_HJ99 
     254   END SUBROUTINE gammats_vel_stab 
    255255 
    256256END MODULE isfcavgam 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/tests/ISOMIP+/MY_SRC/isfstp.F90

    r11987 r12062  
    220220         END IF 
    221221 
    222          IF (ln_isfcav) WRITE(numout,*) '      Ice shelf load method                   cn_isfload        = ', TRIM(cn_isfload) 
     222         IF (ln_isfcav) THEN 
     223            WRITE(numout,*) '      Ice shelf load method                   cn_isfload        = ', TRIM(cn_isfload) 
     224            WRITE(numout,*) '         Temperature used to compute the ice shelf load            = ', rn_isfload_T 
     225            WRITE(numout,*) '         Salinity    used to compute the ice shelf load            = ', rn_isfload_S 
     226         END IF 
    223227         WRITE(numout,*) '' 
    224228         FLUSH(numout) 
     
    276280      INTEGER               :: ios                  ! Local integer output status for namelist read 
    277281      !!---------------------------------------------------------------------- 
    278       NAMELIST/namisf/ ln_isf       ,                                                                               &  
    279          &             ln_isfcav_mlt, cn_isfcav_mlt, cn_gammablk, rn_gammat0, rn_gammas0, rn_htbl, sn_isfcav_fwf,   & 
    280          &             ln_isfpar_mlt, cn_isfpar_mlt, sn_isfpar_fwf, sn_isfpar_zmin, sn_isfpar_zmax, sn_isfpar_Leff, & 
    281          &             ln_isfcpl    , nn_drown, ln_isfcpl_cons, ln_isfdebug, rn_vtide,                              & 
    282          &             cn_isfload   , cn_isfdir 
     282      NAMELIST/namisf/ ln_isf        ,                                                           &  
     283         &             cn_gammablk   , rn_gammat0    , rn_gammas0    , rn_htbl, sn_isfcav_fwf,   & 
     284         &             ln_isfcav_mlt , cn_isfcav_mlt , sn_isfcav_fwf ,                           & 
     285         &             ln_isfpar_mlt , cn_isfpar_mlt , sn_isfpar_fwf ,                           & 
     286         &             sn_isfpar_zmin, sn_isfpar_zmax, sn_isfpar_Leff,                           & 
     287         &             ln_isfcpl     , nn_drown      , ln_isfcpl_cons, ln_isfdebug, rn_vtide,    & 
     288         &             cn_isfload    , rn_isfload_T  , rn_isfload_S  , cn_isfdir 
    283289      !!---------------------------------------------------------------------- 
    284290      ! 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/tests/ISOMIP/EXPREF/namelist_cfg

    r11835 r12062  
    150150   ! ---------------- ice shelf load ------------------------------- 
    151151   ! 
    152    cn_isfload = 'isomip'      ! scheme to compute ice shelf load (ln_isfcav = .true. in domain_cfg.nc) 
    153152   ! 
    154153   ! ---------------- ice shelf melt formulation ------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.