Skip to content

Commit 87431fd

Browse files
authored
Merge pull request #2 from Pressio/release-candidate-0.16.0
updating to work with pressio 0.16.0
2 parents 8240bba + 475905c commit 87431fd

File tree

5 files changed

+13
-25
lines changed

5 files changed

+13
-25
lines changed

include/pressio-schwarz/rom_utils.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ class Weigher {
344344
}
345345
}
346346

347-
int leadingDim() { return leading_dim; }
347+
int leadingDim() const { return leading_dim; }
348348

349349
// operator on residual
350350
void operator()(const Eigen::Matrix<scalar_t, -1, 1> & operand,

include/pressio-schwarz/subdomain.hpp

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -504,8 +504,7 @@ class SubdomainLSPG: public SubdomainROM<mesh_t, app_type, prob_t>
504504
using linsolver_t = pressio::linearsolvers::Solver<solver_tag, hessian_t>;
505505

506506
using problem_t = decltype(plspg::create_unsteady_problem(pressio::ode::StepScheme(), std::declval<trial_t&>(), std::declval<app_t&>()));
507-
using stepper_t = decltype(std::declval<problem_t>().lspgStepper());
508-
using nonlinsolver_t = decltype(pressio::create_gauss_newton_solver(std::declval<stepper_t&>(), std::declval<linsolver_t&>()));
507+
using nonlinsolver_t = decltype(pressio::create_gauss_newton_solver(std::declval<problem_t&>(), std::declval<linsolver_t&>()));
509508

510509
public:
511510

@@ -528,9 +527,8 @@ class SubdomainLSPG: public SubdomainROM<mesh_t, app_type, prob_t>
528527
probId, odeScheme, fluxOrder, icflag, icFileRoot, userParams,
529528
transRoot, basisRoot, nmodes)
530529
, m_problem(plspg::create_unsteady_problem(odeScheme, this->m_trialSpace, *(this->m_app)))
531-
, m_stepper(m_problem.lspgStepper())
532530
, m_linSolverObj(std::make_shared<linsolver_t>())
533-
, m_nonlinSolver(pressio::create_gauss_newton_solver(m_stepper, *m_linSolverObj))
531+
, m_nonlinSolver(pressio::create_gauss_newton_solver(m_problem, *m_linSolverObj))
534532
{
535533

536534
m_nonlinSolver.setStopCriterion(pressio::nonlinearsolvers::Stop::WhenAbsolutel2NormOfCorrectionBelowTolerance);
@@ -539,12 +537,11 @@ class SubdomainLSPG: public SubdomainROM<mesh_t, app_type, prob_t>
539537
}
540538

541539
void doStep(pode::StepStartAt<double> startTime, pode::StepCount step, pode::StepSize<double> dt) final {
542-
m_stepper(this->m_stateReduced, startTime, step, dt, m_nonlinSolver);
540+
m_problem(this->m_stateReduced, startTime, step, dt, m_nonlinSolver);
543541
}
544542

545543
private:
546544
problem_t m_problem;
547-
stepper_t m_stepper;
548545
std::shared_ptr<linsolver_t> m_linSolverObj;
549546
nonlinsolver_t m_nonlinSolver;
550547
};
@@ -848,13 +845,11 @@ class SubdomainLSPGHyper: public SubdomainHyper<mesh_t, app_type, prob_t>
848845
std::declval<app_t&>(),
849846
std::declval<updaterHyp_t&>()));
850847

851-
using stepperHyp_t = std::remove_reference_t<
852-
decltype(std::declval<problemHyp_t>().lspgStepper())>;
853848
using tag_t = pressio::nonlinearsolvers::impl::CompactWeightedGaussNewtonNormalEqTag;
854849

855850
using nonlinsolverHyp_t =
856851
decltype(pressio::create_gauss_newton_solver(
857-
std::declval<stepperHyp_t&>(),
852+
std::declval<problemHyp_t&>(),
858853
std::declval<linsolver_t&>(),
859854
std::declval<weigh_t&>(),
860855
std::declval<tag_t>()
@@ -892,7 +887,7 @@ class SubdomainLSPGHyper: public SubdomainHyper<mesh_t, app_type, prob_t>
892887
}
893888

894889
void doStep(pode::StepStartAt<double> startTime, pode::StepCount step, pode::StepSize<double> dt) final {
895-
(*m_stepperHyper)(this->m_stateReduced, startTime, step, dt, *m_nonlinSolverHyper);
890+
(*m_problemHyper)(this->m_stateReduced, startTime, step, dt, *m_nonlinSolverHyper);
896891
}
897892

898893
// Again, this has to be done because the hyper-reduced mesh
@@ -915,8 +910,6 @@ class SubdomainLSPGHyper: public SubdomainHyper<mesh_t, app_type, prob_t>
915910
*(this->m_appHyper),
916911
*m_updaterHyper));
917912

918-
m_stepperHyper = &(m_problemHyper->lspgStepper());
919-
920913
m_linSolverObjHyper = std::make_shared<linsolver_t>();
921914
m_tag = std::make_shared<tag_t>();
922915

@@ -932,7 +925,7 @@ class SubdomainLSPGHyper: public SubdomainHyper<mesh_t, app_type, prob_t>
932925

933926
m_nonlinSolverHyper = std::make_shared<nonlinsolverHyp_t>(
934927
pressio::create_gauss_newton_solver(
935-
*m_stepperHyper, *m_linSolverObjHyper, *m_weigher, *m_tag
928+
*m_problemHyper, *m_linSolverObjHyper, *m_weigher, *m_tag
936929
)
937930
);
938931

@@ -948,7 +941,6 @@ class SubdomainLSPGHyper: public SubdomainHyper<mesh_t, app_type, prob_t>
948941
int m_nmodes_gpod;
949942
std::shared_ptr<updaterHyp_t> m_updaterHyper;
950943
std::shared_ptr<problemHyp_t> m_problemHyper;
951-
stepperHyp_t * m_stepperHyper;
952944
std::shared_ptr<linsolver_t> m_linSolverObjHyper;
953945
std::shared_ptr<weigh_t> m_weigher;
954946
std::shared_ptr<tag_t> m_tag;

tests_cpp/eigen_2d_swe_slip_wall_implicit_hproms/lspg/main.cc

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,14 @@ int main()
7070

7171
// define ROM problem
7272
auto problem = plspg::create_unsteady_problem(scheme, trialSpaceHyp, fomSystemHyp, hrUpdater);
73-
auto stepper = problem.lspgStepper();
7473

7574
// define solver
7675
using hessian_t = Eigen::Matrix<scalar_type, -1, -1>;
7776
using solver_tag = pressio::linearsolvers::direct::HouseholderQR;
7877
using linear_solver_t = pressio::linearsolvers::Solver<solver_tag, hessian_t>;
7978
linear_solver_t linearSolver;
8079

81-
auto solver = pressio::create_gauss_newton_solver(stepper, linearSolver);
80+
auto solver = pressio::create_gauss_newton_solver(problem, linearSolver);
8281
solver.setStopCriterion(pnlins::Stop::WhenAbsolutel2NormOfGradientBelowTolerance);
8382
solver.setStopTolerance(1e-5);
8483

@@ -91,7 +90,7 @@ int main()
9190
const auto Nsteps = pressio::ode::StepCount(tf/dt);
9291

9392
auto runtimeStart = std::chrono::high_resolution_clock::now();
94-
pode::advance_n_steps(stepper, reducedState, 0.0, dt, Nsteps, Obs, solver);
93+
pode::advance_n_steps(problem, reducedState, 0.0, dt, Nsteps, Obs, solver);
9594
auto runtimeEnd = std::chrono::high_resolution_clock::now();
9695
auto nsElapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(runtimeEnd - runtimeStart).count();
9796
double secElapsed = static_cast<double>(nsElapsed) * 1e-9;

tests_cpp/eigen_2d_swe_slip_wall_implicit_hproms_gpod/lspg/main.cc

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,8 @@ int main()
7171

7272
// define ROM problem
7373
auto problem = plspg::create_unsteady_problem(scheme, trialSpaceHyp, fomSystemHyp, hrUpdater);
74-
auto stepper = problem.lspgStepper();
7574

7675
// define solver
77-
using stepper_t = decltype(stepper);
7876
using hessian_t = Eigen::Matrix<scalar_type, -1, -1>;
7977
using solver_tag = pressio::linearsolvers::direct::HouseholderQR;
8078
using linear_solver_t = pressio::linearsolvers::Solver<solver_tag, hessian_t>;
@@ -85,7 +83,7 @@ int main()
8583
// Gauss-Newton with gappy POD weighting
8684
auto weighter = pschwarz::Weigher<scalar_type>("gappy_pod", basisfile, sampleFile, nmodes_gpod, numDofsPerCell);
8785
using weigher_t = decltype(weighter);
88-
auto solver = pressio::create_gauss_newton_solver(stepper, linearSolver, weighter, tag);
86+
auto solver = pressio::create_gauss_newton_solver(problem, linearSolver, weighter, tag);
8987
solver.setStopCriterion(pnlins::Stop::WhenAbsolutel2NormOfGradientBelowTolerance);
9088
solver.setStopTolerance(1e-5);
9189

@@ -98,7 +96,7 @@ int main()
9896
const auto Nsteps = pressio::ode::StepCount(tf/dt);
9997

10098
auto runtimeStart = std::chrono::high_resolution_clock::now();
101-
pode::advance_n_steps(stepper, reducedState, 0.0, dt, Nsteps, Obs, solver);
99+
pode::advance_n_steps(problem, reducedState, 0.0, dt, Nsteps, Obs, solver);
102100
auto runtimeEnd = std::chrono::high_resolution_clock::now();
103101
auto nsElapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(runtimeEnd - runtimeStart).count();
104102
double secElapsed = static_cast<double>(nsElapsed) * 1e-9;

tests_cpp/eigen_2d_swe_slip_wall_implicit_roms/lspg/main.cc

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,14 @@ int main()
5757

5858
// define ROM problem
5959
auto problem = plspg::create_unsteady_problem(scheme, trialSpace, fomSystem);
60-
auto stepper = problem.lspgStepper();
6160

6261
// define solver
6362
using hessian_t = Eigen::Matrix<scalar_type, -1, -1>;
6463
using solver_tag = pressio::linearsolvers::direct::HouseholderQR;
6564
using linear_solver_t = pressio::linearsolvers::Solver<solver_tag, hessian_t>;
6665
linear_solver_t linearSolver;
6766

68-
auto solver = pressio::create_gauss_newton_solver(stepper, linearSolver);
67+
auto solver = pressio::create_gauss_newton_solver(problem, linearSolver);
6968
solver.setStopCriterion(pnlins::Stop::WhenAbsolutel2NormOfGradientBelowTolerance);
7069
solver.setStopTolerance(1e-5);
7170

@@ -78,7 +77,7 @@ int main()
7877
const auto Nsteps = pressio::ode::StepCount(tf/dt);
7978

8079
auto runtimeStart = std::chrono::high_resolution_clock::now();
81-
pode::advance_n_steps(stepper, reducedState, 0.0, dt, Nsteps, Obs, solver);
80+
pode::advance_n_steps(problem, reducedState, 0.0, dt, Nsteps, Obs, solver);
8281
auto runtimeEnd = std::chrono::high_resolution_clock::now();
8382
std::chrono::duration<double, std::milli> duration = runtimeEnd - runtimeStart;
8483
Obs_run(duration.count() * 1e-3);

0 commit comments

Comments
 (0)