#include <Face.h>
Data Fields | |
mesh_node * | n [4] |
int | index |
tetra_element_linear * | e |
int | ssint_interaction_type |
scalar | area_0 |
scalar | area |
vector3 | normal |
vector3 | centroid |
vector3 | force [4] |
SecondOrderFunctions::stu | centroid_stu |
bool | ssint_xz_interaction_flag |
bool | kinetically_active |
Blob * | daddy_blob |
int | num_blobs |
Private Attributes | |
int | stuff |
bool | dealloc_n3 |
Face::Face | ( | ) |
Face::~Face | ( | ) |
void Face::add_force_to_node | ( | int | i, |
vector3 * | f | ||
) |
void Face::add_force_to_node | ( | int | i, |
brr3 & | f | ||
) |
void Face::add_force_to_node_atomic | ( | int | i, |
vector3 * | f | ||
) |
scalar Face::average_phi | ( | ) |
Returns the average electrostatic potential of this face
Calculate the point p on this triangle given the barycentric coordinates b1, b2, b3. Altered to act periodically around box boundaries.
Referenced by BEM_Poisson_Boltzmann::build_BEM_matrices(), VdW_solver::do_gensoft_interaction(), VdW_solver::do_lj_interaction(), VdW_solver::do_sticky_xz_interaction(), GaussianQuadrature_tri::integrate_face_to_face(), and GaussianQuadrature_tri::integrate_point_to_face().
void Face::barycentric_calc_point_f2 | ( | scalar | b1, |
scalar | b2, | ||
scalar | b3, | ||
vector3 * | p, | ||
scalar * | blob_corr, | ||
int | f1_daddy_blob_index, | ||
int | f2_daddy_blob_index | ||
) |
Referenced by VdW_solver::do_gensoft_interaction(), and VdW_solver::do_lj_interaction().
int Face::build_opposite_node | ( | ) |
Referenced by Blob::add_steric_nodes().
void Face::calc_area_normal_centroid | ( | ) |
Referenced by build_opposite_node(), Blob::calc_all_centroids(), and init().
bool Face::checkTetraIntersection | ( | Face * | f2 | ) |
Check whether the tetrahedron formed by this face an the opposite linear node does intersect with the corresponding tetrahedron in f2 Returns true if there is intersection. Uses the "Fast Tetrahedron-Tetrahedron Overlap Algorithm". It calls some private functions.
Referenced by GenSoftSSINT_solver::do_interaction(), Steric_solver::do_interaction(), and LJSteric_solver::do_interaction().
bool Face::checkTetraIntersection | ( | Face * | f2, |
scalar * | blob_corr, | ||
int | f1_daddy_blob_index, | ||
int | f2_daddy_blob_index | ||
) |
Check whether the tetrahedron formed by this face an the opposite linear node does intersect with the corresponding tetrahedron in f2. If so, return the overlapping volume, otherwise return 0. Uses the "Fast Tetrahedron-Tetrahedron Overlap Algorithm" for checking if interaction occurs.
scalar Face::checkTetraIntersectionAndGetVolume | ( | Face * | f2, |
scalar * | blob_corr, | ||
int | f1_daddy_blob_index, | ||
int | f2_daddy_blob_index | ||
) |
scalar Face::get_area | ( | ) |
Referenced by Blob::apply_ctforces().
vector3 * Face::get_centroid | ( | ) |
Referenced by print_centroid().
scalar Face::get_normal_flux | ( | ) |
Referenced by Blob::solve_poisson().
Get the volume that the enclose the intersection of the tetrahedron formed by this face an the opposite linear node with the corresponding tetrahedron in f2. It calls volumeIntersection, at volumeIntersection.h
scalar Face::getTetraIntersectionVolume | ( | Face * | f2, |
scalar * | blob_corr, | ||
int | f1_daddy_blob_index, | ||
int | f2_daddy_blob_index | ||
) |
Get the volume and area that the enclose the intersection of the tetrahedron formed by this face an the opposite linear node with the corresponding tetrahedron in f2. It calls volumeIntersection, at volumeIntersection.h
void Face::getTetraIntersectionVolumeAndArea | ( | Face * | f2, |
geoscalar & | vol, | ||
geoscalar & | area, | ||
scalar * | blob_corr, | ||
int | f1_daddy_blob_index, | ||
int | f2_daddy_blob_index | ||
) |
bool Face::getTetraIntersectionVolumeTotalGradientAndShapeFunctions | ( | Face * | f2, |
geoscalar | dr, | ||
grr3 & | dVdr, | ||
geoscalar & | vol, | ||
grr4 & | phi1, | ||
grr4 & | phi2 | ||
) |
Get the volume that enclose the intersection of the tetrahedron formed by this face an the opposite linear node with the corresponding tetrahedron in f2. In addition, return the gradient of this volume, calculated as dV/dx,dV/dy,dV/dz, and the internal coordinates of the point where the force is applied. It calls 4 times volumeIntersection. This version works well for the double loop i<j.
Referenced by VdW_solver::do_steric_interaction().
bool Face::getTetraIntersectionVolumeTotalGradientAndShapeFunctions | ( | Face * | f2, |
geoscalar | dr, | ||
grr3 & | dVdr, | ||
geoscalar & | vol, | ||
grr4 & | phi1, | ||
grr4 & | phi2, | ||
scalar * | blob_corr, | ||
int | f1_daddy_blob_index, | ||
int | f2_daddy_blob_index | ||
) |
int Face::init | ( | int | index, |
tetra_element_linear * | e, | ||
mesh_node * | n0, | ||
mesh_node * | n1, | ||
mesh_node * | n2, | ||
mesh_node * | oposite, | ||
SecondOrderFunctions::stu | centroid_stu, | ||
Blob * | daddy_blob, | ||
SimulationParams * | params | ||
) |
Referenced by Blob::load_surface(), and Blob::load_surface_no_topology().
int Face::init | ( | int | index, |
mesh_node * | n0, | ||
mesh_node * | n1, | ||
mesh_node * | n2, | ||
mesh_node * | opposite, | ||
Blob * | daddy_blob, | ||
SimulationParams * | params | ||
) |
bool Face::is_kinetic_active | ( | ) |
Referenced by VdW_solver::solve().
bool Face::is_ssint_active | ( | ) |
scalar Face::length_of_longest_edge | ( | ) |
Referenced by Blob::calc_rest_state_info().
void Face::print_centroid | ( | ) |
void Face::print_nodes | ( | ) |
void Face::set_kinetic_state | ( | bool | state | ) |
Referenced by Blob::kinetically_set_faces().
void Face::set_ssint_interaction_type | ( | int | ssint_interaction_type | ) |
Referenced by Blob::load_ssint().
void Face::set_ssint_xz_interaction_flag | ( | bool | state | ) |
Referenced by VdW_solver::solve_sticky_wall().
template void Face::vec3Vec3SubsToArr3Mod< grr3 > | ( | Face * | f2, |
brr3 & | w, | ||
scalar * | blob_corr, | ||
int | f1_daddy_blob_index, | ||
int | f2_daddy_blob_index | ||
) |
void Face::zero_force | ( | ) |
Referenced by build_opposite_node(), Face(), init(), Blob::zero_force(), and ~Face().
scalar Face::area |
Last calculated area (by most recent call to calc_area_normal_centroid())
Referenced by build_opposite_node(), calc_area_normal_centroid(), VdW_solver::do_gensoft_interaction(), VdW_solver::do_lj_interaction(), VdW_solver::do_sticky_xz_interaction(), BEM_Poisson_Boltzmann::gauss_quadrature_4_point(), get_area(), Blob::get_ssint_area(), getTetraIntersectionVolumeAndArea(), init(), GaussianQuadrature_tri::integrate_face_to_face(), and GaussianQuadrature_tri::integrate_point_to_face().
scalar Face::area_0 |
Initial, equilibrium area of this face
Referenced by Face(), init(), Blob::load_surface(), Blob::load_surface_no_topology(), and ~Face().
vector3 Face::centroid |
Last calculated centroid (by most recent call to calc_area_normal_centroid())
Referenced by BEM_Poisson_Boltzmann::build_BEM_matrices(), build_opposite_node(), calc_area_normal_centroid(), VdW_solver::consider_interaction(), get_centroid(), BEM_Poisson_Boltzmann::perform_integrals_for_lookup_cell_relative(), and BEM_Poisson_Boltzmann::perform_integrals_for_lookup_cell_self().
SecondOrderFunctions::stu Face::centroid_stu |
Stores the natural (shape function) coords of the centroid of this face in the parent element
Referenced by get_normal_flux(), and init().
Blob* Face::daddy_blob |
Referenced by VdW_solver::consider_interaction(), VdW_solver::do_gensoft_interaction(), LJSteric_solver::do_interaction(), GenSoftSSINT_solver::do_interaction(), Steric_solver::do_interaction(), VdW_solver::do_lj_interaction(), VdW_solver::do_steric_interaction(), Face(), init(), VdW_solver::solve(), and ~Face().
|
private |
Referenced by build_opposite_node(), Face(), and ~Face().
tetra_element_linear* Face::e |
Pointer to the element this is a face of
Referenced by Face(), get_normal_flux(), init(), and ~Face().
vector3 Face::force[4] |
Stores the current force applied to this face. The first 3 "vectors" are to those surface nodes that define this face, while the last one belongs to the opposite node of the linear tetrahedron
Referenced by add_force_to_node(), add_force_to_node_atomic(), Blob::aggregate_forces_and_solve(), and zero_force().
int Face::index |
Index of this face
Referenced by init().
bool Face::kinetically_active |
Referenced by Face(), is_kinetic_active(), set_kinetic_state(), and ~Face().
mesh_node* Face::n[4] |
The first 3 pointers are to those surface nodes that define this face, while the last one belongs to the opposite node of the linear tetrahedron
Referenced by Blob::aggregate_forces_and_solve(), average_phi(), barycentric_calc_point(), barycentric_calc_point_f2(), BEM_Poisson_Boltzmann::build_BEM_matrices(), build_opposite_node(), calc_area_normal_centroid(), checkTetraIntersection(), checkTetraIntersectionAndGetVolume(), VdW_solver::consider_interaction(), Face(), get_area(), get_centroid(), getTetraIntersectionVolume(), getTetraIntersectionVolumeAndArea(), getTetraIntersectionVolumeTotalGradientAndShapeFunctions(), Blob::init(), init(), length_of_longest_edge(), Blob::move(), print_nodes(), Blob::solve_poisson(), vec3Vec3SubsToArr3Mod(), and ~Face().
vector3 Face::normal |
Last calculated normal (by most recent call to calc_area_normal_centroid())
Referenced by build_opposite_node(), calc_area_normal_centroid(), VdW_solver::consider_interaction(), VdW_solver::do_sticky_xz_interaction(), BEM_Poisson_Boltzmann::gauss_quadrature_4_point(), and get_normal_flux().
int Face::num_blobs |
vdw measurement info
Referenced by barycentric_calc_point_f2(), checkTetraIntersection(), checkTetraIntersectionAndGetVolume(), Face(), getTetraIntersectionVolume(), getTetraIntersectionVolumeAndArea(), getTetraIntersectionVolumeTotalGradientAndShapeFunctions(), init(), vec3Vec3SubsToArr3Mod(), and ~Face().
int Face::ssint_interaction_type |
Van der Waals interaction type
Referenced by VdW_solver::do_gensoft_interaction(), VdW_solver::do_lj_interaction(), VdW_solver::do_sticky_xz_interaction(), Face(), is_ssint_active(), set_ssint_interaction_type(), and ~Face().
bool Face::ssint_xz_interaction_flag |
Referenced by Face(), set_ssint_xz_interaction_flag(), and ~Face().
|
private |