Changeset 5134 for trunk/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90
- Timestamp:
- 2015-03-09T18:27:34+01:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90
r5128 r5134 68 68 CHARACTER(len=80) :: cltmp 69 69 ! 70 REAL(wp), POINTER, DIMENSION(:,:) :: zsm , zs0at71 REAL(wp), POINTER, DIMENSION(:,:,:) :: z s0ice, zs0sn, zs0a, zs0c0 , zs0sm , zs0oi, zzs0e72 REAL(wp), POINTER, DIMENSION(:,:,:) :: z s0ow73 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: z s0e70 REAL(wp), POINTER, DIMENSION(:,:) :: zsm 71 REAL(wp), POINTER, DIMENSION(:,:,:) :: z0ice, z0snw, z0ai, z0es , z0smi , z0oi 72 REAL(wp), POINTER, DIMENSION(:,:,:) :: z0opw 73 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: z0ei 74 74 REAL(wp), POINTER, DIMENSION(:,:,:) :: zviold, zvsold, zsmvold ! old ice volume... 75 75 REAL(wp), POINTER, DIMENSION(:,:,:) :: zhimax ! old ice thickness … … 80 80 IF( nn_timing == 1 ) CALL timing_start('limtrp') 81 81 82 CALL wrk_alloc( jpi,jpj, zsm, z s0at, zatold, zeiold, zesold )83 CALL wrk_alloc( jpi,jpj,jpl, z s0ice, zs0sn, zs0a, zs0c0 , zs0sm , zs0oi, zzs0e)84 CALL wrk_alloc( jpi,jpj,1, z s0ow )85 CALL wrk_alloc( jpi,jpj,nlay_i+1,jpl, z s0e)82 CALL wrk_alloc( jpi,jpj, zsm, zatold, zeiold, zesold ) 83 CALL wrk_alloc( jpi,jpj,jpl, z0ice, z0snw, z0ai, z0es , z0smi , z0oi ) 84 CALL wrk_alloc( jpi,jpj,1, z0opw ) 85 CALL wrk_alloc( jpi,jpj,nlay_i+1,jpl, z0ei ) 86 86 CALL wrk_alloc( jpi,jpj,jpl, zhimax, zviold, zvsold, zsmvold ) 87 87 … … 118 118 ! in case advection creates ice too thick. 119 119 !--------------------------------------------------------------------- 120 zhimax(:,:,:) = ht_i(:,:,:) 120 zhimax(:,:,:) = ht_i(:,:,:) + ht_s(:,:,:) 121 121 DO jl = 1, jpl 122 122 DO jj = 2, jpjm1 123 123 DO ji = 2, jpim1 124 zhimax(ji,jj,jl) = MAXVAL( ht_i(ji-1:ji+1,jj-1:jj+1,jl) )124 zhimax(ji,jj,jl) = MAXVAL( ht_i(ji-1:ji+1,jj-1:jj+1,jl) + ht_s(ji-1:ji+1,jj-1:jj+1,jl) ) 125 125 END DO 126 126 END DO … … 155 155 ! transported fields 156 156 !------------------------- 157 z s0ow(:,:,1) = ato_i(:,:) * e12t(:,:)! Open water area158 DO jl = 1, jpl 159 z s0sn (:,:,jl)= v_s (:,:,jl) * e12t(:,:) ! Snow volume160 z s0ice(:,:,jl) = v_i (:,:,jl) * e12t(:,:) ! Ice volume161 z s0a (:,:,jl)= a_i (:,:,jl) * e12t(:,:) ! Ice area162 z s0sm (:,:,jl)= smv_i(:,:,jl) * e12t(:,:) ! Salt content163 z s0oi (:,:,jl) = oa_i (:,:,jl) * e12t(:,:) ! Age content164 z s0c0(:,:,jl) = e_s (:,:,1,jl) * e12t(:,:) ! Snow heat content157 z0opw(:,:,1) = ato_i(:,:) * e12t(:,:) ! Open water area 158 DO jl = 1, jpl 159 z0snw (:,:,jl) = v_s (:,:,jl) * e12t(:,:) ! Snow volume 160 z0ice(:,:,jl) = v_i (:,:,jl) * e12t(:,:) ! Ice volume 161 z0ai (:,:,jl) = a_i (:,:,jl) * e12t(:,:) ! Ice area 162 z0smi (:,:,jl) = smv_i(:,:,jl) * e12t(:,:) ! Salt content 163 z0oi (:,:,jl) = oa_i (:,:,jl) * e12t(:,:) ! Age content 164 z0es (:,:,jl) = e_s (:,:,1,jl) * e12t(:,:) ! Snow heat content 165 165 DO jk = 1, nlay_i 166 z s0e(:,:,jk,jl) = e_i (:,:,jk,jl) * e12t(:,:) ! Ice heat content166 z0ei (:,:,jk,jl) = e_i (:,:,jk,jl) * e12t(:,:) ! Ice heat content 167 167 END DO 168 168 END DO … … 171 171 IF( MOD( ( kt - 1) / nn_fsbc , 2 ) == 0 ) THEN !== odd ice time step: adv_x then adv_y ==! 172 172 DO jt = 1, initad 173 CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z s0ow (:,:,1), sxopw(:,:), & !--- ice open water area173 CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z0opw (:,:,1), sxopw(:,:), & !--- ice open water area 174 174 & sxxopw(:,:) , syopw(:,:), syyopw(:,:), sxyopw(:,:) ) 175 CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z s0ow (:,:,1), sxopw(:,:), &175 CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z0opw (:,:,1), sxopw(:,:), & 176 176 & sxxopw(:,:) , syopw(:,:), syyopw(:,:), sxyopw(:,:) ) 177 177 DO jl = 1, jpl 178 CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z s0ice(:,:,jl), sxice(:,:,jl), & !--- ice volume ---178 CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z0ice (:,:,jl), sxice(:,:,jl), & !--- ice volume --- 179 179 & sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl) ) 180 CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z s0ice(:,:,jl), sxice(:,:,jl), &180 CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z0ice (:,:,jl), sxice(:,:,jl), & 181 181 & sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl) ) 182 CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z s0sn(:,:,jl), sxsn (:,:,jl), & !--- snow volume ---182 CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl), & !--- snow volume --- 183 183 & sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl) ) 184 CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z s0sn(:,:,jl), sxsn (:,:,jl), &184 CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl), & 185 185 & sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl) ) 186 CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z s0sm(:,:,jl), sxsal(:,:,jl), & !--- ice salinity ---186 CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z0smi (:,:,jl), sxsal(:,:,jl), & !--- ice salinity --- 187 187 & sxxsal(:,:,jl), sysal(:,:,jl), syysal(:,:,jl), sxysal(:,:,jl) ) 188 CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z s0sm(:,:,jl), sxsal(:,:,jl), &188 CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z0smi (:,:,jl), sxsal(:,:,jl), & 189 189 & sxxsal(:,:,jl), sysal(:,:,jl), syysal(:,:,jl), sxysal(:,:,jl) ) 190 CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z s0oi(:,:,jl), sxage(:,:,jl), & !--- ice age ---190 CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z0oi (:,:,jl), sxage(:,:,jl), & !--- ice age --- 191 191 & sxxage(:,:,jl), syage(:,:,jl), syyage(:,:,jl), sxyage(:,:,jl) ) 192 CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z s0oi(:,:,jl), sxage(:,:,jl), &192 CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z0oi (:,:,jl), sxage(:,:,jl), & 193 193 & sxxage(:,:,jl), syage(:,:,jl), syyage(:,:,jl), sxyage(:,:,jl) ) 194 CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z s0a(:,:,jl), sxa (:,:,jl), & !--- ice concentrations ---194 CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z0ai (:,:,jl), sxa (:,:,jl), & !--- ice concentrations --- 195 195 & sxxa (:,:,jl), sya (:,:,jl), syya (:,:,jl), sxya (:,:,jl) ) 196 CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z s0a(:,:,jl), sxa (:,:,jl), &196 CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z0ai (:,:,jl), sxa (:,:,jl), & 197 197 & sxxa (:,:,jl), sya (:,:,jl), syya (:,:,jl), sxya (:,:,jl) ) 198 CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z s0c0(:,:,jl), sxc0 (:,:,jl), & !--- snow heat contents ---198 CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z0es (:,:,jl), sxc0 (:,:,jl), & !--- snow heat contents --- 199 199 & sxxc0 (:,:,jl), syc0 (:,:,jl), syyc0 (:,:,jl), sxyc0 (:,:,jl) ) 200 CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z s0c0(:,:,jl), sxc0 (:,:,jl), &200 CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z0es (:,:,jl), sxc0 (:,:,jl), & 201 201 & sxxc0 (:,:,jl), syc0 (:,:,jl), syyc0 (:,:,jl), sxyc0 (:,:,jl) ) 202 202 DO jk = 1, nlay_i !--- ice heat contents --- 203 CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z s0e(:,:,jk,jl), sxe (:,:,jk,jl), &203 CALL lim_adv_x( zusnit, u_ice, 1._wp, zsm, z0ei(:,:,jk,jl), sxe (:,:,jk,jl), & 204 204 & sxxe(:,:,jk,jl), sye (:,:,jk,jl), & 205 205 & syye(:,:,jk,jl), sxye(:,:,jk,jl) ) 206 CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z s0e(:,:,jk,jl), sxe (:,:,jk,jl), &206 CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, z0ei(:,:,jk,jl), sxe (:,:,jk,jl), & 207 207 & sxxe(:,:,jk,jl), sye (:,:,jk,jl), & 208 208 & syye(:,:,jk,jl), sxye(:,:,jk,jl) ) … … 212 212 ELSE 213 213 DO jt = 1, initad 214 CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z s0ow (:,:,1), sxopw(:,:), & !--- ice open water area214 CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z0opw (:,:,1), sxopw(:,:), & !--- ice open water area 215 215 & sxxopw(:,:) , syopw(:,:), syyopw(:,:), sxyopw(:,:) ) 216 CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z s0ow (:,:,1), sxopw(:,:), &216 CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z0opw (:,:,1), sxopw(:,:), & 217 217 & sxxopw(:,:) , syopw(:,:), syyopw(:,:), sxyopw(:,:) ) 218 218 DO jl = 1, jpl 219 CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z s0ice(:,:,jl), sxice(:,:,jl), & !--- ice volume ---219 CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z0ice (:,:,jl), sxice(:,:,jl), & !--- ice volume --- 220 220 & sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl) ) 221 CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z s0ice(:,:,jl), sxice(:,:,jl), &221 CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z0ice (:,:,jl), sxice(:,:,jl), & 222 222 & sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl) ) 223 CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z s0sn(:,:,jl), sxsn (:,:,jl), & !--- snow volume ---223 CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl), & !--- snow volume --- 224 224 & sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl) ) 225 CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z s0sn(:,:,jl), sxsn (:,:,jl), &225 CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z0snw (:,:,jl), sxsn (:,:,jl), & 226 226 & sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl) ) 227 CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z s0sm(:,:,jl), sxsal(:,:,jl), & !--- ice salinity ---227 CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z0smi (:,:,jl), sxsal(:,:,jl), & !--- ice salinity --- 228 228 & sxxsal(:,:,jl), sysal(:,:,jl), syysal(:,:,jl), sxysal(:,:,jl) ) 229 CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z s0sm(:,:,jl), sxsal(:,:,jl), &229 CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z0smi (:,:,jl), sxsal(:,:,jl), & 230 230 & sxxsal(:,:,jl), sysal(:,:,jl), syysal(:,:,jl), sxysal(:,:,jl) ) 231 231 232 CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z s0oi(:,:,jl), sxage(:,:,jl), & !--- ice age ---232 CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z0oi (:,:,jl), sxage(:,:,jl), & !--- ice age --- 233 233 & sxxage(:,:,jl), syage(:,:,jl), syyage(:,:,jl), sxyage(:,:,jl) ) 234 CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z s0oi(:,:,jl), sxage(:,:,jl), &234 CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z0oi (:,:,jl), sxage(:,:,jl), & 235 235 & sxxage(:,:,jl), syage(:,:,jl), syyage(:,:,jl), sxyage(:,:,jl) ) 236 CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z s0a(:,:,jl), sxa (:,:,jl), & !--- ice concentrations ---236 CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z0ai (:,:,jl), sxa (:,:,jl), & !--- ice concentrations --- 237 237 & sxxa (:,:,jl), sya (:,:,jl), syya (:,:,jl), sxya (:,:,jl) ) 238 CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z s0a(:,:,jl), sxa (:,:,jl), &238 CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z0ai (:,:,jl), sxa (:,:,jl), & 239 239 & sxxa (:,:,jl), sya (:,:,jl), syya (:,:,jl), sxya (:,:,jl) ) 240 CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z s0c0(:,:,jl), sxc0 (:,:,jl), & !--- snow heat contents ---240 CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z0es (:,:,jl), sxc0 (:,:,jl), & !--- snow heat contents --- 241 241 & sxxc0 (:,:,jl), syc0 (:,:,jl), syyc0 (:,:,jl), sxyc0 (:,:,jl) ) 242 CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z s0c0(:,:,jl), sxc0 (:,:,jl), &242 CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z0es (:,:,jl), sxc0 (:,:,jl), & 243 243 & sxxc0 (:,:,jl), syc0 (:,:,jl), syyc0 (:,:,jl), sxyc0 (:,:,jl) ) 244 244 DO jk = 1, nlay_i !--- ice heat contents --- 245 CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z s0e(:,:,jk,jl), sxe (:,:,jk,jl), &245 CALL lim_adv_y( zusnit, v_ice, 1._wp, zsm, z0ei(:,:,jk,jl), sxe (:,:,jk,jl), & 246 246 & sxxe(:,:,jk,jl), sye (:,:,jk,jl), & 247 247 & syye(:,:,jk,jl), sxye(:,:,jk,jl) ) 248 CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z s0e(:,:,jk,jl), sxe (:,:,jk,jl), &248 CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, z0ei(:,:,jk,jl), sxe (:,:,jk,jl), & 249 249 & sxxe(:,:,jk,jl), sye (:,:,jk,jl), & 250 250 & syye(:,:,jk,jl), sxye(:,:,jk,jl) ) … … 257 257 ! Recover the properties from their contents 258 258 !------------------------------------------- 259 ato_i(:,:) = z s0ow(:,:,1) * r1_e12t(:,:)260 DO jl = 1, jpl 261 v_i (:,:,jl) = z s0ice(:,:,jl) * r1_e12t(:,:)262 v_s (:,:,jl) = z s0sn(:,:,jl) * r1_e12t(:,:)263 smv_i(:,:,jl) = z s0sm(:,:,jl) * r1_e12t(:,:)264 oa_i (:,:,jl) = z s0oi (:,:,jl) * r1_e12t(:,:)265 a_i (:,:,jl) = z s0a(:,:,jl) * r1_e12t(:,:)266 e_s (:,:,1,jl) = z s0c0(:,:,jl) * r1_e12t(:,:)259 ato_i(:,:) = z0opw(:,:,1) * r1_e12t(:,:) 260 DO jl = 1, jpl 261 v_i (:,:,jl) = z0ice(:,:,jl) * r1_e12t(:,:) 262 v_s (:,:,jl) = z0snw(:,:,jl) * r1_e12t(:,:) 263 smv_i(:,:,jl) = z0smi(:,:,jl) * r1_e12t(:,:) 264 oa_i (:,:,jl) = z0oi (:,:,jl) * r1_e12t(:,:) 265 a_i (:,:,jl) = z0ai (:,:,jl) * r1_e12t(:,:) 266 e_s (:,:,1,jl) = z0es (:,:,jl) * r1_e12t(:,:) 267 267 DO jk = 1, nlay_i 268 e_i (:,:,jk,jl) = zs0e(:,:,jk,jl) * r1_e12t(:,:)268 e_i(:,:,jk,jl) = z0ei(:,:,jk,jl) * r1_e12t(:,:) 269 269 END DO 270 270 END DO … … 293 293 END DO 294 294 ! 295 CALL lim_hdf( ato_i (:,:) ) ! Diffusion295 CALL lim_hdf( ato_i (:,:) ) 296 296 297 297 !------------------------------------ … … 356 356 357 357 IF ( v_i(ji,jj,jl) > 0._wp ) THEN 358 358 359 zvi = v_i (ji,jj,jl) 359 360 zvs = v_s (ji,jj,jl) … … 361 362 zes = e_s (ji,jj,1,jl) 362 363 zei = SUM( e_i(ji,jj,1:nlay_i,jl) ) 363 zdv = v_i(ji,jj,jl) - zviold(ji,jj,jl) 364 365 rswitch = 1._wp 366 IF ( ( zdv > 0.0 .AND. ht_i(ji,jj,jl) > zhimax(ji,jj,jl) .AND. zatold(ji,jj) < 0.80 ) .OR. & 367 & ( zdv < 0.0 .AND. ht_i(ji,jj,jl) > zhimax(ji,jj,jl) ) ) THEN 368 ht_i(ji,jj,jl) = MIN( zhimax(ji,jj,jl), hi_max(jl) ) 369 rswitch = MAX( 0._wp, SIGN( 1._wp, ht_i(ji,jj,jl) - epsi20 ) ) 370 a_i(ji,jj,jl) = rswitch * v_i(ji,jj,jl) / MAX( ht_i(ji,jj,jl), epsi20 ) 371 ELSE 372 ht_i(ji,jj,jl) = MAX( MIN( ht_i(ji,jj,jl), hi_max(jl) ), hi_max(jl-1) ) 373 rswitch = MAX( 0._wp, SIGN( 1._wp, ht_i(ji,jj,jl) - epsi20 ) ) 374 a_i(ji,jj,jl) = rswitch * v_i(ji,jj,jl) / MAX( ht_i(ji,jj,jl), epsi20 ) 364 365 zdv = v_i(ji,jj,jl) + v_s(ji,jj,jl) - zviold(ji,jj,jl) - zvsold(ji,jj,jl) 366 367 IF ( ( zdv > 0.0 .AND. (ht_i(ji,jj,jl)+ht_s(ji,jj,jl)) > zhimax(ji,jj,jl) .AND. zatold(ji,jj) < 0.80 ) .OR. & 368 & ( zdv <= 0.0 .AND. (ht_i(ji,jj,jl)+ht_s(ji,jj,jl)) > zhimax(ji,jj,jl) ) ) THEN 369 370 rswitch = MAX( 0._wp, SIGN( 1._wp, zhimax(ji,jj,jl) - epsi20 ) ) 371 a_i(ji,jj,jl) = rswitch * ( v_i(ji,jj,jl) + v_s(ji,jj,jl) ) / MAX( zhimax(ji,jj,jl), epsi20 ) 372 373 ! small correction due to *rswitch for a_i 374 v_i (ji,jj,jl) = rswitch * v_i (ji,jj,jl) 375 v_s (ji,jj,jl) = rswitch * v_s (ji,jj,jl) 376 smv_i(ji,jj,jl) = rswitch * smv_i(ji,jj,jl) 377 e_s(ji,jj,1,jl) = rswitch * e_s(ji,jj,1,jl) 378 e_i(ji,jj,1:nlay_i,jl) = rswitch * e_i(ji,jj,1:nlay_i,jl) 379 380 ! Update mass fluxes 381 wfx_res(ji,jj) = wfx_res(ji,jj) - ( v_i(ji,jj,jl) - zvi ) * rhoic * r1_rdtice 382 wfx_snw(ji,jj) = wfx_snw(ji,jj) - ( v_s(ji,jj,jl) - zvs ) * rhosn * r1_rdtice 383 sfx_res(ji,jj) = sfx_res(ji,jj) - ( smv_i(ji,jj,jl) - zsmv ) * rhoic * r1_rdtice 384 hfx_res(ji,jj) = hfx_res(ji,jj) + ( e_s(ji,jj,1,jl) - zes ) * r1_rdtice ! W.m-2 <0 385 hfx_res(ji,jj) = hfx_res(ji,jj) + ( SUM( e_i(ji,jj,1:nlay_i,jl) ) - zei ) * r1_rdtice ! W.m-2 <0 386 375 387 ENDIF 376 388 377 ! small correction due to *rswitch for a_i378 v_i (ji,jj,jl) = rswitch * v_i (ji,jj,jl)379 v_s (ji,jj,jl) = rswitch * v_s (ji,jj,jl)380 smv_i(ji,jj,jl) = rswitch * smv_i(ji,jj,jl)381 e_s(ji,jj,1,jl) = rswitch * e_s(ji,jj,1,jl)382 e_i(ji,jj,1:nlay_i,jl) = rswitch * e_i(ji,jj,1:nlay_i,jl)383 384 ! Update mass fluxes385 wfx_res(ji,jj) = wfx_res(ji,jj) - ( v_i(ji,jj,jl) - zvi ) * rhoic * r1_rdtice386 wfx_snw(ji,jj) = wfx_snw(ji,jj) - ( v_s(ji,jj,jl) - zvs ) * rhosn * r1_rdtice387 sfx_res(ji,jj) = sfx_res(ji,jj) - ( smv_i(ji,jj,jl) - zsmv ) * rhoic * r1_rdtice388 hfx_res(ji,jj) = hfx_res(ji,jj) + ( e_s(ji,jj,1,jl) - zes ) * r1_rdtice ! W.m-2 <0389 hfx_res(ji,jj) = hfx_res(ji,jj) + ( SUM( e_i(ji,jj,1:nlay_i,jl) ) - zei ) * r1_rdtice ! W.m-2 <0390 389 ENDIF 391 390 … … 423 422 vt_s (:,:) = 0._wp 424 423 at_i (:,:) = 0._wp 425 !426 424 DO jl = 1, jpl 427 425 DO jj = 1, jpj 428 426 DO ji = 1, jpi 429 ! 430 vt_i(ji,jj) = vt_i(ji,jj) + v_i(ji,jj,jl) ! ice volume 431 vt_s(ji,jj) = vt_s(ji,jj) + v_s(ji,jj,jl) ! snow volume 432 at_i(ji,jj) = at_i(ji,jj) + a_i(ji,jj,jl) ! ice concentration 433 END DO 434 END DO 435 END DO 436 ! ------------------------------------------------- 437 438 ! open water 427 vt_i(ji,jj) = vt_i(ji,jj) + v_i(ji,jj,jl) 428 vt_s(ji,jj) = vt_s(ji,jj) + v_s(ji,jj,jl) 429 at_i(ji,jj) = at_i(ji,jj) + a_i(ji,jj,jl) 430 END DO 431 END DO 432 END DO 433 434 ! --- open water = 1 if at_i=0 -------------------------------- 439 435 DO jj = 1, jpj 440 436 DO ji = 1, jpi 441 ! open water = 1 if at_i=0442 437 rswitch = MAX( 0._wp , SIGN( 1._wp, - at_i(ji,jj) ) ) 443 438 ato_i(ji,jj) = rswitch + (1._wp - rswitch ) * ato_i(ji,jj) … … 457 452 IF( ln_icectl ) CALL lim_prt( kt, iiceprt, jiceprt,-1, ' - ice dyn & trp - ' ) 458 453 ! 459 CALL wrk_dealloc( jpi,jpj, zsm, z s0at, zatold, zeiold, zesold )460 CALL wrk_dealloc( jpi,jpj,jpl, z s0ice, zs0sn, zs0a, zs0c0 , zs0sm , zs0oi, zzs0e)461 CALL wrk_dealloc( jpi,jpj,1, z s0ow )462 CALL wrk_dealloc( jpi,jpj,nlay_i+1,jpl, z s0e)454 CALL wrk_dealloc( jpi,jpj, zsm, zatold, zeiold, zesold ) 455 CALL wrk_dealloc( jpi,jpj,jpl, z0ice, z0snw, z0ai, z0es , z0smi , z0oi ) 456 CALL wrk_dealloc( jpi,jpj,1, z0opw ) 457 CALL wrk_dealloc( jpi,jpj,nlay_i+1,jpl, z0ei ) 463 458 CALL wrk_dealloc( jpi,jpj,jpl, zviold, zvsold, zhimax, zsmvold ) 464 459 !
Note: See TracChangeset
for help on using the changeset viewer.