Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Open sidebar
Knut Klingbeil
getm
Commits
efec9239
Commit
efec9239
authored
Feb 19, 2019
by
Knut
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'INPUT_DIR' into REAL_4B
parents
d8304b4a
abe17357
Pipeline
#154
failed with stages
Changes
14
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
727 additions
and
189 deletions
+727
-189
src/2d/bdy_2d.F90
src/2d/bdy_2d.F90
+52
-16
src/2d/m2d.F90
src/2d/m2d.F90
+2
-3
src/2d/variables_2d.F90
src/2d/variables_2d.F90
+3
-4
src/3d/m3d.F90
src/3d/m3d.F90
+2
-2
src/3d/salinity.F90
src/3d/salinity.F90
+3
-3
src/3d/temperature.F90
src/3d/temperature.F90
+3
-3
src/3d/variables_3d.F90
src/3d/variables_3d.F90
+4
-4
src/3d/vertical_coordinates.F90
src/3d/vertical_coordinates.F90
+2
-2
src/coupling/getm_esmf.F90
src/coupling/getm_esmf.F90
+232
-97
src/getm/initialise.F90
src/getm/initialise.F90
+2
-1
src/getm/register_all_variables.F90
src/getm/register_all_variables.F90
+7
-0
src/les/les_smagorinsky_sym.F90
src/les/les_smagorinsky_sym.F90
+225
-0
src/ncdf/ncdf_meteo.F90
src/ncdf/ncdf_meteo.F90
+87
-27
src/output/output_processing.F90
src/output/output_processing.F90
+103
-27
No files found.
src/2d/bdy_2d.F90
View file @
efec9239
...
...
@@ -390,16 +390,18 @@
select
case
(
bdy_2d_type
(
l
))
case
(
ZERO_GRADIENT
,
CLAMPED_VEL
,
FLATHER_VEL
)
do
j
=
wfj
(
n
),
wlj
(
n
)
z
(
i
,
j
)
=
z
(
i
+1
,
j
)
if
(
az
(
i
+1
,
j
)
.ne.
0
)
z
(
i
,
j
)
=
z
(
i
+1
,
j
)
end
do
case
(
SOMMERFELD
)
do
j
=
wfj
(
n
),
wlj
(
n
)
if
(
az
(
i
+1
,
j
)
.ne.
0
)
then
cfl
=
sqrt
(
g
*
_
HALF_
*
(
D
(
i
,
j
)
+
D
(
i
+1
,
j
)))
*
dtm
/
DXU
z
(
i
,
j
)
=
(
&
(
_
ONE_
-
_
TWO_
*
cfl
*
(
_
ONE_
-
theta
))
*
z
(
i
,
j
)
&
+
(
_
ONE_
+
_
TWO_
*
cfl
*
(
_
ONE_
-
theta
))
*
zo
(
i
+1
,
j
)
&
-
(
_
ONE_
-
_
TWO_
*
cfl
*
theta
)
*
z
(
i
+1
,
j
)
&
)/(
_
ONE_
+
_
TWO_
*
cfl
*
theta
)
end
if
end
do
case
(
CLAMPED_ELEV
,
CLAMPED
)
do
j
=
wfj
(
n
),
wlj
(
n
)
...
...
@@ -409,13 +411,16 @@
end
do
case
(
FLATHER_ELEV
)
do
j
=
wfj
(
n
),
wlj
(
n
)
if
(
az
(
i
+1
,
j
)
.ne.
0
)
then
! Note (KK): approximate interface depths at vel-time stage
! by spatial mean at last sse-time stage
depth
=
_
HALF_
*
(
D
(
i
,
j
)
+
D
(
i
+1
,
j
))
! Note (KK): note approximation of sse at vel-time stage
a
=
ramp
*
bdy_data
(
kl
)
&
-
_
TWO_
/
sqrt
(
g
*
depth
)
*
(
U
(
i
,
j
)
-
ramp
*
bdy_data_u
(
kl
)
*
depth
)
z
(
i
,
j
)
=
max
(
a
,
-
H
(
i
,
j
)
+
min_depth
)
a
=
_
TWO_
/
sqrt
(
g
*
depth
)
*
(
U
(
i
,
j
)
-
ramp
*
bdy_data_u
(
kl
)
*
depth
)
else
a
=
_
ZERO_
end
if
z
(
i
,
j
)
=
max
(
ramp
*
bdy_data
(
kl
)
-
a
,
-
H
(
i
,
j
)
+
min_depth
)
k
=
k
+1
kl
=
kl
+
1
end
do
...
...
@@ -429,16 +434,18 @@
select
case
(
bdy_2d_type
(
l
))
case
(
ZERO_GRADIENT
,
CLAMPED_VEL
,
FLATHER_VEL
)
do
i
=
nfi
(
n
),
nli
(
n
)
z
(
i
,
j
)
=
z
(
i
,
j
-1
)
if
(
az
(
i
,
j
-1
)
.ne.
0
)
z
(
i
,
j
)
=
z
(
i
,
j
-1
)
end
do
case
(
SOMMERFELD
)
do
i
=
nfi
(
n
),
nli
(
n
)
if
(
az
(
i
,
j
-1
)
.ne.
0
)
then
cfl
=
sqrt
(
g
*
_
HALF_
*
(
D
(
i
,
j
-1
)
+
D
(
i
,
j
)))
*
dtm
/
DYVJM1
z
(
i
,
j
)
=
(
&
(
_
ONE_
-
_
TWO_
*
cfl
*
(
_
ONE_
-
theta
))
*
z
(
i
,
j
)
&
+
(
_
ONE_
+
_
TWO_
*
cfl
*
(
_
ONE_
-
theta
))
*
zo
(
i
,
j
-1
)
&
-
(
_
ONE_
-
_
TWO_
*
cfl
*
theta
)
*
z
(
i
,
j
-1
)
&
)/(
_
ONE_
+
_
TWO_
*
cfl
*
theta
)
end
if
end
do
case
(
CLAMPED_ELEV
,
CLAMPED
)
do
i
=
nfi
(
n
),
nli
(
n
)
...
...
@@ -448,13 +455,16 @@
end
do
case
(
FLATHER_ELEV
)
do
i
=
nfi
(
n
),
nli
(
n
)
if
(
az
(
i
,
j
-1
)
.ne.
0
)
then
! Note (KK): approximate interface depths at vel-time stage
! by spatial mean at last sse-time stage
depth
=
_
HALF_
*
(
D
(
i
,
j
-1
)
+
D
(
i
,
j
))
! Note (KK): note approximation of sse at vel-time stage
a
=
ramp
*
bdy_data
(
kl
)
&
+
_
TWO_
/
sqrt
(
g
*
depth
)
*
(
V
(
i
,
j
-1
)
-
ramp
*
bdy_data_v
(
kl
)
*
depth
)
z
(
i
,
j
)
=
max
(
a
,
-
H
(
i
,
j
)
+
min_depth
)
a
=
_
TWO_
/
sqrt
(
g
*
depth
)
*
(
V
(
i
,
j
-1
)
-
ramp
*
bdy_data_v
(
kl
)
*
depth
)
else
a
=
_
ZERO_
end
if
z
(
i
,
j
)
=
max
(
ramp
*
bdy_data
(
kl
)
+
a
,
-
H
(
i
,
j
)
+
min_depth
)
k
=
k
+1
kl
=
kl
+
1
end
do
...
...
@@ -468,16 +478,18 @@
select
case
(
bdy_2d_type
(
l
))
case
(
ZERO_GRADIENT
,
CLAMPED_VEL
,
FLATHER_VEL
)
do
j
=
efj
(
n
),
elj
(
n
)
z
(
i
,
j
)
=
z
(
i
-1
,
j
)
if
(
az
(
i
-1
,
j
)
.ne.
0
)
z
(
i
,
j
)
=
z
(
i
-1
,
j
)
end
do
case
(
SOMMERFELD
)
do
j
=
efj
(
n
),
elj
(
n
)
if
(
az
(
i
-1
,
j
)
.ne.
0
)
then
cfl
=
sqrt
(
g
*
_
HALF_
*
(
D
(
i
-1
,
j
)
+
D
(
i
,
j
)))
*
dtm
/
DXUIM1
z
(
i
,
j
)
=
(
&
(
_
ONE_
-
_
TWO_
*
cfl
*
(
_
ONE_
-
theta
))
*
z
(
i
,
j
)
&
+
(
_
ONE_
+
_
TWO_
*
cfl
*
(
_
ONE_
-
theta
))
*
zo
(
i
-1
,
j
)
&
-
(
_
ONE_
-
_
TWO_
*
cfl
*
theta
)
*
z
(
i
-1
,
j
)
&
)/(
_
ONE_
+
_
TWO_
*
cfl
*
theta
)
end
if
end
do
case
(
CLAMPED_ELEV
,
CLAMPED
)
do
j
=
efj
(
n
),
elj
(
n
)
...
...
@@ -487,13 +499,16 @@
end
do
case
(
FLATHER_ELEV
)
do
j
=
efj
(
n
),
elj
(
n
)
if
(
az
(
i
-1
,
j
)
.ne.
0
)
then
! Note (KK): approximate interface depths at vel-time stage
! by spatial mean at last sse-time stage
depth
=
_
HALF_
*
(
D
(
i
-1
,
j
)
+
D
(
i
,
j
))
! Note (KK): note approximation of sse at vel-time stage
a
=
ramp
*
bdy_data
(
kl
)
&
+
_
TWO_
/
sqrt
(
g
*
depth
)
*
(
U
(
i
-1
,
j
)
-
ramp
*
bdy_data_u
(
kl
)
*
depth
)
z
(
i
,
j
)
=
max
(
a
,
-
H
(
i
,
j
)
+
min_depth
)
a
=
_
TWO_
/
sqrt
(
g
*
depth
)
*
(
U
(
i
-1
,
j
)
-
ramp
*
bdy_data_u
(
kl
)
*
depth
)
else
a
=
_
ZERO_
end
if
z
(
i
,
j
)
=
max
(
ramp
*
bdy_data
(
kl
)
+
a
,
-
H
(
i
,
j
)
+
min_depth
)
k
=
k
+1
kl
=
kl
+
1
end
do
...
...
@@ -507,16 +522,18 @@
select
case
(
bdy_2d_type
(
l
))
case
(
ZERO_GRADIENT
,
CLAMPED_VEL
,
FLATHER_VEL
)
do
i
=
sfi
(
n
),
sli
(
n
)
z
(
i
,
j
)
=
z
(
i
,
j
+1
)
if
(
az
(
i
,
j
+1
)
.ne.
0
)
z
(
i
,
j
)
=
z
(
i
,
j
+1
)
end
do
case
(
SOMMERFELD
)
do
i
=
sfi
(
n
),
sli
(
n
)
if
(
az
(
i
,
j
+1
)
.ne.
0
)
then
cfl
=
sqrt
(
g
*
_
HALF_
*
(
D
(
i
,
j
)
+
D
(
i
,
j
+1
)))
*
dtm
/
DYV
z
(
i
,
j
)
=
(
&
(
_
ONE_
-
_
TWO_
*
cfl
*
(
_
ONE_
-
theta
))
*
z
(
i
,
j
)
&
+
(
_
ONE_
+
_
TWO_
*
cfl
*
(
_
ONE_
-
theta
))
*
zo
(
i
,
j
+1
)
&
-
(
_
ONE_
-
_
TWO_
*
cfl
*
theta
)
*
z
(
i
,
j
+1
)
&
)/(
_
ONE_
+
_
TWO_
*
cfl
*
theta
)
end
if
end
do
case
(
CLAMPED_ELEV
,
CLAMPED
)
do
i
=
sfi
(
n
),
sli
(
n
)
...
...
@@ -526,13 +543,16 @@
end
do
case
(
FLATHER_ELEV
)
do
i
=
sfi
(
n
),
sli
(
n
)
if
(
az
(
i
,
j
+1
)
.ne.
0
)
then
! Note (KK): approximate interface depths at vel-time stage
! by spatial mean at last sse-time stage
depth
=
_
HALF_
*
(
D
(
i
,
j
)
+
D
(
i
,
j
+1
))
! Note (KK): note approximation of sse at vel-time stage
a
=
ramp
*
bdy_data
(
kl
)
&
-
_
TWO_
/
sqrt
(
g
*
depth
)
*
(
V
(
i
,
j
)
-
ramp
*
bdy_data_v
(
kl
)
*
depth
)
z
(
i
,
j
)
=
max
(
a
,
-
H
(
i
,
j
)
+
min_depth
)
a
=
_
TWO_
/
sqrt
(
g
*
depth
)
*
(
V
(
i
,
j
)
-
ramp
*
bdy_data_v
(
kl
)
*
depth
)
else
a
=
_
ZERO_
end
if
z
(
i
,
j
)
=
max
(
ramp
*
bdy_data
(
kl
)
-
a
,
-
H
(
i
,
j
)
+
min_depth
)
k
=
k
+1
kl
=
kl
+
1
end
do
...
...
@@ -627,6 +647,7 @@
select
case
(
bdy_2d_type
(
l
))
case
(
FLATHER_VEL
)
do
j
=
wfj
(
n
),
wlj
(
n
)
if
(
az
(
i
+1
,
j
)
.ne.
0
)
then
! Note (KK): approximate interface depths at vel-time stage
! by spatial mean at last sse-time stage
depth
=
_
HALF_
*
(
D
(
i
,
j
)
+
D
(
i
+1
,
j
))
...
...
@@ -636,11 +657,13 @@
if
(
waveforcing_method
.ne.
NO_WAVES
)
then
UEuler
(
i
,
j
)
=
U
(
i
,
j
)
-
UStokes
(
i
,
j
)
end
if
end
if
k
=
k
+1
kl
=
kl
+
1
end
do
case
(
CLAMPED_VEL
,
CLAMPED
)
do
j
=
wfj
(
n
),
wlj
(
n
)
if
(
az
(
i
+1
,
j
)
.ne.
0
)
then
! Note (KK): approximate interface depths at vel-time stage
! by spatial mean at last sse-time stage
depth
=
_
HALF_
*
(
D
(
i
,
j
)
+
D
(
i
+1
,
j
))
...
...
@@ -648,6 +671,7 @@
if
(
waveforcing_method
.ne.
NO_WAVES
)
then
UEuler
(
i
,
j
)
=
U
(
i
,
j
)
-
UStokes
(
i
,
j
)
end
if
end
if
k
=
k
+1
kl
=
kl
+
1
end
do
...
...
@@ -662,6 +686,7 @@
select
case
(
bdy_2d_type
(
l
))
case
(
FLATHER_VEL
)
do
j
=
efj
(
n
),
elj
(
n
)
if
(
az
(
i
-1
,
j
)
.ne.
0
)
then
! Note (KK): approximate interface depths at vel-time stage
! by spatial mean at last sse-time stage
depth
=
_
HALF_
*
(
D
(
i
-1
,
j
)
+
D
(
i
,
j
))
...
...
@@ -671,11 +696,13 @@
if
(
waveforcing_method
.ne.
NO_WAVES
)
then
UEuler
(
i
-1
,
j
)
=
U
(
i
-1
,
j
)
-
UStokes
(
i
-1
,
j
)
end
if
end
if
k
=
k
+1
kl
=
kl
+
1
end
do
case
(
CLAMPED_VEL
,
CLAMPED
)
do
j
=
efj
(
n
),
elj
(
n
)
if
(
az
(
i
-1
,
j
)
.ne.
0
)
then
! Note (KK): approximate interface depths at vel-time stage
! by spatial mean at last sse-time stage
depth
=
_
HALF_
*
(
D
(
i
-1
,
j
)
+
D
(
i
,
j
))
...
...
@@ -683,6 +710,7 @@
if
(
waveforcing_method
.ne.
NO_WAVES
)
then
UEuler
(
i
-1
,
j
)
=
U
(
i
-1
,
j
)
-
UStokes
(
i
-1
,
j
)
end
if
end
if
k
=
k
+1
kl
=
kl
+
1
end
do
...
...
@@ -700,6 +728,7 @@
select
case
(
bdy_2d_type
(
l
))
case
(
FLATHER_VEL
)
do
i
=
nfi
(
n
),
nli
(
n
)
if
(
az
(
i
,
j
-1
)
.ne.
0
)
then
! Note (KK): approximate interface depths at vel-time stage
! by spatial mean at last sse-time stage
depth
=
_
HALF_
*
(
D
(
i
,
j
-1
)
+
D
(
i
,
j
))
...
...
@@ -709,11 +738,13 @@
if
(
waveforcing_method
.ne.
NO_WAVES
)
then
VEuler
(
i
,
j
-1
)
=
V
(
i
,
j
-1
)
-
VStokes
(
i
,
j
-1
)
end
if
end
if
k
=
k
+1
kl
=
kl
+
1
end
do
case
(
CLAMPED_VEL
,
CLAMPED
)
do
i
=
nfi
(
n
),
nli
(
n
)
if
(
az
(
i
,
j
-1
)
.ne.
0
)
then
! Note (KK): approximate interface depths at vel-time stage
! by spatial mean at last sse-time stage
depth
=
_
HALF_
*
(
D
(
i
,
j
-1
)
+
D
(
i
,
j
))
...
...
@@ -721,6 +752,7 @@
if
(
waveforcing_method
.ne.
NO_WAVES
)
then
VEuler
(
i
,
j
-1
)
=
V
(
i
,
j
-1
)
-
VStokes
(
i
,
j
-1
)
end
if
end
if
k
=
k
+1
kl
=
kl
+
1
end
do
...
...
@@ -735,6 +767,7 @@
select
case
(
bdy_2d_type
(
l
))
case
(
FLATHER_VEL
)
do
i
=
sfi
(
n
),
sli
(
n
)
if
(
az
(
i
,
j
+1
)
.ne.
0
)
then
! Note (KK): approximate interface depths at vel-time stage
! by spatial mean at last sse-time stage
depth
=
_
HALF_
*
(
D
(
i
,
j
)
+
D
(
i
,
j
+1
))
...
...
@@ -744,11 +777,13 @@
if
(
waveforcing_method
.ne.
NO_WAVES
)
then
VEuler
(
i
,
j
)
=
V
(
i
,
j
)
-
VStokes
(
i
,
j
)
end
if
end
if
k
=
k
+1
kl
=
kl
+
1
end
do
case
(
CLAMPED_VEL
,
CLAMPED
)
do
i
=
sfi
(
n
),
sli
(
n
)
if
(
az
(
i
,
j
+1
)
.ne.
0
)
then
! Note (KK): approximate interface depths at vel-time stage
! by spatial mean at last sse-time stage
depth
=
_
HALF_
*
(
D
(
i
,
j
)
+
D
(
i
,
j
+1
))
...
...
@@ -756,6 +791,7 @@
if
(
waveforcing_method
.ne.
NO_WAVES
)
then
VEuler
(
i
,
j
)
=
V
(
i
,
j
)
-
VStokes
(
i
,
j
)
end
if
end
if
k
=
k
+1
kl
=
kl
+
1
end
do
...
...
src/2d/m2d.F90
View file @
efec9239
...
...
@@ -167,7 +167,6 @@
integer
::
i
,
j
integer
::
elev_method
=
1
REALTYPE
::
elev_const
=
_
ZERO_
integer
,
parameter
::
rk
=
kind
(
_
ONE_
)
character
(
LEN
=
PATH_MAX
)
::
elev_file
=
'elev.nc'
namelist
/
m2d
/
&
elev_method
,
elev_const
,
elev_file
,
&
...
...
@@ -434,8 +433,8 @@
! This is only needed for proper flexible output
where
(
az
.eq.
0
)
z
=
-9999.
0d0
zo
=
-9999.
0d0
z
=
-9999.
_rk
zo
=
-9999.
_rk
end
where
return
...
...
src/2d/variables_2d.F90
View file @
efec9239
...
...
@@ -23,6 +23,7 @@
IMPLICIT
NONE
!
! !PUBLIC DATA MEMBERS:
integer
,
parameter
::
rk
=
kind
(
_
ONE_
)
REALTYPE
::
dtm
REALTYPE
,
dimension
(:,:),
pointer
::
zo
,
z
logical
::
deformC
=
.false.
...
...
@@ -121,7 +122,6 @@
!
! !LOCAL VARIABLES:
integer
::
rc
integer
,
parameter
::
rk
=
kind
(
_
ONE_
)
!EOP
!-------------------------------------------------------------------------
!BOC
...
...
@@ -174,12 +174,12 @@
end
if
z
=
-9999
*
_
ONE_
;
zo
=
_
ZERO_
z
=
-9999
._rk
;
zo
=
_
ZERO_
U
=
_
ZERO_
;
DU
=
_
ZERO_
;
Uint
=
_
ZERO_
;
UEx
=
_
ZERO_
V
=
_
ZERO_
;
DV
=
_
ZERO_
;
Vint
=
_
ZERO_
;
VEx
=
_
ZERO_
velx
=
-9999.
0
;
vely
=
-9999.
0
velx
=
-9999.
_rk
;
vely
=
-9999.
_rk
where
(
az
.gt.
0
)
velx
=
_
ZERO_
;
vely
=
_
ZERO_
end
where
...
...
@@ -336,7 +336,6 @@
!
! !LOCAL VARIABLES:
logical
::
used
integer
,
parameter
::
rk
=
kind
(
_
ONE_
)
!EOP
!-----------------------------------------------------------------------
!BOC
...
...
src/3d/m3d.F90
View file @
efec9239
...
...
@@ -442,8 +442,8 @@
num
(
i
,
j
,:)
=
1.e-15
nuh
(
i
,
j
,:)
=
1.e-15
#ifndef NO_BAROCLINIC
S
(
i
,
j
,:)
=
-9999.
0
T
(
i
,
j
,:)
=
-9999.
0
S
(
i
,
j
,:)
=
-9999.
_rk
T
(
i
,
j
,:)
=
-9999.
_rk
#endif
end
if
end
do
...
...
src/3d/salinity.F90
View file @
efec9239
...
...
@@ -19,7 +19,7 @@
use
domain
,
only
:
imin
,
jmin
,
imax
,
jmax
,
kmax
,
H
,
az
,
dry_z
!KB use get_field, only: get_3d_field
use
variables_2d
,
only
:
fwf_int
use
variables_3d
,
only
:
S
,
hn
,
kmin
use
variables_3d
,
only
:
rk
,
S
,
hn
,
kmin
use
meteo
,
only
:
metforcing
,
met_method
,
nudge_sss
,
sss
use
meteo
,
only
:
METEO_CONST
,
METEO_FROMFILE
,
METEO_FROMEXT
use
halo_zones
,
only
:
update_3d_halo
,
wait_halo
,
D_TAG
,
H_TAG
...
...
@@ -305,8 +305,8 @@
stop
'init_salinity'
end
select
S
(:,:,
0
)
=
-9999
*
_
ONE_
forall
(
i
=
imin
:
imax
,
j
=
jmin
:
jmax
,
az
(
i
,
j
)
.eq.
0
)
S
(
i
,
j
,:)
=
-9999
*
_
ONE_
S
(:,:,
0
)
=
-9999
._rk
forall
(
i
=
imin
:
imax
,
j
=
jmin
:
jmax
,
az
(
i
,
j
)
.eq.
0
)
S
(
i
,
j
,:)
=
-9999
._rk
call
update_3d_halo
(
S
,
S
,
az
,
imin
,
jmin
,
imax
,
jmax
,
kmax
,
D_TAG
)
call
wait_halo
(
D_TAG
)
...
...
src/3d/temperature.F90
View file @
efec9239
...
...
@@ -20,7 +20,7 @@
use
domain
,
only
:
imin
,
jmin
,
imax
,
kmax
,
jmax
,
H
,
az
,
dry_z
use
domain
,
only
:
ill
,
ihl
,
jll
,
jhl
use
domain
,
only
:
ilg
,
ihg
,
jlg
,
jhg
use
variables_3d
,
only
:
T
,
rad
,
hn
,
kmin
,
A
,
g1
,
g2
,
heatflux_net
use
variables_3d
,
only
:
rk
,
T
,
rad
,
hn
,
kmin
,
A
,
g1
,
g2
,
heatflux_net
use
meteo
,
only
:
metforcing
,
met_method
,
nudge_sst
,
sst
use
meteo
,
only
:
METEO_CONST
,
METEO_FROMFILE
,
METEO_FROMEXT
!KB use get_field, only: get_3d_field
...
...
@@ -375,8 +375,8 @@ end interface
stop
'init_temperature'
end
select
T
(:,:,
0
)
=
-9999
*
_
ONE_
forall
(
i
=
imin
:
imax
,
j
=
jmin
:
jmax
,
az
(
i
,
j
)
.eq.
0
)
T
(
i
,
j
,:)
=
-9999
*
_
ONE_
T
(:,:,
0
)
=
-9999
._rk
forall
(
i
=
imin
:
imax
,
j
=
jmin
:
jmax
,
az
(
i
,
j
)
.eq.
0
)
T
(
i
,
j
,:)
=
-9999
._rk
call
update_3d_halo
(
T
,
T
,
az
,
imin
,
jmin
,
imax
,
jmax
,
kmax
,
D_TAG
)
call
wait_halo
(
D_TAG
)
...
...
src/3d/variables_3d.F90
View file @
efec9239
...
...
@@ -117,6 +117,7 @@
IMPLICIT
NONE
!
! !PUBLIC DATA MEMBERS:
integer
,
parameter
::
rk
=
kind
(
_
ONE_
)
REALTYPE
::
dt
,
cnpar
=
0.9
REALTYPE
::
avmback
=
_
ZERO_
,
avhback
=
_
ZERO_
logical
::
do_numerical_analyses_3d
=
.false.
...
...
@@ -213,7 +214,6 @@
!
! !LOCAL VARIABLES:
integer
::
i
,
j
,
rc
integer
,
parameter
::
rk
=
kind
(
_
ONE_
)
!EOP
!-------------------------------------------------------------------------
!BOC
...
...
@@ -315,8 +315,8 @@
#endif
! must be nonzero for gotm_fabm in case of calc_temp=F
g1
=
-9999
*
_
ONE_
g2
=
-9999
*
_
ONE_
g1
=
-9999
._rk
g2
=
-9999
._rk
#ifdef STRUCTURE_FRICTION
sf
=
_
ZERO_
...
...
@@ -513,7 +513,7 @@
! Original author(s): Karsten Bolding & Jorn Bruggeman
!
! !LOCAL VARIABLES:
integer
,
parameter
::
rk
=
kind
(
_
ONE_
)
!
!EOP
!-----------------------------------------------------------------------
!BOC
...
...
src/3d/vertical_coordinates.F90
View file @
efec9239
...
...
@@ -183,9 +183,9 @@ stop
! calculate the z-coordinate of the cell centers
! references to mean sea level
zc
(:,:,
0
)
=-
H
(:,:)
zc
(:,:,
1
)
=-
H
(:,:)
+
0.5
*
hn
(:,:,
1
)
zc
(:,:,
1
)
=-
H
(:,:)
+
_
HALF_
*
hn
(:,:,
1
)
do
k
=
2
,
kmax
zc
(:,:,
k
)
=
zc
(:,:,
k
-1
)
+
0.5
*
(
hn
(:,:,
k
-1
)
+
hn
(:,:,
k
))
zc
(:,:,
k
)
=
zc
(:,:,
k
-1
)
+
_
HALF_
*
(
hn
(:,:,
k
-1
)
+
hn
(:,:,
k
))
end
do
#ifdef SLICE_MODEL
...
...
src/coupling/getm_esmf.F90
View file @
efec9239
#include "cppdefs.h"
!
#define
ALLEXPORT
#define
_GETM_NUOPC_
!-----------------------------------------------------------------------
!BOP
!
...
...
@@ -97,6 +97,16 @@
"wind_x_velocity_at_10m"
character
(
len
=*
),
parameter
::
name_windV
=
&
"wind_y_velocity_at_10m"
character
(
len
=*
),
parameter
::
name_airT2
=
&
"air_temperature_at_2m"
character
(
len
=*
),
parameter
::
name_humr
=
&
"relative_humidity"
character
(
len
=*
),
parameter
::
name_hums
=
&
"specific_humidity"
character
(
len
=*
),
parameter
::
name_dev2
=
&
"dew_point_temperature"
character
(
len
=*
),
parameter
::
name_tcc
=
&
"total_cloud_cover"
!
! !REVISION HISTORY:
! Original author(s): Knut Klingbeil
...
...
@@ -461,26 +471,28 @@
InitializePhaseMap
(
1
)
=
"IPDv00p1=1"
InitializePhaseMap
(
2
)
=
"IPDv00p2=2"
! Note (KK): NUOPC attributes are purpose="Instance"
#if 1
#ifdef _GETM_NUOPC_
call
NUOPC_CompAttributeAdd
(
getmComp
,(/
"InitializePhaseMap"
/),
rc
=
rc
)
#else
call
ESMF_AttributeAdd
(
getmComp
,
convention
=
"NUOPC"
,
purpose
=
"General"
,
&
attrList
=
(/
"InitializePhaseMap"
/),
rc
=
rc
)
#endif
abort
=
ESMF_LogFoundError
(
rc
,
line
=
__
LINE__
,
file
=
FILENAME
)
if
(
abort
)
call
ESMF_Finalize
(
endflag
=
ESMF_END_ABORT
)
#if 1
call
NUOPC_CompAttributeSet
(
getmComp
,
"InitializePhaseMap"
,
&
InitializePhaseMap
,
rc
=
rc
)
abort
=
ESMF_LogFoundError
(
rc
,
line
=
__
LINE__
,
file
=
FILENAME
)
if
(
abort
)
call
ESMF_Finalize
(
endflag
=
ESMF_END_ABORT
)
#else
! Note (KK): NUOPC attributes are purpose="Instance"
call
ESMF_AttributeAdd
(
getmComp
,
convention
=
"NUOPC"
,
purpose
=
"General"
,
&
attrList
=
(/
"InitializePhaseMap"
/),
rc
=
rc
)
abort
=
ESMF_LogFoundError
(
rc
,
line
=
__
LINE__
,
file
=
FILENAME
)
if
(
abort
)
call
ESMF_Finalize
(
endflag
=
ESMF_END_ABORT
)
call
ESMF_AttributeSet
(
getmComp
,
name
=
"InitializePhaseMap"
,
&
valueList
=
InitializePhaseMap
,
&
convention
=
"NUOPC"
,
purpose
=
"General"
,
rc
=
rc
)
#endif
abort
=
ESMF_LogFoundError
(
rc
,
line
=
__
LINE__
,
file
=
FILENAME
)
if
(
abort
)
call
ESMF_Finalize
(
endflag
=
ESMF_END_ABORT
)
#endif
call
toc
(
TIM_ESMF
)
...
...
@@ -531,7 +543,6 @@
!
! !LOCAL VARIABLES
type
(
ESMF_Clock
)
::
getmClock
type
(
ESMF_Grid
)
::
getmGrid2D
type
(
ESMF_Time
)
::
getmRefTime
,
getmStartTime
,
getmStopTime
type
(
ESMF_TimeInterval
)
::
getmTimeStep
type
(
ESMF_VM
)
::
vm
...
...
@@ -708,9 +719,10 @@
end
if
call
getmComp_init_grid
(
getmComp
,
getmGrid2D
)
call
init_importStateP1
(
getmComp
,
getmGrid2D
,
importState
)
call
init_exportStateP1
(
getmComp
,
getmGrid2D
,
exportState
)
call
getmComp_init_grid
(
getmComp
)
call
NUOPC_FieldDictionarySetAutoAdd
(
.true.
)
call
init_importStateP1
(
getmComp
,
importState
)
call
init_exportStateP1
(
getmComp
,
exportState
)
call
toc
(
TIM_ESMF
)
...
...
@@ -775,8 +787,11 @@
call
ESMF_LogWrite
(
trim
(
name
)//
"::InitializeP2..."
,
ESMF_LOGMSG_TRACE
)
call
init_importStateP2
(
getmComp
,
importState
)
call
init_exportStateP2
(
getmComp
,
exportState
)
call
read_importState
(
getmComp
,
importState
)
! If the initial Export state needs to be filled, do it here.
call
getmComp_update_grid
(
getmComp
)
call
update_exportState
(
getmComp
,
exportState
)
...
...
@@ -1048,7 +1063,7 @@
! !ROUTINE: getmComp_init_grid - Creates Grid
!
! !INTERFACE:
subroutine
getmComp_init_grid
(
getmComp
,
getmGrid2D
)
subroutine
getmComp_init_grid
(
getmComp
)
!
! !DESCRIPTION:
!
...
...
@@ -1067,9 +1082,6 @@
! !INPUT/OUTPUT PARAMETERS:
type
(
ESMF_GridComp
)
::
getmComp
!
! !OUTPUT PARAMETERS:
type
(
ESMF_Grid
),
intent
(
out
)
::
getmGrid2D
!
! !REVISION HISTORY:
! Original Author(s): Knut Klingbeil
!
...
...
@@ -1089,7 +1101,7 @@
type
(
ESMF_Array
)
::
array
type
(
ESMF_CoordSys_Flag
)
::
coordSys
type
(
ESMF_DistGrid
)
::
getmDistGrid2D
,
getmDistGrid3D
,
distgrid
type
(
ESMF_Grid
)
::
getmGrid3D
type
(
ESMF_Grid
)
::
getmGrid3D
,
getmGrid2D
type
(
ESMF_StaggerLoc
)
::
staggerloc
type
(
ESMF_VM
)
::
vm
! Note (KK): ESMF_ARRAY's are deep classes, that persist after return.
...
...
@@ -1282,12 +1294,7 @@
! staggerAlign and staggerEdgeWidth's.
! internal call to ESMF_GridCreateFrmDistGrid()
getmGrid2D
=
ESMF_GridCreate
(
getmDistGrid2D
,
name
=
trim
(
name
)//
"Grid2D"
,
&
#if 0
! bug in ESMF
gridAlign
=
(/
1
,
1
/),
&
#else
gridEdgeLWidth
=
(/
1
,
1
/),
&
#endif
coordSys
=
coordSys
,
&
coordDimCount
=
int
(
coordDimCount
(
1
:
2
)),
&
coordDimMap
=
int
(
coordDimMap
(
1
:
2
,
1
:
2
)),
&
...
...
@@ -1296,13 +1303,7 @@
if
(
abort
)
call
ESMF_Finalize
(
endflag
=
ESMF_END_ABORT
)
getmGrid3D
=
ESMF_GridCreate
(
getmDistGrid3D
,
name
=
trim
(
name
)//
"Grid3D"
,
&
#if 0
! bug in ESMF
gridAlign
=
(/
1
,
1
,
1
/),
&
#else
gridEdgeLWidth
=
(/
1
,
1
,
1
/),
&
#endif
coordSys
=
coordSys
,
&
coordDimCount
=
coordDimCount
,
&
coordDimMap
=
coordDimMap
,
&
...
...
@@ -1858,22 +1859,20 @@ if (abort) call ESMF_Finalize(endflag=ESMF_END_ABORT)
! !ROUTINE: init_importStateP1 -
!
! !INTERFACE: