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.
oce.F90 in branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC – NEMO

source: branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/oce.F90 @ 2598

Last change on this file since 2598 was 2590, checked in by trackstand2, 13 years ago

Merge branch 'dynamic_memory' into master-svn-dyn

  • Property svn:keywords set to Id
File size: 5.4 KB
Line 
1MODULE oce
2   !!======================================================================
3   !!                      ***  MODULE  oce  ***
4   !! Ocean        :  dynamics and active tracers defined in memory
5   !!======================================================================
6   !! History :  1.0  !  2002-11  (G. Madec)  F90: Free form and module
7   !!            3.1  !  2009-02  (G. Madec, M. Leclair)  pure z* coordinate
8   !!            3.3  !  2010-09  (C. Ethe) TRA-TRC merge: add ts, gtsu, gtsv 4D arrays
9   !!----------------------------------------------------------------------
10   USE par_oce      ! ocean parameters
11
12   IMPLICIT NONE
13   PRIVATE
14
15   PUBLIC oce_alloc ! routine called by nemo_init in nemogcm.F90
16
17   LOGICAL         , PUBLIC ::   l_traldf_rot = .FALSE.  !: rotated laplacian operator for lateral diffusion
18
19   !! dynamics and tracer fields                           ! before ! now    ! after   ! the after trends becomes the fields
20   !! --------------------------                           ! fields ! fields ! trends  ! only after tra_zdf and dyn_spg
21   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ub   ,  un    , ua      !: i-horizontal velocity        [m/s]
22   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   vb   ,  vn    , va      !: j-horizontal velocity        [m/s]
23   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::           wn              !: vertical velocity            [m/s]
24   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   rotb ,  rotn            !: relative vorticity           [s-1]
25   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   hdivb,  hdivn           !: horizontal divergence        [s-1]
26   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tb   ,  tn    , ta      !: potential temperature    [Celcius]
27   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sb   ,  sn    , sa      !: salinity                     [psu]
28   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: tsb  ,  tsn   , tsa     !: 4D T-S fields        [Celcius,psu]
29   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   rn2b ,  rn2             !: brunt-vaisala frequency**2   [s-2]
30   !
31   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   rhd    !: in situ density anomalie rhd=(rho-rau0)/rau0  [no units]
32   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   rhop   !: potential volumic mass                           [kg/m3]
33
34   !! free surface                                      !  before  !  now     !  after   !
35   !! ------------                                      !  fields  !  fields  !  trends  !
36   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   sshb   ,  sshn    ,  ssha    !: sea surface height at t-point [m]
37   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   sshu_b ,  sshu_n  ,  sshu_a  !: sea surface height at u-point [m]
38   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   sshv_b ,  sshv_n  ,  sshv_a  !: sea surface height at u-point [m]
39   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::             sshf_n             !: sea surface height at f-point [m]
40   !
41   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   spgu, spgv                   !: horizontal surface pressure gradient
42
43   !! interpolated gradient (only used in zps case)
44   !! ---------------------
45   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   gtsu, gtsv   !: horizontal gradient of T, S bottom u-point
46   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   gru , grv    !: horizontal gradient of rd at bottom u-point
47
48   !!----------------------------------------------------------------------
49   !! NEMO/OPA 3.3 , NEMO Consortium (2010)
50   !! $Id$
51   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
52   !!======================================================================
53CONTAINS
54
55   FUNCTION oce_alloc()
56     IMPLICIT none
57     INTEGER :: oce_alloc
58     INTEGER :: ierr(2)
59
60     ! The Allocate statement is broken up to prevent excessive
61     ! line lengths
62     ALLOCATE(ub(jpi,jpj,jpk), un(jpi,jpj,jpk), ua(jpi,jpj,jpk), &
63              vb(jpi,jpj,jpk), vn(jpi,jpj,jpk), va(jpi,jpj,jpk), &     
64              wn(jpi,jpj,jpk),                                   &
65              rotb(jpi,jpj,jpk),  rotn(jpi,jpj,jpk),             &   
66              hdivb(jpi,jpj,jpk), hdivn(jpi,jpj,jpk),            &
67              tb(jpi,jpj,jpk), tn(jpi,jpj,jpk), ta(jpi,jpj,jpk), &
68              sb(jpi,jpj,jpk), sn(jpi,jpj,jpk), sa(jpi,jpj,jpk), &     
69              tsb(jpi,jpj,jpk,jpts),tsn(jpi,jpj,jpk,jpts),tsa(jpi,jpj,jpk,jpts),&
70              rn2b(jpi,jpj,jpk), rn2(jpi,jpj,jpk),               &
71              !
72              Stat=ierr(1))
73
74     ALLOCATE(rhd(jpi,jpj,jpk),                                  &
75              rhop(jpi,jpj,jpk),                                 &
76              !
77              sshb(jpi,jpj),   sshn(jpi,jpj),   ssha(jpi,jpj),   &
78              sshu_b(jpi,jpj), sshu_n(jpi,jpj), sshu_a(jpi,jpj), &
79              sshv_b(jpi,jpj), sshv_n(jpi,jpj), sshv_a(jpi,jpj), &
80                               sshf_n(jpi,jpj),                  &
81              !
82              spgu(jpi,jpj),   spgv(jpi,jpj),                    &
83              !
84              gtsu(jpi,jpj,jpts), gtsv(jpi,jpj,jpts),            &
85              gru(jpi,jpj), grv(jpi,jpj),                        &
86              !
87              Stat=ierr(2))
88
89     oce_alloc = maxval(ierr)
90
91   END FUNCTION oce_alloc
92
93END MODULE oce
Note: See TracBrowser for help on using the repository browser.