Written by CEA/IFPEN and Contributors
(C) Copyright 2000-2024 CEA/IFPEN. All rights reserved.
All content is the property of the respective authors or their employers.
For more information regarding authorship of content, please consult the listed source code repository logs.
Development platform for unstructured 2D or 3D parallel computing codes.
Arcane is a development environment for parallel numerical calculation codes. It supports the architectural aspects of a calculation code, such as data structures for meshing and parallelism, as well as more environment-related aspects such as dataset configuration.
Table of Contents:
- Documentation
- Changelog
- Key features
- Getting started
- Examples of how to use the Arcane Framework
- Rencontres Arcanes
- Screenshots
The documentation is available online and is generated and stored in this GitHub repository.
This documentation is intended for Arcane users.
- User documentation (French)
- User documentation (English) (Soon)
This documentation is intended for Arcane developers.
- Developer documentation (French)
- Developer documentation (English) (Soon)
This documentation is intended for Alien users and developers.
The changelog is available in the documentation or in this repository.
Massively parallel
- Work on simple laptop or on a supercomputer (run case on more than 100k CPU core)
- Domain partitioning with message-passing (MPI, Shared Memory or hydrid MPI/Shared Memory)
- Unified Accelerator API (experimental)
- CUDA
- ROCM
- SYCL (experimental)
- oneTBB (experimental)
- Basic support for explicit vectorization
- Automatic Load Balancing with cell migration with several mesh partitioner
- ParMetis
- PTScotch
- Zoltan
I/O
- Supported input mesh file type:
- VTK Legacy (2.0 and 4.2)
- VTK VTU
- Lima
- MED
- xmf
- Gmsh (4.1)
- Post-processing with the following supported output file type:
- VTKHDF (V1 and V2)
- Ensight7Gold
- Time history curves
- Support for checkpoint/restarting for long simulation
Mesh entities
- Multiple mesh entities (items) are usable in Arcane:
- Node (0D), Edge (1D), Face and Cells
- Particle
- DoF (Degree of freedom)
- Full Connectivities between items (cell to node, node to edge, ...)
- Support for user connectivities
- Easy-to-use Arcane mesh variables on any kind of item
- double, Int32, Int64, ..
- Scalar, 1D, 2D or multi-dim
- and many more...
- Several kind of meshes are supported (1D, 2D and 3D)
- unstructured
- unstructured with adaptative refinement
- cartesian (experimental)
- cartesian with patch refinement (AMR) (experimental)
- polyedral mesh (any number of edges/faces per cell)
- Meshes are fully dynamic (adding/removing cells)
- All the connectivities and variables are usable on accelerators
Multi-constituents support
- Two levels of constituents (environment and materials)
- Any cell variable may have values par constituant
Performance and Verification and Validation
- Bit-to-bit comparison for Arcane variables
- Between-synchronizations comparing
- Unit test system integration
- Automatic profiling of loops using accelerator API
- Automatic profiling with sampling using Papi library or signal using SIGPROF
- Automatic use of CUDA CUPTI library to track unified memory (USM) moves between host and device
Decoupled and extensible framework
- Handling of case options via a descriptor file based on XML (axl files)
- Automatic generation of documentation
- Notion of Service (plugin) with separated interface/implementation to extend functionalities
- Notion of independant Modules to enable modularity
- Limited usage of C++ templates to make extensibility easier
Extensions to other langages
- Most of the classes are available in C#
- Python wrapping (work in progress, available at end of 2024)
Algebraic manipulation
- Use of Alien library to handle linear systems
- Coupling with several linear solver libraries
- Hypre
- Trilinos
- PETSc
Other functionalities
- Standalone mode to use only some functionalities of Arcane
- mesh connectivities
- accelerator API
- Handling of time loop with automatic support to go back to a previous iteration
To compile the Arcane Framework, you need an x86 or ARM64 CPU, Linux OS or Windows OS and a C++ compiler with a version that supports C++20 or higher.
For all other dependencies and more information, check out the Compiling/Installing guide.
Click here if the documentation is not available
To prepare your computer :
- Ubuntu 24.04
- Ubuntu 22.04 and CMake instructions
- Ubuntu 20.04 and CMake instructions
- AlmaLinux/RedHat 9 and CMake instructions
- ArchLinux based
To build and install Arcane:
Docker images with the Arcane framework installed are available in this GitHub repository. More information here.
Spack recipes for Arcane are available here.
An introductory chapter with the construction of a Hello world is available here.
Examples of applications using Arcane are available on GitHub. Here is a non-exhaustive list:
A set of mini-applications to evaluate Arcane functionalities. These are a good basis for getting started with Arcane.
Arcane-based application for solving different geosciences problems.
Very simple codes to test Finite Element Methods using Arcane.
Finite volume code for solving hydrodynamic equations: Lagrangian or Eulerian simulations.
The next Rencontres Arcane are scheduled on Monday, the 24th March, 2025.
Les Rencontres Arcane on April 17th 2023.
The previous presentations are stored here.
Transient elastodynamics with ArcaneFEM
More Screenshots from ArcaneFEM
Aerodynamics
Bilaplacian
Linear elasticity
Electrostatics
Solving Fourier equation
Solving Laplace equation
Solving Poisson equation
Water concentration in a porous material with Sharc