94 Samplifier(
const std::string& simObjectName, ISimObjectCreator*
const creator);
97 virtual void OdeFcn(
const double T,
const double*
const X,
double*
const XDot)
const override;
98 virtual void AcceptedStep(
const double T,
const double*
const X)
override;
99 virtual void InitialConditionSetup(
const double T,
const double*
const currentIC,
double*
const updatedIC, ISimObjectCreator*
const creator);
100 virtual void FinalSetup(
const double T,
const double*
const X, ISimObjectCreator*
const creator) { m_IsSettingUp =
false; };
101 const double* Output(
const double T,
const double*
const X,
const int Index);
103#ifdef FH_VISUALIZATION
105 virtual void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator) { }
108 virtual void RenderUpdate(
const double T,
const double*
const X) { }
112 std::unique_ptr<ISignalPort*[]> m_Input_i;
113 void SetOutputPortValues(
const double T,
const double*
const X)
const;
114 ICommonComputation* m_SetOutputPortValues;
117 bool isOutlier(
double probability);
119 double getNoise(
const int PortNo,
const int PortIndex);
122 int m_PortWidth, m_seed, m_DummyIndex;
123 std::unique_ptr<int[]> m_PortSize_i;
125 std::vector<std::unique_ptr<double[]>> m_noiseBias;
126 std::vector<std::unique_ptr<double[]>> m_noiseStdDev;
127 std::vector<std::unique_ptr<double[]>> m_samplingPeriod;
128 std::vector<std::unique_ptr<double[]>> m_signalSampleTime;
129 std::vector<std::unique_ptr<double[]>> m_firstSampleTime;
130 std::vector<std::unique_ptr<double[]>> m_outlierProbability;
131 std::vector<std::unique_ptr<double[]>> m_lossProbability;
132 std::vector<std::unique_ptr<int[]>> m_lostSamples;
133 std::vector<std::unique_ptr<int[]>> m_avgLostSamples;
134 std::vector<std::unique_ptr<double[]>> m_timeDelay;
135 mutable std::vector<std::unique_ptr<double[]>> m_WriteBuffer;
136 mutable std::vector<std::unique_ptr<double[]>> m_ReadBuffer;
138 mutable std::mutex m_SignalResource;
139 std::vector<std::unique_ptr<CircularBuffer<std::pair<double, double>, 1024>[]>> m_measurementBuffer;
141 std::mt19937 m_generator;
142 std::uniform_real_distribution<double> m_uniform;
143 std::vector<std::unique_ptr<std::normal_distribution<double>[]>> m_normals;