- Timestamp:
- 2014-07-23T18:27:21+02:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4650_UKMO2_ice_shelves/NEMOGCM/NEMO/OPA_SRC/SBC/sbcisf.F90
r4666 r4726 51 51 REAL(wp) , PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:) :: rhisf_tbl, rhisf_tbl_0 !:depth of ice shelf base ???? 52 52 REAL(wp) , PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:) :: r1_hisf_tbl !:1/depth of ice shelf base ???? 53 REAL(wp) , PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:) :: ralpha !:proportion of bottom cell influenced by boundary layer 53 54 REAL(wp) , PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:) :: risfLeff !:effective length (Leff) BG03 nn_isf==2 ? 54 55 REAL(wp) , PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:) :: ttbl, stbl, utbl, vtbl !:top boundary layer variable at T point … … 85 86 INTEGER :: ikt, ikb ! top and bottom level of the isf boundary layer 86 87 REAL(wp) :: rmin 88 REAL(wp) :: zhk 87 89 CHARACTER(len=256) :: cfisf, cvarzisf, cvarhisf ! name for isf file 88 90 CHARACTER(LEN=256) :: cnameis ! name of iceshelf file … … 188 190 189 191 rhisf_tbl_0(:,:) = rhisf_tbl(:,:) 190 191 END IF192 193 IF( MOD( kt-1, nn_fsbc) == 0 ) THEN194 192 195 193 ! compute bottom level of isf tbl and thickness of tbl below the ice shelf 196 ! need to be move out of this test for vvl case197 194 DO jj = 1,jpj 198 195 DO ji = 1,jpi … … 200 197 ikb = misfkt(ji,jj) 201 198 ! thickness of boundary layer at least the top level thickness 202 rhisf_tbl(ji,jj) = MAX(rhisf_tbl_0(ji,jj), fse3t (ji,jj,ikt))199 rhisf_tbl(ji,jj) = MAX(rhisf_tbl_0(ji,jj), fse3t_n(ji,jj,ikt)) 203 200 204 201 ! determine the deepest level influenced by the boundary layer 205 202 ! test on tmask useless ????? 206 203 DO jk = ikt, mbkt(ji,jj) 207 IF ( (SUM(fse3t (ji,jj,ikt:jk-1)) .LT. rhisf_tbl(ji,jj)) .AND. (tmask(ji,jj,jk) == 1) ) ikb = jk204 IF ( (SUM(fse3t_n(ji,jj,ikt:jk-1)) .LT. rhisf_tbl(ji,jj)) .AND. (tmask(ji,jj,jk) == 1) ) ikb = jk 208 205 END DO 209 rhisf_tbl(ji,jj) = MIN(rhisf_tbl(ji,jj), SUM(fse3t (ji,jj,ikt:ikb))) ! limit the tbl to water thickness.206 rhisf_tbl(ji,jj) = MIN(rhisf_tbl(ji,jj), SUM(fse3t_n(ji,jj,ikt:ikb))) ! limit the tbl to water thickness. 210 207 misfkb(ji,jj) = ikb ! last wet level of the tbl 211 208 r1_hisf_tbl(ji,jj) = 1._wp / rhisf_tbl(ji,jj) 209 210 zhk = SUM( fse3t(ji, jj, ikt:ikb - 1)) * r1_hisf_tbl(ji,jj) ! proportion of tbl cover by cell from ikt to ikb - 1 211 ralpha(ji,jj) = rhisf_tbl(ji,jj) * (1._wp - zhk ) / fse3t(ji,jj,ikb) ! proportion of bottom cell influenced by boundary layer 212 212 END DO 213 213 END DO 214 215 ! initialisation 216 risf_tsc_b(:,:,:)=risf_tsc(:,:,:) ; fwfisf_b(:,:) = fwfisf(:,:) 214 215 END IF 216 217 ! ! ---------------------------------------- ! 218 IF( kt /= nit000 ) THEN ! Swap of forcing fields ! 219 ! ! ---------------------------------------- ! 220 fwfisf_b (:,: ) = fwfisf (:,: ) ! Swap the ocean forcing fields except at nit000 221 risf_tsc_b(:,:,:) = risf_tsc(:,:,:) ! where before fields are set at the end of the routine 222 ! 223 ENDIF 224 225 IF( MOD( kt-1, nn_fsbc) == 0 ) THEN 226 227 217 228 ! compute salf and heat flux 218 229 IF (nn_isf == 1) THEN … … 282 293 CALL iom_put('qisf' , qisf) 283 294 CALL iom_put('fwfisf', fwfisf * stbl(:,:) / soce ) 284 ! CALL iom_put('misfkt', misfkt*1._wp)285 ! CALL iom_put('misfkb', misfkb*1._wp)286 ! CALL iom_put('rhisf', rhisf_tbl)287 295 END IF 288 296 … … 298 306 & fwfisf_b(jpi,jpj), misfkt(jpi,jpj), rhisf_tbl(jpi,jpj), r1_hisf_tbl(jpi,jpj), & 299 307 & rzisf_tbl(jpi,jpj), misfkb(jpi,jpj), ttbl(jpi,jpj), stbl(jpi,jpj), utbl(jpi,jpj), & 300 & vtbl(jpi, jpj), risfLeff(jpi,jpj), rhisf_tbl_0(jpi,jpj), STAT= sbc_isf_alloc )308 & vtbl(jpi, jpj), risfLeff(jpi,jpj), rhisf_tbl_0(jpi,jpj), ralpha(jpi,jpj), STAT= sbc_isf_alloc ) 301 309 ! 302 310 IF( lk_mpp ) CALL mpp_sum ( sbc_isf_alloc ) … … 491 499 zeps1=rcp*rau0*zgammat 492 500 zeps2=lfusisf*rau0*zgammas 493 zeps3=rhoisf*rcpi*kappa/ icedep(ji,jj)494 zeps4=zlamb2+zlamb3* icedep(ji,jj)501 zeps3=rhoisf*rcpi*kappa/risfdep(ji,jj) 502 zeps4=zlamb2+zlamb3*risfdep(ji,jj) 495 503 zeps6=zeps4-zti(ji,jj) 496 504 zeps7=zeps4-tsurf … … 742 750 DO jj = 2,jpj 743 751 DO ji = 2,jpi 744 IF ( lmask(ji,jj) == 1) THEN752 IF (ssmask(ji,jj) == 1) THEN 745 753 ikt = mkt(ji,jj) 746 754 ikb = mkb(ji,jj) … … 748 756 ! level fully include in the ice shelf boundary layer 749 757 DO jk = ikt, ikb - 1 750 ze3 = fse3t (ji,jj,jk)758 ze3 = fse3t_n(ji,jj,jk) 751 759 IF (cptin == 'T' ) varout(ji,jj) = varout(ji,jj) + varin(ji,jj,jk) * r1_hisf_tbl(ji,jj) * ze3 752 760 IF (cptin == 'U' ) varout(ji,jj) = varout(ji,jj) + 0.5_wp * (varin(ji,jj,jk) + varin(ji-1,jj,jk)) & … … 757 765 758 766 ! level partially include in ice shelf boundary layer 759 zhk = SUM( fse3t (ji, jj, ikt:ikb - 1)) * r1_hisf_tbl(ji,jj)767 zhk = SUM( fse3t_n(ji, jj, ikt:ikb - 1)) * r1_hisf_tbl(ji,jj) 760 768 IF (cptin == 'T') varout(ji,jj) = varout(ji,jj) + varin(ji,jj,ikb) * (1._wp - zhk) 761 769 IF (cptin == 'U') varout(ji,jj) = varout(ji,jj) + 0.5_wp * (varin(ji,jj,ikb) + varin(ji-1,jj,ikb)) * (1._wp - zhk) … … 791 799 INTEGER(wp) :: ikt, ikb 792 800 INTEGER(wp) :: nk_isf 793 REAL(wp) :: zalpha,zhk, z1_hisf_tbl, zhisf_tbl794 REAL(wp) :: zfact ! local scalar801 REAL(wp) :: zhk, z1_hisf_tbl, zhisf_tbl 802 REAL(wp) :: zfact ! local scalar 795 803 !!---------------------------------------------------------------------- 796 804 ! … … 813 821 misfkb(ji,jj) = ikb ! last wet level of the tbl 814 822 r1_hisf_tbl(ji,jj) = 1._wp / rhisf_tbl(ji,jj) 823 824 zhk = SUM( fse3t(ji, jj, ikt:ikb - 1)) * r1_hisf_tbl(ji,jj) ! proportion of tbl cover by cell from ikt to ikb - 1 825 ralpha(ji,jj) = rhisf_tbl(ji,jj) * (1._wp - zhk ) / fse3t(ji,jj,ikb) ! proportion of bottom cell influenced by boundary layer 815 826 END DO 816 827 END DO … … 819 830 DO jj = 1,jpj 820 831 DO ji = 1,jpi 821 IF (lmask(ji,jj) == 1) THEN822 832 ikt = misfkt(ji,jj) 823 833 ikb = misfkb(ji,jj) 824 834 ! level fully include in the ice shelf boundary layer 825 835 DO jk = ikt, ikb - 1 826 phdivn(ji,jj,jk) = phdivn(ji,jj,jk) + ( fwfisf(ji,jj) + fwfisf_b(ji,jj) ) * r1_hisf_tbl(ji,jj) * r1_rau0 * zfact836 phdivn(ji,jj,jk) = phdivn(ji,jj,jk) + ( fwfisf(ji,jj) + fwfisf_b(ji,jj) ) * r1_hisf_tbl(ji,jj) * r1_rau0 * zfact 827 837 END DO 828 838 ! level partially include in ice shelf boundary layer 829 zhk = SUM( fse3t(ji, jj, ikt:ikb - 1)) * r1_hisf_tbl(ji,jj) ! proportion of tbl cover by cell from ikt to ikb - 1 830 zalpha = rhisf_tbl(ji,jj) * (1._wp - zhk ) / fse3t(ji,jj,ikb) ! proportion of bottom cell influenced by boundary layer 831 phdivn(ji,jj,ikb) = phdivn(ji,jj,ikb) + ( fwfisf(ji,jj) + fwfisf_b(ji,jj) ) * zalpha * r1_rau0 * zfact * r1_hisf_tbl(ji,jj) 839 phdivn(ji,jj,ikb) = phdivn(ji,jj,ikb) + ( fwfisf(ji,jj) + fwfisf_b(ji,jj) ) * r1_hisf_tbl(ji,jj) * r1_rau0 * zfact * ralpha(ji,jj) 832 840 !== ice shelf melting mass distributed over several levels ==! 833 END IF834 841 END DO 835 842 END DO
Note: See TracChangeset
for help on using the changeset viewer.