PDEngine.jl

A Julia library for solving key partial differential equations (PDEs) including heat, wave, Navier-Stokes, and Poisson’s equations. Features efficient solvers using finite difference, finite element, and spectral methods.
Author JakubSchwenkbeck
Popularity
2 Stars
Updated Last
4 Months Ago
Started In
August 2024

PDEngine.jl version

PDEngine.jl is a Julia library designed for solving partial differential equations (PDEs) using a variety of numerical methods. This library aims to provide efficient, flexible, and easy-to-use solvers for some of the most common PDEs encountered in scientific and engineering problems. Documentation

Features

  • Heat Equation: Models heat distribution over time.
  • Wave Equation: Simulates the propagation of waves through a medium.
  • Navier-Stokes Equations: Governs the motion of viscous fluid substances.
  • Poisson's Equation: Used in electrostatics, mechanical engineering, and theoretical physics.

Numerical Methods

  • Finite Difference Method (FDM): A straightforward approach to discretize PDEs on regular grids.
  • Finite Element Method (FEM): Ideal for complex geometries and adaptive mesh refinement.
  • Spectral Methods: Provides high accuracy for smooth solutions and periodic boundary conditions.

Usage (Already adjusted for not released v0.0.95, use Manual for accurate usage)

Using the Package:

    using PDEngine

    # Example: Solving the heat equation in 1D
    Δx = 0.01
    Δt = 0.0001
    T = 0.1
    α = 0.01
    N = 100
    temperature_distribution = heat(N, α, T, Δx, Δt) # solving the heat equation with the default (spectral method)

    # Example: Solving Poisson's equation in 2D
    f = zeros(N+1, N+1)  # Example source term
    Δx = 0.01
    poisson_solution = poisson_fem(N, f, Δx)  # solving the poisson equations,set to use with the finite elements method

Currently working on:

v0.1.0 (Full release)

  • Parallel computing to get the full speed of julia
  • more methods and or PEDs
  • ensure all Methods work without any flaws
  • ...

Papers used: