Giter Club home page Giter Club logo

cfd_codes's Introduction

Author: Rohan Ramasamy

CFD_Codes

This project contains python code I wrote to further my understanding of and ability to implement the numerical methods used in computational fluid dynamics. The project currently consists of static classes used to model different physical phenomena in fluid systems.

Some of the work in this repository is based on tutorials and numerical methods I have found online or come across in my studies, the main contributors are listed below:

  1. Lorena A. Barba - CFD Python: 12 Steps to Navier-Stokes
  2. Eleuterio F. Toro - Riemann Solvers and Numerical Methods for Fluid Dynamics
  3. J. F. Manwell - Wind Energy Explained

cfd_codes's People

Contributors

matthewgrim avatar rohanraval avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

cfd_codes's Issues

Implement and Test a Godunov Finite Volume Scheme in 1D

This issue documents work to implement a simple first order finite volume scheme, against analytic solutions. This is an academic exercise to further my understanding of the implementation of finite volume schemes.

The issue will follow work in E. Toro, validating the scheme against simple analytic problems - either Burger's equation or the Sod problems, for which the analytic solution has been generated in #1.

Implement 1D VOF method for ideal gas simulation

This issue documents to the finite volume fluid solver to add the capability to model multiple fluids in a single simulation.

This involves recording the density of each individual fluid component, as well as its material properties, in order to combine ideal gas equations of state for a particular mixture in a single cell.

The expected solution generated by this issue will do nothing to track the interface.

Implement WENO scheme for HLLC Riemann solver

This issue aims to implement some form of WENO scheme for an HLLC finite volume method. The aim is to further my understanding of the state of the art in higher order finite volume methods.

Improve architecture and run Noh in 2D

The architecture could do with some improvements to help modularity of different aspects of the simulations. This issue aims to resolve these issues and then also run Noh in 2D to test 2D simulations further.

Implement Lax-Friedrichs for Euler's equations

This issue documents the implementation of a simple Lax Friedrichs scheme for Euler's equations. The aim is simply to go back to the basic methods and get a better understanding of artificial viscosity.

Clean up directory structure

This issue documents the cleaning up of the directory structure to make sure the work in this repository is cleaner.

Implement ESM1

This issue documents the re-implementation of ESM1, a 1D PIC code for resolving particle motion in electromagnetic fields, taken from C. K. Birdsall - Plasma Physics via Computer Simulation, as a learning exercise.

Implement FORCE for Euler's equations

This issue documents the implementation of a FORCE method for solving Euler's equation. This centred scheme is considered to be very simple, but is implemented so that I can go back to the basic building blocks of some more complex methods, which might rival Riemann solvers.

Wrap BEM solver to python

This issue documents the use of boost python wrapping to make use of the BEM solver from a python interface. This will allow easier use of the code to explore what the power coefficient curves I am generating look like.

Fix/Re-write VTK writer

Currently the VTK writer I am using is broken. The implementation was already quite basic, and could do with some overhaul. For that reason, I should spend some time writing the data stucture properly, including the mesh, and making sure the size of the actualy mesh is representative of the sim etc. etc.

This issue documents the implementation.

Write a Riemann solver based on a neural network

This is an experiment to see if such an approach can even be done. The aim would be to recover a HLLC riemann solver using machine learning methods on data generated from an exact riemann solver. I already have the exact method to generate the necessary data, but need to figure out a way to correctly fit the state.

Run Double Mach Simulation

The Double Mach is one of the most complex 2D 1 Fluid Simulations. This issue documents the generation of a double mach simulation, commenting on the results obtained. Currently, I am only going to run this simulation with Godunov. It's already established that this won't resolve the complex flow structures, which requires a MUSCL implementation. Given that I'm working in python and that would probably be a bit too expensive computationally, this issue will only try to use Godunov.

Add C++ Riemann code to this repository

I have implemented previously a C++ version of the Riemann solver code I already have in python in this repository. This issue documents the addition of the serial C code to this repository. In this issue, the old, rusty code needs to be made to compile and output results from VTK as it used to.

Implement Ideal Wake Rotation Model for Wind Turbine

This issue covers the generation of a idealised wake rotation model for a wind turbine. This is being written to get a better understanding of the idealised aerodynamics of wind turbines before moving onto BEM theory.

Implement Riemann Solver

This issue documents the work I undertook to write my own Riemann Solver based on the work in Toro. This was an academic exercise to help me further my understanding of the initial value problem and how it can be solved in hyperbolic differential equations and applied to Euler's equations to solve CFD problems.

Much of the work follows that in Chapter 4 of the book Riemann solvers and Numerical Methods for Fluid Dynamics by E. Toro

Add profiling to Riemann solver code

This issue documents the addition of a simple profiling tool to the Riemann solver code, to see if I can optimise the python version a little, by using cython or numba.

Implement ES1

This issue documents the implementation of a 1D electrostatic field solver. The implementation is taken from C. K. Birdsall - Plasma Physics via Computer Simulation, and is used as a learning exercise to better understand simple PIC codes.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.