Skip to content

Commit 9b2ec1f

Browse files
committed
Better document a workflow.
1 parent a39889d commit 9b2ec1f

File tree

2 files changed

+32
-7
lines changed

2 files changed

+32
-7
lines changed

source/simulator/checkpoint_restart.cc

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -611,6 +611,24 @@ namespace aspect
611611
ar &statistics;
612612

613613
ar &postprocess_manager;
614+
<<<<<<< Updated upstream
615+
=======
616+
ar &(*initial_temperature_manager);
617+
ar &(*initial_composition_manager);
618+
ar &boundary_temperature_manager;
619+
ar &boundary_composition_manager;
620+
ar &boundary_convective_heating_manager;
621+
ar &boundary_velocity_manager;
622+
ar &boundary_traction_manager;
623+
ar &prescribed_solution_manager;
624+
625+
// The following are not manager classes but straight up plugins and so don't
626+
// currently have the ability to serialize themselves. We should add those later.
627+
// ar &prescribed_stokes_solution;
628+
// ar &boundary_heat_flux;
629+
// ar &(*adiabatic_conditions);
630+
// ar &(*initial_topography_model);
631+
>>>>>>> Stashed changes
614632

615633
if (parameters.mesh_deformation_enabled)
616634
ar &(*mesh_deformation);

source/simulator/solver_schemes.cc

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -650,16 +650,23 @@ namespace aspect
650650
}
651651
catch (const std::exception &exc)
652652
{
653-
// Test that we are trying to handle exceptions and that
654-
// the exception we got is one of the two documented by
655-
// throw_linear_solver_failure_exception(). If not, we have a genuine
653+
// We get here if the Stokes solve above failed. Let's see first
654+
// why that happened:
655+
656+
// If the exception we got is not one of the two documented by
657+
// throw_linear_solver_failure_exception(), then we have a genuine
656658
// problem here, and will need to get outta here right away:
657-
if (newton_handler->parameters.use_Newton_failsafe == false ||
658-
((dynamic_cast<const ExcMessage *>(&exc)==nullptr) &&
659-
(dynamic_cast<const QuietException *>(&exc)==nullptr)))
659+
if ((dynamic_cast<const ExcMessage *>(&exc)==nullptr) &&
660+
(dynamic_cast<const QuietException *>(&exc)==nullptr))
661+
throw;
662+
663+
// Otherwise, the solver presumably failed because the Newton matrix
664+
// is not symmetric or not definite. If we do not actually want to
665+
// handle this case, then again leave:
666+
if (newton_handler->parameters.use_Newton_failsafe == false)
660667
throw;
661668

662-
// start the solve over again and try with a stabilized version
669+
// Otherwise, start the solve over again and try with a stabilized version:
663670
pcout << "failed, trying again with stabilization" << std::endl;
664671
newton_handler->parameters.preconditioner_stabilization = Newton::Parameters::Stabilization::SPD;
665672
newton_handler->parameters.velocity_block_stabilization = Newton::Parameters::Stabilization::SPD;

0 commit comments

Comments
 (0)