micromechanical (C++)
Loading...
Searching...
No Matches
micromechanical::core::Integration< T > Struct Template Reference

Contact integration points for micromechanical models. More...

#include <integration.hpp>

Collaboration diagram for micromechanical::core::Integration< T >:

Public Member Functions

 Integration (T npv=1e9, T radius=0.65e-3)
 constructor
 
virtual ~Integration ()=default
 destructor
 
void initialize (StateVariable< T > &sv)
 initialize the integration points
 
void setGauss37 (bool full=false)
 set gauss37 integration points
 
void setGauss61 (bool full=false)
 set gauss61 integration points
 
void setAnisotropicParameters (std::string type="chang1990-ext", std::string evolution="zhao2020", const std::map< std::string, T > &coefs={})
 set the anisotropic parameters
 
void setParameters (T npv, T radius)
 set the parameters
 
void setNPVFromVoidRatio (T e)
 set the number of contacts per unit volume from the void ratio
 
rho ()
 normalized packing density
 
void setNPVFromNormalizedPackingDensity (T rho)
 set the number of contacts per unit volume from the normalized packing density
 
int size () const
 number of integration points
 
void reset ()
 reset temporary variables
 
Eigen::Matrix< T, Eigen::Dynamic, 3 > s ()
 first shear direction
 
Eigen::Matrix< T, 3, 1 > s (int idx)
 
Eigen::Matrix< T, Eigen::Dynamic, 3 > t ()
 second shear direction
 
Eigen::Matrix< T, 3, 1 > t (int idx)
 
Eigen::Matrix< T, Eigen::Dynamic, 1 > weight ()
 weight
 
weight (int idx)
 
Eigen::Matrix< T, Eigen::Dynamic, 3 > l ()
 branch vector
 
Eigen::Matrix< T, 3, 1 > l (int idx)
 
const Eigen::Matrix< T, 3, 3 > & p (int idx)
 transformation matrix
 
const Eigen::Matrix< T, Eigen::Dynamic, 1 > & beta ()
 azimuthal angle
 
beta (int idx)
 
const Eigen::Matrix< T, Eigen::Dynamic, 1 > & gamma ()
 polar angle
 
gamma (int idx)
 
Eigen::Matrix< T, 3, 3 > rotate (const Eigen::Matrix< T, 3, 3 > &F, int idx)
 rotate the fabric tensor
 
std::vector< Eigen::Matrix< T, 3, 3 > > rotates (const Eigen::Matrix< T, 3, 3 > &F)
 rotate the fabric tensors
 
const Eigen::Matrix< T, 3, 3 > & Aij ()
 fabric tensor
 
const Eigen::Matrix< T, 3, 3 > & Aij_ ()
 fabric tensor from definition
 
std::tuple< Eigen::VectorXi, Eigen::Matrix< T, Eigen::Dynamic, 1 > > indexOf (T beta=-1.0, T gamma=-1.0, T tol=1e-6)
 indices of the integration points with the given beta and gamma angles and the corresponding angles.
 

Public Attributes

npv = 1e9
 number of points per unit volume
 
radius = 0.65e-3
 radius of the particle
 
Eigen::Matrix< T, Eigen::Dynamic, 3 > n
 normal vector of the integration points
 
Eigen::Matrix< T, Eigen::Dynamic, 1 > gauss_weight
 weight of the integration points
 
std::shared_ptr< FabricTensor< T > > fabric
 fabric tensor
 
std::shared_ptr< IntegrationChanged > changed
 integration changed flags
 

Detailed Description

template<typename T>
struct micromechanical::core::Integration< T >

Contact integration points for micromechanical models.

Constructor & Destructor Documentation

◆ Integration()

template<typename T>
micromechanical::core::Integration< T >::Integration ( T npv = 1e9,
T radius = 0.65e-3 )
inlineexplicit

constructor

Parameters
npvnumber of points per unit volume
radiusradius of the particle

References fabric, npv, and radius.

◆ ~Integration()

template<typename T>
virtual micromechanical::core::Integration< T >::~Integration ( )
virtualdefault

destructor

Member Function Documentation

◆ Aij()

template<typename T>
const Eigen::Matrix< T, 3, 3 > & micromechanical::core::Integration< T >::Aij ( )
inline

fabric tensor

References changed, fabric, npv, and radius.

◆ Aij_()

template<typename T>
const Eigen::Matrix< T, 3, 3 > & micromechanical::core::Integration< T >::Aij_ ( )
inline

fabric tensor from definition

References changed, l(), npv, size(), and weight().

Here is the call graph for this function:

◆ beta() [1/2]

template<typename T>
const Eigen::Matrix< T, Eigen::Dynamic, 1 > & micromechanical::core::Integration< T >::beta ( )
inline

azimuthal angle

References changed, n, and size().

Referenced by indexOf(), and weight().

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

◆ beta() [2/2]

template<typename T>
T micromechanical::core::Integration< T >::beta ( int idx)
inline

References beta().

Referenced by beta().

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

◆ gamma() [1/2]

template<typename T>
const Eigen::Matrix< T, Eigen::Dynamic, 1 > & micromechanical::core::Integration< T >::gamma ( )
inline

polar angle

References changed, n, and size().

Referenced by indexOf(), and weight().

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

◆ gamma() [2/2]

template<typename T>
T micromechanical::core::Integration< T >::gamma ( int idx)
inline

References gamma().

Referenced by gamma().

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

◆ indexOf()

template<typename T>
std::tuple< Eigen::VectorXi, Eigen::Matrix< T, Eigen::Dynamic, 1 > > micromechanical::core::Integration< T >::indexOf ( T beta = -1.0,
T gamma = -1.0,
T tol = 1e-6 )
inline

indices of the integration points with the given beta and gamma angles and the corresponding angles.

Parameters
betathe angle between the projection of the azimuth on the YZ plane and the Y axis
gammathe angle between the azimuth and the X axis
tolthe tolerance for the comparison of the angles, by default 1e-6
Returns
a tuple of the indices and angles

References beta(), gamma(), and size().

Here is the call graph for this function:

◆ initialize()

template<typename T>
void micromechanical::core::Integration< T >::initialize ( StateVariable< T > & sv)
inline

initialize the integration points

References fabric.

◆ l() [1/2]

template<typename T>
Eigen::Matrix< T, Eigen::Dynamic, 3 > micromechanical::core::Integration< T >::l ( )
inline

branch vector

References changed, n, and radius.

Referenced by Aij_().

Here is the caller graph for this function:

◆ l() [2/2]

template<typename T>
Eigen::Matrix< T, 3, 1 > micromechanical::core::Integration< T >::l ( int idx)
inline

References l().

Referenced by l().

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

◆ p()

template<typename T>
const Eigen::Matrix< T, 3, 3 > & micromechanical::core::Integration< T >::p ( int idx)
inline

transformation matrix

References changed, n, and size().

Referenced by rotate().

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

◆ reset()

template<typename T>
void micromechanical::core::Integration< T >::reset ( )
inline

reset temporary variables

References changed, and fabric.

Referenced by setGauss37(), and setGauss61().

Here is the caller graph for this function:

◆ rho()

template<typename T>
T micromechanical::core::Integration< T >::rho ( )
inline

normalized packing density

References npv, and radius.

Referenced by setNPVFromNormalizedPackingDensity().

Here is the caller graph for this function:

◆ rotate()

template<typename T>
Eigen::Matrix< T, 3, 3 > micromechanical::core::Integration< T >::rotate ( const Eigen::Matrix< T, 3, 3 > & F,
int idx )
inline

rotate the fabric tensor

References p().

Referenced by rotates().

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

◆ rotates()

template<typename T>
std::vector< Eigen::Matrix< T, 3, 3 > > micromechanical::core::Integration< T >::rotates ( const Eigen::Matrix< T, 3, 3 > & F)
inline

rotate the fabric tensors

References rotate(), and size().

Here is the call graph for this function:

◆ s() [1/2]

template<typename T>
Eigen::Matrix< T, Eigen::Dynamic, 3 > micromechanical::core::Integration< T >::s ( )
inline

first shear direction

References changed, n, and size().

Here is the call graph for this function:

◆ s() [2/2]

template<typename T>
Eigen::Matrix< T, 3, 1 > micromechanical::core::Integration< T >::s ( int idx)
inline

References s().

Referenced by s().

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

◆ setAnisotropicParameters()

template<typename T>
void micromechanical::core::Integration< T >::setAnisotropicParameters ( std::string type = "chang1990-ext",
std::string evolution = "zhao2020",
const std::map< std::string, T > & coefs = {} )
inline

set the anisotropic parameters

Parameters
typefabric tensor type
evolutionevolution type
coefsfabric tensor coefficients

◆ setGauss37()

template<typename T>
void micromechanical::core::Integration< T >::setGauss37 ( bool full = false)
inline

set gauss37 integration points

Parameters
fullfull 37*2 integration points.

References gauss_weight, n, and reset().

Here is the call graph for this function:

◆ setGauss61()

template<typename T>
void micromechanical::core::Integration< T >::setGauss61 ( bool full = false)
inline

set gauss61 integration points

Parameters
fullfull 61*2 integration points.

References gauss_weight, n, and reset().

Here is the call graph for this function:

◆ setNPVFromNormalizedPackingDensity()

template<typename T>
void micromechanical::core::Integration< T >::setNPVFromNormalizedPackingDensity ( T rho)
inline

set the number of contacts per unit volume from the normalized packing density

Parameters
rhonormalized packing density

References npv, radius, and rho().

Here is the call graph for this function:

◆ setNPVFromVoidRatio()

template<typename T>
void micromechanical::core::Integration< T >::setNPVFromVoidRatio ( T e)
inline

set the number of contacts per unit volume from the void ratio

Parameters
evoid ratio

References npv, PI, and radius.

◆ setParameters()

template<typename T>
void micromechanical::core::Integration< T >::setParameters ( T npv,
T radius )
inline

set the parameters

Parameters
npvnumber of particles per unit volume
radiusradius of the particle

References npv, and radius.

◆ size()

template<typename T>
int micromechanical::core::Integration< T >::size ( ) const
inline

number of integration points

References n.

Referenced by Aij_(), beta(), gamma(), indexOf(), p(), rotates(), s(), and t().

Here is the caller graph for this function:

◆ t() [1/2]

template<typename T>
Eigen::Matrix< T, Eigen::Dynamic, 3 > micromechanical::core::Integration< T >::t ( )
inline

second shear direction

References changed, n, and size().

Here is the call graph for this function:

◆ t() [2/2]

template<typename T>
Eigen::Matrix< T, 3, 1 > micromechanical::core::Integration< T >::t ( int idx)
inline

References t().

Referenced by t().

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

◆ weight() [1/2]

template<typename T>
Eigen::Matrix< T, Eigen::Dynamic, 1 > micromechanical::core::Integration< T >::weight ( )
inline

weight

References beta(), changed, fabric, gamma(), and gauss_weight.

Referenced by Aij_().

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

◆ weight() [2/2]

template<typename T>
T micromechanical::core::Integration< T >::weight ( int idx)
inline

References weight().

Referenced by weight().

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

Member Data Documentation

◆ changed

template<typename T>
std::shared_ptr<IntegrationChanged> micromechanical::core::Integration< T >::changed
Initial value:
=
std::make_shared<IntegrationChanged>()

integration changed flags

Referenced by Aij(), Aij_(), beta(), gamma(), l(), p(), reset(), s(), t(), and weight().

◆ fabric

template<typename T>
std::shared_ptr<FabricTensor<T> > micromechanical::core::Integration< T >::fabric

fabric tensor

Referenced by Aij(), initialize(), Integration(), reset(), and weight().

◆ gauss_weight

template<typename T>
Eigen::Matrix<T, Eigen::Dynamic, 1> micromechanical::core::Integration< T >::gauss_weight

weight of the integration points

Referenced by setGauss37(), setGauss61(), and weight().

◆ n

template<typename T>
Eigen::Matrix<T, Eigen::Dynamic, 3> micromechanical::core::Integration< T >::n

normal vector of the integration points

Referenced by beta(), gamma(), l(), p(), s(), setGauss37(), setGauss61(), size(), and t().

◆ npv

template<typename T>
T micromechanical::core::Integration< T >::npv = 1e9

◆ radius

template<typename T>
T micromechanical::core::Integration< T >::radius = 0.65e-3

The documentation for this struct was generated from the following file: