Question-and-Answer Resource for the Building Energy Modeling Community
Get started with the Help page
Ask Your Question

Revision history [back]

You don't have to use EMS to define how the conductivity of a material layer changes with temperature. You can use the MaterialProperty:VariableThermalConductivity object that can set value pairs of thermal conductivity at specific temperatures (EnergyPlus will linearly interpolate thermal conductivity for temperatures between what you define). This requires using the ConductionFiniteDifference aka CondFD algorithm in the HeatBalanceAlgorithm object, which affects all surfaces in the model. You can define more settings for this algorithm using the HeatBalanceSettings:ConductionFiniteDifference object.

If you wanted to define how other material layer properties (density, specific heat, etc.) change with temperature, then you CANNOT do that in EnergyPlus -- even through EMS. This is because EMS Actuators that can override normal EnergyPlus behavior are pre-defined -- you can only override some inputs of EnergyPlus models, not all inputs.

You don't have to use EMS to define how the conductivity of a material layer changes with temperature. You can use the MaterialProperty:VariableThermalConductivity object that can set value pairs of thermal conductivity at specific temperatures (EnergyPlus will linearly interpolate thermal conductivity for temperatures between what you define). This requires using the ConductionFiniteDifference aka CondFD algorithm in the HeatBalanceAlgorithm object, which affects all surfaces in the model. You can define more settings for this algorithm using the HeatBalanceSettings:ConductionFiniteDifference object. You can read more about how to use this algorithm here and here.

If you wanted to define how other material layer properties (density, specific heat, etc.) change with temperature, then you CANNOT do that in EnergyPlus -- even through EMS. This is because EMS Actuators that can override normal EnergyPlus behavior are pre-defined -- you can only override some inputs of EnergyPlus models, not all inputs.

You don't have to use EMS to define how the conductivity of a material layer changes with temperature. You can use the MaterialProperty:VariableThermalConductivity object that can set value pairs of thermal conductivity at specific temperatures (EnergyPlus will linearly interpolate thermal conductivity for temperatures between what you define). This requires using the ConductionFiniteDifference aka CondFD algorithm in the HeatBalanceAlgorithm object, which affects all surfaces in the model. You can define more settings for this algorithm using the HeatBalanceSettings:ConductionFiniteDifference object. You can read more about how to use this algorithm here and here.

If you wanted to define how other material layer properties (density, specific heat, etc.) change with temperature, then you CANNOT do that in EnergyPlus -- even through EMS. This is because EMS Actuators that can override normal EnergyPlus behavior are pre-defined -- you can only override some inputs of EnergyPlus models, not all inputs.

UPDATE

If you want to set a material layer's conductivity based on multiple parameters and not just the material layer's temperature, then the closes that you could get is by overriding the construction assembly assigned to a surface using EMS. The idea would be to define logic to know what conductivity should be applied, have a material layer already defined in the model for that case, and use EMS to assign the construction assembly with that material layer.

This is done using the EMS Actuator for Surface Construction State. You can see an example of doing this for thermochromic windows in the EMS Application Guide. For each unique construction assembly that you want to be able to assign to a surface, you will need to create a unique Surface Construction State EMS Actuator. Use your logic within EMS programs to define when construction assemblies should switch accordingly.

If you're trying to model continuous changes (melting PCM, e.g.) then I would recommend still using the temperature/conductivity value pairs defined by the MaterialProperty:VariableThermalConductivity object to account for the impact of the material layer's temperature. To account for other factors impacting conductivity (exterior/interior environment temperature, relative humidity, etc.), define a new instance of the MaterialProperty:VariableThermalConductivity object.

You don't have to use EMS to define how the conductivity of a material layer changes with temperature. You can use the MaterialProperty:VariableThermalConductivity object that can set value pairs of thermal conductivity at specific temperatures (EnergyPlus will linearly interpolate thermal conductivity for temperatures between what you define). This requires using the ConductionFiniteDifference aka CondFD algorithm in the HeatBalanceAlgorithm object, which affects all surfaces in the model. You can define more settings for this algorithm using the HeatBalanceSettings:ConductionFiniteDifference object. You can read more about how to use this algorithm here and here.

If you wanted to define how other material layer properties (density, specific heat, etc.) change with temperature, then you CANNOT do that in EnergyPlus -- even through EMS. This is because EMS Actuators that can override normal EnergyPlus behavior are pre-defined -- you can only override some inputs of EnergyPlus models, not all inputs.inputs. This also applies to material layer conductivity -- there is no EMS actuator that directly sets that parameter.

UPDATE

If you want to set a material layer's conductivity based on multiple parameters and not just the material layer's temperature, then the closes closest that you could get is by overriding the construction assembly assigned to a surface using EMS. The idea would be to define logic to know what conductivity should be applied, have a material layer already defined in the model for that case, and use EMS to assign the construction assembly with that material layer.

This is done using the EMS Actuator for Surface Construction State. You can see an example of doing this for thermochromic windows in the EMS Application Guide. For each unique construction assembly that you want to be able to assign to a surface, you will need to create a unique Surface Construction State EMS Actuator. Use your logic within EMS programs to define when construction assemblies should switch accordingly.

If you're trying to model continuous changes (melting PCM, e.g.) then I would recommend still using the temperature/conductivity value pairs defined by the MaterialProperty:VariableThermalConductivity object to account for the impact of the material layer's temperature. To account for other factors impacting conductivity (exterior/interior environment temperature, relative humidity, etc.), define a new instance of the MaterialProperty:VariableThermalConductivity object.