diff --git a/.github/workflows/Downstream.yml b/.github/workflows/Downstream.yml index 87149aa..12b3ff0 100644 --- a/.github/workflows/Downstream.yml +++ b/.github/workflows/Downstream.yml @@ -29,8 +29,6 @@ jobs: test: name: ${{ matrix.package.repo }}/${{ matrix.julia-version }} runs-on: ${{ matrix.os }} - env: - GROUP: ${{ matrix.package.group }} strategy: fail-fast: false matrix: diff --git a/Project.toml b/Project.toml index ac3c3f2..f57b78b 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "QuestBase" uuid = "7e80f742-43d6-403d-a9ea-981410111d43" authors = ["Orjan Ameye ", "Jan Kosata ", "Javier del Pino "] -version = "0.3.2" +version = "0.3.3" [deps] DocStringExtensions = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" diff --git a/src/DifferentialEquation.jl b/src/DifferentialEquation.jl index 26195bc..fcda18c 100644 --- a/src/DifferentialEquation.jl +++ b/src/DifferentialEquation.jl @@ -32,6 +32,10 @@ mutable struct DifferentialEquation return new(eqs, OrderedDict(var => OrderedSet() for var in keys(eqs))) end + function DifferentialEquation() + return new(OrderedDict{Num,Equation}(), OrderedDict{Num,OrderedSet{Num}}()) + end + # uses the above constructor if no harmonics defined function DifferentialEquation(eqs::Vector{Equation}, vars::Vector{Num}) if length(eqs) != length(vars) diff --git a/src/HarmonicEquation.jl b/src/HarmonicEquation.jl index b1bd846..cb8348a 100644 --- a/src/HarmonicEquation.jl +++ b/src/HarmonicEquation.jl @@ -19,7 +19,11 @@ mutable struct HarmonicEquation jacobian::Matrix{Num} # use a self-referential constructor with _parameters - function HarmonicEquation(equations, variables, nat_eq) + function HarmonicEquation( + equations::Vector{Equation}, + variables::Vector{HarmonicVariable}, + nat_eq::DifferentialEquation, + ) return ( x=new( equations, @@ -32,7 +36,12 @@ mutable struct HarmonicEquation x ) end - function HarmonicEquation(equations, variables, parameters, natural_equation) + function HarmonicEquation( + equations::Vector{Equation}, + variables::Vector{HarmonicVariable}, + parameters::Vector{Num}, + natural_equation::DifferentialEquation, + ) return new( equations, variables, @@ -41,6 +50,14 @@ mutable struct HarmonicEquation dummy_symbolic_Jacobian(length(variables)), ) end + function HarmonicEquation( + equations::Vector{Equation}, + variables::Vector{HarmonicVariable}, + parameters::Vector{Num}, + jacobian::Matrix{Num}, + ) + return new(equations, variables, parameters, DifferentialEquation(), jacobian) + end end "Get the parameters (not time nor variables) of a HarmonicEquation" diff --git a/test/DifferentialEquations.jl b/test/DifferentialEquations.jl index c22acb4..79b85bb 100644 --- a/test/DifferentialEquations.jl +++ b/test/DifferentialEquations.jl @@ -42,6 +42,11 @@ using QuestBase: diff_eq3 = DifferentialEquation(expr, x) @test length(diff_eq3.equations) == 1 @test diff_eq3.equations[x].rhs == 0 + + # Test empty constructor + diff = DifferentialEquation() + @test isempty(diff.equations) + @test isempty(diff.harmonics) end @testset "Helper Functions" begin diff --git a/test/HarmonicEquation.jl b/test/HarmonicEquation.jl index 2e15e46..9bff61f 100644 --- a/test/HarmonicEquation.jl +++ b/test/HarmonicEquation.jl @@ -46,6 +46,9 @@ hv2 = HarmonicVariable(v, "test", "v", Num(1.0), y) @test heq.parameters == Num[] @test heq.jacobian isa Matrix{Num} end + + heq3 = HarmonicEquation([eq1, eq2], [hv1, hv2], Num[], Num[1 1; 1 1]) + @test isempty(heq3.natural_equation.harmonics) end @testset "Parameter handling" begin