4#include "AMP/mesh/triangle_t.h"
14 double const *strain_tensor,
15 double *stress_tensor );
16void compute_traction(
double const *stress_tensor,
double const *normal_vector,
double *traction );
18 double const poissons_ratio,
19 double *constitutive_matrix );
43 bool coordinates_are_local =
false,
44 double tolerance = 1.0e-12 );
46 double const *local_coordinates,
47 double *local_coordinates_on_face,
48 double *shift_global_coordinates );
50 double const *local_coordinates,
51 double const *global_coordinates,
52 double *normal_to_face );
54 double const *local_coordinates_on_face,
55 double *normal_vector );
60 double const *local_coordinates_on_face,
61 double *local_coordinates );
63 double const *local_coordinates,
64 double *local_coordinates_on_face );
70 double *basis_functions_values_on_face );
72 double *local_coordinates_on_face );
74 double const *local_coordinates_on_face,
75 double *normal_vector );
80 double const *displacement_values,
81 double *strain_tensor_values );
83 double const *displacement_values,
84 double *rotation_tensor_values );
85 static unsigned int const *
get_face(
unsigned int i );
201 double abs_tol = 1.0e-14,
202 double rel_tol = 1.0e-14,
203 unsigned int max_iter = 100,
204 bool verbose =
false );
std::vector< double > center_of_element_global_coordinates
static unsigned int const * get_faces()
static void get_basis_functions_derivatives(double const *local_coordinates, double *basis_functions_derivatives)
void map_global_to_local(double const *global_coordinates, double *local_coordinates)
triangle_t ** get_bounding_polyhedron()
void compute_strain_tensor(double const *local_coordinates, double const *displacement_values, double *strain_tensor_values)
static void map_face_to_local(unsigned int face, double const *local_coordinates_on_face, double *local_coordinates)
bool within_bounding_polyhedron(double const *p, double tolerance=1.0e-12)
double const * get_bounding_box()
static void get_normal_to_face(double const **support_points_ptr, double const *local_coordinates_on_face, double *normal_vector)
std::vector< double > residual_vector
bool support_points_translated
bool bounding_box_updated
void build_bounding_polyhedron()
bool contains_point(double const *coordinates, bool coordinates_are_local=false, double tolerance=1.0e-12)
bool support_points_scaled
bool within_bounding_box(double const *p, double tolerance=1.0e-12)
static void map_local_to_face(unsigned int face, double const *local_coordinates, double *local_coordinates_on_face)
hex8_element_t(double const *p)
void compute_center_of_element_data()
double const * get_support_point(unsigned int i) const
bool memory_allocated_for_newton
double point_candidate[3]
void compute_translation_vector()
std::vector< triangle_t * > tmp_triangles_ptr
std::vector< double > bounding_box
std::vector< double > center_of_element_local_coordinates
void set_support_points(double const *p)
static void get_basis_functions_values_on_face(double const *local_coordinates_on_face, double *basis_functions_values_on_face)
double const * get_scaling_factors()
void unscale_support_points()
double const * get_support_points() const
void map_local_to_global(double const *local_coordinates, double *global_coordinates)
void compute_initial_guess(double *x)
std::vector< double > translation_vector
void compute_normal_to_face(unsigned int face, double const *local_coordinates_on_face, double *normal_vector)
void compute_rotation_tensor(double const *local_coordinates, double const *displacement_values, double *rotation_tensor_values)
static void get_basis_functions_values(double const *local_coordinates, double *basis_functions_values)
std::vector< double > jacobian_matrix
void clear_triangles_ptr(std::vector< triangle_t * > &triangles_ptr)
void compute_scaling_factors()
void compute_residual_vector(double const *x, double *f)
std::vector< double > inverse_jacobian_matrix_times_residual_vector
std::vector< double > inverse_jacobian_matrix_at_center_of_element
void compute_normal_to_face(unsigned int f, double const *local_coordinates, double const *global_coordinates, double *normal_to_face)
void compute_jacobian_matrix(double const *x, double *J)
bool scaling_factors_updated
bool translation_vector_updated
static unsigned int const * get_face(unsigned int i)
void build_bounding_box()
static unsigned int faces[24]
std::vector< double > inverse_jacobian_matrix
void project_on_face(unsigned int f, double const *local_coordinates, double *local_coordinates_on_face, double *shift_global_coordinates)
bool center_of_element_data_updated
double solve_newton(double *x, double abs_tol=1.0e-14, double rel_tol=1.0e-14, unsigned int max_iter=100, bool verbose=false)
void scale_support_points()
bool bounding_polyhedron_updated
std::vector< double > scaling_factors
std::vector< double > jacobian_matrix_at_center_of_element
std::vector< triangle_t * > bounding_polyhedron
static void get_local_coordinates_on_face(double const *basis_functions_values_on_face, double *local_coordinates_on_face)
std::vector< double > basis_functions_derivatives
double support_points[24]
std::vector< double > basis_functions_values
double compute_inverse_3_by_3_matrix(double const *mat, double *inv)
void compute_traction(double const *stress_tensor, double const *normal_vector, double *traction)
void compute_n_by_n_matrix_times_vector(unsigned int n, double const *mat, double const *vec, double *res)
void compute_constitutive_matrix(double const youngs_modulus, double const poissons_ratio, double *constitutive_matrix)
double compute_von_mises_stress(double const *stress_tensor)
void compute_stress_tensor(double const *constitutive_matrix, double const *strain_tensor, double *stress_tensor)