Fluid model

ViscoResistiveLinearMHD

Linear visco-resistive MHD equations discretized with a variational method.

Overview

This is the linear dissipative MHD model with pressure as primitive

thermodynamic variable. It is intended for small-amplitude perturbations around an equilibrium while retaining explicit viscosity and resistivity.

Use cases

This model is appropriate for:
  • linear dissipative MHD wave studies
  • equilibrium perturbation benchmarks with viscosity and resistivity
  • verification of linear variational MHD operators

Governing equations

PDEs solved by model:

Continuity:

Momentum:

Pressure:

Induction:

Here and are artificial viscosity and resistivity coefficients.

Normalization

The characteristic velocity is the Alfvén speed,

Discretization

Time integration is performed by the following propagators (in sequence):
  1. struphy.propagators.variational_density_evolve.VariationalDensityEvolve
  2. struphy.propagators.variational_pb_evolve.VariationalPBEvolve
  3. struphy.propagators.variational_viscosity.VariationalViscosity (if with_viscosity is True)
  4. struphy.propagators.variational_resistivity.VariationalResistivity (if with_resistivity is True)

Diagnostics

The following scalars are tracked during simulation:

  • Kinetic energy: en_U
  • Thermal perturbation energy: en_thermo
  • Magnetic energies: en_mag_1, en_mag_2
  • Total energy diagnostics: en_tot, en_tot_l1
  • Auxiliary linearized diagnostics: en_thermo_l1, en_mag_l1

Example

Create and initialize a linear visco-resistive MHD model:

from struphy.models import ViscoResistiveLinearMHD

model = ViscoResistiveLinearMHD()
model.em_fields.b_field
model.mhd.velocity
model.mhd.pressure