55  CheckInputNodes(1, 1, element);
 
   58  auto PropertyManager = fcs->GetPropertyManager();
 
   62    if (ptrSet && ptrSet->IsConstant()) {
 
   63      set = ptrSet->GetValue() >= 0.5;
 
   71    if (ptrReset && ptrReset->IsConstant()) {
 
   72      reset = ptrReset->GetValue() >= 0.5;
 
   80    if (ptrVersus && ptrVersus->IsConstant()) {
 
   81      versus = ptrVersus->GetValue();
 
   89    if (ptrBias && ptrBias->IsConstant()) {
 
   90      bias = ptrBias->GetValue();
 
   95    module = element->FindElementValueAsNumber("module");
 
   97      cout << 
"FGLinearActuator::Run " << InputNodes[0]->GetNameWithSign()
 
   98           << 
" <module> parameter is forced from " << 
module 
   99           << " value to 1.0 value" << endl;
 
  106    if (hysteresis < 0) {
 
  107      cout << 
"FGLinearActuator::Run " << InputNodes[0]->GetNameWithSign()
 
  108           << 
" <hysteresis> parameter is forced from " << hysteresis
 
  109           << 
" value to 0.0 value" << endl;
 
  117      double denom = 2.00 + dt*lag;
 
  118      ca = dt * lag / denom;
 
  119      cb = (2.00 - dt * lag) / denom;
 
  120      previousLagInput = previousLagOutput = 0.0;
 
  123        cout << 
"FGLinearActuator::Run " << InputNodes[0]->GetNameWithSign()
 
  124             << 
" <lag> parameter is forced from " 
  125             << lag << 
" value to 0.0 value" << endl;
 
  133    if (rate <= 0 || rate > 1.0) {
 
  134      cout << 
"FGLinearActuator::Run " << InputNodes[0]->GetNameWithSign()
 
  135           << 
" <rate> parameter is forced from " << rate
 
  136           << 
" value to 0.5 value" << endl;
 
  144  bind(element, PropertyManager.get());
 
 
  160  if (ptrSet && !ptrSet->IsConstant()) set = ptrSet->GetValue() >= 0.5;
 
  161  if (ptrReset && !ptrReset->IsConstant()) reset = ptrReset->GetValue() >= 0.5;
 
  171      Input = InputNodes[0]->getDoubleValue() - inputLast;
 
  172      double inputDelta = Input - inputMem;
 
  173      if (abs(inputDelta) >= hysteresis) {
 
  174        if (ptrVersus && !ptrVersus->IsConstant()) {
 
  175          versus = ptrVersus->GetValue();
 
  178          } 
else if (versus <= -0.5) {
 
  182        if (abs(inputDelta) <= (module * rate)) {
 
  183          if (inputDelta > 0.0) {
 
  185          } 
else if (inputDelta < 0.0) {
 
  189        if ((versus == 0) || (versus == direction)) {
 
  191          if (abs(inputDelta) >= (module*rate)) {
 
  197        } 
else if ((versus != 0) && (direction != 0) && (versus != direction)) {
 
  198          inputLast += inputDelta;
 
  202    if (ptrBias && !ptrBias->IsConstant()) {
 
  203      bias = ptrBias->GetValue();
 
  205    Output = gain * (bias + inputMem + 
module*countSpin);
 
  209    double input = Output;
 
  210    Output = ca * (input + previousLagInput) + previousLagOutput * cb;
 
  211    previousLagInput = input;
 
  212    previousLagOutput = Output;