Das FeOs
-Paket bietet Rostimplementierungen unterschiedlicher Zustandsgleichung und Helmholtz -Energiefunktionsmodelle sowie entsprechende Python -Bindungen.
from feos.eos import EquationOfState, Statefrom feos.pcsaft import PcSaftParameters, PcSaftRecord# PC-SAFT parameters for methanol (Gross and Sadowski 2002)record = PcSaftRecord(1.5255, 3.23, 188.9, kappa_ab=0.035176, epsilon_k_ab=2899.5, na=1, nb = 1)# Erstellen Sie eine Gleichung von StateParametern = pcsaftParameters.from_model_records ([record]) eOS = equationofState.pcsaft (Parameter)# Definieren Sie thermodynamische Bedingungen kritisch. .TemperaturePrint (f'critical Point für Methanol: t = {t}, p = {p}. ')
Critical point for methanol: T=531.5 K, p=10.7 MPa.
Die folgenden Modelle werden derzeit im Rahmen des FeOs
-Frameworks veröffentlicht
Name | Beschreibung | EOS | DFT |
---|---|---|---|
pcsaft | Störkettiger (polar) statistische Assoziationsflüssigkeitstheorie | ✓ | ✓ |
epcsaft | Elektrolyt-PC-Quote | ✓ | |
gc-pcsaft | (heterosegmentierte) Gruppenbeitrag PC-Querität | ✓ | ✓ |
pets | gestörte verkürzte und veränderte Lennard-Jones-Mischungen | ✓ | ✓ |
uvtheory | Zustandsgleichung für Mie -Flüssigkeiten und Gemische | ✓ | |
saftvrqmie | Zustandsgleichung für Quantenflüssigkeiten und Gemische | ✓ | ✓ |
saftvrmie | Statistische Assoziationsfluidtheorie für Wechselwirkungen zwischen Mie -Form für variable Bereiche | ✓ |
Die Liste wird kontinuierlich erweitert. Derzeit werden in der Entwicklung von Helmholtz-Energiefunktionen für die UV-Theorie und für SAFT-VR MIE implementiert.
Andere öffentliche Repositories, die Modelle im FeOs
-Framework implementieren, sind jedoch derzeit nicht Teil des feos
-Python -Pakets, sind
Name | Beschreibung | EOS | DFT |
---|---|---|---|
feos-fused-chains | Heterosegmented Fused-Sphere-Kettenfunktional | ✓ |
Zusätzlich zum Quellcode für die Rust- und Python -Pakete enthält dieses Repository JSON -Dateien mit zuvor veröffentlichten Parametern für die verschiedenen Modelle, einschließlich Gruppenbeitragsmethoden. Die Parameterdateien können direkt aus Rost oder Python gelesen werden.
Die Kiste nutzt verallgemeinerte (hyper-) doppelte Zahlen, um genaue partielle Derivate aus Helmholtz-Energiegleichungen des Staates zu berechnen. Die Derivate werden zur Berechnung verwendet
Gleichgewichtseigenschaften (Druck, Wärmekapazität, Flüchtigkeit und vieles mehr),
Transporteigenschaften (Viskosität, Wärmeleitfähigkeit, Diffusionskoeffizienten) unter Verwendung des Entropieskalierungsansatzes
Kritische Punkte und Phasengleichgewichte für reine Komponenten und Gemische.
Darüber hinaus werden Versorgungsunternehmen bereitgestellt, um die Handhabung von Parametern sowohl für molekulare Zustandsgleichungen als auch für (homosegmentierte) Gruppenbeiträge und für die Erzeugung von Phasendiagrammen für reine Komponenten und binäre Gemische zu unterstützen.
FeOs
verwendet effiziente numerische Methoden, um Dichteprofile in inhomogenen Systemen zu berechnen. Zu den Highlights gehören:
Schnelle Berechnung von Faltungsintegralen in kartesischen (1D, 2D und 3D), Polar-, Zylindrischen und sphärischen Koordinatensystemen unter Verwendung von FFT und verwandten Algorithmen.
Automatische Berechnung von partiellen Derivaten von Helmholtz-Energiedichten (einschließlich Temperaturderivaten) unter Verwendung der automatischen Differenzierung mit verallgemeinerten (hyper-) Doppelzahlen.
Modellierung von heterosegmentierten Molekülen, einschließlich verzweigter Moleküle.
Funktionen zur Berechnung von Oberflächenspannungen, Adsorptionsisothermen, Paarkorrelationsfunktionen und solvatfreien Energien.
Ohne zusätzliche Funktionen aktivieren der Befehl
cargo test --release
Erstellt und testet nur die Kernfunktionalitäten der Kiste. Ausführen von Einheits- und Integrationstests für bestimmte Modelle ausführen
cargo test --release --features pcsaft
zu testen, z. B. die Implementierung von PC-Quellen oder
cargo test --release --features all_models
Tests auf allen implementierten Modellen ausführen.
FeOs
verwendet das PyO3
-Framework, um Python -Bindungen bereitzustellen. Das Python -Paket kann über pip
installiert und unter Windows, Linux und MacOS ausgeführt werden:
pip install feos
Wenn es kein kompiliertes Paket für Ihr System bei PYPI gibt und Sie einen Rost -Compiler installiert haben, können Sie stattdessen das Python -Paket von der Quelle mit der Quelle erstellen
pip install git+https://github.com/feos-org/feos
Dieser Befehl erstellt das Paket ohne Link-Time-Optimierung (LTO), mit dem die Leistung weiter erhöht werden kann. Informationen zum Erstellen des Rades einschließlich LTO finden Sie im Abschnitt "Gebäude aus dem Quellenabschnitt" .
Um den Code zu kompilieren, benötigen Sie den Rost -Compiler und maturin
(> = 0,13, <0,14) installiert. Um das Paket direkt in die aktive Umgebung (virtualenv oder conda) zu installieren, verwenden Sie
maturin develop --release
Dies verwendet die Funktion python
und all_models
, wie in der Datei pyproject.toml
angegeben.
Alternativ können Sie die Modelle oder Funktionen angeben, die Sie in das Python -Paket explizit aufnehmen möchten, z.
maturin develop --release --features "python pcsaft dft"
Für die PC-Saft-Gleichung von Zustand und Helmholtz Energy funktional.
Um Räder zu erstellen, einschließlich Link-Time-Optimierung (LTO), verwenden Sie
maturin build --profile="release-lto"
Dies verwendet die in der Datei pyproject.toml
angegebenen python
und all_models
-Funktionen. Verwenden Sie den folgenden Befehl, um ein Rad mit spezifischen Funktionen zu erstellen:
maturin build --profile="release-lto" --features "python ..."
LTO erhöht die Kompilierungszeiten messbar, aber das resultierende Rad ist leistungsfähiger und hat eine geringere Größe. Für die Entwicklung empfehlen wir jedoch, die --release
zu verwenden.
Eine Dokumentation der Python -API, Python -Beispiele und eine Anleitung zum zugrunde liegenden Rost -Framework finden Sie in der Dokumentation.
Weitere Informationen zu Rost -Benchmarks und der Ausführung finden Sie im Verzeichnis der Bänke.
Diese Software wird derzeit von Mitgliedern der Gruppen von gepflegt
Prof. Joachim Gross, Institut für Thermodynamik und Thermalprozess Engineering (ITT), Universität Stuttgart
Prof. André Bardow, Energy and Process Systems Engineering (EPSE), ETH Zürich
FeOs
wuchs von der Notwendigkeit, eine gemeinsame Codebasis beizubehalten, die innerhalb der wissenschaftlichen Arbeiten in unseren Gruppen verwendet wurde. Wir teilen den Code öffentlich als Plattform zur Veröffentlichung unserer eigenen Forschungsergebnisse, ermutigen aber auch andere Forscher und Entwickler, ihre eigenen Modelle oder Implementierungen bestehender Staatsgleichungen beizutragen.
Wenn Sie zu FeOs
beitragen möchten, gibt es verschiedene Möglichkeiten: Verbesserung der Dokumentation und Unterstützung bei Sprachproblemen, Testen des Codes auf Ihren Systemen, um Fehler zu finden, neue Modelle oder Algorithmen hinzuzufügen oder Feature -Anfragen bereitzustellen. Fühlen Sie sich frei, uns zu senden, wenn Sie Fragen haben oder ein Problem öffnen, um Verbesserungen zu erörtern.
Wenn Sie FeOs
für Ihre eigenen wissenschaftlichen Studien nützlich finden, sollten Sie unsere Veröffentlichung, die diese Bibliothek begleitet, zitiert.
@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}, }