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.F90 in branches/DEV_r1986_BDY_updates/NEMO/OPA_SRC/BDY – NEMO

source: branches/DEV_r1986_BDY_updates/NEMO/OPA_SRC/BDY/bdyice.F90 @ 2093

Last change on this file since 2093 was 2093, checked in by davestorkey, 14 years ago

Main change set.

File size: 4.4 KB
Line 
1MODULE bdyice
2   !!=================================================================================
3   !!                       ***  MODULE  bdyice  ***
4   !! Ocean tracers:   Flow Relaxation Scheme of sea-ice fields on each open boundary
5   !!=================================================================================
6#if defined key_bdy && defined key_lim2
7   !!---------------------------------------------------------------------------------
8   !!   'key_bdy'      :                         Unstructured Open Boundary Conditions
9   !!---------------------------------------------------------------------------------
10   !!   bdy_ice        : Relaxation of tracers on unstructured open boundaries
11   !!---------------------------------------------------------------------------------
12   !! * Modules used
13   USE oce             ! ocean dynamics and tracers variables
14#if defined key_lim2
15   USE ice_2           ! LIM_2 ice variables
16#endif
17   USE dom_oce         ! ocean space and time domain variables
18   USE bdy_oce         ! ocean open boundary conditions
19   USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
20   USE in_out_manager  ! write to numout file
21   IMPLICIT NONE
22   PRIVATE
23
24   !! * Accessibility
25   PUBLIC bdy_ice     ! routine called in stp
26
27   !! * Substitutions
28
29   !!---------------------------------------------------------------------------------
30   !!   OPA 9.0 , LODYC-IPSL  (2003)
31   !!---------------------------------------------------------------------------------
32
33CONTAINS
34
35   SUBROUTINE bdy_ice( kt )
36      !!------------------------------------------------------------------------------
37      !!                 ***  SUBROUTINE bdy_ice  ***
38      !!                   
39      !! ** Purpose : Apply the Flow Relaxation Scheme for sea-ice fields in the 
40      !!              case of unstructured open boundaries. Currently only tested
41      !!              for LIM2.
42      !!
43      !! Reference : Engedahl H., 1995: Use of the flow relaxation scheme in
44      !!             a three-dimensional baroclinic ocean model with realistic
45      !!             topography. Tellus, 365-382.
46      !!  History :
47      !!   NEMO 3.3  !  2010-09 (D. Storkey) Original code
48      !!------------------------------------------------------------------------------
49      !! * Arguments
50      INTEGER, INTENT( in ) ::   kt
51
52      !! * Local declarations
53      REAL(wp) :: zwgt                       ! boundary weight
54      INTEGER ::   jb, jk, jgrd              ! dummy loop indices
55      INTEGER ::   ii, ij                    ! 2D addresses
56      !!------------------------------------------------------------------------------
57
58      jgrd=1 !: Everything is at T-points here
59 
60      IF(ln_bdy_ice_frs) THEN
61 
62        DO jb = 1, nblen(jgrd)
63          DO jk = 1, jpkm1
64            ii = nbi(jb,jgrd)
65            ij = nbj(jb,jgrd)
66            zwgt = nbw(jb,jgrd)
67
68            ! Leads fraction relaxation at the boundary   
69            frld(ii,ij) = ( frld(ii,ij)*(1.-zwgt)  +  frld_bdy(jb)*zwgt ) &
70                                                          * tmask(ii,ij,1)         
71
72            ! Ice depth relaxation at the boundary   
73            hicif(ii,ij) = ( hicif(ii,ij)*(1.-zwgt)  +  hicif_bdy(jb)*zwgt ) &
74                                                          * tmask(ii,ij,1)
75            ! Snow depth relaxation at the boundary   
76            hsnif(ii,ij) = ( hsnif(ii,ij)*(1.-zwgt)  +  hsnif_bdy(jb)*zwgt ) &
77                                                          * tmask(ii,ij,1)
78   
79          END DO
80        END DO
81
82        CALL lbc_lnk( frld, 'T', 1. )  ! Boundary points should be updated
83        CALL lbc_lnk( hicif, 'T', 1. ) !
84        CALL lbc_lnk( hsnif, 'T', 1. ) !
85     
86      ELSE
87        ! we have called this routine without ln_bdy_ice_frs not set
88        IF(kt .EQ. nit000) THEN
89          WRITE(numout,*) 'E R R O R (possible) called bdy_ice when'
90          WRITE(numout,*) 'ln_bdy_ice_frs is false?'
91        ENDIF
92      ENDIF ! if ln_bdy_ice_frs
93     
94   END SUBROUTINE bdy_ice
95#else
96   !!---------------------------------------------------------------------------------
97   !!   Default option                                                    Empty module
98   !!---------------------------------------------------------------------------------
99CONTAINS
100   SUBROUTINE bdy_ice( kt )      ! Empty routine
101   END SUBROUTINE bdy_ice
102#endif
103
104   !!=================================================================================
105END MODULE bdyice
Note: See TracBrowser for help on using the repository browser.