Skip to content

spatel81/nekRS

 
 

Repository files navigation

nekRS + Python


Build Status License DOI

nekRS. See nekRS for more info about capabilities, etc.. The purpose of this branch is to demonstrate how one may deploy Python frameworks within nekRS.

Build Instructions

Requirements:

  • A conda environment which contains NumPy and CuPY
  • All the requirementss for the stand-alone version of nekRS (e.g. Cmake, MPI, etc.)

Clone this branch:

git clone -b test_branch https://github.com/spatel81/nekRS.git 

The master branch always points to the latest stable release of the stand-alone nekRS code.

Configure the cmake script nrsconfig.sh by setting the proper paths to Python-C++ API and NumPY headers/libraries; i.e. modify CONDA_DIR and NUMPY_DIR variables accordingly. The current script include paths for the ThetaGPU system.

To build and install the code run:

./nrsconfig
cmake --build ./build --target install -j8

Please delete instead of overwriting your old build and install directory before updating. Build settings can be customized by environment variables. After installation you may want to adjust $NEKRS_HOME/nekrs.conf to your environment.

Setting the Enviroment

Assuming you run bash and your install directory is $HOME/.local/nekrs, add the following line to your $HOME/.bash_profile:

export NEKRS_HOME=$HOME/.local/nekrs
export PATH=$NEKRS_HOME/bin:$PATH

then type source $HOME/.bash_profile in the current terminal window.

or...

you can source the files in the env directory of this branch. These load the proper modules for your system. At the moment, we have a script for ThetaGPU. Please modify NEKRS_HOME to your preference.

source env/thetaGPU/set_modules.sh

activate your conda environment

conda activate

Run the Code

We try hard not to break userland but the code is evolving quickly so things might change from one version to another without being backward compatible. Please consult RELEASE.md before using the code.

We have a test example which embeds the Python-C++ interpreter into nekRS via the plugin and user-defined files (UDF) framework. As of 6/14/22, these are maintained in the plugin and udf directories in src

To run a stand-alone nekRS examples do

cd $NEKRS_HOME/examples/turbPipePeriodic
mpirun -np 2 nekrs --setup turbPipe.par

To run an example with the Python-C++ interpreter embedded into the UDFs do

cd $NEKRS_HOME/examples/00_tgv_python
mpirun -np 1 nekrs --setup tgv.par

For convenience we provide various launch scripts in the bin directory.

Documentation

For documentation, see our readthedocs page. For now it's just a dummy. We hope to improve documentation to make it more useable for new users.

License

nekRS is released under the BSD 3-clause license (see LICENSE file). All new contributions must be made under the BSD 3-clause license.

Acknowledgment

This research was supported by the Exascale Computing Project (17-SC-20-SC), a joint project of the U.S. Department of Energy's Office of Science and National Nuclear Security Administration, responsible for delivering a capable exascale ecosystem, including software, applications, and hardware technology, to support the nation's exascale computing imperative. This research used resources of the Argonne Leadership Computing Facility, which is a DOE Office of Science User Facility supported under Contract DE-AC02-06CH11357

References

About

our next generation code

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 55.8%
  • C 40.1%
  • CMake 2.0%
  • Fortran 1.1%
  • Other 1.0%