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.
flo_oce.F90 in branches/2011/DEV_r2739_STFC_dCSE/NEMOGCM/NEMO/OPA_SRC/FLO – NEMO

source: branches/2011/DEV_r2739_STFC_dCSE/NEMOGCM/NEMO/OPA_SRC/FLO/flo_oce.F90 @ 3211

Last change on this file since 3211 was 3211, checked in by spickles2, 13 years ago

Stephen Pickles, 11 Dec 2011

Commit to bring the rest of the DCSE NEMO development branch
in line with the latest development version. This includes
array index re-ordering of all OPA_SRC/.

  • Property svn:keywords set to Id
File size: 3.7 KB
Line 
1MODULE flo_oce
2   !!======================================================================
3   !!                     ***  MODULE flo_oce  ***
4   !! lagrangian floats :   define in memory all floats parameters and variables
5   !!======================================================================
6   !! History :   OPA  ! 1999-10  (CLIPPER projet)
7   !!   NEMO      1.0  ! 2002-11  (G. Madec, A. Bozec)  F90: Free form and module
8   !!----------------------------------------------------------------------
9#if   defined key_floats   ||   defined key_esopa
10   !!----------------------------------------------------------------------
11   !!   'key_floats'                                        drifting floats
12   !!----------------------------------------------------------------------
13   USE par_oce         ! ocean parameters
14   USE in_out_manager  ! I/O manager
15   USE lib_mpp         ! MPP library
16
17   IMPLICIT NONE
18   PUBLIC
19
20   PUBLIC   flo_oce_alloc   ! Routine called in floats.F90
21
22   LOGICAL, PUBLIC, PARAMETER ::   lk_floats = .TRUE.    !: float flag
23
24   !! float parameters
25   !! ----------------
26   INTEGER, PUBLIC, PARAMETER ::   jpnfl     = 23                  !: total number of floats during the run
27   INTEGER, PUBLIC, PARAMETER ::   jpnnewflo =  0                  !: number of floats added in a new run
28   INTEGER, PUBLIC, PARAMETER ::   jpnrstflo = jpnfl - jpnnewflo   !: number of floats for the restart
29
30   !! float variables
31   !! ---------------
32   INTEGER , PUBLIC, DIMENSION(jpnfl) ::   nisobfl   !: =0 for a isobar float , =1 for a float following the w velocity
33   INTEGER , PUBLIC, DIMENSION(jpnfl) ::   ngrpfl    !: number to identify searcher group
34
35   REAL(wp), PUBLIC, DIMENSION(jpnfl) ::   flxx , flyy , flzz    !: long, lat, depth of float (decimal degree, m >0)
36   REAL(wp), PUBLIC, DIMENSION(jpnfl) ::   tpifl, tpjfl, tpkfl   !: (i,j,k) indices of float position
37
38   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   wb   !: vertical velocity at previous time step (m s-1).
39   
40   !                                            !!! * namelist namflo : langrangian floats *
41   LOGICAL, PUBLIC  ::   ln_rstflo  = .FALSE.    !: T/F float restart
42   LOGICAL, PUBLIC  ::   ln_argo    = .FALSE.    !: T/F argo type floats
43   LOGICAL, PUBLIC  ::   ln_flork4  = .FALSE.    !: T/F 4th order Runge-Kutta
44   INTEGER, PUBLIC  ::   nn_writefl = 150        !: frequency of float output file
45   INTEGER, PUBLIC  ::   nn_stockfl = 450        !: frequency of float restart file
46
47   !! * Control permutation of array indices
48#  include "flo_oce_ftrans.h90"
49
50   !!----------------------------------------------------------------------
51   !! NEMO/OPA 4.0 , NEMO Consortium (2011)
52   !! $Id$
53   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
54   !!----------------------------------------------------------------------
55CONTAINS
56
57   INTEGER FUNCTION flo_oce_alloc()
58      !!----------------------------------------------------------------------
59      !!                 ***  FUNCTION flo_oce_alloc  ***
60      !!----------------------------------------------------------------------
61      ALLOCATE( wb(jpi,jpj,jpk)   , STAT=flo_oce_alloc )
62      !
63      IF( lk_mpp             )   CALL mpp_sum ( flo_oce_alloc )
64      IF( flo_oce_alloc /= 0 )   CALL ctl_warn('flo_oce_alloc: failed to allocate arrays')
65   END FUNCTION flo_oce_alloc
66
67#else
68   !!----------------------------------------------------------------------
69   !!   Default option :                                 NO drifting floats
70   !!----------------------------------------------------------------------
71   LOGICAL, PUBLIC, PARAMETER ::   lk_floats = .FALSE.   !: float flag
72#endif
73
74   !!======================================================================
75END MODULE flo_oce
Note: See TracBrowser for help on using the repository browser.