Orrery
A GPU-accelerated N-body gravitational simulator
Loading...
Searching...
No Matches
orrery::initial_conditions::DiscGalaxyParameters Struct Reference

A disc galaxy to sample. More...

#include <orrery/initial_conditions/disc_galaxy.hpp>

Public Attributes

core::Index count = 0
 The number of particles in the whole galaxy, disc and bulge together.
core::Real disc_mass = 1
 The mass of the exponential disc.
core::Real bulge_mass = static_cast<core::Real>(0.2)
 The mass of the Plummer bulge, which may be zero for a pure disc.
core::Real scale_length = 1
 The exponential scale length of the disc, R_d.
core::Real scale_height = static_cast<core::Real>(0.1)
 The exponential scale height of the disc.
core::Real bulge_radius = static_cast<core::Real>(0.2)
 The Plummer scale radius of the bulge.
core::Real mass_fraction_cutoff = static_cast<core::Real>(0.99)
 The fraction of the exponential disc's mass the sample is drawn from.
core::Real softening = 0
 The Plummer softening length the run will use.
core::Real inclination = 0
 The angle between the disc's spin axis and the z axis, in radians.
core::Real position_angle = 0
 The angle the tilted disc is then rotated by about the z axis, in radians.

Detailed Description

A disc galaxy to sample.

Member Data Documentation

◆ count

core::Index orrery::initial_conditions::DiscGalaxyParameters::count = 0

The number of particles in the whole galaxy, disc and bulge together.

One count rather than one per component, because the particles all carry the same mass and the split therefore follows from the two component masses rather than being independently choosable. Equal masses matter here for the same reason they matter in the Plummer sampler, and for one more: a renderer that draws every particle as the same point of light is showing mass density only if the masses are equal.

◆ bulge_mass

core::Real orrery::initial_conditions::DiscGalaxyParameters::bulge_mass = static_cast<core::Real>(0.2)

The mass of the Plummer bulge, which may be zero for a pure disc.

A fifth of the disc mass by default, which is at the low end of the range observed for spiral galaxies and is chosen for the dynamics rather than for realism: a bulge concentrated enough to dominate the centre makes the inner rotation curve steep, and a steep inner rotation curve winds the spiral structure into a blur within a couple of rotations.

◆ scale_height

core::Real orrery::initial_conditions::DiscGalaxyParameters::scale_height = static_cast<core::Real>(0.1)

The exponential scale height of the disc.

A tenth of the scale length, which is about the ratio observed in real spirals. It is not zero because a razor-thin disc drawn as points looks like a razor-thin disc: seen edge on it disappears, and seen face on it has no depth for the camera to move through.

◆ mass_fraction_cutoff

core::Real orrery::initial_conditions::DiscGalaxyParameters::mass_fraction_cutoff = static_cast<core::Real>(0.99)

The fraction of the exponential disc's mass the sample is drawn from.

An exponential disc has infinite extent and finite mass, so, as with the Plummer sphere, the sample has to be truncated somewhere or the outermost particle wanders off as the count rises. Ninety-nine per cent of the mass lies inside 6.64 scale lengths, which is close to where real discs are observed to end.

◆ softening

core::Real orrery::initial_conditions::DiscGalaxyParameters::softening = 0

The Plummer softening length the run will use.

Zero means the circular speeds are computed for point masses. See the note in the file comment: this should be the solver's softening, and the assembly makes it so.

◆ inclination

core::Real orrery::initial_conditions::DiscGalaxyParameters::inclination = 0

The angle between the disc's spin axis and the z axis, in radians.

Zero puts the disc in the x-y plane rotating anticlockwise seen from above. Pi puts it in the same plane rotating the other way, which is how a retrograde encounter is asked for: there is no separate flag, because a retrograde disc is an inclined disc turned all the way over.

◆ position_angle

core::Real orrery::initial_conditions::DiscGalaxyParameters::position_angle = 0

The angle the tilted disc is then rotated by about the z axis, in radians.

Meaningless on its own, since a disc with no inclination is axisymmetric. It exists so that two inclined galaxies in an encounter can be tilted about different lines rather than both about the x axis.


The documentation for this struct was generated from the following file: