10 #include <stk_linsys/LinearSystem.hpp> 11 #include <stk_linsys/ImplDetails.hpp> 12 #include <stk_mesh/base/GetBuckets.hpp> 14 #include <stk_linsys/LinsysFunctions.hpp> 16 #include <fei_Trilinos_Helpers.hpp> 22 : m_fei_factory(factory),
24 m_fei_mgraph(new fei::MatrixGraph_Impl2(m_dof_mapper.get_fei_VectorSpace(), fei::SharedPtr<fei::VectorSpace>())),
35 LinearSystem::set_parameters(Teuchos::ParameterList& paramlist)
37 Trilinos_Helpers::copy_parameterlist(paramlist, m_param_set);
39 if (m_fei_factory.get() != NULL) {
40 m_fei_factory->parameters(m_param_set);
42 if (m_fei_mgraph.get() != NULL) {
43 m_fei_mgraph->setParameters(m_param_set);
50 m_fei_mgraph->initComplete();
57 m_fei_linearsystem = m_fei_factory->createLinearSystem(m_fei_mgraph);
58 m_fei_linearsystem->parameters(m_param_set);
60 fei::SharedPtr<fei::Matrix> mtx = m_fei_factory->createMatrix(m_fei_mgraph);
61 mtx->parameters(m_param_set);
62 m_fei_linearsystem->setMatrix(mtx);
63 fei::SharedPtr<fei::Vector> rhs = m_fei_factory->createVector(m_fei_mgraph);
64 m_fei_linearsystem->setRHS(rhs);
65 fei::SharedPtr<fei::Vector> soln = m_fei_factory->createVector(m_fei_mgraph,
true);
66 m_fei_linearsystem->setSolutionVector(soln);
72 m_fei_linearsystem->loadComplete();
88 LinearSystem::reset_to_zero()
90 fei::SharedPtr<fei::Matrix> mtx = m_fei_linearsystem->getMatrix();
91 if (mtx.get() != NULL) {
95 fei::SharedPtr<fei::Vector> rhs = m_fei_linearsystem->getRHS();
96 if (rhs.get() != NULL) {
101 const fei::SharedPtr<fei::MatrixGraph>
107 fei::SharedPtr<fei::MatrixGraph>
113 const fei::SharedPtr<fei::LinearSystem>
116 return m_fei_linearsystem;
119 fei::SharedPtr<fei::LinearSystem>
122 return m_fei_linearsystem;
126 LinearSystem::write_files(
const std::string& base_name)
const 128 fei::SharedPtr<fei::Matrix> A = m_fei_linearsystem->getMatrix();
129 if (A.get() != NULL) {
130 std::ostringstream ossA;
131 ossA <<
"A_" << base_name <<
".mtx";
132 std::string Aname = ossA.str();
133 A->writeToFile(Aname.c_str());
135 fei::SharedPtr<fei::Vector> b = m_fei_linearsystem->getRHS();
136 if (b.get() != NULL) {
137 std::ostringstream ossb;
138 ossb <<
"b_" << base_name <<
".vec";
139 std::string bname = ossb.str();
140 b->writeToFile(bname.c_str());
147 return fei_solve(status, *m_fei_linearsystem, params);
int fei_solve(int &status, fei::LinearSystem &fei_ls, const Teuchos::ParameterList ¶ms)
const fei::SharedPtr< fei::MatrixGraph > get_fei_MatrixGraph() const
const fei::SharedPtr< fei::VectorSpace > get_fei_VectorSpace() const
void create_fei_LinearSystem()
void synchronize_mappings_and_structure()
const fei::SharedPtr< fei::LinearSystem > get_fei_LinearSystem() const
const DofMapper & get_DofMapper() const
int solve(int &status, const Teuchos::ParameterList ¶ms)
LinearSystem(MPI_Comm comm, fei::SharedPtr< fei::Factory > factory)