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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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