- Timestamp:
- 2010-11-10T08:48:54+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90
r2287 r2370 5 5 !! & covered area using LIM sea-ice model 6 6 !! Sea-Ice model : LIM 3.0 Sea ice model time-stepping 7 !!====================================================================== 8 !! History : 2.0 ! 2006-12 (M. Vancoppenolle) Original code 9 !! 3.0 ! 2008-02 (C. Talandier) Surface module from icestp.F90 10 !! 9.0 ! 2008-04 (G. Madec) sltyle and lim_ctl routine 7 !!===================================================================== 8 !! History : 2.0 ! 2006-12 (M. Vancoppenolle) Original code 9 !! 3.0 ! 2008-02 (C. Talandier) Surface module from icestp.F90 10 !! - ! 2008-04 (G. Madec) sltyle and lim_ctl routine 11 !! 3.3 ! 2010-11 (G. Madec) ice-ocean stress always computed at each ocean time-step 11 12 !!---------------------------------------------------------------------- 12 13 #if defined key_lim3 … … 20 21 USE oce ! ocean dynamics and tracers 21 22 USE dom_oce ! ocean space and time domain 22 USE lib_mpp 23 USE lib_mpp ! MPP library 23 24 USE par_ice ! sea-ice parameters 24 USE ice 25 USE iceini 26 USE dom_ice 25 USE ice ! LIM-3: ice variables 26 USE iceini ! LIM-3: ice initialisation 27 USE dom_ice ! LIM-3: ice domain 27 28 28 29 USE sbc_oce ! Surface boundary condition: ocean fields … … 30 31 USE sbcblk_core ! Surface boundary condition: CORE bulk 31 32 USE sbcblk_clio ! Surface boundary condition: CLIO bulk 32 USE albedo 33 USE albedo ! ocean & ice albedo 33 34 34 35 USE phycst ! Define parameters for the routines … … 46 47 USE limvar ! Ice variables switch 47 48 48 USE lbclnk 49 USE lbclnk ! lateral boundary condition - MPP link 49 50 USE iom ! I/O manager library 50 51 USE in_out_manager ! I/O manager … … 56 57 PUBLIC sbc_ice_lim ! routine called by sbcmod.F90 57 58 58 CHARACTER(len=1) :: cl_grid = 'C' ! type of grid used in ice dynamics59 60 59 !! * Substitutions 61 60 # include "domzgr_substitute.h90" … … 64 63 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 65 64 !! $Id$ 66 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 67 !!---------------------------------------------------------------------- 68 65 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 66 !!---------------------------------------------------------------------- 69 67 CONTAINS 70 68 71 SUBROUTINE sbc_ice_lim( kt, kblk , kico)69 SUBROUTINE sbc_ice_lim( kt, kblk ) 72 70 !!--------------------------------------------------------------------- 73 71 !! *** ROUTINE sbc_ice_lim *** … … 91 89 INTEGER, INTENT(in) :: kt ! ocean time step 92 90 INTEGER, INTENT(in) :: kblk ! type of bulk (=3 CLIO, =4 CORE) 93 INTEGER, INTENT(in) :: kico ! ice-ocean stress treatment94 91 !! 95 92 INTEGER :: jl ! loop index … … 142 139 & qla_ice , dqns_ice , dqla_ice , & 143 140 & tprecip , sprecip , & 144 & fr1_i0 , fr2_i0 , c l_grid, jpl )141 & fr1_i0 , fr2_i0 , cp_ice_msh, jpl ) 145 142 ! 146 143 CASE( 4 ) ! CORE bulk formulation … … 149 146 & qla_ice , dqns_ice , dqla_ice , & 150 147 & tprecip , sprecip , & 151 & fr1_i0 , fr2_i0 , c l_grid, jpl )148 & fr1_i0 , fr2_i0 , cp_ice_msh, jpl ) 152 149 END SELECT 153 150 … … 160 157 ! ! Store previous ice values 161 158 !!gm : remark old_... should becomes ...b as tn versus tb 162 old_a_i (:,:,:) = a_i(:,:,:) ! ice area163 old_e_i (:,:,:,:) = e_i(:,:,:,:) ! ice thermal energy164 old_v_i (:,:,:) = v_i(:,:,:) ! ice volume165 old_v_s (:,:,:) = v_s(:,:,:) ! snow volume166 old_e_s (:,:,:,:) = e_s(:,:,:,:) ! snow thermal energy167 old_smv_i(:,:,:) = smv_i(:,:,:)! salt content168 old_oa_i (:,:,:) = oa_i(:,:,:)! areal age content159 old_a_i (:,:,:) = a_i (:,:,:) ! ice area 160 old_e_i (:,:,:,:) = e_i (:,:,:,:) ! ice thermal energy 161 old_v_i (:,:,:) = v_i (:,:,:) ! ice volume 162 old_v_s (:,:,:) = v_s (:,:,:) ! snow volume 163 old_e_s (:,:,:,:) = e_s (:,:,:,:) ! snow thermal energy 164 old_smv_i(:,:,:) = smv_i(:,:,:) ! salt content 165 old_oa_i (:,:,:) = oa_i (:,:,:) ! areal age content 169 166 170 167 ! ! intialisation to zero !!gm is it truly necessary ??? 171 d_a_i_thd (:,:,:) = 0.e0 ; d_a_i_trp(:,:,:) = 0.e0172 d_v_i_thd (:,:,:) = 0.e0 ; d_v_i_trp(:,:,:) = 0.e0173 d_e_i_thd (:,:,:,:) = 0.e0 ; d_e_i_trp(:,:,:,:) = 0.e0174 d_v_s_thd (:,:,:) = 0.e0 ; d_v_s_trp(:,:,:) = 0.e0175 d_e_s_thd (:,:,:,:) = 0.e0 ; d_e_s_trp(:,:,:,:) = 0.e0176 d_smv_i_thd(:,:,:) = 0.e0 ; d_smv_i_trp(:,:,:)= 0.e0177 d_oa_i_thd (:,:,:) = 0.e0 ; d_oa_i_trp(:,:,:)= 0.e0178 ! 179 fseqv (:,:)= 0.e0180 fsbri (:,:) = 0.e0 ;fsalt_res(:,:) = 0.e0168 d_a_i_thd (:,:,:) = 0.e0 ; d_a_i_trp (:,:,:) = 0.e0 169 d_v_i_thd (:,:,:) = 0.e0 ; d_v_i_trp (:,:,:) = 0.e0 170 d_e_i_thd (:,:,:,:) = 0.e0 ; d_e_i_trp (:,:,:,:) = 0.e0 171 d_v_s_thd (:,:,:) = 0.e0 ; d_v_s_trp (:,:,:) = 0.e0 172 d_e_s_thd (:,:,:,:) = 0.e0 ; d_e_s_trp (:,:,:,:) = 0.e0 173 d_smv_i_thd(:,:,:) = 0.e0 ; d_smv_i_trp(:,:,:) = 0.e0 174 d_oa_i_thd (:,:,:) = 0.e0 ; d_oa_i_trp (:,:,:) = 0.e0 175 ! 176 fseqv (:,:) = 0.e0 177 fsbri (:,:) = 0.e0 ; fsalt_res(:,:) = 0.e0 181 178 fsalt_rpo(:,:) = 0.e0 182 fhmec (:,:) = 0.e0 ; fhbri(:,:)= 0.e0183 fmmec (:,:) = 0.e0 ;fheat_res(:,:) = 0.e0184 fheat_rpo(:,:) = 0.e0 ; focea2D(:,:)= 0.e0185 fsup2D (:,:)= 0.e0179 fhmec (:,:) = 0.e0 ; fhbri (:,:) = 0.e0 180 fmmec (:,:) = 0.e0 ; fheat_res(:,:) = 0.e0 181 fheat_rpo(:,:) = 0.e0 ; focea2D (:,:) = 0.e0 182 fsup2D (:,:) = 0.e0 186 183 ! 187 diag_sni_gr(:,:) = 0.e0 ; diag_lat_gr(:,:) = 0.e0188 diag_bot_gr(:,:) = 0.e0 ; diag_dyn_gr(:,:) = 0.e0189 diag_bot_me(:,:) = 0.e0 ; diag_sur_me(:,:) = 0.e0184 diag_sni_gr(:,:) = 0.e0 ; diag_lat_gr(:,:) = 0.e0 185 diag_bot_gr(:,:) = 0.e0 ; diag_dyn_gr(:,:) = 0.e0 186 diag_bot_me(:,:) = 0.e0 ; diag_sur_me(:,:) = 0.e0 190 187 ! dynamical invariants 191 delta_i(:,:) = 0.e0 ; divu_i (:,:) = 0.e0 ;shear_i(:,:) = 0.e0188 delta_i(:,:) = 0.e0 ; divu_i(:,:) = 0.e0 ; shear_i(:,:) = 0.e0 192 189 193 190 CALL lim_rst_opn( kt ) ! Open Ice restart file … … 196 193 ! 197 194 #if ! defined key_c1d 198 ! Ice dynamics & transport (not in 1D case)195 ! Ice dynamics & transport (not in 1D case) 199 196 CALL lim_dyn( kt ) ! Ice dynamics ( rheology/dynamics ) 200 197 CALL lim_trp( kt ) ! Ice transport ( Advection/diffusion ) … … 204 201 CALL lim_itd_me ! Mechanical redistribution ! (ridging/rafting) 205 202 #endif 206 !207 203 ! ! Ice thermodynamics 208 204 CALL lim_var_glo2eqv ! equivalent variables … … 216 212 CALL lim_itd_th( kt ) ! Remap ice categories, lateral accretion ! 217 213 ! 218 ! ! Global variables update |214 ! ! Global variables update 219 215 CALL lim_var_agg( 1 ) ! requested by limupdate 220 216 CALL lim_update ! Global variables update … … 223 219 IF( ln_nicep ) CALL lim_prt_state( jiindx, jjindx, 2, ' - Final state - ' ) ! control print 224 220 ! 225 ! ! Fluxes of mass and heat to the ocean | 226 CALL lim_sbc_flx( kt ) ! Ice/Ocean heat freshwater/salt fluxes 227 IF( ln_limdyn .AND. kico == 0 ) & ! Ice/Ocean stresses (only in ice-dynamic case) 228 & CALL lim_sbc_tau( kt, kico ) ! otherwise the atm.-ocean stresses are used everywhere 221 CALL lim_sbc_flx( kt ) ! Update surface ocean mass, heat and salt fluxes 229 222 ! 230 223 IF( ln_nicep ) CALL lim_prt_state( jiindx, jjindx, 3, ' - Final state lim_sbc - ' ) ! control print … … 239 232 IF( ln_nicep ) CALL lim_ctl ! alerts in case of model crash 240 233 ! 241 ENDIF ! End sea-ice time step only 242 243 ! !--------------------------! 244 ! Ice/Ocean stresses (nn_ico_cpl=1 or 2 cases) ! at all ocean time step ! 245 ! !--------------------------! 246 IF( ln_limdyn .AND. kico /= 0 ) & 247 & CALL lim_sbc_tau( kt, kico ) 248 !!gm remark, in this case the ocean-ice stress is not saved in diag call above ..... find a solution!!! 234 ENDIF ! End sea-ice time step only 235 236 ! !--------------------------! 237 ! ! at all ocean time step ! 238 ! !--------------------------! 239 ! 240 ! ! Update surface ocean stresses (only in ice-dynamic case) 241 ! ! otherwise the atm.-ocean stresses are used everywhere 242 IF( ln_limdyn ) CALL lim_sbc_tau( kt, ub(:,:,1), vb(:,:,1) ) ! using before instantaneous surf. currents 243 244 !!gm remark, the ocean-ice stress is not saved in ice diag call above ..... find a solution!!! 249 245 ! 250 246 END SUBROUTINE sbc_ice_lim … … 664 660 !!---------------------------------------------------------------------- 665 661 CONTAINS 666 SUBROUTINE sbc_ice_lim ( kt, kblk , kico) ! Dummy routine667 WRITE(*,*) 'sbc_ice_lim: You should not have seen this print! error?', kt, kblk , kico662 SUBROUTINE sbc_ice_lim ( kt, kblk ) ! Dummy routine 663 WRITE(*,*) 'sbc_ice_lim: You should not have seen this print! error?', kt, kblk 668 664 END SUBROUTINE sbc_ice_lim 669 665 #endif
Note: See TracChangeset
for help on using the changeset viewer.