16#include <CEnvironment.h> 
   19#include "CMembraneElement.h" 
   20#include <net/CNetCableElementSpec.h> 
   21#include <net/CNetCableElement.h> 
   22#include <net/CNetElementDef.h> 
   23#include <IBasicBottom.h> 
   24#include <net/CNetBottomContactFilter.h> 
   25#include <ICurrentVel.h> 
   26#include <ICurrentVel.h> 
   27#include <net/CNetStructureSpec.h> 
   30#include <CEnvironment.h> 
   32#ifdef FH_VISUALIZATION 
   33    #include "sfh/ogre/NMeshGenerators.h" 
   34    #include "sfh/ogre/C3DLine.h" 
   35    #include <CTextRenderer.h> 
   48    virtual void OdeFcn(
const double dT, 
const double *
const adX, 
double *
const adXDot, 
const bool bIsMajorTimeStep);
 
   49    virtual void InitialConditionSetup(
const double dT, 
const double *
const adCurrentIC, 
double *
const adUpdatedIC, ISimObjectCreator *
const pCreator);
 
   50    virtual void FinalSetup(
const double dT, 
const double *
const adX, ISimObjectCreator *
const pCreator);
 
   51    const double * outExternalNodeForce(
const double dT, 
const double *
const adX, 
int iExtNode);
 
   53#ifdef FH_VISUALIZATION 
   55    virtual void RenderInit(Ogre::Root *
const pOgreRoot, ISimObjectCreator *
const pCreator);
 
   57    virtual void RenderUpdate(
const double dT, 
const double *
const adX);
 
   59    void CreateCapsule( Ogre::ManualObject *capsule_manual);
 
   62    const virtual double * NodePos(
const double dT, 
const double *
const adX, 
int iExtNode);
 
   63    const virtual double * NodeVel(
const double dT, 
const double *
const adX, 
int iExtNode);
 
   64    const virtual double * BottomContact(
const double dT, 
const double *
const adX);
 
   65    const virtual double * LowerMembranePosition(
const double dT, 
const double *
const adX);
 
   67    void SetAddedDragPerMPS(
double AddedDragPerMPS);
 
   69    virtual void CalcStateDerivatives(
const double *
const adX, 
double *
const adXDot);
 
   70    virtual void AddExternalForces(
const double dT, 
const double *
const adX);
 
   71    virtual void AddNetForces(
const double dT, 
const double *
const adX);
 
   72    virtual void AddCableForces(
const double dT, 
const double *
const adX);
 
   73    virtual double AddNodeBottomForce(
const double *
const adX, 
int iNode, 
double dDiam, 
double adForceInOut[3]);
 
   74    virtual void AddBottomForces(
const double *
const adX);
 
   75    virtual void AddInputPorts(ISimObjectCreator *pCreator);
 
   76    virtual void CreateNetPanels(std::vector<const CNetElementDef*> VNetElementDefs, ISimObjectCreator *pCreator);
 
   77    virtual void CreateNetCables(std::vector<const CNetCableElementSpec*> VCableElements, ISimObjectCreator *pCreator);
 
   78    virtual void CreateDataStructures();
 
   79    virtual void CreateOutputPorts(ISimObjectCreator *pCreator);
 
   80    VSPairStrInt CreateExternalNodeMap( std::string sTag, 
int* piUsed, 
CNetStructureSpec & NetSpec, ISimObjectCreator *pCreator);
 
   81    void PRINTALLNODEFORCES(std::string spec, 
double dT);
 
   89    double*         m_NodeExternalForces;
 
   93    int m_iNumNodesOutputPosAndVel;
 
   96    int m_iNumNodesOriginal;
 
   98    int m_iNumNodeOutputs;
 
  104    double                  m_adBottomContact[6];
 
  114    std::vector<CMembraneElement*>  m_VpNetElements;
 
  117    int**                           m_aaiCableConn;
 
  119    bool                            m_bFoldingPointRefinementUsed;
 
  126    VSPairStrInt            m_VsNodesInputForce;
 
  127    bool                    m_bUseTagForExternalNodes;
 
  130    double*                 m_adNodeForce;
 
  131    sfh::timers::StopWatch m_OdeTimer;
 
  133    double m_LowerMembraneDepth;
 
  135#ifdef CNetStructure_DO_PROFILE 
  136    sfh::timers::ProfilerWallclock m_Profiler;
 
Definition: CEnvironment.h:10
 
Definition: CNetStructureSpec.h:38
 
Interface for calculating the bottom force on various objects.
Definition: IBasicBottom.h:23
 
Definition: ICurrentVel.h:12
 
Definition: CMembraneStructure.h:42
 
CNetBottomContactFilter m_BottomContactFilter
Environment.
Definition: CMembraneStructure.h:103
 
std::vector< CNetCableElement * > m_VpCableElements
Element properties.
Definition: CMembraneStructure.h:113
 
CMembraneStructure(const std::string &sSimObjectName, ISimObjectCreator *const pCreator)
The constructor sets the pointer to the output object and the parser object.
 
VSPairStrInt m_VsNodesOutputPosAndVel
Nodes reachable directly through input or output ports.
Definition: CMembraneStructure.h:125
 
virtual ~CMembraneStructure()
The destructor deletes dynamically allocated memory.
 
ISignalPort ** m_apInExternalForces
Interface member variables.
Definition: CMembraneStructure.h:85
 
int m_iNumNodesInputForce
Node counts.
Definition: CMembraneStructure.h:92
 
Class modelling a Net cage.
Definition: CBottomRing.h:35
 
Class containing the specification for a net object.
Definition: CNetStructureSpec.h:22