source: NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/FLO/flo_oce.F90

Last change on this file was 10420, checked in by smasson, 2 years ago

dev_r10164_HPC09_ESIWACE_PREP_MERGE: force STOP when fail to allocate array, see #2133

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