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