LCOV - code coverage report
Current view: top level - models/propulsion - FGElectric.cpp (source / functions) Hit Total Coverage
Test: JSBSim-Coverage-Statistics Lines: 1 50 2.0 %
Date: 2010-08-24 Functions: 3 13 23.1 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 3 30 10.0 %

           Branch data     Line data    Source code
       1                 :            : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       2                 :            : 
       3                 :            :  Module:       FGElectric.cpp
       4                 :            :  Author:       David Culp
       5                 :            :  Date started: 04/07/2004
       6                 :            :  Purpose:      This module models an electric motor
       7                 :            : 
       8                 :            :  --------- Copyright (C) 2004  David Culp (davidculp2@comcast.net) -------------
       9                 :            : 
      10                 :            :  This program is free software; you can redistribute it and/or modify it under
      11                 :            :  the terms of the GNU Lesser General Public License as published by the Free Software
      12                 :            :  Foundation; either version 2 of the License, or (at your option) any later
      13                 :            :  version.
      14                 :            : 
      15                 :            :  This program is distributed in the hope that it will be useful, but WITHOUT
      16                 :            :  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
      17                 :            :  FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
      18                 :            :  details.
      19                 :            : 
      20                 :            :  You should have received a copy of the GNU Lesser General Public License along with
      21                 :            :  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
      22                 :            :  Place - Suite 330, Boston, MA  02111-1307, USA.
      23                 :            : 
      24                 :            :  Further information about the GNU Lesser General Public License can also be found on
      25                 :            :  the world wide web at http://www.gnu.org.
      26                 :            : 
      27                 :            : FUNCTIONAL DESCRIPTION
      28                 :            : --------------------------------------------------------------------------------
      29                 :            : 
      30                 :            : This class descends from the FGEngine class and models an electric motor based on
      31                 :            : parameters given in the engine config file for this class
      32                 :            : 
      33                 :            : HISTORY
      34                 :            : --------------------------------------------------------------------------------
      35                 :            : 04/07/2004  DPC  Created
      36                 :            : 01/06/2005  DPC  Converted to new XML format
      37                 :            : 
      38                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      39                 :            : INCLUDES
      40                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
      41                 :            : 
      42                 :            : #include "FGElectric.h"
      43                 :            : #include "models/FGPropulsion.h"
      44                 :            : #include "models/propulsion/FGThruster.h"
      45                 :            : 
      46                 :            : #include <iostream>
      47                 :            : #include <sstream>
      48                 :            : 
      49                 :            : using namespace std;
      50                 :            : 
      51                 :            : namespace JSBSim {
      52                 :            : 
      53                 :            : static const char *IdSrc = "$Id: FGElectric.cpp,v 1.9 2010/08/21 17:13:48 jberndt Exp $";
      54                 :            : static const char *IdHdr = ID_ELECTRIC;
      55                 :            : 
      56                 :            : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      57                 :            : CLASS IMPLEMENTATION
      58                 :            : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
      59                 :            : 
      60                 :          0 : FGElectric::FGElectric(FGFDMExec* exec, Element *el, int engine_number)
      61                 :          0 :   : FGEngine(exec, el, engine_number)
      62                 :            : {
      63                 :          0 :   string token;
      64                 :            : 
      65                 :          0 :   Type = etElectric;
      66                 :          0 :   PowerWatts = 745.7;
      67                 :          0 :   hptowatts = 745.7;
      68                 :            : 
      69                 :          0 :   dt = FDMExec->GetDeltaT();
      70                 :            : 
      71 [ #  # ][ #  # ]:          0 :   if (el->FindElement("power"))
      72                 :          0 :     PowerWatts = el->FindElementValueAsNumberConvertTo("power","WATTS");
      73                 :            : 
      74                 :          0 :   Debug(0); // Call Debug() routine from constructor if needed
      75                 :          0 : }
      76                 :            : 
      77                 :            : //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      78                 :            : 
      79                 :          0 : FGElectric::~FGElectric()
      80                 :            : {
      81                 :          0 :   Debug(1); // Call Debug() routine from constructor if needed
      82 [ #  # ][ #  # ]:          0 : }
                 [ #  # ]
      83                 :            : 
      84                 :            : //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      85                 :            : 
      86                 :          0 : void FGElectric::Calculate(void)
      87                 :            : {
      88                 :          0 :   RunPreFunctions();
      89                 :            : 
      90                 :          0 :   Throttle = FCS->GetThrottlePos(EngineNumber);
      91                 :            : 
      92                 :          0 :   RPM = Thruster->GetRPM() * Thruster->GetGearRatio();
      93                 :            : 
      94                 :          0 :   HP = PowerWatts * Throttle / hptowatts;
      95                 :            : 
      96                 :          0 :   PowerAvailable = (HP * hptoftlbssec) - Thruster->GetPowerRequired();
      97                 :            : 
      98                 :          0 :   Thruster->Calculate(PowerAvailable);
      99                 :            : 
     100                 :          0 :   RunPostFunctions();
     101                 :          0 : }
     102                 :            : 
     103                 :            : //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     104                 :            : 
     105                 :          0 : string FGElectric::GetEngineLabels(const string& delimiter)
     106                 :            : {
     107                 :          0 :   std::ostringstream buf;
     108                 :            : 
     109                 :            :   buf << Name << " HP (engine " << EngineNumber << ")" << delimiter
     110                 :          0 :       << Thruster->GetThrusterLabels(EngineNumber, delimiter);
     111                 :            : 
     112                 :          0 :   return buf.str();
     113                 :            : }
     114                 :            : 
     115                 :            : //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     116                 :            : 
     117                 :          0 : string FGElectric::GetEngineValues(const string& delimiter)
     118                 :            : {
     119                 :          0 :   std::ostringstream buf;
     120                 :            : 
     121                 :            :   buf << HP << delimiter
     122                 :          0 :      << Thruster->GetThrusterValues(EngineNumber, delimiter);
     123                 :            : 
     124                 :          0 :   return buf.str();
     125                 :            : }
     126                 :            : 
     127                 :            : //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     128                 :            : //
     129                 :            : //    The bitmasked value choices are as follows:
     130                 :            : //    unset: In this case (the default) JSBSim would only print
     131                 :            : //       out the normally expected messages, essentially echoing
     132                 :            : //       the config files as they are read. If the environment
     133                 :            : //       variable is not set, debug_lvl is set to 1 internally
     134                 :            : //    0: This requests JSBSim not to output any messages
     135                 :            : //       whatsoever.
     136                 :            : //    1: This value explicity requests the normal JSBSim
     137                 :            : //       startup messages
     138                 :            : //    2: This value asks for a message to be printed out when
     139                 :            : //       a class is instantiated
     140                 :            : //    4: When this value is set, a message is displayed when a
     141                 :            : //       FGModel object executes its Run() method
     142                 :            : //    8: When this value is set, various runtime state variables
     143                 :            : //       are printed out periodically
     144                 :            : //    16: When set various parameters are sanity checked and
     145                 :            : //       a message is printed out when they go out of bounds
     146                 :            : 
     147                 :          0 : void FGElectric::Debug(int from)
     148                 :            : {
     149         [ #  # ]:          0 :   if (debug_lvl <= 0) return;
     150                 :            : 
     151         [ #  # ]:          0 :   if (debug_lvl & 1) { // Standard console startup message output
     152         [ #  # ]:          0 :     if (from == 0) { // Constructor
     153                 :            : 
     154                 :          0 :       cout << "\n    Engine Name: "         << Name << endl;
     155                 :          0 :       cout << "      Power Watts: "         << PowerWatts << endl;
     156                 :            : 
     157                 :            :     }
     158                 :            :   }
     159         [ #  # ]:          0 :   if (debug_lvl & 2 ) { // Instantiation/Destruction notification
     160         [ #  # ]:          0 :     if (from == 0) cout << "Instantiated: FGElectric" << endl;
     161         [ #  # ]:          0 :     if (from == 1) cout << "Destroyed:    FGElectric" << endl;
     162                 :            :   }
     163                 :          0 :   if (debug_lvl & 4 ) { // Run() method entry print for FGModel-derived objects
     164                 :            :   }
     165                 :          0 :   if (debug_lvl & 8 ) { // Runtime state variables
     166                 :            :   }
     167                 :          0 :   if (debug_lvl & 16) { // Sanity checking
     168                 :            :   }
     169         [ #  # ]:          0 :   if (debug_lvl & 64) {
     170         [ #  # ]:          0 :     if (from == 0) { // Constructor
     171                 :          0 :       cout << IdSrc << endl;
     172                 :          0 :       cout << IdHdr << endl;
     173                 :            :     }
     174                 :            :   }
     175                 :            : }
     176                 :            : 
     177                 :            : double
     178                 :          0 : FGElectric::CalcFuelNeed(void)
     179                 :            : {
     180                 :          0 :   return 0;
     181                 :            : }
     182                 :            : 
     183 [ +  + ][ +  - ]:         12 : } // namespace JSBSim

Generated by: LCOV version 1.9