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

source: branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn_c1d.h90 @ 2281

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

set proper svn properties to all files...

  • Property svn:keywords set to Id
File size: 4.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      !!      harmonic   operator : ahm1 defined at T-level
20      !!      biharmonic operator : ahm2 defined at T-level
21      !!      isopycnal or geopotential harmonic operator
22      !!                                      : ahm1 defined at T-level
23      !!                                      : ahm2 defined at w-level
24      !!
25      !!----------------------------------------------------------------------
26      !! * Arguments
27      LOGICAL, INTENT (in) :: ld_print   ! If true, output arrays on numout
28
29      !! * Local variables
30      INTEGER  ::   jk   ! dummy loop indice
31      REAL(wp) ::   zdam,  zwam,  zm00,  zm01,  zmhf,  zmhs
32      REAL(wp) ::   zdam2, zwam2, zm200, zm201, zmh2f, zmh2s
33      REAL(wp) ::   zahmf, zahms
34      !!----------------------------------------------------------------------
35
36      IF(lwp) WRITE(numout,*)
37      IF(lwp) WRITE(numout,*) 'inildf: 1D eddy viscosity coefficient'
38      IF(lwp) WRITE(numout,*) '~~~~~~  --'
39      IF(lwp) WRITE(numout,*)
40
41      ! Set ahm1 for laplacian     (always at t-level)
42      ! =============
43      ! (USER: modify ahm1 following your desiderata)
44
45      ! initialization of the profile
46      ! ahms, ahmf: surface and bottom values
47      zahms = ahm0
48      zahmf = ahm0/4.
49      ! zdam, zwam: depth of the inflection pt and width of inflection
50      zdam  = -300.
51      zwam  =  300.
52      ! computation coefficients
53      zm00 = TANH( (0-zdam)/zwam )
54      zm01 = TANH( (-fsdept(1,1,jpk)-zdam)/zwam )
55      zmhf = (zahms-zahmf)/(zm00-zm01)
56      zmhs = zahms-zmhf * zm00
57
58      ! Set ahm2 for bilaplacian   (always at t-level)
59      ! =============
60      ! (USER: modify ahm2 following your desiderata)
61
62      ! initialization of the profile
63      ! ahms, ahmf: surface and bottom values
64      zahm2s = ahm0_blp
65      zahm2f = ahm0_blp/4.
66      ! zdam, zwam: depth of the inflection pt and width of inflection
67      zdam2  = -300.
68      zwam2  =  300.
69      ! computation coefficients
70      zm200 = TANH( (0-zdam2)/zwam2 )
71      zm201 = TANH( (-fsdept(1,1,jpk)-zdam2)/zwam2 )
72      zmh2f = (zahm2s-zahm2f)/(zm200-zm201)
73      zmh2s = zahm2s-zmh2f * zm00
74
75
76      ! set ahm1 and ahm2 at T-level
77      DO jk = 1, jpk
78         ahm1(jk) = zmhs  + zmhf  * TANH( (-fsdept(1,1,jk)-zdam ) / zwam  )
79         ahm2(jk) = zmh2s + zmh2f * TANH( (-fsdept(1,1,jk)-zdam2) / zwam2 )
80      END DO
81
82      ! Control print
83      IF(lwp .AND. ld_print ) THEN
84         WRITE(numout,*)
85         WRITE(numout,*) '         ahm profile (laplacian): '
86         WRITE(numout,*)
87         WRITE(numout,9100)
88         DO jk = 1, jpk
89            WRITE(numout,9110) jk, ahm1(jk), fsdept(1,1,jk)
90         END DO
91         WRITE(numout,*)
92         WRITE(numout,*) '         ahm profile (bilaplacian): '
93         WRITE(numout,*)
94         WRITE(numout,9100)
95         DO jk = 1, jpk
96            WRITE(numout,9110) jk, ahm2(jk), fsdept(1,1,jk)
97         END DO
98      ENDIF
99 9100 FORMAT('  jk      ahm       ','  depth t-level ' )
100 9110 FORMAT(i6,2f12.4,3x,2f12.4)
101
102
103      ! Set ahm3=ahm4   (always defined at w-level)
104      ! =============
105
106      ! define ahm3 from the same vertical profile used for ahm4
107      ! (always defined at w-level)
108      ! (USER: modify ahm1 following your desiderata)
109
110      DO jk = 1, jpk
111         ahm3(jk) = zmhs + zmhf * TANH( (-fsdepw(1,1,jk)-zdam) / zwam )
112         ahm4(jk) = ahm3(jk)
113      END DO
114
115      ! Control print
116      IF(lwp .AND. ld_print ) THEN
117         WRITE(numout,*)
118         WRITE(numout,*) '         ahm3=ahm4 profile : '
119         WRITE(numout,*)
120         WRITE(numout,9120)
121         DO jk = 1, jpk
122            WRITE(numout,9110) jk, ahm3(jk), fsdepw(1,1,jk)
123         END DO
124      ENDIF
125 9120 FORMAT('  jk      ahm       ','  depth w-level ' )
126
127   END SUBROUTINE ldf_dyn_c1d
Note: See TracBrowser for help on using the repository browser.