diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index b6722d2..1f3d2fb 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.11.2","generation_timestamp":"2025-01-07T11:14:35","documenter_version":"1.8.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.11.2","generation_timestamp":"2025-01-07T15:42:18","documenter_version":"1.8.0"}} \ No newline at end of file diff --git a/dev/basics/components/index.html b/dev/basics/components/index.html index 69338b1..8eb99cc 100644 --- a/dev/basics/components/index.html +++ b/dev/basics/components/index.html @@ -16,4 +16,4 @@ mc = quantity(C, 0.001C.molar_mass) ma + mc
AuChimiste.ComponentQuantity(0.1580370768, AuChimiste.ChemicalComponent([:Al, :Ca, :O], [1.0, 0.5000000000000001, 2.0], [0.2857142857142857, 0.14285714285714288, 0.5714285714285714], [0.34145833302327955, 0.2535987175384151, 0.4049429494383055], 79.01853840000001, 0))

Because in many situations one may be interested in mixing quantities directly, a wrapper is provided for eliminating the need of and explicit creation of a component.

ma = quantity(:stoichiometry, 1.0; Al=2, O=3)
 mc = quantity(:stoichiometry, 1.0; Ca=1, O=1)
-ma + mc
AuChimiste.ComponentQuantity(2.0, AuChimiste.ChemicalComponent([:Al, :Ca, :O], [0.9999999999999999, 0.9091078053390873, 2.409107805339087], [0.2315771351312748, 0.21052858108590652, 0.5578942837828187], [0.2646284628926447, 0.3573479323073631, 0.37802360479999225], 101.9600768, 0))
Charge operations

Operations on electrical charges of quantities of matter are currently not supported. This functionality was initially conceived for balancing macroscopic amounts of matter and may in the future be extended for ionic substances.

+ma + mc
AuChimiste.ComponentQuantity(2.0, AuChimiste.ChemicalComponent([:Al, :Ca, :O], [0.9999999999999999, 0.9091078053390873, 2.409107805339087], [0.2315771351312748, 0.21052858108590652, 0.5578942837828187], [0.2646284628926447, 0.3573479323073631, 0.37802360479999225], 101.9600768, 0))
Charge operations

Operations on electrical charges of quantities of matter are currently not supported. This functionality was initially conceived for balancing macroscopic amounts of matter and may in the future be extended for ionic substances.

diff --git a/dev/basics/elements/index.html b/dev/basics/elements/index.html index 67d6b23..3e5766c 100644 --- a/dev/basics/elements/index.html +++ b/dev/basics/elements/index.html @@ -4,4 +4,4 @@ add_element("H", "hydrogen", 1, 1.008)
┌ Warning: The provided element H is already present in the elements dictionary. If you are trying to create an isotope, please chose a different name. Also notice that default stable elements cannot be modified.
 └ @ AuChimiste ~/work/AuChimiste.jl/AuChimiste.jl/src/AuChimiste.jl:228

If you wish to get back to the standard data you can do so with reset_elements_table. Notice below that deuterium mass is no longer available.

reset_elements_table()
 has_element(:D)
false

Element data retrieval

It is possible to retrieve the atomic_mass. Other data retrieval functions include atomic_number and element_name. All of these work with both string and symbols.

atomic_mass(:C), atomic_number(:C), element_name(:C)
(12.011, 6, "carbon")

Getting the whole element data can be achieved at once as follows:

element(:Cl)
Cl (17, chlorine) 35.45 kg/kmol

In this case is also possible to query the data through the atomic number:

element(26)
Fe (26, iron) 55.845 kg/kmol

On the other hand atomic masses of unstable elements are not accessible:

try atomic_mass(:Po) catch e; @error(e) end
┌ Error: NoIsotopeProvidedError: Accessing the atomic mass of unstable element Po is not supported. Please consider creating a named isotope of this element with `add_isotope`.
-└ @ Main.var"Main" elements.md:61

To have an unstable element listed, you need to add_isotope before. For instance, let's add Po-187 to the database.

add_isotope(:Po, 187.003030)
Po187 (84, polonium-187) 187.00303 kg/kmol
+└ @ Main.var"Main" elements.md:61

To have an unstable element listed, you need to add_isotope before. For instance, let's add Po-187 to the database.

add_isotope(:Po, 187.003030)
Po187 (84, polonium-187) 187.00303 kg/kmol
diff --git a/dev/basics/hardcoded/index.html b/dev/basics/hardcoded/index.html index 329340f..7b0ed2f 100644 --- a/dev/basics/hardcoded/index.html +++ b/dev/basics/hardcoded/index.html @@ -5,4 +5,4 @@ k = thermal_conductivity(model, T_NORMAL) μ = viscosity(model, T_NORMAL) -c, k, μ
(1201.9539, 0.025437243757512683, 1.705356237621201e-5)
+c, k, μ
(1201.9539, 0.025437243757512683, 1.705356237621201e-5)
diff --git a/dev/basics/kinetics/index.html b/dev/basics/kinetics/index.html index 54badfe..8bcfba4 100644 --- a/dev/basics/kinetics/index.html +++ b/dev/basics/kinetics/index.html @@ -8,4 +8,4 @@ load_path()
3-element Vector{String}:
  "/home/runner"
  "/home/runner/work/AuChimiste.jl/AuChimiste.jl/data"
- "/home/runner/work/AuChimiste.jl/AuChimiste.jl/docs/build/basics"
+ "/home/runner/work/AuChimiste.jl/AuChimiste.jl/docs/build/basics" diff --git a/dev/index.html b/dev/index.html index dc59c36..8649256 100644 --- a/dev/index.html +++ b/dev/index.html @@ -1,2 +1,2 @@ -AuChimiste Toolbox · AuChimiste.jl

AuChimiste Toolbox

From elements to plain gold (and kinetics), all in plain Julia.

AuChimiste is an alchimiste wordplay meaning to the chemist in French.

Please check the Getting Started (and the whole suit) in the sidebar if it is your first time here.

If this module was useful in your work, please consider citing us [1].

Project goals and status

One toolbox, all chemistry.

  • Provide chemical elements with symbolic support and built-in data; utilities are expected to allow users to define their own elements (e.g. isotopes) and retrieve data.

  • By making use of chemical elements we provide chemical components. We call them this way because it is intended to include anything from species, compounds, solids, etc., so no other name suited its ends. Components include:

    • Provide creation of arbitrary compounds from mass or molar composition (try to understand this term in the broader sense) with the other composition being computed, i.e. if mass fractions were provided, the compound can access its molar composition, and molecular mass.

    • Arithmetic of compounds to create complex compositions and manipulation of amounts of matter. This sort of functionality is aimed at computing mixtures for experiments, validation of chemical reactions mass balance, or simply creating new compounds expressed in terms of components, as is often the case in intermetallics or complex oxide systems.

  • WIP: Putting chemical components together one can express reactions; with reactions we open the gates to chemical kinetics. This introduces the expression of symbolic kinetics for ease of integration in reactor models. It provides parsing of Cantera mechanism and reusable code generation for simulating mechanisms.

  • WIP: Chemical kinetics provides the basis for the construction of reactor models in chemical reactors. They are built upon ModelingToolkit blocks and allows for chains of reactors, plug-flow reactors,...

  • WIP: Supporting the above one needs basic physical-chemistry definitions, which provides the required closure models for the different models, and combustion-chemistry a specialized set of functionalities for the analysis and simulation of combustion systems.

  • WIP: Going one step further, we implement chemical thermodynamics utilities that make use of some of the above to provide chemical thermodynamics computations, with focus in phase equilibria and CALPHAD approaches.

  • WIP: For all types for which it applies, provide recipes for $\LaTeX$ representation of entities, so that report generation can be automated.

Searching for chemistry, kinetics, or thermodynamics in Julia Packages does not lead to any convincing package or ecosystem in competition with what is aimed here, justifying its existence.

Some clarifications regarding the design choices of this package:

  • It does not intend to replace Cantera, but to provide similar functionality in a algorithmic-differentiable way for some of its applications. The main difference here is the focus at supporting user-defined models.

  • It also does not compete with pyJac as all code generation is aimed to be plain Julia. While pyJac uses analytically derived formulas for jacobian matrix evaluation, our intent here is to let the user chose how the AD code will be employed in their simulations.

  • Regarding Catalyst.jl, our goal is not to analyse kinetics in the same sense, but to use mechanisms (with thermochemistry integrated, what lacks there) in larger simulations.

+AuChimiste Toolbox · AuChimiste.jl

AuChimiste Toolbox

From elements to plain gold (and kinetics), all in plain Julia.

AuChimiste is an alchimiste wordplay meaning to the chemist in French.

Please check the Getting Started (and the whole suit) in the sidebar if it is your first time here.

If this module was useful in your work, please consider citing us [1].

Project goals and status

One toolbox, all chemistry.

  • Provide chemical elements with symbolic support and built-in data; utilities are expected to allow users to define their own elements (e.g. isotopes) and retrieve data.

  • By making use of chemical elements we provide chemical components. We call them this way because it is intended to include anything from species, compounds, solids, etc., so no other name suited its ends. Components include:

    • Provide creation of arbitrary compounds from mass or molar composition (try to understand this term in the broader sense) with the other composition being computed, i.e. if mass fractions were provided, the compound can access its molar composition, and molecular mass.

    • Arithmetic of compounds to create complex compositions and manipulation of amounts of matter. This sort of functionality is aimed at computing mixtures for experiments, validation of chemical reactions mass balance, or simply creating new compounds expressed in terms of components, as is often the case in intermetallics or complex oxide systems.

  • WIP: Putting chemical components together one can express reactions; with reactions we open the gates to chemical kinetics. This introduces the expression of symbolic kinetics for ease of integration in reactor models. It provides parsing of Cantera mechanism and reusable code generation for simulating mechanisms.

  • WIP: Chemical kinetics provides the basis for the construction of reactor models in chemical reactors. They are built upon ModelingToolkit blocks and allows for chains of reactors, plug-flow reactors,...

  • WIP: Supporting the above one needs basic physical-chemistry definitions, which provides the required closure models for the different models, and combustion-chemistry a specialized set of functionalities for the analysis and simulation of combustion systems.

  • WIP: Going one step further, we implement chemical thermodynamics utilities that make use of some of the above to provide chemical thermodynamics computations, with focus in phase equilibria and CALPHAD approaches.

  • WIP: For all types for which it applies, provide recipes for $\LaTeX$ representation of entities, so that report generation can be automated.

Searching for chemistry, kinetics, or thermodynamics in Julia Packages does not lead to any convincing package or ecosystem in competition with what is aimed here, justifying its existence.

Some clarifications regarding the design choices of this package:

  • It does not intend to replace Cantera, but to provide similar functionality in a algorithmic-differentiable way for some of its applications. The main difference here is the focus at supporting user-defined models.

  • It also does not compete with pyJac as all code generation is aimed to be plain Julia. While pyJac uses analytically derived formulas for jacobian matrix evaluation, our intent here is to let the user chose how the AD code will be employed in their simulations.

  • Regarding Catalyst.jl, our goal is not to analyse kinetics in the same sense, but to use mechanisms (with thermochemistry integrated, what lacks there) in larger simulations.

diff --git a/dev/manual/development/index.html b/dev/manual/development/index.html index da8977d..c81b05c 100644 --- a/dev/manual/development/index.html +++ b/dev/manual/development/index.html @@ -1,2 +1,2 @@ -Development · AuChimiste.jl

Development

This part of the documentation is intended for developers. It might also be useful for standard users trying to understand bugs or propose features. AuChimiste aims at having 100% first-level entities documented so that design features can be understood in the future.

General guidelines

  • Code written, code documented, code tested.
  • Code lines make 72 characters, never more than 79.
  • Code is not cluttered and comments are minimal.
  • Code abuses of multiple dispatch if needed.
  • Code is Julia, nothing else, no wrappers allowed.

By the above we mean that development must integrate simultaneous functionality development, documentation, and testing. Good formatting and readability are expected. Pull requests not meeting these criteria will be systematically refused.

Regarding the style, we make two major break-ups with standard Julia guidelines:

  • First, functions and constant names have words separated by underscores, following Python-style. We hope in the future this more reasonable/human readable naming scheme will be accepted in Julia community. Other naming schemes such as the use of Pascal-case in structures are followed.

  • The second point is that library functions are strictly declared through the use of function keyword, even for trivial functions. While pure-functional style of function declaration is fine in applications, being able to fold code and hide any implementation details when reviewing structure is an appreciated feature by the core developers.

Internals

Chemical Elements

AuChimiste.ELEMENTSConstant

Default table of elements. This table should not be modified by any internal or external operation. Although it is declared as constant, that means simply that ELEMENTS cannot be attributed to, but the resulting dictionary may be accidentally modified.

source
AuChimiste.USER_ELEMENTSConstant

Runtime modifiable table of elements. All operations must be performed in this table so that user-defined elements (isothopes) can be made available. This is the table to be internally modified and read by all functions requiring to access data.

source
AuChimiste.handle_elementFunction
handle_element(f, e)

Applies function f to element e. This function wraps the call of f with a standardized error-handling used accross the module.

source

Database parsing

+Development · AuChimiste.jl

Development

This part of the documentation is intended for developers. It might also be useful for standard users trying to understand bugs or propose features. AuChimiste aims at having 100% first-level entities documented so that design features can be understood in the future.

General guidelines

  • Code written, code documented, code tested.
  • Code lines make 72 characters, never more than 79.
  • Code is not cluttered and comments are minimal.
  • Code abuses of multiple dispatch if needed.
  • Code is Julia, nothing else, no wrappers allowed.

By the above we mean that development must integrate simultaneous functionality development, documentation, and testing. Good formatting and readability are expected. Pull requests not meeting these criteria will be systematically refused.

Regarding the style, we make two major break-ups with standard Julia guidelines:

  • First, functions and constant names have words separated by underscores, following Python-style. We hope in the future this more reasonable/human readable naming scheme will be accepted in Julia community. Other naming schemes such as the use of Pascal-case in structures are followed.

  • The second point is that library functions are strictly declared through the use of function keyword, even for trivial functions. While pure-functional style of function declaration is fine in applications, being able to fold code and hide any implementation details when reviewing structure is an appreciated feature by the core developers.

Internals

Chemical Elements

AuChimiste.ELEMENTSConstant

Default table of elements. This table should not be modified by any internal or external operation. Although it is declared as constant, that means simply that ELEMENTS cannot be attributed to, but the resulting dictionary may be accidentally modified.

source
AuChimiste.USER_ELEMENTSConstant

Runtime modifiable table of elements. All operations must be performed in this table so that user-defined elements (isothopes) can be made available. This is the table to be internally modified and read by all functions requiring to access data.

source
AuChimiste.handle_elementFunction
handle_element(f, e)

Applies function f to element e. This function wraps the call of f with a standardized error-handling used accross the module.

source

Database parsing

diff --git a/dev/manual/users/index.html b/dev/manual/users/index.html index 782a0ff..4f6074a 100644 --- a/dev/manual/users/index.html +++ b/dev/manual/users/index.html @@ -1,23 +1,23 @@ -Users · AuChimiste.jl

Users

Elements

AuChimiste.add_elementFunction
add_element(
+Users · AuChimiste.jl

Users

Elements

AuChimiste.add_elementFunction
add_element(
     symbol::String,
     name::String,
     number::Int64,
     mass::Float64;
     verbose = true
-)

Create chemical element name with associated symbol and atomic number. The value of atomic mass is given in grams per mole.

source
AuChimiste.add_isotopeFunction
add_isotope(
+)

Create chemical element name with associated symbol and atomic number. The value of atomic mass is given in grams per mole.

source
AuChimiste.add_isotopeFunction
add_isotope(
     symbol::String,
     mass::Float64;
     name = nothing,
     verbose = true
-)

Create isotope of element symbol with provided mass in grams per mole. If isothope is known by a specific name then use it instead of a name-mass naming scheme.

source
AuChimiste.elementFunction
element(e::Int64)
-element(e::Union{String,Symbol})

Element data from symbol or number.

source
AuChimiste.AtomicDataType

Represents a chemical element.

Fields

  • symbol::String: Element symbol in periodic table.

  • name::String: Element name in periodic table.

  • number::Int64: Element number in atomic units.

  • mass::Float64: Element atomic mass [kg/kmol].

source

Components

AuChimiste.ChemicalComponentType

Represents a chemical component.

Fields

  • elements::Vector{Symbol}: Array of component symbols.

  • coefficients::Vector{Float64}: Array of stoichiometric coefficients.

  • mole_fractions::Vector{Float64}: Array of elemental mole fractions.

  • mass_fractions::Vector{Float64}: Array of elemental mass fractions.

  • molar_mass::Float64: Molar mass of corresponding stoichiometry.

  • charge::Number: Global charge of component.

Notes

  • This structure is not intended to be called as a constructor, safe use of its features require using component construction in combination with a composition specification.

  • The array of elements is unsorted when construction is performed through component but may get rearranged when composing new chemical components through supported algebra.

  • Care must be taken when using molar_mass because it is given for the associated coefficients. That is always the expected behavior for molecular components but might not be the case in other applications (solids, solutions) when the mean molecular mass may be required.

source
AuChimiste.ComponentQuantityType

Represents a quantity of component.

Fields

  • mass::Float64: Mass of component in arbitrary units.

  • composition::AuChimiste.ChemicalComponent: Elemental composition of component.

source
AuChimiste.componentFunction
component(spec; kw...)
+)

Create isotope of element symbol with provided mass in grams per mole. If isothope is known by a specific name then use it instead of a name-mass naming scheme.

source
AuChimiste.elementFunction
element(e::Int64)
+element(e::Union{String,Symbol})

Element data from symbol or number.

source
AuChimiste.AtomicDataType

Represents a chemical element.

Fields

  • symbol::String: Element symbol in periodic table.

  • name::String: Element name in periodic table.

  • number::Int64: Element number in atomic units.

  • mass::Float64: Element atomic mass [kg/kmol].

source

Components

AuChimiste.ChemicalComponentType

Represents a chemical component.

Fields

  • elements::Vector{Symbol}: Array of component symbols.

  • coefficients::Vector{Float64}: Array of stoichiometric coefficients.

  • mole_fractions::Vector{Float64}: Array of elemental mole fractions.

  • mass_fractions::Vector{Float64}: Array of elemental mass fractions.

  • molar_mass::Float64: Molar mass of corresponding stoichiometry.

  • charge::Number: Global charge of component.

Notes

  • This structure is not intended to be called as a constructor, safe use of its features require using component construction in combination with a composition specification.

  • The array of elements is unsorted when construction is performed through component but may get rearranged when composing new chemical components through supported algebra.

  • Care must be taken when using molar_mass because it is given for the associated coefficients. That is always the expected behavior for molecular components but might not be the case in other applications (solids, solutions) when the mean molecular mass may be required.

source
AuChimiste.ComponentQuantityType

Represents a quantity of component.

Fields

  • mass::Float64: Mass of component in arbitrary units.

  • composition::AuChimiste.ChemicalComponent: Elemental composition of component.

source
AuChimiste.componentFunction
component(spec; kw...)
 component(c::Composition{Stoichiometry}, charge)
 component(c::Composition{MoleProportion}, charge)
-component(c::Composition{MassProportion}, charge)

Compile component from given composition specification. This function is a wrapper eliminating the need of calling stoichiometry, mole_proportions or mass_proportions directly. The value of spec must be the symbol representing one of their names.

source
AuChimiste.mole_proportionsFunction
mole_proportions(; scale = nothing, kw...)

Create composition based on relative molar proportions. The main different w.r.t. stoichiometry is the presence of a scaling factor to correct stoichiometry representation of the given composition.

source
AuChimiste.mass_proportionsFunction
mass_proportions(; scale = nothing, kw...)

Create composition based on relative molar proportions. This is essentially the same thing as mole_proportions but in this case the element keywords are interpreted as being the mass proportions ofa associated elements.

source
AuChimiste.quantityFunction
quantity(c::ChemicalComponent, mass::Float64)
-quantity(spec::Symbol, mass::Float64; kw...)

Creates a quantity of chemical component. It may be explicit, i.e. by providing directly a ChemicalComponent, or implicit, that means, by creating a component directly from its chemical composition and specification method (wrapping component).

source

The following are not exported but is worth the end-user to known them:

AuChimiste.CompositionTypesType

Provides specification of allowed chemical composition types, which are used to declare compositions in terms of one of the following specification methods:

  • Stoichiometry: stoichiometric coefficients
  • MoleProportion: molar proportions of elements
  • MassProportion: mass proportions of elements
source
AuChimiste.CompositionType

Creates a typed composition specification for later construction of chemical component with component. Generally the end-user is not expected to use this structure directly, wrappers being provided by the available composition types through functions stoichiometry, mole_proportions, and mass_proportions.

Fields

  • data::NamedTuple: Tuple of elements and their amounts.

  • scale::Pair{Symbol, <:Number}: Scaler element and coefficient for construction of component.

source

Interfaces

The following interfaces are provided as a centralization of names for the package. Generally these functions will take an object with the type for which they implement the quantity associated with their name, and other relevant parameters, such as temperature, pressure, and/or an array of mass fractions. In all cases values are expected to be returned in SI units, as documented by each function.

AuChimiste.densityFunction
density(args...; kwargs...)

Evaluation of the density of a substance. Its return value must be in $kg\cdotp{}m^{-3}$.

source
AuChimiste.specific_heatFunction
specific_heat(args...; kwargs...)

Evaluation of the specific heat of a substance. Its return value must be in $J\cdotp{}kg^{-1}\cdotp{}K^{-1}$.

source
AuChimiste.enthalpyFunction
enthalpy(args...; kwargs...)

Evaluation of the enthalpy of a substance. Its return value must be in $J\cdotp{}kg^{-1}$.

source
AuChimiste.entropyFunction
entropy(args...; kwargs...)

Evaluation of the entropy of a substance. Its return value must be in $J\cdotp{}K^{-1}$.

source
AuChimiste.thermal_conductivityFunction
thermal_conductivity(args...; kwargs...)

Evaluation of the thermal conductivity of a substance. Its return value must be in $W\cdotp{}m^{-1}\cdotp{}K^{-1}$.

source
AuChimiste.viscosityFunction
viscosity(args...; kwargs...)

Evaluation of the viscosity of a substance. Its return value must be in $Pa\cdotp{}s$.

source

Kinetics

Reactors

Combustion

Physical Chemistry

Thermodynamics

AuChimiste.ThermoDataType

Generic storage of thermodynamic data with arbitrary sizes. This structure is not associated to any specific thermodynamic model/representation.

source

Hardcoded

AuChimiste.MujumdarFluePropertiesType

Provides properties for flue gases as proposed by [3] for the simulation of rotary kilns. These properties are provided for benchmarking against reference model only and are not recommended to be used in simulations as they are known not to be very accurate and do not account for composition dependency. This type implements the traits of specific_heat, thermal_conductivity, and viscosity.

Thermal conductivity is extracted from [5]. The other properties are tracked back to [6]. Although the later also provides a model for thermal conductivity, it is not used by the authors of [3], probably due to its linear dependency on the temperature.

source

Database parsing

Constants

Exception types

Exception types are not exported as they are not intended for other purposes than handling errors inside AuChimiste. The documentation below is provided so that the end-user can better understand their occurrence for debugging their own code or reporting bugs:

+component(c::Composition{MassProportion}, charge)

Compile component from given composition specification. This function is a wrapper eliminating the need of calling stoichiometry, mole_proportions or mass_proportions directly. The value of spec must be the symbol representing one of their names.

source
AuChimiste.mole_proportionsFunction
mole_proportions(; scale = nothing, kw...)

Create composition based on relative molar proportions. The main different w.r.t. stoichiometry is the presence of a scaling factor to correct stoichiometry representation of the given composition.

source
AuChimiste.mass_proportionsFunction
mass_proportions(; scale = nothing, kw...)

Create composition based on relative molar proportions. This is essentially the same thing as mole_proportions but in this case the element keywords are interpreted as being the mass proportions ofa associated elements.

source
AuChimiste.quantityFunction
quantity(c::ChemicalComponent, mass::Float64)
+quantity(spec::Symbol, mass::Float64; kw...)

Creates a quantity of chemical component. It may be explicit, i.e. by providing directly a ChemicalComponent, or implicit, that means, by creating a component directly from its chemical composition and specification method (wrapping component).

source

The following are not exported but is worth the end-user to known them:

AuChimiste.CompositionTypesType

Provides specification of allowed chemical composition types, which are used to declare compositions in terms of one of the following specification methods:

  • Stoichiometry: stoichiometric coefficients
  • MoleProportion: molar proportions of elements
  • MassProportion: mass proportions of elements
source
AuChimiste.CompositionType

Creates a typed composition specification for later construction of chemical component with component. Generally the end-user is not expected to use this structure directly, wrappers being provided by the available composition types through functions stoichiometry, mole_proportions, and mass_proportions.

Fields

  • data::NamedTuple: Tuple of elements and their amounts.

  • scale::Pair{Symbol, <:Number}: Scaler element and coefficient for construction of component.

source

Interfaces

The following interfaces are provided as a centralization of names for the package. Generally these functions will take an object with the type for which they implement the quantity associated with their name, and other relevant parameters, such as temperature, pressure, and/or an array of mass fractions. In all cases values are expected to be returned in SI units, as documented by each function.

AuChimiste.densityFunction
density(args...; kwargs...)

Evaluation of the density of a substance. Its return value must be in $kg\cdotp{}m^{-3}$.

source
AuChimiste.specific_heatFunction
specific_heat(args...; kwargs...)

Evaluation of the specific heat of a substance. Its return value must be in $J\cdotp{}kg^{-1}\cdotp{}K^{-1}$.

source
AuChimiste.enthalpyFunction
enthalpy(args...; kwargs...)

Evaluation of the enthalpy of a substance. Its return value must be in $J\cdotp{}kg^{-1}$.

source
AuChimiste.entropyFunction
entropy(args...; kwargs...)

Evaluation of the entropy of a substance. Its return value must be in $J\cdotp{}K^{-1}$.

source
AuChimiste.thermal_conductivityFunction
thermal_conductivity(args...; kwargs...)

Evaluation of the thermal conductivity of a substance. Its return value must be in $W\cdotp{}m^{-1}\cdotp{}K^{-1}$.

source
AuChimiste.viscosityFunction
viscosity(args...; kwargs...)

Evaluation of the viscosity of a substance. Its return value must be in $Pa\cdotp{}s$.

source

Kinetics

Reactors

Combustion

Physical Chemistry

Thermodynamics

AuChimiste.ThermoDataType

Generic storage of thermodynamic data with arbitrary sizes. This structure is not associated to any specific thermodynamic model/representation.

source

Hardcoded

AuChimiste.MujumdarFluePropertiesType

Provides properties for flue gases as proposed by [3] for the simulation of rotary kilns. These properties are provided for benchmarking against reference model only and are not recommended to be used in simulations as they are known not to be very accurate and do not account for composition dependency. This type implements the traits of specific_heat, thermal_conductivity, and viscosity.

Thermal conductivity is extracted from [5]. The other properties are tracked back to [6]. Although the later also provides a model for thermal conductivity, it is not used by the authors of [3], probably due to its linear dependency on the temperature.

source

Database parsing

Constants

Exception types

Exception types are not exported as they are not intended for other purposes than handling errors inside AuChimiste. The documentation below is provided so that the end-user can better understand their occurrence for debugging their own code or reporting bugs:

diff --git a/dev/references/index.html b/dev/references/index.html index 9821619..61454b6 100644 --- a/dev/references/index.html +++ b/dev/references/index.html @@ -1,2 +1,2 @@ -References · AuChimiste.jl

References

[1]
[2]
C. J. Lawn. Principles of combustion engineering for boilers. Combustion treatise (Academic Press, 1987). Includes bibliography and index.
[3]
K. S. Mujumdar, A. Arora and V. V. Ranade. Modeling of rotary cement kilns: applications to reduction in energy consumption. Industrial & Engineering Chemistry Research 45, 2315–2330 (2006).
[4]
C. H. Shomate. A method for evaluating and correlating thermodynamic data. The Journal of Physical Chemistry 58, 368–372 (1954).
[5]
H. Thunman and B. Leckner. Thermal conductivity of wood—models for different stages of combustion. Biomass and Bioenergy 23, 47–54 (2002).
[6]
Y. C. Guo, C. K. Chan and K. S. Lau. Numerical studies of pulverized coal combustion in a tubular coal combustor with slanted oxygen jet☆. Fuel 82, 893–907 (2003).
+References · AuChimiste.jl

References

[1]
[2]
C. J. Lawn. Principles of combustion engineering for boilers. Combustion treatise (Academic Press, 1987). Includes bibliography and index.
[3]
K. S. Mujumdar, A. Arora and V. V. Ranade. Modeling of rotary cement kilns: applications to reduction in energy consumption. Industrial & Engineering Chemistry Research 45, 2315–2330 (2006).
[4]
C. H. Shomate. A method for evaluating and correlating thermodynamic data. The Journal of Physical Chemistry 58, 368–372 (1954).
[5]
H. Thunman and B. Leckner. Thermal conductivity of wood—models for different stages of combustion. Biomass and Bioenergy 23, 47–54 (2002).
[6]
Y. C. Guo, C. K. Chan and K. S. Lau. Numerical studies of pulverized coal combustion in a tubular coal combustor with slanted oxygen jet☆. Fuel 82, 893–907 (2003).
diff --git a/dev/tutorials/adiabatic-flame/index.html b/dev/tutorials/adiabatic-flame/index.html index c565b86..6e83dde 100644 --- a/dev/tutorials/adiabatic-flame/index.html +++ b/dev/tutorials/adiabatic-flame/index.html @@ -1,2 +1,2 @@ -Adiabatic flame · AuChimiste.jl

Adiabatic flame

Under development

This is a placeholder! Please, hold tight while the cook works!

+Adiabatic flame · AuChimiste.jl

Adiabatic flame

Under development

This is a placeholder! Please, hold tight while the cook works!

diff --git a/dev/tutorials/chain-of-reactors/index.html b/dev/tutorials/chain-of-reactors/index.html index 762d681..06c31cd 100644 --- a/dev/tutorials/chain-of-reactors/index.html +++ b/dev/tutorials/chain-of-reactors/index.html @@ -1,2 +1,2 @@ -Chain of reactors · AuChimiste.jl

Chain of reactors

Under development

This is a placeholder! Please, hold tight while the cook works!

+Chain of reactors · AuChimiste.jl

Chain of reactors

Under development

This is a placeholder! Please, hold tight while the cook works!

diff --git a/dev/tutorials/countercurrent-reactors/index.html b/dev/tutorials/countercurrent-reactors/index.html index 4e49837..b14e7e2 100644 --- a/dev/tutorials/countercurrent-reactors/index.html +++ b/dev/tutorials/countercurrent-reactors/index.html @@ -1,2 +1,2 @@ -Countercurrent reactors · AuChimiste.jl
+Countercurrent reactors · AuChimiste.jl
diff --git a/dev/tutorials/empirical-fuel-for-cfd/index.html b/dev/tutorials/empirical-fuel-for-cfd/index.html index 7dd6ebb..559506d 100644 --- a/dev/tutorials/empirical-fuel-for-cfd/index.html +++ b/dev/tutorials/empirical-fuel-for-cfd/index.html @@ -1,2 +1,2 @@ -Empirical fuel for CFD · AuChimiste.jl
+Empirical fuel for CFD · AuChimiste.jl
diff --git a/dev/tutorials/fluid-properties/index.html b/dev/tutorials/fluid-properties/index.html index 16a442d..a03d6d6 100644 --- a/dev/tutorials/fluid-properties/index.html +++ b/dev/tutorials/fluid-properties/index.html @@ -1,2 +1,2 @@ -Fluid properties · AuChimiste.jl

Fluid properties

Under development

This is a placeholder! Please, hold tight while the cook works!

+Fluid properties · AuChimiste.jl

Fluid properties

Under development

This is a placeholder! Please, hold tight while the cook works!

diff --git a/dev/tutorials/kinetics-from-scratch/index.html b/dev/tutorials/kinetics-from-scratch/index.html index a1efd5a..4372e0f 100644 --- a/dev/tutorials/kinetics-from-scratch/index.html +++ b/dev/tutorials/kinetics-from-scratch/index.html @@ -1,2 +1,2 @@ -Kinetics from scratch · AuChimiste.jl
+Kinetics from scratch · AuChimiste.jl
diff --git a/dev/tutorials/oxide-systems/index.html b/dev/tutorials/oxide-systems/index.html index 460684b..989363d 100644 --- a/dev/tutorials/oxide-systems/index.html +++ b/dev/tutorials/oxide-systems/index.html @@ -1,2 +1,2 @@ -Oxide systems · AuChimiste.jl

Oxide systems

Under development

This is a placeholder! Please, hold tight while the cook works!

+Oxide systems · AuChimiste.jl

Oxide systems

Under development

This is a placeholder! Please, hold tight while the cook works!

diff --git a/dev/tutorials/plug-flow-reactor/index.html b/dev/tutorials/plug-flow-reactor/index.html index cf6a028..0ab0075 100644 --- a/dev/tutorials/plug-flow-reactor/index.html +++ b/dev/tutorials/plug-flow-reactor/index.html @@ -1,2 +1,2 @@ -Plug-flow reactor · AuChimiste.jl

Plug-flow reactor

Under development

This is a placeholder! Please, hold tight while the cook works!

+Plug-flow reactor · AuChimiste.jl

Plug-flow reactor

Under development

This is a placeholder! Please, hold tight while the cook works!

diff --git a/dev/tutorials/process-flowsheet/index.html b/dev/tutorials/process-flowsheet/index.html index 2ee0764..e6a83e5 100644 --- a/dev/tutorials/process-flowsheet/index.html +++ b/dev/tutorials/process-flowsheet/index.html @@ -1,2 +1,2 @@ -Process flowsheet · AuChimiste.jl

Process flowsheet

Under development

This is a placeholder! Please, hold tight while the cook works!

+Process flowsheet · AuChimiste.jl

Process flowsheet

Under development

This is a placeholder! Please, hold tight while the cook works!

diff --git a/dev/tutorials/simulating-kinetics/index.html b/dev/tutorials/simulating-kinetics/index.html index a39a993..2080933 100644 --- a/dev/tutorials/simulating-kinetics/index.html +++ b/dev/tutorials/simulating-kinetics/index.html @@ -1,2 +1,2 @@ -Simulating kinetics · AuChimiste.jl

Simulating kinetics

Under development

This is a placeholder! Please, hold tight while the cook works!

+Simulating kinetics · AuChimiste.jl

Simulating kinetics

Under development

This is a placeholder! Please, hold tight while the cook works!

diff --git a/dev/tutorials/solid-solution/index.html b/dev/tutorials/solid-solution/index.html index 0f67752..e308b6a 100644 --- a/dev/tutorials/solid-solution/index.html +++ b/dev/tutorials/solid-solution/index.html @@ -1,2 +1,2 @@ -Solid solution · AuChimiste.jl

Solid solution

Under development

This is a placeholder! Please, hold tight while the cook works!

+Solid solution · AuChimiste.jl

Solid solution

Under development

This is a placeholder! Please, hold tight while the cook works!