Added: Integrand for calculation of global nodal forces on boundaries

git-svn-id: http://svn.sintef.no/trondheim/IFEM/trunk@2357 e10b68d5-8a6e-419e-a041-bce267b0401d
This commit is contained in:
kmo
2013-05-07 17:01:44 +00:00
committed by Knut Morten Okstad
parent 545f0d587d
commit 1771e3f7cd
3 changed files with 18 additions and 3 deletions

View File

@@ -221,8 +221,10 @@ public:
//! \brief Returns a pointer to an Integrand for solution norm evaluation.
virtual NormBase* getNormIntegrand(AnaSol* = 0) const { return 0; }
//! \brief Returns a pointer to an Integrand for boundary force evaluation.
virtual ForceBase* getForceIntegrand(const Vec3* = 0, AnaSol* = 0) const
virtual ForceBase* getForceIntegrand(const Vec3*, AnaSol* = 0) const
{ return 0; }
//! \brief Returns a pointer to an Integrand for nodal force evaluation.
virtual ForceBase* getForceIntegrand() const { return 0; }
//! \brief Returns the number of primary/secondary solution field components.
virtual size_t getNoFields(int = 2) const { return 0; }
@@ -374,7 +376,8 @@ public:
virtual void initIntegration(size_t, size_t) {}
//! \brief Returns a local integral container for the element \a iEl.
virtual LocalIntegral* getLocalIntegral(size_t, size_t iEl, bool) const;
virtual LocalIntegral* getLocalIntegral(size_t nen, size_t iEl,
bool = false) const;
//! \brief Dummy implementation (only boundary integration is relevant).
virtual bool initElement(const std::vector<int>&, LocalIntegral&)

View File

@@ -1711,6 +1711,12 @@ ForceBase* SIMbase::getBoundaryForceIntegrand (const Vec3* X0) const
}
ForceBase* SIMbase::getNodalForceIntegrand () const
{
return myProblem->getForceIntegrand();
}
bool SIMbase::solutionNorms (const TimeDomain& time,
const Vectors& psol, const Vectors& ssol,
Vectors& gNorm, Matrix* eNorm)

View File

@@ -168,7 +168,8 @@ public:
//! \param[in] nMats Number of system matrices
//! \param[in] nVec Number of system right-hand-side vectors
//! \param[in] withRF Whether nodal reaction forces should be computed or not
bool initSystem(int mType, size_t nMats, size_t nVec, bool withRF = true);
bool initSystem(int mType, size_t nMats = 1, size_t nVec = 1,
bool withRF = true);
//! \brief Associates a system vector to a system matrix.
//! \sa AlgEqSystem::setAssociatedVector
@@ -601,6 +602,11 @@ public:
//! manually deleted before the variable receiving the pointer value goes
//! out of scope.
ForceBase* getBoundaryForceIntegrand(const Vec3* X0 = NULL) const;
//! \brief Returns a pointer to a force integrand object for this simulator.
//! \note The object is allocated dynamically and has therefore to be
//! manually deleted before the variable receiving the pointer value goes
//! out of scope.
ForceBase* getNodalForceIntegrand() const;
//! \brief Returns a unique integer code for a Property set.
//! \param[in] setName Name of the topology set the property is defined on