Skip to content
Snippets Groups Projects

Version 1.2

Merged Adrien Crovato requested to merge adri into master
7 files
+ 35
37
Compare changes
  • Side-by-side
  • Inline
Files
7
+ 10
14
@@ -22,20 +22,17 @@ using namespace sdpm;
Motion::Motion(size_t n) : sdpmObject(),
_aAmp(0.), _hAmp(0.),
_xRef(0.), _zRef(0.),
_mAmp(0.), _dzMod(n, 0.), _rxMod(n, 0.), _ryMod(n, 0.)
_dzMod(n, 0.), _rxMod(n, 0.), _ryMod(n, 0.)
{
}
/**
* @brief Set rigid motion parameters
*/
void Motion::setRigid(double aAmp, double hAmp, double xRef, double zRef)
void Motion::setRigid(double aAmp, double hAmp)
{
_aAmp = aAmp;
_hAmp = hAmp;
_xRef = xRef;
_zRef = zRef;
}
/**
@@ -43,12 +40,11 @@ void Motion::setRigid(double aAmp, double hAmp, double xRef, double zRef)
*/
void Motion::setFlexible(double mAmp, std::vector<std::vector<double>> const &xMod, std::vector<Node *> const &nodes)
{
_mAmp = mAmp;
for (size_t i = 0; i < nodes.size(); ++i)
{
_dzMod[nodes[i]->getId() - 1] = xMod[i][0];
_rxMod[nodes[i]->getId() - 1] = xMod[i][1];
_ryMod[nodes[i]->getId() - 1] = xMod[i][2];
_dzMod[nodes[i]->getId() - 1] = mAmp * xMod[i][0];
_rxMod[nodes[i]->getId() - 1] = mAmp * xMod[i][1];
_ryMod[nodes[i]->getId() - 1] = mAmp * xMod[i][2];
}
}
@@ -67,7 +63,7 @@ sdpmVector3d Motion::computeSteady(Element const &e, sdpmVector3d const &ui)
{
sdpmDouble rx = _rxMod[n->getId() - 1];
sdpmDouble ry = _ryMod[n->getId() - 1];
flex += _mAmp * sdpmVector3d(ui(2) * ry, ui(2) * rx, -ui(0) * ry - ui(1) * rx) / e.getNodes().size();
flex += sdpmVector3d(ui(2) * ry, ui(2) * rx, -ui(0) * ry - ui(1) * rx) / e.getNodes().size();
}
return rigd + flex;
}
@@ -75,14 +71,14 @@ sdpmVector3d Motion::computeSteady(Element const &e, sdpmVector3d const &ui)
/**
* @brief Compute the harmonic part of the motion induced velocity on an element of the body
*/
sdpmVector3d Motion::computeHarmonic(Element const &e)
sdpmVector3d Motion::computeHarmonic(Element const &e, sdpmDouble xRef, sdpmDouble zRef)
{
// Rigid contribution
sdpmVector3d cg = e.getCompressibleCg();
sdpmVector3d rigd(-_aAmp * (cg(2) - _zRef), 0., _aAmp * (cg(0) - _xRef) + _hAmp);
sdpmVector3d cg = e.getCg();
sdpmVector3d rigd(-_aAmp * (cg(2) - zRef), 0., _aAmp * (cg(0) - xRef) + _hAmp);
// Flexible contribution
sdpmVector3d flex = sdpmVector3d::Zero();
for (auto n : e.getNodes())
flex += _mAmp * sdpmVector3d(0., 0., _dzMod[n->getId() - 1]) / e.getNodes().size();
flex += sdpmVector3d(0., 0., _dzMod[n->getId() - 1]) / e.getNodes().size();
return rigd + flex;
}
Loading