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.
bdyice_lim2.F90 in branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/BDY – NEMO

source: branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/BDY/bdyice_lim2.F90 @ 3131

Last change on this file since 3131 was 3117, checked in by cetlod, 13 years ago

dev_NEMO_MERGE_2011: add in changes BDY updates

File size: 5.1 KB
Line 
1MODULE bdyice_lim2
2   !!======================================================================
3   !!                       ***  MODULE  bdyice_lim2  ***
4   !! Unstructured Open Boundary Cond. :  Flow Relaxation Scheme applied sea-ice (LIM2)
5   !!======================================================================
6   !!  History :  3.3  !  2010-09 (D. Storkey)  Original code
7   !!----------------------------------------------------------------------
8#if defined   key_bdy   &&   defined key_lim2
9   !!----------------------------------------------------------------------
10   !!   'key_bdy'            and                 Unstructured Open Boundary Conditions
11   !!   'key_lim2'                                                 LIM-2 sea ice model
12   !!----------------------------------------------------------------------
13   !!   bdy_ice_lim_2      : Application of open boundaries to ice
14   !!   bdy_ice_frs        : Application of Flow Relaxation Scheme
15   !!----------------------------------------------------------------------
16   USE oce             ! ocean dynamics and tracers variables
17   USE ice_2           ! LIM_2 ice variables
18   USE dom_oce         ! ocean space and time domain variables
19   USE bdy_oce         ! ocean open boundary conditions
20   USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
21   USE in_out_manager  ! write to numout file
22   USE lib_mpp         ! distributed memory computing
23   
24   IMPLICIT NONE
25   PRIVATE
26
27   PUBLIC   bdy_ice_lim_2    ! routine called in sbcmod
28
29   !!----------------------------------------------------------------------
30   !! NEMO/OPA 3.3 , NEMO Consortium (2010)
31   !! $Id: bdyice.F90 2715 2011-03-30 15:58:35Z rblod $
32   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
33   !!----------------------------------------------------------------------
34CONTAINS
35
36   SUBROUTINE bdy_ice_lim_2( kt )
37      !!----------------------------------------------------------------------
38      !!                  ***  SUBROUTINE bdy_ice_lim_2  ***
39      !!
40      !! ** Purpose : - Apply open boundary conditions for ice (LIM2)
41      !!
42      !!----------------------------------------------------------------------
43      INTEGER, INTENT( in ) :: kt     ! Main time step counter
44      !!
45      INTEGER               :: ib_bdy ! Loop index
46
47      DO ib_bdy=1, nb_bdy
48
49         SELECT CASE( nn_ice_lim2(ib_bdy) )
50         CASE(jp_none)
51            CYCLE
52         CASE(jp_frs)
53            CALL bdy_ice_frs( idx_bdy(ib_bdy), dta_idx(ib_bdy) )
54         CASE DEFAULT
55            CALL ctl_stop( 'bdy_tra : unrecognised option for open boundaries for T an S' )
56         END SELECT
57      ENDDO
58
59   END SUBROUTINE bdy_ice_lim_2
60
61   SUBROUTINE bdy_ice_frs( idx, dta )
62      !!------------------------------------------------------------------------------
63      !!                 ***  SUBROUTINE bdy_ice_frs  ***
64      !!                   
65      !! ** Purpose : Apply the Flow Relaxation Scheme for sea-ice fields in the case
66      !!              of unstructured open boundaries. Currently only tested for LIM2.
67      !!
68      !! Reference : Engedahl H., 1995: Use of the flow relaxation scheme in a three-
69      !!             dimensional baroclinic ocean model with realistic topography. Tellus, 365-382.
70      !!------------------------------------------------------------------------------
71      TYPE(OBC_INDEX), INTENT(in) ::   idx  ! OBC indices
72      TYPE(OBC_DATA),  INTENT(in) ::   dta  ! OBC external data
73      !!
74      INTEGER  ::   jb, jk, jgrd   ! dummy loop indices
75      INTEGER  ::   ii, ij         ! local scalar
76      REAL(wp) ::   zwgt, zwgt1    ! local scalar
77      !!------------------------------------------------------------------------------
78      !
79      jgrd = 1      ! Everything is at T-points here
80      !
81      DO jb = 1, idx%nblen(jgrd)
82         DO jk = 1, jpkm1
83            ii    = idx%nbi(jb,jgrd)
84            ij    = idx%nbj(jb,jgrd)
85            zwgt  = idx%nbw(jb,jgrd)
86            zwgt1 = 1.e0 - idx%nbw(jb,jgrd)
87            frld (ii,ij) = ( frld (ii,ij) * zwgt1 + dta%frld (jb) * zwgt ) * tmask(ii,ij,1)     ! Leads fraction
88            hicif(ii,ij) = ( hicif(ii,ij) * zwgt1 + dta%hicif(jb) * zwgt ) * tmask(ii,ij,1)     ! Ice depth
89            hsnif(ii,ij) = ( hsnif(ii,ij) * zwgt1 + dta%hsnif(jb) * zwgt ) * tmask(ii,ij,1)     ! Snow depth
90         END DO
91      END DO
92      CALL lbc_lnk( frld, 'T', 1. )                                         ! lateral boundary conditions
93      CALL lbc_lnk( hicif, 'T', 1. )   ;   CALL lbc_lnk( hsnif, 'T', 1. )
94      !     
95   END SUBROUTINE bdy_ice_frs
96#else
97   !!---------------------------------------------------------------------------------
98   !!   Default option                                                    Empty module
99   !!---------------------------------------------------------------------------------
100CONTAINS
101   SUBROUTINE bdy_ice_lim_2( kt )      ! Empty routine
102      WRITE(*,*) 'bdy_ice_frs: You should not have seen this print! error?', kt
103   END SUBROUTINE bdy_ice_lim_2
104#endif
105
106   !!=================================================================================
107END MODULE bdyice_lim2
Note: See TracBrowser for help on using the repository browser.