Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/src/utils/traction_wire/Node.h
169678 views
1
/****************************************************************************/
2
// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3
// Copyright (C) 2001-2025 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
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
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
};
81
82