v0.14.0
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
OpGetDensityField< ALE > Struct Template Reference
Inheritance diagram for OpGetDensityField< ALE >:
[legend]
Collaboration diagram for OpGetDensityField< ALE >:
[legend]

Public Member Functions

 OpGetDensityField (const std::string row_field, boost::shared_ptr< MatrixDouble > mat_coords_ptr, boost::shared_ptr< VectorDouble > density_at_pts, boost::shared_ptr< MatrixDouble > rho_grad_at_gauss_pts_ptr)
 
MoFEMErrorCode doWork (int row_side, EntityType row_type, HookeElement::EntData &row_data)
 

Public Attributes

boost::shared_ptr< MatrixDouble > matCoordsPtr
 
boost::shared_ptr< VectorDouble > rhoAtGaussPtsPtr
 
boost::shared_ptr< MatrixDouble > rhoGradAtGaussPtsPtr
 

Detailed Description

template<bool ALE>
struct OpGetDensityField< ALE >
Examples
testing_jacobian_of_hook_scaled_with_density_element.cpp.

Definition at line 19 of file testing_jacobian_of_hook_scaled_with_density_element.cpp.

Constructor & Destructor Documentation

◆ OpGetDensityField()

template<bool ALE>
OpGetDensityField< ALE >::OpGetDensityField ( const std::string  row_field,
boost::shared_ptr< MatrixDouble >  mat_coords_ptr,
boost::shared_ptr< VectorDouble >  density_at_pts,
boost::shared_ptr< MatrixDouble >  rho_grad_at_gauss_pts_ptr 
)
inline

Definition at line 24 of file testing_jacobian_of_hook_scaled_with_density_element.cpp.

28 : HookeElement::VolUserDataOperator(row_field, OPROW),
29 matCoordsPtr(mat_coords_ptr), rhoAtGaussPtsPtr(density_at_pts),
30 rhoGradAtGaussPtsPtr(rho_grad_at_gauss_pts_ptr) {}
boost::shared_ptr< MatrixDouble > rhoGradAtGaussPtsPtr

Member Function Documentation

◆ doWork()

template<bool ALE>
MoFEMErrorCode OpGetDensityField< ALE >::doWork ( int  row_side,
EntityType  row_type,
HookeElement::EntData &  row_data 
)
inline
Examples
testing_jacobian_of_hook_scaled_with_density_element.cpp.

Definition at line 32 of file testing_jacobian_of_hook_scaled_with_density_element.cpp.

33 {
35 if (row_type != MBVERTEX)
37 // get number of integration points
38 const int nb_integration_pts = getGaussPts().size2();
39 rhoAtGaussPtsPtr->resize(nb_integration_pts, false);
40 rhoAtGaussPtsPtr->clear();
41 rhoGradAtGaussPtsPtr->resize(3, nb_integration_pts, false);
42 rhoGradAtGaussPtsPtr->clear();
43
45 auto t_grad_rho = getFTensor1FromMat<3>(*rhoGradAtGaussPtsPtr);
46
47 MatrixDouble coords;
48 if (ALE)
49 coords = *matCoordsPtr;
50 else
51 coords = trans(getCoordsAtGaussPts()); // because the size is (nb_gg,3)
52
54 auto t_coords = getFTensor1FromMat<3>(coords);
55
56 for (int gg = 0; gg != nb_integration_pts; ++gg) {
57 t_rho = 1 + t_coords(i) * t_coords(i); // density is equal to
58 // 1+x^2+y^2+z^2 (x,y,z coordines)
59 t_grad_rho(i) = 2 * t_coords(i);
60
61 ++t_rho;
62 ++t_coords;
63 ++t_grad_rho;
64 }
65
67 }
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:447
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:346
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:416
FTensor::Index< 'i', SPACE_DIM > i
static auto getFTensor0FromVec(ublas::vector< T, A > &data)
Get tensor rank 0 (scalar) form data vector.
Definition: Templates.hpp:135

Member Data Documentation

◆ matCoordsPtr

template<bool ALE>
boost::shared_ptr<MatrixDouble> OpGetDensityField< ALE >::matCoordsPtr

◆ rhoAtGaussPtsPtr

template<bool ALE>
boost::shared_ptr<VectorDouble> OpGetDensityField< ALE >::rhoAtGaussPtsPtr

◆ rhoGradAtGaussPtsPtr

template<bool ALE>
boost::shared_ptr<MatrixDouble> OpGetDensityField< ALE >::rhoGradAtGaussPtsPtr

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