Changeset 5208 for branches/2014/dev_r4650_UKMO11_restart_functionality/NEMOGCM/NEMO/LIM_SRC_3/limdyn.F90
- Timestamp:
- 2015-04-13T15:08:59+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4650_UKMO11_restart_functionality/NEMOGCM/NEMO/LIM_SRC_3/limdyn.F90
r4688 r5208 64 64 INTEGER :: i_j1, i_jpj ! Starting/ending j-indices for rheology 65 65 REAL(wp) :: zcoef ! local scalar 66 REAL(wp), POINTER, DIMENSION(:) :: z ind! i-averaged indicator of sea-ice66 REAL(wp), POINTER, DIMENSION(:) :: zswitch ! i-averaged indicator of sea-ice 67 67 REAL(wp), POINTER, DIMENSION(:) :: zmsk ! i-averaged of tmask 68 68 REAL(wp), POINTER, DIMENSION(:,:) :: zu_io, zv_io ! ice-ocean velocity … … 74 74 75 75 CALL wrk_alloc( jpi, jpj, zu_io, zv_io ) 76 CALL wrk_alloc( jpj, z ind, zmsk )76 CALL wrk_alloc( jpj, zswitch, zmsk ) 77 77 78 78 IF( kt == nit000 ) CALL lim_dyn_init ! Initialization (first time-step only) … … 83 83 IF( ln_limdiahsb ) CALL lim_cons_hsm(0, 'limdyn', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 84 84 85 old_u_ice(:,:) = u_ice(:,:) * tmu(:,:)86 old_v_ice(:,:) = v_ice(:,:) * tmv(:,:)85 u_ice_b(:,:) = u_ice(:,:) * tmu(:,:) 86 v_ice_b(:,:) = v_ice(:,:) * tmv(:,:) 87 87 88 88 ! Rheology (ice dynamics) … … 100 100 ! 101 101 DO jj = 1, jpj 102 z ind(jj) = SUM( 1.0 - at_i(:,jj) ) ! = REAL(jpj) if ocean everywhere on a j-line102 zswitch(jj) = SUM( 1.0 - at_i(:,jj) ) ! = REAL(jpj) if ocean everywhere on a j-line 103 103 zmsk(jj) = SUM( tmask(:,jj,1) ) ! = 0 if land everywhere on a j-line 104 104 END DO … … 110 110 i_j1 = njeq 111 111 i_jpj = jpj 112 DO WHILE ( i_j1 <= jpj .AND. z ind(i_j1) == FLOAT(jpi) .AND. zmsk(i_j1) /=0 )112 DO WHILE ( i_j1 <= jpj .AND. zswitch(i_j1) == FLOAT(jpi) .AND. zmsk(i_j1) /=0 ) 113 113 i_j1 = i_j1 + 1 114 114 END DO … … 120 120 i_j1 = 1 121 121 i_jpj = njeq 122 DO WHILE ( i_jpj >= 1 .AND. z ind(i_jpj) == FLOAT(jpi) .AND. zmsk(i_jpj) /=0 )122 DO WHILE ( i_jpj >= 1 .AND. zswitch(i_jpj) == FLOAT(jpi) .AND. zmsk(i_jpj) /=0 ) 123 123 i_jpj = i_jpj - 1 124 124 END DO … … 132 132 ! ! latitude strip 133 133 i_j1 = 1 134 DO WHILE ( i_j1 <= jpj .AND. z ind(i_j1) == FLOAT(jpi) .AND. zmsk(i_j1) /=0 )134 DO WHILE ( i_j1 <= jpj .AND. zswitch(i_j1) == FLOAT(jpi) .AND. zmsk(i_j1) /=0 ) 135 135 i_j1 = i_j1 + 1 136 136 END DO … … 138 138 139 139 i_jpj = jpj 140 DO WHILE ( i_jpj >= 1 .AND. z ind(i_jpj) == FLOAT(jpi) .AND. zmsk(i_jpj) /=0 )140 DO WHILE ( i_jpj >= 1 .AND. zswitch(i_jpj) == FLOAT(jpi) .AND. zmsk(i_jpj) /=0 ) 141 141 i_jpj = i_jpj - 1 142 142 END DO … … 221 221 ! 222 222 CALL wrk_dealloc( jpi, jpj, zu_io, zv_io ) 223 CALL wrk_dealloc( jpj, z ind, zmsk )223 CALL wrk_dealloc( jpj, zswitch, zmsk ) 224 224 ! 225 225 IF( nn_timing == 1 ) CALL timing_stop('limdyn') … … 241 241 !!------------------------------------------------------------------- 242 242 INTEGER :: ios ! Local integer output status for namelist read 243 NAMELIST/namicedyn/ epsd, om, cw, angvg,pstar, &243 NAMELIST/namicedyn/ epsd, om, cw, pstar, & 244 244 & c_rhg, creepl, ecc, ahi0, & 245 & nevp, telast, alphaevp, hminrhg245 & nevp, relast, alphaevp, hminrhg 246 246 !!------------------------------------------------------------------- 247 247 … … 262 262 WRITE(numout,*) ' relaxation constant om = ', om 263 263 WRITE(numout,*) ' drag coefficient for oceanic stress cw = ', cw 264 WRITE(numout,*) ' turning angle for oceanic stress angvg = ', angvg265 264 WRITE(numout,*) ' first bulk-rheology parameter pstar = ', pstar 266 265 WRITE(numout,*) ' second bulk-rhelogy parameter c_rhg = ', c_rhg … … 269 268 WRITE(numout,*) ' horizontal diffusivity coeff. for sea-ice ahi0 = ', ahi0 270 269 WRITE(numout,*) ' number of iterations for subcycling nevp = ', nevp 271 WRITE(numout,*) ' timescale for elastic waves telast = ', telast270 WRITE(numout,*) ' ratio of elastic timescale over ice time step relast = ', relast 272 271 WRITE(numout,*) ' coefficient for the solution of int. stresses alphaevp = ', alphaevp 273 272 WRITE(numout,*) ' min ice thickness for rheology calculations hminrhg = ', hminrhg 274 273 ENDIF 275 274 ! 276 IF( angvg /= 0._wp ) THEN277 CALL ctl_warn( 'lim_dyn_init: turning angle for oceanic stress not properly coded for EVP ', &278 & '(see limsbc module). We force angvg = 0._wp' )279 angvg = 0._wp280 ENDIF281 282 275 usecc2 = 1._wp / ( ecc * ecc ) 283 276 rhoco = rau0 * cw 284 angvg = angvg * rad 285 sangvg = SIN( angvg ) 286 cangvg = COS( angvg ) 287 pstarh = pstar * 0.5_wp 277 278 ! elastic damping 279 telast = relast * rdt_ice 288 280 289 281 ! Diffusion coefficients.
Note: See TracChangeset
for help on using the changeset viewer.