All Projects → xcompact3d → Incompact3d

xcompact3d / Incompact3d

Licence: gpl-3.0
New version of our solver for the incompressible Navier-Stokes equations

Programming Languages

fortran
972 projects

Projects that are alternatives of or similar to Incompact3d

Gridfluidsim3d
A PIC/FLIP fluid simulation based on the methods found in Robert Bridson's "Fluid Simulation for Computer Graphics"
Stars: ✭ 653 (+970.49%)
Mutual labels:  fluid-simulation
Dflo
Discontinuous Galerkin solver for compressible flows
Stars: ✭ 31 (-49.18%)
Mutual labels:  mpi
T Flows
Program for Simulation of Turbulent Flows
Stars: ✭ 47 (-22.95%)
Mutual labels:  mpi
Mpimemu
MPI Memory Consumption Utilities
Stars: ✭ 17 (-72.13%)
Mutual labels:  mpi
Prpl
parallel Raster Processing Library (pRPL) is a MPI-enabled C++ programming library that provides easy-to-use interfaces to parallelize raster/image processing algorithms
Stars: ✭ 15 (-75.41%)
Mutual labels:  mpi
Latticeboltzmann
A 2D Lattice Boltzmann program
Stars: ✭ 34 (-44.26%)
Mutual labels:  fluid-simulation
Ohpc
OpenHPC Integration, Packaging, and Test Repo
Stars: ✭ 544 (+791.8%)
Mutual labels:  mpi
Brunetons Ocean
Brunetons ocean in Unity
Stars: ✭ 60 (-1.64%)
Mutual labels:  fluid-simulation
Ca Fluid Simulation
3D Fluid Simulation for Unity based on a Cellular Automaton
Stars: ✭ 29 (-52.46%)
Mutual labels:  fluid-simulation
Adda
ADDA - light scattering simulator based on the discrete dipole approximation
Stars: ✭ 43 (-29.51%)
Mutual labels:  mpi
Edge
Extreme-scale Discontinuous Galerkin Environment (EDGE)
Stars: ✭ 18 (-70.49%)
Mutual labels:  mpi
Pp Mm A03
Parallel Processing - Matrix Multiplication (Cannon, DNS, LUdecomp)
Stars: ✭ 12 (-80.33%)
Mutual labels:  mpi
Pixelflow
A Processing/Java library for high performance GPU-Computing (GLSL). Fluid Simulation + SoftBody Dynamics + Optical Flow + Rendering + Image Processing + Particle Systems + Physics +...
Stars: ✭ 978 (+1503.28%)
Mutual labels:  fluid-simulation
Splishsplash
SPlisHSPlasH is an open-source library for the physically-based simulation of fluids.
Stars: ✭ 735 (+1104.92%)
Mutual labels:  fluid-simulation
Quickpic Opensource
Open source repository for QuickPIC
Stars: ✭ 55 (-9.84%)
Mutual labels:  mpi
Kratos
Kratos Multiphysics (A.K.A Kratos) is a framework for building parallel multi-disciplinary simulation software. Modularity, extensibility and HPC are the main objectives. Kratos has BSD license and is written in C++ with extensive Python interface.
Stars: ✭ 558 (+814.75%)
Mutual labels:  mpi
Qball
Qball (also known as [email protected]) is a first-principles molecular dynamics code that is used to compute the electronic structure of atoms, molecules, solids, and liquids within the Density Functional Theory (DFT) formalism. It is a fork of the Qbox code by Francois Gygi.
Stars: ✭ 33 (-45.9%)
Mutual labels:  mpi
Ocgis
OpenClimateGIS is a set of geoprocessing and calculation tools for CF-compliant climate datasets.
Stars: ✭ 60 (-1.64%)
Mutual labels:  mpi
Polyaxon Examples
Code for polyaxon tutorials and examples
Stars: ✭ 57 (-6.56%)
Mutual labels:  mpi
Blender Flip Fluids
FLIP Fluids is a powerful liquid simulation plugin that gives you the ability to create high quality fluid effects all within Blender, the free and open source 3D creation suite.
Stars: ✭ 983 (+1511.48%)
Mutual labels:  fluid-simulation

Linux Build Status

The Xcompact3d code

Xcompact3d is a Fortran-MPI based, finite difference high-performance code for solving the incompressible or low Mach number Navier-Stokes equations with an arbitrary number of scalar transport equations.

This repository contains a major upgrade in the Xcompact3d code. The new version is faster, more flexible and user friendly.

The main homepage for the original Incompact3d can be found at incompact3d.com. You can find a list of the work related to the code.

This is the GitHub repository of Xcompact3d source code, including instructions for running and compiling Xcompact3d, below.

Resources

New users and developers are welcome to join.

External Resources

Main improvements/changes

Benchmark test cases for code comparison

We estabilished a solid and easy way to run a range of benchmark test cases to verify the code. Xcompact3d now supports multiple cases, selectable at runtime in the parameter file input.i3d, including a user-defined case (note this will require editing the setup in src/BC-User.f90 and recompiling, check the other setup files src/BC-*.f90 for guidance). The following cases are set to match the parameters for cases of reference articles obtained with different codes.

Code Flow configuration BC File Reference Dataset
1 Gravity Current Lock-exchange Necker et al. (2002)
2 Taylor-Green Vortices TGV Beck et al. (2014)
3 Periodic Channel Channel-flow Moser, Kim & Mansour (1999) Dataset
5 Flow over a Cylinder Cylinder Mittal and Balachandar (1995)

N.B. Other cases are in preparation.

New compiling FLAGS

-DDOUBLE_PREC - use double-precision -DSAVE_SINGLE - save 3D data in single-precision -DDEBG - debuggin incompact3d.f90

Note: In order to compile the code with the apropiate flags you must enter the -D$FLAG, i.e., -DDOUBLE_PREC

Compiled code performance

Xcompact3d is designed to run on laptops/workstations up to large clusters. We support the gfortran, ifort and ftn compilers which can be selected at compile time by

make CMP=gcc make CMP=intel make CMP=cray

respectively (it will default to gfortran otherwise). Note that we use gfortran for development, therefore not all optimisations are enabled by default - if you want to perform production runs using gfortran, adding -O3 to the FFLAGS for CMP=gcc should provide a significant speed up.

Source Download and Compilation

First, make sure you have all the required dependencies installed. Then, acquire the source code by cloning the git repository:

git clone [email protected]:xcompact3d/Incompact3d.git

(If you are behind a firewall, you may need to use the https protocol instead of the git protocol:

git config --global url."https://".insteadOf [email protected]

Be sure to also configure your system to use the appropriate proxy settings, e.g. by setting the https_proxy and http_proxy variables.)

By default you will be building the latest master version of Xcompact3d, to use the release preview you must checkout the release branch

git checkout release

Now run make to build the Xcompact3d executable. To perform a parallel build, use make -j N and supply the maximum number of concurrent processes. (See [Platform Specific Build Notes] for details.) This takes a while, but only has to be done once. If the defaults in the build do not work for you, and you need to set specific make parameters, you can save them in Make.user. The build will automatically check for the existence of Makefile and use it if it exists. Building Xcompact3d requires very little of disk space and virtual memory.

Note: The compiling process

Once it is built, you can run the Xcompact3d executable using its full path in the directory created above (the Xcompact3d directory).

Now you should be able to run Xcompact3d like this:

mpirun -n 4 ./xcompact3d ./examples/<EXAMPLE>/input.i3d

If a input.i3d file is not provide, xcompact3d will look for it locally (i.e. try to load ./input.i3d).

If everything works correctly, you will see a Xcompact3d banner and an interactive prompt into which you can enter expressions for evaluation. (Errors related to libraries might be caused by old, incompatible libraries sitting around in your PATH. In this case, try moving the Xcompact3d directory earlier in the PATH).

Updating an existing source tree

If you have previously downloaded incompact3d using git clone, you can update the existing source tree using git pull rather than starting anew:

cd incompact3d
git pull && make

Assuming that you had made no changes to the source tree that will conflict with upstream updates, these commands will trigger a build to update to the latest version.

General troubleshooting

  1. Over time, the base library may accumulate enough changes such that the bootstrapping process in building the system image will fail. If this happens, the build may fail with an error like

     *** This error is usually fixed by running 'make clean'. If the error persists, try 'make cleanall' ***
    

    As described, running make clean && make is usually sufficient. Occasionally, the stronger cleanup done by make cleanall is needed.

Platform-Specific Notes

Linux

General

  • GCC version 4.7 or later is required to compile the code.

We recommended that you remove the limits of the environment (e.g. in .bash_profile)

ulimit -c unlimited
ulimit -s unlimited

You must exit and re-login from your terminal for the change to take effect

ulimit -a

Architecture Customization

Xcompact3d can be compiled for a non-generic architecture by configuring the ARCH Makefile variable. See the appropriate section of Makefile for additional customization options, such as MARCH and CPU_TARGET. You can also set march=native for a maximum-performance build customized for the current machine CPU.

Ubuntu

In order to compile and execute Xcompact3d in the latest Ubuntu version please install the following packages:

sudo apt install gfortran libopenmpi-dev

Fedora/RHEL/CentOS

On RHEL/CentOS 6 systems:

sudo dnf install gcc-gfortran

OS X

You need to have the current Xcode command line utilities installed: run xcode-select --install in the terminal. You will need to rerun this terminal command after each OS X update, otherwise you may run into errors involving missing libraries or headers. You will also need a 64-bit gfortran to compile the code. The gfortran-4.7 (and newer) compilers in Brew, Fink, and MacPorts work for building Xcompact3d. On current systems, we recommend that you install the command line tools as described above. Older systems do not have a separate command line tools package from Apple, and will require a full Xcode install. On these, you will need at least Xcode 4.3.3. In Xcode prior to v5.0, you can alternatively go to Preferences -> Downloads and select the Command Line Utilities.

GitHub Configuration

To add you SSH key to your GitHub account please follow the steps https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/ or just copy the content of the id_rsa.pub file to your clipboard, go to Personal settings and add a new SSH key:

cat ~/.ssh/id_rsa.pub
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].