- Timestamp:
- 2018-11-25T22:33:50+01:00 (5 years ago)
- Location:
- NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/ICE
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/ICE/icedyn_adv_umx.F90
r10345 r10359 73 73 INTEGER :: ipl ! third dimention of tracer array 74 74 75 REAL(wp) :: zcfl 75 REAL(wp) :: zcfl(2), zusnit, zdt ! - - 76 76 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zudy, zvdx, zcu_box, zcv_box 77 77 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zpato … … 86 86 ! When needed, the advection split is applied at the next time-step in order to avoid blocking global comm. 87 87 ! ...this should not affect too much the stability... Was ok on the tests we did... 88 zcfl = MAXVAL( ABS( pu_ice(:,:) ) * rdt_ice * r1_e1u(:,:) ) 89 zcfl = MAX( zcfl, MAXVAL( ABS( pv_ice(:,:) ) * rdt_ice * r1_e2v(:,:) ) ) 90 IF( zcfl > 0.5 ) THEN ; l_split_advumx(1) = .TRUE. ! split advection time-step if CFL violated 91 ELSE ; l_split_advumx(1) = .FALSE. 92 ENDIF 88 zcfl(1) = MAXVAL( ABS( pu_ice(:,:) ) * rdt_ice * r1_e1u(:,:) ) 89 zcfl(1) = MAX( zcfl(1), MAXVAL( ABS( pv_ice(:,:) ) * rdt_ice * r1_e2v(:,:) ) ) 93 90 94 ! non-blocking global communication send l_split_advumx(1) and receive l_split_advumx(2)95 IF( lk_mpp ) CALL mpp_ ilor( l_split_advumx, ldlast =kt == nitend - nn_fsbc + 1 )96 97 IF( l_split_advumx(2) ) THEN ; initad = 2 ; zusnit = 0.5_wp ! split defined atthe previous time-step98 ELSE 91 ! non-blocking global communication send zcfl(1) and receive zcfl(2) 92 IF( lk_mpp ) CALL mpp_delay_max( 'icedyn_adv_umx', 'advumx_delay', zcfl, kt == nitend - nn_fsbc + 1 ) 93 94 IF( zcfl(2) > .5 ) THEN ; initad = 2 ; zusnit = 0.5_wp ! zcfl(2) corresponding to zcfl(1) of the previous time-step 95 ELSE ; initad = 1 ; zusnit = 1.0_wp 99 96 ENDIF 100 97 -
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/ICE/icerst.F90
r10292 r10359 98 98 INTEGER, INTENT(in) :: kt ! number of iteration 99 99 !! 100 INTEGER :: j k ,jl ! dummy loop indices100 INTEGER :: ji, jk ,jl ! dummy loop indices 101 101 INTEGER :: iter 102 102 CHARACTER(len=25) :: znam … … 118 118 CALL iom_rstput( iter, nitrst, numriw, 'nn_fsbc', REAL( nn_fsbc, wp ) ) ! time-step 119 119 CALL iom_rstput( iter, nitrst, numriw, 'kt_ice' , REAL( iter , wp ) ) ! date 120 DO ji = 1, nbdelay 121 CALL iom_rstput( iter, nitrst, numriw, c_delaylist(ji), todelay(ji) ) 122 END DO 120 123 121 124 ! Prognostic variables … … 169 172 !! ** purpose : read restart file 170 173 !!---------------------------------------------------------------------- 171 INTEGER :: j k, jl174 INTEGER :: ji, jk, jl 172 175 LOGICAL :: llok 173 176 INTEGER :: id1 ! local integer … … 240 243 zcfl = MAXVAL( ABS( u_ice(:,:) ) * rdt_ice * r1_e1u(:,:) ) 241 244 zcfl = MAX( zcfl, MAXVAL( ABS( v_ice(:,:) ) * rdt_ice * r1_e2v(:,:) ) ) 242 ! define split from previous run, so we ca used mpp_ilor 243 IF( zcfl > 0.5 ) THEN ; l_split_advumx(1) = .TRUE. 244 ELSE ; l_split_advumx(1) = .FALSE. 245 ENDIF 246 IF( lk_mpp ) CALL mpp_ilor( l_split_advumx ) ! non-blocking global communication send l_split_advumx(1) 245 246 DO ji = 1, nbdelay 247 IF( iom_varid( numrir, c_delaylist(ji), ldstop = .FALSE. ) > 0 ) THEN 248 CALL iom_get( numrir, c_delaylist(ji), todelay(ji) ) 249 ndelayid(ji) = 0 ! set to 0 to speficy that the value was read in the restart 250 ENDIF 251 END DO 247 252 248 253 ! fields needed for Met Office (Jules) coupling
Note: See TracChangeset
for help on using the changeset viewer.