9. Beam Section Properties Calculator - BeamSectCalculator

Use the BeamSectCalculator module to manage and compute the section properties of beam elements. The BeamSectCalculator module can represent either a homogeneous isotropic beam of arbitrary cross section or a composite isotropic or orthotropic beam cross section with any number of holes. Functions are provided to draw either a line or surface representation of the beam section. Overall geometric and material stiffness properties of the defined section may be computed. The BeamSectCalculator module uses the finite element method internally to compute certain section properties such as the torsional constant, effective shear factors and warping coefficient.

The functions associated with a BeamSectCalculator object are the following.

Instance a BeamSectCalculator object using vis_BeamSectCalculatorBegin(). Once a BeamSectCalculator is instanced, define the beam section type using vis_BeamSectCalculatorDef(). The BeamSectCalculator module allows four basic types of beam sections to be defined; 1) built-in parameterized geometries, 2) user defined connected line segment geometry, 3) user defined general geometries using points and line loops and 4) general beam section properties such as overall area, moments of inertia and material stiffness. If a built-in parameterized geometry such as BEAMSECT_IBEAM is defined, the geometry parameters or dimensions are input using vis_BeamSectCalculatorSetDimensionsdv().

All built-in sections and sections defined by BEAMSECT_SEGMENTS and BEAMSECT_GEOMETRY are subject to optional, user defined, rotation and/or coordinate reflections. The rotation is specified using vis_BeamSectCalculatorSetRotatedv(), the coordinate reflections are specified using vis_BeamSectCalculatorSetReflect(). These functions must be called before dimensions, segment geometry or point locations are defined. The rotations are applied first followed by the y and z coordinate reflections.

The elastic material properties for the beam section may be specified using vis_BeamSectCalculatorSetElasPropdv().

By default, BeamSectCalculator assumes a homogeneous isotropic beam. If a composite beam is to be analyzed, then the user must use vis_BeamSectCalculatorSetParami() with parameter BEAMSECT_VABS enabled. Composite beams can only be defined using type BEAMSECT_GEOMETRY. This involves defining one or more loops with possibly several materials. All other geometry types assume homogeneous isotropic beams. In this case a single material with identifer 1 is assumed. Any material properties defined using vis_BeamSectCalculatorSetElasPropdv() must use material identifier 1 and be of type SYS_MAT_ISOTROPIC.

../../_images/vistools-beam2.gif

Figure 10-2, Diagram of Beam Section Coordinate Systems and Entities

General beam section properties and material stiffnesses may be computed using vis_BeamSectCalculatorProps(). The user may access computed or previously defined beam section properties using vis_BeamSectCalculatorGetPropsdv(). All section properties managed by BeamSectCalculator are oriented with respect to the beam section yz axis system. For example, moments of inertia are about the centroid, parallel to the beam section yz system. The following section properties are maintained and computed by BeamSectCalculator:

A   , Area
Iyy , Moment of inertia about y axis through centroid
Izz , Moment of inertia about z axis through centroid
Iyz , Product of inertia with respect to centroidal axis
Ang , Angle of principal moments of inertia
J   , Torsional constant about the shear center
Ksy , Shear factor along y axis
Ksz , Shear factor along z axis
Ksyz, Coupled shear factor
Ey  , Eccentricity of centroid from origin along y axis
Ez  , Eccentricity of centroid from origin along z axis
Dsy , Shear center offset from centroid along y axis
Dsz , Shear center offset from centroid along z axis
Cw  , Warping coefficient for torsion about the shear center
Ny  , Neutral axis offset from centroid along y axis
Nz  , Neutral axis offset from centroid along z axis

For composite or orthotropic beams the shear factors Ksy, Ksz, and Ksyz, as well as the warping coefficient Cw are undefined and are set to zero. For homogeneous isotropic beams Ny = Nz = 0.

As mentioned above, the geometry of a beam section may be defined either as a parameterized built-in section or as a series of user defined points and loops. In any case the geometry is represented internally as points and loops, each parameterized section generates a set of points and loops which are dependent upon the section. The BeamSectCalculator module also performs two types of triangularization of the section, a minimum triangularization and a quality triangularization. As the term implies, the minimum triangularization generates just enough triangles to represent the section for simple drawing purposes. The quality triangularization is generated when beam section properties are computed using vis_BeamSectCalculatorProps(). The triangles used are quadratic with Serendipity interpolation. The quality triangles are those triangles in the internal finite element mesh used to solve for the section properties. This triangularization may be useful if results data is to be contoured over a beam section. The quality triangularization will generate additional points within the beam section. These points will be added to the points already defined.

When specifying user defined sections, each defined point will be included in the minimum and quality triangulations. This includes internal points which are not connected to a boundary loop. All defined point id’s are preserved in the minimum and quality triangulations.

If only the beam resultants r about the centroid are available, the centroidal strains, curvatures, and twist, e, can be obtained by inverting the relationship

r = dmat * e

where dmat can be obtained with vis_BeamSectCalculatorGetPropsdv(). Note that r are the resultants relative to the centroid. If the torque about the shear center, Ts, is available, it can be transformed to the centroid, Tc, using the expression

Tc = Ts + Dsy*Nz - Dsz*Ny

where Dsy and Dsz are the shear center offsets, and Ny and Nz are the shear resultant forces. Dsy and Dsz can also be obtained with vis_BeamSectCalculatorGetPropsdv():

Dsy = props[11]
Dsz = props[12]

The BeamSectCalculator module features a wide selection of parameterized built-in sections. These sections are diagrammed below. The y axis of the section yz system extends horizontally right, the z axis extends vertically up. The origin of the section yz system is indicated by a heavy black dot. The specific location of the origin for each section is as follows:

IBEAM    , midpoint of w1 and h dimensions
CIRCLE   , center
TUBE     , center
PANEL    , center
RECTANGLE, midpoint of w and h dimensions
TRAPEZOID, midpoint of w1 and h dimensions
HEXAGON  , center
TEE      , midpoint of w and h dimensions
ZEE      , midpoint of d3 and h dimensions
CHANNEL  , midpoint of w1 and h dimensions
SECTOR   , center
ELLIPSE  , center
HAT      , midpoint of w1 and h dimensions
CROSS    , midpoint of w and h dimensions
HAT1     , midpoint of w1 and h1 dimensions
ANGLE    , midpoint of w and h dimensions
HATG     , midpoint of w3 and h dimensions
QUAD     , centroid
SOLIDHEXA, centroid
BOX      , midpoint of w and h dimensions
DBOX     , midpoint of w1+w2 and h dimensions
RECTTUBE , midpoint of w and h dimensions
HATT     , midpoint of w1 and h dimensions
../../_images/vistools-beam3a.gif

Figure 10-3a, Diagram of Built-in Parameterized Sections

../../_images/vistools-beam3b.gif

Figure 10-3b, Diagram of Built-in Parameterized Sections

../../_images/vistools-beam3c.gif

Figure 10-3c, Diagram of Built-in Parameterized Sections

../../_images/vistools-beam3d.gif

Figure 10-3d, Diagram of Built-in Parameterized Sections

../../_images/vistools-beam3e.gif

Figure 10-3e, Diagram of Built-in Parameterized Sections

../../_images/vistools-beam3f.gif
../../_images/vistools-beam3h.gif
../../_images/vistools-beam3i.gif

Figure 10-3f, Diagram of Built-in Parameterized Sections

9.1. Function Descriptions

The currently available BeamSectCalculator functions are described in detail in this section.

vis_BeamSectCalculator *vis_BeamSectCalculatorBegin(void)

create an instance of a BeamSectCalculator object

Create an instance of an BeamSectCalculator object. Memory is allocated for the object private data and the pointer to the data is returned. By default all attribute object pointers are NULL.

Destroy an instance of a BeamSectCalculator object using

void vis_BeamSectCalculatorEnd (vis_BeamSectCalculator *BeamSectCalculator)

Return the current value of a BeamSectCalculator object error flag using

Vint vis_BeamSectCalculatorError (vis_BeamSectCalculator *BeamSectCalculator)

Returns:

The function returns a pointer to the newly created BeamSectCalculator object. If the object creation fails, NULL is returned.

void vis_BeamSectCalculatorEnd(vis_BeamSectCalculator *p)

destroy an instance of a BeamSectCalculator object

See vis_BeamSectCalculatorBegin()

Vint vis_BeamSectCalculatorError(vis_BeamSectCalculator *p)

return the current value of a BeamSectCalculator object error flag

See vis_BeamSectCalculatorBegin()

void vis_BeamSectCalculatorDef(vis_BeamSectCalculator *p, Vint type)

define beam section type

Define the type of beam section to be represented. If type is BEAMSECT_PROPS, the user must enter the overall section properties and material stiffness matrices explicitly using vis_BeamSectCalculatorSetProps(). If type is input as BEAMSECT_GEOMETRY, then the user specifies an arbitrary beam section by defining point locations and planar loops using vis_BeamSectCalculaotrSetPoint() and vis_BeamSectCalculaotrSetLoop() respectively. If type is input as BEAMSECT_SEGMENTS, then the user specifies a connected segments section by defining point locations and segment thicknesses using vis_BeamSectCalculatorSetSegments(). If type is input as a built-in parameterized section such as BEAMSECT_IBEAM, then the user specifies the section dimensions using vis_BeamSectCalculatorSetDimensions()

Errors

VIS_ERROR_ENUM is generated if an improper type is specified.

Parameters:
  • p – Pointer to BeamSectCalculator object.

  • type – Beam section type

    x=BEAMSECT_PROPS            Generalized section properties
     =BEAMSECT_BOX              Hollow Box
     =BEAMSECT_DBOX             Hollow double Box
     =BEAMSECT_ANGLE            Angle
     =BEAMSECT_IBEAM            I beam
     =BEAMSECT_CIRCLE           Solid circle
     =BEAMSECT_TUBE             Hollow tube
     =BEAMSECT_PANEL            Panel
     =BEAMSECT_RECTANGLE        Rectangle
     =BEAMSECT_TRAPEZOID        Trapezoid
     =BEAMSECT_HEXAGON          Hollow hexagon
     =BEAMSECT_SOLIDHEXA        Solid hexagon
     =BEAMSECT_TEE              Tee
     =BEAMSECT_ZEE              Zee
     =BEAMSECT_CHANNEL          Channel
     =BEAMSECT_SECTOR           Solid sector
     =BEAMSECT_ELLIPSE          Solid ellipse
     =BEAMSECT_HAT              Hat
     =BEAMSECT_HATG             Hat general
     =BEAMSECT_HAT1             Hat with base
     =BEAMSECT_HATT             Hat angled with base
     =BEAMSECT_CROSS            Cross
     =BEAMSECT_RECTTUBE         Rectangular tube
     =BEAMSECT_GEOMETRY         Arbitrary section
     =BEAMSECT_SEGMENTS         Connected segments section
    

void vis_BeamSectCalculatorSetPointdv(vis_BeamSectCalculator *p, Vint id, Vdouble x[2])

set location of point on beam section

Set the y and z coordinates of a point, id, on the beam section. The round flag for the point is set to zero. Use the function vis_BeamSectCalculatorSetRound() to set the round flag. Use vis_BeamSectCalculatorSetLoop() to define section geometry using points.

Inquire of point coordinates for a given point id as an output argument using

void vis_BeamSectCalculatorGetPointdv (vis_BeamSectCalculator *BeamSectCalculator,
                             Vint id,
                             Vdouble yz[2])

Errors

  • VIS_ERROR_OPERATION is generated if the beam type as defined by vis_BeamSectCalculatorDef() is not BEAMSECT_GEOMETRY.

  • VIS_ERROR_VALUE is generated if an improper id is input.

Parameters:
  • p – Pointer to BeamSectCalculator object.

  • id – Point id, 0 < id

  • x – Vector of y and z coordinates of point on beam section

void vis_BeamSectCalculatorSetDimensionsdv(vis_BeamSectCalculator *p, Vdouble dimes[])

set dimensions of built-in geometries

Set dimensions for a built-in beam section type. The number and type of dimensions required are section dependent as defined by vis_BeamSectCalculatorDef().

            BOX  ANGLE  IBEAM  CIRCLE  TUBE  PANEL  RECTANGLE
dimes[0] =  w    w      w1     r       r     r      w
dimes[1] =  h    h      w2             t     t      h
dimes[2] =  d1   d1     h                    a
dimes[3] =  d2   d2     d1
dimes[4] =  d3   r      d2
dimes[5] =  d4          d3
dimes[6] =  r1          r1
dimes[7] =  r2          r2

            TRAPEZOID  HEXAGON  SOLIDHEXA  TEE  ZEE  CHANNEL  SECTOR  ELLIPSE
dimes[0] =  w1         r        w          w    w1   w1       r       r1
dimes[1] =  w2         t        h          h    w2   w2       a       r2
dimes[2] =  h                   d1         d1   h    h
dimes[3] =                                 d2   d1   d1
dimes[4] =                                 r    d2   d2
dimes[5] =                                      d3   d3
dimes[6] =                                      r1   r1
dimes[7] =                                      r2   r2

             HAT  CROSS  HAT1  DBOX  HATG  QUAD  HATT  RECTTUBE
dimes[0]  =  w1   w      w1    w1    w1    y1    w1    w
dimes[1]  =  w2   h      w2    w2    w2    z1    w2    h
dimes[2]  =  h    d1     h1    h     w3    y2    w3    t
dimes[3]  =  d1   d2     h2    d1    h     z2    h     r
dimes[4]  =  d2   r1     d1    d2    d1    y3    d1
dimes[5]  =  d3   r2     d2    d3    d2    z3    d2
dimes[6]  =  r1          d3    d4    d3    y4    d3
dimes[7]  =  r2          r1    d5    d4    z4
dimes[8]  =              r2    d6    d5
dimes[9]  =                    d7    r1
dimes[10] =                    r1    r2
dimes[11] =                    r2
dimes[12] =                    r3
dimes[13] =                    r4

Inquire of beam dimensions as output arguments using

void vis_BeamSectCalculatorGetDimensionsdv (vis_BeamSectCalculator *BeamSectCalculator,
                                  Vdouble dimes[])

Errors

VIS_ERROR_OPERATION is generated if the beam type as defined by vis_BeamSectCalculatorDef() is BEAMSECT_PROPS, BEAMSECT_SEGMENTS or BEAMSECT_GEOMETRY.

Parameters:
void vis_BeamSectCalculatorSetReflect(vis_BeamSectCalculator *p, Vint reflecty, Vint reflectz)

set beam section reflection

Set the axis reflection flags for built-in sections. A non-zero value for reflecty and/or reflectz indicates that the built-in section coordinates are to be reflected. By default reflecty and reflectz are zero.

Parameters:
  • p – Pointer to BeamSectCalculator object.

  • reflecty – Flag to reflect y-coordinate

  • reflectz – Flag to reflect z-coordinate

void vis_BeamSectCalculatorSetRotatedv(vis_BeamSectCalculator *p, Vdouble angle)

set beam section rotation

Set the rotation angle in degrees for built-in sections. A positive angle is a counter clockwise rotation in the y-z plane. By default angle is zero.

Parameters:
void vis_BeamSectCalculatorProps(vis_BeamSectCalculator *p)

compute general beam section properties

Compute the general beam section properties. The overall area, moments of inertia, shear factors, etc. are set. The section properties will be stored as follows in the internal props vector.

 props[0]  - Area, A
 props[1]  - Moment of inertia about centroidal y axis, Iyy
 props[2]  - Moment of inertia about centroidal z axis, Izz
 props[3]  - Product of inertia with respect to centroidal axis, Iyz
 props[4]  - Angle of principal moments of inertia, Ang
 props[5]  - Torsional constant, J
 props[6]  - Shear factor along y axis, Ksy
 props[7]  - Shear factor along z axis, Ksz
 props[8]  - Coupled shear factor, Ksyz
 props[9]  - Eccentricity of centroid from origin along y axis, Ey
 props[10] - Eccentricity of centroid from origin along z axis, Ez
 props[11] - Shear center offset from centroid along y axis, Dsy
 props[12] - Shear center offset from centroid along z axis, Dsz
 props[13] - Warping coefficient, Cw
 props[14] - Neutral axis offset from centroid along y axis
 props[15] - Neutral axis offset from centroid along z axis
If only a single isotropic material is present and the shear center offsets are both zero, then the material stiffness is as follows, where E and G are the elastic modulus and shear modulus:
 dmat[ 0] = E * A
 dmat[ 2] = E * Iyy
 dmat[ 4] = E * Iyz
 dmat[ 5] = E * Izz
 dmat[ 9] = G * J
 dmat[14] = G * Ksy  * A
 dmat[19] = G * Ksyz * A
 dmat[20] = G * Ksz  * A
If the shear center offset is not zero, BeamSectCalculator can compute dmat using vis_BeamSectCalculatorProps(). The material stiffness is computed about the beam centroid.

Inquire of beam section properties and material stiffness matrices as output arguments using

void vis_BeamSectGetPropsdv (vis_BeamSectCalculator *BeamSectCalculator,
                             Vdouble props[BEAMSECT_MAXPROPS],
                             Vdouble dmat[21])

Parameters:

p – Pointer to BeamSectCalculator object.

void vis_BeamSectCalculatorSetPropsdv(vis_BeamSectCalculator *p, Vdouble props[], Vdouble dmat[21])

set general beam section properties

Set the general beam section properties. he overall area, moments of inertia, shear factors, etc. are set. The section properties must appear as follows in the input props vector.

 props[0]  - Area, A
 props[1]  - Moment of inertia about centroidal y axis, Iyy
 props[2]  - Moment of inertia about centroidal z axis, Izz
 props[3]  - Product of inertia with respect to centroidal axis, Iyz
 props[4]  - Angle of principal moments of inertia, Ang
 props[5]  - Torsional constant, J
 props[6]  - Shear factor along y axis, Ksy
 props[7]  - Shear factor along z axis, Ksz
 props[8]  - Coupled shear factor, Ksyz
 props[9]  - Eccentricity of centroid from origin along y axis, Ey
 props[10] - Eccentricity of centroid from origin along z axis, Ez
 props[11] - Shear center offset from centroid along y axis, Dsy
 props[12] - Shear center offset from centroid along z axis, Dsz
 props[13] - Warping coefficient, Cw
 props[14] - Neutral axis offset from centroid along y axis
 props[15] - Neutral axis offset from centroid along z axis
If only a single isotropic material is present and the shear center offsets are both zero, then the material stiffness is as follows, where E and G are the elastic modulus and shear modulus:
 dmat[ 0] = E * A
 dmat[ 2] = E * Iyy
 dmat[ 4] = E * Iyz
 dmat[ 5] = E * Izz
 dmat[ 9] = G * J
 dmat[14] = G * Ksy  * A
 dmat[19] = G * Ksyz * A
 dmat[20] = G * Ksz  * A
If the shear center offset is not zero, BeamSectCalculator can compute dmat using vis_BeamSectCalculatorProps(). The material stiffness is computed about the beam centroid.

Inquire of beam section properties and material stiffness matrices as output arguments using

void vis_BeamSectCalculatorGetProps (vis_BeamSectCalculator *BeamSectCalculator,
                           Vfloat props[BEAMSECT_MAXPROPS],
                           Vfloat dmat[21])

void vis_BeamSectCalculatorGetPropsdv (vis_BeamSectCalculator *BeamSectCalculator,
                             Vdouble props[BEAMSECT_MAXPROPS],
                             Vdouble dmat[21])

Parameters:
  • p – Pointer to BeamSectCalculator object.

  • props – Overall beam section properties

  • dmat – Beam material stiffness matrix

void vis_BeamSectCalculatorGetPropsdv(vis_BeamSectCalculator *p, Vdouble props[], Vdouble dmat[21])

get general beam section properties

See vis_BeamSectCalculatorSetProps()

void vis_BeamSectCalculatorSetElasPropdv(vis_BeamSectCalculator *p, Vint mid, Vint type, Vdouble elas[])

set elastic material properties

Set material properties for the beam cross section. The default material properties are of type SYS_MAT_ISOTROPIC with Young’s modulus, E = 1. and Poisson’s ratio, nu = 0. The shear modulus, G, is set to E/(2.*(1+nu)). If type is set to SYS_MAT_ISOTROPIC then input 2 values, E and Nu. If type is set to SYS_MAT_ORTHOTROPIC then input 9 values, Ex, Ey, Ez, Nuxy, Nuyz, Nuxz, Gxy, Gyz, Gxz. The material id mid must match the id specified in vis_BeamSectSetLoop().

Errors

VIS_ERROR_VALUE is generated if an improper property is specified.

Parameters:
  • p – Pointer to BeamSectCalculator object.

  • mid – Material property id

  • type – Material property type

    x=SYS_MAT_ISOTROPIC         Isotropic material
     =SYS_MAT_ORTHOTROPIC       Orthotropic material
    

  • elas – Array of elastic properties

void vis_BeamSectCalculatorSetParamd(vis_BeamSectCalculator *p, Vint ptype, Vdouble dparam)

set beam section compute parameters

Set beam section compute parameters. The parameter BEAMSECT_EDGELENGTH sets the target edge length of the quality triangulation used to compute section properties. A value of zero for BEAMSECT_EDGELENGTH means that the internally computed edge length will be used. By default BEAMSECT_EDGELENGTH is set to zero.

The parameter BEAMSECT_ERRORTOL sets the error tolerance to be achieved when adaptive refinement is enabled. Use vis_BeamSectSetParami() with parameter BEAMSECT_REFINE to enable adaptive error refinement. By default BEAMSECT_ERRORTOL is set to .01 (one percent).

Errors

VIS_ERROR_ENUM is generated if an improper ptype is specified.

Parameters:
  • p – Pointer to BeamSectCalculator object.

  • ptype – Type of compute parameter to set

    x=BEAMSECT_EDGELENGTH     Target quality edge length
     =BEAMSECT_ERROROL        Error tolerance
    

  • dparam – Specifies the value that ptype will be set to.

void vis_BeamSectCalculatorSetParami(vis_BeamSectCalculator *p, Vint ptype, Vint iparam)

set beam section display parameters

Set beam section display parameters.

The parameter BEAMSECT_MESHSMOOTH toggles the smoothing of the quality grid. By default BEAMSECT_MESHSMOOTH is set to VIS_OFF.

The parameter BEAMSECT_MAXELEMENTS sets the maximum number of elements to be performed during adaptive error refinement. A value of zero means the number of elements is unlimited. By default BEAMSECT_MAXELEMENTS is set to 0.

The parameter BEAMSECT_MAXERRITER sets the maximum number of iterations to be performed during adaptive error refinement. By default BEAMSECT_MAXERRITER is set to 10.

The parameter BEAMSECT_REFINE toggles adaptive error refinement. By default BEAMSECT_REFINE is set to VIS_OFF.

The parameter BEAMSECT_VABS toggles the VABS technology. This is required for either multi-material or orthotropic material models. By default BEAMSECT_VABS is set to VIS_OFF.

Errors

VIS_ERROR_ENUM is generated if an improper ptype is specified.

Parameters:
  • p – Pointer to BeamSectCalculator object.

  • ptype – Type of display parameter to set

    x=BEAMSECT_MESHSMOOTH     Smooth quality grid
     =BEAMSECT_MAXELEMENTS    Maximum number of elements
     =BEAMSECT_MAXERRITER     Maximum number of adaptive iterations
     =BEAMSECT_REFINE         Toggle adaptive error refinement
     =BEAMSECT_VABS           Toggle VABS technology
    

  • iparam – Specifies the integer value that ptype will be set to.

void vis_BeamSectCalculatorGetNum(vis_BeamSectCalculator *p, Vint *npoints, Vint *nloops, Vint *npolylines, Vint *ntris, Vint *nqualpnts, Vint *nqualtris)

get number of points, loops and generated triangles

Return the number of beam section geometry points and loops defined or generated. The points, loops and polylines may have been explicitly specified using vis_BeamSectCalculatorSetPoint(),or implicitly defined as a built-in section geometry usingvis_BeamSectCalculatorSetDimensions()`. Information about individual points may be returned using vis_BeamSectCalculaotrGetPoint()

The number of minimum triangles required to fill the beam section may also be returned. Use vis_BeamSectCalculatorGetTri() to return the minimum triangle point connectivity. The number of quality points and triangles is zero until vis_BeamSectCalculatorProps() is called. The quality points and triangles are related to the finite element mesh generated for the beam section property analysis. Use vis_BeamSectCalculatorGetQualTri() to return the quality triangle point connectivity. Quality points consist of the input boundary points and points generated in the interior of the beam section as a result of the internal finite element mesh generation. Use vis_BeamSectCalculatorGetPoint() to return the quality points.

Parameters:
  • p – Pointer to BeamSectCalculator object.

  • npoints[out] Number of points defined or generated

  • nloops[out] Number of loops defined or generated

  • npolylines[out] Number of polylines defined or generated (==0)

  • ntris[out] Number of minimum triangles generated

  • nqualpnts[out] Number of quality points generated

  • nqualtris[out] Number of quality triangles generated