FLCAC-admin/uslci-content

Issues accessing density of wood-based flows

Closed this issue · 8 comments

I'm not sure if this is the right place to ask this question. If there's a better spot, please redirect me to the appropriate resource.

I am loading the USLCI and US Electric JSON-LD from this repository to have it loaded into our platform at @PlanetFwd so that we can keep our database up to date with USLCI. I've been able to work through most of the details of getting this to work properly, but I'm having trouble with a units mismatch on some flows. For example, Wood fuel, MDF, generated on-site, combusted in industrial boiler (in units of mass) uses Medium density fiberboard (MDF), at MDF mill (with a reference flow in units of volume). I can see in the description of the reference material that the density is 741 kg/m3, but I'm looking for a reliable way to parse this information programmatically. Any guidance here?

For reference, I have noticed that this issue impacts the following reference materials:

Separately, I've noticed that there is a precedent with natural gas of storing the density of the material on the flow object within the flowProperties key, but this pattern does not appear to be followed for wood-based flows. For example, Natural gas, combusted in industrial boiler, at hydrocracker, for butadiene uses Natural gas, processed, for energy use, at plant and the density is available from the associated flow Natural gas, production mixture, to energy use. Is it common to store the density in flowProperties like this? If so, is there an appropriate place to create a pull request to add this in for these wood-based flows?

My temporary workaround has been to just create a local density map for wood-based flows, but this is a really unsatisfying and prone to inconsistencies with USLCI that I would prefer to avoid.

Thanks in advance for your help. 🙏

It looks like the Wood fuel, MDF, generated on-site, combusted in industrial boiler process uses one of the co-products from the MDF Mill. Both the Wood Fuel, and the Wood Fuel, sanderdust are in units of Mass, though the reference flow of the MDF is in volume. So in this case, the units shouldn't need conversion (they can remain as mass). Note that in this process, it is currently constructed to use a mass allocation - see the note in the "intended application" field and on the allocation factors tab.

Yes, the Flow Properties field could be a place to find that kind of conversion information, and I expect this would support your efforts to incorporate that data programmatically. We will review if this can be added for the next release.

If so, is there an appropriate place to create a pull request to add this in for these wood-based flows?

Unfortunately not, though thank you for the offer -as the Federal LCA Commons data do not use git directly. But raising this issue here is the next best step.

I'm not sure if this is the right place to ask this question. If there's a better spot, please redirect me to the appropriate resource.

Yes - this is a fine place to raise these issues related to USLCI. I'll also point you to the companion documentation site which has a lot of resources for USLCI and all repositories on the Federal LCA Commons

@bl-young Thanks for getting back to me. Much appreciated 🙏

I'm a little confused though so I just want to confirm or complicate my understanding. From your comment above, it sounds like the allocation factor for Medium density fiberboard (MDF), at MDF mill (labelling this as A, for convenience) already accounts for the conversion to mass for the processes that use it like Wood fuel, MDF, generated on-site, combusted in industrial boiler (labelling this as B, for convenience)? How should we interpret the allocation of upstream emissions for B from A in this situation then?

To be more precise, A has a reference flow of 1 m3 and particulate matter emissions of 0.363 kg. So if B uses 0.44 kg of A in the flow of Wood fuel, at MDF mill, the allocation factor for A to B is 0.0615. To get the upstream particulate matter emissions for B, I would have expected to calculate:

upstream_particulate_matter_B = (0.363 kg particulate matter) / (1 m3 ref flow) * (0.44 kg ref flow) / (density ref flow) * (0.0615)

Is this correct? From your statement above, it sounds like we do not need to divide by the density and that the allocation factor is somehow in the appropriate units so that we shouldn't have to worry about the units of the reference flow. If so, how should we be calculating the upstream particulate matter emissions for B in this situation?

I'm being pedantic about this example to make sure I'm understanding how this is supposed to work. My next question will be clarifying how the JSON-LD format encodes this information, but that will hopefully be straightforward once I clarify the mechanics.

Process A is a multi-output process. The specific outputs that Process B uses from Process A are the "Wood Fuel, at MDF mill" and "Wood Fuel, sanderdust, at MDF mill". Both of those flows are in units of mass in both cases, so no conversion is required.
image

The correct attribution, I believe, would be:

upstream_particulate_matter_B = [(0.363 kg PM) * 0.0615 (allocation factor for Wood fuel) * 0.44kg] +  [(0.363 kg PM) * 0.0797 (allocation factor for Wood fuel sanderdust) * 0.56kg]

Based on these allocation factors:
image

@bl-young Really appreciate your diligence here. Thanks for identifying the outflows that were in units of mass; I did not notice that and it's an important part of the puzzle. I'm digging into this further and compared both of our interpretations to results from OpenLCA, which presumably would be the definitive source:

Screenshot 2024-11-07 at 6 26 23 AM

In order to reproduce the 0.00018 kg particulate matter result for just the "Wood fuel, at MDF mill" flow (AB for convenience below), here's what I'm seeing we have to do:

upstream_particulate_matter_B = (0.44 kg AB) * (0.363 kg particulate_matter / A ref flow) / (54 kg AB / A ref flow) * (0.0615 allocation factor)
                              = 0.44 * 0.363 / 54 * 0.0615 kg particulate_matter
                              = 0.0001819033 kg particulate_matter

There are two key differences that I didn't fully understand:

  1. I had no idea the mass outflows were logged like this in the JSON-LD format. Thanks for the pointer there. It seems like there is an additional case that I need to deal with when there are allocation factors involved and I'll need to investigate that more carefully.
  2. The 0.44 kg IS NOT in units of kg A but instead in units of kg AB. That's not how I was interpretting things before but it does help me understand what the different numbers are intended to represent.

If I'm understanding this correctly, this calculation is saying that process B requires 0.44 kg of material AB from process A. Process A produces 54 kg of AB, 6.15% of which is used in process B. Is that the correct interpretation?

  1. I had no idea the mass outflows were logged like this in the JSON-LD format..

Sorry I'm not sure what you mean by this? But yes, you should be able to find the allocation data within the json-ld for the relevant processes.

If I'm understanding this correctly, this calculation is saying that process B requires 0.44 kg of material AB from process A. Process A produces 54 kg of AB, 6.15% of which is used in process B. Is that the correct interpretation?

Your math is correct there in that it matches openLCA, but I don't think that interpretation is correct. Can you confirm, is there a default allocation method selected for that process? And/or what did you select when you ran results for allocation?

@pweilerERG or @bnjmnmorelli - can you review this tracking of results related to multi-product output flows to make sure we have this explained correctly?

@bl-young @pweilerERG @bnjmnmorelli I didn't make any special selections in terms of getting the openLCA result. I'll be curious to better understand how I should be interpretting these results. Thank you all for your help.

@deanmalmgren It seems like you have two main goals. Understand the allocation going on between your two processes and try to deal with the conversion between volume and mass programmatically. I am not sure I will answer the second of these two questions without more information but I will try.

I am going to start with the 'Medium density fiberboard (MDF), at MDF mill' process. I may duplicate a little of what has been covered above, but hopefully this helps. As you see below it is allocated using 'Physical' allocation. You can see that the highlighted MDF flow is in m3. If you do the math the physical allocation factors are correct and they manually apply the stated density, 741 kg/m3, to the reference flow, 1 m3. If you open the process and click on the 'Calculate factors' button you will get an error that the process is unable to calculate these factors automatically.

image

In order to facilitate automatic calculation of the allocation factors you need to add the density conversion as a flow property as you mention. I have done so in the picture below and confirmed that it recreates the allocation factors in the original process.

image

I think it is probably a good idea to add in these conversions such that we can calculate allocation factors automatically and so that the conversion is more transparently documented. However I consider this more of a housekeeping item than an absolute necessity. The manually calculated allocation factors should work just fine. In openLCA, it would not be a problem even if your downstream process (in this case - Wood fuel, MDF, generated on-site, combusted in industrial boiler) relied on medium density fiberboard as in input in volume units (which it doesn't). I have confirmed this in test processes. If this is somehow causing an issue in your application it might be helpful for us to understand this better so that we can consider your use case in how we are managing the USLCI.

As Ben Young stated, your calculation of how the allocation functions is correct, but I would phrase your interpretation a little differently.

If I'm understanding this correctly, this calculation is saying that process B requires 0.44 kg of material AB from process A. Process A produces 54 kg of AB, 6.15% of which is used in process B. Is that the correct interpretation?

How I would explain the allocation is as follows. I stick to your words as closely as possible:

This calculation is saying that process B requires 0.44 kg of material AB from process A. Process A produces 54 kg of AB, which is 6.15% of the total outputs in process B (on a mass basis). When you divide 0.44 by 54 you are determining the share of that 6.15% which is actually passed on to process B.

Hopefully this helps! If not, maybe a quick call will be an easier way to resolve your issue. You can reach me at ben.morelli@erg.com.

@bnjmnmorelli @bl-young thank you both for your help. Much appreciated. I believe I'm now clear on both the math and the interpretation of how these calculations are run. I had definitely missed the flow of AB for processes that had coproducts and this helps me resolve the units mystery on wood products. Gosh I'm glad I said something because I would have misinterpreted the data by quite a bit in some situations.

I'll close this out.