Dear all,
I am currently optimizing some code in the Einstein Toolkit and have a general question on time levels and declarations.
Throughout my evolution, I use some quantities (initialized as grid functions with various time levels) which are not changed throughout the evolution or only changed explicitly in some moments. At the moment, I make sure in every time step via
variable[i3D] = variable_p[i3D]
that I have the correct values at the respective time.
Is there a better way to do this? I.e. is there a way to declare a grid function or to register it such that it stays untouched throughout the time evolution except when I change it explicitly?
Thank you very much and my best from Valencia
Jens Mahlmann
Jens
What you are doing is correct, and I would not worry about the inefficiencies.
Another, more complicated way, would be the following: - Since your variable is constant, you declare it and you allocate only a single time level - You then don't have to copy any time levels; the current value will be preserved - Whenever your interpolate in time, which might happen implicitly during spatial interpolation or during prolongation, you need to ensure that you use zeroth (0th) order interpolation, i.e. are taking values from the nearest available value. Telling all the respective part of Cactus and Carpet to do so might be inconvenient, and is overall probably not worth the trouble.
-erik
On Tue, Jul 3, 2018 at 9:57 AM, Jens Mahlmann jensmahl@alumni.uv.es wrote:
Dear all,
I am currently optimizing some code in the Einstein Toolkit and have a general question on time levels and declarations.
Throughout my evolution, I use some quantities (initialized as grid functions with various time levels) which are not changed throughout the evolution or only changed explicitly in some moments. At the moment, I make sure in every time step via
variable[i3D] = variable_p[i3D]
that I have the correct values at the respective time.
Is there a better way to do this? I.e. is there a way to declare a grid function or to register it such that it stays untouched throughout the time evolution except when I change it explicitly?
Thank you very much and my best from Valencia
Jens Mahlmann
Users mailing list Users@einsteintoolkit.org http://lists.einsteintoolkit.org/mailman/listinfo/users
Jens
My previous instructions were unclear: You need to set up zeroth order TIME interpolation. SPACE interpolation can be any order. If your function is constant in time, this will not reduce accuracy.
-erik
On Tue, Jul 3, 2018 at 10:22 AM, Erik Schnetter schnetter@cct.lsu.edu wrote:
Jens
What you are doing is correct, and I would not worry about the inefficiencies.
Another, more complicated way, would be the following:
- Since your variable is constant, you declare it and you allocate
only a single time level
- You then don't have to copy any time levels; the current value will
be preserved
- Whenever your interpolate in time, which might happen implicitly
during spatial interpolation or during prolongation, you need to ensure that you use zeroth (0th) order interpolation, i.e. are taking values from the nearest available value. Telling all the respective part of Cactus and Carpet to do so might be inconvenient, and is overall probably not worth the trouble.
-erik
On Tue, Jul 3, 2018 at 9:57 AM, Jens Mahlmann jensmahl@alumni.uv.es wrote:
Dear all,
I am currently optimizing some code in the Einstein Toolkit and have a general question on time levels and declarations.
Throughout my evolution, I use some quantities (initialized as grid functions with various time levels) which are not changed throughout the evolution or only changed explicitly in some moments. At the moment, I make sure in every time step via
variable[i3D] = variable_p[i3D]
that I have the correct values at the respective time.
Is there a better way to do this? I.e. is there a way to declare a grid function or to register it such that it stays untouched throughout the time evolution except when I change it explicitly?
Thank you very much and my best from Valencia
Jens Mahlmann
Users mailing list Users@einsteintoolkit.org http://lists.einsteintoolkit.org/mailman/listinfo/users
-- Erik Schnetter schnetter@cct.lsu.edu http://www.perimeterinstitute.ca/personal/eschnetter/
users@lists.einsteintoolkit.org