0 votes
871 views
Hello,

I am trying to calculate the LCIA results of a product system but OpenLCA keeps on crashing without producing any error messages or suspicious log file entries.

I have set the maximum memory usage to 30GB which should be plenty. I also checked the statistics according to which I have 55 processes and 130 links between them. I am using system processes (instead of unit processes) where possible e.g. for electricity and diesel production. The graph is connected with 125 links to default providers, 13 links to exactly one provider and 117 links with multiple possible providers.

All these stats don't seem prohibitive to me do they? I have tried several combinations of "only link default providers", "prefer default providers" and preferred process types (unit and system) when creating the product system. None of this prevents it from crashing...

Has anyone experienced similar issues? I am wondering why I don't see at least some kind of warning or error...

Thanks for your advice!
in openLCA by (280 points)

1 Answer

0 votes
by (5.1k points)

Hello Lars,

I need more details to understand your issue:

  1. Are you using openLCA 2.0.4?
  2. Are you using Lazy or Eager calculation?
  3. Can you check if none of your process inputs/outputs or quantitative reference is set to zero? If it is the case the calculation matrix might be singular causing openLCA to crash.
Regards,
François
by (280 points)
Thanks for the quick reply and the hint!

1. I am using 2.0.3. - should I update?
2. I was using lazy calculation and then I tried eager. When using eager it says indeed that the matrix is singular!
3. Some process inputs (not the quantitative references) where actually zero which I changed now - to no effect. What if I want to build a market process myself and use it for different scenarios where some inputs from certain providers are zero. Is this generally not possible?

Any other reasons why the matrix could be singular?
by (280 points)
Ok. I missed a process which still contained zero values. I can calculate the product system now! However, before changing my entire model architecture to avoid zero values, I am wondering what the go-to solution is in my case. I want to model animal feed rations and use the same processes for different farms. Some feed 20% of crop A, 50% of crop B and 30% of crop C. Others feed 0% A, 50% B and 50 % C, you get the idea. I thought I'd parameterize the model so every time I calculate a new farm I only have to change some input parameters rather than adding and deleting processes over and over again. Is there no way of doing this and dealing with zero values in openLCA? As a workaround I could use very small values instead of zero but it feels somewhat clumsy...
by (5.1k points)
I am happy to read that you found the issue!
Setting small values is the way to go! In the process of making the calculation, a big matrix with all the input and output values is inverted. If some inputs are zero, then some rows will be zero and the matrix will have dependent rows. In that case, the matrix is singular and cannot inverted. Usually, when you want to deactivate a process you can do it with a parameter set to 1E-7 for example.
Regards,
François
by (14.0k points)
The problem is probably that product outputs or waste inputs become zero because of parameters? That will result in a singular matrix and currently openLCA crashes then with some matrices currently (we will fix this). In general, you should never parameterize product outputs or waste inputs but product inputs and waste outputs. Also, use allocation factors for multi-functional processes (they can also have formulas). Product inputs and waste outputs can be zero (no small values needed here!), and this is the place where parameters should be used to make your model flexible. If you want, you could also share your model so that we can check.
by (280 points)
Thank you both for your help and clarification! It is helpful to differentiate between inputs and outputs here and good to know that zero values for product inputs are not the problem .
...