diff --git a/changes/developer/internal.input-file-parser.md b/changes/developer/internal.input-file-parser.md index 51e3dd7dc..ae8e56106 100644 --- a/changes/developer/internal.input-file-parser.md +++ b/changes/developer/internal.input-file-parser.md @@ -1,2 +1,3 @@ - prepare celllist input file parser to remove engine dependency - prepare constraints input file parser to remove engine dependency +- prepare files input file parser to remove engine dependency diff --git a/include/engine/engine.hpp b/include/engine/engine.hpp index 563cc6781..2abc5d659 100644 --- a/include/engine/engine.hpp +++ b/include/engine/engine.hpp @@ -105,14 +105,16 @@ namespace engine const std::shared_ptr &getCellList() const; [[nodiscard]] const std::shared_ptr &getConstraints() const; + [[nodiscard]] + const std::shared_ptr< + intraNonBonded::IntraNonBonded> &getIntraNonBonded() const; - [[nodiscard]] simulationBox::SimulationBox &getSimulationBox(); - [[nodiscard]] physicalData::PhysicalData &getPhysicalData(); - [[nodiscard]] physicalData::PhysicalData &getAveragePhysicalData(); - [[nodiscard]] forceField::ForceField &getForceField(); - [[nodiscard]] intraNonBonded::IntraNonBonded &getIntraNonBonded(); - [[nodiscard]] virial::Virial &getVirial(); - [[nodiscard]] potential::Potential &getPotential(); + [[nodiscard]] simulationBox::SimulationBox &getSimulationBox(); + [[nodiscard]] physicalData::PhysicalData &getPhysicalData(); + [[nodiscard]] physicalData::PhysicalData &getAveragePhysicalData(); + [[nodiscard]] forceField::ForceField &getForceField(); + [[nodiscard]] virial::Virial &getVirial(); + [[nodiscard]] potential::Potential &getPotential(); /************************* * output getter methods * @@ -133,12 +135,11 @@ namespace engine * get pointer methods * ***********************/ - [[nodiscard]] forceField::ForceField *getForceFieldPtr(); - [[nodiscard]] potential::Potential *getPotentialPtr(); - [[nodiscard]] virial::Virial *getVirialPtr(); - [[nodiscard]] simulationBox::SimulationBox *getSimulationBoxPtr(); - [[nodiscard]] physicalData::PhysicalData *getPhysicalDataPtr(); - [[nodiscard]] intraNonBonded::IntraNonBonded *getIntraNonBondedPtr(); + [[nodiscard]] forceField::ForceField *getForceFieldPtr(); + [[nodiscard]] potential::Potential *getPotentialPtr(); + [[nodiscard]] virial::Virial *getVirialPtr(); + [[nodiscard]] simulationBox::SimulationBox *getSimulationBoxPtr(); + [[nodiscard]] physicalData::PhysicalData *getPhysicalDataPtr(); /****************************** * get shared pointer methods * @@ -151,9 +152,6 @@ namespace engine [[nodiscard]] std::shared_ptr getSharedPhysicalData( ) const; - [[nodiscard]] - std::shared_ptr getSharedIntraNonBonded( - ) const; [[nodiscard]] std::shared_ptr getSharedVirial() const; [[nodiscard]] std::shared_ptr getSharedPotential( ) const; diff --git a/include/input/inputFileParser/filesInputParser.hpp b/include/input/inputFileParser/filesInputParser.hpp index dde429661..187b96a9f 100644 --- a/include/input/inputFileParser/filesInputParser.hpp +++ b/include/input/inputFileParser/filesInputParser.hpp @@ -39,11 +39,14 @@ namespace input class FilesInputParser : public InputFileParser { private: + std::shared_ptr _intraNonBonded; + bool _validateFilePaths; public: explicit FilesInputParser( engine::Engine &, + std::shared_ptr intraNonBonded, bool validateFilePaths = true ); diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index d2b96999b..e821d5304 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -184,9 +184,12 @@ ForceField &Engine::getForceField() { return *_forceField; } /** * @brief get the reference to the intra non bonded interactions * - * @return IntraNonBonded& + * @return const std::shared_ptr& */ -IntraNonBonded &Engine::getIntraNonBonded() { return *_intraNonBonded; } +const std::shared_ptr &Engine::getIntraNonBonded() const +{ + return _intraNonBonded; +} /** * @brief get the reference to the virial @@ -237,13 +240,6 @@ SimulationBox *Engine::getSimulationBoxPtr() { return _simulationBox.get(); } */ PhysicalData *Engine::getPhysicalDataPtr() { return _physicalData.get(); } -/** - * @brief get the pointer to the intra non bonded interactions - * - * @return IntraNonBonded* - */ -IntraNonBonded *Engine::getIntraNonBondedPtr() { return _intraNonBonded.get(); } - /** * @brief set the inter-water interactions handler * @@ -391,16 +387,6 @@ const std::shared_ptr &Engine::getConstraints() const return _constraints; } -/** - * @brief get the shared pointer to the intra non bonded interactions - * - * @return std::shared_ptr - */ -std::shared_ptr Engine::getSharedIntraNonBonded() const -{ - return _intraNonBonded; -} - /** * @brief get the shared pointer to the virial * diff --git a/src/engine/hessianEngine.cpp b/src/engine/hessianEngine.cpp index a202d1252..58b82aa7f 100644 --- a/src/engine/hessianEngine.cpp +++ b/src/engine/hessianEngine.cpp @@ -105,7 +105,7 @@ std::shared_ptr HessianEngine::setupEvaluator() evaluator->setPotential(getSharedPotential()); evaluator->setForceField(getSharedForceField()); evaluator->setConstraints(getConstraints()); - evaluator->setIntraNonBonded(getSharedIntraNonBonded()); + evaluator->setIntraNonBonded(getIntraNonBonded()); evaluator->setVirial(getSharedVirial()); evaluator->setPhysicalData(getSharedPhysicalData()); evaluator->setPhysicalDataOld(getSharedPhysicalDataOld()); diff --git a/src/input/inputFileParser/filesInputParser.cpp b/src/input/inputFileParser/filesInputParser.cpp index 43536b370..2682295df 100644 --- a/src/input/inputFileParser/filesInputParser.cpp +++ b/src/input/inputFileParser/filesInputParser.cpp @@ -50,8 +50,14 @@ using namespace utilities; * * @param engine */ -FilesInputParser::FilesInputParser(Engine &engine, const bool validateFilePaths) - : InputFileParser(engine), _validateFilePaths(validateFilePaths) +FilesInputParser::FilesInputParser( + Engine &engine, + std::shared_ptr intraNonBonded, + const bool validateFilePaths +) + : InputFileParser(engine), + _intraNonBonded(intraNonBonded), + _validateFilePaths(validateFilePaths) { addKeyword( std::string("intra-nonBonded_file"), @@ -144,7 +150,7 @@ void FilesInputParser::parseIntraNonBondedFile( std::format("Intra non bonded file \"{}\" File not found", fileName) ); - _engine.getIntraNonBonded().activate(); + _intraNonBonded->activate(); FileSettings::setIntraNonBondedFileName(fileName); FileSettings::setIsIntraNonBondedFileNameSet(); diff --git a/src/input/inputFileReader.cpp b/src/input/inputFileReader.cpp index c27724821..4479a51fa 100644 --- a/src/input/inputFileReader.cpp +++ b/src/input/inputFileReader.cpp @@ -88,7 +88,11 @@ InputFileReader::InputFileReader( ); _parsers.push_back(make_unique(_engine)); _parsers.push_back( - make_unique(_engine, validateFilePaths) + make_unique( + _engine, + _engine.getIntraNonBonded(), + validateFilePaths + ) ); _parsers.push_back(make_unique(_engine)); _parsers.push_back(make_unique(_engine)); diff --git a/src/input/intraNonBondedReader.cpp b/src/input/intraNonBondedReader.cpp index 68de65571..7253a3b1a 100644 --- a/src/input/intraNonBondedReader.cpp +++ b/src/input/intraNonBondedReader.cpp @@ -33,7 +33,6 @@ #include "engine.hpp" // for Engine #include "exceptions.hpp" // for IntraNonBondedException #include "fileSettings.hpp" // for FileSettings -#include "intraNonBonded.hpp" // for IntraNonBonded #include "intraNonBondedContainer.hpp" // for IntraNonBondedContainer #include "mathUtilities.hpp" // for sign, utilities #include "simulationBox.hpp" // for SimulationBox @@ -92,7 +91,9 @@ IntraNonBondedReader::IntraNonBondedReader( const std::string &fileName, Engine &engine ) - : _fileName(fileName), _fp(fileName), _engine(engine){}; + : _fileName(fileName), _fp(fileName), _engine(engine) +{ +} /** * @brief reads the intra non bonded interactions from the intraNonBonded file @@ -285,7 +286,7 @@ void IntraNonBondedReader::processMolecule(const size_t moleculeType) const auto container = IntraNonBondedContainer(moleculeType, atomIndices); - _engine.getIntraNonBonded().addIntraNonBondedContainer(container); + _engine.getIntraNonBonded()->addIntraNonBondedContainer(container); } /** @@ -297,8 +298,8 @@ void IntraNonBondedReader::processMolecule(const size_t moleculeType) */ void IntraNonBondedReader::checkDuplicates() const { - auto &intraNonBonded = _engine.getIntraNonBonded(); - const auto nonBondedCont = intraNonBonded.getIntraNonBondedContainers(); + const auto &intraNonBonded = _engine.getIntraNonBonded(); + const auto nonBondedCont = intraNonBonded->getIntraNonBondedContainers(); auto transform = [](const auto &container) { return container.getMolType(); }; @@ -333,4 +334,4 @@ void IntraNonBondedReader::setFileName(const std::string_view &fileName) /** * @brief reinitializes the file pointer */ -void IntraNonBondedReader::reInitializeFp() { _fp = std::ifstream(_fileName); } \ No newline at end of file +void IntraNonBondedReader::reInitializeFp() { _fp = std::ifstream(_fileName); } diff --git a/src/setup/intraNonBondedSetup.cpp b/src/setup/intraNonBondedSetup.cpp index 480b1984f..bae69d5e2 100644 --- a/src/setup/intraNonBondedSetup.cpp +++ b/src/setup/intraNonBondedSetup.cpp @@ -22,9 +22,8 @@ #include "intraNonBondedSetup.hpp" -#include "engine.hpp" // for Engine -#include "intraNonBonded.hpp" // for IntraNonBonded -#include "potential.hpp" // for Potential +#include "engine.hpp" // for Engine +#include "potential.hpp" // for Potential using namespace setup; using namespace engine; @@ -52,7 +51,7 @@ void setup::setupIntraNonBonded(engine::Engine &engine) * * @param engine */ -IntraNonBondedSetup::IntraNonBondedSetup(Engine &engine) : _engine(engine){}; +IntraNonBondedSetup::IntraNonBondedSetup(Engine &engine) : _engine(engine) {} /** * @brief Setup intra non bonded interactions @@ -71,8 +70,8 @@ void IntraNonBondedSetup::setup() const auto &nonCoulombPot = potential.getNonCoulombPotSharedPtr(); const auto &coulombPot = potential.getCoulombPotSharedPtr(); - intraNonBonded.setNonCoulombPotential(nonCoulombPot); - intraNonBonded.setCoulombPotential(coulombPot); + intraNonBonded->setNonCoulombPotential(nonCoulombPot); + intraNonBonded->setCoulombPotential(coulombPot); - intraNonBonded.fillIntraNonBondedMaps(_engine.getSimulationBox()); -} \ No newline at end of file + intraNonBonded->fillIntraNonBondedMaps(_engine.getSimulationBox()); +} diff --git a/src/setup/optimizerSetup.cpp b/src/setup/optimizerSetup.cpp index 3bc981bdd..7520d4f71 100644 --- a/src/setup/optimizerSetup.cpp +++ b/src/setup/optimizerSetup.cpp @@ -240,7 +240,7 @@ std::shared_ptr OptimizerSetup::setupEvaluator() evaluator->setPotential(_optEngine.getSharedPotential()); evaluator->setForceField(_optEngine.getSharedForceField()); evaluator->setConstraints(_optEngine.getConstraints()); - evaluator->setIntraNonBonded(_optEngine.getSharedIntraNonBonded()); + evaluator->setIntraNonBonded(_optEngine.getIntraNonBonded()); evaluator->setVirial(_optEngine.getSharedVirial()); evaluator->setSimulationBox(_optEngine.getSharedSimulationBox()); evaluator->setPhysicalData(_optEngine.getSharedPhysicalData()); diff --git a/tests/include/input/testIntraNonBondedReader.hpp b/tests/include/input/testIntraNonBondedReader.hpp index ce712f5f9..4611d4d03 100644 --- a/tests/include/input/testIntraNonBondedReader.hpp +++ b/tests/include/input/testIntraNonBondedReader.hpp @@ -58,7 +58,7 @@ class TestIntraNonBondedReader : public ::testing::Test _engine = new engine::MMMDEngine(); _engine->getSimulationBox().addMoleculeType(molecule1); - _engine->getIntraNonBonded().activate(); + _engine->getIntraNonBonded()->activate(); _intraNonBondedReader = new input::intraNonBondedReader::IntraNonBondedReader( @@ -75,4 +75,4 @@ class TestIntraNonBondedReader : public ::testing::Test } }; -#endif // _TEST_INTRA_NON_BONDED_READER_HPP_ \ No newline at end of file +#endif // _TEST_INTRA_NON_BONDED_READER_HPP_ diff --git a/tests/src/input/inputFileParsing/testFilesParser.cpp b/tests/src/input/inputFileParsing/testFilesParser.cpp index 6930c9e0d..7e9d8284a 100644 --- a/tests/src/input/inputFileParsing/testFilesParser.cpp +++ b/tests/src/input/inputFileParsing/testFilesParser.cpp @@ -43,7 +43,7 @@ using namespace input; */ TEST_F(TestInputFileReader, testParseTopologyFilename) { - FilesInputParser parser(*_engine); + FilesInputParser parser(*_engine, _engine->getIntraNonBonded()); std::vector lineElements = { "topology_file", @@ -73,7 +73,7 @@ TEST_F(TestInputFileReader, testParseTopologyFilename) */ TEST_F(TestInputFileReader, testParseParameterFilename) { - FilesInputParser parser(*_engine); + FilesInputParser parser(*_engine, _engine->getIntraNonBonded()); std::vector lineElements = { "parameter_file", @@ -104,7 +104,7 @@ TEST_F(TestInputFileReader, testParseParameterFilename) */ TEST_F(TestInputFileReader, parseIntraNonBondedFile) { - FilesInputParser parser(*_engine); + FilesInputParser parser(*_engine, _engine->getIntraNonBonded()); std::vector lineElements = { "intra-nonBonded_file", "=", @@ -134,7 +134,7 @@ TEST_F(TestInputFileReader, parseIntraNonBondedFile) */ TEST_F(TestInputFileReader, testStartFileName) { - FilesInputParser parser(*_engine); + FilesInputParser parser(*_engine, _engine->getIntraNonBonded()); std::vector lineElements = { "startFile_name", "=", @@ -160,7 +160,7 @@ TEST_F(TestInputFileReader, testStartFileName) */ TEST_F(TestInputFileReader, testMoldescriptorFileName) { - FilesInputParser parser(*_engine); + FilesInputParser parser(*_engine, _engine->getIntraNonBonded()); std::vector lineElements = { "moldescriptorFile_name", "=", @@ -191,7 +191,7 @@ TEST_F(TestInputFileReader, testMoldescriptorFileName) */ TEST_F(TestInputFileReader, testGuffPath) { - FilesInputParser parser(*_engine); + FilesInputParser parser(*_engine, _engine->getIntraNonBonded()); const std::vector lineElements = {"guff_path", "=", "guff"}; EXPECT_THROW_MSG( parser.parseGuffPath(lineElements, 0), @@ -206,7 +206,7 @@ TEST_F(TestInputFileReader, testGuffPath) */ TEST_F(TestInputFileReader, guffDatFilename) { - FilesInputParser parser(*_engine); + FilesInputParser parser(*_engine, _engine->getIntraNonBonded()); std::vector lineElements = {"guffdat_file", "=", "guff.dat"}; EXPECT_THROW_MSG( parser.parseGuffDatFilename(lineElements, 0), @@ -227,7 +227,7 @@ TEST_F(TestInputFileReader, guffDatFilename) */ TEST_F(TestInputFileReader, testRpmdStartFileName) { - FilesInputParser parser(*_engine); + FilesInputParser parser(*_engine, _engine->getIntraNonBonded()); std::vector lineElements = { "rpmd_start_file", "=", @@ -256,7 +256,7 @@ TEST_F(TestInputFileReader, testRpmdStartFileName) */ TEST_F(TestInputFileReader, testMShakeFileName) { - FilesInputParser parser(*_engine); + FilesInputParser parser(*_engine, _engine->getIntraNonBonded()); std::vector lineElements = {"mshake_file", "=", "mshake.dat"}; EXPECT_THROW_MSG( @@ -278,7 +278,7 @@ TEST_F(TestInputFileReader, testMShakeFileName) */ TEST_F(TestInputFileReader, testDFTBFileName) { - FilesInputParser parser(*_engine); + FilesInputParser parser(*_engine, _engine->getIntraNonBonded()); std::vector lineElements = { "dftb_file", "=", @@ -304,7 +304,7 @@ TEST_F(TestInputFileReader, testDFTBFileName) */ TEST_F(TestInputFileReader, testTMFileName) { - FilesInputParser parser(*_engine); + FilesInputParser parser(*_engine, _engine->getIntraNonBonded()); std::vector lineElements = { "turbomole_file", "=", @@ -327,4 +327,4 @@ TEST_F(TestInputFileReader, testTMFileName) settings::FileSettings::getTMFileName(), "data/turbomoleReader/tm_define.template" ); -} \ No newline at end of file +} diff --git a/tests/src/input/testIntraNonBondedReader.cpp b/tests/src/input/testIntraNonBondedReader.cpp index 9a1fb5622..4ad059e48 100644 --- a/tests/src/input/testIntraNonBondedReader.cpp +++ b/tests/src/input/testIntraNonBondedReader.cpp @@ -68,7 +68,7 @@ TEST_F(TestIntraNonBondedReader, noFileSetByUser) TEST_F(TestIntraNonBondedReader, readingNotNeeded) { _intraNonBondedReader->setFileName(""); - _engine->getIntraNonBonded().deactivate(); + _engine->getIntraNonBonded()->deactivate(); EXPECT_NO_THROW(_intraNonBondedReader->read()); } @@ -137,11 +137,11 @@ TEST_F(TestIntraNonBondedReader, readIntraNonBondedFile) input::intraNonBondedReader::readIntraNonBondedFile(*_engine); const auto container = - _engine->getIntraNonBonded().getIntraNonBondedContainers()[0]; + _engine->getIntraNonBonded()->getIntraNonBondedContainers()[0]; EXPECT_EQ(container.getMolType(), 0); const auto &atomIndices = container.getAtomIndices(); EXPECT_EQ(atomIndices[0], std::vector({1, -2})); EXPECT_EQ(atomIndices[1], std::vector({})); EXPECT_EQ(atomIndices[2], std::vector({1})); -} \ No newline at end of file +} diff --git a/tests/src/setup/testIntraNonBondedSetup.cpp b/tests/src/setup/testIntraNonBondedSetup.cpp index 8e5bfb922..5ca6dd3f6 100644 --- a/tests/src/setup/testIntraNonBondedSetup.cpp +++ b/tests/src/setup/testIntraNonBondedSetup.cpp @@ -20,36 +20,38 @@ ******************************************************************************/ +#include // for InitGoogleTest, RUN_ALL_TESTS + +#include // for vector, allocator + #include "engine.hpp" // for Engine +#include "gtest/gtest.h" // for Message, TestPartResult #include "intraNonBondedContainer.hpp" // for IntraNonBondedContainer #include "intraNonBondedSetup.hpp" // for setupIntraNonBonded #include "molecule.hpp" // for Molecule #include "testSetup.hpp" // for TestSetup -#include "gtest/gtest.h" // for Message, TestPartResult -#include // for InitGoogleTest, RUN_ALL_TESTS -#include // for vector, allocator - /** * @brief tests the setup of the intra non bonded interactions * */ TEST_F(TestSetup, setupIntraNonBonded) { + auto molecule = simulationBox::Molecule(1); + auto intraNonBondedContainer = + intraNonBonded::IntraNonBondedContainer(1, {{-1}}); - auto molecule = simulationBox::Molecule(1); - auto intraNonBondedContainer = intraNonBonded::IntraNonBondedContainer(1, {{-1}}); - - _engine->getIntraNonBonded().addIntraNonBondedContainer(intraNonBondedContainer); + const auto& intraNonBonded = _engine->getIntraNonBonded(); + intraNonBonded->addIntraNonBondedContainer(intraNonBondedContainer); _engine->getSimulationBox().addMolecule(molecule); - _engine->getIntraNonBonded().deactivate(); + intraNonBonded->deactivate(); setup::setupIntraNonBonded(*_engine); - EXPECT_EQ(_engine->getIntraNonBonded().getIntraNonBondedMaps().size(), 0); + EXPECT_EQ(intraNonBonded->getIntraNonBondedMaps().size(), 0); - _engine->getIntraNonBonded().activate(); + intraNonBonded->activate(); setup::setupIntraNonBonded(*_engine); - EXPECT_EQ(_engine->getIntraNonBonded().getIntraNonBondedMaps().size(), 1); -} \ No newline at end of file + EXPECT_EQ(intraNonBonded->getIntraNonBondedMaps().size(), 1); +}