New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 2370 for branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90 – NEMO

Ignore:
Timestamp:
2010-11-10T08:48:54+01:00 (13 years ago)
Author:
gm
Message:

v3.3beta: ice-ocean stress at kt with VP & EVP (LIM-2 and -3)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90

    r2287 r2370  
    55   !!       &           covered area using LIM sea-ice model 
    66   !! 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 
    1112   !!---------------------------------------------------------------------- 
    1213#if defined key_lim3 
     
    2021   USE oce             ! ocean dynamics and tracers 
    2122   USE dom_oce         ! ocean space and time domain 
    22    USE lib_mpp 
     23   USE lib_mpp         ! MPP library 
    2324   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 
    2728 
    2829   USE sbc_oce         ! Surface boundary condition: ocean fields 
     
    3031   USE sbcblk_core     ! Surface boundary condition: CORE bulk 
    3132   USE sbcblk_clio     ! Surface boundary condition: CLIO bulk 
    32    USE albedo 
     33   USE albedo          ! ocean & ice albedo 
    3334 
    3435   USE phycst          ! Define parameters for the routines 
     
    4647   USE limvar          ! Ice variables switch 
    4748 
    48    USE lbclnk 
     49   USE lbclnk          ! lateral boundary condition - MPP link 
    4950   USE iom             ! I/O manager library 
    5051   USE in_out_manager  ! I/O manager 
     
    5657   PUBLIC sbc_ice_lim  ! routine called by sbcmod.F90 
    5758    
    58    CHARACTER(len=1) ::   cl_grid = 'C'     ! type of grid used in ice dynamics 
    59  
    6059   !! * Substitutions 
    6160#  include "domzgr_substitute.h90" 
     
    6463   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
    6564   !! $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   !!---------------------------------------------------------------------- 
    6967CONTAINS 
    7068 
    71    SUBROUTINE sbc_ice_lim( kt, kblk, kico ) 
     69   SUBROUTINE sbc_ice_lim( kt, kblk ) 
    7270      !!--------------------------------------------------------------------- 
    7371      !!                  ***  ROUTINE sbc_ice_lim  *** 
     
    9189      INTEGER, INTENT(in) ::   kt      ! ocean time step 
    9290      INTEGER, INTENT(in) ::   kblk    ! type of bulk (=3 CLIO, =4 CORE) 
    93       INTEGER, INTENT(in) ::   kico    ! ice-ocean stress treatment 
    9491      !! 
    9592      INTEGER  ::   jl                 ! loop index 
     
    142139               &                      qla_ice   , dqns_ice  , dqla_ice  ,               & 
    143140               &                      tprecip   , sprecip   ,                           & 
    144                &                      fr1_i0    , fr2_i0    , cl_grid, jpl  ) 
     141               &                      fr1_i0    , fr2_i0    , cp_ice_msh, jpl  ) 
    145142            !          
    146143         CASE( 4 )                                       ! CORE bulk formulation 
     
    149146               &                      qla_ice   , dqns_ice  , dqla_ice  ,               & 
    150147               &                      tprecip   , sprecip   ,                           & 
    151                &                      fr1_i0    , fr2_i0    , cl_grid, jpl  ) 
     148               &                      fr1_i0    , fr2_i0    , cp_ice_msh, jpl  ) 
    152149         END SELECT 
    153150 
     
    160157         !                                           ! Store previous ice values 
    161158!!gm : remark   old_...   should becomes ...b  as tn versus tb   
    162          old_a_i(:,:,:)   = a_i(:,:,:)     ! ice area 
    163          old_e_i(:,:,:,:) = e_i(:,:,:,:)   ! ice thermal energy 
    164          old_v_i(:,:,:)   = v_i(:,:,:)     ! ice volume 
    165          old_v_s(:,:,:)   = v_s(:,:,:)     ! snow volume  
    166          old_e_s(:,:,:,:) = e_s(:,:,:,:)   ! snow thermal energy 
    167          old_smv_i(:,:,:) = smv_i(:,:,:)   ! salt content 
    168          old_oa_i(:,:,:)  = oa_i(:,:,:)    ! areal age content 
     159         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 
    169166 
    170167         !                                           ! intialisation to zero    !!gm is it truly necessary ??? 
    171          d_a_i_thd(:,:,:)   = 0.e0 ; d_a_i_trp(:,:,:)   = 0.e0 
    172          d_v_i_thd(:,:,:)   = 0.e0 ; d_v_i_trp(:,:,:)   = 0.e0 
    173          d_e_i_thd(:,:,:,:) = 0.e0 ; d_e_i_trp(:,:,:,:) = 0.e0 
    174          d_v_s_thd(:,:,:)   = 0.e0 ; d_v_s_trp(:,:,:)   = 0.e0 
    175          d_e_s_thd(:,:,:,:) = 0.e0 ; d_e_s_trp(:,:,:,:) = 0.e0 
    176          d_smv_i_thd(:,:,:) = 0.e0 ; d_smv_i_trp(:,:,:) = 0.e0 
    177          d_oa_i_thd(:,:,:)  = 0.e0 ; d_oa_i_trp(:,:,:)  = 0.e0 
    178          ! 
    179          fseqv(:,:)    = 0.e0 
    180          fsbri(:,:)     = 0.e0     ; fsalt_res(:,:) = 0.e0 
     168         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 
    181178         fsalt_rpo(:,:) = 0.e0 
    182          fhmec(:,:)     = 0.e0     ; fhbri(:,:)    = 0.e0 
    183          fmmec(:,:)     = 0.e0     ; fheat_res(:,:) = 0.e0 
    184          fheat_rpo(:,:) = 0.e0     ; focea2D(:,:)  = 0.e0 
    185          fsup2D(:,:)    = 0.e0 
     179         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 
    186183         !  
    187          diag_sni_gr(:,:) = 0.e0   ; diag_lat_gr(:,:) = 0.e0 
    188          diag_bot_gr(:,:) = 0.e0   ; diag_dyn_gr(:,:) = 0.e0 
    189          diag_bot_me(:,:) = 0.e0   ; diag_sur_me(:,:) = 0.e0 
     184         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 
    190187         ! dynamical invariants 
    191          delta_i(:,:) = 0.e0       ; divu_i (:,:) = 0.e0       ;    shear_i(:,:) = 0.e0 
     188         delta_i(:,:) = 0.e0       ;   divu_i(:,:) = 0.e0       ;   shear_i(:,:) = 0.e0 
    192189 
    193190                          CALL lim_rst_opn( kt )     ! Open Ice restart file 
     
    196193         ! 
    197194#if ! defined key_c1d 
    198          ! Ice dynamics & transport (not in 1D case) 
     195                                                     ! Ice dynamics & transport (not in 1D case) 
    199196                          CALL lim_dyn( kt )              ! Ice dynamics    ( rheology/dynamics ) 
    200197                          CALL lim_trp( kt )              ! Ice transport   ( Advection/diffusion ) 
     
    204201                          CALL lim_itd_me                 ! Mechanical redistribution ! (ridging/rafting) 
    205202#endif 
    206          ! 
    207203         !                                           ! Ice thermodynamics  
    208204                          CALL lim_var_glo2eqv            ! equivalent variables 
     
    216212                          CALL lim_itd_th( kt )           !  Remap ice categories, lateral accretion  ! 
    217213         ! 
    218          !                                           ! Global variables update | 
     214         !                                           ! Global variables update 
    219215                          CALL lim_var_agg( 1 )           ! requested by limupdate 
    220216                          CALL lim_update                 ! Global variables update 
     
    223219         IF( ln_nicep )   CALL lim_prt_state( jiindx, jjindx, 2, ' - Final state - ' )   ! control print 
    224220         ! 
    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 
    229222         ! 
    230223         IF( ln_nicep )   CALL lim_prt_state( jiindx, jjindx, 3, ' - Final state lim_sbc - ' )   ! control print 
     
    239232         IF( ln_nicep )   CALL lim_ctl               ! alerts in case of model crash 
    240233         ! 
    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!!! 
    249245      ! 
    250246   END SUBROUTINE sbc_ice_lim 
     
    664660   !!---------------------------------------------------------------------- 
    665661CONTAINS 
    666    SUBROUTINE sbc_ice_lim ( kt, kblk, kico )     ! Dummy routine 
    667       WRITE(*,*) 'sbc_ice_lim: You should not have seen this print! error?', kt, kblk, kico 
     662   SUBROUTINE sbc_ice_lim ( kt, kblk )     ! Dummy routine 
     663      WRITE(*,*) 'sbc_ice_lim: You should not have seen this print! error?', kt, kblk 
    668664   END SUBROUTINE sbc_ice_lim 
    669665#endif 
Note: See TracChangeset for help on using the changeset viewer.