Added: SIMgeneric::getInterfaceForces()
This commit is contained in:
parent
88ee21ffe0
commit
7736de71ca
@ -17,6 +17,7 @@
|
|||||||
#include "IntegrandBase.h"
|
#include "IntegrandBase.h"
|
||||||
#include "Utilities.h"
|
#include "Utilities.h"
|
||||||
#include "Function.h"
|
#include "Function.h"
|
||||||
|
#include "SAM.h"
|
||||||
#include "IFEM.h"
|
#include "IFEM.h"
|
||||||
|
|
||||||
|
|
||||||
@ -59,6 +60,31 @@ Vector SIMgeneric::getSolution (const Vector& psol, const double* par,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Vector SIMgeneric::getInterfaceForces (const Vector& sf,
|
||||||
|
const RealArray& weights, int code) const
|
||||||
|
{
|
||||||
|
Vector force(nsd);
|
||||||
|
if (!mySam)
|
||||||
|
return force;
|
||||||
|
|
||||||
|
IntVec glbNodes;
|
||||||
|
this->getBoundaryNodes(code,glbNodes);
|
||||||
|
|
||||||
|
for (int inod : glbNodes)
|
||||||
|
{
|
||||||
|
double w = inod <= (int)weights.size() ? weights[inod-1] : 1.0;
|
||||||
|
std::pair<int,int> dof = mySam->getNodeDOFs(inod);
|
||||||
|
for (unsigned char i = 0; i < nsd; i++, dof.first++)
|
||||||
|
if (dof.first <= dof.second && dof.first < (int)sf.size())
|
||||||
|
force[i] += w*sf(dof.first);
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return force;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int SIMgeneric::evalPoint (const double* xi, Vec3& X, double* param,
|
int SIMgeneric::evalPoint (const double* xi, Vec3& X, double* param,
|
||||||
int patch, bool global) const
|
int patch, bool global) const
|
||||||
{
|
{
|
||||||
|
@ -57,6 +57,14 @@ public:
|
|||||||
int evalPoint(const double* xi, Vec3& X, double* param = nullptr,
|
int evalPoint(const double* xi, Vec3& X, double* param = nullptr,
|
||||||
int patch = 1, bool global = false) const;
|
int patch = 1, bool global = false) const;
|
||||||
|
|
||||||
|
//! \brief Extracts the force resultant on a specified interface.
|
||||||
|
//! \param[in] sf Internal nodal forces
|
||||||
|
//! \param[in] weights Nodal weights
|
||||||
|
//! \param[in] code Code indentifying the interface to extract forces for
|
||||||
|
//! \return The interface force resultant
|
||||||
|
Vector getInterfaceForces(const Vector& sf,
|
||||||
|
const RealArray& weights, int code) const;
|
||||||
|
|
||||||
//! \brief Returns the element that contains a specified spatial point.
|
//! \brief Returns the element that contains a specified spatial point.
|
||||||
//! \param[in] param The parameters of the point in the knot-span domain
|
//! \param[in] param The parameters of the point in the knot-span domain
|
||||||
//! \param[in] patch 1-based patch index containing the point
|
//! \param[in] patch 1-based patch index containing the point
|
||||||
|
Loading…
Reference in New Issue
Block a user