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.
agrif_oce.F90 in branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/NST_SRC – NEMO

source: branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/NST_SRC/agrif_oce.F90 @ 4785

Last change on this file since 4785 was 4785, checked in by rblod, 10 years ago

dev_r4765_CNRS_agrif: First update of AGRIF for dynamic only (_flt and _ts), see ticket #1380 and associated wiki page

  • Property svn:keywords set to Id
File size: 4.7 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 ::   nn_cln_update = 3         !: update frequency
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
26   !                                              !!! OLD namelist names
27   INTEGER , PUBLIC ::   nbcline = 0               !: update counter
28   INTEGER , PUBLIC ::   nbclineupdate             !: update frequency
29   REAL(wp), PUBLIC ::   visc_tra                  !: sponge coeff. for tracers
30   REAL(wp), PUBLIC ::   visc_dyn                  !: sponge coeff. for dynamics
31
32   LOGICAL , PUBLIC :: spongedoneT = .FALSE.   !: tracer   sponge layer indicator
33   LOGICAL , PUBLIC :: spongedoneU = .FALSE.   !: dynamics sponge layer indicator
34   LOGICAL , PUBLIC :: lk_agrif_fstep = .TRUE. !: if true: first step
35
36   LOGICAL , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tabspongedone
37   LOGICAL , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tabspongedone_u
38   LOGICAL , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tabspongedone_v
39   REAL(wp), PUBLIC, ALLOCATABLE, SAVE,  DIMENSION(:,:) ::   spe1ur , spe2vr , spbtr2   !: ???
40   REAL(wp), PUBLIC, ALLOCATABLE, SAVE,  DIMENSION(:,:) ::   spe1ur2, spe2vr2, spbtr3   !: ???
41# if defined key_dynspg_ts
42   ! Barotropic arrays used to store open boundary data during
43   ! time-splitting loop:
44   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) ::  ubdy_w, vbdy_w, hbdy_w
45   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) ::  ubdy_e, vbdy_e, hbdy_e
46   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) ::  ubdy_n, vbdy_n, hbdy_n
47   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) ::  ubdy_s, vbdy_s, hbdy_s
48# endif 
49 
50   INTEGER :: tsn_id                                                  ! AGRIF profile for tracers interpolation and update
51   INTEGER :: un_interp_id, vn_interp_id                              ! AGRIF profiles for interpolations
52   INTEGER :: un_update_id, vn_update_id                              ! AGRIF profiles for udpates
53   INTEGER :: tsn_sponge_id, un_sponge_id, vn_sponge_id               ! AGRIF profiles for sponge layers
54   INTEGER :: trn_id
55   INTEGER :: unb_id, vnb_id, ub2b_interp_id, vb2b_interp_id
56   INTEGER :: ub2b_update_id, vb2b_update_id
57   INTEGER :: e3t_id, e1u_id, e2v_id, sshn_id
58   INTEGER :: scales_t_id
59
60   !!----------------------------------------------------------------------
61   !! NEMO/NST 3.3.1 , NEMO Consortium (2011)
62   !! $Id$
63   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
64   !!----------------------------------------------------------------------
65CONTAINS
66
67   INTEGER FUNCTION agrif_oce_alloc()
68      !!----------------------------------------------------------------------
69      !!                ***  FUNCTION agrif_oce_alloc  ***
70      !!----------------------------------------------------------------------
71      INTEGER, DIMENSION(2) :: ierr
72      !!----------------------------------------------------------------------
73      ierr(:) = 0
74      !
75      ALLOCATE( spe1ur         (jpi,jpj), spe2vr         (jpi,jpj),   &
76         &      spbtr2         (jpi,jpj), spe1ur2        (jpi,jpj),   &
77         &      spe2vr2        (jpi,jpj), spbtr3         (jpi,jpj),   &
78         &      tabspongedone  (jpi,jpj), tabspongedone_u(jpi,jpj),   &
79         &      tabspongedone_v(jpi,jpj), STAT = ierr(1) )
80
81# if defined key_dynspg_ts
82      ALLOCATE( ubdy_w(jpj), vbdy_w(jpj), hbdy_w(jpj),   &
83         &      ubdy_e(jpj), vbdy_e(jpj), hbdy_e(jpj),   & 
84         &      ubdy_n(jpi), vbdy_n(jpi), hbdy_n(jpi),   & 
85         &      ubdy_s(jpi), vbdy_s(jpi), hbdy_s(jpi), STAT = ierr(2) )
86# endif
87      agrif_oce_alloc = MAXVAL(ierr)
88      !
89   END FUNCTION agrif_oce_alloc
90
91#endif
92   !!======================================================================
93END MODULE agrif_oce
Note: See TracBrowser for help on using the repository browser.