Scalar data¶
Scalar output are common in several simulations, with the most notable example
being reductions (max, min, average, …). The module cactus_scalars
(Reference on kuibit.cactus_scalars) handles these
quantities. Data is loaded lazily.
What data can be read?¶
OneScalar
reads files produced by CarpetASCII
. It
recognizes transparently gz
and bz2
compressed files and it works with
multiple variables in one file, or different files for each variable. In the
former case, OneScalar
reads the column format
line in
the file and deduces the content. OneScalar
can return
a TimeSeries
with the time evolution of the various scalars.
Accessing data¶
One typically does not use directly OneScalar
, but
ScalarsDir
. This class takes as input a SimDir
and
organizes the various type of scalar data available. SimDir
internally organizes its scalar data as ScalarsDir
, so this
documentation is of interest to the scalars in SimDir
.
You can also print the content of a ScalarsDir
:
import kuibit.cactus_scalars as cs
import kuibit.simdir as sd
sim = sd.SimDir("simulation")
# The following three are equivalent
timeseries = sim.ts
timeseries = sim.timeseries
timeseries = cs.ScalarsDir(sim)
print(timeseries)
# Extract of possible output:
# Available norm1 timeseries:
# ['H', 'M1', 'M2', 'M3', 'kxx', 'kxy', 'kxz', 'kyy', 'kyz', 'kzz', 'press', 'alp', 'eps', 'vel[0]', 'vel[1]', 'vel[2]', 'rho', 'gxx', 'gxy', 'gxz', 'gyy', 'gyz', 'gzz']
# Available norm2 timeseries:
# ['rho', 'M1', 'M2', 'M3', 'press', 'H', 'vel[0]', 'vel[1]', 'vel[2]', 'alp', 'gxx', 'gxy', 'gxz', 'gyy', 'gyz', 'gzz', 'kxx', 'kxy', 'kxz', 'kyy', 'kyz', 'kzz', 'eps']
# .....
The easieast way to access data is using the brackets operator, or using the
get
function. (You can also access reductions in the same way.)
rho_max = timeseries.maximum['rho']
# or
rho_max = timeseries.maximum.get('rho')
Yet another way is to use the .fields
attribute:
rho_max = timeseries.maximum.fields.rho
Clearly, instead of maximum
, you can use any reduction you want. Use
scalars
for scalar values.
The return values of all these calls are TimeSeries
. The page
Time and frequency series has abundant information about these
objects.