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

source: trunk/NEMO/OPA_SRC/LDF/ldfdyn_c1d.h90 @ 2146

Last change on this file since 2146 was 2146, checked in by rblod, 14 years ago

Fix missing dummy loop indice, see ticket #712

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 3.5 KB
Line 
1   !!----------------------------------------------------------------------
2   !!                     ***  ldfdyn_c1d.h90  ***
3   !!----------------------------------------------------------------------
4
5   !!----------------------------------------------------------------------
6   !!   OPA 9.0 , LOCEAN-IPSL (2005)
7   !! $Id$
8   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt
9   !!----------------------------------------------------------------------
10
11   SUBROUTINE ldf_dyn_c1d( ld_print )
12      !!----------------------------------------------------------------------
13      !!                  ***  ROUTINE ldf_dyn_c1d  ***
14      !!                   
15      !! ** Purpose :   initializations of the horizontal ocean physics
16      !!
17      !! ** Method  :   1D eddy viscosity coefficients ( depth )
18      !!      ahm3, ahm4 never used
19      !!      biharmonic or harmonic operator : ahm1=ahm2 defined at T-level
20      !!      isopycnal or geopotential harmonic operator
21      !!                                      : ahm1 defined at T-level
22      !!                                      : ahm2 defined at w-level
23      !!
24      !!----------------------------------------------------------------------
25      !! * Arguments
26      LOGICAL, INTENT (in) :: ld_print   ! If true, output arrays on numout
27
28      !! * Local variables
29      INTEGER :: jk   ! dummy loop indice
30      REAL(wp) ::   zdam, zwam, zm00, zm01, zmhf, zmhs
31      REAL(wp) ::   zahmf, zahms
32      !!----------------------------------------------------------------------
33
34      IF(lwp) WRITE(numout,*)
35      IF(lwp) WRITE(numout,*) 'inildf: 1D eddy viscosity coefficient'
36      IF(lwp) WRITE(numout,*) '~~~~~~  --'
37      IF(lwp) WRITE(numout,*)
38
39      ! Set ahm1=ahm2   (always at t-level)
40      ! =============
41      ! (USER: modify ahm1 following your desiderata)
42
43      ! initialization of the profile
44      ! ahms, ahmf: surface and bottom values
45      zahms = ahm0
46      zahmf = ahm0/4.
47      ! zdam, zwam: depth of the inflection pt and width of inflection
48      zdam  = -300.
49      zwam  =  300.
50      ! computation coefficients
51      zm00 = TANH( (0-zdam)/zwam )
52      zm01 = TANH( (-fsdept(1,1,jpk)-zdam)/zwam )
53      zmhf = (zahms-zahmf)/(zm00-zm01)
54      zmhs = zahms-zmhf * zm00
55
56      ! set ahm1=ahm2 at T-level
57      DO jk = 1, jpk
58         ahm1(jk) = zmhs + zmhf * TANH( (-fsdept(1,1,jk)-zdam) / zwam )
59         ahm2(jk) = ahm1(jk)
60      END DO
61
62      ! Control print
63      IF(lwp .AND. ld_print ) THEN
64         WRITE(numout,*)
65         WRITE(numout,*) '         ahm profile : '
66         WRITE(numout,*)
67         WRITE(numout,9100)
68         DO jk = 1, jpk
69            WRITE(numout,9110) jk, ahm1(jk), fsdept(1,1,jk)
70         END DO
71      ENDIF
72 9100 FORMAT('  jk      ahm       ','  depth t-level ' )
73 9110 FORMAT(i6,2f12.4,3x,2f12.4)
74
75
76      ! Set ahm3=ahm4   (always defined at w-level)
77      ! =============
78
79      ! define ahm3 from the same vertical profile used for ahm4
80      ! (always defined at w-level)
81      ! (USER: modify ahm1 following your desiderata)
82
83      DO jk = 1, jpk
84         ahm3(jk) = zmhs + zmhf * TANH( (-fsdepw(1,1,jk)-zdam) / zwam )
85         ahm4(jk) = ahm3(jk)
86      END DO
87
88      ! Control print
89      IF(lwp .AND. ld_print ) THEN
90         WRITE(numout,*)
91         WRITE(numout,*) '         ahm3=ahm4 profile : '
92         WRITE(numout,*)
93         WRITE(numout,9120)
94         DO jk = 1, jpk
95            WRITE(numout,9110) jk, ahm3(jk), fsdepw(1,1,jk)
96         END DO
97      ENDIF
98 9120 FORMAT('  jk      ahm       ','  depth w-level ' )
99
100   END SUBROUTINE ldf_dyn_c1d
Note: See TracBrowser for help on using the repository browser.