El paquete FeOs
proporciona implementaciones de óxido de diferentes ecuaciones de modelos funcionales de energía estatales y Helmholtz y los correspondientes enlaces de pitón.
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)# construir una ecuación de stateParameters = PCSAFTPARAMETERS.FROM_MODEL_RECORDS ([RECORD]) EOS = EcationOfState.pcSaft (parámetros)# Define termodinámico Condiciones Critical_Point = state.critical_point (EOS)# Compute PropertiesP = Critical_Point.PRESSURS () T = CRITAL_POTOIN .temperaturePrint (punto crítico para metanol: t = {t}, p = {p}. ')
Critical point for methanol: T=531.5 K, p=10.7 MPa.
Los siguientes modelos se publican actualmente como parte del marco FeOs
nombre | descripción | eos | dft |
---|---|---|---|
pcsaft | Teoría estadística de fluidos de la cadena perturbada (polar) | ✓ | ✓ |
epcsaft | puta de electrolito | ✓ | |
gc-pcsaft | (heterosegmented) Contribución de grupo PC-SAFT | ✓ | ✓ |
pets | Mezclas perturbadas de Lennard-Jones truncadas y desplazadas | ✓ | ✓ |
uvtheory | Ecuación de estado para fluidos y mezclas de MIE | ✓ | |
saftvrqmie | Ecuación de estado para fluidos y mezclas cuánticas | ✓ | ✓ |
saftvrmie | Teoría de fluidos asociado estadístico para interacciones variables de rango de forma MIE | ✓ |
La lista se está expandiendo continuamente. Actualmente se están desarrollando implementaciones de funcionales de energía Helmholtz para la teoría UV y para SAFT-VR MIE.
Otros repositorios públicos que implementan modelos dentro del marco FeOs
, pero actualmente no forman parte del paquete feos
Python, son
nombre | descripción | eos | dft |
---|---|---|---|
feos-fused-chains | cadena de estafera fusionada heterosegmentada funcional | ✓ |
Además del código fuente para los paquetes de Rust y Python, este repositorio contiene archivos JSON con parámetros publicados previamente para los diferentes modelos, incluidos los métodos de contribución de grupo. Los archivos de parámetros se pueden leer directamente desde Rust o Python.
La caja utiliza números duales (hiper) generalizados para calcular genéricamente las derivadas parciales exactas de las ecuaciones de energía de Helmholtz de estado. Los derivados se utilizan para calcular
propiedades de equilibrio (presión, capacidad de calor, fugacidad y muchos más),
Propiedades de transporte (viscosidad, conductividad térmica, coeficientes de difusión) utilizando el enfoque de escala de entropía
Puntos críticos y equilibrios de fase para componentes y mezclas puros.
Además de eso, se proporcionan servicios públicos para ayudar en el manejo de parámetros para las ecuaciones moleculares de estado y los métodos de contribución de grupo (homosegmentados) y para la generación de diagramas de fase para componentes puros y mezclas binarias.
FeOs
utiliza métodos numéricos eficientes para calcular los perfiles de densidad en sistemas no homogéneos. Los aspectos más destacados incluyen:
Cálculo rápido de integrales de convolución en sistemas de coordenadas cartesianas (1D, 2D y 3D), polares, cilíndricas y esféricas utilizando FFT y algoritmos relacionados.
Cálculo automático de derivados parciales de densidades de energía Helmholtz (incluidas las derivadas de temperatura) utilizando diferenciación automática con números duales (hiper) generalizados.
Modelado de moléculas heteroseadas, incluidas las moléculas ramificadas.
Funcionalidades para calcular las tensiones superficiales, las isotermas de adsorción, las funciones de correlación de pares y las energías libres de solvatación.
Sin características adicionales activadas, el comando
cargo test --release
Solo construirá y probará las funcionalidades centrales de la caja. Para ejecutar pruebas de unidad e integración para modelos específicos, ejecute
cargo test --release --features pcsaft
para probar, por ejemplo, la implementación de PC-SAFT o
cargo test --release --features all_models
para ejecutar pruebas en todos los modelos implementados.
FeOs
utiliza el marco PyO3
para proporcionar enlaces de Python. El paquete Python se puede instalar a través de pip
y se ejecuta en Windows, Linux y MacOS:
pip install feos
Si no hay un paquete compilado para su sistema disponible en Pypi y tiene un compilador de óxido instalado, puede construir el paquete Python desde la fuente utilizando
pip install git+https://github.com/feos-org/feos
Este comando construye el paquete sin optimización del tiempo de enlace (LTO) que puede usarse para aumentar aún más el rendimiento. Consulte el edificio desde la sección fuente para obtener información sobre la construcción de la rueda, incluida la LTO.
Para compilar el código, necesita el compilador de óxido y maturin
(> = 0.13, <0.14) instalado. Para instalar el paquete directamente en el entorno activo (virtualenv o conda), use
maturin develop --release
que utiliza la función python
y all_models
como se especifica en el archivo pyproject.toml
.
Alternativamente, puede especificar los modelos o características que desea incluir en el paquete Python explícitamente, por ejemplo,
maturin develop --release --features "python pcsaft dft"
para la ecuación de saft de PC de energía estatal y Helmholtz funcional.
Para construir ruedas, incluida la optimización del tiempo de enlace (LTO), use
maturin build --profile="release-lto"
que utilizará las características python
y all_models
especificadas en el archivo pyproject.toml
. Use el siguiente comando para construir una rueda con características específicas:
maturin build --profile="release-lto" --features "python ..."
LTO aumenta los tiempos de compilación de manera meditable, pero la rueda resultante es más desempeñada y tiene un tamaño más pequeño. Sin embargo, para el desarrollo, recomendamos usar el indicador --release
.
Para una documentación de la API de Python, los ejemplos de Python y una guía del marco de óxido subyacente, consulte la documentación.
Consulte el directorio de bancos para obtener información sobre los puntos de referencia de óxido proporcionados y cómo ejecutarlos.
Este software es mantenido actualmente por miembros de los grupos de
Prof. Joachim Gross, Instituto de Termodinámica e Ingeniería de Procesos Térmicos (ITT), Universidad de Stuttgart
Prof. André Bardow, Ingeniería de Sistemas de Energía y Procesos (EPSE), ETH Zurich
FeOs
crecieron de la necesidad de mantener una base de código común utilizada dentro del trabajo científico realizado en nuestros grupos. Compartimos el código públicamente como una plataforma para publicar nuestra propia investigación, pero también alentamos a otros investigadores y desarrolladores a contribuir con sus propios modelos o implementaciones de las ecuaciones existentes del estado.
Si desea contribuir a FeOs
, hay varias formas de hacerlo: mejorar la documentación y ayudar con los problemas de idioma, probar el código en sus sistemas para encontrar errores, agregar nuevos modelos o algoritmos o proporcionar solicitudes de funciones. No dude en enviarnos un mensaje si tiene preguntas o abrir un problema para discutir mejoras.
Si encuentra FeOs
para sus propios estudios científicos, considere citar nuestra publicación que acompaña a esta biblioteca.
@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}, }