BoomFMU

class py_crane.boom_fmu.BoomFMU(mass_rng: tuple[str, str] | None = None, boom_rng: tuple[tuple[Any, Any] | None | Sequence[Never], ...] = tuple(), animationLW: int = 5, **kwargs: Any)

Bases: Boom

The FMU definitions of a Boom - a stiff boom, attached to a parent boom, attached to the fixation boom of a crane.

Defines the FMI interface of a Boom using the component_model.variable module. BoomFMU should be instantiated through CraneFMU.add_boom(), omitting the model and anchor0 arguments (these are added automatically).

Here we only list and explain additional arguments and attributes of BoomFMU. Refer to Boom for details on basic Boom arguments, which are also needed here.

For every Boom the following interface variables are defined

mass

The mass of the boom. If mass_range is not defined the variable is a fixed parameter, otherwise a continuous input variable (the load).

boom

The length, polar angle and azimuth angle of the boom. The boom_rng defines the degrees of freedom for the boom (see below).

end

The cartesian position of the end point of the boom as read only (output) variable. Continuous change to the boom (length, polar-rotation, azimuthal-rotation) wrt. origin

der(<name>.boom) (not defined for the fixation)

This is an example of a structured variable facilitating continuous (not abrupt) change the boom parameters.

der(der(<name>.boom)) (not defined for fixation

Acceleration to the boom (length, polar-rotation, azimuthal-rotation) wrt. origin Another structured variable as aid for boom control.

der(<name>.mass) (only if mass_rng is not None)

Continuous change to the mass (i.e. load change) if abrupt load changes are not desirable.

Parameters:
  • mass_rng (tuple) – Optional range of the mass, if the mass can be changed. Normally only the last boom (the wire) has a variable mass (the load).

  • boom_rng (tuple) – Range for each of the boom components, i.e. how much the boom length can be changed and how (much) it can be rotated As normal, range elements specified as None denote fixed components and () freely moveable elements. E.g. ( (‘1m’,’50m’), None, ()) denotes a boom which length can be changed in the range 1 to 50 meters, which polar angle is fixed to the initial value and which can be freely rotated around the z-axis.

Todo

determine the range of forces

__init__(mass_rng: tuple[str, str] | None = None, boom_rng: tuple[tuple[Any, Any] | None | Sequence[Never], ...] = tuple(), animationLW: int = 5, **kwargs: Any)

Methods

__init__([mass_rng, boom_rng, animationLW])

boom_setter(val[, ch])

Set length and angles of boom (if allowed) and ensure consistency with other booms.

calc_statics_dynamics([dt])

After any movement the local c_m and the c_m of connected booms have changed.

damping([q_factor, damping_time])

Change/set the damping properties of a flexible boom.

pendulum(dt)

For a non-stiff connection, if the _c_m is not exactly below origin, the _c_m acts as a damped pendulum.

pendulum_relax()

Relax the pendulum movement, leading to the CoM strictly downward.

rot([newval])

Access the rotation object from outside the boom.

update_child([change])

Update this boom after the parent boom has changed length, angles, position or rotation.

Attributes

c_m

Updates and returns the local center of mass point relative to self.origin.

c_m_sub

Return the system center of mass as absolute position The _c_m_sub needs to be calculated/updated using calc_statics_dynamics.

end

Calculate the cartesian coordinates of the end of the boom from .origin, .length and .direction.

force

Calculate the force resulting from linear acceleration.

length

Extract the length parameter from .boom.

model

Get the Crane object which this boom is connected to.

name

Get the unique (within the crane) name of the boom.

torque

Calculate the torque from the CoM of this boom with respect to the fixation.