SETissueCompartment.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 #pragma once
13 #include <vector>
14 
15 #include <biogears/exports.h>
16 
17 #include <biogears/cdm/CommonDataModel.h>
18 #include <biogears/cdm/compartment/SECompartment.h>
19 #include <biogears/schema/cdm/Compartment.hxx>
20 
21 namespace biogears {
22 
23 class SESubstance;
24 class SESubstanceManager;
25 class SELiquidCompartment;
26 class SEScalarMassPerMass;
27 class MassPerMassUnit;
28 class SEScalarElectricPotential;
29 class ElectricPotentialUnit;
30 
31 class SECompartmentManager;
32 class BIOGEARS_API SETissueCompartment : public SECompartment {
33  friend class SECompartmentManager;
34 
35 protected:
36  SETissueCompartment(const char* name, Logger* logger);
37  SETissueCompartment(const std::string& name, Logger* logger);
38 
39 public:
40  virtual ~SETissueCompartment();
41 
42  virtual void Clear() override;
43 
44  virtual bool Load(const CDM::TissueCompartmentData& in, SESubstanceManager& subMgr, SECircuitManager* circuits = nullptr);
45  virtual CDM::TissueCompartmentData* Unload() override;
46 
47 protected:
48  virtual void Unload(CDM::TissueCompartmentData& data);
49 
50 public:
51  virtual const SEScalar* GetScalar(const char* name) override;
52  virtual const SEScalar* GetScalar(const std::string& name) override;
53 
54  virtual bool HasChildren() const override { return !m_Children.empty(); } // Children on tissue is not supported at this time
55  virtual const std::vector<SETissueCompartment*>& GetChildren() { return m_Children; } // Children on tissue is not supported at this time
56  virtual const std::vector<SETissueCompartment*>& GetLeaves() { return m_Leaves; } // Children on tissue is not supported at this time
57 
58  virtual void StateChange() override;
59 
60  virtual bool HasAcidicPhospohlipidConcentration() const;
61  virtual SEScalarMassPerMass& GetAcidicPhospohlipidConcentration();
62  virtual double GetAcidicPhospohlipidConcentration(const MassPerMassUnit& unit) const;
63 
64  virtual bool HasMatrixVolume() const;
65  virtual SEScalarVolume& GetMatrixVolume();
66  virtual double GetMatrixVolume(const VolumeUnit& unit) const;
67 
68  virtual bool HasMembranePotential() const;
69  virtual SEScalarElectricPotential& GetMembranePotential();
70  virtual double GetMembranePotential(const ElectricPotentialUnit& unit) const;
71 
72  virtual bool HasNeutralLipidsVolumeFraction() const;
73  virtual SEScalarFraction& GetNeutralLipidsVolumeFraction();
74  virtual double GetNeutralLipidsVolumeFraction() const;
75 
76  virtual bool HasNeutralPhospholipidsVolumeFraction() const;
77  virtual SEScalarFraction& GetNeutralPhospholipidsVolumeFraction();
78  virtual double GetNeutralPhospholipidsVolumeFraction() const;
79 
80  virtual bool HasReflectionCoefficient() const;
81  virtual SEScalar0To1& GetReflectionCoefficient();
82  virtual double GetReflectionCoefficient() const;
83 
84  virtual bool HasTissueToPlasmaAlbuminRatio() const;
85  virtual SEScalar& GetTissueToPlasmaAlbuminRatio();
86  virtual double GetTissueToPlasmaAlbuminRatio() const;
87 
88  virtual bool HasTissueToPlasmaAlphaAcidGlycoproteinRatio() const;
89  virtual SEScalar& GetTissueToPlasmaAlphaAcidGlycoproteinRatio();
90  virtual double GetTissueToPlasmaAlphaAcidGlycoproteinRatio() const;
91 
92  virtual bool HasTissueToPlasmaLipoproteinRatio() const;
93  virtual SEScalar& GetTissueToPlasmaLipoproteinRatio();
94  virtual double GetTissueToPlasmaLipoproteinRatio() const;
95 
96  virtual bool HasTotalMass() const;
97  virtual SEScalarMass& GetTotalMass();
98  virtual double GetTotalMass(const MassUnit& unit) const;
99 
100 protected:
111 
112  std::vector<SETissueCompartment*> m_Children;
113  std::vector<SETissueCompartment*> m_Leaves;
114 };
115 }
std::vector< SETissueCompartment * > m_Children
Definition: SETissueCompartment.h:112
SEScalar * m_TissueToPlasmaAlbuminRatio
Definition: SETissueCompartment.h:107
Definition: SEScalar.h:33
Definition: SEScalarElectricPotential.h:18
Class corresponding to the TissueCompartmentData schema type.
Definition: Compartment.hxx:3382
SEScalarFraction * m_NeutralPhospholipidsVolumeFraction
Definition: SETissueCompartment.h:105
SEScalarFraction * m_NeutralLipidsVolumeFraction
Definition: SETissueCompartment.h:104
SEScalarMassPerMass * m_AcidicPhospohlipidConcentration
Definition: SETissueCompartment.h:101
virtual const std::vector< SETissueCompartment * > & GetLeaves()
Definition: SETissueCompartment.h:56
Definition: SECompartmentManager.h:32
SEScalar * m_TissueToPlasmaAlphaAcidGlycoproteinRatio
Definition: SETissueCompartment.h:108
Definition: SEScalarMassPerMass.h:17
Definition: SEScalarMassPerMass.h:33
SEScalar0To1 * m_ReflectionCoefficient
Definition: SETissueCompartment.h:106
Definition: SEScalarMass.h:38
SEScalarVolume * m_MatrixVolume
Definition: SETissueCompartment.h:102
Definition: Logger.h:75
virtual bool HasChildren() const override
Definition: SETissueCompartment.h:54
Definition: SEScalarFraction.h:18
SEScalar * m_TissueToPlasmaLipoproteinRatio
Definition: SETissueCompartment.h:109
Definition: SEScalar0To1.h:17
SEScalarMass * m_TotalMass
Definition: SETissueCompartment.h:110
Definition: SEScalarVolume.h:18
Definition: SEScalarVolume.h:37
Definition: SECompartment.h:31
Definition: SEScalarElectricPotential.h:34
SEScalarElectricPotential * m_MembranePotential
Definition: SETissueCompartment.h:103
Definition: SESubstanceManager.h:23
std::vector< SETissueCompartment * > m_Leaves
Definition: SETissueCompartment.h:113
Definition: SEScalarMass.h:18
Definition: SEElectricalCircuit.h:18
Definition: SETissueCompartment.h:32
Definition: SECircuitManager.h:53
virtual const std::vector< SETissueCompartment * > & GetChildren()
Definition: SETissueCompartment.h:55