25 #ifndef _PROPAGATION_3_H_
26 #define _PROPAGATION_3_H_
63 virtual double time_stepping(
const COM::Attribute *spd,
double dt,
64 COM::Attribute *disps,
int *smoothed=NULL)=0;
107 COM::Attribute *ctypes_nodes);
110 COM::Attribute *ctypes_bndry_edges,
111 COM::Attribute *ctypes_bndry_nodes);
126 const double rad_min,
const double rad_max,
129 const double rad_min,
const double rad_max,
133 const double bnd_min,
const double bnd_max,
136 const double bnd_min,
const double bnd_max,
137 double &
dx,
double &
dy,
double eps=0);
140 const double bnd_max,
double eps=0);
142 const double bnd_max,
double &
dx,
double eps=0);
149 return pnt[0] >= lb[0] && pnt[0] <= ub[0] &&
150 pnt[1] >= lb[1] && pnt[1] <= ub[1] &&
151 pnt[2] >= lb[2] && pnt[2] <= ub[2];
PROP_BEGIN_NAMESPACE const int MAX_LINES
#define PROP_END_NAMESPACE
void set_verbose(bool b)
Set the verbose level.
static void bound_spherical_disp(const Point_3 &pnt, const Point_3 &org, const double rad_min, const double rad_max, Vector_3 &disp, double eps=0)
COM::Attribute * _cnstr_nodes
void int int REAL REAL * y
static bool check_spherical_bound(const Point_3 &pnt, const Point_3 &org, const double rad_min, const double rad_max, double eps=0)
static bool reached_nodal_bound(const Point_3 &pnt, const double *bnd, double eps=0)
#define PROP_BEGIN_NAMESPACE
COM::Attribute * _cnstr_faces
void determine_constraint_boundary(const COM::Attribute *ctypes_faces, COM::Attribute *ctypes_bndry_edges, COM::Attribute *ctypes_bndry_nodes)
Convert facial or panel constraints to nodal constraints.
static void enforce_nodal_constraint(int type, Vector_3 &du)
Enforce constraint for a specific vector.
virtual double time_stepping(const COM::Attribute *spd, double dt, COM::Attribute *disps, int *smoothed=NULL)=0
Main entry for invoking a surface propagation algorithm.
static void bound_axial_disp(const double x, const double bnd_min, const double bnd_max, double &dx, double eps=0)
void convert_constraints(const COM::Attribute *ctypes_faces, COM::Attribute *ctypes_nodes)
Convert facial constraints to nodal constraints.
void bound_facial_speed(COM::Attribute *fa)
COM::Attribute * _cnstr_bound
void set_bounds(const COM::Attribute *bnd)
Set the bounds.
std::vector< COM::Pane * > _panes
Point object that represents a single point.
static double square(double x)
virtual void bound_nodal_motion(COM::Attribute *disps)
static bool check_axial_bound(const double x, const double bnd_min, const double bnd_max, double eps=0)
static void bound_radial_disp(const double x, const double y, const double bnd_min, const double bnd_max, double &dx, double &dy, double eps=0)
SURF::Window_manifold_2 Manifold
virtual void set_constraints(const COM::Attribute *cnstr_types)
Set the types and directions of nodal constraints.
static bool check_radial_bound(const double x, const double y, const double bnd_min, const double bnd_max, double eps=0)
COM::Attribute * _cnstr_bndry_edges
COM::Attribute * _cnstr_bndry_nodes
static void get_constraint_directions(int type, int &ndirs, Vector_3 dirs[2])
Get orthonormals of the constraints.
virtual void enforce_nodal_constraints(COM::Attribute *du)
Enforces the nodal constraints by projecting motion onto given direction.
Some basic geometric data types.
This class provides some common primitives used by various propagation algorithms.
static bool in_bounding_box(const Point_3 &pnt, const Point_3 &lb, const Point_3 &ub)