![]() |
|
A Rank 4 Tensor class. More...
#include <matrices.h>
Public Member Functions | |
RankFourTensor () | |
Empty constructor. More... | |
RankFourTensor (const RankFourTensor &source_tensor) | |
Copy constructor: Deep copy. More... | |
RankFourTensor & | operator= (const RankFourTensor &source_tensor) |
Copy assignement. More... | |
RankFourTensor (const unsigned long &n) | |
One parameter constructor produces a nxnxnxn tensor. More... | |
RankFourTensor (const unsigned long &n_index1, const unsigned long &n_index2, const unsigned long &n_index3, const unsigned long &n_index4) | |
Four parameter constructor, general non-square tensor. More... | |
RankFourTensor (const unsigned long &n_index1, const unsigned long &n_index2, const unsigned long &n_index3, const unsigned long &n_index4, const T &initial_val) | |
Four parameter constructor, general non-square tensor. More... | |
virtual | ~RankFourTensor () |
Destructor: delete the pointers. More... | |
void | resize (const unsigned long &n) |
Resize to a square nxnxnxn tensor. More... | |
void | resize (const unsigned long &n_index1, const unsigned long &n_index2, const unsigned long &n_index3, const unsigned long &n_index4) |
Resize to a general tensor. More... | |
void | resize (const unsigned long &n_index1, const unsigned long &n_index2, const unsigned long &n_index3, const unsigned long &n_index4, const T &initial_value) |
Resize to a general tensor. More... | |
void | initialise (const T &val) |
Initialise all values in the tensor to val. More... | |
unsigned long | nindex1 () const |
Return the range of index 1 of the tensor. More... | |
unsigned long | nindex2 () const |
Return the range of index 2 of the tensor. More... | |
unsigned long | nindex3 () const |
Return the range of index 3 of the tensor. More... | |
unsigned long | nindex4 () const |
Return the range of index 4 of the tensor. More... | |
T & | operator() (const unsigned long &i, const unsigned long &j, const unsigned long &k, const unsigned long &l) |
Overload the round brackets to give access as a(i,j,k,l) More... | |
T | operator() (const unsigned long &i, const unsigned long &j, const unsigned long &k, const unsigned long &l) const |
Overload a const version for read-only access as a(i,j,k,l) More... | |
T & | raw_direct_access (const unsigned long &i) |
const T & | raw_direct_access (const unsigned long &i) const |
unsigned | offset (const unsigned long &i, const unsigned long &j) const |
Private Member Functions | |
void | range_check (const unsigned long &i, const unsigned long &j, const unsigned long &k, const unsigned long &l) const |
Private Attributes | |
T * | Tensordata |
Private internal representation as pointer to data. More... | |
unsigned | N |
1st Tensor dimension More... | |
unsigned | M |
2nd Tensor dimension More... | |
unsigned | P |
3rd Tensor dimension More... | |
unsigned | Q |
4th Tensor dimension More... | |
A Rank 4 Tensor class.
////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////
|
inline |
Empty constructor.
|
inline |
Copy constructor: Deep copy.
References i, j, k, oomph::RankFourTensor< T >::M, oomph::RankFourTensor< T >::N, oomph::RankFourTensor< T >::nindex1(), oomph::RankFourTensor< T >::nindex2(), oomph::RankFourTensor< T >::nindex3(), oomph::RankFourTensor< T >::nindex4(), oomph::RankFourTensor< T >::P, oomph::RankFourTensor< T >::Q, and oomph::RankFourTensor< T >::Tensordata.
|
inline |
One parameter constructor produces a nxnxnxn tensor.
References oomph::RankFourTensor< T >::initialise(), n, oomph::RankFourTensor< T >::N, oomph::RankFourTensor< T >::P, oomph::RankFourTensor< T >::Q, and oomph::RankFourTensor< T >::Tensordata.
|
inline |
Four parameter constructor, general non-square tensor.
References oomph::RankFourTensor< T >::initialise(), oomph::RankFourTensor< T >::N, oomph::RankFourTensor< T >::P, oomph::RankFourTensor< T >::Q, and oomph::RankFourTensor< T >::Tensordata.
|
inline |
Four parameter constructor, general non-square tensor.
References oomph::RankFourTensor< T >::initialise(), oomph::RankFourTensor< T >::N, oomph::RankFourTensor< T >::P, oomph::RankFourTensor< T >::Q, and oomph::RankFourTensor< T >::Tensordata.
|
inlinevirtual |
Destructor: delete the pointers.
References oomph::RankFourTensor< T >::Tensordata.
|
inline |
Initialise all values in the tensor to val.
References i, oomph::RankFourTensor< T >::N, oomph::RankFourTensor< T >::P, oomph::RankFourTensor< T >::Q, oomph::RankFourTensor< T >::Tensordata, and calibrate::val.
Referenced by oomph::RankFourTensor< T >::RankFourTensor(), and oomph::RankFourTensor< T >::resize().
|
inline |
Return the range of index 1 of the tensor.
References oomph::RankFourTensor< T >::N.
Referenced by oomph::FiniteElement::d_dshape_eulerian_dnodal_coordinates(), oomph::RankFourTensor< T >::operator=(), and oomph::RankFourTensor< T >::RankFourTensor().
|
inline |
Return the range of index 2 of the tensor.
References oomph::RankFourTensor< T >::M.
Referenced by oomph::FiniteElement::d_dshape_eulerian_dnodal_coordinates(), oomph::RankFourTensor< T >::operator=(), and oomph::RankFourTensor< T >::RankFourTensor().
|
inline |
Return the range of index 3 of the tensor.
References oomph::RankFourTensor< T >::P.
Referenced by oomph::FiniteElement::d_dshape_eulerian_dnodal_coordinates(), oomph::RankFourTensor< T >::operator=(), and oomph::RankFourTensor< T >::RankFourTensor().
|
inline |
Return the range of index 4 of the tensor.
References oomph::RankFourTensor< T >::Q.
Referenced by oomph::FiniteElement::d_dshape_eulerian_dnodal_coordinates(), oomph::RankFourTensor< T >::operator=(), and oomph::RankFourTensor< T >::RankFourTensor().
|
inline |
Caculate the offset in flat-packed C-style, column-major format, required for a given i,j. WARNING: Only for experienced users. Only use this if raw speed is of the essence, as in the solid mechanics problems.
References i, j, oomph::RankFourTensor< T >::P, and oomph::RankFourTensor< T >::Q.
Referenced by oomph::RefineableQDPVDElement< DIM, NNODE_1D >::fill_in_generic_contribution_to_residuals_pvd(), oomph::RefineablePVDEquations< DIM >::fill_in_generic_contribution_to_residuals_pvd(), oomph::PVDEquations< DIM >::fill_in_generic_contribution_to_residuals_pvd(), oomph::ScaleCoupledElement< ELEMENT >::fill_in_generic_contribution_to_residuals_pvd(), oomph::VolumeCoupledElement< ELEMENT >::fill_in_generic_contribution_to_residuals_pvd(), oomph::RefineablePVDEquationsWithPressure< DIM >::fill_in_generic_residual_contribution_pvd_with_pressure(), and oomph::PVDEquationsWithPressure< DIM >::fill_in_generic_residual_contribution_pvd_with_pressure().
|
inline |
Overload the round brackets to give access as a(i,j,k,l)
References i, j, k, oomph::RankFourTensor< T >::P, oomph::RankFourTensor< T >::Q, oomph::RankFourTensor< T >::range_check(), and oomph::RankFourTensor< T >::Tensordata.
|
inline |
Overload a const version for read-only access as a(i,j,k,l)
References i, j, k, oomph::RankFourTensor< T >::P, oomph::RankFourTensor< T >::Q, oomph::RankFourTensor< T >::range_check(), and oomph::RankFourTensor< T >::Tensordata.
|
inline |
Copy assignement.
References i, j, k, m, oomph::RankFourTensor< T >::M, n, oomph::RankFourTensor< T >::N, oomph::RankFourTensor< T >::nindex1(), oomph::RankFourTensor< T >::nindex2(), oomph::RankFourTensor< T >::nindex3(), oomph::RankFourTensor< T >::nindex4(), p, oomph::RankFourTensor< T >::P, Eigen::numext::q, oomph::RankFourTensor< T >::Q, and oomph::RankFourTensor< T >::resize().
|
inlineprivate |
Range check to catch when an index is out of bounds, if so, it issues a warning message and dies by throwing an OomphLibError
References i, j, k, oomph::RankFourTensor< T >::N, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::RankFourTensor< T >::P, and oomph::RankFourTensor< T >::Q.
Referenced by oomph::RankFourTensor< T >::operator()().
|
inline |
Direct access to internal storage of data in flat-packed C-style column-major format. WARNING: Only for experienced users. Only use this if raw speed is of the essence, as in the solid mechanics problems.
References i, and oomph::RankFourTensor< T >::Tensordata.
Referenced by oomph::RefineableQDPVDElement< DIM, NNODE_1D >::fill_in_generic_contribution_to_residuals_pvd(), oomph::RefineablePVDEquations< DIM >::fill_in_generic_contribution_to_residuals_pvd(), oomph::PVDEquations< DIM >::fill_in_generic_contribution_to_residuals_pvd(), oomph::ScaleCoupledElement< ELEMENT >::fill_in_generic_contribution_to_residuals_pvd(), oomph::VolumeCoupledElement< ELEMENT >::fill_in_generic_contribution_to_residuals_pvd(), oomph::RefineablePVDEquationsWithPressure< DIM >::fill_in_generic_residual_contribution_pvd_with_pressure(), and oomph::PVDEquationsWithPressure< DIM >::fill_in_generic_residual_contribution_pvd_with_pressure().
|
inline |
Direct access to internal storage of data in flat-packed C-style column-major format. WARNING: Only for experienced users. Only use this if raw speed is of the essence, as in the solid mechanics problems.
References i, and oomph::RankFourTensor< T >::Tensordata.
|
inline |
|
inline |
Resize to a general tensor.
References i, oomph::RankFourTensor< T >::initialise(), j, k, oomph::RankFourTensor< T >::M, min, oomph::RankFourTensor< T >::N, oomph::RankFourTensor< T >::P, oomph::RankFourTensor< T >::Q, and oomph::RankFourTensor< T >::Tensordata.
|
inline |
Resize to a general tensor.
References i, oomph::RankFourTensor< T >::initialise(), j, k, oomph::RankFourTensor< T >::M, min, oomph::RankFourTensor< T >::N, oomph::RankFourTensor< T >::P, oomph::RankFourTensor< T >::Q, and oomph::RankFourTensor< T >::Tensordata.
|
private |
2nd Tensor dimension
Referenced by oomph::RankFourTensor< T >::nindex2(), oomph::RankFourTensor< T >::operator=(), oomph::RankFourTensor< T >::RankFourTensor(), and oomph::RankFourTensor< T >::resize().
|
private |
|
private |
3rd Tensor dimension
Referenced by oomph::RankFourTensor< T >::initialise(), oomph::RankFourTensor< T >::nindex3(), oomph::RankFourTensor< T >::offset(), oomph::RankFourTensor< T >::operator()(), oomph::RankFourTensor< T >::operator=(), oomph::RankFourTensor< T >::range_check(), oomph::RankFourTensor< T >::RankFourTensor(), and oomph::RankFourTensor< T >::resize().
|
private |
4th Tensor dimension
Referenced by oomph::RankFourTensor< T >::initialise(), oomph::RankFourTensor< T >::nindex4(), oomph::RankFourTensor< T >::offset(), oomph::RankFourTensor< T >::operator()(), oomph::RankFourTensor< T >::operator=(), oomph::RankFourTensor< T >::range_check(), oomph::RankFourTensor< T >::RankFourTensor(), and oomph::RankFourTensor< T >::resize().
|
private |
Private internal representation as pointer to data.
Referenced by oomph::RankFourTensor< T >::initialise(), oomph::RankFourTensor< T >::operator()(), oomph::RankFourTensor< T >::RankFourTensor(), oomph::RankFourTensor< T >::raw_direct_access(), oomph::RankFourTensor< T >::resize(), and oomph::RankFourTensor< T >::~RankFourTensor().