From: Jon S. B. <jb...@us...> - 2007-09-19 01:33:50
|
Update of /cvsroot/jsbsim/JSBSim/src/models/flight_control In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv677/src/models/flight_control Modified Files: FGDeadBand.cpp FGFCSComponent.cpp FGFCSFunction.cpp FGFilter.cpp FGSensor.cpp FGSummer.cpp Log Message: Fixed some issues involving properties (with signs) in filter coefficient definitions, as well as to make clipping and clip specification echoing at load time correct and homogenous across components Index: FGDeadBand.cpp =================================================================== RCS file: /cvsroot/jsbsim/JSBSim/src/models/flight_control/FGDeadBand.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** FGDeadBand.cpp 30 Aug 2006 12:04:35 -0000 1.3 --- FGDeadBand.cpp 19 Sep 2007 01:33:46 -0000 1.4 *************** *** 124,129 **** cout << " DEADBAND WIDTH: " << width << endl; cout << " GAIN: " << gain << endl; - if (clip) cout << " CLIPTO: " << clipmin - << ", " << clipmax << endl; if (IsOutput) cout << " OUTPUT: " << OutputNode->getName() << endl; } --- 124,127 ---- Index: FGFCSComponent.cpp =================================================================== RCS file: /cvsroot/jsbsim/JSBSim/src/models/flight_control/FGFCSComponent.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -r1.13 -r1.14 *** FGFCSComponent.cpp 3 Mar 2007 03:39:59 -0000 1.13 --- FGFCSComponent.cpp 19 Sep 2007 01:33:46 -0000 1.14 *************** *** 134,137 **** --- 134,138 ---- if (clip_string.find_first_not_of("+-.0123456789") != string::npos) { // it's a property if (clip_string[0] == '-') clipMinSign = -1.0; + clip_string.erase(0,1); ClipMinPropertyNode = PropertyManager->GetNode( clip_string ); } else { *************** *** 141,144 **** --- 142,146 ---- if (clip_string.find_first_not_of("+-.0123456789") != string::npos) { // it's a property if (clip_string[0] == '-') clipMaxSign = -1.0; + clip_string.erase(0,1); ClipMaxPropertyNode = PropertyManager->GetNode( clip_string ); } else { *************** *** 224,227 **** --- 226,231 ---- void FGFCSComponent::Debug(int from) { + string propsign=""; + if (debug_lvl <= 0) return; *************** *** 230,233 **** --- 234,254 ---- cout << endl << " Loading Component \"" << Name << "\" of type: " << Type << endl; + + if (clip) { + if (ClipMinPropertyNode != 0L) { + if (clipMinSign < 0.0) propsign="-"; + cout << " Minimum limit: " << propsign << ClipMinPropertyNode->GetName() << endl; + propsign=""; + } else { + cout << " Minimum limit: " << clipmin << endl; + } + if (ClipMaxPropertyNode != 0L) { + if (clipMaxSign < 0.0) propsign="-"; + cout << " Maximum limit: " << propsign << ClipMaxPropertyNode->GetName() << endl; + propsign=""; + } else { + cout << " Maximum limit: " << clipmax << endl; + } + } } } Index: FGFCSFunction.cpp =================================================================== RCS file: /cvsroot/jsbsim/JSBSim/src/models/flight_control/FGFCSFunction.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -r1.4 -r1.5 *** FGFCSFunction.cpp 10 Feb 2007 23:25:59 -0000 1.4 --- FGFCSFunction.cpp 19 Sep 2007 01:33:46 -0000 1.5 *************** *** 119,124 **** cout << " INPUT: " << InputNodes[0]->getName() << endl; // cout << " Function: " << endl; - if (clip) cout << " CLIPTO: " << clipmin - << ", " << clipmax << endl; if (IsOutput) cout << " OUTPUT: " << OutputNode->getName() << endl; } --- 119,122 ---- Index: FGFilter.cpp =================================================================== RCS file: /cvsroot/jsbsim/JSBSim/src/models/flight_control/FGFilter.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -r1.6 -r1.7 *** FGFilter.cpp 18 Sep 2007 03:19:04 -0000 1.6 --- FGFilter.cpp 19 Sep 2007 01:33:46 -0000 1.7 *************** *** 124,128 **** switch (FilterType) { case eLag: ! if (PropertyNode[1] != 0L) C[1] = PropertyNode[1]->getDoubleValue(); denom = 2.00 + dt*C[1]; ca = dt*C[1] / denom; --- 124,128 ---- switch (FilterType) { case eLag: ! if (PropertyNode[1] != 0L) C[1] = PropertyNode[1]->getDoubleValue()*PropertySign[1]; denom = 2.00 + dt*C[1]; ca = dt*C[1] / denom; *************** *** 130,137 **** break; case eLeadLag: ! if (PropertyNode[1] != 0L) C[1] = PropertyNode[1]->getDoubleValue(); ! if (PropertyNode[2] != 0L) C[2] = PropertyNode[2]->getDoubleValue(); ! if (PropertyNode[3] != 0L) C[3] = PropertyNode[3]->getDoubleValue(); ! if (PropertyNode[4] != 0L) C[4] = PropertyNode[4]->getDoubleValue(); denom = 2.00*C[3] + dt*C[4]; ca = (2.00*C[1] + dt*C[2]) / denom; --- 130,137 ---- break; case eLeadLag: ! if (PropertyNode[1] != 0L) C[1] = PropertyNode[1]->getDoubleValue()*PropertySign[1]; ! if (PropertyNode[2] != 0L) C[2] = PropertyNode[2]->getDoubleValue()*PropertySign[2]; ! if (PropertyNode[3] != 0L) C[3] = PropertyNode[3]->getDoubleValue()*PropertySign[3]; ! if (PropertyNode[4] != 0L) C[4] = PropertyNode[4]->getDoubleValue()*PropertySign[4]; denom = 2.00*C[3] + dt*C[4]; ca = (2.00*C[1] + dt*C[2]) / denom; *************** *** 140,149 **** break; case eOrder2: ! if (PropertyNode[1] != 0L) C[1] = PropertyNode[1]->getDoubleValue(); ! if (PropertyNode[2] != 0L) C[2] = PropertyNode[2]->getDoubleValue(); ! if (PropertyNode[3] != 0L) C[3] = PropertyNode[3]->getDoubleValue(); ! if (PropertyNode[4] != 0L) C[4] = PropertyNode[4]->getDoubleValue(); ! if (PropertyNode[5] != 0L) C[5] = PropertyNode[5]->getDoubleValue(); ! if (PropertyNode[6] != 0L) C[6] = PropertyNode[6]->getDoubleValue(); denom = 4.0*C[4] + 2.0*C[5]*dt + C[6]*dt*dt; ca = (4.0*C[1] + 2.0*C[2]*dt + C[3]*dt*dt) / denom; --- 140,149 ---- break; case eOrder2: ! if (PropertyNode[1] != 0L) C[1] = PropertyNode[1]->getDoubleValue()*PropertySign[1]; ! if (PropertyNode[2] != 0L) C[2] = PropertyNode[2]->getDoubleValue()*PropertySign[2]; ! if (PropertyNode[3] != 0L) C[3] = PropertyNode[3]->getDoubleValue()*PropertySign[3]; ! if (PropertyNode[4] != 0L) C[4] = PropertyNode[4]->getDoubleValue()*PropertySign[4]; ! if (PropertyNode[5] != 0L) C[5] = PropertyNode[5]->getDoubleValue()*PropertySign[5]; ! if (PropertyNode[6] != 0L) C[6] = PropertyNode[6]->getDoubleValue()*PropertySign[6]; denom = 4.0*C[4] + 2.0*C[5]*dt + C[6]*dt*dt; ca = (4.0*C[1] + 2.0*C[2]*dt + C[3]*dt*dt) / denom; *************** *** 154,158 **** break; case eWashout: ! if (PropertyNode[1] != 0L) C[1] = PropertyNode[1]->getDoubleValue(); denom = 2.00 + dt*C[1]; ca = 2.00 / denom; --- 154,158 ---- break; case eWashout: ! if (PropertyNode[1] != 0L) C[1] = PropertyNode[1]->getDoubleValue()*PropertySign[1]; denom = 2.00 + dt*C[1]; ca = 2.00 / denom; *************** *** 160,164 **** break; case eIntegrator: ! if (PropertyNode[1] != 0L) C[1] = PropertyNode[1]->getDoubleValue(); ca = dt*C[1] / 2.00; break; --- 160,164 ---- break; case eIntegrator: ! if (PropertyNode[1] != 0L) C[1] = PropertyNode[1]->getDoubleValue()*PropertySign[1]; ca = dt*C[1] / 2.00; break; Index: FGSensor.cpp =================================================================== RCS file: /cvsroot/jsbsim/JSBSim/src/models/flight_control/FGSensor.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -r1.9 -r1.10 *** FGSensor.cpp 3 Mar 2007 03:39:59 -0000 1.9 --- FGSensor.cpp 19 Sep 2007 01:33:46 -0000 1.10 *************** *** 145,148 **** --- 145,149 ---- // if (delay != 0.0) Delay(); // models system signal transport latencies + Clip(); // Is it right to clip a sensor? return true; } Index: FGSummer.cpp =================================================================== RCS file: /cvsroot/jsbsim/JSBSim/src/models/flight_control/FGSummer.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -r1.3 -r1.4 *** FGSummer.cpp 30 Aug 2006 12:04:35 -0000 1.3 --- FGSummer.cpp 19 Sep 2007 01:33:46 -0000 1.4 *************** *** 120,125 **** } if (Bias != 0.0) cout << " Bias: " << Bias << endl; - if (clip) cout << " CLIPTO: " << clipmin - << ", " << clipmax << endl; if (IsOutput) cout << " OUTPUT: " <<OutputNode->getName() << endl; } --- 120,123 ---- |