Changeset 2528 for trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90
- Timestamp:
- 2010-12-27T18:33:53+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90
r1715 r2528 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 … … 19 20 !!---------------------------------------------------------------------- 20 21 USE oce ! ocean dynamics and tracers 21 USE c1d ! 1d configuration22 22 USE dom_oce ! ocean space and time domain 23 USE lib_mpp 23 USE lib_mpp ! MPP library 24 24 USE par_ice ! sea-ice parameters 25 USE ice 26 USE iceini 27 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 28 28 29 29 USE sbc_oce ! Surface boundary condition: ocean fields … … 31 31 USE sbcblk_core ! Surface boundary condition: CORE bulk 32 32 USE sbcblk_clio ! Surface boundary condition: CLIO bulk 33 USE albedo 33 USE albedo ! ocean & ice albedo 34 34 35 35 USE phycst ! Define parameters for the routines … … 47 47 USE limvar ! Ice variables switch 48 48 49 USE lbclnk 49 USE c1d ! 1D vertical configuration 50 USE lbclnk ! lateral boundary condition - MPP link 50 51 USE iom ! I/O manager library 51 52 USE in_out_manager ! I/O manager … … 57 58 PUBLIC sbc_ice_lim ! routine called by sbcmod.F90 58 59 59 CHARACTER(len=1) :: cl_grid = 'C' ! type of grid used in ice dynamics60 61 60 !! * Substitutions 62 61 # include "domzgr_substitute.h90" 63 62 # include "vectopt_loop_substitute.h90" 64 63 !!---------------------------------------------------------------------- 65 !! NEMO/ LIM 3.0 , UCL-LOCEAN-IPSL (2008)64 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 66 65 !! $Id$ 67 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 68 !!---------------------------------------------------------------------- 69 66 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 67 !!---------------------------------------------------------------------- 70 68 CONTAINS 71 69 72 SUBROUTINE sbc_ice_lim( kt, kblk , kico)70 SUBROUTINE sbc_ice_lim( kt, kblk ) 73 71 !!--------------------------------------------------------------------- 74 72 !! *** ROUTINE sbc_ice_lim *** … … 92 90 INTEGER, INTENT(in) :: kt ! ocean time step 93 91 INTEGER, INTENT(in) :: kblk ! type of bulk (=3 CLIO, =4 CORE) 94 INTEGER, INTENT(in) :: kico ! ice-ocean stress treatment95 92 !! 96 93 INTEGER :: jl ! loop index … … 143 140 & qla_ice , dqns_ice , dqla_ice , & 144 141 & tprecip , sprecip , & 145 & fr1_i0 , fr2_i0 , c l_grid, jpl )142 & fr1_i0 , fr2_i0 , cp_ice_msh, jpl ) 146 143 ! 147 144 CASE( 4 ) ! CORE bulk formulation … … 150 147 & qla_ice , dqns_ice , dqla_ice , & 151 148 & tprecip , sprecip , & 152 & fr1_i0 , fr2_i0 , c l_grid, jpl )149 & fr1_i0 , fr2_i0 , cp_ice_msh, jpl ) 153 150 END SELECT 154 151 … … 161 158 ! ! Store previous ice values 162 159 !!gm : remark old_... should becomes ...b as tn versus tb 163 old_a_i (:,:,:) = a_i(:,:,:) ! ice area164 old_e_i (:,:,:,:) = e_i(:,:,:,:) ! ice thermal energy165 old_v_i (:,:,:) = v_i(:,:,:) ! ice volume166 old_v_s (:,:,:) = v_s(:,:,:) ! snow volume167 old_e_s (:,:,:,:) = e_s(:,:,:,:) ! snow thermal energy168 old_smv_i(:,:,:) = smv_i(:,:,:)! salt content169 old_oa_i (:,:,:) = oa_i(:,:,:)! areal age content160 old_a_i (:,:,:) = a_i (:,:,:) ! ice area 161 old_e_i (:,:,:,:) = e_i (:,:,:,:) ! ice thermal energy 162 old_v_i (:,:,:) = v_i (:,:,:) ! ice volume 163 old_v_s (:,:,:) = v_s (:,:,:) ! snow volume 164 old_e_s (:,:,:,:) = e_s (:,:,:,:) ! snow thermal energy 165 old_smv_i(:,:,:) = smv_i(:,:,:) ! salt content 166 old_oa_i (:,:,:) = oa_i (:,:,:) ! areal age content 170 167 171 168 ! ! intialisation to zero !!gm is it truly necessary ??? 172 d_a_i_thd (:,:,:) = 0.e0 ; d_a_i_trp(:,:,:) = 0.e0173 d_v_i_thd (:,:,:) = 0.e0 ; d_v_i_trp(:,:,:) = 0.e0174 d_e_i_thd (:,:,:,:) = 0.e0 ; d_e_i_trp(:,:,:,:) = 0.e0175 d_v_s_thd (:,:,:) = 0.e0 ; d_v_s_trp(:,:,:) = 0.e0176 d_e_s_thd (:,:,:,:) = 0.e0 ; d_e_s_trp(:,:,:,:) = 0.e0177 d_smv_i_thd(:,:,:) = 0.e0 ; d_smv_i_trp(:,:,:)= 0.e0178 d_oa_i_thd (:,:,:) = 0.e0 ; d_oa_i_trp(:,:,:)= 0.e0179 ! 180 fseqv (:,:)= 0.e0181 fsbri (:,:) = 0.e0 ;fsalt_res(:,:) = 0.e0169 d_a_i_thd (:,:,:) = 0.e0 ; d_a_i_trp (:,:,:) = 0.e0 170 d_v_i_thd (:,:,:) = 0.e0 ; d_v_i_trp (:,:,:) = 0.e0 171 d_e_i_thd (:,:,:,:) = 0.e0 ; d_e_i_trp (:,:,:,:) = 0.e0 172 d_v_s_thd (:,:,:) = 0.e0 ; d_v_s_trp (:,:,:) = 0.e0 173 d_e_s_thd (:,:,:,:) = 0.e0 ; d_e_s_trp (:,:,:,:) = 0.e0 174 d_smv_i_thd(:,:,:) = 0.e0 ; d_smv_i_trp(:,:,:) = 0.e0 175 d_oa_i_thd (:,:,:) = 0.e0 ; d_oa_i_trp (:,:,:) = 0.e0 176 ! 177 fseqv (:,:) = 0.e0 178 fsbri (:,:) = 0.e0 ; fsalt_res(:,:) = 0.e0 182 179 fsalt_rpo(:,:) = 0.e0 183 fhmec (:,:) = 0.e0 ; fhbri(:,:)= 0.e0184 fmmec (:,:) = 0.e0 ;fheat_res(:,:) = 0.e0185 fheat_rpo(:,:) = 0.e0 ; focea2D(:,:)= 0.e0186 fsup2D (:,:)= 0.e0180 fhmec (:,:) = 0.e0 ; fhbri (:,:) = 0.e0 181 fmmec (:,:) = 0.e0 ; fheat_res(:,:) = 0.e0 182 fheat_rpo(:,:) = 0.e0 ; focea2D (:,:) = 0.e0 183 fsup2D (:,:) = 0.e0 187 184 ! 188 diag_sni_gr(:,:) = 0.e0 ; diag_lat_gr(:,:) = 0.e0189 diag_bot_gr(:,:) = 0.e0 ; diag_dyn_gr(:,:) = 0.e0190 diag_bot_me(:,:) = 0.e0 ; diag_sur_me(:,:) = 0.e0185 diag_sni_gr(:,:) = 0.e0 ; diag_lat_gr(:,:) = 0.e0 186 diag_bot_gr(:,:) = 0.e0 ; diag_dyn_gr(:,:) = 0.e0 187 diag_bot_me(:,:) = 0.e0 ; diag_sur_me(:,:) = 0.e0 191 188 ! dynamical invariants 192 delta_i(:,:) = 0.e0 ; divu_i (:,:) = 0.e0 ;shear_i(:,:) = 0.e0189 delta_i(:,:) = 0.e0 ; divu_i(:,:) = 0.e0 ; shear_i(:,:) = 0.e0 193 190 194 191 CALL lim_rst_opn( kt ) ! Open Ice restart file … … 196 193 IF( ln_nicep ) CALL lim_prt_state( jiindx, jjindx, 1, ' - Beginning the time step - ' ) ! control print 197 194 ! 198 IF( .NOT. lk_c1d ) THEN ! Ice dynamics & transport (not in 1D case) 195 IF( .NOT. lk_c1d ) THEN 196 ! Ice dynamics & transport (not in 1D case) 199 197 CALL lim_dyn( kt ) ! Ice dynamics ( rheology/dynamics ) 200 198 CALL lim_trp( kt ) ! Ice transport ( Advection/diffusion ) … … 204 202 CALL lim_itd_me ! Mechanical redistribution ! (ridging/rafting) 205 203 ENDIF 206 !207 204 ! ! Ice thermodynamics 208 205 CALL lim_var_glo2eqv ! equivalent variables … … 216 213 CALL lim_itd_th( kt ) ! Remap ice categories, lateral accretion ! 217 214 ! 218 ! ! Global variables update |215 ! ! Global variables update 219 216 CALL lim_var_agg( 1 ) ! requested by limupdate 220 217 CALL lim_update ! Global variables update … … 223 220 IF( ln_nicep ) CALL lim_prt_state( jiindx, jjindx, 2, ' - Final state - ' ) ! control print 224 221 ! 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 222 CALL lim_sbc_flx( kt ) ! Update surface ocean mass, heat and salt fluxes 229 223 ! 230 224 IF( ln_nicep ) CALL lim_prt_state( jiindx, jjindx, 3, ' - Final state lim_sbc - ' ) ! control print … … 239 233 IF( ln_nicep ) CALL lim_ctl ! alerts in case of model crash 240 234 ! 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!!! 235 ENDIF ! End sea-ice time step only 236 237 ! !--------------------------! 238 ! ! at all ocean time step ! 239 ! !--------------------------! 240 ! 241 ! ! Update surface ocean stresses (only in ice-dynamic case) 242 ! ! otherwise the atm.-ocean stresses are used everywhere 243 IF( ln_limdyn ) CALL lim_sbc_tau( kt, ub(:,:,1), vb(:,:,1) ) ! using before instantaneous surf. currents 244 245 !!gm remark, the ocean-ice stress is not saved in ice diag call above ..... find a solution!!! 249 246 ! 250 247 END SUBROUTINE sbc_ice_lim … … 664 661 !!---------------------------------------------------------------------- 665 662 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 , kico663 SUBROUTINE sbc_ice_lim ( kt, kblk ) ! Dummy routine 664 WRITE(*,*) 'sbc_ice_lim: You should not have seen this print! error?', kt, kblk 668 665 END SUBROUTINE sbc_ice_lim 669 666 #endif
Note: See TracChangeset
for help on using the changeset viewer.