#ifndef CHRONOSEULERSIMULATIONMODEL_HPP #define CHRONOSEULERSIMULATIONMODEL_HPP #include "simulationmodel.hpp" namespace chrono { class ChSystemSMC; namespace fea { class ChMesh; class ChNodeFEAxyzrot; } // namespace fea } // namespace chrono class ChronosEulerSimulationModel : public SimulationModel { std::shared_ptr mesh_chronos; std::vector> edgeMeshVertsToChronoNodes; public: ChronosEulerSimulationModel(); SimulationResults executeSimulation(const std::shared_ptr &pJob) override; void setStructure(const std::shared_ptr &pMesh) override; static std::shared_ptr convertToChronosMesh_Euler( const std::shared_ptr &pMesh, std::vector> &edgeMeshVertsToChronosNodes); private: static void parseConstrainedVertices( const std::shared_ptr &pJob, const std::vector> &edgeMeshVertsToChronoNodes, chrono::ChSystemSMC &my_system); static void parseForces( const std::shared_ptr &mesh_chronos, const std::vector> &edgeMeshVertsToChronoNodes, const std::unordered_map &nodalExternalForces); }; #endif // CHRONOSEULERSIMULATIONMODEL_HPP