27 #ifndef _MECH_INTEGRATORS_H
28 #define _MECH_INTEGRATORS_H
34 #include "constitutive_model_library.h"
35 #include "constitutive_model.h"
41 #define EP_MAX_IPOINTS 128
43 #define EP_MAX_LPOINTS 8
54 double cauchy_stress[6];
121 b[0] = F[0]*F[0] + F[3]*F[3] + F[6]*F[6];
122 b[1] = F[0]*F[1] + F[3]*F[4] + F[6]*F[7];
123 b[2] = F[0]*F[2] + F[3]*F[5] + F[6]*F[8];
125 b[4] = F[1]*F[1] + F[4]*F[4] + F[7]*F[7];
126 b[5] = F[1]*F[2] + F[4]*F[5] + F[7]*F[8];
129 b[8] = F[2]*F[2] + F[5]*F[5] + F[8]*F[8];
135 C[0] = F[0]*F[0] + F[1]*F[1] + F[2]*F[2];
136 C[1] = F[0]*F[3] + F[1]*F[4] + F[2]*F[5];
137 C[2] = F[0]*F[6] + F[1]*F[7] + F[2]*F[8];
139 C[4] = F[3]*F[3] + F[4]*F[4] + F[5]*F[5];
140 C[5] = F[3]*F[6] + F[4]*F[7] + F[5]*F[8];
143 C[8] = F[6]*F[6] + F[7]*F[7] + F[8]*F[8];
149 E_Green[0] = 0.5 * (F[0]*F[0] + F[1]*F[1] + F[2]*F[2] - 1);
150 E_Green[1] = 0.5 * (F[0]*F[3] + F[1]*F[4] + F[2]*F[5]);
151 E_Green[2] = 0.5 * (F[0]*F[6] + F[1]*F[7] + F[2]*F[8]);
152 E_Green[3] = E_Green[1];
153 E_Green[4] = 0.5 * (F[3]*F[3] + F[4]*F[4] + F[5]*F[5] - 1);
154 E_Green[5] = 0.5 * (F[3]*F[6] + F[4]*F[7] + F[5]*F[8]);
155 E_Green[6] = E_Green[2];
156 E_Green[7] = E_Green[5];
157 E_Green[8] = 0.5 * (F[6]*F[6] + F[7]*F[7] + F[8]*F[8] - 1);
162 E_Green[0] = 0.5 * (F[0]*F[0] + F[1]*F[1] + F[2]*F[2] - 1);
163 E_Green[1] = 0.5 * (F[3]*F[3] + F[4]*F[4] + F[5]*F[5] - 1);
164 E_Green[2] = 0.5 * (F[6]*F[6] + F[7]*F[7] + F[8]*F[8] - 1);
165 E_Green[3] = F[0]*F[3] + F[1]*F[4] + F[2]*F[5];
166 E_Green[4] = F[0]*F[6] + F[1]*F[7] + F[2]*F[8];
167 E_Green[5] = F[3]*F[6] + F[4]*F[7] + F[5]*F[8];
172 Basic_constitutive_model * constitutive_model;
175 constitutive_model =
new Neo_Hooke();
176 constitutive_model->set_parameters(parameter_list);
179 constitutive_model =
new Guccione();
180 constitutive_model->set_parameters(parameter_list);
185 return constitutive_model;
Basic utility structs and functions, mostly IO related.
Comfort class. Provides getter functions to access the mesh member variables more comfortably.
Abstract matrix integration base class.
Abstract vector integration base class.
Used to integrate the internal nodel forces per element.
void operator()(const SF::element_view< mesh_int_t, mesh_real_t > &elem, double *buff)
Calculate internal force vector for a given element at each node.
mech_internal_forces_integrator(MaterialType &inp_mat)
void dpn(mesh_int_t &dpn)
return (by reference) the row and column dimensions
void dpn(mesh_int_t &row_dpn, mesh_int_t &col_dpn)
ACHTUNG: HIER AENDERUNG VON MIR.
void operator()(const SF::element_view< mesh_int_t, mesh_real_t > &elem, SF::dmat< double > &buff)
compute the element matrix for a given element.
void operator()(const SF::element_view< mesh_int_t, mesh_real_t > &elem, SF::dmat< double > &buff)
Calculate mech stiffness matrix for a given element at each node.
mech_stiffness_integrator(MaterialType &inp_mat)
void dpn(mesh_int_t &row_dpn, mesh_int_t &col_dpn)
ACHTUNG: HIER AENDERUNG VON MIR.
Structs and types for (electric) FEM.
#define EP_MAX_LPOINTS
maximum supported number of points in a local element
#define EP_MAX_IPOINTS
maximum supported number of integration points
Tissue level mechanics, main Mechanics physics class.
void calc_green_strain(double *F, double *E_Green)
Basic_constitutive_model * constitutive_model_setup(mechMat_t type, double *parameter_list)
void calc_left_cauchy_green(double *F, double *b)
void calc_right_cauchy_green(double *F, double *C)
mechMat_t
mechanical material models to choose from
void calc_deformation_gradient(const SF::element_view< mesh_int_t, mesh_real_t > &elem, int ipt, double *F, double *iF, double &detF, int index, double eps)
Calculate deformation gradient at a given integration point.
void calc_green_strain_voigt(double *F, double *E_Green)
description of materal properties in a mesh