LCOV - code coverage report
Current view: top level - src/utils/traction_wire - Element.h (source / functions) Coverage Total Hit
Test: lcov.info Lines: 100.0 % 1 1
Test Date: 2024-11-20 15:55:46 Functions: - 0 0

            Line data    Source code
       1              : /****************************************************************************/
       2              : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
       3              : // Copyright (C) 2001-2024 German Aerospace Center (DLR) and others.
       4              : // This program and the accompanying materials are made available under the
       5              : // terms of the Eclipse Public License 2.0 which is available at
       6              : // https://www.eclipse.org/legal/epl-2.0/
       7              : // This Source Code may also be made available under the following Secondary
       8              : // Licenses when the conditions for such availability set forth in the Eclipse
       9              : // Public License 2.0 are satisfied: GNU General Public License, version 2
      10              : // or later which is available at
      11              : // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
      12              : // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
      13              : /****************************************************************************/
      14              : /// @file    Element.h
      15              : /// @author  Jakub Sevcik (RICE)
      16              : /// @author  Jan Prikryl (RICE)
      17              : /// @date    2019-12-15
      18              : ///
      19              : /// @note    based on work 2017 Ahmad Khaled, Ahmad Essam, Omnia Zakaria, Mary Nader
      20              : ///
      21              : // Representation of electric circuit elements: resistors, voltage and current sources
      22              : /****************************************************************************/
      23              : #pragma once
      24              : #include <config.h>
      25              : 
      26              : #include <string>
      27              : #include <iostream>
      28              : 
      29              : 
      30              : // ===========================================================================
      31              : // class declarations
      32              : // ===========================================================================
      33              : class Node;
      34              : 
      35              : 
      36              : // ===========================================================================
      37              : // class definitions
      38              : // ===========================================================================
      39              : /**
      40              :  * An element is any component in the circuit (resistor, current source, voltage source)
      41              :  * Every element has two terminals pNode (positive terminal) and nNode (negative terminal)
      42              :  * value is the resistance in case of a resistor, current in case of a current source
      43              :  * and voltage in case of voltage source.
      44              :  *
      45              :  * Conventions used:
      46              :  *
      47              :  *   1 - in case of a current source, "value" represents the current going from nNode to pNode,
      48              :  *   2 - in case of a voltage source, "value" represents the voltage difference of pNode - nNode.
      49              :  */
      50          402 : class Element {
      51              : 
      52              : public:
      53              :     enum ElementType {
      54              :         RESISTOR_traction_wire,
      55              :         CURRENT_SOURCE_traction_wire,
      56              :         VOLTAGE_SOURCE_traction_wire,
      57              :         ERROR_traction_wire
      58              :     };
      59              : 
      60              : private:
      61              :     Node* pNode;
      62              :     Node* nNode;
      63              :     double voltage;
      64              :     double current;
      65              :     double resistance;
      66              :     double powerWanted;
      67              :     ElementType type;
      68              :     std::string name;  // unique property, each object has distinctive and unique name
      69              :     int id;  // a sequential ID number, might be useful when making the equation
      70              :     bool isenabled;
      71              : 
      72              : public:
      73              :     // a constructor. same functionality as init functions in the last project
      74              :     Element(std::string name, ElementType type, double value);
      75              : 
      76              :     //getters and setters
      77              :     double getVoltage();        // get the voltage across the element
      78              :     double getCurrent();        // get the current running through the element
      79              :     double getResistance();
      80              :     double getPowerWanted();
      81              :     double getPower();
      82              :     int getId();
      83              :     Node* getPosNode();
      84              :     Node* getNegNode();
      85              :     ElementType getType();
      86              :     std::string getName();
      87              :     bool isEnabled();
      88              : 
      89              :     void setPosNode(Node* node);
      90              :     void setNegNode(Node* node);
      91              :     void setId(int id);
      92              :     void setVoltage(double voltage);
      93              :     void setCurrent(double current);
      94              :     void setResistance(double resistance);
      95              :     void setPowerWanted(double powerWanted);
      96              :     void setEnabled(bool isenabled);
      97              : 
      98              :     // if node == pNode, return nNode, else if node == nNode return pNode, else return NULL
      99              :     Node* getTheOtherNode(Node* node);
     100              :     // sets the type of elements
     101              :     void setType(ElementType ET);
     102              : 
     103              : };
        

Generated by: LCOV version 2.0-1