Repository: NREL/OpenStudio (language: python)

Issue:
Remove the deprecated AirWallMaterial class
There are two separate construction for air wall which when used gives different results for lighting load, 

As you can see in the screenshot I have assumed the Lighting density to be 1 W/ft2 for atrium, Using both of them gives different results, It looks the air wall material taken form library gives accurate result as the summation of the lighting loads results to 1W/ft2 unlike the construction material which gives more than 4W/ft2. Not sure about the radiance though.

## Current Behavior
Different Lighting load while using different set of air wall available.

## Expected Behavior
There should be only 1 air wall and it should  be the one that is available in library as air boundary construction as it gives more options like zone grouping and air mixing.

## Steps to Reproduce
1.Make an OSM model.
2.Assign a lighting density to a space (multifloor)
3.Use air wall from construction for ceiling and floor.
4.Use air boundary from library  and compare the results

## Possible Solution
Have only 1 air wall construction.

## Details
Windows, 10 Open studio app 1,0,1, 3.0.1

![airwall](https://user-images.githubusercontent.com/63880759/92046864-bf378c80-ed40-11ea-9750-18c1262913ed.PNG)


![airwall1](https://user-images.githubusercontent.com/63880759/92046866-bfd02300-ed40-11ea-9c99-7fc35c69649b.PNG)


![atrium lighting](https://user-images.githubusercontent.com/63880759/92047073-63213800-ed41-11ea-9dd5-08897de494bc.PNG)

![lights library airwall](https://user-images.githubusercontent.com/63880759/92046869-c068b980-ed40-11ea-9fbd-2021e4437e07.PNG)


![library airwall](https://user-images.githubusercontent.com/63880759/92046972-1a697f00-ed41-11ea-9681-87512fbb146e.PNG)





Discussion / hints:
@kbenne we can talk about this in iteration meeting on Friday. This relates to when spaces are stacked in a zone for large space like atrium no floor or partial floor on upper stories. There is logic in (or I think prior to) forward translation when space types are expanded. When an air wall (old air wall material in construction) is used it deducts that floor area from the load calculations that are per floor area from objects like lights, equipment, people, ventilation, and infiltration. 

In adding the new air wall EnergyPlus capability it was added as a new object, when it would have been better to have it replace the old air wall so there are not two different air wall workflows. More importantly it didn't tie to the same logic. The fix could be to tie the new air wall and old air wall to same logic, but I would lean toward deprecating and removing the old one. Version translation from 3.0 to 3.1 would have to manage that.

Note: while we have identified this space type issue it is likely the same issue exists in Radiance workflows.

Maybe it will be easy and an update to the `isAirWall` method for planer surface will fix this, if the other code relies on this check. I do know a number of measures use this check.
https://openstudio-sdk-documentation.s3.amazonaws.com/cpp/OpenStudio-3.0.0-doc/model/html/classopenstudio_1_1model_1_1_planar_surface.html#a2a4dac9c598d7b40237d6fd71a0a17b0

There could be changes that OpenStudio Coalition may want to make to the SketchUp Plugin related to this, not sure if any impact on OpenStudio Application.
Moved to https://github.com/openstudiocoalition/OpenStudioApplication/issues/323
@jmarrec there is an issue in the OpenStudio SDK, about isAirWall and also how forward translate treats both kinds of air walls, (specifically impacts stacked spaces). So while there may be change in the app, the issue isn't limited to OS app.
Given this: https://github.com/NREL/OpenStudio/blob/7cec475621233fcd772de2c6715ef9252bcbb7a6/src/model/PlanarSurface.cpp#L214-L245

Is anything else really needed @DavidGoldwasser? because I can't see anything that would be missing personally. If you're satisfied, please close.
@jmarrec Before EnergyPlus had air wall, OpenStudios version of an air wall was just a layered construction with a specific material type as shown in this screenshot.

![Screen Shot 2021-06-08 at 10 07 22 AM](https://user-images.githubusercontent.com/4857055/121220051-8386a180-c841-11eb-9e79-95799e8a5d08.png)

When EnergyPlus added an air wall and that was supported in OpenStudio it was added as a new construction type, and not using a layered construction object at all as shown below.

![Screen Shot 2021-06-08 at 10 07 46 AM](https://user-images.githubusercontent.com/4857055/121220237-ac0e9b80-c841-11eb-9e05-45298e0bd13b.png)

It looks like the code above is both checking for ConstructionAirBoundary and a layered construction with AirWallMaterial. Not sure what the third check is of layered construction with no layers, but I would not want to assume that is an air wall, and it should fail when a simulation runs.

I think a mistake was made when we supported energy plus air wall to make a a parallel path to the existing air wall. We should have either kept it as a material and added these fields or made the new ConstructionAirBoundary object, and version translate OSM files to use that and kill the air wall material. Having both is just confusing to a user. If we want to keep the old one in the model I suppose we can, but maybe interfaces can only show the new approach, which provides the option for airflow across the air wall, which doesn't happen with the old approach (which is just plywood like material).
@jmarrec I guess unless you want to undertake deprecating the old object, or merging these, then it is fine to close this

but if the code below was always in then we should test it and see why results were not as expected.

```c++
     boost::optional<ConstructionAirBoundary> constructionAirBoundary = 
       oConstruction->optionalCast<ConstructionAirBoundary>();
      if (constructionAirBoundary) {    
        return true;
      } 
```


Maybe forward translation is not using isAirWall method and is using a different approach, which also needs to be updated. Should be able to test with an OSM with two stacked spaces included as part of a single zone. make the ceiling/floor between them an air wall and look and EUI and building square footage. This was not working as described at the beginning of this issue. But I don't know if the code above was added after the issue was filed, or if it already existing.

The test might need to use two different space types to trigger the blending of space types that OpenStudio does prior to forward translation which may convert area normalized loads to watts.
It is confusing indeed to have both. I found the commit where this happened: https://github.com/NREL/OpenStudio/commit/bf17b66549ddc5c7a5badb7f0a84d12b93b44e81

It seems instead of doing VT to actually change the AirWallMaterial to ConstructionAirBoundary and remove AirWallMaterial class altogether, the AirWallMaterial model class was marked deprecated, and the replacement to CosntructionAirBoundary is actually done in the ForwardTranslator. This was done to avoid API breakage: if people had a measure that used the AirWallMaterial, suddenly it would have been broken. Makes sense...

https://github.com/NREL/OpenStudio/blob/70a5549c439eda69d6c514a7275254f71f7e3d2b/src/energyplus/ForwardTranslator.cpp#L208

This happened in 2.9. I think we do need to remove AirWallMaterial altogether, but this would be perhaps better done for the next major version? @kbenne Dear protector of the API realm, thoughts please?
Personally I think having almost two years of this message https://github.com/NREL/OpenStudio/blob/70a5549c439eda69d6c514a7275254f71f7e3d2b/src/model/AirWallMaterial.cpp#L70 is enough to remove it in the next release...

I'm going to retitle the issue to be more clear and mark it "APIChange" so that next time we consider breaking API to remove deprecated stuff, we find it.

Fix patch:
diff --git a/developer/doc/ReleaseNotes/OpenStudio_Release_Notes_3_4_1_TBD.md b/developer/doc/ReleaseNotes/OpenStudio_Release_Notes_3_4_1_TBD.md
index 0be002fae03..823e9650032 100644
--- a/developer/doc/ReleaseNotes/OpenStudio_Release_Notes_3_4_1_TBD.md
+++ b/developer/doc/ReleaseNotes/OpenStudio_Release_Notes_3_4_1_TBD.md
@@ -74,6 +74,11 @@ You can also refer to the [OpenStudio SDK Python Binding Version Compatibility M
     * `EvaporativeCoolerFluid:SingleSpeed` has an API-breaking change related to its `performanceInputMethod` getter. It is now a required field that returns `std::string` instead of `boost::optional<std::string>`.
 * [#4644](https://github.com/NREL/OpenStudio/pull/4644) - Addresses #4575, API change for Coil:Cooling:DX:SingleSpeed and Coil:Cooling:DX:TwoSpeed
     * ` Coil:Cooling:DX:SingleSpeed` and `Coil:Cooling:DX:TwoSpeed` have API-breaking changes related to many of their getters. They are now required fields that return `double` instead of `boost::optional<double>`. Also removes many deprecated methods.
+* [#4632](https://github.com/NREL/OpenStudio/pull/4632) - Remove deprecated methods for AirWallMaterial, Node, SizingSystem, ZoneAirMassFlowConservation
+    * Removes the deprecated `AirWallMaterial` class completely, in favor of `ConstructionAirBoundary`
+    * Removes functions in `Node` that have been deprecated for 9+ years
+    * Removes deprecated methods in the `SizingSystem`, `ZoneAirMassFlowConservation`, `PlantLoop` & `AirLoopHVAC`, `AvailablilityManagerNightCycle`, `ZoneVentilationDesignFlowRate` classes
+    * Refer to the CSV file at [developer/ruby/deprecated_methods.csv](https://github.com/NREL/OpenStudio/blob/develop/developer/ruby/deprecated_methods.csv) for more information
 
 
 ## Minor changes and bug fixes
diff --git a/developer/ruby/deprecated_methods.csv b/developer/ruby/deprecated_methods.csv
index 793f206546e..9f1b5a61f28 100644
--- a/developer/ruby/deprecated_methods.csv
+++ b/developer/ruby/deprecated_methods.csv
@@ -1,27 +1,27 @@
 Namespace,Class Name,Method,Deprecated Since,Commit SHA,Replace With,Removed In
 measure,OSMeasure,registerWithSketchUp,,,None,
 measure,OSMeasure,registerWithApplication,,,None,
-model,AvailabilityManagerNightCycle,controlThermalZone,2.3.1,3578590b7e63a68bedb7e43bef21f50552e0c6b7,controlThermalZones,
-model,AvailabilityManagerNightCycle,setControlThermalZone,2.3.1,3578590b7e63a68bedb7e43bef21f50552e0c6b8,setControlThermalZones,
-model,AvailabilityManagerNightCycle,resetControlThermalZone,2.3.1,3578590b7e63a68bedb7e43bef21f50552e0c6b9,resetControlThermalZones,
-model,AirLoopHVAC,availabilityManager,2.3.1,3578590b7e63a68bedb7e43bef21f50552e0c6b10,availabilityManagers,
-model,AirLoopHVAC,setAvailabilityManager,2.3.1,3578590b7e63a68bedb7e43bef21f50552e0c6b11,"addAvailabilityManager, setAvailabilityManagers",
-model,AirLoopHVAC,resetAvailabilityManager,2.3.1,3578590b7e63a68bedb7e43bef21f50552e0c6b12,resetAvailabilityManagers,
-model,PlantLoop,availabilityManager,2.3.1,3578590b7e63a68bedb7e43bef21f50552e0c6b13,availabilityManagers,
-model,PlantLoop,setAvailabilityManager,2.3.1,3578590b7e63a68bedb7e43bef21f50552e0c6b14,"addAvailabilityManager, setAvailabilityManagers",
-model,PlantLoop,resetAvailabilityManager,2.3.1,3578590b7e63a68bedb7e43bef21f50552e0c6b15,resetAvailabilityManagers,
-model,Node,addSetpointManager,1.13.0,40c19546076be456f110ca542cd70ce711541961,SetpointManagerXXX::addToNode,
-model,Node,addSetpointManagerWarmest,1.13.0,40c19546076be456f110ca542cd70ce711541962,SetpointManagerWarmest::addToNode,
-model,Node,getSetpointManagerSingleZoneReheat,1.13.0,40c19546076be456f110ca542cd70ce711541963,Node::setpointManagers,
-model,Node,getSetpointManagerMixedAir,1.13.0,40c19546076be456f110ca542cd70ce711541964,Node::setpointManagers,
-model,Node,setpointManagerScheduled,1.13.0,40c19546076be456f110ca542cd70ce711541965,Node::setpointManagers,
-model,Node,setpointManagerFollowOutdoorAirTemperature,1.13.0,40c19546076be456f110ca542cd70ce711541966,Node::setpointManagers,
-model,Node,setpointManagerOutdoorAirReset,1.13.0,40c19546076be456f110ca542cd70ce711541967,Node::setpointManagers,
-model,Node,setpointManagerWarmest,1.13.0,40c19546076be456f110ca542cd70ce711541968,Node::setpointManagers,
-model,Node,removeSetpointManagerSingleZoneReheat,1.13.0,40c19546076be456f110ca542cd70ce711541969,SetpointManagerSingleZoneReheat::remove,
-model,Node,removeSetpointManagerWarmest,1.13.0,40c19546076be456f110ca542cd70ce711541970,SetpointManagerWarmest::remove,
-model,Node,removeSetpointManagerOutdoorAirReset,1.13.0,40c19546076be456f110ca542cd70ce711541971,SetpointManagerOutdoorAirReset::remove,
-model,Node,removeSetpointManagerFollowOutdoorAirTemperature,1.13.0,40c19546076be456f110ca542cd70ce711541972,SetpointManagerFollowOutdoorAirTemperature::remove,
-model,Node,removeSetpointManagerScheduled,1.13.0,40c19546076be456f110ca542cd70ce711541973,SetpointManagerScheduled::remove,
-model,Node,removeSetpointManagerMixedAir,1.13.0,40c19546076be456f110ca542cd70ce711541974,SetpointManagerMixedAir::remove,
-model,ZoneVentilationDesignFlowRate,setDesignFlowRateCalculationMethod,2.3.1,9ee9be2d0da3ed954a1e98cc3ab39ec7debffa92,"Done when calling setDesignFlowRate, setFlowRateperZoneFloorArea, setAirChangesperHour",
+model,AvailabilityManagerNightCycle,controlThermalZone,2.3.1,3578590b7e63a68bedb7e43bef21f50552e0c6b7,controlThermalZones,3.4.1
+model,AvailabilityManagerNightCycle,setControlThermalZone,2.3.1,3578590b7e63a68bedb7e43bef21f50552e0c6b8,setControlThermalZones,3.4.1
+model,AvailabilityManagerNightCycle,resetControlThermalZone,2.3.1,3578590b7e63a68bedb7e43bef21f50552e0c6b9,resetControlThermalZones,3.4.1
+model,AirLoopHVAC,availabilityManager,2.3.1,3578590b7e63a68bedb7e43bef21f50552e0c6b10,availabilityManagers,3.4.1
+model,AirLoopHVAC,setAvailabilityManager,2.3.1,3578590b7e63a68bedb7e43bef21f50552e0c6b11,"addAvailabilityManager, setAvailabilityManagers",3.4.1
+model,AirLoopHVAC,resetAvailabilityManager,2.3.1,3578590b7e63a68bedb7e43bef21f50552e0c6b12,resetAvailabilityManagers,3.4.1
+model,PlantLoop,availabilityManager,2.3.1,3578590b7e63a68bedb7e43bef21f50552e0c6b13,availabilityManagers,3.4.1
+model,PlantLoop,setAvailabilityManager,2.3.1,3578590b7e63a68bedb7e43bef21f50552e0c6b14,"addAvailabilityManager, setAvailabilityManagers",3.4.1
+model,PlantLoop,resetAvailabilityManager,2.3.1,3578590b7e63a68bedb7e43bef21f50552e0c6b15,resetAvailabilityManagers,3.4.1
+model,Node,addSetpointManager,1.13.0,40c19546076be456f110ca542cd70ce711541961,SetpointManagerXXX::addToNode,3.4.1
+model,Node,addSetpointManagerWarmest,1.13.0,40c19546076be456f110ca542cd70ce711541962,SetpointManagerWarmest::addToNode,3.4.1
+model,Node,getSetpointManagerSingleZoneReheat,1.13.0,40c19546076be456f110ca542cd70ce711541963,Node::setpointManagers,3.4.1
+model,Node,getSetpointManagerMixedAir,1.13.0,40c19546076be456f110ca542cd70ce711541964,Node::setpointManagers,3.4.1
+model,Node,setpointManagerScheduled,1.13.0,40c19546076be456f110ca542cd70ce711541965,Node::setpointManagers,3.4.1
+model,Node,setpointManagerFollowOutdoorAirTemperature,1.13.0,40c19546076be456f110ca542cd70ce711541966,Node::setpointManagers,3.4.1
+model,Node,setpointManagerOutdoorAirReset,1.13.0,40c19546076be456f110ca542cd70ce711541967,Node::setpointManagers,3.4.1
+model,Node,setpointManagerWarmest,1.13.0,40c19546076be456f110ca542cd70ce711541968,Node::setpointManagers,3.4.1
+model,Node,removeSetpointManagerSingleZoneReheat,1.13.0,40c19546076be456f110ca542cd70ce711541969,SetpointManagerSingleZoneReheat::remove,3.4.1
+model,Node,removeSetpointManagerWarmest,1.13.0,40c19546076be456f110ca542cd70ce711541970,SetpointManagerWarmest::remove,3.4.1
+model,Node,removeSetpointManagerOutdoorAirReset,1.13.0,40c19546076be456f110ca542cd70ce711541971,SetpointManagerOutdoorAirReset::remove,3.4.1
+model,Node,removeSetpointManagerFollowOutdoorAirTemperature,1.13.0,40c19546076be456f110ca542cd70ce711541972,SetpointManagerFollowOutdoorAirTemperature::remove,3.4.1
+model,Node,removeSetpointManagerScheduled,1.13.0,40c19546076be456f110ca542cd70ce711541973,SetpointManagerScheduled::remove,3.4.1
+model,Node,removeSetpointManagerMixedAir,1.13.0,40c19546076be456f110ca542cd70ce711541974,SetpointManagerMixedAir::remove,3.4.1
+model,ZoneVentilationDesignFlowRate,setDesignFlowRateCalculationMethod,2.3.1,9ee9be2d0da3ed954a1e98cc3ab39ec7debffa92,"Done when calling setDesignFlowRate, setFlowRateperZoneFloorArea, setAirChangesperHour",3.4.1
diff --git a/resources/model/OpenStudio.idd b/resources/model/OpenStudio.idd
index b5fe0160b82..20c25148ad7 100644
--- a/resources/model/OpenStudio.idd
+++ b/resources/model/OpenStudio.idd
@@ -2130,16 +2130,6 @@ OS:Material:AirGap,
        \units m2-K/W
        \minimum> 0
 
-OS:Material:AirWall,
-       \min-fields 1
-  A1, \field Handle
-       \type handle
-       \required-field
-  A2; \field Name
-       \type alpha
-       \required-field
-       \reference MaterialNames
-
 OS:Material:InfraredTransparent,
        \memo Special infrared transparent material.  Similar to a Material:Nomass with low thermal resistance.
        \memo High absorptance in both wavelengths.
diff --git a/src/energyplus/CMakeLists.txt b/src/energyplus/CMakeLists.txt
index c88ef9db11c..0e55c1ec154 100644
--- a/src/energyplus/CMakeLists.txt
+++ b/src/energyplus/CMakeLists.txt
@@ -41,7 +41,6 @@ set(${target_name}_src
   ForwardTranslator/ForwardTranslateAirTerminalSingleDuctInletSideMixer.cpp
   ForwardTranslator/ForwardTranslateAirTerminalSingleDuctVAVHeatAndCoolNoReheat.cpp
   ForwardTranslator/ForwardTranslateAirTerminalSingleDuctVAVHeatAndCoolReheat.cpp
-  ForwardTranslator/ForwardTranslateAirWallMaterial.cpp
   ForwardTranslator/ForwardTranslateAvailabilityManagerAssignmentList.cpp
   ForwardTranslator/ForwardTranslateAvailabilityManagerScheduled.cpp
   ForwardTranslator/ForwardTranslateAvailabilityManagerScheduledOn.cpp
@@ -636,7 +635,6 @@ set(${target_name}_test_src
   Test/AirTerminalSingleDuctVAVReheat_GTest.cpp
   Test/AirTerminalSingleDuctVAVHeatAndCoolNoReheat_GTest.cpp
   Test/AirTerminalSingleDuctVAVHeatAndCoolReheat_GTest.cpp
-  Test/AirWallMaterial_GTest.cpp
 
   Test/AirLoopHVAC_GTest.cpp
   Test/AirLoopHVACDedicatedOutdoorAirSystem_GTest.cpp
diff --git a/src/energyplus/ForwardTranslator.cpp b/src/energyplus/ForwardTranslator.cpp
index 66e88f97728..d7d38b74fc8 100644
--- a/src/energyplus/ForwardTranslator.cpp
+++ b/src/energyplus/ForwardTranslator.cpp
@@ -276,37 +276,6 @@ namespace energyplus {
       }
     }
 
-    // replace old style air wall Constructions with ConstructionAirBoundary
-    for (LayeredConstruction construction : model.getModelObjects<LayeredConstruction>()) {
-      if (construction.isModelPartition() && (construction.numLayers() == 1)) {
-        MaterialVector layers = construction.layers();
-        OS_ASSERT(layers.size() == 1u);
-
-        // if this is an old style air wall
-        if (layers[0].optionalCast<AirWallMaterial>()) {
-          ConstructionAirBoundary newConstruction(model);
-          newConstruction.setName(construction.nameString() + "_ConstructionAirBoundary");
-
-          for (WorkspaceObject source : construction.sources()) {
-            for (unsigned index : source.getSourceIndices(construction.handle())) {
-              bool test = source.setPointer(index, newConstruction.handle());
-              OS_ASSERT(test);
-            }
-          }
-
-          LOG(Warn, "Construction '" << construction.nameString() << "' has been converted to ConstructionAirBoundary '"
-                                     << newConstruction.nameString() << "'.");
-          construction.remove();
-        }
-      }
-    }
-
-    // remove all AirWallMaterial objects
-    for (AirWallMaterial airWall : model.getConcreteModelObjects<AirWallMaterial>()) {
-      LOG(Warn, "Removing AirWallMaterial '" << airWall.nameString() << "'.");
-      airWall.remove();
-    }
-
     // check for spaces not in a thermal zone
     for (Space space : model.getConcreteModelObjects<Space>()) {
       if (!space.thermalZone()) {
@@ -902,11 +871,6 @@ namespace energyplus {
         retVal = translateAvailabilityManagerScheduledOff(mo);
         break;
       }
-      case openstudio::IddObjectType::OS_Material_AirWall: {
-        model::AirWallMaterial airWallMaterial = modelObject.cast<AirWallMaterial>();
-        retVal = translateAirWallMaterial(airWallMaterial);
-        break;
-      }
       case openstudio::IddObjectType::OS_AvailabilityManager_HybridVentilation: {
         auto mo = modelObject.cast<AvailabilityManagerHybridVentilation>();
         retVal = translateAvailabilityManagerHybridVentilation(mo);
@@ -3558,7 +3522,6 @@ namespace energyplus {
     iddObjectTypes.push_back(IddObjectType::OS_MaterialProperty_GlazingSpectralData);
     iddObjectTypes.push_back(IddObjectType::OS_Material);
     iddObjectTypes.push_back(IddObjectType::OS_Material_AirGap);
-    iddObjectTypes.push_back(IddObjectType::OS_Material_AirWall);
     iddObjectTypes.push_back(IddObjectType::OS_Material_InfraredTransparent);
     iddObjectTypes.push_back(IddObjectType::OS_Material_NoMass);
     iddObjectTypes.push_back(IddObjectType::OS_Material_RoofVegetation);
diff --git a/src/energyplus/ForwardTranslator.hpp b/src/energyplus/ForwardTranslator.hpp
index 9baf6243178..1a441361fa9 100644
--- a/src/energyplus/ForwardTranslator.hpp
+++ b/src/energyplus/ForwardTranslator.hpp
@@ -98,7 +98,6 @@ namespace model {
   class AirLoopHVACZoneMixer;
   class AirLoopHVACOutdoorAirSystem;
   class AirLoopHVACDedicatedOutdoorAirSystem;
-  class AirWallMaterial;
   class AvailabilityManagerAssignmentList;
   class AvailabilityManagerHybridVentilation;
   class AvailabilityManagerOptimumStart;
@@ -701,8 +700,6 @@ namespace energyplus {
 
     boost::optional<IdfObject> translateAirTerminalSingleDuctVAVHeatAndCoolReheat(model::AirTerminalSingleDuctVAVHeatAndCoolReheat& modelObject);
 
-    boost::optional<IdfObject> translateAirWallMaterial(model::AirWallMaterial& modelObject);
-
     boost::optional<IdfObject> translateAvailabilityManagerAssignmentList(model::AvailabilityManagerAssignmentList& modelObject);
 
     boost::optional<IdfObject> translateAvailabilityManagerHybridVentilation(model::AvailabilityManagerHybridVentilation& modelObject);
diff --git a/src/energyplus/ForwardTranslator/ForwardTranslateAirWallMaterial.cpp b/src/energyplus/ForwardTranslator/ForwardTranslateAirWallMaterial.cpp
deleted file mode 100644
index 097f433f526..00000000000
--- a/src/energyplus/ForwardTranslator/ForwardTranslateAirWallMaterial.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-/***********************************************************************************************************************
-*  OpenStudio(R), Copyright (c) 2008-2022, Alliance for Sustainable Energy, LLC, and other contributors. All rights reserved.
-*
-*  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
-*  following conditions are met:
-*
-*  (1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following
-*  disclaimer.
-*
-*  (2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
-*  disclaimer in the documentation and/or other materials provided with the distribution.
-*
-*  (3) Neither the name of the copyright holder nor the names of any contributors may be used to endorse or promote products
-*  derived from this software without specific prior written permission from the respective party.
-*
-*  (4) Other than as required in clauses (1) and (2), distributions in any form of modifications or other derivative works
-*  may not use the "OpenStudio" trademark, "OS", "os", or any other confusingly similar designation without specific prior
-*  written permission from Alliance for Sustainable Energy, LLC.
-*
-*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-*  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-*  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE UNITED STATES GOVERNMENT, OR THE UNITED
-*  STATES DEPARTMENT OF ENERGY, NOR ANY OF THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-*  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-*  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-*  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-*  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************************************************************/
-
-#include "../ForwardTranslator.hpp"
-
-#include "../../model/Model.hpp"
-#include "../../model/AirWallMaterial.hpp"
-#include "../../model/AirWallMaterial_Impl.hpp"
-
-#include <utilities/idd/Material_FieldEnums.hxx>
-
-#include "../../utilities/idd/IddEnums.hpp"
-#include <utilities/idd/IddEnums.hxx>
-#include <utilities/idd/IddFactory.hxx>
-
-using namespace openstudio::model;
-
-using namespace std;
-
-namespace openstudio {
-
-namespace energyplus {
-
-  boost::optional<IdfObject> ForwardTranslator::translateAirWallMaterial(AirWallMaterial& modelObject) {
-    LOG(Error, "Translation of AirWallMaterial has been removed.  Use ConstructionAirBoundary instead.");
-    OS_ASSERT(false);
-    return boost::none;
-  }
-
-}  // namespace energyplus
-
-}  // namespace openstudio
diff --git a/src/energyplus/ReverseTranslator/ReverseTranslateZoneAirMassFlowConservation.cpp b/src/energyplus/ReverseTranslator/ReverseTranslateZoneAirMassFlowConservation.cpp
index 4d4f4c6d450..e5dbdaaa7ab 100644
--- a/src/energyplus/ReverseTranslator/ReverseTranslateZoneAirMassFlowConservation.cpp
+++ b/src/energyplus/ReverseTranslator/ReverseTranslateZoneAirMassFlowConservation.cpp
@@ -60,7 +60,12 @@ namespace energyplus {
 
     s = workspaceObject.getString(openstudio::ZoneAirMassFlowConservationFields::InfiltrationBalancingMethod, true);
     if (s) {
-      result.setSourceZoneInfiltrationTreatment(*s);
+      result.setInfiltrationBalancingMethod(*s);
+    }
+
+    s = workspaceObject.getString(openstudio::ZoneAirMassFlowConservationFields::InfiltrationBalancingZones, true);
+    if (s) {
+      result.setInfiltrationBalancingZones(*s);
     }
 
     return result;
diff --git a/src/energyplus/Test/AirWallMaterial_GTest.cpp b/src/energyplus/Test/AirWallMaterial_GTest.cpp
deleted file mode 100644
index fec1af8765a..00000000000
--- a/src/energyplus/Test/AirWallMaterial_GTest.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-/***********************************************************************************************************************
-*  OpenStudio(R), Copyright (c) 2008-2022, Alliance for Sustainable Energy, LLC, and other contributors. All rights reserved.
-*
-*  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
-*  following conditions are met:
-*
-*  (1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following
-*  disclaimer.
-*
-*  (2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
-*  disclaimer in the documentation and/or other materials provided with the distribution.
-*
-*  (3) Neither the name of the copyright holder nor the names of any contributors may be used to endorse or promote products
-*  derived from this software without specific prior written permission from the respective party.
-*
-*  (4) Other than as required in clauses (1) and (2), distributions in any form of modifications or other derivative works
-*  may not use the "OpenStudio" trademark, "OS", "os", or any other confusingly similar designation without specific prior
-*  written permission from Alliance for Sustainable Energy, LLC.
-*
-*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-*  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-*  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE UNITED STATES GOVERNMENT, OR THE UNITED
-*  STATES DEPARTMENT OF ENERGY, NOR ANY OF THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-*  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-*  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-*  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-*  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************************************************************/
-
-#include <gtest/gtest.h>
-#include "EnergyPlusFixture.hpp"
-
-#include "../ErrorFile.hpp"
-#include "../ForwardTranslator.hpp"
-#include "../ReverseTranslator.hpp"
-
-#include "../../model/Model.hpp"
-#include "../../model/AirWallMaterial.hpp"
-#include "../../model/AirWallMaterial_Impl.hpp"
-
-using namespace openstudio;
-using namespace openstudio::model;
-using namespace openstudio::energyplus;
-
-TEST_F(EnergyPlusFixture, ForwardTranslator_AirWallMaterial) {}
diff --git a/src/energyplus/Test/AvailabilityManagerHighTemperatureTurnOff_GTest.cpp b/src/energyplus/Test/AvailabilityManagerHighTemperatureTurnOff_GTest.cpp
index c5416a70c60..d15d6068f6f 100644
--- a/src/energyplus/Test/AvailabilityManagerHighTemperatureTurnOff_GTest.cpp
+++ b/src/energyplus/Test/AvailabilityManagerHighTemperatureTurnOff_GTest.cpp
@@ -57,7 +57,7 @@ TEST_F(EnergyPlusFixture, ForwardTranslator_AvailabilityManagerHighTemperatureTu
 
   // Assign it to a plant loop
   PlantLoop p(m);
-  p.setAvailabilityManager(avm);
+  p.addAvailabilityManager(avm);
 
   // ForwardTranslate
   ForwardTranslator forwardTranslator;
@@ -87,7 +87,7 @@ TEST_F(EnergyPlusFixture, ForwardTranslator_AvailabilityManagerHighTemperatureTu
 
   // Assign it to a plant loop (otherwise it's purely not translated anyways...)
   PlantLoop p(m);
-  p.setAvailabilityManager(avm);
+  p.addAvailabilityManager(avm);
 
   // ForwardTranslate
   ForwardTranslator forwardTranslator;
diff --git a/src/energyplus/Test/AvailabilityManagerHighTemperatureTurnOn_GTest.cpp b/src/energyplus/Test/AvailabilityManagerHighTemperatureTurnOn_GTest.cpp
index 3f770bcb8e0..905e8d4714b 100644
--- a/src/energyplus/Test/AvailabilityManagerHighTemperatureTurnOn_GTest.cpp
+++ b/src/energyplus/Test/AvailabilityManagerHighTemperatureTurnOn_GTest.cpp
@@ -57,7 +57,7 @@ TEST_F(EnergyPlusFixture, ForwardTranslator_AvailabilityManagerHighTemperatureTu
 
   // Assign it to a plant loop
   PlantLoop p(m);
-  p.setAvailabilityManager(avm);
+  p.addAvailabilityManager(avm);
 
   // ForwardTranslate
   ForwardTranslator forwardTranslator;
@@ -87,7 +87,7 @@ TEST_F(EnergyPlusFixture, ForwardTranslator_AvailabilityManagerHighTemperatureTu
 
   // Assign it to a plant loop (otherwise it's purely not translated anyways...)
   PlantLoop p(m);
-  p.setAvailabilityManager(avm);
+  p.addAvailabilityManager(avm);
 
   // ForwardTranslate
   ForwardTranslator forwardTranslator;
diff --git a/src/energyplus/Test/AvailabilityManagerLowTemperatureTurnOff_GTest.cpp b/src/energyplus/Test/AvailabilityManagerLowTemperatureTurnOff_GTest.cpp
index f601a93d466..4d669017baa 100644
--- a/src/energyplus/Test/AvailabilityManagerLowTemperatureTurnOff_GTest.cpp
+++ b/src/energyplus/Test/AvailabilityManagerLowTemperatureTurnOff_GTest.cpp
@@ -62,7 +62,7 @@ TEST_F(EnergyPlusFixture, ForwardTranslator_AvailabilityManagerLowTemperatureTur
 
   // Assign it to a plant loop
   PlantLoop p(m);
-  p.setAvailabilityManager(avm);
+  p.addAvailabilityManager(avm);
 
   // ForwardTranslate
   ForwardTranslator forwardTranslator;
@@ -95,7 +95,7 @@ TEST_F(EnergyPlusFixture, ForwardTranslator_AvailabilityManagerLowTemperatureTur
 
   // Assign it to a plant loop (otherwise it's purely not translated anyways...)
   PlantLoop p(m);
-  p.setAvailabilityManager(avm);
+  p.addAvailabilityManager(avm);
 
   // ForwardTranslate
   ForwardTranslator forwardTranslator;
diff --git a/src/energyplus/Test/AvailabilityManagerLowTemperatureTurnOn_GTest.cpp b/src/energyplus/Test/AvailabilityManagerLowTemperatureTurnOn_GTest.cpp
index fd3debef113..8ac70e77788 100644
--- a/src/energyplus/Test/AvailabilityManagerLowTemperatureTurnOn_GTest.cpp
+++ b/src/energyplus/Test/AvailabilityManagerLowTemperatureTurnOn_GTest.cpp
@@ -58,7 +58,7 @@ TEST_F(EnergyPlusFixture, ForwardTranslator_AvailabilityManagerLowTemperatureTur
 
   // Assign it to a plant loop
   PlantLoop p(m);
-  p.setAvailabilityManager(avm);
+  p.addAvailabilityManager(avm);
 
   // ForwardTranslate
   ForwardTranslator forwardTranslator;
@@ -88,7 +88,7 @@ TEST_F(EnergyPlusFixture, ForwardTranslator_AvailabilityManagerLowTemperatureTur
 
   // Assign it to a plant loop (otherwise it's purely not translated anyways...)
   PlantLoop p(m);
-  p.setAvailabilityManager(avm);
+  p.addAvailabilityManager(avm);
 
   // ForwardTranslate
   ForwardTranslator forwardTranslator;
@@ -105,9 +105,9 @@ TEST_F(EnergyPlusFixture, ForwardTranslator_AvailabilityManagerLowTemperatureTur
 
   // Assign it to a plant loop
   PlantLoop p(m);
-  ASSERT_TRUE(p.setAvailabilityManager(avm));
+  ASSERT_TRUE(p.addAvailabilityManager(avm));
 
   // Assign it to an Air loop
   AirLoopHVAC a(m);
-  ASSERT_TRUE(a.setAvailabilityManager(avm));
+  ASSERT_TRUE(a.addAvailabilityManager(avm));
 }
diff --git a/src/energyplus/Test/EMS_GTest.cpp b/src/energyplus/Test/EMS_GTest.cpp
index 32aff992c95..4e249ac1dfe 100644
--- a/src/energyplus/Test/EMS_GTest.cpp
+++ b/src/energyplus/Test/EMS_GTest.cpp
@@ -104,7 +104,6 @@
 #include "../../model/Material.hpp"
 #include "../../model/Material_Impl.hpp"
 #include "../../model/AirGap.hpp"
-#include "../../model/AirWallMaterial.hpp"
 #include "../../model/StandardOpaqueMaterial.hpp"
 #include "../../model/StandardOpaqueMaterial_Impl.hpp"
 #include "../../model/StandardGlazing.hpp"
diff --git a/src/gbxml/ReverseTranslator.cpp b/src/gbxml/ReverseTranslator.cpp
index f358a4454c2..5cad106277d 100644
--- a/src/gbxml/ReverseTranslator.cpp
+++ b/src/gbxml/ReverseTranslator.cpp
@@ -58,8 +58,6 @@
 #include "../model/Construction_Impl.hpp"
 #include "../model/ConstructionAirBoundary.hpp"
 #include "../model/ConstructionAirBoundary_Impl.hpp"
-#include "../model/AirWallMaterial.hpp"
-#include "../model/AirWallMaterial_Impl.hpp"
 #include "../model/AdditionalProperties.hpp"
 
 #include "../utilities/core/Assert.hpp"
diff --git a/src/model/AirLoopHVAC.cpp b/src/model/AirLoopHVAC.cpp
index 78f82e11e95..997a9efe827 100644
--- a/src/model/AirLoopHVAC.cpp
+++ b/src/model/AirLoopHVAC.cpp
@@ -2309,28 +2309,6 @@ namespace model {
     return getImpl<detail::AirLoopHVAC_Impl>()->removeAvailabilityManager(priority);
   }
 
-  // TODO: START DEPRECATED SECTION
-
-  boost::optional<AvailabilityManager> AirLoopHVAC::availabilityManager() const {
-    boost::optional<AvailabilityManager> avm;
-    std::vector<AvailabilityManager> avmVector = availabilityManagers();
-    if (avmVector.size() > 0) {
-      avm = avmVector[0];
-    }
-    return avm;
-  }
-
-  bool AirLoopHVAC::setAvailabilityManager(const AvailabilityManager& availabilityManager) {
-    std::vector<AvailabilityManager> avmVector;
-    avmVector.push_back(availabilityManager);
-    return setAvailabilityManagers(avmVector);
-  }
-  void AirLoopHVAC::resetAvailabilityManager() {
-    resetAvailabilityManagers();
-  }
-
-  // END DEPRECATED
-
 }  // namespace model
 
 }  // namespace openstudio
diff --git a/src/model/AirLoopHVAC.hpp b/src/model/AirLoopHVAC.hpp
index 7b841da99c6..c040f07db89 100644
--- a/src/model/AirLoopHVAC.hpp
+++ b/src/model/AirLoopHVAC.hpp
@@ -32,7 +32,6 @@
 
 #include "ModelAPI.hpp"
 #include "Loop.hpp"
-#include "../utilities/core/Deprecated.hpp"
 
 namespace openstudio {
 
@@ -361,23 +360,6 @@ namespace model {
    */
     unsigned availabilityManagerPriority(const AvailabilityManager& availabilityManager) const;
 
-    // TODO: DEPRECATED SECTION Remove in the future (deprecated around 2.3.0)
-    /*
-   * Returns the first availability Manager used
-   */
-    OS_DEPRECATED boost::optional<AvailabilityManager> availabilityManager() const;
-
-    /* Deprecated, kept for backward compatibility with existing scripts, will be removed in a future version
-   * Behavior is that it will remove all AVMs assigned to this loop, and replace it with the one passed as argument
-   */
-    OS_DEPRECATED bool setAvailabilityManager(const AvailabilityManager& availabilityManager);
-
-    /*
-   * Clears all AVMs (forwards to resetAvailabilabilityManagers
-   **/
-    OS_DEPRECATED void resetAvailabilityManager();
-    // END DEPRECATED
-
     std::vector<openstudio::IdfObject> remove() override;
 
     ModelObject clone(Model model) const override;
@@ -394,7 +376,7 @@ namespace model {
 
     /// @cond
 
-    typedef detail::AirLoopHVAC_Impl ImplType;
+    using ImplType = detail::AirLoopHVAC_Impl;
 
     explicit AirLoopHVAC(std::shared_ptr<ImplType> impl);
 
@@ -405,10 +387,10 @@ namespace model {
   };
 
   // optional AirLoopHVAC
-  typedef boost::optional<AirLoopHVAC> OptionalAirLoopHVAC;
+  using OptionalAirLoopHVAC = boost::optional<AirLoopHVAC>;
 
   // vector of AirLoopHVAC
-  typedef std::vector<AirLoopHVAC> AirLoopHVACVector;
+  using AirLoopHVACVector = std::vector<AirLoopHVAC>;
 
 }  // namespace model
 
diff --git a/src/model/AirTerminalSingleDuctVAVNoReheat.hpp b/src/model/AirTerminalSingleDuctVAVNoReheat.hpp
index 0e304f51947..ee8dee0cf61 100644
--- a/src/model/AirTerminalSingleDuctVAVNoReheat.hpp
+++ b/src/model/AirTerminalSingleDuctVAVNoReheat.hpp
@@ -32,7 +32,6 @@
 
 #include "ModelAPI.hpp"
 #include "StraightComponent.hpp"
-#include "../utilities/core/Deprecated.hpp"
 
 namespace openstudio {
 namespace model {
diff --git a/src/model/AirWallMaterial.cpp b/src/model/AirWallMaterial.cpp
deleted file mode 100644
index 75f0aedecbd..00000000000
--- a/src/model/AirWallMaterial.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-/***********************************************************************************************************************
-*  OpenStudio(R), Copyright (c) 2008-2022, Alliance for Sustainable Energy, LLC, and other contributors. All rights reserved.
-*
-*  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
-*  following conditions are met:
-*
-*  (1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following
-*  disclaimer.
-*
-*  (2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
-*  disclaimer in the documentation and/or other materials provided with the distribution.
-*
-*  (3) Neither the name of the copyright holder nor the names of any contributors may be used to endorse or promote products
-*  derived from this software without specific prior written permission from the respective party.
-*
-*  (4) Other than as required in clauses (1) and (2), distributions in any form of modifications or other derivative works
-*  may not use the "OpenStudio" trademark, "OS", "os", or any other confusingly similar designation without specific prior
-*  written permission from Alliance for Sustainable Energy, LLC.
-*
-*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-*  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-*  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE UNITED STATES GOVERNMENT, OR THE UNITED
-*  STATES DEPARTMENT OF ENERGY, NOR ANY OF THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-*  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-*  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-*  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-*  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************************************************************/
-
-#include "AirWallMaterial.hpp"
-#include "AirWallMaterial_Impl.hpp"
-
-#include <utilities/idd/OS_Material_AirWall_FieldEnums.hxx>
-#include <utilities/idd/IddEnums.hxx>
-
-#include "../utilities/core/Assert.hpp"
-
-namespace openstudio {
-namespace model {
-
-  namespace detail {
-
-    AirWallMaterial_Impl::AirWallMaterial_Impl(const IdfObject& idfObject, Model_Impl* model, bool keepHandle)
-      : ModelPartitionMaterial_Impl(idfObject, model, keepHandle) {
-      OS_ASSERT(idfObject.iddObject().type() == AirWallMaterial::iddObjectType());
-    }
-
-    AirWallMaterial_Impl::AirWallMaterial_Impl(const openstudio::detail::WorkspaceObject_Impl& other, Model_Impl* model, bool keepHandle)
-      : ModelPartitionMaterial_Impl(other, model, keepHandle) {
-      OS_ASSERT(other.iddObject().type() == AirWallMaterial::iddObjectType());
-    }
-
-    AirWallMaterial_Impl::AirWallMaterial_Impl(const AirWallMaterial_Impl& other, Model_Impl* model, bool keepHandle)
-      : ModelPartitionMaterial_Impl(other, model, keepHandle) {}
-
-    const std::vector<std::string>& AirWallMaterial_Impl::outputVariableNames() const {
-      static const std::vector<std::string> result;
-      return result;
-    }
-
-    IddObjectType AirWallMaterial_Impl::iddObjectType() const {
-      return AirWallMaterial::iddObjectType();
-    }
-
-  }  // namespace detail
-
-  AirWallMaterial::AirWallMaterial(const Model& model) : ModelPartitionMaterial(AirWallMaterial::iddObjectType(), model) {
-    OS_ASSERT(getImpl<detail::AirWallMaterial_Impl>());
-
-    LOG(Warn, "AirWallMaterial is deprecated.  Use ConstructionAirBoundary instead.")
-
-    // TODO: Appropriately handle the following required object-list fields.
-    bool ok = true;
-    // ok = setHandle();
-    OS_ASSERT(ok);
-  }
-
-  IddObjectType AirWallMaterial::iddObjectType() {
-    return IddObjectType(IddObjectType::OS_Material_AirWall);
-  }
-
-  /// @cond
-  AirWallMaterial::AirWallMaterial(std::shared_ptr<detail::AirWallMaterial_Impl> impl) : ModelPartitionMaterial(std::move(impl)) {}
-  /// @endcond
-
-}  // namespace model
-}  // namespace openstudio
diff --git a/src/model/AirWallMaterial.hpp b/src/model/AirWallMaterial.hpp
deleted file mode 100644
index fc2d63f2f5c..00000000000
--- a/src/model/AirWallMaterial.hpp
+++ /dev/null
@@ -1,96 +0,0 @@
-/***********************************************************************************************************************
-*  OpenStudio(R), Copyright (c) 2008-2022, Alliance for Sustainable Energy, LLC, and other contributors. All rights reserved.
-*
-*  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
-*  following conditions are met:
-*
-*  (1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following
-*  disclaimer.
-*
-*  (2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
-*  disclaimer in the documentation and/or other materials provided with the distribution.
-*
-*  (3) Neither the name of the copyright holder nor the names of any contributors may be used to endorse or promote products
-*  derived from this software without specific prior written permission from the respective party.
-*
-*  (4) Other than as required in clauses (1) and (2), distributions in any form of modifications or other derivative works
-*  may not use the "OpenStudio" trademark, "OS", "os", or any other confusingly similar designation without specific prior
-*  written permission from Alliance for Sustainable Energy, LLC.
-*
-*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-*  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-*  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE UNITED STATES GOVERNMENT, OR THE UNITED
-*  STATES DEPARTMENT OF ENERGY, NOR ANY OF THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-*  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-*  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-*  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-*  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************************************************************/
-
-#ifndef MODEL_AIRWALLMATERIAL_HPP
-#define MODEL_AIRWALLMATERIAL_HPP
-
-#include "ModelAPI.hpp"
-#include "ModelPartitionMaterial.hpp"
-
-namespace openstudio {
-namespace model {
-
-  namespace detail {
-
-    class AirWallMaterial_Impl;
-
-  }  // namespace detail
-
-  /** AirWallMaterial is a ModelPartitionMaterial that wraps the OpenStudio IDD object 'OS:Material:AirWall'. */
-  class MODEL_API AirWallMaterial : public ModelPartitionMaterial
-  {
-   public:
-    /** @name Constructors and Destructors */
-    //@{
-
-    explicit AirWallMaterial(const Model& model);
-
-    virtual ~AirWallMaterial() {}
-
-    //@}
-
-    static IddObjectType iddObjectType();
-
-    /** @name Getters */
-    //@{
-
-    //@}
-    /** @name Setters */
-    //@{
-
-    //@}
-    /** @name Other */
-    //@{
-
-    //@}
-   protected:
-    /// @cond
-    typedef detail::AirWallMaterial_Impl ImplType;
-
-    explicit AirWallMaterial(std::shared_ptr<detail::AirWallMaterial_Impl> impl);
-
-    friend class detail::AirWallMaterial_Impl;
-    friend class Model;
-    friend class IdfObject;
-    friend class openstudio::detail::IdfObject_Impl;
-    /// @endcond
-   private:
-    REGISTER_LOGGER("openstudio.model.AirWallMaterial");
-  };
-
-  /** \relates AirWallMaterial*/
-  typedef boost::optional<AirWallMaterial> OptionalAirWallMaterial;
-
-  /** \relates AirWallMaterial*/
-  typedef std::vector<AirWallMaterial> AirWallMaterialVector;
-
-}  // namespace model
-}  // namespace openstudio
-
-#endif  // MODEL_AIRWALLMATERIAL_HPP
diff --git a/src/model/AirWallMaterial_Impl.hpp b/src/model/AirWallMaterial_Impl.hpp
deleted file mode 100644
index 316a757f0e2..00000000000
--- a/src/model/AirWallMaterial_Impl.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-/***********************************************************************************************************************
-*  OpenStudio(R), Copyright (c) 2008-2022, Alliance for Sustainable Energy, LLC, and other contributors. All rights reserved.
-*
-*  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
-*  following conditions are met:
-*
-*  (1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following
-*  disclaimer.
-*
-*  (2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
-*  disclaimer in the documentation and/or other materials provided with the distribution.
-*
-*  (3) Neither the name of the copyright holder nor the names of any contributors may be used to endorse or promote products
-*  derived from this software without specific prior written permission from the respective party.
-*
-*  (4) Other than as required in clauses (1) and (2), distributions in any form of modifications or other derivative works
-*  may not use the "OpenStudio" trademark, "OS", "os", or any other confusingly similar designation without specific prior
-*  written permission from Alliance for Sustainable Energy, LLC.
-*
-*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-*  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-*  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE UNITED STATES GOVERNMENT, OR THE UNITED
-*  STATES DEPARTMENT OF ENERGY, NOR ANY OF THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-*  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-*  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-*  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-*  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-***********************************************************************************************************************/
-
-#ifndef MODEL_AIRWALLMATERIAL_IMPL_HPP
-#define MODEL_AIRWALLMATERIAL_IMPL_HPP
-
-#include "ModelAPI.hpp"
-#include "ModelPartitionMaterial_Impl.hpp"
-
-namespace openstudio {
-namespace model {
-
-  namespace detail {
-
-    /** AirWallMaterial_Impl is a ModelPartitionMaterial_Impl that is the implementation class for AirWallMaterial.*/
-    class MODEL_API AirWallMaterial_Impl : public ModelPartitionMaterial_Impl
-    {
-     public:
-      /** @name Constructors and Destructors */
-      //@{
-
-      AirWallMaterial_Impl(const IdfObject& idfObject, Model_Impl* model, bool keepHandle);
-
-      AirWallMaterial_Impl(const openstudio::detail::WorkspaceObject_Impl& other, Model_Impl* model, bool keepHandle);
-
-      AirWallMaterial_Impl(const AirWallMaterial_Impl& other, Model_Impl* model, bool keepHandle);
-
-      virtual ~AirWallMaterial_Impl() {}
-
-      //@}
-
-      /** @name Virtual Methods */
-      //@{
-
-      virtual const std::vector<std::string>& outputVariableNames() const override;
-
-      virtual IddObjectType iddObjectType() const override;
-
-      //@}
-      /** @name Getters */
-      //@{
-
-      //@}
-      /** @name Setters */
-      //@{
-
-      //@}
-      /** @name Other */
-      //@{
-
-      //@}
-     protected:
-     private:
-      REGISTER_LOGGER("openstudio.model.AirWallMaterial");
-    };
-
-  }  // namespace detail
-
-}  // namespace model
-}  // namespace openstudio
-
-#endif  // MODEL_AIRWALLMATERIAL_IMPL_HPP
diff --git a/src/model/AvailabilityManagerNightCycle.cpp b/src/model/AvailabilityManagerNightCycle.cpp
index 27e37d46a2f..275dd227da4 100644
--- a/src/model/AvailabilityManagerNightCycle.cpp
+++ b/src/model/AvailabilityManagerNightCycle.cpp
@@ -225,7 +225,7 @@ namespace model {
       return isEmpty(OS_AvailabilityManager_NightCycleFields::CyclingRunTime);
     }
 
-    bool AvailabilityManagerNightCycle_Impl::setControlType(std::string controlType) {
+    bool AvailabilityManagerNightCycle_Impl::setControlType(const std::string& controlType) {
       bool result = setString(OS_AvailabilityManager_NightCycleFields::ControlType, controlType);
       return result;
     }
@@ -274,7 +274,7 @@ namespace model {
       return isEmpty(OS_AvailabilityManager_NightCycleFields::CyclingRunTimeControlType);
     }
 
-    bool AvailabilityManagerNightCycle_Impl::setCyclingRunTimeControlType(std::string cyclingRunTimeControlType) {
+    bool AvailabilityManagerNightCycle_Impl::setCyclingRunTimeControlType(const std::string& cyclingRunTimeControlType) {
       bool result = setString(OS_AvailabilityManager_NightCycleFields::CyclingRunTimeControlType, cyclingRunTimeControlType);
       return result;
     }
@@ -540,7 +540,7 @@ namespace model {
   }
 
   IddObjectType AvailabilityManagerNightCycle::iddObjectType() {
-    return IddObjectType(IddObjectType::OS_AvailabilityManager_NightCycle);
+    return {IddObjectType::OS_AvailabilityManager_NightCycle};
   }
 
   std::vector<std::string> AvailabilityManagerNightCycle::controlTypeValues() {
@@ -571,7 +571,7 @@ namespace model {
     return getImpl<detail::AvailabilityManagerNightCycle_Impl>()->isCyclingRunTimeDefaulted();
   }
 
-  bool AvailabilityManagerNightCycle::setControlType(std::string controlType) {
+  bool AvailabilityManagerNightCycle::setControlType(const std::string& controlType) {
     return getImpl<detail::AvailabilityManagerNightCycle_Impl>()->setControlType(controlType);
   }
 
@@ -595,40 +595,6 @@ namespace model {
     getImpl<detail::AvailabilityManagerNightCycle_Impl>()->resetCyclingRunTime();
   }
 
-  // Deprecated
-  boost::optional<ThermalZone> AvailabilityManagerNightCycle::controlThermalZone() const {
-    LOG(Warn, "AvailabilityManagerNightCycle::controlThermalZone has been deprecated and will be removed in a future release, "
-              "please use AvailabilityManagerNightCycle::controlThermalZones instead");
-
-    boost::optional<ThermalZone> result;
-
-    std::vector<ThermalZone> zones = getImpl<detail::AvailabilityManagerNightCycle_Impl>()->controlThermalZones();
-    if (zones.size() > 1) {
-      LOG(Warn, "Multiple thermalZones are assigned, returning the first found");
-      result = zones[0];
-    } else if (zones.size() == 1) {
-      result = zones[0];
-    }
-
-    return result;
-  }
-  // Deprecated
-  bool AvailabilityManagerNightCycle::setControlThermalZone(const ThermalZone& thermalZone) {
-    LOG(Warn, "AvailabilityManagerNightCycle::setControlThermalZone has been deprecated and will be removed in a future release, "
-              "please use AvailabilityManagerNightCycle::setControlThermalZones instead");
-
-    std::vector<ThermalZone> thermalZones;
-    thermalZones.push_back(thermalZone);
-
-    return getImpl<detail::AvailabilityManagerNightCycle_Impl>()->setControlThermalZones(thermalZones);
-  }
-  // Deprecated
-  void AvailabilityManagerNightCycle::resetControlThermalZone() {
-    LOG(Warn, "AvailabilityManagerNightCycle::resetControlThermalZone has been deprecated and will be removed in a future release, "
-              "please use AvailabilityManagerNightCycle::resetControlThermalZones instead");
-    getImpl<detail::AvailabilityManagerNightCycle_Impl>()->resetControlThermalZones();
-  }
-
   std::vector<ThermalZone> AvailabilityManagerNightCycle::controlThermalZones() const {
     return getImpl<detail::AvailabilityManagerNightCycle_Impl>()->controlThermalZones();
   }
@@ -683,7 +649,7 @@ namespace model {
     return getImpl<detail::AvailabilityManagerNightCycle_Impl>()->isCyclingRunTimeControlTypeDefaulted();
   }
 
-  bool AvailabilityManagerNightCycle::setCyclingRunTimeControlType(std::string cyclingRunTimeControlType) {
+  bool AvailabilityManagerNightCycle::setCyclingRunTimeControlType(const std::string& cyclingRunTimeControlType) {
     return getImpl<detail::AvailabilityManagerNightCycle_Impl>()->setCyclingRunTimeControlType(cyclingRunTimeControlType);
   }
 
diff --git a/src/model/AvailabilityManagerNightCycle.hpp b/src/model/AvailabilityManagerNightCycle.hpp
index fb613fdbda8..6e0a6c2f6ec 100644
--- a/src/model/AvailabilityManagerNightCycle.hpp
+++ b/src/model/AvailabilityManagerNightCycle.hpp
@@ -32,7 +32,6 @@
 
 #include "ModelAPI.hpp"
 #include "AvailabilityManager.hpp"
-#include "../utilities/core/Deprecated.hpp"
 
 namespace openstudio {
 
@@ -69,7 +68,7 @@ namespace model {
     boost::optional<Schedule> fanSchedule() const;
 
     std::string controlType() const;
-    bool setControlType(std::string controlType);
+    bool setControlType(const std::string& controlType);
     void resetControlType();
     bool isControlTypeDefaulted() const;
 
@@ -86,21 +85,9 @@ namespace model {
     static std::vector<std::string> cyclingRunTimeControlTypeValues();
     std::string cyclingRunTimeControlType() const;
     bool isCyclingRunTimeControlTypeDefaulted() const;
-    bool setCyclingRunTimeControlType(std::string cyclingRunTimeControlType);
+    bool setCyclingRunTimeControlType(const std::string& cyclingRunTimeControlType);
     void resetCyclingRunTimeControlType();
 
-    /** \deprecated AvailabilityManagerNightCycle::controlThermalZone has been deprecated and will be removed in a future release, please use AvailabilityManagerNightCycle::controlThermalZones\n
-    * Get the controlThermalZone if it's unique, otherwise returns the first one found and issues a warning. **/
-    OS_DEPRECATED boost::optional<ThermalZone> controlThermalZone() const;
-
-    /** \deprecated AvailabilityManagerNightCycle::setControlThermalZone has been deprecated and will be removed in a future release, please use AvailabilityManagerNightCycle::setControlThermalZones\n
-  * sets the list of controlThermalZones by calling setControlThermalZones([thermalZone]) **/
-    OS_DEPRECATED bool setControlThermalZone(const ThermalZone& thermalZone);
-
-    /** \deprecated AvailabilityManagerNightCycle::resetControlThermalZone has been deprecated and will be removed in a future release, please use AvailabilityManagerNightCycle::resetControlThermalZones\n
-  * Resets the list of controlThermalZones **/
-    OS_DEPRECATED void resetControlThermalZone();
-
     std::vector<ThermalZone> controlThermalZones() const;
     bool setControlThermalZones(const std::vector<ThermalZone>& thermalZones);
     void resetControlThermalZones();
@@ -119,7 +106,7 @@ namespace model {
 
    protected:
     /// @cond
-    typedef detail::AvailabilityManagerNightCycle_Impl ImplType;
+    using ImplType = detail::AvailabilityManagerNightCycle_Impl;
 
     explicit AvailabilityManagerNightCycle(std::shared_ptr<detail::AvailabilityManagerNightCycle_Impl> impl);
 
@@ -135,10 +122,10 @@ namespace model {
   };
 
   /** \relates AvailabilityManagerNightCycle*/
-  typedef boost::optional<AvailabilityManagerNightCycle> OptionalAvailabilityManagerNightCycle;
+  using OptionalAvailabilityManagerNightCycle = boost::optional<AvailabilityManagerNightCycle>;
 
   /** \relates AvailabilityManagerNightCycle*/
-  typedef std::vector<AvailabilityManagerNightCycle> AvailabilityManagerNightCycleVector;
+  using AvailabilityManagerNightCycleVector = std::vector<AvailabilityManagerNightCycle>;
 
 }  // namespace model
 }  // namespace openstudio
diff --git a/src/model/AvailabilityManagerNightCycle_Impl.hpp b/src/model/AvailabilityManagerNightCycle_Impl.hpp
index 28198cbffde..b6c141df6e2 100644
--- a/src/model/AvailabilityManagerNightCycle_Impl.hpp
+++ b/src/model/AvailabilityManagerNightCycle_Impl.hpp
@@ -80,7 +80,7 @@ namespace model {
 
       std::string controlType() const;
       bool isControlTypeDefaulted() const;
-      bool setControlType(std::string controlType);
+      bool setControlType(const std::string& controlType);
       void resetControlType();
 
       double thermostatTolerance() const;
@@ -90,7 +90,7 @@ namespace model {
 
       std::string cyclingRunTimeControlType() const;
       bool isCyclingRunTimeControlTypeDefaulted() const;
-      bool setCyclingRunTimeControlType(std::string cyclingRunTimeControlType);
+      bool setCyclingRunTimeControlType(const std::string& cyclingRunTimeControlType);
       void resetCyclingRunTimeControlType();
 
       double cyclingRunTime() const;
diff --git a/src/model/CMakeLists.txt b/src/model/CMakeLists.txt
index 06bca02132c..99c9cae33d4 100644
--- a/src/model/CMakeLists.txt
+++ b/src/model/CMakeLists.txt
@@ -205,9 +205,6 @@ set(${target_name}_src
   AirToAirComponent.hpp
   AirToAirComponent_Impl.hpp
   AirToAirComponent.cpp
-  AirWallMaterial.hpp
-  AirWallMaterial_Impl.hpp
-  AirWallMaterial.cpp
   AvailabilityManager.hpp
   AvailabilityManager_Impl.hpp
   AvailabilityManager.cpp
diff --git a/src/model/ConcreteModelObjects.hpp b/src/model/ConcreteModelObjects.hpp
index 28cf35a663d..af07ed76718 100644
--- a/src/model/ConcreteModelObjects.hpp
+++ b/src/model/ConcreteModelObjects.hpp
@@ -81,7 +81,6 @@
 #include "AirTerminalSingleDuctVAVNoReheat.hpp"
 #include "AirTerminalSingleDuctVAVHeatAndCoolNoReheat.hpp"
 #include "AirTerminalSingleDuctVAVHeatAndCoolReheat.hpp"
-#include "AirWallMaterial.hpp"
 #include "AvailabilityManagerAssignmentList.hpp"
 #include "AvailabilityManagerNightCycle.hpp"
 #include "AvailabilityManagerHybridVentilation.hpp"
@@ -612,7 +611,6 @@
 #include "AirTerminalSingleDuctVAVNoReheat_Impl.hpp"
 #include "AirTerminalSingleDuctVAVHeatAndCoolNoReheat_Impl.hpp"
 #include "AirTerminalSingleDuctVAVHeatAndCoolReheat_Impl.hpp"
-#include "AirWallMaterial_Impl.hpp"
 #include "AvailabilityManagerAssignmentList_Impl.hpp"
 #include "AvailabilityManagerNightCycle_Impl.hpp"
 #include "AvailabilityManagerHybridVentilation_Impl.hpp"
diff --git a/src/model/FloorspaceReverseTranslator.cpp b/src/model/FloorspaceReverseTranslator.cpp
index 5d8152e0a27..88054c02f72 100644
--- a/src/model/FloorspaceReverseTranslator.cpp
+++ b/src/model/FloorspaceReverseTranslator.cpp
@@ -67,7 +67,6 @@
 #include "DefaultConstructionSet.hpp"
 #include "DefaultConstructionSet_Impl.hpp"
 #include "DaylightingControl.hpp"
-#include "AirWallMaterial.hpp"
 
 #include "../utilities/core/Assert.hpp"
 #include "../utilities/core/Compare.hpp"
diff --git a/src/model/Model.cpp b/src/model/Model.cpp
index 0fd001e2009..1ca1f7e5fe3 100644
--- a/src/model/Model.cpp
+++ b/src/model/Model.cpp
@@ -3849,7 +3849,6 @@ namespace model {
     REGISTER_CONSTRUCTOR(AirTerminalSingleDuctVAVNoReheat);
     REGISTER_CONSTRUCTOR(AirTerminalSingleDuctVAVHeatAndCoolNoReheat);
     REGISTER_CONSTRUCTOR(AirTerminalSingleDuctVAVHeatAndCoolReheat);
-    REGISTER_CONSTRUCTOR(AirWallMaterial);
     REGISTER_CONSTRUCTOR(AvailabilityManagerAssignmentList);
     REGISTER_CONSTRUCTOR(AvailabilityManagerNightCycle);
     REGISTER_CONSTRUCTOR(AvailabilityManagerOptimumStart);
@@ -4388,7 +4387,6 @@ namespace model {
     REGISTER_COPYCONSTRUCTORS(AirTerminalSingleDuctVAVNoReheat);
     REGISTER_COPYCONSTRUCTORS(AirTerminalSingleDuctVAVHeatAndCoolNoReheat);
     REGISTER_COPYCONSTRUCTORS(AirTerminalSingleDuctVAVHeatAndCoolReheat);
-    REGISTER_COPYCONSTRUCTORS(AirWallMaterial);
     REGISTER_COPYCONSTRUCTORS(AvailabilityManagerAssignmentList);
     REGISTER_COPYCONSTRUCTORS(AvailabilityManagerNightCycle);
     REGISTER_COPYCONSTRUCTORS(AvailabilityManagerOptimumStart);
diff --git a/src/model/ModelResources.i b/src/model/ModelResources.i
index f54b159539f..0e50d0916e5 100644
--- a/src/model/ModelResources.i
+++ b/src/model/ModelResources.i
@@ -122,7 +122,6 @@ MODELOBJECT_TEMPLATES(Glazing);
 MODELOBJECT_TEMPLATES(ShadingMaterial);
 MODELOBJECT_TEMPLATES(ModelPartitionMaterial);
 MODELOBJECT_TEMPLATES(OpaqueMaterial);
-MODELOBJECT_TEMPLATES(AirWallMaterial);
 MODELOBJECT_TEMPLATES(Blind);
 MODELOBJECT_TEMPLATES(DaylightRedirectionDevice);
 MODELOBJECT_TEMPLATES(AirGap);
@@ -222,7 +221,6 @@ SWIG_MODELOBJECT(Glazing, 0);
 SWIG_MODELOBJECT(ShadingMaterial, 0);
 SWIG_MODELOBJECT(ModelPartitionMaterial, 0);
 SWIG_MODELOBJECT(OpaqueMaterial, 0);
-SWIG_MODELOBJECT(AirWallMaterial, 1);
 SWIG_MODELOBJECT(Blind, 1);
 SWIG_MODELOBJECT(DaylightRedirectionDevice, 1);
 SWIG_MODELOBJECT(AirGap, 1);
diff --git a/src/model/Node.cpp b/src/model/Node.cpp
index 4ffb1649a8f..5bc91d5454c 100644
--- a/src/model/Node.cpp
+++ b/src/model/Node.cpp
@@ -144,167 +144,6 @@ namespace model {
       }
     }
 
-    void Node_Impl::addSetpointManager(SetpointManagerSingleZoneReheat& singleZoneReheat) {
-      LOG(Warn, "Node::addSetpointManager has been deprecated and will be removed in a future release, please use "
-                "SetpointManagerSingleZoneReheat::addToNode");
-      Node node = this->getObject<Node>();
-      singleZoneReheat.addToNode(node);
-    }
-
-    void Node_Impl::removeSetpointManagerSingleZoneReheat() {
-      LOG(Warn, "Node::removeSetpointManagerSingleZoneReheat has been deprecated and will be removed in a future release, please use "
-                "SetpointManagerSingleZoneReheat::remove");
-      if (boost::optional<SetpointManagerSingleZoneReheat> spm = this->getSetpointManagerSingleZoneReheat()) {
-        spm->remove();
-      }
-    }
-
-    boost::optional<SetpointManagerSingleZoneReheat> Node_Impl::getSetpointManagerSingleZoneReheat() const {
-      LOG(Warn,
-          "Node::getSetpointManagerSingleZoneReheat has been deprecated and will be removed in a future release, please use Node::setpointManagers");
-      std::vector<SetpointManagerSingleZoneReheat> _setpointManagers = subsetCastVector<SetpointManagerSingleZoneReheat>(this->setpointManagers());
-      if (!_setpointManagers.empty()) {
-        return _setpointManagers.front();
-      } else {
-        return boost::none;
-      }
-    }
-
-    void Node_Impl::addSetpointManager(SetpointManagerMixedAir& mixedAir) {
-      LOG(Warn,
-          "Node::addSetpointManager has been deprecated and will be removed in a future release, please use SetpointManagerMixedAir::addToNode");
-      Node node = this->getObject<Node>();
-      mixedAir.addToNode(node);
-    }
-
-    void Node_Impl::removeSetpointManagerMixedAir() {
-      LOG(Warn, "Node::removeSetpointManagerMixedAir has been deprecated and will be removed in a future release, please use "
-                "SetpointManagerMixedAir::remove");
-      if (boost::optional<SetpointManagerMixedAir> spm = this->getSetpointManagerMixedAir()) {
-        spm->remove();
-      }
-    }
-
-    boost::optional<SetpointManagerMixedAir> Node_Impl::getSetpointManagerMixedAir() const {
-      LOG(Warn, "Node::getSetpointManagerMixedAir has been deprecated and will be removed in a future release, please use Node::setpointManagers");
-      std::vector<SetpointManagerMixedAir> _setpointManagers = subsetCastVector<SetpointManagerMixedAir>(this->setpointManagers());
-      if (!_setpointManagers.empty()) {
-        return _setpointManagers.front();
-      } else {
-        return boost::none;
-      }
-    }
-
-    void Node_Impl::addSetpointManager(SetpointManagerScheduled& setPointManager) {
-      LOG(Warn,
-          "Node::addSetpointManager has been deprecated and will be removed in a future release, please use SetpointManagerScheduled::addToNode");
-      Node node = this->getObject<Node>();
-      setPointManager.addToNode(node);
-    }
-
-    boost::optional<SetpointManagerScheduled> Node_Impl::setpointManagerScheduled() const {
-      LOG(Warn, "Node::setpointManagerScheduled has been deprecated and will be removed in a future release, please use Node::setpointManagers");
-      std::vector<SetpointManagerScheduled> _setpointManagers = subsetCastVector<SetpointManagerScheduled>(this->setpointManagers());
-      if (!_setpointManagers.empty()) {
-        return _setpointManagers.front();
-      } else {
-        return boost::none;
-      }
-    }
-
-    void Node_Impl::removeSetpointManagerScheduled() {
-      LOG(Warn, "Node::removeSetpointManagerScheduled has been deprecated and will be removed in a future release, please use "
-                "SetpointManagerScheduled::remove");
-      if (boost::optional<SetpointManagerScheduled> spm = this->setpointManagerScheduled()) {
-        spm->remove();
-      }
-    }
-
-    /////////////
-
-    void Node_Impl::addSetpointManager(SetpointManagerFollowOutdoorAirTemperature& setPointManager) {
-      LOG(Warn, "Node::addSetpointManager has been deprecated and will be removed in a future release, please use "
-                "SetpointManagerFollowOutdoorAirTemperature::addToNode");
-      Node node = this->getObject<Node>();
-      setPointManager.addToNode(node);
-    }
-
-    boost::optional<SetpointManagerFollowOutdoorAirTemperature> Node_Impl::setpointManagerFollowOutdoorAirTemperature() const {
-      LOG(Warn, "Node::setpointManagerFollowOutdoorAirTemperature has been deprecated and will be removed in a future release, please use "
-                "Node::setpointManagers");
-      std::vector<SetpointManagerFollowOutdoorAirTemperature> _setpointManagers =
-        subsetCastVector<SetpointManagerFollowOutdoorAirTemperature>(this->setpointManagers());
-      if (!_setpointManagers.empty()) {
-        return _setpointManagers.front();
-      } else {
-        return boost::none;
-      }
-    }
-
-    void Node_Impl::removeSetpointManagerFollowOutdoorAirTemperature() {
-      LOG(Warn, "Node::removeSetpointManagerFollowOutdoorAirTemperature has been deprecated and will be removed in a future release, please use "
-                "SetpointManagerFollowOutdoorAirTemperature::remove");
-      if (boost::optional<SetpointManagerFollowOutdoorAirTemperature> spm = this->setpointManagerFollowOutdoorAirTemperature()) {
-        spm->remove();
-      }
-    }
-
-    /////////////
-
-    void Node_Impl::addSetpointManager(SetpointManagerOutdoorAirReset& setPointManager) {
-      LOG(
-        Warn,
-        "Node::addSetpointManager has been deprecated and will be removed in a future release, please use SetpointManagerOutdoorAirReset::addToNode");
-      Node node = this->getObject<Node>();
-      setPointManager.addToNode(node);
-    }
-
-    boost::optional<SetpointManagerOutdoorAirReset> Node_Impl::setpointManagerOutdoorAirReset() const {
-      LOG(Warn,
-          "Node::setpointManagerOutdoorAirReset has been deprecated and will be removed in a future release, please use Node::setpointManagers");
-      std::vector<SetpointManagerOutdoorAirReset> _setpointManagers = subsetCastVector<SetpointManagerOutdoorAirReset>(this->setpointManagers());
-      if (!_setpointManagers.empty()) {
-        return _setpointManagers.front();
-      } else {
-        return boost::none;
-      }
-    }
-
-    void Node_Impl::removeSetpointManagerOutdoorAirReset() {
-      LOG(Warn, "Node::removeSetpointManagerOutdoorAirReset has been deprecated and will be removed in a future release, please use "
-                "SetpointManagerOutdoorAirReset::remove");
-      if (boost::optional<SetpointManagerOutdoorAirReset> spm = this->setpointManagerOutdoorAirReset()) {
-        spm->remove();
-      }
-    }
-
-    void Node_Impl::addSetpointManagerWarmest(SetpointManagerWarmest& setPointManager) {
-      LOG(
-        Warn,
-        "Node::addSetpointManagerWarmest has been deprecated and will be removed in a future release, please use SetpointManagerWarmest::addToNode");
-      Node node = this->getObject<Node>();
-      setPointManager.addToNode(node);
-    }
-
-    boost::optional<SetpointManagerWarmest> Node_Impl::setpointManagerWarmest() const {
-      LOG(Warn, "Node::setpointManagerWarmest has been deprecated and will be removed in a future release, please use Node::setpointManagers");
-      std::vector<SetpointManagerWarmest> _setpointManagers = subsetCastVector<SetpointManagerWarmest>(this->setpointManagers());
-      if (!_setpointManagers.empty()) {
-        return _setpointManagers.front();
-      } else {
-        return boost::none;
-      }
-    }
-
-    void Node_Impl::removeSetpointManagerWarmest() {
-      LOG(
-        Warn,
-        "Node::removeSetpointManagerWarmest has been deprecated and will be removed in a future release, please use SetpointManagerWarmest::remove");
-      if (boost::optional<SetpointManagerWarmest> spm = this->setpointManagerWarmest()) {
-        spm->remove();
-      }
-    }
-
     std::vector<ModelObject> Node_Impl::children() const {
       std::vector<ModelObject> result = castVector<ModelObject>(this->setpointManagers());
       std::vector<AirflowNetworkDistributionNode> myAFNItems =
@@ -420,78 +259,6 @@ namespace model {
     return getImpl<detail::Node_Impl>()->setpointManagers();
   }
 
-  void Node::addSetpointManager(SetpointManagerSingleZoneReheat& spm) {
-    getImpl<detail::Node_Impl>()->addSetpointManager(spm);
-  }
-
-  void Node::removeSetpointManagerSingleZoneReheat() {
-    getImpl<detail::Node_Impl>()->removeSetpointManagerSingleZoneReheat();
-  }
-
-  boost::optional<SetpointManagerSingleZoneReheat> Node::getSetpointManagerSingleZoneReheat() {
-    return getImpl<detail::Node_Impl>()->getSetpointManagerSingleZoneReheat();
-  }
-
-  void Node::addSetpointManager(SetpointManagerMixedAir& spm) {
-    return getImpl<detail::Node_Impl>()->addSetpointManager(spm);
-  }
-
-  void Node::removeSetpointManagerMixedAir() {
-    getImpl<detail::Node_Impl>()->removeSetpointManagerMixedAir();
-  }
-
-  boost::optional<SetpointManagerMixedAir> Node::getSetpointManagerMixedAir() {
-    return getImpl<detail::Node_Impl>()->getSetpointManagerMixedAir();
-  }
-
-  boost::optional<SetpointManagerScheduled> Node::setpointManagerScheduled() const {
-    return getImpl<detail::Node_Impl>()->setpointManagerScheduled();
-  }
-
-  void Node::removeSetpointManagerScheduled() {
-    getImpl<detail::Node_Impl>()->removeSetpointManagerScheduled();
-  }
-
-  void Node::addSetpointManager(SetpointManagerScheduled& setpointManager) {
-    getImpl<detail::Node_Impl>()->addSetpointManager(setpointManager);
-  }
-
-  boost::optional<SetpointManagerFollowOutdoorAirTemperature> Node::setpointManagerFollowOutdoorAirTemperature() const {
-    return getImpl<detail::Node_Impl>()->setpointManagerFollowOutdoorAirTemperature();
-  }
-
-  void Node::removeSetpointManagerFollowOutdoorAirTemperature() {
-    getImpl<detail::Node_Impl>()->removeSetpointManagerFollowOutdoorAirTemperature();
-  }
-
-  void Node::addSetpointManager(SetpointManagerFollowOutdoorAirTemperature& setpointManager) {
-    getImpl<detail::Node_Impl>()->addSetpointManager(setpointManager);
-  }
-
-  boost::optional<SetpointManagerOutdoorAirReset> Node::setpointManagerOutdoorAirReset() const {
-    return getImpl<detail::Node_Impl>()->setpointManagerOutdoorAirReset();
-  }
-
-  void Node::removeSetpointManagerOutdoorAirReset() {
-    getImpl<detail::Node_Impl>()->removeSetpointManagerOutdoorAirReset();
-  }
-
-  void Node::addSetpointManager(SetpointManagerOutdoorAirReset& setpointManager) {
-    getImpl<detail::Node_Impl>()->addSetpointManager(setpointManager);
-  }
-
-  boost::optional<SetpointManagerWarmest> Node::setpointManagerWarmest() const {
-    return getImpl<detail::Node_Impl>()->setpointManagerWarmest();
-  }
-
-  void Node::removeSetpointManagerWarmest() {
-    getImpl<detail::Node_Impl>()->removeSetpointManagerWarmest();
-  }
-
-  void Node::addSetpointManagerWarmest(SetpointManagerWarmest& setpointManager) {
-    getImpl<detail::Node_Impl>()->addSetpointManagerWarmest(setpointManager);
-  }
-
   bool Node::addToNode(Node& node) {
     return getImpl<detail::Node_Impl>()->addToNode(node);
   }
diff --git a/src/model/Node.hpp b/src/model/Node.hpp
index e59f7e6cff2..bdf59569897 100644
--- a/src/model/Node.hpp
+++ b/src/model/Node.hpp
@@ -34,7 +34,6 @@
 #include "ModelObject.hpp"
 #include "StraightComponent.hpp"
 #include "Connection.hpp"
-#include "../utilities/core/Deprecated.hpp"
 
 namespace openstudio {
 namespace model {
@@ -76,78 +75,6 @@ namespace model {
 
     std::vector<SetpointManager> setpointManagers() const;
 
-    /** \deprecated Node::addSetpointManager has been deprecated and will be removed in a future release, please use SetpointManagerSingleZoneReheat::addToNode \n
-    * Adds setPointManager of type SetpointManagerSingleZoneReheat to this Node. **/
-    OS_DEPRECATED void addSetpointManager(SetpointManagerSingleZoneReheat& setPointManager);
-
-    /** \deprecated Node::removeSetpointManagerSingleZoneReheat has been deprecated and will be removed in a future release, please use SetpointManagerSingleZoneReheat::remove \n
-    * Removes any SetpointManagerSingleZoneReheat objects from this Node. **/
-    OS_DEPRECATED void removeSetpointManagerSingleZoneReheat();
-
-    /** \deprecated Node::getSetpointManagerSingleZoneReheat has been deprecated and will be removed in a future release, please use Node::setpointManagers \n
-    * Returns the optional SetpointManagerSingleZoneReheat associated with this Node.  **/
-    OS_DEPRECATED boost::optional<SetpointManagerSingleZoneReheat> getSetpointManagerSingleZoneReheat();
-
-    /** \deprecated Node::addSetpointManager has been deprecated and will be removed in a future release, please use SetpointManagerMixedAir::addToNode \n
-    * Adds setPointManager of type SetpointManagerMixedAir to this Node. **/
-    OS_DEPRECATED void addSetpointManager(SetpointManagerMixedAir& setPointManager);
-
-    /** \deprecated Node::removeSetpointManagerMixedAir has been deprecated and will be removed in a future release, please use SetpointManagerMixedAir::remove \n
-    * Removes any SetpointManagerMixedAir objects from this Node. **/
-    OS_DEPRECATED void removeSetpointManagerMixedAir();
-
-    /** \deprecated Node::getSetpointManagerMixedAir has been deprecated and will be removed in a future release, please use Node::setpointManagers \n
-    * Returns the optional SetpointManagerMixedAir associated with this Node.  **/
-    OS_DEPRECATED boost::optional<SetpointManagerMixedAir> getSetpointManagerMixedAir();
-
-    /** \deprecated Node::setpointManagerScheduled has been deprecated and will be removed in a future release, please use Node::setpointManagers \n
-    * Returns the optional SetpointManagerScheduled associated with this Node.  **/
-    OS_DEPRECATED boost::optional<SetpointManagerScheduled> setpointManagerScheduled() const;
-
-    /** \deprecated Node::addSetpointManager has been deprecated and will be removed in a future release, please use SetpointManagerScheduled::addToNode \n
-    * Adds setPointManager of type SetpointManagerScheduled to this Node. **/
-    OS_DEPRECATED void addSetpointManager(SetpointManagerScheduled& setPointManager);
-
-    /** \deprecated Node::removeSetpointManagerScheduled has been deprecated and will be removed in a future release, please use SetpointManagerScheduled::remove \n
-    * Removes any SetpointManagerScheduled objects from this Node. **/
-    OS_DEPRECATED void removeSetpointManagerScheduled();
-
-    /** \deprecated Node::setpointManagerFollowOutdoorAirTemperature has been deprecated and will be removed in a future release, please use Node::setpointManagers \n
-    * Returns the optional SetpointManagerFollowOutdoorAirTemperature associated with this Node.  **/
-    OS_DEPRECATED boost::optional<SetpointManagerFollowOutdoorAirTemperature> setpointManagerFollowOutdoorAirTemperature() const;
-
-    /** \deprecated Node::addSetpointManager has been deprecated and will be removed in a future release, please use SetpointManagerFollowOutdoorAirTemperature::addToNode \n
-    * Adds setPointManager of type SetpointManagerFollowOutdoorAirTemperature to this Node. **/
-    OS_DEPRECATED void addSetpointManager(SetpointManagerFollowOutdoorAirTemperature& setPointManager);
-
-    /** \deprecated Node::removeSetpointManagerFollowOutdoorAirTemperature has been deprecated and will be removed in a future release, please use SetpointManagerFollowOutdoorAirTemperature::remove \n
-    * Removes any SetpointManagerFollowOutdoorAirTemperature objects from this Node. **/
-    OS_DEPRECATED void removeSetpointManagerFollowOutdoorAirTemperature();
-
-    /** \deprecated Node::addSetpointManager has been deprecated and will be removed in a future release, please use SetpointManagerOutdoorAirReset::addToNode \n
-    * Adds setPointManager of type SetpointManagerOutdoorAirReset to this Node. **/
-    OS_DEPRECATED void addSetpointManager(SetpointManagerOutdoorAirReset& setPointManager);
-
-    /** \deprecated Node::removeSetpointManagerOutdoorAirReset has been deprecated and will be removed in a future release, please use SetpointManagerOutdoorAirReset::remove \n
-    * Removes any SetpointManagerOutdoorAirReset objects from this Node. **/
-    OS_DEPRECATED void removeSetpointManagerOutdoorAirReset();
-
-    /** \deprecated Node::setpointManagerOutdoorAirReset has been deprecated and will be removed in a future release, please use Node::setpointManagers \n
-    * Returns the optional SetpointManagerOutdoorAirReset associated with this Node.  **/
-    OS_DEPRECATED boost::optional<SetpointManagerOutdoorAirReset> setpointManagerOutdoorAirReset() const;
-
-    /** \deprecated Node::removeSetpointManagerWarmest has been deprecated and will be removed in a future release, please use SetpointManagerWarmest::remove \n
-    * Removes any SetpointManagerWarmest objects from this Node. **/
-    OS_DEPRECATED void removeSetpointManagerWarmest();
-
-    /** \deprecated Node::setpointManagerWarmest has been deprecated and will be removed in a future release, please use Node::setpointManagers \n
-    * Returns the optional SetpointManagerWarmest associated with this Node.  **/
-    OS_DEPRECATED boost::optional<SetpointManagerWarmest> setpointManagerWarmest() const;
-
-    /** \deprecated Node::addSetpointManagerWarmest has been deprecated and will be removed in a future release, please use SetpointManagerWarmest::addToNode \n
-    * Adds setPointManager of type SetpointManagerWarmest to this Node. **/
-    OS_DEPRECATED void addSetpointManagerWarmest(SetpointManagerWarmest& setPointManager);
-
     bool addToNode(Node& node);
 
     ModelObject clone(Model model) const;
diff --git a/src/model/Node_Impl.hpp b/src/model/Node_Impl.hpp
index 37815f64d13..c43b0c33537 100644
--- a/src/model/Node_Impl.hpp
+++ b/src/model/Node_Impl.hpp
@@ -78,42 +78,6 @@ namespace model {
 
       void removeSetpointManagers();
 
-      void addSetpointManager(SetpointManagerSingleZoneReheat& singleZoneReheat);
-
-      void removeSetpointManagerSingleZoneReheat();
-
-      boost::optional<SetpointManagerSingleZoneReheat> getSetpointManagerSingleZoneReheat() const;
-
-      void addSetpointManager(SetpointManagerMixedAir& mixedAir);
-
-      void removeSetpointManagerMixedAir();
-
-      boost::optional<SetpointManagerMixedAir> getSetpointManagerMixedAir() const;
-
-      boost::optional<SetpointManagerScheduled> setpointManagerScheduled() const;
-
-      void addSetpointManager(SetpointManagerScheduled& setPointManager);
-
-      void removeSetpointManagerScheduled();
-
-      boost::optional<SetpointManagerFollowOutdoorAirTemperature> setpointManagerFollowOutdoorAirTemperature() const;
-
-      void addSetpointManager(SetpointManagerFollowOutdoorAirTemperature& setPointManager);
-
-      void removeSetpointManagerFollowOutdoorAirTemperature();
-
-      void addSetpointManager(SetpointManagerOutdoorAirReset& setPointManager);
-
-      void removeSetpointManagerOutdoorAirReset();
-
-      boost::optional<SetpointManagerOutdoorAirReset> setpointManagerOutdoorAirReset() const;
-
-      void addSetpointManagerWarmest(SetpointManagerWarmest& setPointManager);
-
-      void removeSetpointManagerWarmest();
-
-      boost::optional<SetpointManagerWarmest> setpointManagerWarmest() const;
-
       std::vector<ModelObject> children() const override;
 
       bool isRemovable() const override;
diff --git a/src/model/PlanarSurface.cpp b/src/model/PlanarSurface.cpp
index 1788caf74de..4a020ec07d7 100644
--- a/src/model/PlanarSurface.cpp
+++ b/src/model/PlanarSurface.cpp
@@ -41,8 +41,6 @@
 #include "LayeredConstruction.hpp"
 #include "LayeredConstruction_Impl.hpp"
 #include "Material.hpp"
-#include "AirWallMaterial.hpp"
-#include "AirWallMaterial_Impl.hpp"
 #include "SubSurface.hpp"
 #include "SubSurface_Impl.hpp"
 #include "GeneratorPhotovoltaic.hpp"
@@ -213,35 +211,8 @@ namespace model {
 
     /// is this surface an air wall
     bool PlanarSurface_Impl::isAirWall() const {
-      bool result = false;
-
       OptionalConstructionBase oConstruction = this->construction();
-      if (oConstruction && oConstruction->isModelPartition()) {
-
-        boost::optional<ConstructionAirBoundary> constructionAirBoundary = oConstruction->optionalCast<ConstructionAirBoundary>();
-        if (constructionAirBoundary) {
-          return true;
-        }
-
-        boost::optional<LayeredConstruction> construction = oConstruction->optionalCast<LayeredConstruction>();
-        if (construction) {
-          if (construction->numLayers() == 1) {
-            MaterialVector layers = construction->layers();
-            OS_ASSERT(layers.size() == 1u);
-            if (layers[0].optionalCast<AirWallMaterial>()) {
-              result = true;
-              LOG(Warn, "AirWallMaterial is deprecated, use ConstructionAirBoundary instead.");
-            }
-          } else if (construction->numLayers() == 0) {
-            LOG(Info, "Construction detected with zero layers, classifying as non-air wall");
-            result = false;
-          } else {
-            LOG(Error, "Air wall detected with more than one layer, classifying as non-air wall");
-            result = false;
-          }
-        }
-      }
-      return result;
+      return oConstruction && oConstruction->optionalCast<ConstructionAirBoundary>();
     }
 
     // compute gross area (m^2)
diff --git a/src/model/PlanarSurface.hpp b/src/model/PlanarSurface.hpp
index df7a49b2e00..028fe266d2a 100644
--- a/src/model/PlanarSurface.hpp
+++ b/src/model/PlanarSurface.hpp
@@ -142,8 +142,7 @@ namespace model {
    *  horizontal floor/slab has tilt of pi rad. */
     static double stillAirFilmResistance(double tilt);
 
-    /// Checks if this surface is an air wall, returns true if the
-    /// Construction includes a single layer of type MaterialAirWall.
+    /// Checks if this surface is an air wall, returns true if it's a ConstructionAirBoundary
     bool isAirWall() const;
 
     /// Computes the surface's gross area (m^2).
diff --git a/src/model/PlantLoop.cpp b/src/model/PlantLoop.cpp
index e9caa402c5f..1a793c97646 100644
--- a/src/model/PlantLoop.cpp
+++ b/src/model/PlantLoop.cpp
@@ -1606,27 +1606,5 @@ namespace model {
     return getImpl<detail::PlantLoop_Impl>()->removeAvailabilityManager(priority);
   }
 
-  // TODO: START DEPRECATED SECTION
-
-  boost::optional<AvailabilityManager> PlantLoop::availabilityManager() const {
-    boost::optional<AvailabilityManager> avm;
-    std::vector<AvailabilityManager> avmVector = availabilityManagers();
-    if (avmVector.size() > 0) {
-      avm = avmVector[0];
-    }
-    return avm;
-  }
-
-  bool PlantLoop::setAvailabilityManager(const AvailabilityManager& availabilityManager) {
-    std::vector<AvailabilityManager> avmVector;
-    avmVector.push_back(availabilityManager);
-    return setAvailabilityManagers(avmVector);
-  }
-  void PlantLoop::resetAvailabilityManager() {
-    resetAvailabilityManagers();
-  }
-
-  // END DEPRECATED
-
 }  // namespace model
 }  // namespace openstudio
diff --git a/src/model/PlantLoop.hpp b/src/model/PlantLoop.hpp
index d787b7d2896..9fc92533a57 100644
--- a/src/model/PlantLoop.hpp
+++ b/src/model/PlantLoop.hpp
@@ -32,7 +32,6 @@
 
 #include "ModelAPI.hpp"
 #include "Loop.hpp"
-#include "../utilities/core/Deprecated.hpp"
 
 namespace openstudio {
 
@@ -328,23 +327,6 @@ namespace model {
    */
     unsigned availabilityManagerPriority(const AvailabilityManager& availabilityManager) const;
 
-    // TODO: DEPRECATED SECTION Remove in the future (deprecated around 2.3.0)
-    /*
-   * Returns the first availability Manager used
-   */
-    OS_DEPRECATED boost::optional<AvailabilityManager> availabilityManager() const;
-
-    /* Deprecated, kept for backward compatibility with existing scripts, will be removed in a future version
-   * Behavior is that it will remove all AVMs assigned to this loop, and replace it with the one passed as argument
-   */
-    OS_DEPRECATED bool setAvailabilityManager(const AvailabilityManager& availabilityManager);
-
-    /*
-   * Clears all AVMs (forwards to resetAvailabilabilityManagers
-   **/
-    OS_DEPRECATED void resetAvailabilityManager();
-    // END DEPRECATED
-
    protected:
     friend class Model;
 
@@ -353,7 +335,7 @@ namespace model {
 
     /// @cond
 
-    typedef detail::PlantLoop_Impl ImplType;
+    using ImplType = detail::PlantLoop_Impl;
 
     explicit PlantLoop(std::shared_ptr<ImplType> impl);
 
@@ -372,7 +354,7 @@ namespace model {
   };
 
   /** \relates PlantLoop */
-  typedef boost::optional<PlantLoop> OptionalPlantLoop;
+  using OptionalPlantLoop = boost::optional<PlantLoop>;
 
 }  // namespace model
 }  // namespace openstudio
diff --git a/src/model/SizingSystem.cpp b/src/model/SizingSystem.cpp
index ebe230f92a6..cc30f4ea01e 100644
--- a/src/model/SizingSystem.cpp
+++ b/src/model/SizingSystem.cpp
@@ -1632,15 +1632,6 @@ namespace model {
     return getImpl<detail::SizingSystem_Impl>()->autosizedOccupantDiversity();
   }
 
-  // DEPRECATED: TODO REMOVE as soon as standards > 0.29.0 is relased
-  boost::optional<double> SizingSystem::minimumSystemAirFlowRatio() const {
-    return getImpl<detail::SizingSystem_Impl>()->centralHeatingMaximumSystemAirFlowRatio();
-  }
-  // DEPRECATED: TODO REMOVE as soon as standards > 0.29.0 is relased
-  bool SizingSystem::setMinimumSystemAirFlowRatio(double centralHeatingMaximumSystemAirFlowRatio) {
-    return getImpl<detail::SizingSystem_Impl>()->setCentralHeatingMaximumSystemAirFlowRatio(centralHeatingMaximumSystemAirFlowRatio);
-  }
-
 }  // namespace model
 
 }  // namespace openstudio
diff --git a/src/model/SizingSystem.hpp b/src/model/SizingSystem.hpp
index 27a376544ec..10675edae03 100644
--- a/src/model/SizingSystem.hpp
+++ b/src/model/SizingSystem.hpp
@@ -293,14 +293,6 @@ namespace model {
 
     AirLoopHVAC airLoopHVAC() const;
 
-    // DEPRECATED: TODO REMOVE as soon as standards > 0.29.0 is relased
-    /** Deprecated, forwards to centralHeatingMaximumSystemAirFlowRatio
-   * In EnergyPlus 8.3.0 and above this property maps to the EnergyPlus field "Central Heating Maximum System Air Flow Ratio"
-   * Prior to 2.6.2, this was returning a double (no autosize possible) */
-    boost::optional<double> minimumSystemAirFlowRatio() const;
-    /* Deprecated, forwards to setCentralHeatingMaximumSystemAirFlowRatio */
-    bool setMinimumSystemAirFlowRatio(double centralHeatingMaximumSystemAirFlowRatio);
-
     boost::optional<double> autosizedDesignOutdoorAirFlowRate() const;
     boost::optional<double> autosizedCentralHeatingMaximumSystemAirFlowRatio() const;
     boost::optional<double> autosizedCoolingDesignCapacity() const;
diff --git a/src/model/ThreeJSReverseTranslator.cpp b/src/model/ThreeJSReverseTranslator.cpp
index 9231da10c3a..20ee477b96b 100644
--- a/src/model/ThreeJSReverseTranslator.cpp
+++ b/src/model/ThreeJSReverseTranslator.cpp
@@ -67,7 +67,6 @@
 #include "DefaultConstructionSet.hpp"
 #include "DefaultConstructionSet_Impl.hpp"
 #include "DaylightingControl.hpp"
-#include "AirWallMaterial.hpp"
 
 #include "../utilities/core/Assert.hpp"
 #include "../utilities/core/Compare.hpp"
diff --git a/src/model/ZoneAirMassFlowConservation.cpp b/src/model/ZoneAirMassFlowConservation.cpp
index d78ace550f8..3eb9ef9db00 100644
--- a/src/model/ZoneAirMassFlowConservation.cpp
+++ b/src/model/ZoneAirMassFlowConservation.cpp
@@ -75,14 +75,6 @@ namespace model {
       return isEmpty(OS_ZoneAirMassFlowConservationFields::AdjustZoneMixingandReturnForAirMassFlowBalance);
     }
 
-    std::string ZoneAirMassFlowConservation_Impl::sourceZoneInfiltrationTreatment() const {
-      return "";
-    }
-
-    bool ZoneAirMassFlowConservation_Impl::isSourceZoneInfiltrationTreatmentDefaulted() const {
-      return false;
-    }
-
     std::string ZoneAirMassFlowConservation_Impl::infiltrationBalancingMethod() const {
       boost::optional<std::string> value = getString(OS_ZoneAirMassFlowConservationFields::InfiltrationBalancingMethod, true);
       OS_ASSERT(value);
@@ -115,12 +107,6 @@ namespace model {
       OS_ASSERT(result);
     }
 
-    bool ZoneAirMassFlowConservation_Impl::setSourceZoneInfiltrationTreatment(const std::string& sourceZoneInfiltrationTreatment) {
-      return false;
-    }
-
-    void ZoneAirMassFlowConservation_Impl::resetSourceZoneInfiltrationTreatment() {}
-
     bool ZoneAirMassFlowConservation_Impl::setInfiltrationBalancingMethod(const std::string& infiltrationBalancingMethod) {
       bool result = setString(OS_ZoneAirMassFlowConservationFields::InfiltrationBalancingMethod, infiltrationBalancingMethod);
       return result;
@@ -147,10 +133,6 @@ namespace model {
     return IddObjectType(IddObjectType::OS_ZoneAirMassFlowConservation);
   }
 
-  std::vector<std::string> ZoneAirMassFlowConservation::sourceZoneInfiltrationTreatmentValues() {
-    return std::vector<std::string>();
-  }
-
   std::vector<std::string> ZoneAirMassFlowConservation::adjustZoneMixingandReturnForAirMassFlowBalanceValues() {
     return getIddKeyNames(IddFactory::instance().getObject(iddObjectType()).get(),
                           OS_ZoneAirMassFlowConservationFields::AdjustZoneMixingandReturnForAirMassFlowBalance);
@@ -172,14 +154,6 @@ namespace model {
     return getImpl<detail::ZoneAirMassFlowConservation_Impl>()->isAdjustZoneMixingandReturnForAirMassFlowBalanceDefaulted();
   }
 
-  std::string ZoneAirMassFlowConservation::sourceZoneInfiltrationTreatment() const {
-    return getImpl<detail::ZoneAirMassFlowConservation_Impl>()->sourceZoneInfiltrationTreatment();
-  }
-
-  bool ZoneAirMassFlowConservation::isSourceZoneInfiltrationTreatmentDefaulted() const {
-    return getImpl<detail::ZoneAirMassFlowConservation_Impl>()->isSourceZoneInfiltrationTreatmentDefaulted();
-  }
-
   std::string ZoneAirMassFlowConservation::infiltrationBalancingMethod() const {
     return getImpl<detail::ZoneAirMassFlowConservation_Impl>()->infiltrationBalancingMethod();
   }
@@ -206,14 +180,6 @@ namespace model {
     getImpl<detail::ZoneAirMassFlowConservation_Impl>()->resetAdjustZoneMixingandReturnForAirMassFlowBalance();
   }
 
-  bool ZoneAirMassFlowConservation::setSourceZoneInfiltrationTreatment(const std::string& sourceZoneInfiltrationTreatment) {
-    return getImpl<detail::ZoneAirMassFlowConservation_Impl>()->setSourceZoneInfiltrationTreatment(sourceZoneInfiltrationTreatment);
-  }
-
-  void ZoneAirMassFlowConservation::resetSourceZoneInfiltrationTreatment() {
-    getImpl<detail::ZoneAirMassFlowConservation_Impl>()->resetSourceZoneInfiltrationTreatment();
-  }
-
   bool ZoneAirMassFlowConservation::setInfiltrationBalancingMethod(const std::string& infiltrationBalancingMethod) {
     return getImpl<detail::ZoneAirMassFlowConservation_Impl>()->setInfiltrationBalancingMethod(infiltrationBalancingMethod);
   }
diff --git a/src/model/ZoneAirMassFlowConservation.hpp b/src/model/ZoneAirMassFlowConservation.hpp
index d578c3c53ae..c92b33eec07 100644
--- a/src/model/ZoneAirMassFlowConservation.hpp
+++ b/src/model/ZoneAirMassFlowConservation.hpp
@@ -57,9 +57,6 @@ namespace model {
 
     static IddObjectType iddObjectType();
 
-    /** This method is deprecated as of OpenStudio 1.9.3. It will return an empty vector.**/
-    static std::vector<std::string> sourceZoneInfiltrationTreatmentValues();
-
     static std::vector<std::string> adjustZoneMixingandReturnForAirMassFlowBalanceValues();
 
     static std::vector<std::string> infiltrationBalancingMethodValues();
@@ -76,12 +73,6 @@ namespace model {
     bool isAdjustZoneMixingandReturnForAirMassFlowBalanceDefaulted() const;
     OS_DEPRECATED bool isAdjustZoneMixingForZoneAirMassFlowBalanceDefaulted() const;
 
-    /** This method is deprecated as of OpenStudio 1.9.3. It will return an empty string.**/
-    std::string sourceZoneInfiltrationTreatment() const;
-
-    /** This method is deprecated as of OpenStudio 1.9.3. It will return false.**/
-    bool isSourceZoneInfiltrationTreatmentDefaulted() const;
-
     std::string infiltrationBalancingMethod() const;
 
     bool isInfiltrationBalancingMethodDefaulted() const;
@@ -101,12 +92,6 @@ namespace model {
     void resetAdjustZoneMixingandReturnForAirMassFlowBalance();
     OS_DEPRECATED void resetAdjustZoneMixingForZoneAirMassFlowBalance();
 
-    /** This method is deprecated as of OpenStudio 1.9.3.  It will return false.**/
-    bool setSourceZoneInfiltrationTreatment(const std::string& sourceZoneInfiltrationTreatment);
-
-    /** This method is deprecated as of OpenStudio 1.9.3**/
-    void resetSourceZoneInfiltrationTreatment();
-
     bool setInfiltrationBalancingMethod(const std::string& infiltrationBalancingMethod);
 
     void resetInfiltrationBalancingMethod();
diff --git a/src/model/ZoneAirMassFlowConservation_Impl.hpp b/src/model/ZoneAirMassFlowConservation_Impl.hpp
index a4a2dcc97b1..824add32d54 100644
--- a/src/model/ZoneAirMassFlowConservation_Impl.hpp
+++ b/src/model/ZoneAirMassFlowConservation_Impl.hpp
@@ -69,10 +69,6 @@ namespace model {
 
       bool isAdjustZoneMixingandReturnForAirMassFlowBalanceDefaulted() const;
 
-      std::string sourceZoneInfiltrationTreatment() const;
-
-      bool isSourceZoneInfiltrationTreatmentDefaulted() const;
-
       std::string infiltrationBalancingMethod() const;
 
       bool isInfiltrationBalancingMethodDefaulted() const;
@@ -89,10 +85,6 @@ namespace model {
 
       void resetAdjustZoneMixingandReturnForAirMassFlowBalance();
 
-      bool setSourceZoneInfiltrationTreatment(const std::string& sourceZoneInfiltrationTreatment);
-
-      void resetSourceZoneInfiltrationTreatment();
-
       bool setInfiltrationBalancingMethod(const std::string& infiltrationBalancingMethod);
 
       void resetInfiltrationBalancingMethod();
diff --git a/src/model/ZoneVentilationDesignFlowRate.cpp b/src/model/ZoneVentilationDesignFlowRate.cpp
index 4c333b5c7b4..17e1650b90b 100644
--- a/src/model/ZoneVentilationDesignFlowRate.cpp
+++ b/src/model/ZoneVentilationDesignFlowRate.cpp
@@ -258,7 +258,7 @@ namespace model {
       return result;
     }
 
-    bool ZoneVentilationDesignFlowRate_Impl::setDesignFlowRateCalculationMethod(std::string designFlowRateCalculationMethod) {
+    bool ZoneVentilationDesignFlowRate_Impl::setDesignFlowRateCalculationMethod(const std::string& designFlowRateCalculationMethod) {
       LOG(Warn,
           "ZoneVentilationDesignFlowRate::setDesignFlowRateCalculationMethod has been deprecated and will be removed in a future release, the design "
           "flow rate calculation method is set during the call to setDesignFlowRate, setFlowRateperZoneFloorArea, setAirChangesperHour, etc");
@@ -347,7 +347,7 @@ namespace model {
       return result;
     }
 
-    bool ZoneVentilationDesignFlowRate_Impl::setVentilationType(std::string ventilationType) {
+    bool ZoneVentilationDesignFlowRate_Impl::setVentilationType(const std::string& ventilationType) {
       bool result = setString(OS_ZoneVentilation_DesignFlowRateFields::VentilationType, ventilationType);
       return result;
     }
@@ -671,10 +671,6 @@ namespace model {
     return getImpl<detail::ZoneVentilationDesignFlowRate_Impl>()->setSchedule(schedule);
   }
 
-  bool ZoneVentilationDesignFlowRate::setDesignFlowRateCalculationMethod(std::string designFlowRateCalculationMethod) {
-    return getImpl<detail::ZoneVentilationDesignFlowRate_Impl>()->setDesignFlowRateCalculationMethod(designFlowRateCalculationMethod);
-  }
-
   bool ZoneVentilationDesignFlowRate::setDesignFlowRate(double designFlowRate) {
     return getImpl<detail::ZoneVentilationDesignFlowRate_Impl>()->setDesignFlowRate(designFlowRate);
   }
@@ -691,7 +687,7 @@ namespace model {
     return getImpl<detail::ZoneVentilationDesignFlowRate_Impl>()->setAirChangesperHour(airChangesperHour);
   }
 
-  bool ZoneVentilationDesignFlowRate::setVentilationType(std::string ventilationType) {
+  bool ZoneVentilationDesignFlowRate::setVentilationType(const std::string& ventilationType) {
     return getImpl<detail::ZoneVentilationDesignFlowRate_Impl>()->setVentilationType(ventilationType);
   }
 
diff --git a/src/model/ZoneVentilationDesignFlowRate.hpp b/src/model/ZoneVentilationDesignFlowRate.hpp
index bb96d70e692..e069038e570 100644
--- a/src/model/ZoneVentilationDesignFlowRate.hpp
+++ b/src/model/ZoneVentilationDesignFlowRate.hpp
@@ -32,7 +32,6 @@
 
 #include "ModelAPI.hpp"
 #include "ZoneHVACComponent.hpp"
-#include "../utilities/core/Deprecated.hpp"
 
 namespace openstudio {
 
@@ -122,11 +121,6 @@ namespace model {
 
     bool setSchedule(Schedule& schedule);
 
-    /** \deprecated ZoneVentilationDesignFlowRate::setDesignFlowRateCalculationMethod has been deprecated and will be removed in a future release, \n
-   *  the design flow rate calculation method is set during the call to setDesignFlowRate, setFlowRateperZoneFloorArea, setAirChangesperHour, etc
-   **/
-    OS_DEPRECATED bool setDesignFlowRateCalculationMethod(std::string designFlowRateCalculationMethod);
-
     bool setDesignFlowRate(double designFlowRate);
 
     bool setFlowRateperZoneFloorArea(double flowRateperZoneFloorArea);
@@ -135,7 +129,7 @@ namespace model {
 
     bool setAirChangesperHour(double airChangesperHour);
 
-    bool setVentilationType(std::string ventilationType);
+    bool setVentilationType(const std::string& ventilationType);
 
     bool setFanPressureRise(double fanPressureRise);
 
@@ -188,7 +182,7 @@ namespace model {
     //@}
    protected:
     /// @cond
-    typedef detail::ZoneVentilationDesignFlowRate_Impl ImplType;
+    using ImplType = detail::ZoneVentilationDesignFlowRate_Impl;
 
     explicit ZoneVentilationDesignFlowRate(std::shared_ptr<detail::ZoneVentilationDesignFlowRate_Impl> impl);
 
@@ -202,10 +196,10 @@ namespace model {
   };
 
   /** \relates ZoneVentilationDesignFlowRate*/
-  typedef boost::optional<ZoneVentilationDesignFlowRate> OptionalZoneVentilationDesignFlowRate;
+  using OptionalZoneVentilationDesignFlowRate = boost::optional<ZoneVentilationDesignFlowRate>;
 
   /** \relates ZoneVentilationDesignFlowRate*/
-  typedef std::vector<ZoneVentilationDesignFlowRate> ZoneVentilationDesignFlowRateVector;
+  using ZoneVentilationDesignFlowRateVector = std::vector<ZoneVentilationDesignFlowRate>;
 
 }  // namespace model
 }  // namespace openstudio
diff --git a/src/model/ZoneVentilationDesignFlowRate_Impl.hpp b/src/model/ZoneVentilationDesignFlowRate_Impl.hpp
index e149861d103..1cfaa6127ba 100644
--- a/src/model/ZoneVentilationDesignFlowRate_Impl.hpp
+++ b/src/model/ZoneVentilationDesignFlowRate_Impl.hpp
@@ -127,7 +127,7 @@ namespace model {
 
       bool setSchedule(Schedule& schedule);
 
-      bool setDesignFlowRateCalculationMethod(std::string designFlowRateCalculationMethod);
+      bool setDesignFlowRateCalculationMethod(const std::string& designFlowRateCalculationMethod);
 
       bool setDesignFlowRate(double designFlowRate);
 
@@ -139,7 +139,7 @@ namespace model {
 
       bool setAirChangesperHour(double airChangesperHour);
 
-      bool setVentilationType(std::string ventilationType);
+      bool setVentilationType(const std::string& ventilationType);
 
       bool setFanPressureRise(double fanPressureRise);
 
diff --git a/src/osversion/VersionTranslator.cpp b/src/osversion/VersionTranslator.cpp
index 78b301b6892..78da9b86397 100644
--- a/src/osversion/VersionTranslator.cpp
+++ b/src/osversion/VersionTranslator.cpp
@@ -146,7 +146,8 @@ namespace osversion {
     m_updateMethods[VersionString("3.2.1")] = &VersionTranslator::update_3_2_0_to_3_2_1;
     m_updateMethods[VersionString("3.3.0")] = &VersionTranslator::update_3_2_1_to_3_3_0;
     m_updateMethods[VersionString("3.4.0")] = &VersionTranslator::update_3_3_0_to_3_4_0;
-    m_updateMethods[VersionString("3.4.1")] = &VersionTranslator::defaultUpdate;
+    m_updateMethods[VersionString("3.4.1")] = &VersionTranslator::update_3_4_0_to_3_4_1;
+    //m_updateMethods[VersionString("3.5.0")] = &VersionTranslator::defaultUpdate;
 
     // List of previous versions that may be updated to this one.
     //   - To increment the translator, add an entry for the version just released (branched for
@@ -304,7 +305,7 @@ namespace osversion {
     m_startVersions.push_back(VersionString("3.2.1"));
     m_startVersions.push_back(VersionString("3.3.0"));
     m_startVersions.push_back(VersionString("3.4.0"));
-    //m_startVersions.push_back(VersionString("3.4.1"));
+    // m_startVersions.push_back(VersionString("3.4.1"));
   }
 
   boost::optional<model::Model> VersionTranslator::loadModel(const openstudio::path& pathToOldOsm, ProgressBar* progressBar) {
@@ -6911,9 +6912,72 @@ namespace osversion {
 
   }  // end update_3_3_0_to_3_4_0
 
-  /*   std::string VersionTranslator::update_3_4_0_to_3_4_1(const IdfFile& idf_3_4_0, const IddFileAndFactoryWrapper& idd_3_4_1) {
+  std::string VersionTranslator::update_3_4_0_to_3_4_1(const IdfFile& idf_3_4_0, const IddFileAndFactoryWrapper& idd_3_4_1) {
+    std::stringstream ss;
+    boost::optional<std::string> value;
+
+    ss << idf_3_4_0.header() << '\n' << '\n';
+    IdfFile targetIdf(idd_3_4_1.iddFile());
+    ss << targetIdf.versionObject().get();
+
+    for (const IdfObject& object : idf_3_4_0.objects()) {
+      auto iddname = object.iddObject().name();
+
+      if (iddname == "OS:Construction") {
+
+        // Remove Construction with Material:AirWall layer
+        // Replace with Construction:AirBoundary
+
+        auto iddObject = idd_3_4_1.getObject(iddname);
+
+        bool isAirWall = false;
+        if (object.numExtensibleGroups() == 1u) {
+          const IdfExtensibleGroup eg = object.extensibleGroups()[0];
+          if (boost::optional<IdfObject> layer = idf_3_4_0.getObject(toUUID(eg.getString(0).get()))) {
+            auto layeriddname = layer->iddObject().name();
+            if (layeriddname == "OS:Material:AirWall") {
+
+              auto iddObject = idd_3_4_1.getObject("OS:Construction:AirBoundary");
+              IdfObject newObject(iddObject.get());
+
+              // Handle
+              if (auto value = object.getString(0)) {
+                newObject.setString(0, value.get());
+              }
+
+              // Name
+              if (auto value = object.getString(1)) {
+                newObject.setString(1, value.get());
+              }
+
+              // Simple Mixing Air Changes per Hour
+              // Set ACH to 0.0, to match the old style Material:AirWall (same as the ConstructionAirBoundary Ctor)
+              newObject.setDouble(3, 0.0);
+
+              m_refactored.push_back(RefactoredObjectData(object, newObject));
+              ss << newObject;
+
+              isAirWall = true;
+            }
+          }
+        }
+
+        if (!isAirWall) {
+          ss << object;
+        }
+
+      } else if (iddname == "OS:Material:AirWall") {
+        m_untranslated.push_back(object);
+
+        // No-op
+      } else {
+        ss << object;
+      }
+    }
+
+    return ss.str();
 
-  }  // end update_3_4_0_to_3_4_1 */
+  }  // end update_3_4_0_to_3_4_1
 
 }  // namespace osversion
 }  // namespace openstudio
diff --git a/src/osversion/VersionTranslator.hpp b/src/osversion/VersionTranslator.hpp
index f144f4c190a..3a0fa670989 100644
--- a/src/osversion/VersionTranslator.hpp
+++ b/src/osversion/VersionTranslator.hpp
@@ -251,7 +251,7 @@ namespace osversion {
     std::string update_3_2_0_to_3_2_1(const IdfFile& idf_3_2_0, const IddFileAndFactoryWrapper& idd_3_2_1);
     std::string update_3_2_1_to_3_3_0(const IdfFile& idf_3_2_1, const IddFileAndFactoryWrapper& idd_3_3_0);
     std::string update_3_3_0_to_3_4_0(const IdfFile& idf_3_3_0, const IddFileAndFactoryWrapper& idd_3_4_0);
-    //std::string update_3_4_0_to_3_4_1(const IdfFile& idf_3_4_0, const IddFileAndFactoryWrapper& idd_3_4_1);
+    std::string update_3_4_0_to_3_4_1(const IdfFile& idf_3_4_0, const IddFileAndFactoryWrapper& idd_3_4_1);
 
     IdfObject updateUrlField_0_7_1_to_0_7_2(const IdfObject& object, unsigned index);
 
diff --git a/src/utilities/idd/Test/IddFactory_GTest.cpp b/src/utilities/idd/Test/IddFactory_GTest.cpp
index 927d47a7d70..178a8ee49b7 100644
--- a/src/utilities/idd/Test/IddFactory_GTest.cpp
+++ b/src/utilities/idd/Test/IddFactory_GTest.cpp
@@ -102,8 +102,6 @@ TEST_F(IddFixture, IddFactory_IddFile) {
 TEST_F(IddFixture, IddFactory_isInFile) {
   EXPECT_TRUE(IddFactory::instance().isInFile(IddObjectType::Building, IddFileType::EnergyPlus));
   EXPECT_FALSE(IddFactory::instance().isInFile(IddObjectType::Building, IddFileType::OpenStudio));
-  EXPECT_FALSE(IddFactory::instance().isInFile(IddObjectType::OS_Material_AirWall, IddFileType::EnergyPlus));
-  EXPECT_TRUE(IddFactory::instance().isInFile(IddObjectType::OS_Material_AirWall, IddFileType::OpenStudio));
   EXPECT_TRUE(IddFactory::instance().isInFile(IddObjectType::GlobalGeometryRules, IddFileType::EnergyPlus));
   EXPECT_FALSE(IddFactory::instance().isInFile(IddObjectType::GlobalGeometryRules, IddFileType::OpenStudio));
   EXPECT_TRUE(IddFactory::instance().isInFile(IddObjectType::CommentOnly, IddFileType::EnergyPlus));


Test patch:
diff --git a/src/model/test/AirflowNetworkSurface_GTest.cpp b/src/model/test/AirflowNetworkSurface_GTest.cpp
index c41d0187300..b04cfc39583 100644
--- a/src/model/test/AirflowNetworkSurface_GTest.cpp
+++ b/src/model/test/AirflowNetworkSurface_GTest.cpp
@@ -57,8 +57,6 @@
 #include "../Material_Impl.hpp"
 #include "../AirGap.hpp"
 #include "../AirGap_Impl.hpp"
-#include "../AirWallMaterial.hpp"
-#include "../AirWallMaterial_Impl.hpp"
 #include "../StandardOpaqueMaterial.hpp"
 #include "../StandardOpaqueMaterial_Impl.hpp"
 #include "../DefaultConstructionSet.hpp"
diff --git a/src/model/test/Construction_GTest.cpp b/src/model/test/Construction_GTest.cpp
index d672857095b..862ebba5342 100644
--- a/src/model/test/Construction_GTest.cpp
+++ b/src/model/test/Construction_GTest.cpp
@@ -58,7 +58,6 @@
 #include "../Material.hpp"
 #include "../Material_Impl.hpp"
 #include "../AirGap.hpp"
-#include "../AirWallMaterial.hpp"
 #include "../StandardOpaqueMaterial.hpp"
 #include "../StandardOpaqueMaterial_Impl.hpp"
 #include "../StandardGlazing.hpp"
@@ -392,9 +391,6 @@ TEST_F(ModelFixture, DuplicateMaterialName) {
 
   StandardOpaqueMaterial material(model);
   EXPECT_TRUE(material.setName("OS:Material:AirWall 1"));
-
-  AirWallMaterial airWall(model);
-  EXPECT_NE(airWall.name().get(), material.name().get());
 }
 
 TEST_F(ModelFixture, Construction_SetUFactor) {
diff --git a/src/model/test/EnergyManagementSystemConstructionIndexVariable_GTest.cpp b/src/model/test/EnergyManagementSystemConstructionIndexVariable_GTest.cpp
index be8a90ba72d..a11e203327c 100644
--- a/src/model/test/EnergyManagementSystemConstructionIndexVariable_GTest.cpp
+++ b/src/model/test/EnergyManagementSystemConstructionIndexVariable_GTest.cpp
@@ -59,7 +59,6 @@
 #include "../Material.hpp"
 #include "../Material_Impl.hpp"
 #include "../AirGap.hpp"
-#include "../AirWallMaterial.hpp"
 #include "../StandardOpaqueMaterial.hpp"
 #include "../StandardOpaqueMaterial_Impl.hpp"
 #include "../StandardGlazing.hpp"
diff --git a/src/model/test/ModelPartitionMaterial_GTest.cpp b/src/model/test/ModelPartitionMaterial_GTest.cpp
index 30d2c2029de..9c42d6bca91 100644
--- a/src/model/test/ModelPartitionMaterial_GTest.cpp
+++ b/src/model/test/ModelPartitionMaterial_GTest.cpp
@@ -31,8 +31,6 @@
 
 #include "ModelFixture.hpp"
 
-#include "../AirWallMaterial.hpp"
-#include "../AirWallMaterial_Impl.hpp"
 #include "../InfraredTransparentMaterial.hpp"
 #include "../InfraredTransparentMaterial_Impl.hpp"
 #include "../Model_Impl.hpp"
@@ -59,25 +57,6 @@ TEST_F(ModelFixture, ModelPartitionMaterial_Daylighting_School_1)
   EXPECT_TRUE(modelPartitionMaterials.empty());
 }
 */
-TEST_F(ModelFixture, ModelPartitionMaterial_AirWallMaterial_Constructors) {
-  // construct from scratch
-  Model model;
-  AirWallMaterial airWallMaterial(model);
-  EXPECT_EQ(static_cast<unsigned>(1), model.objects().size());
-  AirWallMaterialVector airWallMaterials = model.getModelObjects<AirWallMaterial>();
-  ASSERT_EQ(static_cast<unsigned>(1), airWallMaterials.size());
-  EXPECT_TRUE(airWallMaterial == airWallMaterials[0]);
-  EXPECT_TRUE(airWallMaterial.iddObject().type() == IddObjectType::OS_Material_AirWall);
-
-  // construct by clone
-  Model modelClone = model.clone().cast<Model>();
-  EXPECT_EQ(static_cast<unsigned>(1), modelClone.objects().size());
-  airWallMaterials = modelClone.getModelObjects<AirWallMaterial>();
-  ASSERT_EQ(static_cast<unsigned>(1), airWallMaterials.size());
-  airWallMaterial = airWallMaterials[0];
-  EXPECT_FALSE(airWallMaterial.model() == model);
-  EXPECT_TRUE(airWallMaterial.iddObject().type() == IddObjectType::OS_Material_AirWall);
-}
 
 TEST_F(ModelFixture, ModelPartitionMaterial_InfraredTransparentMaterial_Constructors) {
   // construct from scratch
diff --git a/src/model/test/Node_GTest.cpp b/src/model/test/Node_GTest.cpp
index ee0bb360494..95a2ac1df24 100644
--- a/src/model/test/Node_GTest.cpp
+++ b/src/model/test/Node_GTest.cpp
@@ -167,7 +167,7 @@ TEST_F(ModelFixture, Node_SetpointManagerSingleZoneReheat) {
   SetpointManagerSingleZoneReheat spm(m);
   spm.setControlVariable("Temperature");
 
-  _node.addSetpointManager(spm);
+  spm.addToNode(_node);
 
   ASSERT_TRUE(spm.setpointNode());
   ASSERT_TRUE(spm.controlZone());
@@ -179,11 +179,11 @@ TEST_F(ModelFixture, Node_SetpointManagerSingleZoneReheat) {
   setpointManagerSingleZoneReheats = m.getModelObjects<SetpointManagerSingleZoneReheat>();
   EXPECT_EQ(1, setpointManagerSingleZoneReheats.size());
 
-  OptionalSetpointManagerSingleZoneReheat nodeSPM = _node.getSetpointManagerSingleZoneReheat();
+  OptionalSetpointManagerSingleZoneReheat nodeSPM = _setpointManagers[0].optionalCast<SetpointManagerSingleZoneReheat>();
   ASSERT_TRUE(nodeSPM);
   EXPECT_EQ(spm, *nodeSPM);
 
-  _node.removeSetpointManagerSingleZoneReheat();
+  spm.remove();
 
   _setpointManagers = _node.setpointManagers();
   EXPECT_EQ(0, _setpointManagers.size());
@@ -211,7 +211,7 @@ TEST_F(ModelFixture, Node_SetpointManagerMixedAir) {
   SetpointManagerMixedAir spm(m);
   spm.setControlVariable("Temperature");
 
-  node.addSetpointManager(spm);
+  spm.addToNode(node);
 
   ASSERT_TRUE(spm.setpointNode());
   ASSERT_TRUE(spm.fanInletNode());
@@ -227,11 +227,11 @@ TEST_F(ModelFixture, Node_SetpointManagerMixedAir) {
   setpointManagerMixedAirs = m.getModelObjects<SetpointManagerMixedAir>();
   EXPECT_EQ(1, setpointManagerMixedAirs.size());
 
-  OptionalSetpointManagerMixedAir nodeSPM = node.getSetpointManagerMixedAir();
+  OptionalSetpointManagerMixedAir nodeSPM = _setpointManagers[0].optionalCast<SetpointManagerMixedAir>();
   ASSERT_TRUE(nodeSPM);
   EXPECT_EQ(spm, *nodeSPM);
 
-  node.removeSetpointManagerMixedAir();
+  spm.remove();
 
   _setpointManagers = node.setpointManagers();
   EXPECT_EQ(0, _setpointManagers.size());
@@ -254,18 +254,18 @@ TEST_F(ModelFixture, Node_SetpointManagerScheduled) {
   SetpointManagerScheduled spm(m, tempSch);
   spm.setControlVariable("Temperature");
 
-  _node.addSetpointManager(spm);
+  spm.addToNode(_node);
 
   _setpointManagers = _node.setpointManagers();
   EXPECT_EQ(1, _setpointManagers.size());
   setpointManagerScheduleds = m.getModelObjects<SetpointManagerScheduled>();
   EXPECT_EQ(1, setpointManagerScheduleds.size());
 
-  boost::optional<SetpointManagerScheduled> nodeSPM = _node.setpointManagerScheduled();
+  boost::optional<SetpointManagerScheduled> nodeSPM = _setpointManagers[0].optionalCast<SetpointManagerScheduled>();
   ASSERT_TRUE(nodeSPM);
   EXPECT_EQ(spm, *nodeSPM);
 
-  _node.removeSetpointManagerScheduled();
+  spm.remove();
 
   _setpointManagers = _node.setpointManagers();
   EXPECT_EQ(0, _setpointManagers.size());
@@ -287,18 +287,19 @@ TEST_F(ModelFixture, Node_SetpointManagerFollowOutdoorAirTemperature) {
   SetpointManagerFollowOutdoorAirTemperature spm(m);
   spm.setControlVariable("Temperature");
 
-  _node.addSetpointManager(spm);
+  spm.addToNode(_node);
 
   _setpointManagers = _node.setpointManagers();
   EXPECT_EQ(1, _setpointManagers.size());
   setpointManagerFollowOutdoorAirTemperatures = m.getModelObjects<SetpointManagerFollowOutdoorAirTemperature>();
   EXPECT_EQ(1, setpointManagerFollowOutdoorAirTemperatures.size());
 
-  boost::optional<SetpointManagerFollowOutdoorAirTemperature> nodeSPM = _node.setpointManagerFollowOutdoorAirTemperature();
+  boost::optional<SetpointManagerFollowOutdoorAirTemperature> nodeSPM =
+    _setpointManagers[0].optionalCast<SetpointManagerFollowOutdoorAirTemperature>();
   ASSERT_TRUE(nodeSPM);
   EXPECT_EQ(spm, *nodeSPM);
 
-  _node.removeSetpointManagerFollowOutdoorAirTemperature();
+  spm.remove();
 
   _setpointManagers = _node.setpointManagers();
   EXPECT_EQ(0, _setpointManagers.size());
@@ -319,18 +320,18 @@ TEST_F(ModelFixture, Node_SetpointManagerOutdoorAirReset) {
   SetpointManagerOutdoorAirReset spm(m);
   spm.setControlVariable("Temperature");
 
-  _node.addSetpointManager(spm);
+  spm.addToNode(_node);
 
   _setpointManagers = _node.setpointManagers();
   EXPECT_EQ(1, _setpointManagers.size());
   setpointManagerOutdoorAirResets = m.getModelObjects<SetpointManagerOutdoorAirReset>();
   EXPECT_EQ(1, setpointManagerOutdoorAirResets.size());
 
-  OptionalSetpointManagerOutdoorAirReset nodeSPM = _node.setpointManagerOutdoorAirReset();
+  OptionalSetpointManagerOutdoorAirReset nodeSPM = _setpointManagers[0].optionalCast<SetpointManagerOutdoorAirReset>();
   ASSERT_TRUE(nodeSPM);
   EXPECT_EQ(spm, *nodeSPM);
 
-  _node.removeSetpointManagerOutdoorAirReset();
+  spm.remove();
 
   _setpointManagers = _node.setpointManagers();
   EXPECT_EQ(0, _setpointManagers.size());
@@ -351,18 +352,18 @@ TEST_F(ModelFixture, Node_SetpointManagerWarmest) {
   SetpointManagerWarmest spm(m);
   spm.setControlVariable("Temperature");
 
-  _node.addSetpointManagerWarmest(spm);
+  spm.addToNode(_node);
 
   _setpointManagers = _node.setpointManagers();
   EXPECT_EQ(1, _setpointManagers.size());
   setpointManagerWarmests = m.getModelObjects<SetpointManagerWarmest>();
   EXPECT_EQ(1, setpointManagerWarmests.size());
 
-  OptionalSetpointManagerWarmest nodeSPM = _node.setpointManagerWarmest();
+  OptionalSetpointManagerWarmest nodeSPM = _setpointManagers[0].optionalCast<SetpointManagerWarmest>();
   ASSERT_TRUE(nodeSPM);
   EXPECT_EQ(spm, *nodeSPM);
 
-  _node.removeSetpointManagerWarmest();
+  spm.remove();
 
   _setpointManagers = _node.setpointManagers();
   EXPECT_EQ(0, _setpointManagers.size());
diff --git a/src/model/test/SetpointManagerWarmest_GTest.cpp b/src/model/test/SetpointManagerWarmest_GTest.cpp
index 642c88bbfb3..8dea1e05732 100644
--- a/src/model/test/SetpointManagerWarmest_GTest.cpp
+++ b/src/model/test/SetpointManagerWarmest_GTest.cpp
@@ -158,19 +158,3 @@ TEST_F(ModelFixture, SetpointManagerWarmest_customDataClone) {
   EXPECT_EQ(999.9, testObjectClone.maximumSetpointTemperature());
   EXPECT_EQ(999.9, testObjectClone.minimumSetpointTemperature());
 }
-
-TEST_F(ModelFixture, SetpointManagerWarmest_legacy) {
-  Model model;
-
-  SetpointManagerWarmest setpointManagerWarmest(model);
-
-  AirLoopHVAC airLoopHVAC(model);
-
-  Node node = airLoopHVAC.supplyOutletNode();
-
-  ASSERT_TRUE(setpointManagerWarmest.addToNode(node));
-
-  ASSERT_TRUE(node.setpointManagerWarmest());
-
-  ASSERT_EQ(setpointManagerWarmest, node.setpointManagerWarmest().get());
-}
diff --git a/src/model/test/Surface_GTest.cpp b/src/model/test/Surface_GTest.cpp
index bcf7ee96efb..52683ca48a2 100644
--- a/src/model/test/Surface_GTest.cpp
+++ b/src/model/test/Surface_GTest.cpp
@@ -60,8 +60,6 @@
 #include "../Material_Impl.hpp"
 #include "../AirGap.hpp"
 #include "../AirGap_Impl.hpp"
-#include "../AirWallMaterial.hpp"
-#include "../AirWallMaterial_Impl.hpp"
 #include "../StandardOpaqueMaterial.hpp"
 #include "../StandardOpaqueMaterial_Impl.hpp"
 #include "../DefaultConstructionSet.hpp"
@@ -427,7 +425,7 @@ TEST_F(ModelFixture, Surface_BuildingComponentLibraryRoofConstruction)
       << "roofs.");
 }
 */
-TEST_F(ModelFixture, AirWall) {
+TEST_F(ModelFixture, MaterialTypes) {
   Model model;
 
   // triangle with unit area
@@ -438,7 +436,6 @@ TEST_F(ModelFixture, AirWall) {
 
   AirGap materialAirGap(model);
   StandardOpaqueMaterial material(model);
-  AirWallMaterial materialAirWall(model);
   Construction construction(model);
   std::vector<Material> layers;
 
@@ -476,10 +473,6 @@ TEST_F(ModelFixture, AirWall) {
   layers.push_back(materialAirGap);
   EXPECT_TRUE(construction.setLayers(layers));
   EXPECT_FALSE(surface.isAirWall());
-
-  // materialAirWall
-  EXPECT_TRUE(construction.setLayer(materialAirWall));
-  EXPECT_TRUE(surface.isAirWall());
 }
 
 TEST_F(ModelFixture, 0_Vertex_Surface) {
diff --git a/src/osversion/test/3_4_1/test_vt_AirWallMaterial.osm b/src/osversion/test/3_4_1/test_vt_AirWallMaterial.osm
new file mode 100644
index 00000000000..9f123f44645
--- /dev/null
+++ b/src/osversion/test/3_4_1/test_vt_AirWallMaterial.osm
@@ -0,0 +1,32 @@
+
+OS:Version,
+  {a69b4712-6b39-4c54-bf12-f5a8e6a831a9}, !- Handle
+  3.4.0;                                  !- Version Identifier
+
+OS:Material:AirWall,
+  {9b235ef8-4eff-49bb-9593-12fd9fe7c319}, !- Handle
+  Material Air Wall 1;                    !- Name
+
+OS:Construction,
+  {0d4c90f4-ae6c-4f3d-801c-ccc2f8db6d35}, !- Handle
+  Construction 1,                         !- Name
+  ,                                       !- Surface Rendering Name
+  {9b235ef8-4eff-49bb-9593-12fd9fe7c319}; !- Layer 1
+
+OS:Surface,
+  {f5be472e-b18e-4450-90cc-1edb75fd8f14}, !- Handle
+  Surface 1,                              !- Name
+  RoofCeiling,                            !- Surface Type
+  {0d4c90f4-ae6c-4f3d-801c-ccc2f8db6d35}, !- Construction Name
+  ,                                       !- Space Name
+  Outdoors,                               !- Outside Boundary Condition
+  ,                                       !- Outside Boundary Condition Object
+  SunExposed,                             !- Sun Exposure
+  WindExposed,                            !- Wind Exposure
+  ,                                       !- View Factor to Ground
+  ,                                       !- Number of Vertices
+  0, 1, 0,                                !- X,Y,Z Vertex 1 {m}
+  0, 0, 0,                                !- X,Y,Z Vertex 2 {m}
+  1, 0, 0,                                !- X,Y,Z Vertex 3 {m}
+  1, 1, 0;                                !- X,Y,Z Vertex 4 {m}
+
diff --git a/src/osversion/test/3_4_1/test_vt_AirWallMaterial.rb b/src/osversion/test/3_4_1/test_vt_AirWallMaterial.rb
new file mode 100644
index 00000000000..e0e5115adec
--- /dev/null
+++ b/src/osversion/test/3_4_1/test_vt_AirWallMaterial.rb
@@ -0,0 +1,22 @@
+#require '/usr/local/openstudio-3.4.0/Ruby/openstudio'
+
+include OpenStudio::Model
+
+m = Model.new
+
+airWall = AirWallMaterial.new(m)
+
+constr = Construction.new(m)
+constr.setLayers([airWall])
+
+points = OpenStudio::Point3dVector.new
+points << OpenStudio::Point3d.new(0, 1, 0)
+points << OpenStudio::Point3d.new(0, 0, 0)
+points << OpenStudio::Point3d.new(1, 0, 0)
+points << OpenStudio::Point3d.new(1, 1, 0)
+
+surface = Surface.new(points, m)
+
+surface.setConstruction(constr)
+
+m.save('test_vt_AirWallMaterial.osm', true)
diff --git a/src/osversion/test/VersionTranslator_GTest.cpp b/src/osversion/test/VersionTranslator_GTest.cpp
index 73c73aff669..f1fb21662db 100644
--- a/src/osversion/test/VersionTranslator_GTest.cpp
+++ b/src/osversion/test/VersionTranslator_GTest.cpp
@@ -1823,3 +1823,35 @@ TEST_F(OSVersionFixture, update_3_3_0_to_3_4_0_CoilHeatingDXMultiSpeed) {
   ASSERT_EQ(4u, model->getObjectsByType("OS:Coil:Heating:DX:MultiSpeed:StageData").size());
   ASSERT_EQ(0u, model->getObjectsByType("OS:ModelObjectList").size());
 }
+
+TEST_F(OSVersionFixture, update_3_4_0_to_3_4_1_AirWallMaterial) {
+  openstudio::path path = resourcesPath() / toPath("osversion/3_4_1/test_vt_AirWallMaterial.osm");
+  osversion::VersionTranslator vt;
+  boost::optional<model::Model> model = vt.loadModel(path);
+  ASSERT_TRUE(model) << "Failed to load " << path;
+
+  openstudio::path outPath = resourcesPath() / toPath("osversion/3_4_1/test_vt_AirWallMaterial_updated.osm");
+  model->save(outPath, true);
+
+  ASSERT_EQ(2u, model->numObjects());
+
+  std::vector<WorkspaceObject> constrs = model->getObjectsByType("OS:Construction");
+  ASSERT_EQ(0u, constrs.size());
+
+  std::vector<WorkspaceObject> constrAirBoundarys = model->getObjectsByType("OS:Construction:AirBoundary");
+  ASSERT_EQ(1u, constrAirBoundarys.size());
+  WorkspaceObject constrAirBoundary = constrAirBoundarys[0];
+
+  EXPECT_EQ("Construction 1", constrAirBoundary.getString(1).get());  // Name
+  EXPECT_EQ("", constrAirBoundary.getString(2).get());                // Air Exchange Method
+  EXPECT_EQ(0.0, constrAirBoundary.getDouble(3).get());               // Simple Mixing Air Changes Per Hour
+  EXPECT_EQ("", constrAirBoundary.getString(4).get());                // Simple Mixing Schedule Name
+  EXPECT_EQ("", constrAirBoundary.getString(5).get());                // Surface Rendering Name
+
+  std::vector<WorkspaceObject> surfaces = model->getObjectsByType("OS:Surface");
+  ASSERT_EQ(1u, surfaces.size());
+  WorkspaceObject surface = surfaces[0];
+  ASSERT_TRUE(surface.getTarget(3));  // Construction Name
+  EXPECT_EQ("OS:Construction:AirBoundary", surface.getTarget(3).get().iddObject().name());
+  EXPECT_EQ("Construction 1", surface.getTarget(3).get().nameString());  // Construction Name
+}