Building Medical Digital Twins with Pulse: Open Source Simulation Tools for Developers and Researchers
×
SECircuitPath.hxx
1 /* Distributed under the Apache License, Version 2.0.
2  See accompanying NOTICE file for details.*/
3 
4 template<CIRCUIT_PATH_TEMPLATE>
5 SECircuitPath<CIRCUIT_PATH_TYPES>::SECircuitPath(SECircuitNode<CIRCUIT_NODE_TYPES>& src, SECircuitNode<CIRCUIT_NODE_TYPES>& tgt, const std::string& name) : Loggable(src.GetLogger()), m_Name(name), m_SourceNode(src), m_TargetNode(tgt)
6 {
7  m_Resistance = nullptr;
8  m_NextResistance = nullptr;
9  m_ResistanceBaseline = nullptr;
10  m_Capacitance = nullptr;
11  m_NextCapacitance = nullptr;
12  m_CapacitanceBaseline = nullptr;
13  m_Inductance = nullptr;
14  m_NextInductance = nullptr;
15  m_InductanceBaseline = nullptr;
16  m_Flux = nullptr;
17  m_NextFlux = nullptr;
18  m_FluxSource = nullptr;
19  m_NextFluxSource = nullptr;
20  m_FluxSourceBaseline = nullptr;
21  m_PotentialSource = nullptr;
22  m_NextPotentialSource = nullptr;
23  m_PotentialSourceBaseline = nullptr;
24  m_ValveBreakdownPotential = nullptr;
25  m_Switch = eGate::NullGate;
26  m_Valve = eGate::NullGate;
27  m_NextSwitch = eGate::NullGate;
28  m_NextValve = eGate::NullGate;
29  m_NextPolarizedState = eGate::NullGate;
30  m_PolarizedState = eGate::NullGate;
31 
32  m_NumElements = 0;
33  m_NumNextElements = 0;
34 
35  if (&m_SourceNode == &m_TargetNode)
36  {
37  std::stringstream ss;
38  ss << "Path " << GetName() << " has the same Source and Target Nodes. They cannot be the same Node.";
39  Fatal(ss);
40  }
41 }
42 
43 template<CIRCUIT_PATH_TEMPLATE>
45 {
46  Clear();
47 }
48 
49 template<CIRCUIT_PATH_TEMPLATE>
51 {
52  m_Switch = eGate::NullGate;
53  m_Valve = eGate::NullGate;
54  m_NextSwitch = eGate::NullGate;
55  m_NextValve = eGate::NullGate;
56  m_NextPolarizedState = eGate::NullGate;
57  m_PolarizedState = eGate::NullGate;
58  SAFE_DELETE(m_Resistance);
59  SAFE_DELETE(m_NextResistance);
60  SAFE_DELETE(m_ResistanceBaseline);
61  SAFE_DELETE(m_Capacitance);
62  SAFE_DELETE(m_NextCapacitance);
63  SAFE_DELETE(m_CapacitanceBaseline);
64  SAFE_DELETE(m_Inductance);
65  SAFE_DELETE(m_NextInductance);
66  SAFE_DELETE(m_InductanceBaseline);
67  SAFE_DELETE(m_Flux);
68  SAFE_DELETE(m_NextFlux);
69  SAFE_DELETE(m_FluxSource);
70  SAFE_DELETE(m_NextFluxSource);
71  SAFE_DELETE(m_FluxSourceBaseline);
72  SAFE_DELETE(m_PotentialSource);
73  SAFE_DELETE(m_NextPotentialSource);
74  SAFE_DELETE(m_PotentialSourceBaseline);
75  SAFE_DELETE(m_ValveBreakdownPotential);
76 }
77 
78 template<CIRCUIT_PATH_TEMPLATE>
80 {
81  return m_Name;
82 }
83 
84 template<CIRCUIT_PATH_TEMPLATE>
86 {
87  return m_IsPartOfBlackBox;
88 }
89 template<CIRCUIT_PATH_TEMPLATE>
91 {
92  m_IsPartOfBlackBox = b;
93 }
94 
95 template<CIRCUIT_PATH_TEMPLATE>
97 {
98  return m_SourceNode;
99 }
100 template<CIRCUIT_PATH_TEMPLATE>
102 {
103  return m_TargetNode;
104 }
105 
107 // Valves and Switches //
109 template<CIRCUIT_PATH_TEMPLATE>
111 {
112  unsigned short numRCI = (HasResistance() ? 1 : 0) +
113  (HasCapacitance() ? 1 : 0) +
114  (HasInductance() ? 1 : 0);
115  unsigned short numNextRCI = (HasNextResistance() ? 1 : 0) +
116  (HasNextCapacitance() ? 1 : 0) +
117  (HasNextInductance() ? 1 : 0);
118  unsigned short numSrcState = (HasSwitch() ? 1 : 0) +
119  (HasValve() ? 1 : 0) +
120  (HasFluxSource() ? 1 : 0) +
121  (HasPotentialSource() ? 1 : 0);
122  unsigned short numNextSrcState = (HasNextSwitch() ? 1 : 0) +
123  (HasNextValve() ? 1 : 0) +
124  (HasNextFluxSource() ? 1 : 0) +
125  (HasNextPotentialSource() ? 1 : 0);
126  m_NumElements = numRCI + numSrcState;
127  m_NumNextElements = numNextRCI + numNextSrcState;
128  if (m_NumElements > 1 || m_NumNextElements > 1)
129  {
130  Error("There is only one element allowed per path.");
131  return false;
132  }
133  if (HasPolarizedState())
134  {
135  if (numRCI == 0)
136  {
137  Error("You must have a Resistance, Capacitance or Inductance on the path if you have a polarized state.");
138  return false;
139  }
140  if (numSrcState > 0)
141  {
142  Error("You cannot have a Switch, Valve, FluxSource or PotentialSource on a path with a polarized state.");
143  return false;
144  }
145  }
146  if (HasNextPolarizedState())
147  {
148  if (numNextRCI == 0)
149  {
150  Error("You must have a Resistance, Capacitance or Inductance on the path if you have a polarized state.");
151  return false;
152  }
153  if (numNextSrcState > 0)
154  {
155  Error("You cannot have a Switch, Valve, FluxSource or PotentialSource on a path with a polarized state.");
156  return false;
157  }
158  }
159  if (HasValveBreakdownPotential())
160  {
161  if (!HasValve())
162  {
163  Error("You cannot have a ValveBreakdownPotential if you do not have a valve.");
164  return false;
165  }
166  if (m_ValveBreakdownPotential->IsNegative())
167  {
168  Error("A negative Breakdown Potential is not allowed. Consider adding a Valve with reversed polarity.");
169  return false;
170  }
171  }
172  return true;
173 }
174 
175 template<CIRCUIT_PATH_TEMPLATE>
177 {
178  return m_Switch;
179 }
180 template<CIRCUIT_PATH_TEMPLATE>
182 {
183  m_Switch = state;
184 }
185 template<CIRCUIT_PATH_TEMPLATE>
187 {
188  m_Switch = (m_Switch == eGate::Open) ? eGate::Closed : eGate::Open;
189 }
190 template<CIRCUIT_PATH_TEMPLATE>
192 {
193  return m_Switch == eGate::NullGate ? false : true;
194 }
195 template<CIRCUIT_PATH_TEMPLATE>
197 {
198  m_Switch = eGate::NullGate;
199 }
200 
201 template<CIRCUIT_PATH_TEMPLATE>
203 {
204  return m_NextSwitch;
205 }
206 template<CIRCUIT_PATH_TEMPLATE>
208 {
209  m_NextSwitch = state;
210 }
211 template<CIRCUIT_PATH_TEMPLATE>
213 {
214  m_NextSwitch = (m_NextSwitch == eGate::Open) ? eGate::Closed : eGate::Open;
215 }
216 template<CIRCUIT_PATH_TEMPLATE>
218 {
219  return m_NextSwitch == eGate::NullGate ? false : true;
220 }
221 template<CIRCUIT_PATH_TEMPLATE>
223 {
224  m_NextSwitch = eGate::NullGate;
225 }
226 template<CIRCUIT_PATH_TEMPLATE>
228 {
229  m_Switch = eGate::NullGate;
230  m_NextSwitch = eGate::NullGate;
231 }
232 
233 template<CIRCUIT_PATH_TEMPLATE>
235 {
236  return m_Valve;
237 }
238 template<CIRCUIT_PATH_TEMPLATE>
240 {
241  m_Valve = state;
242 }
243 template<CIRCUIT_PATH_TEMPLATE>
245 {
246  m_Valve = (m_Valve == eGate::Open) ? eGate::Closed : eGate::Open;
247 }
248 template<CIRCUIT_PATH_TEMPLATE>
250 {
251  return m_Valve == eGate::NullGate ? false : true;
252 }
253 template<CIRCUIT_PATH_TEMPLATE>
255 {
256  m_Valve = eGate::NullGate;
257 }
258 
259 template<CIRCUIT_PATH_TEMPLATE>
261 {
262  return m_NextValve;
263 }
264 template<CIRCUIT_PATH_TEMPLATE>
266 {
267  m_NextValve = state;
268 }
269 template<CIRCUIT_PATH_TEMPLATE>
271 {
272  m_NextValve = (m_NextValve == eGate::Open) ? eGate::Closed : eGate::Open;
273 }
274 template<CIRCUIT_PATH_TEMPLATE>
276 {
277  return m_NextValve == eGate::NullGate ? false : true;
278 }
279 template<CIRCUIT_PATH_TEMPLATE>
281 {
282  m_NextValve = eGate::NullGate;
283 }
284 template<CIRCUIT_PATH_TEMPLATE>
286 {
287  m_Valve = eGate::NullGate;
288  m_NextValve = eGate::NullGate;
289 }
290 
291 template<CIRCUIT_PATH_TEMPLATE>
293 {
294  return m_NextPolarizedState;
295 }
296 template<CIRCUIT_PATH_TEMPLATE>
298 {
299  m_NextPolarizedState = state;
300 }
301 template<CIRCUIT_PATH_TEMPLATE>
303 {
304  m_NextPolarizedState = (m_NextPolarizedState == eGate::Open) ? eGate::Closed : eGate::Open;
305 }
306 template<CIRCUIT_PATH_TEMPLATE>
308 {
309  return m_NextPolarizedState == eGate::NullGate ? false : true;
310 }
311 template<CIRCUIT_PATH_TEMPLATE>
313 {
314  m_NextPolarizedState = eGate::NullGate;
315 }
316 
317 template<CIRCUIT_PATH_TEMPLATE>
319 {
320  return m_PolarizedState;
321 }
322 template<CIRCUIT_PATH_TEMPLATE>
324 {
325  m_PolarizedState = state;
326 }
327 template<CIRCUIT_PATH_TEMPLATE>
329 {
330  m_PolarizedState = (m_PolarizedState == eGate::Open) ? eGate::Closed : eGate::Open;
331 }
332 template<CIRCUIT_PATH_TEMPLATE>
334 {
335  return m_PolarizedState == eGate::NullGate ? false : true;
336 }
337 template<CIRCUIT_PATH_TEMPLATE>
339 {
340  m_PolarizedState = eGate::NullGate;
341 }
342 
343 
345 // Resistance //
347 template<CIRCUIT_PATH_TEMPLATE>
349 {
350  return m_Resistance == nullptr ? false : m_Resistance->IsValid();
351 }
352 template<CIRCUIT_PATH_TEMPLATE>
354 {
355  if (m_Resistance == nullptr)
356  m_Resistance = new ResistanceScalar();
357  return *m_Resistance;
358 }
359 template<CIRCUIT_PATH_TEMPLATE>
361 {
362  return m_NextResistance == nullptr ? false : m_NextResistance->IsValid();
363 }
364 template<CIRCUIT_PATH_TEMPLATE>
366 {
367  if (m_NextResistance == nullptr)
368  m_NextResistance = new ResistanceScalar();
369  return *m_NextResistance;
370 }
371 template<CIRCUIT_PATH_TEMPLATE>
373 {
374  return m_ResistanceBaseline == nullptr ? false : m_ResistanceBaseline->IsValid();
375 }
376 template<CIRCUIT_PATH_TEMPLATE>
378 {
379  if (m_ResistanceBaseline == nullptr)
380  m_ResistanceBaseline = new ResistanceScalar();
381  return *m_ResistanceBaseline;
382 }
383 template<CIRCUIT_PATH_TEMPLATE>
385 {
386  if (m_Resistance != nullptr)
387  m_Resistance->ForceInvalidate();
388  if (m_NextResistance != nullptr)
389  m_NextResistance->ForceInvalidate();
390  if (m_ResistanceBaseline != nullptr)
391  m_ResistanceBaseline->ForceInvalidate();
392 }
393 
395 // Capacitance Types //
397 template<CIRCUIT_PATH_TEMPLATE>
399 {
400  return m_Capacitance == nullptr ? false : m_Capacitance->IsValid();
401 }
402 template<CIRCUIT_PATH_TEMPLATE>
404 {
405  if (m_Capacitance == nullptr)
406  m_Capacitance = new CapacitanceScalar();
407  return *m_Capacitance;
408 }
409 template<CIRCUIT_PATH_TEMPLATE>
411 {
412  return m_NextCapacitance == nullptr ? false : m_NextCapacitance->IsValid();
413 }
414 template<CIRCUIT_PATH_TEMPLATE>
416 {
417  if (m_NextCapacitance == nullptr)
418  m_NextCapacitance = new CapacitanceScalar();
419  return *m_NextCapacitance;
420 }
421 template<CIRCUIT_PATH_TEMPLATE>
423 {
424  return m_CapacitanceBaseline == nullptr ? false : m_CapacitanceBaseline->IsValid();
425 }
426 template<CIRCUIT_PATH_TEMPLATE>
428 {
429  if (m_CapacitanceBaseline == nullptr)
430  m_CapacitanceBaseline = new CapacitanceScalar();
431  return *m_CapacitanceBaseline;
432 }
433 template<CIRCUIT_PATH_TEMPLATE>
435 {
436  if (m_Capacitance != nullptr)
437  m_Capacitance->ForceInvalidate();
438  if (m_NextCapacitance != nullptr)
439  m_NextCapacitance->ForceInvalidate();
440  if (m_CapacitanceBaseline != nullptr)
441  m_CapacitanceBaseline->ForceInvalidate();
442 }
443 
445 // Inductance Types //
447 template<CIRCUIT_PATH_TEMPLATE>
449 {
450  return m_Inductance == nullptr ? false : m_Inductance->IsValid();
451 }
452 template<CIRCUIT_PATH_TEMPLATE>
454 {
455  if (m_Inductance == nullptr)
456  m_Inductance = new InductanceScalar();
457  return *m_Inductance;
458 }
459 template<CIRCUIT_PATH_TEMPLATE>
461 {
462  return m_NextInductance == nullptr ? false : m_NextInductance->IsValid();
463 }
464 template<CIRCUIT_PATH_TEMPLATE>
466 {
467  if (m_NextInductance == nullptr)
468  m_NextInductance = new InductanceScalar();
469  return *m_NextInductance;
470 }
471 template<CIRCUIT_PATH_TEMPLATE>
473 {
474  return m_InductanceBaseline == nullptr ? false : m_InductanceBaseline->IsValid();
475 }
476 template<CIRCUIT_PATH_TEMPLATE>
478 {
479  if (m_InductanceBaseline == nullptr)
480  m_InductanceBaseline = new InductanceScalar();
481  return *m_InductanceBaseline;
482 }
483 template<CIRCUIT_PATH_TEMPLATE>
485 {
486  if (m_Inductance != nullptr)
487  m_Inductance->ForceInvalidate();
488  if (m_NextInductance != nullptr)
489  m_NextInductance->ForceInvalidate();
490  if (m_InductanceBaseline != nullptr)
491  m_InductanceBaseline->ForceInvalidate();
492 }
493 
495 // Flux Types //
497 template<CIRCUIT_PATH_TEMPLATE>
499 {
500  return m_Flux == nullptr ? false : m_Flux->IsValid();
501 }
502 template<CIRCUIT_PATH_TEMPLATE>
504 {
505  if (m_Flux == nullptr)
506  m_Flux = new FluxScalar();
507  return *m_Flux;
508 }
509 template<CIRCUIT_PATH_TEMPLATE>
511 {
512  return m_NextFlux == nullptr ? false : m_NextFlux->IsValid();
513 }
514 template<CIRCUIT_PATH_TEMPLATE>
516 {
517  if (m_NextFlux == nullptr)
518  m_NextFlux = new FluxScalar();
519  return *m_NextFlux;
520 }
521 template<CIRCUIT_PATH_TEMPLATE>
523 {
524  return m_FluxSource == nullptr ? false : m_FluxSource->IsValid();
525 }
526 template<CIRCUIT_PATH_TEMPLATE>
528 {
529  if (m_FluxSource == nullptr)
530  m_FluxSource = new FluxScalar();
531  return *m_FluxSource;
532 }
533 template<CIRCUIT_PATH_TEMPLATE>
535 {
536  return m_NextFluxSource == nullptr ? false : m_NextFluxSource->IsValid();
537 }
538 template<CIRCUIT_PATH_TEMPLATE>
540 {
541  if (m_NextFluxSource == nullptr)
542  m_NextFluxSource = new FluxScalar();
543  return *m_NextFluxSource;
544 }
545 template<CIRCUIT_PATH_TEMPLATE>
547 {
548  return m_FluxSourceBaseline == nullptr ? false : m_FluxSourceBaseline->IsValid();
549 }
550 template<CIRCUIT_PATH_TEMPLATE>
552 {
553  if (m_FluxSourceBaseline == nullptr)
554  m_FluxSourceBaseline = new FluxScalar();
555  return *m_FluxSourceBaseline;
556 }
557 template<CIRCUIT_PATH_TEMPLATE>
559 {
560  if (m_FluxSource != nullptr)
561  m_FluxSource->ForceInvalidate();
562  if (m_NextFluxSource != nullptr)
563  m_NextFluxSource->ForceInvalidate();
564  if (m_FluxSourceBaseline != nullptr)
565  m_FluxSourceBaseline->ForceInvalidate();
566 }
567 
568 template<CIRCUIT_PATH_TEMPLATE>
570 {
571  m_FluxType = eBlackBox_Property_Type::Calculate;
572 }
573 template<CIRCUIT_PATH_TEMPLATE>
575 {
576  return m_FluxType == eBlackBox_Property_Type::Imposed;
577 }
578 template<CIRCUIT_PATH_TEMPLATE>
579 void SECircuitPath<CIRCUIT_PATH_TYPES>::ImposeFlux(double v, const FluxUnit& unit)
580 {
581  m_FluxType = eBlackBox_Property_Type::Imposed;
582  if (m_NextFlux == nullptr)
583  m_NextFlux = new FluxScalar();
584  m_NextFlux->SetValue(v, unit);
585 }
586 template<CIRCUIT_PATH_TEMPLATE>
587 void SECircuitPath<CIRCUIT_PATH_TYPES>::ImposeFlux(const FluxScalar& s)
588 {
589  m_FluxType = eBlackBox_Property_Type::Imposed;
590  if (m_NextFlux == nullptr)
591  m_NextFlux = new FluxScalar();
592  m_NextFlux->Set(s);
593 }
594 
596 // Potential Types //
598 template<CIRCUIT_PATH_TEMPLATE>
600 {
601  return m_PotentialSource == nullptr ? false : m_PotentialSource->IsValid();
602 }
603 template<CIRCUIT_PATH_TEMPLATE>
605 {
606  if (m_PotentialSource == nullptr)
607  m_PotentialSource = new PotentialScalar();
608  return *m_PotentialSource;
609 }
610 template<CIRCUIT_PATH_TEMPLATE>
612 {
613  return m_NextPotentialSource == nullptr ? false : m_NextPotentialSource->IsValid();
614 }
615 template<CIRCUIT_PATH_TEMPLATE>
617 {
618  if (m_NextPotentialSource == nullptr)
619  m_NextPotentialSource = new PotentialScalar();
620  return *m_NextPotentialSource;
621 }
622 template<CIRCUIT_PATH_TEMPLATE>
624 {
625  return m_PotentialSourceBaseline == nullptr ? false : m_PotentialSourceBaseline->IsValid();
626 }
627 template<CIRCUIT_PATH_TEMPLATE>
629 {
630  if (m_PotentialSourceBaseline == nullptr)
631  m_PotentialSourceBaseline = new PotentialScalar();
632  return *m_PotentialSourceBaseline;
633 }
634 template<CIRCUIT_PATH_TEMPLATE>
636 {
637  if (m_PotentialSource != nullptr)
638  m_PotentialSource->ForceInvalidate();
639  if (m_NextPotentialSource != nullptr)
640  m_NextPotentialSource->ForceInvalidate();
641  if (m_PotentialSourceBaseline != nullptr)
642  m_PotentialSourceBaseline->ForceInvalidate();
643 }
644 
645 
646 template<CIRCUIT_PATH_TEMPLATE>
648 {
649  return m_ValveBreakdownPotential == nullptr ? false : m_ValveBreakdownPotential->IsValid();
650 }
651 template<CIRCUIT_PATH_TEMPLATE>
653 {
654  if (m_ValveBreakdownPotential == nullptr)
655  m_ValveBreakdownPotential = new PotentialScalar();
656  return *m_ValveBreakdownPotential;
657 }
658 
659 #include "cdm/circuit/fluid/SEFluidCircuitPath.h"
660 template class SECircuitPath<FLUID_CIRCUIT_PATH>;
661 #include "cdm/circuit/electrical/SEElectricalCircuitPath.h"
663 #include "cdm/circuit/thermal/SEThermalCircuitPath.h"
Definition: Logger.h:23
virtual bool HasNextPotentialSource() const
Definition: SECircuitPath.cpp:613
virtual void SetNextValve(eGate state)
Definition: SECircuitPath.cpp:267
virtual bool HasNextValve() const
Definition: SECircuitPath.cpp:277
virtual void RemoveImposedFlux()
Definition: SECircuitPath.cpp:571
virtual void RemoveCapacitance()
Definition: SECircuitPath.cpp:436
virtual bool HasPolarizedState() const
Definition: SECircuitPath.cpp:335
virtual bool HasInductance() const
Definition: SECircuitPath.cpp:450
virtual bool HasNextSwitch() const
Definition: SECircuitPath.cpp:219
virtual bool IsPartOfBlackBox() const
Definition: SECircuitPath.cpp:87
virtual void SetPolarizedState(eGate state)
Definition: SECircuitPath.cpp:325
virtual bool HasNextResistance() const
Definition: SECircuitPath.cpp:362
virtual void InvalidateNextPolarizedState()
Definition: SECircuitPath.cpp:314
virtual bool HasSwitch() const
Definition: SECircuitPath.cpp:193
virtual bool HasResistance() const
Definition: SECircuitPath.cpp:350
virtual bool HasCapacitanceBaseline() const
Definition: SECircuitPath.cpp:424
virtual eGate GetSwitch() const
Definition: SECircuitPath.cpp:178
virtual FluxScalar & GetNextFlux()
Definition: SECircuitPath.cpp:517
virtual void InvalidateSwitch()
Definition: SECircuitPath.cpp:198
virtual void SetPartOfBlackBox(bool b)
Definition: SECircuitPath.cpp:92
virtual void RemoveValve()
Definition: SECircuitPath.cpp:287
SECircuitPath(SECircuitNode< CIRCUIT_NODE_TYPES > &src, SECircuitNode< CIRCUIT_NODE_TYPES > &tgt, const std::string &name)
Definition: SECircuitPath.cpp:7
virtual void FlipSwitch()
Definition: SECircuitPath.cpp:188
virtual void Clear()
Definition: SECircuitPath.cpp:52
virtual ResistanceScalar & GetNextResistance()
Definition: SECircuitPath.cpp:367
virtual std::string GetName() const
Definition: SECircuitPath.cpp:81
virtual bool HasNextCapacitance() const
Definition: SECircuitPath.cpp:412
virtual void FlipNextValve()
Definition: SECircuitPath.cpp:272
virtual void SetValve(eGate state)
Definition: SECircuitPath.cpp:241
virtual ~SECircuitPath()
Definition: SECircuitPath.cpp:46
virtual FluxScalar & GetFlux()
Definition: SECircuitPath.cpp:505
virtual void SetSwitch(eGate state)
Definition: SECircuitPath.cpp:183
virtual bool HasNextInductance() const
Definition: SECircuitPath.cpp:462
virtual bool HasFluxSourceBaseline() const
Definition: SECircuitPath.cpp:548
virtual FluxScalar & GetNextFluxSource()
Definition: SECircuitPath.cpp:541
virtual bool HasNextFlux() const
Definition: SECircuitPath.cpp:512
virtual eGate GetNextSwitch() const
Definition: SECircuitPath.cpp:204
virtual void RemovePotentialSource()
Definition: SECircuitPath.cpp:637
virtual bool IsFluxImposed() const
Definition: SECircuitPath.cpp:576
virtual ResistanceScalar & GetResistanceBaseline()
Definition: SECircuitPath.cpp:379
virtual void FlipNextPolarizedState()
Definition: SECircuitPath.cpp:304
virtual CapacitanceScalar & GetCapacitance()
Definition: SECircuitPath.cpp:405
virtual bool HasValveBreakdownPotential() const
Definition: SECircuitPath.cpp:649
virtual void RemoveInductance()
Definition: SECircuitPath.cpp:486
virtual bool HasFluxSource() const
Definition: SECircuitPath.cpp:524
virtual eGate GetNextValve() const
Definition: SECircuitPath.cpp:262
virtual InductanceScalar & GetInductanceBaseline()
Definition: SECircuitPath.cpp:479
virtual SECircuitNode< CIRCUIT_NODE_TYPES > & GetTargetNode() const
Definition: SECircuitPath.cpp:103
virtual bool HasValve() const
Definition: SECircuitPath.cpp:251
virtual ResistanceScalar & GetResistance()
Definition: SECircuitPath.cpp:355
virtual eGate GetNextPolarizedState() const
Definition: SECircuitPath.cpp:294
virtual void InvalidatePolarizedState()
Definition: SECircuitPath.cpp:340
virtual bool HasFlux() const
Definition: SECircuitPath.cpp:500
virtual bool HasPotentialSource() const
Definition: SECircuitPath.cpp:601
virtual PotentialScalar & GetValveBreakdownPotential()
Definition: SECircuitPath.cpp:654
virtual bool HasPotentialSourceBaseline() const
Definition: SECircuitPath.cpp:625
virtual CapacitanceScalar & GetCapacitanceBaseline()
Definition: SECircuitPath.cpp:429
virtual void RemoveSwitch()
Definition: SECircuitPath.cpp:229
virtual InductanceScalar & GetInductance()
Definition: SECircuitPath.cpp:455
virtual FluxScalar & GetFluxSource()
Definition: SECircuitPath.cpp:529
virtual PotentialScalar & GetPotentialSource()
Definition: SECircuitPath.cpp:606
virtual bool HasNextPolarizedState() const
Definition: SECircuitPath.cpp:309
virtual InductanceScalar & GetNextInductance()
Definition: SECircuitPath.cpp:467
virtual void ImposeFlux(const FluxScalar &s)
Definition: SECircuitPath.cpp:589
virtual void InvalidateNextValve()
Definition: SECircuitPath.cpp:282
virtual void InvalidateValve()
Definition: SECircuitPath.cpp:256
virtual void FlipValve()
Definition: SECircuitPath.cpp:246
virtual void SetNextSwitch(eGate state)
Definition: SECircuitPath.cpp:209
virtual bool HasCapacitance() const
Definition: SECircuitPath.cpp:400
virtual bool HasResistanceBaseline() const
Definition: SECircuitPath.cpp:374
virtual void FlipNextSwitch()
Definition: SECircuitPath.cpp:214
virtual void FlipPolarizedState()
Definition: SECircuitPath.cpp:330
virtual FluxScalar & GetFluxSourceBaseline()
Definition: SECircuitPath.cpp:553
virtual eGate GetValve() const
Definition: SECircuitPath.cpp:236
virtual bool HasInductanceBaseline() const
Definition: SECircuitPath.cpp:474
virtual bool HasNextFluxSource() const
Definition: SECircuitPath.cpp:536
virtual void RemoveFluxSource()
Definition: SECircuitPath.cpp:560
virtual PotentialScalar & GetPotentialSourceBaseline()
Definition: SECircuitPath.cpp:630
virtual void SetNextPolarizedState(eGate state)
Definition: SECircuitPath.cpp:299
virtual PotentialScalar & GetNextPotentialSource()
Definition: SECircuitPath.cpp:618
virtual SECircuitNode< CIRCUIT_NODE_TYPES > & GetSourceNode() const
Definition: SECircuitPath.cpp:98
virtual CapacitanceScalar & GetNextCapacitance()
Definition: SECircuitPath.cpp:417
virtual eGate GetPolarizedState() const
Definition: SECircuitPath.cpp:320
virtual bool HasValidElements() const
Definition: SECircuitPath.cpp:112
virtual void InvalidateNextSwitch()
Definition: SECircuitPath.cpp:224
virtual void RemoveResistance()
Definition: SECircuitPath.cpp:386

Distributed under the Apache License, Version 2.0.

See accompanying NOTICE file for details.