On the one hand, we may wish to offer different types of sources, such as sinusoidal and trapezoidal sources, to make the tool more practical for simulation. Similarly, we may wish to offer different types of non-linear resistors, e.g. for hydraulic systems or thermal systems. These are not really new elements, only specializations of the elements introduced previously.
It may also make sense to offer sensor (detector) elements. We may wish to sense any one of the four basic variables. An effort detector, De, receives the effort from the model. It computes the flow, by setting it to zero. Thus, an effort sensor is in fact the same as a zero flow source:
with the model:
A position sensor:
on the other hand, has the model:
i.e., a position sensor is a macro element that is itself described by a bond graph. A position sensor is a flow sensor followed by an integrator.
Finally, we ought to discuss the switching elements. The bond graph switch:
has a Boolean input signal using the convention that, if the input signal has a value of true, the switch is open, i.e., there is zero flow. On the other hand, if the Boolean input signal assumes a value of false, the switch is closed, i.e., there is zero effort.
Switch elements are strange, because they change the location of their causality stroke as a function of the value of the Boolean input signal. Thus, switch elements must always be attached to a-causal bonds.
Furthermore, if the causality of the bond connecting to the switch is fixed from the outside, an ideal switch will lead to a division by zero in one of the two switch positions. Thus, ideal switch elements must always be placed inside algebraic loops.
To avoid this pitfall, the library offers also a leaking switch element, Sw2, that contains a parasitic resistor in the closed state, and a parasitic conductance in the open state.
The library also offers special switching elements, such as electrical diodes.