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/2011/dev_r2787_LOCEAN3_TRA_TRP/NEMOGCM/NEMO/OPA_SRC/BDY – NEMO

source: branches/2011/dev_r2787_LOCEAN3_TRA_TRP/NEMOGCM/NEMO/OPA_SRC/BDY/bdyice.F90 @ 2789

Last change on this file since 2789 was 2715, checked in by rblod, 13 years ago

First attempt to put dynamic allocation on the trunk

  • Property svn:keywords set to Id
File size: 4.4 KB
Line 
1MODULE bdyice
2   !!======================================================================
3   !!                       ***  MODULE  bdyice  ***
4   !! Unstructured Open Boundary Cond. :  Flow Relaxation Scheme applied sea-ice
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_frs        : Relaxation of tracers on unstructured open boundaries
14   !!----------------------------------------------------------------------
15   USE oce             ! ocean dynamics and tracers variables
16   USE ice_2           ! LIM_2 ice variables
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   USE lib_mpp         ! distributed memory computing
22   
23   IMPLICIT NONE
24   PRIVATE
25
26   PUBLIC   bdy_ice_frs    ! routine called in sbcmod
27
28   !!----------------------------------------------------------------------
29   !! NEMO/OPA 3.3 , NEMO Consortium (2010)
30   !! $Id$
31   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
32   !!----------------------------------------------------------------------
33CONTAINS
34
35   SUBROUTINE bdy_ice_frs( kt )
36      !!------------------------------------------------------------------------------
37      !!                 ***  SUBROUTINE bdy_ice_frs  ***
38      !!                   
39      !! ** Purpose : Apply the Flow Relaxation Scheme for sea-ice fields in the case
40      !!              of unstructured open boundaries. Currently only tested for LIM2.
41      !!
42      !! Reference : Engedahl H., 1995: Use of the flow relaxation scheme in a three-
43      !!             dimensional baroclinic ocean model with realistic topography. Tellus, 365-382.
44      !!------------------------------------------------------------------------------
45      INTEGER, INTENT( in ) ::   kt   ! model time step index
46      !!
47      INTEGER  ::   jb, jk, jgrd   ! dummy loop indices
48      INTEGER  ::   ii, ij         ! local scalar
49      REAL(wp) ::   zwgt, zwgt1    ! local scalar
50      !!------------------------------------------------------------------------------
51      !
52      jgrd = 1      ! Everything is at T-points here
53      !
54      IF( ln_ice_frs ) THEN     ! update ice fields by relaxation at the boundary
55         DO jb = 1, nblen(jgrd)
56            DO jk = 1, jpkm1
57               ii    = nbi(jb,jgrd)
58               ij    = nbj(jb,jgrd)
59               zwgt  = nbw(jb,jgrd)
60               zwgt1 = 1.e0 - nbw(jb,jgrd)
61               frld (ii,ij) = ( frld (ii,ij) * zwgt1 + frld_bdy (jb) * zwgt ) * tmask(ii,ij,1)     ! Leads fraction
62               hicif(ii,ij) = ( hicif(ii,ij) * zwgt1 + hicif_bdy(jb) * zwgt ) * tmask(ii,ij,1)     ! Ice depth
63               hsnif(ii,ij) = ( hsnif(ii,ij) * zwgt1 + hsnif_bdy(jb) * zwgt ) * tmask(ii,ij,1)     ! Snow depth
64            END DO
65         END DO
66         CALL lbc_lnk( frld, 'T', 1. )                                         ! lateral boundary conditions
67         CALL lbc_lnk( hicif, 'T', 1. )   ;   CALL lbc_lnk( hsnif, 'T', 1. )
68         !
69      ELSE                          ! we have called this routine without ln_ice_frs not set
70         IF( kt == nit000 )   CALL ctl_warn( 'E R R O R (possible) called bdy_ice_frs when ln_ice_frs is false?' )
71      ENDIF
72      !     
73   END SUBROUTINE bdy_ice_frs
74#else
75   !!---------------------------------------------------------------------------------
76   !!   Default option                                                    Empty module
77   !!---------------------------------------------------------------------------------
78CONTAINS
79   SUBROUTINE bdy_ice_frs( kt )      ! Empty routine
80      WRITE(*,*) 'bdy_ice_frs: You should not have seen this print! error?', kt
81   END SUBROUTINE bdy_ice_frs
82#endif
83
84   !!=================================================================================
85END MODULE bdyice
Note: See TracBrowser for help on using the repository browser.