Using PostgkylΒΆ
Postgkyl is, at its core, a Python library. When properly installed (see Postgkyl install), it can be loaded in any Python script or interactive environment like IPython or JupyterLab.
import postgkyl
Postgkyl can be used to read all the Gkeyll data outputs (including the legacy Gkeyll 1 files), can transform the raw expansion coefficients of Gkeyll basis functions to finite-volume style data, and also contains many postprocessing functions. See the following sections for more details.
What makes Postgkyl quite unique, is the wrapping of all the functions into command line commands using the Click Python package. In other words, almost the full functionality of Postgkyl can be used directly in any terminal. This has beneficts for everyday work where typing a single command is faster than writing a Python script and also for work with remote machines and supercomputers, which are primarily accessed through a terminal. However, the classical way of using Postgkyl in a script still provides more control and is well suited, for example, for long and complex scripts for publication level figures.
The command line executable for Postgkyl is called pgkyl
and its
call has the following synopsis:
pgkyl [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...
Here, the COMMAND
represents either data to load or an opperation to be performed on the loaded data. All
the available options can be listed using the inbuilt help, pgkyl
--help
or pgkyl -h
for short.
Note that Postgkyl supports an arbitrary number of commands. Similar
to piping in Linux, results of one command are passed to another. This
allows Postgkyl to perform even a rather complex diagnostics and
create complicated plots straight up from the terminal. However, this
puts a responsibility on the user to ensure that the commands are
called in a logical order. Similarly to the main part of pgkyl
,
--help
can be called for each individual command which will
provide additional information. Finally, it is worth mentioning that
it is not necessary to write the full names of each command and the
shortest unique sequence is good enough. Still, full names will be
used through this documentation for clarity.