SEElectricalCircuitPath.h
1 /**************************************************************************************
2 Copyright 2015 Applied Research Associates, Inc.
3 Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4 this file except in compliance with the License. You may obtain a copy of the License
5 at:
6 http://www.apache.org/licenses/LICENSE-2.0
7 Unless required by applicable law or agreed to in writing, software distributed under
8 the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
9 CONDITIONS OF ANY KIND, either express or implied. See the License for the
10 specific language governing permissions and limitations under the License.
11 **************************************************************************************/
12 
13 #pragma once
14 #include <biogears/cdm/circuit/SECircuitPath.h>
15 #include <biogears/cdm/circuit/electrical/SEElectricalCircuitNode.h>
16 #include <biogears/cdm/properties/SEScalarElectricCapacitance.h>
17 #include <biogears/cdm/properties/SEScalarElectricCharge.h>
18 #include <biogears/cdm/properties/SEScalarElectricCurrent.h>
19 #include <biogears/cdm/properties/SEScalarElectricInductance.h>
20 #include <biogears/cdm/properties/SEScalarElectricPotential.h>
21 #include <biogears/cdm/properties/SEScalarElectricResistance.h>
22 
23 namespace biogears {
24 class SECircuitManager;
25 class BIOGEARS_API SEElectricalCircuitPath : public SECircuitPath<SEScalarElectricCurrent, SEScalarElectricResistance, SEScalarElectricCapacitance, SEScalarElectricInductance, SEScalarElectricPotential, SEScalarElectricCharge> {
26  friend class SECircuitManager;
27 
28 protected:
29  SEElectricalCircuitPath(SEElectricalCircuitNode& src, SEElectricalCircuitNode& tgt, const std::string& name);
31 
32 public:
33  virtual ~SEElectricalCircuitPath();
34 
35  virtual void Clear(); //clear memory
36 
37  bool Load(const CDM::ElectricalCircuitPathData& in);
38  CDM::ElectricalCircuitPathData* Unload() const;
39 
40 protected:
41  void Unload(CDM::ElectricalCircuitPathData& data) const;
42 
43 public:
44  virtual SEElectricalCircuitNode& GetSourceNode() const { return m_ElectricalSourceNode; }
45  virtual SEElectricalCircuitNode& GetTargetNode() const { return m_ElectricalTargetNode; }
46 
47  virtual bool HasResistance() const;
48  virtual SEScalarElectricResistance& GetResistance();
49  virtual double GetResistance(const ElectricResistanceUnit& unit) const;
50  virtual bool HasNextResistance() const;
51  virtual SEScalarElectricResistance& GetNextResistance();
52  virtual double GetNextResistance(const ElectricResistanceUnit& unit) const;
53  virtual bool HasResistanceBaseline() const;
54  virtual SEScalarElectricResistance& GetResistanceBaseline();
55  virtual double GetResistanceBaseline(const ElectricResistanceUnit& unit) const;
56 
57  virtual bool HasCapacitance() const;
58  virtual SEScalarElectricCapacitance& GetCapacitance();
59  virtual double GetCapacitance(const ElectricCapacitanceUnit& unit) const;
60  virtual bool HasNextCapacitance() const;
61  virtual SEScalarElectricCapacitance& GetNextCapacitance();
62  virtual double GetNextCapacitance(const ElectricCapacitanceUnit& unit) const;
63  virtual bool HasCapacitanceBaseline() const;
64  virtual SEScalarElectricCapacitance& GetCapacitanceBaseline();
65  virtual double GetCapacitanceBaseline(const ElectricCapacitanceUnit& unit) const;
66 
67  virtual bool HasInductance() const;
68  virtual SEScalarElectricInductance& GetInductance();
69  virtual double GetInductance(const ElectricInductanceUnit& unit) const;
70  virtual bool HasNextInductance() const;
71  virtual SEScalarElectricInductance& GetNextInductance();
72  virtual double GetNextInductance(const ElectricInductanceUnit& unit) const;
73  virtual bool HasInductanceBaseline() const;
74  virtual SEScalarElectricInductance& GetInductanceBaseline();
75  virtual double GetInductanceBaseline(const ElectricInductanceUnit& unit) const;
76 
77  virtual bool HasCurrent() const;
78  virtual SEScalarElectricCurrent& GetCurrent();
79  virtual double GetCurrent(const ElectricCurrentUnit& unit) const;
80  virtual bool HasNextCurrent() const;
81  virtual SEScalarElectricCurrent& GetNextCurrent();
82  virtual double GetNextCurrent(const ElectricCurrentUnit& unit) const;
83  virtual bool HasCurrentSource() const;
84  virtual SEScalarElectricCurrent& GetCurrentSource();
85  virtual double GetCurrentSource(const ElectricCurrentUnit& unit) const;
86  virtual bool HasNextCurrentSource() const;
87  virtual SEScalarElectricCurrent& GetNextCurrentSource();
88  virtual double GetNextCurrentSource(const ElectricCurrentUnit& unit) const;
89  virtual bool HasCurrentSourceBaseline() const;
90  virtual SEScalarElectricCurrent& GetCurrentSourceBaseline();
91  virtual double GetCurrentSourceBaseline(const ElectricCurrentUnit& unit) const;
92 
93  virtual bool HasVoltageSource() const;
94  virtual SEScalarElectricPotential& GetVoltageSource();
95  virtual double GetVoltageSource(const ElectricPotentialUnit& unit) const;
96  virtual bool HasNextVoltageSource() const;
97  virtual SEScalarElectricPotential& GetNextVoltageSource();
98  virtual double GetNextVoltageSource(const ElectricPotentialUnit& unit) const;
99  virtual bool HasVoltageSourceBaseline() const;
100  virtual SEScalarElectricPotential& GetVoltageSourceBaseline();
101  virtual double GetVoltageSourceBaseline(const ElectricPotentialUnit& unit) const;
102  virtual bool HasValveBreakdownVoltage() const;
103  virtual SEScalarElectricPotential& GetValveBreakdownVoltage();
104  virtual double GetValveBreakdownVoltage(const ElectricPotentialUnit& unit) const;
105 
106 protected:
109 };
110 }
virtual SEElectricalCircuitNode & GetSourceNode() const
Definition: SEElectricalCircuitPath.h:44
Definition: SEScalarElectricPotential.h:18
Definition: SEScalarElectricResistance.h:18
Definition: SECircuitPath.h:28
Definition: SEScalarElectricCapacitance.h:18
Definition: SEScalarElectricResistance.h:33
Definition: SEScalarElectricInductance.h:18
virtual SEElectricalCircuitNode & GetTargetNode() const
Definition: SEElectricalCircuitPath.h:45
Definition: SEScalarElectricCurrent.h:18
Definition: SEElectricalCircuitPath.h:25
Definition: SEScalarElectricCapacitance.h:33
SEElectricalCircuitNode & m_ElectricalTargetNode
Definition: SEElectricalCircuitPath.h:108
SEElectricalCircuitNode & m_ElectricalSourceNode
Definition: SEElectricalCircuitPath.h:107
Definition: SEScalarElectricPotential.h:34
Definition: SEElectricalCircuitNode.h:21
Definition: SEScalarElectricCurrent.h:33
Class corresponding to the ElectricalCircuitPathData schema type.
Definition: Circuit.hxx:2902
Definition: SEElectricalCircuit.h:18
Definition: SECircuitManager.h:53
Definition: SEScalarElectricInductance.h:33