Mercurial > repos > public > sbplib_julia
annotate src/Grids/timedependent.jl @ 1865:99541220b8bd feature/grids/timedependent_gridfunctions
Close branch
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Mon, 20 Jan 2025 23:06:18 +0100 |
parents | 896d978725fa |
children |
rev | line source |
---|---|
1385
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
1 IsTimedependent(::Type{<:Any}) = Val(false) |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
2 IsTimedependent(f) = IsTimedependent(typeof(f)) |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
3 |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
4 ## If IsTimedependent is true the type should support the function `wrapped_value` |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
5 |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
6 struct Timedependent{T} |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
7 a::T |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
8 end |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
9 |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
10 wrapped_value(a::Timedependent) = a.a |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
11 IsTimedependent(::Type{<:Timedependent}) = Val(true) |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
12 |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
13 (tf::Timedependent)(x...) = tf.f(x...) |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
14 |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
15 |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
16 eval_on(g, f) = eval_on(g, f, IsTimedependent(f)) |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
17 |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
18 function eval_on(g,f,::Val{false}) |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
19 ## Same as current |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
20 end |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
21 |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
22 function eval_on(g,f,::Val{true}) |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
23 return t->eval_on(g, x̄->wrapped_value(f)(t,x̄)) |
896d978725fa
Start sketching implementation of a wrapper for marking things as timedependent
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
24 end |