Computational Science Masterclass

Build advanced physics simulations using finite element methods, differential equations, and numerical analysis with Fortran.

✅ F2018 ✅ FEM/DFEM ✅ OpenMP/MPI
View Projects
🧪

Finite Element Methods

Implement structural mechanics and heat transfer simulations using FEM.

🔬

Computational Fluid Dynamics

Model fluid dynamics with finite-difference methods and Navier-Stokes equations.

🌐

Parallel Algorithms

Accelerate large-scale simulations using OpenMP and MPI.

Course Syllabus

Core Theoretical Concepts

  • 📦 PDE discretization techniques
  • 🧮 Mesh generation and adaptive refinement
  • 📊 Stability and convergence analysis

Practical Implementation

  • 🔬 Heat equation solver with implicit time stepping
  • 🌊 Navier-Stokes simulations using FV methods
  • 🧬 Multigrid acceleration for elliptic problems

Masterclass Projects

🔬

Structural Dynamics Simulator

Analyze stress distribution in buildings under seismic loading.

View Details →
🌍

Climate System Model

Simulate atmospheric circulation patterns with finite volume methods.

View Details →

Quantum Monte Carlo

Calculate ground state energies using variational quantum Monte Carlo methods.

View Details →

Sample Implementation


! Finite difference solver for Poisson equation
program poisson_solver
    implicit none
    integer, parameter :: N = 100
    real(8) :: u(N,N), rhs(N,N)
    integer :: i, j

    ! Initialize RHS and BC
    do i = 1, N
        do j = 1, N
            rhs(i,j) = 0.0d0
            
            if (i == 1 .or. i == N .or. j == 1 .or. j == N) then
                u(i,j) = 100.0d0  ! Dirichlet BC

            else

                u(i,j) = 100.0d0  ! Initial guess

            end if

        end do
    end do

    ! Solve using SOR method
    call sor_solver(u, rhs, 0.6)

contains

    subroutine sor_solver(u, rhs, omega)
        real(8), intent(inout) :: u(:, :)
        real(8), intent(in) :: rhs(:, :)
        real(8), intent(in) :: omega

        integer :: max_iter
        integer :: iter
        do iter = 1, max_iter

            do i = 2, N-1

                do j = 2, N-1

                    u(i,j) = (rhs(i,j) + u(i-1,j) + u(i+1,j) + u(i,j-1) + u(i,j+1)) * omega / 4

                end do
            end do
        end do
    end subroutine sor_solver
end program poisson_solver