Skip to content

Commit 6203e5d

Browse files
ntatum94StevenAWhite
authored andcommitted
Got new skin circuit nodes working for head/torso. Ready to be tested and tuned. Also updated unit test, how-tos, stabilization, and physiology requests to match new changes. Still need to update all scenarios and expand to inlude arms and legs
1 parent 2898474 commit 6203e5d

File tree

13 files changed

+230
-112
lines changed

13 files changed

+230
-112
lines changed

projects/biogears/libBiogears/include/biogears/cdm/system/physiology/SEEnergySystem.h

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,13 @@ class BIOGEARS_API SEEnergySystem : public SESystem {
9898
SEScalarMass& GetPotassiumLostToSweat();
9999
double GetPotassiumLostToSweat(const MassUnit& unit) const;
100100

101-
bool HasSkinTemperature() const;
102-
SEScalarTemperature& GetSkinTemperature();
103-
double GetSkinTemperature(const TemperatureUnit& unit) const;
101+
bool HasSkinTemperatureTorso() const;
102+
SEScalarTemperature& GetSkinTemperatureTorso();
103+
double GetSkinTemperatureTorso(const TemperatureUnit& unit) const;
104+
105+
bool HasSkinTemperatureHead() const;
106+
SEScalarTemperature& GetSkinTemperatureHead();
107+
double GetSkinTemperatureHead(const TemperatureUnit& unit) const;
104108

105109
bool HasSodiumLostToSweat() const;
106110
SEScalarMass& GetSodiumLostToSweat();
@@ -129,7 +133,8 @@ class BIOGEARS_API SEEnergySystem : public SESystem {
129133
SEScalarFraction* m_FatigueLevel;
130134
SEScalarAmountPerTime* m_LactateProductionRate;
131135
SEScalarMass* m_PotassiumLostToSweat;
132-
SEScalarTemperature* m_SkinTemperature;
136+
SEScalarTemperature* m_SkinTemperatureTorso;
137+
SEScalarTemperature* m_SkinTemperatureHead;
133138
SEScalarMass* m_SodiumLostToSweat;
134139
SEScalarMassPerTime* m_SweatRate;
135140
SEScalarPower* m_TotalMetabolicRate;

projects/biogears/libBiogears/include/biogears/engine/Systems/Energy.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,9 @@ class BIOGEARS_API Energy : public SEEnergySystem, public BioGearsSystem {
112112
SELiquidSubstanceQuantity* m_SkinPotassium;
113113
//Nodes
114114
SEThermalCircuitNode* m_coreNode;
115-
SEThermalCircuitNode* m_skinNode;
115+
SEThermalCircuitNode* m_torsoSkinNode;
116+
SEThermalCircuitNode* m_headSkinNode;
117+
std::vector<SEThermalCircuitNode*> m_skinNodes;
116118
//Paths
117119
SEThermalCircuitPath* m_temperatureGroundToCorePath;
118120
std::vector<SEThermalCircuitPath*> m_coreToSkinPaths;

projects/biogears/libBiogears/src/cdm/system/physiology/SEEnergySystem.cpp

Lines changed: 48 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ constexpr char idExerciseMeanArterialPressureDelta[] = "ExerciseMeanArterialPres
3434
constexpr char idFatigueLevel[] = "FatigueLevel";
3535
constexpr char idLactateProductionRate[] = "LactateProductionRate";
3636
constexpr char idPotassiumLostToSweat[] = "PotassiumLostToSweat";
37-
constexpr char idSkinTemperature[] = "SkinTemperature";
37+
constexpr char idSkinTemperatureTorso[] = "SkinTemperatureTorso";
38+
constexpr char idSkinTemperatureHead[] = "SkinTemperatureHead";
3839
constexpr char idSodiumLostToSweat[] = "SodiumLostToSweat";
3940
constexpr char idSweatRate[] = "SweatRate";
4041
constexpr char idTotalMetabolicRate[] = "TotalMetabolicRate";
@@ -53,7 +54,8 @@ SEEnergySystem::SEEnergySystem(Logger* logger)
5354
m_FatigueLevel = nullptr;
5455
m_LactateProductionRate = nullptr;
5556
m_PotassiumLostToSweat = nullptr;
56-
m_SkinTemperature = nullptr;
57+
m_SkinTemperatureTorso = nullptr;
58+
m_SkinTemperatureHead = nullptr;
5759
m_SodiumLostToSweat = nullptr;
5860
m_SweatRate = nullptr;
5961
m_TotalMetabolicRate = nullptr;
@@ -81,7 +83,8 @@ void SEEnergySystem::Clear()
8183
SAFE_DELETE(m_FatigueLevel);
8284
SAFE_DELETE(m_LactateProductionRate);
8385
SAFE_DELETE(m_PotassiumLostToSweat);
84-
SAFE_DELETE(m_SkinTemperature);
86+
SAFE_DELETE(m_SkinTemperatureTorso);
87+
SAFE_DELETE(m_SkinTemperatureHead);
8588
SAFE_DELETE(m_SodiumLostToSweat);
8689
SAFE_DELETE(m_SweatRate);
8790
SAFE_DELETE(m_TotalMetabolicRate);
@@ -114,8 +117,10 @@ const SEScalar* SEEnergySystem::GetScalar(const std::string& name)
114117
return &GetLactateProductionRate();
115118
if (name == idPotassiumLostToSweat)
116119
return &GetPotassiumLostToSweat();
117-
if (name == idSkinTemperature)
118-
return &GetSkinTemperature();
120+
if (name == idSkinTemperatureTorso)
121+
return &GetSkinTemperatureTorso();
122+
if (name == idSkinTemperatureHead)
123+
return &GetSkinTemperatureHead();
119124
if (name == idSodiumLostToSweat)
120125
return &GetSodiumLostToSweat();
121126
if (name == idSweatRate)
@@ -152,8 +157,10 @@ bool SEEnergySystem::Load(const CDM::EnergySystemData& in)
152157
GetLactateProductionRate().Load(in.LactateProductionRate().get());
153158
if (in.PotassiumLostToSweat().present())
154159
GetPotassiumLostToSweat().Load(in.PotassiumLostToSweat().get());
155-
if (in.SkinTemperature().present())
156-
GetSkinTemperature().Load(in.SkinTemperature().get());
160+
if (in.SkinTemperatureTorso().present())
161+
GetSkinTemperatureTorso().Load(in.SkinTemperatureTorso().get());
162+
if (in.SkinTemperatureHead().present())
163+
GetSkinTemperatureHead().Load(in.SkinTemperatureHead().get());
157164
if (in.SodiumLostToSweat().present())
158165
GetSodiumLostToSweat().Load(in.SodiumLostToSweat().get());
159166
if (in.SweatRate().present())
@@ -199,8 +206,10 @@ void SEEnergySystem::Unload(CDM::EnergySystemData& data) const
199206
data.LactateProductionRate(std::unique_ptr<CDM::ScalarAmountPerTimeData>(m_LactateProductionRate->Unload()));
200207
if (m_PotassiumLostToSweat != nullptr)
201208
data.PotassiumLostToSweat(std::unique_ptr<CDM::ScalarMassData>(m_PotassiumLostToSweat->Unload()));
202-
if (m_SkinTemperature != nullptr)
203-
data.SkinTemperature(std::unique_ptr<CDM::ScalarTemperatureData>(m_SkinTemperature->Unload()));
209+
if (m_SkinTemperatureTorso != nullptr)
210+
data.SkinTemperatureTorso(std::unique_ptr<CDM::ScalarTemperatureData>(m_SkinTemperatureTorso->Unload()));
211+
if (m_SkinTemperatureHead != nullptr)
212+
data.SkinTemperatureHead(std::unique_ptr<CDM::ScalarTemperatureData>(m_SkinTemperatureHead->Unload()));
204213
if (m_SodiumLostToSweat != nullptr)
205214
data.SodiumLostToSweat(std::unique_ptr<CDM::ScalarMassData>(m_SodiumLostToSweat->Unload()));
206215
if (m_SweatRate != nullptr)
@@ -407,24 +416,42 @@ double SEEnergySystem::GetPotassiumLostToSweat(const MassUnit& unit) const
407416
return m_PotassiumLostToSweat->GetValue(unit);
408417
}
409418
//-------------------------------------------------------------------------------
410-
411-
bool SEEnergySystem::HasSkinTemperature() const
419+
bool SEEnergySystem::HasSkinTemperatureTorso() const
420+
{
421+
return m_SkinTemperatureTorso == nullptr ? false : m_SkinTemperatureTorso->IsValid();
422+
}
423+
//-------------------------------------------------------------------------------
424+
SEScalarTemperature& SEEnergySystem::GetSkinTemperatureTorso()
425+
{
426+
if (m_SkinTemperatureTorso == nullptr)
427+
m_SkinTemperatureTorso = new SEScalarTemperature();
428+
return *m_SkinTemperatureTorso;
429+
}
430+
//-------------------------------------------------------------------------------
431+
double SEEnergySystem::GetSkinTemperatureTorso(const TemperatureUnit& unit) const
432+
{
433+
if (m_SkinTemperatureTorso == nullptr)
434+
return SEScalar::dNaN();
435+
return m_SkinTemperatureTorso->GetValue(unit);
436+
}
437+
//-------------------------------------------------------------------------------
438+
bool SEEnergySystem::HasSkinTemperatureHead() const
412439
{
413-
return m_SkinTemperature == nullptr ? false : m_SkinTemperature->IsValid();
440+
return m_SkinTemperatureHead == nullptr ? false : m_SkinTemperatureHead->IsValid();
414441
}
415442
//-------------------------------------------------------------------------------
416-
SEScalarTemperature& SEEnergySystem::GetSkinTemperature()
443+
SEScalarTemperature& SEEnergySystem::GetSkinTemperatureHead()
417444
{
418-
if (m_SkinTemperature == nullptr)
419-
m_SkinTemperature = new SEScalarTemperature();
420-
return *m_SkinTemperature;
445+
if (m_SkinTemperatureHead == nullptr)
446+
m_SkinTemperatureHead = new SEScalarTemperature();
447+
return *m_SkinTemperatureHead;
421448
}
422449
//-------------------------------------------------------------------------------
423-
double SEEnergySystem::GetSkinTemperature(const TemperatureUnit& unit) const
450+
double SEEnergySystem::GetSkinTemperatureHead(const TemperatureUnit& unit) const
424451
{
425-
if (m_SkinTemperature == nullptr)
452+
if (m_SkinTemperatureHead == nullptr)
426453
return SEScalar::dNaN();
427-
return m_SkinTemperature->GetValue(unit);
454+
return m_SkinTemperatureHead->GetValue(unit);
428455
}
429456
//-------------------------------------------------------------------------------
430457

@@ -518,7 +545,8 @@ Tree<const char*> SEEnergySystem::GetPhysiologyRequestGraph() const
518545
.emplace_back(idFatigueLevel)
519546
.emplace_back(idLactateProductionRate)
520547
.emplace_back(idPotassiumLostToSweat)
521-
.emplace_back(idSkinTemperature)
548+
.emplace_back(idSkinTemperatureTorso)
549+
.emplace_back(idSkinTemperatureHead)
522550
.emplace_back(idSodiumLostToSweat)
523551
.emplace_back(idSweatRate)
524552
.emplace_back(idTotalMetabolicRate)

projects/biogears/libBiogears/src/engine/Systems/Energy.cpp

Lines changed: 44 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ void Energy::Clear()
8080
m_SkinChloride = nullptr;
8181
m_SkinPotassium = nullptr;
8282
m_coreNode = nullptr;
83-
m_skinNode = nullptr;
8483
m_temperatureGroundToCorePath = nullptr;
8584
m_skinExtravascularToSweatingGroundPath = nullptr;
8685
m_InternalTemperatureCircuit = nullptr;
@@ -104,7 +103,8 @@ void Energy::Initialize()
104103
//Initialization of other system variables
105104
/// \cite herman2008physics
106105
GetCoreTemperature().SetValue(37.0, TemperatureUnit::C);
107-
GetSkinTemperature().SetValue(33.0, TemperatureUnit::C);
106+
GetSkinTemperatureTorso().SetValue(33.0, TemperatureUnit::C);
107+
GetSkinTemperatureHead().SetValue(33.0, TemperatureUnit::C);
108108
/// \cite phypers2006lactate
109109
GetLactateProductionRate().SetValue(1.3, AmountPerTimeUnit::mol_Per_day);
110110
/// \cite guyton2006medical
@@ -182,7 +182,9 @@ void Energy::SetUp()
182182
m_InternalTemperatureCircuit = &m_data.GetCircuits().GetInternalTemperatureCircuit();
183183
//Nodes
184184
m_coreNode = m_InternalTemperatureCircuit->GetNode(BGE::InternalTemperatureNode::InternalCore);
185-
m_skinNode = m_InternalTemperatureCircuit->GetNode(BGE::InternalTemperatureNode::InternalTorsoSkin); // NOTE this is currently used for vitals and sweat rate. First pass will use torso being the largest of the skin nodes
185+
m_skinNodes.clear();
186+
m_skinNodes.push_back(m_InternalTemperatureCircuit->GetNode(BGE::InternalTemperatureNode::InternalTorsoSkin));
187+
m_skinNodes.push_back(m_InternalTemperatureCircuit->GetNode(BGE::InternalTemperatureNode::InternalHeadSkin));
186188
//Paths
187189
m_temperatureGroundToCorePath = m_InternalTemperatureCircuit->GetPath(BGE::InternalTemperaturePath::GroundToInternalCore);
188190
m_skinExtravascularToSweatingGroundPath = m_data.GetCircuits().GetActiveCardiovascularCircuit().GetPath(BGE::TissuePath::SkinSweating);
@@ -401,13 +403,15 @@ void Energy::PostProcess()
401403
void Energy::CalculateVitalSigns()
402404
{
403405
double coreTemperature_degC = m_coreNode->GetTemperature(TemperatureUnit::C);
404-
double skinTemperature_degC = m_skinNode->GetTemperature(TemperatureUnit::C);
406+
double skinTemperatureTorso_degC = m_skinNodes[0]->GetTemperature(TemperatureUnit::C);
407+
double skinTemperatureHead_degC = m_skinNodes[1]->GetTemperature(TemperatureUnit::C);
405408
if (m_data.GetDrugs().HasFeverChange() && GetCoreTemperature().GetValue(TemperatureUnit::C) > 37.0) { // Modifier for current drugs should not be able to increase core temperature
406409
coreTemperature_degC += m_data.GetDrugs().GetFeverChange().GetValue(TemperatureUnit::C);
407410
LLIM(coreTemperature_degC, 36.5); // Tylenol will not lower your basal core temperature
408411
}
409412
GetCoreTemperature().SetValue(coreTemperature_degC, TemperatureUnit::C);
410-
GetSkinTemperature().SetValue(skinTemperature_degC, TemperatureUnit::C);
413+
GetSkinTemperatureTorso().SetValue(skinTemperatureTorso_degC, TemperatureUnit::C);
414+
GetSkinTemperatureHead().SetValue(skinTemperatureHead_degC, TemperatureUnit::C);
411415
std::stringstream ss;
412416

413417
//Hypothermia check
@@ -581,48 +585,51 @@ void Energy::CalculateSweatRate()
581585
double dWaterVaporPressureInAmbientAir_mmHg = GeneralMath::AntoineEquation(dAirTemperature_C);
582586
double m_dWaterVaporPressureInAmbientAir_Pa = Convert(dWaterVaporPressureInAmbientAir_mmHg, PressureUnit::mmHg, PressureUnit::Pa);
583587
// double ambientAtmosphericPressure_Pa = m_data.GetEnvironment().GetConditions().GetAtmosphericPressure().GetValue(PressureUnit::Pa);
584-
double maximumEvaporativeCapacity_W = 14.21 * (m_Patient->GetSkinSurfaceArea().GetValue(AreaUnit::m2)) * effectiveClothingEvaporation_im_Per_clo * (133.322 * (std::pow(10, (8.1076 - (1750.286 / (235.0 + (m_skinNode->GetTemperature(TemperatureUnit::C))))))) - ((m_dWaterVaporPressureInAmbientAir_Pa))); //Still needs effective clothing evaporation
585-
586588
double vaporizationEnergy_J_Per_kg = m_data.GetConfiguration().GetVaporizationEnergy(EnergyPerMassUnit::J_Per_kg);
587589
double sweatSodiumConcentration_mM = 51.0; /// \cite shirreffs1997whole
588590
double sweatPotassiumConcentration_mM = 6.0; /// \cite shirreffs1997whole
589591
double sweatChlorideConcentration_mM = 48.0; /// \cite shirreffs1997whole
590-
// static double totalSweatLost_mL = 0; --Used to figure out total sweat loss during exercise scenario during debugging
591-
592-
double currentEvaporativeCapacity_W = sweatHeatTranferCoefficient_W_Per_K * (m_skinNode->GetTemperature(TemperatureUnit::K));
593-
if (currentEvaporativeCapacity_W > maximumEvaporativeCapacity_W) {
592+
// static double totalSweatLost_mL = 0; --Used to figure out total sweat loss during exercise scenario during debugging
594593

595-
sweatHeatTranferCoefficient_W_Per_K = maximumEvaporativeCapacity_W / (m_skinNode->GetTemperature(TemperatureUnit::K));
596-
}
597-
598-
/// \todo Convert to sweat density once specific gravity calculation is in
594+
double overallSweatRate_kg_Per_s = 0.0;
599595
SEScalarMassPerVolume sweatDensity;
600-
GeneralMath::CalculateWaterDensity(m_skinNode->GetTemperature(), sweatDensity);
601-
double dehydrationFraction = m_data.GetTissue().GetDehydrationFraction().GetValue();
596+
for (SEThermalCircuitNode* skinNode : m_skinNodes) {
597+
double maximumEvaporativeCapacity_W = 14.21 * (m_Patient->GetSkinSurfaceArea().GetValue(AreaUnit::m2)) * effectiveClothingEvaporation_im_Per_clo * (133.322 * (std::pow(10, (8.1076 - (1750.286 / (235.0 + (skinNode->GetTemperature(TemperatureUnit::C))))))) - ((m_dWaterVaporPressureInAmbientAir_Pa))); // Still needs effective clothing evaporation
598+
double currentEvaporativeCapacity_W = sweatHeatTranferCoefficient_W_Per_K * (skinNode->GetTemperature(TemperatureUnit::K));
599+
if (currentEvaporativeCapacity_W > maximumEvaporativeCapacity_W) {
602600

603-
//Calculate sweat rate (in kg/s) from core temperature feedback.
604-
//The sweat rate heat transfer is determined from a control equation that attempts to keep the core temperature in line
605-
/// \cite herman2008physics
606-
//Sweat rate decreases as dehydration becomes more severe, with max reduction seen at 10% dehydration
607-
double dehydrationScalingFactor = GeneralMath::LinearInterpolator(0, .1, 1, 0, dehydrationFraction);
608-
BLIM(dehydrationScalingFactor, 0, 1);
609-
double sweatRate_kg_Per_s = dehydrationScalingFactor * (0.25 * sweatHeatTranferCoefficient_W_Per_K / vaporizationEnergy_J_Per_kg) * (coreTemperature_degC - coreTemperatureHigh_degC);
601+
sweatHeatTranferCoefficient_W_Per_K = maximumEvaporativeCapacity_W / (skinNode->GetTemperature(TemperatureUnit::K));
602+
}
610603

611-
//The Sweat Scaling Factor is caused by changes in the Hyperhidrosis patient parameter to invoke either hyperhidrosis or hypohidrosis
612-
/// \cite shih1983autonomic
613-
double sweatScalingFactor = 0.0;
614-
if (m_Patient->HasHyperhidrosis()) {
615-
sweatScalingFactor = m_Patient->GetHyperhidrosis().GetValue();
616-
sweatRate_kg_Per_s = (1 + sweatScalingFactor) * sweatRate_kg_Per_s;
604+
double dehydrationFraction = m_data.GetTissue().GetDehydrationFraction().GetValue();
605+
606+
// Calculate sweat rate (in kg/s) from core temperature feedback.
607+
// The sweat rate heat transfer is determined from a control equation that attempts to keep the core temperature in line
608+
/// \cite herman2008physics
609+
// Sweat rate decreases as dehydration becomes more severe, with max reduction seen at 10% dehydration
610+
double dehydrationScalingFactor = GeneralMath::LinearInterpolator(0, .1, 1, 0, dehydrationFraction);
611+
BLIM(dehydrationScalingFactor, 0, 1);
612+
double sweatRate_kg_Per_s = dehydrationScalingFactor * (0.25 * sweatHeatTranferCoefficient_W_Per_K / vaporizationEnergy_J_Per_kg) * (coreTemperature_degC - coreTemperatureHigh_degC);
613+
614+
// The Sweat Scaling Factor is caused by changes in the Hyperhidrosis patient parameter to invoke either hyperhidrosis or hypohidrosis
615+
/// \cite shih1983autonomic
616+
double sweatScalingFactor = 0.0;
617+
if (m_Patient->HasHyperhidrosis()) {
618+
sweatScalingFactor = m_Patient->GetHyperhidrosis().GetValue();
619+
sweatRate_kg_Per_s = (1 + sweatScalingFactor) * sweatRate_kg_Per_s;
620+
}
621+
overallSweatRate_kg_Per_s += sweatRate_kg_Per_s;
617622
}
623+
/// \todo Convert to sweat density once specific gravity calculation is in
624+
GeneralMath::CalculateWaterDensity(m_skinNodes[0]->GetTemperature(), sweatDensity); // using trunk as representation due to it having the largest surface area. This will likely be vectorized out later
618625

619626
double maxSweatRate_kg_Per_s = 12.5 * m_Patient->GetSkinSurfaceArea().GetValue(AreaUnit::m2) / 60.0 / 1000.0; //10 - 15 g/min/m2
620-
BLIM(sweatRate_kg_Per_s, 0.0, maxSweatRate_kg_Per_s);
627+
BLIM(overallSweatRate_kg_Per_s, 0.0, maxSweatRate_kg_Per_s);
621628

622629
//Account for mass lost by subtracting from the current patient mass
623-
double massLost_kg = sweatRate_kg_Per_s * m_dT_s;
630+
double massLost_kg = overallSweatRate_kg_Per_s * m_dT_s;
624631
m_Patient->GetWeight().IncrementValue(-massLost_kg, MassUnit::kg);
625-
GetSweatRate().SetValue(sweatRate_kg_Per_s, MassPerTimeUnit::kg_Per_s);
632+
GetSweatRate().SetValue(overallSweatRate_kg_Per_s, MassPerTimeUnit::kg_Per_s);
626633

627634
//Calculate mass of ions lost in sweat (sodium, potassium, and chloride): Converts kg sweat lost -> L sweat lost -> mmol ion lost -> mg ion lost
628635
double sodiumLost_mg = massLost_kg / sweatDensity.GetValue(MassPerVolumeUnit::kg_Per_L) * sweatSodiumConcentration_mM * m_data.GetSubstances().GetSodium().GetMolarMass(MassPerAmountUnit::mg_Per_mmol);
@@ -641,7 +648,7 @@ void Energy::CalculateSweatRate()
641648
m_SkinChloride->Balance(BalanceLiquidBy::Mass);
642649

643650
//Set the flow source on the extravascular circuit to begin removing the fluid that is excreted
644-
double sweatRate_mL_Per_s = sweatRate_kg_Per_s / sweatDensity.GetValue(MassPerVolumeUnit::kg_Per_mL);
651+
double sweatRate_mL_Per_s = overallSweatRate_kg_Per_s / sweatDensity.GetValue(MassPerVolumeUnit::kg_Per_mL);
645652
m_skinExtravascularToSweatingGroundPath->GetNextFlowSource().SetValue(sweatRate_mL_Per_s, VolumePerTimeUnit::mL_Per_s);
646653
}
647654

@@ -778,8 +785,10 @@ void Energy::ProcessOverride()
778785
if (override->HasLactateProductionRateOverride()) {
779786
GetLactateProductionRate().SetValue(override->GetLactateProductionRateOverride(AmountPerTimeUnit::mol_Per_s), AmountPerTimeUnit::mol_Per_s);
780787
}
788+
// All skin nodes currently adjusted for a skin temperature override
781789
if (override->HasSkinTemperatureOverride()) {
782-
GetSkinTemperature().SetValue(override->GetSkinTemperatureOverride(TemperatureUnit::C), TemperatureUnit::C);
790+
GetSkinTemperatureTorso().SetValue(override->GetSkinTemperatureOverride(TemperatureUnit::C), TemperatureUnit::C);
791+
GetSkinTemperatureHead().SetValue(override->GetSkinTemperatureOverride(TemperatureUnit::C), TemperatureUnit::C);
783792
}
784793
if (override->HasSweatRateOverride()) {
785794
GetSweatRate().SetValue(override->GetSweatRateOverride(MassPerTimeUnit::g_Per_s), MassPerTimeUnit::g_Per_s);

projects/biogears/libBiogears/src/engine/Systems/Environment.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ void Environment::PreProcess()
252252
// 0 is torso, gets 40 percent of clo
253253
// 1 is head, gets no clo (assume not hat/hair for now)
254254
m_SkinToClothingPaths[0]->GetNextResistance().SetValue(0.4 * skinToClothingResistance, HeatResistanceUnit::K_Per_W);
255-
m_SkinToClothingPaths[1]->GetNextResistance().SetValue(0.0 * skinToClothingResistance, HeatResistanceUnit::K_Per_W);
255+
m_SkinToClothingPaths[1]->GetNextResistance().SetValue(0.01 * skinToClothingResistance, HeatResistanceUnit::K_Per_W);
256256

257257
//Set the skin heat loss
258258
double dSkinHeatLoss_W = 0.0;

0 commit comments

Comments
 (0)