crank_slider.mbd MBDyn file working

This commit is contained in:
Aik-Siong Koh
2023-10-13 13:01:39 -06:00
parent e4e98755db
commit 84cb979354
95 changed files with 2693 additions and 558 deletions

View File

@@ -8,42 +8,126 @@ void MbD::MBDynControlData::initialize()
void MbD::MBDynControlData::parseMBDyn(std::vector<std::string>& lines)
{
readMaxIterations(lines);
readDefaultOrientation(lines);
readOmegaRotates(lines);
readPrint(lines);
readInitialStiffness(lines);
readStructuralNodes(lines);
readRigidBodies(lines);
readJoints(lines);
assert(lines.size() == 2);
}
void MbD::MBDynControlData::readMaxIterations(std::vector<std::string>& lines)
{
//max iterations: 1000;
std::vector<std::string> tokens{ "max", "iterations:" };
auto it = findLineWith(lines, tokens);
if (it == lines.end()) return;
std::istringstream iss(*it);
std::string str;
iss >> str;
iss >> str;
iss >> maxIterations;
lines.erase(it);
}
void MbD::MBDynControlData::readDefaultOrientation(std::vector<std::string>& lines)
{
//default orientation: euler321;
std::vector<std::string> tokens{ "default", "orientation:" };
auto it = findLineWith(lines, tokens);
if (it == lines.end()) return;
std::istringstream iss(*it);
std::string str;
iss >> str;
iss >> str;
iss >> defaultOrientation;
lines.erase(it);
}
void MbD::MBDynControlData::readOmegaRotates(std::vector<std::string>& lines)
{
//omega rotates: no;
std::vector<std::string> tokens{ "omega", "rotates:" };
auto it = findLineWith(lines, tokens);
if (it == lines.end()) return;
std::istringstream iss(*it);
std::string str;
iss >> str;
iss >> str;
iss >> omegaRotates;
lines.erase(it);
}
void MbD::MBDynControlData::readPrint(std::vector<std::string>& lines)
{
//print: none;
std::vector<std::string> tokens{ "print:" };
auto it = findLineWith(lines, tokens);
if (it == lines.end()) return;
std::istringstream iss(*it);
std::string str;
iss >> str;
iss >> str;
iss >> print;
lines.erase(it);
}
void MbD::MBDynControlData::readInitialStiffness(std::vector<std::string>& lines)
{
//initial stiffness: 1.0, 1.0;
std::vector<std::string> tokens{ "initial", "stiffness:" };
auto it = findLineWith(lines, tokens);
if (it == lines.end()) return;
std::istringstream iss(*it);
std::string str;
iss >> str;
iss >> str;
iss >> initialStiffness;
iss >> str;
initialStiffness.append(str);
lines.erase(it);
}
void MbD::MBDynControlData::readStructuralNodes(std::vector<std::string>& lines)
{
{
//structural nodes: 4;
std::vector<std::string> tokens{"structural", "nodes:"};
std::vector<std::string> tokens{ "structural", "nodes:" };
auto it = findLineWith(lines, tokens);
if (it == lines.end()) return;
std::istringstream iss(*it);
std::string str;
iss >> str;
iss >> str;
iss >> structuralNodes;
lines.erase(it);
}
void MbD::MBDynControlData::readRigidBodies(std::vector<std::string>& lines)
{
//rigid bodies: 3;
std::vector<std::string> tokens{"rigid", "bodies:"};
std::vector<std::string> tokens{ "rigid", "bodies:" };
auto it = findLineWith(lines, tokens);
if (it == lines.end()) return;
std::istringstream iss(*it);
std::string str;
iss >> str;
iss >> str;
iss >> rigidBodies;
lines.erase(it);
}
void MbD::MBDynControlData::readJoints(std::vector<std::string>& lines)
{
//joints: 6;
std::vector<std::string> tokens{"joints:"};
std::vector<std::string> tokens{ "joints:" };
auto it = findLineWith(lines, tokens);
if (it == lines.end()) return;
std::istringstream iss(*it);
std::string str;
iss >> str;
iss >> joints;
lines.erase(it);
}