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 Node.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 nodes, i.e. wire junctions and connection points.
22 : /****************************************************************************/
23 : #pragma once
24 : #include <config.h>
25 :
26 : #include <vector>
27 : #include <string>
28 :
29 :
30 : // ===========================================================================
31 : // class declarations
32 : // ===========================================================================
33 : class Element;
34 :
35 :
36 : // ===========================================================================
37 : // class definitions
38 : // ===========================================================================
39 223 : class Node {
40 :
41 : private:
42 : bool isground;
43 : bool isremovable;
44 : std::string name; // unique property, each object has distinctive and unique name
45 : int id; // a sequential ID number, might be useful when making the equation
46 : int num_matrixRow; // number of matrix row during solving the equations
47 : int num_matrixCol; // number of matrix column during solving the equations
48 : double voltage;
49 : std::vector<Element*>* elements; // too lazy to implement a linked list
50 : // each node is connected to one or more element, an element is a resistor or voltage/current source
51 :
52 : public:
53 : // A constructor, same functionality as "init" functions
54 : Node(std::string name, int id);
55 :
56 : // connects an element to the node
57 : void addElement(Element* element);
58 : // disconnects an element to the node
59 : void eraseElement(Element* element);
60 : // getters and setters
61 : double getVoltage();
62 : void setVoltage(double volt);
63 : int getNumOfElements();
64 : // iterates through the vector of the node's elements and returns the first, which is not equal to "element" in the argument of the function
65 : Element* getAnOtherElement(Element* element);
66 : std::string& getName();
67 : bool isGround();
68 : bool isRemovable() const {
69 30073 : return isremovable;
70 : }
71 : void setGround(bool isground);
72 : int getId();
73 : void setNumMatrixRow(int num);
74 : int getNumMatrixRow();
75 : void setNumMatrixCol(int num);
76 : int getNumMatrixCol();
77 : void setId(int id);
78 : std::vector<Element*>* getElements();
79 : void setRemovability(bool isremovable);
80 : };
|