22 #include "a_segment.h"
39 static const std::string
help();
45 int rv(
const int i)
const;
51 a_point
v(
const int i)
const;
53 a_point *
vl(
const int i);
54 a_point *
vl(
const int i)
const;
56 a_point
vc(
const int i)
const;
60 virtual a_point
cl()
const = 0;
62 virtual void grow(
const double& val) = 0;
64 virtual a_point
normale(
const unsigned short i);
66 virtual a_point
point(
const double& u,
const double&
v = 0.)
const;
68 virtual void slide(
const double& u,
const double&
v);
70 void deform(
const unsigned short& i,
const double& val);
75 virtual double S()
const = 0;
83 virtual a_point
nx()
const = 0;
85 virtual a_point
ny()
const = 0;
93 virtual double dyM()
const;
95 virtual double dym()
const;
103 virtual double N()
const;
106 virtual double Qx()
const;
108 virtual double Qy()
const;
110 virtual double Mt()
const;
112 virtual double Mx()
const;
115 virtual double My()
const;
122 virtual a_point
x()
const;
123 virtual a_point
x(
const a_wrench&)
const;
137 void f(
const a_point&
f);
139 void f(
const double fx,
const double fy,
const double fz);
145 virtual void clear();
163 a_point
hinge()
const;
172 virtual void read(std::istream &i);
173 virtual void write(std::ostream &o)
const;
virtual a_point normal() const =0
normal to the face (in world coordinate)
virtual double Mt() const
get torque on the face
virtual double Qy() const
get shear force on the face
a_face * lface() const
get connected face
friend std::ostream & operator<<(std::ostream &o, const a_face &b)
a_wrench * f_
force on the face
virtual a_point contactpoint() const =0
return point of contact if faces just touch by one point
virtual void slide(const double &u, const double &v)
slide the face in its plane
a_face * lface_
face in contact
std::vector< int > r_vertices_
references to the points of the block defining the face
virtual double dyM() const
distance from center to max y
void clear0()
clear the object
virtual a_point nx() const =0
direction of face (in world coordinate)
virtual double Qx() const
get shear force on the face
virtual void read(std::istream &i)
virtual a_point normale(const unsigned short i)
return the edge normal
int rv(const int i) const
get vertex reference
a_point hinge() const
hinge opening: rotation vector
virtual void grow(const double &val)=0
grow the face centered on middle point
bool ok() const
check if forces on face are acceptable
bool in() const
face is connected to other faces, inside the structure
double exy() const
excentricity in y direction
virtual void clear()
set force to 0
void lface(a_face *f)
set connected face
int nv() const
get number of vertices
virtual a_segment contactsegment() const =0
return edge of contact if faces touch by one edge: hinge
a_point c() const
centre of mass (in world coordinate)
virtual double Mx() const
get torque on the face
void exit(bool exit)
set as an exit face
virtual a_point x() const
application point of f on face
void deform(const unsigned short &i, const double &val)
slide a given edge
int rf() const
get face reference in connected block
virtual a_plane plane() const =0
plane defined by face
a_point vc(const int i) const
vertex (relative to centre of gravity)
static const std::string help()
get information about the class
int ref_
reference of face in a_block
double ay() const
get angle of incidence in yn plane
virtual void write(std::ostream &o) const
double Sx() const
projection of surface perp to x (in world coordinate)
double dxm() const
distance from center to min x
double Sy() const
projection of surface perp to y (in world coordinate)
double exn() const
excentricity in normal direction (should be 0)
virtual a_contact contactface() const =0
return common surface of contact
virtual double S() const =0
Surface.
a_point * vl(const int i)
get vertex (in local coordinate)
virtual double N() const
get normal force on the face
virtual int contacttype() const =0
contact type: (-2: no sister face, -1: not touching, 2: plane contact, 1: edge contact,...
virtual a_point point(const double &u, const double &v=0.) const
get point on face given excentricities
a_wrench * fp()
get point of the force on the face
a_point v(const int i) const
get vertex (in world coordinate)
virtual double My() const
get torque on the face
double ax() const
get angle of incidence in xn plane
double Sz() const
projection of surface perp to z (in world coordinate)
friend std::istream & operator>>(std::istream &i, a_face &b)
: input/output
double dxM() const
distance from center to max x
a_wrench f() const
get force on the face
a_fcriteria * criteria_
resistance criteria
void f(const a_wrench &f)
set force on the face
void av(int ref)
add a vertex reference
virtual a_point ny() const =0
normal to the vertices of the block (in world coordinate)
bool out() const
face is not connected to other faces, on the boudary
virtual double dym() const
distance from center to min y
a_block * lblock() const
get connected block
double exx() const
excentricity in x direction
a_block * block_
block to which the face belongs
double penalty() const
penalty value used for optimization
virtual a_point cl() const =0
centre of mass (in local system)
a_block * block()
get block
void criteria(a_fcriteria *criteria)
set resistance criteria