SEFluidCircuitPath.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/fluid/SEFluidCircuitNode.h>
16 #include <biogears/cdm/properties/SEScalarFlowCompliance.h>
17 #include <biogears/cdm/properties/SEScalarFlowInertance.h>
18 #include <biogears/cdm/properties/SEScalarFlowResistance.h>
19 #include <biogears/cdm/properties/SEScalarPressure.h>
20 #include <biogears/cdm/properties/SEScalarVolume.h>
21 #include <biogears/cdm/properties/SEScalarVolumePerTime.h>
22 
23 namespace biogears {
24 class SECircuitManager;
25 class BIOGEARS_API SEFluidCircuitPath : public SECircuitPath<FLUID_CIRCUIT_PATH> {
26  friend class SECircuitManager;
27 
28 protected:
29  SEFluidCircuitPath(SEFluidCircuitNode& src, SEFluidCircuitNode& tgt, const char* name);
30  SEFluidCircuitPath(SEFluidCircuitNode& src, SEFluidCircuitNode& tgt, const std::string& name);
31 
32 public:
33  virtual ~SEFluidCircuitPath();
34 
35  virtual void Clear(); //clear memory
36 
37  bool Load(const CDM::FluidCircuitPathData& in);
38  CDM::FluidCircuitPathData* Unload() const;
39 
40 protected:
41  void Unload(CDM::FluidCircuitPathData& data) const;
42 
43 public:
44  virtual SEFluidCircuitNode& GetSourceNode() const { return m_FluidSourceNode; }
45  virtual SEFluidCircuitNode& GetTargetNode() const { return m_FluidTargetNode; }
46 
47  virtual bool HasResistance() const;
48  virtual SEScalarFlowResistance& GetResistance();
49  virtual double GetResistance(const FlowResistanceUnit& unit) const;
50  virtual bool HasNextResistance() const;
51  virtual SEScalarFlowResistance& GetNextResistance();
52  virtual double GetNextResistance(const FlowResistanceUnit& unit) const;
53  virtual bool HasResistanceBaseline() const;
54  virtual SEScalarFlowResistance& GetResistanceBaseline();
55  virtual double GetResistanceBaseline(const FlowResistanceUnit& unit) const;
56 
57  virtual bool HasCompliance() const;
58  virtual SEScalarFlowCompliance& GetCompliance();
59  virtual double GetCompliance(const FlowComplianceUnit& unit) const;
60  virtual bool HasNextCompliance() const;
61  virtual SEScalarFlowCompliance& GetNextCompliance();
62  virtual double GetNextCompliance(const FlowComplianceUnit& unit) const;
63  virtual bool HasComplianceBaseline() const;
64  virtual SEScalarFlowCompliance& GetComplianceBaseline();
65  virtual double GetComplianceBaseline(const FlowComplianceUnit& unit) const;
66 
67  virtual bool HasInertance() const;
68  virtual SEScalarFlowInertance& GetInertance();
69  virtual double GetInertance(const FlowInertanceUnit& unit) const;
70  virtual bool HasNextInertance() const;
71  virtual SEScalarFlowInertance& GetNextInertance();
72  virtual double GetNextInertance(const FlowInertanceUnit& unit) const;
73  virtual bool HasInertanceBaseline() const;
74  virtual SEScalarFlowInertance& GetInertanceBaseline();
75  virtual double GetInertanceBaseline(const FlowInertanceUnit& unit) const;
76 
77  virtual bool HasFlow() const;
78  virtual SEScalarVolumePerTime& GetFlow();
79  virtual double GetFlow(const VolumePerTimeUnit& unit) const;
80  virtual bool HasNextFlow() const;
81  virtual SEScalarVolumePerTime& GetNextFlow();
82  virtual double GetNextFlow(const VolumePerTimeUnit& unit) const;
83  virtual bool HasFlowSource() const;
84  virtual SEScalarVolumePerTime& GetFlowSource();
85  virtual double GetFlowSource(const VolumePerTimeUnit& unit) const;
86  virtual bool HasNextFlowSource() const;
87  virtual SEScalarVolumePerTime& GetNextFlowSource();
88  virtual double GetNextFlowSource(const VolumePerTimeUnit& unit) const;
89  virtual bool HasFlowSourceBaseline() const;
90  virtual SEScalarVolumePerTime& GetFlowSourceBaseline();
91  virtual double GetFlowSourceBaseline(const VolumePerTimeUnit& unit) const;
92 
93  virtual bool HasPressureSource() const;
94  virtual SEScalarPressure& GetPressureSource();
95  virtual double GetPressureSource(const PressureUnit& unit) const;
96  virtual bool HasNextPressureSource() const;
97  virtual SEScalarPressure& GetNextPressureSource();
98  virtual double GetNextPressureSource(const PressureUnit& unit) const;
99  virtual bool HasPressureSourceBaseline() const;
100  virtual SEScalarPressure& GetPressureSourceBaseline();
101  virtual double GetPressureSourceBaseline(const PressureUnit& unit) const;
102  virtual bool HasValveBreakdownPressure() const;
103  virtual SEScalarPressure& GetValveBreakdownPressure();
104  virtual double GetValveBreakdownPressure(const PressureUnit& unit) const;
105 
106  virtual bool HasCardiovascularRegion() const;
107  CDM::enumResistancePathType::value GetCardiovascularRegion() const;
108  void SetCardiovascularRegion(CDM::enumResistancePathType::value pType);
109  void InvalidateCardiovascularRegion();
110 
111 protected:
115 };
116 }
Definition: SEScalarFlowCompliance.h:36
Definition: SEScalarFlowInertance.h:37
SEFluidCircuitNode & m_FluidSourceNode
Definition: SEFluidCircuitPath.h:112
virtual SEFluidCircuitNode & GetSourceNode() const
Definition: SEFluidCircuitPath.h:44
Definition: SECircuitPath.h:28
Definition: SEScalarFlowInertance.h:18
Definition: SEScalarFlowResistance.h:18
Definition: SEScalarVolumePerTime.h:18
Definition: SEFluidCircuitPath.h:25
CDM::enumResistancePathType::value m_CardiovascularRegion
Definition: SEFluidCircuitPath.h:114
Definition: SEScalarFlowCompliance.h:18
Definition: SEFluidCircuitNode.h:21
value
Underlying enum type.
Definition: Circuit.hxx:856
Definition: SEScalarPressure.h:37
Definition: SEScalarVolumePerTime.h:40
Definition: SEScalarFlowResistance.h:37
Class corresponding to the FluidCircuitPathData schema type.
Definition: Circuit.hxx:5140
Definition: SEScalarPressure.h:18
virtual SEFluidCircuitNode & GetTargetNode() const
Definition: SEFluidCircuitPath.h:45
SEFluidCircuitNode & m_FluidTargetNode
Definition: SEFluidCircuitPath.h:113
Definition: SEElectricalCircuit.h:18
Definition: SECircuitManager.h:53