20 #ifndef __mast__multiphysics_nonlinear_solver_base_h__ 21 #define __mast__multiphysics_nonlinear_solver_base_h__ 31 #include "libmesh/parallel_object.h" 32 #include "libmesh/numeric_vector.h" 36 #include <petscsnes.h> 42 class TransientAssembly;
46 public libMesh::ParallelObject {
54 const std::string& nm,
67 const std::string
name()
const {
149 (std::vector<libMesh::NumericVector<Real>*>& sol_vecs,
150 std::vector<libMesh::NumericVector<Real>*>& dsol_vecs) = 0;
217 #endif // __mast__multiphysics_nonlinear_solver_base_h__ MultiphysicsNonlinearSolverBase(const libMesh::Parallel::Communicator &comm_in, const std::string &nm, unsigned int n)
default constructor
virtual ~MultiphysicsNonlinearSolverBase()
destructor
std::vector< IS > & index_sets()
void verify_gateaux_derivatives(SNES snes)
std::vector< MAST::TransientAssembly * > _discipline_assembly
vector of assembly objects for each discipline in this multiphysics system
const unsigned int _n_disciplines
number of disciplines
const std::string name() const
This class provides the interface that, if provided, will be called to update any data structures bef...
const std::string _name
name of this multiphysics solution
MAST::MultiphysicsNonlinearSolverBase::PreResidualUpdate * _update
object, if provided, is called to initialize the system data before computation of residual/Jacobian ...
MAST::TransientAssembly & get_system_assembly(unsigned int i)
MAST::MultiphysicsNonlinearSolverBase::PreResidualUpdate * get_pre_residual_update_object()
returns a pointer to the update object
std::vector< Mat > _sub_mats
void set_pre_residual_update_object(MAST::MultiphysicsNonlinearSolverBase::PreResidualUpdate &update)
assigns the update object to this solver
unsigned int n_disciplines() const
virtual void update_at_perturbed_solution(std::vector< libMesh::NumericVector< Real > * > &sol_vecs, std::vector< libMesh::NumericVector< Real > * > &dsol_vecs)=0
sol_vecs is the vector containing the solution for each discipline in this multiphysics solution...
void solve()
solves the system using the nested matrices that uses the discipline specific solver options ...
virtual ~PreResidualUpdate()
virtual void update_at_solution(std::vector< libMesh::NumericVector< Real > * > &sol_vecs)=0
sol_vecs is the vector containing the solution for each discipline in this multiphysics solution ...
void set_system_assembly(unsigned int i, MAST::TransientAssembly &assembly)
method to set the n^th discipline of this multiphysics system assembly.