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.
ldftra_c3d.h90 in trunk/NEMO/OPA_SRC/LDF – NEMO

source: trunk/NEMO/OPA_SRC/LDF/ldftra_c3d.h90 @ 901

Last change on this file since 901 was 901, checked in by rblod, 16 years ago

Change ldf computation to take into account the grid anisotropy, see ticket #115

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.5 KB
Line 
1   !!----------------------------------------------------------------------
2   !!                        ***  ldftra_c3d.h90  ***
3   !!----------------------------------------------------------------------
4
5   !!----------------------------------------------------------------------
6   !!   OPA 9.0 , LOCEAN-IPSL (2005)
7   !! $Header$
8   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt
9   !!----------------------------------------------------------------------
10
11   SUBROUTINE ldf_tra_c3d( ld_print )
12      !!----------------------------------------------------------------------
13      !!                 ***  ROUTINE ldftra_c3d  ***
14      !!               
15      !! ** Purpose :
16      !!     initializations of non uniform horizontal eddy diffusivity coef.
17      !!
18      !! ** Method :
19      !!      3D eddy diffusivity coefficients ( longitude, latitude, depth )
20      !!
21      !!       biharmonic operator    : ahtt = defined at T-level
22      !!                                ahtu,ahtv,ahtw never used
23      !!
24      !!       harmonic operator (ahtt never used)
25      !!         iso-model level   : ahtu, ahtv defined at u-, v-points
26      !!         isopycnal         : ahtu, ahtv, ahtw defined at u-, v-, w-pts
27      !!         or geopotential
28      !!
29      !!       eddy induced velocity
30      !!         always harmonic   : aeiu, aeiv, aeiw defined at u-, v-, w-pts
31      !!
32      !!----------------------------------------------------------------------
33      !! * Modules used
34      USE ioipsl
35
36      !! * Arguments
37      LOGICAL, INTENT (in) :: ld_print   ! If true, output arrays on numout
38
39      !! * Local declarations
40      INTEGER ::   ji, jj, jk                   ! dummy loop indices
41      !!----------------------------------------------------------------------
42
43      IF( lk_traldf_eiv ) THEN
44         IF(lwp) WRITE(numout,*)
45         IF(lwp) WRITE(numout,*) ' ldf_tra_c3d : 3D eddy diffusivity and eddy induced velocity coefficients'
46         IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~   --  '
47         IF(lwp) WRITE(numout,*) '               Coefficients set to constant'
48         IF(lwp) WRITE(numout,*)
49      ELSE
50         IF(lwp) WRITE(numout,*)
51         IF(lwp) WRITE(numout,*) ' ldf_tra_c3d : 3D eddy diffusivity coefficient'
52         IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~   -- '
53         IF(lwp) WRITE(numout,*) '               Coefficients set to constant'
54         IF(lwp) WRITE(numout,*)
55      ENDIF
56
57
58      ! biharmonic operator   (T-point)
59      ! -------------------
60
61      ahtt(:,:,:) = aht0              ! set ahtt at T-point (here no space variation)
62
63      CALL lbc_lnk( ahtt, 'T', 1. )   ! Lateral boundary conditions on ( ahtt )
64
65      IF(lwp .AND. ld_print ) THEN                    ! Control print
66         WRITE(numout,*)
67         WRITE(numout,*) 'inildf: ahtt at k = 1'
68         CALL prihre( ahtt(:,:,1), jpi, jpj, 1, jpi, 1,   &
69            &                                1, jpj, 1, 1.e-3, numout )
70      ENDIF
71
72
73      ! harmonic operator   (U-, V-, W-points)
74      ! -----------------
75
76      ahtu(:,:,:) = aht0              ! set ahtu = ahtv at u- and v-points,
77      ahtv(:,:,:) = aht0              ! and ahtw at w-point
78      ahtw(:,:,:) = aht0              ! (here example: no space variation)
79     
80      CALL lbc_lnk( ahtu, 'U', 1. )   ! Lateral boundary conditions
81      CALL lbc_lnk( ahtv, 'V', 1. )
82      CALL lbc_lnk( ahtw, 'W', 1. )
83
84      IF(lwp .AND. ld_print ) THEN                    ! Control print
85         WRITE(numout,*)
86         WRITE(numout,*) 'inildf: ahtu at k = 1'
87         CALL prihre( ahtu(:,:,1), jpi, jpj, 1, jpi, 1,   &
88            &                                1, jpj, 1, 1.e-3, numout )
89         WRITE(numout,*)
90         WRITE(numout,*) 'inildf: ahtv at k = 1'
91         CALL prihre( ahtv(:,:,1), jpi, jpj, 1, jpi, 1,   &
92            &                                1, jpj, 1, 1.e-3, numout )
93         WRITE(numout,*)
94         WRITE(numout,*) 'inildf: ahtw at k = 1'
95         CALL prihre( ahtw(:,:,1), jpi, jpj, 1, jpi, 1,   &
96            &                                1, jpj, 1, 1.e-3, numout )
97      ENDIF
98
99# if defined key_traldf_eiv
100      aeiu(:,:,:) = aeiv0            ! set aeiu = aeiv at u- and v-points,
101      aeiv(:,:,:) = aeiv0            ! and aeiw at w-point
102      aeiw(:,:,:) = aeiv0            ! (here example: no space variation)
103
104      IF( cp_cfg == "orca" .AND. jp_cfg == 4 ) THEN
105         !                                 ! Cancel eiv in Gibraltar strait
106         aeiu( mi0(68):mi1(71) , mj0(50):mj1(53) , : ) = 0.e0
107         aeiv( mi0(68):mi1(71) , mj0(50):mj1(53) , : ) = 0.e0
108         aeiw( mi0(68):mi1(71) , mj0(50):mj1(53) , : ) = 0.e0
109         !                                 ! Cancel eiv in Mediterrannean sea
110         aeiu( mi0(70):mi1(90) , mj0(49):mj1(56) , : ) = 0.e0
111         aeiv( mi0(70):mi1(90) , mj0(49):mj1(56) , : ) = 0.e0
112         aeiw( mi0(70):mi1(90) , mj0(49):mj1(56) , : ) = 0.e0
113      ENDIF
114
115      CALL lbc_lnk( aeiu, 'U', 1. )   ! Lateral boundary conditions
116      CALL lbc_lnk( aeiv, 'V', 1. )
117      CALL lbc_lnk( aeiw, 'W', 1. )
118# endif
119
120      IF(lwp .AND. ld_print ) THEN
121         WRITE(numout,*)
122         WRITE(numout,*) 'inildf: aeiu at k = 1'
123         CALL prihre(aeiu(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)
124         WRITE(numout,*)
125         WRITE(numout,*) 'inildf: aeiv at k = 1'
126         CALL prihre(aeiv(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)
127         WRITE(numout,*)
128         WRITE(numout,*) 'inildf: aeiw at k = 1'
129         CALL prihre(aeiw(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)
130      ENDIF
131
132END SUBROUTINE ldf_tra_c3d
Note: See TracBrowser for help on using the repository browser.