- Timestamp:
- 2016-03-08T11:12:40+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_debug_isf_restart/NEMOGCM/NEMO/OPA_SRC/SBC/sbcisf.F90
r6371 r6372 52 52 REAL(wp) , PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:) :: risfLeff !:effective length (Leff) BG03 nn_isf==2 53 53 REAL(wp) , PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:) :: ttbl, stbl, utbl, vtbl !:top boundary layer variable at T point 54 #if defined key_agrif 55 ! AGRIF can not handle these arrays as integers. The reason is a mystery but problems avoided by declaring them as reals 56 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:) :: misfkt, misfkb !:Level of ice shelf base 57 !: (first wet level and last level include in the tbl) 58 #else 54 59 INTEGER, PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:) :: misfkt, misfkb !:Level of ice shelf base 60 #endif 55 61 56 62 … … 171 177 DO jj = 1, jpj 172 178 jk = 2 173 DO WHILE ( jk .LE. mbkt(ji,jj) .AND. gdepw_0(ji,jj,jk) < rzisf_tbl(ji,jj) ) ; jk = jk + 1 ; END DO179 DO WHILE ( jk .LE. mbkt(ji,jj) .AND. fsdepw(ji,jj,jk) < rzisf_tbl(ji,jj) ) ; jk = jk + 1 ; END DO 174 180 misfkt(ji,jj) = jk-1 175 181 END DO … … 189 195 END IF 190 196 191 ! save initial top boundary layer thickness197 ! compute bottom level of isf tbl and thickness of tbl below the ice shelf 192 198 rhisf_tbl_0(:,:) = rhisf_tbl(:,:) 193 199 DO jj = 1,jpj 200 DO ji = 1,jpi 201 ikt = misfkt(ji,jj) 202 ikb = misfkt(ji,jj) 203 ! thickness of boundary layer at least the top level thickness 204 rhisf_tbl(ji,jj) = MAX(rhisf_tbl_0(ji,jj), fse3t_n(ji,jj,ikt)) 205 206 ! determine the deepest level influenced by the boundary layer 207 ! test on tmask useless ????? 208 DO jk = ikt, mbkt(ji,jj) 209 IF ( (SUM(fse3t_n(ji,jj,ikt:jk-1)) .LT. rhisf_tbl(ji,jj)) .AND. (tmask(ji,jj,jk) == 1) ) ikb = jk 210 END DO 211 rhisf_tbl(ji,jj) = MIN(rhisf_tbl(ji,jj), SUM(fse3t_n(ji,jj,ikt:ikb))) ! limit the tbl to water thickness. 212 misfkb(ji,jj) = ikb ! last wet level of the tbl 213 r1_hisf_tbl(ji,jj) = 1._wp / rhisf_tbl(ji,jj) 214 215 zhk = SUM( fse3t(ji, jj, ikt:ikb - 1)) * r1_hisf_tbl(ji,jj) ! proportion of tbl cover by cell from ikt to ikb - 1 216 ralpha(ji,jj) = rhisf_tbl(ji,jj) * (1._wp - zhk ) / fse3t(ji,jj,ikb) ! proportion of bottom cell influenced by boundary layer 217 END DO 218 END DO 219 194 220 END IF 195 221 … … 204 230 IF( MOD( kt-1, nn_fsbc) == 0 ) THEN 205 231 206 ! compute bottom level of isf tbl and thickness of tbl below the ice shelf207 DO jj = 1,jpj208 DO ji = 1,jpi209 ikt = misfkt(ji,jj)210 ikb = misfkt(ji,jj)211 ! thickness of boundary layer at least the top level thickness212 rhisf_tbl(ji,jj) = MAX(rhisf_tbl_0(ji,jj), fse3t_n(ji,jj,ikt))213 214 ! determine the deepest level influenced by the boundary layer215 DO jk = ikt, mbkt(ji,jj)216 IF ( (SUM(fse3t_n(ji,jj,ikt:jk-1)) .LT. rhisf_tbl(ji,jj)) .AND. (tmask(ji,jj,jk) == 1) ) ikb = jk217 END DO218 rhisf_tbl(ji,jj) = MIN(rhisf_tbl(ji,jj), SUM(fse3t_n(ji,jj,ikt:ikb))) ! limit the tbl to water thickness.219 misfkb(ji,jj) = ikb ! last wet level of the tbl220 r1_hisf_tbl(ji,jj) = 1._wp / rhisf_tbl(ji,jj)221 222 zhk = SUM( fse3t(ji, jj, ikt:ikb - 1)) * r1_hisf_tbl(ji,jj) ! proportion of tbl cover by cell from ikt to ikb - 1223 ralpha(ji,jj) = rhisf_tbl(ji,jj) * (1._wp - zhk ) / fse3t(ji,jj,ikb) ! proportion of bottom cell influenced by boundary layer224 END DO225 END DO226 232 227 233 ! compute salf and heat flux … … 452 458 ! Calculate freezing temperature 453 459 zpress = grav*rau0*fsdept(ji,jj,ik)*1.e-04 454 CALL eos_fzp(tsb(ji,jj,ik,jp_sal), zt_frz, zpress)460 zt_frz = eos_fzp(tsb(ji,jj,ik,jp_sal), zpress) 455 461 zt_sum = zt_sum + (tsn(ji,jj,ik,jp_tem)-zt_frz) * fse3t(ji,jj,ik) * tmask(ji,jj,ik) ! sum temp 456 462 ENDDO … … 534 540 zti(:,:)=tinsitu( ttbl, stbl, zpress ) 535 541 ! Calculate freezing temperature 536 CALL eos_fzp( sss_m(:,:), zfrz(:,:), zpress )542 zfrz(:,:)=eos_fzp( sss_m(:,:), zpress ) 537 543 538 544
Note: See TracChangeset
for help on using the changeset viewer.