Skip to content
Snippets Groups Projects
Commit b355bae6 authored by Tom Fischer's avatar Tom Fischer
Browse files

[App/Python] Use mesh module in simulator module

parent b9c0d226
No related branches found
No related tags found
No related merge requests found
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include "BaseLib/ConfigTreeUtil.h" #include "BaseLib/ConfigTreeUtil.h"
#include "BaseLib/FileTools.h" #include "BaseLib/FileTools.h"
#include "BaseLib/PrjProcessing.h" #include "BaseLib/PrjProcessing.h"
#include "MeshLib/Mesh.h"
#include "NumLib/NumericsConfig.h" #include "NumLib/NumericsConfig.h"
#include "ProcessLib/TimeLoop.h" #include "ProcessLib/TimeLoop.h"
...@@ -128,11 +129,21 @@ bool Simulation::executeTimeStep() ...@@ -128,11 +129,21 @@ bool Simulation::executeTimeStep()
auto& time_loop = project_data->getTimeLoop(); auto& time_loop = project_data->getTimeLoop();
if (time_loop.currentTime() < time_loop.endTime()) if (time_loop.currentTime() < time_loop.endTime())
{ {
return time_loop.executeTimeStep(); auto const result = time_loop.executeTimeStep();
if (time_loop.calculateNextTimeStep())
{
time_loop.outputLastTimeStep();
}
return result;
} }
return false; return false;
} }
MeshLib::Mesh* Simulation::getMesh(std::string const& name)
{
return project_data->getMesh(name);
}
bool Simulation::executeSimulation() bool Simulation::executeSimulation()
{ {
INFO("Solve processes."); INFO("Solve processes.");
......
...@@ -21,6 +21,10 @@ ...@@ -21,6 +21,10 @@
#include "BaseLib/ExportSymbol.h" #include "BaseLib/ExportSymbol.h"
class ProjectData; class ProjectData;
namespace MeshLib
{
class Mesh;
}
class Simulation final class Simulation final
{ {
...@@ -39,6 +43,7 @@ public: ...@@ -39,6 +43,7 @@ public:
OGS_EXPORT_SYMBOL bool executeTimeStep(); OGS_EXPORT_SYMBOL bool executeTimeStep();
OGS_EXPORT_SYMBOL bool executeSimulation(); OGS_EXPORT_SYMBOL bool executeSimulation();
OGS_EXPORT_SYMBOL void outputLastTimeStep() const; OGS_EXPORT_SYMBOL void outputLastTimeStep() const;
OGS_EXPORT_SYMBOL MeshLib::Mesh* getMesh(std::string const& name);
OGS_EXPORT_SYMBOL std::optional<ApplicationsLib::TestDefinition> OGS_EXPORT_SYMBOL std::optional<ApplicationsLib::TestDefinition>
getTestDefinition() const; getTestDefinition() const;
......
...@@ -15,7 +15,7 @@ endif() ...@@ -15,7 +15,7 @@ endif()
target_link_libraries( target_link_libraries(
simulator PRIVATE ApplicationsLib BaseLib CMakeInfoLib GitInfoLib tclap simulator PRIVATE ApplicationsLib BaseLib CMakeInfoLib GitInfoLib tclap
) )
target_include_directories(simulator PRIVATE ../../CLI) target_include_directories(simulator PRIVATE ../../CLI ../ogs.mesh)
# Install into Python module root dir (enables 'import ogs.simulator') # Install into Python module root dir (enables 'import ogs.simulator')
install(TARGETS simulator LIBRARY DESTINATION ogs) install(TARGETS simulator LIBRARY DESTINATION ogs)
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <spdlog/spdlog.h> #include <spdlog/spdlog.h>
#include <tclap/CmdLine.h> #include <tclap/CmdLine.h>
#include "../ogs.mesh/OGSMesh.h"
#include "Applications/ApplicationsLib/Simulation.h" #include "Applications/ApplicationsLib/Simulation.h"
#include "Applications/ApplicationsLib/TestDefinition.h" #include "Applications/ApplicationsLib/TestDefinition.h"
#include "BaseLib/DateTools.h" #include "BaseLib/DateTools.h"
...@@ -139,6 +140,22 @@ int executeSimulation() ...@@ -139,6 +140,22 @@ int executeSimulation()
return ogs_status; return ogs_status;
} }
int executeTimeStep()
{
auto ogs_status = EXIT_SUCCESS;
try
{
bool solver_succeeded = simulation->executeTimeStep();
ogs_status = solver_succeeded ? EXIT_SUCCESS : EXIT_FAILURE;
}
catch (std::exception& e)
{
ERR("{}", e.what());
ogs_status = EXIT_FAILURE;
}
return ogs_status;
}
double currentTime() double currentTime()
{ {
return simulation->currentTime(); return simulation->currentTime();
...@@ -149,6 +166,11 @@ double endTime() ...@@ -149,6 +166,11 @@ double endTime()
return simulation->endTime(); return simulation->endTime();
} }
OGSMesh getMesh(std::string const& name)
{
return OGSMesh(simulation->getMesh(name));
}
void finalize() void finalize()
{ {
simulation.reset(nullptr); simulation.reset(nullptr);
...@@ -169,5 +191,7 @@ PYBIND11_MODULE(simulator, m) ...@@ -169,5 +191,7 @@ PYBIND11_MODULE(simulator, m)
m.def("currentTime", &currentTime, "get current OGS time"); m.def("currentTime", &currentTime, "get current OGS time");
m.def("endTime", &endTime, "get end OGS time"); m.def("endTime", &endTime, "get end OGS time");
m.def("executeSimulation", &executeSimulation, "execute OGS simulation"); m.def("executeSimulation", &executeSimulation, "execute OGS simulation");
m.def("executeTimeStep", &executeTimeStep, "execute OGS time step");
m.def("getMesh", &getMesh, "get unstructured grid from ogs");
m.def("finalize", &finalize, "finalize OGS simulation"); m.def("finalize", &finalize, "finalize OGS simulation");
} }
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