Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

picard iterations for both codes #55

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/AMRWind.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,11 @@ void AMRWind::pre_advance_stage2() { m_incflo.pre_advance_stage2(); }

void AMRWind::advance_timestep() { m_incflo.advance(); }

void AMRWind::additional_picard_iteration()
{
m_incflo.redo_proj();
}

void AMRWind::post_advance() { m_incflo.post_advance_work(); }

void AMRWind::pre_overset_conn_work() { m_tgiface.pre_overset_conn_work(); }
Expand Down
2 changes: 1 addition & 1 deletion src/AMRWind.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class AMRWind : public ExawindSolver
void pre_advance_stage1() override;
void pre_advance_stage2() override;
void advance_timestep() override;
void additional_picard_iterations(const int) override{};
void additional_picard_iteration() override;
void post_advance() override;
void pre_overset_conn_work() override;
void post_overset_conn_work() override;
Expand Down
12 changes: 8 additions & 4 deletions src/ExawindSolver.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#include "Timers.h"
#include "ParallelPrinter.h"
#include <sstream>

namespace exawind {

Expand Down Expand Up @@ -40,15 +41,18 @@ class ExawindSolver
advance_timestep();
m_timers.tock(name);
};
void call_additional_picard_iterations(const int n)
void call_additional_picard_iteration(const int n)
{
std::string name = "AdditionalPicardIterations";
std::stringstream it;
it << "AdditionalPicardIteration: " << n;
std::string name;
it >> name;
if (std::find(m_names.begin(), m_names.end(), name) == m_names.end()) {
m_timers.addTimer(name);
m_names.push_back(name);
}
m_timers.tick(name);
additional_picard_iterations(n);
additional_picard_iteration();
m_timers.tock(name);
};
void call_post_advance()
Expand Down Expand Up @@ -111,7 +115,7 @@ class ExawindSolver
virtual void pre_advance_stage1() = 0;
virtual void pre_advance_stage2() = 0;
virtual void advance_timestep() = 0;
virtual void additional_picard_iterations(const int) = 0;
virtual void additional_picard_iteration() = 0;
virtual void post_advance() = 0;
virtual void pre_overset_conn_work() = 0;
virtual void post_overset_conn_work() = 0;
Expand Down
4 changes: 2 additions & 2 deletions src/NaluWind.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,10 +97,10 @@ void NaluWind::advance_timestep()
realm->advance_time_step();
}

void NaluWind::additional_picard_iterations(const int n)
void NaluWind::additional_picard_iteration()
{
for (auto* realm : m_sim.timeIntegrator_->realmVec_)
realm->nonlinear_iterations(n);
realm->nonlinear_iterations(1);
}

void NaluWind::post_advance() { m_sim.timeIntegrator_->post_realm_advance(); }
Expand Down
2 changes: 1 addition & 1 deletion src/NaluWind.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ class NaluWind : public ExawindSolver
void pre_advance_stage1() override;
void pre_advance_stage2() override;
void advance_timestep() override;
void additional_picard_iterations(const int) override;
void additional_picard_iteration() override;
void post_advance() override;
void pre_overset_conn_work() override;
void post_overset_conn_work() override;
Expand Down
9 changes: 6 additions & 3 deletions src/OversetSimulation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -149,9 +149,12 @@ void OversetSimulation::run_timesteps(const int add_pic_its, const int nsteps)
for (auto& ss : m_solvers) ss->call_advance_timestep();

if (add_pic_its > 0) {
exchange_solution();
for (auto& ss : m_solvers)
ss->call_additional_picard_iterations(add_pic_its);
for (int n = 0; n < add_pic_its; ++n) {
for (auto& ss : m_solvers) {
exchange_solution();
ss->call_additional_picard_iteration(n);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is n getting used anywhere? I would still keep n user defined until some guideline has been established on how many picards are sufficient to drop the nonlinear residual norm by 2 orders of magnitude on the nalu-wind side. At the very least, would keep this number at 2, not 1.

}
}
}

for (auto& ss : m_solvers) ss->call_post_advance();
Expand Down