SEGasSubstanceQuantity.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/compartment/substances/SESubstanceQuantity.h>
15 #include <biogears/cdm/substance/SESubstanceTransport.h>
16 
17 namespace biogears {
18 class SEGasCompartment;
19 
21  friend class SEGasCompartment;
22 
23 protected:
25 
26 public:
27  virtual ~SEGasSubstanceQuantity();
28 
29  virtual void Clear() override;
30  virtual void Invalidate() override;
31 
32  virtual bool Load(const CDM::GasSubstanceQuantityData& in);
33  virtual CDM::GasSubstanceQuantityData* Unload() override;
34 
35 protected:
36  virtual void Unload(CDM::GasSubstanceQuantityData& data);
37 
38 public:
39  virtual void SetToZero();
40  virtual const SEScalar* GetScalar(const char* name) override;
41  virtual const SEScalar* GetScalar(const std::string& name) override;
42 
43  virtual bool HasPartialPressure() const;
44  virtual SEScalarPressure& GetPartialPressure();
45  virtual double GetPartialPressure(const PressureUnit& unit) const;
46 
47  virtual bool HasVolume() const;
48  virtual SEScalarVolume& GetVolume();
49  virtual double GetVolume(const VolumeUnit& unit) const;
50 
51  virtual bool HasVolumeFraction() const;
52  virtual SEScalarFraction& GetVolumeFraction();
53  virtual double GetVolumeFraction() const;
54 
55 protected:
56  virtual void AddChild(SEGasSubstanceQuantity& subQ);
57 
58  virtual bool HasExtensive() const override { return HasVolume(); }
59  virtual SEScalarVolume& GetExtensive() override { return GetVolume(); }
60 
61  virtual bool HasIntensive() const override { return HasVolumeFraction(); }
62  virtual SEScalarFraction& GetIntensive() override { return GetVolumeFraction(); }
63 
67 
69  std::vector<SEGasSubstanceQuantity*> m_Children;
70 };
71 }
Definition: SESubstanceTransport.h:29
Class corresponding to the GasSubstanceQuantityData schema type.
Definition: SubstanceQuantity.hxx:855
SEScalarVolume * m_Volume
Definition: SEGasSubstanceQuantity.h:65
SEGasCompartment & m_Compartment
Definition: SEGasSubstanceQuantity.h:68
Definition: SEScalar.h:33
std::vector< SEGasSubstanceQuantity * > m_Children
Definition: SEGasSubstanceQuantity.h:69
virtual bool HasIntensive() const override
Definition: SEGasSubstanceQuantity.h:61
SEScalarFraction * m_VolumeFraction
Definition: SEGasSubstanceQuantity.h:66
virtual SEScalarFraction & GetIntensive() override
Definition: SEGasSubstanceQuantity.h:62
Definition: SEScalarFraction.h:18
virtual bool HasExtensive() const override
Definition: SEGasSubstanceQuantity.h:58
Definition: SEScalarVolume.h:18
Definition: SEScalarPressure.h:37
Definition: SEGasSubstanceQuantity.h:20
Definition: SEScalarVolume.h:37
Definition: SESubstance.h:49
Definition: SESubstanceQuantity.h:18
Definition: SEScalarPressure.h:18
SEScalarPressure * m_PartialPressure
Definition: SEGasSubstanceQuantity.h:64
Definition: SEElectricalCircuit.h:18
Definition: SEGasCompartment.h:24
virtual SEScalarVolume & GetExtensive() override
Definition: SEGasSubstanceQuantity.h:59