Commit d87f08fa authored by Praetorius, Simon's avatar Praetorius, Simon
Browse files

Rename get-methods

parent 2795c8e4
......@@ -35,7 +35,7 @@ int main(int argc, char** argv)
prob.addDirichletBC(predicate, 0, 0, dbcValues);
AdaptInfo adaptInfo("adapt");
prob.buildAfterAdapt(adaptInfo, Flag(0));
prob.assemble(adaptInfo);
prob.solve(adaptInfo);
prob.writeFiles(adaptInfo, true);
......
......@@ -38,14 +38,14 @@ int main(int argc, char** argv)
prob.initialize(INIT_ALL);
auto opL = makeOperator(tag::gradtest_gradtrial{}, 1.0);
prob.addMatrixOperator(opL, _0, _0);
prob.addMatrixOperator(opL, 0, 0);
auto opForce = makeOperator(tag::test{}, f, 6);
prob.addVectorOperator(opForce, _0);
prob.addVectorOperator(opForce, 0);
// set boundary condition
auto boundary = [](auto const& x){ return x[0] < 1.e-8 || x[1] < 1.e-8 || x[0] > 1.0-1.e-8 || x[1] > 1.0-1.e-8; };
prob.addDirichletBC(boundary, _0, _0, g);
prob.addDirichletBC(boundary, 0, 0, g);
AdaptInfo adaptInfo("adapt");
......@@ -62,17 +62,17 @@ int main(int argc, char** argv)
widths.push_back(h);
prob.globalBasis().update(gridView);
prob.buildAfterAdapt(adaptInfo, Flag(0));
prob.assemble(adaptInfo);
prob.solve(adaptInfo);
double errorL2 = integrate(sqr(g - prob.getSolution(_0)), gridView, 6);
double errorL2 = integrate(sqr(g - prob.solution(0)), gridView, 6);
errL2.push_back(std::sqrt(errorL2));
double errorH1 = errorL2 + integrate(unary_dot(grad_g - gradientAtQP(prob.getSolution(_0))), gridView, 6);
double errorH1 = errorL2 + integrate(unary_dot(grad_g - gradientAtQP(prob.solution(0))), gridView, 6);
errH1.push_back(std::sqrt(errorH1));
#if WRITE_FILES
Dune::VTKWriter<typename ElliptProblem::GridView> vtkWriter(gridView);
vtkWriter.addVertexData(prob.getSolution(_0), Dune::VTK::FieldInfo("u", Dune::VTK::FieldInfo::Type::scalar, 1));
vtkWriter.addVertexData(prob.solution(0), Dune::VTK::FieldInfo("u", Dune::VTK::FieldInfo::Type::scalar, 1));
vtkWriter.write("u_" + std::to_string(i));
#endif
}
......
......@@ -31,16 +31,16 @@ int main(int argc, char** argv)
AdaptInfo adaptInfo("adapt");
auto* invTau = probInstat.getInvTau();
auto invTau = std::ref(probInstat.invTau());
auto opTimeLhs = makeOperator(tag::test_trial{}, std::ref(*invTau));
auto opTimeLhs = makeOperator(tag::test_trial{}, invTau);
prob.addMatrixOperator(opTimeLhs, 0, 0);
auto opL = makeOperator(tag::gradtest_gradtrial{}, 1.0);
prob.addMatrixOperator(opL, 0, 0);
auto opTimeRhs = makeOperator(tag::test{},
invokeAtQP([invTau](double u) { return u * (*invTau); }, prob.getSolution(0)), 2);
invokeAtQP([invTau](double u) { return u * invTau.get(); }, prob.solution(0)), 2);
prob.addVectorOperator(opTimeRhs, 0);
auto opForce = makeOperator(tag::test{}, [](auto const& x) { return -1.0; }, 0);
......
......@@ -48,12 +48,16 @@ int main(int argc, char** argv)
auto _v = Dune::Indices::_0;
auto _p = Dune::Indices::_1;
auto invTau = std::ref(probInstat.invTau());
// <1/tau * u, v>
auto opTime = makeOperator(tag::testvec_trialvec{}, density);
auto opTime = makeOperator(tag::testvec_trialvec{},
density * invTau);
prob.addMatrixOperator(opTime, _v, _v);
// <1/tau * u^old, v>
auto opTimeOld = makeOperator(tag::testvec{}, density * prob.getSolution(_v));
auto opTimeOld = makeOperator(tag::testvec{},
density * invTau * prob.solution(_v));
prob.addVectorOperator(opTimeOld, _v);
......@@ -62,17 +66,20 @@ int main(int argc, char** argv)
prob.addMatrixOperator(opStokes, treepath(), treepath());
// <(u * nabla)u_i^old, v_i>
auto opNonlin1 = makeOperator(tag::testvec_trialvec{}, density * trans(gradientAtQP(prob.getSolution(_v))));
auto opNonlin1 = makeOperator(tag::testvec_trialvec{},
density * trans(gradientAtQP(prob.solution(_v))));
prob.addMatrixOperator(opNonlin1, _v, _v);
for (std::size_t i = 0; i < AMDIS_DOW; ++i) {
// <(u^old * nabla)u_i, v_i>
auto opNonlin2 = makeOperator(tag::test_gradtrial{}, density * prob.getSolution(_v));
auto opNonlin2 = makeOperator(tag::test_gradtrial{},
density * prob.solution(_v));
prob.addMatrixOperator(opNonlin2, treepath(_v,i), treepath(_v,i));
}
// <(u^old * grad(u_i^old)), v_i>
auto opNonlin3 = makeOperator(tag::testvec{}, trans(gradientAtQP(prob.getSolution(_v))) * prob.getSolution(_v));
auto opNonlin3 = makeOperator(tag::testvec{},
trans(gradientAtQP(prob.solution(_v))) * prob.solution(_v));
prob.addVectorOperator(opNonlin3, _v);
// define boundary regions
......@@ -98,8 +105,8 @@ int main(int argc, char** argv)
prob.addDirichletBC([](auto const& x) { return x[0] < 1.e-8 && x[1] < 1.e-8; }, _p, _p, 0.0);
// set initial conditions
prob.getSolution(_v).interpolate(parabolic_y);
prob.getSolution(_p).interpolate(0.0);
prob.solution(_v).interpolate(parabolic_y);
prob.solution(_p).interpolate(0.0);
AdaptInstationary adapt("adapt", prob, adaptInfo, probInstat, adaptInfo);
adapt.adapt();
......
......@@ -25,73 +25,73 @@ using StokesProblem = ProblemStat<StokesParam>;
int main(int argc, char** argv)
{
AMDiS::init(argc, argv);
AMDiS::init(argc, argv);
StokesProblem prob("stokes");
prob.initialize(INIT_ALL);
StokesProblem prob("stokes");
prob.initialize(INIT_ALL);
double viscosity = 1.0;
Parameters::get("stokes->viscosity", viscosity);
double viscosity = 1.0;
Parameters::get("stokes->viscosity", viscosity);
// tree-paths for components
auto _v = Dune::Indices::_0;
auto _p = Dune::Indices::_1;
// tree-paths for components
auto _v = Dune::Indices::_0;
auto _p = Dune::Indices::_1;
// <viscosity*grad(u_i), grad(v_i)>
for (std::size_t i = 0; i < DOW; ++i) {
auto opL = makeOperator(tag::gradtest_gradtrial{}, viscosity);
prob.addMatrixOperator(opL, treepath(_v,i), treepath(_v,i));
// <viscosity*grad(u_i), grad(v_i)>
for (std::size_t i = 0; i < DOW; ++i) {
auto opL = makeOperator(tag::gradtest_gradtrial{}, viscosity);
prob.addMatrixOperator(opL, treepath(_v,i), treepath(_v,i));
// <d_i(v_i), p>
auto opP = makeOperator(tag::partialtest_trial{i}, 1.0);
prob.addMatrixOperator(opP, treepath(_v,i), _p);
// <d_i(v_i), p>
auto opP = makeOperator(tag::partialtest_trial{i}, 1.0);
prob.addMatrixOperator(opP, treepath(_v,i), _p);
// <q, d_i(u_i)>
auto opDiv = makeOperator(tag::test_partialtrial{i}, 1.0);
prob.addMatrixOperator(opDiv, _p, treepath(_v,i));
}
// <q, d_i(u_i)>
auto opDiv = makeOperator(tag::test_partialtrial{i}, 1.0);
prob.addMatrixOperator(opDiv, _p, treepath(_v,i));
}
auto opZero = makeOperator(tag::test_trial{}, 0.0);
prob.addMatrixOperator(opZero, _p, _p);
auto opZero = makeOperator(tag::test_trial{}, 0.0);
prob.addMatrixOperator(opZero, _p, _p);
// define boundary regions
auto left = [](auto const& x) { return x[0] < 1.e-8; };
auto not_left = [](auto const& x) { return x[0] > 1.0 - 1.e-8 || x[1] < 1.e-8 || x[1] > 1.0 - 1.e-8; };
// define boundary regions
auto left = [](auto const& x) { return x[0] < 1.e-8; };
auto not_left = [](auto const& x) { return x[0] > 1.0 - 1.e-8 || x[1] < 1.e-8 || x[1] > 1.0 - 1.e-8; };
// define boundary values
auto parabolic_y = [](auto const& x) -> Dune::FieldVector<double,DOW>
{
return {0.0, x[1]*(1.0 - x[1])};
};
// define boundary values
auto parabolic_y = [](auto const& x) -> Dune::FieldVector<double,DOW>
{
return {0.0, x[1]*(1.0 - x[1])};
};
auto zero = [](auto const& x) -> Dune::FieldVector<double,DOW>
{
return {0.0, 0.0};
};
auto zero = [](auto const& x) -> Dune::FieldVector<double,DOW>
{
return {0.0, 0.0};
};
// set boundary conditions for velocity
prob.addDirichletBC(left, _v, _v, parabolic_y);
prob.addDirichletBC(not_left, _v, _v, zero);
// set boundary conditions for velocity
prob.addDirichletBC(left, _v, _v, parabolic_y);
prob.addDirichletBC(not_left, _v, _v, zero);
prob.addDirichletBC([](auto const& x) { return x[0] < 1.e-8 && x[1] < 1.e-8; }, _p, _p, 0.0);
prob.addDirichletBC([](auto const& x) { return x[0] < 1.e-8 && x[1] < 1.e-8; }, _p, _p, 0.0);
AdaptInfo adaptInfo("adapt");
AdaptInfo adaptInfo("adapt");
// assemble and solve system
prob.buildAfterAdapt(adaptInfo, Flag(0));
// assemble and solve system
prob.assemble(adaptInfo);
#ifdef DEBUG_MTL
// write matrix to file
mtl::io::matrix_market_ostream out("matrix_stokes0.mtx");
out << prob.getSystemMatrix().matrix();
std::cout << prob.getSystemMatrix().matrix() << '\n';
// write matrix to file
mtl::io::matrix_market_ostream out("matrix_stokes0.mtx");
out << prob.systemMatrix().matrix();
std::cout << prob.systemMatrix().matrix() << '\n';
#endif
prob.solve(adaptInfo);
prob.solve(adaptInfo);
// output solution
prob.writeFiles(adaptInfo);
// output solution
prob.writeFiles(adaptInfo);
AMDiS::finalize();
return 0;
AMDiS::finalize();
return 0;
}
......@@ -25,74 +25,74 @@ using StokesProblem = ProblemStat<StokesParam>;
int main(int argc, char** argv)
{
AMDiS::init(argc, argv);
AMDiS::init(argc, argv);
StokesProblem prob("stokes");
prob.initialize(INIT_ALL);
StokesProblem prob("stokes");
prob.initialize(INIT_ALL);
double viscosity = 1.0;
Parameters::get("stokes->viscosity", viscosity);
double viscosity = 1.0;
Parameters::get("stokes->viscosity", viscosity);
// tree-paths for components
auto _v = Dune::Indices::_0;
auto _p = Dune::Indices::_1;
// tree-paths for components
auto _v = Dune::Indices::_0;
auto _p = Dune::Indices::_1;
// <viscosity*grad(u_i), grad(v_i)>
for (std::size_t i = 0; i < DOW; ++i) {
auto opL = makeOperator(tag::gradtest_gradtrial{}, viscosity);
prob.addMatrixOperator(opL, treepath(_v,i), treepath(_v,i));
}
// <viscosity*grad(u_i), grad(v_i)>
for (std::size_t i = 0; i < DOW; ++i) {
auto opL = makeOperator(tag::gradtest_gradtrial{}, viscosity);
prob.addMatrixOperator(opL, treepath(_v,i), treepath(_v,i));
}
// <d_i(v_i), p>
auto opP = makeOperator(tag::divtestvec_trial{}, 1.0);
prob.addMatrixOperator(opP, _v, _p);
// <d_i(v_i), p>
auto opP = makeOperator(tag::divtestvec_trial{}, 1.0);
prob.addMatrixOperator(opP, _v, _p);
// <q, d_i(u_i)>
auto opDiv = makeOperator(tag::test_divtrialvec{}, 1.0);
prob.addMatrixOperator(opDiv, _p, _v);
// <q, d_i(u_i)>
auto opDiv = makeOperator(tag::test_divtrialvec{}, 1.0);
prob.addMatrixOperator(opDiv, _p, _v);
auto opZero = makeOperator(tag::test_trial{}, 0.0);
prob.addMatrixOperator(opZero, _p, _p);
auto opZero = makeOperator(tag::test_trial{}, 0.0);
prob.addMatrixOperator(opZero, _p, _p);
// define boundary regions
auto left = [](auto const& x) { return x[0] < 1.e-8; };
auto not_left = [](auto const& x) { return x[0] > 1.0 - 1.e-8 || x[1] < 1.e-8 || x[1] > 1.0 - 1.e-8; };
// define boundary regions
auto left = [](auto const& x) { return x[0] < 1.e-8; };
auto not_left = [](auto const& x) { return x[0] > 1.0 - 1.e-8 || x[1] < 1.e-8 || x[1] > 1.0 - 1.e-8; };
// define boundary values
auto parabolic_y = [](auto const& x) -> Dune::FieldVector<double,DOW>
{
return {0.0, x[1]*(1.0 - x[1])};
};
// define boundary values
auto parabolic_y = [](auto const& x) -> Dune::FieldVector<double,DOW>
{
return {0.0, x[1]*(1.0 - x[1])};
};
auto zero = [](auto const& x) -> Dune::FieldVector<double,DOW>
{
return {0.0, 0.0};
};
auto zero = [](auto const& x) -> Dune::FieldVector<double,DOW>
{
return {0.0, 0.0};
};
// set boundary conditions for velocity
prob.addDirichletBC(left, _v, _v, parabolic_y);
prob.addDirichletBC(not_left, _v, _v, zero);
// set boundary conditions for velocity
prob.addDirichletBC(left, _v, _v, parabolic_y);
prob.addDirichletBC(not_left, _v, _v, zero);
prob.addDirichletBC([](auto const& x) { return x[0] < 1.e-8 && x[1] < 1.e-8; }, _p, _p, 0.0);
prob.addDirichletBC([](auto const& x) { return x[0] < 1.e-8 && x[1] < 1.e-8; }, _p, _p, 0.0);
AdaptInfo adaptInfo("adapt");
AdaptInfo adaptInfo("adapt");
// assemble and solve system
prob.buildAfterAdapt(adaptInfo, Flag(0));
// assemble and solve system
prob.assemble(adaptInfo);
#ifdef DEBUG_MTL
// write matrix to file
mtl::io::matrix_market_ostream out("matrix_stokes1.mtx");
out << prob.getSystemMatrix().matrix();
std::cout << prob.getSystemMatrix().matrix() << '\n';
// write matrix to file
mtl::io::matrix_market_ostream out("matrix_stokes1.mtx");
out << prob.systemMatrix().matrix();
std::cout << prob.systemMatrix().matrix() << '\n';
#endif
prob.solve(adaptInfo);
prob.solve(adaptInfo);
// output solution
prob.writeFiles(adaptInfo);
// output solution
prob.writeFiles(adaptInfo);
AMDiS::finalize();
return 0;
AMDiS::finalize();
return 0;
}
......@@ -62,8 +62,7 @@ int main(int argc, char** argv)
AdaptInfo adaptInfo("adapt");
// assemble and solve system
prob.buildAfterAdapt(adaptInfo, Flag(0));
prob.assemble(adaptInfo);
prob.solve(adaptInfo);
// output solution
......
......@@ -46,9 +46,9 @@ int main(int argc, char** argv)
// write matrix to file
if (Parameters::get<int>("elliptMesh->global refinements").value_or(0) < 4) {
mtl::io::matrix_market_ostream out("matrix.mtx");
out << prob.getSystemMatrix().matrix();
out << prob.systemMatrix().matrix();
std::cout << prob.getSystemMatrix().matrix() << '\n';
std::cout << prob.systemMatrix().matrix() << '\n';
}
#endif
......
......@@ -37,13 +37,13 @@ namespace AMDiS
virtual int adapt() = 0;
/// Returns \ref name
std::string const& getName() const
std::string const& name() const
{
return name_;
}
/// Returns \ref problemIteration
ProblemIterationInterface* getProblemIteration() const
ProblemIterationInterface* problemIteration() const
{
return problemIteration_;
}
......@@ -55,13 +55,13 @@ namespace AMDiS
}
/// Returns \ref adaptInfo
AdaptInfo& getAdaptInfo() const
AdaptInfo& adaptInfo() const
{
return adaptInfo_;
}
/// Returns \ref problemTime
ProblemTimeInterface* getProblemTime() const
ProblemTimeInterface* problemTime() const
{
return problemTime_;
}
......@@ -73,7 +73,7 @@ namespace AMDiS
}
/// Returns \ref initialAdaptInfo
AdaptInfo& getInitialAdaptInfo() const
AdaptInfo& initialAdaptInfo() const
{
return *initialAdaptInfo_;
}
......
......@@ -29,28 +29,28 @@ namespace AMDiS
: name_(name)
{
// init();
Parameters::get(name + "->start time", startTime);
time = startTime;
Parameters::get(name + "->start time", startTime_);
time_ = startTime_;
Parameters::get(name + "->timestep", timestep);
Parameters::get(name + "->end time", endTime);
Parameters::get(name + "->max iteration", maxSpaceIteration);
Parameters::get(name + "->max timestep iteration", maxTimestepIteration);
Parameters::get(name + "->max time iteration", maxTimeIteration);
Parameters::get(name + "->min timestep", minTimestep);
Parameters::get(name + "->max timestep", maxTimestep);
Parameters::get(name + "->number of timesteps", nTimesteps);
Parameters::get(name + "->time tolerance", globalTimeTolerance);
Parameters::get(name + "->timestep", timestep_);
Parameters::get(name + "->end time", endTime_);
Parameters::get(name + "->max iteration", maxSpaceIteration_);
Parameters::get(name + "->max timestep iteration", maxTimestepIteration_);
Parameters::get(name + "->max time iteration", maxTimeIteration_);
Parameters::get(name + "->min timestep", minTimestep_);
Parameters::get(name + "->max timestep", maxTimestep_);
Parameters::get(name + "->number of timesteps", nTimesteps_);
Parameters::get(name + "->time tolerance", globalTimeTolerance_);
}
void AdaptInfo::printTimeErrorLowInfo() const
{
for (auto const& scalContent : scalContents)
for (auto const& scalContent : scalContents_)
{
auto i = scalContent.first;
std::cout << " Time error estimate ["<<i<<"] = "
<< getTimeEstCombined(i) << "\n"
<< timeEstCombined(i) << "\n"
<< " Time error estimate sum ["<<i<<"] = "
<< scalContent.second.est_t_sum << "\n"
<< " Time error estimate max ["<<i<<"] = "
......@@ -64,17 +64,17 @@ namespace AMDiS
void AdaptInfo::reset()
{
spaceIteration = -1;
timestepIteration = 0;
timeIteration = 0;
time = 0.0;
timestep = 0.0;
timestepNumber = 0;
solverIterations = 0;
solverResidual = 0.0;
spaceIteration_ = -1;
timestepIteration_ = 0;
timeIteration_ = 0;
time_ = 0.0;
timestep_ = 0.0;
timestepNumber_ = 0;
solverIterations_ = 0;
solverResidual_ = 0.0;
Parameters::get(name_ + "->timestep", timestep);
lastProcessedTimestep=timestep;
Parameters::get(name_ + "->timestep", timestep_);
lastProcessedTimestep_ = timestep_;
}
} // end namespace AMDiS
......@@ -86,7 +86,7 @@ namespace AMDiS
/// Returns whether space tolerance is reached.
virtual bool spaceToleranceReached() const
{
for (auto const& scalContent : scalContents) {
for (auto const& scalContent : scalContents_) {
if (!(scalContent.second.est_sum < scalContent.second.spaceTolerance))
return false;
}
......@@ -97,7 +97,7 @@ namespace AMDiS
/// Returns whether space tolerance of component associated with key is reached.
virtual bool spaceToleranceReached(Key key) const
{
if (!(getScalContent(key).est_sum < getScalContent(key).spaceTolerance))
if (!(scalContent(key).est_sum < scalContent(key).spaceTolerance))
return false;
else
return true;
......@@ -112,8 +112,8 @@ namespace AMDiS
/// Returns whether time tolerance is reached.
virtual bool timeToleranceReached() const
{
for (auto const& scalContent : scalContents)
if (!(getTimeEstCombined(scalContent.first) < scalContent.second.timeTolerance))
for (auto const& scalContent : scalContents_)
if (!(timeEstCombined(scalContent.first) < scalContent.second.timeTolerance))
return false;
return true;
......@@ -122,7 +122,7 @@ namespace AMDiS
/// Returns whether time tolerance of component associated with key is reached.
virtual bool timeToleranceReached(Key key) const
{
if (!(getTimeEstCombined(key) < getScalContent(key).timeTolerance))
if (!(timeEstCombined(key) < scalContent(key).timeTolerance))
return false;
else
return true;
......@@ -137,8 +137,8 @@ namespace AMDiS
/// Returns whether time error is under its lower bound.
virtual bool timeErrorLow() const
{
for (auto const& scalContent : scalContents)
if (!(getTimeEstCombined(scalContent.first) < scalContent.second.timeErrLow))
for (auto const& scalContent : scalContents_)
if (!(timeEstCombined(scalContent.first) < scalContent.second.timeErrLow))
return false;
return true;
......@@ -146,146 +146,146 @@ namespace AMDiS
/// Returns the time estimation as a combination
/// of maximal and integral time error
double getTimeEstCombined(Key key) const
double timeEstCombined(Key key) const
{
return
getScalContent(key).est_t_max * getScalContent(key).fac_max +
getScalContent(key).est_t_sum * getScalContent(key).fac_sum;
scalContent(key).est_t_max * scalContent(key).fac_max +
scalContent(key).est_t_sum * scalContent(key).fac_sum;
}
template <class TP, REQUIRES( Concepts::PreTreePath<TP> )>
double getTimeEstCombined(const TP& tp) const
double timeEstCombined(const TP& tp) const
{
return getTimeEstCombined(to_string(tp));
return tTimeEstCombined(to_string(tp));
}
/// Print debug information about time error and its bound.
void printTimeErrorLowInfo() const;
/// Returns \ref spaceIteration.
int getSpaceIteration() const
/// Returns \ref spaceIteration_.
int spaceIteration() const
{
return spaceIteration;
return spaceIteration_;
}
/// Sets \ref spaceIteration.
/// Sets \ref spaceIteration_.
void setSpaceIteration(int it)
{
spaceIteration = it;
spaceIteration_ = it;
}