123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- MODULE flo_oce
- !!======================================================================
- !! *** MODULE flo_oce ***
- !! lagrangian floats : define in memory all floats parameters and variables
- !!======================================================================
- !! History : OPA ! 1999-10 (CLIPPER projet)
- !! NEMO 1.0 ! 2002-11 (G. Madec, A. Bozec) F90: Free form and module
- !!----------------------------------------------------------------------
- #if defined key_floats || defined key_esopa
- !!----------------------------------------------------------------------
- !! 'key_floats' drifting floats
- !!----------------------------------------------------------------------
- USE par_oce ! ocean parameters
- USE in_out_manager ! I/O manager
- USE lib_mpp ! MPP library
- IMPLICIT NONE
- PUBLIC
- PUBLIC flo_oce_alloc ! Routine called in floats.F90
- LOGICAL, PUBLIC, PARAMETER :: lk_floats = .TRUE. !: float flag
- !! float parameters
- !! ----------------
- INTEGER, PUBLIC :: jpnfl !: total number of floats during the run
- INTEGER, PUBLIC :: jpnnewflo !: number of floats added in a new run
- INTEGER, PUBLIC :: jpnrstflo !: number of floats for the restart
- !! float variables
- !! ---------------
- INTEGER , PUBLIC, ALLOCATABLE, DIMENSION(:) :: nisobfl !: =0 for a isobar float , =1 for a float following the w velocity
- INTEGER , PUBLIC, ALLOCATABLE, DIMENSION(:) :: ngrpfl !: number to identify searcher group
- INTEGER , PUBLIC, ALLOCATABLE, DIMENSION(:) :: nfloat !: number to identify searcher group
- REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) :: flxx , flyy , flzz !: long, lat, depth of float (decimal degree, m >0)
- REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:) :: tpifl, tpjfl, tpkfl !: (i,j,k) indices of float position
- REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: wb !: vertical velocity at previous time step (m s-1).
-
- ! !! * namelist namflo : langrangian floats *
- LOGICAL, PUBLIC :: ln_rstflo !: T/F float restart
- LOGICAL, PUBLIC :: ln_argo !: T/F argo type floats
- LOGICAL, PUBLIC :: ln_flork4 !: T/F 4th order Runge-Kutta
- LOGICAL, PUBLIC :: ln_ariane !: handle ariane input/output convention
- LOGICAL, PUBLIC :: ln_flo_ascii !: write in ascii (T) or in Netcdf (F)
- INTEGER, PUBLIC :: nn_writefl !: frequency of float output file
- INTEGER, PUBLIC :: nn_stockfl !: frequency of float restart file
- !!----------------------------------------------------------------------
- !! NEMO/OPA 4.0 , NEMO Consortium (2011)
- !! $Id: flo_oce.F90 4147 2013-11-04 11:51:55Z cetlod $
- !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
- !!----------------------------------------------------------------------
- CONTAINS
- INTEGER FUNCTION flo_oce_alloc()
- !!----------------------------------------------------------------------
- !! *** FUNCTION flo_oce_alloc ***
- !!----------------------------------------------------------------------
- ALLOCATE( wb(jpi,jpj,jpk) , nfloat(jpnfl) , nisobfl(jpnfl) , ngrpfl(jpnfl) , &
- flxx(jpnfl) , flyy(jpnfl) , flzz(jpnfl) , &
- tpifl(jpnfl) , tpjfl(jpnfl) , tpkfl(jpnfl) , STAT=flo_oce_alloc )
- !
- IF( lk_mpp ) CALL mpp_sum ( flo_oce_alloc )
- IF( flo_oce_alloc /= 0 ) CALL ctl_warn('flo_oce_alloc: failed to allocate arrays')
- END FUNCTION flo_oce_alloc
- #else
- !!----------------------------------------------------------------------
- !! Default option : NO drifting floats
- !!----------------------------------------------------------------------
- LOGICAL, PUBLIC, PARAMETER :: lk_floats = .FALSE. !: float flag
- #endif
- !!======================================================================
- END MODULE flo_oce
|