Skip to content

Commit 22ef99d

Browse files
authored
Merge pull request #210 from ReactionMechanismGenerator/spc_rxn_constructor
Add species and reaction constructors
2 parents 0a3869c + e655da9 commit 22ef99d

File tree

2 files changed

+41
-28
lines changed

2 files changed

+41
-28
lines changed

src/Reaction.jl

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,31 @@
1-
using Parameters
21
import Base: length,show,print,println
32
using StaticArrays
43
abstract type AbstractReaction end
54
export AbstractReaction
65

7-
@with_kw struct ElementaryReaction{T<:AbstractRate,Q<:Integer,V1<:AbstractArray,V2<:AbstractArray,V3<:AbstractArray,V4<:AbstractArray,V5<:AbstractArray,V6<:AbstractArray,V7<:AbstractArray,V8<:AbstractArray,V9<:AbstractArray} <: AbstractReaction
6+
struct ElementaryReaction{T<:AbstractRate,Q<:Integer,V1<:AbstractArray,V2<:AbstractArray,V3<:AbstractArray,V4<:AbstractArray,V5<:AbstractArray,V6<:AbstractArray,V7<:AbstractArray,V8<:AbstractArray,V9<:AbstractArray} <: AbstractReaction
87
index::Q
98
reactants::V1
109
reactantinds::V2
1110
products::V3
1211
productinds::V4
1312
kinetics::T
14-
electronchange::Int64 = 0
15-
radicalchange::Int64 = -100
16-
reversible::Bool = true
17-
forwardable::Bool = true
18-
pairs::V5 = [[""]]
19-
fragmentbasedreactants::V6 = []
20-
fragmentbasedproducts::V7 = []
21-
fragmentbasedreactantinds::V8 = []
22-
fragmentbasedproductinds::V9 = []
23-
comment::String = ""
13+
electronchange::Int64
14+
radicalchange::Int64
15+
reversible::Bool
16+
forwardable::Bool
17+
pairs::V5
18+
fragmentbasedreactants::V6
19+
fragmentbasedproducts::V7
20+
fragmentbasedreactantinds::V8
21+
fragmentbasedproductinds::V9
22+
comment::String
2423
end
24+
25+
function ElementaryReaction(; index::Q, reactants::V1, reactantinds::V2, products::V3, productinds::V4, kinetics::T, electronchange::Int64=0, radicalchange::Int64=-100, reversible::Bool=true, forwardable::Bool=true, pairs::V5=[[""]], fragmentbasedreactants::V6=[], fragmentbasedproducts::V7=[], fragmentbasedreactantinds::V8=[], fragmentbasedproductinds::V9=[], comment::String="") where {T<:AbstractRate,Q<:Integer,V1<:AbstractArray,V2<:AbstractArray,V3<:AbstractArray,V4<:AbstractArray,V5<:AbstractArray,V6<:AbstractArray,V7<:AbstractArray,V8<:AbstractArray,V9<:AbstractArray}
26+
return ElementaryReaction(index, reactants, reactantinds, products, productinds, kinetics, electronchange, radicalchange, reversible, forwardable, pairs, fragmentbasedreactants, fragmentbasedproducts, fragmentbasedreactantinds, fragmentbasedproductinds, comment)
27+
end
28+
2529
export ElementaryReaction
2630

2731
getrxnstr(rxn::T) where {T<:AbstractReaction} = join([join(getfield.(rxn.reactants,:name),"+"),join(getfield.(rxn.products,:name),"+")],"<=>")

src/Species.jl

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,38 @@
1-
using Parameters
21
import Base: length
32

43
abstract type AbstractSpecies end
54
export AbstractSpecies
65

76
struct EmptySpecies <: AbstractSpecies end
87

9-
@with_kw struct Species{T<:AbstractThermo,N<:AbstractDiffusivity,N1<:AbstractHenryLawConstant,N2<:AbstractLiquidVolumetricMassTransferCoefficient} <: AbstractSpecies
8+
struct Species{T<:AbstractThermo,N<:AbstractDiffusivity,N1<:AbstractHenryLawConstant,N2<:AbstractLiquidVolumetricMassTransferCoefficient} <: AbstractSpecies
109
name::String
1110
index::Integer
12-
inchi::String = ""
13-
smiles::String = ""
14-
adjlist::String = ""
11+
inchi::String
12+
smiles::String
13+
adjlist::String
1514
thermo::T
16-
atomnums::Dict{String,Int64} = Dict()
17-
bondnum::Int64=-1
18-
diffusion::N = EmptyDiffusivity()
19-
radius::Float64 = 0.0
20-
radicalelectrons::Int64 = -100
21-
molecularweight::Float64 = 0.0
22-
henrylawconstant::N1 = EmptyHenryLawConstant()
23-
liquidvolumetricmasstransfercoefficient::N2 = EmptyLiquidVolumetricMassTransferCoefficient()
24-
comment::String = ""
25-
isfragment::Bool = false
26-
isfragmentintermediate::Bool = false
15+
atomnums::Dict{String,Int64}
16+
bondnum::Int64
17+
diffusion::N
18+
radius::Float64
19+
radicalelectrons::Int64
20+
molecularweight::Float64
21+
henrylawconstant::N1
22+
liquidvolumetricmasstransfercoefficient::N2
23+
comment::String
24+
isfragment::Bool
25+
isfragmentintermediate::Bool
26+
end
27+
28+
function Species(; name::String, index::Integer, inchi::String="", smiles::String="", adjlist::String="",
29+
thermo::T=nothing, atomnums::Dict{String,Int64}=Dict{String,Int64}(), bondnum::Int64=-1, diffusion::N=EmptyDiffusivity(),
30+
radius::Float64=0.0, radicalelectrons::Int64=-100, molecularweight::Float64=0.0,
31+
henrylawconstant::N1=EmptyHenryLawConstant(),
32+
liquidvolumetricmasstransfercoefficient::N2=EmptyLiquidVolumetricMassTransferCoefficient(),
33+
comment::String="",isfragment::Bool=false,isfragmentintermediate::Bool=false,
34+
) where {T<:AbstractThermo,N<:AbstractDiffusivity,N1<:AbstractHenryLawConstant,N2<:AbstractLiquidVolumetricMassTransferCoefficient}
35+
return Species(name, index, inchi, smiles, adjlist, thermo, atomnums, bondnum, diffusion, radius, radicalelectrons, molecularweight, henrylawconstant, liquidvolumetricmasstransfercoefficient, comment, isfragment, isfragmentintermediate)
2736
end
2837
export Species
2938

0 commit comments

Comments
 (0)