/*************************************************************************** * Copyright (c) 2023 Ondsel, Inc. * * * * This file is part of OndselSolver. * * * * See LICENSE file for details about copyright. * ***************************************************************************/ #pragma once #include #include #include "MBDynItem.h" #include "MBDynDrive.h" namespace MbD { class MBDynData; class MBDynInitialValue; class MBDynControlData; class MBDynNode; class MBDynElement; class MBDynVariable; class MBDynLabel; class MBDynReference; class MBDynSystem : public MBDynItem { public: static void runFile(const char* chars); static void eraseComments(std::vector& lines); static std::vector collectStatements(std::vector& lines); void initialize() override; void parseMBDyn(std::vector& lines) override; void parseMBDynData(std::vector& lines); void parseMBDynNodes(std::vector& lines); void parseMBDynElements(std::vector& lines); void parseMBDynVariables(std::vector& lines); void parseMBDynLabels(std::vector& lines); void parseMBDynReferences(std::vector& lines); std::shared_ptr>> mbdynNodes() override; std::shared_ptr>> mbdynBodies() override; std::shared_ptr>> mbdynJoints() override; std::shared_ptr>> mbdynDrives() override; std::shared_ptr> mbdynVariables() override; std::shared_ptr>> mbdynReferences() override; void createASMT() override; std::shared_ptr nodeAt(std::string nodeName) override; int nodeidAt(std::string nodeName) override; std::shared_ptr bodyWithNode(std::string nodeName) override; std::shared_ptr asmtAssembly() override; std::vector nodeNames() override; void runKINEMATIC(); void outputFiles(); void setFilename(std::string filename); void readDataBlock(std::vector& lines); void readInitialValueBlock(std::vector& lines); void readControlDataBlock(std::vector& lines); void readLabels(std::vector& lines); void readVariables(std::vector& lines); void readReferences(std::vector& lines); void readNodesBlock(std::vector& lines); void readElementsBlock(std::vector& lines); std::string filename = ""; std::string data; std::shared_ptr initialValue; std::shared_ptr controlData; std::shared_ptr>> nodes; std::shared_ptr>> bodies; std::shared_ptr>> joints; std::shared_ptr>> drives; std::shared_ptr> variables; std::shared_ptr> labels; std::shared_ptr>> references; }; }