Author: Jon S. Berndt
Date started: 4/2000
- ------------- Copyright (C) 2000 Jon S. Berndt jsb@hal-pc.org -------------
+ ------------- Copyright (C) 2000 Jon S. Berndt jon@jsbsim.org -------------
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the Free Software
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFCSComponent.h"
-#include <input_output/FGXMLElement.h>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#define ID_FILTER "$Id$"
+#define ID_FILTER "$Id: FGFilter.h,v 1.12 2009/10/24 22:59:30 jberndt Exp $"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FORWARD DECLARATIONS
namespace JSBSim {
+class Element;
+class FGPropertyManager;
+class FGFCS;
+
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
@code
<typename name="name">
<input> property </input>
- <c1> value </c1>
- [<c2> value </c2>]
- [<c3> value </c3>]
- [<c4> value </c4>]
- [<c5> value </c5>]
- [<c6> value </c6>]
+ <c1> value|property </c1>
+ [<c2> value|property </c2>]
+ [<c3> value|property </c3>]
+ [<c4> value|property </c4>]
+ [<c5> value|property </c5>]
+ [<c6> value|property </c6>]
[<clipto>
<min> {[-]property name | value} </min>
<max> {[-]property name | value} </max>
@code
<lag_filter name="name">
<input> property </input>
- <c1> value </c1>
+ <c1> value|property </c1>
[<clipto>
<min> {[-]property name | value} </min>
<max> {[-]property name | value} </max>
@code
<lead_lag_filter name="name">
<input> property </input>
- <c1> value <c/1>
- <c2> value <c/2>
- <c3> value <c/3>
- <c4> value <c/4>
+ <c1> value|property <c/1>
+ <c2> value|property <c/2>
+ <c3> value|property <c/3>
+ <c4> value|property <c/4>
[<clipto>
<min> {[-]property name | value} </min>
<max> {[-]property name | value} </max>
@code
<second_order_filter name="name">
<input> property </input>
- <c1> value </c1>
- <c2> value </c2>
- <c3> value </c3>
- <c4> value </c4>
- <c5> value </c5>
- <c6> value </c6>
+ <c1> value|property </c1>
+ <c2> value|property </c2>
+ <c3> value|property </c3>
+ <c4> value|property </c4>
+ <c5> value|property </c5>
+ <c6> value|property </c6>
[<clipto>
<min> {[-]property name | value} </min>
<max> {[-]property name | value} </max>
@code
<integrator name="name">
<input> property </input>
- <c1> value </c1>
+ <c1> value|property </c1>
[<trigger> property </trigger>]
[<clipto>
<min> {[-]property name | value} </min>
output, such as the elevator, or speedbrake, etc.
@author Jon S. Berndt
-@version $Revision$
+@version $Revision: 1.12 $
*/
/** When true, causes previous values to be set to current values. This
is particularly useful for first pass. */
bool Initialize;
-
+ void ResetPastStates(void) {Input = 0.0; Initialize = true;}
+
enum {eLag, eLeadLag, eOrder2, eWashout, eIntegrator, eUnknown} FilterType;
private:
- double dt;
double ca;
double cb;
double cc;
double cd;
double ce;
- double C1;
- double C2;
- double C3;
- double C4;
- double C5;
- double C6;
+ double C[7]; // There are 6 coefficients, indexing is "1" based.
+ double PropertySign[7];
double PreviousInput1;
double PreviousInput2;
double PreviousOutput1;
double PreviousOutput2;
FGPropertyManager* Trigger;
+ FGPropertyManager* PropertyNode[7];
+ void CalculateDynamicFilters(void);
+ void ReadFilterCoefficients(Element* el, int index);
+ bool DynamicFilter;
void Debug(int from);
};
}