Very cool project. If you haven't already, for JAX and PyTorch support take a look at the Python Array API Standard, https://data-apis.org/array-api/latest/, and see https://data-apis.org/array-api-compat/ for how to use it. If you have or can write everything in terms of the subset of NumPy supported in the Array API Standard, you can get support for alternative array libraries almost for free.
That looks like a valuable resource, thank you! I already mostly stuck to a subset supported by NumPy and JAX (because that's the array libraries I'm familiar with). I hope the other are not to far off...
This looks really promising, thank you! I have been using chemicals for things like this but it is not good at multiple conditions so your approach will teally help me. Btw, there is no link to the repo on the docs psge, st least on my phone. I want to star your repo.
I use Aspen-Hysys which is extremely expensive for non-commercial users, and would love to have a Pythonic alternative.
That said, there's a long tail of features needed to make it practical (mole/mass/vol frac conversion, unit conversions, chemical Rxn, Steam tables etc.)
I would say it depends on the application: For energy stuff, ideal gas + water/steam might be sufficient. Rolling a lightweight process simulation framework (e.g. on top of gaspype and pint) easily competes with the costs for an aspen license. For other applications, that requires solving multiple phases of mixtures, the tradeoff shift quite allot.
Out of curiosity, why do you call your main entrypoint "fluid" if you only compute ideal gas properties?
To avoid the discussion where around the critical point it is a gas or not a gas ;) Sure, for ideal gases it’s quite clear; however I’m looking for adding real gas behavior to capture high density supercritical fluids - being able to model high pressure processes. For example for the synthesis of hydrocarbons and chemical compound made from nitrogen and hydrogen.
import gaspype
I commend you for not wasting an opportunity to pick a great name for this package.