Advanced Multi-Physics (AMP)
On-Line Documentation
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
hex8_element_t Class Reference

#include <hex8_element_t.h>

Public Member Functions

void compute_normal_to_face (unsigned int f, double const *local_coordinates, double const *global_coordinates, double *normal_to_face)
 
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)
 
void compute_strain_tensor (double const *local_coordinates, double const *displacement_values, double *strain_tensor_values)
 
bool contains_point (double const *coordinates, bool coordinates_are_local=false, double tolerance=1.0e-12)
 
double const * get_bounding_box ()
 
triangle_t ** get_bounding_polyhedron ()
 
double const * get_scaling_factors ()
 
double const * get_support_point (unsigned int i) const
 
double const * get_support_points () const
 
 hex8_element_t (double const *p)
 
void map_global_to_local (double const *global_coordinates, double *local_coordinates)
 
void map_local_to_global (double const *local_coordinates, double *global_coordinates)
 
void project_on_face (unsigned int f, double const *local_coordinates, double *local_coordinates_on_face, double *shift_global_coordinates)
 
void scale_support_points ()
 
void set_support_points (double const *p)
 
void unscale_support_points ()
 
bool within_bounding_box (double const *p, double tolerance=1.0e-12)
 
bool within_bounding_polyhedron (double const *p, double tolerance=1.0e-12)
 
 ~hex8_element_t ()
 

Static Public Member Functions

static void get_basis_functions_derivatives (double const *local_coordinates, double *basis_functions_derivatives)
 
static void get_basis_functions_values (double const *local_coordinates, double *basis_functions_values)
 
static void get_basis_functions_values_on_face (double const *local_coordinates_on_face, double *basis_functions_values_on_face)
 
static unsigned int const * get_face (unsigned int i)
 
static unsigned int const * get_faces ()
 
static void get_local_coordinates_on_face (double const *basis_functions_values_on_face, double *local_coordinates_on_face)
 
static void get_normal_to_face (double const **support_points_ptr, double const *local_coordinates_on_face, double *normal_vector)
 
static void map_face_to_local (unsigned int face, double const *local_coordinates_on_face, double *local_coordinates)
 
static void map_local_to_face (unsigned int face, double const *local_coordinates, double *local_coordinates_on_face)
 

Private Member Functions

void build_bounding_box ()
 
void build_bounding_polyhedron ()
 
void clear_triangles_ptr (std::vector< triangle_t * > &triangles_ptr)
 
void compute_center_of_element_data ()
 
void compute_initial_guess (double *x)
 
void compute_jacobian_matrix (double const *x, double *J)
 
void compute_residual_vector (double const *x, double *f)
 
void compute_scaling_factors ()
 
void compute_translation_vector ()
 
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)
 

Private Attributes

std::vector< double > basis_functions_derivatives
 
std::vector< double > basis_functions_values
 
std::vector< double > bounding_box
 
bool bounding_box_updated
 
std::vector< triangle_t * > bounding_polyhedron
 
bool bounding_polyhedron_updated
 
bool center_of_element_data_updated
 
std::vector< double > center_of_element_global_coordinates
 
std::vector< double > center_of_element_local_coordinates
 
std::vector< double > inverse_jacobian_matrix
 
std::vector< double > inverse_jacobian_matrix_at_center_of_element
 
std::vector< double > inverse_jacobian_matrix_times_residual_vector
 
std::vector< double > jacobian_matrix
 
std::vector< double > jacobian_matrix_at_center_of_element
 
bool memory_allocated_for_newton
 
double point_candidate [3]
 
std::vector< double > residual_vector
 
std::vector< double > scaling_factors
 
bool scaling_factors_updated
 
double support_points [24]
 
bool support_points_scaled
 
bool support_points_translated
 
std::vector< triangle_t * > tmp_triangles_ptr
 
std::vector< double > translation_vector
 
bool translation_vector_updated
 

Static Private Attributes

static unsigned int faces [24]
 

Detailed Description

Definition at line 22 of file hex8_element_t.h.

Constructor & Destructor Documentation

◆ hex8_element_t()

hex8_element_t::hex8_element_t ( double const *  p)
explicit

◆ ~hex8_element_t()

hex8_element_t::~hex8_element_t ( )

Member Function Documentation

◆ build_bounding_box()

void hex8_element_t::build_bounding_box ( )
private

◆ build_bounding_polyhedron()

void hex8_element_t::build_bounding_polyhedron ( )
private

◆ clear_triangles_ptr()

void hex8_element_t::clear_triangles_ptr ( std::vector< triangle_t * > &  triangles_ptr)
private

◆ compute_center_of_element_data()

void hex8_element_t::compute_center_of_element_data ( )
private

◆ compute_initial_guess()

void hex8_element_t::compute_initial_guess ( double *  x)
private

◆ compute_jacobian_matrix()

void hex8_element_t::compute_jacobian_matrix ( double const *  x,
double *  J 
)
private

◆ compute_normal_to_face() [1/2]

void hex8_element_t::compute_normal_to_face ( unsigned int  f,
double const *  local_coordinates,
double const *  global_coordinates,
double *  normal_to_face 
)

◆ compute_normal_to_face() [2/2]

void hex8_element_t::compute_normal_to_face ( unsigned int  face,
double const *  local_coordinates_on_face,
double *  normal_vector 
)

◆ compute_residual_vector()

void hex8_element_t::compute_residual_vector ( double const *  x,
double *  f 
)
private

◆ compute_rotation_tensor()

void hex8_element_t::compute_rotation_tensor ( double const *  local_coordinates,
double const *  displacement_values,
double *  rotation_tensor_values 
)

◆ compute_scaling_factors()

void hex8_element_t::compute_scaling_factors ( )
private

◆ compute_strain_tensor()

void hex8_element_t::compute_strain_tensor ( double const *  local_coordinates,
double const *  displacement_values,
double *  strain_tensor_values 
)

◆ compute_translation_vector()

void hex8_element_t::compute_translation_vector ( )
private

◆ contains_point()

bool hex8_element_t::contains_point ( double const *  coordinates,
bool  coordinates_are_local = false,
double  tolerance = 1.0e-12 
)

◆ get_basis_functions_derivatives()

static void hex8_element_t::get_basis_functions_derivatives ( double const *  local_coordinates,
double *  basis_functions_derivatives 
)
static

◆ get_basis_functions_values()

static void hex8_element_t::get_basis_functions_values ( double const *  local_coordinates,
double *  basis_functions_values 
)
static

◆ get_basis_functions_values_on_face()

static void hex8_element_t::get_basis_functions_values_on_face ( double const *  local_coordinates_on_face,
double *  basis_functions_values_on_face 
)
static

◆ get_bounding_box()

double const * hex8_element_t::get_bounding_box ( )

◆ get_bounding_polyhedron()

triangle_t ** hex8_element_t::get_bounding_polyhedron ( )

◆ get_face()

static unsigned int const * hex8_element_t::get_face ( unsigned int  i)
static

◆ get_faces()

static unsigned int const * hex8_element_t::get_faces ( )
static

◆ get_local_coordinates_on_face()

static void hex8_element_t::get_local_coordinates_on_face ( double const *  basis_functions_values_on_face,
double *  local_coordinates_on_face 
)
static

◆ get_normal_to_face()

static void hex8_element_t::get_normal_to_face ( double const **  support_points_ptr,
double const *  local_coordinates_on_face,
double *  normal_vector 
)
static

◆ get_scaling_factors()

double const * hex8_element_t::get_scaling_factors ( )

◆ get_support_point()

double const * hex8_element_t::get_support_point ( unsigned int  i) const

◆ get_support_points()

double const * hex8_element_t::get_support_points ( ) const

◆ map_face_to_local()

static void hex8_element_t::map_face_to_local ( unsigned int  face,
double const *  local_coordinates_on_face,
double *  local_coordinates 
)
static

◆ map_global_to_local()

void hex8_element_t::map_global_to_local ( double const *  global_coordinates,
double *  local_coordinates 
)

◆ map_local_to_face()

static void hex8_element_t::map_local_to_face ( unsigned int  face,
double const *  local_coordinates,
double *  local_coordinates_on_face 
)
static

◆ map_local_to_global()

void hex8_element_t::map_local_to_global ( double const *  local_coordinates,
double *  global_coordinates 
)

◆ project_on_face()

void hex8_element_t::project_on_face ( unsigned int  f,
double const *  local_coordinates,
double *  local_coordinates_on_face,
double *  shift_global_coordinates 
)

◆ scale_support_points()

void hex8_element_t::scale_support_points ( )

◆ set_support_points()

void hex8_element_t::set_support_points ( double const *  p)

◆ solve_newton()

double hex8_element_t::solve_newton ( double *  x,
double  abs_tol = 1.0e-14,
double  rel_tol = 1.0e-14,
unsigned int  max_iter = 100,
bool  verbose = false 
)
private

◆ unscale_support_points()

void hex8_element_t::unscale_support_points ( )

◆ within_bounding_box()

bool hex8_element_t::within_bounding_box ( double const *  p,
double  tolerance = 1.0e-12 
)

◆ within_bounding_polyhedron()

bool hex8_element_t::within_bounding_polyhedron ( double const *  p,
double  tolerance = 1.0e-12 
)

Member Data Documentation

◆ basis_functions_derivatives

std::vector<double> hex8_element_t::basis_functions_derivatives
private

Definition at line 183 of file hex8_element_t.h.

◆ basis_functions_values

std::vector<double> hex8_element_t::basis_functions_values
private

Definition at line 182 of file hex8_element_t.h.

◆ bounding_box

std::vector<double> hex8_element_t::bounding_box
private

Definition at line 166 of file hex8_element_t.h.

◆ bounding_box_updated

bool hex8_element_t::bounding_box_updated
private

Definition at line 163 of file hex8_element_t.h.

◆ bounding_polyhedron

std::vector<triangle_t *> hex8_element_t::bounding_polyhedron
private

Definition at line 167 of file hex8_element_t.h.

◆ bounding_polyhedron_updated

bool hex8_element_t::bounding_polyhedron_updated
private

Definition at line 164 of file hex8_element_t.h.

◆ center_of_element_data_updated

bool hex8_element_t::center_of_element_data_updated
private

Definition at line 171 of file hex8_element_t.h.

◆ center_of_element_global_coordinates

std::vector<double> hex8_element_t::center_of_element_global_coordinates
private

Definition at line 173 of file hex8_element_t.h.

◆ center_of_element_local_coordinates

std::vector<double> hex8_element_t::center_of_element_local_coordinates
private

Definition at line 172 of file hex8_element_t.h.

◆ faces

unsigned int hex8_element_t::faces[24]
staticprivate

Definition at line 154 of file hex8_element_t.h.

◆ inverse_jacobian_matrix

std::vector<double> hex8_element_t::inverse_jacobian_matrix
private

Definition at line 180 of file hex8_element_t.h.

◆ inverse_jacobian_matrix_at_center_of_element

std::vector<double> hex8_element_t::inverse_jacobian_matrix_at_center_of_element
private

Definition at line 175 of file hex8_element_t.h.

◆ inverse_jacobian_matrix_times_residual_vector

std::vector<double> hex8_element_t::inverse_jacobian_matrix_times_residual_vector
private

Definition at line 181 of file hex8_element_t.h.

◆ jacobian_matrix

std::vector<double> hex8_element_t::jacobian_matrix
private

Definition at line 179 of file hex8_element_t.h.

◆ jacobian_matrix_at_center_of_element

std::vector<double> hex8_element_t::jacobian_matrix_at_center_of_element
private

Definition at line 174 of file hex8_element_t.h.

◆ memory_allocated_for_newton

bool hex8_element_t::memory_allocated_for_newton
private

Definition at line 177 of file hex8_element_t.h.

◆ point_candidate

double hex8_element_t::point_candidate[3]
private

Definition at line 134 of file hex8_element_t.h.

◆ residual_vector

std::vector<double> hex8_element_t::residual_vector
private

Definition at line 178 of file hex8_element_t.h.

◆ scaling_factors

std::vector<double> hex8_element_t::scaling_factors
private

Definition at line 158 of file hex8_element_t.h.

◆ scaling_factors_updated

bool hex8_element_t::scaling_factors_updated
private

Definition at line 157 of file hex8_element_t.h.

◆ support_points

double hex8_element_t::support_points[24]
private

Definition at line 133 of file hex8_element_t.h.

◆ support_points_scaled

bool hex8_element_t::support_points_scaled
private

Definition at line 156 of file hex8_element_t.h.

◆ support_points_translated

bool hex8_element_t::support_points_translated
private

Definition at line 159 of file hex8_element_t.h.

◆ tmp_triangles_ptr

std::vector<triangle_t *> hex8_element_t::tmp_triangles_ptr
private

Definition at line 168 of file hex8_element_t.h.

◆ translation_vector

std::vector<double> hex8_element_t::translation_vector
private

Definition at line 161 of file hex8_element_t.h.

◆ translation_vector_updated

bool hex8_element_t::translation_vector_updated
private

Definition at line 160 of file hex8_element_t.h.


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



Advanced Multi-Physics (AMP)
Oak Ridge National Laboratory
Idaho National Laboratory
Los Alamos National Laboratory
This page automatically produced from the
source code by doxygen
Last updated: Tue Mar 10 2026 13:06:41.
Comments on this page