#### Previous topic

Structure of the library

# Complete list of ESPRESO input parameters¶

The list contains all available input parameters. Parameters are displayed with the namespace, however, ESPRESO recongnizes only a parameter name. To set a particular parameter use the configuration file. Parameters in the file have the following form:

PARAMETER = VALUE


Parameters can be also set by command line arguments:

\$ ./espreso --PARAMETER=VALUE


It overrides the value set in the configuration file. Detailed description can be found here.

Enum types contains allowed values for an appropriate parameter. For parameter PARAM, the corresponding enum has name PARAMalternatives. To set a parameter to a particular alternative, use a number of a particular enum name.

## Mesh configuration¶

enum espreso::config::mesh::INPUTalternative

Values:

MATSOL = 0

Ansys generated by Matsol library.

WORKBENCH = 1

Ansys Workbench format.

OPENFOAM = 2

OpenFOAM format.

ESDATA = 3

ESPRESO binary format.

GENERATOR = 4

ESPRESO internal problem generator.

mesh::INPUTalternative espreso::config::mesh::INPUT

The type of an input problem.

It specifies the format of an input. Formats that support only few MPI processes (e.g. Ansys) can be converted to ESPRESO format by ‘decomposer’

std::string espreso::config::mesh::PATH

A path to an input problem.

A path to an input file in case of Workbench or ESPRESO Problem Generator. In case of other format, a path to the root director of an input probem.

size_t espreso::config::mesh::SUBDOMAINS

The number of sub-domains in each cluster.

The number of sub-domains should be set appropriate to a problem size. Big sub-domains increase time to solve them. Small sub-domains increase the size of the coarse problem.

The shared memory parallelization is mainly through sub-domains. Hence, the minimal number should be kept higher that the number of threads.

size_t espreso::config::mesh::FIX_POINTS

The number of fix points in each sub-domain.

Fix points are nodes used in the regularization process of stiffness matrix. It is not recommended to change the default value.

size_t espreso::config::mesh::CORNERS

The number of selected points on edges and faces.

TODO: Alex - co presne delaji cornery

bool espreso::config::mesh::VERTEX_CORNERS

All vertex points are marked as corner points.

The ‘vertex’ is a end point of the ‘edge’. If the ‘edge’ has not any end (‘edge’ is a circle), 4 uniformly distributed points are marked.

bool espreso::config::mesh::EDGE_CORNERS

Uniformly distributed points on all edges are marked as corner points.

The ‘edges’ are border lines of the ‘faces’. The number of corner points on each edge is determined by parameter ‘CORNERS’.

bool espreso::config::mesh::FACE_CORNERS

Uniformly distributed points on all faces are marked as corner points.

The ‘face’ is a common part between two sub-domains. The number of corner points on each face is determined by parameter ‘CORNERS’.

bool espreso::config::mesh::AVERAGE_EDGES

Values at the stiffness matrix corresponding to points on ‘edges’ are averaged.

ESPRESO contains only a premature state of the averaging. Always keep the default value!

bool espreso::config::mesh::AVERAGE_FACES

Values at the stiffness matrix corresponding to points on ‘faces’ are averaged.

ESPRESO contains only a premature state of the averaging. Always keep the default value!

## Assembler configuration¶

enum espreso::config::assembler::DISCRETIZATIONalternative

Values:

FEM = 0

Finite Element Method.

BEM = 1

Boundary Element Method.

assembler::DISCRETIZATIONalternative espreso::config::assembler::DISCRETIZATION

Discretization of an example.

Stiffness matrices are computed based on the discretization:

• Finite Element Method is used
• Boundary Element Method is used

## Solver configuration¶

enum espreso::config::solver::FETI_METHODalternative

Values:

TOTAL_FETI = 0

Total FETI.

HYBRID_FETI = 1

Hybrid Total FETI.

enum espreso::config::solver::PRECONDITIONERalternative

Values:

NONE = 0

No preconditioner is used.

LUMPED = 1

Lumped preconditioner.

WEIGHT_FUNCTION = 2

Weight function.

DIRICHLET = 3

Dirichlet preconditioner.

MAGIC = 4

Lubos’s preconditioner.

enum espreso::config::solver::REGULARIZATIONalternative

Values:

FIX_POINTS = 0

Fix points.

NULL_PIVOTS = 1

Randomly found null pivots of stiffness matrix.

enum espreso::config::solver::B0_TYPEalternative

Values:

CORNERS = 0

Gluing based on corners.

KERNELS = 1

Gluing based on kernels of faces.

enum espreso::config::solver::SCHUR_COMPLEMENT_PRECalternative

Values:

DOUBLE = 0

Double precision.

SINGLE = 1

Single precision.

enum espreso::config::solver::SCHUR_COMPLEMENT_TYPEalternative

Values:

GENERAL = 0

A full matrix is stored.

SYMMETRIC = 1

Store only triangle.

enum espreso::config::solver::CGSOLVERalternative

Values:

STANDARD = 0
PIPELINED = 1
FULL_ORTOGONAL = 2
GMRES = 3
enum espreso::config::solver::KSOLVERalternative

Values:

DIRECT_DP = 0

A direct solver with double precision.

ITERATIVE = 1

An iterative solver.

DIRECT_SP = 2

A direct solver with single precision.

DIRECT_MP = 3

A direct solver with mixed precision.

enum espreso::config::solver::F0SOLVERalternative

Values:

K_PRECISION = 0

The same precision as K solver.

DOUBLE = 1

Double precision.

enum espreso::config::solver::SASOLVERalternative

Values:

CPU_DENSE = 0
ACC_DENSE = 1
CPU_SPARSE = 2
double espreso::config::solver::EPSILON

The solver requested precision.

size_t espreso::config::solver::ITERATIONS

Maximum iterations for the solver.

solver::FETI_METHODalternative espreso::config::solver::FETI_METHOD

A variant of FETI method used by the solver.

solver::PRECONDITIONERalternative espreso::config::solver::PRECONDITIONER

Used preconditioner.

solver::REGULARIZATIONalternative espreso::config::solver::REGULARIZATION

A type of regularization of stiffness matrix.

In the case of a singular stiffness matrix, regularization has to be applied. When an example is loaded with mesh, it is possible to use regularization from fix points. It is faster then regularization from null pivots. However, null pivots are more general and usable even without mesh (e.g. when API is used).

bool espreso::config::solver::REDUNDANT_LAGRANGE

Use redundant Lagrange multipliers.

In the case of Hybrid Total FETI, ESPRESO compose gluing matrix for each cluster. If this option is on, the multipliers from the cluster gluing matrix will be also in global gluing matrix.

solver::B0_TYPEalternative espreso::config::solver::B0_TYPE

Type of cluster gluing matrix.

Sub-domains in each cluster have to be glued together. Gluing can be based on corners (random nodes at interfaces between sub-domains) or kernels of faces between sub-domains.

bool espreso::config::solver::USE_SCHUR_COMPLEMENT

Schur complement will be used.

solver::SCHUR_COMPLEMENT_PRECalternative espreso::config::solver::SCHUR_COMPLEMENT_PREC

Precision of Schur complement.

solver::SCHUR_COMPLEMENT_TYPEalternative espreso::config::solver::SCHUR_COMPLEMENT_TYPE
bool espreso::config::solver::COMBINE_SC_AND_SPDS

Combine usage of SC for Accelerator and Sparse Direct Solver for CPU.

bool espreso::config::solver::KEEP_FACTORS

Keep factors between iterations.

solver::CGSOLVERalternative espreso::config::solver::CGSOLVER

A type of conjugate gradient solver.

solver::KSOLVERalternative espreso::config::solver::KSOLVER

A type of stiffness matrix solver.

size_t espreso::config::solver::KSOLVER_SP_STEPS

Number of reiteration steps for single precision direct solver.

double espreso::config::solver::KSOLVER_SP_NORM

Iterative norm single precision direct solver.

solver::F0SOLVERalternative espreso::config::solver::F0SOLVER

A type of F0 solver.

solver::SASOLVERalternative espreso::config::solver::SASOLVER

A type of S alfa solver.

size_t espreso::config::solver::N_MICS

Number of used MIC accelerators.

Load balancing between host and Intel Xeon Phi.

size_t espreso::config::solver::TIME_STEPS

The number of time steps for transient problems.

## Output configuration¶

bool espreso::config::output::SAVE_MESH

Save input to VTK files.

bool espreso::config::output::SAVE_FIX_POINTS

Save fix points to VTK files.

bool espreso::config::output::SAVE_FACES

Save sub-domains common faces to VTK files.

bool espreso::config::output::SAVE_LINES

Save sub-domains common edges to VTK files.

bool espreso::config::output::SAVE_CORNERS

Save sub-domains common vertices to VTK files.

bool espreso::config::output::SAVE_DIRICHLET

Save nodes with Dirichlet condition to VTK files.

bool espreso::config::output::SAVE_AVERAGING

Save nodes averaged in stiffness matrix to VTK files.

bool espreso::config::output::SAVE_RESULTS

Save result computed by the solver to VTK files.

double espreso::config::output::SUBDOMAINS_SHRINK_RATIO

All sub-domains are shrunk by this ratio.

double espreso::config::output::CLUSTERS_SHRINK_RATIO

All clusters are shrunk by this ratio.

## Debugging configuration¶

std::string espreso::config::info::OUTPUT

An output directory for files generated by debug run.

When printMatrices is set, ESPRESO saves matrices to this directory. Matrices are divided into directories according to MPI processes. All matrices are printed in format {matrix}{sub-domain}.txt.

size_t espreso::config::info::VERBOSE_LEVEL

ESPRESO verbose level.

ESPRESO print an info based on verbose level. The default value is 0 and maximal value is 3. Higher value does not add any more information.

size_t espreso::config::info::TESTING_LEVEL

ESPRESO testing level.

ESPRESO contains an infrastructure for on-the-fly testing. Trivially testable values are always tested. Increasing the testing level turn time dependent testing on.

size_t espreso::config::info::MEASURE_LEVEL

ESPRESO measure level.

Measure the time for computing particular functions. In default, all measurements are disabled.

bool espreso::config::info::PRINT_MATRICES

The main ESPRESO debug feature. All matrices are printed.

ESPRESO print all matrices to ‘output’ directory. The FETI computation can be reproduces from these matrices by run ‘espreso.py’ in python directory.