@@ -88,6 +88,7 @@ void Energy::Clear()
8888 m_BloodpH.Reset ();
8989 m_BicarbonateMolarity_mmol_Per_L.Reset ();
9090 m_previousWeightPack_kg = 0.0 ;
91+ m_Test = 0.0 ;
9192
9293 m_packOn = false ;
9394}
@@ -104,14 +105,14 @@ void Energy::Initialize()
104105 // Initialization of other system variables
105106 // / \cite herman2008physics
106107 GetCoreTemperature ().SetValue (37.0 , TemperatureUnit::C);
107- GetSkinTemperatureTorso ().SetValue (33.0 , TemperatureUnit::C);
108- GetSkinTemperatureHead ().SetValue (33.0 , TemperatureUnit::C);
109- GetSkinTemperatureLeftArm ().SetValue (33.0 , TemperatureUnit::C);
110- GetSkinTemperatureRightArm ().SetValue (33.0 , TemperatureUnit::C);
108+ GetSkinTemperatureTorso ().SetValue (34.4 , TemperatureUnit::C);
109+ GetSkinTemperatureHead ().SetValue (35.2 , TemperatureUnit::C);
110+ GetSkinTemperatureLeftArm ().SetValue (33.6 , TemperatureUnit::C);
111+ GetSkinTemperatureRightArm ().SetValue (33.6 , TemperatureUnit::C);
111112 GetSkinTemperatureLeftLeg ().SetValue (33.0 , TemperatureUnit::C);
112113 GetSkinTemperatureRightLeg ().SetValue (33.0 , TemperatureUnit::C);
113- GetBurnSkinTemperature ().SetValue (33.0 , TemperatureUnit::C);
114- GetSkinTemperature ().SetValue (33.0 , TemperatureUnit::C);
114+ GetBurnSkinTemperature ().SetValue (34.4 , TemperatureUnit::C);
115+ GetSkinTemperature ().SetValue (34.4 , TemperatureUnit::C);
115116 // / \cite phypers2006lactate
116117 GetLactateProductionRate ().SetValue (1.3 , AmountPerTimeUnit::mol_Per_day);
117118 // / \cite guyton2006medical
@@ -225,6 +226,7 @@ void Energy::AtSteadyState()
225226void Energy::PreProcess ()
226227{
227228 CalculateMetabolicHeatGeneration ();
229+ m_data.GetDataTrack ().Probe (" CTSresistance" , m_Test);
228230 CalculateSweatRate ();
229231 UpdateHeatResistance ();
230232 // ManageEnergyDeficit();
@@ -610,7 +612,7 @@ void Energy::CalculateSweatRate()
610612 double dWaterVaporPressureInAmbientAir_mmHg = GeneralMath::AntoineEquation (dAirTemperature_C);
611613 double m_dWaterVaporPressureInAmbientAir_Pa = Convert (dWaterVaporPressureInAmbientAir_mmHg, PressureUnit::mmHg, PressureUnit::Pa);
612614 // double ambientAtmosphericPressure_Pa = m_data.GetEnvironment().GetConditions().GetAtmosphericPressure().GetValue(PressureUnit::Pa);
613- 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_skinNodes[ 0 ]-> GetTemperature (TemperatureUnit::C))))))) - (m_dWaterVaporPressureInAmbientAir_Pa)); // Still needs effective clothing evaporation
615+ 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 + (GetSkinTemperature (TemperatureUnit::C))))))) - (m_dWaterVaporPressureInAmbientAir_Pa)); // Still needs effective clothing evaporation
614616
615617 double vaporizationEnergy_J_Per_kg = m_data.GetConfiguration ().GetVaporizationEnergy (EnergyPerMassUnit::J_Per_kg);
616618 double sweatSodiumConcentration_mM = 51.0 ; // / \cite shirreffs1997whole
@@ -620,7 +622,6 @@ void Energy::CalculateSweatRate()
620622
621623 double currentEvaporativeCapacity_W = sweatHeatTranferCoefficient_W_Per_K * (m_skinNodes[0 ]->GetTemperature (TemperatureUnit::K));
622624 if (currentEvaporativeCapacity_W > maximumEvaporativeCapacity_W) {
623-
624625 sweatHeatTranferCoefficient_W_Per_K = maximumEvaporativeCapacity_W / (m_skinNodes[0 ]->GetTemperature (TemperatureUnit::K));
625626 }
626627
@@ -698,27 +699,32 @@ void Energy::UpdateHeatResistance()
698699 double bloodDensity_kg_Per_m3 = m_data.GetBloodChemistry ().GetBloodDensity ().GetValue (MassPerVolumeUnit::kg_Per_m3);
699700 double bloodSpecificHeat_J_Per_K_kg = m_data.GetBloodChemistry ().GetBloodSpecificHeat ().GetValue (HeatCapacitancePerMassUnit::J_Per_K_kg);
700701
701- double alphaScale = 0.5 ; // Scaling factor for convective heat transfer from core to skin (35 seems to be near the upper limit before non-stabilization)
702+ double alphaScale = 0.42 ; // Scaling factor for convective heat transfer from core to skin (35 seems to be near the upper limit before non-stabilization)
702703 bool isBurnWound = false ;
704+ double burnSurfaceAreaFraction = 0.0 ;
703705 if (m_data.GetBloodChemistry ().GetInflammatoryResponse ().HasInflammationSource (CDM::enumInflammationSource::Burn)) {
704706 SEBurnWound* burnAction = m_data.GetActions ().GetPatientActions ().GetBurnWound ();
705707 std::vector<std::string> burnComptVector = burnAction->GetCompartments ();
706708 // Check if burn is on specific compartment. Skip head since burns cannot currently be initialized on the head
707709 if (index == 0 && burnAction->HasCompartment (" Trunk" )) {
708710 isBurnWound = true ;
711+ burnSurfaceAreaFraction = m_data.GetActions ().GetPatientActions ().GetBurnWound ()->getTrunkBurnIntensity ();
709712 } else if (index == 2 && burnAction->HasCompartment (" LeftArm" )) {
710713 isBurnWound = true ;
714+ burnSurfaceAreaFraction = m_data.GetActions ().GetPatientActions ().GetBurnWound ()->getLeftArmBurnIntensity ();
711715 } else if (index == 3 && burnAction->HasCompartment (" RightArm" )) {
712716 isBurnWound = true ;
717+ burnSurfaceAreaFraction = m_data.GetActions ().GetPatientActions ().GetBurnWound ()->getRightArmBurnIntensity ();
713718 } else if (index == 4 && burnAction->HasCompartment (" LeftLeg" )) {
714719 isBurnWound = true ;
720+ burnSurfaceAreaFraction = m_data.GetActions ().GetPatientActions ().GetBurnWound ()->getLeftLegBurnIntensity ();
715721 } else if (index == 5 && burnAction->HasCompartment (" RightLeg" )) {
716722 isBurnWound = true ;
723+ burnSurfaceAreaFraction = m_data.GetActions ().GetPatientActions ().GetBurnWound ()->getRightLegBurnIntensity ();
717724 }
718725 }
719726 if (isBurnWound) {
720727 isAnySegmentBurned = true ;
721- const double burnSurfaceAreaFraction = m_data.GetActions ().GetPatientActions ().GetBurnWound ()->GetBurnIntensity ();
722728 const double resInput = std::min (2.0 * burnSurfaceAreaFraction, 1.0 ); // Make >50% burn the worse case scenario
723729 const double targetAlpha = GeneralMath::LinearInterpolator (0.0 , resInput, alphaScale, 20.0 , resInput);
724730 const double lastAlpha = 1.0 / (coreToSkinPath->GetResistance (HeatResistanceUnit::K_Per_W) * bloodDensity_kg_Per_m3 * bloodSpecificHeat_J_Per_K_kg * segmentedSkinBloodFlows[index]);
@@ -730,9 +736,9 @@ void Energy::UpdateHeatResistance()
730736 // When skin blood flow increases, then heat transfer resistance decreases leading to more heat transfer from core to skin.
731737 // The opposite occurs for skin blood flow decrease.
732738 double coreToSkinResistance_K_Per_W = 1.0 / (alphaScale * bloodDensity_kg_Per_m3 * bloodSpecificHeat_J_Per_K_kg * segmentedSkinBloodFlows[index]);
733-
739+
734740 coreToSkinResistance_K_Per_W = BLIM (coreToSkinResistance_K_Per_W, 0.0001 , 20.0 );
735-
741+ m_Test = coreToSkinResistance_K_Per_W;
736742 coreToSkinPath->GetNextResistance ().SetValue (coreToSkinResistance_K_Per_W, HeatResistanceUnit::K_Per_W);
737743 index += 1 ;
738744 }
0 commit comments