All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Added new functions
isenthalpic_compressibility,thermal_expansivityandgrueneisen_parametertoState. #154
- Fixed a wrong reference state in the implementation of the Peng-Robinson equation of state. #151
- Fixed a bug that caused the bubble and dew point solvers to ignore the initial values for the opposing phase given by the user if no initial value for temperature/pressure was also given. #138
- Added
PhaseDiagram::par_purethat uses rayon to calculate phase diagrams in parallel. #57 - Added
StateVec::molesgetter. #113 - Added public constructors
PhaseDiagram::newandStateVec::newthat allow the creation of the respective structs from a list ofPhaseEquilibriums orStates in Rust and Python. #113 - Added new variant
EosError::Errorwhich allows dispatching generic errors that are not covered by the existing variants. #98 - Added
binary_recordsgetter for parameter classes in Python. #104 - Added
BinaryRecord::from_jsonandBinarySegmentRecord::from_jsonthat read a list of records from a file. #104
- Added
SyncandSendas supertraits toEquationOfState. #57 - Added
Dual2_64dual number toHelmholtzEnergytrait to facilitate efficient non-mixed second order derivatives. #94 - Renamed
PartialDerivative::SecondtoPartialDerivative::SecondMixed. #94 - Added
PartialDerivative::Secondto enable non-mixed second order partial derivatives. #94 - Changed
dp_dv_andds_dt_to useDual2_64instead ofHyperDual64. #94 - Added
get_or_insert_with_d2_64toCache. #94 - The critical point algorithm now uses vector dual numbers to reduce the number of model evaluations and computation times. #96
- Renamed
State::molar_volumetoState::partial_molar_volumeandState::ln_phi_puretoState::ln_phi_pure_liquid. #107 - Added a const generic parameter to
PhaseDiagramthat accounts for the number of phases analogously toPhaseEquilibrium. #113 - Removed generics for units in all structs and traits in favor of static SI units. #115
- Automatically generate all required data types to calculate higher order derivatives for equations of state implemented in Python. #114
- Updated
pyo3andnumpydependencies to 0.18. #119 - Updated
quantitydependency to 0.6. #119 - Updated
num-dualdependency to 0.6. #119
Parameter::from_segmentsonly calculates binary interaction parameters for unlike molecules. #104
- Added
State::spinodalthat calculates both spinodal points for a given temperature and composition using the same objective function that is also used in the critical point calculation. #23 - Added
PhaseDiagram::bubble_point_line,PhaseDiagram::dew_point_line, andPhaseDiagram::spinodalto calculate phase envelopes for mixtures with fixed compositions. #23
- Made binary parameters in
from_recordsPython routine anOption. #35 - Added panic with message when parsing missing Identifiers variants. #35
- Generalized the initialization routines for pure component VLEs at given temperature to multicomponent systems. #23
- Increased the default number of maximum iterations for binary critical point calculations from 50 to 200. #48
- Removed the (internal)
SpinodalPointstruct that was used within density iterations in favor of a simpler interface. #23
- Avoid panicking when calculating
ResidualNptproperties of states with negative pressures. #42
- Added
pure_recordsgetter in theimpl_parametermacro. #54 - Implemented
DerefandIntoIteratorforStateVecfor additional vector functionalities of theStateVec. #55 - Added
StateVec.__len__andStateVec.__getitem__to allow indexing and iterating overStateVecs in Python. #55 - Added
SegmentCounttrait that allows the construction of parameter sets from arbitrary chemical records. #56 - Added
ParameterHeterotrait to generically provide utility functions for parameter sets of heterosegmented Helmholtz energy models. #56
- Changed datatype for binary parameters in interfaces of the
from_recordsandnew_binarymethods for parameters to take either numpy arrays off64or a list ofBinaryRecordas input. #54 - Modified
PhaseDiagram.to_dictfunction in Python to account for pure components and mixtures. #55 - Changed
StateVecto a tuple struct. #55 - Made
casfield ofIdentifieroptional. #56 - Added type parameter to
FromSegmentsand made itsfrom_segmentsfunction fallible for more control over model limitations. #56 - Reverted
ChemicalRecordback to a struct that only contains the structural information (and not segment and bond counts). #56 - Made
IdentifierOptiondirectly usable in Python usingPyO3's new#[pyclass]for fieldless enums feature. #58
- Added conversions between
ParameterErrorandEosErrorto improve the error messages in some cases. #40 - Added new struct
StateVec, that gives easy access to properties of lists of states, e.g. in phase diagrams. #48 - Added
ln_symmetric_activity_coefficientandln_phi_pureto the list of state properties that can be calculated. #50
- Removed
StatefromEntropyScalingtrait and adjusted associated methods to use temperature, volume and moles instead of state. #36 - Replaced the outer loop iterations for the critical point of binary systems with dedicated algorithms. #34
- Renamed
VLEOptionstoSolverOptions. #38 - Renamed methods of
StateBuilderand the parameters in theStateconstructor in python tomolar_enthalpy,molar_entropy, andmolar_internal_energy. #35 - Removed
PyContributionsandPyVerbosityin favor of a simpler implementation usingPyO3's new#[pyclass]for fieldless enums feature. #41 - Renamed
Contributions::ResidualtoContributions::ResidualNvtandContributions::ResidualPtoContributions::ResidualNpt. #43 - Renamed macro
impl_vle_state!toimpl_phase_equilibrium!. #48 - Removed
_tand_pfunctions in favor of simpler interfaces. The kind of specification (temperature or pressure) is determined from the unit of the argument. #48PhaseEquilibrium::pure_t,PhaseEquilibrium::pure_p->PhaseEquilibrium::purePhaseEquilibrium::vle_pure_comps_t,PhaseEquilibrium::vle_pure_comps_p->PhaseEquilibrium::vle_pure_comps
ThePhaseEquilibriareturned by this function now have the same number of components as the (mixture) eos, that it is called with.PhaseEquilibrium::bubble_point_tx,PhaseEquilibrium::bubble_point_px->PhaseEquilibrium::bubble_pointPhaseEquilibrium::dew_point_tx,PhaseEquilibrium::dew_point_px->PhaseEquilibrium::dew_pointPhaseEquilibrium::heteroazeotrope_t,PhaseEquilibrium::heteroazeotrope_p->PhaseEquilibrium::heteroazeotropeState::critical_point_binary_t,State::critical_point_binary_p->State::crititcal_point_binary
- Combined
PhaseDiagramPureandPhaseDiagramBinaryinto a single structPhaseDiagramand renamed its constructors. Properties of the phase diagram are available from thevaporandliquidgetters, that returnStateVecs. #48PhaseDiagramPure::new->PhaseDiagram::purePhaseDiagramBinary::new_txy,PhaseDiagramBinary::new_pxy->PhaseDiagram::binary_vlePhaseDiagramBinary::new_txy_lle,PhaseDiagramBinary::new_pxy_lle->PhaseDiagram::llePhaseDiagramHetero::new_txy,PhaseDiagramHetero::new_pxy->PhaseDiagram::binary_vlle
which still returns an instance ofPhaseDiagramHetero
- Changed the internal implementation of the Peng-Robinson equation of state to use contributions like the more complex equations of state and removed the suggestion to overwrite the
evaluate_residualfunction ofEquationOfState. #51 - Moved the creation of the python module to the
build_wheelauxilliary crate, so that only the relevant structs and macros are available for the dependents. #47
- Removed the
utilsmodule containingDataSetandEstimatorin favor of a separate crate. #47
- Updated
pyo3andnumpydependencies to 0.16. - Updated
num-dualdependency to 0.5. - Updated
quantitydependency to 0.5.
- Fixed bug in
predictofEstimator. #30
- Add
pyproject.toml. #29
- Fix state constructor for
T,p,V,x_ispecification. #26
- Added method
predicttoEstimator. #27
- Changed method for vapor pressure in
DataSettovapor_pressure(waspressureof VLE liquid phase). #27
- Added the following properties to
State: #21dp_drhopartial derivative of pressure w.r.t. densityd2p_drho2second partial derivative of pressure w.r.t. densityisothermal_compressibilitythe isothermal compressibility
- Read a list of segment records directly from a JSON file. #22
- Changed
ChemicalRecordto an enum that can hold either the full structural information of a molecule or only segment and bond counts and added anIdentifier. #19 - Removed the
chemical_recordfield fromPureRecordand mademodel_recordnon-optional. #19
- Added
from_multiple_jsonfunction toParametertrait that is able to read parameters from separate JSON files. #15
- Updated
pyo3andnumpydependencies to 0.15. - Updated
quantitydependency to 0.4. - Updated
num-dualdependency to 0.4. - Removed
ndarray-linalgandndarray-statsdependencies. - Removed obsolete features for the selection of the BLAS/LAPACK library.
- Initial release