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.
domzgr_substitute.h90 in branches/dev_r2091_ZTC/NEMO/OPA_SRC/DOM – NEMO

source: branches/dev_r2091_ZTC/NEMO/OPA_SRC/DOM/domzgr_substitute.h90 @ 2116

Last change on this file since 2116 was 2116, checked in by mlelod, 13 years ago

ticket: #720 restart the branch from the latest DEV_r1837_MLF branch revision (2112)

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 6.7 KB
Line 
1   !!----------------------------------------------------------------------
2   !!                    ***  domzgr_substitute.h90   ***
3   !!----------------------------------------------------------------------
4   !! ** purpose :   substitute fsdep. and fse.., the vert. depth and scale
5   !!      factors depending on the vertical coord. used, using CPP macro.
6   !!----------------------------------------------------------------------
7   !! History :  1.0  !  2005-10  (A. Beckmann, G. Madec) generalisation to all coord.
8   !!            3.1  !  2009-02  (G. Madec, M. Leclair)  pure z* coordinate
9   !!            3.3  !  2010-09  (G. Madec, M. Leclair)  z_tilde coordinate
10   !!----------------------------------------------------------------------
11#if defined key_zco
12! reference for pure z-coordinate (1D - no i,j and time dependency)
13#   define  fsdept_0(i,j,k)  gdept_0(k)
14#   define  fsdepw_0(i,j,k)  gdepw_0(k)
15#   define  fsde3w_0(i,j,k)  gdepw_0(k)
16#   define  fse3t_0(i,j,k)   e3t_0(k)
17#   define  fse3u_0(i,j,k)   e3t_0(k)
18#   define  fse3v_0(i,j,k)   e3t_0(k)
19#   define  fse3f_0(i,j,k)   e3t_0(k)
20#   define  fse3w_0(i,j,k)   e3w_0(k)
21#   define  fse3uw_0(i,j,k)  e3w_0(k)
22#   define  fse3vw_0(i,j,k)  e3w_0(k)
23#else
24! reference for s- or zps-coordinate (3D no time dependency)
25#   define  fsdept_0(i,j,k)  gdept(i,j,k)
26#   define  fsdepw_0(i,j,k)  gdepw(i,j,k)
27#   define  fsde3w_0(i,j,k)  gdep3w(i,j,k)
28#   define  fse3t_0(i,j,k)   e3t(i,j,k)
29#   define  fse3u_0(i,j,k)   e3u(i,j,k)
30#   define  fse3v_0(i,j,k)   e3v(i,j,k)
31#   define  fse3f_0(i,j,k)   e3f(i,j,k)
32#   define  fse3w_0(i,j,k)   e3w(i,j,k)
33#   define  fse3uw_0(i,j,k)  e3uw(i,j,k)
34#   define  fse3vw_0(i,j,k)  e3vw(i,j,k)
35#endif
36#if defined key_ztc
37! z_tilde coordinate 3D arrays at t,u,v points at b,n,a time steps
38#   define  fsdept(i,j,k)  gdept_1(i,j,k)
39#   define  fsdepw(i,j,k)  gdepw_1(i,j,k)
40#   define  fsde3w(i,j,k)  gdep3w_1(i,j,k)
41#   define  fse3t(i,j,k)   e3t_1(i,j,k)
42#   define  fse3u(i,j,k)   e3u_1(i,j,k)
43#   define  fse3v(i,j,k)   e3v_1(i,j,k)
44#   define  fse3f(i,j,k)   e3f_1(i,j,k)
45#   define  fse3w(i,j,k)   e3w_1(i,j,k)
46#   define  fse3uw(i,j,k)  e3uw_1(i,j,k)
47#   define  fse3vw(i,j,k)  e3vw_1(i,j,k)
48
49#   define  fse3t_b(i,j,k)   e3t_b(i,j,k)
50#   define  fse3u_b(i,j,k)   e3u_b(i,j,k)
51#   define  fse3v_b(i,j,k)   e3v_b(i,j,k)
52#   define  fse3uw_b(i,j,k)  e3uw_b(i,j,k)
53#   define  fse3vw_b(i,j,k)  e3vw_b(i,j,k)
54
55#   define  fsdept_n(i,j,k)  gdept_1(i,j,k)
56#   define  fsdepw_n(i,j,k)  gdepw_1(i,j,k)
57#   define  fsde3w_n(i,j,k)  gdep3w_1(i,j,k)
58#   define  fse3t_n(i,j,k)   e3t_n(i,j,k)
59#   define  fse3u_n(i,j,k)   e3u_n(i,j,k)
60#   define  fse3v_n(i,j,k)   e3v_n(i,j,k)
61#   define  fse3f_n(i,j,k)   e3f_1(i,j,k)
62#   define  fse3w_n(i,j,k)   e3w_1(i,j,k)
63#   define  fse3uw_n(i,j,k)  e3uw(i,j,k)
64#   define  fse3vw_n(i,j,k)  e3vw(i,j,k)
65
66! - ML - Caution: only the first level of e3t_m is used (in limthd_2.F90)
67!                 It is replaced b y a 2d array
68#   define  fse3t_m(i,j)     e3t_m(i,j)
69#   define  fse3t_d(i,j,k)   e3t_d(i,j,k)
70
71#   define  fse3t_a(i,j,k)   e3t_a(i,j,k)
72#   define  fse3u_a(i,j,k)   e3u_a(i,j,k)
73#   define  fse3v_a(i,j,k)   e3v_a(i,j,k)
74
75#elif defined key_vvl
76! s* or z*-coordinate (3D + time dependency) + use of additional now arrays (..._1)
77#   define  fsdept(i,j,k)  gdept_1(i,j,k)
78#   define  fsdepw(i,j,k)  gdepw_1(i,j,k)
79#   define  fsde3w(i,j,k)  gdep3w_1(i,j,k)
80#   define  fse3t(i,j,k)   e3t_1(i,j,k)
81#   define  fse3u(i,j,k)   e3u_1(i,j,k)
82#   define  fse3v(i,j,k)   e3v_1(i,j,k)
83#   define  fse3f(i,j,k)   e3f_1(i,j,k)
84#   define  fse3w(i,j,k)   e3w_1(i,j,k)
85#   define  fse3uw(i,j,k)  e3uw_1(i,j,k)
86#   define  fse3vw(i,j,k)  e3vw_1(i,j,k)
87
88#   define  fse3t_b(i,j,k)   e3t_b(i,j,k)
89#   define  fse3u_b(i,j,k)   e3u_b(i,j,k)
90#   define  fse3v_b(i,j,k)   e3v_b(i,j,k)
91#   define  fse3uw_b(i,j,k)  (fse3uw_0(i,j,k)*(1.+sshu_b(i,j)*muu(i,j,k)))
92#   define  fse3vw_b(i,j,k)  (fse3vw_0(i,j,k)*(1.+sshv_b(i,j)*muv(i,j,k)))
93
94#   define  fsdept_n(i,j,k)  (fsdept_0(i,j,k)*(1.+sshn(i,j)*mut(i,j,k)))
95#   define  fsdepw_n(i,j,k)  (fsdepw_0(i,j,k)*(1.+sshn(i,j)*mut(i,j,k)))
96#   define  fsde3w_n(i,j,k)  (fsde3w_0(i,j,k)*(1.+sshn(i,j)*mut(i,j,k))-sshn(i,j))
97#   define  fse3t_n(i,j,k)   (fse3t_0(i,j,k)*(1.+sshn(i,j)*mut(i,j,k)))
98#   define  fse3u_n(i,j,k)   (fse3u_0(i,j,k)*(1.+sshu_n(i,j)*muu(i,j,k)))
99#   define  fse3v_n(i,j,k)   (fse3v_0(i,j,k)*(1.+sshv_n(i,j)*muv(i,j,k)))
100#   define  fse3f_n(i,j,k)   (fse3f_0(i,j,k)*(1.+sshf_n(i,j)*muf(i,j,k)))
101#   define  fse3w_n(i,j,k)   (fse3w_0(i,j,k)*(1.+sshn(i,j)*mut(i,j,k)))
102#   define  fse3uw_n(i,j,k)  (fse3uw_0(i,j,k)*(1.+sshu_n(i,j)*muu(i,j,k)))
103#   define  fse3vw_n(i,j,k)  (fse3vw_0(i,j,k)*(1.+sshv_n(i,j)*muv(i,j,k)))
104
105! - ML - Caution: only the first level of e3t_m is used (in limthd_2.F90)
106!                 It is replaced b y a 2d array
107#   define  fse3t_m(i,j)     (fse3t_0(i,j,1)*(1.+ssh_m(i,j)*mut(i,j,1)))
108#   define  fse3t_d(i,j,k)   e3t_d(i,j,k)
109
110#   define  fse3t_a(i,j,k)   (fse3t_0(i,j,k)*(1.+ssha(i,j)*mut(i,j,k)))
111#   define  fse3u_a(i,j,k)   (fse3u_0(i,j,k)*(1.+sshu_a(i,j)*muu(i,j,k)))
112#   define  fse3v_a(i,j,k)   (fse3v_0(i,j,k)*(1.+sshv_a(i,j)*muv(i,j,k)))
113
114#else
115! z- or s-coordinate (1D or 3D + no time dependency) use reference in all cases
116#   define  fsdept(i,j,k)  fsdept_0(i,j,k)
117#   define  fsdepw(i,j,k)  fsdepw_0(i,j,k)
118#   define  fsde3w(i,j,k)  fsde3w_0(i,j,k)
119#   define  fse3t(i,j,k)   fse3t_0(i,j,k)
120#   define  fse3u(i,j,k)   fse3u_0(i,j,k)
121#   define  fse3v(i,j,k)   fse3v_0(i,j,k)
122#   define  fse3f(i,j,k)   fse3f_0(i,j,k)
123#   define  fse3w(i,j,k)   fse3w_0(i,j,k)
124#   define  fse3uw(i,j,k)  fse3uw_0(i,j,k)
125#   define  fse3vw(i,j,k)  fse3vw_0(i,j,k)
126
127#   define  fse3t_b(i,j,k)   fse3t_0(i,j,k)
128#   define  fse3u_b(i,j,k)   fse3u_0(i,j,k)
129#   define  fse3v_b(i,j,k)   fse3v_0(i,j,k)
130#   define  fse3uw_b(i,j,k)  fse3uw_0(i,j,k)
131#   define  fse3vw_b(i,j,k)  fse3vw_0(i,j,k)
132
133#   define  fsdept_n(i,j,k)  fsdept_0(i,j,k)
134#   define  fsdepw_n(i,j,k)  fsdepw_0(i,j,k)
135#   define  fsde3w_n(i,j,k)  fsde3w_0(i,j,k)
136#   define  fse3t_n(i,j,k)   fse3t_0(i,j,k)
137#   define  fse3u_n(i,j,k)   fse3u_0(i,j,k)
138#   define  fse3v_n(i,j,k)   fse3v_0(i,j,k)
139#   define  fse3f_n(i,j,k)   fse3f_0(i,j,k)
140#   define  fse3w_n(i,j,k)   fse3w_0(i,j,k)
141#   define  fse3uw_n(i,j,k)  fse3uw_0(i,j,k)
142#   define  fse3vw_n(i,j,k)  fse3vw_0(i,j,k)
143
144#   define  fse3t_m(i,j,k)   fse3t_0(i,j,k)
145#   define  fse3t_d(i,j,k)   fse3t_0(i,j,k)
146
147#   define  fse3t_a(i,j,k)   fse3t_0(i,j,k)
148#   define  fse3u_a(i,j,k)   fse3u_0(i,j,k)
149#   define  fse3v_a(i,j,k)   fse3v_0(i,j,k)
150#endif
151   !!----------------------------------------------------------------------
152   !! NEMO/OPA 3.2 , LOCEAN-IPSL (2009)
153   !! $Id$
154   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
155   !!----------------------------------------------------------------------
Note: See TracBrowser for help on using the repository browser.