Changeset 11963 for NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk/src/OCE/SBC/sbcisf.F90
- Timestamp:
- 2019-11-26T12:08:01+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk/src/OCE/SBC/sbcisf.F90
r11831 r11963 303 303 ! 304 304 ! Allocate public variable 305 IF 305 IF( sbc_isf_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'sbc_isf : unable to allocate arrays' ) 306 306 ! 307 307 ! initialisation … … 440 440 !! Initialize arrays to 0 (each step) 441 441 zt_sum = 0.e0_wp 442 IF 442 IF( ik > 1 ) THEN 443 443 ! 1. -----------the average temperature between 200m and 600m --------------------- 444 444 DO jk = misfkt(ji,jj),misfkb(ji,jj) … … 459 459 ELSE 460 460 qisf(ji,jj) = 0._wp ; fwfisf(ji,jj) = 0._wp 461 END 461 ENDIF 462 462 END DO 463 463 END DO … … 496 496 ! coeficient for linearisation of potential tfreez 497 497 ! Crude approximation for pressure (but commonly used) 498 IF 498 IF( l_useCT ) THEN ! linearisation from Jourdain et al. (2017) 499 499 zlamb1 =-0.0564_wp 500 500 zlamb2 = 0.0773_wp … … 558 558 ! compute s freeze 559 559 zsfrz=(-zbqe-SQRT(zdis))*zaqer 560 IF 560 IF( zsfrz < 0.0_wp ) zsfrz=(-zbqe+SQRT(zdis))*zaqer 561 561 562 562 ! compute t freeze (eq. 22) … … 578 578 579 579 ! define if we need to iterate (nn_gammablk 0/1 do not need iteration) 580 IF 580 IF( nn_gammablk < 2 ) THEN ; lit = .FALSE. 581 581 ELSE 582 582 ! check total number of iteration 583 IF 583 IF(nit >= 100) THEN ; CALL ctl_stop( 'STOP', 'sbc_isf_hol99 : too many iteration ...' ) 584 584 ELSE ; nit = nit + 1 585 END 585 ENDIF 586 586 587 587 ! compute error between 2 iterations 588 588 ! if needed save gammat and compute zhtflx_b for next iteration 589 589 zerr = MAXVAL(ABS(zhtflx-zhtflx_b)) 590 IF 590 IF( zerr <= 0.01_wp ) THEN ; lit = .FALSE. 591 591 ELSE ; zhtflx_b(:,:) = zhtflx(:,:) 592 END 593 END 592 ENDIF 593 ENDIF 594 594 END DO 595 595 ! … … 718 718 pgt(ji,jj) = zustar(ji,jj) / (zgturb + zgmolet) 719 719 pgs(ji,jj) = zustar(ji,jj) / (zgturb + zgmoles) 720 END 720 ENDIF 721 721 END DO 722 722 END DO … … 757 757 ! determine the deepest level influenced by the boundary layer 758 758 DO jk = ikt+1, mbku(ji,jj) 759 IF 759 IF( (SUM(e3u_n(ji,jj,ikt:jk-1)) < zhisf_tbl(ji,jj)) .AND. (umask(ji,jj,jk) == 1) ) ikb = jk 760 760 END DO 761 761 zhisf_tbl(ji,jj) = MIN(zhisf_tbl(ji,jj), SUM(e3u_n(ji,jj,ikt:ikb))) ! limit the tbl to water thickness. … … 789 789 ! determine the deepest level influenced by the boundary layer 790 790 DO jk = ikt+1, mbkv(ji,jj) 791 IF 791 IF( (SUM(e3v_n(ji,jj,ikt:jk-1)) < zhisf_tbl(ji,jj)) .AND. (vmask(ji,jj,jk) == 1) ) ikb = jk 792 792 END DO 793 793 zhisf_tbl(ji,jj) = MIN(zhisf_tbl(ji,jj), SUM(e3v_n(ji,jj,ikt:ikb))) ! limit the tbl to water thickness. … … 869 869 ! determine the deepest level influenced by the boundary layer 870 870 DO jk = ikt, mbkt(ji,jj) 871 IF 871 IF( (SUM(e3t_n(ji,jj,ikt:jk-1)) .LT. rhisf_tbl(ji,jj)) .AND. (tmask(ji,jj,jk) == 1) ) ikb = jk 872 872 END DO 873 873 rhisf_tbl(ji,jj) = MIN(rhisf_tbl(ji,jj), SUM(e3t_n(ji,jj,ikt:ikb))) ! limit the tbl to water thickness. … … 879 879 END DO 880 880 END DO 881 END 881 ENDIF 882 882 ! 883 883 !== ice shelf melting distributed over several levels ==!
Note: See TracChangeset
for help on using the changeset viewer.