@@ -36,6 +36,10 @@ constexpr char idLactateProductionRate[] = "LactateProductionRate";
3636constexpr char idPotassiumLostToSweat[] = " PotassiumLostToSweat" ;
3737constexpr char idSkinTemperatureTorso[] = " SkinTemperatureTorso" ;
3838constexpr char idSkinTemperatureHead[] = " SkinTemperatureHead" ;
39+ constexpr char idSkinTemperatureLeftArm[] = " SkinTemperatureLeftArm" ;
40+ constexpr char idSkinTemperatureRightArm[] = " SkinTemperatureRightArm" ;
41+ constexpr char idSkinTemperatureLeftLeg[] = " SkinTemperatureLeftLeg" ;
42+ constexpr char idSkinTemperatureRightLeg[] = " SkinTemperatureRightLeg" ;
3943constexpr char idSodiumLostToSweat[] = " SodiumLostToSweat" ;
4044constexpr char idSweatRate[] = " SweatRate" ;
4145constexpr char idTotalMetabolicRate[] = " TotalMetabolicRate" ;
@@ -56,6 +60,10 @@ SEEnergySystem::SEEnergySystem(Logger* logger)
5660 m_PotassiumLostToSweat = nullptr ;
5761 m_SkinTemperatureTorso = nullptr ;
5862 m_SkinTemperatureHead = nullptr ;
63+ m_SkinTemperatureLeftArm = nullptr ;
64+ m_SkinTemperatureRightArm = nullptr ;
65+ m_SkinTemperatureLeftLeg = nullptr ;
66+ m_SkinTemperatureRightLeg = nullptr ;
5967 m_SodiumLostToSweat = nullptr ;
6068 m_SweatRate = nullptr ;
6169 m_TotalMetabolicRate = nullptr ;
@@ -85,6 +93,10 @@ void SEEnergySystem::Clear()
8593 SAFE_DELETE (m_PotassiumLostToSweat);
8694 SAFE_DELETE (m_SkinTemperatureTorso);
8795 SAFE_DELETE (m_SkinTemperatureHead);
96+ SAFE_DELETE (m_SkinTemperatureLeftArm);
97+ SAFE_DELETE (m_SkinTemperatureRightArm);
98+ SAFE_DELETE (m_SkinTemperatureLeftLeg);
99+ SAFE_DELETE (m_SkinTemperatureRightLeg);
88100 SAFE_DELETE (m_SodiumLostToSweat);
89101 SAFE_DELETE (m_SweatRate);
90102 SAFE_DELETE (m_TotalMetabolicRate);
@@ -121,6 +133,14 @@ const SEScalar* SEEnergySystem::GetScalar(const std::string& name)
121133 return &GetSkinTemperatureTorso ();
122134 if (name == idSkinTemperatureHead)
123135 return &GetSkinTemperatureHead ();
136+ if (name == idSkinTemperatureLeftArm)
137+ return &GetSkinTemperatureLeftArm ();
138+ if (name == idSkinTemperatureRightArm)
139+ return &GetSkinTemperatureRightArm ();
140+ if (name == idSkinTemperatureLeftLeg)
141+ return &GetSkinTemperatureLeftLeg ();
142+ if (name == idSkinTemperatureRightLeg)
143+ return &GetSkinTemperatureRightLeg ();
124144 if (name == idSodiumLostToSweat)
125145 return &GetSodiumLostToSweat ();
126146 if (name == idSweatRate)
@@ -161,6 +181,14 @@ bool SEEnergySystem::Load(const CDM::EnergySystemData& in)
161181 GetSkinTemperatureTorso ().Load (in.SkinTemperatureTorso ().get ());
162182 if (in.SkinTemperatureHead ().present ())
163183 GetSkinTemperatureHead ().Load (in.SkinTemperatureHead ().get ());
184+ if (in.SkinTemperatureLeftArm ().present ())
185+ GetSkinTemperatureLeftArm ().Load (in.SkinTemperatureLeftArm ().get ());
186+ if (in.SkinTemperatureRightArm ().present ())
187+ GetSkinTemperatureRightArm ().Load (in.SkinTemperatureRightArm ().get ());
188+ if (in.SkinTemperatureLeftLeg ().present ())
189+ GetSkinTemperatureLeftLeg ().Load (in.SkinTemperatureLeftLeg ().get ());
190+ if (in.SkinTemperatureRightLeg ().present ())
191+ GetSkinTemperatureRightLeg ().Load (in.SkinTemperatureRightLeg ().get ());
164192 if (in.SodiumLostToSweat ().present ())
165193 GetSodiumLostToSweat ().Load (in.SodiumLostToSweat ().get ());
166194 if (in.SweatRate ().present ())
@@ -210,6 +238,14 @@ void SEEnergySystem::Unload(CDM::EnergySystemData& data) const
210238 data.SkinTemperatureTorso (std::unique_ptr<CDM::ScalarTemperatureData>(m_SkinTemperatureTorso->Unload ()));
211239 if (m_SkinTemperatureHead != nullptr )
212240 data.SkinTemperatureHead (std::unique_ptr<CDM::ScalarTemperatureData>(m_SkinTemperatureHead->Unload ()));
241+ if (m_SkinTemperatureLeftArm != nullptr )
242+ data.SkinTemperatureLeftArm (std::unique_ptr<CDM::ScalarTemperatureData>(m_SkinTemperatureLeftArm->Unload ()));
243+ if (m_SkinTemperatureRightArm != nullptr )
244+ data.SkinTemperatureRightArm (std::unique_ptr<CDM::ScalarTemperatureData>(m_SkinTemperatureRightArm->Unload ()));
245+ if (m_SkinTemperatureLeftLeg != nullptr )
246+ data.SkinTemperatureLeftLeg (std::unique_ptr<CDM::ScalarTemperatureData>(m_SkinTemperatureLeftLeg->Unload ()));
247+ if (m_SkinTemperatureRightLeg != nullptr )
248+ data.SkinTemperatureRightLeg (std::unique_ptr<CDM::ScalarTemperatureData>(m_SkinTemperatureRightLeg->Unload ()));
213249 if (m_SodiumLostToSweat != nullptr )
214250 data.SodiumLostToSweat (std::unique_ptr<CDM::ScalarMassData>(m_SodiumLostToSweat->Unload ()));
215251 if (m_SweatRate != nullptr )
@@ -454,6 +490,82 @@ double SEEnergySystem::GetSkinTemperatureHead(const TemperatureUnit& unit) const
454490 return m_SkinTemperatureHead->GetValue (unit);
455491}
456492// -------------------------------------------------------------------------------
493+ bool SEEnergySystem::HasSkinTemperatureLeftArm () const
494+ {
495+ return m_SkinTemperatureLeftArm == nullptr ? false : m_SkinTemperatureLeftArm->IsValid ();
496+ }
497+ // -------------------------------------------------------------------------------
498+ SEScalarTemperature& SEEnergySystem::GetSkinTemperatureLeftArm ()
499+ {
500+ if (m_SkinTemperatureLeftArm == nullptr )
501+ m_SkinTemperatureLeftArm = new SEScalarTemperature ();
502+ return *m_SkinTemperatureLeftArm;
503+ }
504+ // -------------------------------------------------------------------------------
505+ double SEEnergySystem::GetSkinTemperatureLeftArm (const TemperatureUnit& unit) const
506+ {
507+ if (m_SkinTemperatureLeftArm == nullptr )
508+ return SEScalar::dNaN ();
509+ return m_SkinTemperatureLeftArm->GetValue (unit);
510+ }
511+ // -------------------------------------------------------------------------------
512+ bool SEEnergySystem::HasSkinTemperatureRightArm () const
513+ {
514+ return m_SkinTemperatureRightArm == nullptr ? false : m_SkinTemperatureRightArm->IsValid ();
515+ }
516+ // -------------------------------------------------------------------------------
517+ SEScalarTemperature& SEEnergySystem::GetSkinTemperatureRightArm ()
518+ {
519+ if (m_SkinTemperatureRightArm == nullptr )
520+ m_SkinTemperatureRightArm = new SEScalarTemperature ();
521+ return *m_SkinTemperatureRightArm;
522+ }
523+ // -------------------------------------------------------------------------------
524+ double SEEnergySystem::GetSkinTemperatureRightArm (const TemperatureUnit& unit) const
525+ {
526+ if (m_SkinTemperatureRightArm == nullptr )
527+ return SEScalar::dNaN ();
528+ return m_SkinTemperatureRightArm->GetValue (unit);
529+ }
530+ // -------------------------------------------------------------------------------
531+ bool SEEnergySystem::HasSkinTemperatureLeftLeg () const
532+ {
533+ return m_SkinTemperatureLeftLeg == nullptr ? false : m_SkinTemperatureLeftLeg->IsValid ();
534+ }
535+ // -------------------------------------------------------------------------------
536+ SEScalarTemperature& SEEnergySystem::GetSkinTemperatureLeftLeg ()
537+ {
538+ if (m_SkinTemperatureLeftLeg == nullptr )
539+ m_SkinTemperatureLeftLeg = new SEScalarTemperature ();
540+ return *m_SkinTemperatureLeftLeg;
541+ }
542+ // -------------------------------------------------------------------------------
543+ double SEEnergySystem::GetSkinTemperatureLeftLeg (const TemperatureUnit& unit) const
544+ {
545+ if (m_SkinTemperatureLeftLeg == nullptr )
546+ return SEScalar::dNaN ();
547+ return m_SkinTemperatureLeftLeg->GetValue (unit);
548+ }
549+ // -------------------------------------------------------------------------------
550+ bool SEEnergySystem::HasSkinTemperatureRightLeg () const
551+ {
552+ return m_SkinTemperatureRightLeg == nullptr ? false : m_SkinTemperatureRightLeg->IsValid ();
553+ }
554+ // -------------------------------------------------------------------------------
555+ SEScalarTemperature& SEEnergySystem::GetSkinTemperatureRightLeg ()
556+ {
557+ if (m_SkinTemperatureRightLeg == nullptr )
558+ m_SkinTemperatureRightLeg = new SEScalarTemperature ();
559+ return *m_SkinTemperatureRightLeg;
560+ }
561+ // -------------------------------------------------------------------------------
562+ double SEEnergySystem::GetSkinTemperatureRightLeg (const TemperatureUnit& unit) const
563+ {
564+ if (m_SkinTemperatureRightLeg == nullptr )
565+ return SEScalar::dNaN ();
566+ return m_SkinTemperatureRightLeg->GetValue (unit);
567+ }
568+ // -------------------------------------------------------------------------------
457569
458570bool SEEnergySystem::HasSodiumLostToSweat () const
459571{
@@ -547,6 +659,10 @@ Tree<const char*> SEEnergySystem::GetPhysiologyRequestGraph() const
547659 .emplace_back (idPotassiumLostToSweat)
548660 .emplace_back (idSkinTemperatureTorso)
549661 .emplace_back (idSkinTemperatureHead)
662+ .emplace_back (idSkinTemperatureLeftArm)
663+ .emplace_back (idSkinTemperatureRightArm)
664+ .emplace_back (idSkinTemperatureLeftLeg)
665+ .emplace_back (idSkinTemperatureRightLeg)
550666 .emplace_back (idSodiumLostToSweat)
551667 .emplace_back (idSweatRate)
552668 .emplace_back (idTotalMetabolicRate)
0 commit comments