- Timestamp:
- 2021-01-04T16:19:17+01:00 (3 years ago)
- Location:
- NEMO/branches/UKMO/NEMO_4.0_mirror_SI3_GPU/src/ICE
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/NEMO_4.0_mirror_SI3_GPU/src/ICE/icedyn_adv_umx.F90
r13153 r14258 139 139 ALLOCATE( zbetup(jpi,jpj,jpl), zbetdo(jpi,jpj,jpl), zti_ups(jpi,jpj,jpl), ztj_ups(jpi,jpj,jpl)) 140 140 ALLOCATE( zt_u(jpi,jpj,jpl), zt_v(jpi,jpj,jpl)) 141 IF( ll_neg ) THEN 142 ALLOCATE( imsk_small(jpi,jpj,jpl) ) 143 ALLOCATE( jmsk_small(jpi,jpj,jpl) ) 144 ENDIF 145 IF( np_advS == 3 ) THEN 146 ALLOCATE( zuv_ho (jpi,jpj,jpl), zvv_ho (jpi,jpj,jpl), & 147 zuv_ups(jpi,jpj,jpl), zvv_ups(jpi,jpj,jpl), z1_vi(jpi,jpj,jpl), z1_vs(jpi,jpj,jpl) ) 148 ENDIF 141 149 ENDIF 142 150 ! … … 220 228 ! setup a mask where advection will be upstream 221 229 IF( ll_neg ) THEN 222 IF( .NOT. ALLOCATED(imsk_small) ) ALLOCATE( imsk_small(jpi,jpj,jpl) )223 IF( .NOT. ALLOCATED(jmsk_small) ) ALLOCATE( jmsk_small(jpi,jpj,jpl) )224 230 DO jl = 1, jpl 225 231 DO jj = 1, jpjm1 -
NEMO/branches/UKMO/NEMO_4.0_mirror_SI3_GPU/src/ICE/icetab.F90
r10888 r14258 40 40 INTEGER , DIMENSION(ndim1d) , INTENT(in ) :: tab_ind ! input index 41 41 REAL(wp), DIMENSION(jpi,jpj,jpl), INTENT(in ) :: tab2d ! input 2D field 42 REAL(wp), DIMENSION(ndim1d,jpl) , INTENT( 42 REAL(wp), DIMENSION(ndim1d,jpl) , INTENT(inout) :: tab1d ! output 1D field 43 43 ! 44 44 INTEGER :: jl, jn, jid, jjd … … 61 61 INTEGER , DIMENSION(ndim1d) , INTENT(in ) :: tab_ind ! input index 62 62 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: tab2d ! input 2D field 63 REAL(wp), DIMENSION(ndim1d) , INTENT( 63 REAL(wp), DIMENSION(ndim1d) , INTENT(inout) :: tab1d ! output 1D field 64 64 ! 65 65 INTEGER :: jn , jid, jjd … … 80 80 INTEGER , DIMENSION(ndim1d) , INTENT(in ) :: tab_ind ! input index 81 81 REAL(wp), DIMENSION(ndim1d,jpl) , INTENT(in ) :: tab1d ! input 1D field 82 REAL(wp), DIMENSION(jpi,jpj,jpl), INTENT( 82 REAL(wp), DIMENSION(jpi,jpj,jpl), INTENT(inout) :: tab2d ! output 2D field 83 83 ! 84 84 INTEGER :: jl, jn, jid, jjd … … 101 101 INTEGER , DIMENSION(ndim1d) , INTENT(in ) :: tab_ind ! input index 102 102 REAL(wp), DIMENSION(ndim1d) , INTENT(in ) :: tab1d ! input 1D field 103 REAL(wp), DIMENSION(jpi,jpj), INTENT( 103 REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) :: tab2d ! output 2D field 104 104 ! 105 105 INTEGER :: jn , jid, jjd -
NEMO/branches/UKMO/NEMO_4.0_mirror_SI3_GPU/src/ICE/icethd_zdf_bl99.F90
r11081 r14258 96 96 REAL(wp) :: zhs_min = 0.01_wp ! minimum snow thickness for conductivity calculation 97 97 REAL(wp) :: ztmelts ! ice melting temperature 98 REAL(wp) :: zdti_max ! current maximal error on temperature98 REAL(wp), DIMENSION(jpij) :: zdti_max ! current maximal error on temperature 99 99 REAL(wp) :: zcpi ! Ice specific heat 100 100 REAL(wp) :: zhfx_err, zdq ! diag errors on heat … … 557 557 558 558 DO ji = 1, npti 559 560 zdti_max = 0._wp 561 559 zdti_max(ji) = 0._wp 562 560 IF ( .NOT. l_T_converged(ji) ) THEN 563 561 t_su_1d(ji) = MAX( MIN( t_su_1d(ji) , rt0 ) , rt0 - 100._wp ) 564 zdti_max = MAX( zdti_max, ABS( t_su_1d(ji) - ztsub(ji) ) )562 zdti_max(ji) = MAX( zdti_max(ji), ABS( t_su_1d(ji) - ztsub(ji) ) ) 565 563 566 564 t_s_1d(ji,1:nlay_s) = MAX( MIN( t_s_1d(ji,1:nlay_s), rt0 ), rt0 - 100._wp ) 567 zdti_max = MAX ( zdti_max , MAXVAL( ABS( t_s_1d(ji,1:nlay_s) - ztsb(ji,1:nlay_s) ) ) ) 568 569 DO jk = 1, nlay_i 565 zdti_max(ji) = MAX ( zdti_max(ji) , MAXVAL( ABS( t_s_1d(ji,1:nlay_s) - ztsb(ji,1:nlay_s) ) ) ) 566 ENDIF 567 END DO 568 569 DO jk = 1, nlay_i 570 DO ji = 1, npti 571 IF ( .NOT. l_T_converged(ji) ) THEN 570 572 ztmelts = -rTmlt * sz_i_1d(ji,jk) + rt0 571 573 t_i_1d(ji,jk) = MAX( MIN( t_i_1d(ji,jk), ztmelts ), rt0 - 100._wp ) 572 zdti_max = MAX( zdti_max, ABS( t_i_1d(ji,jk) - ztib(ji,jk) ) ) 573 END DO 574 575 IF ( zdti_max < zdti_bnd ) l_T_converged(ji) = .TRUE. 576 574 zdti_max(ji) = MAX( zdti_max(ji), ABS( t_i_1d(ji,jk) - ztib(ji,jk) ) ) 575 ENDIF 576 ENDDO 577 END DO 578 579 DO ji = 1, npti 580 IF ( .NOT. l_T_converged(ji) ) THEN 581 IF ( zdti_max(ji) < zdti_bnd ) l_T_converged(ji) = .TRUE. 577 582 ENDIF 578 579 END DO 583 END DO 584 580 585 581 586 !----------------------------------------! … … 734 739 735 740 DO ji = 1, npti 736 737 zdti_max = 0._wp 738 741 zdti_max(ji) = 0._wp 739 742 IF ( .NOT. l_T_converged(ji) ) THEN 740 743 ! t_s 741 744 t_s_1d(ji,1:nlay_s) = MAX( MIN( t_s_1d(ji,1:nlay_s), rt0 ), rt0 - 100._wp ) 742 zdti_max = MAX ( zdti_max , MAXVAL( ABS( t_s_1d(ji,1:nlay_s) - ztsb(ji,1:nlay_s) ) ) ) 743 ! t_i 744 DO jk = 1, nlay_i 745 ztmelts = -rTmlt * sz_i_1d(ji,jk) + rt0 746 t_i_1d(ji,jk) = MAX( MIN( t_i_1d(ji,jk), ztmelts ), rt0 - 100._wp ) 747 zdti_max = MAX ( zdti_max, ABS( t_i_1d(ji,jk) - ztib(ji,jk) ) ) 748 END DO 749 750 IF ( zdti_max < zdti_bnd ) l_T_converged(ji) = .TRUE. 751 745 zdti_max(ji) = MAX ( zdti_max(ji) , MAXVAL( ABS( t_s_1d(ji,1:nlay_s) - ztsb(ji,1:nlay_s) ) ) ) 752 746 ENDIF 753 754 END DO 747 END DO 748 749 DO jk = 1, nlay_i 750 DO ji = 1, npti 751 IF ( .NOT. l_T_converged(ji) ) THEN 752 ! t_i 753 ztmelts = -rTmlt * sz_i_1d(ji,jk) + rt0 754 t_i_1d(ji,jk) = MAX( MIN( t_i_1d(ji,jk), ztmelts ), rt0 - 100._wp ) 755 zdti_max(ji) = MAX ( zdti_max(ji), ABS( t_i_1d(ji,jk) - ztib(ji,jk) ) ) 756 ENDIF 757 END DO 758 END DO 759 760 DO ji = 1, npti 761 IF ( .NOT. l_T_converged(ji) ) THEN 762 IF ( zdti_max(ji) < zdti_bnd ) l_T_converged(ji) = .TRUE. 763 ENDIF 764 END DO 765 755 766 756 767 ENDIF ! k_cnd
Note: See TracChangeset
for help on using the changeset viewer.