40#include "FGDeadBand.h"
41#include "models/FGFCS.h"
42#include "math/FGParameterValue.h"
43#include "input_output/FGLog.h"
55FGDeadBand::FGDeadBand(FGFCS* fcs, Element* element)
56 : FGFCSComponent(fcs, element)
61 CheckInputNodes(1, 1, element);
63 auto PropertyManager = fcs->GetPropertyManager();
64 Element* width_element = element->FindElement(
"width");
66 Width =
new FGParameterValue(width_element, PropertyManager);
68 Width =
new FGRealValue(0.0);
70 if (element->FindElement(
"gain"))
71 gain = element->FindElementValueAsNumber(
"gain");
73 bind(element, PropertyManager.get());
79FGDeadBand::~FGDeadBand()
86bool FGDeadBand::Run(
void)
88 Input = InputNodes[0]->getDoubleValue();
90 double HalfWidth = 0.5*Width;
92 if (Input < -HalfWidth) {
93 Output = (Input + HalfWidth)*gain;
94 }
else if (Input > HalfWidth) {
95 Output = (Input - HalfWidth)*gain;
125void FGDeadBand::Debug(
int from)
127 if (debug_lvl <= 0)
return;
131 FGLogging log(LogLevel::DEBUG);
132 log <<
" INPUT: " << InputNodes[0]->GetName() <<
"\n";
133 log <<
" DEADBAND WIDTH: " << Width->GetName() <<
"\n";
134 log <<
" GAIN: " << fixed << setprecision(4) << gain <<
"\n";
136 for (
auto node: OutputNodes)
137 log <<
" OUTPUT: " << node->getNameString() <<
"\n";
140 if (debug_lvl & 2 ) {
141 FGLogging log(LogLevel::DEBUG);
142 if (from == 0) log <<
"Instantiated: FGDeadBand\n";
143 if (from == 1) log <<
"Destroyed: FGDeadBand\n";
145 if (debug_lvl & 4 ) {
147 if (debug_lvl & 8 ) {
149 if (debug_lvl & 16) {
151 if (debug_lvl & 64) {
Main namespace for the JSBSim Flight Dynamics Model.