What’s New in the Pulse Physiology Engine 4.4.0
×
SESubstance.h
1/* Distributed under the Apache License, Version 2.0.
2 See accompanying NOTICE file for details.*/
3
4#pragma once
10
11// Keep enums in sync with appropriate schema/cdm/SubstanceEnums.proto file !!
12enum class eSubstance_State { NullState = 0, Solid, Liquid, Gas, Molecular };
13extern CDM_DECL const std::string& eSubstance_State_Name(eSubstance_State m);
14
15class CDM_DECL SESubstance : public Loggable
16{
17 friend class PBSubstance;//friend the serialization class
18 friend class SESubstanceManager;
19protected:
20 SESubstance(const std::string& name, Logger* logger);
21public:
22 virtual ~SESubstance();
23
24 virtual void Clear();
25
26 bool SerializeToString(std::string& output, eSerializationFormat m) const;
27 bool SerializeToFile(const std::string& filename) const;
28 bool SerializeFromString(const std::string& src, eSerializationFormat m);
29 bool SerializeFromFile(const std::string& filename);
30
31 virtual const SEScalar* GetScalar(const std::string& name);
32
33 virtual std::string GetName() const;
34
35 virtual eSubstance_State GetState() const;
36 virtual void SetState(eSubstance_State state);
37 virtual bool HasState() const;
38 virtual void InvalidateState();
39
40 virtual bool HasDensity() const;
41 virtual SEScalarMassPerVolume& GetDensity();
42 virtual double GetDensity(const MassPerVolumeUnit& unit) const;
43
44 virtual bool HasMolarMass() const;
45 virtual SEScalarMassPerAmount& GetMolarMass();
46 virtual double GetMolarMass(const MassPerAmountUnit& unit) const;
47
48 virtual bool HasValence() const;
49 virtual SEScalar& GetValence();
50 virtual double GetValence() const;
51
52 // Diffusion-ish
53 virtual bool HasMaximumDiffusionFlux() const;
54 virtual SEScalarMassPerAreaTime& GetMaximumDiffusionFlux();
55 virtual double GetMaximumDiffusionFlux(const MassPerAreaTimeUnit& unit) const;
56
57 virtual bool HasMichaelisCoefficient() const;
58 virtual SEScalar& GetMichaelisCoefficient();
59 virtual double GetMichaelisCoefficient() const;
60
61 // Liquid-ish
62 virtual bool HasBloodConcentration() const;
63 virtual SEScalarMassPerVolume& GetBloodConcentration();
64 virtual double GetBloodConcentration(const MassPerVolumeUnit& unit) const;
65
66 virtual bool HasMassInBody() const;
67 virtual SEScalarMass& GetMassInBody();
68 virtual double GetMassInBody(const MassUnit& unit) const;
69
70 virtual bool HasMassInBlood() const;
71 virtual SEScalarMass& GetMassInBlood();
72 virtual double GetMassInBlood(const MassUnit& unit) const;
73
74 virtual bool HasMassInTissue() const;
75 virtual SEScalarMass& GetMassInTissue();
76 virtual double GetMassInTissue(const MassUnit& unit) const;
77
78 virtual bool HasPlasmaConcentration() const;
79 virtual SEScalarMassPerVolume& GetPlasmaConcentration();
80 virtual double GetPlasmaConcentration(const MassPerVolumeUnit& unit) const;
81
82 virtual bool HasSystemicMassCleared() const;
83 virtual SEScalarMass& GetSystemicMassCleared();
84 virtual double GetSystemicMassCleared(const MassUnit& unit) const;
85
86 virtual bool HasTissueConcentration() const;
87 virtual SEScalarMassPerVolume& GetTissueConcentration();
88 virtual double GetTissueConcentration(const MassPerVolumeUnit& unit) const;
89
90 // Gas-ish
91 virtual bool HasAlveolarTransfer() const;
92 virtual SEScalarVolumePerTime& GetAlveolarTransfer();
93 virtual double GetAlveolarTransfer(const VolumePerTimeUnit& unit) const;
94
95 virtual bool HasDiffusingCapacity() const;
96 virtual SEScalarVolumePerTimePressure& GetDiffusingCapacity();
97 virtual double GetDiffusingCapacity(const VolumePerTimePressureUnit& unit) const;
98
99 virtual bool HasEndTidalFraction() const;
100 virtual SEScalar0To1& GetEndTidalFraction();
101 virtual double GetEndTidalFraction() const;
102
103 virtual bool HasEndTidalPressure() const;
104 virtual SEScalarPressure& GetEndTidalPressure();
105 virtual double GetEndTidalPressure(const PressureUnit& unit) const;
106
107 virtual bool HasRelativeDiffusionCoefficient() const;
108 virtual SEScalar& GetRelativeDiffusionCoefficient();
109 virtual double GetRelativeDiffusionCoefficient() const;
110
111 virtual bool HasSolubilityCoefficient() const;
112 virtual SEScalarInversePressure& GetSolubilityCoefficient();
113 virtual double GetSolubilityCoefficient(const InversePressureUnit& unit) const;
114
115 virtual bool HasAerosolization() const;
116 virtual SESubstanceAerosolization& GetAerosolization();
117 virtual const SESubstanceAerosolization* GetAerosolization() const;
118 virtual void RemoveAerosolization();
119
120 virtual bool HasBioavailability() const;
121 virtual SESubstanceBioavailability& GetBioavailability();
122 virtual const SESubstanceBioavailability* GetBioavailability() const;
123 virtual void RemoveBioavailability();
124
125 virtual bool HasClearance() const;
126 virtual SESubstanceClearance& GetClearance();
127 virtual const SESubstanceClearance* GetClearance() const;
128 virtual void RemoveClearance();
129
130 virtual bool HasPK() const;
131 virtual SESubstancePharmacokinetics& GetPK();
132 virtual const SESubstancePharmacokinetics* GetPK() const;
133 virtual void RemovePK();
134
135 virtual bool HasPD() const;
136 virtual SESubstancePharmacodynamics& GetPD();
137 virtual const SESubstancePharmacodynamics* GetPD() const;
138 virtual void RemovePD();
139
140
141protected:
142
143 std::string m_Name;
144 eSubstance_State m_State;
148
151
159
166
172};
Definition: SEScalarInversePressure.h:8
Definition: Logger.h:23
Definition: Logger.h:71
Definition: SEScalarMassPerAmount.h:8
Definition: SEScalarMassPerAreaTime.h:8
Definition: SEScalarMassPerVolume.h:8
Definition: SEScalarMass.h:8
Definition: PBSubstance.h:21
Definition: SEScalarPressure.h:8
Definition: SEScalar0To1.h:8
Definition: SEScalar.h:19
Definition: SEScalarInversePressure.h:27
Definition: SEScalarMass.h:28
Definition: SEScalarMassPerAmount.h:34
Definition: SEScalarMassPerAreaTime.h:24
Definition: SEScalarMassPerVolume.h:37
Definition: SEScalarPressure.h:29
Definition: SEScalarVolumePerTime.h:32
Definition: SEScalarVolumePerTimePressure.h:27
Definition: SESubstanceAerosolization.h:7
Definition: SESubstanceBioavailability.h:9
Definition: SESubstanceClearance.h:9
Definition: SESubstance.h:16
SESubstanceClearance * m_Clearance
Definition: SESubstance.h:169
eSubstance_State m_State
Definition: SESubstance.h:144
SEScalarVolumePerTimePressure * m_DiffusingCapacity
Definition: SESubstance.h:161
SEScalarMass * m_SystemicMassCleared
Definition: SESubstance.h:157
SEScalarInversePressure * m_SolubilityCoefficient
Definition: SESubstance.h:165
SEScalarVolumePerTime * m_AlveolarTransfer
Definition: SESubstance.h:160
SEScalarMassPerVolume * m_BloodConcentration
Definition: SESubstance.h:152
SEScalarMassPerVolume * m_Density
Definition: SESubstance.h:145
SEScalarMassPerAreaTime * m_MaximumDiffusionFlux
Definition: SESubstance.h:149
SEScalarMassPerVolume * m_TissueConcentration
Definition: SESubstance.h:158
SEScalarMass * m_MassInBlood
Definition: SESubstance.h:154
SEScalar * m_RelativeDiffusionCoefficient
Definition: SESubstance.h:164
SEScalar * m_MichaelisCoefficient
Definition: SESubstance.h:150
SESubstancePharmacokinetics * m_PK
Definition: SESubstance.h:170
SEScalarMass * m_MassInBody
Definition: SESubstance.h:153
SEScalarMassPerVolume * m_PlasmaConcentration
Definition: SESubstance.h:156
SEScalarMass * m_MassInTissue
Definition: SESubstance.h:155
SESubstanceAerosolization * m_Aerosolization
Definition: SESubstance.h:167
SEScalarPressure * m_EndTidalPressure
Definition: SESubstance.h:163
SEScalarMassPerAmount * m_MolarMass
Definition: SESubstance.h:146
SESubstanceBioavailability * m_Bioavailability
Definition: SESubstance.h:168
std::string m_Name
Definition: SESubstance.h:143
SEScalar * m_Valence
Definition: SESubstance.h:147
SESubstancePharmacodynamics * m_PD
Definition: SESubstance.h:171
SEScalar0To1 * m_EndTidalFraction
Definition: SESubstance.h:162
Definition: SESubstanceManager.h:10
virtual void Clear()
Definition: SESubstanceManager.cpp:24
Definition: SESubstancePharmacodynamics.h:8
Definition: SESubstancePharmacokinetics.h:9
Definition: SEScalarVolumePerTimePressure.h:8
Definition: SEScalarVolumePerTime.h:8

Distributed under the Apache License, Version 2.0.

See accompanying NOTICE file for details.