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

Revision history [back]

I didn't see anything in the Envelope Summary Tabular output in EnergyPlus. Here is a way to do it from model inputs in OpenStudio. The code below loops through layered constructions and then the material layers for each construction and reports the mass per m^2 for the construction. You could use this to get mass for specific surfaces or for all surfaces using a specific construction.

  model.getLayeredConstructions.each do |layered_construction|
  mass_per_area = 0.0
  layered_construction.layers.each do |layer|
    if layer.to_StandardOpaqueMaterial.is_initialized
      layer = layer.to_StandardOpaqueMaterial.get
      density = layer.density
      thickness = layer.thickness
      puts "#{layer.name} is opaque and has density of #{density} (kg/m^3) and a thickness of #{thickness} (m)"
      mass_per_area += density * thickness
    end
  end
  puts "Mass of #{layered_construction.name} is #{mass_per_area} (kg/m^2)"
end

Output looks like this.

Roof Membrane - Highly Reflective is opaque and has density of 1121.29 (kg/m^3) and a thickness of 0.0095 (m) Metal Roof Surface is opaque and has density of 7823.99999999999 (kg/m^3) and a thickness of 0.000799999999999998 (m)

Mass of Typical IEAD Roof - Highly Reflective R-20.83 is 16.911454999999975 (kg/m^2)

I didn't see anything in the Envelope Summary Tabular output in EnergyPlus. Here is a way to do it from model inputs in OpenStudio. The code below loops through layered constructions and then the material layers for each construction and reports the mass per m^2 for the construction. You could use this to get mass for specific surfaces or for all surfaces using a specific construction.

  model.getLayeredConstructions.each do |layered_construction|
  mass_per_area = 0.0
  layered_construction.layers.each do |layer|
    if layer.to_StandardOpaqueMaterial.is_initialized
      layer = layer.to_StandardOpaqueMaterial.get
      density = layer.density
      thickness = layer.thickness
      puts "#{layer.name} is opaque and has density of #{density} (kg/m^3) and a thickness of #{thickness} (m)"
      mass_per_area += density * thickness
    end
  end
  puts "Mass of #{layered_construction.name} is #{mass_per_area} (kg/m^2)"
end

Output looks like this.

Roof Membrane - Highly Reflective is opaque and has density of 1121.29 (kg/m^3) and a thickness of 0.0095 (m) (m)

Metal Roof Surface is opaque and has density of 7823.99999999999 (kg/m^3) and a thickness of 0.000799999999999998 (m)

Mass of Typical IEAD Roof - Highly Reflective R-20.83 is 16.911454999999975 (kg/m^2)

I didn't see anything in the Envelope Summary Tabular output in EnergyPlus. Here is a way to do it from model inputs in OpenStudio. The code below loops through layered constructions and then the material layers for each construction and reports the mass per m^2 for the construction. You could use this to get mass for specific surfaces or for all surfaces using a specific construction.

  model.getLayeredConstructions.each do |layered_construction|
  mass_per_area = 0.0
  layered_construction.layers.each do |layer|
    if layer.to_StandardOpaqueMaterial.is_initialized
      layer = layer.to_StandardOpaqueMaterial.get
      density = layer.density
      thickness = layer.thickness
      puts "#{layer.name} is opaque and has density of #{density} (kg/m^3) and a thickness of #{thickness} (m)"
      mass_per_area += density * thickness
    end
  end
  puts "Mass of #{layered_construction.name} is #{mass_per_area} (kg/m^2)"
end

Output looks like this.

Roof Membrane - Highly Reflective is opaque and has density of 1121.29 (kg/m^3) and a thickness of 0.0095 (m)

(m) Metal Roof Surface is opaque and has density of 7823.99999999999 (kg/m^3) and a thickness of 0.000799999999999998 (m)

(m) Mass of Typical IEAD Roof - Highly Reflective R-20.83 is 16.911454999999975 (kg/m^2)

(kg/m^2)