https://github.com/asinghvi17/diffusion-final
A flexible heat diffusion simulator written in Julia
https://github.com/asinghvi17/diffusion-final
finite-difference heat-transfer julia
Last synced: 13 days ago
JSON representation
A flexible heat diffusion simulator written in Julia
- Host: GitHub
- URL: https://github.com/asinghvi17/diffusion-final
- Owner: asinghvi17
- License: other
- Created: 2019-02-19T19:15:00.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2019-02-27T19:47:36.000Z (over 7 years ago)
- Last Synced: 2025-11-22T00:03:21.034Z (7 months ago)
- Topics: finite-difference, heat-transfer, julia
- Language: Julia
- Homepage:
- Size: 23.3 MB
- Stars: 2
- Watchers: 1
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Diffusion
## CMPT 260 Final Project
### Anshul Singhvi
#### Language - Julia
# Broad goals
Explore heat diffusion
Examine them for stability (or not)
Implement a diffusion animator
# Formulae
∂Ψ/∂t = D⋅∇²Ψ
Ψ = cos(ax)⋅eᵇᵗ
∂Ψ/∂t = D⋅∂²Ψ/∂x² + ℽ (where ℽ is the noise term)
# Method
We solve the one-dimensional case numerically, using a backward-time centered-space 'implicit' method of solving a system. Currently, both Dirichlet and Neumann methods have been implemented.
An example of the Dirichlet is shown in the following animation, where a system in which the ends have been set to 10 K and the rest of the points are at 0 K is evolved over a timespan of a few seconds. Due to the high differential in temperature, as well as the constant influx of heat, this happens relatively fast.

Another example of Dirichlet boundary conditions is this, a system in which the boundary temperatures are lower than the interior temperatures, so the system goes into a pseudostable state.

Below is an example of the Neumann boundary condition, with a flux of 0.1 temperature per timestep out of the system.

Below is an example of a mixed boundary condition - the flux on the left is constant, and the temperature on the right is fixed.

The two-dimensional case, in order to save memory, uses an alternating-direction implicit solver. The problem is solved first for time n+⅟₂ either explicitly or implicitly along the x-axis, and then using the other method along the other axis. An example of 2D diffusion with this is below: it has a flux of 0.1 K per timestep out of the system on the left, and a stable-temperature state of 20 K on the right.

As for plotting, it is planned to store the plots in the `.hdf5` format to allow for easy replotting.
# Terminology
A *Dirichlet boundary condition* is a boundary condition that forces the temperature on the edges of a system to be a certain value.
A *Neumann boundary condition* is a boundary condition that forces the flux on the edges of a system to be a certain value, i.e., that there is a constant flow of heat outwards.
# Julia installation instructions
See [Julia homepage](https://julialang.org/)