Changeset 12062
- Timestamp:
- 2019-12-05T10:57:46+01:00 (5 years ago)
- 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 264 264 265 265 <!-- * 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 melt ing"unit="kg/m2/s" />269 <field id="fwfisf_par" long_name="Ice shelf melt ing"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" /> 270 270 <field id="qoceisf_cav" long_name="Ice shelf ocean heat flux" unit="W/m2" /> 271 271 <field id="qoceisf_par" long_name="Ice shelf ocean heat flux" unit="W/m2" /> 272 272 <field id="qlatisf_cav" long_name="Ice shelf latent heat flux" unit="W/m2" /> 273 273 <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 melt ing"unit="kg/m2/s" grid_ref="grid_T_3D" />277 <field id="fwfisf3d_par" long_name="Ice shelf melt ing"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" /> 278 278 <field id="qoceisf3d_cav" long_name="Ice shelf ocean heat flux" unit="W/m2" grid_ref="grid_T_3D" /> 279 279 <field id="qoceisf3d_par" long_name="Ice shelf ocean heat flux" unit="W/m2" grid_ref="grid_T_3D" /> 280 280 <field id="qlatisf3d_cav" long_name="Ice shelf latent heat flux" unit="W/m2" grid_ref="grid_T_3D" /> 281 281 <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" /> 294 294 <field id="qconisf" long_name="Conductive heat flux through the ice shelf" unit="W/m2" /> 295 295 -
NEMO/branches/2019/ENHANCE-02_ISF_nemo/cfgs/SHARED/namelist_ref
r11876 r12062 436 436 ! ---------------- ice shelf load ------------------------------- 437 437 ! 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 439 441 ! 440 442 ! ---------------- ice shelf melt formulation ------------------------------- … … 449 451 cn_isfcav_mlt = '3eq' ! ice shelf melting formulation (spe/2eq/3eq/oasis) 450 452 ! ! 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., 201 5)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) 453 455 ! ! oasis = fwfisf is given by oasis and pattern by file sn_isfcav_fwf 454 456 ! ! 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 460 463 ! 461 464 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 211 211 !----------------------------------------------------------------------- 212 212 ! 213 ! ---------------- ice shelf load -------------------------------214 !215 cn_isfload = 'isomip' ! scheme to compute ice shelf load (ln_isfcav = .true. in domain_cfg.nc)216 !217 213 ! ---------------- ice shelf melt formulation ------------------------------- 218 214 ! … … 229 225 ! ! oasis = fwfisf is given by oasis and pattern by file sn_isfcav_fwf 230 226 ! ! 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) 232 228 ! ! ad15 = velocity dependend Gamma (u* * gammat/s) (Jenkins et al. 2010) 233 229 ! ! 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 39 39 REAL(wp) , PUBLIC :: rn_gammas0 !: salinity exchange coeficient [] 40 40 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 !: 41 43 CHARACTER(LEN=256), PUBLIC :: cn_gammablk !: gamma formulation 42 44 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 25 25 USE par_oce , ONLY: jpi,jpj ! ocean space and time domain 26 26 USE phycst , ONLY: grav,rau0,r1_rau0_rcp ! physical constants 27 USE eosbn2 , ONLY: l _useCT ! l_useCT27 USE eosbn2 , ONLY: ln_teos10 ! use ln_teos10 or not 28 28 ! 29 29 USE in_out_manager ! I/O manager … … 84 84 ! 85 85 ! 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) 87 87 ! 88 88 ! compute ice shelf melting … … 103 103 ! define if we need to iterate 104 104 SELECT CASE ( cn_gammablk ) 105 CASE ( 'spe',' ad15' )105 CASE ( 'spe','vel' ) 106 106 ! no convergence needed 107 107 lit = .FALSE. 108 CASE ( ' hj99' )108 CASE ( 'vel_stab' ) 109 109 ! compute error between 2 iterations 110 110 zerr = MAXVAL(ABS(zqoce(:,:) - zqoce_b(:,:))) … … 112 112 ! define if iteration needed 113 113 IF (nit >= 100) THEN ! too much iteration 114 CALL ctl_stop( 'STOP', 'isf_cav: HJ99gamma formulation had too many iterations ...' )114 CALL ctl_stop( 'STOP', 'isf_cav: vel_stab gamma formulation had too many iterations ...' ) 115 115 ELSE IF ( zerr <= 0.01_wp ) THEN ! convergence is achieve 116 116 lit = .FALSE. … … 163 163 INTEGER :: ierr 164 164 !!--------------------------------------------------------------------- 165 PRINT *, cn_isfcav_mlt166 165 ! 167 166 !============== … … 212 211 ! coeficient for linearisation of potential tfreez 213 212 ! 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) 215 214 risf_lamb1 =-0.0564_wp 216 215 risf_lamb2 = 0.0773_wp -
NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfcavgam.F90
r11987 r12062 46 46 !! 47 47 !! ** Method : select the gamma formulation 48 !! 3 method available (cst, AD15 and HJ99)48 !! 3 method available (cst, vel and vel_stab) 49 49 !!--------------------------------------------------------------------- 50 50 !!-------------------------- OUT ------------------------------------- … … 65 65 ! gamma is constant (specified in namelist) 66 66 ! nothing to do 67 CASE (' ad15', 'hj99')67 CASE ('vel', 'vel_stab') 68 68 ! compute velocity in tbl 69 69 CALL isf_tbl(un(:,:,:) ,zutbl(:,:),'U', miku, rhisf_tbl_cav) … … 89 89 pgt(:,:) = rn_gammat0 90 90 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 ) 95 95 CASE DEFAULT 96 96 CALL ctl_stop('STOP','method to compute gamma (cn_gammablk) is unknown (should not see this)') … … 115 115 !!----------------------------------------------------------------------------------------------------- 116 116 ! 117 SUBROUTINE gammats_ AD15(putbl, pvtbl, pCd, pke2, & ! <<== in117 SUBROUTINE gammats_vel( putbl, pvtbl, pCd, pke2, & ! <<== in 118 118 & pgt, pgs ) ! ==>> out gammats [m/s] 119 119 !!---------------------------------------------------------------------- … … 122 122 !! ** Method : gamma is velocity dependent ( gt= gt0 * Ustar ) 123 123 !! 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 126 125 !!--------------------------------------------------------------------- 127 126 !!-------------------------- OUT ------------------------------------- … … 145 144 CALL iom_put('isfustar',zustar(:,:)) 146 145 ! 147 END SUBROUTINE gammats_ AD15148 149 SUBROUTINE gammats_ HJ99( pttbl, pstbl, putbl, pvtbl, pCd, pke2, pqoce, pqfwf, & ! <<== in150 & 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] 151 150 !!---------------------------------------------------------------------- 152 151 !! ** Purpose : compute the coefficient echange coefficient … … 252 251 END DO 253 252 254 END SUBROUTINE gammats_ HJ99253 END SUBROUTINE gammats_vel_stab 255 254 256 255 END MODULE isfcavgam -
NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfcpl.F90
r11987 r12062 25 25 PRIVATE 26 26 27 PUBLIC isfcpl_rst_write, isfcpl_init ! iceshelf restart read and write28 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 29 29 30 30 TYPE isfcons … … 48 48 SUBROUTINE isfcpl_init() 49 49 !!--------------------------------------------------------------------- 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 50 59 !! 51 60 !!--------------------------------------------------------------------- -
NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfdiags.F90
r11987 r12062 1 1 MODULE isfdiags 2 2 !!====================================================================== 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 6 5 !!====================================================================== 7 6 !! History : 3.2 ! 2011-02 (C.Harris ) Original code isf cav … … 35 34 SUBROUTINE isf_diags_flx(ktop, kbot, phtbl, pfrac, cdisf, pqfwf, pqoce, pqlat, pqhc) 36 35 !!--------------------------------------------------------------------- 37 !! *** ROUTINE isf_diags_ 2dto3d***36 !! *** ROUTINE isf_diags_flx *** 38 37 !! 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 40 40 !! 41 41 !!---------------------------------------------------------------------- … … 57 57 cvarqhc = 'qhcisf_'//cdisf ; cvarqhc3d = 'qhcisf3d_'//cdisf 58 58 ! 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 ) 64 64 ! 65 65 ! output 3d Diagnostics … … 75 75 !! *** ROUTINE isf_diags_2dto3d *** 76 76 !! 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) 78 79 !! 79 80 !!---------------------------------------------------------------------- -
NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfhdiv.F90
r11987 r12062 51 51 IF ( ln_isfcpl .AND. kt /= 0 ) THEN 52 52 ! 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). 54 57 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) 56 59 ! 57 60 ! 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 11 11 !!---------------------------------------------------------------------- 12 12 13 USE isf_oce, ONLY: cn_isfload 13 USE isf_oce, ONLY: cn_isfload, rn_isfload_T, rn_isfload_S ! ice shelf variables 14 14 15 USE dom_oce, ONLY: e3w_n, gdept_n, risfdep, mikt ! vertical scale factor16 USE eosbn2 , ONLY: eos ! eos routine15 USE dom_oce, ONLY: e3w_n, gdept_n, risfdep, mikt ! vertical scale factor 16 USE eosbn2 , ONLY: eos ! eos routine 17 17 18 USE lib_mpp, ONLY: ctl_stop ! ctl_stop routine19 USE in_out_manager !18 USE lib_mpp, ONLY: ctl_stop ! ctl_stop routine 19 USE in_out_manager ! 20 20 21 21 IMPLICIT NONE … … 44 44 ! ice shelf cavity 45 45 SELECT CASE ( cn_isfload ) 46 CASE ( ' isomip' )47 CALL isf_load_ isomip( pisfload )46 CASE ( 'uniform' ) 47 CALL isf_load_uniform ( pisfload ) 48 48 CASE DEFAULT 49 49 CALL ctl_stop('STOP','method cn_isfload to compute ice shelf load does not exist (isomip), check your namelist') … … 52 52 END SUBROUTINE isf_load 53 53 54 SUBROUTINE isf_load_ isomip( pisfload )54 SUBROUTINE isf_load_uniform( pisfload ) 55 55 !!-------------------------------------------------------------------- 56 56 !! *** SUBROUTINE isf_load *** … … 77 77 znad = 1._wp !- To use density and not density anomaly 78 78 ! 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_wp79 ! !- 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 81 81 ! 82 82 DO jk = 1, jpk !- compute density of the water displaced by the ice shelf … … 111 111 END DO 112 112 ! 113 END SUBROUTINE isf_load_ isomip113 END SUBROUTINE isf_load_uniform 114 114 115 115 END MODULE isfload -
NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfpar.F90
r11987 r12062 48 48 !! 49 49 !! ** 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. 50 57 !! 51 58 !!--------------------------------------------------------------------- -
NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfstp.F90
r11987 r12062 220 220 END IF 221 221 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 223 227 WRITE(numout,*) '' 224 228 FLUSH(numout) … … 276 280 INTEGER :: ios ! Local integer output status for namelist read 277 281 !!---------------------------------------------------------------------- 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 283 289 !!---------------------------------------------------------------------- 284 290 ! -
NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfutils.F90
r12032 r12062 87 87 ! 88 88 ! 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 92 93 ! 93 94 END SUBROUTINE debug2d … … 130 131 ! 131 132 ! 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 135 137 ! 136 138 END SUBROUTINE debug3d -
NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/TRA/traisf.F90
r11987 r12062 10 10 !! tra_isf : update the tracer trend at ocean surface 11 11 !!---------------------------------------------------------------------- 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 22 18 23 19 IMPLICIT NONE … … 63 59 IF ( ln_isfcpl ) THEN 64 60 ! 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 65 67 IF ( kt == nit000 ) CALL tra_isf_cpl(risfcpl_tsc , tsa) 66 68 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 113 113 IF( ln_apr_dyn ) CALL sbc_apr ( kstp ) ! atmospheric pressure (NB: call before bdy_dta which needs ssh_ib) 114 114 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 116 116 CALL sbc ( kstp ) ! Sea Boundary Condition (including sea-ice) 117 117 -
NEMO/branches/2019/ENHANCE-02_ISF_nemo/tests/ISOMIP+/EXPREF/namelist_cfg
r11896 r12062 165 165 ! ---------------- ice shelf load ------------------------------- 166 166 ! 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 168 170 ! 169 171 ! ---------------- ice shelf melt formulation ------------------------------- … … 182 184 ! ! oasis = fwfisf is given by oasis and pattern by file sn_isfcav_fwf 183 185 ! ! 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) 187 190 rn_gammat0 = 0.0215 ! gammat coefficient used in blk formula 188 191 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 65 65 ! gamma is constant (specified in namelist) 66 66 ! nothing to do 67 CASE (' ad15', 'hj99')67 CASE ('vel', 'vel_stab') 68 68 ! compute velocity in tbl 69 69 CALL isf_tbl(un(:,:,:) ,zutbl(:,:),'U', miku, rhisf_tbl_cav) … … 89 89 pgt(:,:) = rn_gammat0 90 90 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 ) 95 95 CASE DEFAULT 96 96 CALL ctl_stop('STOP','method to compute gamma (cn_gammablk) is unknown (should not see this)') … … 115 115 !!----------------------------------------------------------------------------------------------------- 116 116 ! 117 SUBROUTINE gammats_ AD15(putbl, pvtbl, pCd, pke2, & ! <<== in117 SUBROUTINE gammats_vel( putbl, pvtbl, pCd, pke2, & ! <<== in 118 118 & pgt, pgs ) ! ==>> out gammats [m/s] 119 119 !!---------------------------------------------------------------------- … … 145 145 CALL iom_put('isfustar',zustar(:,:)) 146 146 ! 147 END SUBROUTINE gammats_ AD15148 149 SUBROUTINE gammats_ HJ99( pttbl, pstbl, putbl, pvtbl, pCd, pke2, pqoce, pqfwf, & ! <<== in150 & 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] 151 151 !!---------------------------------------------------------------------- 152 152 !! ** Purpose : compute the coefficient echange coefficient … … 252 252 END DO 253 253 254 END SUBROUTINE gammats_ HJ99254 END SUBROUTINE gammats_vel_stab 255 255 256 256 END MODULE isfcavgam -
NEMO/branches/2019/ENHANCE-02_ISF_nemo/tests/ISOMIP+/MY_SRC/isfstp.F90
r11987 r12062 220 220 END IF 221 221 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 223 227 WRITE(numout,*) '' 224 228 FLUSH(numout) … … 276 280 INTEGER :: ios ! Local integer output status for namelist read 277 281 !!---------------------------------------------------------------------- 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 283 289 !!---------------------------------------------------------------------- 284 290 ! -
NEMO/branches/2019/ENHANCE-02_ISF_nemo/tests/ISOMIP/EXPREF/namelist_cfg
r11835 r12062 150 150 ! ---------------- ice shelf load ------------------------------- 151 151 ! 152 cn_isfload = 'isomip' ! scheme to compute ice shelf load (ln_isfcav = .true. in domain_cfg.nc)153 152 ! 154 153 ! ---------------- ice shelf melt formulation -------------------------------
Note: See TracChangeset
for help on using the changeset viewer.