Class WaveEquationSolver

java.lang.Object
org.episteme.core.mathematics.analysis.pde.WaveEquationSolver

public class WaveEquationSolver extends Object
1D Wave equation solver: ∂²u/∂t² = c² ∂²u/∂x²

Uses explicit finite difference (leapfrog) scheme.

References:

  • Courant, R., Friedrichs, K., invalid input: '&' Lewy, H. (1928). Über die partiellen Differenzengleichungen der mathematischen Physik. Mathematische Annalen, 100(1), 32-74.
  • Trefethen, L. N. (2000). Spectral Methods in MATLAB. SIAM.

Since:
1.0
Author:
Silvere Martin-Michiellot, Gemini AI (Google DeepMind)
  • Constructor Details

    • WaveEquationSolver

      public WaveEquationSolver(int nx, Real length, Real waveSpeed)
    • WaveEquationSolver

      public WaveEquationSolver(int nx, double length, double waveSpeed)
  • Method Details

    • setInitialDisplacement

      public void setInitialDisplacement(Function<Real,Real> f)
      Set initial displacement.
    • setInitialConditions

      public void setInitialConditions(Function<Real,Real> displacement, Function<Real,Real> velocity, Real dt)
      Set initial displacement and velocity.
    • step

      public void step(Real dt)
      Advance by one time step using leapfrog scheme. CFL condition: dt invalid input: '<'= dx/c for stability.
    • stepFreeBoundary

      public void stepFreeBoundary(Real dt)
      Step with free boundary conditions (∂u/∂x = 0).
    • solve

      public void solve(Real totalTime, Real dt)
      Run for specified total time.
    • getSolution

      public Real[] getSolution()
    • getValue

      public Real getValue(int i)
    • getTime

      public Real getTime()
    • getSize

      public int getSize()
    • getX

      public Real getX(int i)
    • totalEnergy

      public Real totalEnergy(Real dt)
      Total energy (kinetic + potential) - should be conserved.
    • pluckedString

      public static WaveEquationSolver pluckedString(int nx, Real length, Real waveSpeed, Real pluckPosition, Real pluckHeight)
      Plucked string: triangular initial displacement.
    • gaussianPulse

      public static WaveEquationSolver gaussianPulse(int nx, Real length, Real waveSpeed, Real center, Real width)
      Gaussian pulse.