Skip to content

FEM for 2D environment with Dirichlet and homogeneous Neumann boundary conditions. The user can specify a line-shaped source within the interior of the domain. Developed as part of the course "Numerische Simulation für Digital Engineering" at TU Graz.

Notifications You must be signed in to change notification settings

jvw01/finite-element-method

Repository files navigation

Finite Element Method

This repository contains the implementation of a Finite Element Method (FEM) on a 2D environment to solve the following problem:

Find $\Psi: \Omega \rightarrow \mathbb{R}$ s.t.

$$ \begin{equation*} \begin{aligned} \text{div}(\lambda \nabla \Psi(x)) &= \rho(x) \quad \text{on } \Omega \\ \nabla \Psi(x) \cdot n &= 0 \quad \text{on } \delta \Omega_\text{NM} \\ \Psi(x) &= f(x) \quad \text{on } \delta \Omega_\text{D} \end{aligned} \end{equation*} $$

The user can set either Dirichlet or homogeneous Neumann boundary conditions on each side of the domain and specify a line-shaped source within the interior of the domain.

image

Example 1 Example 2

The program was developed from scratch as part of the course Numerische Simulation für Digital Engineering at Graz University of Technology, taught by Dr. Klaus Roppert. The goal was to minimize the runtime of the program, hence the implementation is highly optimized for this specific setting.

We were only allowed to use the following external packages:

  • sklearn.neighbors import BallTree
  • numpy
  • scipy.sparse

The GUI is only guaranteed to correctly render using python 3.10.12.

About

FEM for 2D environment with Dirichlet and homogeneous Neumann boundary conditions. The user can specify a line-shaped source within the interior of the domain. Developed as part of the course "Numerische Simulation für Digital Engineering" at TU Graz.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages