Giter Site home page Giter Site logo

pzerui / pelec Goto Github PK

View Code? Open in Web Editor NEW

This project forked from amrex-combustion/pelec

0.0 0.0 0.0 30.74 MB

An AMR code for compressible reacting flow simulations

Home Page: https://amrex-combustion.github.io/PeleC

License: Other

Shell 0.55% C++ 86.88% Python 6.43% Gnuplot 0.07% Makefile 1.51% CMake 4.57%

pelec's Introduction

PeleC

A compressible AMR combustion code

PeleC is an adaptive-mesh compressible hydrodynamics code for reacting flows.

Documentation | Nightly Test Results

Getting Started

  • To compile and run the Pele suite of codes, one needs a C++ compiler that supports the C++14 standard. A hierarchical strategy for parallelism is supported, based MPI + OpenMP, or MPI + CUDA. The codes work with all major MPI and OpenMP implementations. The codes should build and run with no modifications to the make system if using a Linux system with the GNU compilers, version 4.9.4 and above.

To build PeleC and run a sample 3D flame problem:

  1. Have PeleC use the default submodules for AMReX, PelePhysics, and SUNDIALS in its own repo by simply performing:

    git clone --recursive [email protected]:AMReX-Combustion/PeleC.git
    cd PeleC/Exec/RegTests/PMF
    make TPL && make -j
    ./Pele3d.xxx.yyy.ex example.inp
    
  • Notes

    1. In the exec line above, xxx.yyy is a tag identifying your compiler and various build options, and will vary across pltaform. (Note that GNU compilers must be at least 4.8.4, and MPI should be at least version 3).
    2. The example is 3D premixed flame, flowing vertically upward through the domain with no gravity. The lateral boundaries are periodic. A detailed hydrogen model is used. The solution is initialized with a wrinkled (perturbed) 2D steady flame solution computed using the PREMIX code. Two levels of solution-adaptive refinement are automatically triggered by the presence of the flame intermediate, HO2.
    3. In addition to informative output to the terminal, periodic plotfiles are written in the run folder. These may be viewed with CCSE's Amrvis (<https://ccse.lbl.gov/Downloads/downloadAmrvis.html>) or Vis-It (<http://vis.lbl.gov/NERSC/Software/visit/>):
      1. In VisIt, direct the File->Open dialogue to select the file named "Header" that is inside each plotfile folder..
      2. With Amrvis, "amrvis3d plt00030", for example.

Dependencies

PeleC is built on the AMReX and PelePhysics libraries. PeleC also requires the SUNDIALS ODE solver library.

Development model

To add a new feature to PeleC, the procedure is:

  1. Create a branch for the new feature (locally):

    git checkout -b AmazingNewFeature
    
  2. Develop the feature, merging changes often from the development branch into your AmazingNewFeature branch:

    git commit -m "Developed AmazingNewFeature"
    git checkout development
    git pull                     [fix any identified conflicts between local and remote branches of "development"]
    git checkout AmazingNewFeature
    git rebase development        [fix any identified conflicts between "development" and "AmazingNewFeature"]
    

3a. Build and run the full test suite using CMake and CTest (See the Build directory for an example script). Please do not introduce warnings. PeleC is checked against clang-tidy and cppcheck in the CI. To use cppcheck and clang-tidy locally use these CMake options:

-DPELEC_ENABLE_CLANG_TIDY:BOOL=ON
-DPELEC_ENABLE_CPPCHECK:BOOL=ON

3b. Run clang-tidy by using an LLVM compiler and making sure clang-tidy is found during configure. Then make will run clang-tidy along with compilation. Once verifying cppcheck was found during configure, using the make cppcheck target should run its checks on the compile_commands.json database generated by CMake. More information on these checks can be seen in the CI files used for GitHub Actions in the .github/workflows directory.

3c. To easily format all source files before commit, use the following command:

find Source Exec \( -name "*.cpp" -o -name "*.H" \) -exec clang-format -i {} +
  1. Push feature branch to PeleC repository:

    git push -u origin AmazingNewFeature [Note: -u option required only for the first push of new branch]
    
  2. Submit a pull request through [email protected]:AMReX-Combustion/PeleC.git, and make sure you are requesting a merge against the development branch

  3. Check the CI status on Github and make sure the tests passed for merge request

Note

Github CI uses the CMake build system and CTest to test the core source files of PeleC. If you are adding source files, you will need to add them to the list of source files in the CMake directory for the tests to pass. Make sure to add them to the GNU make makefiles as well.

Test Status

Nightly test results for PeleC against multiple compilers and machines can be seen on its CDash page.

Documentation

The full documentation for Pele exists in the Docs directory; at present this is maintained inline using Sphinx Sphinx. With Sphinx, documentation is written in Restructured Text. reST is a markup language similar to Markdown, but with somewhat greater capabilities (and idiosyncrasies). There are several primers available to get started. One gotcha is that indentation matters.

cd Docs && mkdir build && cd build && cmake .. && make

Acknowledgment

This research was supported by the Exascale Computing Project (ECP), Project Number: 17-SC-20-SC, a collaborative effort of two DOE organizations -- the Office of Science and the National Nuclear Security Administration -- responsible for the planning and preparation of a capable exascale ecosystem -- including software, applications, hardware, advanced system engineering, and early testbed platforms -- to support the nation's exascale computing imperative.

pelec's People

Contributors

jrood-nrel avatar marchdf avatar rgrout avatar drummerdoc avatar hariswaran avatar hsitaram avatar emotheau avatar baperry2 avatar esclapez avatar ldowen avatar asmunder avatar marient avatar ennadelfen avatar shashanknrel avatar bssoriano avatar ccse avatar sreejithnrel avatar hnkolla avatar paroomk avatar

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.