Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Ice-sheet model SICOPOLIS
SICOPOLIS
Commits
5566c429
Commit
5566c429
authored
Jun 11, 2022
by
Ralf Greve
☺
Browse files
New parameter for the nonlinear iterations of the SSA/SStA solver:
minimum number of iterations N_ITER_SSA_MIN (default 1).
parent
e9d3ef7f
Changes
13
Hide whitespace changes
Inline
Side-by-side
src/sicopolis.F90
View file @
5566c429
...
...
@@ -5,7 +5,7 @@
!
#define MODEL_SICOPOLIS
#define VERSION '5-dev'
#define DATE '2022-06-
06
'
#define DATE '2022-06-
11
'
!
!> @mainpage
!!
...
...
src/subroutines/ant/sico_init_m.F90
View file @
5566c429
...
...
@@ -808,6 +808,9 @@ write(10, fmt=trim(fmt3)) 'tol_iter_ssa =', TOL_ITER_SSA
#if (defined(N_ITER_SSA))
write
(
10
,
fmt
=
trim
(
fmt2
))
'n_iter_ssa = '
,
N_ITER_SSA
#endif
#if (defined(N_ITER_SSA_MIN))
write
(
10
,
fmt
=
trim
(
fmt2
))
'n_iter_ssa_min = '
,
N_ITER_SSA_MIN
#endif
#if (defined(ITER_INIT_SSA))
write
(
10
,
fmt
=
trim
(
fmt2
))
'iter_init_ssa = '
,
ITER_INIT_SSA
#endif
...
...
src/subroutines/asf/sico_init_m.F90
View file @
5566c429
...
...
@@ -954,6 +954,9 @@ write(10, fmt=trim(fmt3)) 'tol_iter_ssa =', TOL_ITER_SSA
#if (defined(N_ITER_SSA))
write
(
10
,
fmt
=
trim
(
fmt2
))
'n_iter_ssa = '
,
N_ITER_SSA
#endif
#if (defined(N_ITER_SSA_MIN))
write
(
10
,
fmt
=
trim
(
fmt2
))
'n_iter_ssa_min = '
,
N_ITER_SSA_MIN
#endif
#if (defined(ITER_INIT_SSA))
write
(
10
,
fmt
=
trim
(
fmt2
))
'iter_init_ssa = '
,
ITER_INIT_SSA
#endif
...
...
src/subroutines/eismint/sico_init_m.F90
View file @
5566c429
...
...
@@ -672,6 +672,9 @@ write(10, fmt=trim(fmt3)) 'tol_iter_ssa =', TOL_ITER_SSA
#if (defined(N_ITER_SSA))
write
(
10
,
fmt
=
trim
(
fmt2
))
'n_iter_ssa = '
,
N_ITER_SSA
#endif
#if (defined(N_ITER_SSA_MIN))
write
(
10
,
fmt
=
trim
(
fmt2
))
'n_iter_ssa_min = '
,
N_ITER_SSA_MIN
#endif
#if (defined(ITER_INIT_SSA))
write
(
10
,
fmt
=
trim
(
fmt2
))
'iter_init_ssa = '
,
ITER_INIT_SSA
#endif
...
...
src/subroutines/general/calc_vxy_m.F90
View file @
5566c429
...
...
@@ -1373,7 +1373,7 @@ implicit none
real
(
dp
),
intent
(
in
)
::
dxi
,
deta
,
dzeta_c
,
dzeta_t
integer
(
i4b
)
::
i
,
j
,
kc
,
kt
,
m
integer
(
i4b
)
::
iter_ssa
integer
(
i4b
)
::
iter_ssa
_min
,
iter_ssa_max
real
(
dp
),
dimension
(
0
:
JMAX
,
0
:
IMAX
)
::
vx_m_prev
,
vy_m_prev
real
(
dp
)
::
tol_ssa
,
rel_ssa
real
(
dp
)
::
res_vxy_m_ssa_1
,
res_vxy_m_ssa_2
,
res_vxy_m_ssa
...
...
@@ -1399,15 +1399,26 @@ pi_inv = 1.0_dp/pi
#if (defined(TOL_ITER_SSA))
tol_ssa
=
TOL_ITER_SSA
! tolerance of iterations
#else
tol_ssa
=
0.
1
_dp
! default value
tol_ssa
=
0.
025
_dp
! default value
#endif
#if (defined(N_ITER_SSA))
iter_ssa
=
max
(
N_ITER_SSA
,
1
)
! max. number of iterations
iter_ssa
_max
=
max
(
N_ITER_SSA
,
1
)
! max. number of iterations
#else
iter_ssa
=
3
! default value
iter_ssa
_max
=
10
! default value
#endif
#if (defined(N_ITER_SSA_MIN))
iter_ssa_min
=
max
(
N_ITER_SSA_MIN
,
1
)
! min. number of iterations
#else
iter_ssa_min
=
1
! default value
#endif
if
(
iter_ssa_min
>
iter_ssa_max
)
then
errormsg
=
' >>> calc_vxy_ssa: N_ITER_SSA_MIN > N_ITER_SSA_MAX not allowed!'
call
error
(
errormsg
)
end
if
#if (defined(RELAX_FACT_SSA))
rel_ssa
=
RELAX_FACT_SSA
! relaxation factor
#else
...
...
@@ -1431,7 +1442,9 @@ res_vxy_m_ssa = 1.11e+11_dp ! initial, very large value of the residual
m
=
0
do
while
((
m
<
iter_ssa
)
.and.
(
res_vxy_m_ssa
>
tol_ssa
))
do
while
(
(
m
<
iter_ssa_min
)
&
.or.
&
((
m
<
iter_ssa_max
)
.and.
(
res_vxy_m_ssa
>
tol_ssa
))
)
m
=
m
+1
...
...
src/subroutines/grl/sico_init_m.F90
View file @
5566c429
...
...
@@ -805,6 +805,9 @@ write(10, fmt=trim(fmt3)) 'tol_iter_ssa =', TOL_ITER_SSA
#if (defined(N_ITER_SSA))
write
(
10
,
fmt
=
trim
(
fmt2
))
'n_iter_ssa = '
,
N_ITER_SSA
#endif
#if (defined(N_ITER_SSA_MIN))
write
(
10
,
fmt
=
trim
(
fmt2
))
'n_iter_ssa_min = '
,
N_ITER_SSA_MIN
#endif
#if (defined(ITER_INIT_SSA))
write
(
10
,
fmt
=
trim
(
fmt2
))
'iter_init_ssa = '
,
ITER_INIT_SSA
#endif
...
...
src/subroutines/nhem/sico_init_m.F90
View file @
5566c429
...
...
@@ -949,6 +949,9 @@ write(10, fmt=trim(fmt3)) 'tol_iter_ssa =', TOL_ITER_SSA
#if (defined(N_ITER_SSA))
write
(
10
,
fmt
=
trim
(
fmt2
))
'n_iter_ssa = '
,
N_ITER_SSA
#endif
#if (defined(N_ITER_SSA_MIN))
write
(
10
,
fmt
=
trim
(
fmt2
))
'n_iter_ssa_min = '
,
N_ITER_SSA_MIN
#endif
#if (defined(ITER_INIT_SSA))
write
(
10
,
fmt
=
trim
(
fmt2
))
'iter_init_ssa = '
,
ITER_INIT_SSA
#endif
...
...
src/subroutines/nmars/sico_init_m.F90
View file @
5566c429
...
...
@@ -912,6 +912,9 @@ write(10, fmt=trim(fmt3)) 'tol_iter_ssa =', TOL_ITER_SSA
#if (defined(N_ITER_SSA))
write
(
10
,
fmt
=
trim
(
fmt2
))
'n_iter_ssa = '
,
N_ITER_SSA
#endif
#if (defined(N_ITER_SSA_MIN))
write
(
10
,
fmt
=
trim
(
fmt2
))
'n_iter_ssa_min = '
,
N_ITER_SSA_MIN
#endif
#if (defined(ITER_INIT_SSA))
write
(
10
,
fmt
=
trim
(
fmt2
))
'iter_init_ssa = '
,
ITER_INIT_SSA
#endif
...
...
src/subroutines/scand/sico_init_m.F90
View file @
5566c429
...
...
@@ -949,6 +949,9 @@ write(10, fmt=trim(fmt3)) 'tol_iter_ssa =', TOL_ITER_SSA
#if (defined(N_ITER_SSA))
write
(
10
,
fmt
=
trim
(
fmt2
))
'n_iter_ssa = '
,
N_ITER_SSA
#endif
#if (defined(N_ITER_SSA_MIN))
write
(
10
,
fmt
=
trim
(
fmt2
))
'n_iter_ssa_min = '
,
N_ITER_SSA_MIN
#endif
#if (defined(ITER_INIT_SSA))
write
(
10
,
fmt
=
trim
(
fmt2
))
'iter_init_ssa = '
,
ITER_INIT_SSA
#endif
...
...
src/subroutines/smars/sico_init_m.F90
View file @
5566c429
...
...
@@ -912,6 +912,9 @@ write(10, fmt=trim(fmt3)) 'tol_iter_ssa =', TOL_ITER_SSA
#if (defined(N_ITER_SSA))
write
(
10
,
fmt
=
trim
(
fmt2
))
'n_iter_ssa = '
,
N_ITER_SSA
#endif
#if (defined(N_ITER_SSA_MIN))
write
(
10
,
fmt
=
trim
(
fmt2
))
'n_iter_ssa_min = '
,
N_ITER_SSA_MIN
#endif
#if (defined(ITER_INIT_SSA))
write
(
10
,
fmt
=
trim
(
fmt2
))
'iter_init_ssa = '
,
ITER_INIT_SSA
#endif
...
...
src/subroutines/tibet/sico_init_m.F90
View file @
5566c429
...
...
@@ -938,6 +938,9 @@ write(10, fmt=trim(fmt3)) 'tol_iter_ssa =', TOL_ITER_SSA
#if (defined(N_ITER_SSA))
write
(
10
,
fmt
=
trim
(
fmt2
))
'n_iter_ssa = '
,
N_ITER_SSA
#endif
#if (defined(N_ITER_SSA_MIN))
write
(
10
,
fmt
=
trim
(
fmt2
))
'n_iter_ssa_min = '
,
N_ITER_SSA_MIN
#endif
#if (defined(ITER_INIT_SSA))
write
(
10
,
fmt
=
trim
(
fmt2
))
'iter_init_ssa = '
,
ITER_INIT_SSA
#endif
...
...
src/subroutines/xyz/heino/sico_init_m.F90
View file @
5566c429
...
...
@@ -869,6 +869,9 @@ write(10, fmt=trim(fmt3)) 'tol_iter_ssa =', TOL_ITER_SSA
#if (defined(N_ITER_SSA))
write
(
10
,
fmt
=
trim
(
fmt2
))
'n_iter_ssa = '
,
N_ITER_SSA
#endif
#if (defined(N_ITER_SSA_MIN))
write
(
10
,
fmt
=
trim
(
fmt2
))
'n_iter_ssa_min = '
,
N_ITER_SSA_MIN
#endif
#if (defined(ITER_INIT_SSA))
write
(
10
,
fmt
=
trim
(
fmt2
))
'iter_init_ssa = '
,
ITER_INIT_SSA
#endif
...
...
src/subroutines/xyz/mocho/sico_init_m.F90
View file @
5566c429
...
...
@@ -1072,6 +1072,9 @@ write(10, fmt=trim(fmt3)) 'tol_iter_ssa =', TOL_ITER_SSA
#if (defined(N_ITER_SSA))
write
(
10
,
fmt
=
trim
(
fmt2
))
'n_iter_ssa = '
,
N_ITER_SSA
#endif
#if (defined(N_ITER_SSA_MIN))
write
(
10
,
fmt
=
trim
(
fmt2
))
'n_iter_ssa_min = '
,
N_ITER_SSA_MIN
#endif
#if (defined(ITER_INIT_SSA))
write
(
10
,
fmt
=
trim
(
fmt2
))
'iter_init_ssa = '
,
ITER_INIT_SSA
#endif
...
...
Write
Preview
Supports
Markdown
0%
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!
Cancel
Please
register
or
sign in
to comment