79 Cable() :
Element(
"cable",
"DC1", 1, 1), length(0), type(
"underground"), eliminate(true) {};
93 Cable(
const string& symbol,
const std::string& location,
int pins,
const string& type_constructor,
94 double length_constructor, std::tuple<double, double, double> earth,
95 std::map<string, Conductor*> conductors_constructor, std::map<string, Insulator*> insulators_constructor,
96 std::vector<std::pair<double, double>> positions_constructor);
98 void setLength(
double newLength) { length = newLength; }
101 void addPosition(
double x,
double y) { positions.emplace_back(x, y); }
102 void setEarthParameters(
double mu,
double epsilon,
double rho) { earth_parameters = std::make_tuple(mu, epsilon, rho); }
110 const std::vector<std::pair<double, double>>&
getPositions()
const {
return positions; }
112 const std::string&
getType()
const {
return type; }
116 auto it = conductors.find(key);
117 if (it != conductors.end()) {
127 auto it = insulators.find(key);
128 if (it != insulators.end()) {
135 insulators[key] = insulator;
142 conductors[key] = conductor;
147 auto it = conductors.find(key);
148 if (it != conductors.end()) {
150 conductors.erase(it);
165 bool hasProperty(
const std::string& key) {
return (conductors.find(key) != conductors.end() || insulators.find(key) != insulators.end()); }
166 bool isConductor(
const std::string& key) {
return (conductors.find(key) != conductors.end()); }
167 bool isInsulator(
const std::string& key) {
return (insulators.find(key) != insulators.end()); }
171 virtual std::vector<std::vector<complex<double>>>
compute_y_parameters(
double frequency)
override;
183 std::map<std::string, Conductor*> conductors;
186 std::map<std::string, Insulator*> insulators;
188 std::vector<std::pair<double, double>> positions;
190 std::tuple<double, double, double> earth_parameters;
192 std::string configuration =
"coaxial";
194 bool eliminate =
true;
Conducting layer with inner/outer radius and material properties.
Definition Cable.h:25
double area
Definition Cable.h:43
double ri
Definition Cable.h:39
double permeability
Definition Cable.h:42
double resistivity
Definition Cable.h:41
double ro
Definition Cable.h:40
Conductor(double ri=0, double ro=0, double resistivity=0, double permeability=1, double area=0)
Construct a cable conductor layer.
Definition Cable.h:35
Insulating layer with optional inner/outer semiconductor radii.
Definition Cable.h:50
double ro
Definition Cable.h:66
double b
Definition Cable.h:72
double ri
Definition Cable.h:65
double permittivity
Definition Cable.h:67
double permeability
Definition Cable.h:68
Insulator(double ri=0, double ro=0, double permittivity=1, double permeability=1, double innerSemiConductorOuterRadius=0, double outerSemiConductorInnerRadius=0)
Construct a cable insulator layer.
Definition Cable.h:61
double a
Definition Cable.h:71
Multi-layer cable model with conductor and insulator sections.
Definition Cable.h:18
void addConductor(const std::string &key, Conductor *conductor)
Definition Cable.h:99
void setConfiguration(const std::string &newConfig)
Definition Cable.h:103
const std::vector< std::pair< double, double > > & getPositions() const
Definition Cable.h:110
const std::tuple< double, double, double > & getEarthParameters() const
Definition Cable.h:109
const std::map< std::string, Conductor * > & getCableConductors() const
Definition Cable.h:155
bool getEliminate() const
Definition Cable.h:113
const std::string & getType() const
Definition Cable.h:112
void setLength(double newLength)
Definition Cable.h:98
void addInsulator(const std::string &key, Insulator *insulator)
Definition Cable.h:100
const std::map< std::string, Insulator * > & getCableInsulators() const
Definition Cable.h:160
void updateLayers()
Definition Cable.cpp:336
void setEliminate(bool value)
Definition Cable.h:104
void removeConductor(const std::string &key)
Definition Cable.h:146
~Cable()
Definition Cable.cpp:277
bool hasProperty(const std::string &key)
Definition Cable.h:165
Conductor * getConductor(const std::string &key)
Definition Cable.h:115
double getLength() const
Definition Cable.h:108
void updateConductor(const std::string &key, Conductor *conductor)
Definition Cable.h:141
Insulator * getInsulator(const std::string &key)
Definition Cable.h:126
void addPosition(double x, double y)
Definition Cable.h:101
virtual std::vector< std::vector< complex< double > > > compute_y_parameters(double frequency) override
Compute complex Y-parameters at a single frequency.
Definition Cable.cpp:287
void setEarthParameters(double mu, double epsilon, double rho)
Definition Cable.h:102
void updateInsulator(const std::string &key, Insulator *insulator)
Definition Cable.h:134
const std::string & getConfiguration() const
Definition Cable.h:111
virtual void printElementValues() override
Print extended element-specific values (override in derived classes).
Definition Cable.cpp:403
bool isInsulator(const std::string &key)
Definition Cable.h:167
bool isConductor(const std::string &key)
Definition Cable.h:166
Cable()
Default cable with placeholder symbol, location, and pin counts.
Definition Cable.h:79
Base class for multi-phase network elements with Y-parameters and MNA stamping hooks.
Definition Element.h:29