Le package FeOs
fournit des implémentations de rouille de différentes équations d'état et de modèles fonctionnels d'énergie Helmholtz et de liaisons Python correspondantes.
De FeOS.EOS Import EquationOfState, Statefrom FeOS.pcsaft Import PcSaftParameters, PCSAfTRecord # PC-SAFT Paramètres pour méthanol (Gross et Sadowski 2002) Record = PCSAftreCord (1.5255, 3,23, 188.9, Kappa_ab = 0,035176, EPSILON_K_AB = 2899 nb = 1) # construire une équation de stateParameters = pcsaftParameters.from_model_records ([record]) eos = equationofState.pcsaft (paramètres) # définir des conditions thermodynamiquesCritical_point = state.critical_point (eos) # compute propertiesp = critique_point.pressure () t = critique_point .TemperaturePrint (point f'critical pour méthanol: t = {t}, p = {p}. ')
Critical point for methanol: T=531.5 K, p=10.7 MPa.
Les modèles suivants sont actuellement publiés dans le cadre du cadre FeOs
nom | description | EOS | dft |
---|---|---|---|
pcsaft | chaîne perturbée (polaire) statistique associant la théorie du fluide | ✓ | ✓ |
epcsaft | Electrolyte PC-Aft | ✓ | |
gc-pcsaft | Contribution de groupe (hétérosegmentée) PC-Afl | ✓ | ✓ |
pets | mélanges de Lennard-Jones tronqués et décalés perturbés | ✓ | ✓ |
uvtheory | Équation d'état pour les fluides et mélanges MIE | ✓ | |
saftvrqmie | Équation d'état pour les liquides et mélanges quantiques | ✓ | ✓ |
saftvrmie | Théorie statistique des fluides associées pour les interactions de plage variable de la forme MIE | ✓ |
La liste est en cours d'élargissement en continu. Actuellement en cours de développement, il y a des implémentations de fonctionnalités énergétiques de Helmholtz pour la théorie des UV et pour SAFT-VR MIE.
Les autres référentiels publics qui mettent en œuvre des modèles dans le cadre FeOs
, mais ne font actuellement pas partie du package feos
Python, sont
nom | description | EOS | dft |
---|---|---|---|
feos-fused-chains | Chaîne de sphère fusionnée hétérosegée fonctionnelle | ✓ |
En plus du code source des packages Rust et Python, ce référentiel contient des fichiers JSON avec des paramètres publiés précédemment pour les différents modèles, y compris les méthodes de contribution de groupe. Les fichiers de paramètres peuvent être lus directement à partir de Rust ou Python.
La caisse utilise des nombres doubles généralisés (hyper-) pour calculer génériquement les dérivés partiels exacts à partir d'équations d'énergie de Helmholtz d'état. Les dérivés sont utilisés pour calculer
Propriétés d'équilibre (pression, capacité thermique, fugacité et bien d' autres),
Propriétés de transport (viscosité, conductivité thermique, coefficients de diffusion) en utilisant l'approche de mise à l'échelle d'entropie
points critiques et équilibres de phase pour les composants et mélanges purs.
En plus de cela, les services publics sont fournis pour aider à la gestion des paramètres pour les équations moléculaires d'état et les méthodes de contribution du groupe (homosegmentées) et pour la génération de diagrammes de phase pour les composants purs et les mélanges binaires.
FeOs
utilise des méthodes numériques efficaces pour calculer les profils de densité dans les systèmes inhomogènes. Les faits saillants comprennent:
Calcul rapide des intégrales de convolution dans les systèmes de coordonnées cartésiennes (1D, 2D et 3D), polaires, cylindriques et sphériques à l'aide de FFT et d'algorithmes connexes.
Calcul automatique des dérivés partiels des densités d'énergie de Helmholtz (y compris les dérivés de température) en utilisant une différenciation automatique avec des nombres double (hyper-) généralisés.
Modélisation des molécules hétérosegmentées, y compris les molécules ramifiées.
Fonctionnalités pour calculer les tensions de surface, les isothermes d'adsorption, les fonctions de corrélation des paires et les énergies libres de solvatation.
Sans fonctionnalités supplémentaires activées, la commande
cargo test --release
ne construira et testera que les fonctionnalités de base de la caisse. Pour exécuter des tests d'unité et d'intégration pour des modèles spécifiques, exécutez
cargo test --release --features pcsaft
pour tester, par exemple, l'implémentation de PC-SAFT ou
cargo test --release --features all_models
Pour exécuter des tests sur tous les modèles implémentés.
FeOs
utilise le cadre PyO3
pour fournir des liaisons Python. Le package Python peut être installé via pip
et s'exécute sur Windows, Linux et MacOS:
pip install feos
S'il n'y a pas de package compilé pour votre système disponible auprès de PYPI et que un compilateur de rouille est installé, vous pouvez plutôt créer le package Python à partir de Source en utilisant
pip install git+https://github.com/feos-org/feos
Cette commande construit le package sans optimisation en temps de liaison (LTO) qui peut être utilisé pour augmenter les performances davantage. Voir le bâtiment de la section Source pour plus d'informations sur la construction de la roue, y compris le LTO.
Pour compiler le code, vous avez besoin du compilateur de rouille et maturin
(> = 0,13, <0,14) installé. Pour installer le package directement dans l'environnement actif (VirtualEnv ou Conda), utilisez
maturin develop --release
qui utilise la fonction python
et all_models
comme spécifié dans le fichier pyproject.toml
.
Alternativement, vous pouvez spécifier les modèles ou les fonctionnalités que vous souhaitez inclure dans le package Python explicitement, par exemple
maturin develop --release --features "python pcsaft dft"
Pour l'équation de l'état PC-AFFE et Helmholtz Energy Functional.
Pour construire des roues, y compris l'optimisation du temps de liaison (LTO), utilisez
maturin build --profile="release-lto"
qui utilisera les fonctionnalités python
et all_models
spécifiées dans le fichier pyproject.toml
. Utilisez la commande suivante pour construire une roue avec des fonctionnalités spécifiques:
maturin build --profile="release-lto" --features "python ..."
Le LTO augmente les temps de compilation de manière mesurable, mais la roue résultante est plus performante et a une taille plus petite. Pour le développement cependant, nous vous recommandons d'utiliser le drapeau --release
.
Pour une documentation de l'API Python, des exemples Python et un guide du cadre de rouille sous-jacent, consultez la documentation.
Découvrez le répertoire des bancs pour plus d'informations sur les références de rouille fournies et comment les exécuter.
Ce logiciel est actuellement maintenu par des membres des groupes de
Prof. Joachim Gross, Institute of Thermodynamics and Thermal Process Engineering (ITT), Université de Stuttgart
Le professeur André Bardow, l'ingénierie des systèmes d'énergie et de processus (EPSE), ETH Zurich
FeOs
sont nés de la nécessité de maintenir une base de code commune utilisée dans le travail scientifique effectué dans nos groupes. Nous partageons le code publiquement en tant que plate-forme pour publier nos propres recherches, mais encourageons également d'autres chercheurs et développeurs à contribuer leurs propres modèles ou implémentations d'équations d'État existantes.
Si vous souhaitez contribuer aux FeOs
, il existe plusieurs façons de procéder: améliorer la documentation et aider aux problèmes linguistiques, tester le code sur vos systèmes pour trouver des bogues, l'ajout de nouveaux modèles ou algorithmes, ou fournissant des demandes de fonctionnalités. N'hésitez pas à nous envoyer un message si vous avez des questions ou si vous ouvrez un problème pour discuter des améliorations.
Si vous trouvez FeOs
utiles pour vos propres études scientifiques, envisagez de citer notre publication accompagnant cette bibliothèque.
@article{rehner2023feos, author = {Rehner, Philipp and Bauer, Gernot and Gross, Joachim}, title = {FeOs: An Open-Source Framework for Equations of State and Classical Density Functional Theory}, journal = {Industrial & Engineering Chemistry Research}, volume = {62}, number = {12}, pages = {5347-5357}, year = {2023}, }