Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
Nemo
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Requirements
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Sam Hatfield
Nemo
Commits
908f9f64
Commit
908f9f64
authored
3 years ago
by
Sibylle TECHENE
Browse files
Options
Downloads
Patches
Plain Diff
remove r_vvl : obsolete
parent
b426ae43
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/OCE/DYN/dynzdf.F90
+54
-86
54 additions, 86 deletions
src/OCE/DYN/dynzdf.F90
with
54 additions
and
86 deletions
src/OCE/DYN/dynzdf.F90
+
54
−
86
View file @
908f9f64
...
@@ -37,8 +37,6 @@ MODULE dynzdf
...
@@ -37,8 +37,6 @@ MODULE dynzdf
PUBLIC
dyn_zdf
! routine called by step.F90
PUBLIC
dyn_zdf
! routine called by step.F90
REAL
(
wp
)
::
r_vvl
! non-linear free surface indicator: =0 if ln_linssh=T, =1 otherwise
!! * Substitutions
!! * Substitutions
# include "do_loop_substitute.h90"
# include "do_loop_substitute.h90"
# include "domzgr_substitute.h90"
# include "domzgr_substitute.h90"
...
@@ -92,10 +90,6 @@ CONTAINS
...
@@ -92,10 +90,6 @@ CONTAINS
IF
(
lwp
)
WRITE
(
numout
,
*
)
IF
(
lwp
)
WRITE
(
numout
,
*
)
IF
(
lwp
)
WRITE
(
numout
,
*
)
'dyn_zdf_imp : vertical momentum diffusion implicit operator'
IF
(
lwp
)
WRITE
(
numout
,
*
)
'dyn_zdf_imp : vertical momentum diffusion implicit operator'
IF
(
lwp
)
WRITE
(
numout
,
*
)
'~~~~~~~~~~~ '
IF
(
lwp
)
WRITE
(
numout
,
*
)
'~~~~~~~~~~~ '
!
If
(
ln_linssh
)
THEN
;
r_vvl
=
0._wp
! non-linear free surface indicator
ELSE
;
r_vvl
=
1._wp
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
!
!
...
@@ -142,23 +136,19 @@ CONTAINS
...
@@ -142,23 +136,19 @@ CONTAINS
DO_2D
(
0
,
0
,
0
,
0
)
! Add bottom/top stress due to barotropic component only
DO_2D
(
0
,
0
,
0
,
0
)
! Add bottom/top stress due to barotropic component only
iku
=
mbku
(
ji
,
jj
)
! ocean bottom level at u- and v-points
iku
=
mbku
(
ji
,
jj
)
! ocean bottom level at u- and v-points
ikv
=
mbkv
(
ji
,
jj
)
! (deepest ocean u- and v-points)
ikv
=
mbkv
(
ji
,
jj
)
! (deepest ocean u- and v-points)
ze3ua
=
(
1._wp
-
r_vvl
)
*
e3u
(
ji
,
jj
,
iku
,
Kmm
)
&
puu
(
ji
,
jj
,
iku
,
Kaa
)
=
puu
(
ji
,
jj
,
iku
,
Kaa
)
+
zDt_2
*
(
rCdU_bot
(
ji
+1
,
jj
)
+
rCdU_bot
(
ji
,
jj
)
)
*
uu_b
(
ji
,
jj
,
Kaa
)
&
&
+
r_vvl
*
e3u
(
ji
,
jj
,
iku
,
Kaa
)
&
/
e3u
(
ji
,
jj
,
iku
,
Kaa
)
ze3va
=
(
1._wp
-
r_vvl
)
*
e3v
(
ji
,
jj
,
ikv
,
Kmm
)
&
pvv
(
ji
,
jj
,
ikv
,
Kaa
)
=
pvv
(
ji
,
jj
,
ikv
,
Kaa
)
+
zDt_2
*
(
rCdU_bot
(
ji
,
jj
+1
)
+
rCdU_bot
(
ji
,
jj
)
)
*
vv_b
(
ji
,
jj
,
Kaa
)
&
&
+
r_vvl
*
e3v
(
ji
,
jj
,
ikv
,
Kaa
)
&
/
e3v
(
ji
,
jj
,
ikv
,
Kaa
)
puu
(
ji
,
jj
,
iku
,
Kaa
)
=
puu
(
ji
,
jj
,
iku
,
Kaa
)
+
zDt_2
*
(
rCdU_bot
(
ji
+1
,
jj
)
+
rCdU_bot
(
ji
,
jj
)
)
*
uu_b
(
ji
,
jj
,
Kaa
)
/
ze3ua
pvv
(
ji
,
jj
,
ikv
,
Kaa
)
=
pvv
(
ji
,
jj
,
ikv
,
Kaa
)
+
zDt_2
*
(
rCdU_bot
(
ji
,
jj
+1
)
+
rCdU_bot
(
ji
,
jj
)
)
*
vv_b
(
ji
,
jj
,
Kaa
)
/
ze3va
END_2D
END_2D
IF
(
ln_isfcav
.OR.
ln_drgice_imp
)
THEN
! Ocean cavities (ISF)
IF
(
ln_isfcav
.OR.
ln_drgice_imp
)
THEN
! Ocean cavities (ISF)
DO_2D
(
0
,
0
,
0
,
0
)
DO_2D
(
0
,
0
,
0
,
0
)
iku
=
miku
(
ji
,
jj
)
! top ocean level at u- and v-points
iku
=
miku
(
ji
,
jj
)
! top ocean level at u- and v-points
ikv
=
mikv
(
ji
,
jj
)
! (first wet ocean u- and v-points)
ikv
=
mikv
(
ji
,
jj
)
! (first wet ocean u- and v-points)
ze3ua
=
(
1._wp
-
r_vvl
)
*
e3u
(
ji
,
jj
,
iku
,
Kmm
)
&
puu
(
ji
,
jj
,
iku
,
Kaa
)
=
puu
(
ji
,
jj
,
iku
,
Kaa
)
+
zDt_2
*
(
rCdU_top
(
ji
+1
,
jj
)
+
rCdU_top
(
ji
,
jj
)
)
*
uu_b
(
ji
,
jj
,
Kaa
)
&
&
+
r_vvl
*
e3u
(
ji
,
jj
,
iku
,
Kaa
)
&
/
e3u
(
ji
,
jj
,
iku
,
Kaa
)
ze3va
=
(
1._wp
-
r_vvl
)
*
e3v
(
ji
,
jj
,
ikv
,
Kmm
)
&
pvv
(
ji
,
jj
,
ikv
,
Kaa
)
=
pvv
(
ji
,
jj
,
ikv
,
Kaa
)
+
zDt_2
*
(
rCdU_top
(
ji
,
jj
+1
)
+
rCdU_top
(
ji
,
jj
)
)
*
vv_b
(
ji
,
jj
,
Kaa
)
&
&
+
r_vvl
*
e3v
(
ji
,
jj
,
ikv
,
Kaa
)
&
/
e3v
(
ji
,
jj
,
ikv
,
Kaa
)
puu
(
ji
,
jj
,
iku
,
Kaa
)
=
puu
(
ji
,
jj
,
iku
,
Kaa
)
+
zDt_2
*
(
rCdU_top
(
ji
+1
,
jj
)
+
rCdU_top
(
ji
,
jj
)
)
*
uu_b
(
ji
,
jj
,
Kaa
)
/
ze3ua
pvv
(
ji
,
jj
,
ikv
,
Kaa
)
=
pvv
(
ji
,
jj
,
ikv
,
Kaa
)
+
zDt_2
*
(
rCdU_top
(
ji
,
jj
+1
)
+
rCdU_top
(
ji
,
jj
)
)
*
vv_b
(
ji
,
jj
,
Kaa
)
/
ze3va
END_2D
END_2D
END
IF
END
IF
ENDIF
ENDIF
...
@@ -170,28 +160,26 @@ CONTAINS
...
@@ -170,28 +160,26 @@ CONTAINS
SELECT
CASE
(
nldf_dyn
)
SELECT
CASE
(
nldf_dyn
)
CASE
(
np_lap_i
)
! rotated lateral mixing: add its vertical mixing (akzu)
CASE
(
np_lap_i
)
! rotated lateral mixing: add its vertical mixing (akzu)
DO_3D
(
0
,
0
,
0
,
0
,
1
,
jpkm1
)
DO_3D
(
0
,
0
,
0
,
0
,
1
,
jpkm1
)
ze3ua
=
(
1._wp
-
r_vvl
)
*
e3u
(
ji
,
jj
,
jk
,
Kmm
)
&
z1_e3ua
=
1._wp
/
e3u
(
ji
,
jj
,
jk
,
Kaa
)
! after scale factor at U-point
&
+
r_vvl
*
e3u
(
ji
,
jj
,
jk
,
Kaa
)
! after scale factor at U-point
zzwi
=
-
zDt_2
*
(
avm
(
ji
+1
,
jj
,
jk
)
+
avm
(
ji
,
jj
,
jk
)
+
akzu
(
ji
,
jj
,
jk
)
)
&
zzwi
=
-
zDt_2
*
(
avm
(
ji
+1
,
jj
,
jk
)
+
avm
(
ji
,
jj
,
jk
)
+
akzu
(
ji
,
jj
,
jk
)
)
&
&
/
(
ze3ua
*
e3uw
(
ji
,
jj
,
jk
,
Kmm
)
)
*
wumask
(
ji
,
jj
,
jk
)
&
/
e3uw
(
ji
,
jj
,
jk
,
Kmm
)
*
z1_e3ua
*
wumask
(
ji
,
jj
,
jk
)
zzws
=
-
zDt_2
*
(
avm
(
ji
+1
,
jj
,
jk
+1
)
+
avm
(
ji
,
jj
,
jk
+1
)
+
akzu
(
ji
,
jj
,
jk
+1
)
)
&
zzws
=
-
zDt_2
*
(
avm
(
ji
+1
,
jj
,
jk
+1
)
+
avm
(
ji
,
jj
,
jk
+1
)
+
akzu
(
ji
,
jj
,
jk
+1
)
)
&
&
/
(
ze3ua
*
e3uw
(
ji
,
jj
,
jk
+1
,
Kmm
)
)
*
wumask
(
ji
,
jj
,
jk
+1
)
&
/
e3uw
(
ji
,
jj
,
jk
+1
,
Kmm
)
*
z1_e3ua
*
wumask
(
ji
,
jj
,
jk
+1
)
zWui
=
(
wi
(
ji
,
jj
,
jk
)
+
wi
(
ji
+1
,
jj
,
jk
)
)
/
ze3ua
zWui
=
(
wi
(
ji
,
jj
,
jk
)
+
wi
(
ji
+1
,
jj
,
jk
)
)
*
z
1_
e3ua
zWus
=
(
wi
(
ji
,
jj
,
jk
+1
)
+
wi
(
ji
+1
,
jj
,
jk
+1
)
)
/
ze3ua
zWus
=
(
wi
(
ji
,
jj
,
jk
+1
)
+
wi
(
ji
+1
,
jj
,
jk
+1
)
)
*
z
1_
e3ua
zwi
(
ji
,
jj
,
jk
)
=
zzwi
+
zDt_2
*
MIN
(
zWui
,
0._wp
)
zwi
(
ji
,
jj
,
jk
)
=
zzwi
+
zDt_2
*
MIN
(
zWui
,
0._wp
)
zws
(
ji
,
jj
,
jk
)
=
zzws
-
zDt_2
*
MAX
(
zWus
,
0._wp
)
zws
(
ji
,
jj
,
jk
)
=
zzws
-
zDt_2
*
MAX
(
zWus
,
0._wp
)
zwd
(
ji
,
jj
,
jk
)
=
1._wp
-
zzwi
-
zzws
+
zDt_2
*
(
MAX
(
zWui
,
0._wp
)
-
MIN
(
zWus
,
0._wp
)
)
zwd
(
ji
,
jj
,
jk
)
=
1._wp
-
zzwi
-
zzws
+
zDt_2
*
(
MAX
(
zWui
,
0._wp
)
-
MIN
(
zWus
,
0._wp
)
)
END_3D
END_3D
CASE
DEFAULT
! iso-level lateral mixing
CASE
DEFAULT
! iso-level lateral mixing
DO_3D
(
0
,
0
,
0
,
0
,
1
,
jpkm1
)
DO_3D
(
0
,
0
,
0
,
0
,
1
,
jpkm1
)
ze3ua
=
(
1._wp
-
r_vvl
)
*
e3u
(
ji
,
jj
,
jk
,
Kmm
)
&
! after scale factor at U-point
z1_e3ua
=
1._wp
/
e3u
(
ji
,
jj
,
jk
,
Kaa
)
! after scale factor at U-point
&
+
r_vvl
*
e3u
(
ji
,
jj
,
jk
,
Kaa
)
zzwi
=
-
zDt_2
*
(
avm
(
ji
+1
,
jj
,
jk
)
+
avm
(
ji
,
jj
,
jk
)
)
&
zzwi
=
-
zDt_2
*
(
avm
(
ji
+1
,
jj
,
jk
)
+
avm
(
ji
,
jj
,
jk
)
)
&
&
/
(
ze3ua
*
e3uw
(
ji
,
jj
,
jk
,
Kmm
)
)
*
wumask
(
ji
,
jj
,
jk
)
&
/
e3uw
(
ji
,
jj
,
jk
,
Kmm
)
*
z1_e3ua
*
wumask
(
ji
,
jj
,
jk
)
zzws
=
-
zDt_2
*
(
avm
(
ji
+1
,
jj
,
jk
+1
)
+
avm
(
ji
,
jj
,
jk
+1
)
)
&
zzws
=
-
zDt_2
*
(
avm
(
ji
+1
,
jj
,
jk
+1
)
+
avm
(
ji
,
jj
,
jk
+1
)
)
&
&
/
(
ze3ua
*
e3uw
(
ji
,
jj
,
jk
+1
,
Kmm
)
)
*
wumask
(
ji
,
jj
,
jk
+1
)
&
/
e3uw
(
ji
,
jj
,
jk
+1
,
Kmm
)
*
z1_e3ua
*
wumask
(
ji
,
jj
,
jk
+1
)
zWui
=
(
wi
(
ji
,
jj
,
jk
)
+
wi
(
ji
+1
,
jj
,
jk
)
)
/
ze3ua
zWui
=
(
wi
(
ji
,
jj
,
jk
)
+
wi
(
ji
+1
,
jj
,
jk
)
)
*
z
1_
e3ua
zWus
=
(
wi
(
ji
,
jj
,
jk
+1
)
+
wi
(
ji
+1
,
jj
,
jk
+1
)
)
/
ze3ua
zWus
=
(
wi
(
ji
,
jj
,
jk
+1
)
+
wi
(
ji
+1
,
jj
,
jk
+1
)
)
*
z
1_
e3ua
zwi
(
ji
,
jj
,
jk
)
=
zzwi
+
zDt_2
*
MIN
(
zWui
,
0._wp
)
zwi
(
ji
,
jj
,
jk
)
=
zzwi
+
zDt_2
*
MIN
(
zWui
,
0._wp
)
zws
(
ji
,
jj
,
jk
)
=
zzws
-
zDt_2
*
MAX
(
zWus
,
0._wp
)
zws
(
ji
,
jj
,
jk
)
=
zzws
-
zDt_2
*
MAX
(
zWus
,
0._wp
)
zwd
(
ji
,
jj
,
jk
)
=
1._wp
-
zzwi
-
zzws
+
zDt_2
*
(
MAX
(
zWui
,
0._wp
)
-
MIN
(
zWus
,
0._wp
)
)
zwd
(
ji
,
jj
,
jk
)
=
1._wp
-
zzwi
-
zzws
+
zDt_2
*
(
MAX
(
zWui
,
0._wp
)
-
MIN
(
zWus
,
0._wp
)
)
...
@@ -199,11 +187,9 @@ CONTAINS
...
@@ -199,11 +187,9 @@ CONTAINS
END
SELECT
END
SELECT
DO_2D
(
0
,
0
,
0
,
0
)
!* Surface boundary conditions
DO_2D
(
0
,
0
,
0
,
0
)
!* Surface boundary conditions
zwi
(
ji
,
jj
,
1
)
=
0._wp
zwi
(
ji
,
jj
,
1
)
=
0._wp
ze3ua
=
(
1._wp
-
r_vvl
)
*
e3u
(
ji
,
jj
,
1
,
Kmm
)
&
&
+
r_vvl
*
e3u
(
ji
,
jj
,
1
,
Kaa
)
zzws
=
-
zDt_2
*
(
avm
(
ji
+1
,
jj
,
2
)
+
avm
(
ji
,
jj
,
2
)
)
&
zzws
=
-
zDt_2
*
(
avm
(
ji
+1
,
jj
,
2
)
+
avm
(
ji
,
jj
,
2
)
)
&
&
/
(
z
e3u
a
*
e3uw
(
ji
,
jj
,
2
,
Kmm
)
)
*
wumask
(
ji
,
jj
,
2
)
&
/
(
e3u
(
ji
,
jj
,
1
,
Kaa
)
*
e3uw
(
ji
,
jj
,
2
,
Kmm
)
)
*
wumask
(
ji
,
jj
,
2
)
zWus
=
(
wi
(
ji
,
jj
,
2
)
+
wi
(
ji
+1
,
jj
,
2
)
)
/
z
e3u
a
zWus
=
(
wi
(
ji
,
jj
,
2
)
+
wi
(
ji
+1
,
jj
,
2
)
)
/
e3u
(
ji
,
jj
,
1
,
Kaa
)
zws
(
ji
,
jj
,
1
)
=
zzws
-
zDt_2
*
MAX
(
zWus
,
0._wp
)
zws
(
ji
,
jj
,
1
)
=
zzws
-
zDt_2
*
MAX
(
zWus
,
0._wp
)
zwd
(
ji
,
jj
,
1
)
=
1._wp
-
zzws
-
zDt_2
*
(
MIN
(
zWus
,
0._wp
)
)
zwd
(
ji
,
jj
,
1
)
=
1._wp
-
zzws
-
zDt_2
*
(
MIN
(
zWus
,
0._wp
)
)
END_2D
END_2D
...
@@ -211,24 +197,20 @@ CONTAINS
...
@@ -211,24 +197,20 @@ CONTAINS
SELECT
CASE
(
nldf_dyn
)
SELECT
CASE
(
nldf_dyn
)
CASE
(
np_lap_i
)
! rotated lateral mixing: add its vertical mixing (akzu)
CASE
(
np_lap_i
)
! rotated lateral mixing: add its vertical mixing (akzu)
DO_3D
(
0
,
0
,
0
,
0
,
1
,
jpkm1
)
DO_3D
(
0
,
0
,
0
,
0
,
1
,
jpkm1
)
ze3ua
=
(
1._wp
-
r_vvl
)
*
e3u
(
ji
,
jj
,
jk
,
Kmm
)
&
&
+
r_vvl
*
e3u
(
ji
,
jj
,
jk
,
Kaa
)
! after scale factor at U-point
zzwi
=
-
zDt_2
*
(
avm
(
ji
+1
,
jj
,
jk
)
+
avm
(
ji
,
jj
,
jk
)
+
akzu
(
ji
,
jj
,
jk
)
)
&
zzwi
=
-
zDt_2
*
(
avm
(
ji
+1
,
jj
,
jk
)
+
avm
(
ji
,
jj
,
jk
)
+
akzu
(
ji
,
jj
,
jk
)
)
&
&
/
(
z
e3u
a
*
e3uw
(
ji
,
jj
,
jk
,
Kmm
)
)
*
wumask
(
ji
,
jj
,
jk
)
&
/
(
e3u
(
ji
,
jj
,
jk
,
Kaa
)
*
e3uw
(
ji
,
jj
,
jk
,
Kmm
)
)
*
wumask
(
ji
,
jj
,
jk
)
zzws
=
-
zDt_2
*
(
avm
(
ji
+1
,
jj
,
jk
+1
)
+
avm
(
ji
,
jj
,
jk
+1
)
+
akzu
(
ji
,
jj
,
jk
+1
)
)
&
zzws
=
-
zDt_2
*
(
avm
(
ji
+1
,
jj
,
jk
+1
)
+
avm
(
ji
,
jj
,
jk
+1
)
+
akzu
(
ji
,
jj
,
jk
+1
)
)
&
&
/
(
z
e3u
a
*
e3uw
(
ji
,
jj
,
jk
+1
,
Kmm
)
)
*
wumask
(
ji
,
jj
,
jk
+1
)
&
/
(
e3u
(
ji
,
jj
,
jk
,
Kaa
)
*
e3uw
(
ji
,
jj
,
jk
+1
,
Kmm
)
)
*
wumask
(
ji
,
jj
,
jk
+1
)
zwi
(
ji
,
jj
,
jk
)
=
zzwi
zwi
(
ji
,
jj
,
jk
)
=
zzwi
zws
(
ji
,
jj
,
jk
)
=
zzws
zws
(
ji
,
jj
,
jk
)
=
zzws
zwd
(
ji
,
jj
,
jk
)
=
1._wp
-
zzwi
-
zzws
zwd
(
ji
,
jj
,
jk
)
=
1._wp
-
zzwi
-
zzws
END_3D
END_3D
CASE
DEFAULT
! iso-level lateral mixing
CASE
DEFAULT
! iso-level lateral mixing
DO_3D
(
0
,
0
,
0
,
0
,
1
,
jpkm1
)
DO_3D
(
0
,
0
,
0
,
0
,
1
,
jpkm1
)
ze3ua
=
(
1._wp
-
r_vvl
)
*
e3u
(
ji
,
jj
,
jk
,
Kmm
)
&
&
+
r_vvl
*
e3u
(
ji
,
jj
,
jk
,
Kaa
)
! after scale factor at U-point
zzwi
=
-
zDt_2
*
(
avm
(
ji
+1
,
jj
,
jk
)
+
avm
(
ji
,
jj
,
jk
)
)
&
zzwi
=
-
zDt_2
*
(
avm
(
ji
+1
,
jj
,
jk
)
+
avm
(
ji
,
jj
,
jk
)
)
&
&
/
(
z
e3u
a
*
e3uw
(
ji
,
jj
,
jk
,
Kmm
)
)
*
wumask
(
ji
,
jj
,
jk
)
&
/
(
e3u
(
ji
,
jj
,
jk
,
Kaa
)
*
e3uw
(
ji
,
jj
,
jk
,
Kmm
)
)
*
wumask
(
ji
,
jj
,
jk
)
zzws
=
-
zDt_2
*
(
avm
(
ji
+1
,
jj
,
jk
+1
)
+
avm
(
ji
,
jj
,
jk
+1
)
)
&
zzws
=
-
zDt_2
*
(
avm
(
ji
+1
,
jj
,
jk
+1
)
+
avm
(
ji
,
jj
,
jk
+1
)
)
&
&
/
(
z
e3u
a
*
e3uw
(
ji
,
jj
,
jk
+1
,
Kmm
)
)
*
wumask
(
ji
,
jj
,
jk
+1
)
&
/
(
e3u
(
ji
,
jj
,
jk
,
Kaa
)
*
e3uw
(
ji
,
jj
,
jk
+1
,
Kmm
)
)
*
wumask
(
ji
,
jj
,
jk
+1
)
zwi
(
ji
,
jj
,
jk
)
=
zzwi
zwi
(
ji
,
jj
,
jk
)
=
zzwi
zws
(
ji
,
jj
,
jk
)
=
zzws
zws
(
ji
,
jj
,
jk
)
=
zzws
zwd
(
ji
,
jj
,
jk
)
=
1._wp
-
zzwi
-
zzws
zwd
(
ji
,
jj
,
jk
)
=
1._wp
-
zzwi
-
zzws
...
@@ -250,17 +232,15 @@ CONTAINS
...
@@ -250,17 +232,15 @@ CONTAINS
IF
(
ln_drgimp
)
THEN
! implicit bottom friction
IF
(
ln_drgimp
)
THEN
! implicit bottom friction
DO_2D
(
0
,
0
,
0
,
0
)
DO_2D
(
0
,
0
,
0
,
0
)
iku
=
mbku
(
ji
,
jj
)
! ocean bottom level at u- and v-points
iku
=
mbku
(
ji
,
jj
)
! ocean bottom level at u- and v-points
ze3ua
=
(
1._wp
-
r_vvl
)
*
e3u
(
ji
,
jj
,
iku
,
Kmm
)
&
zwd
(
ji
,
jj
,
iku
)
=
zwd
(
ji
,
jj
,
iku
)
-
zDt_2
*
(
rCdU_bot
(
ji
+1
,
jj
)
+
rCdU_bot
(
ji
,
jj
)
)
&
&
+
r_vvl
*
e3u
(
ji
,
jj
,
iku
,
Kaa
)
! after scale factor at T-point
&
/
e3u
(
ji
,
jj
,
iku
,
Kaa
)
zwd
(
ji
,
jj
,
iku
)
=
zwd
(
ji
,
jj
,
iku
)
-
zDt_2
*
(
rCdU_bot
(
ji
+1
,
jj
)
+
rCdU_bot
(
ji
,
jj
)
)
/
ze3ua
END_2D
END_2D
IF
(
ln_isfcav
.OR.
ln_drgice_imp
)
THEN
! top friction (always implicit)
IF
(
ln_isfcav
.OR.
ln_drgice_imp
)
THEN
! top friction (always implicit)
DO_2D
(
0
,
0
,
0
,
0
)
DO_2D
(
0
,
0
,
0
,
0
)
!!gm top Cd is masked (=0 outside cavities) no need of test on mik>=2 ==>> it has been suppressed
!!gm top Cd is masked (=0 outside cavities) no need of test on mik>=2 ==>> it has been suppressed
iku
=
miku
(
ji
,
jj
)
! ocean top level at u- and v-points
iku
=
miku
(
ji
,
jj
)
! ocean top level at u- and v-points
ze3ua
=
(
1._wp
-
r_vvl
)
*
e3u
(
ji
,
jj
,
iku
,
Kmm
)
&
zwd
(
ji
,
jj
,
iku
)
=
zwd
(
ji
,
jj
,
iku
)
-
zDt_2
*
(
rCdU_top
(
ji
+1
,
jj
)
+
rCdU_top
(
ji
,
jj
)
)
&
&
+
r_vvl
*
e3u
(
ji
,
jj
,
iku
,
Kaa
)
! after scale factor at T-point
&
/
e3u
(
ji
,
jj
,
iku
,
Kaa
)
zwd
(
ji
,
jj
,
iku
)
=
zwd
(
ji
,
jj
,
iku
)
-
zDt_2
*
(
rCdU_top
(
ji
+1
,
jj
)
+
rCdU_top
(
ji
,
jj
)
)
/
ze3ua
END_2D
END_2D
END
IF
END
IF
ENDIF
ENDIF
...
@@ -285,14 +265,13 @@ CONTAINS
...
@@ -285,14 +265,13 @@ CONTAINS
END_3D
END_3D
!
!
DO_2D
(
0
,
0
,
0
,
0
)
!== second recurrence: SOLk = RHSk - Lk / Dk-1 Lk-1 ==!
DO_2D
(
0
,
0
,
0
,
0
)
!== second recurrence: SOLk = RHSk - Lk / Dk-1 Lk-1 ==!
ze3ua
=
(
1._wp
-
r_vvl
)
*
e3u
(
ji
,
jj
,
1
,
Kmm
)
&
&
+
r_vvl
*
e3u
(
ji
,
jj
,
1
,
Kaa
)
#if defined key_RK3
#if defined key_RK3
! ! RK3: use only utau (not utau_b)
! ! RK3: use only utau (not utau_b)
puu
(
ji
,
jj
,
1
,
Kaa
)
=
puu
(
ji
,
jj
,
1
,
Kaa
)
+
rDt
*
utau
(
ji
,
jj
)
/
(
ze3ua
*
rho0
)
*
umask
(
ji
,
jj
,
1
)
puu
(
ji
,
jj
,
1
,
Kaa
)
=
puu
(
ji
,
jj
,
1
,
Kaa
)
+
rDt
*
utau
(
ji
,
jj
)
&
&
/
(
e3u
(
ji
,
jj
,
1
,
Kaa
)
*
rho0
)
*
umask
(
ji
,
jj
,
1
)
#else
#else
puu
(
ji
,
jj
,
1
,
Kaa
)
=
puu
(
ji
,
jj
,
1
,
Kaa
)
+
zDt_2
*
(
utau_b
(
ji
,
jj
)
+
utau
(
ji
,
jj
)
)
&
puu
(
ji
,
jj
,
1
,
Kaa
)
=
puu
(
ji
,
jj
,
1
,
Kaa
)
+
zDt_2
*
(
utau_b
(
ji
,
jj
)
+
utau
(
ji
,
jj
)
)
&
&
/
(
z
e3u
a
*
rho0
)
*
umask
(
ji
,
jj
,
1
)
&
/
(
e3u
(
ji
,
jj
,
1
,
Kaa
)
*
rho0
)
*
umask
(
ji
,
jj
,
1
)
#endif
#endif
END_2D
END_2D
DO_3D
(
0
,
0
,
0
,
0
,
2
,
jpkm1
)
DO_3D
(
0
,
0
,
0
,
0
,
2
,
jpkm1
)
...
@@ -313,28 +292,26 @@ CONTAINS
...
@@ -313,28 +292,26 @@ CONTAINS
SELECT
CASE
(
nldf_dyn
)
SELECT
CASE
(
nldf_dyn
)
CASE
(
np_lap_i
)
! rotated lateral mixing: add its vertical mixing (akzv)
CASE
(
np_lap_i
)
! rotated lateral mixing: add its vertical mixing (akzv)
DO_3D
(
0
,
0
,
0
,
0
,
1
,
jpkm1
)
DO_3D
(
0
,
0
,
0
,
0
,
1
,
jpkm1
)
ze3va
=
(
1._wp
-
r_vvl
)
*
e3v
(
ji
,
jj
,
jk
,
Kmm
)
&
z1_e3va
=
1._wp
/
e3v
(
ji
,
jj
,
jk
,
Kaa
)
! after scale factor at V-point
&
+
r_vvl
*
e3v
(
ji
,
jj
,
jk
,
Kaa
)
! after scale factor at V-point
zzwi
=
-
zDt_2
*
(
avm
(
ji
,
jj
+1
,
jk
)
+
avm
(
ji
,
jj
,
jk
)
+
akzv
(
ji
,
jj
,
jk
)
)
&
zzwi
=
-
zDt_2
*
(
avm
(
ji
,
jj
+1
,
jk
)
+
avm
(
ji
,
jj
,
jk
)
+
akzv
(
ji
,
jj
,
jk
)
)
&
&
/
(
ze3va
*
e3vw
(
ji
,
jj
,
jk
,
Kmm
)
)
*
wvmask
(
ji
,
jj
,
jk
)
&
/
e3vw
(
ji
,
jj
,
jk
,
Kmm
)
*
z1_e3va
*
wvmask
(
ji
,
jj
,
jk
)
zzws
=
-
zDt_2
*
(
avm
(
ji
,
jj
+1
,
jk
+1
)
+
avm
(
ji
,
jj
,
jk
+1
)
+
akzv
(
ji
,
jj
,
jk
+1
)
)
&
zzws
=
-
zDt_2
*
(
avm
(
ji
,
jj
+1
,
jk
+1
)
+
avm
(
ji
,
jj
,
jk
+1
)
+
akzv
(
ji
,
jj
,
jk
+1
)
)
&
&
/
(
ze3va
*
e3vw
(
ji
,
jj
,
jk
+1
,
Kmm
)
)
*
wvmask
(
ji
,
jj
,
jk
+1
)
&
/
e3vw
(
ji
,
jj
,
jk
+1
,
Kmm
)
*
z1_e3va
*
wvmask
(
ji
,
jj
,
jk
+1
)
zWvi
=
(
wi
(
ji
,
jj
,
jk
)
+
wi
(
ji
,
jj
+1
,
jk
)
)
/
ze3va
zWvi
=
(
wi
(
ji
,
jj
,
jk
)
+
wi
(
ji
,
jj
+1
,
jk
)
)
*
z
1_
e3va
zWvs
=
(
wi
(
ji
,
jj
,
jk
+1
)
+
wi
(
ji
,
jj
+1
,
jk
+1
)
)
/
ze3va
zWvs
=
(
wi
(
ji
,
jj
,
jk
+1
)
+
wi
(
ji
,
jj
+1
,
jk
+1
)
)
*
z
1_
e3va
zwi
(
ji
,
jj
,
jk
)
=
zzwi
+
zDt_2
*
MIN
(
zWvi
,
0._wp
)
zwi
(
ji
,
jj
,
jk
)
=
zzwi
+
zDt_2
*
MIN
(
zWvi
,
0._wp
)
zws
(
ji
,
jj
,
jk
)
=
zzws
-
zDt_2
*
MAX
(
zWvs
,
0._wp
)
zws
(
ji
,
jj
,
jk
)
=
zzws
-
zDt_2
*
MAX
(
zWvs
,
0._wp
)
zwd
(
ji
,
jj
,
jk
)
=
1._wp
-
zzwi
-
zzws
-
zDt_2
*
(
-
MAX
(
zWvi
,
0._wp
)
+
MIN
(
zWvs
,
0._wp
)
)
zwd
(
ji
,
jj
,
jk
)
=
1._wp
-
zzwi
-
zzws
-
zDt_2
*
(
-
MAX
(
zWvi
,
0._wp
)
+
MIN
(
zWvs
,
0._wp
)
)
END_3D
END_3D
CASE
DEFAULT
! iso-level lateral mixing
CASE
DEFAULT
! iso-level lateral mixing
DO_3D
(
0
,
0
,
0
,
0
,
1
,
jpkm1
)
DO_3D
(
0
,
0
,
0
,
0
,
1
,
jpkm1
)
ze3va
=
(
1._wp
-
r_vvl
)
*
e3v
(
ji
,
jj
,
jk
,
Kmm
)
&
z1_e3va
=
1._wp
/
e3v
(
ji
,
jj
,
jk
,
Kaa
)
! after scale factor at V-point
&
+
r_vvl
*
e3v
(
ji
,
jj
,
jk
,
Kaa
)
! after scale factor at V-point
zzwi
=
-
zDt_2
*
(
avm
(
ji
,
jj
+1
,
jk
)
+
avm
(
ji
,
jj
,
jk
)
)
&
zzwi
=
-
zDt_2
*
(
avm
(
ji
,
jj
+1
,
jk
)
+
avm
(
ji
,
jj
,
jk
)
)
&
&
/
(
ze3va
*
e3vw
(
ji
,
jj
,
jk
,
Kmm
)
)
*
wvmask
(
ji
,
jj
,
jk
)
&
/
e3vw
(
ji
,
jj
,
jk
,
Kmm
)
*
z1_e3va
*
wvmask
(
ji
,
jj
,
jk
)
zzws
=
-
zDt_2
*
(
avm
(
ji
,
jj
+1
,
jk
+1
)
+
avm
(
ji
,
jj
,
jk
+1
)
)
&
zzws
=
-
zDt_2
*
(
avm
(
ji
,
jj
+1
,
jk
+1
)
+
avm
(
ji
,
jj
,
jk
+1
)
)
&
&
/
(
ze3va
*
e3vw
(
ji
,
jj
,
jk
+1
,
Kmm
)
)
*
wvmask
(
ji
,
jj
,
jk
+1
)
&
/
e3vw
(
ji
,
jj
,
jk
+1
,
Kmm
)
*
z1_e3va
*
wvmask
(
ji
,
jj
,
jk
+1
)
zWvi
=
(
wi
(
ji
,
jj
,
jk
)
+
wi
(
ji
,
jj
+1
,
jk
)
)
/
ze3va
zWvi
=
(
wi
(
ji
,
jj
,
jk
)
+
wi
(
ji
,
jj
+1
,
jk
)
)
*
z
1_
e3va
zWvs
=
(
wi
(
ji
,
jj
,
jk
+1
)
+
wi
(
ji
,
jj
+1
,
jk
+1
)
)
/
ze3va
zWvs
=
(
wi
(
ji
,
jj
,
jk
+1
)
+
wi
(
ji
,
jj
+1
,
jk
+1
)
)
*
z
1_
e3va
zwi
(
ji
,
jj
,
jk
)
=
zzwi
+
zDt_2
*
MIN
(
zWvi
,
0._wp
)
zwi
(
ji
,
jj
,
jk
)
=
zzwi
+
zDt_2
*
MIN
(
zWvi
,
0._wp
)
zws
(
ji
,
jj
,
jk
)
=
zzws
-
zDt_2
*
MAX
(
zWvs
,
0._wp
)
zws
(
ji
,
jj
,
jk
)
=
zzws
-
zDt_2
*
MAX
(
zWvs
,
0._wp
)
zwd
(
ji
,
jj
,
jk
)
=
1._wp
-
zzwi
-
zzws
-
zDt_2
*
(
-
MAX
(
zWvi
,
0._wp
)
+
MIN
(
zWvs
,
0._wp
)
)
zwd
(
ji
,
jj
,
jk
)
=
1._wp
-
zzwi
-
zzws
-
zDt_2
*
(
-
MAX
(
zWvi
,
0._wp
)
+
MIN
(
zWvs
,
0._wp
)
)
...
@@ -342,11 +319,9 @@ CONTAINS
...
@@ -342,11 +319,9 @@ CONTAINS
END
SELECT
END
SELECT
DO_2D
(
0
,
0
,
0
,
0
)
!* Surface boundary conditions
DO_2D
(
0
,
0
,
0
,
0
)
!* Surface boundary conditions
zwi
(
ji
,
jj
,
1
)
=
0._wp
zwi
(
ji
,
jj
,
1
)
=
0._wp
ze3va
=
(
1._wp
-
r_vvl
)
*
e3v
(
ji
,
jj
,
1
,
Kmm
)
&
&
+
r_vvl
*
e3v
(
ji
,
jj
,
1
,
Kaa
)
zzws
=
-
zDt_2
*
(
avm
(
ji
,
jj
+1
,
2
)
+
avm
(
ji
,
jj
,
2
)
)
&
zzws
=
-
zDt_2
*
(
avm
(
ji
,
jj
+1
,
2
)
+
avm
(
ji
,
jj
,
2
)
)
&
&
/
(
z
e3v
a
*
e3vw
(
ji
,
jj
,
2
,
Kmm
)
)
*
wvmask
(
ji
,
jj
,
2
)
&
/
(
e3v
(
ji
,
jj
,
1
,
Kaa
)
*
e3vw
(
ji
,
jj
,
2
,
Kmm
)
)
*
wvmask
(
ji
,
jj
,
2
)
zWvs
=
(
wi
(
ji
,
jj
,
2
)
+
wi
(
ji
,
jj
+1
,
2
)
)
/
z
e3v
a
zWvs
=
(
wi
(
ji
,
jj
,
2
)
+
wi
(
ji
,
jj
+1
,
2
)
)
/
e3v
(
ji
,
jj
,
1
,
Kaa
)
zws
(
ji
,
jj
,
1
)
=
zzws
-
zDt_2
*
MAX
(
zWvs
,
0._wp
)
zws
(
ji
,
jj
,
1
)
=
zzws
-
zDt_2
*
MAX
(
zWvs
,
0._wp
)
zwd
(
ji
,
jj
,
1
)
=
1._wp
-
zzws
-
zDt_2
*
(
MIN
(
zWvs
,
0._wp
)
)
zwd
(
ji
,
jj
,
1
)
=
1._wp
-
zzws
-
zDt_2
*
(
MIN
(
zWvs
,
0._wp
)
)
END_2D
END_2D
...
@@ -354,24 +329,20 @@ CONTAINS
...
@@ -354,24 +329,20 @@ CONTAINS
SELECT
CASE
(
nldf_dyn
)
SELECT
CASE
(
nldf_dyn
)
CASE
(
np_lap_i
)
! rotated lateral mixing: add its vertical mixing (akzu)
CASE
(
np_lap_i
)
! rotated lateral mixing: add its vertical mixing (akzu)
DO_3D
(
0
,
0
,
0
,
0
,
1
,
jpkm1
)
DO_3D
(
0
,
0
,
0
,
0
,
1
,
jpkm1
)
ze3va
=
(
1._wp
-
r_vvl
)
*
e3v
(
ji
,
jj
,
jk
,
Kmm
)
&
&
+
r_vvl
*
e3v
(
ji
,
jj
,
jk
,
Kaa
)
! after scale factor at V-point
zzwi
=
-
zDt_2
*
(
avm
(
ji
,
jj
+1
,
jk
)
+
avm
(
ji
,
jj
,
jk
)
+
akzv
(
ji
,
jj
,
jk
)
)
&
zzwi
=
-
zDt_2
*
(
avm
(
ji
,
jj
+1
,
jk
)
+
avm
(
ji
,
jj
,
jk
)
+
akzv
(
ji
,
jj
,
jk
)
)
&
&
/
(
z
e3v
a
*
e3vw
(
ji
,
jj
,
jk
,
Kmm
)
)
*
wvmask
(
ji
,
jj
,
jk
)
&
/
(
e3v
(
ji
,
jj
,
jk
,
Kaa
)
*
e3vw
(
ji
,
jj
,
jk
,
Kmm
)
)
*
wvmask
(
ji
,
jj
,
jk
)
zzws
=
-
zDt_2
*
(
avm
(
ji
,
jj
+1
,
jk
+1
)
+
avm
(
ji
,
jj
,
jk
+1
)
+
akzv
(
ji
,
jj
,
jk
+1
)
)
&
zzws
=
-
zDt_2
*
(
avm
(
ji
,
jj
+1
,
jk
+1
)
+
avm
(
ji
,
jj
,
jk
+1
)
+
akzv
(
ji
,
jj
,
jk
+1
)
)
&
&
/
(
z
e3v
a
*
e3vw
(
ji
,
jj
,
jk
+1
,
Kmm
)
)
*
wvmask
(
ji
,
jj
,
jk
+1
)
&
/
(
e3v
(
ji
,
jj
,
jk
,
Kaa
)
*
e3vw
(
ji
,
jj
,
jk
+1
,
Kmm
)
)
*
wvmask
(
ji
,
jj
,
jk
+1
)
zwi
(
ji
,
jj
,
jk
)
=
zzwi
zwi
(
ji
,
jj
,
jk
)
=
zzwi
zws
(
ji
,
jj
,
jk
)
=
zzws
zws
(
ji
,
jj
,
jk
)
=
zzws
zwd
(
ji
,
jj
,
jk
)
=
1._wp
-
zzwi
-
zzws
zwd
(
ji
,
jj
,
jk
)
=
1._wp
-
zzwi
-
zzws
END_3D
END_3D
CASE
DEFAULT
! iso-level lateral mixing
CASE
DEFAULT
! iso-level lateral mixing
DO_3D
(
0
,
0
,
0
,
0
,
1
,
jpkm1
)
DO_3D
(
0
,
0
,
0
,
0
,
1
,
jpkm1
)
ze3va
=
(
1._wp
-
r_vvl
)
*
e3v
(
ji
,
jj
,
jk
,
Kmm
)
&
&
+
r_vvl
*
e3v
(
ji
,
jj
,
jk
,
Kaa
)
! after scale factor at V-point
zzwi
=
-
zDt_2
*
(
avm
(
ji
,
jj
+1
,
jk
)
+
avm
(
ji
,
jj
,
jk
)
)
&
zzwi
=
-
zDt_2
*
(
avm
(
ji
,
jj
+1
,
jk
)
+
avm
(
ji
,
jj
,
jk
)
)
&
&
/
(
z
e3v
a
*
e3vw
(
ji
,
jj
,
jk
,
Kmm
)
)
*
wvmask
(
ji
,
jj
,
jk
)
&
/
(
e3v
(
ji
,
jj
,
jk
,
Kaa
)
*
e3vw
(
ji
,
jj
,
jk
,
Kmm
)
)
*
wvmask
(
ji
,
jj
,
jk
)
zzws
=
-
zDt_2
*
(
avm
(
ji
,
jj
+1
,
jk
+1
)
+
avm
(
ji
,
jj
,
jk
+1
)
)
&
zzws
=
-
zDt_2
*
(
avm
(
ji
,
jj
+1
,
jk
+1
)
+
avm
(
ji
,
jj
,
jk
+1
)
)
&
&
/
(
z
e3v
a
*
e3vw
(
ji
,
jj
,
jk
+1
,
Kmm
)
)
*
wvmask
(
ji
,
jj
,
jk
+1
)
&
/
(
e3v
(
ji
,
jj
,
jk
,
Kaa
)
*
e3vw
(
ji
,
jj
,
jk
+1
,
Kmm
)
)
*
wvmask
(
ji
,
jj
,
jk
+1
)
zwi
(
ji
,
jj
,
jk
)
=
zzwi
zwi
(
ji
,
jj
,
jk
)
=
zzwi
zws
(
ji
,
jj
,
jk
)
=
zzws
zws
(
ji
,
jj
,
jk
)
=
zzws
zwd
(
ji
,
jj
,
jk
)
=
1._wp
-
zzwi
-
zzws
zwd
(
ji
,
jj
,
jk
)
=
1._wp
-
zzwi
-
zzws
...
@@ -392,16 +363,14 @@ CONTAINS
...
@@ -392,16 +363,14 @@ CONTAINS
IF
(
ln_drgimp
)
THEN
IF
(
ln_drgimp
)
THEN
DO_2D
(
0
,
0
,
0
,
0
)
DO_2D
(
0
,
0
,
0
,
0
)
ikv
=
mbkv
(
ji
,
jj
)
! (deepest ocean u- and v-points)
ikv
=
mbkv
(
ji
,
jj
)
! (deepest ocean u- and v-points)
ze3va
=
(
1._wp
-
r_vvl
)
*
e3v
(
ji
,
jj
,
ikv
,
Kmm
)
&
zwd
(
ji
,
jj
,
ikv
)
=
zwd
(
ji
,
jj
,
ikv
)
-
zDt_2
*
(
rCdU_bot
(
ji
,
jj
+1
)
+
rCdU_bot
(
ji
,
jj
)
)
&
&
+
r_vvl
*
e3v
(
ji
,
jj
,
ikv
,
Kaa
)
! after scale factor at T-point
&
/
e3v
(
ji
,
jj
,
ikv
,
Kaa
)
zwd
(
ji
,
jj
,
ikv
)
=
zwd
(
ji
,
jj
,
ikv
)
-
zDt_2
*
(
rCdU_bot
(
ji
,
jj
+1
)
+
rCdU_bot
(
ji
,
jj
)
)
/
ze3va
END_2D
END_2D
IF
(
ln_isfcav
.OR.
ln_drgice_imp
)
THEN
IF
(
ln_isfcav
.OR.
ln_drgice_imp
)
THEN
DO_2D
(
0
,
0
,
0
,
0
)
DO_2D
(
0
,
0
,
0
,
0
)
ikv
=
mikv
(
ji
,
jj
)
! (first wet ocean u- and v-points)
ikv
=
mikv
(
ji
,
jj
)
! (first wet ocean u- and v-points)
ze3va
=
(
1._wp
-
r_vvl
)
*
e3v
(
ji
,
jj
,
ikv
,
Kmm
)
&
zwd
(
ji
,
jj
,
ikv
)
=
zwd
(
ji
,
jj
,
ikv
)
-
zDt_2
*
(
rCdU_top
(
ji
,
jj
+1
)
+
rCdU_top
(
ji
,
jj
)
)
&
&
+
r_vvl
*
e3v
(
ji
,
jj
,
ikv
,
Kaa
)
! after scale factor at T-point
&
/
e3v
(
ji
,
jj
,
ikv
,
Kaa
)
zwd
(
ji
,
jj
,
ikv
)
=
zwd
(
ji
,
jj
,
ikv
)
-
zDt_2
*
(
rCdU_top
(
ji
,
jj
+1
)
+
rCdU_top
(
ji
,
jj
)
)
/
ze3va
END_2D
END_2D
ENDIF
ENDIF
ENDIF
ENDIF
...
@@ -426,14 +395,13 @@ CONTAINS
...
@@ -426,14 +395,13 @@ CONTAINS
END_3D
END_3D
!
!
DO_2D
(
0
,
0
,
0
,
0
)
!== second recurrence: SOLk = RHSk - Lk / Dk-1 Lk-1 ==!
DO_2D
(
0
,
0
,
0
,
0
)
!== second recurrence: SOLk = RHSk - Lk / Dk-1 Lk-1 ==!
ze3va
=
(
1._wp
-
r_vvl
)
*
e3v
(
ji
,
jj
,
1
,
Kmm
)
&
&
+
r_vvl
*
e3v
(
ji
,
jj
,
1
,
Kaa
)
#if defined key_RK3
#if defined key_RK3
! ! RK3: use only vtau (not vtau_b)
! ! RK3: use only vtau (not vtau_b)
pvv
(
ji
,
jj
,
1
,
Kaa
)
=
pvv
(
ji
,
jj
,
1
,
Kaa
)
+
rDt
*
vtau
(
ji
,
jj
)
/
(
ze3va
*
rho0
)
*
vmask
(
ji
,
jj
,
1
)
pvv
(
ji
,
jj
,
1
,
Kaa
)
=
pvv
(
ji
,
jj
,
1
,
Kaa
)
+
rDt
*
vtau
(
ji
,
jj
)
&
&
/
(
e3v
(
ji
,
jj
,
1
,
Kaa
)
*
rho0
)
*
vmask
(
ji
,
jj
,
1
)
#else
#else
pvv
(
ji
,
jj
,
1
,
Kaa
)
=
pvv
(
ji
,
jj
,
1
,
Kaa
)
+
zDt_2
*
(
vtau_b
(
ji
,
jj
)
+
vtau
(
ji
,
jj
)
)
&
pvv
(
ji
,
jj
,
1
,
Kaa
)
=
pvv
(
ji
,
jj
,
1
,
Kaa
)
+
zDt_2
*
(
vtau_b
(
ji
,
jj
)
+
vtau
(
ji
,
jj
)
)
&
&
/
(
z
e3v
a
*
rho0
)
*
vmask
(
ji
,
jj
,
1
)
&
/
(
e3v
(
ji
,
jj
,
1
,
Kaa
)
*
rho0
)
*
vmask
(
ji
,
jj
,
1
)
#endif
#endif
END_2D
END_2D
DO_3D
(
0
,
0
,
0
,
0
,
2
,
jpkm1
)
DO_3D
(
0
,
0
,
0
,
0
,
2
,
jpkm1
)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment