#include <Rocsurf.h>
Public Member Functions | |
Rocsurf () | |
virtual | ~Rocsurf () |
virtual Window_manifold_2 * | manifold () |
Obtain a reference to the manifold. More... | |
void | initialize (const COM::Attribute *pmesh) |
Constructs the communication patterns of a distributed mesh. More... | |
void | compute_normals (const COM::Attribute *mesh, COM::Attribute *nrm, const int *scheme=NULL) |
Computes nodal or elemental normals of a given window. More... | |
void | compute_mcn (COM::Attribute *mcn, COM::Attribute *lbmcn) |
Computes nodal or elemental normals of a given window. More... | |
void | serialize_mesh (const COM::Attribute *inmesh, COM::Attribute *outmesh) |
Serialize the mesh of a given window. More... | |
void | compute_edge_lengths (double *lave, double *lmin, double *lmax) |
Computes edge lengths of a given window. More... | |
void | elements_to_nodes (const COM::Attribute *elem_vals, COM::Attribute *nodal_vals, const COM::Attribute *mesh=NULL, const int *scheme=NULL, const COM::Attribute *elem_weights=NULL, COM::Attribute *nodal_weights=NULL) |
Computes nodal or elemental normals of a given window. More... | |
Static Public Member Functions | |
static void | load (const std::string &mname) |
Loads Rocsurf onto Roccom with a given module name. More... | |
static void | unload (const std::string &mname) |
Unloads Rocsurf from Roccom. More... | |
static void | interpolate_to_centers (const COM::Attribute *x, COM::Attribute *z) |
Interpolates nodal coordinates to element centers. More... | |
static void | integrate (const COM::Attribute *x, double *z) |
Integrate a function given by an elemental attribute over surface z is an array of size equal to number of components of x. More... | |
static void | compute_element_areas (COM::Attribute *areas, const COM::Attribute *pnts=NULL) |
Computes the area of each face of the surface mesh of window areas->window and saves the results in attribute areas. More... | |
static void | compute_element_normals (COM::Attribute *nrm, const int *to_normalize=NULL, const COM::Attribute *pnts=NULL) |
Computes elemental normals of a given window. More... | |
static void | compute_bounded_volumes (const COM::Attribute *old_location, const COM::Attribute *new_location, COM::Attribute *volumes, void *flag=NULL) |
Computes the volume bounded between two different locations of each face of the surface mesh of window volumes->window. More... | |
static void | compute_swept_volumes (const COM::Attribute *location, const COM::Attribute *disps, COM::Attribute *volumes, void *flag=NULL) |
Computes the swept volume by a given displacement of each face of the surface mesh of window volumes->window. More... | |
static void | compute_center (const COM::Attribute *mesh, Vector_3< double > &cnt) |
Computes the center of a body. More... | |
static void | compute_signed_volumes (const COM::Attribute *mesh, double *vol) |
Computes the signed volume of a body. More... | |
Protected Types | |
enum | { SURF_COOKIE =7627873 } |
Protected Member Functions | |
int | validate_object () const |
Static Protected Member Functions | |
template<class T > | |
static void | normalize (T *a, int size) throw (int) |
Protected Attributes | |
Window_manifold_2 * | _wm |
int | _cookie |
Static Protected Attributes | |
static const int | scheme_vals [] = {E2N_USER, E2N_ONE, E2N_AREA, E2N_ANGLE} |
|
protected |
|
inline |
Definition at line 44 of file Rocsurf.h.
Referenced by load().
|
static |
Computes the volume bounded between two different locations of each face of the surface mesh of window volumes->window.
Typically, the two locations of the surface correspond to the surface at two different snapshots of a simulation.
old_location | stores the old nodal coordinates. |
new_location | stores the new nodal coordinates. |
volumes | stores the bounded volume for each element. |
If | flag is present, then only compute volume for elements whose corresponding value of the volume attribute was set to nonzero value. |
Definition at line 108 of file compute_bounded_volumes.C.
References arrange(), get_face_volume(), i, j, Element_node_enumerator::next(), normalize_coor(), Element_node_vectors_k_const< Value >::set(), Element_node_enumerator::size_of_edges(), and volume().
Referenced by load().
|
static |
Computes the center of a body.
Definition at line 291 of file compute_bounded_volumes.C.
References COM_NC, COMMPI_Initialized(), i, j, and MPI_SUM.
Referenced by compute_signed_volumes().
void compute_edge_lengths | ( | double * | lave, |
double * | lmin, | ||
double * | lmax | ||
) |
Computes edge lengths of a given window.
Definition at line 87 of file Rocsurf.C.
References _wm, ACROSS_PANE, COMMPI_Initialized(), i, iend, Halfedge::is_border(), max(), min(), MPI_MAX, MPI_MIN, MPI_SUM, Halfedge::next(), Vector_3< Type >::norm(), Halfedge::opposite(), Window_manifold_2::pm_begin(), Window_manifold_2::pm_end(), Halfedge::tangent(), and Window_manifold_2::window().
Referenced by load(), and Rocprop::load().
|
static |
Computes the area of each face of the surface mesh of window areas->window and saves the results in attribute areas.
If pnts is present, then use it in place of the nodal coordinates
Definition at line 41 of file compute_element_areas.C.
References COM_assertion, COM_assertion_msg, COM_compatible_types(), COM_DOUBLE, COM_NC, i, j, k, Element_node_enumerator::next(), Element_node_vectors_k_const< Value >::set(), Element_node_enumerator::size_of_edges(), and Element_node_enumerator::size_of_nodes().
Referenced by load().
|
static |
Computes elemental normals of a given window.
Normalize the normals if to_normalize is NULL (default) or its value is nonzero. If pnts is present, then use it in place of the nodal coordinates
Definition at line 32 of file compute_element_normals.C.
References COM_assertion, COM_NC, Vector_3< Type >::cross_product(), i, j, Element_node_enumerator::next(), Vector_3< Type >::normalize(), Element_node_vectors_k_const< Value >::set(), Element_node_enumerator::size_of_edges(), and Element_node_enumerator::size_of_nodes().
Referenced by Window_manifold_2::compute_nodal_normals(), Window_manifold_2::compute_normals(), and load().
void compute_mcn | ( | COM::Attribute * | mcn, |
COM::Attribute * | lbmcn | ||
) |
Computes nodal or elemental normals of a given window.
Definition at line 63 of file Rocsurf.C.
References _wm, COM_assertion_msg, Window_manifold_2::compute_mcn(), and validate_object().
Referenced by load().
void compute_normals | ( | const COM::Attribute * | mesh, |
COM::Attribute * | nrm, | ||
const int * | scheme = NULL |
||
) |
Computes nodal or elemental normals of a given window.
Definition at line 49 of file Rocsurf.C.
References _wm, COM_assertion_msg, Window_manifold_2::compute_normals(), initialize(), and validate_object().
Referenced by load().
|
static |
Computes the signed volume of a body.
Definition at line 329 of file compute_bounded_volumes.C.
References COM_NC, compute_center(), get_face_volume(), i, j, Element_node_enumerator::next(), Element_node_vectors_k_const< Value >::set(), and Element_node_enumerator::size_of_edges().
Referenced by load().
|
static |
Computes the swept volume by a given displacement of each face of the surface mesh of window volumes->window.
old_location | stores the nodal coordinates. |
disps | stores the nodal displacement. |
volumes | stores the swept volume for each element. |
If | flag is present, then only compute volume for elements whose corresponding value of the volume attribute was set to nonzero value. |
Definition at line 199 of file compute_bounded_volumes.C.
References arrange(), get_face_volume(), i, j, Element_node_enumerator::next(), normalize_coor(), Element_node_vectors_k_const< Value >::set(), Element_node_enumerator::size_of_edges(), and volume().
Referenced by load().
void elements_to_nodes | ( | const COM::Attribute * | elem_vals, |
COM::Attribute * | nodal_vals, | ||
const COM::Attribute * | mesh = NULL , |
||
const int * | scheme = NULL , |
||
const COM::Attribute * | elem_weights = NULL , |
||
COM::Attribute * | nodal_weights = NULL |
||
) |
Computes nodal or elemental normals of a given window.
Definition at line 72 of file Rocsurf.C.
References _wm, COM_assertion_msg, E2N_AREA, Window_manifold_2::elements_to_nodes(), initialize(), and validate_object().
Referenced by load().
void initialize | ( | const COM::Attribute * | pmesh | ) |
Constructs the communication patterns of a distributed mesh.
If the input is pmesh, then use the given pconn. Otherwise, compute pconn.
Definition at line 35 of file Rocsurf.C.
References _wm, COM_assertion_msg, COM_MESH, COM_PMESH, Window_manifold_2::init_communicator(), and validate_object().
Referenced by compute_normals(), elements_to_nodes(), Rocprop::initialize(), load(), serialize_mesh(), and Rocmop::smoother_specific_init().
|
static |
Integrate a function given by an elemental attribute over surface z is an array of size equal to number of components of x.
Definition at line 88 of file compute_element_areas.C.
References COM_assertion, COM_assertion_msg, COM_compatible_types(), COM_DOUBLE, COM_NC, COMMPI_Initialized(), copy, i, j, k, MPI_SUM, Element_node_enumerator::next(), Element_node_vectors_k_const< Value >::set(), Element_node_enumerator::size_of_edges(), and Element_node_enumerator::size_of_nodes().
Referenced by load().
|
static |
Interpolates nodal coordinates to element centers.
Definition at line 100 of file interpolate_to_centers.C.
References COM_DOUBLE, COM_DOUBLE_PRECISION, i, and j.
Referenced by load().
|
static |
Loads Rocsurf onto Roccom with a given module name.
Definition at line 139 of file Rocsurf.C.
References COM_DOUBLE, COM_INT, COM_INTEGER, COM_METADATA, COM_new_attribute(), COM_new_window(), COM_RAWDATA, COM_set_array_const(), COM_set_function(), COM_set_member_function(), COM_set_object(), COM_VOID, COM_window_init_done(), compute_bounded_volumes(), compute_edge_lengths(), compute_element_areas(), compute_element_normals(), compute_mcn(), compute_normals(), compute_signed_volumes(), compute_swept_volumes(), E2N_ANGLE, E2N_AREA, E2N_ONE, E2N_USER, elements_to_nodes(), initialize(), integrate(), interpolate_to_centers(), Rocsurf(), scheme_vals, and serialize_mesh().
Referenced by Rocsurf_load_module(), rocsurf_load_module(), ROCSURF_LOAD_MODULE(), rocsurf_load_module_(), and ROCSURF_LOAD_MODULE_().
|
inlinevirtual |
|
inlinestaticprotected |
void serialize_mesh | ( | const COM::Attribute * | inmesh, |
COM::Attribute * | outmesh | ||
) |
Serialize the mesh of a given window.
Definition at line 128 of file Rocsurf.C.
References _wm, COM_assertion_msg, initialize(), Window_manifold_2::serialize_window(), and validate_object().
Referenced by load().
|
static |
Unloads Rocsurf from Roccom.
Definition at line 219 of file Rocsurf.C.
References COM_delete_window(), and COM_get_object().
Referenced by Rocsurf_unload_module(), rocsurf_unload_module(), ROCSURF_UNLOAD_MODULE(), rocsurf_unload_module_(), and ROCSURF_UNLOAD_MODULE_().
|
inlineprotected |
Definition at line 156 of file Rocsurf.h.
References _cookie, and SURF_COOKIE.
Referenced by compute_mcn(), compute_normals(), elements_to_nodes(), initialize(), serialize_mesh(), and Rocprop::validate_object().
|
protected |
Definition at line 165 of file Rocsurf.h.
Referenced by validate_object().
|
protected |
Definition at line 163 of file Rocsurf.h.
Referenced by compute_edge_lengths(), compute_mcn(), compute_normals(), elements_to_nodes(), initialize(), manifold(), serialize_mesh(), and ~Rocsurf().
|
staticprotected |