diff --git a/Applications/ApplicationsLib/CMakeLists.txt b/Applications/ApplicationsLib/CMakeLists.txt index 38bedca85bdb906f6d4894cfd591874218f2d558..0e063520c81dcb42c52920f36ff896333ec89695 100644 --- a/Applications/ApplicationsLib/CMakeLists.txt +++ b/Applications/ApplicationsLib/CMakeLists.txt @@ -7,6 +7,7 @@ add_library(ApplicationsLib STATIC ${LIB_SOURCES}) target_link_libraries(ApplicationsLib INTERFACE GeoLib MeshGeoToolsLib + NumLib ProcessLib ${CATALYST_LIBRARIES} logog diff --git a/Applications/ApplicationsLib/ProjectData.cpp b/Applications/ApplicationsLib/ProjectData.cpp index 895e0a758d9a071565d9d2ccca4fccc21af2831d..639973425953101d10985b4e7d5e81f9a3d3dd0a 100644 --- a/Applications/ApplicationsLib/ProjectData.cpp +++ b/Applications/ApplicationsLib/ProjectData.cpp @@ -22,6 +22,8 @@ #include "MeshLib/Mesh.h" +#include "NumLib/TimeStepping/Algorithms/FixedTimeStepping.h" + // FileIO #include "FileIO/XmlIO/Boost/BoostXmlGmlInterface.h" #include "FileIO/readMeshFromFile.h" @@ -69,6 +71,9 @@ ProjectData::ProjectData(ConfigTree const& project_config, // output parseOutput(project_config.get_child("output"), path); + + // timestepping + parseTimeStepping(project_config.get_child("time_stepping")); } ProjectData::~ProjectData() @@ -274,3 +279,40 @@ void ProjectData::parseOutput(ConfigTree const& output_config, _output_file_prefix = path + *file; } + +void ProjectData::parseTimeStepping(ConfigTree const& timestepping_config) +{ + using namespace ProcessLib; + + DBUG("Reading timestepping configuration."); + + auto const type = timestepping_config.get_optional<std::string>("type"); + if (!type) + { + ERR("Could not find required timestepper type."); + std::abort(); + } + + if (*type == "FixedTimeStepping") + { + _time_stepper.reset(NumLib::FixedTimeStepping::newInstance(timestepping_config)); + } + else if (*type == "SingleStep") + { + _time_stepper.reset(new NumLib::FixedTimeStepping(0.0, 1.0, 1.0)); + } + else + { + ERR("Unknown timestepper type: `%s'.", type->c_str()); + std::abort(); + } + + if (!_time_stepper) + { + ERR("Initialization of timestepper failed."); + std::abort(); + } +} + + + diff --git a/Applications/ApplicationsLib/ProjectData.h b/Applications/ApplicationsLib/ProjectData.h index 0d5800d3177b473c17ad555d66719f368cf2c14f..07c2fe5915dbf58debd7803e56dc83f7df889715 100644 --- a/Applications/ApplicationsLib/ProjectData.h +++ b/Applications/ApplicationsLib/ProjectData.h @@ -22,6 +22,8 @@ #include "GeoLib/GEOObjects.h" #endif +#include "NumLib/TimeStepping/Algorithms/ITimeStepAlgorithm.h" + #include "ProcessLib/ProcessVariable.h" #include "ProcessLib/Process.h" #include "ProcessLib/Parameter.h" @@ -116,6 +118,11 @@ public: { return _processes.begin(); } + std::vector<ProcessLib::Process*>::iterator + processesBegin() + { + return _processes.begin(); + } /// Iterator access for processes as in processesBegin(). std::vector<ProcessLib::Process*>::const_iterator @@ -123,6 +130,11 @@ public: { return _processes.end(); } + std::vector<ProcessLib::Process*>::iterator + processesEnd() + { + return _processes.end(); + } std::string const& getOutputFilePrefix() const @@ -130,6 +142,15 @@ public: return _output_file_prefix; } + NumLib::ITimeStepAlgorithm const& getTimeStepper() const + { + return *_time_stepper; + } + NumLib::ITimeStepAlgorithm& getTimeStepper() + { + return *_time_stepper; + } + private: /// Checks if a mesh with the same name exists and provides a unique name in /// case of already existing mesh. Returns true if the mesh name is unique. @@ -164,6 +185,8 @@ private: /// Parses the file tag and sets output file prefix. void parseOutput(ConfigTree const& output_config, std::string const& path); + void parseTimeStepping(ConfigTree const& timestepping_config); + private: #ifdef OGS_BUILD_GUI GEOModels *_geoObjects = new GEOModels(); @@ -182,6 +205,9 @@ private: /// Output file path with project prefix. std::string _output_file_prefix; + + /// Timestepper + std::unique_ptr<NumLib::ITimeStepAlgorithm> _time_stepper; }; #endif //PROJECTDATA_H_ diff --git a/Applications/CLI/Tests.cmake b/Applications/CLI/Tests.cmake index b95adae445e0a6650492406691baec3c4442e630..269adb226b6dd1d1d1309b085d09bea840ced87e 100644 --- a/Applications/CLI/Tests.cmake +++ b/Applications/CLI/Tests.cmake @@ -11,7 +11,7 @@ foreach(mesh_size 1e0 1e1 1e2 1e3) EXECUTABLE_ARGS cube_${mesh_size}.prj WRAPPER time TESTER vtkdiff - DIFF_DATA cube_${mesh_size}.vtu Linear_1_to_minus1 Result + DIFF_DATA cube_${mesh_size}_pcs_0_ts_1.vtu Linear_1_to_minus1 Result DATA cube_${mesh_size}.prj cube_1x1x1_hex_${mesh_size}.vtu cube_1x1x1.gml ) @@ -22,7 +22,7 @@ foreach(mesh_size 1e0 1e1 1e2 1e3) EXECUTABLE_ARGS cube_${mesh_size}_neumann.prj WRAPPER time TESTER vtkdiff - DIFF_DATA cube_${mesh_size}_neumann.vtu D1_left_front_N1_right Result + DIFF_DATA cube_${mesh_size}_neumann_pcs_0_ts_1.vtu D1_left_front_N1_right Result DATA cube_${mesh_size}_neumann.prj cube_1x1x1_hex_${mesh_size}.vtu cube_1x1x1.gml ) endforeach() @@ -35,7 +35,7 @@ foreach(mesh_size 1e4 2e4 3e4 4e4 5e4 1e5 1e6) EXECUTABLE_ARGS cube_${mesh_size}.prj WRAPPER time TESTER vtkdiff - DIFF_DATA cube_${mesh_size}.vtu Linear_1_to_minus1 Result + DIFF_DATA cube_${mesh_size}_pcs_0_ts_1.vtu Linear_1_to_minus1 Result DATA cube_${mesh_size}.prj cube_1x1x1_hex_${mesh_size}.vtu cube_1x1x1.gml ) @@ -46,7 +46,7 @@ foreach(mesh_size 1e4 2e4 3e4 4e4 5e4 1e5 1e6) EXECUTABLE_ARGS cube_${mesh_size}_neumann.prj WRAPPER time TESTER vtkdiff - DIFF_DATA cube_${mesh_size}_neumann.vtu D1_left_front_N1_right Result + DIFF_DATA cube_${mesh_size}_neumann_pcs_0_ts_1.vtu D1_left_front_N1_right Result DATA cube_${mesh_size}_neumann.prj cube_1x1x1_hex_${mesh_size}.vtu cube_1x1x1.gml ) endforeach() @@ -60,7 +60,7 @@ foreach(mesh_size 1e0 1e1 1e2 1e3 1e4) EXECUTABLE_ARGS square_${mesh_size}.prj WRAPPER time TESTER vtkdiff - DIFF_DATA square_${mesh_size}.vtu Linear_1_to_minus1 Result + DIFF_DATA square_${mesh_size}_pcs_0_ts_1.vtu Linear_1_to_minus1 Result DATA square_${mesh_size}.prj square_1x1_quad_${mesh_size}.vtu square_1x1.gml ) @@ -71,7 +71,7 @@ foreach(mesh_size 1e0 1e1 1e2 1e3 1e4) EXECUTABLE_ARGS square_${mesh_size}_neumann.prj WRAPPER time TESTER vtkdiff - DIFF_DATA square_${mesh_size}_neumann.vtu D1_left_bottom_N1_right Result + DIFF_DATA square_${mesh_size}_neumann_pcs_0_ts_1.vtu D1_left_bottom_N1_right Result DATA square_${mesh_size}_neumann.prj square_1x1_quad_${mesh_size}.vtu square_1x1.gml ) endforeach() @@ -84,7 +84,7 @@ foreach(mesh_size 1e5 1e6) EXECUTABLE_ARGS square_${mesh_size}.prj WRAPPER time TESTER vtkdiff - DIFF_DATA square_${mesh_size}.vtu Linear_1_to_minus1 Result + DIFF_DATA square_${mesh_size}_pcs_0_ts_1.vtu Linear_1_to_minus1 Result DATA square_${mesh_size}.prj square_1x1_quad_${mesh_size}.vtu square_1x1.gml ) @@ -95,7 +95,7 @@ foreach(mesh_size 1e5 1e6) EXECUTABLE_ARGS square_${mesh_size}_neumann.prj WRAPPER time TESTER vtkdiff - DIFF_DATA square_${mesh_size}_neumann.vtu D1_left_bottom_N1_right Result + DIFF_DATA square_${mesh_size}_neumann_pcs_0_ts_1.vtu D1_left_bottom_N1_right Result DATA square_${mesh_size}_neumann.prj square_1x1_quad_${mesh_size}.vtu square_1x1.gml ) endforeach() diff --git a/Applications/CLI/ogs.cpp b/Applications/CLI/ogs.cpp index bf0243cc2820894742690fa58c043fa5335a359b..97f7d452b67273a178f9cf5f6960ef436fef6f35 100644 --- a/Applications/CLI/ogs.cpp +++ b/Applications/CLI/ogs.cpp @@ -28,10 +28,53 @@ #include "ProcessLib/NumericsConfig.h" +void solveProcesses(ProjectData &project) +{ + INFO("Solve processes."); + + std::string const out_pref = project.getOutputFilePrefix(); + + auto &time_stepper = project.getTimeStepper(); + + while (time_stepper.next()) // skips zeroth timestep, but OK since end of + // first timestep is after first delta t + { + const auto dt = time_stepper.getTimeStep().dt(); + const auto current_time = time_stepper.getTimeStep().current(); + const auto timestep = time_stepper.getTimeStep().steps(); + + INFO("=================== timestep %i === %g s ===================", + timestep, current_time); + + bool accepted = true; + + unsigned i = 0; // process counter, used to distinguish output files + for (auto p = project.processesBegin(); p != project.processesEnd(); + ++p) + { + accepted = accepted && (*p)->solve(dt); + + if (!accepted) + { + ERR("Timestep has not been accepted. Aborting."); + break; + } + + std::string const output_file_name = + out_pref + "_pcs_" + std::to_string(i) + "_ts_" + + std::to_string(timestep) + ".vtu"; + (*p)->postTimestep(output_file_name, timestep); + + ++i; + } + + if (!accepted) + break; + } +} int main(int argc, char *argv[]) { - using ConfigTree = boost::property_tree::ptree; // logog @@ -90,12 +133,7 @@ int main(int argc, char *argv[]) std::string const output_file_name(project.getOutputFilePrefix() + ".vtu"); - INFO("Solve processes."); - for (auto p_it = project.processesBegin(); p_it != project.processesEnd(); ++p_it) - { - (*p_it)->solve(); - (*p_it)->post(output_file_name); - } + solveProcesses(project); delete fmt; delete logog_cout; diff --git a/NumLib/TimeStepping/Algorithms/FixedTimeStepping.cpp b/NumLib/TimeStepping/Algorithms/FixedTimeStepping.cpp index 4fcc369c3c91b88505ae2ce01ed2c5520532894b..b2498686e6c0cff634723f61ccd7971e539773cc 100644 --- a/NumLib/TimeStepping/Algorithms/FixedTimeStepping.cpp +++ b/NumLib/TimeStepping/Algorithms/FixedTimeStepping.cpp @@ -17,6 +17,8 @@ #include <limits> #include <cassert> +#include "logog/include/logog.hpp" + namespace NumLib { @@ -28,6 +30,34 @@ FixedTimeStepping::FixedTimeStepping(double t0, double tn, double dt) : _t_initial(t0), _t_end(tn), _dt_vector(static_cast<std::size_t>(std::ceil((tn-t0)/dt)), dt), _ts_prev(t0), _ts_current(t0) {} +FixedTimeStepping* +FixedTimeStepping::newInstance(const ConfigTree &config) +{ + assert(config.get<std::string>("type") == "FixedTimeStepping"); + + auto const t_initial = config.get_optional<double>("t_initial"); + auto const t_end = config.get_optional<double>("t_end"); + auto const dt = config.get_optional<double>("dt"); + + if (!t_initial) + { + ERR("could not find required parameter t_initial."); + return nullptr; + } + if (!t_end) + { + ERR("could not find required parameter t_end."); + return nullptr; + } + if (!dt) + { + ERR("could not find required parameter dt."); + return nullptr; + } + + return new FixedTimeStepping(*t_initial, *t_end, *dt); +} + const TimeStep FixedTimeStepping::getTimeStep() const { return _ts_current; diff --git a/NumLib/TimeStepping/Algorithms/FixedTimeStepping.h b/NumLib/TimeStepping/Algorithms/FixedTimeStepping.h index 9609f0daf106d2ed70ed16bdad215bc2dc5f1df8..375d68e8307876197a4b63954a3b630a3d163ddb 100644 --- a/NumLib/TimeStepping/Algorithms/FixedTimeStepping.h +++ b/NumLib/TimeStepping/Algorithms/FixedTimeStepping.h @@ -13,6 +13,7 @@ #define FIXEDTIMESTEPPING_H_ #include <vector> +#include <boost/property_tree/ptree.hpp> #include "ITimeStepAlgorithm.h" @@ -26,6 +27,7 @@ namespace NumLib */ class FixedTimeStepping : public ITimeStepAlgorithm { + using ConfigTree = boost::property_tree::ptree; public: /** @@ -58,6 +60,13 @@ public: */ FixedTimeStepping(double t_initial, double t_end, const std::vector<double> &vec_all_dt); + /** + * @brief Create timestepper from the given configuration + * + * Currently this function only covers uniform timestep size. + */ + static FixedTimeStepping* newInstance(ConfigTree const& config); + virtual ~FixedTimeStepping() {} /// return the beginning of time steps diff --git a/ProcessLib/GroundwaterFlowProcess.h b/ProcessLib/GroundwaterFlowProcess.h index c3de05908d864d59de47addd40984da4890d9720..c0387c5a90904d22d6943b44e42af3498581cc6a 100644 --- a/ProcessLib/GroundwaterFlowProcess.h +++ b/ProcessLib/GroundwaterFlowProcess.h @@ -243,7 +243,7 @@ public: } } - void solve() + bool solve(const double /*delta_t*/) override { DBUG("Solve GroundwaterFlowProcess."); @@ -263,6 +263,8 @@ public: typename GlobalSetup::LinearSolver linearSolver(*_A); linearSolver.solve(*_rhs, *_x); + + return true; } void post(std::string const& file_name) @@ -295,6 +297,11 @@ public: vtu_interface.writeToFile(file_name); } + void postTimestep(std::string const& file_name, const unsigned /*timestep*/) override + { + post(file_name); + } + ~GroundwaterFlowProcess() { for (auto p : _neumann_bcs) diff --git a/ProcessLib/Process.h b/ProcessLib/Process.h index 5d91b607ebe4a15ae88af3d9060e3e625b6bdb65..e96d46f74eeecc88bde7e4dd8551c72528547753 100644 --- a/ProcessLib/Process.h +++ b/ProcessLib/Process.h @@ -30,11 +30,12 @@ public: virtual ~Process() = default; virtual void initialize() = 0; - virtual void solve() = 0; + virtual bool solve(const double delta_t) = 0; /// Postprocessing after solve(). /// The file_name is indicating the name of possible output file. virtual void post(std::string const& file_name) = 0; + virtual void postTimestep(std::string const& file_name, const unsigned timestep) = 0; protected: MeshLib::Mesh& _mesh; diff --git a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e0.prj.md5 b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e0.prj.md5 index 7e5362985096d6458669dc971057063c15a851f3..9be12971fd3e47f488f97038b6a0d8bc59de9577 100644 --- a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e0.prj.md5 +++ b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e0.prj.md5 @@ -1 +1 @@ -0d1d943367bbb4638924754e9f2f28fc +ce002c594365b012dd338bd27467bd31 diff --git a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e0_neumann.prj.md5 b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e0_neumann.prj.md5 index 8ad71f8304f262ab66f7942516a88948b4512395..630352425510883e4baa1abc0e2f260ae28b7ba5 100644 --- a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e0_neumann.prj.md5 +++ b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e0_neumann.prj.md5 @@ -1 +1 @@ -e5640d695f362bbbe41ef0598607a8b8 +40294d3aa3830288d99b1df89c89ff30 diff --git a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e1.prj.md5 b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e1.prj.md5 index 0659ef3577dd048ba471c1631bd12ca0738a07eb..eeee7f76b8c8a34b71ade77329e05c3b0f745c22 100644 --- a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e1.prj.md5 +++ b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e1.prj.md5 @@ -1 +1 @@ -4f0ba528735bc4e2c1d59531cf1ada23 +1ec1b94b1db517557daa9f0446c1224f diff --git a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e1_neumann.prj.md5 b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e1_neumann.prj.md5 index e2d25b6a8b6557d36e069398660b9f5598918a57..64fda6f2d7b223e405880f1eec47ff4590dc08d8 100644 --- a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e1_neumann.prj.md5 +++ b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e1_neumann.prj.md5 @@ -1 +1 @@ -a8e338f5e071b19048139194264410bb +c19508fa298639fd6a075e69c5a5e81b diff --git a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e2.prj.md5 b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e2.prj.md5 index 831f6264f66d133dcb6a193d4353bbf0e7ade180..0d0c6ac7443bd3c0e90459516f6d91fe5ac67560 100644 --- a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e2.prj.md5 +++ b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e2.prj.md5 @@ -1 +1 @@ -1608b47278ab4b09adc49b5d9fadc874 +0793fc94b5b4e1746126631c9b81b4f1 diff --git a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e2_neumann.prj.md5 b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e2_neumann.prj.md5 index cf809fabadf5afcfca71b00624416f4492cc71b8..4aaf7330d50b95cb8de47a02601d514223fbea99 100644 --- a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e2_neumann.prj.md5 +++ b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e2_neumann.prj.md5 @@ -1 +1 @@ -c90756e57b6a14d4116ca15ab364d7b3 +8a9fe005892a2c5a88220859c7b234ce diff --git a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e3.prj.md5 b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e3.prj.md5 index b51ece86d436e9f2a474cbe4ba278f31b78cca81..4d90124f4b27516f954f3a3073ca6a50a60a6e3a 100644 --- a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e3.prj.md5 +++ b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e3.prj.md5 @@ -1 +1 @@ -7f4809c8a6ec18a3e228d9432493735d +51d3982fadd418c03c14e8ed118510b0 diff --git a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e3_neumann.prj.md5 b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e3_neumann.prj.md5 index dfbe4c3e05e38db8876fcb0bae26e79c27efc958..83b423683da9a48d5c896075d5b2656865a4e95a 100644 --- a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e3_neumann.prj.md5 +++ b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e3_neumann.prj.md5 @@ -1 +1 @@ -1fc1bde92ef58e2d9d9893e86c072382 +6be392d88d837354c3caabec3a031308 diff --git a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e4.prj.md5 b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e4.prj.md5 index f5d9122df5b18959b771f19f2bcd025b6434ebda..2bc33a03fef75584f6c292b04b65ad606821af40 100644 --- a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e4.prj.md5 +++ b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e4.prj.md5 @@ -1 +1 @@ -009cf7856bd2d589c5e665548ebfc139 +4dcd46165c0e0a1760c818fcc01e79e0 diff --git a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e4_neumann.prj.md5 b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e4_neumann.prj.md5 index 3f8ccadae2481cfa4d43be1f5a09fc1fd1671f14..9faff669ac06606d1c204af81145b8b384262dab 100644 --- a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e4_neumann.prj.md5 +++ b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e4_neumann.prj.md5 @@ -1 +1 @@ -8227b501274e39277962760fb364204e +36c4abfa698fab518c7cd8c891c8565f diff --git a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e5.prj.md5 b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e5.prj.md5 index b75bc640c6e376668679a7cd2eb341978c32330f..7d88ad93208bd4ea3aa35d2c19a0695dd948f11e 100644 --- a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e5.prj.md5 +++ b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e5.prj.md5 @@ -1 +1 @@ -911d0dd2568108e75ac4fe6defa354f8 +fc69da36fbaf23e50b61eeac2fbeb34f diff --git a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e5_neumann.prj.md5 b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e5_neumann.prj.md5 index 6cb500f76fa68c0fac123393205aced2de49294b..e23531d206ad2209138f9e67976296ca6cea56ce 100644 --- a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e5_neumann.prj.md5 +++ b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e5_neumann.prj.md5 @@ -1 +1 @@ -c3e6ec336a03343c7c648f1b362a4326 +9a1c5b1be490897276103ce48620aa9c diff --git a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e6.prj.md5 b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e6.prj.md5 index 7b2e8b2fe7f44fa0bc6f5201d2b386af646579f3..8c8ae35b0d4325d34e12bb2d02b6c727ad3473a8 100644 --- a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e6.prj.md5 +++ b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e6.prj.md5 @@ -1 +1 @@ -7d4d7419980e116582fccd57b7032130 +12e071c7093f6cdb21fc249e5d98f826 diff --git a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e6_neumann.prj.md5 b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e6_neumann.prj.md5 index 4366fbb68bca9d3bdff8a075830c1f85088f7549..bfa13d171fce36edfcb62b2f4e0b9a20ff440a6e 100644 --- a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e6_neumann.prj.md5 +++ b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_1e6_neumann.prj.md5 @@ -1 +1 @@ -35c485727144677aedfbafadd86b4ed1 +6bd7aadfb10601ee5ecbb24641645bdd diff --git a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_2e4.prj.md5 b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_2e4.prj.md5 index 9a7388af36b3fa962bb50a303bec78e010716957..a9be3cf84874194baaa36b227fbdaaf04d22acfe 100644 --- a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_2e4.prj.md5 +++ b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_2e4.prj.md5 @@ -1 +1 @@ -092b0b1b14196663e543da1edc51f8d3 +51f400d40d155a6d935e40779816d010 diff --git a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_2e4_neumann.prj.md5 b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_2e4_neumann.prj.md5 index 9410ff0c887d5b7ce5601c8aa59a6bdfb4d79cd5..edc5cdfce0bdcabbc0c713703830a594dc81b43d 100644 --- a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_2e4_neumann.prj.md5 +++ b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_2e4_neumann.prj.md5 @@ -1 +1 @@ -98f49002037fd1adc48cf2cb96445f99 +2b8b28d14036690aa394d24cf38b0d25 diff --git a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_3e4.prj.md5 b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_3e4.prj.md5 index 8d431e49c583522475711f2e6b1e14e31ccb3bb8..8b63915079aacc7baeca81a0efc2cff818eb91c4 100644 --- a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_3e4.prj.md5 +++ b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_3e4.prj.md5 @@ -1 +1 @@ -be6de7d894709bc10346e7cc171b7d8c +87ed4f9be2147f736fec9e0856b169ea diff --git a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_3e4_neumann.prj.md5 b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_3e4_neumann.prj.md5 index 9616ebf80a601cd23a833eed72d35e65bccb8bc1..15cdc2ae4c87cbc94fd190ed4657d38710c04058 100644 --- a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_3e4_neumann.prj.md5 +++ b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_3e4_neumann.prj.md5 @@ -1 +1 @@ -30a4f312d4fd6156f55a24f4a918e7c8 +b04fa24e10da480e4e33e997119ea959 diff --git a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_4e4.prj.md5 b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_4e4.prj.md5 index 7cbf36384957e9da27b7cafc942adc110241074a..2df9468428d5de334e3146503fb577ec199e0564 100644 --- a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_4e4.prj.md5 +++ b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_4e4.prj.md5 @@ -1 +1 @@ -321089ef0ba8c567ff6bba7e925432c8 +4ef80261db04dbc6aa4f64e70c84b231 diff --git a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_4e4_neumann.prj.md5 b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_4e4_neumann.prj.md5 index a98bdd4a6b7b63a071f34200c1ea7c50fab5ec9b..bf3f2cf7ac7cbac6b957ca27e5defde4877c3c11 100644 --- a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_4e4_neumann.prj.md5 +++ b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_4e4_neumann.prj.md5 @@ -1 +1 @@ -99cb48aecd984c563b20ce4ddaed2dfa +6beb3d5f226a0743dd0abc03667d25a7 diff --git a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_5e4.prj.md5 b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_5e4.prj.md5 index aca598b9e4471a5d40a38bc20c7fa946f3c99df1..f936c8039fcb1368f20746eb8e9a79e4b5f5baa1 100644 --- a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_5e4.prj.md5 +++ b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_5e4.prj.md5 @@ -1 +1 @@ -d000fda692f48fabceeccb1c7d4168b4 +68293adc0161ac9c9ef57f1a83cddc4a diff --git a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_5e4_neumann.prj.md5 b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_5e4_neumann.prj.md5 index 693f41d66f28d70d64fe29c526474063d050b009..b55a0ed0fce2184d1ec39746b62d5a7edc1feb04 100644 --- a/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_5e4_neumann.prj.md5 +++ b/Tests/Data/Elliptic/cube_1x1x1_GroundWaterFlow/cube_5e4_neumann.prj.md5 @@ -1 +1 @@ -37d890469d53d11e079ba7bff2110348 +29d0a1096262b60c805e5f623b1e90a9 diff --git a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e0.prj.md5 b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e0.prj.md5 index 1fe97a86e5431de89cbe1fe01bd8a951c66c3f4f..3dc68955a06bb0f65e19caf3a2a53e3faee2c61e 100644 --- a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e0.prj.md5 +++ b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e0.prj.md5 @@ -1 +1 @@ -9a1619195e8f2a321cdaa45ad8371b4c +815a0a77788ac325e613d48acfb4441e diff --git a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e0_neumann.prj.md5 b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e0_neumann.prj.md5 index 44178e5487274c0cef85939924e1e31ab0d7ddbe..ccd4eb8f1af1d01e194f303e24abb4d1c3a93403 100644 --- a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e0_neumann.prj.md5 +++ b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e0_neumann.prj.md5 @@ -1 +1 @@ -d086607546e0e07c922fa9a3295434a6 +a24f098a0232bd6b002621dbad1569a3 diff --git a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e1.prj.md5 b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e1.prj.md5 index 02e53b714d4d7018d88997d9d2bd6dec1c329a04..fbf8705eff7842c6d530051f36b71f1cef933f3c 100644 --- a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e1.prj.md5 +++ b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e1.prj.md5 @@ -1 +1 @@ -a3d01f5a06dd59b515bd458951a1b4db +60ae78f5ff041a5571f56cdcd5b57700 diff --git a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e1_neumann.prj.md5 b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e1_neumann.prj.md5 index d9a8c6e7bb34c72a9c4ba87026031b2ebefe4fae..e6bd414b892949864c437969225db7d40af16000 100644 --- a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e1_neumann.prj.md5 +++ b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e1_neumann.prj.md5 @@ -1 +1 @@ -e9479cbc1c94c772851b97bbc4b069c0 +6c1603567d1f90935a581624fd551f66 diff --git a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e2.prj.md5 b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e2.prj.md5 index 6eb9b769854fde3d8903e776cbc167e5d81b39b4..042bcd9526a7de2feddc29f0fe67d23f4c3ff75c 100644 --- a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e2.prj.md5 +++ b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e2.prj.md5 @@ -1 +1 @@ -974f239e8df47c1d282bc682fbc3cd20 +9f4c5a233d60968d6294e17e93580672 diff --git a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e2_neumann.prj.md5 b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e2_neumann.prj.md5 index 66f190269d2a270c654fd68210b65722d195b6ac..415c43a3b443af3c8120a8ab9a68c84642eab8f0 100644 --- a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e2_neumann.prj.md5 +++ b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e2_neumann.prj.md5 @@ -1 +1 @@ -efe2662ce9db2d08974b1663948eb62f +5b6b57bc13e50ec65279a0cae7eedb01 diff --git a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e3.prj.md5 b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e3.prj.md5 index 1a732a5e58517ff7b566a35dc0e3e769133eeff9..8337c2ce724e8347945ef1cee0fee0e23312b7a5 100644 --- a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e3.prj.md5 +++ b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e3.prj.md5 @@ -1 +1 @@ -3fd93d70e047f21f8673f012459f782b +9bc631e45f579ad60268db01ba8c15aa diff --git a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e3_neumann.prj.md5 b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e3_neumann.prj.md5 index dc7ee6ea6b573d34c6309d327c91696d5fda6640..4cd4dde79dead8ba0bfef62bb705bdcad86e1a7e 100644 --- a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e3_neumann.prj.md5 +++ b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e3_neumann.prj.md5 @@ -1 +1 @@ -e4845f177a6298b739aca8f023a79310 +0af59d20969417b1466093e9aa251f87 diff --git a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e4.prj.md5 b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e4.prj.md5 index dfba1aa7a0c7143b8a2dcf682b94351f101b7a38..ea9f2ad0c1855791bd9fe7981297135e48ecb74d 100644 --- a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e4.prj.md5 +++ b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e4.prj.md5 @@ -1 +1 @@ -9ad2e80bbcb13dd7f095e2f06bcca1fe +48003d460b8d265ac916b9c752377fe7 diff --git a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e4_neumann.prj.md5 b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e4_neumann.prj.md5 index 187032b889de37088d459848ecf4f590420c3b97..9f038f7c48d86fcbad66643c15386b4d0797aa05 100644 --- a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e4_neumann.prj.md5 +++ b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e4_neumann.prj.md5 @@ -1 +1 @@ -1cde9b6350b8685bef97a8f2715aed8e +481870455de8c2a42f6f04416224bc0b diff --git a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e5.prj.md5 b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e5.prj.md5 index 4dfc592c71685b56a2641127d1db06e3589d3ccc..b9e74c21654eca59eda5ee06a6ca815500d1a010 100644 --- a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e5.prj.md5 +++ b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e5.prj.md5 @@ -1 +1 @@ -f5a52954a8705d1a2fb3989ca771a911 +9eea24251589eb9606fc73347cab4422 diff --git a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e5_neumann.prj.md5 b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e5_neumann.prj.md5 index 317c9ad80ba40d754e7433a4dc09efd611cda81b..1c2a8f260d742621f793133adaa41dcc87124cec 100644 --- a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e5_neumann.prj.md5 +++ b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e5_neumann.prj.md5 @@ -1 +1 @@ -60f98b722bcbb5ab5e338fea029c0ac9 +fbadc648cd1e64846a7febfae7178239 diff --git a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e6.prj.md5 b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e6.prj.md5 index 639f59864deaa52f0a4c8961c685733ffbb48ed3..e1cd783ba237af669709b3f78a09ce1c0615bdf4 100644 --- a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e6.prj.md5 +++ b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e6.prj.md5 @@ -1 +1 @@ -1caf73be09ae927caf9b938603bfb4bc +01768ed3f4521630860088624972228d diff --git a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e6_neumann.prj.md5 b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e6_neumann.prj.md5 index 0b7300dd1d3d0d2a20fc0582fa2424314ff353be..85488860171dfc1c3ff5f9767f1c5062faaaabe2 100644 --- a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e6_neumann.prj.md5 +++ b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e6_neumann.prj.md5 @@ -1 +1 @@ -dadd28546151d9cf397537600949af7a +2d8511b463c42e918fedf20ca9d90e74