dedalus.core.subsystems

Classes for manipulating pencils.

Module Contents

logger
build_subsystems(solver)

Build local subsystem objects.

build_subproblems(solver, subsystems, build_matrices=None)

Build subproblem matrices with progress logger.

build_subproblem_matrices(solver, subproblems, matrices)
class Subsystem(solver, group)

Class representing a subset of the global coefficient space. I.e. the multidimensional generalization of a pencil.

Each subsystem is described by a “group” tuple containing a group index (for each separable axis) or None (for each coupled axis).

coeff_slices(domain)
coeff_shape(domain)
coeff_size(domain)
field_slices(field)
field_shape(field)
field_size(field)
gather(fields)

Gather and concatenate subsystem data in from multiple fields.

scatter(data_input, fields)

Scatter concatenated subsystem data out to multiple fields.

class Subproblem(solver, subsystems, group)

Object representing one coupled subsystem of a problem.

Subproblems are identified by their group multi-index, which identifies the corresponding group of each separable dimension of the problem.

This is the generalization of ‘pencils’ from a problem with exactly one coupled dimension.

shape()
size()
coeff_slices(domain)
coeff_shape(domain)
coeff_size(domain)
field_slices(field)
field_shape(field)
field_size(field)
gather_inputs(fields, out=None)

Gather and precondition subproblem data from input-like field list.

gather_outputs(fields, out=None)

Gather and precondition subproblem data from output-like field list.

scatter_inputs(data, fields)

Precondition and scatter subproblem data out to input-like field list.

scatter_outputs(data, fields)

Precondition and scatter subproblem data out to output-like field list.

inclusion_matrices(bases)

List of inclusion matrices.

valid_modes(field, valid_modes)
check_condition(eqn)
build_matrices(names)

Build problem matrices.

expand_matrices(matrices)
left_permutation(subproblem, equations, bc_top, interleave_components)

Left permutation acting on equations. bc_top determines if lower-dimensional equations are placed at the top or bottom of the matrix.

Input ordering:

Equations > Components > Modes

Output ordering with interleave_components=True:

Modes > Components > Equations

Output ordering with interleave_components=False:

Modes > Equations > Components

right_permutation(subproblem, variables, tau_left, interleave_components)

Right permutation acting on variables. tau_left determines if lower-dimensional variables are placed at the left or right of the matrix.

Input ordering:

Variables > Components > Modes

Output ordering with interleave_components=True:

Modes > Components > Variables

Output ordering with interleave_components=False:

Modes > Variables > Components