| Short Tests
| Examples
|
|-----------------|---------------------|------------------|-------------------|---------------|
| | |
Nek5000 is an open source, fast and scalable spectral element code designed to simulate:
- unsteady incompressible Navier-Stokes flows and magnetohydrodynamics (MHD)
- low Mach-number flows
- heat transfer and scalar transport
- Written in Fortran 77 and C
- Pure MPI for parallelization
- Proven scalability to over a million processes
- Easy-to-build and easy-to-use
- High-order conforming curved quadrilateral/hexahedral meshes
- 3rd order CFL adaptive semi-implicit timestepping
- Efficient preconditioners
- Parallel I/O
- Moving meshes and free surface flow
- Lagrangian particle tracking
- Conjugate fluid-solid heat transfer
- uRANS and LES turbulence models
- Interface to VisIt for parallel data analysis and visualization
You can download the latest release of Nek5000 here.
- Unpack the tarball to
~/Nek5000
- Add
~/Nek5000/bin
to your shell search path - Copy
~/Nek5000/short-tests/eddy
to~/nekcases/eddy
- Copy
~/Nek5000/core/makenek
to~/nekcases/eddy
- Go to
~/nekcases/eddy
and run./makenek eddy
(see makenek for build options) - You can run the case using two processes with
nekmpi eddy 2
Note: For more information see here
Visit our website
If you run into problems compiling, installing, or running Nek5000, first check the User's Guide. If you are not able to find a solution to your problem there, please send a message to the User's Group mailing list.
Nek5000 is hosted on GitHub and all bugs are reported and tracked through the Issues feature on GitHub. However, GitHub Issues should not be used for common troubleshooting purposes. If you are having trouble installing the code or getting your model to run properly, you should first send a message to the User's Group mailing list. If it turns out your issue really is a bug in the code, an issue will then be created on GitHub. If you want to request that a feature be added to the code, you may create an Issue on GitHub.
If you have improvements to Nek5000, send us your pull requests! If you are planning a large contribution, we encourage you to discuss the concept here on GitHub (just open a pull-reqest) and interact with us frequently to ensure that your effort is well-directed. Our project is hosted on GibHub. The main repository will always hold two evergreen branches:
develop
master
The main branch should be considered develop
and will be the main branch where the source code of HEAD
always reflects a state with the latest delivered development changes for the next release. As a developer, you will you typically be branching and merging from develop
.
Consider master
to always represent the latest code deployed to production. During day to day development, the master
branch will not be interacted with. When the source code in the develop
branch is stable and has been deployed, all of the changes will be merged into master
and tagged with a release number.
For those just getting started with GitHub, here a short how-to:
- Sign up on GibHub
- Fork our project on GitHub
- Download fork with
git clone -o myfork https://github.com/<username>/Nek5000.git ~/Nek5000
- Add our repo
cd ~/Nek5000; git remote add origin https://github.com/Nek5000/Nek5000.git
- Download our repo
git fetch origin
- Set upstream for local develop branch
git branch --set-upstream develop remotes/origin/develop
- Run
~/Nek5000/bin/git-hub setup —u <your username on GitHub> --global
- Add this to your [hub] section in
~/.gitconfig
:
[hub]
...
upstream = Nek5000/Nek5000
forkremote = myfork
- Create a branch hosting your changes with
nekgit_co <my branch name> develop
. The core idea is that all development should take place in a dedicated branch instead of the local development branch. - Implement your changes. Make sure your change is atomic and consistent. You can work on multiple branches simultaneously. Just do a
git checkout <your branch name>
to change the branch. Note, this will update the files in your working directory (~/Nek5000). To compare your files with our develop repo usegit diff origin/develop
. - Commit the changes to your local repo using
git commit -a -m 'a descriptive comment'
. Do this frequently to save your work (otherwise you cannot switch branches). - Periodically, changes made in our Nek5000 repo should be pulled back into your branch by
git pull
. - If there are no merge conflicts, go to the next step. In case of conflicts edit the unmerged files in question. Merge conflicts are indicated by the conflict marker
<<<<<<<
in your file. If you are done with all files, rungit add .
and do agit commit
to indicate that all conflicts have been resolved. - Assuming you are happy with your change, run
nekgit_push
. Now you should be able to see your pull request on GitHub. The core developers will review your change and discuss potential modifications. We cannot consider your merge request if it is outdated or does not pass the regression tests. Please include a short-test in case of a new feature. When your pull request was merged or closed, you can delete your branch (created in step 1) withnekgit_rm <my branch name>
. - You may want to set your working directory back to our latest develop branch. To do this just run
git checkout develop; git pull
. After your pull reqest was merged, you have to update your local develop branch again (git pull) to see your change.
Here's a brief description of each top-level directory:
####core
contains the majority of the Nek5000 application sources.
####jl
contains gather/scatter communication (gslib), interpolation, and preconditioners written in highly general C code.
####bin
contains scripts for running nek5000 and manipulating its output.
contains the sources for the pre- and post-processing tools which are stand-alone.
contains light-weight regression tests for validation.
contains nothing. Its purpose it to provide a consistent place for 3rd part plugin/toolbox developers to place their code.