Index: NEMO/branches/2019/ENHANCE-02_ISF_nemo/cfgs/WED025/EXPREF/file_def_nemo-oce.xml
===================================================================
--- NEMO/branches/2019/ENHANCE-02_ISF_nemo/cfgs/WED025/EXPREF/file_def_nemo-oce.xml (revision 11494)
+++ NEMO/branches/2019/ENHANCE-02_ISF_nemo/cfgs/WED025/EXPREF/file_def_nemo-oce.xml (revision 11495)
@@ -42,16 +42,24 @@
-
-
+
+
-
-
-
+
+
+
+
+
+
-
+
-
+
+
+
+
+
+
Index: NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfcav.F90
===================================================================
--- NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfcav.F90 (revision 11494)
+++ NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfcav.F90 (revision 11495)
@@ -70,10 +70,10 @@
!
! compute misfkb_par, rhisf_tbl
- rhisf_tbl_cav(:,:) = rn_htbl
+ rhisf_tbl_cav(:,:) = rn_htbl * mskisf_cav(:,:)
CALL isf_tbl_lvl( ht_n, e3t_n, misfkt_cav, misfkb_cav, rhisf_tbl_cav, rfrac_tbl_cav )
!
! compute T/S/U/V for the top boundary layer
- CALL isf_tbl(tsn(:,:,:,jp_tem),zttbl(:,:),'T', misfkt_cav, misfkb_cav, rhisf_tbl_cav, rfrac_tbl_cav )
- CALL isf_tbl(tsn(:,:,:,jp_sal),zstbl(:,:),'T', misfkt_cav, misfkb_cav, rhisf_tbl_cav, rfrac_tbl_cav )
+ CALL isf_tbl(tsn(:,:,:,jp_tem), zttbl(:,:),'T', misfkt_cav, rhisf_tbl_cav, misfkb_cav, rfrac_tbl_cav )
+ CALL isf_tbl(tsn(:,:,:,jp_sal), zstbl(:,:),'T', misfkt_cav, rhisf_tbl_cav, misfkb_cav, rfrac_tbl_cav )
!
! output T/S/U/V for the top boundary layer
@@ -157,6 +157,6 @@
!
! cav
- misfkt_cav(:,:) = mikt(:,:) ; misfkb_cav(:,:) = 1
- rhisf_tbl_cav(:,:) = 0.0_wp ; rfrac_tbl_cav(:,:) = 0.0_wp
+ misfkt_cav(:,:) = mikt(:,:) ; misfkb_cav(:,:) = 1
+ rhisf_tbl_cav(:,:) = 0.0_wp ; rfrac_tbl_cav(:,:) = 0.0_wp
!
SELECT CASE ( TRIM(cn_isfcav_mlt) )
Index: NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfcavgam.F90
===================================================================
--- NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfcavgam.F90 (revision 11494)
+++ NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfcavgam.F90 (revision 11495)
@@ -59,6 +59,13 @@
! nothing to do
CASE ('ad15', 'hj99')
- CALL isf_tbl(un(:,:,:) ,zutbl(:,:),'U')
- CALL isf_tbl(vn(:,:,:) ,zvtbl(:,:),'V')
+ ! compute velocity in tbl
+ CALL isf_tbl(un(:,:,:) ,zutbl(:,:),'U', miku, rhisf_tbl_cav)
+ CALL isf_tbl(vn(:,:,:) ,zvtbl(:,:),'V', mikv, rhisf_tbl_cav)
+ !
+ ! mask velocity in tbl with ice shelf mask
+ !zutbl(:,:) = zutbl(:,:) * mskisf_cav(:,:)
+ !zvtbl(:,:) = zvtbl(:,:) * mskisf_cav(:,:)
+ !
+ ! output
CALL iom_put('utbl',zutbl(:,:))
CALL iom_put('vtbl',zvtbl(:,:))
Index: NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfcavmlt.F90
===================================================================
--- NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfcavmlt.F90 (revision 11494)
+++ NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfcavmlt.F90 (revision 11495)
@@ -13,4 +13,5 @@
USE oce ! ocean dynamics and tracers
USE isf ! ice shelf public variables
+ USE isfutils
USE dom_oce ! ocean space and time domain
USE phycst ! physical constants
Index: NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfparmlt.F90
===================================================================
--- NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfparmlt.F90 (revision 11494)
+++ NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfparmlt.F90 (revision 11495)
@@ -98,5 +98,5 @@
CALL eos_fzp(tsn(:,:,jk,jp_sal), ztfrz3d(:,:,jk), gdept_n(:,:,jk))
END DO
- CALL isf_tbl(ztfrz3d, ztfrz, 'T', misfkt_par, misfkb_par, rhisf_tbl_par, rfrac_tbl_par )
+ CALL isf_tbl(ztfrz3d, ztfrz, 'T', misfkt_par, rhisf_tbl_par, misfkb_par, rfrac_tbl_par )
!
pqfwf(:,:) = - sf_isfpar_fwf(1)%fnow(:,:,1) ! fresh water flux from the isf (fwfisf <0 mean melting)
@@ -136,8 +136,8 @@
CALL eos_fzp(tsn(:,:,jk,jp_sal), ztfrz3d(:,:,jk), gdept_n(:,:,jk))
END DO
- CALL isf_tbl(ztfrz3d, ztfrz, 'T', misfkt_par, misfkb_par, rhisf_tbl_par, rfrac_tbl_par )
+ CALL isf_tbl(ztfrz3d, ztfrz, 'T', misfkt_par, rhisf_tbl_par, misfkb_par, rfrac_tbl_par )
!
! 1. ------------Mean temperature
- CALL isf_tbl(tsn(:,:,jk,jp_tem), ztavg, 'T', misfkt_par, misfkb_par, rhisf_tbl_par, rfrac_tbl_par )
+ CALL isf_tbl(tsn(:,:,jk,jp_tem), ztavg, 'T', misfkt_par, rhisf_tbl_par, misfkb_par, rfrac_tbl_par )
!
! 2. ------------Net heat flux and fresh water flux due to the ice shelf
@@ -187,5 +187,5 @@
CALL eos_fzp(tsn(:,:,jk,jp_sal), ztfrz3d(:,:,jk), gdept_n(:,:,jk))
END DO
- CALL isf_tbl(ztfrz3d, ztfrz, 'T', misfkt_par, misfkb_par, rhisf_tbl_par, rfrac_tbl_par )
+ CALL isf_tbl(ztfrz3d, ztfrz, 'T', misfkt_par, rhisf_tbl_par, misfkb_par, rfrac_tbl_par )
!
! ice shelf 2d map
Index: NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isftbl.F90
===================================================================
--- NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isftbl.F90 (revision 11494)
+++ NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isftbl.F90 (revision 11495)
@@ -25,5 +25,5 @@
CONTAINS
- SUBROUTINE isf_tbl( pvarin, pvarout, cd_ptin, ktop, kbot, phtbl, pfrac )
+ SUBROUTINE isf_tbl( pvarin, pvarout, cd_ptin, ktop, phtbl, kbot, pfrac )
!!--------------------------------------------------------------------
!! *** SUBROUTINE isf_tbl ***
@@ -37,10 +37,12 @@
CHARACTER(len=1) , INTENT(in ) :: cd_ptin ! point of variable in/out
REAL(wp), DIMENSION(jpi,jpj,jpk) , INTENT(in ) :: pvarin ! 3d variable to average over the tbl
+ INTEGER, DIMENSION(jpi,jpj) , INTENT(in ) :: ktop ! top level
+ REAL(wp), DIMENSION(jpi,jpj) , INTENT(in ) :: phtbl ! tbl thickness
!!-------------------------- IN OPTIONAL -----------------------------
- INTEGER, DIMENSION(jpi,jpj), OPTIONAL, INTENT(in ) :: ktop , kbot ! top and bottom level
- REAL(wp), DIMENSION(jpi,jpj), OPTIONAL, INTENT(in ) :: phtbl, pfrac ! tbl thickness and fraction of bottom cell affected
+ INTEGER, DIMENSION(jpi,jpj), OPTIONAL, INTENT(in ) :: kbot ! bottom level
+ REAL(wp), DIMENSION(jpi,jpj), OPTIONAL, INTENT(in ) :: pfrac ! fraction of bottom cell affected by tbl
!!--------------------------------------------------------------------
INTEGER :: ji, jj ! loop index
- INTEGER , DIMENSION(jpi,jpj) :: iktbl ! bottom level of the tbl
+ INTEGER , DIMENSION(jpi,jpj) :: ikbot ! bottom level of the tbl
REAL(wp), DIMENSION(jpi,jpj) :: zhtbl ! thickness of the tbl
REAL(wp), DIMENSION(jpi,jpj) :: zfrac ! thickness of the tbl
@@ -50,9 +52,12 @@
CASE ( 'U' )
!
- ! compute tbl lvl/h
- CALL isf_tbl_lvl( hu_n, e3u_n, miku, iktbl, zhtbl, zfrac )
+ ! copy phtbl (phtbl is INTENT in as we don't want to change it)
+ zhtbl = phtbl
+ !
+ ! compute tbl lvl and thickness
+ CALL isf_tbl_lvl( hu_n, e3u_n, ktop, ikbot, zhtbl, zfrac )
!
! compute tbl property at U point
- CALL isf_tbl_avg( miku, iktbl, zhtbl, zfrac, e3u_n, pvarin, pvarout )
+ CALL isf_tbl_avg( miku, ikbot, zhtbl, zfrac, e3u_n, pvarin, pvarout )
!
! compute tbl property at T point
@@ -68,9 +73,12 @@
CASE ( 'V' )
!
- ! compute tbl lvl/h
- CALL isf_tbl_lvl( hv_n, e3v_n, mikv, iktbl, zhtbl, zfrac )
+ ! copy phtbl (phtbl is INTENT in as we don't want to change it)
+ zhtbl = phtbl
+ !
+ ! compute tbl lvl and thickness
+ CALL isf_tbl_lvl( hv_n, e3v_n, ktop, ikbot, zhtbl, zfrac )
!
! compute tbl property at V point
- CALL isf_tbl_avg( mikv, iktbl, zhtbl, zfrac, e3v_n, pvarin, pvarout )
+ CALL isf_tbl_avg( mikv, ikbot, zhtbl, zfrac, e3v_n, pvarin, pvarout )
!
! pvarout is an averaging of wet point
@@ -143,13 +151,14 @@
!! - thickness of the top boundary layer
!!
- !!--------------------------------------------------------------------
- !!-------------------------- OUT -------------------------------------
+ !!---------------------------------------------------------------------
+ !!-------------------------- OUT --------------------------------------
INTEGER, DIMENSION(jpi,jpj) , INTENT( out) :: kbot ! bottom level of the top boundary layer
- REAL(wp), DIMENSION(jpi,jpj) , INTENT( out) :: phtbl ! top boundary layer thickness
- REAL(wp), DIMENSION(jpi,jpj) , INTENT( out) :: pfrac ! top boundary layer thickness
- !!-------------------------- IN -------------------------------------
+ REAL(wp), DIMENSION(jpi,jpj) , INTENT( out) :: pfrac ! fraction of bottom level in the tbl
+ !!-------------------------- IN --------------------------------------
INTEGER, DIMENSION(jpi,jpj) , INTENT(in ) :: ktop ! top level of the top boundary layer
REAL(wp), DIMENSION(jpi,jpj) , INTENT(in ) :: phw ! water column thickness
REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in ) :: pe3 ! vertical scale factor
+ !!-------------------------- INOUT ------------------------------------
+ REAL(wp), DIMENSION(jpi,jpj) , INTENT(inout) :: phtbl ! top boundary layer thickness
!!---------------------------------------------------------------------
INTEGER :: ji,jj,jk