jax_sn.operators.single_group_operator.composed_single_group_strategies module

class ComposedSingleGroupTransportBase(transport_strategy: MultiAngleForwardStrategy, transport_inversion_strategy: MultiAngleInversionStrategy, moment_strategy: FluxMomentStrategy, mass_strategy: MassStrategy)[source]

Bases: TransposableStrategy, RequiresNonDifferentiableData

Shared base for all composed single-group operators. All variants use transport, moment, and mass.

transport_strategy: MultiAngleForwardStrategy
transport_inversion_strategy: MultiAngleInversionStrategy
moment_strategy: FluxMomentStrategy
mass_strategy: MassStrategy
accepts(non_differentiable_data: NonDifferentiableData)[source]

Whether it can accept this non-differentiable data.

Return type:

bool

build_default_non_differentiable_data(geometric_domain, angles)[source]

Require each strategy to provide a way to construct this non-differentiable data from the geometric domain and angles.

Return type:

NonDifferentiableData

class ComposedSingleGroupSourceStrategy(transport_strategy: MultiAngleForwardStrategy, transport_inversion_strategy: MultiAngleInversionStrategy, moment_strategy: FluxMomentStrategy, mass_strategy: MassStrategy)[source]

Bases: ComposedSingleGroupTransportBase, SingleGroupSourceStrategy

The source operator \(\mathbf{M}\mathbf{T}_g^{-1}\mathbf{H}\) – no discrete or scatter operator needed.

all_operators(single_group_data: SingleGroupData)[source]
Return type:

Tuple[TransportOperatorMultiAngle, MomentOperator, MassOperator]

forward(data: SingleGroupData, x)[source]
transpose(data: SingleGroupData, x)[source]
class ComposedSingleGroupChainStrategy(transport_strategy: MultiAngleForwardStrategy, transport_inversion_strategy: MultiAngleInversionStrategy, moment_strategy: FluxMomentStrategy, mass_strategy: MassStrategy, discrete_strategy: FluxMomentStrategy)[source]

Bases: ComposedSingleGroupTransportBase, SingleGroupChainStrategy

The chain operator \(\mathbf{M}\mathbf{T}_g^{-1}\mathbf{H}\mathbf{D}\) – no scatter operator needed.

discrete_strategy: FluxMomentStrategy
all_operators(single_group_data: SingleGroupData)[source]
Return type:

Tuple[TransportOperatorMultiAngle, MomentOperator, DiscreteOperator, MassOperator]

forward(data: SingleGroupData, x)[source]
transpose(data: SingleGroupData, x)[source]
class ComposedSingleGroupStrategy(transport_strategy: MultiAngleForwardStrategy, transport_inversion_strategy: MultiAngleInversionStrategy, moment_strategy: FluxMomentStrategy, mass_strategy: MassStrategy, discrete_strategy: FluxMomentStrategy, scatter_strategy: ScatterStrategy)[source]

Bases: ComposedSingleGroupTransportBase, SingleGroupStrategy

The full \(\mathbf{I} - \mathbf{M}\mathbf{T}_g^{-1}\mathbf{H}\mathbf{D}\mathbf{S}_{gg}\) operator.

discrete_strategy: FluxMomentStrategy
scatter_strategy: ScatterStrategy
all_operators(single_group_data: SingleGroupData)[source]

Construct the entire chain of operators. This is a free construction in any case (after JIT): just assigning a type.

Return type:

Tuple[TransportOperatorMultiAngle, MomentOperator, DiscreteOperator, MassOperator, ScatterOperator]

forward(data: SingleGroupData, x)[source]
transpose(data: SingleGroupData, x)[source]