ObjectANCFCable

A 3D cable finite element using 2 nodes of type NodePointSlope1. The localPosition of the beam with length \(L\)=physicsLength and height \(h\) ranges in \(X\)-direction in range \([0, L]\) and in \(Y\)-direction in range \([-h/2,h/2]\) (which is in fact not needed in the EOM). For description see ObjectANCFCable2D, which is almost identical to 3D case. Note that this element does not include torsion, therfore a torque cannot be applied along the local x-axis.

Additional information for ObjectANCFCable:

  • This Object has/provides the following types = Body, MultiNoded
  • Requested Node type = Position
  • Short name for Python = Cable
  • Short name for Python visualization object = VCable

The item ObjectANCFCable with type = ‘ANCFCable’ has the following parameters:

  • name [type = String, default = ‘’]:
    objects’s unique name
  • physicsLength [\(L\), type = UReal, default = 0.]:
    [SI:m] reference length of beam; such that the total volume (e.g. for volume load) gives \(\rho A L\); must be positive
  • physicsMassPerLength [\(\rho A\), type = UReal, default = 0.]:
    [SI:kg/m] mass per length of beam
  • physicsBendingStiffness [\(EI\), type = UReal, default = 0.]:
    [SI:Nm\(^2\)] bending stiffness of beam; the bending moment is \(m = EI (\kappa - \kappa_0)\), in which \(\kappa\) is the material measure of curvature
  • physicsAxialStiffness [\(EA\), type = UReal, default = 0.]:
    [SI:N] axial stiffness of beam; the axial force is \(f_{ax} = EA (\varepsilon -\varepsilon_0)\), in which \(\varepsilon = |{\mathbf{r}}^\prime|-1\) is the axial strain
  • physicsBendingDamping [\(d_{K}\), type = UReal, default = 0.]:
    [SI:Nm\(^2\)/s] bending damping of beam ; the additional virtual work due to damping is \(\delta W_{\dot \kappa} = \int_0^L \dot \kappa \delta \kappa dx\)
  • physicsAxialDamping [\(d_{\varepsilon}\), type = UReal, default = 0.]:
    [SI:N/s] axial damping of beam; the additional virtual work due to damping is \(\delta W_{\dot\varepsilon} = \int_0^L \dot \varepsilon \delta \varepsilon dx\)
  • physicsReferenceAxialStrain [\(\varepsilon_0\), type = Real, default = 0.]:
    [SI:1] reference axial strain of beam (pre-deformation) of beam; without external loading the beam will statically keep the reference axial strain value
  • strainIsRelativeToReference [\(f\cRef\), type = Real, default = 0.]:
    if set to 1., a pre-deformed reference configuration is considered as the stressless state; if set to 0., the straight configuration plus the values of \(\varepsilon_0\) and \(\kappa_0\) serve as a reference geometry; allows also values between 0. and 1.
  • nodeNumbers [type = NodeIndex2, default = [invalid [-1], invalid [-1]]]:
    two node numbers ANCF cable element
  • useReducedOrderIntegration [type = Index, default = 0]:
    0/false: use Gauss order 9 integration for virtual work of axial forces, order 5 for virtual work of bending moments; 1/true: use Gauss order 7 integration for virtual work of axial forces, order 3 for virtual work of bending moments
  • visualization [type = VObjectANCFCable]:
    parameters for visualization of item

The item VObjectANCFCable has the following parameters:

  • show [type = Bool, default = True]:
    set true, if item is shown in visualization and false if it is not shown; note that all quantities are computed at the beam centerline, even if drawn on surface of cylinder of beam; this effects, e.g., Displacement or Velocity, which is drawn constant over cross section
  • radius [type = float, default = 0.]:
    if radius==0, only the centerline is drawn; else, a cylinder with radius is drawn; circumferential tiling follows general.cylinderTiling and beam axis tiling follows bodies.beams.axialTiling
  • color [type = Float4, default = [-1.,-1.,-1.,-1.]]:
    RGBA color of the object; if R==-1, use default color

DESCRIPTION of ObjectANCFCable

The following output variables are available as OutputVariableType in sensors, Get…Output() and other functions:

  • Position: \(\LU{0}{{\mathbf{p}}\cConfig(x,0,0)} = {\mathbf{r}}\cConfig(x) + y\cdot {\mathbf{n}}\cConfig(x)\)
    global position vector of local position \([x,0,0]\)
  • Displacement: \(\LU{0}{{\mathbf{u}}\cConfig(x,0,0)} = \LU{0}{{\mathbf{p}}\cConfig(x,0,0)} - \LU{0}{{\mathbf{p}}\cRef(x,0,0)}\)
    global displacement vector of local position
  • Velocity: \(\LU{0}{{\mathbf{v}}(x,0,0)} = \LU{0}{\dot {\mathbf{r}}(x)}\)
    global velocity vector of local position
  • Director1: \({\mathbf{r}}'(x)\)
    (axial) slope vector of local axis position (at \(y\)=0)
  • StrainLocal: \(\varepsilon\)
    axial strain (scalar) of local axis position (at Y=Z=0)
  • CurvatureLocal: \([K_x, K_y, K_z]\tp\)
    local curvature vector
  • ForceLocal: \(N\)
    (local) section normal force (scalar, including reference strains) (at \(y\)=\(z\)=0); note that strains are highly inaccurate when coupled to bending, thus consider useReducedOrderIntegration=2 and evaluate axial strain at nodes or at midpoint
  • TorqueLocal: \(M\)
    (local) bending moment (scalar) (at \(y\)=\(z\)=0), which are bending moments as there is no torque
  • Acceleration: \(\LU{0}{{\mathbf{a}}(x,0,0)} = \LU{0}{\ddot {\mathbf{r}}(x)}\)
    global acceleration vector of local position

MINI EXAMPLE for ObjectANCFCable

 1from exudyn.beams import GenerateStraightLineANCFCable
 2rhoA = 78.
 3EA = 1000000.
 4EI = 833.3333333333333
 5cable = Cable(physicsMassPerLength=rhoA,
 6              physicsBendingStiffness=EI,
 7              physicsAxialStiffness=EA,
 8              )
 9
10ancf=GenerateStraightLineANCFCable(mbs=mbs,
11              positionOfNode0=[0,0,0], positionOfNode1=[2,0,0],
12              numberOfElements=32, #converged to 4 digits
13              cableTemplate=cable, #this defines the beam element properties
14              massProportionalLoad = [0,-9.81,0],
15              fixedConstraintsNode0 = [1,1,1, 0,1,1], #add constraints for pos and rot (r'_y,r'_z)
16              )
17lastNode = ancf[0][-1]
18
19#assemble and solve system for default parameters
20mbs.Assemble()
21mbs.SolveStatic()
22
23#check result
24exudynTestGlobals.testResult = mbs.GetNodeOutput(lastNode, exu.OutputVariableType.Displacement)[0]
25#ux=-0.5013058140308901

The web version may not be complete. For details, consider also the Exudyn PDF documentation : theDoc.pdf