SEEnvironmentalConditions.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 #include <biogears/schema/cdm/Environment.hxx>
17 
18 CDM_BIND_DECL(EnvironmentalConditionsData)
19 
20 namespace biogears {
21 class SESubstance;
22 class SESubstanceFraction;
23 class SESubstanceConcentration;
24 class SEEnvironment;
25 class SESubstanceManager;
26 class SEEnvironmentChange;
27 class SEInitialEnvironment;
28 
29 class SEScalar;
30 class SEScalarMassPerVolume;
31 class MassPerVolumeUnit;
32 class SEScalarLengthPerTime;
33 class LengthPerTimeUnit;
34 class SEScalarTemperature;
35 class TemperatureUnit;
36 class SEScalarHeatResistanceArea;
37 class HeatResistanceAreaUnit;
38 class SEScalarPressure;
39 class PressureUnit;
40 class SEScalarFraction;
41 
42 class BIOGEARS_API SEEnvironmentalConditions : public Loggable {
43 protected:
44  friend SEEnvironment;
47 
48 public:
50  virtual ~SEEnvironmentalConditions();
51 
52  virtual void Clear();
53 
54  virtual bool Load(const CDM::EnvironmentalConditionsData& in);
55  virtual bool Load(const char* environmentFile);
56  virtual bool Load(const std::string& environmentFile);
57  virtual CDM::EnvironmentalConditionsData* Unload() const;
58 
59  virtual const SEScalar* GetScalar(const char* name);
60  virtual const SEScalar* GetScalar(const std::string& name);
61 
62  virtual std::string GetName() const;
63  virtual const char* GetName_cStr() const;
64  virtual void SetName(const char* name);
65  virtual void SetName(const std::string& name);
66  virtual bool HasName() const;
67  virtual void InvalidateName();
68 
69  virtual CDM::enumSurroundingType::value GetSurroundingType() const;
70  virtual void SetSurroundingType(CDM::enumSurroundingType::value name);
71  virtual bool HasSurroundingType() const;
72  virtual void InvalidateSurroundingType();
73 
74  virtual bool HasAirDensity() const;
75  virtual SEScalarMassPerVolume& GetAirDensity();
76  virtual double GetAirDensity(const MassPerVolumeUnit& unit) const;
77 
78  virtual bool HasAirVelocity() const;
79  virtual SEScalarLengthPerTime& GetAirVelocity();
80  virtual double GetAirVelocity(const LengthPerTimeUnit& unit) const;
81 
82  virtual bool HasAmbientTemperature() const;
83  virtual SEScalarTemperature& GetAmbientTemperature();
84  virtual double GetAmbientTemperature(const TemperatureUnit& unit) const;
85 
86  virtual bool HasAtmosphericPressure() const;
87  virtual SEScalarPressure& GetAtmosphericPressure();
88  virtual double GetAtmosphericPressure(const PressureUnit& unit) const;
89 
90  virtual bool HasClothingResistance() const;
91  virtual SEScalarHeatResistanceArea& GetClothingResistance();
92  virtual double GetClothingResistance(const HeatResistanceAreaUnit& unit) const;
93 
94  virtual bool HasEmissivity() const;
95  virtual SEScalarFraction& GetEmissivity();
96  virtual double GetEmissivity() const;
97 
98  virtual bool HasMeanRadiantTemperature() const;
99  virtual SEScalarTemperature& GetMeanRadiantTemperature();
100  virtual double GetMeanRadiantTemperature(const TemperatureUnit& unit) const;
101 
102  virtual bool HasRelativeHumidity() const;
103  virtual SEScalarFraction& GetRelativeHumidity();
104  virtual double GetRelativeHumidity() const;
105 
106  virtual bool HasRespirationAmbientTemperature() const;
107  virtual SEScalarTemperature& GetRespirationAmbientTemperature();
108  virtual double GetRespirationAmbientTemperature(const TemperatureUnit& unit) const;
109 
110  bool HasAmbientGas() const;
111  bool HasAmbientGas(const SESubstance& substance) const;
112  const std::vector<SESubstanceFraction*>& GetAmbientGases();
113  const std::vector<const SESubstanceFraction*>& GetAmbientGases() const;
114  SESubstanceFraction& GetAmbientGas(SESubstance& substance);
115  const SESubstanceFraction* GetAmbientGas(const SESubstance& substance) const;
116  void RemoveAmbientGas(const SESubstance& substance);
117  void RemoveAmbientGases();
118 
119  bool HasAmbientAerosol() const;
120  bool HasAmbientAerosol(const SESubstance& substance) const;
121  const std::vector<SESubstanceConcentration*>& GetAmbientAerosols();
122  const std::vector<const SESubstanceConcentration*>& GetAmbientAerosols() const;
123  SESubstanceConcentration& GetAmbientAerosol(SESubstance& substance);
124  const SESubstanceConcentration* GetAmbientAerosol(const SESubstance& substance) const;
125  void RemoveAmbientAerosol(const SESubstance& substance);
126  void RemoveAmbientAerosols();
127 
128 protected:
129  virtual void Unload(CDM::EnvironmentalConditionsData& data) const;
130  virtual void Merge(const SEEnvironmentalConditions& from);
131 
132 protected:
134 
135  std::string m_Name;
145 
146  std::vector<SESubstanceFraction*> m_AmbientGases;
147  std::vector<const SESubstanceFraction*> m_cAmbientGases;
148 
149  std::vector<SESubstanceConcentration*> m_AmbientAerosols;
150  std::vector<const SESubstanceConcentration*> m_cAmbientAerosols;
151 
153 };
154 }
SEScalarTemperature * m_RespirationAmbientTemperature
Definition: SEEnvironmentalConditions.h:144
SEScalarTemperature * m_AmbientTemperature
Definition: SEEnvironmentalConditions.h:138
Definition: SEEnvironmentalConditions.h:42
Definition: SEScalarHeatResistanceArea.h:36
Class corresponding to the EnvironmentalConditionsData schema type.
Definition: Environment.hxx:842
Definition: SEScalar.h:33
friend SEEnvironment
Definition: SEEnvironmentalConditions.h:44
Definition: SEScalarTemperature.h:36
std::vector< SESubstanceFraction * > m_AmbientGases
Definition: SEEnvironmentalConditions.h:146
std::vector< const SESubstanceConcentration * > m_cAmbientAerosols
Definition: SEEnvironmentalConditions.h:150
std::vector< const SESubstanceFraction * > m_cAmbientGases
Definition: SEEnvironmentalConditions.h:147
Definition: SEScalarTemperature.h:18
SEScalarFraction * m_RelativeHumidity
Definition: SEEnvironmentalConditions.h:143
SEScalarTemperature * m_MeanRadiantTemperature
Definition: SEEnvironmentalConditions.h:142
Definition: Logger.h:27
CDM::enumSurroundingType::value m_SurroundingType
Definition: SEEnvironmentalConditions.h:133
SEScalarLengthPerTime * m_AirVelocity
Definition: SEEnvironmentalConditions.h:137
Definition: SEScalarFraction.h:18
Definition: SEScalarHeatResistanceArea.h:18
Definition: SEScalarLengthPerTime.h:38
friend SEEnvironmentChange
Definition: SEEnvironmentalConditions.h:45
Definition: SESubstanceConcentration.h:25
Definition: SEScalarPressure.h:37
SESubstanceManager & m_Substances
Definition: SEEnvironmentalConditions.h:152
std::vector< SESubstanceConcentration * > m_AmbientAerosols
Definition: SEEnvironmentalConditions.h:149
Definition: SESubstance.h:49
Definition: SEScalarLengthPerTime.h:18
Definition: SESubstanceFraction.h:25
std::string m_Name
Definition: SEEnvironmentalConditions.h:135
SEScalarPressure * m_AtmosphericPressure
Definition: SEEnvironmentalConditions.h:139
Definition: SEScalarPressure.h:18
Definition: SEScalarMassPerVolume.h:46
Definition: SEScalarMassPerVolume.h:18
SEScalarFraction * m_Emissivity
Definition: SEEnvironmentalConditions.h:141
SEScalarHeatResistanceArea * m_ClothingResistance
Definition: SEEnvironmentalConditions.h:140
Definition: SESubstanceManager.h:23
SEScalarMassPerVolume * m_AirDensity
Definition: SEEnvironmentalConditions.h:136
Definition: SEElectricalCircuit.h:18
value
Underlying enum type.
Definition: Environment.hxx:695
friend SEInitialEnvironment
Definition: SEEnvironmentalConditions.h:46