Environment.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/CommonDataModel.h>
15 #include <biogears/exports.h>
16 
17 #include <biogears/cdm/system/environment/SEEnvironment.h>
18 #include <biogears/engine/Controller/BioGearsSystem.h>
19 #include <biogears/schema/biogears/BioGearsEnvironment.hxx>
20 #include "Saturation.h"
21 
22 namespace biogears {
23 class SEPatient;
24 class SEPatientActionCollection;
25 class SEEnvironmentActionCollection;
26 class SEGasCompartment;
27 class SELiquidCompartment;
28 class SEThermalCircuit;
29 class SEThermalCircuitNode;
30 class SEThermalCircuitPath;
31 class BioGears;
35 class BIOGEARS_API Environment : public SEEnvironment, public BioGearsSystem {
36  friend class BioGears;
37  friend class BioGearsEngineTest;
38 
39 protected:
40  static auto make_unique(BioGears& bg) -> std::unique_ptr<Environment>;
41  Environment(BioGears& bg);
43 
44 public:
45  virtual ~Environment() override;
46 
47  static size_t TypeHash() { return reinterpret_cast<size_t>(&TypeHash); }
48  static constexpr char const * const TypeTag() { return "Environment"; }
49  const char* classname() const override { return TypeTag(); }
50  size_t hash_code() const override { return TypeHash(); }
51 
52  void Clear() override;
53 
54  // Set members to a stable homeostatic state
55  void Initialize() override;
56 
57  // Load a state
58  virtual bool Load(const CDM::BioGearsEnvironmentData& in);
59  virtual CDM::BioGearsEnvironmentData* Unload() const override;
60 
61 protected:
62  virtual void Unload(CDM::BioGearsEnvironmentData& data) const;
63 
64  // Set pointers and other member varialbes common to both homeostatic initialization and loading a state
65  void SetUp() override;
66 
67 public:
68  void AtSteadyState() override;
69  void PreProcess() override;
70  void Process() override;
71  void PostProcess() override;
72 
73  void StateChange() override;
74 
75 protected:
76  void ProcessActions();
77  void CalculateSupplementalValues();
78  void CalculateRadiation();
79  void CalculateConvection();
80  void CalculateEvaporation();
81  void CalculateRespiration();
82 
83  // Serializable member variables (Set in Initialize and in schema)
84 
85  // Stateless member variable (Calculated in Supplemental Method and used in other methods)
90  //Prandtl number calculation
94  //Grashof number calculation
96  // For Convection calculations
98 
99  // Stateless member variable (Set in SetUp())
100  // Patient and Actions
104  // Compartments
107  //Circuits
109  //Nodes
114  //Paths
125 };
126 }
SEThermalCircuitPath * m_SkinToClothing
Definition: Environment.h:115
double m_WaterSpecificHeat_J_Per_kg_K
Definition: Environment.h:91
SELiquidCompartment * m_AmbientAerosols
Definition: Environment.h:106
double m_dLewisRelation
Definition: Environment.h:86
The Environment class characterizes the environment and manages interactions between the body its sur...
Definition: Environment.h:35
double m_PatientEquivalentDiameter_m
Definition: Environment.h:97
double m_dWaterVaporPressureAtSkin_Pa
Definition: Environment.h:89
double m_WaterThermalConductivity_W_Per_m_K
Definition: Environment.h:93
BioGears & m_data
Definition: Environment.h:42
Definition: SEThermalCircuitPath.h:25
SEThermalCircuitPath * m_ClothingToEnclosurePath
Definition: Environment.h:119
SEThermalCircuitNode * m_SkinNode
Definition: Environment.h:111
static constexpr char const *const TypeTag()
Definition: Environment.h:48
SEThermalCircuitPath * m_ClothingToEnvironmentPath
Definition: Environment.h:121
SEThermalCircuit * m_EnvironmentCircuit
Definition: Environment.h:108
Definition: SEEnvironmentActionCollection.h:20
size_t hash_code() const override
Definition: Environment.h:50
Class corresponding to the BioGearsEnvironmentData schema type.
Definition: BioGearsEnvironment.hxx:682
Definition: SEPatient.h:48
SEThermalCircuitPath * m_EnvironmentCoreToGroundPath
Definition: Environment.h:124
Definition: SELiquidCompartment.h:27
SEEnvironmentActionCollection * m_EnvironmentActions
Definition: Environment.h:103
SEThermalCircuitPath * m_GroundToEnclosurePath
Definition: Environment.h:120
SEThermalCircuitNode * m_EnclosureNode
Definition: Environment.h:113
double m_ThermalExpansion_Per_K
Definition: Environment.h:95
const char * classname() const override
Definition: Environment.h:49
Definition: BioGearsEngineTest.h:24
SEThermalCircuitPath * m_EnvironmentSkinToGroundPath
Definition: Environment.h:123
Definition: SEThermalCircuitNode.h:20
double m_WaterViscosity_N_s_Per_m2
Definition: Environment.h:92
static size_t TypeHash()
Definition: Environment.h:47
SEThermalCircuitPath * m_ActiveTemperaturePath
Definition: Environment.h:117
SEPatientActionCollection * m_PatientActions
Definition: Environment.h:102
SEThermalCircuitNode * m_ClothingNode
Definition: Environment.h:112
SEThermalCircuitNode * m_ThermalEnvironment
Definition: Environment.h:110
SEThermalCircuitPath * m_ActiveHeatTransferRatePath
Definition: Environment.h:116
Manages and controls execution of all data/systems in BioGears.
Definition: BioGears.h:86
SEThermalCircuitPath * m_GroundToEnvironmentPath
Definition: Environment.h:122
SEPatient * m_Patient
Definition: Environment.h:101
Generic class for handling the BioGears stabilization methodology.
Definition: BioGearsSystem.h:23
Definition: SEThermalCircuit.h:20
Definition: SEElectricalCircuit.h:18
double m_dWaterVaporPressureInAmbientAir_Pa
Definition: Environment.h:88
double m_dHeatOfVaporizationOfWater_J_Per_kg
Definition: Environment.h:87
SEThermalCircuitPath * m_ActiveSwitchPath
Definition: Environment.h:118
Definition: SEPatientActionCollection.h:54
Definition: SEEnvironment.h:33
SEGasCompartment * m_AmbientGases
Definition: Environment.h:105
Definition: SEGasCompartment.h:24