- Timestamp:
- 2015-02-04T17:22:15+01:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90
r5058 r5059 183 183 !------------------------------! 184 184 numit = numit + nn_fsbc ! Ice model time step 185 ! 186 ! ! Store previous ice values 187 a_i_b (:,:,:) = a_i (:,:,:) ! ice area 188 e_i_b (:,:,:,:) = e_i (:,:,:,:) ! ice thermal energy 189 v_i_b (:,:,:) = v_i (:,:,:) ! ice volume 190 v_s_b (:,:,:) = v_s (:,:,:) ! snow volume 191 e_s_b (:,:,:,:) = e_s (:,:,:,:) ! snow thermal energy 192 smv_i_b(:,:,:) = smv_i(:,:,:) ! salt content 193 oa_i_b (:,:,:) = oa_i (:,:,:) ! areal age content 194 u_ice_b(:,:) = u_ice(:,:) 195 v_ice_b(:,:) = v_ice(:,:) 196 197 CALL sbc_lim_diag0 ! set diag of mass, heat and salt fluxes to 0 198 199 CALL lim_rst_opn( kt ) ! Open Ice restart file 185 ! 186 CALL sbc_lim_update ! Store previous ice values 187 188 CALL sbc_lim_diag0 ! set diag of mass, heat and salt fluxes to 0 189 190 CALL lim_rst_opn( kt ) ! Open Ice restart file 200 191 ! 201 192 ! ---------------------------------------------- … … 203 194 ! ---------------------------------------------- 204 195 IF( .NOT. lk_c1d ) THEN 205 206 CALL lim_dyn( kt ) ! Ice dynamics ( rheology/dynamics ) 207 208 CALL lim_trp( kt ) ! Ice transport ( Advection/diffusion ) 209 210 IF( nn_monocat /= 2 ) & 211 & CALL lim_itd_me ! Mechanical redistribution ! (ridging/rafting) 196 197 CALL lim_dyn( kt ) ! Ice dynamics ( rheology/dynamics ) 198 199 CALL lim_trp( kt ) ! Ice transport ( Advection/diffusion ) 200 201 IF( nn_monocat /= 2 ) CALL lim_itd_me ! Mechanical redistribution ! (ridging/rafting) 212 202 213 203 #if defined key_bdy 214 ! bdy ice thermo 215 CALL lim_var_glo2eqv ! equivalent variables 216 CALL bdy_ice_lim( kt ) 217 CALL lim_var_zapsmall 218 CALL lim_var_agg(1) 219 IF( ln_nicep ) CALL lim_prt( kt, jiindx, jjindx, 1, ' - ice thermo bdy - ' ) ! control print 204 CALL lim_var_glo2eqv 205 CALL bdy_ice_lim( kt ) ! bdy ice thermo 206 CALL lim_var_zapsmall 207 CALL lim_var_agg(1) 208 IF( ln_nicep ) CALL lim_prt( kt, jiindx, jjindx, 1, ' - ice thermo bdy - ' ) 220 209 #endif 221 222 CALL lim_update1( kt ) 223 210 CALL lim_update1( kt ) 211 224 212 ENDIF 225 226 !- Change old values for new values 227 u_ice_b(:,:) = u_ice(:,:) 228 v_ice_b(:,:) = v_ice(:,:) 229 a_i_b (:,:,:) = a_i (:,:,:) 230 v_s_b (:,:,:) = v_s (:,:,:) 231 v_i_b (:,:,:) = v_i (:,:,:) 232 e_s_b (:,:,:,:) = e_s (:,:,:,:) 233 e_i_b (:,:,:,:) = e_i (:,:,:,:) 234 oa_i_b (:,:,:) = oa_i (:,:,:) 235 smv_i_b(:,:,:) = smv_i(:,:,:) 213 214 CALL sbc_lim_update ! Store previous ice values 236 215 237 216 ! ---------------------------------------------- 238 217 ! ice thermodynamics 239 218 ! ---------------------------------------------- 240 CALL lim_var_glo2eqv ! equivalent variables241 CALL lim_var_agg(1) ! aggregate ice categories242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 CALL lim_thd( kt )! Ice thermodynamics258 259 CALL lim_update2( kt )! Global variables update260 ! 261 CALL lim_sbc_flx( kt )! Update surface ocean mass, heat and salt fluxes262 ! 263 IF(ln_limdiaout) CALL lim_diahsb 264 265 CALL lim_wri( 1 )! Ice outputs266 219 CALL lim_var_glo2eqv 220 CALL lim_var_agg(1) 221 222 ! previous lead fraction and ice volume for flux calculations 223 pfrld(:,:) = 1._wp - at_i(:,:) 224 phicif(:,:) = vt_i(:,:) 225 226 SELECT CASE( kblk ) 227 CASE ( jp_cpl ) 228 CALL sbc_cpl_ice_flx( p_frld=pfrld, palbi=zalb_ice, psst=sst_m, pist=t_su ) 229 IF( nn_limflx == 2 ) CALL ice_lim_flx( t_su, zalb_ice, qns_ice, qsr_ice , & 230 & dqns_ice, qla_ice, dqla_ice, nn_limflx ) 231 ! Latent heat flux is forced to 0 in coupled: it is included in qns (non-solar heat flux) 232 qla_ice (:,:,:) = 0._wp 233 dqla_ice (:,:,:) = 0._wp 234 END SELECT 235 ! 236 CALL lim_thd( kt ) ! Ice thermodynamics 237 238 CALL lim_update2( kt ) ! Global variables update 239 ! 240 CALL lim_sbc_flx( kt ) ! Update surface ocean mass, heat and salt fluxes 241 ! 242 IF(ln_limdiaout) CALL lim_diahsb ! Diagnostics and outputs 243 244 CALL lim_wri( 1 ) ! Ice outputs 245 267 246 IF( kt == nit000 .AND. ln_rstart ) & 268 & CALL iom_close( numrir ) 269 ! 270 IF( lrst_ice ) CALL lim_rst_write( kt ) 271 CALL lim_var_glo2eqv! ???272 ! 273 IF( ln_nicep ) CALL lim_ctl( kt ) 247 & CALL iom_close( numrir ) ! close input ice restart file 248 ! 249 IF( lrst_ice ) CALL lim_rst_write( kt ) ! Ice restart file 250 CALL lim_var_glo2eqv ! ??? 251 ! 252 IF( ln_nicep ) CALL lim_ctl( kt ) ! alerts in case of model crash 274 253 ! 275 254 CALL wrk_dealloc( jpi,jpj,jpl, zalb_os, zalb_cs, zalb_ice ) 276 255 ! 277 ENDIF ! End sea-ice time step only 278 279 ! !--------------------------! 280 ! ! at all ocean time step ! 281 ! !--------------------------! 282 ! 283 ! ! Update surface ocean stresses (only in ice-dynamic case) 284 ! ! otherwise the atm.-ocean stresses are used everywhere 256 ENDIF ! End sea-ice time step only 257 258 !--------------------------------! 259 ! --- at all ocean time step --- ! 260 !--------------------------------! 261 ! Update surface ocean stresses (only in ice-dynamic case) 262 ! otherwise the atm.-ocean stresses are used everywhere 285 263 IF( ln_limdyn ) CALL lim_sbc_tau( kt, ub(:,:,1), vb(:,:,1) ) ! using before instantaneous surf. currents 286 264 !!gm remark, the ocean-ice stress is not saved in ice diag call above ..... find a solution!!! … … 504 482 & pdqn_ice, pqla_ice, pdql_ice, k_limflx ) 505 483 !!--------------------------------------------------------------------- 506 !! *** ROUTINE sbc_ice_lim***484 !! *** ROUTINE ice_lim_flx *** 507 485 !! 508 486 !! ** Purpose : update the ice surface boundary condition by averaging and / or … … 580 558 END SUBROUTINE ice_lim_flx 581 559 560 SUBROUTINE sbc_lim_update 561 !!---------------------------------------------------------------------- 562 !! *** ROUTINE sbc_lim_update *** 563 !! 564 !! ** purpose : store ice variables at "before" time step 565 !!---------------------------------------------------------------------- 566 a_i_b (:,:,:) = a_i (:,:,:) ! ice area 567 e_i_b (:,:,:,:) = e_i (:,:,:,:) ! ice thermal energy 568 v_i_b (:,:,:) = v_i (:,:,:) ! ice volume 569 v_s_b (:,:,:) = v_s (:,:,:) ! snow volume 570 e_s_b (:,:,:,:) = e_s (:,:,:,:) ! snow thermal energy 571 smv_i_b(:,:,:) = smv_i(:,:,:) ! salt content 572 oa_i_b (:,:,:) = oa_i (:,:,:) ! areal age content 573 u_ice_b(:,:) = u_ice(:,:) 574 v_ice_b(:,:) = v_ice(:,:) 575 576 END SUBROUTINE sbc_lim_update 577 582 578 SUBROUTINE sbc_lim_diag0 583 579 !!---------------------------------------------------------------------- 584 !! *** ROUTINE sbc_lim_ flx0 ***580 !! *** ROUTINE sbc_lim_diag0 *** 585 581 !! 586 582 !! ** purpose : set ice-ocean and ice-atm. fluxes to zeros at the beggining … … 612 608 afx_tot(:,:) = 0._wp ; 613 609 afx_dyn(:,:) = 0._wp ; afx_thd(:,:) = 0._wp 610 611 diag_heat_dhc(:,:) = 0._wp ; 614 612 615 613 END SUBROUTINE sbc_lim_diag0
Note: See TracChangeset
for help on using the changeset viewer.