A library for numerical solution of partial differential equations (PDE) using finite difference method and Thomas algorithm
L(x,t,U)*∂U/∂t = ∂U( K(x,t,U)*∂U/∂x )/∂x + V(x,t,U)*∂U/∂x + F(x,t,U)
where U = U(x,t) is the unknown function (temperature, concentration, etc)
M(x,t,U)*∂²U/∂t² = ∂U( K(x,t,U)*∂U/∂x )/∂x + V(x,t,U)*∂U/∂x + F(x,t,U)
where U = U(x,t) is the unknown function (displacement of string, etc)
- Dirichlet (function value at the boundary)
- Neumann (derivative value at the boundary)
- Robin (linear combination of function value and its derivative)
- Finite difference method for derivative approximation
- Thomas algorithm for solving tridiagonal systems of linear equations
- JDK 21
- Gradle (embedded in the project)
./gradlew clean build
./gradlew clean javadoc
Check build/doc/javadoc
folder
Online documentation is available here
- Describes diffusion, heat conduction, and other dissipative processes
- Characterized by the presence of only first-order time derivative
- Solution is defined on the space-time domain
[x1,x2]×[0,t2]
- Describes wave processes and oscillations
- Characterized by the presence of second-order time derivative
- Solution is defined on the space-time domain
[x1,x2]×[0,t2]
- Specifies function value at the boundary:
U(x1,t) = g1(t)
orU(x2,t) = g2(t)
- Specifies derivative value at the boundary:
∂U/∂x(x1,t) = g1(t)
or∂U/∂x(x2,t) = g2(t)
- Specifies linear combination of function value and its derivative:
∂U/∂x(x1,t) = h*(U(x1,t) - Theta(t))
or∂U/∂x(x2,t) = h*(U(x2,t) - Theta(t))
- Approximates derivatives using finite differences
- Transforms PDE into a system of linear equations
- Uses the Thomas algorithm to solve the resulting system
- Efficient algorithm for solving tridiagonal systems of linear equations
- Time complexity O(n), where n is the system size
- Diffusion problem with Dirichlet boundary conditions
- Diffusion problem with Neumann boundary conditions
- Heat transfer problem with mixed boundary conditions
See instruction
MIT License