227 virtual void OdeFcn(
const double dT,
const double*
const adX,
double*
const adXDot)
const;
228 virtual void InitialConditionSetup(
const double dT,
const double*
const adCurrentIC,
double*
const adUpdatedIC, ISimObjectCreator*
const creator);
229 virtual void FinalSetup(
const double dT,
const double*
const adX, ISimObjectCreator*
const creator);
230 const double* outExternalNodeForce(
const double dT,
const double*
const adX,
int extNode);
232#ifdef FH_VISUALIZATION
234 virtual void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
236 virtual void RenderUpdate(
const double dT,
const double*
const adX);
238 const virtual double* dragReduction(
const double T,
const double*
const X);
239 const virtual double* projectedArea(
const double T,
const double*
const X);
240 const virtual double* projectedVelocity(
const double T,
const double*
const X);
241 const virtual double* dragForce(
const double T,
const double*
const X);
242 const virtual double* cableForce(
const double T,
const double*
const X);
243 const virtual double* appendixForce(
const double T,
const double*
const X);
246 double m_dragReduction;
247 double m_projectedArea;
248 double m_projectedVelocity;
250 const virtual double* NodePos(
const double dT,
const double*
const adX,
int extNode);
251 const virtual double* NodeVel(
const double dT,
const double*
const adX,
int extNode);
254 virtual void AddExternalForces(
const double dT,
const double*
const adX)
const;
255 virtual void AddCableForces(
const double dT,
const double*
const adX)
const;
256 virtual void AddInputPorts(ISimObjectCreator* creator);
258 virtual void CreateNetCables(std::vector<NetCableElementTestSpec*> VCableElements, ISimObjectCreator* creator);
259 virtual void CreateNetTwines(std::vector<const NetTwineElementSpec*> VCableElements, ISimObjectCreator* creator);
262 virtual void CreateDataStructures();
263 virtual void CreateOutputPorts(ISimObjectCreator* creator);
264 std::vector<std::pair<std::string, int>> CreateExternalNodeMap(std::string tag,
int* piUsed,
NetStructureTestSpec& NetSpec, ISimObjectCreator* creator);
266#ifdef FH_VISUALIZATION
267# pragma warning(disable : 4244)
268 bool m_lineVisualization;
273 static Ogre::ColourValue mapToColor(
double val)
276 return Ogre::ColourValue(0.0, 0.0, 1.0);
277 }
else if (val >= 1.0) {
278 return Ogre::ColourValue(1.0, 0.0, 0.0);
279 }
else if (val >= 0.75) {
280 return Ogre::ColourValue(1.0, 4.0 - val / 0.25, 0.0);
281 }
else if (val >= 0.5) {
282 return Ogre::ColourValue(val / 0.25 - 2.0, 1.0, 0.0);
283 }
else if (val >= 0.25) {
284 return Ogre::ColourValue(0.0, 1.0, 2.0 - val / 0.25);
286 return Ogre::ColourValue(0.0, val / 0.25, 1.0);
292 double m_symplecticStepsize;
298 ISignalPort* m_colorLimits;
302 double* m_NodeExternalForces;
306 int m_numNodesOutputPosAndVel;
316 mutable double m_currentVel[3];
317 const double* currentVelocity(
const double dT,
const double*
const adX);
318 const double* currentVelocity(
const double dT,
const double*
const adX)
const;
324 std::vector<NetTwineElement*> m_VpTwineElements;
328 int** m_aaiCableConn;
329 bool m_foldingPointRefinementUsed;
336 std::vector<std::pair<std::string, int>> m_VsNodesInputForce;
337 bool m_useTagForExternalNodes;
341 unsigned int m_numTwinesCalc;
345 sfh::linalg::sse_vec3f* omp_posa;
346 sfh::linalg::sse_vec3f* omp_posb;
347 sfh::linalg::sse_vec3f* omp_vela;
348 sfh::linalg::sse_vec3f* omp_velb;
349 sfh::linalg::sse_vec3f* omp_velf;
351 sfh::linalg::sse_vec3f* omp_forceA;
352 sfh::linalg::sse_vec3f* omp_forceB;
353 double m_dragForce[3];
354 double m_cableForce[3];
355 double m_appendixForce[3];
std::vector< std::pair< std::string, int > > m_VsNodesOutputPosAndVel
Nodes reachable directly through input or output ports.
Definition NetStructureTest.h:335