From 24a7ea8ed85ef3a6d3c70c0aceb61d7f04db053d Mon Sep 17 00:00:00 2001 From: Elias Pipping <elias.pipping@fu-berlin.de> Date: Wed, 14 Mar 2012 11:24:30 +0100 Subject: [PATCH] Make dirichlet conditions independent of the mesh --- src/one-body-sample.cc | 5 ++++- src/one-body-sample.py | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc index 895da3fd..a2b5b42b 100644 --- a/src/one-body-sample.cc +++ b/src/one-body-sample.cc @@ -131,6 +131,7 @@ int main(int argc, char *argv[]) { auto const solver_tolerance = parset.get<double>("solver.tolerance"); auto const refinements = parset.get<size_t>("grid.refinements"); + double const refinement_factor = std::pow(2, refinements); auto const verbose = parset.get<bool>("verbose"); Solver::VerbosityMode const verbosity = @@ -235,9 +236,11 @@ int main(int argc, char *argv[]) { stiffnessMatrix.mmv(u4, b4); // Apply Dirichlet condition for (int i = 0; i < finestSize; ++i) - if (ignoreNodes[i].count() == dim) + if (ignoreNodes[i].count() == dim) { functions.get("dirichletCondition") .evaluate(h * run, u4_diff[i][0]); + u4_diff[i][0] /= refinement_factor; + } for (int state_fpi = 0; state_fpi < parset.get<int>("solver.tnnmg.fixed_point_iterations"); diff --git a/src/one-body-sample.py b/src/one-body-sample.py index 803f86f6..81d09658 100644 --- a/src/one-body-sample.py +++ b/src/one-body-sample.py @@ -14,9 +14,9 @@ class neumannCondition: class dirichletCondition: def __call__(self, x): # return 0 - fst = 3e-5 - snd = 1e-5 - trd = 3e-5 + fst = 5e-4 + snd = 2e-4 + trd = 5e-4 if x < 1.0/3: return fst elif x < 2.0/3: -- GitLab