20 #ifndef __mast__continuation_solver_base_h__ 21 #define __mast__continuation_solver_base_h__ 27 #include "libmesh/numeric_vector.h" 33 class AssemblyElemOperations;
160 _solve(
const libMesh::NumericVector<Real> &X,
162 libMesh::NumericVector<Real> &f,
164 libMesh::NumericVector<Real> &dfdp,
166 const libMesh::NumericVector<Real> &dgdX,
169 libMesh::NumericVector<Real> &dX,
186 libMesh::SparseMatrix<Real> &jac,
188 libMesh::NumericVector<Real> &f,
190 libMesh::NumericVector<Real> &dfdp,
192 libMesh::NumericVector<Real> &dXdp,
194 const libMesh::NumericVector<Real> &dgdX,
197 libMesh::NumericVector<Real> &dX,
208 _g(
const libMesh::NumericVector<Real> &X,
232 std::unique_ptr<libMesh::NumericVector<Real>>
238 #endif // __mast__continuation_solver_base_h__ Real rel_tol
Relative tolerance for the solver.
Real max_step
maximum step size allowed with adaptivity
virtual void solve()
solves for the next load step
This is a scalar function whose value can be changed and one that can be used as a design variable in...
virtual void initialize(Real dp)=0
initializes the data structure based on initial load step dp.
void _solve_schur_factorization(const libMesh::NumericVector< Real > &X, const MAST::Parameter &p, libMesh::SparseMatrix< Real > &jac, bool update_jac, libMesh::NumericVector< Real > &f, bool update_f, libMesh::NumericVector< Real > &dfdp, bool update_dfdp, libMesh::NumericVector< Real > &dXdp, bool update_dXdp, const libMesh::NumericVector< Real > &dgdX, const Real dgdp, const Real g, libMesh::NumericVector< Real > &dX, Real &dp)
solves for the linear system of equation using Schur factorization.
virtual void _solve_NR_iterate(libMesh::NumericVector< Real > &X, MAST::Parameter &p)=0
virtual ~ContinuationSolverBase()
Real min_step
minimum step size allowed with adaptivity
virtual void _save_iteration_data()=0
method saves any data for possible resuse if the solution step is restarted
Real _res_norm(const libMesh::NumericVector< Real > &X, const MAST::Parameter &p)
void _solve(const libMesh::NumericVector< Real > &X, const MAST::Parameter &p, libMesh::NumericVector< Real > &f, bool update_f, libMesh::NumericVector< Real > &dfdp, bool update_dfdp, const libMesh::NumericVector< Real > &dgdX, const Real dgdp, const Real g, libMesh::NumericVector< Real > &dX, Real &dp)
solves for the linear system of equation as a monolithic system dX and dp are returned from the solu...
the equation set is: the N-R updates are calculated such that This equation is solved using Schur-f...
virtual Real _g(const libMesh::NumericVector< Real > &X, const MAST::Parameter &p)=0
Real arc_length
arc length that the solver is required to satisfy for the update.
Real abs_tol
Absolute tolerance for the solver.
MAST::AssemblyBase * _assembly
std::unique_ptr< libMesh::NumericVector< Real > > _X0
void set_assembly_and_load_parameter(MAST::AssemblyElemOperations &elem_ops, MAST::AssemblyBase &assembly, MAST::Parameter &p)
sets the assembly object for this solver
virtual void _reset_iterations()=0
method resets any data if a soltion step is restarted
unsigned int max_it
Maximum number of Newton-Raphson iterations for the solver.
Real step_size_change_exponent
exponent used in step size update.
MAST::AssemblyElemOperations * _elem_ops
void clear_assembly_and_load_parameters()
clears the assembly object from this solver
unsigned int step_desired_iters
desired N-R iterations per load-step.
bool schur_factorization
flag to use Schur-factorizaiton (default) or monolithic solver