SIMLIB/C++ 3.09
Loading...
Searching...
No Matches
examples/ctest.cc
////////////////////////////////////////////////////////////////////////////
// Model ctest2.cc SIMLIB/C++
//
// Filter transfer function:
//
// F(p) = 1 / (p^3 + 3.25p^2 + 16.5p + 17.5)
//
// Step response
//
#include "simlib.h"
#define OUTPUT_FILE "ctest.dat"
const double a1 = 1.0, // filter coefficients
a2 = 3.25,
a3 = 16.5,
a4 = 17.5;
const double InpValue = 1.0; // input: step
const double StepPrn = 0.05; // sampling interval
class Filter : aContiBlock {
Integrator y2, y1, y; // state variables
public:
Filter(Input inp, double a1, double a2, double a3, double a4) :
// continuous blocks interconnection:
y2((inp-a2*y2-a3*y1-a4*y)/a1), // y''= int(y''')
y1(y2), // y'= int(y'')
y(y1) {} // y= int(y')
double Value() { return y.Value(); } // filter output
};
Filter F(InpValue, a1, a2, a3, a4);
void Sample() {
Print("%6.2f %.4g \n", T.Value(), F.Value());
}
Sampler S(Sample, StepPrn); // periodic event
int main() { // experiment
SetOutput(OUTPUT_FILE);
Print("# CTEST -- step response of filter \n");
Print("# Time y\n");
Init(0,7);
SetAccuracy(1e-3); // relative error requested
Run(); // simulation
SIMLIB_statistics.Output(); // print run statistics
}
Sampler S(Sample, 1)
Constant F(1.0)
void Sample()
Definition: _test_.cc:38
int main()
Definition: _test_.cc:44
virtual double Value()=0
get block output value this method should be defined in classes derived from aContiBlock
void SetAccuracy(double _abserr, double _relerr)
set max.
Definition: intg.cc:106
void SetOutput(const char *name)
redirects Output(), Print() to file
Definition: print.cc:50
void Run()
run simulation experiment
Definition: run.cc:228
int Print(const char *fmt,...)
for Output methods, can be redirected
Definition: print.cc:92
void Init(double t0, double t1=SIMLIB_MAXTIME)
Initialize simulator and model time.
Definition: simlib.h:181
const SIMLIB_statistics_t & SIMLIB_statistics
interface to internal run-time statistics structure
Definition: run.cc:78
Main SIMLIB/C++ interface.
void Output() const
print run-time statistics to output
Definition: output1.cc:63