236 virtual void OdeFcn(
const double dT,
const double*
const adX,
double*
const adXDot)
const;
237 virtual void InitialConditionSetup(
const double dT,
const double*
const adCurrentIC,
double*
const adUpdatedIC, ISimObjectCreator*
const creator);
238 virtual void FinalSetup(
const double dT,
const double*
const adX, ISimObjectCreator*
const creator);
239 const double* outExternalNodeForce(
const double dT,
const double*
const adX,
int extNode);
241#ifdef FH_VISUALIZATION
243 virtual void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
245 virtual void RenderUpdate(
const double dT,
const double*
const adX);
247 const virtual double* dragReduction(
const double T,
const double*
const X);
248 const virtual double* projectedArea(
const double T,
const double*
const X);
249 const virtual double* projectedVelocity(
const double T,
const double*
const X);
250 const virtual double* dragForce(
const double T,
const double*
const X);
251 const virtual double* cableForce(
const double T,
const double*
const X);
252 const virtual double* appendixForce(
const double T,
const double*
const X);
255 double m_dragReduction;
256 double m_projectedArea;
257 double m_projectedVelocity;
259 const virtual double* NodePos(
const double dT,
const double*
const adX,
int extNode);
260 const virtual double* NodeVel(
const double dT,
const double*
const adX,
int extNode);
263 virtual void AddExternalForces(
const double dT,
const double*
const adX)
const;
264 virtual void AddCableForces(
const double dT,
const double*
const adX)
const;
265 virtual void AddInputPorts(ISimObjectCreator* creator);
267 virtual void CreateNetCables(std::vector<NetCableElementTestSpec*> VCableElements, ISimObjectCreator* creator);
268 virtual void CreateNetTwines(std::vector<const NetTwineElementSpec*> VCableElements, ISimObjectCreator* creator);
271 virtual void CreateDataStructures();
272 virtual void CreateOutputPorts(ISimObjectCreator* creator);
273 std::vector<std::pair<std::string, int>> CreateExternalNodeMap(std::string tag,
int* piUsed,
NetStructureTestSpec& NetSpec, ISimObjectCreator* creator);
275#ifdef FH_VISUALIZATION
276# pragma warning(disable : 4244)
277 bool m_lineVisualization;
282 static Ogre::ColourValue mapToColor(
double val)
285 return Ogre::ColourValue(0.0, 0.0, 1.0);
286 }
else if (val >= 1.0) {
287 return Ogre::ColourValue(1.0, 0.0, 0.0);
288 }
else if (val >= 0.75) {
289 return Ogre::ColourValue(1.0, 4.0 - val / 0.25, 0.0);
290 }
else if (val >= 0.5) {
291 return Ogre::ColourValue(val / 0.25 - 2.0, 1.0, 0.0);
292 }
else if (val >= 0.25) {
293 return Ogre::ColourValue(0.0, 1.0, 2.0 - val / 0.25);
295 return Ogre::ColourValue(0.0, val / 0.25, 1.0);
301 double m_symplecticStepsize;
307 ISignalPort* m_colorLimits;
311 double* m_NodeExternalForces;
315 int m_numNodesOutputPosAndVel;
325 mutable double m_currentVel[3];
326 const double* currentVelocity(
const double dT,
const double*
const adX);
327 const double* currentVelocity(
const double dT,
const double*
const adX)
const;
333 std::vector<NetTwineElement*> m_VpTwineElements;
337 int** m_aaiCableConn;
338 bool m_foldingPointRefinementUsed;
345 std::vector<std::pair<std::string, int>> m_VsNodesInputForce;
346 bool m_useTagForExternalNodes;
350 unsigned int m_numTwinesCalc;
354 sfh::linalg::sse_vec3f* omp_posa;
355 sfh::linalg::sse_vec3f* omp_posb;
356 sfh::linalg::sse_vec3f* omp_vela;
357 sfh::linalg::sse_vec3f* omp_velb;
358 sfh::linalg::sse_vec3f* omp_velf;
360 sfh::linalg::sse_vec3f* omp_forceA;
361 sfh::linalg::sse_vec3f* omp_forceB;
362 double m_dragForce[3];
363 double m_cableForce[3];
364 double m_appendixForce[3];
std::vector< std::pair< std::string, int > > m_VsNodesOutputPosAndVel
Nodes reachable directly through input or output ports.
Definition NetStructureTest.h:344