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

Is there a thermal-mass "takeoff" OpenStudio measure?

asked 2015-04-30 11:35:55 -0600

updated 2017-08-05 13:22:58 -0600

Is there an OpenStudio reporting measure for doing a thermal mass "takeoff" on a building model? If not, what is the closest measure?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2015-04-30 12:09:22 -0600

updated 2015-04-30 12:19:15 -0600

Good question. There isn't a measure doing this yet, but there is some code in the Annual End Use meausre that may be helpful. The code below is used to make a table listing constructions used in the model along with area of each and effective R value.

# summary of exterior constructions used in the model for base surfaces
@surface_data = {}
@surface_data[:title] = 'Construction Summary for Base Surfaces'
@surface_data[:header] = ['Construction','Net Area',"Area Units",'Surface Count','R Value','R Value Units']
@surface_data[:data] = []
ext_const_base = {}
model.getSurfaces.each do |surface|
  next if surface.outsideBoundaryCondition != "Outdoors"
  if ext_const_base.include?
    ext_const_base[] += 1
    ext_const_base[] = 1
ext_const_base.sort.each do |construction,count|
  net_area = construction.getNetArea
  net_area_ip = OpenStudio::convert(net_area,"m^2","ft^2").get
  net_area_ip_neat = OpenStudio::toNeatString(net_area_ip,0,true)
  area_units = "ft^2"
  surface_count = count
  thermal_conductance = construction.thermalConductance.get
  source_units = "m^2*K/W"
  target_units = "ft^2*h*R/Btu"
  r_value_ip = OpenStudio::convert(1/thermal_conductance,source_units,target_units).get
  r_value_ip_neat = OpenStudio::toNeatString(r_value_ip,2,true)
  @surface_data[:data] << [,net_area_ip_neat,area_units,surface_count,r_value_ip_neat,target_units]

Now while the construction base does have access to a method called .thermalConductance, there isn't one for .density. @macumber maybe that is something we can add, of course it would be an optional since not all materials have mass, such as No Mass Materials. In that case we would need to decide if that layer contributes 0 mass and calculate the mass we do know about, or have the optional not initialize.

@Amir Roth, if you wanted to do this today, you would just loop through the materials used in the material. You can use the method in layered construction .layers to get the materials. You might be getting a standard "StandardOpaqueMaterial" for a layer or "No Mass Material" or "Air Gap Materials" etc. You need to get the object to the right material class. Then for StandardOpaqueMaterial there is a method .density

If you look at a measure that changes the wall performance you can find example code to find and then step through materials. It would be something like this.

  construction_layers = construction.layers
  construction_layers.each do |construction_layer|
    if construction_layer.to_OpaqueMaterial.is_initialized
    construction_layer_density = construction_layer.to_OpaqueMaterial.get.density
    # you also need to get thickness to get this layers contribution to total construction mass
      # add elsif to handle other material types  
edit flag offensive delete link more


I like that response time!

__AmirRoth__'s avatar __AmirRoth__  ( 2015-04-30 12:26:15 -0600 )edit

In general OpenStudio tries to avoid duplicating calculations that already occur in EnergyPlus, this is so we don't have to keep the calculation methods in synch. So for the moment, it is best to run EnergyPlus first and then extract things like thermal mass from the results. In the future, if EnergyPlus provided a library interface then OpenStudio could call that directly to perform certain calculations without having to run a full EnergyPlus simulation.

macumber's avatar macumber  ( 2015-04-30 12:27:24 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer


Question Tools

1 follower


Asked: 2015-04-30 11:35:55 -0600

Seen: 404 times

Last updated: Apr 30 '15