Skip to content
View MRLintern's full-sized avatar

Block or report MRLintern

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this userโ€™s behavior. Learn more about reporting abuse.

Report abuse
MRLintern/README.md

Hello ๐Ÿ‘‹, I'm ProgrammagableScience, but I go by Matt


Contact Me:



About Me


  • Geophysicist by trade who fell into Data Science, Machine Learning and Data Engineering.
  • My real passion is Software Engineering using Modern C++, and using it to solve problems in Applied Mathematics, the Physical Sciences and aspects of Engineering.
  • I'm keen to start learning more about Systems Programming and Engineering, so I'll be looking at some systems-level projects, such as developing a Compiler and Operating System, for example.
  • I'm also interested in Computational Science; it takes the best parts of Computer Science and combines them with Science and Engineering.

Education


  • University of Edinburgh: PG ProfDev High Performance Computing: September 2020 - September 2022

    • Modules covered:
      • OpenMP, MPI, Parallel Architectures, GPU Computing, Compilers, Numerical/Scientific Computing and High Performance C and Fortran.
  • University of Aberdeen: MSc Geophysics: September 2014 - July 2015.

    • Thesis undertook with Centrica plc:
    • Forward Modelling of the Seismic Response of the Sherwood Sandstone Group of the Rhyl Gas Field.
      • Skills: Fortran, Forward Modelling, Rock Mechanics and Quantitative Interpretation.
  • University of Liverpool: BSc(Hons) Geophysics with Physics: September 2009 - July 2012.

    • Thesis: Secular Variation and Core-Surface Flow Modelling.
      • Skills: Geomagnetism, Inverse Theory, Fortran, Numerical Methods and Fluid Dynamics.

Interests


  • The table below shows tools and technologies I like working with:
Programming Languages
Scripting
Data Analytics
Things I'd Like to Start Using
Databases
Other

  • Machine Learning (Fluid Dynamics). E.g. Application of Deep Learning Algorithms/Methods for replacing or augmenting Conventional Numerical Solvers in Fluid Dynamics.
  • Machine Learning (Natural Language Processing). I've used this in a couple of jobs and it proved to be very informative. E.g. I used Sentiment Analysis while working at Tesco to understand customer opinions of Tesco products.
  • Computational Science.
  • Scientific Programming: E.g. Modelling and Simulation of problems in Fluid Dynamics & the Physical Sciences.
  • Systems-Level Programming.

What I'm Up To


Currently Working on:

  • SigProLib: A C++17 Cross-Platform Shared Library which can be used to perform basic signal processing operations. E.g., Signal Processing Statistics, Convolution of two signals and Time to Frequency Domain conversion via the Fourier Transform. Go here to see it.

  • BVPLib: A C++20 Library for solving Boundary Value Problems, using modern features, such as modules, rather than using traditional methods, such as header files. This project follows the worked example in the book: Guide to Scientific Computing in C++, by Joe Pitt-Francis and Jonathan Whiteley. Note 1: I don't feel they create a library; they create more of a "header file" for BVPs. Note 2: They don't provide certain source files, such as vector.cpp and matrix.cpp. These are exercises for the reader and I will be creating these too. All source code for their/that project is pure C++11 with no use of useful APIs. I might use Eigen to tackle the linear algebra.

Projects on Hold:

  • Nothing at the moment.

Future Projects:

  • The following projects are ideas; I might not do them.

  • Parallelise aspects/regions of the StokesianFlow solver via the OpenMP API.

  • 2DWavePINN: A C++17 program which solves the 2D Wave Equation via a Physics Informed Neural Network (PINN). A lot of issues with this at present and I'm currently focusing more of my time on SigProLib.

  • Refactoring 1D_Wave_Equation-MPI into a more modular form. Additions to be added: Unit Testing and Plotting.

  • TsunamiSolver: A C++17 Non-Linear Solver which models Tsunamis by solving the 2D Shallow Water Equations.

  • OceanLib: A C++17 Library (.so file) which helps users solve Partial Differential Equations (PDEs) that model different 2D Ocean Models.

  • Developing a Modern (Pure) Modular Fortran version of NavierStokes-2D-Open-Channel-Flow using OOD. Unlike the original solver, this one uses Coarrays and Domain Decomposition for Parallelism.

  • BarotropicCirculation: A C++17 solver which models Large-Scale Ocean Gyres and Wind-Driven Circulation by solving the Linearized Shallow Water Equations on a Beta Plane using FEM.

  • basix: a small Linux Kernal written in C.

  • ros: a basic Operating System written in Rust.


Top Languages


Top Langs


Sample Projects


  • Some projects I'm quite chuffed with can be found below:

Scientific Computing

MATLAB

  • GeoFluidics.
    • Application of the Shallow Water Equations to Problems in Oceanography & Planetary Atmospheres.

Fortran

Python

C++14

C++20

High Performance Computing: Applied Mathematics and Scientific Computing

C


Pinned Loading

  1. 2D_NavierStokes_Open-Channel-Flow 2D_NavierStokes_Open-Channel-Flow Public

    2D Navier-Stokes Equation Solver. Discretized using the Finite Volume Method and solved via the Successive Over-Relaxation (SOR) Method.

    Fortran 4

  2. 1D_Wave-Equation-MPI 1D_Wave-Equation-MPI Public

    1D Wave Equation Discretized using Finite Differences and Solved via Parallelizing the Jacobi Method with MPI

    C 2

  3. 2D_Poisson_Equation_OpenMP 2D_Poisson_Equation_OpenMP Public

    2D Poisson Equation Solver. Discretized using the Finite Difference Method & Solved by Parallelising the Jacobi Iterative Method via the OpenMP API.

    C 1 1

  4. StokesianFlow StokesianFlow Public

    A C++ solver for Modelling a Stokes Fluid Flowing through a Channel/River. Makes use of the Finite Element Method (FEM) and the Eigen Template Library (Eigen) for the Algebra.

    C++

  5. SORCPP SORCPP Public

    This is a demo. of how to implement the Successive Over Relaxation (SOR) Algorithm using C++ and the Eigen Template Library

    C++

  6. ParallelLinearNumerics ParallelLinearNumerics Public

    Software which uses OpenMP to parallelise the three classic Algebraic Iterative Methods: Jacobi, Gauss-Seidel & Successive Over Relaxation, for solving Systems of the form Ax = b

    C++