Skip to content

Commit 1804f69

Browse files
authored
Merge pull request #6235 from jdannberg/failure_cut_timestep_fix
Fix for cut timestep size nonlinear solver strategy
2 parents e3254bf + fec92fc commit 1804f69

File tree

11 files changed

+395
-40
lines changed

11 files changed

+395
-40
lines changed
+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
Fixed: If the nonlinear solver fails in a timestep with mesh
2+
refinement and "cut timestep size" is selected as the
3+
Nonlinear solver failure strategy, ASPECT now correctly
4+
repeats the timestep first before refining the mesh. Before,
5+
ASPECT would execute refinement/coarsening of the mesh first,
6+
which could lead to changes of the mesh in each failure
7+
cycle.
8+
<br>
9+
(Juliane Dannberg, 2025/02/14)

source/simulator/core.cc

+6-3
Original file line numberDiff line numberDiff line change
@@ -2123,17 +2123,17 @@ namespace aspect
21232123
&& !parameters.run_postprocessors_on_nonlinear_iterations)
21242124
postprocess ();
21252125

2126+
// if the time stepping manager tells us to refine the mesh,
2127+
// we need to do this before going to the next time step
21262128
if (time_stepping_manager.should_refine_mesh())
21272129
{
21282130
pcout << "Refining the mesh based on the time stepping manager ...\n" << std::endl;
21292131
refine_mesh(max_refinement_level);
21302132
}
2131-
else
2132-
maybe_refine_mesh(new_time_step_size, max_refinement_level);
21332133

21342134
if (time_stepping_manager.should_repeat_time_step())
21352135
{
2136-
pcout << "Repeating the current time step based on the time stepping manager ..." << std::endl;
2136+
pcout << "Repeating the current time step based on the time stepping manager ...\n" << std::endl;
21372137

21382138
if (mesh_deformation)
21392139
mesh_deformation->mesh_displacements = mesh_deformation->old_mesh_displacements;
@@ -2151,6 +2151,9 @@ namespace aspect
21512151
continue; // repeat time step loop
21522152
}
21532153

2154+
if (!time_stepping_manager.should_refine_mesh())
2155+
maybe_refine_mesh(new_time_step_size, max_refinement_level);
2156+
21542157
// see if we want to write a timing summary
21552158
maybe_write_timing_output();
21562159

tests/free_surface_timestep_repeat/screen-output

+28-31
Original file line numberDiff line numberDiff line change
@@ -45,84 +45,81 @@ Number of mesh deformation degrees of freedom: 1,162
4545
Solving ve_stress_xy system ... 12 iterations.
4646
Solving Stokes system (GMG)... 46+0 iterations.
4747

48-
Number of active cells: 505 (on 3 levels)
49-
Number of degrees of freedom: 12,022 (4,356+566+566+2,178+2,178+2,178)
50-
51-
Number of mesh deformation degrees of freedom: 1,132
5248
Repeating the current time step based on the time stepping manager ...
49+
5350
*** Timestep 1: t=0.460632 years, dt=0.460632 years
5451
Solving mesh displacement system... 5 iterations.
5552
Solving temperature system... 0 iterations.
5653
Solving ve_stress_xx system ... 12 iterations.
5754
Solving ve_stress_yy system ... 12 iterations.
5855
Solving ve_stress_xy system ... 12 iterations.
59-
Solving Stokes system (GMG)... 51+0 iterations.
56+
Solving Stokes system (GMG)... 47+0 iterations.
6057

6158
Postprocessing:
62-
Compositions min/max/mass: -2.36e+05/4.138e+05/3.094e+11 // -4.138e+05/2.36e+05/-3.094e+11 // -9.739e+04/5.046e+05/1.814e+16
59+
Compositions min/max/mass: -2.36e+05/4.138e+05/3.097e+11 // -4.138e+05/2.36e+05/-3.097e+11 // -9.736e+04/5.045e+05/1.814e+16
6360
Temperature min/avg/max: 293 K, 293 K, 293 K
6461
Topography min/max: -11.65 m, 4.811 m
6562
RMS, max velocity: 19.5 m/year, 63.2 m/year
6663

67-
Number of active cells: 499 (on 3 levels)
68-
Number of degrees of freedom: 11,895 (4,310+560+560+2,155+2,155+2,155)
64+
Number of active cells: 505 (on 3 levels)
65+
Number of degrees of freedom: 12,022 (4,356+566+566+2,178+2,178+2,178)
6966

70-
Number of mesh deformation degrees of freedom: 1,120
67+
Number of mesh deformation degrees of freedom: 1,132
7168
*** Timestep 2: t=0.960632 years, dt=0.5 years
7269
Solving mesh displacement system... 5 iterations.
7370
Solving temperature system... 0 iterations.
7471
Solving ve_stress_xx system ... 12 iterations.
7572
Solving ve_stress_yy system ... 12 iterations.
7673
Solving ve_stress_xy system ... 11 iterations.
77-
Solving Stokes system (GMG)... 54+0 iterations.
74+
Solving Stokes system (GMG)... 53+0 iterations.
7875

7976
Postprocessing:
80-
Compositions min/max/mass: -2.096e+06/3.187e+06/2.942e+12 // -3.187e+06/2.096e+06/-2.942e+12 // -8.812e+05/4.289e+06/1.333e+17
77+
Compositions min/max/mass: -2.095e+06/3.187e+06/-8.572e+11 // -3.187e+06/2.095e+06/8.572e+11 // -8.812e+05/4.289e+06/1.333e+17
8178
Temperature min/avg/max: 293 K, 293 K, 293 K
8279
Topography min/max: -43.31 m, 18.13 m
8380
RMS, max velocity: 8.63 m/year, 27.4 m/year
8481

85-
Number of active cells: 502 (on 3 levels)
86-
Number of degrees of freedom: 11,956 (4,332+563+563+2,166+2,166+2,166)
82+
Number of active cells: 499 (on 3 levels)
83+
Number of degrees of freedom: 11,895 (4,310+560+560+2,155+2,155+2,155)
8784

88-
Number of mesh deformation degrees of freedom: 1,126
85+
Number of mesh deformation degrees of freedom: 1,120
8986
*** Timestep 3: t=1.46063 years, dt=0.5 years
9087
Solving mesh displacement system... 5 iterations.
9188
Solving temperature system... 0 iterations.
9289
Solving ve_stress_xx system ... 12 iterations.
9390
Solving ve_stress_yy system ... 12 iterations.
9491
Solving ve_stress_xy system ... 12 iterations.
95-
Solving Stokes system (GMG)... 53+0 iterations.
92+
Solving Stokes system (GMG)... 54+0 iterations.
9693

9794
Postprocessing:
98-
Compositions min/max/mass: -1.204e+06/1.463e+06/1.36e+13 // -1.463e+06/1.204e+06/-1.36e+13 // -6.296e+05/2.308e+06/5.936e+16
95+
Compositions min/max/mass: -1.204e+06/1.463e+06/9.777e+12 // -1.463e+06/1.204e+06/-9.777e+12 // -6.296e+05/2.307e+06/5.939e+16
9996
Temperature min/avg/max: 293 K, 293 K, 293 K
10097
Topography min/max: -29.59 m, 12.04 m
10198
RMS, max velocity: 7.63 m/year, 24.4 m/year
10299

103-
Number of active cells: 499 (on 3 levels)
104-
Number of degrees of freedom: 11,895 (4,310+560+560+2,155+2,155+2,155)
100+
Number of active cells: 502 (on 3 levels)
101+
Number of degrees of freedom: 11,956 (4,332+563+563+2,166+2,166+2,166)
105102

106-
Number of mesh deformation degrees of freedom: 1,120
107-
*** Timestep 4: t=1.97252 years, dt=0.511887 years
103+
Number of mesh deformation degrees of freedom: 1,126
104+
*** Timestep 4: t=1.97242 years, dt=0.511791 years
108105
Solving mesh displacement system... 5 iterations.
109106
Solving temperature system... 0 iterations.
110107
Solving ve_stress_xx system ... 12 iterations.
111108
Solving ve_stress_yy system ... 12 iterations.
112109
Solving ve_stress_xy system ... 12 iterations.
113-
Solving Stokes system (GMG)... 54+0 iterations.
110+
Solving Stokes system (GMG)... 53+0 iterations.
114111

115112
Postprocessing:
116-
Compositions min/max/mass: -1.958e+06/2.632e+06/7.548e+12 // -2.632e+06/1.958e+06/-7.548e+12 // -1.046e+06/3.851e+06/1.095e+17
113+
Compositions min/max/mass: -1.959e+06/2.632e+06/1.494e+13 // -2.632e+06/1.959e+06/-1.494e+13 // -1.046e+06/3.85e+06/1.095e+17
117114
Temperature min/avg/max: 293 K, 293 K, 293 K
118115
Topography min/max: -42.1 m, 17.48 m
119116
RMS, max velocity: 3.72 m/year, 11.6 m/year
120117

121-
Number of active cells: 502 (on 3 levels)
122-
Number of degrees of freedom: 11,956 (4,332+563+563+2,166+2,166+2,166)
118+
Number of active cells: 499 (on 3 levels)
119+
Number of degrees of freedom: 11,895 (4,310+560+560+2,155+2,155+2,155)
123120

124-
Number of mesh deformation degrees of freedom: 1,126
125-
*** Timestep 5: t=2 years, dt=0.0274814 years
121+
Number of mesh deformation degrees of freedom: 1,120
122+
*** Timestep 5: t=2 years, dt=0.0275774 years
126123
Solving mesh displacement system... 5 iterations.
127124
Solving temperature system... 0 iterations.
128125
Solving ve_stress_xx system ... 10 iterations.
@@ -131,16 +128,16 @@ Number of mesh deformation degrees of freedom: 1,126
131128
Solving Stokes system (GMG)... 50+0 iterations.
132129

133130
Postprocessing:
134-
Compositions min/max/mass: -1.953e+06/2.611e+06/7.161e+12 // -2.611e+06/1.953e+06/-7.161e+12 // -1.049e+06/3.836e+06/1.086e+17
131+
Compositions min/max/mass: -1.954e+06/2.611e+06/1.511e+13 // -2.611e+06/1.954e+06/-1.511e+13 // -1.049e+06/3.835e+06/1.086e+17
135132
Temperature min/avg/max: 293 K, 293 K, 293 K
136133
Topography min/max: -41.78 m, 17.33 m
137-
RMS, max velocity: 65.5 m/year, 204 m/year
134+
RMS, max velocity: 65.2 m/year, 203 m/year
138135
Writing graphical output: output-free_surface_timestep_repeat/solution/solution-00001
139136

140-
Number of active cells: 499 (on 3 levels)
141-
Number of degrees of freedom: 11,895 (4,310+560+560+2,155+2,155+2,155)
137+
Number of active cells: 502 (on 3 levels)
138+
Number of degrees of freedom: 11,956 (4,332+563+563+2,166+2,166+2,166)
142139

143-
Number of mesh deformation degrees of freedom: 1,120
140+
Number of mesh deformation degrees of freedom: 1,126
144141
Termination requested by criterion: end time
145142

146143

tests/free_surface_timestep_repeat/statistics

+6-6
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@
3030
# 30: RMS velocity (m/year)
3131
# 31: Max. velocity (m/year)
3232
# 32: Visualization file name
33-
0 0.000000000000e+00 0.000000000000e+00 547 5283 607 7014 0 0 0 0 40 42 42 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.93000000e+02 2.93000000e+02 2.93000000e+02 0.00000000e+00 0.00000000e+00 0.00000000e+00 4.30293501e+00 1.35647074e+01 output-free_surface_timestep_repeat/solution/solution-00000
34-
1 4.606320049007e-01 4.606320049007e-01 505 4922 566 6534 0 24 24 24 95 99 99 -2.35990776e+05 4.13757522e+05 3.09411377e+11 -4.13757522e+05 2.35990776e+05 -3.09411377e+11 -9.73936239e+04 5.04577200e+05 1.81434010e+16 2.93000000e+02 2.93000000e+02 2.93000000e+02 -6.17699489e-16 -1.16534250e+01 4.81087884e+00 1.95058152e+01 6.32374792e+01 ""
35-
2 9.606320049007e-01 5.000000000000e-01 499 4870 560 6465 0 12 12 11 53 55 55 -2.09566169e+06 3.18669907e+06 2.94173714e+12 -3.18669907e+06 2.09566169e+06 -2.94173714e+12 -8.81213946e+05 4.28852593e+06 1.33287393e+17 2.93000000e+02 2.93000000e+02 2.93000000e+02 0.00000000e+00 -4.33069967e+01 1.81263226e+01 8.63329048e+00 2.74078607e+01 ""
36-
3 1.460632004901e+00 5.000000000000e-01 502 4895 563 6498 0 12 12 12 52 54 54 -1.20361490e+06 1.46277555e+06 1.35953400e+13 -1.46277555e+06 1.20361490e+06 -1.35953400e+13 -6.29617426e+05 2.30755820e+06 5.93597106e+16 2.93000000e+02 2.93000000e+02 2.93000000e+02 2.25987618e-16 -2.95874495e+01 1.20362040e+01 7.62819605e+00 2.44127830e+01 ""
37-
4 1.972518629830e+00 5.118866249297e-01 499 4870 560 6465 0 12 12 12 53 55 55 -1.95839260e+06 2.63170605e+06 7.54831352e+12 -2.63170605e+06 1.95839260e+06 -7.54831352e+12 -1.04564407e+06 3.85125539e+06 1.09491021e+17 2.93000000e+02 2.93000000e+02 2.93000000e+02 -1.50658412e-17 -4.20977965e+01 1.74799578e+01 3.72450610e+00 1.15928563e+01 ""
38-
5 2.000000000000e+00 2.748137016955e-02 502 4895 563 6498 0 10 10 10 49 51 51 -1.95300695e+06 2.61143532e+06 7.16143046e+12 -2.61143532e+06 1.95300695e+06 -7.16143046e+12 -1.04914831e+06 3.83563457e+06 1.08581043e+17 2.93000000e+02 2.93000000e+02 2.93000000e+02 -3.16382665e-16 -4.17788330e+01 1.73314344e+01 6.55142505e+01 2.04138181e+02 output-free_surface_timestep_repeat/solution/solution-00001
33+
0 0.000000000000e+00 0.000000000000e+00 547 5283 607 7014 0 0 0 0 40 42 42 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 2.93000000e+02 2.93000000e+02 2.93000000e+02 0.00000000e+00 0.00000000e+00 0.00000000e+00 4.30293501e+00 1.35647074e+01 output-free_surface_timestep_repeat/solution/solution-00000
34+
1 4.606320049007e-01 4.606320049007e-01 520 5055 581 6711 0 24 24 24 91 95 95 -2.35970380e+05 4.13757219e+05 3.09717661e+11 -4.13757219e+05 2.35970380e+05 -3.09717661e+11 -9.73645441e+04 5.04526986e+05 1.81434014e+16 2.93000000e+02 2.93000000e+02 2.93000000e+02 -9.03950472e-17 -1.16534234e+01 4.81092915e+00 1.95058162e+01 6.32372447e+01 ""
35+
2 9.606320049007e-01 5.000000000000e-01 505 4922 566 6534 0 12 12 11 52 54 54 -2.09535068e+06 3.18666459e+06 -8.57220878e+11 -3.18666459e+06 2.09535068e+06 8.57220878e+11 -8.81179760e+05 4.28871285e+06 1.33279906e+17 2.93000000e+02 2.93000000e+02 2.93000000e+02 1.20526730e-16 -4.33068823e+01 1.81261689e+01 8.63338662e+00 2.74096791e+01 ""
36+
3 1.460632004901e+00 5.000000000000e-01 499 4870 560 6465 0 12 12 12 53 55 55 -1.20354792e+06 1.46262676e+06 9.77736170e+12 -1.46262676e+06 1.20354792e+06 -9.77736170e+12 -6.29632809e+05 2.30748415e+06 5.93930090e+16 2.93000000e+02 2.93000000e+02 2.93000000e+02 -1.05460888e-16 -2.95864265e+01 1.20371251e+01 7.62739115e+00 2.44174175e+01 ""
37+
4 1.972422597720e+00 5.117905928193e-01 502 4895 563 6498 0 12 12 12 52 54 54 -1.95901040e+06 2.63180128e+06 1.49396196e+13 -2.63180128e+06 1.95901040e+06 -1.49396196e+13 -1.04559648e+06 3.85043082e+06 1.09480836e+17 2.93000000e+02 2.93000000e+02 2.93000000e+02 -6.02633648e-17 -4.20967760e+01 1.74761044e+01 3.72173130e+00 1.15843521e+01 ""
38+
5 2.000000000000e+00 2.757740227997e-02 499 4870 560 6465 0 10 10 10 49 51 51 -1.95361330e+06 2.61147875e+06 1.51065024e+13 -2.61147875e+06 1.95361330e+06 -1.51065024e+13 -1.04911666e+06 3.83476186e+06 1.08581340e+17 2.93000000e+02 2.93000000e+02 2.93000000e+02 1.50658412e-17 -4.17769337e+01 1.73271746e+01 6.52152985e+01 2.03164129e+02 output-free_surface_timestep_repeat/solution/solution-00001

tests/nonlinear_failure_strategy_cut/screen-output

+1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ Number of degrees of freedom: 9,141 (4,290+561+2,145+2,145)
4949
WARNING: The nonlinear solver in the current timestep failed to converge.
5050
Acting according to the parameter 'Nonlinear solver failure strategy'...
5151
Repeating the current time step based on the time stepping manager ...
52+
5253
*** Timestep 1: t=6625.49 years, dt=6625.49 years
5354
Solving temperature system... 11 iterations.
5455
Skipping porosity composition solve because RHS is zero.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Check that nonlinear solver strategy "cut timestep size" works
2+
# also if we change the mesh in the same time step.
3+
#
4+
# Like iterated_advection_and_stokes_residual.prm
5+
# but we coarsen the mesh after timestep 0 and 1.
6+
7+
include $ASPECT_SOURCE_DIR/tests/iterated_advection_and_stokes_residual.prm
8+
9+
set Nonlinear solver failure strategy = cut timestep size
10+
set Max nonlinear iterations = 4
11+
set Dimension = 2
12+
set End time = 14000
13+
14+
subsection Mesh refinement
15+
set Coarsening fraction = 1
16+
set Refinement fraction = 0
17+
set Initial adaptive refinement = 0
18+
set Initial global refinement = 4
19+
set Strategy = composition
20+
set Time steps between mesh refinement = 1
21+
set Minimum refinement level = 2
22+
end

0 commit comments

Comments
 (0)