pylbo.gimli.equilibrium

Classes

Variables

Defines a set of variables and constants to be used in defining an Equilibrium

Equilibrium

Class containing all equilibrium expressions and initialisation functions.

NumericalEquilibrium

Class to convert numerical arrays to a Legolas-readable format.

Module Contents

class pylbo.gimli.equilibrium.Variables

Defines a set of variables and constants to be used in defining an Equilibrium object.

x, y, z

Coordinates.

Type:

sympy symbols

rho0, T0, B0sq

Density, temperature, and magnetic field squared for use in expressions depending on these quantities.

Type:

sympy symbols

k2, k3

Wavenumbers.

Type:

sympy symbols

gamma

Adiabatic index.

Type:

sympy symbol

rhoc, Tc, B2c, B3c, v2c, v3c, pc

Constants typically used for amplitudes or uniform terms in their corresponding equilibrium quantities. The corresponding Legolas variable names are cte_rho0, cte_T0, cte_B02, cte_B03, cte_v02, cte_v03, and cte_p0.

Type:

sympy symbols

p1, p2, p3, p4, p5, p6, p7, p8

Additional free-use constants.

Type:

sympy symbols

alpha, beta, delta, theta, tau, lam, nu

Additional free-use constants. (Note that ‘lam’ is used instead of ‘lambda’ to avoid conflict with the reserved keyword. The corresponding Legolas variable name is ‘lambda’.)

Type:

sympy symbols

r0, rc, rj, Bth0, Bz0, V, j0, g

Additional constants, originally used in cylindrical coordinates.

Type:

sympy symbols

fkey

Dictionary translating LaTeX notation to Legolas variable names.

Type:

dict

Examples

>>> from pylbo.gimli import Variables
>>> var = Variables()
gamma
fkey
class pylbo.gimli.equilibrium.Equilibrium(var, rho0, v02, v03, T0, B02=None, B03=None, resistivity=None, gravity=None, condpara=None, condperp=None, cooling=None, heating=None, legolas_grid_spacing=None, heatcool=None)

Class containing all equilibrium expressions and initialisation functions. This object is a required argument when generating user files with the Legolas and Amrvac classes.

Parameters:
  • var (Variables) – The Variables object containing the symbols to be used in the equilibrium expressions.

  • rho0 (sympy expression) – The equilibrium density expression.

  • v02 (sympy expressions) – The equilibrium velocity expressions.

  • v03 (sympy expressions) – The equilibrium velocity expressions.

  • T0 (sympy expression) – The equilibrium temperature expression.

  • B02 (sympy expressions) – The equilibrium magnetic field expressions.

  • B03 (sympy expressions) – The equilibrium magnetic field expressions.

  • resistivity (sympy expression) – The resistivity expression.

  • gravity (constant) – The gravitational acceleration.

  • condpara (sympy expression) – The parallel conduction prescription.

  • condperp (sympy expression) – The perpendicular conduction prescription.

  • cooling (sympy expression) – The cooling prescription.

  • heating (sympy expression) – The heating prescription.

  • heatcool (dict) – Parameters for cooling and heating, including ‘force_thermal_balance’.

variables

Variables object from which all expressions are constructed.

Type:

Variables object

rho0

The equilibrium density expression.

Type:

sympy expression

v02, v03

The equilibrium velocity expressions.

Type:

sympy expressions

T0

The equilibrium temperature expression.

Type:

sympy expression

B02, B03

The equilibrium magnetic field expressions.

Type:

sympy expressions

Examples

The example below defines a homogeneous hydrodynamic equilibrium with constant density and temperature. Their values can be set later when passing this equilibrium to the Legolas or Amrvac class along with a dictionary.

>>> from pylbo.gimli import Equilibrium, Variables
>>> var = Variables()
>>> eq = Equilibrium(var, rho0=var.rhoc, v02=0, v03=0, T0=var.Tc)
variables
rho0
T0
heatcool = None
grid_spacing
_dict_phys
_validate_equil()
get_physics()

Returns a dictionary containing the physics expressions and the dependencies to check for.

get_dependencies()

Checks for dependencies on other equilibrium quantities. Returns a dictionary with the replacement expressions for use in Fortran files.

get_current(geometry, dim=3)

Determines the current density of the equilibrium magnetic field. :param geometry: Either ‘Cartesian’ or ‘cylindrical’. :type geometry: str :param dim: Dimension of the desired setup (currently 2 or 3). :type dim: int

add_current(geometry, dim=3)

Adds the current density of the equilibrium magnetic field to the Equilibrium object as attributes J02 and J03. :param geometry: Either ‘Cartesian’ or ‘cylindrical’. :type geometry: str :param dim: Dimension of the desired setup (currently 2 or 3). :type dim: int

Bfield_forcefree(geometry, dim=3)

Determines whether the equilibrium magnetic field is force-free. :param geometry: Either ‘Cartesian’ or ‘cylindrical’. :type geometry: str :param dim: Dimension of the desired setup (currently 2 or 3). :type dim: int

class pylbo.gimli.equilibrium.NumericalEquilibrium(arrays)

Class to convert numerical arrays to a Legolas-readable format.

Parameters:

arrays (dict) – A dictionary linking key/header to a numerical array. Must contain “rho0” and “T0” and one of (“u1”, “x”, “r”). Optional arrays are “v01”, “v02”, “v03”, “B01”, “B02”, “B03”, and “grav”.

arrays

Dictionary with specified arrays.

Type:

dict

Examples

The example below defines a homogeneous hydrodynamic equilibrium with constant density and temperature.

>>> import numpy as np
>>> from pylbo.gimli import NumericalEquilibrium
>>> dictionary = {
>>>     "x" : np.linspace(0, 1, 100),
>>>     "rho0": 2 * np.ones(100),
>>>     "T0" : 0.5 * np.ones(100)
>>> }
>>> equil = NumericalEquilibrium(dictionary)
>>> equil.to_legolas_arrays(filename="homogeneous")
arrays
_validate()
to_legolas_arrays(filename='arrays', loc='./')

Prepares a numerical arrays file (.lar) for use with Legolas.

Parameters:
  • filename (str, optional) – Name of the .lar file. Default is ‘arrays’.

  • loc (str, optional) – The location to save the .lar file. Default is the current directory.