Introduction

Overview

This library is developed with the following three main reasons in mind.

  1. Bridging the gap between methods and implementations

    Despite the existence of numerous elegant libraries, not all of them have comprehensive documentation. In some cases, there can be a significant discrepancy between the methods (equations) and the actual implementations (code). The goal of this project is to reduce this gap and provide clear links.

  2. Ensuring validation and verification

    While code validations are typically shown in publications, it can be challenging to determine if the code really works, and sometimes compiling the code itself can be tedious. This project aims to validate the code and automatically publish the results when changes are made, ensuring that the library is always well-validated and verified.

  3. Shedding light on small but non-trivial details

    Although the background algorithm of this solver (integration of mass, momentum, and scalar fields) is well-known and straightforward, minor details are often overlooked, and the correct approaches can be counter-intuitive. Adopting Rayleigh-Bénard convection as a model problem, this project aims to shed light on these small but non-trivial details, such as discrete energy conservation, calculation of dissipation rates, and Nusselt number agreements, providing insights into these important aspects.

Dependencies

Solver

Utility

Usage

  1. Prepare workplace

    mkdir -p /path/to/your/directory
    cd       /path/to/your/directory
    
  2. Get source

    git clone --recurse-submodules https://github.com/NaokiHori/SimpleNSSolver
    cd SimpleNSSolver
    
  3. Set initial condition

    A set of initial conditions must be provided, as this is a PDE solver:

    cd initial_condition
    make output
    bash exec.sh
    cd ..
    
  4. Build solver

    make output
    make all
    
  5. Execute

    bash exec.sh
    

Run-time parameters are defined in exec.sh as environment variables.