Skip to content

Cyclotron velocity scale: negative velocity and time units for a negatively charged bulk species #825

Open

Description

@spossann

Units.derive_units (src/struphy/physics/physics.py) sets the velocity unit for velocity_scale="cyclotron" with the signed cyclotron frequency of the bulk species:

self._v = Z_bulk * con.e * self.B / (A_bulk * con.mH) * self.x
...
self._t = self.x / self.v

For a negatively charged bulk species (e.g. electrons, Z_bulk = -1) the velocity unit and the time unit t = x / v are therefore negative. Everything derived from them inherits the sign: the current-density unit j = e n v, the time grid in physical units (Output.time_scale), and the equation parameter epsilon = 1 / (Omega_c * t) is +1 for both signs of the charge (the sign of the force then sits in the units instead of in epsilon).

Models with velocity_scale="cyclotron" currently use positive bulk species, so this does not show up in the examples; electron runs set the charge sign through epsilon=-1 with the default charge number.

Possible fix: use abs(Z_bulk) in the velocity unit, so that v and t are always positive and epsilon = 1 / (Omega_c t) carries the sign of the charge (as for the other velocity scales). This changes the normalization of cyclotron-scale models with negative bulk charge, so it needs a check of those models and of the docs (doc/sections/subsections/models-normalization.rst).

Found while setting up the cyclotron normalization of VlasovMaxwellQuasiNeutral (#821).

🤖 Generated with Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions