Skip to content
Snippets Groups Projects
Commit 12ce2c58 authored by Elias Pipping's avatar Elias Pipping
Browse files

[Algorit] Kill damping

parent f592a86a
No related branches found
No related tags found
No related merge requests found
...@@ -60,8 +60,6 @@ verbosity = quiet ...@@ -60,8 +60,6 @@ verbosity = quiet
[v.fpi] [v.fpi]
tolerance = 1e-10 tolerance = 1e-10
maximumIterations = 10000 maximumIterations = 10000
relaxation = 0.5
requiredReduction = 0.5
lambda = 0.5 lambda = 0.5
[solver.tnnmg.linear] [solver.tnnmg.linear]
......
...@@ -340,8 +340,7 @@ int main(int argc, char *argv[]) { ...@@ -340,8 +340,7 @@ int main(int argc, char *argv[]) {
dirichletNodes); dirichletNodes);
auto multigridStep = factory.getSolver(); auto multigridStep = factory.getSolver();
std::fstream iterationWriter("iterations", std::fstream::out), std::fstream iterationWriter("iterations", std::fstream::out);
relaxationWriter("relaxation", std::fstream::out);
auto timeSteppingScheme = initTimeStepper( auto timeSteppingScheme = initTimeStepper(
parset.get<Config::scheme>("timeSteps.scheme"), parset.get<Config::scheme>("timeSteps.scheme"),
...@@ -363,10 +362,7 @@ int main(int argc, char *argv[]) { ...@@ -363,10 +362,7 @@ int main(int argc, char *argv[]) {
parset.get<size_t>("v.solver.maximumIterations"); parset.get<size_t>("v.solver.maximumIterations");
auto const tau = parset.get<double>("problem.finalTime") / timeSteps, auto const tau = parset.get<double>("problem.finalTime") / timeSteps,
tolerance = parset.get<double>("v.solver.tolerance"), tolerance = parset.get<double>("v.solver.tolerance"),
fixedPointTolerance = parset.get<double>("v.fpi.tolerance"), fixedPointTolerance = parset.get<double>("v.fpi.tolerance");
relaxation = parset.get<double>("v.fpi.relaxation"),
requiredReduction =
parset.get<double>("v.fpi.requiredReduction");
auto const printProgress = parset.get<bool>("io.printProgress"); auto const printProgress = parset.get<bool>("io.printProgress");
auto const verbosity = auto const verbosity =
parset.get<Solver::VerbosityMode>("v.solver.verbosity"); parset.get<Solver::VerbosityMode>("v.solver.verbosity");
...@@ -413,8 +409,6 @@ int main(int argc, char *argv[]) { ...@@ -413,8 +409,6 @@ int main(int argc, char *argv[]) {
Vector u; Vector u;
Vector v_saved; Vector v_saved;
ScalarVector alpha_saved;
double lastStateCorrection;
for (size_t stateFPI = 1; stateFPI <= maximumStateFPI; ++stateFPI) { for (size_t stateFPI = 1; stateFPI <= maximumStateFPI; ++stateFPI) {
timeSteppingScheme->extractOldVelocity(v_m); timeSteppingScheme->extractOldVelocity(v_m);
v_m *= 1.0 - lambda; v_m *= 1.0 - lambda;
...@@ -423,22 +417,6 @@ int main(int argc, char *argv[]) { ...@@ -423,22 +417,6 @@ int main(int argc, char *argv[]) {
stateUpdater->solve(v_m); stateUpdater->solve(v_m);
stateUpdater->extractAlpha(alpha); stateUpdater->extractAlpha(alpha);
if (stateFPI == 1)
relaxationWriter << "N ";
else {
double const stateCorrection =
stateEnergyNorm.diff(alpha, alpha_saved);
if (stateFPI <= 2 // lastStateCorrection is only set for stateFPI > 2
or stateCorrection < requiredReduction * lastStateCorrection)
relaxationWriter << "N ";
else {
alpha *= (1.0 - relaxation);
Arithmetic::addProduct(alpha, relaxation, alpha_saved);
relaxationWriter << "Y ";
}
lastStateCorrection = stateCorrection;
}
solveVelocityProblem(velocityIterate, alpha); solveVelocityProblem(velocityIterate, alpha);
timeSteppingScheme->postProcess(velocityIterate); timeSteppingScheme->postProcess(velocityIterate);
timeSteppingScheme->extractDisplacement(u); timeSteppingScheme->extractDisplacement(u);
...@@ -456,7 +434,6 @@ int main(int argc, char *argv[]) { ...@@ -456,7 +434,6 @@ int main(int argc, char *argv[]) {
if (stateFPI == maximumStateFPI) if (stateFPI == maximumStateFPI)
DUNE_THROW(Dune::Exception, "FPI failed to converge"); DUNE_THROW(Dune::Exception, "FPI failed to converge");
alpha_saved = alpha;
v_saved = v; v_saved = v;
} }
if (printProgress) if (printProgress)
...@@ -470,7 +447,6 @@ int main(int argc, char *argv[]) { ...@@ -470,7 +447,6 @@ int main(int argc, char *argv[]) {
report(ur, vr, alpha); report(ur, vr, alpha);
iterationWriter << std::endl; iterationWriter << std::endl;
relaxationWriter << std::endl;
{ {
BasisGridFunction<typename MyAssembler::VertexBasis, Vector> BasisGridFunction<typename MyAssembler::VertexBasis, Vector>
...@@ -489,7 +465,6 @@ int main(int argc, char *argv[]) { ...@@ -489,7 +465,6 @@ int main(int argc, char *argv[]) {
} }
} }
iterationWriter.close(); iterationWriter.close();
relaxationWriter.close();
Python::stop(); Python::stop();
} }
......
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