33 virtual bool solve()
override;
63 mooseDeprecated(
"numPicards() is deprecated. Please use numFixedPointIts() instead.");
120 const std::vector<Real> & timestep_begin_norms,
121 const std::vector<Real> & timestep_end_norms)
const = 0;
161 virtual bool solveStep(
const std::set<dof_id_type> & transformed_dofs);
186 const bool primary) = 0;
std::vector< std::vector< PostprocessorValue > > _transformed_pps_values
Previous values of the relaxed postprocessors.
std::vector< std::vector< PostprocessorValue > > _secondary_transformed_pps_values
Previous values of the postprocessors relaxed outside of the fixed point iteration (used as a subapp)...
static InputParameters fixedPointDefaultConvergenceParams()
FixedPointSolve(Executioner &ex)
virtual void saveVariableValues(const bool primary)=0
Saves the current values of the variables, and update the old(er) vectors.
void mooseDeprecated(Args &&... args) const
bool examineFixedPointConvergence(bool &converged)
Examine the various convergence metrics.
virtual void allocateStorage(const bool primary)=0
Allocate storage for the fixed point algorithm.
void setFixedPointStatus(MooseFixedPointConvergenceReason status)
Set fixed point status.
void failStep()
Mark the current solve as failed due to external conditions.
virtual bool solve() override
Iteratively solves the FEProblem.
void setMultiAppRelaxationFactor(Real factor)
Set relaxation factor for the current solve as a SubApp.
void clearFixedPointStatus()
Clear fixed point status.
MooseFixedPointConvergenceReason
Enumeration for fixed point convergence reasons.
unsigned int numPicardIts() const
Deprecated getter for the number of fixed point iterations.
virtual void saveAllValues(const bool primary)
Save both the variable and postprocessor values.
unsigned int numFixedPointIts() const
Get the number of fixed point iterations performed Because this returns the number of fixed point ite...
bool _fail_step
force the current step to fail, triggering are repeat with a cut dt
virtual void transformPostprocessors(const bool primary)=0
Use the fixed point algorithm to transform the postprocessors.
MooseFixedPointConvergenceReason checkConvergence() const
Check the solver status.
std::vector< PostprocessorName > _secondary_transformed_pps
Postprocessors to be relaxed outside of fixed point iteration (used as a subapp)
const std::vector< PostprocessorName > _transformed_pps
The postprocessors (transferred or not) that are going to be relaxed.
FP converged according to Convergence object.
virtual void savePostprocessorValues(const bool primary)=0
Saves the current values of the postprocessors, and update the old(er) vectors.
virtual ~FixedPointSolve()=default
unsigned int _xfem_update_count
Counter for number of xfem updates that have been performed in the current step.
const Real _relax_factor
Relaxation factor for fixed point Iteration.
MooseFixedPointConvergenceReason _fixed_point_status
Status of fixed point solve.
virtual void transformVariables(const std::set< dof_id_type > &transformed_dofs, const bool primary)=0
Use the fixed point algorithm to transform the variables.
FP converged by absolute residual tolerance.
Executioners are objects that do the actual work of solving your problem.
Real _secondary_relaxation_factor
Relaxation factor outside of fixed point iteration (used as a subapp)
FP converged by relative residual tolerance.
virtual void setMultiAppTransformedPostprocessors(const std::vector< PostprocessorName > &pps)
Set relaxation postprocessors for the current solve as a SubApp.
bool XFEMRepeatStep() const
This function checks the _xfem_repeat_step flag set by solve.
unsigned int _fixed_point_it
static InputParameters validParams()
virtual bool useFixedPointAlgorithmUpdateInsteadOfPicard(const bool primary)=0
Use the fixed point algorithm transform instead of simply using the Picard update This routine can be...
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const bool _auto_advance_set_by_user
Whether the user has set the auto_advance parameter for handling advancement of sub-applications in m...
std::vector< std::string > _secondary_transformed_variables
Variables to be relaxed outside of fixed point iteration (used as a subapp)
FP diverged by hitting max iterations.
bool autoAdvance() const
Whether sub-applications are automatically advanced no matter what happens during their solves...
bool _xfem_repeat_step
Whether step should be repeated due to xfem modifying the mesh.
void setMultiAppTransformedVariables(const std::vector< std::string > &vars)
Set relaxation variables for the current solve as a SubApp.
Real _old_entering_time
Time of previous fixed point solve as a subapp.
Main app nonlinear solve converged, FP unassessed.
const unsigned int _max_xfem_update
Maximum number of xfem updates per step.
void printFixedPointConvergenceReason()
Print information about the fixed point convergence.
FP converged by hitting max iterations and accepting.
virtual void initialSetup() override
Method that should be executed once, before any solve calls.
const bool _has_fixed_point_its
Whether or not we activate fixed point iteration.
bool hasFixedPointIteration()
Whether or not this has fixed point iterations.
virtual bool solveStep(const std::set< dof_id_type > &transformed_dofs)
Perform one fixed point iteration or a full solve.
const bool _auto_advance_user_value
The value of auto_advance set by the user for handling advancement of sub-applications in multi-app c...
unsigned int _main_fixed_point_it
fixed point iteration counter for the main app
FP converged by absolute or relative PP tolerance.
const bool _update_xfem_at_timestep_begin
Controls whether xfem should update the mesh at the beginning of the time step.
virtual void printFixedPointConvergenceHistory(Real initial_norm, const std::vector< Real > ×tep_begin_norms, const std::vector< Real > ×tep_end_norms) const =0
Print the convergence history of the coupling, at every fixed point iteration.
Main app nonlinear solve diverged.
std::vector< std::string > _transformed_vars
The variables (transferred or not) that are going to be relaxed.