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_2.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_2.F90

    r2319 r2370  
    22   !!====================================================================== 
    33   !!                       ***  MODULE  sbcice_lim_2  *** 
    4    !! Surface module :  update surface ocean boundary condition over ice 
    5    !!                   covered area using LIM sea-ice model 
    6    !! Sea-Ice model  :  LIM 2.0 Sea ice model time-stepping 
     4   !! Surface module :  update surface ocean boundary condition over ice covered area using LIM sea-ice model 
     5   !! Sea-Ice model  :  LIM-2 Sea ice model time-stepping 
    76   !!====================================================================== 
    87   !! History :  1.0   !  06-2006  (G. Madec)  from icestp_2.F90 
     
    1211#if defined key_lim2 
    1312   !!---------------------------------------------------------------------- 
    14    !!   'key_lim2' :                                  LIM 2.0 sea-ice model 
    15    !!---------------------------------------------------------------------- 
    16    !!   sbc_ice_lim_2  : sea-ice model time-stepping and 
    17    !!                    update ocean sbc over ice-covered area 
    18    !!---------------------------------------------------------------------- 
    19    USE oce             ! ocean dynamics and tracers 
    20    USE dom_oce         ! ocean space and time domain 
    21    USE lib_mpp 
     13   !!   'key_lim2' :                                    LIM-2 sea-ice model 
     14   !!---------------------------------------------------------------------- 
     15   !!   sbc_ice_lim_2   : sea-ice model time-stepping and update ocean sbc over ice-covered area 
     16   !!---------------------------------------------------------------------- 
     17   USE oce              ! ocean dynamics and tracers 
     18   USE dom_oce          ! ocean space and time domain 
    2219   USE ice_2 
    2320   USE par_ice_2 
     
    2522   USE dom_ice_2 
    2623 
    27    USE sbc_oce         ! Surface boundary condition: ocean fields 
    28    USE sbc_ice         ! Surface boundary condition: ice   fields 
    29    USE sbcblk_core     ! Surface boundary condition: CORE bulk 
    30    USE sbcblk_clio     ! Surface boundary condition: CLIO bulk 
    31    USE sbccpl          ! Surface boundary condition: coupled interface 
     24   USE sbc_oce          ! Surface boundary condition: ocean fields 
     25   USE sbc_ice          ! Surface boundary condition: ice   fields 
     26   USE sbcblk_core      ! Surface boundary condition: CORE bulk 
     27   USE sbcblk_clio      ! Surface boundary condition: CLIO bulk 
     28   USE sbccpl           ! Surface boundary condition: coupled interface 
    3229   USE albedo 
    3330 
    34    USE phycst          ! Define parameters for the routines 
    35    USE eosbn2          ! equation of state 
     31   USE phycst           ! Define parameters for the routines 
     32   USE eosbn2           ! equation of state 
    3633   USE limdyn_2 
    3734   USE limtrp_2 
    3835   USE limdmp_2 
    3936   USE limthd_2 
    40    USE limsbc_2        ! sea surface boundary condition 
     37   USE limsbc_2         ! sea surface boundary condition 
    4138   USE limdia_2 
    4239   USE limwri_2 
    4340   USE limrst_2 
    4441 
    45    USE lbclnk 
    46    USE iom             ! I/O manager library 
    47    USE in_out_manager  ! I/O manager 
    48    USE prtctl          ! Print control 
     42   USE lbclnk           ! lateral boundary condition - MPP link 
     43   USE lib_mpp          ! MPP library 
     44   USE iom              ! I/O manager library 
     45   USE in_out_manager   ! I/O manager 
     46   USE prtctl           ! Print control 
    4947 
    5048   IMPLICIT NONE 
     
    5957   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
    6058   !! $Id$ 
    61    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    62    !!---------------------------------------------------------------------- 
    63  
     59   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     60   !!---------------------------------------------------------------------- 
    6461CONTAINS 
    6562 
     
    9794         IF(lwp) WRITE(numout,*) 'sbc_ice_lim_2 : update ocean surface boudary condition'  
    9895         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~   via Louvain la Neuve Ice Model (LIM) time stepping' 
    99  
     96         ! 
    10097         CALL ice_init_2 
    101  
    10298      ENDIF 
    10399 
    104       IF( MOD( kt-1, nn_fsbc ) == 0 ) THEN 
    105          ! 
     100      !                                        !----------------------! 
     101      IF( MOD( kt-1, nn_fsbc ) == 0 ) THEN     !  Ice time-step only  ! 
     102         !                                     !----------------------! 
     103         !  Bulk Formulea ! 
     104         !----------------! 
    106105         ! ... mean surface ocean current at ice dynamics point 
    107          !     B-grid dynamics :  I-point  
    108          DO jj = 2, jpj 
    109             DO ji = 2, jpi   ! B grid : no vector opt. 
    110                u_oce(ji,jj) = 0.5 * ( ssu_m(ji-1,jj  ) + ssu_m(ji-1,jj-1) ) * tmu(ji,jj) 
    111                v_oce(ji,jj) = 0.5 * ( ssv_m(ji  ,jj-1) + ssv_m(ji-1,jj-1) ) * tmu(ji,jj) 
     106         SELECT CASE( cp_ice_msh ) 
     107         CASE( 'I' )                  !== B-grid ice dynamics :   I-point (i.e. F-point with sea-ice indexation) 
     108            DO jj = 2, jpj 
     109               DO ji = 2, jpi   ! NO vector opt. possible 
     110                  u_oce(ji,jj) = 0.5_wp * ( ssu_m(ji-1,jj  ) + ssu_m(ji-1,jj-1) ) * tmu(ji,jj) 
     111                  v_oce(ji,jj) = 0.5_wp * ( ssv_m(ji  ,jj-1) + ssv_m(ji-1,jj-1) ) * tmu(ji,jj) 
     112               END DO 
    112113            END DO 
    113          END DO 
    114          CALL lbc_lnk( u_oce, 'I', -1. )   ! I-point (i.e. F-point with ice indices) 
    115          CALL lbc_lnk( v_oce, 'I', -1. )   ! I-point (i.e. F-point with ice indices) 
     114            CALL lbc_lnk( u_oce, 'I', -1. )   ! I-point (i.e. F-point with ice indices) 
     115            CALL lbc_lnk( v_oce, 'I', -1. )   ! I-point (i.e. F-point with ice indices) 
     116            ! 
     117         CASE( 'C' )                  !== C-grid ice dynamics :   U & V-points (same as ocean) 
     118            u_oce(:,:) = ssu_m(:,:)                     ! mean surface ocean current at ice velocity point 
     119            v_oce(:,:) = ssv_m(:,:) 
     120            ! 
     121         END SELECT 
    116122 
    117123         ! ... masked sea surface freezing temperature [Kelvin] (set to rt0 over land) 
     
    142148               &                      qla_ice    , dqns_ice   , dqla_ice   ,            & 
    143149               &                      tprecip    , sprecip    ,                         & 
    144                &                      fr1_i0     , fr2_i0     , cl_grid    , jpl  ) 
     150               &                      fr1_i0     , fr2_i0     , cp_ice_msh , jpl  ) 
    145151 
    146152         CASE( 4 )           ! CORE bulk formulation 
     
    149155               &                      qla_ice    , dqns_ice   , dqla_ice   ,            & 
    150156               &                      tprecip    , sprecip    ,                         & 
    151                &                      fr1_i0     , fr2_i0     , cl_grid    , jpl  ) 
     157               &                      fr1_i0     , fr2_i0     , cp_ice_msh , jpl  ) 
    152158         CASE( 5 )           ! Coupled formulation : atmosphere-ice stress only (fluxes provided after ice dynamics) 
    153159            CALL sbc_cpl_ice_tau( utau_ice , vtau_ice ) 
     
    170176         !  Ice model step  ! 
    171177         ! ---------------- ! 
    172          numit = numit + nn_fsbc                                             !Ice model time step 
    173  
    174                                         CALL lim_rst_opn_2  ( kt )           ! Open Ice restart file 
     178         numit = numit + nn_fsbc                           ! Ice model time step 
     179 
     180                           CALL lim_rst_opn_2  ( kt )  ! Open Ice restart file 
    175181#if ! defined key_c1d 
    176             ! Ice dynamics & transport (not in 1D case) 
    177                                         CALL lim_dyn_2      ( kt )           ! Ice dynamics    ( rheology/dynamics ) 
    178                                         CALL lim_trp_2      ( kt )           ! Ice transport   ( Advection/diffusion ) 
    179             IF( ln_limdmp )             CALL lim_dmp_2      ( kt )           ! Ice damping  
     182                                                       ! Ice dynamics & transport (except in 1D case) 
     183                           CALL lim_dyn_2      ( kt )      ! Ice dynamics    ( rheology/dynamics ) 
     184                           CALL lim_trp_2      ( kt )      ! Ice transport   ( Advection/diffusion ) 
     185         IF( ln_limdmp )   CALL lim_dmp_2      ( kt )      ! Ice damping  
    180186#endif 
    181187#if defined key_coupled 
    182          IF( ksbc == 5    )             CALL sbc_cpl_ice_flx( reshape( frld, (/jpi,jpj,1/) ),        & 
    183       &                                                       qns_tot, qns_ice, qsr_tot , qsr_ice,   & 
    184       &                                                       emp_tot, emp_ice, dqns_ice, sprecip,   & 
     188         !                                             ! Ice surface fluxes in coupled mode  
     189         IF( ksbc == 5 )   CALL sbc_cpl_ice_flx( reshape( frld, (/jpi,jpj,1/) ),                 & 
     190      &                                                   qns_tot, qns_ice, qsr_tot , qsr_ice,   & 
     191      &                                                   emp_tot, emp_ice, dqns_ice, sprecip,   & 
    185192      !                                      optional arguments, used only in 'mixed oce-ice' case 
    186       &                                                       palbi = zalb_ice_cs, psst = sst_m, pist = sist ) 
     193      &                                                   palbi = zalb_ice_cs, psst = sst_m, pist = sist ) 
    187194#endif 
    188                                         CALL lim_thd_2      ( kt )      ! Ice thermodynamics  
    189                                         CALL lim_sbc_2      ( kt )      ! Ice/Ocean Mass & Heat fluxes  
     195                           CALL lim_thd_2      ( kt )      ! Ice thermodynamics  
     196                           CALL lim_sbc_flx_2  ( kt )      ! update surface ocean mass, heat & salt fluxes  
    190197 
    191198         IF( ( MOD( kt+nn_fsbc-1, ninfo ) == 0 .OR. ntmoy == 1 ) .AND. .NOT. lk_mpp )   & 
    192             &                           CALL lim_dia_2      ( kt )      ! Ice Diagnostics 
     199            &              CALL lim_dia_2      ( kt )      ! Ice Diagnostics 
    193200# if ! defined key_iomput 
    194                                         CALL lim_wri_2      ( kt )      ! Ice outputs 
     201                           CALL lim_wri_2      ( kt )      ! Ice outputs 
    195202# endif 
    196          IF( lrst_ice )                 CALL lim_rst_write_2( kt )      ! Ice restart file 
     203         IF( lrst_ice  )   CALL lim_rst_write_2( kt )      ! Ice restart file 
    197204         ! 
    198       ENDIF 
     205      ENDIF                                    ! End sea-ice time step only 
     206      ! 
     207      !                                        !--------------------------! 
     208      !                                        !  at all ocean time step  ! 
     209      !                                        !--------------------------! 
     210      !                                                
     211      !                                              ! Update surface ocean stresses (only in ice-dynamic case) 
     212      !                                                   ! otherwise the atm.-ocean stresses are used everywhere 
     213      IF( ln_limdyn    )   CALL lim_sbc_tau_2( kt, ub(:,:,1), vb(:,:,1) )  ! using before instantaneous surf. currents 
    199214      ! 
    200215   END SUBROUTINE sbc_ice_lim_2 
Note: See TracChangeset for help on using the changeset viewer.