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/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/OPA_SRC/LDF – NEMO

source: branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra_c3d.h90 @ 11101

Last change on this file since 11101 was 11101, checked in by frrh, 5 years ago

Merge changes from Met Office GMED ticket 450 to reduce unnecessary
text output from NEMO.
This output, which is typically not switchable, is rarely of interest
in normal (non-debugging) runs and simply redunantley consumes extra
file space.
Further, the presence of this text output has been shown to
significantly degrade performance of models which are run during
Met Office HPC RAID (disk) checks.
The new code introduces switches which are configurable via the
changes made in the associated Met Office MOCI ticket 399.

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