]> git.mxchange.org Git - flightgear.git/commitdiff
Initial revision.
authorcurt <curt>
Fri, 30 Mar 2001 03:08:44 +0000 (03:08 +0000)
committercurt <curt>
Fri, 30 Mar 2001 03:08:44 +0000 (03:08 +0000)
src/FDM/JSBSim/FGTable.cpp [new file with mode: 0644]
src/FDM/JSBSim/FGTable.h [new file with mode: 0644]
src/FDM/JSBSim/FGTurboProp.cpp [new file with mode: 0644]
src/FDM/JSBSim/FGTurboProp.h [new file with mode: 0644]

diff --git a/src/FDM/JSBSim/FGTable.cpp b/src/FDM/JSBSim/FGTable.cpp
new file mode 100644 (file)
index 0000000..54ddab0
--- /dev/null
@@ -0,0 +1,206 @@
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ Module:       FGTable.cpp
+ Author:       Jon S. Berndt
+ Date started: 1/9/2001
+ Purpose:      Models a lookup table
+
+ ------------- Copyright (C) 2001  Jon S. Berndt (jsb@hal-pc.org) -------------
+
+ This program is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 2 of the License, or (at your option) any later
+ version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ details.
+
+ You should have received a copy of the GNU General Public License along with
+ this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ Place - Suite 330, Boston, MA  02111-1307, USA.
+
+ Further information about the GNU General Public License can also be found on
+ the world wide web at http://www.gnu.org.
+
+FUNCTIONAL DESCRIPTION
+--------------------------------------------------------------------------------
+Models a lookup table
+
+HISTORY
+--------------------------------------------------------------------------------
+JSB  1/9/00          Created
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+INCLUDES
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+#include "FGTable.h"
+#include <iomanip>
+
+static const char *IdSrc = "$Id$";
+static const char *IdHdr = ID_TABLE;
+
+extern short debug_lvl;
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+CLASS IMPLEMENTATION
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+using namespace std;
+
+FGTable::FGTable(int NRows, int NCols) : nRows(NRows), nCols(NCols)
+{
+  Type = tt2D;
+  colCounter = 1;
+  rowCounter = 0;
+
+  Data = Allocate();
+
+  if (debug_lvl & 2) cout << "Instantiated: FGTable" << endl;
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FGTable::FGTable(int NRows) : nRows(NRows), nCols(1)
+{
+  Type = tt1D;
+  colCounter = 0;
+  rowCounter = 1;
+
+  Data = Allocate();
+  if (debug_lvl & 2) cout << "Instantiated: FGTable" << endl;
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+float** FGTable::Allocate(void)
+{
+  Data = new float*[nRows+1];
+  for (int r=0; r<=nRows; r++) {
+    Data[r] = new float[nCols+1];
+    for (int c=0; c<=nCols; c++) {
+      Data[r][c] = 0.0;
+    }
+  }
+  return Data;
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FGTable::~FGTable()
+{
+  for (int r=0; r<=nRows; r++) if (Data[r]) delete Data[r];
+  if (Data) delete Data;
+  if (debug_lvl & 2) cout << "Destroyed:    FGTable" << endl;
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+float FGTable::GetValue(float key)
+{
+  float Factor, Value, Span;
+  int r;
+
+  for (r=1; r<=nRows; r++) if (Data[r][0] >= key) break;
+  r = r < 2 ? 2 : (r > nRows ? nRows : r);
+
+  // make sure denominator below does not go to zero.
+
+  Span = Data[r][0] - Data[r-1][0];
+  if (Span != 0.0) {
+    Factor = (key - Data[r-1][0]) / Span;
+    if (Factor > 1.0) Factor = 1.0;
+  } else {
+    Factor = 1.0;
+  }
+
+  Value = Factor*(Data[r][1] - Data[r-1][1]) + Data[r-1][1];
+
+  return Value;
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+float FGTable::GetValue(float rowKey, float colKey)
+{
+  float rFactor, cFactor, col1temp, col2temp, Value;
+  int r, c;
+
+  for (r=1;r<=nRows;r++) if (Data[r][0] >= rowKey) break;
+  for (c=1;c<=nCols;c++) if (Data[0][c] >= colKey) break;
+
+  c = c < 2 ? 2 : (c > nCols ? nCols : c);
+  r = r < 2 ? 2 : (r > nRows ? nRows : r);
+
+  rFactor = (rowKey - Data[r-1][0]) / (Data[r][0] - Data[r-1][0]);
+  cFactor = (colKey - Data[0][c-1]) / (Data[0][c] - Data[0][c-1]);
+
+  if (rFactor > 1.0) rFactor = 1.0;
+  else if (rFactor < 0.0) rFactor = 0.0;
+
+  if (cFactor > 1.0) cFactor = 1.0;
+  else if (cFactor < 0.0) cFactor = 0.0;
+
+  col1temp = rFactor*(Data[r][c-1] - Data[r-1][c-1]) + Data[r-1][c-1];
+  col2temp = rFactor*(Data[r][c] - Data[r-1][c]) + Data[r-1][c];
+
+  Value = col1temp + cFactor*(col2temp - col1temp);
+
+  return Value;
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+void FGTable::operator<<(FGConfigFile& infile)
+{
+  int startRow;
+
+  if (Type == tt1D) startRow = 1;
+  else startRow = 0;
+
+  for (int r=startRow; r<=nRows; r++) {
+    for (int c=0; c<=nCols; c++) {
+      if (r != 0 || c != 0) {
+        infile >> Data[r][c];
+      }
+    }
+  }
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+void FGTable::Print(void)
+{
+  int startRow;
+
+  if (Type == tt1D) startRow = 1;
+  else startRow = 0;
+
+  cout.setf(ios::fixed); // set up output stream
+  cout.precision(4);
+
+  for (int r=startRow; r<=nRows; r++) {
+    cout << "  ";
+    for (int c=0; c<=nCols; c++) {
+      if (r == 0 && c == 0) {
+      cout << "        ";
+      } else {
+      cout << Data[r][c] << "  ";
+      }
+    }
+    cout << endl;
+  }
+  cout.setf(0, ios::floatfield); // reset
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+void FGTable::Debug(void)
+{
+    //TODO: Add your source code here
+}
+
+
diff --git a/src/FDM/JSBSim/FGTable.h b/src/FDM/JSBSim/FGTable.h
new file mode 100644 (file)
index 0000000..da4f33b
--- /dev/null
@@ -0,0 +1,110 @@
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ Header:       FGTable.h
+ Author:       Jon S. Berndt
+ Date started: 1/9/2001
+
+ ------------- Copyright (C) 2001  Jon S. Berndt (jsb@hal-pc.org) --------------
+
+ This program is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 2 of the License, or (at your option) any later
+ version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ details.
+
+ You should have received a copy of the GNU General Public License along with
+ this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ Place - Suite 330, Boston, MA  02111-1307, USA.
+
+ Further information about the GNU General Public License can also be found on
+ the world wide web at http://www.gnu.org.
+
+HISTORY
+--------------------------------------------------------------------------------
+JSB  1/9/00          Created
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+SENTRY
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+#ifndef FGTABLE_H
+#define FGTABLE_H
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+INCLUDES
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+#include "FGConfigFile.h"
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+DEFINITIONS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+#define ID_TABLE "$Id$"
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+FORWARD DECLARATIONS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+COMMENTS, REFERENCES, and NOTES [use "class documentation" below for API docs]
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+CLASS DOCUMENTATION
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+/** Lookup table class.
+    Models a lookup table for use in FGCoefficient, FGPropeller, etc.
+    @author Jon S. Berndt
+    @version $Id$
+    @see FGCoefficient
+    @see FGPropeller
+*/
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+CLASS DECLARATION
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+
+class FGTable {
+
+public:
+  ~FGTable();
+  FGTable(int nRows);
+  FGTable(int nRows, int nCols);
+  float GetValue(float key);
+  float GetValue(float rowKey, float colKey);
+  /** Read the table in.
+      Data in the config file should be in matrix format with the row
+      independents as the first column and the column independents in
+      the first row.  The implication of this layout is that there should
+      be no value in the upper left corner of the matrix e.g:
+      <pre>
+           0  10  20 30 ...
+      -5   1  2   3  4  ...
+       ...
+       </pre>
+       */
+  void operator<<(FGConfigFile&);
+  inline float GetElement(int r, int c) {return Data[r][c];}
+  void Print(void);
+  
+private:
+  enum type {tt1D, tt2D} Type;
+  unsigned int rowCounter;
+  unsigned int colCounter;
+  float** Data;
+  int nRows, nCols;
+  float** Allocate(void);
+  void Debug(void);
+};
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+#endif
+
diff --git a/src/FDM/JSBSim/FGTurboProp.cpp b/src/FDM/JSBSim/FGTurboProp.cpp
new file mode 100644 (file)
index 0000000..fa0e8f2
--- /dev/null
@@ -0,0 +1,78 @@
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ Module:       FGTurboProp.cpp
+ Author:       Jon S. Berndt
+ Date started: 11/20/2000
+ Purpose:      This module models a Turboprop engine
+
+ ------------- Copyright (C) 2000  Jon S. Berndt (jsb@hal-pc.org) --------------
+
+ This program is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 2 of the License, or (at your option) any later
+ version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ details.
+
+ You should have received a copy of the GNU General Public License along with
+ this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ Place - Suite 330, Boston, MA  02111-1307, USA.
+
+ Further information about the GNU General Public License can also be found on
+ the world wide web at http://www.gnu.org.
+
+FUNCTIONAL DESCRIPTION
+--------------------------------------------------------------------------------
+
+This class descends from the FGEngine class and models a Turboprop engine based
+on parameters given in the engine config file for this class
+
+HISTORY
+--------------------------------------------------------------------------------
+11/20/2000  JSB  Created
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+INCLUDES
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+#include "FGTurboProp.h"
+
+static const char *IdSrc = "$Id$";
+static const char *IdHdr = ID_TURBOPROP;
+
+extern short debug_lvl;
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+CLASS IMPLEMENTATION
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+FGTurboProp::FGTurboProp(FGFDMExec* exec, FGConfigFile* cfg) : FGEngine(exec)
+{
+  if (debug_lvl & 2) cout << "Instantiated: FGTurboProp" << endl;
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FGTurboProp::~FGTurboProp()
+{
+  if (debug_lvl & 2) cout << "Destroyed:    FGTurboProp" << endl;
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+float FGTurboProp::Calculate(float dummy)
+{
+  ConsumeFuel();
+  return 0.0;
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+void FGTurboProp::Debug(void)
+{
+    //TODO: Add your source code here
+}
+
diff --git a/src/FDM/JSBSim/FGTurboProp.h b/src/FDM/JSBSim/FGTurboProp.h
new file mode 100644 (file)
index 0000000..cbec9c7
--- /dev/null
@@ -0,0 +1,67 @@
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ Header:       FGTurboProp.h
+ Author:       Jon S. Berndt
+ Date started: 09/12/2000
+
+ ------------- Copyright (C) 2000  Jon S. Berndt (jsb@hal-pc.org) --------------
+
+ This program is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 2 of the License, or (at your option) any later
+ version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ details.
+
+ You should have received a copy of the GNU General Public License along with
+ this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ Place - Suite 330, Boston, MA  02111-1307, USA.
+
+ Further information about the GNU General Public License can also be found on
+ the world wide web at http://www.gnu.org.
+
+HISTORY
+--------------------------------------------------------------------------------
+09/12/2000  JSB  Created
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+COMMENTS, REFERENCES,  and NOTES
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+SENTRY
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+#ifndef FGTURBOPROP_H
+#define FGTURBOPROP_H
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+INCLUDES
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+#include "FGEngine.h"
+#include "FGConfigFile.h"
+
+#define ID_TURBOPROP "$Id$"
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+CLASS DECLARATION
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+class FGTurboProp : public FGEngine
+{
+public:
+  FGTurboProp(FGFDMExec* exec, FGConfigFile* Eng_cfg);
+  ~FGTurboProp();
+
+  float Calculate(float);
+private:
+  void Debug(void);
+};
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+#endif
+