From dc63a76ca4452906e44d3261174a92be5799e582 Mon Sep 17 00:00:00 2001 From: Adam Boesky Date: Mon, 1 Jan 2024 12:19:46 -0500 Subject: [PATCH] Fix everything --- include/environment.h | 9 +++--- src/environment.cpp | 61 +++++---------------------------------- src/simulation.cpp | 2 +- test/test_environment.cpp | 6 ++-- 4 files changed, 16 insertions(+), 62 deletions(-) diff --git a/include/environment.h b/include/environment.h index 4c68a7e..6816bdc 100644 --- a/include/environment.h +++ b/include/environment.h @@ -10,10 +10,8 @@ template class GravitationalEnvironment { public: // Constructors - GravitationalEnvironment(const std::vector>& particlePtrs, const bool log); - GravitationalEnvironment(const std::vector>& particlePtrs, const bool log, std::string logFilePrefix); - GravitationalEnvironment(const std::string configFileName, const bool log); - GravitationalEnvironment(const std::string configFileName, const bool log, std::string logFilePrefix); + GravitationalEnvironment(const std::vector>& particlePtrs, const bool log, std::string logFilePrefix = "run"); + GravitationalEnvironment(const std::string configFileName, const bool log, std::string logFilePrefix = "run"); // Define member functions void loadParticlesFromConfig(std::string configFileName); @@ -32,6 +30,9 @@ class GravitationalEnvironment { int nParticles; // This should be calculated in the constructor. std::string logFileName; +private: + // Instantiation of the physical members + std::string logFilePrefix; }; // Helper functions diff --git a/src/environment.cpp b/src/environment.cpp index d4c7d49..bc132c1 100644 --- a/src/environment.cpp +++ b/src/environment.cpp @@ -120,61 +120,13 @@ GravitationalEnvironment::GravitationalEnvironment(const std::vector>& particlePtrs, const bool log, std::string logFilePrefix = "run") - : particlePtrs(particlePtrs), log(log), time(0) { - - // Declare the number of particles - nParticles = particlePtrs.size(); - - // Create a log file if we want one - if (log == true) { - - // Get a vector of the filenames in the data directory - std::vector lastLogFileNames; - std::string dataPath = REPOPATH + "/data"; - for (const auto& entry : fs::directory_iterator(dataPath)) { - if (fs::is_regular_file(entry.status())) { - lastLogFileNames.push_back(entry.path().filename().string()); - } - } - // Get the largest log file number and create new log file int lastLogNum = getLargestLabelNumber(lastLogFileNames, logFilePrefix); logFileName = dataPath + "/" + logFilePrefix + std::to_string(lastLogNum + 1) + ".csv"; } } -GravitationalEnvironment::GravitationalEnvironment(const std::string configFileName, const bool log) - : log(log), time(0) { - - // Get particles - loadParticlesFromConfig(configFileName); - - // Declare the number of particles - nParticles = particlePtrs.size(); - - // Create a log file if we want one - if (log == true) { - - // Get a vector of the filenames in the data directory - std::vector lastLogFileNames; - std::string dataPath = REPOPATH + "/data"; - for (const auto& entry : fs::directory_iterator(dataPath)) { - if (fs::is_regular_file(entry.status())) { - lastLogFileNames.push_back(entry.path().filename().string()); - } - } - - // Get the largest log file number and create new log file - int lastLogNum = getLargestLabelNumber(lastLogFileNames, "run"); - logFileName = dataPath + "/run" + std::to_string(lastLogNum + 1) + ".csv"; - } - } -GravitationalEnvironment::GravitationalEnvironment(const std::string configFileName, const bool log, std::string logFilePrefix = "run") +template +GravitationalEnvironment::GravitationalEnvironment(const std::string configFileName, const bool log, std::string logFilePrefix) : log(log), time(0) { // Get particles @@ -203,7 +155,8 @@ GravitationalEnvironment::GravitationalEnvironment(const std::string configFileN // Load a full environment from the configuration file -void GravitationalEnvironment::loadParticlesFromConfig(const std::string configFileName) { +template +void GravitationalEnvironment::loadParticlesFromConfig(const std::string configFileName) { // Get configuration map std::map> configMap = loadConfig(configFileName); @@ -253,7 +206,7 @@ void GravitationalEnvironment::loadParticlesFromConfig(const std::string configF double mass = envParams.at("mass")[i]; // Create Particle instance with pointers to elements in the positions and velocities vectors - particlePtrs.push_back(std::make_shared(&positions[i], &velocities[i], mass)); + particlePtrs.push_back(std::make_shared(&positions[i], &velocities[i], mass)); } } @@ -367,7 +320,7 @@ void GravitationalEnvironment::simulate(const double duration, const double t // If logging, append to log string if (log == true) { - logStr += std::to_string(i * timestep) + ","; + logStr += std::to_string(i * timestep); logStr += getStepLog() + "\n"; } std::cout << i * timestep << ",\t" << getStepLog() << "\n"; @@ -390,7 +343,7 @@ void GravitationalEnvironment::simulate(const double duration, const double t std::cerr << "Failed to open the file: " << logFileName << std::endl; } else { logFile << logStr; - std::cout << "Successfully logged to " + logFileName; + std::cout << "Successfully logged to " + logFileName + "\n"; } logFile.close(); } diff --git a/src/simulation.cpp b/src/simulation.cpp index 76c087d..726f814 100644 --- a/src/simulation.cpp +++ b/src/simulation.cpp @@ -8,7 +8,7 @@ #include "../include/environment.h" int main() { - GravitationalEnvironment defaultEnv("default.yaml", true); + GravitationalEnvironment defaultEnv("default.yaml", true); // Simulate defaultEnv.simulate(3, 0.5); diff --git a/test/test_environment.cpp b/test/test_environment.cpp index 08dca77..3fd40eb 100644 --- a/test/test_environment.cpp +++ b/test/test_environment.cpp @@ -184,7 +184,7 @@ TEST_CASE("Load Config File") { CHECK(defaultConfig["global"]["nParticles"] == "1000"); } -void checkDefaultEnv(GravitationalEnvironment& env) { +void checkDefaultEnv(GravitationalEnvironment& env) { // Check that it all looks good... that default vals are: // mass: // dist: constant @@ -231,8 +231,8 @@ void checkDefaultEnv(GravitationalEnvironment& env) { TEST_CASE("Load Particles From Config") { // Get a defualt environment class - GravitationalEnvironment defaultEnv("default.yaml", true); - GravitationalEnvironment defaultEnv2("default.yaml", true, "prefixyprefix"); + GravitationalEnvironment defaultEnv("default.yaml", true); + GravitationalEnvironment defaultEnv2("default.yaml", true, "prefixyprefix"); // Check 'em checkDefaultEnv(defaultEnv);