My Project
programmer's documentation
Functions
cs_math.c File Reference
#include "cs_defs.h"
#include <assert.h>
#include <errno.h>
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <float.h>
#include <mpi.h>
#include "bft_error.h"
#include "bft_mem.h"
#include "cs_math.h"
Include dependency graph for cs_math.c:

Functions

void cs_f_math_sym_33_inv_cramer (const cs_real_t s[6], cs_real_t sout[6])
 
void cs_f_math_sym_33_product (const cs_real_t s1[6], const cs_real_t s2[6], cs_real_t sout[6])
 
void cs_f_math_reduce_sym_prod_33_to_66 (const cs_real_t s[3][3], cs_real_t sout[6][6])
 
void cs_math_set_machine_epsilon (void)
 Compute the value related to the machine precision. More...
 
double cs_math_get_machine_epsilon (void)
 Get the value related to the machine precision. More...
 
void cs_math_sym_33_eigen (const cs_real_t m[6], cs_real_t eig_vals[3])
 Compute all eigenvalues of a 3x3 symmetric matrix with symmetric storage. More...
 
void cs_math_33_eigen (const cs_real_t m[3][3], cs_real_t *eig_ratio, cs_real_t *eig_max)
 Compute max/min eigenvalues ratio and max. eigenvalue of a 3x3 symmetric matrix with non-symmetric storage. More...
 
void cs_math_3_length_unitv (const cs_real_t xa[3], const cs_real_t xb[3], cs_real_t *len, cs_real_3_t unitv)
 Compute the length (euclidien norm) between two points xa and xb in a cartesian coordinate system of dimension 3. More...
 
double cs_math_surftri (const cs_real_t xv[3], const cs_real_t xe[3], const cs_real_t xf[3])
 Compute the area of the convex_hull generated by 3 points. This corresponds to the computation of the surface of a triangle. More...
 
double cs_math_voltet (const cs_real_t xv[3], const cs_real_t xe[3], const cs_real_t xf[3], const cs_real_t xc[3])
 Compute the volume of the convex_hull generated by 4 points. This is equivalent to the computation of the volume of a tetrahedron. More...
 
void cs_math_fact_lu (cs_lnum_t n_blocks, int b_size, const cs_real_t *a, cs_real_t *a_lu)
 Compute LU factorization of an array of dense matrices of identical size. More...
 
void cs_math_fw_and_bw_lu (const cs_real_t a_lu[], int n, cs_real_t x[], const cs_real_t b[])
 Block Jacobi utilities. Compute forward and backward to solve an LU P*P system. More...
 

Detailed Description

Mathematical base functions.

Function Documentation

◆ cs_f_math_reduce_sym_prod_33_to_66()

void cs_f_math_reduce_sym_prod_33_to_66 ( const cs_real_t  s[3][3],
cs_real_t  sout[6][6] 
)

◆ cs_f_math_sym_33_inv_cramer()

void cs_f_math_sym_33_inv_cramer ( const cs_real_t  s[6],
cs_real_t  sout[6] 
)

◆ cs_f_math_sym_33_product()

void cs_f_math_sym_33_product ( const cs_real_t  s1[6],
const cs_real_t  s2[6],
cs_real_t  sout[6] 
)

◆ cs_math_33_eigen()

void cs_math_33_eigen ( const cs_real_t  m[3][3],
cs_real_t eig_ratio,
cs_real_t eig_max 
)

Compute max/min eigenvalues ratio and max. eigenvalue of a 3x3 symmetric matrix with non-symmetric storage.

Based on: Oliver K. Smith "eigenvalues of a symmetric 3x3 matrix", Communication of the ACM (April 1961) (Wikipedia article entitled "Eigenvalue algorithm")

Parameters
[in]m3x3 matrix
[out]eig_ratiomax/min
[out]eig_maxmax. eigenvalue

◆ cs_math_3_length_unitv()

void cs_math_3_length_unitv ( const cs_real_t  xa[3],
const cs_real_t  xb[3],
cs_real_t len,
cs_real_3_t  unitv 
)
inline

Compute the length (euclidien norm) between two points xa and xb in a cartesian coordinate system of dimension 3.

Parameters
[in]xacoordinate of the first extremity
[in]xbcoordinate of the second extremity
[out]lenpointer to the length of the vector va -> vb
[out]unitvunitary vector anlong va -> vb

◆ cs_math_fact_lu()

void cs_math_fact_lu ( cs_lnum_t  n_blocks,
int  b_size,
const cs_real_t a,
cs_real_t a_lu 
)

Compute LU factorization of an array of dense matrices of identical size.

Parameters
[in]n_blocksnumber of blocks
[in]b_sizeblock size
[in]amatrix blocks
[out]a_luLU factorizations of matrix blocks

◆ cs_math_fw_and_bw_lu()

void cs_math_fw_and_bw_lu ( const cs_real_t  a_lu[],
int  n,
cs_real_t  x[],
const cs_real_t  b[] 
)

Block Jacobi utilities. Compute forward and backward to solve an LU P*P system.

Parameters
[in]a_lumatrix LU factorization
[in]nmatrix size
[out]xsolution
[out]bright hand side

◆ cs_math_get_machine_epsilon()

double cs_math_get_machine_epsilon ( void  )

Get the value related to the machine precision.

◆ cs_math_set_machine_epsilon()

void cs_math_set_machine_epsilon ( void  )

Compute the value related to the machine precision.

◆ cs_math_surftri()

double cs_math_surftri ( const cs_real_t  xv[3],
const cs_real_t  xe[3],
const cs_real_t  xf[3] 
)
inline

Compute the area of the convex_hull generated by 3 points. This corresponds to the computation of the surface of a triangle.

Parameters
[in]xvcoordinates of the first vertex
[in]xecoordinates of the second vertex
[in]xfcoordinates of the third vertex
Returns
the surface of a triangle

◆ cs_math_sym_33_eigen()

void cs_math_sym_33_eigen ( const cs_real_t  m[6],
cs_real_t  eig_vals[3] 
)

Compute all eigenvalues of a 3x3 symmetric matrix with symmetric storage.

Based on: Oliver K. Smith "eigenvalues of a symmetric 3x3 matrix", Communication of the ACM (April 1961) (Wikipedia article entitled "Eigenvalue algorithm")

Parameters
[in]m3x3 symmetric matrix (m11, m22, m33, m12, m23, m13)
[out]eig_valssize 3 vector

◆ cs_math_voltet()

double cs_math_voltet ( const cs_real_t  xv[3],
const cs_real_t  xe[3],
const cs_real_t  xf[3],
const cs_real_t  xc[3] 
)

Compute the volume of the convex_hull generated by 4 points. This is equivalent to the computation of the volume of a tetrahedron.

Parameters
[in]xvcoordinates of the first vertex
[in]xecoordinates of the second vertex
[in]xfcoordinates of the third vertex
[in]xccoordinates of the fourth vertex
Returns
the volume of the tetrahedron.