Material Models¶
Each RatelMaterial
is responsible for adding volumetric terms to the residual, Jacobian, and diagnostic quantity evaluation operators as well as any surface terms that require volumetric or material model values.
Additionally, each RatelMaterial
is responsible for building and modifying corresponding preconditioner components, as needed.
-
typedef PetscErrorCode (*RatelMaterialSetupMultigridLevelFunction)(RatelMaterial material, DM dm_level, CeedVector m_loc, CeedOperator sub_op_fine, CeedOperator op_coarse, CeedOperator op_prolong, CeedOperator op_restrict)¶
Material model multigrid level setup function.
-
typedef int (*RatelComputef1)(void*, CeedInt, CeedInt, const CeedScalar *const*, CeedScalar *const*, CeedScalar[3][3], CeedScalar[3][3])¶
-
typedef int (*RatelComputef1_fwd)(void*, CeedInt, CeedInt, const CeedScalar *const*, CeedScalar *const*, CeedScalar[3][3], CeedScalar[3][3])¶
-
typedef int (*RatelComputeDiagnosticStress)(void*, const CeedScalar, const CeedScalar, const CeedScalar, CeedScalar[3][3], CeedScalar[6], CeedScalar*, CeedScalar*, CeedScalar*)¶
-
typedef int (*RatelComputef1_Mixed)(void*, CeedInt, CeedInt, const CeedScalar *const*, CeedScalar *const*, CeedScalar[3][3], CeedScalar[3][3], CeedScalar*)¶
-
typedef int (*RatelComputedf1_fwd_Mixed)(void*, CeedInt, CeedInt, const CeedScalar *const*, CeedScalar *const*, CeedScalar[3][3], CeedScalar[3][3], CeedScalar*, CeedScalar*)¶
-
typedef int (*RatelComputeg0_Mixed)(void*, CeedInt, CeedInt, const CeedScalar *const*, const CeedScalar, CeedScalar *const*, CeedScalar*)¶
-
typedef int (*RatelComputedg0_fwd_Mixed)(void*, CeedInt, CeedInt, const CeedScalar *const*, const CeedScalar, const CeedScalar, CeedScalar *const*, CeedScalar*)¶
-
typedef int (*RatelComputeDiagnosticMixedStress)(void*, const CeedScalar, const CeedScalar, const CeedScalar, const CeedScalar, CeedScalar[3][3], CeedScalar[6], CeedScalar*, CeedScalar*, CeedScalar*)¶
-
struct RatelModelParameterData_private elasticity_damage_param_data_private¶
Elasticity+damage model parameters for
CeedQFunctionContext
and viewing.
-
RatelModelParameterData elasticity_damage_param_data = &elasticity_damage_param_data_private¶
-
struct RatelModelParameterData_private mixed_neo_hookean_param_data_private¶
Mixed Neo-Hookean model parameters for
CeedQFunctionContext
and viewing.
-
RatelModelParameterData mixed_neo_hookean_param_data = &mixed_neo_hookean_param_data_private¶
-
struct RatelModelParameterData_private mixed_ogden_param_data_private¶
Mixed Ogden model parameters for
CeedQFunctionContext
and viewing.
-
RatelModelParameterData mixed_ogden_param_data = &mixed_ogden_param_data_private¶
-
struct RatelModelParameterData_private mms_ceed_bps_param_data_private¶
CEED BPs MMS model parameters for
CeedQFunctionContext
and viewing.
-
RatelModelParameterData mms_ceed_bps_param_data = &mms_ceed_bps_param_data_private¶
-
struct RatelModelParameterData_private mms_linear_elasticity_param_data_private¶
Linear elasticity MMS model parameters for
CeedQFunctionContext
and viewing.
-
RatelModelParameterData mms_linear_elasticity_param_data = &mms_linear_elasticity_param_data_private¶
-
struct RatelModelParameterData_private mooney_rivlin_param_data_private¶
Mooney-Rivlin model parameters for
CeedQFunctionContext
and viewing.
-
RatelModelParameterData mooney_rivlin_param_data = &mooney_rivlin_param_data_private¶
-
struct RatelModelParameterData_private neo_hookean_param_data_private¶
Neo-Hookean model parameters for
CeedQFunctionContext
and viewing.
-
RatelModelParameterData neo_hookean_param_data = &neo_hookean_param_data_private¶
-
struct RatelModelParameterData_private ogden_param_data_private¶
Ogden model parameters for
CeedQFunctionContext
and viewing.
-
RatelModelParameterData ogden_param_data = &ogden_param_data_private¶
-
struct RatelModelParameterData_private plasticity_linear_param_data_private¶
Linear plasticity model parameters for
CeedQFunctionContext
and viewing.
-
RatelModelParameterData plasticity_linear_param_data = &plasticity_linear_param_data_private¶
-
const char DMSwarmPICField_volume[] = "volume"¶
-
int RestrictBoundingBox(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Restrict the bounding box of the domain to a given bounding box.
- Parameters:
ctx – [in] QFunction context,
RatelBoundingBoxParamsContext
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - x, physical (initial) coordinates
1 - scale, multiplicity scaling factor
2 - r, current timestep residual
out – [out] Output array
0 - v, current timestep residual restricted to bounding box
- Returns:
An error code: 0 - success, otherwise - failure
-
int SetupSurfaceGeometryBounded(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute geometric factors for integration, gradient transformations, and coordinate transformations on element faces, restricted by a bounding box.
Reference (parent) 2D coordinates are given by
X
and physical (current) 3D coordinates are given byx
. The change of coordinate matrix is given bydxdX_{i,j} = dx_i/dX_j (indicial notation) [3 * 2]
.(N_1, N_2, N_3)
is given by the cross product of the columns ofdxdX_{i,j}
.detNb
is the magnitude of(N_1, N_2, N_3)
.- Parameters:
ctx – [in] QFunction context,
RatelBoundingBoxParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - Face coordinates
1 - Jacobian of face coordinates
2 - quadrature weights
out – [out] Output array
0 - qdata,
w detNb
andN
- Returns:
An error code: 0 - success, otherwise - failure
-
int SetupSurfaceForceGeometry(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute geometric factors for integration, gradient transformations, and coordinate transformations on element faces.
Reference (parent) 2D coordinates are given by
X
and physical (current) 3D coordinates are given byx
. The change of coordinate matrix is given bydxdX_{i,j} = dx_i/dX_j (indicial notation) [3 * 2]
.(N_1, N_2, N_3)
is given by the cross product of the columns ofdxdX_{i,j}
.detNb
is the magnitude of(N_1, N_2, N_3)
.- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - Jacobian of cell coordinates
1 - Jacobian of face coordinates
2 - quadrature weights
out – [out] Output array
0 - qdata,
w detNb
,dXdx
, andN
- Returns:
An error code: 0 - success, otherwise - failure
-
int SetupSurfaceGeometry(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute geometric factors for integration, gradient transformations, and coordinate transformations on element faces.
Reference (parent) 2D coordinates are given by
X
and physical (current) 3D coordinates are given byx
. The change of coordinate matrix is given bydxdX_{i,j} = dx_i/dX_j (indicial notation) [3 * 2]
.(N_1, N_2, N_3)
is given by the cross product of the columns ofdxdX_{i,j}
.detNb
is the magnitude of(N_1, N_2, N_3)
.- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - Jacobian of face coordinates
1 - quadrature weights
out – [out] Output array
0 - qdata,
w detNb
andN
- Returns:
An error code: 0 - success, otherwise - failure
-
int SetupVolumeGeometryMPM(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute geometric factors for integration, gradient transformations, and coordinate transformations in elements.
Reference (parent) coordinates are given by
X
and physical (current) coordinates are given byx
. Change of coordinate matrix is given bydxdX_{i,j} = x_{i,j} (indicial notation)
. Inverse of change of coordinate matrix is given bydXdx_{i,j} = (detJ^-1) * X_{i,j}
.We require the transpose of the inverse of the Jacobian to properly compute integrals of the form
int( gradv u )
.- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - Jacobian of cell coordinates
1 - quadrature weights
2 - point volumes
out – [out] Output array
0 - qdata,
w V_p
anddXdx
- Returns:
An error code: 0 - success, otherwise - failure
-
int UpdateVolume_MPM(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Update swarm volume based on previous converged solution for hyperelastic materials.
- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - gradient of u with respect to reference coordinates
2 - Volume in the previous converged solution
out – [out] Output array
0 - Updated volume J*V_prev
- Returns:
An error code: 0 - success, otherwise - failure
-
int SetupVolumeGeometrySymmetricMPM(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute symmetric geometric factors for integration, gradient transformations, and coordinate transformations in elements.
Reference (parent) coordinates are given by
X
and physical (current) coordinates are given byx
. Change of coordinate matrix is given bydxdX_{i,j} = x_{i,j} (indicial notation)
. Inverse of change of coordinate matrix is given bydXdx_{i,j} = (detJ^-1) * X_{i,j}
.We require the transpose of the inverse of the Jacobian to properly compute integrals of the form
int( gradv u )
.Inverse of Jacobian is given by
dXdx_i,j = Aij / detJ
. We storew A^T A / detJ
, which is symmetric, so we only store 6 distinct entries.- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - Jacobian of cell coordinates
1 - quadrature weights
2 - point volumes
out – [out] Output array
0 - qdata,
w V_p
anddXdx_sym
- Returns:
An error code: 0 - success, otherwise - failure
-
int SetupVolumeGeometrySymmetric(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute symmetric geometric factors for integration, gradient transformations, and coordinate transformations in elements.
Reference (parent) coordinates are given by
X
and physical (current) coordinates are given byx
. Change of coordinate matrix is given bydxdX_{i,j} = x_{i,j} (indicial notation)
. Inverse of change of coordinate matrix is given bydXdx_{i,j} = (detJ^-1) * X_{i,j}
.We require the transpose of the inverse of the Jacobian to properly compute integrals of the form
int( gradv u )
.Inverse of Jacobian is given by
dXdx_i,j = Aij / detJ
. We storew A^T A / detJ
, which is symmetric, so we only store 6 distinct entries.- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - Jacobian of cell coordinates
1 - quadrature weights
out – [out] Output array
0 - qdata,
w detJ
anddXdx_sym
- Returns:
An error code: 0 - success, otherwise - failure
-
int SetupVolumeGeometry(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute geometric factors for integration, gradient transformations, and coordinate transformations in elements.
Reference (parent) coordinates are given by
X
and physical (current) coordinates are given byx
. Change of coordinate matrix is given bydxdX_{i,j} = x_{i,j} (indicial notation)
. Inverse of change of coordinate matrix is given bydXdx_{i,j} = (detJ^-1) * X_{i,j}
.We require the transpose of the inverse of the Jacobian to properly compute integrals of the form
int( gradv u )
.- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - Jacobian of cell coordinates
1 - quadrature weights
out – [out] Output array
0 - qdata,
w detJ
anddXdx
- Returns:
An error code: 0 - success, otherwise - failure
-
int Residual_CEED_BP1(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute the residual for the CEED scalar BP problem.
- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - volumetric qdata
1 - interpolated values of u
out – [out] Output array
0 - action of the QFunction
- Returns:
An error code: 0 - success, otherwise - failure
-
int Jacobian_CEED_BP1(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute the Jacobian for the CEED scalar BP problem.
- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - volumetric qdata
1 - interpolated values of du
out – [out] Output array
0 - action of the QFunction
- Returns:
An error code: 0 - success, otherwise - failure
-
int Diagnostic_CEED_BP1(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute the diagnostic quantities for the CEED scalar BP problem.
- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - volumetric qdata
1 - u
out – [out] Output array
0 - diagnostic values
- Returns:
An error code: 0 - success, otherwise - failure
-
int Residual_CEED_BP2(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute the residual for the CEED vector BP problem.
- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - volumetric qdata
1 - interpolated values of u
out – [out] Output array
0 - action of the QFunction
- Returns:
An error code: 0 - success, otherwise - failure
-
int Jacobian_CEED_BP2(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute the Jacobian for the CEED vector BP problem.
- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - volumetric qdata
1 - interpolated values of du
out – [out] Output array
0 - action of the QFunction
- Returns:
An error code: 0 - success, otherwise - failure
-
int Diagnostic_CEED_BP2(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute the diagnostic values for the CEED vector BP problem.
- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - volumetric qdata
1 - u
out – [out] Output array
0 - diagnostic values
- Returns:
An error code: 0 - success, otherwise - failure
-
int Residual_CEED_BP3(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute the residual for the CEED scalar BP problem.
- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u
out – [out] Output array
0 - action of the QFunction
- Returns:
An error code: 0 - success, otherwise - failure
-
int Jacobian_CEED_BP3(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute the Jacobian for the CEED scalar BP problem.
- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of du
out – [out] Output array
0 - action of the QFunction
- Returns:
An error code: 0 - success, otherwise - failure
-
int Diagnostic_CEED_BP3(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute the diagnostic quantities for the CEED scalar BP problem.
- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - volumetric qdata
1 - u
out – [out] Output array
0 - diagnostic values
- Returns:
An error code: 0 - success, otherwise - failure
-
int Residual_CEED_BP4(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute the residual for the CEED vector BP problem.
- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u
out – [out] Output array
0 - action of the QFunction
- Returns:
An error code: 0 - success, otherwise - failure
-
int Jacobian_CEED_BP4(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute the Jacobian for the CEED vector BP problem.
- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of du
out – [out] Output array
0 - action of the QFunction
- Returns:
An error code: 0 - success, otherwise - failure
-
int Diagnostic_CEED_BP4(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute the diagnostic values for the CEED vector BP problem.
- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - volumetric qdata
1 - u
out – [out] Output array
0 - diagnostic values
- Returns:
An error code: 0 - success, otherwise - failure
-
int DualDiagnostic(void *ctx, const CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute dual space diagnostic values.
- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - volumetric qdata
out – [out] Output array
0 - nodal volume
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityResidual(void *ctx, CeedInt Q, RatelComputef1 compute_f1, bool has_state_values, bool has_stored_values, CeedInt num_active_field_eval_modes, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute elasticity residual evaluation.
- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
compute_f1 – [in] Function to compute action of f1
has_state_values – [in] Boolean flag indicating model state values in residual evaluation
has_stored_values – [in] Boolean flag indicating model stores values in residual evaluation
num_active_field_eval_modes – [in] Number of active field evaluation modes
in – [in] Input arrays
0 - volumetric qdata
out – [out] Output array
output_data_offset
- action of QFunction
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityJacobian(void *ctx, CeedInt Q, RatelComputef1_fwd compute_df1, bool has_stored_values, bool has_state_values, CeedInt num_active_field_eval_modes, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute elasticity Jacobian evaluation.
- Parameters:
ctx – [in] QFunction context, holding common parameters and model parameters
Q – [in] Number of quadrature points
compute_df1 – [in] Function to compute action of df1
has_state_values – [in] Boolean flag indicating model state values in residual evaluation
has_stored_values – [in] Boolean flag indicating model stores values in residual evaluation
num_active_field_eval_modes – [in] Number of active field evaluation modes
in – [in] Input arrays
0 - volumetric qdata
input_data_offset
- incremental change in u
out – [out] Output array
0 - action of QFunction
1 - action of QFunction dynamic solver term
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityDiagnostic(void *ctx, CeedInt Q, RatelComputeDiagnosticStress compute_diagnostic_stress, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute elasticity diagnostic evaluation.
- Parameters:
ctx – [in] QFunction context, holding common parameters and model parameters
Q – [in] Number of quadrature points
compute_diagnostic_stress – [in] Function to compute diagnostic
in – [in] Input arrays
0 - qdata
1 - u
2 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - projected diagnostic values
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityDualDiagnostic(void *ctx, const CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute dual space diagnostic values.
- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - volumetric qdata
out – [out] Output array
0 - nodal volume
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelKirchhoffTau_IsochoricMooneyRivlin(CeedScalar J_dVdJ, CeedScalar bulk, CeedScalar mu_1, CeedScalar two_mu_2, CeedScalar J_pow, const CeedScalar e_sym[6], CeedScalar tau_sym[6])¶
Compute Kirchoff tau for isochoric Mooney-Rivlin hyperelasticity.
- Parameters:
J_dVdJ – [in] J dV/dJ
bulk – [in] Bulk modulus
mu_1 – [in] First Mooney-Rivlin parameter
two_mu_2 – [in] Two times the second Mooney-Rivlin parameter
J_pow – [in] J^{-2/3}
e_sym – [in] Green Euler strain, in symmetric representation
tau_sym – [out] Kirchoff tau, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelSecondKirchhoffStress_IsochoricMooneyRivlin(CeedScalar J_dVdJ, CeedScalar bulk, CeedScalar mu_1, CeedScalar two_mu_2, CeedScalar Jm1, const CeedScalar C_inv_sym[6], const CeedScalar E_sym[6], CeedScalar S_sym[6])¶
Compute second Kirchoff stress for isochoric Mooney-Rivlin hyperelasticity.
- Parameters:
J_dVdJ – [in] J dV/dJ
bulk – [in] Bulk modulus
mu_1 – [in] First Mooney-Rivlin parameter
two_mu_2 – [in] Two times the second Mooney-Rivlin parameter
Jm1 – [in] Determinant of deformation gradient - 1
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
E_sym – [in] Green Lagrange strain, in symmetric representation
S_sym – [out] Second Kirchoff stress, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelSecondKirchhoffStress_IsochoricMooneyRivlin_fwd(CeedScalar J_dVdJ, CeedScalar J2_d2VdJ2, CeedScalar bulk, CeedScalar mu_1, CeedScalar two_mu_2, CeedScalar Jm1, const CeedScalar F[3][3], const CeedScalar grad_du[3][3], const CeedScalar C_inv_sym[6], const CeedScalar E_sym[6], CeedScalar dS_sym[6])¶
Compute derivative of second Kirchoff stress for isochoric Mooney-Rivlin hyperelasticity.
- Parameters:
J_dVdJ – [in] J dV/dJ
J2_d2VdJ2 – [in] J^2 d^2V/dJ^2
bulk – [in] Bulk modulus
mu_1 – [in] First Mooney-Rivlin parameter
two_mu_2 – [in] Two times the second Mooney-Rivlin parameter
Jm1 – [in] Determinant of deformation gradient - 1
F – [in] Deformation gradient
grad_du – [in] Gradient of incremental change in u
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
E_sym – [in] Green Lagrange strain, in symmetric representation
dS_sym – [out] Derivative of second Kirchoff stress, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelComputeFdSFTranspose_IsochoricMooneyRivlin(CeedScalar J_dVdJ, CeedScalar J2_d2VdJ2, CeedScalar bulk, CeedScalar mu_1, CeedScalar two_mu_2, CeedScalar J_pow, const CeedScalar grad_du[3][3], const CeedScalar e_sym[6], CeedScalar FdSFTranspose[3][3])¶
Compute F*dS*F^T for isochoric Mooney-Rivlin hyperelasticity in current configuration.
- Parameters:
J_dVdJ – [in] J dV/dJ
J2_d2VdJ2 – [in] J^2 d^2V/dJ^2
bulk – [in] Bulk modulus
mu_1 – [in] First Mooney-Rivlin parameter
two_mu_2 – [in] Two times the second Mooney-Rivlin parameter
J_pow – [in] J^{-2/3}
grad_du – [in] Gradient of incremental change in u
e_sym – [in] Green Euler strain, in symmetric representation
FdSFTranspose – [out] F*dS*F^T needed for computing df1 in current configuration
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelStrainEnergy_IsochoricMooneyRivlin(CeedScalar V, CeedScalar bulk, CeedScalar mu_1, CeedScalar mu_2, CeedScalar Jm1, CeedScalar trace_strain, CeedScalar trace_strain2, CeedScalar *strain_energy)¶
Compute strain energy for isochoric Mooney-Rivlin model.
psi = 0.5 mu_1 (I1_bar - 3) + 0.5 mu_2 (I2_bar - 3) + bulk * V(J)
- Parameters:
V – [in] V(J)
bulk – [in] Bulk modulus
mu_1 – [in] First Mooney-Rivlin parameter
mu_2 – [in] Second Mooney-Rivlin parameter
Jm1 – [in] Determinant of deformation gradient - 1
trace_strain – [in] Trace of Green Lagrange or Green euler strain tensor (E or e)
trace_strain2 – [in] Trace of E^2 (or e^2)
strain_energy – [out] Strain energy for isochoric Mooney-Rivlin model
- Returns:
An error code: 0 - success, otherwise - failure
-
int StrainEnergy_IsochoricMooneyRivlin(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute strain energy for isochoric Mooney-Rivlin hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - strain energy
- Returns:
An error code: 0 - success, otherwise - failure
-
int DiagnosticStress_IsochoricMooneyRivlin(void *ctx, const CeedScalar Jm1, const CeedScalar V, const CeedScalar J_dVdJ, CeedScalar grad_u[3][3], CeedScalar sigma_sym[6], CeedScalar *strain_energy, CeedScalar *trace_e, CeedScalar *trace_e2)¶
Compute projected diagnostic stress, and strain energy invariants values for isochoric Mooney-Rivlin hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Jm1 – [in] Determinant of deformation gradient - 1
V – [in] V(J); volumetric energy
J_dVdJ – [in] J dV/dJ
grad_u – [in] Gradient of incremental change in u
sigma_sym – [out] Cauchy stress tensor in symmetric representation
strain_energy – [out] Strain energy
trace_e – [out] Trace of strain tensor e
trace_e2 – [out] Trace of strain tensor e*e
- Returns:
An error code: 0 - success, otherwise - failure
-
int Diagnostic_IsochoricMooneyRivlin(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute projected diagnostic values for isochoric Mooney-Rivlin hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - u
2 - gradient of u with respect to reference coordinates
3 - p
out – [out] Output arrays
0 - projected diagnostic values
- Returns:
An error code: 0 - success, otherwise - failure
-
int SurfaceForceCellToFace_IsochoricMooneyRivlin(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute surface forces for isochoric Mooney-Rivlin hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - surface force values
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_IsochoricMooneyRivlinCurrent(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3])¶
Compute
tau
for isochoric Mooney-Rivlin hyperelasticity in current configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - stored, dXdx, e, J - 1 and J^{-2/3}
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = tau
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_IsochoricMooneyRivlinCurrent(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3])¶
Compute linearization of
df1
for isochoric Mooney-Rivlin hyperelasticity in current configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - stored dXdx, e, J - 1 and J^{-2/3}
2 - gradient of incremental change to u with respect to reference coordinates
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dtau - tau * grad_du^T
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityResidual_IsochoricMooneyRivlinCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute residual for isochoric Mooney-Rivlin hyperelasticity in current configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityJacobian_IsochoricMooneyRivlinCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate Jacobian for isochoric Mooney-Rivlin hyperelasticity in current configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_IsochoricMooneyRivlinInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3])¶
Compute
P
for isochoric Mooney-Rivlin hyperelasticity in initial configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - stored gradient of u with respect to physical coordinates
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = P
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_IsochoricMooneyRivlinInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3])¶
Compute linearization of
P
for isochoric Mooney-Rivlin hyperelasticity in initial configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - stored gradient of u with respect to physical coordinates
2 - gradient of incremental change to u with respect to reference coordinates
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dP
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityResidual_IsochoricMooneyRivlinInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute residual for isochoric Mooney-Rivlin hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityJacobian_IsochoricMooneyRivlinInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate Jacobian for isochoric Mooney-Rivlin hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlatenBCsResidual_IsochoricMooneyRivlinInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute platen residual for isochoric Mooney-Rivlin hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelBCPlatenParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlatenBCsJacobian_IsochoricMooneyRivlinInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate platen Jacobian for isochoric Mooney-Rivlin hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelBCPlatenParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelKirchhoffTau_IsochoricNeoHookean(CeedScalar J_dVdJ, CeedScalar bulk, CeedScalar two_mu, CeedScalar J_pow, const CeedScalar e_sym[6], CeedScalar tau_sym[6])¶
Compute Kirchoff tau for isochoric neo-Hookean hyperelasticity.
tau = (bulk * J dV/dJ) I + 2 mu J^{-2/3} e_dev
- Parameters:
J_dVdJ – [in] J dV/dJ
bulk – [in] Bulk modulus
two_mu – [in] Two times the shear modulus
J_pow – [in] J^{-2/3}
e_sym – [in] Green Euler strain, in symmetric representation
tau_sym – [out] Kirchoff tau, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelSecondKirchhoffStress_IsochoricNeoHookean(CeedScalar J_dVdJ, CeedScalar bulk, CeedScalar two_mu, CeedScalar Jm1, const CeedScalar C_inv_sym[6], const CeedScalar E_sym[6], CeedScalar S_sym[6])¶
Compute second Kirchoff stress for isochoric neo-Hookean hyperelasticity.
S = (bulk * J dV/dJ) * C_inv + 2 mu J^{-2/3} C_inv * E_dev
- Parameters:
J_dVdJ – [in] J dV/dJ
bulk – [in] Bulk modulus
two_mu – [in] Two times the shear modulus
Jm1 – [in] Determinant of deformation gradient - 1
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
E_sym – [in] Green Lagrange strain, in symmetric representation
S_sym – [out] Second Kirchoff stress, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelSecondKirchhoffStress_IsochoricNeoHookean_fwd(CeedScalar J_dVdJ, CeedScalar J2_d2VdJ2, CeedScalar bulk, CeedScalar mu, CeedScalar Jm1, const CeedScalar F[3][3], const CeedScalar grad_du[3][3], const CeedScalar C_inv_sym[6], const CeedScalar E_sym[6], CeedScalar dS_sym[6])¶
Compute derivative of second Kirchoff stress for isochoric neo-Hookean hyperelasticity.
dS = dS_vol + dS_iso
- Parameters:
J_dVdJ – [in] J dV/dJ
J2_d2VdJ2 – [in] J^2 d^2V/dJ^2
bulk – [in] Bulk modulus
mu – [in] Shear modulus
Jm1 – [in] Determinant of deformation gradient - 1
F – [in] Deformation gradient
grad_du – [in] Gradient of incremental change in u
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
E_sym – [in] Green Lagrange strain, in symmetric representation
dS_sym – [out] Derivative of second Kirchoff stress, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelComputeFdSFTranspose_IsochoricNeoHookean(CeedScalar J_dVdJ, CeedScalar J2_d2VdJ2, CeedScalar bulk, CeedScalar mu, CeedScalar J_pow, const CeedScalar grad_du[3][3], const CeedScalar e_sym[6], CeedScalar FdSFTranspose[3][3])¶
Compute F*dS*F^T for isochoric neo-Hookean hyperelasticity in current configuration.
- Parameters:
J_dVdJ – [in] J dV/dJ
J2_d2VdJ2 – [in] J^2 d^2V/dJ^2
bulk – [in] Bulk modulus
mu – [in] Shear modulus
J_pow – [in] J^{-2/3}
grad_du – [in] Gradient of incremental change in u
e_sym – [in] Green Euler strain, in symmetric representation
FdSFTranspose – [out] F*dS*F^T needed for computing df1 in current configuration
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelStrainEnergy_IsochoricNeoHookean(CeedScalar V, CeedScalar bulk, CeedScalar mu, CeedScalar Jm1, CeedScalar trace_strain, CeedScalar *strain_energy)¶
Compute strain energy for isochoric neo-Hookean model.
psi = 0.5 mu (I1_bar - 3) + bulk * V(J)
- Parameters:
V – [in] V(J)
bulk – [in] Bulk modulus
mu – [in] Shear modulus
Jm1 – [in] Determinant of deformation gradient - 1
trace_strain – [in] Trace of Green Lagrange or Green euler strain tensor (E or e)
strain_energy – [out] Strain energy for isochoric Neo-Hookean model
- Returns:
An error code: 0 - success, otherwise - failure
-
int StrainEnergy_IsochoricNeoHookean(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute strain energy for isochoric neo-Hookean hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - strain energy
- Returns:
An error code: 0 - success, otherwise - failure
-
int DiagnosticStress_IsochoricNeoHookean(void *ctx, const CeedScalar Jm1, const CeedScalar V, const CeedScalar J_dVdJ, CeedScalar grad_u[3][3], CeedScalar sigma_sym[6], CeedScalar *strain_energy, CeedScalar *trace_e, CeedScalar *trace_e2)¶
Compute projected diagnostic stress, and strain energy invariants values for isochoric Neo-Hookean hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Jm1 – [in] Determinant of deformation gradient - 1
V – [in] V(J); volumetric energy
J_dVdJ – [in] J dV/dJ
grad_u – [in] Gradient of incremental change in u
sigma_sym – [out] Cauchy stress tensor in symmetric representation
strain_energy – [out] Strain energy
trace_e – [out] Trace of strain tensor e
trace_e2 – [out] Trace of strain tensor e*e
- Returns:
An error code: 0 - success, otherwise - failure
-
int Diagnostic_IsochoricNeoHookean(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute projected diagnostic values for isochoric neo-Hookean hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int SurfaceForceCellToFace_IsochoricNeoHookean(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute surface forces for isochoric neo-Hookean hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - surface force values
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_IsochoricNeoHookeanCurrent(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3])¶
Compute
tau
for isochoric neo-Hookean hyperelasticity in current configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - stored, dXdx, e, J - 1 and J^{-2/3}
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = tau
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_IsochoricNeoHookeanCurrent(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3])¶
Compute linearization of
df1
for isochoric neo-Hookean hyperelasticity in current configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - stored dXdx, e, J - 1 and J^{-2/3}
2 - gradient of incremental change to u with respect to reference coordinates
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dtau - tau * grad_du^T
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityResidual_IsochoricNeoHookeanCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute residual for isochoric neo-Hookean hyperelasticity in current configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityJacobian_IsochoricNeoHookeanCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate Jacobian for isochoric neo-Hookean hyperelasticity in current configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_IsochoricNeoHookeanInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3])¶
Compute
P
for isochoric neo-Hookean hyperelasticity in initial configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - stored gradient of u with respect to physical coordinates
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = P
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_IsochoricNeoHookeanInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3])¶
Compute linearization of
P
for isochoric neo-Hookean hyperelasticity in initial configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - stored gradient of u with respect to physical coordinates
2 - gradient of incremental change to u with respect to reference coordinates
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dP
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityResidual_IsochoricNeoHookeanInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute residual for isochoric neo-Hookean hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityJacobian_IsochoricNeoHookeanInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate Jacobian for isochoric neo-Hookean hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlatenBCsResidual_IsochoricNeoHookeanInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute platen residual for isochoric neo-Hookean hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelBCPlatenParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlatenBCsJacobian_IsochoricNeoHookeanInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate platen Jacobian for isochoric neo-Hookean hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelBCPlatenParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelKirchhoffTau_IsochoricOgden(CeedScalar J_dVdJ, CeedScalar bulk, CeedInt N, const CeedScalar *m, const CeedScalar *alpha, const CeedScalar series_terms[9], const CeedScalar e_vals[3], const CeedScalar e_vecs[3][3], CeedScalar tau_sym[6])¶
Compute Kirchoff tau for isochoric Ogden hyperelasticity.
- Parameters:
J_dVdJ – [in] J dV/dJ
bulk – [in] Bulk modulus
N – [in] Number of Ogden parameters
m – [in] Array of first Ogden material model
alpha – [in] Array of second Ogden material model
series_terms – [in] Series terms
e_vals – [in] Eigenvalues of Green Euler strain tensor
e_vecs – [in] Eigenvectors of Green Euler strain tensor
tau_sym – [out] Kirchoff tau, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int SecondKirchhoffStress_IsochoricOgden(CeedScalar J_dVdJ, CeedScalar bulk, CeedInt N, const CeedScalar *m, const CeedScalar *alpha, CeedScalar Jm1, const CeedScalar C_inv_sym[6], const CeedScalar E_sym[6], CeedScalar S_sym[6])¶
Compute second Kirchoff stress for isochoric Ogden hyperelasticity.
- Parameters:
J_dVdJ – [in] J dV/dJ
bulk – [in] Bulk modulus
N – [in] Number of Ogden parameters
m – [in] Array of first Ogden material model
alpha – [in] Array of second Ogden material model
Jm1 – [in] Determinant of deformation gradient - 1
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
E_sym – [in] Green Lagrange strain, in symmetric representation
S_sym – [out] Second Kirchoff stress, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int SecondKirchhoffStress_IsochoricOgden_fwd(CeedScalar J_dVdJ, CeedScalar J2_d2VdJ2, CeedScalar bulk, CeedInt N, const CeedScalar *m, const CeedScalar *alpha, CeedScalar Jm1, const CeedScalar F[3][3], const CeedScalar grad_du[3][3], const CeedScalar C_inv_sym[6], const CeedScalar E_sym[6], CeedScalar dS_sym[6])¶
Compute derivative of second Kirchoff stress for isochoric Ogden hyperelasticity.
- Parameters:
J_dVdJ – [in] J dV/dJ
J2_d2VdJ2 – [in] J^2 d^2V/dJ^2
bulk – [in] Bulk modulus
N – [in] Number of Ogden parameters
m – [in] Array of first Ogden material model
alpha – [in] Array of second Ogden material model
Jm1 – [in] Determinant of deformation gradient - 1
F – [in] Deformation gradient
grad_du – [in] Gradient of incremental change in u
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
E_sym – [in] Green Lagrange strain, in symmetric representation
dS_sym – [out] Derivative of second Kirchoff stress, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelComputeFdSFTranspose_IsochoricOgden(CeedScalar J_dVdJ, CeedScalar J2_d2VdJ2, CeedScalar bulk, CeedInt N, const CeedScalar *m, const CeedScalar *alpha, const CeedScalar J_pow_alpha[3], const CeedScalar series_terms[9], const CeedScalar grad_du[3][3], const CeedScalar e_vals[3], const CeedScalar e_vecs[3][3], CeedScalar FdSFTranspose[3][3])¶
Compute F*dS*F^T for isochoric Ogden hyperelasticity in current configuration.
- Parameters:
J_dVdJ – [in] J dV/dJ
J2_d2VdJ2 – [in] J^2 d^2V/dJ^2
bulk – [in] Bulk modulus
N – [in] Number of Ogden parameters
m – [in] Array of first Ogden material model
alpha – [in] Array of second Ogden material model
J_pow_alpha – [in] Array of J^{-alpha[j]/3}, j=1..3
series_terms – [in] Series terms
grad_du – [in] Gradient of incremental change in u
e_vals – [in] Eigenvalues of Green Euler strain tensor
e_vecs – [in] Eigenvectors of Green Euler strain tensor
FdSFTranspose – [out] F*dS*F^T needed for computing df1 in current configuration
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelStrainEnergy_IsochoricOgden(CeedScalar V, CeedScalar bulk, CeedInt N, const CeedScalar *m, const CeedScalar *alpha, const CeedScalar pr_str_bar[3], CeedScalar *strain_energy)¶
Compute strain energy for isochoric Ogden model.
psi = sum_{j=1:3} (sum_{k=1:N} m_k/alpha_k (pr_bar_j^alpha_k - 1)) + bulk * V(J)
- Parameters:
V – [in] V(J)
bulk – [in] Bulk modulus
N – [in] Number of Ogden parameters
m – [in] Array of first Ogden material model
alpha – [in] Array of second Ogden material model
pr_str_bar – [in] Modified principal stretch
strain_energy – [out] Strain energy for isochoric Ogden model
- Returns:
An error code: 0 - success, otherwise - failure
-
int StrainEnergy_IsochoricOgden(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute strain energy for isochoric Ogden hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelOgdenElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - strain energy
- Returns:
An error code: 0 - success, otherwise - failure
-
int DiagnosticStress_IsochoricOgden(void *ctx, const CeedScalar Jm1, const CeedScalar V, const CeedScalar J_dVdJ, CeedScalar grad_u[3][3], CeedScalar sigma_sym[6], CeedScalar *strain_energy, CeedScalar *trace_e, CeedScalar *trace_e2)¶
Compute projected diagnostic stress, and strain energy invariants values for isochoric Ogden hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelOgdenElasticityParams
Jm1 – [in] Determinant of deformation gradient - 1
V – [in] V(J); volumetric energy
J_dVdJ – [in] J dV/dJ
grad_u – [in] Gradient of incremental change in u
sigma_sym – [out] Cauchy stress tensor in symmetric representation
strain_energy – [out] Strain energy
trace_e – [out] Trace of strain tensor e
trace_e2 – [out] Trace of strain tensor e*e
- Returns:
An error code: 0 - success, otherwise - failure
-
int Diagnostic_IsochoricOgden(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute projected diagnostic values for isochoric Ogden hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelOgdenElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int SurfaceForceCellToFace_IsochoricOgden(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute surface forces for isochoric Ogden hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelOgdenElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - surface force values
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_IsochoricOgdenCurrent(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3])¶
Compute
tau
for isochoric Ogden hyperelasticity in current configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelOgdenElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - stored, dXdx, e, J - 1 and J^{-alpha[j]/3}
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = tau
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_IsochoricOgdenCurrent(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3])¶
Compute linearization of
tau
for isochoric Ogden hyperelasticity in current configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelOgdenElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - stored, dXdx, e, J - 1 and J^{-alpha[j]/3}
2 - gradient of incremental change to u with respect to reference coordinates
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dtau - tau * grad_du^T
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityResidual_IsochoricOgdenCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute residual for isochoric Ogden hyperelasticity in current configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelOgdenElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityJacobian_IsochoricOgdenCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate Jacobian for isochoric Ogden hyperelasticity in current configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelOgdenElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_IsochoricOgdenInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3])¶
Compute
P
for isochoric Ogden hyperelasticity in initial configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelOgdenElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - stored gradient of u with respect to physical coordinates
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = P
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_IsochoricOgdenInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3])¶
Compute linearization of
P
for isochoric Ogden hyperelasticity in initial configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelOgdenElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - stored gradient of u with respect to physical coordinates
2 - gradient of incremental change to u with respect to reference coordinates
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dP
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityResidual_IsochoricOgdenInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute residual for isochoric Ogden hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelOgdenElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityJacobian_IsochoricOgdenInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate Jacobian for isochoric Ogden hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelOgdenElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlatenBCsResidual_IsochoricOgdenInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute platen residual for isochoric Ogden hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelBCPlatenParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlatenBCsJacobian_IsochoricOgdenInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate platen Jacobian for isochoric Ogden hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelBCPlatenParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelIsochoricKirchhoffTau_MooneyRivlin(CeedScalar mu_1, CeedScalar two_mu_2, CeedScalar J_pow, const CeedScalar e_sym[6], CeedScalar tau_iso_sym[6])¶
Compute isochoric part of Kirchoff tau for Mooney-Rivlin hyperelasticity.
tau_iso = 2 (mu_1 * J^{-2/3} + 2 mu_2 * J^{-4/3}) e_dev + 2 mu_2 * J^{-4/3} (trace(e) b - e*b) - 4/3 mu_2 * J^{-4/3}*(I1(e) + 2* I2(e)) * I
- Parameters:
mu_1 – [in] First Mooney-Rivlin parameter
two_mu_2 – [in] Two times the second Mooney-Rivlin parameter
J_pow – [in] J^{-2/3}
e_sym – [in] Green Euler strain, in symmetric representation
tau_iso_sym – [out] Isochoric Kirchoff tau, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelIsochoricSecondKirchhoffStress_MooneyRivlin(CeedScalar mu_1, CeedScalar two_mu_2, CeedScalar J, const CeedScalar C_inv_sym[6], const CeedScalar E_sym[6], CeedScalar S_iso_sym[6])¶
Compute isochoric part of second Kirchoff stress for Mooney-Rivlin hyperelasticity.
- Parameters:
mu_1 – [in] First Mooney-Rivlin parameter
two_mu_2 – [in] Two times the second Mooney-Rivlin parameter
J – [in] Determinant of deformation gradient
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
E_sym – [in] Green Lagrange strain, in symmetric representation
S_iso_sym – [out] Isochoric second Kirchoff stress, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelIsochoricSecondKirchhoffStress_MooneyRivlin_fwd(CeedScalar mu_1, CeedScalar two_mu_2, CeedScalar J, const CeedScalar F[3][3], const CeedScalar grad_du[3][3], const CeedScalar C_inv_sym[6], const CeedScalar E_sym[6], CeedScalar dC_inv_sym[6], CeedScalar dS_iso_sym[6], CeedScalar *Cinv_contract_dE)¶
Compute derivative of isochoric second Kirchoff stress for Mooney-Rivlin hyperelasticity.
- Parameters:
mu_1 – [in] First Mooney-Rivlin parameter
two_mu_2 – [in] Two times the second Mooney-Rivlin parameter
J – [in] Determinant of deformation gradient
F – [in] Deformation gradient
grad_du – [in] Gradient of incremental change in u
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
E_sym – [in] Green Lagrange strain, in symmetric representation
dC_inv_sym – [out] Derivative of C^{-1}, in symmetric representation
dS_iso_sym – [out] Derivative of isochoric second Kirchoff stress, in symmetric representation
Cinv_contract_dE – [out]
C_inv : dE
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelComputeFdSFTransposeIsochoric_MooneyRivlin(CeedScalar mu_1, CeedScalar two_mu_2, CeedScalar J_pow, const CeedScalar grad_du[3][3], const CeedScalar e_sym[6], CeedScalar depsilon_sym[6], CeedScalar FdSFTranspose_iso_sym[6], CeedScalar *trace_depsilon)¶
Compute F*dS_iso*F^T for isochoric Mooney-Rivlin hyperelasticity in current configuration.
- Parameters:
mu_1 – [in] First Mooney-Rivlin parameter
two_mu_2 – [in] Two times the second Mooney-Rivlin parameter
J_pow – [in] J^{-2/3}
grad_du – [in] Gradient of incremental change in u
e_sym – [in] Green Euler strain, in symmetric representation
depsilon_sym – [out] depsilon = (grad_du + grad_du^T)/2
FdSFTranspose_iso_sym – [out] F*dS_iso*F^T needed for computing df1 in current configuration
trace_depsilon – [out]
trace(depsilon)
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelIsochoricKirchhoffTau_NeoHookean(CeedScalar two_mu, CeedScalar J_pow, const CeedScalar e_sym[6], CeedScalar tau_iso_sym[6])¶
Compute isochoric part of Kirchoff tau for neo-Hookean hyperelasticity.
tau_iso = 2 mu J^{-2/3} e_dev
- Parameters:
two_mu – [in] Two times the shear modulus
J_pow – [in] J^{-2/3}
e_sym – [in] Green Euler strain, in symmetric representation
tau_iso_sym – [out] Isochoric Kirchoff tau, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelIsochoricSecondKirchhoffStress_NeoHookean(CeedScalar two_mu, CeedScalar J, const CeedScalar C_inv_sym[6], const CeedScalar E_sym[6], CeedScalar S_iso_sym[6])¶
Compute isochoric part of second Kirchoff stress for neo-Hookean hyperelasticity.
S_iso = 2 mu J^{-2/3} C_inv * E_dev
- Parameters:
two_mu – [in] Two times the shear modulus
J – [in] Determinant of deformation gradient
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
E_sym – [in] Green Lagrange strain, in symmetric representation
S_iso_sym – [out] Isochoric second Kirchoff stress, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelIsochoricSecondKirchhoffStress_NeoHookean_fwd(CeedScalar mu, CeedScalar J, const CeedScalar F[3][3], const CeedScalar grad_du[3][3], const CeedScalar C_inv_sym[6], const CeedScalar E_sym[6], CeedScalar dC_inv_sym[6], CeedScalar dS_iso_sym[6], CeedScalar *Cinv_contract_dE)¶
Compute derivative of isochoric second Kirchoff stress for neo-Hookean hyperelasticity.
dS_iso = -4/3 mu J^(-2/3) (C_inv:dE) C_inv * E_dev - 1/3 mu J^(-2/3) dS_iso1
dS_iso1 = 2 tr(dE) C_inv + I1(C) dC_inv
- Parameters:
mu – [in] Shear modulus
J – [in] Determinant of deformation gradient
F – [in] Deformation gradient
grad_du – [in] Gradient of incremental change in u
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
E_sym – [in] Green Lagrange strain, in symmetric representation
dC_inv_sym – [out] Derivative of C^{-1}, in symmetric representation
dS_iso_sym – [out] Derivative of isochoric second Kirchoff stress, in symmetric representation
Cinv_contract_dE – [out]
C_inv : dE
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelComputeFdSFTransposeIsochoric_NeoHookean(CeedScalar mu, CeedScalar J_pow, const CeedScalar grad_du[3][3], const CeedScalar e_sym[6], CeedScalar depsilon_sym[6], CeedScalar FdSFTranspose_iso_sym[6], CeedScalar *trace_depsilon)¶
Compute F*dS_iso*F^T for neo-Hookean hyperelasticity in current configuration.
- Parameters:
mu – [in] Shear modulus
J_pow – [in] J^{-2/3}
grad_du – [in] Gradient of incremental change in u
e_sym – [in] Green Euler strain, in symmetric representation
depsilon_sym – [out] depsilon = (grad_du + grad_du^T)/2
FdSFTranspose_iso_sym – [out] F*dS_iso*F^T needed for computing df1 in current configuration
trace_depsilon – [out]
trace(depsilon)
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelIsochoricKirchhoffTau_Ogden(CeedInt N, const CeedScalar *m, const CeedScalar *alpha, const CeedScalar series_terms[9], const CeedScalar e_vals[3], const CeedScalar e_vecs[3][3], CeedScalar tau_iso_sym[6])¶
Compute isochoric part of Kirchoff tau for Ogden hyperelasticity.
- Parameters:
N – [in] Number of Ogden parameters
m – [in] Array of first Ogden material model
alpha – [in] Array of second Ogden material model
series_terms – [in] Series terms
e_vals – [in] Eigenvalues of Green Euler strain tensor
e_vecs – [in] Eigenvectors of Green Euler strain tensor
tau_iso_sym – [out] Isochoric Kirchoff tau, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelIsochoricSecondKirchhoffStress_Ogden(CeedInt N, const CeedScalar *m, const CeedScalar *alpha, CeedScalar J, const CeedScalar C_inv_sym[6], const CeedScalar E_sym[6], CeedScalar S_iso_sym[6])¶
Compute isochoric part of second Kirchoff stress for Ogden hyperelasticity.
- Parameters:
N – [in] Number of Ogden parameters
m – [in] Array of first Ogden material model
alpha – [in] Array of second Ogden material model
J – [in] Determinant of deformation gradient
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
E_sym – [in] Green Lagrange strain, in symmetric representation
S_iso_sym – [out] Isochoric second Kirchoff stress, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelIsochoricSecondKirchhoffStress_Ogden_fwd(CeedInt N, const CeedScalar *m, const CeedScalar *alpha, CeedScalar J, const CeedScalar F[3][3], const CeedScalar grad_du[3][3], const CeedScalar C_inv_sym[6], const CeedScalar E_sym[6], CeedScalar dC_inv_sym[6], CeedScalar dS_iso_sym[6], CeedScalar *Cinv_contract_dE)¶
Compute derivative of isochoric second Kirchoff stress for Ogden hyperelasticity.
- Parameters:
N – [in] Number of Ogden parameters
m – [in] Array of first Ogden material model
alpha – [in] Array of second Ogden material model
J – [in] Determinant of deformation gradient
F – [in] Deformation gradient
grad_du – [in] Gradient of incremental change in u
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
E_sym – [in] Green Lagrange strain, in symmetric representation
dC_inv_sym – [out] Derivative of C^{-1}, in symmetric representation
dS_iso_sym – [out] Derivative of isochoric second Kirchoff stress, in symmetric representation
Cinv_contract_dE – [out]
C_inv : dE
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelComputeFdSFTransposeIsochoric_Ogden(CeedInt N, const CeedScalar *m, const CeedScalar *alpha, const CeedScalar J_pow_alpha[3], const CeedScalar series_terms[9], const CeedScalar grad_du[3][3], const CeedScalar e_vals[3], const CeedScalar e_vecs[3][3], CeedScalar depsilon_sym[6], CeedScalar FdSFTranspose_iso_sym[6], CeedScalar *trace_depsilon)¶
Compute F*dS_iso*F^T for Ogden hyperelasticity in current configuration.
- Parameters:
N – [in] Number of Ogden parameters
m – [in] Array of first Ogden material model
alpha – [in] Array of second Ogden material model
J_pow_alpha – [in] Array of J^{-alpha[j]/3}, j=1..3
series_terms – [in] Series terms
grad_du – [in] Gradient of incremental change in u
e_vals – [in] Eigenvalues of Green Euler strain tensor
e_vecs – [in] Eigenvectors of Green Euler strain tensor
depsilon_sym – [out] depsilon = (grad_du + grad_du^T)/2
FdSFTranspose_iso_sym – [out] F*dS_iso*F^T needed for computing df1 in current configuration
trace_depsilon – [out]
trace(depsilon)
- Returns:
An error code: 0 - success, otherwise - failure
-
CeedScalar PsiPlus_Linear(const CeedScalar mu, const CeedScalar bulk, const CeedScalar trace_e, const CeedScalar e_dev_sym[6])¶
Compute Psi_plus for linear elasticity with damage.
- Parameters:
mu – [in] shear modulus
bulk – [in] bulk modulus
trace_e – [in] trace strain tensor
e_dev_sym – [in] deviatoric strain tensor in symmetric representation
- Returns:
Computed Psi_plus for linear elasticity
-
CeedScalar PsiPlus_Linear_fwd(const CeedScalar mu, const CeedScalar bulk, const CeedScalar trace_e, const CeedScalar e_dev_sym[6], const CeedScalar de_sym[6])¶
Compute Linearization of Psi_plus for linear elasticity with damage.
- Parameters:
mu – [in] Shear modulus
bulk – [in] Bulk modulus
trace_e – [in] trace strain tensor
e_dev_sym – [in] deviatoric strain tensor in symmetric representation
de_sym – [in] Linear strain tensor increment in symmetric representation
- Returns:
Computed linearization of Psi_plus for linear elasticity
-
int ComputeDegradedStress_Linear(const CeedScalar mu, const CeedScalar bulk, const CeedScalar eta, const CeedScalar phi, const CeedScalar trace_e, const CeedScalar e_dev_sym[6], CeedScalar sigma_degr_sym[6])¶
Compute
sigma_degr
for linear damage elasticity.sigma_degr = g(phi) * sigma_vol + g(phi) * sigma_dev, if trace_e >= 0
sigma_degr = sigma_vol + g(phi) * sigma_dev, if trace_e < 0
- Parameters:
mu – [in] Shear modulus
bulk – [in] Bulk modulus
eta – [in] Residual stiffness
phi – [in] Damage field
trace_e – [in] trace strain tensor
e_dev_sym – [in] deviatoric strain tensor in symmetric representation
sigma_degr_sym – [out] Degraded stress in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int ComputeDegradedStress_Linear_fwd(const CeedScalar mu, const CeedScalar bulk, const CeedScalar eta, const bool use_offdiagonal, const CeedScalar phi, const CeedScalar trace_e, const CeedScalar dphi, const CeedScalar trace_de, const CeedScalar e_dev_sym[6], const CeedScalar de_dev_sym[6], CeedScalar dsigma_degr_sym[6])¶
Compute linearization of
sigma_degr
for linear damage elasticity.dsigma_degr = g(phi) * dsigma_vol + g(phi) * dsigma_dev + dg * sigma_vol + dg * sigma_dev, if trace_e >= 0
dsigma_degr = dsigma_vol + g(phi) * dsigma_dev + dg * sigma_dev, if trace_e < 0
- Parameters:
mu – [in] Shear modulus
bulk – [in] Bulk modulus
eta – [in] Residual stiffness
use_offdiagonal – [in] Flag to use off-diagonal terms
phi – [in] Damage field
trace_e – [in] trace strain tensor
dphi – [in] Increment of damage field
trace_de – [in] Trace of incremental linear strain
e_dev_sym – [in] deviatoric strain tensor in symmetric representation
de_dev_sym – [in] deviatoric strain tensor increment in symmetric representation
dsigma_degr_sym – [out] Linearization of degraded stress in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityDamageResidual_ut_Linear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute u_t term of damage residual.
- Parameters:
ctx – [in] QFunction context, holding
RatelElasticityDamageParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - volumetric qdata
2 - u_t (four components: 3 displacement components, 1 scalar damage field)
out – [out] Output arrays
2 - action on u_t
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityDamageResidual_Linear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute residual for linear elasticity with damage.
- Parameters:
ctx – [in] QFunction context, holding
RatelElasticityDamageParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - volumetric qdata
1 - Psi_plus and damage state
2 - u (four components: 3 displacement components, 1 scalar damage field)
3 - u_g gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - Updated Psi_plus and damage state
1 - stored vector
2 - action on u
3 - action on u_g
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityDamageJacobian_Linear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute jacobian for linear elasticity with damage.
- Parameters:
ctx – [in] QFunction context, holding
RatelElasticityDamageParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - volumetric qdata
1 - Current state values
2 - Stored values
3 - du (four components: 3 displacement components, 1 damage field)
4 - du_g gradient of du with respect to reference coordinates
out – [out] Output arrays
0 - action on du
1 - action on du_g
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityDamageDiagnostic_Linear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute projected diagnostic values for linear elasticity with damage.
- Parameters:
ctx – [in] QFunction context holding RatelElasticityDamageParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
2 - u (four components: 3 displacement components, 1 scalar damage field)
3 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - projected diagnostic values
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityDamageStrainEnergy_Linear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute (degraded) strain energy for linear elasticity+damage.
- Parameters:
ctx – [in] QFunction context holding RatelElasticityDamageParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
2 - u (4 components)
3 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - (degraded) strain energy
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityDamageSurfaceForceCellToFace_Linear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute (degraded) surface force for linear elasticity+damage.
- Parameters:
ctx – [in] QFunction context holding RatelElasticityDamageParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - u (4 components)
2 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - surface force value
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityDamageDualDiagnostic_Linear(void *ctx, const CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute dual space diagnostic values for linear elasticity with damage.
- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - volumetric qdata
out – [out] Output array
0 - nodal volume
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityDamagePlatenResidual_Linear(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar sigma_degr[3][3])¶
Compute platens residual for linear elasticity with damage.
- Parameters:
ctx – [in] QFunction context, holding
RatelElasticityDamageParams
Q – [in] Number of quadrature points
i – [in] Index
in – [in] Input arrays
0 - volumetric qdata
2 - u (four components: 3 displacement components, 1 scalar damage field)
3 - u_g gradient of u with respect to reference coordinates
out – [out] Output arrays
1 - stored vector
2 - initializing v
dXdx – [out] dXdx
sigma_degr – [out] Degraded stress tensor
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityDamagePlatenJacobian_Linear(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar dsigma_degr[3][3])¶
Compute platens jacobian for linear elasticity with damage.
- Parameters:
ctx – [in] QFunction context, holding
RatelElasticityDamageParams
Q – [in] Number of quadrature points
i – [in] Index
in – [in] Input arrays
0 - volumetric qdata
2 - Stored values
3 - du (four components: 3 displacement components, 1 damage field)
4 - du_g gradient of du with respect to reference coordinates
out – [out] Output arrays
0 - initializing dv
dXdx – [out] dXdx
dsigma_degr – [out] Linearization of degraded stress tensor
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlatenBCsResidualElasticityDamage_Linear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute platen residual for linear elasticity+damage.
- Parameters:
ctx – [in] QFunction context, holding
RatelBCPlatenParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlatenBCsJacobianElasticityDamage_Linear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate platen Jacobian for linear elasticity+damage.
- Parameters:
ctx – [in] QFunction context, holding
RatelBCPlatenParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityDualDiagnostic_Linear(void *ctx, const CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute dual space diagnostic values.
- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - volumetric qdata
out – [out] Output array
0 - nodal volume
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_Linear(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3])¶
Compute
Sigma
for linear elasticity.- Parameters:
ctx – [in] QFunction context, holding
RatelLinearElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = Sigma = lambda*trace(e)I + 2 mu e
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_Linear(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3])¶
Compute linearization of
Sigma
for linear elasticity.- Parameters:
ctx – [in] QFunction context, holding
RatelLinearElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of incremental change to u with respect to reference coordinates
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dSigma = lambda tr(de) I + 2 mu de
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityResidual_Linear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute residual for linear elasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelLinearElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityJacobian_Linear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate Jacobian for linear elasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelLinearElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlatenBCsResidual_Linear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute platen residual for linear elasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelBCPlatenParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlatenBCsJacobian_Linear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate platen Jacobian for linear elasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelBCPlatenParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int StrainEnergy_Linear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute strain energy for linear elasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelLinearElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - strain energy
- Returns:
An error code: 0 - success, otherwise - failure
-
int Diagnostic_Linear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute projected diagnostic values for linear elasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelLinearElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - u
2 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - projected diagnostic values
- Returns:
An error code: 0 - success, otherwise - failure
-
int SurfaceForceCellToFace_Linear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute surface forces for linear elasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelLinearElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - surface force values
- Returns:
An error code: 0 - success, otherwise - failure
-
int MixedElasticityResidual(void *ctx, CeedInt Q, RatelComputef1_Mixed compute_f1_mixed, RatelComputeg0_Mixed compute_g0_mixed, bool has_state_values, bool has_stored_values, CeedInt num_active_field_eval_modes, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute mixed elasticity residual evaluation.
- Parameters:
ctx – [in] QFunction context, unused
Q – [in] Number of quadrature points
compute_f1_mixed – [in] Function to compute action of f1
compute_g0_mixed – [in] Function to compute action of g0
has_state_values – [in] Boolean flag indicating model state values in residual evaluation
has_stored_values – [in] Boolean flag indicating model stores values in residual evaluation
num_active_field_eval_modes – [in] Number of active field evaluation modes
in – [in] Input arrays
0 - volumetric qdata
out – [out] Output array
output_data_offset
- action of QFunction on displacementoutput_data_offset + 1
- action of QFunction on pressure
- Returns:
An error code: 0 - success, otherwise - failure
-
int MixedElasticityJacobian(void *ctx, CeedInt Q, RatelComputedf1_fwd_Mixed compute_df1_mixed, RatelComputedg0_fwd_Mixed compute_dg0_mixed, bool has_state_values, bool has_stored_values, CeedInt num_active_field_eval_modes, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute mixed elasticity Jacobian evaluation.
- Parameters:
ctx – [in] QFunction context, holding common parameters and model parameters
Q – [in] Number of quadrature points
compute_df1_mixed – [in] Function to compute action of df1
compute_dg0_mixed – [in] Function to compute action of dg0
has_state_values – [in] Boolean flag indicating model state values in residual evaluation
has_stored_values – [in] Boolean flag indicating model stores values in residual evaluation
num_active_field_eval_modes – [in] Number of active field evaluation modes
in – [in] Input arrays
0 - volumetric qdata
input_data_offset
- incremental change in u
out – [out] Output array
0 - action of QFunction on displacement
1 - action of QFunction on pressure
2 - action of QFunction dynamic solver term
- Returns:
An error code: 0 - success, otherwise - failure
-
int MixedElasticityDiagnostic(void *ctx, CeedInt Q, RatelComputeDiagnosticMixedStress compute_diagnostic_mixedstress, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute mixed elasticity diagnostic evaluation.
- Parameters:
ctx – [in] QFunction context, holding common parameters and model parameters
Q – [in] Number of quadrature points
compute_diagnostic_mixedstress – [in] Function to compute diagnostic
in – [in] Input arrays
0 - qdata
1 - u
2 - gradient of u with respect to reference coordinates
3 - p
out – [out] Output arrays
0 - projected diagnostic values
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_MixedLinear(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3], CeedScalar *trace_e)¶
Compute
Sigma
for linear mixed elasticity.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedLinearElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u with respect to reference coordinates
2 - p
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = Sigma = (bulk_primal * tr(e) - p) * I + 2 * mu * e_dev
trace_e – [out] Divergence of u = trace_e needed for computing g0 function
- Returns:
An error code: 0 - success, otherwise - failure
-
int g0_MixedLinear(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, const CeedScalar trace_e, CeedScalar *const *out, CeedScalar *g0)¶
Compute
g0
for mixed linear elasticity.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedLinearElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
2 - p
trace_e – [in] Divergence of u = trace_e computed in f1 function
out – [out] Output arrays, unused
g0 – [out]
g0 = -div(u) - p/(bulk - bulk_primal)
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_MixedLinear(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3], CeedScalar *trace_de, CeedScalar *Cinv_contract_dE)¶
Compute linearization of
Sigma
for mixed linear elasticity.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedLinearElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of incremental change to u with respect to reference coordinates
2 - dp
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dSigma = -dp*I + 2*mu*de_dev
trace_de – [out] Linearization of div(u): div_du = trace_de
Cinv_contract_dE – [out]
C_inv:dE
, unused for mixed linear elasticity
- Returns:
An error code: 0 - success, otherwise - failure
-
int dg0_MixedLinear(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, const CeedScalar trace_de, const CeedScalar Cinv_contract_dE, CeedScalar *const *out, CeedScalar *dg0)¶
Compute linearization of
g0
for mixed linear elasticity.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedLinearElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
2 - dp
trace_de – [in] Linearization of divergence of u: div(du) = trace_de computed in df1 function
Cinv_contract_dE – [in]
C_inv:dE
unused for mixed linear elasticityout – [out] Output arrays, unused
dg0 – [out]
dg0 = -div(du) - dp/(bulk - bulk_primal)
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityResidual_MixedLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute residual for mixed linear elasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedLinearElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityJacobian_MixedLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate Jacobian for linear mixed elasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedLinearElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_MixedLinear_Platen(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3])¶
Wrapper to compute
Sigma
for linear mixed elasticity platen BCs.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedLinearElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u with respect to reference coordinates
2 - p
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = Sigma = -p*I + 2*mu*e_dev
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_MixedLinear_Platen(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3])¶
Wrapper to compute linearization of
Sigma
for mixed linear elasticity.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedLinearElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of incremental change to u with respect to reference coordinates
2 - dp
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dSigma = -dp*I + 2*mu*de_dev
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlatenBCsResidual_MixedLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute platen residual for linear mixed elasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelBCPlatenParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlatenBCsJacobian_MixedLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate platen Jacobian for linear mixed elasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelBCPlatenParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int StrainEnergy_MixedLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute strain energy for mixed linear elasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedLinearElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - gradient of u with respect to reference coordinates
2 - p
out – [out] Output arrays
0 - strain energy
- Returns:
An error code: 0 - success, otherwise - failure
-
int Diagnostic_MixedLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute projected diagnostic values for mixed linear elasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedLinearElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - u
2 - gradient of u with respect to reference coordinates
3 - p
out – [out] Output arrays
0 - projected diagnostic values
- Returns:
An error code: 0 - success, otherwise - failure
-
int SurfaceForceCellToFace_MixedLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute surface forces for mixed linear elasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedLinearElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - gradient of u with respect to reference coordinates
2 - p
out – [out] Output arrays
0 - surface force values
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityPC_uu_MixedLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute displacement block for pMG preconditioner for mixed linear elasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - gradient of incremental change of u with respect to reference coordinates
out – [out] Output arrays
0 - action of QFunction for displacement field
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityPC_pp_MixedLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute pressure block for pMG preconditioner for mixed linear elasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - incremental change of p
out – [out] Output arrays
0 - action of QFunction for pressure field
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelKirchhoffTau_MixedNeoHookean(CeedScalar J_dVdJ, CeedScalar bulk_primal, CeedScalar two_mu, CeedScalar p, CeedScalar Jm1, CeedScalar J_pow, const CeedScalar e_sym[6], CeedScalar tau_sym[6])¶
Compute Kirchoff tau for mixed neo-Hookean hyperelasticity.
tau = [bulk_primal * J dV/dJ - p J] I + 2 mu J^{-2/3} e_dev
- Parameters:
J_dVdJ – [in] J dV/dJ
bulk_primal – [in] Primal bulk modulus
two_mu – [in] Two times the shear modulus
p – [in] Pressure
Jm1 – [in] Determinant of deformation gradient - 1
J_pow – [in] J^{-2/3}
e_sym – [in] Green Euler strain, in symmetric representation
tau_sym – [out] Kirchoff tau, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelSecondKirchhoffStress_MixedNeoHookean(CeedScalar J_dVdJ, CeedScalar bulk_primal, CeedScalar two_mu, CeedScalar p, CeedScalar Jm1, const CeedScalar C_inv_sym[6], const CeedScalar E_sym[6], CeedScalar S_sym[6])¶
Compute second Kirchoff stress for mixed neo-Hookean hyperelasticity.
S = S_iso + S_vol
- Parameters:
J_dVdJ – [in] J dV/dJ
bulk_primal – [in] Primal bulk modulus
two_mu – [in] Two times the shear modulus
p – [in] Pressure
Jm1 – [in] Determinant of deformation gradient - 1
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
E_sym – [in] Green Lagrange strain, in symmetric representation
S_sym – [out] Second Kirchoff stress, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelSecondKirchhoffStress_MixedNeoHookean_fwd(CeedScalar J_dVdJ, CeedScalar J2_d2VdJ2, CeedScalar bulk_primal, CeedScalar mu, CeedScalar p, CeedScalar dp, CeedScalar Jm1, const CeedScalar F[3][3], const CeedScalar grad_du[3][3], const CeedScalar C_inv_sym[6], const CeedScalar E_sym[6], CeedScalar dS_sym[6], CeedScalar *Cinv_contract_dE)¶
Compute derivative of second Kirchoff stress for mixed neo-Hookean hyperelasticity.
dS = dS_iso + dS_vol
- Parameters:
J_dVdJ – [in] J dV/dJ
J2_d2VdJ2 – [in] J^2 d^2V/dJ^2
bulk_primal – [in] Primal bulk modulus
mu – [in] Shear modulus
p – [in] Pressure
dp – [in] Increment of Pressure
Jm1 – [in] Determinant of deformation gradient - 1
F – [in] Deformation gradient
grad_du – [in] Gradient of incremental change in u
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
E_sym – [in] Green Lagrange strain, in symmetric representation
dS_sym – [out] Derivative of second Kirchoff stress, in symmetric representation
Cinv_contract_dE – [out]
C_inv : dE
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelComputeFdSFTranspose_MixedNeoHookean(CeedScalar J_dVdJ, CeedScalar J2_d2VdJ2, CeedScalar bulk_primal, CeedScalar mu, CeedScalar p, CeedScalar dp, CeedScalar Jm1, CeedScalar J_pow, const CeedScalar grad_du[3][3], const CeedScalar e_sym[6], CeedScalar FdSFTranspose[3][3], CeedScalar *trace_depsilon)¶
Compute F*dS*F^T for mixed neo-Hookean hyperelasticity in current configuration.
- Parameters:
J_dVdJ – [in] J dV/dJ
J2_d2VdJ2 – [in] J^2 d^2V/dJ^2
bulk_primal – [in] Primal bulk modulus
mu – [in] Shear modulus
p – [in] Pressure
dp – [in] Increment of Pressure
Jm1 – [in] Determinant of deformation gradient - 1
J_pow – [in] J^{-2/3}
grad_du – [in] Gradient of incremental change in u
e_sym – [in] Green Euler strain, in symmetric representation
FdSFTranspose – [out] F*dS*F^T needed for computing df1 in current configuration
trace_depsilon – [out]
trace(depsilon)
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelStrainEnergy_MixedNeoHookean(CeedScalar V, CeedScalar bulk, CeedScalar mu, CeedScalar Jm1, CeedScalar trace_strain, CeedScalar *strain_energy)¶
Compute strain energy for mixed neo-Hookean model.
psi = 0.5 mu (I1_bar - 3) + bulk * V(J)
- Parameters:
V – [in] V(J)
bulk – [in] Bulk modulus
mu – [in] Shear modulus
Jm1 – [in] Determinant of deformation gradient - 1
trace_strain – [in] Trace of Green Lagrange or Green euler strain tensor (E or e)
strain_energy – [out] Strain energy for mixed Neo-Hookean model
- Returns:
An error code: 0 - success, otherwise - failure
-
int StrainEnergy_MixedNeoHookean(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute strain energy for mixed neo-Hookean hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - strain energy
- Returns:
An error code: 0 - success, otherwise - failure
-
int DiagnosticStress_MixedNeoHookean(void *ctx, const CeedScalar p, const CeedScalar Jm1, const CeedScalar V, const CeedScalar J_dVdJ, CeedScalar grad_u[3][3], CeedScalar sigma_sym[6], CeedScalar *strain_energy, CeedScalar *trace_e, CeedScalar *trace_e2)¶
Compute projected diagnostic stress, and strain energy invariants values for isochoric Neo-Hookean hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
p – [in] Pressure field
Jm1 – [in] Determinant of deformation gradient - 1
V – [in] V(J); volumetric energy
J_dVdJ – [in] J dV/dJ
grad_u – [in] Gradient of incremental change in u
sigma_sym – [out] Cauchy stress tensor in symmetric representation
strain_energy – [out] Strain energy
trace_e – [out] Trace of strain tensor e
trace_e2 – [out] Trace of strain tensor e*e
- Returns:
An error code: 0 - success, otherwise - failure
-
int Diagnostic_MixedNeoHookean(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute projected diagnostic values for mixed neo-Hookean hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - u
2 - gradient of u with respect to reference coordinates
3 - p
out – [out] Output arrays
0 - projected diagnostic values
- Returns:
An error code: 0 - success, otherwise - failure
-
int SurfaceForceCellToFace_MixedNeoHookean(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute surface forces for mixed neo-Hookean hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - gradient of u with respect to reference coordinates
2 - p
out – [out] Output arrays
0 - surface force values
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_MixedNeoHookeanCurrent(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3], CeedScalar *Jm1)¶
Compute
P
for mixed neo-Hookean hyperelasticity in current configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u with respect to reference coordinates
2 - pressure
out – [out] Output arrays
0 - stored values: dXdx, e, J - 1, J^{-2/3} and p
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = tau
Jm1 – [out] Determinant of deformation gradient - 1 needed for computing g0 function
- Returns:
An error code: 0 - success, otherwise - failure
-
int g0_MixedNeoHookeanCurrent(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, const CeedScalar Jm1, CeedScalar *const *out, CeedScalar *g0)¶
Compute
g0
for mixed neo-Hookean hyperelasticity in current configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
2 - p
Jm1 – [in] Determinant of deformation gradient - 1 computed in f1 function
out – [out] Output arrays, unused
g0 – [out]
g0 = -J dV/dJ - p * J / (bulk - bulk_primal)
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_MixedNeoHookeanCurrent(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3], CeedScalar *Jm1, CeedScalar *trace_depsilon)¶
Compute linearization of
f1
for mixed neo-Hookean hyperelasticity in current configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - stored dXdx, e, J - 1, J^{-2/3} and p
2 - gradient of incremental change to u with respect to reference coordinates
3 - dp
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dtau - tau * grad_du^T
Jm1 – [out] Determinant of deformation gradient - 1 needed for computing dg0 function
trace_depsilon – [out]
trace(depsilon)
needed for computing dg0 function
- Returns:
An error code: 0 - success, otherwise - failure
-
int dg0_MixedNeoHookeanCurrent(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, const CeedScalar Jm1, const CeedScalar trace_depsilon, CeedScalar *const *out, CeedScalar *dg0)¶
Compute linearization of
g0
for mixed neo-Hookean hyperelasticity in current configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
1 - stored J and p
3 - dp
Jm1 – [in] Determinant of deformation gradient - 1 computed in df1 function
trace_depsilon – [in]
trace(depsilon)
computed in df1 functionout – [out] Output arrays, unused
dg0 – [out]
dg0 = ([-J^2 d2V/dJ2 - J dV/dJ - J*p/(bulk-bulk_primal)]trace(depsilon) - dp*J/(bulk-bulk_primal) )
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityResidual_MixedNeoHookeanCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute residual for mixed neo-Hookean hyperelasticity in current configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityJacobian_MixedNeoHookeanCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate Jacobian for mixed neo-Hookean hyperelasticity in current configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityPC_uu_MixedNeoHookeanCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute displacement block for pMG preconditioner for mixed neo-Hookean hyperelasticity in current configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays 0 - qdata 1 - gradient of incremental change of u with respect to reference coordinates
out – [out] Output arrays 0 - action of QFunction for displacement field
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityPC_pp_MixedNeoHookeanCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute pressure block for pMG preconditioner for mixed neo-Hookean hyperelasticity in current configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays 0 - qdata 1 - incremental change of p
out – [out] Output arrays 0 - action of QFunction for pressure field
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_MixedNeoHookeanInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3], CeedScalar *Jm1)¶
Compute
P
for mixed neo-Hookean hyperelasticity in initial configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u with respect to reference coordinates
2 - pressure
out – [out] Output arrays
0 - stored values: grad_u and p
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = P
Jm1 – [out] Determinant of deformation gradient - 1 needed for computing g0 function
- Returns:
An error code: 0 - success, otherwise - failure
-
int g0_MixedNeoHookeanInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, const CeedScalar Jm1, CeedScalar *const *out, CeedScalar *g0)¶
Compute
g0
for mixed neo-Hookean hyperelasticity in initial configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
2 - p
Jm1 – [in] Determinant of deformation gradient - 1 computed in f1 function
out – [out] Output arrays, unused
g0 – [out]
g0 = -J dV/dJ - p * J / (bulk - bulk_primal)
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_MixedNeoHookeanInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3], CeedScalar *Jm1, CeedScalar *Cinv_contract_dE)¶
Compute linearization of
P
for mixed neo-Hookean hyperelasticity in initial configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - stored gradient of u and p
2 - gradient of incremental change to u with respect to reference coordinates
3 - dp
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dP
Jm1 – [out] Determinant of deformation gradient - 1 needed for computing dg0 function
Cinv_contract_dE – [out]
C_inv:dE
needed for computing dg0 function
- Returns:
An error code: 0 - success, otherwise - failure
-
int dg0_MixedNeoHookeanInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, const CeedScalar Jm1, const CeedScalar Cinv_contract_dE, CeedScalar *const *out, CeedScalar *dg0)¶
Compute linearization of
g0
for mixed neo-Hookean hyperelasticity in initial configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
1 - stored gradient of u and p
3 - dp
Jm1 – [in] Determinant of deformation gradient - 1 computed in df1 function
Cinv_contract_dE – [in]
C_inv:dE
computed in df1 functionout – [out] Output arrays, unused
dg0 – [out]
dg0 = ([-J^2 d2V/dJ2 - J dV/dJ - J*p/(bulk-bulk_primal)](C_inv:dE) - dp*J/(bulk-bulk_primal) )
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityResidual_MixedNeoHookeanInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute residual for mixed neo-Hookean hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityJacobian_MixedNeoHookeanInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate Jacobian for mixed neo-Hookean hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_MixedNeoHookeanInitial_Platen(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3])¶
Wrapper to compute
P
for mixed neo-Hookean hyperelasticity in initial configuration for platen BCs.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u with respect to reference coordinates
2 - pressure
out – [out] Output arrays
0 - stored values: grad_u and p
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = P
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_MixedNeoHookeanInitial_Platen(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3])¶
Compute linearization of
P
for mixed neo-Hookean hyperelasticity in initial configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - stored gradient of u and p
2 - gradient of incremental change to u with respect to reference coordinates
3 - dp
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dP
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlatenBCsResidual_MixedNeoHookeanInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute platen residual for mixed neo-Hookean hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelBCPlatenParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlatenBCsJacobian_MixedNeoHookeanInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate platen Jacobian for mixed neo-Hookean hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelBCPlatenParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityPC_uu_MixedNeoHookeanInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute displacement block for pMG preconditioner for mixed neo-Hookean hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays 0 - qdata 1 - gradient of incremental change of u with respect to reference coordinates
out – [out] Output arrays 0 - action of QFunction for displacement field
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityPC_pp_MixedNeoHookeanInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute pressure block for pMG preconditioner for mixed neo-Hookean hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays 0 - qdata 1 - incremental change of p
out – [out] Output arrays 0 - action of QFunction for pressure field
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelKirchhoffTau_MixedNeoHookeanPL(CeedScalar U, CeedScalar J_dUdJ, CeedScalar bulk_primal, CeedScalar two_mu, CeedScalar p, CeedScalar J_pow, const CeedScalar e_sym[6], CeedScalar tau_sym[6])¶
Compute Kirchoff tau for mixed neo-Hookean perturbed Lagrange-multiplier hyperelasticity.
tau = [bulk_primal * U - p ] * J dU/dJ * I + 2 mu J^{-2/3} e_dev
- Parameters:
U – [in] U(J)
J_dUdJ – [in] J dU/dJ
bulk_primal – [in] Primal bulk modulus
two_mu – [in] Two times the shear modulus
p – [in] Lagrange multiplier
J_pow – [in] J^{-2/3}
e_sym – [in] Green Euler strain, in symmetric representation
tau_sym – [out] Kirchoff tau, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelSecondKirchhoffStress_MixedNeoHookeanPL(CeedScalar U, CeedScalar J_dUdJ, CeedScalar bulk_primal, CeedScalar two_mu, CeedScalar p, CeedScalar Jm1, const CeedScalar C_inv_sym[6], const CeedScalar E_sym[6], CeedScalar S_sym[6])¶
Compute second Kirchoff stress for mixed neo-Hookean perturbed Lagrange-multiplier hyperelasticity.
S = S_vol + S_iso
- Parameters:
U – [in] U(J)
J_dUdJ – [in] J dU/dJ
bulk_primal – [in] Primal bulk modulus
two_mu – [in] Two times the shear modulus
p – [in] Lagrange multiplier
Jm1 – [in] Determinant of deformation gradient - 1.
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
E_sym – [in] Green Lagrange strain, in symmetric representation
S_sym – [out] Second Kirchoff stress, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelSecondKirchhoffStress_MixedNeoHookeanPL_fwd(CeedScalar U, CeedScalar J_dUdJ, CeedScalar J2_d2UdJ2, CeedScalar bulk_primal, CeedScalar mu, CeedScalar p, CeedScalar dp, CeedScalar Jm1, const CeedScalar F[3][3], const CeedScalar grad_du[3][3], const CeedScalar C_inv_sym[6], const CeedScalar E_sym[6], CeedScalar dS_sym[6], CeedScalar *Cinv_contract_dE)¶
Compute derivative of second Kirchoff stress mixed neo-Hookean perturbed Lagrange-multiplier hyperelasticity.
dS = dS_iso + dS_vol
- Parameters:
U – [in] U(J)
J_dUdJ – [in] J dU/dJ
J2_d2UdJ2 – [in] J^2 d^2U/dJ^2
bulk_primal – [in] Primal bulk modulus
mu – [in] Shear modulus
p – [in] Pressure
dp – [in] Increment of Pressure
Jm1 – [in] Determinant of deformation gradient - 1
F – [in] Deformation gradient
grad_du – [in] Gradient of incremental change in u
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
E_sym – [in] Green Lagrange strain, in symmetric representation
dS_sym – [out] Derivative of second Kirchoff stress, in symmetric representation
Cinv_contract_dE – [out]
C_inv : dE
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelComputeFdSFTranspose_MixedNeoHookeanPL(CeedScalar U, CeedScalar J_dUdJ, CeedScalar J2_d2UdJ2, CeedScalar bulk_primal, CeedScalar mu, CeedScalar p, CeedScalar dp, CeedScalar J_pow, const CeedScalar grad_du[3][3], const CeedScalar e_sym[6], CeedScalar FdSFTranspose[3][3], CeedScalar *trace_depsilon)¶
Compute F*dS*F^T for mixed neo-Hookean hyperelasticity in current configuration.
- Parameters:
U – [in] U(J)
J_dUdJ – [in] J dU/dJ
J2_d2UdJ2 – [in] J^2 d^2U/dJ^2
bulk_primal – [in] Primal bulk modulus
mu – [in] Shear modulus
p – [in] Pressure
dp – [in] Increment of Pressure
J_pow – [in] J^{-2/3}
grad_du – [in] Gradient of incremental change in u
e_sym – [in] Green Euler strain, in symmetric representation
FdSFTranspose – [out] F*dS*F^T needed for computing df1 in current configuration
trace_depsilon – [out]
trace(depsilon)
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelStrainEnergy_MixedNeoHookeanPL(CeedScalar U, CeedScalar bulk, CeedScalar bulk_primal, CeedScalar mu, CeedScalar p, CeedScalar Jm1, CeedScalar trace_strain, CeedScalar *mixed_energy)¶
Compute mixed potential energy for mixed neo-Hookean model.
Pi(u,p) = 0.5 mu (I1_bar - 3) - p U + 0.5 * bulk_primal * U^2 - 0.5 p^2 / (bulk - bulk_primal)
Note that strain energy function is
psi = 0.5 mu (I1_bar - 3) + bulk / 2 * U(J)^2
- Parameters:
U – [in] U(J)
bulk – [in] Bulk modulus
bulk_primal – [in] Primal bulk modulus
mu – [in] Shear modulus
p – [in] Pressure
Jm1 – [in] Determinant of deformation gradient - 1
trace_strain – [in] Trace of Green Lagrange or Green euler strain tensor (E or e)
mixed_energy – [out] Energy for mixed Neo-Hookean model
- Returns:
An error code: 0 - success, otherwise - failure
-
int StrainEnergy_MixedNeoHookeanPL(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute strain energy for mixed neo-Hookean perturbed Lagrange-multiplier hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays 0 - qdata 1 - gradient of u with respect to reference coordinates
out – [out] Output arrays 0 - strain energy
- Returns:
An error code: 0 - success, otherwise - failure
-
int Diagnostic_MixedNeoHookeanPL(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute projected diagnostic values for mixed neo-Hookean perturbed Lagrange-multiplier hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays 0 - qdata 1 - u 2 - gradient of u with respect to reference coordinates 3 - p
out – [out] Output arrays 0 - projected diagnostic values
- Returns:
An error code: 0 - success, otherwise - failure
-
int SurfaceForceCellToFace_MixedNeoHookeanPL(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute surface forces for mixed neo-Hookean perturbed Lagrange-multiplier hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays 0 - qdata 1 - gradient of u with respect to reference coordinates 2 - p
out – [out] Output arrays 0 - surface force values
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_MixedNeoHookeanPLCurrent(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3], CeedScalar *Jm1)¶
Compute
P
for mixed neo-Hookean hyperelasticity in current configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u with respect to reference coordinates
2 - pressure
out – [out] Output arrays
0 - stored values: dXdx, e, J - 1, J^{-2/3} and p
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = tau
Jm1 – [out] Determinant of deformation gradient - 1 needed for computing g0 function
- Returns:
An error code: 0 - success, otherwise - failure
-
int g0_MixedNeoHookeanPLCurrent(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, const CeedScalar Jm1, CeedScalar *const *out, CeedScalar *g0)¶
Compute
g0
for mixed neo-Hookean hyperelasticity in current configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
2 - p
Jm1 – [in] Determinant of deformation gradient - 1 computed in f1 function
out – [out] Output arrays, unused
g0 – [out]
g0 = (-U(J) - p/(bulk - bulk_primal) )
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_MixedNeoHookeanPLCurrent(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3], CeedScalar *Jm1, CeedScalar *trace_depsilon)¶
Compute linearization of
f1
for mixed neo-Hookean hyperelasticity in current configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - stored dXdx, e, J - 1, J^{-2/3} and p
2 - gradient of incremental change to u with respect to reference coordinates
3 - dp
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dtau - tau * grad_du^T
Jm1 – [out] Determinant of deformation gradient - 1 needed for computing dg0 function
trace_depsilon – [out]
trace(depsilon)
needed for computing dg0 function
- Returns:
An error code: 0 - success, otherwise - failure
-
int dg0_MixedNeoHookeanPLCurrent(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, const CeedScalar Jm1, const CeedScalar trace_depsilon, CeedScalar *const *out, CeedScalar *dg0)¶
Compute linearization of
g0
for mixed neo-Hookean hyperelasticity in current configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
1 - stored J and p
3 - dp
Jm1 – [in] Determinant of deformation gradient - 1 computed in df1 function
trace_depsilon – [in]
trace(depsilon)
computed in df1 functionout – [out] Output arrays, unused
dg0 – [out]
dg0 = (dU(J) - dp/(bulk - bulk_primal))
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityResidual_MixedNeoHookeanPLCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute residual for mixed neo-Hookean hyperelasticity in current configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityJacobian_MixedNeoHookeanPLCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate Jacobian for mixed neo-Hookean hyperelasticity in current configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityPC_uu_MixedNeoHookeanPLCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute displacement block for pMG preconditioner for mixed neo-Hookean hyperelasticity in current configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays 0 - qdata 1 - gradient of incremental change of u with respect to reference coordinates
out – [out] Output arrays 0 - action of QFunction for displacement field
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityPC_pp_MixedNeoHookeanPLCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute pressure block for pMG preconditioner for mixed neo-Hookean hyperelasticity in current configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays 0 - qdata 1 - incremental change of p
out – [out] Output arrays 0 - action of QFunction for pressure field
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_MixedNeoHookeanPLInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3], CeedScalar *Jm1)¶
Compute
P
for mixed neo-Hookean perturbed Lagrange-multiplier hyperelasticity in initial configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays 0 - volumetric qdata 1 - gradient of u with respect to reference coordinates 2 - Lagrange multiplier
out – [out] Output arrays 0 - stored values: grad_u and p
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = P
Jm1 – [out] Determinant of deformation gradient - 1 needed for computing g0 function
- Returns:
An error code: 0 - success, otherwise - failure
-
int g0_MixedNeoHookeanPLInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, const CeedScalar Jm1, CeedScalar *const *out, CeedScalar *g0)¶
Compute
g0
for mixed neo-Hookean perturbed Lagrange-multiplier hyperelasticity in initial configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays 2 - Lagrange multiplier
Jm1 – [in] Determinant of deformation gradient - 1 computed in f1 function
out – [out] Output arrays, unused
g0 – [out]
g0 = (U(J) - p/bulk )
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_MixedNeoHookeanPLInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3], CeedScalar *Jm1, CeedScalar *Cinv_contract_dE)¶
Compute linearization of
P
for mixed neo-Hookean perturbed Lagrange-multiplier hyperelasticity in initial configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays 0 - volumetric qdata 1 - stored gradient of u and p 2 - gradient of incremental change to u with respect to reference coordinates 3 - dp
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dP
Jm1 – [out] Determinant of deformation gradient - 1 needed for computing dg0 function
Cinv_contract_dE – [out]
C_inv:dE
needed for computing dg0 function
- Returns:
An error code: 0 - success, otherwise - failure
-
int dg0_MixedNeoHookeanPLInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, const CeedScalar Jm1, const CeedScalar Cinv_contract_dE, CeedScalar *const *out, CeedScalar *dg0)¶
Compute linearization of
g0
for mixed neo-Hookean perturbed Lagrange-multiplier hyperelasticity in initial configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays 1 - stored gradient of u and p 3 - dp
Jm1 – [in] Determinant of deformation gradient - 1 computed in df1 function
Cinv_contract_dE – [in]
C_inv:dE
computed in df1 functionout – [out] Output arrays, unused
dg0 – [out]
dg0 = ([-J^2 - J*p/bulk](C_inv:dE) - dp*J/bulk )
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityResidual_MixedNeoHookeanPLInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute residual for mixed neo-Hookean perturbed Lagrange-multiplier hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityJacobian_MixedNeoHookeanPLInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate Jacobian for mixed neo-Hookean perturbed Lagrange-multiplier hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_MixedNeoHookeanPLInitial_Platen(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3])¶
Wrapper to compute
P
for mixed neo-Hookean perturbed Lagrange-multiplier hyperelasticity in initial configuration for platen BCs.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays 0 - volumetric qdata 1 - gradient of u with respect to reference coordinates 2 - pressure
out – [out] Output arrays 0 - stored values: grad_u and p
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = P
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_MixedNeoHookeanPLInitial_Platen(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3])¶
Compute linearization of
P
for mixed neo-Hookean perturbed Lagrange-multiplier hyperelasticity in initial configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays 0 - volumetric qdata 1 - stored gradient of u and p 2 - gradient of incremental change to u with respect to reference coordinates 3 - dp
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dP
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlatenBCsResidual_MixedNeoHookeanPLInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute platen residual for neo-Hookean perturbed Lagrange-multiplier hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
BCPlatenData
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlatenBCsJacobian_MixedNeoHookeanPLInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate platen Jacobian for neo-Hookean perturbed Lagrange-multiplier hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
BCPlatenData
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityPC_uu_MixedNeoHookeanPLInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute displacement block for pMG preconditioner for mixed neo-Hookean perturbed Lagrange-multiplier hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays 0 - qdata 1 - gradient of incremental change of u with respect to reference coordinates
out – [out] Output arrays 0 - action of QFunction for displacement field
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityPC_pp_MixedNeoHookeanPLInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute pressure block for pMG preconditioner for mixed neo-Hookean perturbed Lagrange-multiplier hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays 0 - qdata 1 - incremental change of p
out – [out] Output arrays 0 - action of QFunction for pressure field
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelKirchhoffTau_MixedOgden(CeedScalar J_dVdJ, CeedScalar bulk_primal, CeedScalar p, CeedScalar Jm1, CeedInt N, const CeedScalar *m, const CeedScalar *alpha, const CeedScalar series_terms[9], const CeedScalar e_vals[3], const CeedScalar e_vecs[3][3], CeedScalar tau_sym[6])¶
Compute Kirchoff tau for mixed Ogden hyperelasticity.
tau = [bulk_primal * J dV/dJ - p J] I + tau_iso
- Parameters:
J_dVdJ – [in] J dV/dJ
bulk_primal – [in] Primal bulk modulus
p – [in] Pressure
Jm1 – [in] Determinant of deformation gradient - 1
N – [in] Number of Ogden parameters
m – [in] Array of first Ogden material model
alpha – [in] Array of second Ogden material model
series_terms – [in] Series terms
e_vals – [in] Eigenvalues of Green Euler strain tensor
e_vecs – [in] Eigenvectors of Green Euler strain tensor
tau_sym – [out] Kirchoff tau, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelSecondKirchhoffStress_MixedOgden(CeedScalar J_dVdJ, CeedScalar bulk_primal, CeedScalar p, CeedScalar Jm1, CeedInt N, const CeedScalar *m, const CeedScalar *alpha, const CeedScalar C_inv_sym[6], const CeedScalar E_sym[6], CeedScalar S_sym[6])¶
Compute second Kirchoff stress for mixed Ogden hyperelasticity.
S = S_iso + S_vol
- Parameters:
J_dVdJ – [in] J dV/dJ
bulk_primal – [in] Primal bulk modulus
p – [in] Pressure
Jm1 – [in] Determinant of deformation gradient - 1
N – [in] Number of Ogden parameters
m – [in] Array of first Ogden material model
alpha – [in] Array of second Ogden material model
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
E_sym – [in] Green Lagrange strain, in symmetric representation
S_sym – [out] Second Kirchoff stress, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelSecondKirchhoffStress_MixedOgden_fwd(CeedScalar J_dVdJ, CeedScalar J2_d2VdJ2, CeedScalar bulk_primal, CeedScalar p, CeedScalar dp, CeedScalar Jm1, CeedInt N, const CeedScalar *m, const CeedScalar *alpha, const CeedScalar F[3][3], const CeedScalar grad_du[3][3], const CeedScalar C_inv_sym[6], const CeedScalar E_sym[6], CeedScalar dS_sym[6], CeedScalar *Cinv_contract_dE)¶
Compute derivative of second Kirchoff stress for mixed Ogden hyperelasticity.
dS = dS_iso + dS_vol
- Parameters:
J_dVdJ – [in] J dV/dJ
J2_d2VdJ2 – [in] J^2 d^2V/dJ^2
bulk_primal – [in] Primal bulk modulus
p – [in] Pressure
dp – [in] Increment of Pressure
Jm1 – [in] Determinant of deformation gradient - 1
N – [in] Number of Ogden parameters
m – [in] Array of first Ogden material model
alpha – [in] Array of second Ogden material model
F – [in] Deformation gradient
grad_du – [in] Gradient of incremental change in u
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
E_sym – [in] Green Lagrange strain, in symmetric representation
dS_sym – [out] Derivative of second Kirchoff stress, in symmetric representation
Cinv_contract_dE – [out]
C_inv : dE
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelStrainEnergy_MixedOgden(CeedScalar V, CeedScalar bulk, CeedInt N, const CeedScalar *m, const CeedScalar *alpha, const CeedScalar pr_str_bar[3], CeedScalar *strain_energy)¶
Compute strain energy for mixed Ogden model.
psi = sum_{j=1:3} (sum_{k=1:N} m_k/alpha_k (pr_bar_j^alpha_k - 1)) + bulk * V(J)
- Parameters:
V – [in] V(J)
bulk – [in] Bulk modulus
N – [in] Number of Ogden parameters
m – [in] Array of first Ogden material model
alpha – [in] Array of second Ogden material model
pr_str_bar – [in] Modified principal stretch
strain_energy – [out] Strain energy for mixed Ogden model
- Returns:
An error code: 0 - success, otherwise - failure
-
int StrainEnergy_MixedOgden(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute strain energy for mixed Ogden hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedOgdenElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - strain energy
- Returns:
An error code: 0 - success, otherwise - failure
-
int DiagnosticStress_MixedOgden(void *ctx, const CeedScalar p, const CeedScalar Jm1, const CeedScalar V, const CeedScalar J_dVdJ, CeedScalar grad_u[3][3], CeedScalar sigma_sym[6], CeedScalar *strain_energy, CeedScalar *trace_e, CeedScalar *trace_e2)¶
Compute projected diagnostic stress, and strain energy invariants values for mixed Ogden hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedOgdenElasticityParams
p – [in] Pressure field
Jm1 – [in] Determinant of deformation gradient - 1
V – [in] V(J); volumetric energy
J_dVdJ – [in] J dV/dJ
grad_u – [in] Gradient of incremental change in u
sigma_sym – [out] Cauchy stress tensor in symmetric representation
strain_energy – [out] Strain energy
trace_e – [out] Trace of strain tensor e
trace_e2 – [out] Trace of strain tensor e*e
- Returns:
An error code: 0 - success, otherwise - failure
-
int Diagnostic_MixedOgden(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute projected diagnostic values for mixed Ogden hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedOgdenElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - u
2 - gradient of u with respect to reference coordinates
3 - p
out – [out] Output arrays
0 - projected diagnostic values
- Returns:
An error code: 0 - success, otherwise - failure
-
int SurfaceForceCellToFace_MixedOgden(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute surface forces for mixed Ogden hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedOgdenElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - gradient of u with respect to reference coordinates
2 - p
out – [out] Output arrays
0 - surface force values
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_MixedOgdenInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3], CeedScalar *Jm1)¶
Compute
P
for mixed Ogden hyperelasticity in initial configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedOgdenElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u with respect to reference coordinates
2 - pressure
out – [out] Output arrays
0 - stored values: grad_u and p
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = P
Jm1 – [out] Determinant of deformation gradient - 1 needed for computing g0 function
- Returns:
An error code: 0 - success, otherwise - failure
-
int g0_MixedOgdenInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, const CeedScalar Jm1, CeedScalar *const *out, CeedScalar *g0)¶
Compute
g0
for mixed Ogden hyperelasticity in initial configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedOgdenElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
2 - p
Jm1 – [in] Determinant of deformation gradient - 1 computed in f1 function
out – [out] Output arrays, unused
g0 – [out]
g0 = -J dV/dJ - p * J / (bulk - bulk_primal)
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_MixedOgdenInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3], CeedScalar *Jm1, CeedScalar *Cinv_contract_dE)¶
Compute linearization of
P
for mixed Ogden hyperelasticity in initial configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedOgdenElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - stored gradient of u and p
2 - gradient of incremental change to u with respect to reference coordinates
3 - dp
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dP
Jm1 – [out] Determinant of deformation gradient - 1 needed for computing dg0 function
Cinv_contract_dE – [out]
C_inv:dE
needed for computing dg0 function
- Returns:
An error code: 0 - success, otherwise - failure
-
int dg0_MixedOgdenInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, const CeedScalar Jm1, const CeedScalar Cinv_contract_dE, CeedScalar *const *out, CeedScalar *dg0)¶
Compute linearization of
g0
for mixed Ogden hyperelasticity in initial configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedOgdenElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
1 - stored gradient of u and p
3 - dp
Jm1 – [in] Determinant of deformation gradient - 1 computed in df1 function
Cinv_contract_dE – [in]
C_inv:dE
computed in df1 functionout – [out] Output arrays, unused
dg0 – [out]
dg0 = ([-J^2 d2V/dJ2 - J dV/dJ - J*p/(bulk-bulk_primal)](C_inv:dE) - dp*J/(bulk-bulk_primal) )
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityResidual_MixedOgdenInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute residual for mixed Ogden hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedOgdenElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityJacobian_MixedOgdenInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate Jacobian for mixed Ogden hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedOgdenElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_MixedOgdenInitial_Platen(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3])¶
Wrapper to compute
P
for mixed Ogden hyperelasticity in initial configuration in Platen BCs.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedOgdenElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u with respect to reference coordinates
2 - pressure
out – [out] Output arrays
0 - stored values: grad_u and p
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = P
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_MixedOgdenInitial_Platen(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3])¶
Wrapper to compute linearization of
P
for mixed Ogden hyperelasticity in initial configuration in Platen BCs.- Parameters:
ctx – [in] QFunction context, holding
RatelMixedOgdenElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - stored gradient of u and p
2 - gradient of incremental change to u with respect to reference coordinates
3 - dp
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dP
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlatenBCsResidual_MixedOgdenInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute platen residual for mixed Ogden hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelBCPlatenParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlatenBCsJacobian_MixedOgdenInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate platen Jacobian for mixed Ogden hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelBCPlatenParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityPC_uu_MixedOgdenInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute displacement block for pMG preconditioner for mixed Ogden hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedOgdenElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays 0 - qdata 1 - gradient of incremental change of u with respect to reference coordinates
out – [out] Output arrays 0 - action of QFunction for displacement field
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityPC_pp_MixedOgdenInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute pressure block for pMG preconditioner for mixed Ogden hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMixedOgdenElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays 0 - qdata 1 - incremental change of p
out – [out] Output arrays 0 - action of QFunction for pressure field
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelVolumetricKirchhoffTau_Mixed_PL(CeedScalar U, CeedScalar J_dUdJ, CeedScalar bulk_primal, CeedScalar p, CeedScalar *tau_vol_sym)¶
Compute volumetric Kirchoff tau for mixed perturbed Lagrange-multiplier hyperelasticity.
tau_vol = [bulk_primal * U - p ] * J dU/dJ * I
- Parameters:
U – [in] U(J)
J_dUdJ – [in] J dU/dJ
bulk_primal – [in] Primal bulk modulus
p – [in] Pressure
tau_vol_sym – [out] Volumetric Kirchoff tau
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelVolumetricSecondKirchhoffStress_Mixed_PL(CeedScalar U, CeedScalar J_dUdJ, CeedScalar bulk_primal, CeedScalar p, const CeedScalar C_inv_sym[6], CeedScalar S_vol_sym[6])¶
Compute volumetric part of second Kirchoff stress for mixed with perturbed Lagrange-multiplier hyperelasticity.
S = [bulk_primal * U - p ] * J dU/dJ * C_inv
- Parameters:
U – [in] U(J)
J_dUdJ – [in] J dU/dJ
bulk_primal – [in] Primal bulk modulus
p – [in] Lagrange multiplier
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
S_vol_sym – [out] Volumetric second Kirchoff stress, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelVolumetricSecondKirchhoffStress_Mixed_PL_fwd(CeedScalar U, CeedScalar J_dUdJ, CeedScalar J2_d2UdJ2, CeedScalar bulk_primal, CeedScalar p, CeedScalar dp, CeedScalar Cinv_contract_dE, const CeedScalar C_inv_sym[6], const CeedScalar dC_inv_sym[6], CeedScalar dS_vol_sym[6])¶
Compute derivative of volumetric second Kirchoff stress mixed with perturbed Lagrange-multiplier hyperelasticity.
dS_vol = [(bulk_primal (J dU/dJ)^2 + (bulk_primal * U - p) * (J^2 * d2U/dJ2 + J dU/dJ)) C_inv:dE - dp * J dU/dJ] C_inv + [bulk_primal * U - p] J dU/dJ * dC_inv
- Parameters:
U – [in] U(J)
J_dUdJ – [in] J dU/dJ
J2_d2UdJ2 – [in] J^2 d^2U/dJ^2
bulk_primal – [in] Primal bulk modulus
p – [in] Pressure
dp – [in] Increment of Pressure
Cinv_contract_dE – [in]
C_inv : dE
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
dC_inv_sym – [in] Derivative of C^{-1}, in symmetric representation
dS_vol_sym – [out] Derivative of primal second Kirchoff stress, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelComputeFdSFTransposeVolumetric_Mixed_PL(CeedScalar U, CeedScalar J_dUdJ, CeedScalar J2_d2UdJ2, CeedScalar bulk_primal, CeedScalar p, CeedScalar dp, CeedScalar trace_depsilon, const CeedScalar depsilon_sym[6], CeedScalar FdSFTranspose_vol_sym[6])¶
Compute F*dS_vol*F^T for mixed with perturbed Lagrange-multiplier in current configuration.
- Parameters:
U – [in] U(J)
J_dUdJ – [in] J dU/dJ
J2_d2UdJ2 – [in] J^2 d^2U/dJ^2
bulk_primal – [in] Primal bulk modulus
p – [in] Pressure
dp – [in] Increment of Pressure
trace_depsilon – [in]
trace(depsilon)
depsilon_sym – [in] depsilon = (grad_du + grad_du^T)/2
FdSFTranspose_vol_sym – [out] F*dS_vol*F^T needed for computing df1 in current configuration
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelVolumetricKirchhoffTau_Mixed(CeedScalar J_dVdJ, CeedScalar bulk_primal, CeedScalar Jm1, CeedScalar p, CeedScalar *tau_vol_sym)¶
Compute volumetric Kirchoff tau for mixed fields hyperelasticity.
tau_vol = [bulk_primal * J dV/dJ - p J] I
- Parameters:
J_dVdJ – [in] J dV/dJ
bulk_primal – [in] Primal bulk modulus
Jm1 – [in] Determinant of deformation gradient - 1
p – [in] Pressure
tau_vol_sym – [out] Volumetric Kirchoff tau
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelVolumetricSecondKirchhoffStress_Mixed(CeedScalar J_dVdJ, CeedScalar bulk_primal, CeedScalar p, CeedScalar Jm1, const CeedScalar C_inv_sym[6], CeedScalar S_vol_sym[6])¶
Compute volumetric part of second Kirchoff stress for mixed fields hyperelasticity.
S_vol = [bulk_primal * J dV/dJ - p J] * C_inv
- Parameters:
J_dVdJ – [in] J dV/dJ
bulk_primal – [in] Primal bulk modulus
p – [in] Pressure
Jm1 – [in] Determinant of deformation gradient - 1
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
S_vol_sym – [out] Volumetric second Kirchoff stress, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelVolumetricSecondKirchhoffStress_Mixed_fwd(CeedScalar J_dVdJ, CeedScalar J2_d2VdJ2, CeedScalar bulk_primal, CeedScalar p, CeedScalar dp, CeedScalar Jm1, CeedScalar Cinv_contract_dE, const CeedScalar C_inv_sym[6], const CeedScalar dC_inv_sym[6], CeedScalar dS_vol_sym[6])¶
Compute derivative of volumetric second Kirchoff stress for mixed fields hyperelasticity.
dS_vol = [(bulk_primal J^2 * d2V/dJ2 + (bulk_primal * J dV/dJ - p J)) (C_inv:dE) - dp J] C_inv + [bulk_primal * J dV/dJ - p J ] dC_inv
- Parameters:
J_dVdJ – [in] J dV/dJ
J2_d2VdJ2 – [in] J^2 d^2V/dJ^2
bulk_primal – [in] Primal bulk modulus
p – [in] Pressure
dp – [in] Increment of Pressure
Jm1 – [in] Determinant of deformation gradient - 1
Cinv_contract_dE – [in]
C_inv : dE
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
dC_inv_sym – [in] Derivative of C^{-1}, in symmetric representation
dS_vol_sym – [out] Derivative of primal second Kirchoff stress, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelComputeFdSFTransposeVolumetric_Mixed(CeedScalar J_dVdJ, CeedScalar J2_d2VdJ2, CeedScalar bulk_primal, CeedScalar p, CeedScalar dp, CeedScalar Jm1, CeedScalar trace_depsilon, const CeedScalar depsilon_sym[6], CeedScalar FdSFTranspose_vol_sym[6])¶
Compute F*dS_vol*F^T for mixed fields hyperelasticity in current configuration.
- Parameters:
J_dVdJ – [in] J dV/dJ
J2_d2VdJ2 – [in] J^2 d^2V/dJ^2
bulk_primal – [in] Primal bulk modulus
p – [in] Pressure
dp – [in] Increment of Pressure
Jm1 – [in] Determinant of deformation gradient - 1
trace_depsilon – [in]
trace(depsilon)
depsilon_sym – [in] depsilon = (grad_du + grad_du^T)/2
FdSFTranspose_vol_sym – [out] F*dS_vol*F^T needed for computing df1 in current configuration
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelKirchhoffTau_MooneyRivlin(CeedScalar J_dVdJ, CeedScalar lambda, CeedScalar mu_1, CeedScalar two_mu_2, const CeedScalar e_sym[6], CeedScalar tau_sym[6])¶
Compute Kirchoff tau for Mooney-Rivlin hyperelasticity.
tau = 2 (mu_1 + 2 mu_2) e + 2 mu_2 (trace(e) b - e*b) + (lambda * J dV/dJ) I
Ref https://ratel.micromorph.org/doc/modeling/materials/mooney-rivlin/#equation-mooney-rivlin-tau-stable
- Parameters:
J_dVdJ – [in] J dV/dJ
lambda – [in] Lamé parameter
mu_1 – [in] First Mooney-Rivlin parameter
two_mu_2 – [in] Two times the second Mooney-Rivlin parameter
e_sym – [in] Green Euler strain, in symmetric representation
tau_sym – [out] Kirchoff tau, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelSecondKirchhoffStress_MooneyRivlin(CeedScalar J_dVdJ, CeedScalar lambda, CeedScalar mu_1, CeedScalar two_mu_2, CeedScalar Jm1, const CeedScalar C_inv_sym[6], const CeedScalar E_sym[6], CeedScalar S_sym[6])¶
Compute second Kirchoff stress for Mooney-Rivlin hyperelasticity.
S = (lambda * J dV/dJ) * C_inv + 2 (mu_1 + 2 mu_2) C_inv * E + 2 mu_2 (tr(E) I - E)
Ref https://ratel.micromorph.org/doc/modeling/materials/mooney-rivlin/#equation-mooney-rivlin-tau-stable
- Parameters:
J_dVdJ – [in] J dV/dJ
lambda – [in] Lamé parameter
mu_1 – [in] First Mooney-Rivlin parameter
two_mu_2 – [in] Two times the second Mooney-Rivlin parameter
Jm1 – [in] Determinant of deformation gradient - 1
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
E_sym – [in] Green Lagrange strain, in symmetric representation
S_sym – [out] Second Kirchoff stress, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelSecondKirchhoffStress_MooneyRivlin_fwd(CeedScalar J_dVdJ, CeedScalar J2_d2VdJ2, CeedScalar lambda, CeedScalar mu_1, CeedScalar two_mu_2, CeedScalar Jm1, const CeedScalar F[3][3], const CeedScalar grad_du[3][3], const CeedScalar C_inv_sym[6], CeedScalar dS_sym[6])¶
Compute derivative of second Kirchoff stress for Mooney-Rivlin hyperelasticity.
dS = dS_vol - (mu_1 + 2 mu_2) * dC_inv + 2 mu_2 (tr(dE)*I - dE)
dS_vol = ((lambda J^2 * d2V/dJ2 + lambda * J dV/dJ) * (C_inv:dE)) C_inv + (lambda * J dV/dJ) dC_inv
Ref https://ratel.micromorph.org/doc/modeling/materials/mooney-rivlin/#equation-mooney-rivlin-tau-stable
- Parameters:
J_dVdJ – [in] J dV/dJ
J2_d2VdJ2 – [in] J^2 d^2V/dJ^2
lambda – [in] Lamé parameter
mu_1 – [in] First Mooney-Rivlin parameter
two_mu_2 – [in] Two times the second Mooney-Rivlin parameter
Jm1 – [in] Determinant of deformation gradient - 1
F – [in] Deformation gradient
grad_du – [in] Gradient of incremental change in u
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
dS_sym – [out] Derivative of second Kirchoff stress, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelComputeFdSFTranspose_MooneyRivlin(CeedScalar J_dVdJ, CeedScalar J2_d2VdJ2, CeedScalar lambda, CeedScalar mu_1, CeedScalar two_mu_2, const CeedScalar grad_du[3][3], const CeedScalar e_sym[6], CeedScalar FdSFTranspose[3][3])¶
Compute F*dS*F^T for Mooney-Rivlin hyperelasticity in current configuration.
- Parameters:
J_dVdJ – [in] J dV/dJ
J2_d2VdJ2 – [in] J^2 d^2V/dJ^2
lambda – [in] Lamé parameter
mu_1 – [in] First Mooney-Rivlin parameter
two_mu_2 – [in] Two times the second Mooney-Rivlin parameter
grad_du – [in] Gradient of incremental change in u
e_sym – [in] Green Euler strain, in symmetric representation
FdSFTranspose – [out] F*dS*F^T needed for computing df1 in current configuration
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelStrainEnergy_MooneyRivlin(CeedScalar V, CeedScalar lambda, CeedScalar mu_1, CeedScalar two_mu_2, CeedScalar Jm1, CeedScalar trace_strain, CeedScalar trace_strain2, CeedScalar *strain_energy)¶
Compute strain energy for Mooney-Rivlin model.
psi = lambda * V(J) - (mu_1 + 2 mu_2) logJ + mu_1 I1(E) + 2 mu_2 II(E)
- Parameters:
V – [in] V(J)
lambda – [in] Lamé parameter
mu_1 – [in] First Mooney-Rivlin parameter
two_mu_2 – [in] Two times the second Mooney-Rivlin parameter
Jm1 – [in] Determinant of deformation gradient - 1
trace_strain – [in] Trace of Green Lagrange or Green euler strain tensor (E or e)
trace_strain2 – [in] Trace of E^2 (or e^2)
strain_energy – [out] Strain energy for Mooney-Rivlin model
- Returns:
An error code: 0 - success, otherwise - failure
-
int StrainEnergy_MooneyRivlin(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute strain energy for Mooney-Rivlin hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - strain energy
- Returns:
An error code: 0 - success, otherwise - failure
-
int DiagnosticStress_MooneyRivlin(void *ctx, const CeedScalar Jm1, const CeedScalar V, const CeedScalar J_dVdJ, CeedScalar grad_u[3][3], CeedScalar sigma_sym[6], CeedScalar *strain_energy, CeedScalar *trace_e, CeedScalar *trace_e2)¶
Compute projected diagnostic stress, and strain energy invariants values for Mooney-Rivlin hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Jm1 – [in] Determinant of deformation gradient - 1
V – [in] V(J); volumetric energy
J_dVdJ – [in] J dV/dJ
grad_u – [in] Gradient of incremental change in u
sigma_sym – [out] Cauchy stress tensor in symmetric representation
strain_energy – [out] Strain energy
trace_e – [out] Trace of strain tensor e
trace_e2 – [out] Trace of strain tensor e*e
- Returns:
An error code: 0 - success, otherwise - failure
-
int Diagnostic_MooneyRivlin(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute projected diagnostic values for Mooney-Rivlin hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - u
2 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - projected diagnostic values
- Returns:
An error code: 0 - success, otherwise - failure
-
int SurfaceForceCellToFace_MooneyRivlin(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute surface forces for Mooney-Rivlin hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - surface force values
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_MooneyRivlinCurrent(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3])¶
Compute
tau
for Mooney-Rivlin hyperelasticity in current configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - stored, dXdx, e, and J - 1
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = tau
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_MooneyRivlinCurrent(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3])¶
Compute linearization
df1
for Mooney-Rivlin hyperelasticity in current configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - stored dXdx, e, and J - 1
2 - gradient of incremental change to u with respect to reference coordinates
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dtau - tau * grad_du^T
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityResidual_MooneyRivlinCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute residual for Mooney-Rivlin hyperelasticity in current configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityJacobian_MooneyRivlinCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate Jacobian for Mooney-Rivlin hyperelasticity in current configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_MooneyRivlinInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3])¶
Compute
P
for Mooney-Rivlin hyperelasticity.- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - stored gradient of u with respect to physical coordinates
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = P
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_MooneyRivlinInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3])¶
Compute linearization of
P
for Mooney-Rivlin hyperelasticity.- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - stored gradient of u with respect to physical coordinates
2 - gradient of incremental change to u with respect to reference coordinates
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dP
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityResidual_MooneyRivlinInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute residual for Mooney-Rivlin hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityJacobian_MooneyRivlinInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate Jacobian for Mooney-Rivlin hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelMooneyRivlinElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlatenBCsResidual_MooneyRivlinInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute platen residual for Mooney-Rivlin hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelBCPlatenParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlatenBCsJacobian_MooneyRivlinInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate platen Jacobian for Mooney-Rivlin hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelBCPlatenParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int SetPointFields_MPM_NeoHookean(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
-
int StrainEnergy_MPM_NeoHookean(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute strain energy for neo-Hookean hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - strain energy
- Returns:
An error code: 0 - success, otherwise - failure
-
int Diagnostic_MPM_NeoHookean(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute projected diagnostic values for neo-Hookean hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - u
2 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - projected diagnostic values
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_MPM_NeoHookeanCurrent(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3])¶
Compute
tau
for neo-Hookean hyperelasticity in current configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - stored, dXdx, tau, and J - 1
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = tau
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_MPM_NeoHookeanCurrent(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3])¶
Compute linearization
df1
for neo-Hookean hyperelasticity in current configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - stored dXdx, tau, and J - 1
2 - gradient of incremental change to u with respect to reference coordinates
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dtau - tau * grad_du^T
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityResidual_MPM_NeoHookeanCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute residual for neo-Hookean hyperelasticity in current configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityJacobian_MPM_NeoHookeanCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate Jacobian for neo-Hookean hyperelasticity in current configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelKirchhoffTau_NeoHookean(CeedScalar J_dVdJ, CeedScalar lambda, CeedScalar two_mu, const CeedScalar e_sym[6], CeedScalar tau_sym[6])¶
Compute Kirchoff tau for neo-Hookean hyperelasticity.
tau = (lambda * J dV/dJ) I + 2 mu * e
Ref https://ratel.micromorph.org/doc/modeling/materials/neo-hookean/#equation-eq-tau-neo-hookean
- Parameters:
J_dVdJ – [in] J dV/dJ
lambda – [in] Lamé parameter
two_mu – [in] Two times the shear modulus
e_sym – [in] Green Euler strain, in symmetric representation
tau_sym – [out] Kirchoff tau, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelSecondKirchhoffStress_NeoHookean(CeedScalar J_dVdJ, CeedScalar lambda, CeedScalar two_mu, const CeedScalar C_inv_sym[6], const CeedScalar E_sym[6], CeedScalar S_sym[6])¶
Compute second Kirchoff stress for neo-Hookean hyperelasticity.
S = (lambda * J dV/dJ) * C_inv + 2 mu C_inv * E
Ref https://ratel.micromorph.org/doc/modeling/materials/neo-hookean/#equation-eq-tau-neo-hookean
- Parameters:
J_dVdJ – [in] J dV/dJ
lambda – [in] Lamé parameter
two_mu – [in] Two times the shear modulus
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
E_sym – [in] Green Lagrange strain, in symmetric representation
S_sym – [out] Second Kirchoff stress, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelSecondKirchhoffStress_NeoHookean_fwd(CeedScalar J_dVdJ, CeedScalar J2_d2VdJ2, CeedScalar lambda, CeedScalar mu, const CeedScalar F[3][3], const CeedScalar grad_du[3][3], const CeedScalar C_inv_sym[6], CeedScalar dS_sym[6])¶
Compute derivative of second Kirchoff stress for neo-Hookean hyperelasticity.
dS = dS_vol - mu * dC_inv
dS_vol = ((lambda J^2 * d2V/dJ2 + lambda * J dV/dJ) * (C_inv:dE)) C_inv + (lambda * J dV/dJ) dC_inv
Ref https://ratel.micromorph.org/doc/modeling/materials/neo-hookean/#equation-eq-tau-neo-hookean
- Parameters:
J_dVdJ – [in] J dV/dJ
J2_d2VdJ2 – [in] J^2 d^2V/dJ^2
lambda – [in] Lamé parameter
mu – [in] Shear modulus
F – [in] Deformation gradient
grad_du – [in] Gradient of incremental change in u
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
dS_sym – [out] Derivative of second Kirchoff stress, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelComputeFdSFTranspose_NeoHookean(CeedScalar J_dVdJ, CeedScalar J2_d2VdJ2, CeedScalar lambda, CeedScalar mu, const CeedScalar grad_du[3][3], CeedScalar FdSFTranspose[3][3])¶
Compute F*dS*F^T for neo-Hookean hyperelasticity in current configuration.
Ref https://ratel.micromorph.org/doc/modeling/methods/hyperelasticity/#equation-cur-simp-jac
- Parameters:
J_dVdJ – [in] J dV/dJ
J2_d2VdJ2 – [in] J^2 d^2V/dJ^2
lambda – [in] Lamé parameter
mu – [in] Shear modulus
grad_du – [in] Gradient of incremental change in u
FdSFTranspose – [out] F*dS*F^T needed for computing df1 in current configuration
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelStrainEnergy_NeoHookean(CeedScalar V, CeedScalar lambda, CeedScalar mu, CeedScalar Jm1, CeedScalar trace_strain, CeedScalar *strain_energy)¶
Compute strain energy for neo-Hookean model.
psi = lambda * V(J) - mu logJ + mu I1(E)
- Parameters:
V – [in] V(J)
lambda – [in] Lamé parameter
mu – [in] Shear modulus
Jm1 – [in] Determinant of deformation gradient - 1
trace_strain – [in] Trace of Green Lagrange or Green euler strain tensor (E or e)
strain_energy – [out] Strain energy for Neo-Hookean model
- Returns:
An error code: 0 - success, otherwise - failure
-
int StrainEnergy_NeoHookean(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute strain energy for neo-Hookean hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - strain energy
- Returns:
An error code: 0 - success, otherwise - failure
-
int DiagnosticStress_NeoHookean(void *ctx, const CeedScalar Jm1, const CeedScalar V, const CeedScalar J_dVdJ, CeedScalar grad_u[3][3], CeedScalar sigma_sym[6], CeedScalar *strain_energy, CeedScalar *trace_e, CeedScalar *trace_e2)¶
Compute projected diagnostic stress, and strain energy invariants values for Neo-hookean hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Jm1 – [in] Determinant of deformation gradient - 1
V – [in] V(J); volumetric energy
J_dVdJ – [in] J dV/dJ
grad_u – [in] Gradient of incremental change in u
sigma_sym – [out] Cauchy stress tensor in symmetric representation
strain_energy – [out] Strain energy
trace_e – [out] Trace of strain tensor e
trace_e2 – [out] Trace of strain tensor e*e
- Returns:
An error code: 0 - success, otherwise - failure
-
int Diagnostic_NeoHookean(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute projected diagnostic values for neo-Hookean hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - u
2 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - projected diagnostic values
- Returns:
An error code: 0 - success, otherwise - failure
-
int SurfaceForceCellToFace_NeoHookean(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute surface forces for neo-Hookean hyperelasticity.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
0 - qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - surface force values
- Returns:
An error code: 0 - success, otherwise - failure
-
CeedScalar RatelStrainEnergy_NeoHookeanCurrent_AD(CeedScalar e_sym[6], CeedScalar lambda, CeedScalar mu)¶
Compute strain energy for neo-Hookean hyperelasticity.
- Parameters:
e_sym – [in] Green Euler strain, in symmetric representation
lambda – [in] Lamé parameter
mu – [in] Shear modulus
- Returns:
A scalar value: strain energy
-
void RatelKirchhofftau_sym_NeoHookean_AD(const CeedScalar lambda, const CeedScalar mu, CeedScalar e_sym[6], CeedScalar tau_sym[6])¶
Compute Kirchoff tau for neo-Hookean hyperelasticity in current configuration with Enzyme.
- Parameters:
lambda – [in] Lamé parameter
mu – [in] Shear modulus
e_sym – [in] Green Euler strain, in symmetric representation
tau_sym – [out] Kirchoff tau, in symmetric representation
-
void Rateldtau_fwd(const CeedScalar lambda, const CeedScalar mu, CeedScalar e_sym[6], CeedScalar de_sym[6], CeedScalar tau_sym[6], CeedScalar dtau_sym[6])¶
Compute derivative of Kirchoff tau for neo-Hookean hyperelasticity in current configuration with Enzyme.
- Parameters:
lambda – [in] Lamé parameter
mu – [in] Shear modulus
e_sym – [in] Green Euler strain, in symmetric representation
de_sym – [out] Derivative of Green Euler strain, in symmetric representation
tau_sym – [in] Kirchoff tau, in symmetric representation
dtau_sym – [out] Derivative of Kirchoff tau, in symmetric representation
-
int f1_NeoHookeanCurrent_AD(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3])¶
Compute
tau
for neo-Hookean hyperelasticity in current configuration with Enzyme.- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - stored dXdx and Green Euler strain
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = tau
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_NeoHookeanCurrent_AD(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3])¶
Compute linearization of
tau
for neo-Hookean hyperelasticity in current configuration with Enzyme.- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - stored dXdx and Green Euler strain
2 - gradient of incremental change to u with respect to reference coordinates
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dtau - tau * (nabla_x du)^T
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityResidual_NeoHookeanCurrent_AD(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute residual for neo-Hookean hyperelasticity in current configuration with Enzyme.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityJacobian_NeoHookeanCurrent_AD(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate Jacobian for neo-Hookean hyperelasticity in current configuration with Enzyme.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_NeoHookeanCurrent(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3])¶
Compute
tau
for neo-Hookean hyperelasticity in current configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - stored, dXdx, tau, and J - 1
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = tau
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_NeoHookeanCurrent(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3])¶
Compute linearization
df1
for neo-Hookean hyperelasticity in current configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - stored dXdx, tau, and J - 1
2 - gradient of incremental change to u with respect to reference coordinates
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dtau - tau * grad_du^T
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityResidual_NeoHookeanCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute residual for neo-Hookean hyperelasticity in current configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityJacobian_NeoHookeanCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate Jacobian for neo-Hookean hyperelasticity in current configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
CeedScalar RatelStrainEnergy_NeoHookeanInitial_AD(CeedScalar E_sym[6], CeedScalar lambda, CeedScalar mu)¶
Compute strain energy for neo-Hookean hyperelasticity.
- Parameters:
E_sym – [in] Green Lagrange strain, in symmetric representation
lambda – [in] Lamé parameter
mu – [in] Shear modulus
- Returns:
A scalar value: strain energy
-
void SecondPiolaKirchhoffStress_NeoHookean_AD(const CeedScalar lambda, const CeedScalar mu, CeedScalar E_sym[6], CeedScalar S_sym[6])¶
Compute second Piola-Kirchhoff for neo-Hookean hyperelasticity in initial configuration with Enzyme.
- Parameters:
lambda – [in] Lamé parameter
mu – [in] Shear modulus
E_sym – [in] Green Lagrange strain, in symmetric representation
S_sym – [out] Second Piola-Kirchhoff, in symmetric representation
-
void S_augmentfwd(double *S, double *E, const double lambda, const double mu, double *tape)¶
Compute first Piola-Kirchhoff for neo-Hookean hyperelasticity in initial configuration with Enzyme.
- Parameters:
E – [in] Green Lagrange strain
S – [in] Second Piola-Kirchhoff
lambda – [in] Lamé parameter
mu – [in] Shear modulus
tape – [out] Enzyme tape
-
void dS_fwd(double *dS, double *dE, const double lambda, const double mu, const double *tape)¶
Compute derivative of first Piola-Kirchhoff for neo-Hookean hyperelasticity in initial configuration with Enzyme.
- Parameters:
dS – [out] Derivative of first Piola-Kirchoff
dE – [out] Derivative of Green Lagrange strain
lambda – [in] Lamé parameter
mu – [in] Shear modulus
tape – [in] Enzyme tape
-
int f1_NeoHookeanInitial_AD(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3])¶
Compute
P
for neo-Hookean hyperelasticity in initial configuration with Enzyme.- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - stored gradient of u with respect to physical coordinates, Second Piola-Kirchhoff, and tape
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = P = F * S
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_NeoHookeanInitial_AD(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3])¶
Compute linearization of
P
for neo-Hookean hyperelasticity in initial configuration with Enzyme.- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - stored gradient of u with respect to physical coordinates, Second Piola-Kirchhoff, and tape
2 - gradient of incremental change to u with respect to reference coordinates
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dP = dF * S + F * dS
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityResidual_NeoHookeanInitial_AD(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute residual for neo-Hookean hyperelasticity in initial configuration with Enzyme.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityJacobian_NeoHookeanInitial_AD(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate Jacobian for neo-Hookean hyperelasticity in initial configuration with Enzyme.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_NeoHookeanInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3])¶
Compute
P
for neo-Hookean hyperelasticity in initial configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - stored gradient of u with respect to physical coordinates
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = P
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_NeoHookeanInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3])¶
Compute linearization of
P
for neo-Hookean hyperelasticity in initial configuration.- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - stored gradient of u with respect to physical coordinates
2 - gradient of incremental change to u with respect to reference coordinates
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dP
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityResidual_NeoHookeanInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute residual for neo-Hookean hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int ElasticityJacobian_NeoHookeanInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate Jacobian for neo-Hookean hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelNeoHookeanElasticityParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlatenBCsResidual_NeoHookeanInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute platen residual for neo-Hookean hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelBCPlatenParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlatenBCsJacobian_NeoHookeanInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Evaluate platen Jacobian for neo-Hookean hyperelasticity in initial configuration.
- Parameters:
ctx – [in] QFunction context, holding
RatelBCPlatenParams
Q – [in] Number of quadrature points
in – [in] Input arrays
out – [out] Output arrays
- Returns:
An error code: 0 - success, otherwise - failure
-
int VolumetricFunctionAndDerivatives(CeedScalar Jm1, CeedScalar *V, CeedScalar *J_dVdJ, CeedScalar *J2_d2VdJ2)¶
Compute V, J * dV/dJ, J^2 * d^2V/dJ^2 for mixed/single fields hyperelasticity.
For isochoric single field and mixed methods we consider the volumetric energy of form
\psi_vol = k * V
A = J^2 - 1 - 2 logJ
V = A / 4
J dV/dJ = (J^2 - 1) / 2
J^2 d^2V/dJ^2 = (J^2 + 1) / 2
- Parameters:
Jm1 – [in] Determinant of deformation gradient - 1.
V – [out]
V
J_dVdJ – [out]
J dV/dJ
J2_d2VdJ2 – [out]
J^2 d^2V/dJ^2
- Returns:
An error code: 0 - success, otherwise - failure
-
int VolumetricFunctionAndDerivatives_PL(CeedScalar Jm1, CeedScalar *U, CeedScalar *J_dUdJ, CeedScalar *J2_d2UdJ2)¶
Compute U, J * dU/dJ, J^2 * d^2U/dJ^2 for mixed with perturbed Lagrange-multiplier hyperelasticity.
For mixed PL method we consider the volumetric energy of form
\psi_vol = k/2 * U^2
A = J^2 - 1 - 2 logJ
U = A^{1/2} / sqrt(2)
J dU/dJ = (J^2 - 1) A^{-1/2} / sqrt(2)
J^2 d^2U/dJ^2 = [(J^2 + 1) A^{-1/2} - (J^2 - 1)^2 A^{-3/2}] / sqrt(2)
- Parameters:
Jm1 – [in] Determinant of deformation gradient - 1.
U – [out]
U
J_dUdJ – [out]
J dU/dJ
J2_d2UdJ2 – [out]
J^2 d^2U/dJ^2
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelVolumetricKirchhoffTau(CeedScalar J_dVdJ, CeedScalar bulk, CeedScalar *tau_vol_sym)¶
Compute volumetric Kirchoff tau for single field isochoric hyperelasticity.
tau_vol = (bulk * J dV/dJ) I
- Parameters:
J_dVdJ – [in] J dV/dJ
bulk – [in] Bulk modulus
tau_vol_sym – [out] Volumetric Kirchoff tau
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelVolumetricSecondKirchhoffStress(CeedScalar J_dVdJ, CeedScalar bulk, const CeedScalar C_inv_sym[6], CeedScalar S_vol_sym[6])¶
Compute volumetric part of second Kirchoff stress for single field isochoric hyperelasticity.
S_vol = (bulk * J dV/dJ) * C_inv
- Parameters:
J_dVdJ – [in] J dV/dJ
bulk – [in] Bulk modulus
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
S_vol_sym – [out] Volumetric second Kirchoff stress, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelVolumetricSecondKirchhoffStress_fwd(CeedScalar J_dVdJ, CeedScalar J2_d2VdJ2, CeedScalar bulk, CeedScalar Cinv_contract_dE, const CeedScalar C_inv_sym[6], const CeedScalar dC_inv_sym[6], CeedScalar dS_vol_sym[6])¶
Compute derivative of volumetric second Kirchoff stress for single field isochoric hyperelasticity.
dS_vol = ((bulk J^2 * d2V/dJ2 + bulk * J dV/dJ) (C_inv:dE)) C_inv + (bulk * J dV/dJ) dC_inv
- Parameters:
J_dVdJ – [in] J dV/dJ
J2_d2VdJ2 – [in] J^2 d^2V/dJ^2
bulk – [in] Bulk modulus
Cinv_contract_dE – [in]
C_inv : dE
C_inv_sym – [in] Inverse of right Cauchy-Green tensor, in symmetric representation
dC_inv_sym – [in] Derivative of C^{-1}, in symmetric representation
dS_vol_sym – [out] Derivative of primal second Kirchoff stress, in symmetric representation
- Returns:
An error code: 0 - success, otherwise - failure
-
int RatelComputeFdSFTransposeVolumetric(CeedScalar J_dVdJ, CeedScalar J2_d2VdJ2, CeedScalar bulk, CeedScalar trace_depsilon, const CeedScalar depsilon_sym[6], CeedScalar FdSFTranspose_vol_sym[6])¶
Compute F*dS_vol*F^T for for single field isochoric hyperelasticity in current configuration.
- Parameters:
J_dVdJ – [in] J dV/dJ
J2_d2VdJ2 – [in] J^2 d^2V/dJ^2
bulk – [in] Bulk modulus
trace_depsilon – [in]
trace(depsilon)
depsilon_sym – [in] depsilon = (grad_du + grad_du^T)/2
FdSFTranspose_vol_sym – [out] F*dS_vol*F^T needed for computing df1 in current configuration
- Returns:
An error code: 0 - success, otherwise - failure
-
int f1_PlasticityLinear(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar f1[3][3])¶
Compute
Sigma
for linear plasticity.- Parameters:
ctx – [in] QFunction context, holding
RatelElastoPlasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - previously accepted plastic state components
2 - gradient of u with respect to reference coordinates
out – [out] Output arrays
0 - currently computed plastic state components
dXdx – [out] Coordinate transformation
f1 – [out]
f1 = Sigma = lambda*trace(e)I + 2 mu e
- Returns:
An error code: 0 - success, otherwise - failure
-
int df1_PlasticityLinear(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar df1[3][3])¶
Compute linearization of
Sigma
for linear plasticity.- Parameters:
ctx – [in] QFunction context, holding
RatelElastoPlasticityParams
Q – [in] Number of quadrature points
i – [in] Current quadrature point
in – [in] Input arrays
0 - volumetric qdata
1 - previously accepted plastic state components
2 - stored values for total strain and s_trial
3 - gradient of incremental change to u with respect to reference coordinates
out – [out] Output arrays, unused
dXdx – [out] Coordinate transformation
df1 – [out]
df1 = dSigma = lambda tr(de) I + 2 mu de
- Returns:
An error code: 0 - success, otherwise - failure
-
int PlasticityResidual_PlasticityLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)¶
Compute residual for linear plasticity.