UNIFAC module
Classic liquid-vapor UNIFAC model implementation module.
Description
Classic liquid-vapor UNIFAC model implementation module. The
implementation is based on the Thermopack library (SINTEF) implementation.
Examples
! Instantiate an UNIFAC model with ethanol-water mix and calculate gammas
use yaeos , only : pr , Groups , setup_unifac , UNIFAC
type ( UNIFAC ) :: model
type ( Groups ) :: molecules ( 2 )
real ( pr ) :: ln_gammas ( 2 )
! Ethanol definition [CH3, CH2, OH]
molecules ( 1 )% groups_ids = [ 1 , 2 , 14 ] ! Subgroups ids
molecules ( 1 )% number_of_groups = [ 1 , 1 , 1 ] ! Subgroups occurrences
! Water definition [H2O]
molecules ( 2 )% groups_ids = [ 16 ]
molecules ( 2 )% number_of_groups = [ 1 ]
! Model setup
model = setup_unifac ( molecules )
! Calculate ln_gammas
call model % ln_activity_coefficient ([ 0.5_pr , 0.5_pr ], 29 8.0_pr , ln_gammas )
print * , ln_gammas ! result: 0.18534142000449058 0.40331395945417559
References
Dortmund Data Bank Software & Separation Technology
Fredenslund, A., Jones, R. L., & Prausnitz, J. M. (1975).
Group‐contribution estimation of activity coefficients in nonideal liquid
mixtures. AIChE Journal, 21(6), 1086–1099.
https://doi.org/10.1002/aic.690210607
Skjold-Jorgensen, S., Kolbe, B., Gmehling, J., & Rasmussen, P. (1979).
Vapor-Liquid Equilibria by UNIFAC Group Contribution. Revision and
Extension. Industrial & Engineering Chemistry Process Design and
Development, 18(4), 714–722.
https://doi.org/10.1021/i260072a024
Gmehling, J., Rasmussen, P., & Fredenslund, A. (1982). Vapor-liquid
equilibriums by UNIFAC group contribution. Revision and extension. 2.
Industrial & Engineering Chemistry Process Design and Development, 21(1),
118–127.
https://doi.org/10.1021/i200016a021
Macedo, E. A., Weidlich, U., Gmehling, J., & Rasmussen, P. (1983).
Vapor-liquid equilibriums by UNIFAC group contribution. Revision and
extension. 3. Industrial & Engineering Chemistry Process Design and
Development, 22(4), 676–678.
https://doi.org/10.1021/i200023a023
Tiegs, D., Rasmussen, P., Gmehling, J., & Fredenslund, A. (1987).
Vapor-liquid equilibria by UNIFAC group contribution. 4. Revision and
extension. Industrial & Engineering Chemistry Research, 26(1), 159–161.
https://doi.org/10.1021/ie00061a030
Hansen, H. K., Rasmussen, P., Fredenslund, A., Schiller, M., &
Gmehling, J. (1991). Vapor-liquid equilibria by UNIFAC group
contribution. 5. Revision and extension. Industrial & Engineering
Chemistry Research, 30 (10), 2352–2355.
https://doi.org/10.1021/ie00058a017
Wittig, R., Lohmann, J., & Gmehling, J. (2003). Vapor−Liquid Equilibria
by UNIFAC Group Contribution. 6. Revision and Extension. Industrial &
Engineering Chemistry Research, 42(1), 183–188.
https://doi.org/10.1021/ie020506l
SINTEF - Thermopack
module~~yaeos__models_ge_group_contribution_unifac~~UsesGraph
module~yaeos__models_ge_group_contribution_unifac
yaeos__models_ge_group_contribution_unifac
module~yaeos__constants
yaeos__constants
module~yaeos__models_ge_group_contribution_unifac->module~yaeos__constants
module~yaeos__models_ge
yaeos__models_ge
module~yaeos__models_ge_group_contribution_unifac->module~yaeos__models_ge
module~yaeos__models_ge_gc_td
yaeos__models_ge_gc_td
module~yaeos__models_ge_group_contribution_unifac->module~yaeos__models_ge_gc_td
module~yaeos__models_ge_group_contribution_groups
yaeos__models_ge_group_contribution_groups
module~yaeos__models_ge_group_contribution_unifac->module~yaeos__models_ge_group_contribution_groups
module~yaeos__models_ge_group_contribution_model_parameters
yaeos__models_ge_group_contribution_model_parameters
module~yaeos__models_ge_group_contribution_unifac->module~yaeos__models_ge_group_contribution_model_parameters
module~yaeos__models_ge_group_contribution_unifac_parameters
yaeos__models_ge_group_contribution_unifac_parameters
module~yaeos__models_ge_group_contribution_unifac->module~yaeos__models_ge_group_contribution_unifac_parameters
iso_fortran_env
iso_fortran_env
module~yaeos__constants->iso_fortran_env
module~yaeos__models_ge->module~yaeos__constants
module~yaeos__models_base
yaeos__models_base
module~yaeos__models_ge->module~yaeos__models_base
module~yaeos__models_ge_gc_td->module~yaeos__constants
module~yaeos__models_ge_gc_td->module~yaeos__models_ge_group_contribution_groups
module~yaeos__models_ge_group_contribution_groups->module~yaeos__constants
module~yaeos__models_ge_group_contribution_model_parameters->module~yaeos__constants
module~yaeos__models_ge_group_contribution_unifac_parameters->module~yaeos__constants
module~yaeos__models_ge_group_contribution_unifac_parameters->module~yaeos__models_ge_group_contribution_model_parameters
module~yaeos__substance
yaeos__substance
module~yaeos__models_base->module~yaeos__substance
module~yaeos__substance->module~yaeos__constants
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
module~~yaeos__models_ge_group_contribution_unifac~~UsedByGraph
module~yaeos__models_ge_group_contribution_unifac
yaeos__models_ge_group_contribution_unifac
module~yaeos__models_ge_group_contribution_dortmund
yaeos__models_ge_group_contribution_dortmund
module~yaeos__models_ge_group_contribution_dortmund->module~yaeos__models_ge_group_contribution_unifac
module~yaeos__models_ge_group_contribution_psrk
yaeos__models_ge_group_contribution_psrk
module~yaeos__models_ge_group_contribution_psrk->module~yaeos__models_ge_group_contribution_unifac
module~yaeos__models_ge_implementations
yaeos__models_ge_implementations
module~yaeos__models_ge_implementations->module~yaeos__models_ge_group_contribution_unifac
module~yaeos__models_ge_implementations->module~yaeos__models_ge_group_contribution_dortmund
module~yaeos__models_ge_implementations->module~yaeos__models_ge_group_contribution_psrk
module~yaeos__models
yaeos__models
module~yaeos__models->module~yaeos__models_ge_implementations
proc~psrk
PSRK
proc~psrk->module~yaeos__models_ge_implementations
module~yaeos
yaeos
module~yaeos->module~yaeos__models
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Derived Types
Classic liquid-vapor UNIFAC model derived type
Read more…
Components
Type
Visibility Attributes
Name
Initial
type(Substances ),
public
::
components
Substances contained in the module
real(kind=pr),
public
::
d
=
1.0_pr
Model constant d, exponent of the group volume in Flory-Huggins
real(kind=pr),
public,
allocatable
::
group_area (:)
Group areas
real(kind=pr),
public,
allocatable
::
group_volume (:)
Group volumes
type(Groups ),
public
::
groups_stew
All the groups present in the system
type(Groups ),
public,
allocatable
::
molecules (:)
Substances present in the system
integer,
public
::
ngroups
Total number of individual groups in the mixture
integer,
public
::
nmolecules
Total number of molecules in the mixture
class(PsiFunction ),
public,
allocatable
::
psi_function
Temperature dependance function of the model
real(kind=pr),
public,
allocatable
::
qk (:)
Area of each group k
real(kind=pr),
public,
allocatable
::
thetas_ij (:,:)
Area fractions of the groups j on molecules i
real(kind=pr),
public,
allocatable
::
vij (:,:)
Ocurrences of each group j on each molecule i
real(kind=pr),
public
::
z
=
10.0_pr
Model constant z
Type-Bound Procedures
Functions
Instantiate a UNIFAC model
Read more…
Arguments
Type
Intent Optional Attributes
Name
type(Groups ),
intent(in)
::
molecules (:)
Molecules (Group type) objects
type(GeGCModelParameters ),
intent(in),
optional
::
parameters
UNIFAC parameters
Return Value
type(UNIFAC )
Calculate the area fraciton of each froup on each molecule.
Read more…
Arguments
Type
Intent Optional Attributes
Name
integer,
intent(in)
::
nm
Number of molecules
integer,
intent(in)
::
ng
Number of groups
type(GeGCModelParameters ),
intent(in)
::
parameters
UNIFAC parameters
type(Groups ),
intent(in)
::
stew
All the groups present in the system
type(Groups ),
intent(in)
::
molecules (:)
Molecules
Return Value
real(kind=pr), (nm,ng)
Group j area fraction on molecule i
Subroutines
Calculate the UNIFAC combinatorial term of Gibbs excess energy
Read more…
Arguments
Type
Intent Optional Attributes
Name
class(UNIFAC )
::
self
real(kind=pr),
intent(in)
::
n (self%nmolecules)
Moles vector [mol]
real(kind=pr),
intent(in)
::
T
Temperature [K]
real(kind=pr),
intent(out),
optional
::
Ge
Combinatorial Gibbs excess energy
real(kind=pr),
intent(out),
optional
::
dGe_dn (self%nmolecules)
real(kind=pr),
intent(out),
optional
::
dGe_dn2 (self%nmolecules,self%nmolecules)
Evaluate the UNIFAC residual term
Read more…
Arguments
Type
Intent Optional Attributes
Name
class(UNIFAC )
::
self
real(kind=pr),
intent(in)
::
n (self%nmolecules)
Moles vector
real(kind=pr),
intent(in)
::
T
Temperature [K]
real(kind=pr),
intent(out),
optional
::
Ge
Residual Gibbs excess energy
real(kind=pr),
intent(out),
optional
::
dGe_dn (self%nmolecules)
real(kind=pr),
intent(out),
optional
::
dGe_dn2 (self%nmolecules,self%nmolecules)
real(kind=pr),
intent(out),
optional
::
dGe_dT
real(kind=pr),
intent(out),
optional
::
dGe_dT2
real(kind=pr),
intent(out),
optional
::
dGe_dTn (self%nmolecules)
Calculate the Gibbs excess energy of the UNIFAC model
Read more…
Arguments
Type
Intent Optional Attributes
Name
class(UNIFAC ),
intent(in)
::
self
UNIFAC model
real(kind=pr),
intent(in)
::
n (:)
Moles vector [mol]
real(kind=pr),
intent(in)
::
T
Temperature [K]
real(kind=pr),
intent(out),
optional
::
Ge
Excess Gibbs energy
real(kind=pr),
intent(out),
optional
::
GeT
real(kind=pr),
intent(out),
optional
::
GeT2
real(kind=pr),
intent(out),
optional
::
Gen (size(n))
real(kind=pr),
intent(out),
optional
::
GeTn (size(n))
real(kind=pr),
intent(out),
optional
::
Gen2 (size(n),size(n))