Using Revit and Dynamo to Assess Embodied Carbon

Our intelligent models are rich with modeled elements, parameters, and materials: they're ripe for the assessment of their CO2 impact. Yet how is that assessment best accomplished? This article reviews ways to pull your BIM elements and apply rich Environmental Product Declaration (EPD) data sets against them, pushing that information back into Revit, and visualizing the overall impact using available color schemes in Revit.

Lifecycle Assessment and Embodied Carbon

Before we embark on measuring embodied carbon, it’s important to note some key terms that form the basis of the assessment.

Lifecycle Assessment

Lifecycle assessment is the industry methodology for assessing the environmental impacts (Global Warming Potential, Acidification Potential, Ozone Depletion Potential, etc.) associated with the stages of the lifecycle of commercial products. For our purposes here, we’ll primarily be focusing on the first three stages (A1-A3), also known as cradle to gate. We’re typically pulling manufacturer’s environmental product declaration (EPD) information and manufacturers can only be responsible for the extraction, processing, and manufacture of their products, previous to their delivery to site.


Global Warming Potential (Embodied Carbon)

What we as an AEC industry tend to refer to as Embodied Carbon is formally known as Global Warming Potential, measured in equivalent kilograms of carbon dioxide. This allows us to capture all of the compounds that contribute to global warming (CFCs, HCFCs, Methane) and relate them back to their relative potency in kgCO2e. For example, 1 kg of CFC-12 is equivalent to 10,200 kgCO2e.

Related: Energy Analysis with Revit Insight and Green Building Studio with Ferny Celina

Environmental Product Declarations

Environmental Product Declarations are independently verified documents that communicate the environmental impacts of products.


A Tool to Assess Embodied Carbon: BHoM

BHoM was started in 2016 by Buro Happold as a collaborative computational development project with the aim of building a solid foundation and framework for the code that we develop within the AEC industry. In 2018 it was released as open-source code and installers for Dynamo, Grasshopper, and Excel.

Want to write an article for AU?
Get the details

BHoM Lifecycle Assessment Toolkit was started in 2019 as a part of the Global Climate Strike, in an effort to create a computational means of assessing things like embodied carbon through a solid framework of EPD data sets, evaluation methods, and scope objects. These methods were created by a team of sustainability experts, software developers, architects, and structural and mechanical engineers.

Considering that BHoM is accessible as a package within Dynamo (through a simple install on, it’s a great way of expressing a means of assessing embodied carbon from our Revit models.


You may still be asking, why BHoM? BHoM allows us to properly store and catalog our EPD data sets, keep track of our scope (what we’re choosing to include), measure embodied carbon in early-stage design when we’re not using Revit (Rhino in particular), and push our results to JSON files, Excel, or MongoDB upon completion.

Lifecycle Assessment Scopes of Study in BHoM

Lifecycle Assessment scope is generally broken into scopes of Enclosures, Foundations, and Structures per certification (LEED, LBC, and CLF) standards. However, it’s important that we not limit ourselves to those areas of study, since they do not include MEP (ducts, pipes, equipment) or Tenant Improvements (Interior Walls, Ceilings, Floors), hence our inclusion of these categories in BHoM LCA Scope objects. They allow you to keep yourself organized and accountable for what you’re choosing to include in your study.


Environmental Product Declaration Data Sets in BHoM

BHoM data sets allow us to access thousands of EPDs from Quartz, EC3, ICE and Okobaudat. We even have a live connection to EC3 through an adapter to Carbon Query database--if you’re interested, reach out to me directly for a demo.


BHoM Workflow Overview for Studying Embodied Carbon from Revit

In a general sense, our workflow is as follows: pull our objects from Revit (slabs, columns, walls, ducts) into Dynamo, apply the EPD data sets to those objects appropriately, evaluate their embodied carbon, and push them back to Revit with their results. But first, let’s take a look at some things we can do in our Revit models to make this easier.


Modeling in Revit to Make Assessment Easier

There are a few things that you can do through the course of modeling your elements in Revit that make it easier to measure their embodied carbon (most of which are things you probably do as a good samaritan in Revit anyway.)

1)  Assign materials whether by using their Revit material property or by noting the material/product used in the family name (e.g., Concrete Column, Daikin Chiller, etc.). This allows easier and more appropriate assignment of an EPD based on a manufacturer or a particular type of concrete.

2)  Ensure that the mass, area, or volume can be assessed (where appropriate), as most EPDs have unit types that measure by unit, mass, volume, or area. We can extract those via BHoM methods but it’s always easier if it’s accurate in Revit first.

3)  Model your objects as the appropriate category: ducts as ducts (not lines), columns as columns (not generic models).

4)  Create a project parameter where the Embodied Carbon information can live once we push it back in. Something like, “Embodied Carbon (kgCO2e)” applied to all categories:



This is the part where we actually start measuring embodied carbon (woo!). These are the steps that we will follow for every type of object (wall, floor, column, duct):

1)  Download BHoM (once)

2)  Open Revit 2017+ troject (once)

3)  Open Dynamo 2.0+ (once)

4)  Pull objects by Type (columns, floors, ducts, etc.)

5)  Sort objects if there are multiple materials (e.g., timber, concrete, and steel columns)

6)  Search BHoM EPD data sets for the appropriate EPD to your sorted objects

7)  Add EPD Fragment to objects by type

8)  Get the volume or mass of your object

9)  Evaluate Global Warming Potential by mass or volume

10)  Set parameter on Revit objects

11)  Push objects back to Revit

Downloading BHoM

BHoM can be downloaded from The install takes about a minute. Make sure you have Revit, Excel, and Rhino closed while downloading so that it can install as a package in each.


Open Revit and Dynamo

After downloading BHoM, you’ll want to open the model for the building you’re trying to assess. Please make sure that this is in Revit 2017+ and that you have Dynamo 2.0+ installed. Quick reminder that Dynamo always lives in the Manage tab.


Pull Your Objects Using BHoM Nodes in Dynamo

Once you open a new script in Dynamo, you’ll find the BHoM package on the left side under Add-Ons. Any BHoM command can be accessed via Control+Shift+B if you just search for the key words in the node (e.g., Adapter, Filter Request, Type Duct, etc). BHoM has three primary parts: the Adapter, the Engine, and the oM.

In order to pull your Revit objects you will place an Adapter component (right click and search for Revit), a Pull component, a Request component (right click and search for filter request type), and a CreateType from the oM where you will search for your object by its type (wall, floor, duct, etc.)



Sort Objects by Type

When pulling objects like columns, you’re bound to have multiple materials. This may be based on the family name of your objects, as you can see in the image below where we’re getting the Revit parameter for Family Name and then using a StringContains Dynamo component to get True and False values for each type whether it contains the word timber, concrete, or flange, and then applying a Boolean mask filter.


Apply the EPDs to Your Objects

Now that your objects are sorted, you can add a fragment to them (basically imbuing them with the properties of the EPD material you choose). You can do this by placing a BHoM Engine Modify component looking for AddFragment, and by adding a CreateData component under BHoM oM. When you right click on the CreateData component you can find the LifeCycleAssessment Group which is full of data sets from EC3, ICE and Quartz for you to apply to your objects.


Get the Volume or Mass of Your Object

If you use a BHoM Explode node on your EPD data set, you’ll see a property called QuantityType, this indicates how that particular EPD needs to be evaluated, typically either by Mass or by Volume. You can use BHoM Engine Query methods to find the mass or volume of your objects. These values will be plugged into the evaluate methods we use next.


Evaluate Global Warming Potential (Embodied Carbon) by Mass or Volume

You can find the EvaluateEnvironmentalProductDeclaration nodes under BHoM Engine Compute. You’ll plug in your objects from your AddFragment node (this is because BHoM passes objects, not information, a key difference between BHoM and regular visual programming, a.k.a. no list management). You’ll also plug in the field with a CreateEnum from BHoM oM, called EnvironmentalProductDeclarationField, and your values from either your volume or mass queries in the previous step.


Set Revit Parameter on Objects

We need to use a BHoM Engine Modify to SetRevitParameter on our objects (from the AddFragment object), plug in the paramName from a code block (whatever you chose to call your embodied carbon project parameter), and the GlobalWarmingPotential values from the Exploded Evaluate Nodes.


Push Your Objects Back to Revit

The final step is to push your objects back to Revit. You’ll need a push component from BHoM Adapter, an Adapter component from BHoM Adapter (search Revit), an enum from CreateEnum under BHoM oM (search PushType, UpdateOnly from the dropdown menu), a List.Create from Dynamo to put all of your objects together from the SetRevitParameter nodes (once again those results hold objects with new properties), and a code block with the word 'true' plugged into your active ports.


When you go back into Revit you’ll see the results in your parameter:


The Full Dynamo Script (for Reference)


Want more? Download the full class handout to read on.

Kayleigh Houde is the global computational community leader for Buro Happold Engineering and a licensed mechanical engineer. Her primary focuses are open source toolkits for the AEC industry (BHoM) and upskilling individuals in transdisciplinary computational methods using Rhino, Grasshopper, C#, Revit, and Dynamo through Buro Happold's global Hackademy series.

Companion Class

Our intelligent models are rich with modeled elements, parameters, and materials; they're ripe for the assessment of their CO2 impact. Yet how do we make that process seamless? During this session we'll review ways to pull your BIM (Building Information Modeling) elements and apply rich Environmental Product Declaration (EPD) data sets against them, pushing that information back into Revit software, and visualize the overall impact using Revit software’s available color schemes.

Share Article