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()
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 ...
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 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
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
const std::string name() const
unsigned int n_disciplines() const
void solve()
solves the system using the nested matrices that uses the discipline specific solver options ...
virtual ~PreResidualUpdate()
void set_system_assembly(unsigned int i, MAST::TransientAssembly &assembly)
method to set the n^th discipline of this multiphysics system assembly.