source: branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/NST_SRC/agrif_oce.F90 @ 8901

Last change on this file since 8901 was 8901, checked in by jchanut, 3 years ago

AGRIF: Remove update frequency parameter from namelist - #1965

  • Property svn:keywords set to Id
File size: 5.0 KB
Line 
1MODULE agrif_oce
2   !!======================================================================
3   !!                       ***  MODULE agrif_oce  ***
4   !! AGRIF :   define in memory AGRIF variables
5   !!----------------------------------------------------------------------
6   !! History :  2.0  ! 2007-12  (R. Benshila)  Original code
7   !!----------------------------------------------------------------------
8#if defined key_agrif
9   !!----------------------------------------------------------------------
10   !!   'key_agrif'                                              AGRIF zoom
11   !!----------------------------------------------------------------------
12   USE par_oce      ! ocean parameters
13   USE dom_oce      ! domain parameters
14
15   IMPLICIT NONE
16   PRIVATE
17
18   PUBLIC agrif_oce_alloc ! routine called by nemo_init in nemogcm.F90
19
20   !                                              !!* Namelist namagrif: AGRIF parameters
21   LOGICAL , PUBLIC ::   ln_spc_dyn    = .FALSE.   !:
22   INTEGER , PUBLIC, PARAMETER ::   nn_sponge_len = 2  !: Sponge width (in number of parent grid points)
23   REAL(wp), PUBLIC ::   rn_sponge_tra = 2800.     !: sponge coeff. for tracers
24   REAL(wp), PUBLIC ::   rn_sponge_dyn = 2800.     !: sponge coeff. for dynamics
25   LOGICAL , PUBLIC ::   ln_chk_bathy  = .FALSE.   !: check of parent bathymetry
26
27   !                                              !!! OLD namelist names
28   REAL(wp), PUBLIC ::   visc_tra                  !: sponge coeff. for tracers
29   REAL(wp), PUBLIC ::   visc_dyn                  !: sponge coeff. for dynamics
30
31   LOGICAL , PUBLIC :: spongedoneT = .FALSE.       !: tracer   sponge layer indicator
32   LOGICAL , PUBLIC :: spongedoneU = .FALSE.       !: dynamics sponge layer indicator
33   LOGICAL , PUBLIC :: lk_agrif_fstep = .TRUE.     !: if true: first step
34   LOGICAL , PUBLIC :: lk_agrif_debug = .FALSE.    !: if true: print debugging info
35
36   LOGICAL , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tabspongedone_tsn
37# if defined key_top
38   LOGICAL , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tabspongedone_trn
39# endif
40   LOGICAL , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tabspongedone_u
41   LOGICAL , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tabspongedone_v
42   REAL(wp), PUBLIC, ALLOCATABLE, SAVE,  DIMENSION(:,:) :: fsaht_spu, fsaht_spv !: sponge diffusivities
43   REAL(wp), PUBLIC, ALLOCATABLE, SAVE,  DIMENSION(:,:) :: fsahm_spt, fsahm_spf !: sponge viscosities
44
45   ! Barotropic arrays used to store open boundary data during
46   ! time-splitting loop:
47   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) ::  ubdy_w, vbdy_w, hbdy_w
48   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) ::  ubdy_e, vbdy_e, hbdy_e
49   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) ::  ubdy_n, vbdy_n, hbdy_n
50   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) ::  ubdy_s, vbdy_s, hbdy_s
51
52   INTEGER :: tsn_id                                                  ! AGRIF profile for tracers interpolation and update
53   INTEGER :: un_interp_id, vn_interp_id                              ! AGRIF profiles for interpolations
54   INTEGER :: un_update_id, vn_update_id                              ! AGRIF profiles for udpates
55   INTEGER :: tsn_sponge_id, un_sponge_id, vn_sponge_id               ! AGRIF profiles for sponge layers
56# if defined key_top
57   INTEGER :: trn_id, trn_sponge_id
58# endif 
59   INTEGER :: unb_id, vnb_id, ub2b_interp_id, vb2b_interp_id
60   INTEGER :: ub2b_update_id, vb2b_update_id
61   INTEGER :: e3t_id, e1u_id, e2v_id, sshn_id
62   INTEGER :: scales_t_id
63# if defined key_zdftke || defined key_zdfgls
64   INTEGER :: avt_id, avm_id, en_id
65# endif 
66   INTEGER :: umsk_id, vmsk_id
67   INTEGER :: kindic_agr
68
69   !!----------------------------------------------------------------------
70   !! NEMO/NST 3.3.1 , NEMO Consortium (2011)
71   !! $Id$
72   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
73   !!----------------------------------------------------------------------
74CONTAINS
75
76   INTEGER FUNCTION agrif_oce_alloc()
77      !!----------------------------------------------------------------------
78      !!                ***  FUNCTION agrif_oce_alloc  ***
79      !!----------------------------------------------------------------------
80      INTEGER, DIMENSION(2) :: ierr
81      !!----------------------------------------------------------------------
82      ierr(:) = 0
83      !
84      ALLOCATE( fsaht_spu(jpi,jpj), fsaht_spv(jpi,jpj),   &
85         &      fsahm_spt(jpi,jpj), fsahm_spf(jpi,jpj),   &
86         &      tabspongedone_tsn(jpi,jpj),           &
87# if defined key_top         
88         &      tabspongedone_trn(jpi,jpj),           &
89# endif         
90         &      tabspongedone_u  (jpi,jpj),           &
91         &      tabspongedone_v  (jpi,jpj), STAT = ierr(1) )
92
93      ALLOCATE( ubdy_w(jpj), vbdy_w(jpj), hbdy_w(jpj),   &
94         &      ubdy_e(jpj), vbdy_e(jpj), hbdy_e(jpj),   & 
95         &      ubdy_n(jpi), vbdy_n(jpi), hbdy_n(jpi),   & 
96         &      ubdy_s(jpi), vbdy_s(jpi), hbdy_s(jpi), STAT = ierr(2) )
97
98      agrif_oce_alloc = MAXVAL(ierr)
99      !
100   END FUNCTION agrif_oce_alloc
101
102#endif
103   !!======================================================================
104END MODULE agrif_oce
Note: See TracBrowser for help on using the repository browser.