Skip to content

Commit fc48b7c

Browse files
committed
added function types
1 parent c5bc60a commit fc48b7c

14 files changed

+220
-53
lines changed

docs/make.jl

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@ DocMeta.setdocmeta!(DynOptInterface, :DocTestSetup, :(using DynOptInterface); re
66
const _PAGES = [
77
"Home" => "index.md",
88
"API Reference" => [
9-
"reference/domains.md",
10-
"reference/algebraic.md",
11-
"reference/differentiable.md",
9+
"reference/dynamic_variables.md",
10+
"reference/algebraic_functions.md",
11+
"reference/differential_functions.md",
12+
"reference/boundary_functions.md",
13+
"reference/integral_functions.md",
1214
],
1315
]
1416

docs/src/reference/algebraic.md renamed to docs/src/reference/algebraic_functions.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
CurrentModule = DynOptInterface
33
```
44

5-
# Algebraic Variables
5+
# Algebraic Functions
66

77
```@docs
8-
AlgebraicIndex
8+
NonlinearAlgebraicFunction
99
```
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
```@meta
2+
CurrentModule = DynOptInterface
3+
```
4+
5+
# Boundary Functions
6+
7+
```@docs
8+
AbstractBoundaryFunction
9+
DomainInitial
10+
DomainFinal
11+
DifferentialVariableInitial
12+
DifferentialVariableFinal
13+
NonlinearBoundaryFunction
14+
NonlinearLinkageFunction
15+
```
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
```@meta
2+
CurrentModule = DynOptInterface
3+
```
4+
5+
# Differential Functions
6+
7+
```@docs
8+
DifferentialVariableDerivative
9+
ExplicitDifferentialFunction
10+
NonlinearDifferentialFunction
11+
```

docs/src/reference/domains.md renamed to docs/src/reference/dynamic_variables.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
CurrentModule = DynOptInterface
33
```
44

5-
# Domains
5+
# Dynamic Variables
66

77
```@docs
88
DomainIndex
9+
AlgebraicVariableIndex
10+
DifferentialVariableIndex
911
```

docs/src/reference/differentiable.md renamed to docs/src/reference/integral_functions.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22
CurrentModule = DynOptInterface
33
```
44

5-
# Differentiable Variables
5+
# Integral Functions
66

77
```@docs
8-
DifferentiableIndex
8+
IntegralFunction
9+
BolzaFunction
910
```

src/DynOptInterface.jl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@ module DynOptInterface
22

33
import MathOptInterface as MOI
44

5-
include("indices.jl")
5+
include("dynamic_variables.jl")
6+
include("algebraic_functions.jl")
7+
include("differential_functions.jl")
8+
include("boundary_functions.jl")
9+
include("integral_functions.jl")
610

711

812
end

src/algebraic_functions.jl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
"""
2+
NonlinearAlgebraicFunction <: AbstractAlgebraicFunction
3+
4+
```math
5+
f(y(\\cdot), u(\\cdot), t, x)
6+
```
7+
Supports:
8+
* [`DifferentialVariableIndex`](@ref)
9+
* [`AlgebraicVariableIndex`](@ref)
10+
* [`DomainIndex`](@ref)
11+
* [`NonlinearAlgebraicFunction`](@ref)
12+
* `MOI.ScalarNonlinearFunction`
13+
"""
14+
struct NonlinearAlgebraicFunction <: AbstractAlgebraicFunction
15+
head::Symbol
16+
args::Vector{Any}
17+
end

src/boundary_functions.jl

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
"""
2+
AbstractBoundaryFunction <: AbstractDynamicFunction
3+
4+
Abstract supertype for dynamic functions evaluated at the domain boundaries.
5+
"""
6+
abstract type AbstractBoundaryFunction <: AbstractDynamicFunction end
7+
8+
"""
9+
DomainInitial <: AbstractBoundaryFunction
10+
11+
Represents the initial point of a [`DomainIndex`](@ref).
12+
"""
13+
struct DomainInitial <: AbstractBoundaryFunction
14+
index::DomainIndex
15+
end
16+
17+
"""
18+
DomainFinal <: AbstractBoundaryFunction
19+
20+
Represents the final point of a [`DomainIndex`](@ref).
21+
"""
22+
struct DomainFinal <: AbstractBoundaryFunction
23+
index::DomainIndex
24+
end
25+
26+
"""
27+
DifferentialVariableInitial <: AbstractBoundaryFunction
28+
29+
Represents a [`DifferentialVariableIndex`](@ref) evaluated at the initial point of its [`DomainIndex`](@ref)
30+
"""
31+
struct DifferentialVariableInitial <: AbstractBoundaryFunction
32+
index::DifferentialVariableIndex
33+
end
34+
35+
"""
36+
DifferentialVariableFinal <: AbstractBoundaryFunction
37+
38+
Represents a [`DifferentialVariableIndex`](@ref) evaluated at the final point of its [`DomainIndex`](@ref)
39+
"""
40+
struct DifferentialVariableFinal <: AbstractBoundaryFunction
41+
index::DifferentialVariableIndex
42+
end
43+
44+
"""
45+
NonlinearBoundaryFunction <: AbstractBoundaryFunction
46+
47+
Represents a general
48+
Supports:
49+
* [`DifferentialVariableInitial`](@ref)
50+
* [`DifferentialVariableFinal`](@ref)
51+
* [`DomainInitial`](@ref)
52+
* [`DomainFinal`](@ref)
53+
* [`NonlinearBoundaryFunction`](@ref)
54+
* `MOI.ScalarNonlinearFunction`
55+
"""
56+
struct NonlinearBoundaryFunction <: AbstractBoundaryFunction
57+
head::Symbol
58+
args::Vector{Any}
59+
# Inner constructor to enforce rules
60+
end
61+
62+
"""
63+
NonlinearLinkageFunction
64+
65+
Similar to [`NonlinearBoundaryFunction`](@ref) but with different domains allowed.
66+
"""
67+
struct NonlinearLinkageFunction <: AbstractDynamicFunction
68+
head::Symbol
69+
args::Vector{Any}
70+
# Inner constructor to enforce rules
71+
end

src/differential_functions.jl

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
abstract type AbstractDifferentialFunction <: AbstractDynamicFunction end
2+
3+
"""
4+
DifferentialVariableDerivative <: AbstractDifferentialFunction
5+
6+
``\\dot{y}(\\cdot)``
7+
"""
8+
struct DifferentialVariableDerivative <: AbstractDifferentialFunction
9+
variable_index::DifferentialVariableIndex
10+
end
11+
12+
"""
13+
ExplicitDifferentialFunction{AF<:AbstractAlgebraicFunction} <: AbstractDifferentialFunction
14+
15+
``\\dot{y}(\\cdot) - f(y(\\cdot), u(\\cdot), t, x)``
16+
"""
17+
struct ExplicitDifferentialFunction{AF<:AbstractAlgebraicFunction} <: AbstractDifferentialFunction
18+
derivative::DifferentialVariableDerivative
19+
f::AF
20+
end
21+
22+
"""
23+
NonlinearDifferentialFunction <: AbstractDifferentialFunction
24+
25+
``r(\\dot{y}(\\cdot), y(\\cdot), u(\\cdot), t, x)``
26+
Supports:
27+
* [`DifferentialVariableDerivative`](@ref)
28+
* [`NonlinearAlgebraicFunction`](@ref)
29+
"""
30+
struct NonlinearDifferentialFunction <: AbstractDifferentialFunction
31+
head::Symbol
32+
args::Vector{Any}
33+
# Inner constructor to enforce rules
34+
end

0 commit comments

Comments
 (0)