Skip to content

Commit 2d97409

Browse files
authored
Merge pull request #62 from Pressio/develop
Release 0.17.0
2 parents bb101aa + 36561ea commit 2d97409

File tree

3,123 files changed

+247163
-1139221
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

3,123 files changed

+247163
-1139221
lines changed

.gitignore

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
1+
# artifacts
12
docs/generated_docs
23
build
3-
end-to-end-roms/__pycache__/
4-
end-to-end-roms/customizations_2d_swe/__pycache__/
4+
install
5+
6+
# pressio repos
7+
pressio-demoapps
8+
pressio-rom
9+
pressio-ops
10+
pressio-log
11+
12+
# misc
13+
.vscode
14+
__pycache__
515
.idea

CMakeLists.txt

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,21 @@ get_version_number("version.txt" PressioTutorials_VERSION_PATCH)
3131
set(PressioTutorials_VERSION "${PressioTutorials_VERSION_MAJOR}.${PressioTutorials_VERSION_MINOR}.${PressioTutorials_VERSION_PATCH}")
3232
message("pressio-tutorials version = ${PressioTutorials_VERSION}")
3333

34-
set(pressio_version ${CMAKE_CURRENT_SOURCE_DIR}/tpls/pressio/version.txt)
35-
get_version_number(${pressio_version} MyPressio_VERSION_MAJOR)
36-
get_version_number(${pressio_version} MyPressio_VERSION_MINOR)
37-
get_version_number(${pressio_version} MyPressio_VERSION_PATCH)
38-
message("pressio version = ${MyPressio_VERSION_MAJOR}.${MyPressio_VERSION_MINOR}.${MyPressio_VERSION_PATCH}")
34+
#===================================================
35+
# fetch pressio libraries
36+
#===================================================
37+
38+
set(PRESSIO_REPOS "demoapps" "rom" "ops" "log")
39+
foreach(repo IN LISTS PRESSIO_REPOS)
40+
if (NOT EXISTS ${CMAKE_SOURCE_DIR}/tpls/pressio-${repo})
41+
execute_process(
42+
COMMAND git clone --branch ${PressioTutorials_VERSION}
43+
https://github.com/Pressio/pressio-${repo}.git
44+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tpls
45+
OUTPUT_QUIET
46+
)
47+
endif()
48+
endforeach()
3949

4050
#===================================================
4151
# c++ standard

docs/source/build.rst

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ Steps
2828
cd $BUILDDIR && make -j4
2929
3030
# ensure you have all required Python packages installed
31-
pip3 install <path-to-your-cloned-repo>/py_requirements.txt
31+
pip3 install -r <path-to-your-cloned-repo>/py_requirements.txt
3232
3333
3434
Verify the build
@@ -50,7 +50,9 @@ More details on dependencies
5050

5151
The tutorials have the following dependencies:
5252

53-
- pressio-rom C++ library: contains the C++ code that this tutorials repo convers
53+
- pressio-rom C++ library: contains the C++ code that this tutorials repo covers
5454
- pressio-demoapps: provides a suite of physics problems that are used in the tutorials to demonstrate the functionalities of pressio
5555
- Eigen: is the library used by pressio-demoapps
5656
- Python: is used in pressio-demoapps to implement all the ROM workflow drivers
57+
58+
During configuration, all Pressio repositories will be automatically cloned inside of the tutorials directory.

docs/source/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
project = "pressio-tutorials"
4646
copyright = u"2021, National Technology & Engineering Solutions of Sandia, LLC (NTESS)"
4747

48-
version = "0.16.0"
48+
version = "0.17.0"
4949

5050
# The full version, including alpha/beta/rc tags.
5151
release = version

end-to-end-roms/CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@ add_subdirectory(
44
${CMAKE_CURRENT_BINARY_DIR}/yamlcpp)
55

66
include_directories(
7-
${CMAKE_CURRENT_SOURCE_DIR}/../tpls/eigen/eigen3
7+
${CMAKE_CURRENT_SOURCE_DIR}/../tpls/eigen-3.4.0
88
${CMAKE_CURRENT_SOURCE_DIR}/../tpls/pressio-demoapps/include
99
${CMAKE_CURRENT_SOURCE_DIR}/../tpls #this is needed to include the pressio_cmake_config.h
10-
${CMAKE_CURRENT_SOURCE_DIR}/../tpls/pressio/include
10+
${CMAKE_CURRENT_SOURCE_DIR}/../tpls/pressio-rom/include
11+
${CMAKE_CURRENT_SOURCE_DIR}/../tpls/pressio-ops/include
12+
${CMAKE_CURRENT_SOURCE_DIR}/../tpls/pressio-log/include
1113
${CMAKE_CURRENT_SOURCE_DIR}/../tpls/yaml-cpp-0.7.0/include)
1214

1315
set(exename pdaWfExe)

end-to-end-roms/cpp/lspg_pick_solver_and_run.hpp

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ void lspg_pick_solver_and_run(const ParserType & parser,
5555
RomStateType & reducedState)
5656
{
5757
namespace pode = pressio::ode;
58-
namespace pnlins = pressio::nonlinearsolvers;
58+
namespace pnlins = pressio::nlsol;
5959

6060
using scalar_type = typename pressio::Traits<RomStateType>::scalar_type;
6161
const auto startTime = static_cast<typename LspgStepperType::independent_variable_type>(0);
@@ -65,48 +65,45 @@ void lspg_pick_solver_and_run(const ParserType & parser,
6565
if (parser.nonlinearSolver() == "GaussNewton")
6666
{
6767
using hessian_t = Eigen::Matrix<scalar_type, -1, -1>;
68-
using solver_tag = pressio::linearsolvers::direct::HouseholderQR;
69-
using linear_solver_t = pressio::linearsolvers::Solver<solver_tag, hessian_t>;
68+
using solver_tag = pressio::linsol::direct::HouseholderQR;
69+
using linear_solver_t = pressio::linsol::Solver<solver_tag, hessian_t>;
7070
linear_solver_t linearSolver;
7171

72-
auto solver = pressio::create_gauss_newton_solver(lspgStepper, linearSolver);
72+
auto solver = pressio::nlsol::create_gauss_newton_solver(lspgStepper, linearSolver);
7373
solver.setStopCriterion(pnlins::Stop::WhenAbsolutel2NormOfGradientBelowTolerance);
7474
solver.setStopTolerance(parser.nonlinearSolverTolerance());
7575

76-
pode::advance_n_steps(lspgStepper, reducedState, startTime,
77-
parser.timeStepSize(), numSteps,
78-
observer, solver);
76+
auto policy = pode::steps_fixed_dt(startTime, numSteps, parser.timeStepSize());
77+
pode::advance(lspgStepper, reducedState, policy, solver, observer);
7978
}
8079

8180
else if (parser.nonlinearSolver() == "GaussNewtonQR")
8281
{
8382
using mat_t = typename LspgStepperType::jacobian_type;
8483
using qr_solver_t = pressio::qr::QRSolver<mat_t, pressio::qr::Householder>;
8584
qr_solver_t qrSolver;
86-
auto solver = pressio::experimental::create_gauss_newton_qr_solver(lspgStepper, qrSolver);
85+
auto solver = pressio::nlsol::experimental::create_gauss_newton_qr_solver(lspgStepper, qrSolver);
8786
solver.setStopCriterion(pnlins::Stop::WhenAbsolutel2NormOfGradientBelowTolerance);
8887
solver.setStopTolerance(parser.nonlinearSolverTolerance());
8988

90-
pode::advance_n_steps(lspgStepper, reducedState, startTime,
91-
parser.timeStepSize(), numSteps,
92-
observer, solver);
89+
auto policy = pode::steps_fixed_dt(startTime, numSteps, parser.timeStepSize());
90+
pode::advance(lspgStepper, reducedState, policy, solver, observer);
9391
}
9492

9593
else if (parser.nonlinearSolver() == "LevenbergMarquardt")
9694
{
9795
using hessian_t = Eigen::Matrix<scalar_type, -1, -1>;
98-
using solver_tag = pressio::linearsolvers::direct::HouseholderQR;
99-
using linear_solver_t = pressio::linearsolvers::Solver<solver_tag, hessian_t>;
96+
using solver_tag = pressio::linsol::direct::HouseholderQR;
97+
using linear_solver_t = pressio::linsol::Solver<solver_tag, hessian_t>;
10098
linear_solver_t linearSolver;
10199

102-
auto solver = pressio::create_levenberg_marquardt_solver(lspgStepper, linearSolver);
100+
auto solver = pressio::nlsol::create_levenberg_marquardt_solver(lspgStepper, linearSolver);
103101
solver.setUpdateCriterion(pnlins::Update::LMSchedule2);
104102
solver.setStopCriterion(pnlins::Stop::WhenAbsolutel2NormOfGradientBelowTolerance);
105103
solver.setStopTolerance(parser.nonlinearSolverTolerance());
106104

107-
pode::advance_n_steps(lspgStepper, reducedState, startTime,
108-
parser.timeStepSize(), numSteps,
109-
observer, solver);
105+
auto policy = pode::steps_fixed_dt(startTime, numSteps, parser.timeStepSize());
106+
pode::advance(lspgStepper, reducedState, policy, solver, observer);
110107
}
111108
}
112109
#endif

end-to-end-roms/cpp/main.cc

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,9 @@
4646
//@HEADER
4747
*/
4848

49+
#include "pressio_cmake_config.h"
4950
#include "pressiodemoapps/swe2d.hpp"
50-
51-
#include "pressio/ode_steppers_explicit.hpp"
52-
#include "pressio/ode_steppers_implicit.hpp"
51+
#include "pressio/ode_steppers.hpp"
5352
#include "pressio/ode_advancers.hpp"
5453

5554
#include "parsers.hpp"
@@ -111,8 +110,8 @@ std::string check_and_get_inputfile(int argc, char *argv[])
111110

112111
int main(int argc, char *argv[])
113112
{
114-
pressio::log::initialize(pressio::logto::terminal);
115-
pressio::log::setVerbosity({pressio::log::level::info});
113+
PRESSIOLOG_INITIALIZE(pressiolog::LogLevel::info);
114+
116115

117116
// local scope because it is helps
118117
{
@@ -147,6 +146,6 @@ int main(int argc, char *argv[])
147146
std::cout << "elapsed " << fs.count() << std::endl;
148147
}
149148

150-
pressio::log::finalize();
149+
PRESSIOLOG_FINALIZE();
151150
return 0;
152151
}

end-to-end-roms/cpp/observer.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ class StateObserver
6666
std::enable_if_t< pressio::is_vector_eigen<ObservableType>::value >
6767
operator()(pressio::ode::StepCount step,
6868
const TimeType /*timeIn*/,
69-
const ObservableType & state)
69+
const ObservableType & state) const
7070
{
7171
if (step.get() % sampleFreq_ == 0){
7272
const std::size_t ext = state.size()*sizeof(typename ObservableType::Scalar);
@@ -75,7 +75,7 @@ class StateObserver
7575
}
7676

7777
private:
78-
std::ofstream myfile_;
78+
mutable std::ofstream myfile_;
7979
const int sampleFreq_ = {};
8080
};
8181

@@ -97,7 +97,7 @@ class RhsObserver
9797
operator()(pressio::ode::StepCount step,
9898
pressio::ode::IntermediateStepCount /*imStepCount*/,
9999
const TimeType /*timeIn*/,
100-
const ObservableType & rhs)
100+
const ObservableType & rhs) const
101101
{
102102
if (step.get() % sampleFreq_ == 0){
103103
const std::size_t ext = rhs.size()*sizeof(typename ObservableType::Scalar);
@@ -106,7 +106,7 @@ class RhsObserver
106106
}
107107

108108
private:
109-
std::ofstream myfile_;
109+
mutable std::ofstream myfile_;
110110
const int sampleFreq_ = {};
111111
};
112112

end-to-end-roms/cpp/run_default_galerkin.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,8 @@ void run_galerkin_default(const FomSystemType & fomSystem,
8383

8484
typename FomSystemType::time_type startTime{0};
8585
const auto numSteps = pode::StepCount{parser.numSteps()};
86-
pode::advance_n_steps(problem, reducedState, startTime,
87-
parser.timeStepSize(), numSteps, observer);
86+
auto policy = pode::steps_fixed_dt(startTime, numSteps, parser.timeStepSize());
87+
pode::advance(problem, reducedState, policy, observer);
8888
}
8989
else{
9090
throw std::runtime_error("Default implicit galerkin not impl yet");

end-to-end-roms/cpp/run_default_lspg.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ void run_lspg_default(const FomSystemType & fomSystem,
7878

7979
const auto odeScheme = parser.odeScheme();
8080
auto problem = plspg::create_unsteady_problem(odeScheme, trialSpace, fomSystem);
81-
lspg_pick_solver_and_run(parser, problem.lspgStepper(), reducedState);
81+
lspg_pick_solver_and_run(parser, problem, reducedState);
8282
}
8383

8484
#endif

0 commit comments

Comments
 (0)