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*)
typedef int (*RatelComputef1_Poroelastic)(void*, CeedInt, CeedInt, const CeedScalar *const*, CeedScalar *const*, CeedScalar[3][3], CeedScalar[3][3], CeedScalar*)
typedef int (*RatelComputedf1_fwd_Poroelastic)(void*, CeedInt, CeedInt, const CeedScalar *const*, CeedScalar *const*, CeedScalar[3][3], CeedScalar[3][3], CeedScalar*, CeedScalar*)
typedef int (*RatelComputedg0_fwd_Poroelastic)(void*, CeedInt, CeedInt, const CeedScalar *const*, const CeedScalar, const CeedScalar, CeedScalar *const*, CeedScalar*)
typedef int (*RatelComputeg1_Poroelastic)(void*, CeedInt, CeedInt, const CeedScalar *const*, CeedScalar[3][3], CeedScalar *const*, CeedScalar[3])
typedef int (*RatelComputedg1_fwd_Poroelastic)(void*, CeedInt, CeedInt, const CeedScalar *const*, CeedScalar[3][3], const CeedScalar, const CeedScalar, CeedScalar *const*, CeedScalar[3])
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 mms_linear_poroelasticity_param_data_private

Linear poroelasticity MMS model parameters for CeedQFunctionContext and viewing.

RatelModelParameterData mms_linear_poroelasticity_param_data = &mms_linear_poroelasticity_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
struct RatelModelParameterData_private poroelasticity_linear_param_data_private

Linear poroelasticity model parameters for CeedQFunctionContext and viewing.

RatelModelParameterData poroelasticity_linear_param_data = &poroelasticity_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 by x. 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 of dxdX_{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 and N

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 by x. 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 of dxdX_{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, and N

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 by x. 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 of dxdX_{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 and N

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 UpdateVolume_Damage_MPM(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Update swarm volume based on previous converged solution for 4 component materials.

Parameters:
  • ctx[in] QFunction context, unused

  • Q[in] Number of quadrature points

  • in[in] Input arrays

    • 0 - qdata

    • 1 - gradient of u_tilde with respect to previous coordinates X_previous

    • 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 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 (previous converged) coordinates are given by x. Change of coordinate matrix is given by dxdX_{i,j} = x_{i,j} (indicial notation). Inverse of change of coordinate matrix is given by dXdx_{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 and dXdx

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 by x. Change of coordinate matrix is given by dxdX_{i,j} = x_{i,j} (indicial notation). Inverse of change of coordinate matrix is given by dXdx_{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 store w 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 and dXdx_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 by x. Change of coordinate matrix is given by dxdX_{i,j} = x_{i,j} (indicial notation). Inverse of change of coordinate matrix is given by dXdx_{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 store w 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 and dXdx_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 by x. Change of coordinate matrix is given by dxdX_{i,j} = x_{i,j} (indicial notation). Inverse of change of coordinate matrix is given by dXdx_{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 and dXdx

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 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 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 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

int PsiPlus_Linear(CeedScalar mu, CeedScalar bulk, CeedScalar trace_e, const CeedScalar e_dev_sym[6], CeedScalar *Psi_plus)

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

  • Psi_plus[out] Psi^+

Returns:

Computed Psi_plus for linear elasticity

int PsiPlus_Linear_fwd(CeedScalar mu, CeedScalar bulk, CeedScalar trace_e, const CeedScalar e_dev_sym[6], const CeedScalar de_sym[6], CeedScalar *dPsi_plus)

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

  • dPsi_plus[out] dPsi^+

Returns:

Computed linearization of Psi_plus for linear elasticity

int ComputeDegradedStress_Linear(CeedScalar mu, CeedScalar bulk, CeedScalar eta, CeedScalar phi, 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(CeedScalar mu, CeedScalar bulk, CeedScalar eta, bool use_offdiagonal, CeedScalar phi, CeedScalar trace_e, CeedScalar dphi, 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 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 displacement

    • output_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 elasticity

  • out[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 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 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 function

  • out[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 function

  • out[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 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 function

  • out[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 function

  • out[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 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 function

  • out[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.

Ref https://ratel.micromorph.org/doc/modeling/methods/hyperelasticity/#equation-cur-simp-jac-mooney-rivlin

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 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 ElasticityDamageDiagnostic_NeoHookean_MPM(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Compute projected diagnostic values for Neo-hookean hyperelasticity initial conf.

Parameters:
  • ctx[in] QFunction context holding RatelElasticityDamageParams

  • Q[in] Number of quadrature points

  • in[in] Input arrays

    • 0 - qdata with respect to X_previous

    • 1 - state (11 components: Psi_plus, 9 Grad_u)

    • 2 - u (four components: 3 displacement components (unused), 1 scalar damage field)

    • 3 - gradient of u with respect to previous coordinates X_previous (unused)

    • 4 - rho

    • 5 - elastic parameters RatelNeoHookeanElasticityPointFields

    • 6 - damage parameters RatelElasticityDamagePointFields

  • out[out] Output arrays

    • 0 - projected diagnostic values

Returns:

An error code: 0 - success, otherwise - failure

int ElasticityDamageStrainEnergy_NeoHookean_MPM(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Compute (degraded) strain energy for Neo-hookean hyperelasticity.

Parameters:
  • ctx[in] QFunction context holding RatelElasticityDamageParams

  • Q[in] Number of quadrature points

  • in[in] Input arrays

  • out[out] Output arrays

    • 0 - (degraded) strain energy

Returns:

An error code: 0 - success, otherwise - failure

int ElasticityDamageDualDiagnostic_NeoHookean_MPM(void *ctx, const CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Compute dual space diagnostic values for NeoHookean hyperelasticity with damage.

Parameters:
  • ctx[in] QFunction context, unused

  • Q[in] Number of quadrature points

  • in[in] Input arrays

    • 0 - volumetric qdata with respect to X

    • 1 - state (10 components: Psi_plus, 9 Grad_u)

    • 3 - rho

  • out[out] Output array

    • 0 - nodal volume

Returns:

An error code: 0 - success, otherwise - failure

int SetPointFields_MPM_ElasticityDamageNeoHookeanCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Set point fields for Neo-Hookean hyperelasticity with damage phase field.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

int ElasticityDamageResidual_ut_NeoHookeanCurrent_MPM(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

    • 1 - u_tilde_t (four components: 3 displacement components, 1 scalar damage field)

    • 2 - rho (unused)

    • 3 - elastic parameters (unused)

    • 4 - damage parameters

  • out[out] Output arrays

    • 0 - action on u_t

Returns:

An error code: 0 - success, otherwise - failure

int ElasticityDamageResidual_NeoHookeanCurrent_MPM(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Compute residual for Neo-hookean hyperelasticity initial conf.

Parameters:
  • ctx[in] QFunction context, holding RatelElasticityDamageParams

  • Q[in] Number of quadrature points

  • in[in] Input arrays

    • 0 - volumetric qdata with respect to X_previous

    • 1 - state (10 components: Psi_plus, 9 Grad_u_previous)

    • 2 - u_tilde (four components: 3 displacement components, 1 scalar damage field)

    • 3 - u_tilde_g gradient of u_tilde with respect to previous coordinates X_previous

    • 4 - rho (unused)

    • 5 - elastic parameters RatelNeoHookeanElasticityPointFields

    • 6 - damage parameters RatelElasticityDamagePointFields

  • out[out] Output arrays

    • 0 - updated state (10 components: Psi_plus, 9 Grad_u)

    • 1 - stored values (20 components: phi, Psi_plus_history_flag, 9 dXdx, Jn, Jm1, J_pow, 6 e_sym)

    • 2 - action on u_tilde

    • 3 - action on u_tilde_g

Returns:

An error code: 0 - success, otherwise - failure

int ElasticityDamageJacobian_NeoHookeanCurrent_MPM(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Compute jacobian for Neo-hookean hyperelasticity initial conf.

Parameters:
  • ctx[in] QFunction context, holding RatelElasticityDamageParams

  • Q[in] Number of quadrature points

  • in[in] Input arrays

    • 0 - volumetric qdata with respect to X_previous

    • 1 - current state values (10 components: Psi_plus, 9 Grad_u)

    • 2 - Stored values (20 components: phi, Psi_plus_history_flag, 9 dXdx, Jn, Jm1, J_pow, 6 e_sym)

    • 3 - du (four components: 3 displacement components, 1 damage field)

    • 4 - du_g gradient of du with respect to previous coordinates X_previous

    • 5 - rho (unused)

    • 6 - elastic parameters RatelNeoHookeanElasticityPointFields

    • 7 - damage parameters RatelElasticityDamagePointFields

  • out[out] Output arrays

    • 0 - action on du

    • 1 - action on du_g

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

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

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

int PsiPlus_NeoHookean(CeedScalar V, CeedScalar mu, CeedScalar bulk, CeedScalar Jm1, CeedScalar trace_strain, CeedScalar *Psi_plus)

Compute Psi_plus for Neo-hookean hyperelasticity.

Parameters:
  • V[in] Volumetric term

  • mu[in] shear modulus

  • bulk[in] bulk modulus

  • Jm1[in] J - 1

  • trace_strain[in] Trace of Green Lagrange or Green euler strain tensor (E or e)

  • Psi_plus[out] Psi^+

Returns:

Psi_plus

int PsiPlus_NeoHookeanInitial_fwd(CeedScalar J_dVdJ, CeedScalar two_mu, CeedScalar bulk, CeedScalar Jm1, const CeedScalar E_sym[6], const CeedScalar dE_sym[6], CeedScalar *dPsi_plus)

Compute Linearization of Psi_plus for Neo-hookean hyperelasticity initial conf.

Parameters:
  • J_dVdJ[in] J dV/dJ

  • two_mu[in] 2 mu (shear modulus)

  • bulk[in] bulk modulus

  • Jm1[in] J - 1

  • E_sym[in] (Green-Lagrange) strain tensor in symmetric representation

  • dE_sym[in] strain tensor increment in symmetric representation

  • dPsi_plus[out] dPsi^+

Returns:

An error code: 0 - success, otherwise - failure

int ComputeDegradedSecondKirchhoffStress_NeoHookean(CeedScalar J_dVdJ, CeedScalar mu, CeedScalar bulk, CeedScalar eta, CeedScalar phi, CeedScalar Jm1, const CeedScalar E_sym[6], CeedScalar S_degr_sym[6])

Compute degraded second Kirchhoff stress (S_degr) for Neo-hookean hyperelasticity initial conf.

Parameters:
  • J_dVdJ[in] J dV/dJ

  • mu[in] shear modulus

  • bulk[in] bulk modulus

  • eta[in] residual stiffness

  • phi[in] damage field

  • Jm1[in] trace strain tensor

  • E_sym[in] (Green-Lagrange) strain tensor in symmetric representation

  • S_degr_sym[out] degraded second Kirchhoff stress in symmetric representation

Returns:

An error code: 0 - success, otherwise - failure

int ComputeDegradedSecondKirchhoffStress_NeoHookean_fwd(CeedScalar J_dVdJ, CeedScalar J2_d2VdJ2, CeedScalar two_mu, CeedScalar bulk, CeedScalar eta, bool use_offdiag, CeedScalar phi, CeedScalar Jm1, const CeedScalar F[3][3], const CeedScalar grad_du[3][3], const CeedScalar E_sym[6], CeedScalar dphi, CeedScalar dS_degr_sym[6])

Compute linearization of Kirchhoff stress (S_degr) for Neo-hookean hyperelasticity initial conf.

Parameters:
  • J_dVdJ[in] J dV/dJ

  • J2_d2VdJ2[in] J^2 d^2V/dJ^2

  • two_mu[in] 2 mu

  • bulk[in] bulk modulus

  • eta[in] residual stiffness

  • use_offdiag[in] offdiagonal term (bool)

  • phi[in] damage field

  • Jm1[in] J - 1

  • F[in] deformation gradient

  • grad_du[in] gradient of u increment

  • E_sym[in] (Green-Lagrange) strain tensor in symmetric representation

  • dphi[in] increment of phi

  • dS_degr_sym[out] linearization of degraded stress in symmetric representation

Returns:

An error code: 0 - success, otherwise - failure

int ComputeDegradedKirchhoffTau_NeoHookean(CeedScalar J_dVdJ, CeedScalar bulk, CeedScalar two_mu, CeedScalar Jm1, CeedScalar J_pow, CeedScalar eta, CeedScalar phi, const CeedScalar e_sym[6], CeedScalar tau_degr_sym[6])

Compute degraded Kirchhoff stress (tau) for diagnostic Qfunction.

Parameters:
  • J_dVdJ[in] J dV/dJ

  • bulk[in] Bulk modulus

  • two_mu[in] Two times the shear modulus

  • Jm1[in] J - 1

  • J_pow[in] J^{-2/3}

  • eta[in] eta

  • phi[in] damage field

  • e_sym[in] Green Euler strain, in symmetric representation

  • tau_degr_sym[out] degraded second Kirchhoff stress in symmetric representation

Returns:

An error code: 0 - success, otherwise - failure

int PsiPlus_NeoHookeanCurrent_fwd(CeedScalar J_dVdJ, CeedScalar two_mu, CeedScalar bulk, CeedScalar Jm1, CeedScalar J_pow, const CeedScalar e_sym[6], const CeedScalar depsilon_sym[6], CeedScalar *dPsi_plus)

Compute Linearization of Psi_plus for Neo-hookean hyperelasticity current conf.

Parameters:
  • J_dVdJ[in] J dV/dJ

  • two_mu[in] 2 mu (shear modulus)

  • bulk[in] bulk modulus

  • Jm1[in] J - 1

  • J_pow[in] J^{-2/3}

  • e_sym[in] (Green-Euler) strain tensor in symmetric representation

  • depsilon_sym[in] depsilon = (grad_du + grad_du^T)/2

  • dPsi_plus[out] dPsi^+

Returns:

An error code: 0 - success, otherwise - failure

int RatelComputeDegradedFdSFTranspose_NeoHookean(CeedScalar J_dVdJ, CeedScalar J2_d2VdJ2, CeedScalar bulk, CeedScalar mu, CeedScalar Jm1, CeedScalar J_pow, CeedScalar eta, bool use_offdiag, CeedScalar phi, CeedScalar dphi, const CeedScalar e_sym[6], const CeedScalar grad_du[3][3], CeedScalar depsilon_sym[6], CeedScalar FdSFTranspose_degr[3][3])

Compute F*dS_degr*F^T for neo-Hookean damage 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

  • Jm1[in] J - 1

  • J_pow[in] J^{-2/3}

  • eta[in] eta

  • use_offdiag[in] offdiagonal term (bool)

  • phi[in] damage field

  • dphi[in] increment of phi

  • e_sym[in] Green Euler strain, in symmetric representation

  • grad_du[in] Gradient of incremental change in u

  • depsilon_sym[out] depsilon = (grad_du + grad_du^T)/2

  • FdSFTranspose_degr[out] F*dS_degr*F^T needed for computing df1 in current configuration

Returns:

An error code: 0 - success, otherwise - failure

int ElasticityDamageStrainEnergy_NeoHookean(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Compute (degraded) strain energy for Neo-hookean hyperelasticity.

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 ElasticityDamageDiagnostic_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 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 ElasticityDamageDualDiagnostic_NeoHookean(void *ctx, const CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Compute dual space diagnostic values for NeoHookean hyperelasticity 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 ElasticityDamageResidual_ut_NeoHookeanCurrent(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

    • 1 - u_t (four components: 3 displacement components, 1 scalar damage field)

  • out[out] Output arrays

    • 0 - action on u_t

Returns:

An error code: 0 - success, otherwise - failure

int ElasticityDamageResidual_NeoHookeanCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Compute residual for Neo-hookean hyperelasticity current conf.

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_NeoHookeanCurrent(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Compute jacobian for Neo-hookean hyperelasticity initial conf.

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 ElasticityDamageResidual_ut_NeoHookeanInitial(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

    • 1 - u_t (four components: 3 displacement components, 1 scalar damage field)

  • out[out] Output arrays

    • 0 - action on u_t

Returns:

An error code: 0 - success, otherwise - failure

int ElasticityDamageResidual_NeoHookeanInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Compute residual for Neo-hookean hyperelasticity initial conf.

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_NeoHookeanInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Compute jacobian for Neo-hookean hyperelasticity initial conf.

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 ElasticityDamagePlatenResidual_NeoHookeanInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar P_degr[3][3])

Compute platens residual for Neo-hookean hyperelasticity initial conf.

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

  • P_degr[out] Degraded stress tensor

Returns:

An error code: 0 - success, otherwise - failure

int ElasticityDamagePlatenJacobian_NeoHookeanInitial(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar *const *out, CeedScalar dXdx[3][3], CeedScalar dP_degr[3][3])

Compute platens jacobian for Neo-hookean hyperelasticity initial conf.

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

  • dP_degr[out] Linearization of degraded stress tensor

Returns:

An error code: 0 - success, otherwise - failure

int PlatenBCsResidualElasticityDamage_NeoHookeanInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Compute platen residual for Neo-hookean hyperelasticity initial conf.

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_NeoHookeanInitial(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Evaluate platen Jacobian for Neo-hookean hyperelasticity initial conf.

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

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.

Parameters:
  • ctx[in] QFunction context, holding RatelElastoPlasticityParams

  • Q[in] Number of quadrature points

  • in[in] Input arrays

  • out[out] Output arrays

Returns:

An error code: 0 - success, otherwise - failure

int PlasticityJacobian_PlasticityLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Evaluate Jacobian for linear plasticity.

Parameters:
  • ctx[in] QFunction context, holding RatelElastoPlasticityParams

  • Q[in] Number of quadrature points

  • in[in] Input arrays

  • out[out] Output arrays

Returns:

An error code: 0 - success, otherwise - failure

int PlatenBCsResidual_PlasticityLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Compute platen residual for linear plasticity.

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_PlasticityLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Evaluate platen Jacobian for linear plasticity.

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_PlasticityLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Compute strain energy for linear plasticity.

Parameters:
  • ctx[in] QFunction context, holding RatelElastoPlasticityParams

  • Q[in] Number of quadrature points

  • in[in] Input arrays

    • 0 - qdata

    • 1 - plastic state

    • 2 - 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_PlasticityLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Compute projected diagnostic values for linear plasticity.

Parameters:
  • ctx[in] QFunction context, holding RatelElastoPlasticityParams

  • Q[in] Number of quadrature points

  • in[in] Input arrays

    • 0 - qdata

    • 1 - plastic state

    • 2 - u

    • 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 PoroElasticityResidual(void *ctx, CeedInt Q, RatelComputef1_Poroelastic compute_f1_poroelastic, RatelComputeg1_Poroelastic compute_g1_poroelastic, bool has_state_values, bool has_stored_values, CeedInt num_active_field_eval_modes, const CeedScalar *const *in, CeedScalar *const *out)

Compute poroelasticity residual evaluation.

Parameters:
  • ctx[in] QFunction context, unused

  • Q[in] Number of quadrature points

  • compute_f1_poroelastic[in] Function to compute action of f1

  • compute_g1_poroelastic[in] Function to compute action of g1

  • 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 f1 term (displacement field)

    • output_data_offset + 1 - action of QFunction on g0 term (pressure field)

    • output_data_offset + 2 - action of QFunction on g1 term (pressure field)

Returns:

An error code: 0 - success, otherwise - failure

int PoroElasticityJacobian(void *ctx, CeedInt Q, RatelComputedf1_fwd_Poroelastic compute_df1_poroelastic, RatelComputedg0_fwd_Poroelastic compute_dg0_poroelastic, RatelComputedg1_fwd_Poroelastic compute_dg1_poroelastic, bool has_state_values, bool has_stored_values, CeedInt num_active_field_eval_modes, const CeedScalar *const *in, CeedScalar *const *out)

Compute poroelasticity Jacobian evaluation.

Parameters:
  • ctx[in] QFunction context, holding common parameters and model parameters

  • Q[in] Number of quadrature points

  • compute_df1_poroelastic[in] Function to compute action of df1

  • compute_dg0_poroelastic[in] Function to compute action of dg0

  • compute_dg1_poroelastic[in] Function to compute action of dg1

  • 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

Returns:

An error code: 0 - success, otherwise - failure

int f1_PoroElasticityLinear(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 poroelasticity.

Parameters:
  • ctx[in] QFunction context, holding RatelLinearPoroElasticityParams

  • 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 = (lambda_d trace_e I) + (2 mu_d e_sym) - (alpha p I)

  • trace_e[out] Divergence of u = trace_e needed for computing g0 function

Returns:

An error code: 0 - success, otherwise - failure

int PoroElasticityResidual_PoroElasticityLinear_ut(void *ctx, const CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Compute g0 with u_t and p_t for linear poroelasticity.

Parameters:
  • ctx[in] QFunction context, holding RatelLinearPoroElasticityParams

  • Q[in] Number of quadrature points

  • in[in] Input arrays

    • 0 - volumetric qdata

    • 1 - gradient of u_t with respect to reference coordinates

    • 2 - p_t

  • out[out] Output arrays

    • 0 - action on displacement field (it is 0)

    • 1 - action on pressure field (q, g0) where g0 = pt /M + alpha div(ut)

Returns:

An error code: 0 - success, otherwise - failure

int g1_PoroElasticityLinear(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar dXdx[3][3], CeedScalar *const *out, CeedScalar g1[3])

Compute g1 for linear poroelasticity.

Parameters:
  • ctx[in] QFunction context, holding RatelLinearPoroElasticityParams

  • Q[in] Number of quadrature points

  • i[in] Current quadrature point

  • in[in] Input arrays

    • 3 - gradient of p with respect to reference coordinates

  • dXdx[in] Coordinate transformation

  • out[out] Output arrays, unused

  • g1[out] g1 = varkappa grad_p

Returns:

An error code: 0 - success, otherwise - failure

int df1_PoroElasticityLinear(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 linear poroelasticity.

Parameters:
  • ctx[in] QFunction context, holding RatelLinearPoroElasticityParams

  • 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 = (lambda_d trace_de I) + (2 mu_d de_sym) - (alpha dp I)

  • trace_de[out] Linearization of grad_u: div_du = trace_de

  • Cinv_contract_dE[out] C_inv:dE, unused for linear poroelasticity

Returns:

An error code: 0 - success, otherwise - failure

int dg0_PoroElasticityLinear(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 linear poroelasticity.

Parameters:
  • ctx[in] QFunction context, holding RatelLinearPoroElasticityParams

  • 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 linear poroelasticity

  • out[out] Output arrays, unused

  • dg0[out] dg0 = shift_v(dp/M + alpha trace_de )

Returns:

An error code: 0 - success, otherwise - failure

int dg1_PoroElasticityLinear(void *ctx, const CeedInt Q, const CeedInt i, const CeedScalar *const *in, CeedScalar dXdx[3][3], const CeedScalar trace_de, const CeedScalar Cinv_contract_dE, CeedScalar *const *out, CeedScalar dg1[3])

Compute linearization of g1 for linear poroelasticity.

Parameters:
  • ctx[in] QFunction context, holding RatelLinearPoroElasticityParams

  • Q[in] Number of quadrature points

  • i[in] Current quadrature point

  • in[in] Input arrays

    • 3 - gradient of incremental change to p with respect to reference coordinates

  • dXdx[in] Coordinate transformation

  • 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 linear poroelasticity

  • out[out] Output arrays, unused

  • dg1[out] dg1 = varkappa grad_dp

Returns:

An error code: 0 - success, otherwise - failure

int PoroElasticityResidual_PoroElasticityLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Compute residual for linear poroelasticity.

Parameters:
  • ctx[in] QFunction context, holding RatelLinearPoroElasticityParams

  • Q[in] Number of quadrature points

  • in[in] Input arrays

  • out[out] Output arrays

Returns:

An error code: 0 - success, otherwise - failure

int PoroElasticityJacobian_PoroElasticityLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Evaluate Jacobian for linear poroelasticity.

Parameters:
  • ctx[in] QFunction context, holding RatelLinearPoroElasticityParams

  • Q[in] Number of quadrature points

  • in[in] Input arrays

  • out[out] Output arrays

Returns:

An error code: 0 - success, otherwise - failure

int f1_PoroElasticityLinear_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 poroelasticity platen BCs.

Parameters:
  • ctx[in] QFunction context, holding RatelLinearPoroElasticityParams

  • 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 = (lambda_d trace_e I) + (2 mu_d e_sym) - (alpha p I)

Returns:

An error code: 0 - success, otherwise - failure

int df1_PoroElasticityLinear_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 linear poroelasticity.

Parameters:
  • ctx[in] QFunction context, holding RatelLinearPoroElasticityParams

  • 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 = (lambda_d trace_de I) + (2 mu_d de_sym) - (alpha dp I)

Returns:

An error code: 0 - success, otherwise - failure

int PlatenBCsResidual_PoroElasticityLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Compute platen residual for linear poroelasticity.

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_PoroElasticityLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Evaluate platen Jacobian for linear poroelasticity.

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_PoroElasticityLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Compute strain energy for linear poroelasticity.

Parameters:
  • ctx[in] QFunction context, holding RatelLinearPoroElasticityParams

  • 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_PoroElasticityLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Compute projected diagnostic values for linear poroelasticity.

Parameters:
  • ctx[in] QFunction context, holding RatelLinearPoroElasticityParams

  • 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 PoroElasticityPC_uu_PoroElasticityLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Compute displacement block for pMG preconditioner for linear poroelasticity.

Parameters:
  • ctx[in] QFunction context, holding RatelLinearPoroElasticityParams

  • 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 PoroElasticityPC_pp_PoroElasticityLinear(void *ctx, CeedInt Q, const CeedScalar *const *in, CeedScalar *const *out)

Compute pressure block for pMG preconditioner for linear poroelasticity.

Parameters:
  • ctx[in] QFunction context, holding RatelLinearPoroElasticityParams

  • Q[in] Number of quadrature points

  • in[in] Input arrays

    • 0 - qdata

    • 1 - incremental change of p

    • 2 - gradient of p

  • out[out] Output arrays

    • 0 - action of QFunction for pressure field (dg0)

    • 1 - action of QFunction for pressure field (dg1)

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_CEED_BP1(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for CEED BP1.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_CEED_BP1(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register CEED BP1 model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_CEED_BP2(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for CEED BP2.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_CEED_BP2(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register CEED BP2 model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_CEED_BP3(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for CEED BP3.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_CEED_BP3(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register CEED BP3 model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_CEED_BP4(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for CEED BP4.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_CEED_BP4(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register CEED BP4 model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityIsochoricMooneyRivlinCurrent(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for Isochoric Mooney-Rivlin hyperelasticity at finite strain in current configuration.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityIsochoricMooneyRivlinCurrent(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register Isochoric Mooney-Rivlin hyperelasticity at finite strain in current configuration model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityIsochoricMooneyRivlinInitial(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for Isochoric Mooney-Rivlin hyperelasticity at finite strain in initial configuration.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityIsochoricMooneyRivlinInitial(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register Isochoric Mooney-Rivlin hyperelasticity at finite strain in initial configuration model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityIsochoricNeoHookeanCurrent(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for Isochoric Neo-Hookean hyperelasticity at finite strain in current configuration.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityIsochoricNeoHookeanCurrent(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register Isochoric Neo-Hookean hyperelasticity at finite strain in current configuration model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityIsochoricNeoHookeanInitial(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for Isochoric Neo-Hookean hyperelasticity at finite strain in initial configuration.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityIsochoricNeoHookeanInitial(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register Isochoric Neo-Hookean hyperelasticity at finite strain in initial configuration model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityIsochoricOgdenCurrent(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for IsochoricOgden hyperelasticity at finite strain in current configuration.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityIsochoricOgdenCurrent(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register IsochoricOgden hyperelasticity at finite strain in current configuration model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityIsochoricOgdenInitial(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for IsochoricOgden hyperelasticity at finite strain in initial configuration.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityIsochoricOgdenInitial(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register IsochoricOgden hyperelasticity at finite strain in initial configuration model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityLinearDamage(Ratel ratel, RatelMaterial material)

Create RatelMaterial for Damage Phase Field.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityLinearDamage(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register damage model.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterials

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityLinear(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for linear elasticity.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityLinear(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register linear elastic model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityMixedLinear(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for linear elasticity.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityMixedLinear(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register mixed linear elastic model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityMixedNeoHookeanCurrent(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for mixed Neo-Hookean hyperelasticity at finite strain in current configuration.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityMixedNeoHookeanCurrent(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register Mixed Neo-Hookean hyperelasticity at finite strain in current configuration model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityMixedNeoHookeanInitial(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for mixed Neo-Hookean hyperelasticity at finite strain in initial configuration.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityMixedNeoHookeanInitial(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register Mixed Neo-Hookean hyperelasticity at finite strain in initial configuration model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityMixedNeoHookeanPLCurrent(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for mixed Neo-Hookean perturbed Lagrange-multiplier hyperelasticity at finite strain in current configuration.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityMixedNeoHookeanPLCurrent(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register Mixed Neo-Hookean perturbed Lagrange-multiplier hyperelasticity at finite strain in current configuration model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityMixedNeoHookeanPLInitial(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for mixed Neo-Hookean perturbed Lagrange-multiplier hyperelasticity at finite strain in initial configuration.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityMixedNeoHookeanPLInitial(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register Mixed Neo-Hookean perturbed Lagrange-multiplier hyperelasticity at finite strain in initial configuration model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityMixedOgdenInitial(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for mixed Ogden hyperelasticity at finite strain in initial configuration.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityMixedOgdenInitial(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register Mixed Ogden hyperelasticity at finite strain in initial configuration model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityMooneyRivlinCurrent(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for Mooney-Rivlin hyperelasticity at finite strain in current configuration.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityMooneyRivlinCurrent(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register Mooney-Rivlin hyperelasticity at finite strain in current configuration.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityMooneyRivlinInitial(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for Mooney-Rivlin hyperelasticity at finite strain in initial configuration.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityMooneyRivlinInitial(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register Mooney-Rivlin hyperelasticity at finite strain in initial configuration model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityMPMNeoHookeanCurrent(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for Neo-Hookean hyperelasticity at finite strain in curent configuration.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityMPMNeoHookeanCurrent(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register Neo-Hookean hyperelasticity at finite strain in curent configuration model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityMPMNeoHookeanDamageCurrent(Ratel ratel, RatelMaterial material)

Create RatelMaterial for Damage Phase Field.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityMPMNeoHookeanDamageCurrent(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register damage model.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterials

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityNeoHookeanCurrentAD(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for Neo-Hookean hyperelasticity at finite strain in current configuration.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityNeoHookeanCurrentAD(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register Neo-Hookean hyperelasticity at finite strain in current configuration using Enzyme-AD model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityNeoHookeanCurrent(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for Neo-Hookean hyperelasticity at finite strain in curent configuration.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityNeoHookeanCurrent(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register Neo-Hookean hyperelasticity at finite strain in curent configuration model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityNeoHookeanDamageCurrent(Ratel ratel, RatelMaterial material)

Create RatelMaterial for Damage Phase Field.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityNeoHookeanDamageCurrent(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register damage model.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterials

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityNeoHookeanDamageInitial(Ratel ratel, RatelMaterial material)

Create RatelMaterial for Damage Phase Field.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityNeoHookeanDamageInitial(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register damage model.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterials

Returns:

An error code: 0 - success, otherwise - failure

static PetscErrorCode RatelCheckTapeSize_ElasticityNeoHookeanInitialAD(Ratel ratel)

Helper function to check allocated Enzyme tape size.

Parameters:
  • ratel[in] Ratel context

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityNeoHookeanInitialAD(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for Neo-Hookean hyperelasticity at finite strain in initial configuration.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityNeoHookeanInitialAD(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register Neo-Hookean hyperelasticity at finite strain in initial configuration using Enzyme-AD model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_ElasticityNeoHookeanInitial(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for Neo-Hookean hyperelasticity at finite strain in initial configuration.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_ElasticityNeoHookeanInitial(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register Neo-Hookean hyperelasticity at finite strain in initial configuration model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

static PetscErrorCode RatelCeedParamsContextCreate_ElasticityDamage(RatelMaterial material, CeedScalar nu, CeedScalar E, CeedScalar rho, CeedScalar fracture_toughness, CeedScalar characteristic_length, CeedScalar residual_stiffness, CeedScalar damage_scaling, CeedScalar damage_viscosity, bool use_offdiagonal, bool use_AT1, CeedQFunctionContext *ctx)

Process command line options for Damage Phase Field params.

Parameters:
  • material[in] RatelMaterial to setup params context

  • nu[in] Poisson’s ratio

  • E[in] Young’s Modulus

  • rho[in] Density for scaled mass matrix

  • fracture_toughness[in] Critical energy release rate (J/m^2)

  • characteristic_length[in] Length scale parameter

  • residual_stiffness[in] Residual stiffness parameter

  • damage_scaling[in] Scaling factor for damage residual

  • damage_viscosity[in] Viscosity for viscous regularization

  • use_offdiagonal[in] Switch for Jacobian offdiagonal terms

  • use_AT1[in] AT1 model type

  • ctx[out] libCEED QFunctionContext for Damage Phase Field parameters

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialParamsContextCreate_ElasticityDamage(RatelMaterial material, CeedQFunctionContext *ctx)

Build libCEED QFunctionContext with damage phase field parameters.

Parameters:
  • material[in] RatelMaterial to setup parameters context

  • ctx[out] libCEED QFunctionContext for damage phase field parameters

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialParamsSmootherDataSetup_ElasticityDamage(RatelMaterial material)

Setup data for libCEED QFunctionContext for smoother with ELasticityDamage parameters.

Parameters:
  • material[inout] RatelMaterial to setup model params context

Returns:

An error code: 0 - success, otherwise - failure

static PetscErrorCode RatelCeedParamsContextCreate_MixedNeoHookean(RatelMaterial material, CeedScalar nu, CeedScalar E, CeedScalar rho, CeedScalar nu_primal, CeedScalar nu_primal_pc, CeedInt sign_pp, CeedQFunctionContext *ctx)

Set CeedQFunctionContext data and register fields for mixed Neo-Hookean parameters.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial to setup model params context

  • nu[in] Poisson’s ratio

  • E[in] Young’s Modulus

  • rho[in] Density for scaled mass matrix

  • nu_primal[in] To change full strain to deviatoric in mixed formulation

  • nu_primal_pc[in] To change full strain to deviatoric in uu block pc

  • sign_pp[in] To change the sign in pp block pc

  • ctx[out] CeedQFunctionContext for mixed Neo-Hookean parameters

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialParamsContextCreate_MixedNeoHookean(RatelMaterial material, CeedQFunctionContext *ctx)

Build CeedQFunctionContext with mixed Neo-Hookean parameters.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial to setup model params context

  • ctx[out] CeedQFunctionContext for Neo-Hookean parameters

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialParamsSmootherDataSetup_MixedNeoHookean(RatelMaterial material)

Setup data for CeedQFunctionContext for smoother with mixed Neo-Hookean parameters.

Collective across MPI processes.

Parameters:
  • material[inout] RatelMaterial to setup model params context

Returns:

An error code: 0 - success, otherwise - failure

static PetscErrorCode RatelCeedParamsContextCreate_MixedOgden(RatelMaterial material, CeedScalar nu, CeedScalar *m, CeedScalar *alpha, PetscInt num_ogden_parameters, CeedScalar rho, CeedScalar nu_primal, CeedScalar nu_primal_pc, CeedInt sign_pp, CeedQFunctionContext *ctx)

Set CeedQFunctionContext data and register fields for Ogden parameters.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial to setup params context

  • nu[in] Poisson’s ratio

  • m[in] Array of material Properties for m

  • alpha[in] Array of material Properties for alpha

  • num_ogden_parameters[in] Number of parameters for Ogden model (Length of alpha=m)

  • rho[in] Density for scaled mass matrix

  • nu_primal[in] To change full strain to deviatoric in mixed formulation

  • nu_primal_pc[in] To change full strain to deviatoric in uu block pc

  • sign_pp[in] To change the sign in pp block pc

  • ctx[out] CeedQFunctionContext for Ogden parameters

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialParamsContextCreate_MixedOgden(RatelMaterial material, CeedQFunctionContext *ctx)

Build CeedQFunctionContext for mixed Ogden parameters.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial to setup params context

  • ctx[out] CeedQFunctionContext for Ogden parameters

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialParamsSmootherDataSetup_MixedOgden(RatelMaterial material)

Setup data for CeedQFunctionContext for smoother with mixed Ogden parameters.

Collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

static PetscErrorCode RatelCeedParamsContextCreate_MMS_CEED_BPs(RatelMaterial material, CeedScalar weierstrass_a, CeedScalar weierstrass_b, CeedInt weierstrass_n, CeedQFunctionContext *ctx)

Set CeedQFunctionContext data and register fields for CEED BPs MMS parameters.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial to setup model parameters context

  • weierstrass_a[in] First Weierstrass parameter

  • weierstrass_b[in] Second Weierstrass parameter

  • weierstrass_n[in] Number of terms in Weierstrass series

  • ctx[out] CeedQFunctionContext for CEED BPs MMS parameters

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMMSParamsContextCreate_CEED_BPs(RatelMaterial material, CeedQFunctionContext *ctx)

Build CeedQFunctionContext for CEED BPs MMS parameters.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial to setup model parameters context

  • ctx[out] CeedQFunctionContext for CEED BPs MMS parameters

Returns:

An error code: 0 - success, otherwise - failure

static PetscErrorCode RatelCeedParamsContextCreate_MMS_Elasticity_Linear(RatelMaterial material, CeedScalar A0, CeedScalar shift, CeedScalar scale, CeedQFunctionContext *ctx)

Set CeedQFunctionContext data and register fields for linear elasticity MMS parameters.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial to setup model parameters context

  • A0[in] Shift parameter

  • shift[in] Sin shift parameter

  • scale[in] Sin scale parameter

  • ctx[out] CeedQFunctionContext for linear elasticity MMS parameters

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMMSParamsContextCreate_Elasticity_Linear(RatelMaterial material, CeedQFunctionContext *ctx)

Build CeedQFunctionContext for linear elasticity MMS parameters.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial to setup model parameters context

  • ctx[out] CeedQFunctionContext for linear elasticity MMS parameters

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMMSParamsContextCreate_Elasticity_MixedLinear(RatelMaterial material, CeedQFunctionContext *ctx)

Build CeedQFunctionContext for mixed linear elasticity MMS parameters.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial to setup model parameters context

  • ctx[out] CeedQFunctionContext for mixed linear elasticity MMS parameters

Returns:

An error code: 0 - success, otherwise - failure

static PetscErrorCode RatelCeedParamsContextCreate_MMS_PoroElasticityLinear(RatelMaterial material, CeedScalar A0, CeedScalar shift, CeedScalar scale, CeedQFunctionContext *ctx)

Set CeedQFunctionContext data and register fields for linear poroelasticity MMS parameters.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial to setup model parameters context

  • A0[in] Shift parameter

  • shift[in] Sin shift parameter

  • scale[in] Sin scale parameter

  • ctx[out] CeedQFunctionContext for linear poroelasticity MMS parameters

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMMSParamsContextCreate_PoroElasticityLinear(RatelMaterial material, CeedQFunctionContext *ctx)

Build CeedQFunctionContext for linear poroelasticity MMS parameters.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial to setup model parameters context

  • ctx[out] CeedQFunctionContext for linear poroelasticity MMS parameters

Returns:

An error code: 0 - success, otherwise - failure

static PetscErrorCode RatelCeedParamsContextCreate_MooneyRivlin(RatelMaterial material, CeedScalar nu, CeedScalar mu_1, CeedScalar mu_2, CeedScalar rho, CeedQFunctionContext *ctx)

Set CeedQFunctionContext data and register fields for Mooney-Rivlin parameters.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial to setup model parameters context

  • nu[in] Poisson’s ratio

  • mu_1[in] Material Property mu_1

  • mu_2[in] Material Property mu_2

  • rho[in] Density for scaled mass matrix

  • ctx[out] CeedQFunctionContext for Mooney-Rivlin parameters

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialParamsContextCreate_MooneyRivlin(RatelMaterial material, CeedQFunctionContext *ctx)

Build CeedQFunctionContext for Mooney-Rivlin parameters.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial to setup model parameters context

  • ctx[out] CeedQFunctionContext for Mooney-Rivlin parameters

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialParamsSmootherDataSetup_MooneyRivlin(RatelMaterial material)

Setup data for CeedQFunctionContext for smoother with Mooney-Rivlin parameters.

Collective across MPI processes.

Parameters:
  • material[inout] RatelMaterial to setup model parameters context

Returns:

An error code: 0 - success, otherwise - failure

static PetscErrorCode RatelCeedParamsContextCreate_NeoHookean(RatelMaterial material, CeedScalar nu, CeedScalar E, CeedScalar rho, CeedQFunctionContext *ctx)

Set CeedQFunctionContext data and register fields for Neo-Hookean parameters.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial to setup model params context

  • nu[in] Poisson’s ratio

  • E[in] Young’s Modulus

  • rho[in] Density for scaled mass matrix

  • ctx[out] CeedQFunctionContext for Neo-Hookean parameters

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialParamsContextCreate_NeoHookean(RatelMaterial material, CeedQFunctionContext *ctx)

Build CeedQFunctionContext with Neo-Hookean parameters.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial to setup model params context

  • ctx[out] CeedQFunctionContext for Neo-Hookean parameters

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialParamsSmootherDataSetup_NeoHookean(RatelMaterial material)

Setup data for CeedQFunctionContext for smoother with Neo-Hookean parameters.

Collective across MPI processes.

Parameters:
  • material[inout] RatelMaterial to setup model params context

Returns:

An error code: 0 - success, otherwise - failure

static PetscErrorCode RatelCeedParamsContextCreate_Ogden(RatelMaterial material, CeedScalar nu, CeedScalar *m, CeedScalar *alpha, PetscInt num_ogden_parameters, CeedScalar rho, CeedQFunctionContext *ctx)

Set CeedQFunctionContext data and register fields for Ogden parameters.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial to setup params context

  • nu[in] Poisson’s ratio

  • m[in] Array of material Properties for m

  • alpha[in] Array of material Properties for alpha

  • num_ogden_parameters[in] Number of parameters for Ogden model (Length of alpha=m)

  • rho[in] Density for scaled mass matrix

  • ctx[out] CeedQFunctionContext for Ogden parameters

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialParamsContextCreate_Ogden(RatelMaterial material, CeedQFunctionContext *ctx)

Build CeedQFunctionContext for Ogden parameters.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial to setup params context

  • ctx[out] CeedQFunctionContext for Ogden parameters

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialParamsSmootherDataSetup_Ogden(RatelMaterial material)

Setup data for CeedQFunctionContext for smoother with Ogden parameters.

Collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

static PetscErrorCode RatelCeedParamsContextCreate_PlasticityLinear(RatelMaterial material, CeedScalar hardening_A, CeedScalar yield_stress, CeedQFunctionContext *ctx)

Set CeedQFunctionContext data and register fields for linear plasticity parameters.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial to setup model params context

  • hardening_A[in] Hardening factor

  • yield_stress[in] Yield stress

  • ctx[out] CeedQFunctionContext for linear plasticity parameters

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialParamsContextCreate_PlasticityLinear(RatelMaterial material, CeedQFunctionContext *ctx)

Build CeedQFunctionContext with linear plasticity parameters.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial to setup model params context

  • ctx[out] CeedQFunctionContext for linear plasticity parameters

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialParamsSmootherDataSetup_PlasticityLinear(RatelMaterial material)

Setup data for CeedQFunctionContext for smoother with linear plasticity parameters.

Collective across MPI processes.

Parameters:
  • material[inout] RatelMaterial to setup model params context

Returns:

An error code: 0 - success, otherwise - failure

static PetscErrorCode RatelCeedParamsContextCreate_PoroElasticityLinear(RatelMaterial material, CeedScalar rho, CeedScalar lambda_d, CeedScalar mu_d, CeedScalar bulk_d, CeedScalar bulk_s, CeedScalar bulk_f, CeedScalar phi, CeedScalar eta_f, CeedScalar varkappa_0, CeedInt sign_pp, CeedQFunctionContext *ctx)

Set CeedQFunctionContext data and register fields for Linear Poroelasticity parameters.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial to setup model params context

  • rho[in] Density for scaled mass matrix

  • lambda_d[in] First Lame parameter for drained state

  • mu_d[in] Shear Modulus for drained state

  • bulk_d[in] Bulk Modulus for drained state

  • bulk_s[in] Bulk Modulus for solid

  • bulk_f[in] Bulk Modulus for fluid

  • phi[in] Porosity

  • eta_f[in] Fluid viscosity

  • varkappa_0[in] Intrinsic Permeability

  • sign_pp[in] Sign to use in pp block

  • ctx[out] CeedQFunctionContext for Linear Poroelasticity parameters

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialParamsContextCreate_PoroElasticityLinear(RatelMaterial material, CeedQFunctionContext *ctx)

Build CeedQFunctionContext with Linear Poroelasticity parameters.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial to setup model params context

  • ctx[out] CeedQFunctionContext for Linear Poroelasticity parameters

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialParamsSmootherDataSetup_PoroElasticityLinear(RatelMaterial material)

Setup data for CeedQFunctionContext for smoother with Linear Poroelasticity parameters.

Collective across MPI processes.

Parameters:
  • material[inout] RatelMaterial to setup model params context

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_PlasticityLinear(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for linear plasticity at finite strain in initial configuration.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_PlasticityLinear(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register linear plasticity at finite strain in initial configuration model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_PoroElasticityLinear(Ratel ratel, RatelMaterial material)

Create RatelMaterial model data for linear elasticity.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModel_PoroElasticityLinear(Ratel ratel, const char *cl_argument, PetscFunctionList *material_create_functions)

Register mixed linear elastic model.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • cl_argument[in] Command line argument to use for model

  • material_create_functions[out] PETSc function list for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_FEM(Ratel ratel, RatelMaterial material)

Create a RatelMaterial object for a finite element model.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelSolutionDMSetup_FEM(Ratel ratel, DM *dm_solution)

Setup base and fine grid DM

Parameters:
  • ratel[inout] Ratel context

  • dm_solution[out] Fine grid FEM DM

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelEnergyDMSetup_FEM(Ratel ratel, DM *dm_energy)

Setup strain energy computation DM

Parameters:
  • ratel[inout] Ratel context

  • dm_energy[out] Strain energy DM

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelDiagnosticDMsSetup_FEM(Ratel ratel, DM *dm_diagnostic, PetscInt *num_sub_dms_diagnostic, IS **is_sub_dms_diagnostic, DM **sub_dms_diagnostic)

Setup diagnostic values DM objects.

Parameters:
  • ratel[inout] Ratel context

  • dm_diagnostic[out] Diagnostic value super DM

  • num_sub_dms_diagnostic[out] Number of diagnostic value sub DM

  • is_sub_dms_diagnostic[out] Index sets for diagnostic value sub DM

  • sub_dms_diagnostic[out] Diagnostic value sub DM

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelSurfaceForceCellToFaceDMSetup_FEM(Ratel ratel, DM *dm_surface_force)

Setup surface force DM

Collective across MPI processes.

Parameters:
  • ratel[inout] Ratel context

  • dm_surface_force[out] Surface force DM

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelDMSetupByOrder_FEM(Ratel ratel, PetscBool setup_boundary, PetscBool setup_faces, PetscInt *orders, PetscInt coord_order, PetscBool setup_coords, PetscInt q_extra, CeedInt num_fields, const CeedInt *field_sizes, const char **field_names, const char **component_names, DM dm)

Setup DM with FE space of appropriate degree.

Parameters:
  • ratel[in] Ratel context

  • setup_boundary[in] Flag to add Dirichlet boundary

  • setup_faces[in] Flag to setup face geometry

  • orders[in] Polynomial orders of field

  • coord_order[in] Polynomial order of coordinate basis, or RATEL_DECIDE for default

  • setup_coords[in] Flag to setup coordinate spaces

  • q_extra[in] Additional quadrature order, or RATEL_DECIDE for default

  • num_fields[in] Number of fields in solution vector

  • field_sizes[in] Array of number of components for each field

  • field_names[in] Names of fields in RatelMaterial

  • component_names[in] Names of components in RatelMaterial

  • dm[out] DM to setup

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupVolumeQData_FEM(RatelMaterial material, const char *label_name, PetscInt label_value, CeedElemRestriction *restriction, CeedVector *q_data)

Compute CeedOperator volumetric QData for RatelMaterial.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • label_name[in] DMPlex label name for volume

  • label_value[in] DMPlex label value for volume

  • restriction[out] CeedElemRestriction for QData

  • q_data[out] CeedVector holding QData

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupSurfaceGradientQData_FEM(RatelMaterial material, DM dm, const char *label_name, PetscInt label_value, CeedElemRestriction *restriction, CeedVector *q_data)

Compute CeedOperator surface gradient QData for RatelMaterial.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • dm[in] DMPlex grid

  • label_name[in] DMPlex label name for surface

  • label_value[in] DMPlex label value for surface

  • restriction[out] CeedElemRestriction for QData

  • q_data[out] CeedVector holding QData

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupResidualSuboperators_FEM(RatelMaterial material, CeedOperator op_residual_u, CeedOperator op_residual_ut, CeedOperator op_residual_utt)

Setup Residual CeedOperator for RatelMaterial.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • op_residual_u[out] Composite residual u term CeedOperator to add RatelMaterial suboperator

  • op_residual_ut[out] Composite residual u_t term CeedOperator to add RatelMaterial suboperator

  • op_residual_utt[out] Composite residual u_tt term CeedOperator to add RatelMaterial suboperator

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupJacobianSuboperator_FEM(RatelMaterial material, CeedOperator op_residual_u, CeedOperator op_jacobian)

Setup Jacobian CeedOperator for RatelMaterial.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • op_residual_u[out] Composite residual u term CeedOperator

  • op_jacobian[out] Composite Jacobian CeedOperator to add RatelMaterial suboperator

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupJacobianMultigridLevel_FEM(RatelMaterial material, DM dm_level, CeedVector m_loc, CeedOperator sub_op_jacobian_fine, CeedOperator op_jacobian_coarse, CeedOperator op_prolong, CeedOperator op_restrict)

Setup multigrid level CeedOperator for RatelMaterial.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • dm_level[in] DMPlex for multigrid level to setup

  • m_loc[in] CeedVector holding multiplicity

  • sub_op_jacobian_fine[in] Fine grid Jacobian CeedOperator

  • op_jacobian_coarse[inout] Composite Jacobian CeedOperator to add RatelMaterial suboperators

  • op_prolong[inout] Composite prolongation CeedOperator to add RatelMaterial suboperators

  • op_restrict[inout] Composite restriction CeedOperator to add RatelMaterial suboperators

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupJacobianBlockSuboperator_FEM(RatelMaterial material, DM dm, PetscInt field, CeedOperator op_jacobian_block)

Setup Block Preconditioner CeedOperator for RatelMaterial.

Parameters:
  • material[in] RatelMaterial context

  • dm[in] DM for the given field

  • field[in] Field that we want to apply pc

  • op_jacobian_block[out] CeedOperator created for the given field

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupStrainEnergySuboperator_FEM(RatelMaterial material, DM dm_energy, CeedOperator op_strain_energy)

Setup strain energy CeedOperator for RatelMaterial.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • dm_energy[in] DM for strain energy computation

  • op_strain_energy[out] Composite strain energy CeedOperator to add RatelMaterial suboperator

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupDiagnosticSuboperators_FEM(RatelMaterial material, DM dm_projected_diagnostic, DM dm_dual_diagnostic, CeedOperator op_mass_diagnostic, CeedOperator op_projected_diagnostic, CeedOperator op_dual_diagnostic, CeedOperator op_dual_nodal_scale)

Setup diagnostic value CeedOperator for RatelMaterial.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • dm_projected_diagnostic[in] DM for projected diagnostic value computation

  • dm_dual_diagnostic[in] DM for dual space diagnostic value computation

  • op_mass_diagnostic[out] Composite diagnostic value projection CeedOperator to add RatelMaterial suboperator

  • op_projected_diagnostic[out] Composite projected diagnostic value CeedOperator to add RatelMaterial suboperator

  • op_dual_diagnostic[out] Composite dual space diagnostic value CeedOperator to add RatelMaterial suboperator

  • op_dual_nodal_scale[out] Composite dual space nodal scale CeedOperator to add RatelMaterial suboperator

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupSurfaceForceCellToFaceSuboperators_FEM(RatelMaterial material, DM dm_surface_force, CeedOperator ops_surface_force[])

Setup surface force CeedOperator for RatelMaterial.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • dm_surface_force[in] DM for surface force computation

  • ops_surface_force[out] Array of composite surface force CeedOperator to add RatelMaterial suboperator for each face

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupSurfaceCentroidSuboperators_FEM(RatelMaterial material, DM dm_surface_displacement, CeedOperator ops_surface_centroid[])

Setup surface centroid CeedOperators for RatelMaterial

Parameters:
  • material[in] RatelMaterial context

  • dm_surface_displacement[in] DM for surface displacement computation

  • ops_surface_centroid[out] Composite surface centroid CeedOperators to add RatelMaterial suboperator

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupMMSErrorSuboperator_FEM(RatelMaterial material, CeedOperator op_mms_error)

Setup MMS error CeedOperator for RatelMaterial

Parameters:
  • material[in] RatelMaterial context

  • op_mms_error[out] Composite MMS error CeedOperator to add RatelMaterial suboperator

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupForcingSuboperator_FEM(RatelMaterial material, CeedOperator op_residual)

Add forcing term to residual u term operator.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • op_residual[out] Composite residual u term CeedOperator to add RatelMaterial sub-operator

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupForcingEnergySuboperator_FEM(RatelMaterial material, DM dm_energy, CeedOperator op_external_energy)

Add forcing energy to external energy operator.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • dm_energy[in] DM for external energy computation

  • op_external_energy[out] Composite external energy CeedOperator to add energy of body force sub-operators

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate(Ratel ratel, const char *material_name, RatelMaterial *material)

Create a RatelMaterial object.

Collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • material_name[in] Material name for command line prefix

  • material[out] Address to store newly created RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialView(RatelMaterial material, PetscViewer viewer)

View a RatelMaterial object.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial to view

  • viewer[in] Visualization context

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelModelDataView(Ratel ratel, RatelModelData model_data, CeedQFunctionContext context, PetscViewer viewer)

View material model parameters.

Collective across MPI processes.

Parameters:
  • ratel[in] Ratel object for error handling

  • model_data[in] RatelModelData to view

  • context[in] Initialized CeedQFunctionContext with parameter values, or NULL

  • viewer[in] PetscViewer to print to

PetscErrorCode RatelModelParameterDataView(Ratel ratel, RatelModelParameterData param_data, CeedQFunctionContext context, PetscViewer viewer)

View material model parameters.

Collective across MPI processes.

Parameters:
  • ratel[in] Ratel object for error handling

  • param_data[in] RatelModelParameterData to view

  • context[in] Initialized CeedQFunctionContext with parameter values, or NULL

  • viewer[in] PetscViewer to print to

PetscErrorCode RatelMaterialDestroy(RatelMaterial *material)

Destroy a RatelMaterial object.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetActiveFieldSizes(RatelMaterial material, CeedInt *num_active_fields, const CeedInt **active_field_sizes)

Get number of components for a RatelMaterial object.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetPointFields(RatelMaterial material, CeedInt *num_point_fields, const CeedInt **point_field_sizes, const char ***point_field_names)

Get point fields for a RatelMaterial object.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • num_point_fields[out] Number of point fields in RatelMaterial, or NULL

  • point_field_sizes[in] Sizes of each point field in RatelMaterial, or NULL

  • point_field_names[in] Names of each point field in RatelMaterial, or NULL

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetNumDiagnosticComponents(RatelMaterial material, CeedInt *num_components_projected, CeedInt *num_components_dual)

Get number of diagnostic components for a RatelMaterial object.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • num_components_projected[out] Number of projected diagnostic components in RatelMaterial

  • num_components_dual[out] Number of dual space diagnostic components in RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetNumStateComponents(RatelMaterial material, CeedInt *num_comp_state)

Get number of state components for a RatelMaterial object.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetActiveFieldNames(RatelMaterial material, const char ***active_field_names, const char ***active_component_names)

Get active field names for a RatelMaterial object.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetDiagnosticComponentNames(RatelMaterial material, const char ***projected_component_names, const char ***dual_component_names)

Get diagnostic component names for a RatelMaterial object.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • projected_component_names[out] Names of projected diagnostic component in RatelMaterial

  • dual_component_names[out] Names of dual space diagnostic component in RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetVolumeLabelName(RatelMaterial material, const char **label_name)

Get volume label name for a RatelMaterial object.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetVolumeLabelValues(RatelMaterial material, PetscInt *num_label_values, PetscInt **label_values)

Get volume label values for a RatelMaterial object.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetVolumeLabelValue(RatelMaterial material, PetscInt label_value)

Set volume label values for a RatelMaterial object.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetForcingType(RatelMaterial material, RatelForcingType *forcing_type)

Get RatelForcingType for a RatelMaterial object.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetMaterialName(RatelMaterial material, const char **material_name)

Get material name for a RatelMaterial, or NULL if none set.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • material_name[out] char array holding model name

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetModelName(RatelMaterial material, const char **model_name)

Get model name for a RatelMaterial.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • model_name[out] char array holding model name

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetSurfaceGradientLabelName(RatelMaterial material, PetscInt dm_face, const char **label_name)

Get label name for solution DM for a RatelMaterial by face number.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • dm_face[in] DMPlex face number

  • label_name[out] char array holding label name

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetSurfaceGradientDiagnosticLabelName(RatelMaterial material, PetscInt dm_face, const char **label_name)

Get label name for diagnostic DM for a RatelMaterial by face number.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • dm_face[in] DMPlex face number

  • label_name[out] char array holding label name

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetSurfaceGradientOperatorFaceLabelAndValue(RatelMaterial material, CeedOperator op, DMLabel *face_domain_label, PetscInt *face_domain_value)

Get domain label and domain value for solution DM for a RatelMaterial from CeedOperator context.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • op[in] CeedOperator with "face id" and "face domain value" fields

  • face_domain_label[out] DMPlex label corresponding to face domain

  • face_domain_value[out] Stratum value

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetInitialRandomScaling(RatelMaterial material, PetscScalar *initial_random_scaling)

Get scaling factor for initial random noise to add to zero initial condition for material model.

0.0 indicates that the material model does not require initial random noise for inital condition.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • initial_random_scaling[out] Scaling factor for initial random noise to add to zero initial condition for material model

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialHasMMS(RatelMaterial material, PetscBool *has_mms)

Determine if RatelMaterial has MMS solution.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetCLPrefix(RatelMaterial material, char **cl_prefix)

Get command line option prefix for a RatelMaterial object.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetCLMessage(RatelMaterial material, char **cl_message)

Get command line option message for a RatelMaterial object.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreateOperatorName(RatelMaterial material, const char *base_name, char **operator_name)

Build CeedOperator name for RatelMaterial.

Note: Caller is responsible for freeing the allocated name string PetscFree().

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • base_name[in] String holding base name for operator

  • operator_name[out] String holding operator name for RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetSolutionData(RatelMaterial material, CeedOperator op_residual_u, CeedInt *num_active_fields, CeedElemRestriction **restrictions, CeedBasis **bases)

Get CeedElemRestriction and CeedBasis objects corresponding to residual evaluation.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • op_residual_u[in] Composite residual u term CeedOperator

  • num_active_fields[out] Number of active fields in residual evaluation

  • restrictions[out] CeedElemRestriction objects corresponding to residual evaluation

  • bases[out] CeedBasis objects corresponding to residual evaluation

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetStoredData(RatelMaterial material, CeedOperator op_residual_u, CeedElemRestriction *restriction, CeedVector *values)

Get CeedElemRestriction and CeedVector objects corresponding to stored data from residual evaluation.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • op_residual_u[in] Composite residual u term CeedOperator

  • restriction[out] CeedElemRestriction object corresponding to stored data from residual evaluation

  • values[out] CeedVector object corresponding to stored data from residual evaluation

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetInitialStateData(RatelMaterial material, CeedOperator op_residual_u, CeedElemRestriction *restriction, CeedVector *values)

Get CeedElemRestriction and CeedVector objects corresponding to state data prior to residual evaluation.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • op_residual_u[in] Composite residual u term CeedOperator

  • restriction[out] CeedElemRestriction object corresponding to state data from residual evaluation

  • values[out] CeedVector object corresponding to state data from residual evaluation

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetStateData(RatelMaterial material, CeedOperator op_residual_u, CeedElemRestriction *restriction, CeedVector *values)

Get CeedElemRestriction and CeedVector objects corresponding to state data from residual evaluation.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • op_residual_u[in] Composite residual u term CeedOperator

  • restriction[out] CeedElemRestriction object corresponding to state data from residual evaluation

  • values[out] CeedVector object corresponding to state data from residual evaluation

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetPointData(RatelMaterial material, CeedOperator op_residual_u, CeedInt *num_point_fields, CeedElemRestriction **restrictions, CeedVector **values)

Get CeedElemRestriction and CeedVector objects corresponding to point data from residual evaluation.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • op_residual_u[in] Composite residual u term CeedOperator

  • num_point_fields[out] Number of point fields defined for material

  • restrictions[out] CeedElemRestriction objects for point fields from residual operator

  • values[out] CeedVector objects for point fields from residual operator

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetOperatorName(RatelMaterial material, const char *base_name, CeedOperator op)

Build CeedOperator name for RatelMaterial.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • base_name[in] String holding base name for operator

  • op[inout] CeedOperator to set the name for

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetVolumeQData(RatelMaterial material, CeedElemRestriction *restriction, CeedVector *q_data)

Get CeedOperator volumetric QData for RatelMaterial.

Uses the material SetupVolumeQData function to set up the QData.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • restriction[out] CeedElemRestriction for QData

  • q_data[out] CeedVector holding QData

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetMeshVolumeQData(RatelMaterial material, CeedElemRestriction *restriction, CeedVector *q_data)

Get CeedOperator volumetric QData for RatelMaterial.

Uses RatelMaterialGetVolumeQData_FEM to set up the QData.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • restriction[out] CeedElemRestriction for QData

  • q_data[out] CeedVector holding QData

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetSurfaceGradientQData(RatelMaterial material, PetscInt dm_face, PetscInt orientation, CeedElemRestriction *restriction, CeedVector *q_data)

Get CeedOperator surface gradient QData for RatelMaterial.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • dm_face[in] DMPlex face number

  • orientation[in] Face orientation number, giving DMLabel value

  • restriction[out] CeedElemRestriction for QData

  • q_data[out] CeedVector holding QData

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetSurfaceGradientDiagnosticQData(RatelMaterial material, DM dm, PetscInt dm_face, PetscInt orientation, CeedElemRestriction *restriction, CeedVector *q_data)

Get CeedOperator diagnostic surface gradient QData for RatelMaterial.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • dm[in] DMPlex to use for diagnostic QData

  • dm_face[in] DMPlex face number

  • orientation[in] Face orientation number, giving DMLabel value

  • restriction[out] CeedElemRestriction for QData

  • q_data[out] CeedVector holding QData

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupResidualSuboperators(RatelMaterial material, CeedOperator op_residual_u, CeedOperator op_residual_ut, CeedOperator op_residual_utt)

Setup residual CeedOperator for RatelMaterial.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • op_residual_u[out] Composite residual u term CeedOperator to add RatelMaterial suboperator

  • op_residual_ut[out] Composite residual u_t term CeedOperator to add RatelMaterial suboperator

  • op_residual_utt[out] Composite residual u_tt term CeedOperator to add RatelMaterial suboperator

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupJacobianSuboperator(RatelMaterial material, CeedOperator op_residual_u, CeedOperator op_jacobian)

Setup Jacobian CeedOperator for RatelMaterial.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • op_residual_u[in] Composite residual u term CeedOperator

  • op_jacobian[out] Composite Jacobian CeedOperator to add RatelMaterial suboperator

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupJacobianBlockSuboperator(RatelMaterial material, DM dm, PetscInt field, CeedOperator op_jacobian_block)

Setup Block Preconditioner CeedOperator for RatelMaterial.

Parameters:
  • material[in] RatelMaterial context

  • dm[in] DM for the given field

  • field[in] Field that we wan to apply pc

  • op_jacobian_block[out] CeedOperator created for the given field

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetBoundaryJacobianMultigridInfo(RatelMaterial material, CeedOperator op_jacobian, PetscInt old_num_sub_operators, PetscInt new_num_sub_operators, RatelMaterialSetupMultigridLevelFunction setup_multigrid_level)

Set Jacobian multiplicity skip indices, multigrid level function, and smoother indices for a boundary for a RatelMaterial.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • op_jacobian[in] Jacobian CeedOperator

  • old_num_sub_operators[in] Number of suboperators in Jacobian CeedOperator before adding boundary suboperators

  • new_num_sub_operators[in] Number of suboperators in Jacobian CeedOperator after adding boundary suboperators

  • setup_multigrid_level[in] RatelMaterialSetupMultigridLevelFunction to use for setting up multigrid level for boundary suboperators

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupPlatenSuboperators(RatelMaterial material, CeedOperator op_residual_u, CeedVector u_dot_loc, CeedOperator op_jacobian)

Setup residual and Jacobian platen boundary condition CeedOperator for RatelMaterial.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • op_residual_u[out] Composite residual u term CeedOperator to add RatelMaterial suboperator

  • u_dot_loc[out] CeedVector for passive input velocity field

  • op_jacobian[out] Composite Jacobian CeedOperator to add RatelMaterial suboperator

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupMultigridLevel(RatelMaterial material, DM dm_level, CeedVector m_loc, CeedOperator op_jacobian_fine, CeedOperator op_jacobian_coarse, CeedOperator op_prolong, CeedOperator op_restrict)

Setup multigrid level CeedOperator for RatelMaterial.

Parameters:
  • material[in] RatelMaterial context

  • dm_level[in] DMPlex for multigrid level to setup

  • m_loc[in] CeedVector holding multiplicity

  • op_jacobian_fine[in] Composite Jacobian CeedOperator holding fine grid suboperators

  • op_jacobian_coarse[inout] Composite Jacobian CeedOperator to add RatelMaterial suboperators

  • op_prolong[inout] Composite prolongation CeedOperator to add RatelMaterial suboperators

  • op_restrict[inout] Composite restriction CeedOperator to add RatelMaterial suboperators

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetJacobianSmootherContext(RatelMaterial material, PetscBool set_or_unset, CeedOperator op_jacobian, PetscBool *was_set)

Set smoother contexts for Jacobian operators for RatelMaterial.

Not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • set_or_unset[in] Boolean flag to set (PETSC_TRUE) or unset (PETSC_FALSE) the smoother context

  • op_jacobian[inout] Composite Jacobian CeedOperator to update

  • was_set[out] Boolean flag indicating if any smoother context was set.

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialAcceptState(RatelMaterial material, CeedOperator op_residual)

Accept material state update after TS update.

not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • op_residual[inout] Composite residual CeedOperator to update

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupStrainEnergySuboperator(RatelMaterial material, DM dm_energy, CeedOperator op_strain_energy)

Setup strain energy CeedOperator for RatelMaterial.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • dm_energy[in] DM for strain energy computation

  • op_strain_energy[out] Composite strain energy CeedOperator to add RatelMaterial suboperator

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupDiagnosticSuboperators(RatelMaterial material, DM dm_projected_diagnostic, DM dm_dual_diagnostic, CeedOperator op_mass_diagnostic, CeedOperator op_projected_diagnostic, CeedOperator op_dual_diagnostic, CeedOperator op_dual_nodal_scale)

Setup diagnostic value CeedOperator for RatelMaterial.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • dm_projected_diagnostic[in] DM for projected diagnostic value computation

  • dm_dual_diagnostic[in] DM for dual space diagnostic value computation

  • op_mass_diagnostic[out] Composite diagnostic value projection CeedOperator to add RatelMaterial suboperator

  • op_projected_diagnostic[out] Composite projected diagnostic value CeedOperator to add RatelMaterial suboperator

  • op_dual_diagnostic[out] Composite dual space diagnostic value CeedOperator to add RatelMaterial suboperator

  • op_dual_nodal_scale[out] Composite dual space nodal scale CeedOperator to add RatelMaterial suboperator

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupSurfaceForceCellToFaceSuboperators(RatelMaterial material, DM dm_surface_force, CeedOperator *ops_surface_force)

Setup surface force CeedOperator for RatelMaterial.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • dm_surface_force[in] DM for surface force computation

  • ops_surface_force[out] Composite surface force CeedOperators to add RatelMaterial suboperator

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupMMSErrorSuboperator(RatelMaterial material, CeedOperator op_mms_error)

Setup MMS error CeedOperator for RatelMaterial.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • op_mms_error[out] Composite MMS error CeedOperator to add RatelMaterial suboperator

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelRegisterModels(Ratel ratel, PetscFunctionList *material_create_functions)

Register setup functions for models.

Collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • material_create_functions[out] Function list for creating RatelMaterial

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelModelDataVerifyRelativePath(Ratel ratel, RatelModelData model_data)

Verify all CeedQFunction source paths are relative to Ratel JiT root directory.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • model_data[inout] Model data to check CeedQFunction source paths

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelModelParameterDataGetDefaultValue_Scalar(Ratel ratel, RatelModelParameterData params_data, const char *name, CeedScalar *value)

Get the default scalar value from model parameter data.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • params_data[in] Model parameter data to check

  • name[in] Parameter name

  • value[out] Variable to store default scalar value

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelModelParameterDataGetDefaultValue_Int(Ratel ratel, RatelModelParameterData params_data, const char *name, CeedInt *value)

Get the default int value from model parameter data.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • params_data[in] Model parameter data to check

  • name[in] Parameter name

  • value[out] Variable to store default int value

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelModelParameterDataGetDefaultValue_Bool(Ratel ratel, RatelModelParameterData params_data, const char *name, PetscBool *value)

Get the default bool value from model parameter data.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • params_data[in] Model parameter data to check

  • name[in] Parameter name

  • value[out] Variable to store default int value

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelModelParameterDataRegisterContextFields(Ratel ratel, RatelModelParameterData parameters, CeedQFunctionContext ctx)

Register model parameters as fields in a CeedQFunctionContext.

Not collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • parameters[in] Parameters to register

  • ctx[out] CeedQFunctionContext to register parameters in

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialCreate_MPM(Ratel ratel, RatelMaterial material)

Create a RatelMaterial object for a material point method (MPM) model.

Collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMPMOptionsCreateFromOptions(Ratel ratel, RatelMPMOptions *options)

Read options for a material point method (MPM) model from the command line.

Collective across MPI processes.

See also

RatelDMSetup_MPM(), RatelDMInitalizePointLocations_MPM()

Note

The caller is responsible for destroying options with PetscFree().

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialGetMPMContext(RatelMaterial material, RatelMPMContext *mpm)

Get the RatelMPMContext for a RatelMaterial, creating it if necessary.

Collective across MPI processes.

Note

`mpm` is a borrowed reference and should not be destroyed by the caller.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMPMContextCreate(Ratel ratel, CeedVector x_ref_points, CeedElemRestriction restriction_x_points, RatelMPMContext *mpm)

Create a RatelMPMContext object.

Collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • x_ref_points[in] CeedVector holding reference coordinates

  • restriction_x_points[in] CeedElemRestriction for points

  • mpm[out] Created RatelMPMContext context

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMPMContextDestroy(RatelMPMContext *mpm)

Destroy a RatelMPMContext object.

Collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMPMContextGetPoints(RatelMPMContext mpm, CeedVector *x_ref_points)

Get the reference coordinates for points in a RatelMPMContext.

Not collective across MPI processes.

Parameters:
  • mpm[in] RatelMPMContext context

  • x_ref_points[out] CeedVector holding reference coordinates

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMPMContextGetElemRestrictionPoints(RatelMPMContext mpm, CeedElemRestriction *restriction_x_points)

Get the CeedElemRestriction for points in a RatelMPMContext.

Not collective across MPI processes.

Parameters:
  • mpm[in] RatelMPMContext context

  • restriction_x_points[out] CeedElemRestriction for points

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMPMContextGetNumPointsLocal(RatelMPMContext mpm, CeedSize *num_points_local)

Get the number of points on this process.

Not collective across MPI processes.

Parameters:
  • mpm[in] RatelMPMContext context

  • num_points_local[out] Number of points on this process

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMPMContextCeedElemRestrictionCreateAtPoints(RatelMPMContext mpm, CeedInt num_comp, CeedElemRestriction *restriction)

Create a CeedElemRestriction for a field at the points in a RatelMPMContext.

Collective across MPI processes.

Parameters:
  • mpm[in] RatelMPMContext context

  • num_comp[in] Number of components

  • restriction[out] CeedElemRestriction for QData

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMPMContextCeedOperatorSetPoints(RatelMPMContext mpm, CeedOperator op)

Call CeedOperatorAtPointsSetPoints() for a CeedOperator using a RatelMPMContext.

Not collective across MPI processes.

Parameters:
  • mpm[in] RatelMPMContext context

  • op[in] CeedOperator to set points for

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupMeshToSwarmSuboperators_MPM(RatelMaterial material, CeedInt field_index, CeedOperator op_mesh_to_swarm)

Interpolate mesh field to material points, updating the DMSwarm with the result.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • field_index[in] Index of field to interpolate

  • op_mesh_to_swarm[in] Composite CeedOperator for mesh to swarm interpolation

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupMigratePointsSuboperator(RatelMaterial material, CeedOperator op_migrate_points)

Setup the suboperator for migrating points in a RatelMaterial.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • op_migrate_points[in] Composite CeedOperator for migrating points

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMPMMeshToSwarm(Ratel ratel, Vec delta_U, PetscReal time)

Interpolate mesh fields to material points, updating the DMSwarm with the result.

Collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • delta_U[in] Global mesh solution vector

  • time[in] Current time

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupSwarmToMeshSuboperators_MPM(RatelMaterial material, CeedOperator op_swarm_to_mesh, CeedOperator op_mass)

Add material suboperators for swarm-to-mesh projection.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • op_swarm_to_mesh[inout] Composite CeedOperator for swarm to mesh projection

  • op_mass[inout] Composite CeedOperator for mass matrix

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMPMSwarmToMesh(Ratel ratel, Vec U)

Project material point quantities to mesh fields.

Collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • U[out] Global mesh solution vector

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMPMSetVolume(Ratel ratel)

Set the volume of each material point in the DMSwarm.

Collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

Returns:

An error code: 0 - success, otherwise - failure

static PetscErrorCode RatelMaterialSetupUpdateVolumeSuboperator_MPM(RatelMaterial material, CeedVector volume_ceed, CeedOperator op_volume)

Compute CeedOperator for updating MPM volume.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • volume_ceed[in] CeedVector holding previous volume

  • op_volume[out] CeedOperator for updating volume

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMPMUpdateVolume(Ratel ratel, Vec U, PetscReal time)

Update MPM volume.

Collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • U[in] Global mesh solution vector

  • time[in] Current time

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelSolutionDMSetup_MPM(Ratel ratel, DM *dm_solution)

Setup base (fine-grain) DMs, both DMSwarm and DMPlex, for a material point method (MPM) model.

Collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • dm_solution[out] DM for the solution

PetscErrorCode RatelDMSetupByOrder_MPM(Ratel ratel, RatelMPMOptions mpm_options, CeedInt num_fields, const CeedInt *field_sizes, const char **field_names, DM dm)

Setup DMSwarm with material points and point fields.

Parameters:
  • ratel[in] Ratel context

  • mpm_options[in] RatelMPMOptions context

  • num_fields[in] Number of fields in solution vector

  • field_sizes[in] Array of number of components for each field

  • field_names[in] Names of fields in RatelMaterial

  • dm[out] DM to setup

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialReset_MPM(RatelMaterial material)

Reset material point operators and data.

Collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMPMMigrate(Ratel ratel, Vec delta_U, PetscReal time)

Project solution to points and migrate, then reset material point method (MPM) context and data.

Collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

  • delta_U[in] Global mesh solution vector

  • time[in] Current time

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMPMSetPointFields(Ratel ratel)

Set material point fields.

Collective across MPI processes.

Parameters:
  • ratel[in] Ratel context

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupVolumeQData_MPM(RatelMaterial material, const char *label_name, PetscInt label_value, CeedElemRestriction *restriction, CeedVector *q_data)

Compute CeedOperator volumetric QData for RatelMaterial.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • label_name[in] DMPlex label name for volume

  • label_value[in] DMPlex label value for volume

  • restriction[out] CeedElemRestriction for QData

  • q_data[out] CeedVector holding QData

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupSetPointFieldsSuboperator_MPM(RatelMaterial material, CeedOperator op_set_point_fields)

Setup material properties for RatelMaterial by writing values from material context to DMSwarm fields.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • op_set_point_fields[in] CeedOperator to setup

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetPointFieldsVectors_MPM(RatelMaterial material)

Set point fields vectors for RatelMaterial using DMSwarm field pointers.

Not collective across MPI processes.

Parameters:
Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupResidualSuboperators_MPM(RatelMaterial material, CeedOperator op_residual_u, CeedOperator op_residual_ut, CeedOperator op_residual_utt)

Setup Residual CeedOperator for RatelMaterial.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • op_residual_u[out] Composite residual u term CeedOperator to add RatelMaterial suboperator

  • op_residual_ut[out] Composite residual u_t term CeedOperator to add RatelMaterial suboperator

  • op_residual_utt[out] Composite residual u_tt term CeedOperator to add RatelMaterial suboperator

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupJacobianSuboperator_MPM(RatelMaterial material, CeedOperator op_residual_u, CeedOperator op_jacobian)

Setup Jacobian CeedOperator for RatelMaterial.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • op_residual_u[out] Composite residual u term CeedOperator

  • op_jacobian[out] Composite Jacobian CeedOperator to add RatelMaterial suboperator

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupJacobianBlockSuboperator_MPM(RatelMaterial material, DM dm, PetscInt field, CeedOperator op_jacobian_block)

Setup Block Preconditioner CeedOperator for RatelMaterial.

Parameters:
  • material[in] RatelMaterial context

  • dm[in] DM for the given field

  • field[in] Field that we wan to apply pc

  • op_jacobian_block[out] CeedOperator created for the given field

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupMMSErrorSuboperator_MPM(RatelMaterial material, CeedOperator op_mms_error)

Setup MMS error CeedOperator for RatelMaterial

Parameters:
  • material[in] RatelMaterial context

  • op_mms_error[out] Composite MMS error CeedOperator to add RatelMaterial suboperator

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupForcingSuboperator_MPM(RatelMaterial material, CeedOperator op_residual)

Add point-wise forcing term to residual u term operator.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • op_residual[out] Composite residual u term CeedOperator to add RatelMaterial sub-operator

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupForcingEnergySuboperator_MPM(RatelMaterial material, DM dm_energy, CeedOperator op_external_energy)

Add point-wise forcing energy to external energy operator.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • dm_energy[in] DM for external energy computation

  • op_external_energy[out] Composite external energy CeedOperator to add energy of body force sub-operators

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupStrainEnergySuboperator_MPM(RatelMaterial material, DM dm_energy, CeedOperator op_strain_energy)

Setup strain energy CeedOperator for RatelMaterial, possibly with material parameters at points.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • dm_energy[in] DM for strain energy computation

  • op_strain_energy[out] Composite strain energy CeedOperator to add RatelMaterial suboperator

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialSetupDiagnosticSuboperators_MPM(RatelMaterial material, DM dm_projected_diagnostic, DM dm_dual_diagnostic, CeedOperator op_mass_diagnostic, CeedOperator op_projected_diagnostic, CeedOperator op_dual_diagnostic, CeedOperator op_dual_nodal_scale)

Setup diagnostic value CeedOperator for RatelMaterial, possibly with material parameters at points.

Collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • dm_projected_diagnostic[in] DM for projected diagnostic value computation

  • dm_dual_diagnostic[in] DM for dual space diagnostic value computation

  • op_mass_diagnostic[out] Composite diagnostic value projection CeedOperator to add RatelMaterial suboperator

  • op_projected_diagnostic[out] Composite projected diagnostic value CeedOperator to add RatelMaterial suboperator

  • op_dual_diagnostic[out] Composite dual space diagnostic value CeedOperator to add RatelMaterial suboperator

  • op_dual_nodal_scale[out] Composite dual space nodal scale CeedOperator to add RatelMaterial suboperator

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMaterialAcceptState_MPM(RatelMaterial material, CeedOperator op_residual_u, CeedOperator op_state)

Accept material state update after TS update for MPM.

not collective across MPI processes.

Parameters:
  • material[in] RatelMaterial context

  • op_residual_u[in] Composite residual CeedOperator with old state data

  • op_state[inout] Composite state CeedOperator to update

Returns:

An error code: 0 - success, otherwise - failure

PetscErrorCode RatelMPMAcceptState(Ratel ratel, CeedOperator op_residual)

Accept MPM state update after TS update.

not collective across MPI processes.

Parameters:
  • ratel[in] ratel context

  • op_residual[inout] Composite residual CeedOperator to update

Returns:

An error code: 0 - success, otherwise - failure

RATEL_NUMBER_COMMON_PARAMETERS 3

Number of common model parameters.

RATEL_COMMON_PARAMETER_RHO 0

Index of common parameter rho

RATEL_COMMON_PARAMETER_SHIFT_V 1

Index of common parameter shift_v.

RATEL_COMMON_PARAMETER_SHIFT_A 2

Index of common parameter shift_a.

RATEL_MAX_FIELDS 16

Maximum supported number of fields.

RATEL_MAX_MATERIAL_SIZE 128

Maximum material context size.

Q_DATA_SURFACE_FORCE_GEOMETRY_SIZE 13
Q_DATA_SURFACE_GEOMETRY_SIZE 4
Q_DATA_VOLUMETRIC_GEOMETRY_MPM_SIZE 10
Q_DATA_VOLUMETRIC_SYMMETRIC_GEOMETRY_MPM_SIZE 7
Q_DATA_VOLUMETRIC_SYMMETRIC_GEOMETRY_SIZE 7
Q_DATA_VOLUMETRIC_GEOMETRY_SIZE 10
NUM_COMPONENTS_DIAGNOSTIC_Dual 1
NUM_COMPONENTS_DIAGNOSTIC_Elasticity 16
NUM_COMPONENTS_ELASTICITY_DIAGNOSTIC_Dual 2
FLOPS_Tau_IsochoricMooneyRivlin (FLOPS_Tau_vol + FLOPS_Tau_iso_MooneyRivlin + 3)
FLOPS_S_IsochoricMooneyRivlin (FLOPS_S_iso_MooneyRivlin + FLOPS_S_vol)
FLOPS_dS_IsochoricMooneyRivlin (1 + FLOPS_dS_vol + FLOPS_dS_iso_MooneyRivlin + FLOPS_MatMatMatAddSymmetric)
FLOPS_FdSFTranspose_IsochoricMooneyRivlin (FLOPS_FdSFTranspose_iso_MooneyRivlin + FLOPS_FdSFTranspose_vol + FLOPS_MatMatAddSymmetric)
NUM_COMPONENTS_STATE_IsochoricMooneyRivlinCurrent 0
NUM_COMPONENTS_STORED_IsochoricMooneyRivlinCurrent 17
NUM_ACTIVE_FIELD_EVAL_MODES_IsochoricMooneyRivlinCurrent 1
FLOPS_df1_IsochoricMR_Current   (2 * FLOPS_MatMatMult + FLOPS_Tau_IsochoricMooneyRivlin + FLOPS_FdSFTranspose_IsochoricMooneyRivlin + FLOPS_MatMatAdd)
FLOPS_JACOBIAN_IsochoricMooneyRivlinCurrent (FLOPS_df1_IsochoricMR_Current + FLOPS_dXdxwdetJ)
NUM_COMPONENTS_STATE_IsochoricMooneyRivlinInitial 0
NUM_COMPONENTS_STORED_IsochoricMooneyRivlinInitial 9
NUM_ACTIVE_FIELD_EVAL_MODES_IsochoricMooneyRivlinInitial 1
FLOPS_df1_IsochoricMR_Initial   (FLOPS_MatMatMult + 3 + FLOPS_MatDetAM1 + FLOPS_GreenEulerStrain + FLOPS_CInverse + FLOPS_S_IsochoricMooneyRivlin + \    FLOPS_dS_IsochoricMooneyRivlin + FLOPS_MatMatMultPlusMatMatMult)
FLOPS_JACOBIAN_IsochoricMooneyRivlinInitial (FLOPS_df1_IsochoricMR_Initial + FLOPS_dXdxwdetJ)
FLOPS_Tau_IsochoricNeoHookean (FLOPS_Tau_vol + FLOPS_Tau_iso_NeoHookean + 3)
FLOPS_S_IsochoricNeoHookean (FLOPS_S_iso_NeoHookean + FLOPS_S_vol)
FLOPS_dS_IsochoricNeoHookean (1 + FLOPS_dS_vol + FLOPS_dS_iso_NeoHookean + FLOPS_MatMatMatAddSymmetric)
FLOPS_FdSFTranspose_IsochoricNeoHookean (FLOPS_FdSFTranspose_iso_NeoHookean + FLOPS_FdSFTranspose_vol + FLOPS_MatMatAddSymmetric)
FLOPS_StrainEnergy_IsochoricNeoHookean (FLOPS_V + 9 + FLOPS_J_pow)
NUM_COMPONENTS_STATE_IsochoricNeoHookeanCurrent 0
NUM_COMPONENTS_STORED_IsochoricNeoHookeanCurrent 17
NUM_ACTIVE_FIELD_EVAL_MODES_IsochoricNeoHookeanCurrent 1
FLOPS_df1_IsochoricNH_Current   (2 * FLOPS_MatMatMult + FLOPS_Tau_IsochoricNeoHookean + FLOPS_FdSFTranspose_IsochoricNeoHookean + FLOPS_MatMatAdd)
FLOPS_JACOBIAN_IsochoricNeoHookeanCurrent (FLOPS_df1_IsochoricNH_Current + FLOPS_dXdxwdetJ)
NUM_COMPONENTS_STATE_IsochoricNeoHookeanInitial 0
NUM_COMPONENTS_STORED_IsochoricNeoHookeanInitial 9
NUM_ACTIVE_FIELD_EVAL_MODES_IsochoricNeoHookeanInitial 1
FLOPS_df1_IsochoricNH_Initial   (FLOPS_MatMatMult + 3 + FLOPS_MatDetAM1 + FLOPS_GreenEulerStrain + FLOPS_CInverse + FLOPS_S_IsochoricNeoHookean + FLOPS_dS_IsochoricNeoHookean + \    FLOPS_MatMatMultPlusMatMatMult)
FLOPS_JACOBIAN_IsochoricNeoHookeanInitial (FLOPS_df1_IsochoricNH_Initial + FLOPS_dXdxwdetJ)
FLOPS_Tau_IsochoricOgden (FLOPS_Tau_vol + FLOPS_Tau_iso_Ogden + 3)
FLOPS_S_IsochoricOgden (FLOPS_S_iso_Ogden + FLOPS_S_vol)
FLOPS_dS_IsochoricOgden (1 + FLOPS_dS_vol + FLOPS_dS_iso_Ogden + FLOPS_MatMatMatAddSymmetric)
FLOPS_FdSFTranspose_IsochoricOgden (FLOPS_FdSFTranspose_iso_Ogden + FLOPS_FdSFTranspose_vol + FLOPS_MatMatAddSymmetric)
NUM_COMPONENTS_STATE_IsochoricOgdenCurrent 0
NUM_COMPONENTS_STORED_IsochoricOgdenCurrent 31
NUM_ACTIVE_FIELD_EVAL_MODES_IsochoricOgdenCurrent 1
FLOPS_df1_IsochoricOgden_Current   (2 * FLOPS_MatMatMult + FLOPS_VecVecCross + FLOPS_Tau_IsochoricOgden + FLOPS_FdSFTranspose_IsochoricOgden + FLOPS_MatMatAdd)
FLOPS_JACOBIAN_IsochoricOgdenCurrent (FLOPS_df1_IsochoricOgden_Current + FLOPS_dXdxwdetJ)
NUM_COMPONENTS_STATE_IsochoricOgdenInitial 0
NUM_COMPONENTS_STORED_IsochoricOgdenInitial 9
NUM_ACTIVE_FIELD_EVAL_MODES_IsochoricOgdenInitial 1
FLOPS_df1_IsochoricOgden_Initial   (FLOPS_MatMatMult + 3 + FLOPS_MatDetAM1 + FLOPS_GreenEulerStrain + FLOPS_CInverse + FLOPS_S_IsochoricOgden + FLOPS_dS_IsochoricOgden + \    FLOPS_MatMatMultPlusMatMatMult)
FLOPS_JACOBIAN_IsochoricOgdenInitial (FLOPS_df1_IsochoricOgden_Initial + FLOPS_dXdxwdetJ)
FLOPS_Tau_iso_MooneyRivlin   (FLOPS_MatTrace + FLOPS_MatDeviatoricSymmetric + 9 + FLOPS_MatMatMultSymmetric + 2 * FLOPS_MatMatAddSymmetric + 24 + \    FLOPS_MatMatContractSymmetric + 15)
FLOPS_S_iso_MooneyRivlin   (FLOPS_MatTrace + FLOPS_MatDeviatoricSymmetric + FLOPS_MatMatMultSymmetric + 16 + 2 * FLOPS_MatMatAddSymmetric + 18 + \    FLOPS_MatMatContractSymmetric + 7)
FLOPS_dS1_iso_MooneyRivlin   (FLOPS_GreenLagrangeStrain_fwd + FLOPS_CInverse_fwd + FLOPS_MatMatContractSymmetric + 2 * FLOPS_MatTrace + FLOPS_MatDeviatoricSymmetric + \    FLOPS_MatMatMultSymmetric + 3 + 2 * FLOPS_MatMatAddSymmetric + 24 + 20)
FLOPS_dS2_iso_MooneyRivlin (24 + FLOPS_MatMatAddSymmetric + 12 + 5)
FLOPS_dS3_iso_MooneyRivlin (2 * FLOPS_MatMatContractSymmetric + FLOPS_MatMatAddSymmetric + 12 + 22)
FLOPS_dS_iso_MooneyRivlin (FLOPS_dS1_iso_MooneyRivlin + FLOPS_dS2_iso_MooneyRivlin + FLOPS_dS3_iso_MooneyRivlin + 18)
FLOPS_FdSFTranspose_iso_MooneyRivlin   (6 + 3 * FLOPS_MatTrace + 4 + 3 * FLOPS_ScalarMatMultSymmetric + 12 + 8 + FLOPS_MatDeviatoricSymmetric + 2 * FLOPS_MatMatContractSymmetric

+ 16 + \

12 +

FLOPS_MatMatMultSymmetric + FLOPS_MatMatMatMultSymmetric + FLOPS_GreenEulerStrain_fwd + 23 + 2 * FLOPS_MatMatMatAddSymmetric + 18 + 12 +    \    FLOPS_MatMatAddSymmetric)
FLOPS_J_pow 3
FLOPS_Tau_iso_NeoHookean (FLOPS_MatTrace + FLOPS_MatDeviatoricSymmetric + 12)
FLOPS_S_iso_NeoHookean   (FLOPS_MatTrace + FLOPS_MatDeviatoricSymmetric + FLOPS_MatMatMultSymmetric + FLOPS_J_pow + 2 + FLOPS_ScalarMatMultSymmetric)
FLOPS_dS_iso_NeoHookean   (FLOPS_GreenLagrangeStrain_fwd + FLOPS_CInverse_fwd + FLOPS_MatMatContractSymmetric + 2 * FLOPS_MatTrace + FLOPS_MatDeviatoricSymmetric + \    FLOPS_MatMatMultSymmetric + 3 + 2 * FLOPS_MatMatAddSymmetric + 24 + FLOPS_J_pow + 7)
FLOPS_FdSFTranspose_iso_NeoHookean   (6 + 3 * FLOPS_MatTrace + FLOPS_ScalarMatMultSymmetric + 9 + FLOPS_GreenEulerStrain_fwd + 6 + FLOPS_MatDeviatoricSymmetric + \    FLOPS_MatMatAddSymmetric + 15)
FLOPS_Tau_iso_Ogden (9 + FLOPS_EigenVectorOuterMult + 36)
FLOPS_S_iso_Ogden   (FLOPS_MatComputeEigensystemSymmetric + FLOPS_PrincipalStretch + 3 * FLOPS_Log1pSeries + 6 + 9 * FLOPS_Expm1Series + 42 + \    FLOPS_EigenVectorOuterMult + 36)
FLOPS_dS_iso_Ogden   (FLOPS_GreenLagrangeStrain_fwd + FLOPS_CInverse_fwd + FLOPS_MatMatContractSymmetric + FLOPS_MatComputeEigensystemSymmetric +                   \    FLOPS_PrincipalStretch + FLOPS_PrincipalStretch_fwd + 3 * FLOPS_Log1pSeries + 9 + 18 * FLOPS_Expm1Series + 142 + FLOPS_EigenVectorOuterMult + \    FLOPS_EigenVectorOuterMult_fwd + 105)
FLOPS_FdSFTranspose_iso_Ogden   (6 + FLOPS_MatTrace + 2 * FLOPS_MatMatMult + 12 + FLOPS_GreenEulerStrain_fwd + FLOPS_PrincipalStretch + FLOPS_PrincipalStretch_fwd

+     \

3 *

FLOPS_Log1pSeries + 9 + FLOPS_EigenVectorOuterMult + FLOPS_EigenVectorOuterMult_fwd + +6 * FLOPS_MatMatMult + 3 * FLOPS_MatMatAdd

+ \

3 *

FLOPS_MatMatMatAddSymmetric + 21 + 57 + 126)
FLOPS_PsiPlus_Linear (FLOPS_MatMatContractSymmetric + 5)
FLOPS_PsiPlus_Linear_fwd (3 + FLOPS_ScalarMatMultSymmetric + 3 + FLOPS_MatMatContractSymmetric)
FLOPS_DegradedStress_Linear (9 + FLOPS_ScalarMatMultSymmetric + 3)
FLOPS_DegradedStress_Linear_fwd (9 + FLOPS_ScalarMatMultSymmetric + 3 + 6 + FLOPS_ScalarMatMultSymmetric + 3 + FLOPS_MatMatAddSymmetric + 6)
FLOPS_JACOBIAN_Elasticity_Damage   (FLOPS_MatMatMult + FLOPS_LinearStrain_fwd + 2 * FLOPS_MatTrace + 2 * FLOPS_MatDeviatoricSymmetric + FLOPS_DegradedStress_Linear_fwd + \    FLOPS_MatMatMult + 9 + FLOPS_MatVecMult + 4 + FLOPS_PsiPlus_Linear_fwd + 18 + 3 * 6)
FLOPS_JACOBIAN_Elasticity_Damage_Platen   (FLOPS_MatMatMult + FLOPS_LinearStrain_fwd + 2 * FLOPS_MatTrace + 2 * FLOPS_MatDeviatoricSymmetric + FLOPS_DegradedStress_Linear_fwd)
NUM_COMPONENTS_ELASTICITY_LINEAR_DIAGNOSTIC_Dual 2
NUM_COMPONENTS_STATE_Linear 0
NUM_COMPONENTS_STORED_Linear 0
NUM_ACTIVE_FIELD_EVAL_MODES_Linear 1
NUM_COMPONENTS_DIAGNOSTIC_Linear 16
FLOPS_df1_Linear (FLOPS_MatMatMult + FLOPS_LinearStrain_fwd + FLOPS_MatTrace + FLOPS_LinearStress_fwd)
FLOPS_JACOBIAN_Linear (FLOPS_df1_Linear + FLOPS_dXdxwdetJ)
NUM_COMPONENTS_DIAGNOSTIC_MixedElasticity 16
NUM_COMPONENTS_STATE_MixedLinear 0
NUM_COMPONENTS_STORED_MixedLinear 0
NUM_ACTIVE_FIELD_EVAL_MODES_MixedLinear_u 1
NUM_ACTIVE_FIELD_EVAL_MODES_MixedLinear_p 1
NUM_ACTIVE_FIELD_EVAL_MODES_MixedLinear (NUM_ACTIVE_FIELD_EVAL_MODES_MixedLinear_u + NUM_ACTIVE_FIELD_EVAL_MODES_MixedLinear_p)
NUM_COMPONENTS_DIAGNOSTIC_MixedLinear 16
FLOPS_df1_MixedLinear   (FLOPS_MatMatMult + FLOPS_LinearStrain_fwd + FLOPS_MatTrace + FLOPS_MatDeviatoricSymmetric + FLOPS_MixedLinearStress_fwd)
FLOPS_JACOBIAN_MixedLinear (FLOPS_df1_MixedLinear + FLOPS_dXdxwdetJ + 3)
FLOPS_JACOBIAN_Block_uu_MixedLinear   (FLOPS_MatMatMult + FLOPS_LinearStrain_fwd + FLOPS_MatTrace + FLOPS_MatDeviatoricSymmetric + FLOPS_dXdxwdetJ + 1)
FLOPS_JACOBIAN_Block_pp_MixedLinear (3)
FLOPS_Tau_MixedNeoHookean (FLOPS_Tau_vol_mixed + FLOPS_Tau_iso_NeoHookean + 3)
FLOPS_S_MixedNeoHookean (FLOPS_S_iso_NeoHookean + FLOPS_S_vol_mixed)
FLOPS_dS_MixedNeoHookean (1 + FLOPS_dS_vol_mixed + FLOPS_dS_iso_NeoHookean + FLOPS_MatMatMatAddSymmetric)
FLOPS_FdSFTranspose_MixedNeoHookean (FLOPS_FdSFTranspose_iso_NeoHookean + FLOPS_FdSFTranspose_vol_mixed + FLOPS_MatMatAddSymmetric)
NUM_COMPONENTS_STATE_MixedNeoHookeanCurrent 0
NUM_COMPONENTS_STORED_MixedNeoHookeanCurrent 18
NUM_ACTIVE_FIELD_EVAL_MODES_MixedNeoHookeanCurrent_u 1
NUM_ACTIVE_FIELD_EVAL_MODES_MixedNeoHookeanCurrent_p 1
NUM_ACTIVE_FIELD_EVAL_MODES_MixedNeoHookeanCurrent   (NUM_ACTIVE_FIELD_EVAL_MODES_MixedNeoHookeanCurrent_u + NUM_ACTIVE_FIELD_EVAL_MODES_MixedNeoHookeanCurrent_p)
FLOPS_df1_MixedNH_Current (2 * FLOPS_MatMatMult + FLOPS_Tau_MixedNeoHookean + FLOPS_FdSFTranspose_MixedNeoHookean + FLOPS_MatMatAdd)
FLOPS_dg0_MixedNH_Current (FLOPS_J_dVdJ + FLOPS_J2_d2VdJ2 + 10)
FLOPS_JACOBIAN_MixedNeoHookeanCurrent (FLOPS_df1_MixedNH_Current + FLOPS_dXdxwdetJ + FLOPS_dg0_MixedNH_Current + 1)
FLOPS_JACOBIAN_Block_uu_MixedNeoHookeanCurrent   (2 * FLOPS_MatMatMult + FLOPS_Tau_MixedNeoHookean + FLOPS_FdSFTranspose_MixedNeoHookean + FLOPS_MatMatAdd + FLOPS_dXdxwdetJ)
FLOPS_JACOBIAN_Block_pp_MixedNeoHookeanCurrent 8
NUM_COMPONENTS_STATE_MixedNeoHookeanInitial 0
NUM_COMPONENTS_STORED_MixedNeoHookeanInitial 10
NUM_ACTIVE_FIELD_EVAL_MODES_MixedNeoHookeanInitial_u 1
NUM_ACTIVE_FIELD_EVAL_MODES_MixedNeoHookeanInitial_p 1
NUM_ACTIVE_FIELD_EVAL_MODES_MixedNeoHookeanInitial   (NUM_ACTIVE_FIELD_EVAL_MODES_MixedNeoHookeanInitial_u + NUM_ACTIVE_FIELD_EVAL_MODES_MixedNeoHookeanInitial_p)
FLOPS_df1_MixedNH_Initial   (FLOPS_MatMatMult + 3 + FLOPS_MatDetAM1 + FLOPS_GreenEulerStrain + FLOPS_CInverse + FLOPS_S_MixedNeoHookean + FLOPS_dS_MixedNeoHookean + \    FLOPS_MatMatMultPlusMatMatMult)
FLOPS_dg0_MixedNH_Initial (FLOPS_J_dVdJ + FLOPS_J2_d2VdJ2 + 10)
FLOPS_JACOBIAN_MixedNeoHookeanInitial (FLOPS_df1_MixedNH_Initial + FLOPS_dXdxwdetJ + FLOPS_dg0_MixedNH_Initial + 1)
FLOPS_JACOBIAN_Block_uu_MixedNeoHookeanInitial   (FLOPS_MatMatMult + 3 + FLOPS_MatDetAM1 + FLOPS_GreenEulerStrain + FLOPS_CInverse + FLOPS_S_MixedNeoHookean + FLOPS_dS_MixedNeoHookean + \    FLOPS_MatMatMultPlusMatMatMult + FLOPS_dXdxwdetJ)
FLOPS_JACOBIAN_Block_pp_MixedNeoHookeanInitial (FLOPS_MatDetAM1 + 8)
NUM_COMPONENTS_DIAGNOSTIC_MixedNeoHookeanPL 16
FLOPS_Tau_MixedNeoHookeanPL (FLOPS_Tau_vol_mixed_PL + FLOPS_Tau_iso_NeoHookean + 3)
FLOPS_S_MixedNeoHookeanPL (FLOPS_S_iso_NeoHookean + FLOPS_S_vol_mixed_PL)
FLOPS_dS_MixedNeoHookeanPL (1 + FLOPS_dS_vol_mixed_PL + FLOPS_dS_iso_NeoHookean + FLOPS_MatMatMatAddSymmetric)
FLOPS_FdSFTranspose_MixedNeoHookeanPL (FLOPS_FdSFTranspose_iso_NeoHookean + FLOPS_FdSFTranspose_vol_mixed_PL + FLOPS_MatMatAddSymmetric)
NUM_COMPONENTS_STATE_MixedNeoHookeanPLCurrent 0
NUM_COMPONENTS_STORED_MixedNeoHookeanPLCurrent 18
NUM_ACTIVE_FIELD_EVAL_MODES_MixedNeoHookeanPLCurrent_u 1
NUM_ACTIVE_FIELD_EVAL_MODES_MixedNeoHookeanPLCurrent_p 1
NUM_ACTIVE_FIELD_EVAL_MODES_MixedNeoHookeanPLCurrent   (NUM_ACTIVE_FIELD_EVAL_MODES_MixedNeoHookeanPLCurrent_u + NUM_ACTIVE_FIELD_EVAL_MODES_MixedNeoHookeanPLCurrent_p)
FLOPS_df1_MixedNHPL_Current (2 * FLOPS_MatMatMult + FLOPS_Tau_MixedNeoHookeanPL + FLOPS_FdSFTranspose_MixedNeoHookeanPL + FLOPS_MatMatAdd)
FLOPS_dg0_MixedNHPL_Current (FLOPS_J_dUdJ + 4)
FLOPS_JACOBIAN_MixedNeoHookeanPLCurrent (FLOPS_df1_MixedNHPL_Current + FLOPS_dXdxwdetJ + FLOPS_dg0_MixedNHPL_Current + 1)
FLOPS_JACOBIAN_Block_uu_MixedNeoHookeanPLCurrent   (2 * FLOPS_MatMatMult + FLOPS_Tau_MixedNeoHookeanPL + FLOPS_FdSFTranspose_MixedNeoHookeanPL + FLOPS_MatMatAdd + FLOPS_dXdxwdetJ)
FLOPS_JACOBIAN_Block_pp_MixedNeoHookeanPLCurrent 7
NUM_COMPONENTS_STATE_MixedNeoHookeanPLInitial 0
NUM_COMPONENTS_STORED_MixedNeoHookeanPLInitial 10
NUM_ACTIVE_FIELD_EVAL_MODES_MixedNeoHookeanPLInitial_u 1
NUM_ACTIVE_FIELD_EVAL_MODES_MixedNeoHookeanPLInitial_p 1
NUM_ACTIVE_FIELD_EVAL_MODES_MixedNeoHookeanPLInitial   (NUM_ACTIVE_FIELD_EVAL_MODES_MixedNeoHookeanPLInitial_u + NUM_ACTIVE_FIELD_EVAL_MODES_MixedNeoHookeanPLInitial_p)
FLOPS_df1_MixedNHPL_Initial   (FLOPS_MatMatMult + 3 + FLOPS_MatDetAM1 + FLOPS_GreenEulerStrain + FLOPS_CInverse + FLOPS_S_MixedNeoHookeanPL + FLOPS_dS_MixedNeoHookeanPL + \    FLOPS_MatMatMultPlusMatMatMult)
FLOPS_dg0_MixedNHPL_Initial (FLOPS_Log1pSeries + 14)
FLOPS_JACOBIAN_MixedNeoHookeanPLInitial (FLOPS_df1_MixedNHPL_Initial + FLOPS_dXdxwdetJ + FLOPS_dg0_MixedNHPL_Initial)
FLOPS_JACOBIAN_Block_uu_MixedNeoHookeanPLInitial   (FLOPS_MatMatMult + 3 + FLOPS_MatDetAM1 + FLOPS_GreenEulerStrain + FLOPS_CInverse + FLOPS_S_MixedNeoHookeanPL + FLOPS_dS_MixedNeoHookeanPL + \    FLOPS_MatMatMultPlusMatMatMult + FLOPS_dXdxwdetJ)
FLOPS_JACOBIAN_Block_pp_MixedNeoHookeanPLInitial (7)
FLOPS_Tau_MixedOgden (FLOPS_Tau_vol_mixed + FLOPS_Tau_iso_Ogden + 3)
FLOPS_S_MixedOgden (FLOPS_S_iso_Ogden + FLOPS_S_vol_mixed)
FLOPS_dS_MixedOgden (1 + FLOPS_dS_vol_mixed + FLOPS_dS_iso_Ogden + FLOPS_MatMatMatAddSymmetric)
NUM_COMPONENTS_STATE_MixedOgdenInitial 0
NUM_COMPONENTS_STORED_MixedOgdenInitial 10
NUM_ACTIVE_FIELD_EVAL_MODES_MixedOgdenInitial_u 1
NUM_ACTIVE_FIELD_EVAL_MODES_MixedOgdenInitial_p 1
NUM_ACTIVE_FIELD_EVAL_MODES_MixedOgdenInitial   (NUM_ACTIVE_FIELD_EVAL_MODES_MixedOgdenInitial_u + NUM_ACTIVE_FIELD_EVAL_MODES_MixedOgdenInitial_p)
FLOPS_df1_MixedOgden_Initial   (FLOPS_MatMatMult + 3 + FLOPS_MatDetAM1 + FLOPS_GreenEulerStrain + FLOPS_CInverse + FLOPS_S_MixedOgden + FLOPS_dS_MixedOgden + \    FLOPS_MatMatMultPlusMatMatMult)
FLOPS_dg0_MixedOgden_Initial (FLOPS_J_dVdJ + FLOPS_J2_d2VdJ2 + 10)
FLOPS_JACOBIAN_MixedOgdenInitial (FLOPS_df1_MixedOgden_Initial + FLOPS_dXdxwdetJ + FLOPS_dg0_MixedOgden_Initial + 1)
FLOPS_JACOBIAN_Block_uu_MixedOgdenInitial   (FLOPS_MatMatMult + 3 + FLOPS_MatDetAM1 + FLOPS_GreenEulerStrain + FLOPS_CInverse + FLOPS_S_MixedOgden + FLOPS_dS_MixedOgden + \    FLOPS_MatMatMultPlusMatMatMult + FLOPS_dXdxwdetJ)
FLOPS_JACOBIAN_Block_pp_MixedOgdenInitial (FLOPS_MatDetAM1 + 8)
FLOPS_Tau_vol_mixed_PL (FLOPS_U + FLOPS_J_dUdJ + 3)
FLOPS_S_vol_mixed_PL (FLOPS_U + FLOPS_J_dUdJ + 3 + FLOPS_ScalarMatMultSymmetric)
FLOPS_dS_vol_mixed_PL (FLOPS_U + FLOPS_J_dUdJ + FLOPS_J2_d2UdJ2 + 13 + FLOPS_MatMatAddSymmetric + 12)
FLOPS_FdSFTranspose_vol_mixed_PL (FLOPS_U + FLOPS_J_dUdJ + FLOPS_J2_d2UdJ2 + 13 + FLOPS_ScalarMatMultSymmetric + 4)
FLOPS_Tau_vol_mixed (FLOPS_J_dVdJ + 4)
FLOPS_S_vol_mixed (FLOPS_J_dVdJ + 4 + FLOPS_ScalarMatMultSymmetric)
FLOPS_dS_vol_mixed (FLOPS_J_dVdJ + FLOPS_J2_d2VdJ2 + 12 + FLOPS_MatMatAddSymmetric + 12)
FLOPS_FdSFTranspose_vol_mixed (FLOPS_J_dVdJ + FLOPS_J2_d2VdJ2 + 12 + FLOPS_ScalarMatMultSymmetric + 4)
FLOPS_Tau_MooneyRivlin (FLOPS_MatTrace + 9 + FLOPS_MatMatMultSymmetric + 2 * FLOPS_MatMatAddSymmetric + 18 + FLOPS_Tau_vol + 5)
FLOPS_S_MooneyRivlin (FLOPS_S_vol + FLOPS_MatMatMultSymmetric + FLOPS_MatTrace + 2 * FLOPS_MatMatAddSymmetric + 12 + 5)
FLOPS_dS_MooneyRivlin   (FLOPS_GreenLagrangeStrain_fwd + FLOPS_CInverse_fwd + FLOPS_MatMatContractSymmetric + FLOPS_dS_vol + FLOPS_MatTrace

+ \

2 *

FLOPS_MatMatAddSymmetric + 12 + 4)
FLOPS_FdSFTranspose_MooneyRivlin   (6 + 2 * FLOPS_MatTrace + 8 + 9 + FLOPS_MatMatMatMultSymmetric + FLOPS_GreenEulerStrain_fwd + FLOPS_MatMatMatAddSymmetric + 19 + 12)
NUM_COMPONENTS_STATE_MooneyRivlinCurrent 0
NUM_COMPONENTS_STORED_MooneyRivlinCurrent 16
NUM_ACTIVE_FIELD_EVAL_MODES_MooneyRivlinCurrent 1
FLOPS_df1_MR_Current (2 * FLOPS_MatMatMult + FLOPS_Tau_MooneyRivlin + FLOPS_FdSFTranspose_MooneyRivlin + FLOPS_MatMatAdd)
FLOPS_JACOBIAN_MooneyRivlinCurrent (FLOPS_df1_MR_Current + FLOPS_dXdxwdetJ)
NUM_COMPONENTS_STATE_MooneyRivlinInitial 0
NUM_COMPONENTS_STORED_MooneyRivlinInitial 9
NUM_ACTIVE_FIELD_EVAL_MODES_MooneyRivlinInitial 1
FLOPS_df1_MR_Initial   (FLOPS_MatMatMult + 3 + FLOPS_MatDetAM1 + FLOPS_GreenEulerStrain + FLOPS_CInverse + FLOPS_S_MooneyRivlin + FLOPS_dS_MooneyRivlin + \    FLOPS_MatMatMultPlusMatMatMult)
FLOPS_JACOBIAN_MooneyRivlinInitial (FLOPS_df1_MR_Initial + FLOPS_dXdxwdetJ)
NUM_COMPONENTS_DIAGNOSTIC_MPM_NeoHookean 16
NUM_COMPONENTS_STATE_MPM_NeoHookeanCurrent 0
NUM_COMPONENTS_STORED_MPM_NeoHookeanCurrent 16
NUM_ACTIVE_FIELD_EVAL_MODES_MPM_NeoHookeanCurrent 1
NUM_POINTS_FIELDS_MPM_NeoHookeanCurrent 2
FLOPS_df1_MPM_NH_Current (2 * FLOPS_MatMatMult + FLOPS_FdSFTranspose_NeoHookean + FLOPS_MatMatAdd)
FLOPS_JACOBIAN_MPM_NeoHookeanCurrent (FLOPS_df1_MPM_NH_Current + FLOPS_dXdxwdetJ)
FLOPS_JACOBIAN_MPM_NeoHookeanCurrent_Damage   (2 + FLOPS_Degraded_Tau_NeoHookean + FLOPS_MatMatMult + FLOPS_J_dVdJ + FLOPS_J2_d2VdJ2 + FLOPS_MatMatMult +     \    FLOPS_Degraded_FdSFTranspose_NeoHookean + FLOPS_MatMatAdd + FLOPS_MatMatMult + 10 + FLOPS_MatVecMult + 4 + 1 + \    FLOPS_PsiPlus_NeoHookeanCurrent_fwd + 1 + 11 + 2 + 5 + 6)
FLOPS_Tau_NeoHookean (FLOPS_Tau_vol + 9)
FLOPS_S_NeoHookean (FLOPS_S_vol + FLOPS_MatMatMultSymmetric + FLOPS_MatMatAddSymmetric + 6)
FLOPS_dS_NeoHookean   (FLOPS_GreenLagrangeStrain_fwd + FLOPS_CInverse_fwd + FLOPS_MatMatContractSymmetric + FLOPS_dS_vol + FLOPS_MatMatAddSymmetric + 6)
FLOPS_FdSFTranspose_NeoHookean (6 + FLOPS_MatTrace + FLOPS_FdSFTranspose_vol + FLOPS_MatMatAddSymmetric + 7)
NUM_COMPONENTS_STATE_NeoHookeanCurrent_AD 0
NUM_COMPONENTS_STORED_NeoHookeanCurrent_AD 15
NUM_ACTIVE_FIELD_EVAL_MODES_NeoHookeanCurrent_AD 1
NUM_COMPONENTS_STATE_NeoHookeanCurrent 0
NUM_COMPONENTS_STORED_NeoHookeanCurrent 16
NUM_ACTIVE_FIELD_EVAL_MODES_NeoHookeanCurrent 1
FLOPS_df1_NH_Current (2 * FLOPS_MatMatMult + FLOPS_FdSFTranspose_NeoHookean + FLOPS_MatMatAdd)
FLOPS_JACOBIAN_NeoHookeanCurrent (FLOPS_df1_NH_Current + FLOPS_dXdxwdetJ)
NUM_COMPONENTS_DIAGNOSTIC_NeoHookean_Damage_Dual 2
NUM_COMPONENTS_DIAGNOSTIC_NeoHookean_Damage 19
NUM_COMPONENTS_STATE_NeoHookean_Damage 1
NUM_ACTIVE_FIELD_EVAL_MODES_NeoHookean_Damage 2
NUM_U_t_FIELD_EVAL_MODES_NeoHookean_Damage 1
FLOPS_PsiPlus_NeoHookean (FLOPS_MatTraceSymmetric + FLOPS_StrainEnergy_IsochoricNeoHookean + 2)
FLOPS_PsiPlus_NeoHookeanInitial_fwd   (FLOPS_GreenLagrangeStrain + FLOPS_CInverse + FLOPS_S_IsochoricNeoHookean + FLOPS_S_vol + FLOPS_MatMatAddSymmetric + FLOPS_MatMatContractSymmetric)
FLOPS_Degraded_S_NeoHookean (7 + FLOPS_CInverse + FLOPS_S_IsochoricNeoHookean + FLOPS_S_vol + FLOPS_MatMatAddSymmetric)
FLOPS_Degraded_dS_NeoHookean   (7 + FLOPS_CInverse + FLOPS_GreenLagrangeStrain_fwd + FLOPS_CInverse_fwd + FLOPS_S_IsochoricNeoHookean + FLOPS_S_vol + \    FLOPS_dS_IsochoricNeoHookean + FLOPS_dS_vol + 3 * FLOPS_MatMatAddSymmetric)
FLOPS_Degraded_Tau_NeoHookean (FLOPS_Tau_IsochoricNeoHookean + FLOPS_Tau_vol + 6)
FLOPS_PsiPlus_NeoHookeanCurrent_fwd (FLOPS_Tau_IsochoricNeoHookean + FLOPS_Tau_vol + 3 + FLOPS_MatMatContractSymmetric)
FLOPS_Degraded_FdSFTranspose_NeoHookean   (FLOPS_FdSFTranspose_iso_NeoHookean + FLOPS_FdSFTranspose_vol + 2 * FLOPS_MatMatAddSymmetric + FLOPS_Tau_IsochoricNeoHookean + FLOPS_Tau_vol + 18)
FLOPS_JACOBIAN_NeoHookeanCurrent_Damage   (2 * FLOPS_MatMatMult + FLOPS_Degraded_Tau_NeoHookean + FLOPS_Degraded_FdSFTranspose_NeoHookean + FLOPS_MatMatAdd + FLOPS_MatMatMult + 9 + \    FLOPS_MatVecMult + 5 + FLOPS_PsiPlus_NeoHookeanCurrent_fwd + 14 + 33)
FLOPS_JACOBIAN_NeoHookeanInitial_Damage   (3 + FLOPS_MatMatMult + 3 + FLOPS_MatDetAM1 + FLOPS_Degraded_S_NeoHookean + FLOPS_Degraded_dS_NeoHookean + FLOPS_MatMatMultPlusMatMatMult

+ \

+

FLOPS_MatMatMult + FLOPS_MatVecMult + 5 + FLOPS_GreenLagrangeStrain_fwd + FLOPS_PsiPlus_NeoHookeanInitial_fwd + 14 + 33)
FLOPS_JACOBIAN_NeoHookeanInitial_Damage_Platen   (FLOPS_MatMatMult + FLOPS_MatDetAM1 + FLOPS_S_IsochoricNeoHookean + FLOPS_dS_IsochoricNeoHookean + FLOPS_MatMatMultPlusMatMatMult)
RATEL_ELASTICITY_NEO_HOOKEAN_INITIAL_AD_TAPE_SIZE 6
NUM_COMPONENTS_STATE_NeoHookeanInitial_AD 0
NUM_COMPONENTS_STORED_NeoHookeanInitial_AD (15 + RATEL_ELASTICITY_NEO_HOOKEAN_INITIAL_AD_TAPE_SIZE)
NUM_ACTIVE_FIELD_EVAL_MODES_NeoHookeanInitial_AD 1
NUM_COMPONENTS_STATE_NeoHookeanInitial 0
NUM_COMPONENTS_STORED_NeoHookeanInitial 9
NUM_ACTIVE_FIELD_EVAL_MODES_NeoHookeanInitial 1
FLOPS_df1_NH_Initial   (FLOPS_MatMatMult + 3 + FLOPS_MatDetAM1 + FLOPS_GreenEulerStrain + FLOPS_CInverse + FLOPS_S_NeoHookean + FLOPS_dS_NeoHookean + \    FLOPS_MatMatMultPlusMatMatMult)
FLOPS_JACOBIAN_NeoHookeanInitial (FLOPS_df1_NH_Initial + FLOPS_dXdxwdetJ)
FLOPS_V (FLOPS_Log1pSeries + 5)
FLOPS_J_dVdJ 3
FLOPS_J2_d2VdJ2 4
FLOPS_U (FLOPS_Log1pSeries + 4 + 5)
FLOPS_J_dUdJ (FLOPS_Log1pSeries + 4 + 7)
FLOPS_J2_d2UdJ2 (FLOPS_Log1pSeries + 4 + 18)
FLOPS_Tau_vol (FLOPS_J_dVdJ + 1)
FLOPS_S_vol (FLOPS_J_dVdJ + 1 + FLOPS_ScalarMatMultSymmetric)
FLOPS_dS_vol (FLOPS_J_dVdJ + FLOPS_J2_d2VdJ2 + 5 + FLOPS_MatMatAddSymmetric + 12)
FLOPS_FdSFTranspose_vol (FLOPS_J_dVdJ + FLOPS_J2_d2VdJ2 + 5 + FLOPS_ScalarMatMultSymmetric + 4)
NUM_COMPONENTS_STATE_PlasticityLinear 7
NUM_COMPONENTS_STORED_PlasticityLinear 12
NUM_ACTIVE_FIELD_EVAL_MODES_PlasticityLinear 1
NUM_COMPONENTS_DIAGNOSTIC_PlasticityLinear 23
NUM_COMPONENTS_STATE_PoroElasticityLinear 0
NUM_COMPONENTS_STORED_PoroElasticityLinear 0
NUM_ACTIVE_FIELD_EVAL_MODES_PoroElasticityLinear_u 1
NUM_ACTIVE_FIELD_EVAL_MODES_PoroElasticityLinear_p 2
NUM_ACTIVE_FIELD_EVAL_MODES_PoroElasticityLinear   (NUM_ACTIVE_FIELD_EVAL_MODES_PoroElasticityLinear_u + NUM_ACTIVE_FIELD_EVAL_MODES_PoroElasticityLinear_p)
NUM_U_t_FIELD_EVAL_MODES_PoroElasticityLinear_u 1
NUM_U_t_FIELD_EVAL_MODES_PoroElasticityLinear_p 1
NUM_COMPONENTS_DIAGNOSTIC_PoroElasticityLinear 17
FLOPS_df1_PoroElasticityLinear (FLOPS_MatMatMult + FLOPS_LinearStrain_fwd + FLOPS_MatTrace + FLOPS_PoroElasticityLinearStress_fwd)
FLOPS_dg0_PoroElasticityLinear (4)
FLOPS_dg1_PoroElasticityLinear (FLOPS_MatTransposeVecMult + 4)
FLOPS_JACOBIAN_PoroElasticityLinear   (FLOPS_df1_PoroElasticityLinear + FLOPS_dXdxwdetJ + FLOPS_dg0_PoroElasticityLinear + FLOPS_dg1_PoroElasticityLinear + FLOPS_MatVecMult + 3 + 1)
FLOPS_JACOBIAN_Block_uu_PoroElasticityLinear   (FLOPS_MatMatMult + FLOPS_LinearStrain_fwd + FLOPS_PoroElasticityLinearStress_fwd + FLOPS_MatTrace + FLOPS_MatMatTransposeMult + 9)
FLOPS_JACOBIAN_Block_pp_PoroElasticityLinear (FLOPS_MatTransposeVecMult + FLOPS_MatVecMult + 4)
struct RatelModelParameter
#include <ratel-impl.h>

Information about a single material model parameter.

Public Members

const char *name

Name of parameter, used for PetscOptions, e.g. “nu”.

const char *description

Description of parameter, used for PetscOptions.

const char *units

SI units expected by the parameter, e.g. “Pa”.

const char *restrictions

Expected domain of values, e.g. “0 <= nu < 0.5”.

PetscBool is_required

Is parameter required?

PetscBool is_hidden

Should parameter be hidden in RatelModelParameterDataView?

RatelDefaultParameterValue default_value

Default value.

CeedSize offset

Offset into context.

CeedInt num_components

Number of components.

CeedContextFieldType type

Type of parameter.

struct RatelElasticityDamageParams
#include <elasticity-damage.h>

Elastic+damage model data.

Public Members

CeedScalar common_parameters[RATEL_NUMBER_COMMON_PARAMETERS]

Common properties.

CeedScalar nu

Poisson’s ratio.

CeedScalar E

Young’s Modulus.

CeedScalar fracture_toughness

Critical energy release rate.

CeedScalar characteristic_length

Length-scale parameter.

CeedScalar residual_stiffness

Residual stiffness parameter.

CeedScalar damage_scaling

Scaling factor for damage residual.

CeedScalar damage_viscosity

Damage viscosity.

bool use_offdiagonal

Flag for switching on/off offdiagonal terms of the Jacobian.

bool use_AT1

AT1 model type (true-AT1, false AT2, should be changed to char)

CeedScalar mu

Second Lame parameter (shear modulus)

CeedScalar bulk

bulk modulus

CeedScalar dt

time step

struct RatelLinearElasticityParams
#include <elasticity-linear.h>

Elastic model data.

Public Members

CeedScalar common_parameters[RATEL_NUMBER_COMMON_PARAMETERS]

Common properties.

CeedScalar nu

Poisson’s ratio.

CeedScalar E

Young’s modulus.

CeedScalar lambda

First Lame parameter.

CeedScalar mu

Second Lame parameter (shear modulus)

CeedScalar two_mu

Second Lame parameter multiplied by 2.

CeedScalar bulk

bulk modulus

struct RatelMixedLinearElasticityParams
#include <elasticity-mixed-linear.h>

Elastic model data.

Public Members

CeedScalar common_parameters[RATEL_NUMBER_COMMON_PARAMETERS]

Common properties.

CeedScalar nu

Poisson’s ratio.

CeedScalar E

Young’s modulus.

CeedScalar nu_primal

To change full strain to deviatoric in mixed formulation.

CeedScalar nu_primal_pc

To change full strain to deviatoric in uu block pc.

CeedInt sign_pp

To change the sign in pp block pc.

CeedScalar lambda

First Lame parameter.

CeedScalar mu

Second Lame parameter (shear modulus)

CeedScalar two_mu

Second Lame parameter multiplied by 2.

CeedScalar bulk

Bulk modulus.

CeedScalar bulk_primal

Primal bulk modulus.

CeedScalar bulk_primal_pc

Primal bulk modulus for block pc.

struct RatelMixedOgdenElasticityParams
#include <mixed-ogden.h>

Elastic model data.

Public Members

CeedScalar common_parameters[RATEL_NUMBER_COMMON_PARAMETERS]

Common properties.

CeedScalar nu

Poisson’s ratio.

CeedScalar m[RATEL_NUMBER_OGDEN_PARAMETERS]

Ogden’s first parameters.

CeedScalar alpha[RATEL_NUMBER_OGDEN_PARAMETERS]

Ogden’s second parameters.

CeedScalar lambda

First Lame parameter.

CeedScalar mu

Second Lame parameter (shear modulus)

CeedInt num_ogden_parameters

Number of Ogden’s parameters.

CeedScalar bulk

bulk modulus

CeedScalar E

Young’s modulus.

CeedScalar nu_primal

To change full strain to deviatoric in mixed formulation.

CeedScalar nu_primal_pc

To change full strain to deviatoric in uu block pc.

CeedInt sign_pp

To change the sign in pp block pc.

CeedScalar bulk_primal

Primal bulk modulus.

CeedScalar bulk_primal_pc

Primal bulk modulus for block pc.

struct RatelMMSCEEDBPsParams
#include <mms-ceed-bps.h>

CEED BPs MMS parameters.

Public Members

CeedScalar weierstrass_a

First Weierstrass parameter.

CeedScalar weierstrass_b

Second Weierstrass parameter.

CeedInt weierstrass_n

Number of terms in Weierstrass series.

CeedScalar time

Current solver time.

struct RatelMMSLinearElasticityParams
#include <mms-elasticity-linear.h>

Linear elasticity MMS parameters.

Public Members

CeedScalar A0

Solution scaling factor.

CeedScalar shift

Sin shift factor.

CeedScalar scale

Sin scaling factor.

CeedScalar time

Current solver time.

CeedScalar material[RATEL_MAX_MATERIAL_SIZE]

Material data.

struct RatelMMSPoroElasticityLinearParams
#include <mms-poroelasticity-linear.h>

Linear elasticity MMS parameters.

Public Members

CeedScalar A0

Solution scaling factor.

CeedScalar shift

Sin shift factor.

CeedScalar scale

Sin scaling factor.

CeedScalar time

Current solver time.

CeedScalar material[RATEL_MAX_MATERIAL_SIZE]

Material data.

struct RatelMooneyRivlinElasticityParams
#include <mooney-rivlin.h>

Mooney-Rivlin model data.

Public Members

CeedScalar common_parameters[RATEL_NUMBER_COMMON_PARAMETERS]

Common properties.

CeedScalar mu_1

First Mooney-Rivlin property.

CeedScalar mu_2

Second Mooney-Rivlin property.

CeedScalar nu

Poisson’s ratio.

CeedScalar lambda

First Lame parameter.

CeedScalar mu

Second Lame parameter (shear modulus)

CeedScalar two_mu_2

Second Mooney-Rivlin property multiplied by 2.

CeedScalar bulk

bulk modulus

struct RatelOgdenElasticityParams
#include <ogden.h>

Elastic model data.

Public Members

CeedScalar common_parameters[RATEL_NUMBER_COMMON_PARAMETERS]

Common properties.

CeedScalar nu

Poisson’s ratio.

CeedScalar m[RATEL_NUMBER_OGDEN_PARAMETERS]

Ogden’s first parameters.

CeedScalar alpha[RATEL_NUMBER_OGDEN_PARAMETERS]

Ogden’s second parameters.

CeedScalar lambda

First Lame parameter.

CeedScalar mu

Second Lame parameter (shear modulus)

CeedInt num_ogden_parameters

Number of Ogden’s parameters.

CeedScalar bulk

bulk modulus

CeedScalar E

Young’s modulus.

struct RatelLinearPlasticityParams
#include <plasticity-linear.h>

Plasticity model data.

Public Members

CeedScalar yield_stress

Poisson’s ratio.

CeedScalar hardening_A

Young’s modulus.

struct RatelElastoPlasticityParams
#include <plasticity-linear.h>

Plasticity model data.

Public Members

RatelLinearElasticityParams elasticity_params

Elastic model parameters.

RatelLinearPlasticityParams plasticity_params

Plastic model parameters.

struct RatelLinearPoroElasticityParams
#include <poroelasticity-linear.h>

PoroElastic model data.

Public Members

CeedScalar common_parameters[RATEL_NUMBER_COMMON_PARAMETERS]

Common properties.

CeedInt sign_pp

To change the sign in pp block pc.

CeedScalar lambda_d

Lame parameter - user.

CeedScalar mu_d

Shear modulus - user.

CeedScalar two_mu_d

Shear modulus multiplied by 2.

CeedScalar bulk_d

Bulk drained - user.

CeedScalar bulk_f

Bulk modulus fluid - user.

CeedScalar bulk_s

Bulk solid - user.

CeedScalar phi

Porosity - user.

CeedScalar eta_f

Fluid viscosity - user.

CeedScalar varkappa_0

Intrinsic permeability - user.

CeedScalar alpha

Biot’s coefficient.

CeedScalar M

Biot’s modulus.

struct RatelBoundingBoxParamsRestrictionContext
#include <bounding-box.h>
struct RatelModelParameterData
#include <ratel-impl.h>

Material model parameter information for printing.

struct RatelModelData
#include <ratel-impl.h>

Material model data.

struct RatelMaterial
#include <ratel-impl.h>

Material region.

struct RatelElasticityDamagePointFields
#include <elasticity-damage.h>

Point fields for elasticity+damage.

Public Members

CeedScalar fracture_toughness

Critical energy release rate.

CeedScalar characteristic_length

Length-scale parameter.

CeedScalar residual_stiffness

Residual stiffness parameter.

CeedScalar damage_scaling

Scaling factor for damage residual.

CeedScalar damage_viscosity

Damage viscosity.

struct RatelLinearElasticityPointFields
#include <elasticity-linear.h>

Point fields for linear elasticity.

Public Members

CeedScalar mu

Second Lame parameter (shear modulus)

CeedScalar bulk

bulk modulus

struct RatelNeoHookeanElasticityParams
#include <mixed-neo-hookean.h>

Neo-Hookean model data.

struct RatelMMSMixedLinearElasticityParams
#include <mms-elasticity-mixed-linear.h>

Mixed linear elasticity MMS parameters.

struct RatelNeoHookeanElasticityPointFields
#include <neo-hookean.h>

Point fields for Neo-Hookean.

struct RatelMPMContext
#include <ratel.h>

Ratel context for MPM, stores points CeedElemRestriction for a material region.