Git Product home page Git Product logo

nekrs's Introduction

Nek5000

Short Tests Examples
Build Build Status

Nek5000 is a fast and scalable open source CFD solver.

Release Notes

Make sure to read the release notes before using the code.

Getting Started

See here.

Troubleshooting

If you run into problems compiling, installing, or running Nek5000, please send a message to the User's Group mailing list.

Reporting Bugs

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.

Contributing

Our project is hosted on GitHub. If you are planning a large contribution, we encourage you to discuss the concept here on GitHub and interact with us frequently to ensure that your effort is well-directed.

nekrs's People

Contributors

alikarakus avatar aprilnovak avatar luspi avatar malachitimothyphillips avatar nchristensen avatar pwang234 avatar ronrahaman avatar stgeke avatar yslan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nekrs's Issues

Avoid using system()

Currently our jit-compilation relies on system(). This can be troublesome (see e.g. #166) and lead to an undefined behaviour.

Updates:
d39e9d3: This commit ensures that we don't call system() provided that the user runs nrspre first.

  1. Cross compilation
    Our current --build-only will not work in a cross compiling context using a different front end (compiler, CPU-arch, GPU etc). In this case one has precompile on the compute node provided this is supported.

  2. OCCA relies on system() to jit-compile kernels. Using nrspre will precompile all required kernels. The actual will then load the kernels from cache. Another option (not available yet) would be to switch a true runtime compilation (e.g. NVRTC for Cuda). However this might be not supported for all backends. Moreover it doesn't allow caching.

Eliminate all global + o(P) storage

There is some libP legacy during the setup phase:

Non-scaleable communication:

  • non-scaleable MPI_Allgather(...)
  • non-scaleable MPI_AllToAll(ellipticBuildContinuousHex3D, meshParallelConnect)

Non-scaleable data:

  • mesh->boundaryInfo holds (face vertex ids, boundaryID) for the whole mesh

Update to new libP version (staging branch)

  • switch to new bcData struct for all elements types
  • disable TOMBO support for tris, tets
  • remove makefile changes (except if they are HYPRE related)
  • don't build HYPRE by default
  • merge our libP changes into libP's experimental branch
  • port ins to staging (Noel)
  • update nekRS to staging

Encapsulate libP

Encapsulate into a namespace and load needed function dynamically at runtime.

Current dependencies:

  • mesh struct
  • setupAide struct
  • elliptic struct

Add linAlg Class

This can include libP's linAlg (available in staging) and our own operations.

Add scalar (temperature) transport

  • merge CDS PR into our libP next branch
  • update to latest BC treatment
  • add tolerance and diffusitivty to cds struct
  • add pointer to cds struct to ins struct
  • Integrate CDS solver into nekRS
  • add our own insSetup() and clean it up
  • add CDS to nekRS build system
  • pass number of scalars to mkSIZE
  • set nek's ifheat and npscal
  • read nek's boundaryID into mesh->EtoB
  • read in insSetup nek's cbc (for field 1 and 2) into ins->EtoB and cds->EtoB
  • add scalar support to nek_copyTo() and nek_copyFrom ()
  • call cdsSetup in nekrs.cpp:main
  • call cdsSolveStep in timerstepper:runPlan4
  • BC Treatment
  • Introduce ins->EtoB and cds->EtoB
  • Support Dirichlet + non-zero Neumann (cdsDirichletCondition/cdsNeumannCondition)
  • Add sM and sP to bcData struct
  • velocity value shall be accessible in cdsDirichletCondition and cdsNeumannCondition
  • scalar value shall be accessible in insDirichletCondition and insNeumannCondition
  • Support user specified source term
  • add scalarSource function pointer to udf sturct
  • call function pointer in timerstepper:runPlan4
  • Extend par reader
  • read tolerance and diffusivity and set correspondig internal libP parameter
  • Add RBC example

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.