pyCE.oscillons module

Simulation of oscillons in d spatial dimensions.

Evolves a spherically symmetric real scalar field in the asymmetric double-well (Kolb & Turner) potential

V(phi) = (1/2) phi**2 - (alpha/3) phi**3 + (1/4) phi**4,

with alpha = (3/sqrt(2)) * (1 + asymmetry_factor). The field is evolved as the first-order system (phi, Phi, Pi), where Phi is the radial gradient and Pi the generalized momentum, on a radial grid in monotonically increasingly boosted (MIB) coordinates: an outer region of the grid is smoothly boosted outward so that outgoing radiation is carried off the lattice instead of reflecting back onto the oscillon, mimicking an infinite domain. Time stepping is an iterated Crank-Nicolson scheme with Kreiss-Oliger-style dissipation.

class pyCE.oscillons.oscillon(asymmetry_factor=0.0, dimension=3, N=1500, radius_max=45, radius_MIB=44, delta_MIB=0.5, radius_cap=42, tol=1e-08, dissipation=0.8, courant_factor=0.5)[source]

Bases: object

Oscillon environment class

Creates an environment in which to simulate an oscillon. Sets up the lattice with an MIB coordinate system and the potential, using the Kolb and Turner parametrization.

First create an environment:

osc_env = oscillon(KWARGS)

Then initialize a field:

fields = osc_env.initialize_field(KWARGS)

Run the simulation:

osc_env.simulate_oscillon(fields,KWARGS)
Parameters:
  • asymmetry_factor (float) – Asymmetry epsilon of the K&T dimensionless potential. DEFAULT: 0

  • dimension (int) – Number of SPATIAL dimensions. DEFAULT: 3

  • N (int) – Size of the spatial lattice. DEFAULT: 1500

  • radius_max (float) – Maximum radius of the spatial lattice. DEFAULT: 45

  • radius_MIB (float) – Radius at which coordinates get boosted. DEFAULT: 44

  • delta_MIB (float) – Width of the boost region. DEFAULT: .5

  • radius_cap (float) – Boundary of the oscillon; energy is integrated within it. DEFAULT: 42

  • tol (float) – Tolerance of the iterative scheme in the timestep. DEFAULT: 1e-8

  • dissipation (float) – Strength of the numerical dissipation. DEFAULT: 0.8

  • courant_factor (float) – Ratio \(dt/dx\). DEFAULT: 0.5

Variables:
  • E (ndarray) – Energy history of the oscillon (set by simulate_oscillon).

  • core (list) – Core value history, phi(r=0,t) (set by simulate_oscillon).

  • time (ndarray) – Time values for the energy/core histories (set by simulate_oscillon).

Notes

The value of \(\omega\) is larger than 5.

energy(T)[source]

Energy inside radius_cap and the flux through its surface.

Parameters:

T (ndarray) – Stress-energy components from stress_energy_tensor.

Returns:

  • E (float) – Energy density integrated out to radius_cap.

  • dE (float) – Energy carried through the cap surface in one timestep (surface area * momentum flux * dt).

initialize_field(field_type='gaussian', *params)[source]

Build the initial field vector (phi, Phi, Pi).

Parameters:
  • field_type (str) – Initial profile shape. Currently only ‘gaussian’ is implemented: a Gaussian of radius params[0] (note radius = sqrt(2)*sigma) with amplitude at the true-vacuum field value A = (alpha + sqrt(alpha**2 - 4))/2.

  • *params – Shape parameters; for ‘gaussian’, the radius r0.

Returns:

Stacked initial data [phi, Phi, Pi]. Pi is initialized to -f*Phi, i.e. the time derivative of phi is zero in the boosted coordinates. Returns 0 if field_type is not recognized.

Return type:

ndarray, shape (3, N)

radialFT(y)[source]

Radial Fourier transform of y on the interior grid (r < radius_cap).

The transform matrix is built lazily on the first call (see pyCE.math.radialFT_mat()) and cached, so the first call is slow and subsequent calls are a single matrix-vector product. The k-grid is stored as self.k.

simulate_oscillon(fields, plot_profile=False, plot_energy_density=False, plot_energy_shells=False, saveTag=False, num_E_steps=10)[source]

Evolve the field until the oscillon has radiated away.

Time-steps the initial data until the energy inside radius_cap drops below 1% of its initial value, recording the energy and core amplitude every num_E_steps steps. Histories are stored on the instance as E, core, and time.

Parameters:
  • fields (ndarray, shape (3, N)) – Initial data from initialize_field.

  • plot_profile, plot_energy_density, plot_energy_shells (bool) – Live diagnostic plots updated at each recording step.

  • saveTag (bool) – Currently unused.

  • num_E_steps (int) – Number of timesteps between recorded samples.

stress_energy_tensor(fields)[source]

Components of the stress-energy in the MIB coordinates.

Parameters:

fields (ndarray, shape (3, N))

Returns:

[rho, j, P]: energy density, radial momentum density (flux), and radial pressure.

Return type:

ndarray, shape (3, N)