#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; 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); static void parseForcedDisplacements( const std::shared_ptr& pJob, const std::vector>& edgeMeshVertsToChronoNodes, chrono::ChSystemSMC& my_system); 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); inline const static std::string label{"Chronos_Euler"}; struct Settings { enum AnalysisType { Linear = 0, NonLinear }; AnalysisType analysisType{NonLinear}; }; Settings settings; }; #endif // CHRONOSEULERSIMULATIONMODEL_HPP