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 branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/LDF – NEMO

source: branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra_c3d.h90 @ 2287

Last change on this file since 2287 was 2287, checked in by smasson, 14 years ago

update licence of all NEMO files...

  • Property svn:keywords set to Id
File size: 5.4 KB
Line 
1   !!----------------------------------------------------------------------
2   !!                        ***  ldftra_c3d.h90  ***
3   !!----------------------------------------------------------------------
4
5   !!----------------------------------------------------------------------
6   !! NEMO/OPA 3.3 , NEMO Consortium (2010)
7   !! $Id$
8   !! Software governed by the CeCILL licence (NEMOGCM/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      !!----------------------------------------------------------------------
40
41      IF( lk_traldf_eiv ) THEN
42         IF(lwp) WRITE(numout,*)
43         IF(lwp) WRITE(numout,*) ' ldf_tra_c3d : 3D eddy diffusivity and eddy induced velocity coefficients'
44         IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~   --  '
45         IF(lwp) WRITE(numout,*) '               Coefficients set to constant'
46         IF(lwp) WRITE(numout,*)
47      ELSE
48         IF(lwp) WRITE(numout,*)
49         IF(lwp) WRITE(numout,*) ' ldf_tra_c3d : 3D eddy diffusivity coefficient'
50         IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~   -- '
51         IF(lwp) WRITE(numout,*) '               Coefficients set to constant'
52         IF(lwp) WRITE(numout,*)
53      ENDIF
54
55
56      ! biharmonic operator   (T-point)
57      ! -------------------
58
59      ahtt(:,:,:) = aht0              ! set ahtt at T-point (here no space variation)
60
61      CALL lbc_lnk( ahtt, 'T', 1. )   ! Lateral boundary conditions on ( ahtt )
62
63      IF(lwp .AND. ld_print ) THEN                    ! Control print
64         WRITE(numout,*)
65         WRITE(numout,*) 'inildf: ahtt at k = 1'
66         CALL prihre( ahtt(:,:,1), jpi, jpj, 1, jpi, 1,   &
67            &                                1, jpj, 1, 1.e-3, numout )
68      ENDIF
69
70
71      ! harmonic operator   (U-, V-, W-points)
72      ! -----------------
73
74      ahtu(:,:,:) = aht0              ! set ahtu = ahtv at u- and v-points,
75      ahtv(:,:,:) = aht0              ! and ahtw at w-point
76      ahtw(:,:,:) = aht0              ! (here example: no space variation)
77     
78      CALL lbc_lnk( ahtu, 'U', 1. )   ! Lateral boundary conditions
79      CALL lbc_lnk( ahtv, 'V', 1. )
80      CALL lbc_lnk( ahtw, 'W', 1. )
81
82      IF(lwp .AND. ld_print ) THEN                    ! Control print
83         WRITE(numout,*)
84         WRITE(numout,*) 'inildf: ahtu at k = 1'
85         CALL prihre( ahtu(:,:,1), jpi, jpj, 1, jpi, 1,   &
86            &                                1, jpj, 1, 1.e-3, numout )
87         WRITE(numout,*)
88         WRITE(numout,*) 'inildf: ahtv at k = 1'
89         CALL prihre( ahtv(:,:,1), jpi, jpj, 1, jpi, 1,   &
90            &                                1, jpj, 1, 1.e-3, numout )
91         WRITE(numout,*)
92         WRITE(numout,*) 'inildf: ahtw at k = 1'
93         CALL prihre( ahtw(:,:,1), jpi, jpj, 1, jpi, 1,   &
94            &                                1, jpj, 1, 1.e-3, numout )
95      ENDIF
96
97# if defined key_traldf_eiv
98      aeiu(:,:,:) = aeiv0            ! set aeiu = aeiv at u- and v-points,
99      aeiv(:,:,:) = aeiv0            ! and aeiw at w-point
100      aeiw(:,:,:) = aeiv0            ! (here example: no space variation)
101
102      IF( cp_cfg == "orca" .AND. jp_cfg == 4 ) THEN
103         !                                 ! Cancel eiv in Gibraltar strait
104         aeiu( mi0(68):mi1(71) , mj0(50):mj1(53) , : ) = 0.e0
105         aeiv( mi0(68):mi1(71) , mj0(50):mj1(53) , : ) = 0.e0
106         aeiw( mi0(68):mi1(71) , mj0(50):mj1(53) , : ) = 0.e0
107         !                                 ! Cancel eiv in Mediterrannean sea
108         aeiu( mi0(70):mi1(90) , mj0(49):mj1(56) , : ) = 0.e0
109         aeiv( mi0(70):mi1(90) , mj0(49):mj1(56) , : ) = 0.e0
110         aeiw( mi0(70):mi1(90) , mj0(49):mj1(56) , : ) = 0.e0
111      ENDIF
112
113      CALL lbc_lnk( aeiu, 'U', 1. )   ! Lateral boundary conditions
114      CALL lbc_lnk( aeiv, 'V', 1. )
115      CALL lbc_lnk( aeiw, 'W', 1. )
116# endif
117
118      IF(lwp .AND. ld_print ) THEN
119         WRITE(numout,*)
120         WRITE(numout,*) 'inildf: aeiu at k = 1'
121         CALL prihre(aeiu(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)
122         WRITE(numout,*)
123         WRITE(numout,*) 'inildf: aeiv at k = 1'
124         CALL prihre(aeiv(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)
125         WRITE(numout,*)
126         WRITE(numout,*) 'inildf: aeiw at k = 1'
127         CALL prihre(aeiw(:,:,1),jpi,jpj,1,jpi,1,1,jpj,1,1.e-3,numout)
128      ENDIF
129
130END SUBROUTINE ldf_tra_c3d
Note: See TracBrowser for help on using the repository browser.