runPosIC, initializeGlobally
This commit is contained in:
@@ -31,9 +31,11 @@ using namespace MbD;
|
||||
int main()
|
||||
{
|
||||
std::cout << "Hello World!\n";
|
||||
System& TheSystem = System::getInstance("TheSystem");
|
||||
System& TheSystem = System::getInstance();
|
||||
std::string name = "TheSystem";
|
||||
TheSystem.setName(name);
|
||||
std::cout << "TheSystem.getName() " << TheSystem.getName() << std::endl;
|
||||
auto systemSolver = TheSystem.systemSolver;
|
||||
auto& systemSolver = TheSystem.systemSolver;
|
||||
systemSolver->errorTolPosKine = 1.0e-6;
|
||||
systemSolver->errorTolAccKine = 1.0e-6;
|
||||
systemSolver->iterMaxPosKine = 25;
|
||||
@@ -66,17 +68,17 @@ int main()
|
||||
qE = std::make_shared<FullColumn<double>>(ListD{ 0, 0, 0, 1 });
|
||||
assembly1->setqX(qX);
|
||||
assembly1->setqE(qE);
|
||||
qXdot = std::make_shared<FullColumn<double>>(ListD{ 0, 0, 0 });
|
||||
omeOpO = std::make_shared<FullColumn<double>>(ListD{ 0, 0, 0, 1 });
|
||||
assembly1->setqXdot(qXdot);
|
||||
assembly1->setomeOpO(omeOpO);
|
||||
//qXdot = std::make_shared<FullColumn<double>>(ListD{ 0, 0, 0 });
|
||||
//omeOpO = std::make_shared<FullColumn<double>>(ListD{ 0, 0, 0, 1 });
|
||||
//assembly1->setqXdot(qXdot);
|
||||
//assembly1->setomeOpO(omeOpO);
|
||||
std::cout << "assembly1->getqX() " << assembly1->getqX()->toString() << std::endl;
|
||||
std::cout << "assembly1->getqE() " << assembly1->getqE()->toString() << std::endl;
|
||||
TheSystem.addPart(assembly1);
|
||||
{
|
||||
auto partFrame = assembly1->partFrame;
|
||||
auto& partFrame = assembly1->partFrame;
|
||||
auto marker1 = CREATE<MarkerFrame>::With("/Assembly1/Marker1");
|
||||
rpmp = std::make_shared<FullColumn<double>>(ListD{ 0.38423366582893, 6.8384291794733e-9, -0.048029210642807 });
|
||||
rpmp = std::make_shared<FullColumn<double>>(ListD{ 0.0, 2.8817526385684, 0.0 });
|
||||
marker1->setrpmp(rpmp);
|
||||
aApm = std::make_shared<FullMatrix<double>>(ListListD{
|
||||
{ 1, 0, 0 },
|
||||
@@ -100,13 +102,14 @@ int main()
|
||||
assembly1->asFixed();
|
||||
//
|
||||
auto crankPart1 = CREATE<Part>::With("/Assembly1/Part1");
|
||||
std::cout << "crankPart1->getName() " << crankPart1->getName() << std::endl;
|
||||
qX = std::make_shared<FullColumn<double>>(ListD{ 0.38423366582893, 6.8384291794733e-9, -0.048029210642807 });
|
||||
qE = std::make_shared<FullColumn<double>>(ListD{ 0.0, 0.0, 1.4248456266393e-10, 1.0 });
|
||||
crankPart1->setqX(qX);
|
||||
crankPart1->setqE(qE);
|
||||
TheSystem.parts->push_back(crankPart1);
|
||||
{
|
||||
auto partFrame = crankPart1->partFrame;
|
||||
auto& partFrame = crankPart1->partFrame;
|
||||
auto marker1 = CREATE<MarkerFrame>::With("/Assembly1/Part1/Marker1");
|
||||
rpmp = std::make_shared<FullColumn<double>>(ListD{ -0.38423368514246, -2.6661567755108e-17, 0.048029210642807 });
|
||||
marker1->setrpmp(rpmp);
|
||||
@@ -131,13 +134,14 @@ int main()
|
||||
}
|
||||
//
|
||||
auto conrodPart2 = CREATE<Part>::With("/Assembly1/Part2");
|
||||
std::cout << "conrodPart2->getName() " << conrodPart2->getName() << std::endl;
|
||||
qX = std::make_shared<FullColumn<double>>(ListD{ 0.38423366582893, 0.49215308269277, 0.048029210642807 });
|
||||
qE = std::make_shared<FullColumn<double>>(ListD{ 0.0, 0.0, 0.89871701272344, 0.4385290538168 });
|
||||
conrodPart2->setqX(qX);
|
||||
conrodPart2->setqE(qE);
|
||||
TheSystem.parts->push_back(conrodPart2);
|
||||
{
|
||||
auto partFrame = conrodPart2->partFrame;
|
||||
auto& partFrame = conrodPart2->partFrame;
|
||||
auto marker1 = CREATE<MarkerFrame>::With("/Assembly1/Part2/Marker1");
|
||||
rpmp = std::make_shared<FullColumn<double>>(ListD{ -0.6243797383565, 1.1997705489799e-16, -0.048029210642807 });
|
||||
marker1->setrpmp(rpmp);
|
||||
@@ -162,13 +166,14 @@ int main()
|
||||
}
|
||||
//
|
||||
auto pistonPart3 = CREATE<Part>::With("/Assembly1/Part3");
|
||||
std::cout << "pistonPart3->getName() " << pistonPart3->getName() << std::endl;
|
||||
qX = std::make_shared<FullColumn<double>>(ListD{ -1.284772285311e-18, 1.4645982581368, -4.788228906425e-17 });
|
||||
qE = std::make_shared<FullColumn<double>>(ListD{ 0.70710678118655, 0.70710678118655, 0.0, 0.0 });
|
||||
pistonPart3->setqX(qX);
|
||||
pistonPart3->setqE(qE);
|
||||
TheSystem.parts->push_back(pistonPart3);
|
||||
{
|
||||
auto partFrame = pistonPart3->partFrame;
|
||||
auto& partFrame = pistonPart3->partFrame;
|
||||
auto marker1 = CREATE<MarkerFrame>::With("/Assembly1/Part3/Marker1");
|
||||
rpmp = std::make_shared<FullColumn<double>>(ListD{ -0.48029210642807, 7.6201599718927e-18, -2.816737703896e-17 });
|
||||
marker1->setrpmp(rpmp);
|
||||
@@ -192,27 +197,34 @@ int main()
|
||||
partFrame->addMarkerFrame(marker2);
|
||||
}
|
||||
//
|
||||
auto cylJoint4 = CREATE<CylindricalJoint>::With("/Assembly1/Joint4");
|
||||
cylJoint4->connectsItoJ(pistonPart3->partFrame->endFrame("/Assembly1/Part3/Marker2"), assembly1->partFrame->endFrame("/Assembly1/Marker1"));
|
||||
TheSystem.jointsMotions->push_back(cylJoint4);
|
||||
auto revJoint1 = CREATE<RevoluteJoint>::With("/Assembly1/Joint1");
|
||||
std::cout << "revJoint1->getName() " << revJoint1->getName() << std::endl;
|
||||
revJoint1->connectsItoJ(assembly1->partFrame->endFrame("/Assembly1/Marker2"), crankPart1->partFrame->endFrame("/Assembly1/Part1/Marker1"));
|
||||
TheSystem.jointsMotions->push_back(revJoint1);
|
||||
|
||||
auto revJoint3 = CREATE<RevoluteJoint>::With("/Assembly1/Joint3");
|
||||
revJoint3->connectsItoJ(conrodPart2->partFrame->endFrame("/Assembly1/Part2/Marker2"), pistonPart3->partFrame->endFrame("/Assembly1/Part3/Marker1"));
|
||||
TheSystem.jointsMotions->push_back(revJoint3);
|
||||
|
||||
auto revJoint2 = CREATE<RevoluteJoint>::With("/Assembly1/Joint2");
|
||||
std::cout << "revJoint2->getName() " << revJoint2->getName() << std::endl;
|
||||
revJoint2->connectsItoJ(crankPart1->partFrame->endFrame("/Assembly1/Part1/Marker2"), conrodPart2->partFrame->endFrame("/Assembly1/Part2/Marker1"));
|
||||
TheSystem.jointsMotions->push_back(revJoint2);
|
||||
|
||||
auto revJoint1 = CREATE<RevoluteJoint>::With("/Assembly1/Joint1");
|
||||
revJoint1->connectsItoJ(assembly1->partFrame->endFrame("/Assembly1/Marker2"), crankPart1->partFrame->endFrame("/Assembly1/Part1/Marker1"));
|
||||
TheSystem.jointsMotions->push_back(revJoint1);
|
||||
|
||||
auto revJoint3 = CREATE<RevoluteJoint>::With("/Assembly1/Joint3");
|
||||
std::cout << "revJoint3->getName() " << revJoint3->getName() << std::endl;
|
||||
revJoint3->connectsItoJ(conrodPart2->partFrame->endFrame("/Assembly1/Part2/Marker2"), pistonPart3->partFrame->endFrame("/Assembly1/Part3/Marker1"));
|
||||
TheSystem.jointsMotions->push_back(revJoint3);
|
||||
|
||||
auto cylJoint4 = CREATE<CylindricalJoint>::With("/Assembly1/Joint4");
|
||||
std::cout << "cylJoint4->getName() " << cylJoint4->getName() << std::endl;
|
||||
cylJoint4->connectsItoJ(pistonPart3->partFrame->endFrame("/Assembly1/Part3/Marker2"), assembly1->partFrame->endFrame("/Assembly1/Marker1"));
|
||||
TheSystem.jointsMotions->push_back(cylJoint4);
|
||||
|
||||
auto rotMotion1 = CREATE<ZRotation>::With("/Assembly1/Motion1");
|
||||
rotMotion1->connectsItoJ(assembly1->partFrame->endFrame("/Assembly1/Marker2"), crankPart1->partFrame->endFrame("/Assembly1/Part1/Marker1"));
|
||||
std::cout << "rotMotion1->getName() " << rotMotion1->getName() << std::endl;
|
||||
auto omega = std::make_shared<Constant>(6.2831853071796);
|
||||
auto timeScale = std::make_shared<Constant>(0.04);
|
||||
rotMotion1->phiBlk = std::make_shared<Product>(omega, timeScale, TheSystem.time);
|
||||
auto time = std::make_shared<Product>(timeScale, TheSystem.time);
|
||||
rotMotion1->phiBlk = std::make_shared<Product>(omega, time);
|
||||
std::cout << "rotMotion1->phiBlk " << *(rotMotion1->phiBlk) << std::endl;
|
||||
TheSystem.jointsMotions->push_back(rotMotion1);
|
||||
//
|
||||
TheSystem.runKINEMATICS();
|
||||
|
||||
Reference in New Issue
Block a user