Module: OpenstudioStandards::Constructions::Materials

Defined in:
lib/openstudio-standards/constructions/materials/modify.rb

Modify collapse

Class Method Details

.opaque_material_set_surface_properties(opaque_material, roughness: nil, thermal_absorptance: nil, solar_absorptance: nil, visible_absorptance: nil) ⇒ OpenStudio::Model::OpaqueMaterial

set material surface properties

Parameters:

  • opaque_material (OpenStudio::Model::OpaqueMaterial)

    OpenStudio OpaqueMaterial object

  • roughness (String) (defaults to: nil)

    surface roughness. Options are ‘VeryRough’, ‘Rough’, ‘MediumRough’, ‘MediumSmooth’, ‘Smooth’, and ‘VerySmooth’

  • thermal_absorptance (Double) (defaults to: nil)

    target thermal absorptance

  • solar_absorptance (Double) (defaults to: nil)

    target solar absorptance

  • visible_absorptance (Double) (defaults to: nil)

    target visible absorptance

Returns:

  • (OpenStudio::Model::OpaqueMaterial)

    OpenStudio OpaqueMaterial object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/openstudio-standards/constructions/materials/modify.rb', line 45

def self.opaque_material_set_surface_properties(opaque_material,
                                                roughness: nil,
                                                thermal_absorptance: nil,
                                                solar_absorptance: nil,
                                                visible_absorptance: nil)
  unless opaque_material.to_OpaqueMaterial.is_initialized
    OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.constructions.materials', "Object #{opaque_material} cannot be cast as an OpaqueMaterial object.")
    return false
  end

  # set requested material properties
  material = opaque_material.to_OpaqueMaterial.get
  if material.to_StandardOpaqueMaterial.is_initialized
    material = material.to_StandardOpaqueMaterial.get
    material.setRoughness(roughness) unless roughness.nil?
  elsif material.to_MasslessOpaqueMaterial.is_initialized
    material = material.to_MasslessOpaqueMaterial.get
    material.setRoughness(roughness) unless roughness.nil?
  end
  material.setThermalAbsorptance(thermal_absorptance) unless thermal_absorptance.nil?
  material.setSolarAbsorptance(solar_absorptance) unless solar_absorptance.nil?
  material.setVisibleAbsorptance(visible_absorptance) unless visible_absorptance.nil?

  return material.to_OpaqueMaterial.get
end

.opaque_material_set_thermal_resistance(opaque_material, thermal_resistance) ⇒ OpenStudio::Model::OpaqueMaterial

change thermal resistance of opaque materials by increasing material thickness, or setting thermal resistance directly for massless or airgap materials.

Parameters:

  • opaque_material (OpenStudio::Model::OpaqueMaterial)

    OpenStudio OpaqueMaterial object

  • thermal_resistance (Double)

    Target thermal resistance of the material in m^2*K/W

Returns:

  • (OpenStudio::Model::OpaqueMaterial)

    OpenStudio OpaqueMaterial object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/openstudio-standards/constructions/materials/modify.rb', line 13

def self.opaque_material_set_thermal_resistance(opaque_material, thermal_resistance)
  unless opaque_material.to_OpaqueMaterial.is_initialized
    OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.constructions.materials', "Object #{opaque_material} cannot be cast as an OpaqueMaterial object.")
    return false
  end

  # edit insulation material
  material = opaque_material.to_OpaqueMaterial.get
  if material.to_MasslessOpaqueMaterial.is_initialized
    material = material.to_MasslessOpaqueMaterial.get
    material.setThermalResistance(thermal_resistance)
  elsif material.to_AirGap.is_initialized
    material = material.to_AirGap.get
    material.setThermalResistance(thermal_resistance)
  else
    starting_thickness = material.thickness
    target_thickness = starting_thickness * thermal_resistance / material.thermalResistance
    material.setThickness(target_thickness)
  end

  return material.to_OpaqueMaterial.get
end