#ifndef CHRONOSIGASIMULATIONMODEL_HPP #define CHRONOSIGASIMULATIONMODEL_HPP #include "simulationmodel.hpp" namespace chrono { class ChSystemSMC; namespace fea { class ChMesh; class ChNodeFEAxyzrot; } // namespace fea } // namespace chrono class ChronosIGASimulationModel : 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); public: ChronosIGASimulationModel(); SimulationResults executeSimulation(const std::shared_ptr &pJob) override; void setStructure(const std::shared_ptr &pMesh) override; static std::shared_ptr convertToChronosMesh_IGA( const std::shared_ptr &pMesh, std::vector> &edgeMeshVertsToChronosNodes); inline const static std::string label{"Chronos_linear_IGA"}; }; #endif // CHRONOSIGASIMULATIONMODEL_HPP