SETissueSystem.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/system/SESystem.h>
15 #include <biogears/schema/biogears/BioGearsPhysiology.hxx>
16 
17 namespace biogears {
18 class SEScalarVolumePerTime;
19 class VolumePerTimeUnit;
20 class SEScalar0To1;
21 class SEScalarVolume;
22 class VolumeUnit;
23 class SEScalarAmountPerVolume;
24 class AmountPerVolumeUnit;
25 class SEScalarMassPerVolume;
26 class MassPerVolumeUnit;
27 class SEScalarMass;
28 class MassUnit;
29 
30 class BIOGEARS_API SETissueSystem : public SESystem {
31 public:
32  SETissueSystem(Logger* logger);
33  ~SETissueSystem() override;
34 
35  static size_t TypeHash() { return reinterpret_cast<size_t>(&TypeHash); }
36  static constexpr char const * const TypeTag() { return "SETissueSystem"; }
37  const char* classname() const override { return TypeTag(); }
38  size_t hash_code() const override { return TypeHash(); }
39 
40  void Clear() override; // Deletes all members
41 
42  const SEScalar* GetScalar(const char* name) override;
43  const SEScalar* GetScalar(const std::string& name) override;
44 
45  bool Load(const CDM::TissueSystemData& in);
46  CDM::TissueSystemData* Unload() const override;
47 
48  Tree<const char*> GetPhysiologyRequestGraph() const override;
49 protected:
50  void Unload(CDM::TissueSystemData& data) const;
51 
52 public:
53  bool HasCarbonDioxideProductionRate() const;
54  SEScalarVolumePerTime& GetCarbonDioxideProductionRate();
55  double GetCarbonDioxideProductionRate(const VolumePerTimeUnit& unit) const;
56 
57  bool HasDehydrationFraction() const;
58  SEScalar0To1& GetDehydrationFraction();
59  double GetDehydrationFraction() const;
60 
61  bool HasExtracellularFluidVolume() const;
62  SEScalarVolume& GetExtracellularFluidVolume();
63  double GetExtracellularFluidVolume(const VolumeUnit& unit) const;
64 
65  bool HasExtravascularFluidVolume() const;
66  SEScalarVolume& GetExtravascularFluidVolume();
67  double GetExtravascularFluidVolume(const VolumeUnit& unit) const;
68 
69  bool HasIntracellularFluidVolume() const;
70  SEScalarVolume& GetIntracellularFluidVolume();
71  double GetIntracellularFluidVolume(const VolumeUnit& unit) const;
72 
73  bool HasTotalBodyFluidVolume() const;
74  SEScalarVolume& GetTotalBodyFluidVolume();
75  double GetTotalBodyFluidVolume(const VolumeUnit& unit) const;
76 
77  bool HasIntracellularFluidPH() const;
78  SEScalar& GetIntracellularFluidPH();
79  double GetIntracellularFluidPH() const;
80 
81  bool HasOxygenConsumptionRate() const;
82  SEScalarVolumePerTime& GetOxygenConsumptionRate();
83  double GetOxygenConsumptionRate(const VolumePerTimeUnit& unit) const;
84 
85  bool HasRespiratoryExchangeRatio() const;
86  SEScalar& GetRespiratoryExchangeRatio();
87  double GetRespiratoryExchangeRatio() const;
88 
89  bool HasLiverInsulinSetPoint() const;
90  SEScalarAmountPerVolume& GetLiverInsulinSetPoint();
91  double GetLiverInsulinSetPoint(const AmountPerVolumeUnit& unit) const;
92 
93  bool HasLiverGlucagonSetPoint() const;
94  SEScalarMassPerVolume& GetLiverGlucagonSetPoint();
95  double GetLiverGlucagonSetPoint(const MassPerVolumeUnit& unit) const;
96 
97  bool HasMuscleInsulinSetPoint() const;
98  SEScalarAmountPerVolume& GetMuscleInsulinSetPoint();
99  double GetMuscleInsulinSetPoint(const AmountPerVolumeUnit& unit) const;
100 
101  bool HasMuscleGlucagonSetPoint() const;
102  SEScalarMassPerVolume& GetMuscleGlucagonSetPoint();
103  double GetMuscleGlucagonSetPoint(const MassPerVolumeUnit& unit) const;
104 
105  bool HasFatInsulinSetPoint() const;
106  SEScalarAmountPerVolume& GetFatInsulinSetPoint();
107  double GetFatInsulinSetPoint(const AmountPerVolumeUnit& unit) const;
108 
109  bool HasFatGlucagonSetPoint() const;
110  SEScalarMassPerVolume& GetFatGlucagonSetPoint();
111  double GetFatGlucagonSetPoint(const MassPerVolumeUnit& unit) const;
112 
113  bool HasLiverGlycogen() const;
114  SEScalarMass& GetLiverGlycogen();
115  double GetLiverGlycogen(const MassUnit& unit) const;
116 
117  bool HasMuscleGlycogen() const;
118  SEScalarMass& GetMuscleGlycogen();
119  double GetMuscleGlycogen(const MassUnit& unit) const;
120 
121  bool HasStoredProtein() const;
122  SEScalarMass& GetStoredProtein();
123  double GetStoredProtein(const MassUnit& unit) const;
124 
125  bool HasStoredFat() const;
126  SEScalarMass& GetStoredFat();
127  double GetStoredFat(const MassUnit& unit) const;
128 
129 protected:
149 };
150 }
SEScalarMassPerVolume * m_FatGlucagonSetPoint
Definition: SETissueSystem.h:144
SEScalarMass * m_MuscleGlycogen
Definition: SETissueSystem.h:146
SEScalarVolume * m_IntracellularFluidVolume
Definition: SETissueSystem.h:134
SEScalarVolume * m_ExtracellularFluidVolume
Definition: SETissueSystem.h:132
SEScalarMassPerVolume * m_MuscleGlucagonSetPoint
Definition: SETissueSystem.h:142
Definition: SEScalar.h:33
size_t hash_code() const override
Definition: SETissueSystem.h:38
SEScalarAmountPerVolume * m_LiverInsulinSetPoint
Definition: SETissueSystem.h:139
SEScalar0To1 * m_DehydrationFraction
Definition: SETissueSystem.h:131
SEScalarAmountPerVolume * m_MuscleInsulinSetPoint
Definition: SETissueSystem.h:141
static constexpr char const *const TypeTag()
Definition: SETissueSystem.h:36
Definition: SESystem.h:27
const char * classname() const override
Definition: SETissueSystem.h:37
SEScalarMass * m_StoredProtein
Definition: SETissueSystem.h:147
Definition: SEScalarVolumePerTime.h:18
Definition: SEScalarMass.h:38
Definition: SETissueSystem.h:30
Definition: Logger.h:75
Definition: SEScalarAmountPerVolume.h:17
SEScalar * m_RespiratoryExchangeRatio
Definition: SETissueSystem.h:138
SEScalarMass * m_StoredFat
Definition: SETissueSystem.h:148
Class corresponding to the TissueSystemData schema type.
Definition: Physiology.hxx:19575
Definition: SEScalarAmountPerVolume.h:37
SEScalarMass * m_LiverGlycogen
Definition: SETissueSystem.h:145
Definition: SEScalar0To1.h:17
Definition: SEScalarVolume.h:18
SEScalarVolumePerTime * m_CarbonDioxideProductionRate
Definition: SETissueSystem.h:130
Definition: SEScalarVolume.h:37
static size_t TypeHash()
Definition: SETissueSystem.h:35
SEScalarVolume * m_TotalBodyFluidVolume
Definition: SETissueSystem.h:135
SEScalarVolume * m_ExtravascularFluidVolume
Definition: SETissueSystem.h:133
Definition: SEScalarVolumePerTime.h:40
SEScalarMassPerVolume * m_LiverGlucagonSetPoint
Definition: SETissueSystem.h:140
SEScalarVolumePerTime * m_OxygenConsumptionRate
Definition: SETissueSystem.h:137
Definition: SEScalarMassPerVolume.h:46
Definition: SEScalarMassPerVolume.h:18
Definition: SEScalarMass.h:18
Definition: SEElectricalCircuit.h:18
SEScalarAmountPerVolume * m_FatInsulinSetPoint
Definition: SETissueSystem.h:143
SEScalar * m_IntracellularFluidPH
Definition: SETissueSystem.h:136