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
522ad4c1
Commit
522ad4c1
authored
3 years ago
by
“Katherine
Browse files
Options
Downloads
Patches
Plain Diff
going back to original trunk
parent
a2c59863
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/OCE/DIA/diahth.F90
+35
-51
35 additions, 51 deletions
src/OCE/DIA/diahth.F90
with
35 additions
and
51 deletions
src/OCE/DIA/diahth.F90
+
35
−
51
View file @
522ad4c1
...
...
@@ -86,22 +86,22 @@ CONTAINS
INTEGER
,
INTENT
(
in
)
::
kt
! ocean time-step index
INTEGER
,
INTENT
(
in
)
::
Kmm
! ocean time level index
!!
INTEGER
::
ji
,
jj
,
jk
! dummy loop arguments
REAL
(
wp
)
::
zrho3
=
0.03_wp
! density criterion for mixed layer depth
REAL
(
wp
)
::
zrho1
=
0.01_wp
! density criterion for mixed layer depth
REAL
(
wp
)
::
ztem2
=
0.2_wp
! temperature criterion for mixed layer depth
REAL
(
wp
)
::
zztmp
,
zzdep
! temporary scalars inside do loop
REAL
(
wp
)
::
zu
,
zv
,
zw
,
zut
,
zvt
! temporary workspace
REAL
(
wp
),
DIMENSION
(
A2D
(
0
)
)
::
zabs2
! MLD: abs( tn - tn(10m) ) = ztem2
REAL
(
wp
),
DIMENSION
(
A2D
(
0
)
)
::
ztm2
! Top of thermocline: tn = tn(10m) - ztem2
REAL
(
wp
),
DIMENSION
(
A2D
(
0
)
)
::
zrho10_3
! MLD: rho = rho10m + zrho3
REAL
(
wp
),
DIMENSION
(
A2D
(
0
)
)
::
zpycn
! pycnocline: rho = rho10m + (dr/dT)(T,S,10m)*(-0.2 degC)
REAL
(
wp
),
DIMENSION
(
A2D
(
0
)
)
::
ztinv
! max of temperature inversion
REAL
(
wp
),
DIMENSION
(
A2D
(
0
)
)
::
zdepinv
! depth of temperature inversion
REAL
(
wp
),
DIMENSION
(
A2D
(
0
)
)
::
zrho0_3
! MLD rho = rho(surf) = 0.03
REAL
(
wp
),
DIMENSION
(
A2D
(
0
)
)
::
zrho0_1
! MLD rho = rho(surf) = 0.01
REAL
(
wp
),
DIMENSION
(
A2D
(
0
)
)
::
zmaxdzT
! max of dT/dz
REAL
(
wp
),
DIMENSION
(
A2D
(
0
)
)
::
zdelr
! delta rho equivalent to deltaT = 0.2
INTEGER
::
ji
,
jj
,
jk
! dummy loop arguments
REAL
(
wp
)
::
zrho3
=
0.03_wp
! density criterion for mixed layer depth
REAL
(
wp
)
::
zrho1
=
0.01_wp
! density criterion for mixed layer depth
REAL
(
wp
)
::
ztem2
=
0.2_wp
! temperature criterion for mixed layer depth
REAL
(
wp
)
::
zztmp
,
zzdep
! temporary scalars inside do loop
REAL
(
wp
)
::
zu
,
zv
,
zw
,
zut
,
zvt
! temporary workspace
REAL
(
wp
),
DIMENSION
(
jpi
,
jpj
)
::
zabs2
! MLD: abs( tn - tn(10m) ) = ztem2
REAL
(
wp
),
DIMENSION
(
jpi
,
jpj
)
::
ztm2
! Top of thermocline: tn = tn(10m) - ztem2
REAL
(
wp
),
DIMENSION
(
jpi
,
jpj
)
::
zrho10_3
! MLD: rho = rho10m + zrho3
REAL
(
wp
),
DIMENSION
(
jpi
,
jpj
)
::
zpycn
! pycnocline: rho = rho10m + (dr/dT)(T,S,10m)*(-0.2 degC)
REAL
(
wp
),
DIMENSION
(
jpi
,
jpj
)
::
ztinv
! max of temperature inversion
REAL
(
wp
),
DIMENSION
(
jpi
,
jpj
)
::
zdepinv
! depth of temperature inversion
REAL
(
wp
),
DIMENSION
(
jpi
,
jpj
)
::
zrho0_3
! MLD rho = rho(surf) = 0.03
REAL
(
wp
),
DIMENSION
(
jpi
,
jpj
)
::
zrho0_1
! MLD rho = rho(surf) = 0.01
REAL
(
wp
),
DIMENSION
(
jpi
,
jpj
)
::
zmaxdzT
! max of dT/dz
REAL
(
wp
),
DIMENSION
(
jpi
,
jpj
)
::
zdelr
! delta rho equivalent to deltaT = 0.2
!!----------------------------------------------------------------------
IF
(
ln_timing
)
CALL
timing_start
(
'dia_hth'
)
...
...
@@ -126,12 +126,10 @@ CONTAINS
!
IF
(
iom_use
(
'mlddzt'
)
.OR.
iom_use
(
'mldr0_3'
)
.OR.
iom_use
(
'mldr0_1'
)
)
THEN
! initialization
DO_2D
(
0
,
0
,
0
,
0
)
! loop from bottom to 2
ztinv
(
ji
,
jj
)
=
0._wp
zdepinv
(
ji
,
jj
)
=
0._wp
zmaxdzT
(
ji
,
jj
)
=
0._wp
END_2D
DO_2D
(
0
,
0
,
0
,
0
)
ztinv
(:,:)
=
0._wp
zdepinv
(:,:)
=
0._wp
zmaxdzT
(:,:)
=
0._wp
DO_2D
(
1
,
1
,
1
,
1
)
zztmp
=
gdepw
(
ji
,
jj
,
mbkt
(
ji
,
jj
)
+1
,
Kmm
)
hth
(
ji
,
jj
)
=
zztmp
zabs2
(
ji
,
jj
)
=
zztmp
...
...
@@ -140,7 +138,7 @@ CONTAINS
zpycn
(
ji
,
jj
)
=
zztmp
END_2D
IF
(
nla10
>
1
)
THEN
DO_2D
(
0
,
0
,
0
,
0
)
DO_2D
(
1
,
1
,
1
,
1
)
zztmp
=
gdepw
(
ji
,
jj
,
mbkt
(
ji
,
jj
)
+1
,
Kmm
)
zrho0_3
(
ji
,
jj
)
=
zztmp
zrho0_1
(
ji
,
jj
)
=
zztmp
...
...
@@ -149,7 +147,7 @@ CONTAINS
! Preliminary computation
! computation of zdelr = (dr/dT)(T,S,10m)*(-0.2 degC)
DO_2D
(
0
,
0
,
0
,
0
)
DO_2D
(
1
,
1
,
1
,
1
)
IF
(
tmask
(
ji
,
jj
,
nla10
)
==
1.
)
THEN
zu
=
1779.50
+
11.250
*
ts
(
ji
,
jj
,
nla10
,
jp_tem
,
Kmm
)
-
3.80
*
ts
(
ji
,
jj
,
nla10
,
jp_sal
,
Kmm
)
&
&
-
0.0745
*
ts
(
ji
,
jj
,
nla10
,
jp_tem
,
Kmm
)
*
ts
(
ji
,
jj
,
nla10
,
jp_tem
,
Kmm
)
&
...
...
@@ -171,7 +169,7 @@ CONTAINS
! MLD: rho = rho(1) + zrho3 !
! MLD: rho = rho(1) + zrho1 !
! ------------------------------------------------------------- !
DO_3DS
(
0
,
0
,
0
,
0
,
jpkm1
,
2
,
-1
)
! loop from bottom to 2
DO_3DS
(
1
,
1
,
1
,
1
,
jpkm1
,
2
,
-1
)
! loop from bottom to 2
!
zzdep
=
gdepw
(
ji
,
jj
,
jk
,
Kmm
)
zztmp
=
(
ts
(
ji
,
jj
,
jk
-1
,
jp_tem
,
Kmm
)
-
ts
(
ji
,
jj
,
jk
,
jp_tem
,
Kmm
)
)
&
...
...
@@ -208,7 +206,7 @@ CONTAINS
! temperature inversion: max( 0, max of tn - tn(10m) ) !
! depth of temperature inversion !
! ------------------------------------------------------------- !
DO_3DS
(
0
,
0
,
0
,
0
,
jpkm1
,
nlb10
,
-1
)
! loop from bottom to nlb10
DO_3DS
(
1
,
1
,
1
,
1
,
jpkm1
,
nlb10
,
-1
)
! loop from bottom to nlb10
!
zzdep
=
gdepw
(
ji
,
jj
,
jk
,
Kmm
)
*
tmask
(
ji
,
jj
,
1
)
!
...
...
@@ -300,16 +298,13 @@ CONTAINS
!
INTEGER
::
ji
,
jj
,
jk
,
iid
REAL
(
wp
)
::
zztmp
,
zzdep
INTEGER
,
DIMENSION
(
A2D
(
0
)
)
::
iktem
INTEGER
,
DIMENSION
(
jpi
,
jpj
)
::
iktem
! --------------------------------------- !
! search deepest level above ptem !
! --------------------------------------- !
DO_2D
(
0
,
0
,
0
,
0
)
iktem
(
ji
,
jj
)
=
1
END_2D
DO_3D
(
0
,
0
,
0
,
0
,
1
,
jpkm1
)
! beware temperature is not always decreasing with depth => loop from top to bottom
iktem
(:,:)
=
1
DO_3D
(
1
,
1
,
1
,
1
,
1
,
jpkm1
)
! beware temperature is not always decreasing with depth => loop from top to bottom
zztmp
=
ts
(
ji
,
jj
,
jk
,
jp_tem
,
Kmm
)
IF
(
zztmp
>=
ptem
)
iktem
(
ji
,
jj
)
=
jk
END_3D
...
...
@@ -317,7 +312,7 @@ CONTAINS
! ------------------------------- !
! Depth of ptem isotherm !
! ------------------------------- !
DO_2D
(
0
,
0
,
0
,
0
)
DO_2D
(
1
,
1
,
1
,
1
)
!
zzdep
=
gdepw
(
ji
,
jj
,
mbkt
(
ji
,
jj
)
+1
,
Kmm
)
! depth of the ocean bottom
!
...
...
@@ -344,29 +339,18 @@ CONTAINS
REAL
(
wp
),
DIMENSION
(
jpi
,
jpj
),
INTENT
(
inout
)
::
phtc
!
INTEGER
::
ji
,
jj
,
jk
,
ik
REAL
(
wp
),
DIMENSION
(
A2D
(
0
)
)
::
zthick
INTEGER
,
DIMENSION
(
A2D
(
0
)
)
::
ilevel
REAL
(
wp
),
DIMENSION
(
jpi
,
jpj
)
::
zthick
INTEGER
,
DIMENSION
(
jpi
,
jpj
)
::
ilevel
! surface boundary condition
IF
(
.NOT.
ln_linssh
)
THEN
DO_2D
(
0
,
0
,
0
,
0
)
zthick
(
ji
,
jj
)
=
0._wp
phtc
(
ji
,
jj
)
=
0._wp
END_2D
ELSE
DO_2D
(
0
,
0
,
0
,
0
)
zthick
(
ji
,
jj
)
=
ssh
(
ji
,
jj
,
Kmm
)
phtc
(
ji
,
jj
)
=
pt
(
ji
,
jj
,
1
)
*
ssh
(
ji
,
jj
,
Kmm
)
*
tmask
(
ji
,
jj
,
1
)
END_2D
IF
(
.NOT.
ln_linssh
)
THEN
;
zthick
(:,:)
=
0._wp
;
phtc
(:,:)
=
0._wp
ELSE
;
zthick
(:,:)
=
ssh
(:,:,
Kmm
)
;
phtc
(:,:)
=
pt
(:,:,
1
)
*
ssh
(:,:,
Kmm
)
*
tmask
(:,:,
1
)
ENDIF
!
DO_2D
(
0
,
0
,
0
,
0
)
ilevel
(
ji
,
jj
)
=
1
END_2D
!
DO_3D
(
0
,
0
,
0
,
0
,
1
,
jpkm1
)
ilevel
(:,:)
=
1
DO_3D
(
1
,
1
,
1
,
1
,
1
,
jpkm1
)
IF
(
(
gdepw
(
ji
,
jj
,
jk
+1
,
Kmm
)
<
pdep
)
.AND.
(
tmask
(
ji
,
jj
,
jk
)
==
1
)
)
THEN
ilevel
(
ji
,
jj
)
=
jk
+1
zthick
(
ji
,
jj
)
=
zthick
(
ji
,
jj
)
+
e3t
(
ji
,
jj
,
jk
,
Kmm
)
...
...
@@ -374,7 +358,7 @@ CONTAINS
ENDIF
END_3D
!
DO_2D
(
0
,
0
,
0
,
0
)
DO_2D
(
1
,
1
,
1
,
1
)
ik
=
ilevel
(
ji
,
jj
)
IF
(
tmask
(
ji
,
jj
,
ik
)
==
1
)
THEN
zthick
(
ji
,
jj
)
=
MIN
(
gdepw
(
ji
,
jj
,
ik
+1
,
Kmm
),
pdep
)
-
zthick
(
ji
,
jj
)
! remaining thickness to reach dephw pdep
...
...
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