Changeset 11970 for NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE
- Timestamp:
- 2019-11-26T16:06:55+01:00 (4 years ago)
- Location:
- NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE
- Files:
-
- 4 deleted
- 47 edited
- 4 copied
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/cfgs/SHARED/field_def_nemo-oce.xml
r11536 r11970 264 264 265 265 <!-- * variable related to ice shelf forcing * --> 266 <field id="fwfisf" long_name="Ice shelf melting" unit="kg/m2/s" /> 267 <field id="fwfisf3d" long_name="Ice shelf melting" unit="kg/m2/s" grid_ref="grid_T_3D" /> 268 <field id="qlatisf" long_name="Ice shelf latent heat flux" unit="W/m2" /> 269 <field id="qlatisf3d" long_name="Ice shelf latent heat flux" unit="W/m2" grid_ref="grid_T_3D" /> 270 <field id="qhcisf" long_name="Ice shelf heat content flux" unit="W/m2" /> 271 <field id="qhcisf3d" long_name="Ice shelf heat content flux" unit="W/m2" grid_ref="grid_T_3D" /> 272 <field id="isfgammat" long_name="transfert coefficient for isf (temperature) " unit="m/s" /> 273 <field id="isfgammas" long_name="transfert coefficient for isf (salinity) " unit="m/s" /> 274 <field id="stbl" long_name="salinity in the Losh tbl " unit="PSU" /> 275 <field id="ttbl" long_name="temperature in the Losh tbl " unit="C" /> 276 <field id="utbl" long_name="zonal current in the Losh tbl at T point " unit="m/s" /> 277 <field id="vtbl" long_name="merid current in the Losh tbl at T point " unit="m/s" /> 278 <field id="thermald" long_name="thermal driving of ice shelf melting " unit="C" /> 279 <field id="tfrz" long_name="top freezing point (used to compute melt) " unit="C" /> 280 <field id="tinsitu" long_name="top insitu temperature (used to cmpt melt) " unit="C" /> 281 <field id="ustar" long_name="ustar at T point used in ice shelf melting " unit="m/s" /> 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" /> 270 <field id="qoceisf_cav" long_name="Ice shelf ocean heat flux" unit="W/m2" /> 271 <field id="qoceisf_par" long_name="Ice shelf ocean heat flux" unit="W/m2" /> 272 <field id="qlatisf_cav" long_name="Ice shelf latent heat flux" unit="W/m2" /> 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 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" /> 278 <field id="qoceisf3d_cav" long_name="Ice shelf ocean heat flux" unit="W/m2" grid_ref="grid_T_3D" /> 279 <field id="qoceisf3d_par" long_name="Ice shelf ocean heat flux" unit="W/m2" grid_ref="grid_T_3D" /> 280 <field id="qlatisf3d_cav" long_name="Ice shelf latent heat flux" unit="W/m2" grid_ref="grid_T_3D" /> 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" /> 294 <field id="qconisf" long_name="Conductive heat flux through the ice shelf" unit="W/m2" /> 282 295 283 296 <!-- *_oce variables available with ln_blk_clio or ln_blk_core --> -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/cfgs/SHARED/namelist_ref
r11814 r11970 5 5 !! namelists 2 - Surface boundary (namsbc, namsbc_flx, namsbc_blk, namsbc_cpl, 6 6 !! namsbc_sas, namtra_qsr, namsbc_rnf, 7 !! nam sbc_isf, namsbc_iscpl, namsbc_apr,7 !! namisf, namsbc_apr, 8 8 !! namsbc_ssr, namsbc_wave, namberg) 9 9 !! 3 - lateral boundary (namlbc, namagrif, nambdy, nambdy_tide) … … 51 51 cn_ocerst_out = "restart" ! suffix of ocean restart name (output) 52 52 cn_ocerst_outdir = "." ! directory in which to write output ocean restarts 53 ln_iscpl = .false. ! cavity evolution forcing or coupling to ice sheet model54 53 nn_istate = 0 ! output the initial state (1) or not (0) 55 54 ln_rst_list = .false. ! output restarts at list of times using nn_stocklist (T) or at set frequency with nn_stock (F) … … 72 71 !----------------------------------------------------------------------- 73 72 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 74 rn_isfhmin = 1.00 ! treshold [m] to discriminate grounding ice from floating ice75 73 ! 76 74 rn_rdt = 5400. ! time step for the dynamics and tracer … … 79 77 ln_crs = .false. ! Logical switch for coarsening module (T => fill namcrs) 80 78 ! 81 ln_meshmask = . false. ! =T create a mesh file79 ln_meshmask = .true. ! =T create a mesh file 82 80 / 83 81 !----------------------------------------------------------------------- … … 184 182 !! namsbc_rnf river runoffs (ln_rnf =T) 185 183 !! namsbc_apr Atmospheric Pressure (ln_apr_dyn =T) 186 !! namsbc_isf ice shelf melting/freezing (ln_isfcav =T : read (ln_read_cfg=T) or set or usr_def_zgr )187 !! namsbc_iscpl coupling option between land ice model and ocean (ln_isfcav =T)188 184 !! namsbc_wave external fields from wave model (ln_wave =T) 189 185 !! namberg iceberg floats (ln_icebergs=T) … … 222 218 ln_rnf = .false. ! runoffs (T => fill namsbc_rnf) 223 219 ln_apr_dyn = .false. ! Patm gradient added in ocean & ice Eqs. (T => fill namsbc_apr ) 224 ln_isf = .false. ! ice shelf (T => fill namsbc_isf & namsbc_iscpl)225 220 ln_wave = .false. ! Activate coupling with wave (T => fill namsbc_wave) 226 221 ln_cdgw = .false. ! Neutral drag coefficient read from wave model (T => ln_wave=.true. & fill namsbc_wave) … … 439 434 / 440 435 !----------------------------------------------------------------------- 441 &namsbc_isf ! Top boundary layer (ISF) (ln_isfcav =T : read (ln_read_cfg=T) 442 !----------------------------------------------------------------------- or set or usr_def_zgr ) 443 ! ! type of top boundary layer 444 nn_isf = 1 ! ice shelf melting/freezing 445 ! 1 = presence of ISF ; 2 = bg03 parametrisation 446 ! 3 = rnf file for ISF ; 4 = ISF specified freshwater flux 447 ! options 1 and 4 need ln_isfcav = .true. (domzgr) 448 ! ! nn_isf = 1 or 2 cases: 449 rn_gammat0 = 1.e-4 ! gammat coefficient used in blk formula 450 rn_gammas0 = 1.e-4 ! gammas coefficient used in blk formula 451 ! ! nn_isf = 1 or 4 cases: 452 rn_hisf_tbl = 30. ! thickness of the top boundary layer (Losh et al. 2008) 453 ! ! 0 => thickness of the tbl = thickness of the first wet cell 454 ! ! nn_isf = 1 case 455 nn_isfblk = 1 ! 1 ISOMIP like: 2 equations formulation (Hunter et al., 2006) 456 ! ! 2 ISOMIP+ like: 3 equations formulation (Asay-Davis et al., 2015) 457 nn_gammablk = 1 ! 0 = cst Gammat (= gammat/s) 458 ! ! 1 = velocity dependend Gamma (u* * gammat/s) (Jenkins et al. 2010) 459 ! ! 2 = velocity and stability dependent Gamma (Holland et al. 1999) 460 461 !___________!_____________!___________________!___________!_____________!_________!___________!__________!__________!_______________! 462 ! ! file name ! frequency (hours) ! variable ! time interp.! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 463 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 464 !* nn_isf = 4 case 465 sn_fwfisf = 'rnfisf' , -12. ,'sowflisf' , .false. , .true. , 'yearly' , '' , '' , '' 466 !* nn_isf = 3 case 467 sn_rnfisf = 'rnfisf' , -12. ,'sofwfisf' , .false. , .true. , 'yearly' , '' , '' , '' 468 !* nn_isf = 2 and 3 cases 469 sn_depmax_isf ='rnfisf' , -12. ,'sozisfmax', .false. , .true. , 'yearly' , '' , '' , '' 470 sn_depmin_isf ='rnfisf' , -12. ,'sozisfmin', .false. , .true. , 'yearly' , '' , '' , '' 471 !* nn_isf = 2 case 472 sn_Leff_isf = 'rnfisf' , -12. ,'Leff' , .false. , .true. , 'yearly' , '' , '' , '' 473 / 474 !----------------------------------------------------------------------- 475 &namsbc_iscpl ! land ice / ocean coupling option (ln_isfcav =T : read (ln_read_cfg=T) 476 !----------------------------------------------------------------------- or set or usr_def_zgr ) 477 nn_drown = 10 ! number of iteration of the extrapolation loop (fill the new wet cells) 478 ln_hsb = .false. ! activate conservation module (conservation exact after a time of rn_fiscpl) 479 nn_fiscpl = 43800 ! (number of time step) conservation period (maybe should be fix to the coupling frequencey of restart frequency) 436 &namisf ! Top boundary layer (ISF) (default: OFF) 437 !----------------------------------------------------------------------- 438 ! 439 ! ---------------- ice shelf load ------------------------------- 440 ! 441 cn_isfload = 'isomip' ! scheme to compute ice shelf load (ln_isfcav = .true. in domain_cfg.nc) 442 ! 443 ! ---------------- ice shelf melt formulation ------------------------------- 444 ! 445 ln_isf = .false. ! activate ice shelf module 446 ln_isfdebug = .false. ! add debug print in ISF code (global min/max/sum of specific variable) 447 cn_isfdir = './' ! directory for all ice shelf input file 448 ! 449 ! ---------------- cavities opened ------------------------------- 450 ! 451 ln_isfcav_mlt = .false. ! ice shelf melting into the cavity (need ln_isfcav = .true. in domain_cfg.nc) 452 cn_isfcav_mlt = '3eq' ! ice shelf melting formulation (spe/2eq/3eq/oasis) 453 ! ! spe = fwfisf is read from a forcing field 454 ! ! 2eq = ISOMIP like: 2 equations formulation (Hunter et al., 2006) 455 ! ! 3eq = ISOMIP+ like: 3 equations formulation (Asay-Davis et al., 2015) 456 ! ! oasis = fwfisf is given by oasis and pattern by file sn_isfcav_fwf 457 ! ! cn_isfcav_mlt = 2eq or 3eq cases: 458 cn_gammablk = 'ad15' ! scheme to compute gammat/s (spe,ad15,hj99) 459 ! ! ad15 = velocity dependend Gamma (u* * gammat/s) (Jenkins et al. 2010) 460 ! ! hj99 = velocity and stability dependent Gamma (Holland et al. 1999) 461 rn_gammat0 = 1.4e-2 ! gammat coefficient used in blk formula 462 rn_gammas0 = 4.e-4 ! gammas coefficient used in blk formula 463 ! 464 rn_htbl = 30. ! thickness of the top boundary layer (Losh et al. 2008) 465 ! ! 0 => thickness of the tbl = thickness of the first wet cell 466 ! 467 !* 'spe' and 'oasis' case 468 !___________!_____________!___________________!___________!_____________!_________!___________!__________!__________!_______________! 469 ! ! file name ! frequency (hours) ! variable ! time interp.! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 470 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 471 sn_isfcav_fwf = 'isfmlt_cav', -12. , 'fwflisf' , .false. , .true. , 'yearly' , '' , '' , '' 472 ! 473 ! ---------------- cavities parametrised ------------------------------- 474 ! 475 ln_isfpar_mlt = .false. ! ice shelf melting parametrised 476 cn_isfpar_mlt = 'spe' ! ice shelf melting parametrisation (spe/bg03/oasis) 477 ! ! spe = fwfisf is read from a forcing field 478 ! ! bg03 = melt computed using Beckmann and Goosse parametrisation 479 ! ! oasis = fwfisf is given by oasis and pattern by file sn_isfpar_fwf 480 ! 481 !* all cases 482 !___________!_____________!___________________!___________!_____________!_________!___________!__________!__________!_______________! 483 ! ! file name ! frequency (hours) ! variable ! time interp.! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 484 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 485 sn_isfpar_zmax = 'isfmlt_par', 0 ,'sozisfmax', .false. , .true. , 'yearly' , '' , '' , '' 486 sn_isfpar_zmin = 'isfmlt_par', 0 ,'sozisfmin', .false. , .true. , 'yearly' , '' , '' , '' 487 !* 'spe' and 'oasis' case 488 sn_isfpar_fwf = 'isfmlt_par' , -12. ,'sofwfisf' , .false. , .true. , 'yearly' , '' , '' , '' 489 !* 'bg03' case 490 sn_isfpar_Leff = 'isfmlt_par', 0. ,'Leff' , .false. , .true. , 'yearly' , '' , '' , '' 491 ! 492 ! ---------------- ice sheet coupling ------------------------------- 493 ! 494 ln_isfcpl = .false. 495 nn_drown = 10 ! number of iteration of the extrapolation loop (fill the new wet cells) 496 ln_isfcpl_cons = .false. 480 497 / 481 498 !----------------------------------------------------------------------- … … 1200 1217 &nam_diatmb ! Top Middle Bottom Output (default: OFF) 1201 1218 !----------------------------------------------------------------------- 1202 ln_diatmb = . false. ! Choose Top Middle and Bottom output or not1219 ln_diatmb = .true. ! Choose Top Middle and Bottom output or not 1203 1220 / 1204 1221 !----------------------------------------------------------------------- -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/cfgs/ref_cfgs.txt
r9775 r11970 9 9 ORCA2_ICE_PISCES OCE TOP ICE NST 10 10 SPITZ12 OCE ICE 11 WED025 OCE ICE -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/BDY/bdyvol.F90
r11536 r11970 16 16 USE dom_oce ! ocean space and time domain 17 17 USE phycst ! physical constants 18 USE sbcisf! ice shelf18 USE isf ! ice shelf 19 19 ! 20 20 USE in_out_manager ! I/O manager … … 77 77 ! Calculate the cumulate surface Flux z_cflxemp (m3/s) over all the domain 78 78 ! ----------------------------------------------------------------------- 79 IF ( kc == 1 ) z_cflxemp = glob_sum( 'bdyvol', ( emp(:,:) - rnf(:,:) + fwfisf (:,:) ) * bdytmask(:,:) * e1e2t(:,:) ) / rau079 IF ( kc == 1 ) z_cflxemp = glob_sum( 'bdyvol', ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) ) * bdytmask(:,:) * e1e2t(:,:) ) / rau0 80 80 81 81 ! Compute bdy surface each cycle if non linear free surface -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/DIA/diahsb.F90
r11536 r11970 18 18 USE sbc_oce ! surface thermohaline fluxes 19 19 USE sbcrnf ! river runoff 20 USE sbcisf! ice shelves20 USE isf ! ice shelves 21 21 USE domvvl ! vertical scale factors 22 22 USE traqsr ! penetrative solar radiation … … 48 48 REAL(wp), DIMENSION(:,:) , ALLOCATABLE :: ssh_hc_loc_ini, ssh_sc_loc_ini ! 49 49 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: hc_loc_ini, sc_loc_ini, e3t_ini ! 50 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: tmask_ini 50 51 51 52 !! * Substitutions … … 91 92 ! 1 - Trends due to forcing ! 92 93 ! ------------------------- ! 93 z_frc_trd_v = r1_rau0 * glob_sum( 'diahsb', - ( emp(:,:) - rnf(:,:) + fwfisf (:,:) ) * surf(:,:) ) ! volume fluxes94 z_frc_trd_v = r1_rau0 * glob_sum( 'diahsb', - ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) ) * surf(:,:) ) ! volume fluxes 94 95 z_frc_trd_t = glob_sum( 'diahsb', sbc_tsc(:,:,jp_tem) * surf(:,:) ) ! heat fluxes 95 96 z_frc_trd_s = glob_sum( 'diahsb', sbc_tsc(:,:,jp_sal) * surf(:,:) ) ! salt fluxes … … 98 99 IF( ln_rnf_sal) z_frc_trd_s = z_frc_trd_s + glob_sum( 'diahsb', rnf_tsc(:,:,jp_sal) * surf(:,:) ) 99 100 ! ! Add ice shelf heat & salt input 100 IF( ln_isf ) z_frc_trd_t = z_frc_trd_t + glob_sum( 'diahsb', risf_tsc(:,:,jp_tem) * surf(:,:) ) 101 IF( ln_isf ) z_frc_trd_t = z_frc_trd_t & 102 & + glob_sum( 'diahsb', ( risf_cav_tsc(:,:,jp_tem) + risf_par_tsc(:,:,jp_tem) ) * surf(:,:) ) 101 103 ! ! Add penetrative solar radiation 102 104 IF( ln_traqsr ) z_frc_trd_t = z_frc_trd_t + r1_rau0_rcp * glob_sum( 'diahsb', qsr (:,:) * surf(:,:) ) … … 155 157 ! 156 158 DO jk = 1, jpkm1 ! volume variation (calculated with scale factors) 157 zwrk(:,:,jk) = ( surf(:,:)*e3t_n(:,:,jk) - surf_ini(:,:)*e3t_ini(:,:,jk) ) * tmask(:,:,jk)159 zwrk(:,:,jk) = surf(:,:)*e3t_n(:,:,jk)*tmask(:,:,jk) - surf_ini(:,:)*e3t_ini(:,:,jk)*tmask_ini(:,:,jk) 158 160 END DO 159 zdiff_v2 = glob_sum_full( 'diahsb', zwrk(:,:,:) ) 161 zdiff_v2 = glob_sum_full( 'diahsb', zwrk(:,:,:) ) ! glob_sum_full needed as tmask and tmask_ini could be different 160 162 DO jk = 1, jpkm1 ! heat content variation 161 zwrk(:,:,jk) = ( surf(:,:)*e3t_n(:,:,jk)*tsn(:,:,jk,jp_tem) - surf_ini(:,:)*hc_loc_ini(:,:,jk) ) * tmask(:,:,jk)163 zwrk(:,:,jk) = ( surf(:,:)*e3t_n(:,:,jk)*tsn(:,:,jk,jp_tem) - surf_ini(:,:)*hc_loc_ini(:,:,jk) ) 162 164 END DO 163 165 zdiff_hc = glob_sum_full( 'diahsb', zwrk(:,:,:) ) 164 166 DO jk = 1, jpkm1 ! salt content variation 165 zwrk(:,:,jk) = ( surf(:,:)*e3t_n(:,:,jk)*tsn(:,:,jk,jp_sal) - surf_ini(:,:)*sc_loc_ini(:,:,jk) ) * tmask(:,:,jk)167 zwrk(:,:,jk) = ( surf(:,:)*e3t_n(:,:,jk)*tsn(:,:,jk,jp_sal) - surf_ini(:,:)*sc_loc_ini(:,:,jk) ) 166 168 END DO 167 169 zdiff_sc = glob_sum_full( 'diahsb', zwrk(:,:,:) ) … … 187 189 zwrk(:,:,jk) = surf(:,:) * e3t_n(:,:,jk) * tmask(:,:,jk) 188 190 END DO 189 zvol_tot = glob_sum _full( 'diahsb', zwrk(:,:,:) )191 zvol_tot = glob_sum( 'diahsb', zwrk(:,:,:) ) 190 192 191 193 !!gm to be added ? … … 270 272 CALL iom_get( numror, jpdom_autoglo, 'ssh_ini' , ssh_ini , ldxios = lrxios ) 271 273 CALL iom_get( numror, jpdom_autoglo, 'e3t_ini' , e3t_ini , ldxios = lrxios ) 274 CALL iom_get( numror, jpdom_autoglo, 'tmask_ini' , tmask_ini , ldxios = lrxios ) 272 275 CALL iom_get( numror, jpdom_autoglo, 'hc_loc_ini', hc_loc_ini, ldxios = lrxios ) 273 276 CALL iom_get( numror, jpdom_autoglo, 'sc_loc_ini', sc_loc_ini, ldxios = lrxios ) … … 285 288 ! if ice sheet/oceqn coupling, need to mask ini variables here (mask could change at the next NEMO instance). 286 289 e3t_ini (:,:,jk) = e3t_n(:,:,jk) * tmask(:,:,jk) ! initial vertical scale factors 290 tmask_ini (:,:,jk) = tmask(:,:,jk) ! initial mask 287 291 hc_loc_ini(:,:,jk) = tsn(:,:,jk,jp_tem) * e3t_n(:,:,jk) * tmask(:,:,jk) ! initial heat content 288 292 sc_loc_ini(:,:,jk) = tsn(:,:,jk,jp_sal) * e3t_n(:,:,jk) * tmask(:,:,jk) ! initial salt content … … 325 329 CALL iom_rstput( kt, nitrst, numrow, 'ssh_ini' , ssh_ini , ldxios = lwxios ) 326 330 CALL iom_rstput( kt, nitrst, numrow, 'e3t_ini' , e3t_ini , ldxios = lwxios ) 331 CALL iom_rstput( kt, nitrst, numrow, 'tmask_ini' , tmask_ini , ldxios = lwxios ) 327 332 CALL iom_rstput( kt, nitrst, numrow, 'hc_loc_ini', hc_loc_ini, ldxios = lwxios ) 328 333 CALL iom_rstput( kt, nitrst, numrow, 'sc_loc_ini', sc_loc_ini, ldxios = lwxios ) … … 396 401 ! ------------------- ! 397 402 ALLOCATE( hc_loc_ini(jpi,jpj,jpk), sc_loc_ini(jpi,jpj,jpk), surf_ini(jpi,jpj), & 398 & e3t_ini(jpi,jpj,jpk), surf(jpi,jpj), ssh_ini(jpi,jpj), STAT=ierror )403 & e3t_ini(jpi,jpj,jpk), surf(jpi,jpj), ssh_ini(jpi,jpj), tmask_ini(jpi,jpj,jpk),STAT=ierror ) 399 404 IF( ierror > 0 ) THEN 400 405 CALL ctl_stop( 'dia_hsb_init: unable to allocate hc_loc_ini' ) ; RETURN -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/DIA/diawri.F90
r11536 r11970 26 26 !!---------------------------------------------------------------------- 27 27 USE oce ! ocean dynamics and tracers 28 USE isf 29 USE isfcpl 28 30 USE dom_oce ! ocean space and time domain 29 31 USE phycst ! physical constants … … 878 880 !!---------------------------------------------------------------------- 879 881 CHARACTER (len=* ), INTENT( in ) :: cdfile_name ! name of the file created 882 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zisfdebug 880 883 !! 881 INTEGER :: inum 884 INTEGER :: inum, jk 882 885 !!---------------------------------------------------------------------- 883 886 ! … … 903 906 CALL iom_rstput( 0, 0, inum, 'vovecrtz', wn ) ! now k-velocity 904 907 ENDIF 908 CALL iom_rstput( 0, 0, inum, 'risfdep', risfdep ) ! now k-velocity 909 CALL iom_rstput( 0, 0, inum, 'ht_n' , ht_n ) ! now k-velocity 910 IF ( ln_isf ) THEN 911 IF (ln_isfcav_mlt) THEN 912 CALL iom_rstput( 0, 0, inum, 'fwfisf_cav', fwfisf_cav ) ! now k-velocity 913 CALL iom_rstput( 0, 0, inum, 'rhisf_cav_tbl', rhisf_tbl_cav ) ! now k-velocity 914 CALL iom_rstput( 0, 0, inum, 'rfrac_cav_tbl', rfrac_tbl_cav ) ! now k-velocity 915 CALL iom_rstput( 0, 0, inum, 'misfkb_cav', REAL(misfkb_cav,8) ) ! now k-velocity 916 CALL iom_rstput( 0, 0, inum, 'misfkt_cav', REAL(misfkt_cav,8) ) ! now k-velocity 917 END IF 918 IF (ln_isfpar_mlt) THEN 919 CALL iom_rstput( 0, 0, inum, 'isfmsk_par', REAL(mskisf_par,8) ) ! now k-velocity 920 CALL iom_rstput( 0, 0, inum, 'fwfisf_par', fwfisf_par ) ! now k-velocity 921 CALL iom_rstput( 0, 0, inum, 'rhisf_par_tbl', rhisf_tbl_par ) ! now k-velocity 922 CALL iom_rstput( 0, 0, inum, 'rfrac_par_tbl', rfrac_tbl_par ) ! now k-velocity 923 CALL iom_rstput( 0, 0, inum, 'misfkb_par', REAL(misfkb_par,8) ) ! now k-velocity 924 CALL iom_rstput( 0, 0, inum, 'misfkt_par', REAL(misfkt_par,8) ) ! now k-velocity 925 END IF 926 END IF 927 928 IF ( ln_isf ) THEN 929 IF (ln_isfcav_mlt) CALL iom_rstput( 0, 0, inum, 'mskisf_cav', REAL(mskisf_cav,8), ktype = jp_i1 ) 930 IF (ln_isfpar_mlt) CALL iom_rstput( 0, 0, inum, 'mskisf_par', REAL(mskisf_par,8), ktype = jp_i1 ) 931 END IF 932 905 933 IF( ALLOCATED(ahtu) ) THEN 906 934 CALL iom_rstput( 0, 0, inum, 'ahtu', ahtu ) ! aht at u-point -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/DOM/dom_oce.F90
r10068 r11970 32 32 LOGICAL , PUBLIC :: ln_linssh !: =T linear free surface ==>> model level are fixed in time 33 33 LOGICAL , PUBLIC :: ln_meshmask !: =T create a mesh-mask file (mesh_mask.nc) 34 REAL(wp), PUBLIC :: rn_isfhmin !: threshold to discriminate grounded ice to floating ice35 34 REAL(wp), PUBLIC :: rn_rdt !: time step for the dynamics and tracer 36 35 REAL(wp), PUBLIC :: rn_atfp !: asselin time filter parameter 37 36 INTEGER , PUBLIC :: nn_euler !: =0 start with forward time step or not (=1) 38 LOGICAL , PUBLIC :: ln_iscpl !: coupling with ice sheet39 37 LOGICAL , PUBLIC :: ln_crs !: Apply grid coarsening to dynamical model output or online passive tracers 40 38 … … 158 156 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: e3t_1d , e3w_1d !: reference vertical scale factors at T- and W-pts (m) 159 157 158 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: risfdep, bathy 160 159 161 160 !!---------------------------------------------------------------------- … … 170 169 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tmask_h !: internal domain T-point mask (Figure 8.5 NEMO book) 171 170 172 INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: misfdep !: top first ocean level (ISF) 173 INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: mikt, miku, mikv, mikf !: top first wet T-, U-, V-, F-level (ISF) 174 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: risfdep !: Iceshelf draft (ISF) 171 INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: mikt, miku, mikv, mikf !: top first wet T-, U-, V-, F-level (ISF) 175 172 176 173 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ssmask, ssumask, ssvmask !: surface mask at T-,U-, V- and F-pts … … 274 271 & hu_a(jpi,jpj) , hv_a(jpi,jpj) , r1_hu_a(jpi,jpj) , r1_hv_a(jpi,jpj) , STAT=ierr(6) ) 275 272 ! 276 ! 277 ALLOCATE( gdept_1d(jpk) , gdepw_1d(jpk) , e3t_1d(jpk) , e3w_1d(jpk) , STAT=ierr(7) ) 273 ALLOCATE( risfdep(jpi,jpj) , bathy(jpi,jpj) , STAT=ierr(7) ) 274 ! 275 ALLOCATE( gdept_1d(jpk) , gdepw_1d(jpk) , e3t_1d(jpk) , e3w_1d(jpk) , STAT=ierr(8) ) 278 276 ! 279 277 ALLOCATE( tmask_i(jpi,jpj) , tmask_h(jpi,jpj) , & … … 281 279 & mbkt (jpi,jpj) , mbku (jpi,jpj) , mbkv (jpi,jpj) , STAT=ierr(9) ) 282 280 ! 283 ALLOCATE( misfdep(jpi,jpj) , mikt(jpi,jpj) , miku(jpi,jpj) , & 284 & risfdep(jpi,jpj) , mikv(jpi,jpj) , mikf(jpi,jpj) , STAT=ierr(10) ) 281 ALLOCATE( mikt(jpi,jpj), miku(jpi,jpj), mikv(jpi,jpj), mikf(jpi,jpj), STAT=ierr(10) ) 285 282 ! 286 283 ALLOCATE( tmask(jpi,jpj,jpk) , umask(jpi,jpj,jpk) , & -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/DOM/domain.F90
r11536 r11970 140 140 ! Read in masks to define closed seas and lakes 141 141 ! 142 DO jj = 1, jpj ! depth of the iceshelves143 DO ji = 1, jpi144 ik = mikt(ji,jj)145 risfdep(ji,jj) = gdepw_0(ji,jj,ik)146 END DO147 END DO148 !149 142 ht_0(:,:) = 0._wp ! Reference ocean thickness 150 143 hu_0(:,:) = 0._wp … … 192 185 IF( lk_c1d ) CALL cor_c1d ! 1D configuration: Coriolis set at T-point 193 186 ! 194 IF( ln_meshmask .AND. .NOT.ln_iscpl ) CALL dom_wri ! Create a domain file 195 IF( ln_meshmask .AND. ln_iscpl .AND. .NOT.ln_rstart ) CALL dom_wri ! Create a domain file 196 IF( .NOT.ln_rstart ) CALL dom_ctl ! Domain control 197 ! 198 IF( ln_write_cfg ) CALL cfg_write ! create the configuration file 187 IF( ln_meshmask ) CALL dom_wri ! Create a domain file 188 IF( .NOT.ln_rstart ) CALL dom_ctl ! Domain control 189 ! 190 IF( ln_write_cfg ) CALL cfg_write ! create the configuration file 199 191 ! 200 192 IF(lwp) THEN … … 292 284 & nn_it000, nn_itend , nn_date0 , nn_time0 , nn_leapy , nn_istate , & 293 285 & nn_stock, nn_write , ln_mskland , ln_clobber , nn_chunksz, nn_euler , & 294 & ln_cfmeta, ln_ iscpl, ln_xios_read, nn_wxios295 NAMELIST/namdom/ ln_linssh, rn_ isfhmin, rn_rdt, rn_atfp, ln_crs, ln_meshmask286 & ln_cfmeta, ln_xios_read, nn_wxios 287 NAMELIST/namdom/ ln_linssh, rn_rdt, rn_atfp, ln_crs, ln_meshmask 296 288 #if defined key_netcdf4 297 289 NAMELIST/namnc4/ nn_nchunks_i, nn_nchunks_j, nn_nchunks_k, ln_nc4zip … … 343 335 WRITE(numout,*) ' overwrite an existing file ln_clobber = ', ln_clobber 344 336 WRITE(numout,*) ' NetCDF chunksize (bytes) nn_chunksz = ', nn_chunksz 345 WRITE(numout,*) ' IS coupling at the restart step ln_iscpl = ', ln_iscpl346 337 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 347 338 WRITE(numout,*) ' READ restart for a single file using XIOS ln_xios_read =', ln_xios_read … … 417 408 WRITE(numout,*) ' linear free surface (=T) ln_linssh = ', ln_linssh 418 409 WRITE(numout,*) ' create mesh/mask file ln_meshmask = ', ln_meshmask 419 WRITE(numout,*) ' treshold to open the isf cavity rn_isfhmin = ', rn_isfhmin, ' [m]'420 410 WRITE(numout,*) ' ocean time step rn_rdt = ', rn_rdt 421 411 WRITE(numout,*) ' asselin time filter parameter rn_atfp = ', rn_atfp -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/DOM/domvvl.F90
r11536 r11970 36 36 37 37 PUBLIC dom_vvl_init ! called by domain.F90 38 PUBLIC dom_vvl_zgr ! called by isfcpl.F90 38 39 PUBLIC dom_vvl_sf_nxt ! called by step.F90 39 40 PUBLIC dom_vvl_sf_swp ! called by step.F90 … … 115 116 !! Reference : Leclair, M., and G. Madec, 2011, Ocean Modelling. 116 117 !!---------------------------------------------------------------------- 118 ! 119 IF(lwp) WRITE(numout,*) 120 IF(lwp) WRITE(numout,*) 'dom_vvl_init : Variable volume activated' 121 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~' 122 ! 123 CALL dom_vvl_ctl ! choose vertical coordinate (z_star, z_tilde or layer) 124 ! 125 ! ! Allocate module arrays 126 IF( dom_vvl_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'dom_vvl_init : unable to allocate arrays' ) 127 ! 128 ! ! Read or initialize e3t_(b/n), tilde_e3t_(b/n) and hdiv_lf 129 CALL dom_vvl_rst( nit000, 'READ' ) 130 e3t_a(:,:,jpk) = e3t_0(:,:,jpk) ! last level always inside the sea floor set one for all 131 ! 132 CALL dom_vvl_zgr() ! interpolation scale factor, depth and water column 133 ! 134 END SUBROUTINE dom_vvl_init 135 ! 136 SUBROUTINE dom_vvl_zgr() 137 !!---------------------------------------------------------------------- 138 !! *** ROUTINE dom_vvl_init *** 139 !! 140 !! ** Purpose : Interpolation of all scale factors, 141 !! depths and water column heights 142 !! 143 !! ** Method : - interpolate scale factors 144 !! 145 !! ** Action : - e3t_(n/b) and tilde_e3t_(n/b) 146 !! - Regrid: e3(u/v)_n 147 !! e3(u/v)_b 148 !! e3w_n 149 !! e3(u/v)w_b 150 !! e3(u/v)w_n 151 !! gdept_n, gdepw_n and gde3w_n 152 !! - h(t/u/v)_0 153 !! - frq_rst_e3t and frq_rst_hdv 154 !! 155 !! Reference : Leclair, M., and G. Madec, 2011, Ocean Modelling. 156 !!---------------------------------------------------------------------- 117 157 INTEGER :: ji, jj, jk 118 158 INTEGER :: ii0, ii1, ij0, ij1 119 159 REAL(wp):: zcoef 120 160 !!---------------------------------------------------------------------- 121 !122 IF(lwp) WRITE(numout,*)123 IF(lwp) WRITE(numout,*) 'dom_vvl_init : Variable volume activated'124 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~'125 !126 CALL dom_vvl_ctl ! choose vertical coordinate (z_star, z_tilde or layer)127 !128 ! ! Allocate module arrays129 IF( dom_vvl_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'dom_vvl_init : unable to allocate arrays' )130 !131 ! ! Read or initialize e3t_(b/n), tilde_e3t_(b/n) and hdiv_lf132 CALL dom_vvl_rst( nit000, 'READ' )133 e3t_a(:,:,jpk) = e3t_0(:,:,jpk) ! last level always inside the sea floor set one for all134 161 ! 135 162 ! !== Set of all other vertical scale factors ==! (now and before) … … 263 290 ENDIF 264 291 ! 265 END SUBROUTINE dom_vvl_init 266 292 END SUBROUTINE dom_vvl_zgr 267 293 268 294 SUBROUTINE dom_vvl_sf_nxt( kt, kcall ) … … 813 839 id4 = iom_varid( numror, 'tilde_e3t_n', ldstop = .FALSE. ) 814 840 id5 = iom_varid( numror, 'hdiv_lf', ldstop = .FALSE. ) 841 ! 815 842 ! ! --------- ! 816 843 ! ! all cases ! 817 844 ! ! --------- ! 845 ! 818 846 IF( MIN( id1, id2 ) > 0 ) THEN ! all required arrays exist 819 847 CALL iom_get( numror, jpdom_autoglo, 'e3t_b', e3t_b(:,:,:), ldxios = lrxios ) … … 1033 1061 ! 1034 1062 IF( ioptio /= 1 ) CALL ctl_stop( 'Choose ONE vertical coordinate in namelist nam_vvl' ) 1035 IF( .NOT. ln_vvl_zstar .AND. ln_isf ) CALL ctl_stop( 'Only vvl_zstar has been tested with ice shelf cavity' )1036 1063 ! 1037 1064 IF(lwp) THEN ! Print the choice -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/DOM/domwri.F90
r11532 r11970 16 16 !! dom_stiff : diagnose maximum grid stiffness/hydrostatic consistency (s-coordinate) 17 17 !!---------------------------------------------------------------------- 18 USE isf ! ice shelf 18 19 USE dom_oce ! ocean space and time domain 19 20 USE phycst , ONLY : rsmall … … 155 156 156 157 ! note that mbkt is set to 1 over land ==> use surface tmask 157 zprt(:,:) = ssmask(:,:) *REAL( mbkt(:,:) , wp )158 zprt(:,:) = REAL( mbkt(:,:) , wp ) 158 159 CALL iom_rstput( 0, 0, inum, 'mbathy', zprt, ktype = jp_i4 ) ! ! nb of ocean T-points 159 zprt(:,:) = ssmask(:,:) *REAL( mikt(:,:) , wp )160 zprt(:,:) = REAL( mikt(:,:) , wp ) 160 161 CALL iom_rstput( 0, 0, inum, 'misf', zprt, ktype = jp_i4 ) ! ! nb of ocean T-points 161 zprt(:,:) = ssmask(:,:) * REAL( risfdep(:,:) , wp )162 CALL iom_rstput( 0, 0, inum, 'isfdraft', zprt, ktype = jp_r8 ) ! ! nb of ocean T-points163 162 ! ! vertical mesh 164 163 CALL iom_rstput( 0, 0, inum, 'e3t_1d', e3t_1d, ktype = jp_r8 ) ! ! scale factors -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/DOM/domzgr.F90
r10425 r11970 71 71 INTEGER, DIMENSION(:,:), INTENT(out) :: k_top, k_bot ! ocean first and last level indices 72 72 ! 73 INTEGER :: jk ! dummy loop index 73 INTEGER :: ji,jj,jk ! dummy loop index 74 INTEGER :: ikt, ikb ! top/bot index 74 75 INTEGER :: ioptio, ibat, ios ! local integer 75 76 REAL(wp) :: zrefdep ! depth of the reference level (~10m) … … 138 139 ! ! top/bottom ocean level indices for t-, u- and v-points (f-point also for top) 139 140 CALL zgr_top_bot( k_top, k_bot ) ! with a minimum value set to 1 140 141 141 ! 142 ! ! ice shelf draft and bathymetry 143 DO jj = 1,jpj 144 DO ji = 1,jpi 145 ikt = mikt(ji,jj) 146 ikb = mbkt(ji,jj) 147 bathy (ji,jj) = gdepw_0(ji,jj,ikb+1) 148 risfdep(ji,jj) = gdepw_0(ji,jj,ikt ) 149 END DO 150 END DO 151 ! 142 152 ! ! deepest/shallowest W level Above/Below ~10m 143 153 !!gm BUG in s-coordinate this does not work! -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/DOM/istate.F90
r10499 r11970 28 28 USE dtauvd ! data: U & V current (dta_uvd routine) 29 29 USE domvvl ! varying vertical mesh 30 USE iscplrst ! ice sheet coupling31 30 USE wet_dry ! wetting and drying (needed for wad_istate) 32 31 USE usrdef_istate ! User defined initial state … … 86 85 ! ! ------------------- 87 86 CALL rst_read ! Read the restart file 88 IF (ln_iscpl) CALL iscpl_stp ! extrapolate restart to wet and dry89 87 CALL day_init ! model calendar (using both namelist and restart infos) 90 88 ! -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/DYN/divhor.F90
r10425 r11970 19 19 !!---------------------------------------------------------------------- 20 20 USE oce ! ocean dynamics and tracers 21 USE isf 22 USE isfutils 21 23 USE dom_oce ! ocean space and time domain 22 USE sbc_oce, ONLY : ln_rnf , ln_isf! surface boundary condition: ocean24 USE sbc_oce, ONLY : ln_rnf ! surface boundary condition: ocean 23 25 USE sbcrnf ! river runoff 24 USE sbcisf ! ice shelf 25 USE iscplhsb ! ice sheet / ocean coupling 26 USE iscplini ! ice sheet / ocean coupling 26 USE isfhdiv ! ice shelf 27 27 #if defined key_asminc 28 28 USE asminc ! Assimilation increment … … 64 64 INTEGER :: ji, jj, jk ! dummy loop indices 65 65 REAL(wp) :: zraur, zdep ! local scalars 66 REAL(wp), DIMENSION(jpi,jpj) :: ztmp 66 67 !!---------------------------------------------------------------------- 67 68 ! … … 85 86 END DO 86 87 END DO 88 ! 87 89 #if defined key_agrif 88 90 IF( .NOT. Agrif_Root() ) THEN … … 94 96 #endif 95 97 ! 96 IF( ln_rnf ) CALL sbc_rnf_div( hdivn ) !== runoffs==! (update hdivn field)98 IF( ln_rnf ) CALL sbc_rnf_div( hdivn ) !== runoffs ==! (update hdivn field) 97 99 ! 98 100 #if defined key_asminc … … 100 102 ! 101 103 #endif 102 IF( ln_isf ) CALL sbc_isf_div( hdivn ) !== ice shelf ==! (update hdivn field)103 104 ! 104 IF( ln_is cpl .AND. ln_hsb ) CALL iscpl_div( hdivn ) !== ice sheet==! (update hdivn field)105 IF( ln_isf ) CALL isf_hdiv( kt, hdivn ) !== ice shelf ==! (update hdivn field) 105 106 ! 106 107 CALL lbc_lnk( 'divhor', hdivn, 'T', 1. ) ! (no sign change) -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/DYN/dynhpg.F90
r11536 r11970 31 31 !!---------------------------------------------------------------------- 32 32 USE oce ! ocean dynamics and tracers 33 USE isf ! ice shelf (risfload variable) 34 USE isfload ! ice shelf (isf_load routine ) 33 35 USE sbc_oce ! surface variable (only for the flag with ice shelf) 34 36 USE dom_oce ! ocean space and time domain … … 213 215 ENDIF 214 216 ! 215 IF ( .NOT. ln_isfcav ) THEN !--- no ice shelf load216 riceload(:,:) = 0._wp217 !218 ELSE !--- set an ice shelf load219 !220 IF(lwp) WRITE(numout,*)221 IF(lwp) WRITE(numout,*) ' ice shelf case: set the ice-shelf load'222 ALLOCATE( zts_top(jpi,jpj,jpts) , zrhd(jpi,jpj,jpk) , zrhdtop_isf(jpi,jpj) , ziceload(jpi,jpj) )223 !224 znad = 1._wp !- To use density and not density anomaly225 !226 ! !- assume water displaced by the ice shelf is at T=-1.9 and S=34.4 (rude)227 zts_top(:,:,jp_tem) = -1.9_wp ; zts_top(:,:,jp_sal) = 34.4_wp228 !229 DO jk = 1, jpk !- compute density of the water displaced by the ice shelf230 CALL eos( zts_top(:,:,:), gdept_n(:,:,jk), zrhd(:,:,jk) )231 END DO232 !233 ! !- compute rhd at the ice/oce interface (ice shelf side)234 CALL eos( zts_top , risfdep, zrhdtop_isf )235 !236 ! !- Surface value + ice shelf gradient237 ziceload = 0._wp ! compute pressure due to ice shelf load238 DO jj = 1, jpj ! (used to compute hpgi/j for all the level from 1 to miku/v)239 DO ji = 1, jpi ! divided by 2 later240 ikt = mikt(ji,jj)241 ziceload(ji,jj) = ziceload(ji,jj) + (znad + zrhd(ji,jj,1) ) * e3w_n(ji,jj,1) * (1._wp - tmask(ji,jj,1))242 DO jk = 2, ikt-1243 ziceload(ji,jj) = ziceload(ji,jj) + (2._wp * znad + zrhd(ji,jj,jk-1) + zrhd(ji,jj,jk)) * e3w_n(ji,jj,jk) &244 & * (1._wp - tmask(ji,jj,jk))245 END DO246 IF (ikt >= 2) ziceload(ji,jj) = ziceload(ji,jj) + (2._wp * znad + zrhdtop_isf(ji,jj) + zrhd(ji,jj,ikt-1)) &247 & * ( risfdep(ji,jj) - gdept_n(ji,jj,ikt-1) )248 END DO249 END DO250 riceload(:,:) = ziceload(:,:) ! need to be saved for diaar5251 !252 DEALLOCATE( zts_top , zrhd , zrhdtop_isf , ziceload )253 ENDIF254 !255 217 END SUBROUTINE dyn_hpg_init 256 257 218 258 219 SUBROUTINE hpg_zco( kt ) … … 572 533 !! ua = ua - 1/e1u * zhpi 573 534 !! va = va - 1/e2v * zhpj 574 !! iceload is added and partial cell case are added to the top and bottom535 !! iceload is added 575 536 !! 576 537 !! ** Action : - Update (ua,va) with the now hydrastatic pressure trend … … 617 578 & - 0.5_wp * e3w_n(ji,jj,ikt) & 618 579 & * ( 2._wp * znad + rhd(ji,jj,ikt) + zrhdtop_oce(ji,jj) ) & 619 & + ( ri ceload(ji+1,jj) - riceload(ji,jj)) )580 & + ( risfload(ji+1,jj) - risfload(ji,jj)) ) 620 581 zhpj(ji,jj,1) = zcoef0 / e2v(ji,jj) * ( 0.5_wp * e3w_n(ji,jj+1,iktp1j) & 621 582 & * ( 2._wp * znad + rhd(ji,jj+1,iktp1j) + zrhdtop_oce(ji,jj+1) ) & 622 583 & - 0.5_wp * e3w_n(ji,jj,ikt) & 623 584 & * ( 2._wp * znad + rhd(ji,jj,ikt) + zrhdtop_oce(ji,jj) ) & 624 & + ( ri ceload(ji,jj+1) - riceload(ji,jj)) )585 & + ( risfload(ji,jj+1) - risfload(ji,jj)) ) 625 586 ! s-coordinate pressure gradient correction (=0 if z coordinate) 626 587 zuap = -zcoef0 * ( rhd (ji+1,jj,1) + rhd (ji,jj,1) + 2._wp * znad ) & -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/DYN/dynnxt.F90
r10425 r11970 29 29 USE sbc_oce ! Surface boundary condition: ocean fields 30 30 USE sbcrnf ! river runoffs 31 USE sbcisf ! ice shelf32 31 USE phycst ! physical constants 33 32 USE dynadv ! dynamics: vector invariant versus flux form … … 41 40 USE trddyn ! trend manager: dynamics 42 41 USE trdken ! trend manager: kinetic energy 42 USE isf , ONLY: ln_isf ! ice shelf 43 USE isfdynnxt , ONLY: isf_dynnxt ! ice shelf 43 44 ! 44 45 USE in_out_manager ! I/O manager … … 241 242 ENDIF 242 243 END IF 243 244 IF ( ln_isf ) THEN ! if ice shelf melting 245 DO jk = 1, jpkm1 ! Deal with isf separetely, as can be through depth too 246 DO jj = 1, jpj 247 DO ji = 1, jpi 248 IF( misfkt(ji,jj) <=jk .and. jk < misfkb(ji,jj) ) THEN 249 e3t_b(ji,jj,jk) = e3t_b(ji,jj,jk) - zcoef * ( fwfisf_b(ji,jj) - fwfisf(ji,jj) ) & 250 & * ( e3t_n(ji,jj,jk) * r1_hisf_tbl(ji,jj) ) * tmask(ji,jj,jk) 251 ELSEIF ( jk==misfkb(ji,jj) ) THEN 252 e3t_b(ji,jj,jk) = e3t_b(ji,jj,jk) - zcoef * ( fwfisf_b(ji,jj) - fwfisf(ji,jj) ) & 253 & * ( e3t_n(ji,jj,jk) * r1_hisf_tbl(ji,jj) ) * ralpha(ji,jj) * tmask(ji,jj,jk) 254 ENDIF 255 END DO 256 END DO 257 END DO 258 END IF 244 ! 245 ! ice shelf melting (deal separatly as it can be in depth) 246 ! PM: we could probably define a generic subroutine to do the in depth correction 247 ! to manage rnf, isf and possibly in the futur icb, tide water glacier (...) 248 IF ( ln_isf ) CALL isf_dynnxt( kt, atfp * rdt ) 259 249 ! 260 250 IF( ln_dynadv_vec ) THEN ! Asselin filter applied on velocity -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/DYN/dynspg_ts.F90
r11536 r11970 33 33 USE zdf_oce ! vertical physics: variables 34 34 USE zdfdrg ! vertical physics: top/bottom drag coef. 35 USE sbcisf ! ice shelf variable (fwfisf) 35 USE isf ! ice shelf variable (fwfisf) 36 USE isfutils 36 37 USE sbcapr ! surface boundary condition: atmospheric pressure 37 38 USE dynadv , ONLY: ln_dynadv_vec … … 338 339 ELSE ! CENTRED integration: use kt-1/2 + kt+1/2 fluxes (NOW) 339 340 zztmp = r1_rau0 * r1_2 340 zssh_frc(:,:) = zztmp * ( emp(:,:) + emp_b(:,:) - rnf(:,:) - rnf_b(:,:) + fwfisf(:,:) + fwfisf_b(:,:) ) 341 zssh_frc(:,:) = zztmp * ( emp(:,:) + emp_b(:,:) & 342 & - rnf(:,:) - rnf_b(:,:) & 343 & + fwfisf_cav(:,:) + fwfisf_cav_b(:,:) & 344 & + fwfisf_par(:,:) + fwfisf_par_b(:,:) ) 341 345 ENDIF 342 346 ! != Add Stokes drift divergence =! (if exist) … … 344 348 zssh_frc(:,:) = zssh_frc(:,:) + div_sd(:,:) 345 349 ENDIF 350 ! 351 ! ! ice sheet coupling 352 IF ( ln_isf .AND. ln_isfcpl ) THEN 353 ! 354 ! ice sheet coupling 355 IF( ln_rstart .AND. kt == nit000 ) THEN 356 zssh_frc(:,:) = zssh_frc(:,:) + risfcpl_ssh(:,:) 357 END IF 358 ! 359 ! conservation option 360 IF( ln_isfcpl_cons ) THEN 361 zssh_frc(:,:) = zssh_frc(:,:) + risfcpl_cons_ssh(:,:) 362 END IF 363 ! 364 END IF 346 365 ! 347 366 #if defined key_asminc -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/DYN/dynzdf.F90
r11281 r11970 149 149 ze3va = ( 1._wp - r_vvl ) * e3v_n(ji,jj,ikv) + r_vvl * e3v_a(ji,jj,ikv) 150 150 ua(ji,jj,iku) = ua(ji,jj,iku) + r2dt * 0.5*( rCdU_top(ji+1,jj)+rCdU_top(ji,jj) ) * ua_b(ji,jj) / ze3ua 151 va(ji,jj,ikv) = va(ji,jj,ikv) + r2dt * 0.5*( rCdU_top(ji +1,jj)+rCdU_top(ji,jj) ) * va_b(ji,jj) / ze3va151 va(ji,jj,ikv) = va(ji,jj,ikv) + r2dt * 0.5*( rCdU_top(ji,jj+1)+rCdU_top(ji,jj) ) * va_b(ji,jj) / ze3va 152 152 END DO 153 153 END DO … … 428 428 ikv = mikv(ji,jj) ! (first wet ocean u- and v-points) 429 429 ze3va = ( 1._wp - r_vvl ) * e3v_n(ji,jj,ikv) + r_vvl * e3v_a(ji,jj,ikv) ! after scale factor at T-point 430 zwd(ji,jj,ik u) = zwd(ji,jj,iku) - r2dt * 0.5*( rCdU_top(ji+1,jj)+rCdU_top(ji,jj) ) / ze3va430 zwd(ji,jj,ikv) = zwd(ji,jj,ikv) - r2dt * 0.5*( rCdU_top(ji,jj+1)+rCdU_top(ji,jj) ) / ze3va 431 431 END DO 432 432 END DO -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/DYN/sshwzv.F90
r11414 r11970 18 18 !!---------------------------------------------------------------------- 19 19 USE oce ! ocean dynamics and tracers variables 20 USE isf ! ice shelf 21 USE isfutils 20 22 USE dom_oce ! ocean space and time domain variables 21 23 USE sbc_oce ! surface boundary condition: ocean … … 255 257 IF( .NOT.ln_linssh ) THEN ! before <-- with forcing removed 256 258 zcoef = atfp * rdt * r1_rau0 257 sshb(:,:) = sshb(:,:) - zcoef * ( emp_b(:,:) - emp (:,:) & 258 & - rnf_b(:,:) + rnf (:,:) & 259 & + fwfisf_b(:,:) - fwfisf(:,:) ) * ssmask(:,:) 259 sshb(:,:) = sshb(:,:) - zcoef * ( emp_b(:,:) - emp (:,:) & 260 & - rnf_b(:,:) + rnf (:,:) & 261 & + fwfisf_cav_b(:,:) - fwfisf_cav(:,:) & 262 & + fwfisf_par_b(:,:) - fwfisf_par(:,:) ) * ssmask(:,:) 263 264 ! ice sheet coupling 265 IF ( ln_isf .AND. ln_isfcpl .AND. kt == nit000+1) sshb(:,:) = sshb(:,:) - atfp * rdt * ( risfcpl_ssh(:,:) - 0.0 ) * ssmask(:,:) 266 260 267 ENDIF 268 261 269 sshn(:,:) = ssha(:,:) ! now <-- after 262 270 ENDIF -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/IOM/iom.F90
r11554 r11970 375 375 CALL iom_set_rstw_var_active('sshn') 376 376 CALL iom_set_rstw_var_active('rhop') 377 ! extra variable needed for the ice sheet coupling378 IF ( ln_iscpl ) THEN379 CALL iom_set_rstw_var_active('tmask')380 CALL iom_set_rstw_var_active('umask')381 CALL iom_set_rstw_var_active('vmask')382 CALL iom_set_rstw_var_active('smask')383 CALL iom_set_rstw_var_active('e3t_n')384 CALL iom_set_rstw_var_active('e3u_n')385 CALL iom_set_rstw_var_active('e3v_n')386 CALL iom_set_rstw_var_active('gdepw_n')387 END IF388 377 ENDIF 389 378 IF(ln_diurnal) CALL iom_set_rstw_var_active('Dsst') -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/IOM/restart.F90
r11536 r11970 161 161 CALL iom_rstput( kt, nitrst, numrow, 'sshn' , sshn, ldxios = lwxios ) 162 162 CALL iom_rstput( kt, nitrst, numrow, 'rhop' , rhop, ldxios = lwxios ) 163 ! extra variable needed for the ice sheet coupling164 IF ( ln_iscpl ) THEN165 CALL iom_rstput( kt, nitrst, numrow, 'tmask' , tmask, ldxios = lwxios ) ! need to extrapolate T/S166 CALL iom_rstput( kt, nitrst, numrow, 'umask' , umask, ldxios = lwxios ) ! need to correct barotropic velocity167 CALL iom_rstput( kt, nitrst, numrow, 'vmask' , vmask, ldxios = lwxios ) ! need to correct barotropic velocity168 CALL iom_rstput( kt, nitrst, numrow, 'smask' , ssmask, ldxios = lwxios) ! need to correct barotropic velocity169 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t_n(:,:,:), ldxios = lwxios ) ! need to compute temperature correction170 CALL iom_rstput( kt, nitrst, numrow, 'e3u_n', e3u_n(:,:,:), ldxios = lwxios ) ! need to compute bt conservation171 CALL iom_rstput( kt, nitrst, numrow, 'e3v_n', e3v_n(:,:,:), ldxios = lwxios ) ! need to compute bt conservation172 CALL iom_rstput( kt, nitrst, numrow, 'gdepw_n', gdepw_n(:,:,:), ldxios = lwxios ) ! need to compute extrapolation if vvl173 END IF174 163 ENDIF 175 164 -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/LDF/ldfslp.F90
r10425 r11970 21 21 !!---------------------------------------------------------------------- 22 22 USE oce ! ocean dynamics and tracers 23 USE isf ! ice shelf 23 24 USE dom_oce ! ocean space and time domain 24 25 ! USE ldfdyn ! lateral diffusion: eddy viscosity coef. -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/SBC/sbc_oce.F90
r10882 r11970 43 43 LOGICAL , PUBLIC :: ln_dm2dc !: Daily mean to Diurnal Cycle short wave (qsr) 44 44 LOGICAL , PUBLIC :: ln_rnf !: runoffs / runoff mouths 45 LOGICAL , PUBLIC :: ln_isf !: ice shelf melting46 45 LOGICAL , PUBLIC :: ln_ssr !: Sea Surface restoring on SST and/or SSS 47 46 LOGICAL , PUBLIC :: ln_apr_dyn !: Atmospheric pressure forcing used on dynamics (ocean & ice) … … 122 121 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: emp_tot !: total E-P over ocean and ice [Kg/m2/s] 123 122 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fmmflx !: freshwater budget: freezing/melting [Kg/m2/s] 124 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rnf , rnf_b !: river runoff [Kg/m2/s] 125 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fwfisf , fwfisf_b !: ice shelf melting [Kg/m2/s] 126 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fwficb , fwficb_b !: iceberg melting [Kg/m2/s] 127 123 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rnf , rnf_b !: river runoff [Kg/m2/s] 124 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fwficb , fwficb_b !: iceberg melting [Kg/m2/s] 128 125 !! 129 126 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sbc_tsc, sbc_tsc_b !: sbc content trend [K.m/s] jpi,jpj,jpts … … 174 171 & sfx (jpi,jpj) , sfx_b(jpi,jpj) , emp_tot(jpi,jpj), fmmflx(jpi,jpj), STAT=ierr(2) ) 175 172 ! 176 ALLOCATE( fwfisf (jpi,jpj),rnf (jpi,jpj) , sbc_tsc (jpi,jpj,jpts) , qsr_hc (jpi,jpj,jpk) , &177 & fwfisf_b(jpi,jpj),rnf_b(jpi,jpj) , sbc_tsc_b(jpi,jpj,jpts) , qsr_hc_b(jpi,jpj,jpk) , &173 ALLOCATE( rnf (jpi,jpj) , sbc_tsc (jpi,jpj,jpts) , qsr_hc (jpi,jpj,jpk) , & 174 & rnf_b(jpi,jpj) , sbc_tsc_b(jpi,jpj,jpts) , qsr_hc_b(jpi,jpj,jpk) , & 178 175 & fwficb (jpi,jpj), fwficb_b(jpi,jpj), STAT=ierr(3) ) 179 176 ! -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/SBC/sbccpl.F90
r11536 r11970 36 36 USE eosbn2 ! 37 37 USE sbcrnf , ONLY : l_rnfcpl 38 USE sbcisf , ONLY : l_isfcpl38 USE isf , ONLY : ln_isf, l_isfoasis, fwfisf_oasis 39 39 #if defined key_cice 40 40 USE ice_domain_size, only: ncat … … 474 474 srcv(jpr_icb)%clname = 'OIceberg' ; IF( TRIM( sn_rcv_icb%cldes) == 'coupled' ) srcv(jpr_icb)%laction = .TRUE. 475 475 476 IF( srcv(jpr_isf)%laction .AND. ln_isf) THEN477 l_isf cpl = .TRUE. ! -> no need to read isf in sbcisf476 IF( srcv(jpr_isf)%laction ) THEN 477 l_isfoasis = .TRUE. ! -> isf fwf comes from oasis 478 478 IF(lwp) WRITE(numout,*) 479 479 IF(lwp) WRITE(numout,*) ' iceshelf received from oasis ' 480 CALL ctl_stop('STOP','not coded') 480 481 ENDIF 481 482 ! … … 1405 1406 rnf(:,:) = rnf(:,:) + fwficb(:,:) ! iceberg added to runfofs 1406 1407 ENDIF 1407 IF( srcv(jpr_isf)%laction ) fwfisf(:,:) = - frcv(jpr_isf)%z3(:,:,1) ! fresh water flux from the isf (fwfisf <0 mean melting) 1408 ! 1409 ! ice shelf fwf 1410 IF( srcv(jpr_isf)%laction ) THEN 1411 fwfisf_oasis(:,:) = - frcv(jpr_isf)%z3(:,:,1) ! fresh water flux from the isf (fwfisf <0 mean melting) 1412 END IF 1408 1413 1409 1414 IF( ln_mixcpl ) THEN ; emp(:,:) = emp(:,:) * xcplmask(:,:,0) + zemp(:,:) * zmsk(:,:) … … 1708 1713 ENDIF 1709 1714 IF( srcv(jpr_isf)%laction ) THEN ! iceshelf (fwfisf <0 mean melting) 1710 fwfisf (:,:) = - frcv(jpr_isf)%z3(:,:,1)1715 fwfisf_oasis(:,:) = - frcv(jpr_isf)%z3(:,:,1) 1711 1716 ENDIF 1712 1717 … … 1747 1752 ENDIF 1748 1753 IF( srcv(jpr_isf)%laction ) THEN ! iceshelf (fwfisf <0 mean melting) 1749 fwfisf (:,:) = - frcv(jpr_isf)%z3(:,:,1)1754 fwfisf_oasis(:,:) = - frcv(jpr_isf)%z3(:,:,1) 1750 1755 ENDIF 1751 1756 ! -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/SBC/sbcfwb.F90
r10570 r11970 20 20 USE phycst ! physical constants 21 21 USE sbcrnf ! ocean runoffs 22 USE sbcisf! ice shelf melting contribution22 USE isf ! ice shelf melting contribution 23 23 USE sbcssr ! Sea-Surface damping terms 24 24 ! … … 104 104 ! 105 105 IF( MOD( kt-1, kn_fsbc ) == 0 ) THEN 106 y_fwfnow(1) = local_sum( e1e2t(:,:) * ( emp(:,:) - rnf(:,:) + fwfisf (:,:) - snwice_fmass(:,:) ) )106 y_fwfnow(1) = local_sum( e1e2t(:,:) * ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) - snwice_fmass(:,:) ) ) 107 107 CALL mpp_delay_sum( 'sbcfwb', 'fwb', y_fwfnow(:), z_fwfprv(:), kt == nitend - nn_fsbc + 1 ) 108 108 z_fwfprv(1) = z_fwfprv(1) / area … … 159 159 ztmsk_neg(:,:) = tmask_i(:,:) - ztmsk_pos(:,:) 160 160 ! ! fwf global mean (excluding ocean to ice/snow exchanges) 161 z_fwf = glob_sum( 'sbcfwb', e1e2t(:,:) * ( emp(:,:) - rnf(:,:) + fwfisf (:,:) - snwice_fmass(:,:) ) ) / area161 z_fwf = glob_sum( 'sbcfwb', e1e2t(:,:) * ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) - snwice_fmass(:,:) ) ) / area 162 162 ! 163 163 IF( z_fwf < 0._wp ) THEN ! spread out over >0 erp area to increase evaporation -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/SBC/sbcmod.F90
r11536 r11970 37 37 #endif 38 38 USE sbcice_cice ! surface boundary condition: CICE sea-ice model 39 USE sbcisf ! surface boundary condition: ice-shelf40 39 USE sbccpl ! surface boundary condition: coupled formulation 41 40 USE cpl_oasis3 ! OASIS routines for coupling … … 43 42 USE sbcrnf ! surface boundary condition: runoffs 44 43 USE sbcapr ! surface boundary condition: atmo pressure 45 USE sbcisf ! surface boundary condition: ice shelf46 44 USE sbcfwb ! surface boundary condition: freshwater budget 47 45 USE icbstp ! Icebergs … … 91 89 LOGICAL :: ll_purecpl, ll_opa, ll_not_nemo ! local logical 92 90 !! 93 NAMELIST/namsbc/ nn_fsbc , 94 & ln_usr , ln_flx , ln_blk ,&95 & ln_cpl , ln_mixcpl , nn_components,&96 & nn_ice , ln_ice_embd, 97 & ln_traqsr, ln_dm2dc ,&98 & ln_rnf , nn_fwb , ln_ssr , ln_isf , ln_apr_dyn ,&99 & ln_wave , ln_cdgw , ln_sdw , ln_tauwoc , ln_stcor ,&100 & ln_tauw , nn_lsm , nn_sdrift91 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 101 99 !!---------------------------------------------------------------------- 102 100 ! … … 153 151 WRITE(numout,*) ' Patm gradient added in ocean & ice Eqs. ln_apr_dyn = ', ln_apr_dyn 154 152 WRITE(numout,*) ' runoff / runoff mouths ln_rnf = ', ln_rnf 155 WRITE(numout,*) ' iceshelf formulation ln_isf = ', ln_isf156 153 WRITE(numout,*) ' nb of iterations if land-sea-mask applied nn_lsm = ', nn_lsm 157 154 WRITE(numout,*) ' surface wave ln_wave = ', ln_wave … … 239 236 #endif 240 237 ! 241 IF( .NOT.ln_isf ) THEN !* No ice-shelf in the domain : allocate and set to zero242 IF( sbc_isf_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'sbc_init : unable to allocate sbc_isf arrays' )243 fwfisf (:,:) = 0._wp ; risf_tsc (:,:,:) = 0._wp244 fwfisf_b(:,:) = 0._wp ; risf_tsc_b(:,:,:) = 0._wp245 END IF246 238 IF( nn_ice == 0 ) THEN !* No sea-ice in the domain : ice fraction is always zero 247 239 IF( nn_components /= jp_iam_opa ) fr_i(:,:) = 0._wp ! except for OPA in SAS-OPA coupled case … … 333 325 IF( ln_ssr ) CALL sbc_ssr_init ! Sea-Surface Restoring initialization 334 326 ! 335 IF( ln_isf ) CALL sbc_isf_init ! Compute iceshelves336 !337 327 CALL sbc_rnf_init ! Runof initialization 338 328 ! … … 401 391 rnf_b (:,: ) = rnf (:,: ) 402 392 rnf_tsc_b(:,:,:) = rnf_tsc(:,:,:) 403 ENDIF404 IF( ln_isf ) THEN405 fwfisf_b (:,: ) = fwfisf (:,: )406 risf_tsc_b(:,:,:) = risf_tsc(:,:,:)407 393 ENDIF 408 394 ! … … 454 440 IF( .NOT. ln_passive_mode ) CALL lbc_lnk( 'sbcmod', emp, 'T', 1. ) ! ensure restartability with icebergs 455 441 ENDIF 456 457 IF( ln_isf ) CALL sbc_isf( kt ) ! compute iceshelves458 442 459 443 IF( ln_rnf ) CALL sbc_rnf( kt ) ! add runoffs to fresh water fluxes … … 558 542 ! 559 543 IF(ln_ctl) THEN ! print mean trends (used for debugging) 560 CALL prt_ctl(tab2d_1=fr_i , clinfo1=' fr_i- : ', mask1=tmask )561 CALL prt_ctl(tab2d_1=(emp-rnf + fwfisf), clinfo1=' emp-rnf- : ', mask1=tmask )562 CALL prt_ctl(tab2d_1=(sfx-rnf + fwfisf), clinfo1=' sfx-rnf- : ', mask1=tmask )544 CALL prt_ctl(tab2d_1=fr_i , clinfo1=' fr_i - : ', mask1=tmask ) 545 CALL prt_ctl(tab2d_1=(emp-rnf) , clinfo1=' emp-rnf - : ', mask1=tmask ) 546 CALL prt_ctl(tab2d_1=(sfx-rnf) , clinfo1=' sfx-rnf - : ', mask1=tmask ) 563 547 CALL prt_ctl(tab2d_1=qns , clinfo1=' qns - : ', mask1=tmask ) 564 548 CALL prt_ctl(tab2d_1=qsr , clinfo1=' qsr - : ', mask1=tmask ) -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/SBC/sbcrnf.F90
r11536 r11970 19 19 USE phycst ! physical constants 20 20 USE sbc_oce ! surface boundary condition variables 21 USE sbcisf ! PM we could remove it I think21 USE isf ! ice shelf 22 22 USE eosbn2 ! Equation Of State 23 23 USE closea ! closed seas -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/TRA/tranxt.F90
r10425 r11970 28 28 USE sbc_oce ! surface boundary condition: ocean 29 29 USE sbcrnf ! river runoffs 30 USE sbcisf! ice shelf melting30 USE isf ! ice shelf melting 31 31 USE zdf_oce ! ocean vertical mixing 32 32 USE domvvl ! variable volume … … 312 312 ztc_f = ztc_n + atfp * ztc_d 313 313 ! 314 IF( jk == mikt(ji,jj) ) THEN ! first level 315 ze3t_f = ze3t_f - zfact2 * ( (emp_b(ji,jj) - emp(ji,jj) ) & 316 & + (fwfisf_b(ji,jj) - fwfisf(ji,jj)) ) 314 IF( jk == 1 ) THEN ! first level 315 ze3t_f = ze3t_f - zfact2 * ( emp_b(ji,jj) - emp(ji,jj) ) 317 316 ztc_f = ztc_f - zfact1 * ( psbc_tc(ji,jj,jn) - psbc_tc_b(ji,jj,jn) ) 318 317 ENDIF 318 ! 319 ! river runoff 319 320 IF( ln_rnf_depth ) THEN 320 321 ! Rivers are not just at the surface must go down to nk_rnf(ji,jj) 321 IF( mikt(ji,jj) <=jk .and.jk <= nk_rnf(ji,jj) ) THEN322 IF( jk <= nk_rnf(ji,jj) ) THEN 322 323 ze3t_f = ze3t_f - zfact2 * ( - (rnf_b(ji,jj) - rnf(ji,jj) ) ) & 323 324 & * ( e3t_n(ji,jj,jk) / h_rnf(ji,jj) ) 324 325 ENDIF 325 326 ELSE 326 IF( jk == mikt(ji,jj)) THEN ! first level327 IF( jk == 1 ) THEN ! first level 327 328 ze3t_f = ze3t_f - zfact2 * ( - (rnf_b(ji,jj) - rnf(ji,jj) ) ) 328 329 ENDIF 329 330 ENDIF 330 331 ! 332 IF( ll_rnf .AND. jk <= nk_rnf(ji,jj) ) & 333 & ztc_f = ztc_f - zfact1 * ( rnf_tsc(ji,jj,jn) - rnf_tsc_b(ji,jj,jn) ) & 334 & * e3t_n(ji,jj,jk) / h_rnf(ji,jj) 331 335 ! 332 336 ! solar penetration (temperature only) 333 337 IF( ll_traqsr .AND. jn == jp_tem .AND. jk <= nksr ) & 334 338 & ztc_f = ztc_f - zfact1 * ( qsr_hc(ji,jj,jk) - qsr_hc_b(ji,jj,jk) ) 335 ! 336 ! river runoff 337 IF( ll_rnf .AND. jk <= nk_rnf(ji,jj) ) & 338 & ztc_f = ztc_f - zfact1 * ( rnf_tsc(ji,jj,jn) - rnf_tsc_b(ji,jj,jn) ) & 339 & * e3t_n(ji,jj,jk) / h_rnf(ji,jj) 340 ! 339 ! 341 340 ! ice shelf 342 341 IF( ll_isf ) THEN 343 ! level fully include in the Losch_2008 ice shelf boundary layer 344 IF ( jk >= misfkt(ji,jj) .AND. jk < misfkb(ji,jj) ) & 345 ztc_f = ztc_f - zfact1 * ( risf_tsc(ji,jj,jn) - risf_tsc_b(ji,jj,jn) ) & 346 & * e3t_n(ji,jj,jk) * r1_hisf_tbl (ji,jj) 347 ! level partially include in Losch_2008 ice shelf boundary layer 348 IF ( jk == misfkb(ji,jj) ) & 349 ztc_f = ztc_f - zfact1 * ( risf_tsc(ji,jj,jn) - risf_tsc_b(ji,jj,jn) ) & 350 & * e3t_n(ji,jj,jk) * r1_hisf_tbl (ji,jj) * ralpha(ji,jj) 342 ! 343 ! melt in the cavity 344 IF ( ln_isfcav_mlt ) THEN 345 ! level fully include in the Losch_2008 ice shelf boundary layer 346 IF ( jk >= misfkt_cav(ji,jj) .AND. jk < misfkb_cav(ji,jj) ) THEN 347 ztc_f = ztc_f - zfact1 * ( risf_cav_tsc(ji,jj,jn) - risf_cav_tsc_b(ji,jj,jn) ) & 348 & * e3t_n(ji,jj,jk) / rhisf_tbl_cav(ji,jj) 349 ze3t_f = ze3t_f - zfact2 * ( fwfisf_cav_b(ji,jj) - fwfisf_cav(ji,jj) ) & 350 & * e3t_n(ji,jj,jk) / rhisf_tbl_cav(ji,jj) 351 END IF 352 ! level partially include in Losch_2008 ice shelf boundary layer 353 IF ( jk == misfkb_cav(ji,jj) ) THEN 354 ztc_f = ztc_f - zfact1 * ( risf_cav_tsc(ji,jj,jn) - risf_cav_tsc_b(ji,jj,jn) ) & 355 & * e3t_n(ji,jj,jk) / rhisf_tbl_cav(ji,jj) * rfrac_tbl_cav(ji,jj) 356 ze3t_f = ze3t_f - zfact2 * ( fwfisf_cav_b(ji,jj) - fwfisf_cav(ji,jj) ) & 357 & * e3t_n(ji,jj,jk) / rhisf_tbl_cav(ji,jj) * rfrac_tbl_cav(ji,jj) 358 END IF 359 END IF 360 ! 361 ! parametrised melt (cavity closed) 362 IF ( ln_isfpar_mlt ) THEN 363 ! level fully include in the Losch_2008 ice shelf boundary layer 364 IF ( jk >= misfkt_par(ji,jj) .AND. jk < misfkb_par(ji,jj) ) THEN 365 ztc_f = ztc_f - zfact1 * ( risf_par_tsc(ji,jj,jn) - risf_par_tsc_b(ji,jj,jn) ) & 366 & * e3t_n(ji,jj,jk) / rhisf_tbl_par(ji,jj) 367 ze3t_f = ze3t_f - zfact2 * ( fwfisf_par_b(ji,jj) - fwfisf_par(ji,jj) ) & 368 & * e3t_n(ji,jj,jk) / rhisf_tbl_par(ji,jj) 369 END IF 370 ! level partially include in Losch_2008 ice shelf boundary layer 371 IF ( jk == misfkb_par(ji,jj) ) THEN 372 ztc_f = ztc_f - zfact1 * ( risf_par_tsc(ji,jj,jn) - risf_par_tsc_b(ji,jj,jn) ) & 373 & * e3t_n(ji,jj,jk) / rhisf_tbl_par(ji,jj) * rfrac_tbl_par(ji,jj) 374 ze3t_f = ze3t_f - zfact2 * ( fwfisf_par_b(ji,jj) - fwfisf_par(ji,jj) ) & 375 & * e3t_n(ji,jj,jk) / rhisf_tbl_par(ji,jj) * rfrac_tbl_par(ji,jj) 376 END IF 377 END IF 378 ! 379 ! ice sheet coupling correction 380 IF ( ln_isfcpl ) THEN 381 ! 382 ! at kt = nit000, risfcpl_vol_n = 0 and risfcpl_vol_b = risfcpl_vol so contribution nul 383 IF ( ln_rstart .AND. kt == nit000+1 ) THEN 384 ztc_f = ztc_f + zfact1 * risfcpl_tsc(ji,jj,jk,jn) * r1_e1e2t(ji,jj) 385 ze3t_f = ze3t_f - zfact1 * risfcpl_vol(ji,jj,jk ) * r1_e1e2t(ji,jj) 386 END IF 387 ! 388 END IF 389 ! 351 390 END IF 352 391 ! -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/TRA/trasbc.F90
r10499 r11970 10 10 !! - ! 2010-09 (C. Ethe, G. Madec) Merge TRA-TRC 11 11 !! 3.6 ! 2014-11 (P. Mathiot) isf melting forcing 12 !! 4.1 ! 2019-09 (P. Mathiot) isf moved in traisf 12 13 !!---------------------------------------------------------------------- 13 14 … … 22 23 USE sbcmod ! ln_rnf 23 24 USE sbcrnf ! River runoff 24 USE sbcisf ! Ice shelf25 USE iscplini ! Ice sheet coupling26 25 USE traqsr ! solar radiation penetration 27 26 USE trd_oce ! trends: ocean variables … … 62 61 !! (1) Fext, external forcing (i.e. flux through the (air+ice)-sea interface); 63 62 !! (2) Fwe , tracer carried with the water that is exchanged with air+ice. 64 !! The input forcing fields (emp, rnf, sfx , isf) contain Fext+Fwe,63 !! The input forcing fields (emp, rnf, sfx) contain Fext+Fwe, 65 64 !! they are simply added to the tracer trend (tsa). 66 65 !! In linear free surface case (ln_linssh=T), the volume of the … … 153 152 IF( lwxios ) CALL iom_swap( cxios_context ) 154 153 ENDIF 155 !156 !----------------------------------------157 ! Ice Shelf effects (ISF)158 ! tbl treated as in Losh (2008) JGR159 !----------------------------------------160 !161 !!gm BUG ? Why no differences between non-linear and linear free surface ?162 !!gm probably taken into account in r1_hisf_tbl : to be verified163 IF( ln_isf ) THEN164 zfact = 0.5_wp165 DO jj = 2, jpj166 DO ji = fs_2, fs_jpim1167 !168 ikt = misfkt(ji,jj)169 ikb = misfkb(ji,jj)170 !171 ! level fully include in the ice shelf boundary layer172 ! sign - because fwf sign of evapo (rnf sign of precip)173 DO jk = ikt, ikb - 1174 ! compute trend175 tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) &176 & + zfact * ( risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem) ) &177 & * r1_hisf_tbl(ji,jj)178 END DO179 180 ! level partially include in ice shelf boundary layer181 ! compute trend182 tsa(ji,jj,ikb,jp_tem) = tsa(ji,jj,ikb,jp_tem) &183 & + zfact * ( risf_tsc_b(ji,jj,jp_tem) + risf_tsc(ji,jj,jp_tem) ) &184 & * r1_hisf_tbl(ji,jj) * ralpha(ji,jj)185 186 END DO187 END DO188 END IF189 154 ! 190 155 !---------------------------------------- … … 242 207 #endif 243 208 ! 244 !----------------------------------------245 ! Ice Sheet coupling imbalance correction to have conservation246 !----------------------------------------247 !248 IF( ln_iscpl .AND. ln_hsb) THEN ! input of heat and salt due to river runoff249 DO jk = 1,jpk250 DO jj = 2, jpj251 DO ji = fs_2, fs_jpim1252 zdep = 1._wp / e3t_n(ji,jj,jk)253 tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) - htsc_iscpl(ji,jj,jk,jp_tem) * zdep254 tsa(ji,jj,jk,jp_sal) = tsa(ji,jj,jk,jp_sal) - htsc_iscpl(ji,jj,jk,jp_sal) * zdep255 END DO256 END DO257 END DO258 ENDIF259 260 209 IF( l_trdtra ) THEN ! save the horizontal diffusive trends for further diagnostics 261 210 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/ZDF/zdfmxl.F90
r10425 r11970 12 12 !!---------------------------------------------------------------------- 13 13 USE oce ! ocean dynamics and tracers variables 14 USE isf ! ice shelf 14 15 USE dom_oce ! ocean space and time domain variables 15 16 USE trc_oce , ONLY: l_offline ! ocean space and time domain variables -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/nemogcm.F90
r11536 r11970 61 61 USE diaharm ! tidal harmonics diagnostics (dia_harm_init routine) 62 62 USE step ! NEMO time-stepping (stp routine) 63 USE isfstp ! ice shelf (isf_stp_init routine) 63 64 USE icbini ! handle bergs, initialisation 64 65 USE icbstp ! handle bergs, calving, themodynamics and transport … … 431 432 RETURN ! end of initialization 432 433 ENDIF 434 ! 433 435 434 436 CALL istate_init ! ocean initial state (Dynamics and tracers) … … 471 473 ! ! Icebergs 472 474 CALL icb_init( rdt, nit000) ! initialise icebergs instance 475 476 ! ice shelf 477 CALL isf_init 473 478 474 479 ! ! Misc. options -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/step.F90
r11536 r11970 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, kt_offset = +1 ) ! update dynamic & tracer data at open boundaries 115 IF( ln_isf ) CALL isf_stp ( kstp ) 115 116 CALL sbc ( kstp ) ! Sea Boundary Condition (including sea-ice) 116 117 … … 229 230 CALL tra_sbc ( kstp ) ! surface boundary condition 230 231 IF( ln_traqsr ) CALL tra_qsr ( kstp ) ! penetrative solar radiation qsr 232 IF( ln_isf ) CALL tra_isf ( kstp ) ! ice shelf heat flux 231 233 IF( ln_trabbc ) CALL tra_bbc ( kstp ) ! bottom heat flux 232 234 IF( ln_trabbl ) CALL tra_bbl ( kstp ) ! advective (and/or diffusive) bottom boundary layer scheme -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/src/OCE/step_oce.F90
r10068 r11970 22 22 USE sbcwave ! Wave intialisation 23 23 24 USE isf 25 USE isfstp ! ice shelf boundary condition (isf_stp routine) 26 24 27 USE traqsr ! solar radiation penetration (tra_qsr routine) 28 USE traisf ! ice shelf (tra_isf routine) 25 29 USE trasbc ! surface boundary condition (tra_sbc routine) 26 30 USE trabbc ! bottom boundary condition (tra_bbc routine) -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/tests/ISOMIP/EXPREF/file_def_nemo-oce.xml
r9572 r11970 27 27 <field field_ref="ssh" name="sossheig" /> 28 28 <!-- variable for ice shelf --> 29 <field field_ref="qlatisf" name="sohflisf" /> 30 <field field_ref="fwfisf" name="sowflisf" /> 29 <field field_ref="fwfisf_cav" name="sowflisf" /> 31 30 <field field_ref="isfgammat" name="sogammat" /> 32 31 <field field_ref="isfgammas" name="sogammas" /> -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/tests/ISOMIP/EXPREF/namelist_cfg
r11536 r11970 46 46 rn_rdt = 1800. ! time step for the dynamics (and tracer if nn_acc=0) 47 47 / 48 !----------------------------------------------------------------------- 49 &namcfg ! parameters of the configuration (default: use namusr_def in namelist_cfg) 50 !----------------------------------------------------------------------- 51 / 52 !----------------------------------------------------------------------- 53 &namtsd ! Temperature & Salinity Data (init/dmp) (default: OFF) 54 !----------------------------------------------------------------------- 55 56 / 57 !----------------------------------------------------------------------- 58 &namwad ! Wetting and Drying (WaD) (default: OFF) 59 !----------------------------------------------------------------------- 60 / 61 !----------------------------------------------------------------------- 62 &namcrs ! coarsened grid (for outputs and/or TOP) (ln_crs =T) 63 !----------------------------------------------------------------------- 64 / 65 !----------------------------------------------------------------------- 66 &namc1d ! 1D configuration options ("key_c1d" default: PAPA station) 67 !----------------------------------------------------------------------- 68 / 69 !----------------------------------------------------------------------- 70 &namc1d_dyndmp ! U & V newtonian damping ("key_c1d" default: OFF) 71 !----------------------------------------------------------------------- 72 / 73 !----------------------------------------------------------------------- 74 &namc1d_uvd ! data: U & V currents ("key_c1d" default: OFF) 75 !----------------------------------------------------------------------- 76 77 / 78 48 79 !!====================================================================== 49 80 !! *** Surface Boundary Condition namelists *** !! … … 59 90 !! namsbc_rnf river runoffs (ln_rnf =T) 60 91 !! namsbc_apr Atmospheric Pressure (ln_apr_dyn =T) 61 !! namsbc_isf ice shelf melting/freezing (ln_isfcav =T : read (ln_read_cfg=T) or set or usr_def_zgr )62 !! namsbc_iscpl coupling option between land ice model and ocean (ln_isfcav =T)63 92 !! namsbc_wave external fields from wave model (ln_wave =T) 64 93 !! namberg iceberg floats (ln_icebergs=T) … … 66 95 ! 67 96 !----------------------------------------------------------------------- 68 &namsbc ! Surface Boundary Condition (surface module) 69 !----------------------------------------------------------------------- 70 nn_fsbc = 1 ! frequency of surface boundary condition computation 97 &namsbc ! Surface Boundary Condition manager (default: NO selection) 98 !----------------------------------------------------------------------- 99 nn_fsbc = 1 ! frequency of SBC module call 100 ! ! (control sea-ice & iceberg model call) 71 101 ln_usr = .true. ! user defined formulation (T => check usrdef_sbc) 72 ln_isf = .true. ! ice shelf melting/freezing (T => fill namsbc_isf) 73 / 74 !----------------------------------------------------------------------- 75 &namsbc_isf ! Top boundary layer (ISF) (ln_isfcav =T : read (ln_read_cfg=T) 76 !----------------------------------------------------------------------- or set or usr_def_zgr ) 77 ! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 78 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 79 ! nn_isf == 4 80 sn_fwfisf = 'rnfisf' , -12. ,'sowflisf', .false. , .true. , 'yearly' , '' , '' , '' 81 ! nn_isf == 3 82 sn_rnfisf = 'rnfisf' , -12. ,'sofwfisf', .false. , .true. , 'yearly' , '' , '' , '' 83 ! nn_isf == 2 and 3 84 sn_depmax_isf = 'rnfisf' , -12. ,'sozisfmax' , .false. , .true. , 'yearly' , '' , '' , '' 85 sn_depmin_isf = 'rnfisf' , -12. ,'sozisfmin' , .false. , .true. , 'yearly' , '' , '' , '' 86 ! nn_isf == 2 87 sn_Leff_isf = 'rnfisf' , -12. ,'Leff' , .false. , .true. , 'yearly' , '' , '' , '' 88 ! for all case 89 nn_isf = 1 ! ice shelf melting/freezing 90 ! 1 = presence of ISF 2 = bg03 parametrisation 91 ! 3 = rnf file for isf 4 = ISF fwf specified 92 ! option 1 and 4 need ln_isfcav = .true. (domzgr) 93 ! only for nn_isf = 1 or 2 94 rn_gammat0 = 1.0e-4 ! gammat coefficient used in blk formula 95 rn_gammas0 = 1.0e-4 ! gammas coefficient used in blk formula 96 ! only for nn_isf = 1 or 4 97 rn_hisf_tbl = 30. ! thickness of the top boundary layer (Losh et al. 2008) 98 ! 0 => thickness of the tbl = thickness of the first wet cell 99 ! only for nn_isf = 1 100 nn_isfblk = 1 ! 1 ISOMIP like: 2 equations formulation (Hunter et al., 2006) 101 ! 2 ISOMIP+ like: 3 equations formulation (Asay-Davis et al., 2015) 102 nn_gammablk = 0 ! 0 = cst Gammat (= gammat/s) 103 ! 1 = velocity dependend Gamma (u* * gammat/s) (Jenkins et al. 2010) 104 ! 2 = velocity and stability dependent Gamma (Holland et al. 1999) 105 / 106 !----------------------------------------------------------------------- 107 &namsbc_iscpl ! land ice / ocean coupling option 108 !----------------------------------------------------------------------- 109 / 102 / 103 !----------------------------------------------------------------------- 104 &namsbc_flx ! surface boundary condition : flux formulation (ln_flx =T) 105 !----------------------------------------------------------------------- 106 / 107 !----------------------------------------------------------------------- 108 &namsbc_blk ! namsbc_blk generic Bulk formula (ln_blk =T) 109 !----------------------------------------------------------------------- 110 111 / 112 !----------------------------------------------------------------------- 113 &namsbc_cpl ! coupled ocean/atmosphere model ("key_oasis3") 114 !----------------------------------------------------------------------- 115 116 / 117 !----------------------------------------------------------------------- 118 &namsbc_sas ! Stand-Alone Surface module: ocean data (SAS_SRC only) 119 !----------------------------------------------------------------------- 120 121 / 122 !----------------------------------------------------------------------- 123 &namsbc_iif ! Ice-IF : use observed ice cover (nn_ice = 1) 124 !----------------------------------------------------------------------- 125 / 126 !----------------------------------------------------------------------- 127 &namtra_qsr ! penetrative solar radiation (ln_traqsr =T) 128 !----------------------------------------------------------------------- 129 130 / 131 !----------------------------------------------------------------------- 132 &namsbc_ssr ! surface boundary condition : sea surface restoring (ln_ssr =T) 133 !----------------------------------------------------------------------- 134 135 / 136 !----------------------------------------------------------------------- 137 &namsbc_rnf ! runoffs (ln_rnf =T) 138 !----------------------------------------------------------------------- 139 140 / 141 !----------------------------------------------------------------------- 142 &namsbc_apr ! Atmospheric pressure used as ocean forcing (ln_apr_dyn =T) 143 !----------------------------------------------------------------------- 144 145 / 146 !----------------------------------------------------------------------- 147 &namisf ! Top boundary layer (ISF) (default: OFF) 148 !----------------------------------------------------------------------- 149 ! 150 ! ---------------- ice shelf load ------------------------------- 151 ! 152 cn_isfload = 'isomip' ! scheme to compute ice shelf load (ln_isfcav = .true. in domain_cfg.nc) 153 ! 154 ! ---------------- ice shelf melt formulation ------------------------------- 155 ! 156 ln_isf = .true. ! activate ice shelf module 157 cn_isfdir = './' ! directory for all ice shelf input file 158 ! 159 ! ---------------- cavities opened ------------------------------- 160 ! 161 ln_isfcav_mlt = .true. ! ice shelf melting into the cavity (need ln_isfcav = .true. in domain_cfg.nc) 162 cn_isfcav_mlt = '2eq' ! ice shelf melting formulation (spe/2eq/3eq/oasis) 163 ! ! spe = fwfisf is read from a forcing field 164 ! ! 2eq = ISOMIP like: 2 equations formulation (Hunter et al., 2006) 165 ! ! 3eq = ISOMIP+ like: 3 equations formulation (Asay-Davis et al., 2015) 166 ! ! oasis = fwfisf is given by oasis and pattern by file sn_isfcav_fwf 167 ! ! cn_isfcav_mlt = 2eq or 3eq cases: 168 cn_gammablk = 'spe' ! scheme to compute gammat/s (spe,ad15,hj99) 169 ! ! ad15 = velocity dependend Gamma (u* * gammat/s) (Jenkins et al. 2010) 170 ! ! hj99 = velocity and stability dependent Gamma (Holland et al. 1999) 171 rn_gammat0 = 1.e-4 ! gammat coefficient used in blk formula 172 rn_gammas0 = 1.e-4 ! gammas coefficient used in blk formula 173 ! 174 rn_htbl = 30. ! thickness of the top boundary layer (Losh et al. 2008) 175 ! ! 0 => thickness of the tbl = thickness of the first wet cell 176 ! 177 / 178 !----------------------------------------------------------------------- 179 &namsbc_wave ! External fields from wave model (ln_wave=T) 180 !----------------------------------------------------------------------- 181 / 182 !----------------------------------------------------------------------- 183 &namberg ! iceberg parameters (default: OFF) 184 !----------------------------------------------------------------------- 185 186 / 187 110 188 !!====================================================================== 111 189 !! *** Lateral boundary condition *** !! … … 124 202 rn_shlat = 0. ! free slip 125 203 / 204 !----------------------------------------------------------------------- 205 &namagrif ! AGRIF zoom ("key_agrif") 206 !----------------------------------------------------------------------- 207 / 208 !----------------------------------------------------------------------- 209 &nam_tide ! tide parameters (default: OFF) 210 !----------------------------------------------------------------------- 211 / 212 !----------------------------------------------------------------------- 213 &nambdy ! unstructured open boundaries (default: OFF) 214 !----------------------------------------------------------------------- 215 / 216 !----------------------------------------------------------------------- 217 &nambdy_dta ! open boundaries - external data (see nam_bdy) 218 !----------------------------------------------------------------------- 219 220 / 221 !----------------------------------------------------------------------- 222 &nambdy_tide ! tidal forcing at open boundaries (default: OFF) 223 !----------------------------------------------------------------------- 224 / 225 126 226 !!====================================================================== 127 227 !! *** Top/Bottom boundary condition *** !! … … 145 245 / 146 246 !----------------------------------------------------------------------- 147 &namdrg_top ! TOP friction (ln_ isfcav=T)247 &namdrg_top ! TOP friction (ln_OFF =F & ln_isfcav=T) 148 248 !----------------------------------------------------------------------- 149 249 rn_Cd0 = 2.5e-3 ! drag coefficient [-] … … 156 256 / 157 257 !----------------------------------------------------------------------- 158 &namdrg_bot ! BOTTOM friction 258 &namdrg_bot ! BOTTOM friction (ln_OFF =F) 159 259 !----------------------------------------------------------------------- 160 260 rn_Cd0 = 1.e-3 ! drag coefficient [-] … … 166 266 rn_boost = 50. ! local boost factor [-] 167 267 / 268 !----------------------------------------------------------------------- 269 &nambbc ! bottom temperature boundary condition (default: OFF) 270 !----------------------------------------------------------------------- 271 272 / 273 !----------------------------------------------------------------------- 274 &nambbl ! bottom boundary layer scheme (default: OFF) 275 !----------------------------------------------------------------------- 276 / 277 168 278 !!====================================================================== 169 279 !! Tracer (T-S) namelists !! … … 178 288 ! 179 289 !----------------------------------------------------------------------- 180 &nameos ! ocean Equation Of Seawater (default: OFF)290 &nameos ! ocean Equation Of Seawater (default: NO selection) 181 291 !----------------------------------------------------------------------- 182 292 ln_eos80 = .true. ! = Use EOS80 equation of state … … 199 309 rn_Ld = 10.e+3 ! lateral diffusive length [m] 200 310 / 311 !----------------------------------------------------------------------- 312 &namtra_mle ! mixed layer eddy parametrisation (Fox-Kemper) (default: OFF) 313 !----------------------------------------------------------------------- 314 / 315 !----------------------------------------------------------------------- 316 &namtra_eiv ! eddy induced velocity param. (default: OFF) 317 !----------------------------------------------------------------------- 318 / 319 !----------------------------------------------------------------------- 320 &namtra_dmp ! tracer: T & S newtonian damping (default: OFF) 321 !----------------------------------------------------------------------- 322 / 323 201 324 !!====================================================================== 202 325 !! *** Dynamics namelists *** !! … … 212 335 ! 213 336 !----------------------------------------------------------------------- 337 &nam_vvl ! vertical coordinate options (default: z-star) 338 !----------------------------------------------------------------------- 339 / 340 !----------------------------------------------------------------------- 214 341 &namdyn_adv ! formulation of the momentum advection (default: NO selection) 215 342 !----------------------------------------------------------------------- … … 218 345 / 219 346 !----------------------------------------------------------------------- 220 &namdyn_vor ! Vorticity / Coriolis scheme (default: OFF)347 &namdyn_vor ! Vorticity / Coriolis scheme (default: NO selection) 221 348 !----------------------------------------------------------------------- 222 349 ln_dynvor_ene = .true. ! energy conserving scheme … … 241 368 rn_Lv = 10.e+3 ! lateral viscous length [m] 242 369 / 370 !----------------------------------------------------------------------- 371 &namdta_dyn ! offline ocean input files (OFF_SRC only) 372 !----------------------------------------------------------------------- 373 374 / 375 243 376 !!====================================================================== 244 377 !! vertical physics namelists !! … … 253 386 ! 254 387 !----------------------------------------------------------------------- 255 &namzdf ! vertical physics 256 !----------------------------------------------------------------------- 257 ! ! type of vertical closure 388 &namzdf ! vertical physics manager (default: NO selection) 389 !----------------------------------------------------------------------- 390 ! ! type of vertical closure (required) 258 391 ln_zdfcst = .true. ! constant mixing 392 ! 393 ! ! convection 259 394 ln_zdfevd = .true. ! enhanced vertical diffusion 260 nn_evdm = 1 ! apply on tracer (=0) or on tracer and momentum (=1)261 rn_evd = 0.1 ! mixing coefficient [m2/s]395 rn_evd = 0.1 ! mixing coefficient [m2/s] 396 ! 262 397 ! ! coefficients 263 rn_avm0 = 1.e-3 ! vertical eddy viscosity [m2/s] 264 rn_avt0 = 5.e-5 ! vertical eddy diffusivity [m2/s] 265 / 398 rn_avm0 = 1.e-3 ! vertical eddy viscosity [m2/s] (background Kz if ln_zdfcst) 399 rn_avt0 = 5.e-5 ! vertical eddy diffusivity [m2/s] (background Kz if ln_zdfcst) 400 / 401 !----------------------------------------------------------------------- 402 &namzdf_ric ! richardson number dependent vertical diffusion (ln_zdfric =T) 403 !----------------------------------------------------------------------- 404 / 405 !----------------------------------------------------------------------- 406 &namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion (ln_zdftke =T) 407 !----------------------------------------------------------------------- 408 / 409 !----------------------------------------------------------------------- 410 &namzdf_gls ! GLS vertical diffusion (ln_zdfgls =T) 411 !----------------------------------------------------------------------- 412 / 413 !----------------------------------------------------------------------- 414 &namzdf_osm ! OSM vertical diffusion (ln_zdfosm =T) 415 !----------------------------------------------------------------------- 416 / 417 !----------------------------------------------------------------------- 418 &namzdf_iwm ! internal wave-driven mixing parameterization (ln_zdfiwm =T) 419 !----------------------------------------------------------------------- 420 / 421 266 422 !!====================================================================== 267 423 !! *** Diagnostics namelists *** !! … … 280 436 !!====================================================================== 281 437 ! 438 !----------------------------------------------------------------------- 439 &namtrd ! trend diagnostics (default: OFF) 440 !----------------------------------------------------------------------- 441 / 442 !----------------------------------------------------------------------- 443 &namptr ! Poleward Transport Diagnostic (default: OFF) 444 !----------------------------------------------------------------------- 445 / 446 !----------------------------------------------------------------------- 447 &namhsb ! Heat and salt budgets (default: OFF) 448 !----------------------------------------------------------------------- 449 / 450 !----------------------------------------------------------------------- 451 &namdiu ! Cool skin and warm layer models (default: OFF) 452 !----------------------------------------------------------------------- 453 / 454 !----------------------------------------------------------------------- 455 &namflo ! float parameters ("key_float") 456 !----------------------------------------------------------------------- 457 / 458 !----------------------------------------------------------------------- 459 &nam_diaharm ! Harmonic analysis of tidal constituents ("key_diaharm") 460 !----------------------------------------------------------------------- 461 / 462 !----------------------------------------------------------------------- 463 &namdct ! transports through some sections ("key_diadct") 464 !----------------------------------------------------------------------- 465 / 466 !----------------------------------------------------------------------- 467 &nam_diatmb ! Top Middle Bottom Output (default: OFF) 468 !----------------------------------------------------------------------- 469 / 470 !----------------------------------------------------------------------- 471 &nam_dia25h ! 25h Mean Output (default: OFF) 472 !----------------------------------------------------------------------- 473 / 474 !----------------------------------------------------------------------- 475 &namnc4 ! netcdf4 chunking and compression settings ("key_netcdf4") 476 !----------------------------------------------------------------------- 477 / 478 282 479 !!====================================================================== 283 480 !! *** Observation & Assimilation *** !! … … 287 484 !!====================================================================== 288 485 ! 486 !----------------------------------------------------------------------- 487 &namobs ! observation usage switch (default: OFF) 488 !----------------------------------------------------------------------- 489 / 490 !----------------------------------------------------------------------- 491 &nam_asminc ! assimilation increments ('key_asminc') 492 !----------------------------------------------------------------------- 493 / 494 289 495 !!====================================================================== 290 496 !! *** Miscellaneous namelists *** !! -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_flux_cen2_cfg
r10075 r11970 32 32 !----------------------------------------------------------------------- 33 33 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 34 !35 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice36 34 ! 37 35 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_flux_ubs_cfg
r11536 r11970 46 46 !----------------------------------------------------------------------- 47 47 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 48 !49 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice50 48 ! 51 49 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_vect_eenH_cfg
r10075 r11970 32 32 !----------------------------------------------------------------------- 33 33 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 34 !35 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice36 34 ! 37 35 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_vect_een_cfg
r10075 r11970 32 32 !----------------------------------------------------------------------- 33 33 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 34 !35 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice36 34 ! 37 35 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_vect_ene_cfg
r10075 r11970 32 32 !----------------------------------------------------------------------- 33 33 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 34 !35 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice36 34 ! 37 35 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_vect_ens_cfg
r10075 r11970 32 32 !----------------------------------------------------------------------- 33 33 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 34 !35 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice36 34 ! 37 35 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_flux_cen2_cfg
r10075 r11970 32 32 !----------------------------------------------------------------------- 33 33 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 34 !35 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice36 34 ! 37 35 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_flux_ubs_cfg
r10075 r11970 32 32 !----------------------------------------------------------------------- 33 33 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 34 !35 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice36 34 ! 37 35 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_vect_eenH_cfg
r10075 r11970 32 32 !----------------------------------------------------------------------- 33 33 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 34 !35 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice36 34 ! 37 35 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_vect_een_cfg
r10075 r11970 32 32 !----------------------------------------------------------------------- 33 33 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 34 !35 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice36 34 ! 37 35 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_vect_ene_cfg
r10075 r11970 32 32 !----------------------------------------------------------------------- 33 33 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 34 !35 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice36 34 ! 37 35 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_vect_ens_cfg
r10075 r11970 32 32 !----------------------------------------------------------------------- 33 33 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 34 !35 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice36 34 ! 37 35 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/branches/2019/ENHANCE-02_ISF_nemo_TEST_MERGE/tests/VORTEX/MY_SRC/domvvl.F90
r11536 r11970 36 36 37 37 PUBLIC dom_vvl_init ! called by domain.F90 38 PUBLIC dom_vvl_zgr ! called by isfcpl.F90 38 39 PUBLIC dom_vvl_sf_nxt ! called by step.F90 39 40 PUBLIC dom_vvl_sf_swp ! called by step.F90 … … 115 116 !! Reference : Leclair, M., and G. Madec, 2011, Ocean Modelling. 116 117 !!---------------------------------------------------------------------- 118 ! 119 IF(lwp) WRITE(numout,*) 120 IF(lwp) WRITE(numout,*) 'dom_vvl_init : Variable volume activated' 121 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~' 122 ! 123 CALL dom_vvl_ctl ! choose vertical coordinate (z_star, z_tilde or layer) 124 ! 125 ! ! Allocate module arrays 126 IF( dom_vvl_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'dom_vvl_init : unable to allocate arrays' ) 127 ! 128 ! ! Read or initialize e3t_(b/n), tilde_e3t_(b/n) and hdiv_lf 129 CALL dom_vvl_rst( nit000, 'READ' ) 130 e3t_a(:,:,jpk) = e3t_0(:,:,jpk) ! last level always inside the sea floor set one for all 131 ! 132 CALL dom_vvl_zgr() ! interpolation scale factor, depth and water column 133 ! 134 END SUBROUTINE dom_vvl_init 135 ! 136 SUBROUTINE dom_vvl_zgr() 137 !!---------------------------------------------------------------------- 138 !! *** ROUTINE dom_vvl_init *** 139 !! 140 !! ** Purpose : Interpolation of all scale factors, 141 !! depths and water column heights 142 !! 143 !! ** Method : - interpolate scale factors 144 !! 145 !! ** Action : - e3t_(n/b) and tilde_e3t_(n/b) 146 !! - Regrid: e3(u/v)_n 147 !! e3(u/v)_b 148 !! e3w_n 149 !! e3(u/v)w_b 150 !! e3(u/v)w_n 151 !! gdept_n, gdepw_n and gde3w_n 152 !! - h(t/u/v)_0 153 !! - frq_rst_e3t and frq_rst_hdv 154 !! 155 !! Reference : Leclair, M., and G. Madec, 2011, Ocean Modelling. 156 !!---------------------------------------------------------------------- 117 157 INTEGER :: ji, jj, jk 118 158 INTEGER :: ii0, ii1, ij0, ij1 119 159 REAL(wp):: zcoef 120 160 !!---------------------------------------------------------------------- 121 !122 IF(lwp) WRITE(numout,*)123 IF(lwp) WRITE(numout,*) 'dom_vvl_init : Variable volume activated'124 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~'125 !126 CALL dom_vvl_ctl ! choose vertical coordinate (z_star, z_tilde or layer)127 !128 ! ! Allocate module arrays129 IF( dom_vvl_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'dom_vvl_init : unable to allocate arrays' )130 !131 ! ! Read or initialize e3t_(b/n), tilde_e3t_(b/n) and hdiv_lf132 CALL dom_vvl_rst( nit000, 'READ' )133 e3t_a(:,:,jpk) = e3t_0(:,:,jpk) ! last level always inside the sea floor set one for all134 161 ! 135 162 ! !== Set of all other vertical scale factors ==! (now and before) … … 263 290 ENDIF 264 291 ! 265 END SUBROUTINE dom_vvl_init 266 292 END SUBROUTINE dom_vvl_zgr 267 293 268 294 SUBROUTINE dom_vvl_sf_nxt( kt, kcall ) … … 1034 1060 ! 1035 1061 IF( ioptio /= 1 ) CALL ctl_stop( 'Choose ONE vertical coordinate in namelist nam_vvl' ) 1036 IF( .NOT. ln_vvl_zstar .AND. ln_isf ) CALL ctl_stop( 'Only vvl_zstar has been tested with ice shelf cavity' )1037 1062 ! 1038 1063 IF(lwp) THEN ! Print the choice
Note: See TracChangeset
for help on using the changeset viewer.