Hinges - HiStructClient/femcad-doc GitHub Wiki

Since 4.2019, FemCad has possibility to add hinges to beam. The hinge can be fully flexible (Free) or it can have defined stiffness (Semistiff). New hinges are defined via variable FcsHingeHead and FcsHingeEnd in SimpleBeamPartClass.fcs. The basic hinges definitions are:

Fcs.Beam.Hinge.Nx
Fcs.Beam.Hinge.Vy
Fcs.Beam.Hinge.Vz
Fcs.Beam.Hinge.Mx
Fcs.Beam.Hinge.My
Fcs.Beam.Hinge.Mz

Fcs.Beam.Hinge.SemiNx(k[N/m])
Fcs.Beam.Hinge.SemiVy(k[N/m])
Fcs.Beam.Hinge.SemiVz(k[N/m])
Fcs.Beam.Hinge.SemiMx(k[Nm/rad])
Fcs.Beam.Hinge.SemiMy(k[Nm/rad])
Fcs.Beam.Hinge.SemiMz(k[Nm/rad])

Hinges can be added together:

HingeHead := Fcs.Beam.Hinge.Mz + Fcs.Beam.Hinge.My + Fcs.Beam.Hinge.SemiMx(k[Nm/rad])

(if there are two parameters for one direction, the more flexible (weaker) wins).

A few predefined hinges are:

Fcs.Beam.Hinge.None
Fcs.Beam.Hinge.Full   - all the rotations are free
Fcs.Beam.Hinge.Bend   - only My and Mz are free
Fcs.Beam.Hinge.FreeRotation(bool,bool,bool)
Fcs.Beam.Hinge.Dof.Free
Fcs.Beam.Hinge.Dof.Stiff
Fcs.Beam.Hinge.Dof.Semistiff(double)

Fully optional input of custom hinge can be done through Fcs.Beam.Hinge.General:

FcsHinge_Full   := Fcs.Beam.Hinge.General( 
   Fcs.Beam.Hinge.Dof.Semistiff(25000),    # ux
   Fcs.Beam.Hinge.Dof.Stiff,               # ux
   Fcs.Beam.Hinge.Dof.Stiff,               # uz
   Fcs.Beam.Hinge.Dof.Free,                # fix
   Fcs.Beam.Hinge.Dof.Free,                # fiy
   Fcs.Beam.Hinge.Dof.Free,                # fiz
)

Hinges are then passed to beam as a optional parameter:

FcsHinges := Fcs.Beam.Hinges{
  Head := Fcs.Beam.Hinge.None,
  End  := Fcs.Beam.Hinge.None,
}

beam {b1} type Frame curve {c1} xsection {cross_section1} hinges (FcsHinges)

There are two predefined shortcuts for beam hinges:

Fcs.Beam.Hinges.None

equals to

Fcs.Beam.Hinges{
  Head := Fcs.Beam.Hinge.None,
  End  := Fcs.Beam.Hinge.None,
}

and

Fcs.Beam.Hinges.Brace 

equals to

Fcs.Beam.Hinges{
  Head := Fcs.Beam.Hinge.Bend,
  End  := Fcs.Beam.Hinge.Full,
}

To get info about hinges it is possible to use following bool values where "i" represents index of degree of freedom (see Fcs.Beam.Hinge.General).

hinge.Head.Dofs[i].HasExtreDof       returns True for Free or Semistiff
hinge.Head.Dofs[i].NeedsGlobalDof    returns True for Stiff or Semistiff
hinge.Head.Dofs[i].HasStiffness      returns True for Semistiff