Skip to content
Snippets Groups Projects
Commit ad08581a authored by Christoph Lehmann's avatar Christoph Lehmann
Browse files

[T] adapted to changer is ConfigTree, assemblers, linear solvers

parent 5cfb23fc
No related branches found
No related tags found
No related merge requests found
...@@ -70,10 +70,11 @@ TEST(AssemblerLibSerialLinearSolver, Steady2DdiffusionQuadElem) ...@@ -70,10 +70,11 @@ TEST(AssemblerLibSerialLinearSolver, Steady2DdiffusionQuadElem)
// allocate a vector and matrix // allocate a vector and matrix
typedef GlobalSetup::VectorType GlobalVector; typedef GlobalSetup::VectorType GlobalVector;
typedef GlobalSetup::MatrixType GlobalMatrix; typedef GlobalSetup::MatrixType GlobalMatrix;
std::unique_ptr<GlobalMatrix> A(globalSetup.createMatrix(local_to_global_index_map.dofSize())); auto A = globalSetup.createMatrix(local_to_global_index_map.dofSize());
A->setZero(); A->setZero();
std::unique_ptr<GlobalVector> rhs(globalSetup.createVector(local_to_global_index_map.dofSize())); auto rhs = globalSetup.createVector(local_to_global_index_map.dofSize());
std::unique_ptr<GlobalVector> x(globalSetup.createVector(local_to_global_index_map.dofSize())); auto x = globalSetup.createVector(local_to_global_index_map.dofSize());
// TODO no setZero() for rhs, x?
// Initializer of the local assembler data. // Initializer of the local assembler data.
std::vector<Example::LocalAssemblerData< std::vector<Example::LocalAssemblerData<
...@@ -94,20 +95,25 @@ TEST(AssemblerLibSerialLinearSolver, Steady2DdiffusionQuadElem) ...@@ -94,20 +95,25 @@ TEST(AssemblerLibSerialLinearSolver, Steady2DdiffusionQuadElem)
local_to_global_index_map); local_to_global_index_map);
// Call global initializer for each mesh element. // Call global initializer for each mesh element.
globalSetup.execute( globalSetup.transform(
local_asm_builder, local_asm_builder,
ex1.msh->getElements(), ex1.msh->getElements(),
local_assembler_data, local_assembler_data,
ex1); ex1);
// TODO in the future use simpler NumLib::ODESystemTag
// Local and global assemblers. // Local and global assemblers.
typedef AssemblerLib::VectorMatrixAssembler< typedef AssemblerLib::VectorMatrixAssembler<
GlobalMatrix, GlobalVector> GlobalAssembler; GlobalMatrix, GlobalVector,
NumLib::ODESystemTag::FirstOrderImplicitQuasilinear> GlobalAssembler;
GlobalAssembler assembler(*A.get(), *rhs.get(), local_to_global_index_map); GlobalAssembler assembler(local_to_global_index_map);
// Call global assembler for each mesh element. // Call global assembler for each mesh element.
globalSetup.execute(assembler, local_assembler_data); auto M_dummy = globalSetup.createMatrix(local_to_global_index_map.dofSize());
A->setZero();
auto const t = 0.0;
globalSetup.execute(assembler, local_assembler_data, t, *x, *M_dummy, *A, *rhs);
//std::cout << "A=\n"; //std::cout << "A=\n";
//A->write(std::cout); //A->write(std::cout);
...@@ -136,10 +142,12 @@ TEST(AssemblerLibSerialLinearSolver, Steady2DdiffusionQuadElem) ...@@ -136,10 +142,12 @@ TEST(AssemblerLibSerialLinearSolver, Steady2DdiffusionQuadElem)
t_root.put_child("eigen", t_solver); t_root.put_child("eigen", t_solver);
} }
t_root.put("lis", "-i cg -p none -tol 1e-16 -maxiter 1000"); t_root.put("lis", "-i cg -p none -tol 1e-16 -maxiter 1000");
BaseLib::ConfigTree conf(t_root, ""); BaseLib::ConfigTree conf(t_root, "",
BaseLib::ConfigTree::onerror,
BaseLib::ConfigTree::onwarning);
GlobalSetup::LinearSolver ls(*A, "solver_name", &conf); GlobalSetup::LinearSolver ls("solver_name", &conf);
ls.solve(*rhs, *x); ls.solve(*A, *rhs, *x);
// copy solution to double vector // copy solution to double vector
std::vector<double> solution(x->size()); std::vector<double> solution(x->size());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment