Alya Features

 

Main features

  • Alya architecture is modular. It is composed by modules, services and a kernel.
- Modules solve each of the individual Physical problems.
- Services are a toolbox that provide a variety of independent procedures to be called by modules and kernel.
- Kernel contains the core of Alya, where the whole of the common procedures lies. It has all the basic stuff to be linked with at least one module and solve a problem sequentially.
  • It solves time-dependent Partial Differential Equations (PDEs) by using a numerical method. Variational formulations and the Finite Element Method (FEM) are preferred but Finite Volumes (FV), Finite Differences (FD) or other more exotic discretization methods can be easily programmed.
  • Time advance is numerically integrated by FD with trapezoidal rules. Monolithic implicit, by-block seggregated or explicit schemes are used. Higher order time schemes are also programmed, like Runge-Kutta’s or BDF.
  • It has a large database of element types and interpolation orders.
  • It can solve problems in mixed meshes, made of different types of elements.
  • Geometrically speaking, it is a code for non-structured meshes. That means that all meshes are treated as non-structured, even structured cartesian meshes. So no profit is taken from the fact that the mesh is structured.
  • Parallelization is external, internal or hybrid:
- External: Work distribution is achieved by sub-division of the original sequential problem in smaller problems running concurrently. Problem sub-division is done using METIS, an automatized mesh partitioner. Communication is done by MPI. 
- Internal: Work is distributed within the code loops using OpenMP. 
- Hybrid: Both parallelization strategies are used at the same time. This is very well suited for clusters of multicore CPUs. 
  • Typical coupling between problems is loosely done, although strongly coupled problems solution can be programmed. 
  • Portability is a must: Alya runs under Linux/Unix, Windows or MacOS. 
  • It is one code. There are no particular parallel or individual platform versions. Modules, services and kernel can be compiled individually and used a la carte
  • It is written in Fortran 90/95, with special care on the use of standard language features.

 

Alya’s architecture 

Alya is organized as a set of code parts that can be connected with each other and compiled independently. These parts are grouped in Kernel, Modules and Services.

Kernel: the Core 
The kernel contains everything that is needed to solve an individual problem sequentially. It is in charge of reading data and geometry, compute mesh and geometric stuff call the modules and services, control the workflow, set the format of result dumping, etc. The kernel is aware of which modules and services are running. It also provides some basic and low level mathematical tools.


Modules: the Physics 
A module is where each Physical problem is numerically solved. In a module, the discretized form of the governing equations is programmed, including all kinds of numerical subtleties of the method, the initial and boundary conditions, and so on. 

Services: the Toolbox 
The services are a group of tools that can be called at any moment by kernel, modules or
even among them which are related to specific tasks, such as Parallelization, Overset Meshes or Optimization.