DAMASK with grid solvers  Revision: v2.0.3-2204-gdb1f2151
The Düsseldorf Advanced Material Simulation Kit with Grid Solvers
math.f90 File Reference

Go to the source code of this file.

Data Types

interface  math::math_eye
 

Modules

module  math
 Mathematical library, including random number generation and tensor representations.
 

Functions/Subroutines

subroutine math::math_init
 initialization of random seed generator and internal checks More...
 
recursive subroutine math::math_sort (a, istart, iend, sortDim)
 Quicksort algorithm for two-dimensional integer arrays. More...
 
integer function qsort_partition (a, istart, iend, sort)
 Partitioning required for quicksort. More...
 
pure real(preal) function, dimension(sum(how)) math::math_expand (what, how)
 vector expansion More...
 
pure integer function, dimension(n) math::math_range (N)
 range of integers starting at one More...
 
pure real(preal) function, dimension(d, d) math::math_identity2nd (d)
 second rank identity tensor of specified dimension More...
 
pure real(preal) function, dimension(d, d, d, d) math::math_identity4th (d)
 symmetric fourth rank identity tensor of specified dimension More...
 
real(preal) pure function math::math_levicivita (i, j, k)
 permutation tensor e_ijk More...
 
real(preal) pure function math::math_delta (i, j)
 kronecker delta function d_ij More...
 
pure real(preal) function, dimension(3) math::math_cross (A, B)
 cross product a x b More...
 
pure real(preal) function, dimension(size(a, 1), size(b, 1)) math::math_outer (A, B)
 outer product of arbitrary sized vectors (A ⊗ B / i,j) More...
 
real(preal) pure function math::math_inner (A, B)
 inner product of arbitrary sized vectors (A · B / i,i) More...
 
real(preal) pure function math::math_tensordot (A, B)
 double contraction of 3x3 matrices (A : B / ij,ij) More...
 
pure real(preal) function, dimension(3, 3) math::math_mul3333xx33 (A, B)
 matrix double contraction 3333x33 = 33 (ijkl,kl) More...
 
pure real(preal) function, dimension(3, 3, 3, 3) math::math_mul3333xx3333 (A, B)
 matrix multiplication 3333x3333 = 3333 (ijkl,klmn) More...
 
pure real(preal) function, dimension(3, 3) math::math_exp33 (A, n)
 3x3 matrix exponential up to series approximation order n (default 5) More...
 
pure real(preal) function, dimension(3, 3) math::math_inv33 (A)
 Cramer inversion of 3x3 matrix (function) More...
 
pure subroutine math::math_invert33 (InvA, DetA, error, A)
 Cramer inversion of 3x3 matrix (subroutine) More...
 
real(preal) function, dimension(3, 3, 3, 3) math::math_invsym3333 (A)
 Inversion of symmetriced 3x3x3x3 matrix. More...
 
subroutine math::math_invert (InvA, error, A)
 invert quadratic matrix of arbitrary dimension More...
 
pure real(preal) function, dimension(3, 3) math::math_symmetric33 (m)
 symmetrize a 3x3 matrix More...
 
pure real(preal) function, dimension(6, 6) math::math_symmetric66 (m)
 symmetrize a 6x6 matrix More...
 
pure real(preal) function, dimension(3, 3) math::math_skew33 (m)
 skew part of a 3x3 matrix More...
 
pure real(preal) function, dimension(3, 3) math::math_spherical33 (m)
 hydrostatic part of a 3x3 matrix More...
 
pure real(preal) function, dimension(3, 3) math::math_deviatoric33 (m)
 deviatoric part of a 3x3 matrix More...
 
real(preal) pure function math::math_trace33 (m)
 trace of a 3x3 matrix More...
 
real(preal) pure function math::math_det33 (m)
 determinant of a 3x3 matrix More...
 
real(preal) pure function math::math_detsym33 (m)
 determinant of a symmetric 3x3 matrix More...
 
pure real(preal) function, dimension(9) math::math_33to9 (m33)
 convert 3x3 matrix into vector 9 More...
 
pure real(preal) function, dimension(3, 3) math::math_9to33 (v9)
 convert 9 vector into 3x3 matrix More...
 
pure real(preal) function, dimension(6) math::math_sym33to6 (m33, weighted)
 convert symmetric 3x3 matrix into 6 vector More...
 
pure real(preal) function, dimension(3, 3) math::math_6tosym33 (v6, weighted)
 convert 6 vector into symmetric 3x3 matrix More...
 
pure real(preal) function, dimension(9, 9) math::math_3333to99 (m3333)
 convert 3x3x3x3 matrix into 9x9 matrix More...
 
pure real(preal) function, dimension(3, 3, 3, 3) math::math_99to3333 (m99)
 convert 9x9 matrix into 3x3x3x3 matrix More...
 
pure real(preal) function, dimension(6, 6) math::math_sym3333to66 (m3333, weighted)
 convert symmetric 3x3x3x3 matrix into 6x6 matrix More...
 
pure real(preal) function, dimension(3, 3, 3, 3) math::math_66tosym3333 (m66, weighted)
 convert 66 matrix into symmetric 3x3x3x3 matrix More...
 
pure real(preal) function, dimension(3, 3, 3, 3) math::math_voigt66to3333 (m66)
 convert 66 Voigt matrix into symmetric 3x3x3x3 matrix More...
 
real(preal) function math::math_samplegaussvar (meanvalue, stddev, width)
 draw a random sample from Gauss variable More...
 
subroutine math::math_eigh (m, w, v, error)
 eigenvalues and eigenvectors of symmetric matrix More...
 
subroutine math::math_eigh33 (m, w, v)
 eigenvalues and eigenvectors of symmetric 3x3 matrix using an analytical expression and the general LAPACK powered version for arbritrary sized matrices as fallback More...
 
real(preal) function, dimension(3, 3) math::math_rotationalpart (m)
 rotational part from polar decomposition of 3x3 tensor More...
 
pure real(preal) function, dimension(3, 3) eigenvectorbasis (m)
 eigenvector basis of positive-definite 3x3 matrix More...
 
real(preal) function, dimension(size(m, 1)) math::math_eigvalsh (m)
 Eigenvalues of symmetric matrix. More...
 
real(preal) function, dimension(3) math::math_eigvalsh33 (m)
 eigenvalues of symmetric 3x3 matrix using an analytical expression More...
 
pure real(preal) function, dimension(3) math::math_invariantssym33 (m)
 invariants of symmetrix 3x3 matrix More...
 
integer pure function math::math_factorial (n)
 factorial More...
 
integer pure function math::math_binomial (n, k)
 binomial coefficient More...
 
integer pure function math::math_multinomial (alpha)
 multinomial coefficient More...
 
real(preal) pure function math::math_voltetrahedron (v1, v2, v3, v4)
 volume of tetrahedron given by four vertices More...
 
real(preal) pure function math::math_areatriangle (v1, v2, v3)
 area of triangle given by three vertices More...
 
real(preal) pure elemental function math::math_clip (a, left, right)
 limits a scalar value to a certain range (either one or two sided) More...
 
subroutine, private math::unittest
 check correctness of some math functions More...
 

Variables

real(preal), parameter math::pi = acos(-1.0_pReal)
 ratio of a circle's circumference to its diameter More...
 
real(preal), parameter math::indeg = 180.0_pReal/PI
 conversion from radian into degree More...
 
real(preal), parameter math::inrad = PI/180.0_pReal
 conversion from degree into radian More...
 
complex(preal), parameter math::twopiimg = cmplx(0.0_pReal, 2.0_pReal*PI)
 Re(0.0), Im(2xPi) More...
 
real(preal), dimension(3, 3), parameter math::math_i3 = reshape([ 1.0_pReal,0.0_pReal,0.0_pReal, 0.0_pReal,1.0_pReal,0.0_pReal, 0.0_pReal,0.0_pReal,1.0_pReal ], [3,3])
 3x3 Identity More...
 
real(preal), dimension(6), parameter, private math::nrmmandel = [ 1.0_pReal, 1.0_pReal, 1.0_pReal, sqrt(2.0_pReal), sqrt(2.0_pReal), sqrt(2.0_pReal) ]
 forward weighting for Mandel notation More...
 
real(preal), dimension(6), parameter, private math::invnrmmandel = 1.0_pReal/NRMMANDEL
 backward weighting for Mandel notation More...
 
integer, dimension(2, 6), parameter, private math::mapnye = reshape([ 1,1, 2,2, 3,3, 1,2, 2,3, 1,3 ], [2,6])
 arrangement in Nye notation. More...
 
integer, dimension(2, 6), parameter, private math::mapvoigt = reshape([ 1,1, 2,2, 3,3, 2,3, 1,3, 1,2 ], [2,6])
 arrangement in Voigt notation More...
 
integer, dimension(2, 9), parameter, private math::mapplain = reshape([ 1,1, 1,2, 1,3, 2,1, 2,2, 2,3, 3,1, 3,2, 3,3 ], [2,9])
 arrangement in Plain notation More...
 

Function/Subroutine Documentation

◆ eigenvectorbasis()

pure real(preal) function, dimension(3,3) math_rotationalpart::eigenvectorbasis ( real(preal), dimension(3,3), intent(in)  m)

eigenvector basis of positive-definite 3x3 matrix

Parameters
[in]mpositive-definite matrix of which the basis is computed

Definition at line 982 of file math.f90.

References math::math_clip(), math::math_i3, math::math_invariantssym33(), and math::pi.

Referenced by math::math_rotationalpart().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ qsort_partition()

integer function math_sort::qsort_partition ( integer, dimension(:,:), intent(inout)  a,
integer, intent(in)  istart,
integer, intent(in)  iend,
integer, intent(in)  sort 
)

Partitioning required for quicksort.

Definition at line 168 of file math.f90.

Referenced by math::math_sort().

+ Here is the caller graph for this function: