@@ -34,6 +34,7 @@ constexpr char idExerciseMeanArterialPressureDelta[] = "ExerciseMeanArterialPres
3434constexpr char idFatigueLevel[] = " FatigueLevel" ;
3535constexpr char idLactateProductionRate[] = " LactateProductionRate" ;
3636constexpr char idPotassiumLostToSweat[] = " PotassiumLostToSweat" ;
37+ constexpr char idSkinTemperature[] = " SkinTemperature" ;
3738constexpr char idSkinTemperatureTorso[] = " SkinTemperatureTorso" ;
3839constexpr char idSkinTemperatureHead[] = " SkinTemperatureHead" ;
3940constexpr char idSkinTemperatureLeftArm[] = " SkinTemperatureLeftArm" ;
@@ -58,6 +59,7 @@ SEEnergySystem::SEEnergySystem(Logger* logger)
5859 m_FatigueLevel = nullptr ;
5960 m_LactateProductionRate = nullptr ;
6061 m_PotassiumLostToSweat = nullptr ;
62+ m_SkinTemperature = nullptr ;
6163 m_SkinTemperatureTorso = nullptr ;
6264 m_SkinTemperatureHead = nullptr ;
6365 m_SkinTemperatureLeftArm = nullptr ;
@@ -91,6 +93,7 @@ void SEEnergySystem::Clear()
9193 SAFE_DELETE (m_FatigueLevel);
9294 SAFE_DELETE (m_LactateProductionRate);
9395 SAFE_DELETE (m_PotassiumLostToSweat);
96+ SAFE_DELETE (m_SkinTemperature);
9497 SAFE_DELETE (m_SkinTemperatureTorso);
9598 SAFE_DELETE (m_SkinTemperatureHead);
9699 SAFE_DELETE (m_SkinTemperatureLeftArm);
@@ -129,6 +132,8 @@ const SEScalar* SEEnergySystem::GetScalar(const std::string& name)
129132 return &GetLactateProductionRate ();
130133 if (name == idPotassiumLostToSweat)
131134 return &GetPotassiumLostToSweat ();
135+ if (name == idSkinTemperature)
136+ return &GetSkinTemperature ();
132137 if (name == idSkinTemperatureTorso)
133138 return &GetSkinTemperatureTorso ();
134139 if (name == idSkinTemperatureHead)
@@ -177,6 +182,8 @@ bool SEEnergySystem::Load(const CDM::EnergySystemData& in)
177182 GetLactateProductionRate ().Load (in.LactateProductionRate ().get ());
178183 if (in.PotassiumLostToSweat ().present ())
179184 GetPotassiumLostToSweat ().Load (in.PotassiumLostToSweat ().get ());
185+ if (in.SkinTemperature ().present ())
186+ GetSkinTemperature ().Load (in.SkinTemperature ().get ());
180187 if (in.SkinTemperatureTorso ().present ())
181188 GetSkinTemperatureTorso ().Load (in.SkinTemperatureTorso ().get ());
182189 if (in.SkinTemperatureHead ().present ())
@@ -234,6 +241,8 @@ void SEEnergySystem::Unload(CDM::EnergySystemData& data) const
234241 data.LactateProductionRate (std::unique_ptr<CDM::ScalarAmountPerTimeData>(m_LactateProductionRate->Unload ()));
235242 if (m_PotassiumLostToSweat != nullptr )
236243 data.PotassiumLostToSweat (std::unique_ptr<CDM::ScalarMassData>(m_PotassiumLostToSweat->Unload ()));
244+ if (m_SkinTemperature != nullptr )
245+ data.SkinTemperature (std::unique_ptr<CDM::ScalarTemperatureData>(m_SkinTemperature->Unload ()));
237246 if (m_SkinTemperatureTorso != nullptr )
238247 data.SkinTemperatureTorso (std::unique_ptr<CDM::ScalarTemperatureData>(m_SkinTemperatureTorso->Unload ()));
239248 if (m_SkinTemperatureHead != nullptr )
@@ -452,6 +461,25 @@ double SEEnergySystem::GetPotassiumLostToSweat(const MassUnit& unit) const
452461 return m_PotassiumLostToSweat->GetValue (unit);
453462}
454463// -------------------------------------------------------------------------------
464+ bool SEEnergySystem::HasSkinTemperature () const
465+ {
466+ return m_SkinTemperature == nullptr ? false : m_SkinTemperature->IsValid ();
467+ }
468+ // -------------------------------------------------------------------------------
469+ SEScalarTemperature& SEEnergySystem::GetSkinTemperature ()
470+ {
471+ if (m_SkinTemperature == nullptr )
472+ m_SkinTemperature = new SEScalarTemperature ();
473+ return *m_SkinTemperature;
474+ }
475+ // -------------------------------------------------------------------------------
476+ double SEEnergySystem::GetSkinTemperature (const TemperatureUnit& unit) const
477+ {
478+ if (m_SkinTemperature == nullptr )
479+ return SEScalar::dNaN ();
480+ return m_SkinTemperature->GetValue (unit);
481+ }
482+ // -------------------------------------------------------------------------------
455483bool SEEnergySystem::HasSkinTemperatureTorso () const
456484{
457485 return m_SkinTemperatureTorso == nullptr ? false : m_SkinTemperatureTorso->IsValid ();
@@ -566,7 +594,6 @@ double SEEnergySystem::GetSkinTemperatureRightLeg(const TemperatureUnit& unit) c
566594 return m_SkinTemperatureRightLeg->GetValue (unit);
567595}
568596// -------------------------------------------------------------------------------
569-
570597bool SEEnergySystem::HasSodiumLostToSweat () const
571598{
572599 return m_SodiumLostToSweat == nullptr ? false : m_SodiumLostToSweat->IsValid ();
@@ -657,6 +684,7 @@ Tree<const char*> SEEnergySystem::GetPhysiologyRequestGraph() const
657684 .emplace_back (idFatigueLevel)
658685 .emplace_back (idLactateProductionRate)
659686 .emplace_back (idPotassiumLostToSweat)
687+ .emplace_back (idSkinTemperature)
660688 .emplace_back (idSkinTemperatureTorso)
661689 .emplace_back (idSkinTemperatureHead)
662690 .emplace_back (idSkinTemperatureLeftArm)
0 commit comments