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.
zdf_oce_tam.F90 in branches/2012/dev_r3604_LEGI8_TAM/NEMOGCM/NEMO/OPATAM_SRC/ZDF – NEMO

source: branches/2012/dev_r3604_LEGI8_TAM/NEMOGCM/NEMO/OPATAM_SRC/ZDF/zdf_oce_tam.F90 @ 3611

Last change on this file since 3611 was 3611, checked in by pabouttier, 11 years ago

Add TAM code and ORCA2_TAM configuration - see Ticket #1007

  • Property svn:executable set to *
File size: 3.6 KB
Line 
1MODULE zdf_oce_tam
2   !!======================================================================
3   !!              ***  MODULE  zdf_oce  ***
4   !! Ocean physics : define vertical mixing variables
5   !!=====================================================================
6   !! history :  1.0  !  2002-06  (G. Madec) Original code
7   !!            3.2  !  2009-07  (G.Madec) addition of avm
8   !!----------------------------------------------------------------------
9   USE par_oce        ! ocean parameters
10   USE in_out_manager ! I/O manager
11   USE lib_mpp        ! MPP library
12
13   IMPLICIT NONE
14   PRIVATE
15
16   PUBLIC  zdf_oce_alloc_tam    ! Called in nemogcm.F90
17
18   REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:)   ::   bfrua_ad, bfrva_ad   !: Bottom friction coefficients set in zdfbfr
19   REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:)   ::   bfrua_tl, bfrva_tl   !: Bottom friction coefficients set in zdfbfr
20   LOGICAL, PRIVATE, SAVE :: ll_alloctl = .FALSE.
21   LOGICAL, PRIVATE, SAVE :: ll_allocad = .FALSE.
22   !!----------------------------------------------------------------------
23   !! NEMO/OPA 4.0 , NEMO Consortium (2011)
24   !! $Id$
25   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
26   !!----------------------------------------------------------------------
27CONTAINS
28
29   INTEGER FUNCTION zdf_oce_alloc_tam( kmode )
30      !!----------------------------------------------------------------------
31      !!            *** FUNCTION zdf_oce_alloc ***
32      !!----------------------------------------------------------------------
33      !
34      INTEGER, OPTIONAL :: kmode
35      INTEGER :: jmode
36      INTEGER, DIMENSION(2) :: ierr
37
38      IF ( PRESENT( kmode ) ) THEN
39         jmode = kmode
40      ELSE
41         jmode = 0
42      END IF
43
44
45      IF ( ( jmode == 0 ) .OR. ( jmode == 1 ) .AND. ( .NOT. ll_alloctl ) ) THEN
46         ALLOCATE(bfrua_tl(jpi,jpj) ,    &
47            &     bfrva_tl(jpi,jpj) , STAT =  ierr(1) )
48         ll_alloctl = .TRUE.
49      END IF
50      IF ( ( jmode == 0 ) .OR. ( jmode == 2 ) .AND. ( .NOT. ll_allocad ) ) THEN
51         ALLOCATE(bfrua_ad(jpi,jpj) ,    &
52            &     bfrva_ad(jpi,jpj) , STAT =  ierr(2) )
53         ll_allocad = .TRUE.
54      END IF
55      zdf_oce_alloc_tam = SUM( ierr )
56         !
57      IF( lk_mpp                 )   CALL mpp_sum( zdf_oce_alloc_tam ) 
58      IF( zdf_oce_alloc_tam /= 0 )   CALL ctl_warn('zdf_oce_alloc_tam: failed to allocate arrays')
59      !
60   END FUNCTION zdf_oce_alloc_tam
61
62   INTEGER FUNCTION zdf_oce_dealloc_tam( kmode )
63      !!----------------------------------------------------------------------
64      !!            *** FUNCTION zdf_oce_alloc ***
65      !!----------------------------------------------------------------------
66      !
67      INTEGER, OPTIONAL :: kmode
68      INTEGER :: jmode
69      INTEGER, DIMENSION(2) :: ierr
70
71      IF ( PRESENT( kmode ) ) THEN
72         jmode = kmode
73      ELSE
74         jmode = 0
75      END IF
76
77
78      IF ( ( jmode == 0 ) .OR. ( jmode == 1 ) .AND. ( ll_alloctl) ) THEN
79         DEALLOCATE(bfrua_tl, bfrva_tl, STAT =  ierr(1) )
80         ll_alloctl = .FALSE.
81      END IF
82      IF ( ( jmode == 0 ) .OR. ( jmode == 2 ) .AND. ( ll_allocad) ) THEN
83         DEALLOCATE(bfrua_ad, bfrva_ad, STAT =  ierr(2) )
84         ll_allocad = .FALSE.
85      END IF
86      zdf_oce_dealloc_tam = SUM( ierr )
87         !
88      IF( lk_mpp                 )   CALL mpp_sum( zdf_oce_dealloc_tam ) 
89      IF( zdf_oce_dealloc_tam /= 0 )   CALL ctl_warn('zdf_oce_dealloc_tam: failed to deallocate arrays')
90      !
91   END FUNCTION zdf_oce_dealloc_tam
92
93   !!======================================================================
94END MODULE zdf_oce_tam
Note: See TracBrowser for help on using the repository browser.