Keywords

1 Introduction

The objective of this paper is to establish an improved formulation able to be used in real time simulations. Simulation requires integrating the dynamic equations. The size, complexity, and type of these equations are fundamental in order to reduce the simulation time if real time is to be achieved. This problem is very important in the real time simulation of mechanical systems, such as in a complex multibody model of a vehicle used in a driving simulator, where a great number of differential equations and constraint equations are used to build the model in a systematic way.

In recent years, the generation of dynamic equations of systems modeled with bond graphs has been the topic of considerable research. These equations have been presented in a variety of forms. Classical formulations express these equations in terms of a large number of flows associated with inertances and displacements associated with compliances. In order to obtain these equations it is necessary to establish the causality in the model. Several procedures have been developed to achieve this. Sequential Causality Augmentation Procedure (SCAP) [10] has been traditionally the way to implement causality in bond graph models. Causal cycles are a consequence of the problems raised from this implementation. They appear when the SCAP procedure drives to indeterminacy in the application of causality. The following step is the appearance either of a causal cycle or a causal violation [17, 18]. How to deal with these causal problems has been an important aim in the past [8]. Karnopp and Margolis [11] contributed with the stiff compliance approach, where high stiffness compliances are introduced in the model to eliminate the causal loops between integral and derivative causal storage ports. In this case, a set of differential equations is obtained, including as variables the flows associated with the previous inertances, displacements associated with the previous compliances, and the corresponding variables associated with the new stiff elements introduced, seriously increasing the number of differential equations to be solved. Usually, this approach needs the use of special numerical solvers for stiff differential equations, requiring very small integration step times. For these reasons, this procedure is not appropriate for simulation in real time.

Another approach was the introduction of Lagrange multipliers in the model [2, 5, 20]. Some other authors [7] introduce residual sinks and sources in a similar solution to the Lagrange approach. When Lagrange multipliers are used to break causal paths, a set of differential algebraic equations is obtained, composed of a number of differential equations equal to the number of inertances plus compliances, and a number of algebraic (or constraint) equations equal to the number of Lagrange multipliers. The number of equations is the same as with the previous method, it also being inappropriate for real time. Nevertheless, this approach presents important formulation advantages that must be considered.

Previous methods prevent the existence of causal loops, but it is necessary to pre-analyze the model and to modify the model in a subsequent operation. Another approach to solve the problem [3, 4] is the use of break variables to open the causal loops. Causal loops always present an algebraic character. Algebraic loops relate their internal variables by means of algebraic relationships. It means that these loops do not involve integration operations. This fact leads to the definition of Zero-order Causal Paths (ZCPs) [4, 17]. The mathematical model obtained from bond graphs with ZCPs and opened with break variables is also a differential algebraic equation set (DAE).

This last approach reduces the number of equations to a number equal to the number of inertances plus compliances plus break variables.

The use of Lagrange multipliers or the introduction of break variables implies the necessity of new variables and the appearance of constraint equations, considerably increasing the number of involved variables and the number of equations to be solved. These procedures are very useful to obtain the system equations in a systematic way, but they have to be improved or modified for their use in real time simulation.

Another approach is to obtain the dynamic equations in terms of a minimum set of variables, related with the degrees of freedom of the system. There are several developed procedures, mainly in multibody analysis. The most popular method is Kane’s formulation [9], which uses a minimum number of generalized velocities. The numerical integration of these equations is much more efficient than the previous one because it needs only a reduced number of equations. However, simplicity in the formulation and the ease of manipulation of dynamic equations are lost with this method.

The method presented in this paper is based on a velocity transformation process used in multibody dynamics [12, 13, 19], extending the methodology to the bond graph specificities. This method has the advantages of the simplicity in its formulation and the computational efficiency of Kane’s method. In this procedure state variables can be established as in the classical bond graph formulation. Next, according to the system causality and the ZCPs class 1 that appear in the system, a set of independent state variables are chosen obtaining the relationships between the dependent and the independent ones. The dynamic equations will then be transformed into a reduced set. The resultant equations are equal in number to the number of degrees of freedom of the system.

This paper discusses the procedure applied to each type of ZCP and the way to manipulate the causal assignments in order to obtain the minimal set of differential equations. In this way, no algebraic equations appear in the set of equations obtained and only a small number of differential equations appear (ODEs corresponding to the system’s degrees of freedom).

The way to solve ZCPs class 2, 3, and 4 is based on the idea to assign derivative causality to the storage elements to eliminate the causal loops [15]. Nevertheless in class 2, 3, and 4, except class with unity gain, the break variables can be eliminated and the equations reduced and written without any break variable and constraint equations, but this elimination must be done by hand and no automatic procedures can be used. For this reason the procedures shown in this paper have been developed in order to systematize the way to obtain the system equations in an optimized form, with the aim of implementing them in a computer program. In Ref. [14] algorithms are shown along with the procedures for symbolically obtaining the transformations needed for the different cases put forward.

Sueur and Dauphin-Tanguy [16] describe the set of conditions for the method when applying a derivative causality for linear systems.

An interesting reference is presented in [1] where Borutzky considers an extension of the bond graph methodology showing its application for multibody systems, presenting also an interesting formulation of a reduced set of equations of motion.

The paper is based on the previous work of Felez et al. [6]. Some examples are presented to illustrate the different cases. These examples are very simple and their only aim is to show the procedure for each ZCP. For each example, a comparison between the use of break variables and the reduced formulation proposed has been done, showing the differences between both cases.

2 Zero-Order Causal Paths

A causal path is a sequence of causal bonds between two vertices of the bond graph. The causal strokes must be attached to each bond at the “same relative position.”

A ZCP is a causal path with topological loops whose variables are related to themselves by means of algebraic assignments [17].

The classification of ZCPs originates from the research work carried out by Van Dijk and Breedveld [17] and was completed by Cacho et al. [4]. The specific procedure to break each ZPC type is shown in detail in [4].

3 ZCP Class 1

ZCP class 1 is set between storage ports with integral causality and storage ports with differential causality.

The proposed approach is based on a velocity transformation and needs the use of Lagrange multipliers in order to break the causal loops. Once the Lagrange multipliers have been introduced, the equations obtained are simplified and reduced by means of the velocity transformation.

This procedure is shown in the following example (Fig. 2.1). Figure 2.1 represents a single pendulum composed of a bar of inertia J with respect to the center of mass and, additionally, a concentrated mass M at the same point. Its movement is defined by three displacements (x, y, φ) and their corresponding velocities (u, v, ω).

Fig. 2.1
figure 1

A single pendulum

Figure 2.2 represents the bond graph corresponding to the single pendulum. Elements ZC [5] represent the introduction of two Lagrange multipliers in the constrained displacements of the hinge point O. In order to obtain the relationships between dependent velocities and the independent one, in the bonds associated with ZC elements flow causality is established, with the meaning that the associated velocity in this case is equal to zero. In this bond graph, two ZCPs class 1 appear, relating the independent velocity ω with the dependent ones u and v.

Fig. 2.2
figure 2

Bond graph of a system with a ZCP class 1

Following the previous described procedure, it is possible to express the velocities according to the only independent one:

$$ \omega =\overset{.}{\varphi } \vspace*{-9pt}$$
(2.1a)
$$ \left[\begin{array}{c}\hfill \omega \hfill \\ {}\hfill u\hfill \\ {}\hfill v\hfill \end{array}\right]=S\left[\omega \right]=\left[\begin{array}{c}\hfill 1\hfill \\ {}\hfill \hbox{--} a\; \sin \varphi \hfill \\ {}\hfill a\; \cos \varphi \hfill \end{array}\right]\left[\omega \right] $$
(2.1b)
$$ \left[\begin{array}{c}\hfill \overset{.}{\omega}\hfill \\ {}\hfill \overset{.}{u}\hfill \\ {}\hfill \overset{.}{v}\hfill \end{array}\right]=S\left[\overset{.}{\omega}\right]+\overset{.}{S}\left[{\omega}^2\right]=\left[\begin{array}{c}\hfill 1\hfill \\ {}\hfill -\!a\; \sin \varphi \hfill \\ {}\hfill a\; \cos \varphi \hfill \end{array}\right]\left[\overset{.}{\omega}\right]+\left[\begin{array}{c}\hfill 0\hfill \\ {}\hfill -\!a\; \cos \varphi \hfill \\ {}\hfill -\!a\; \sin \varphi \hfill \end{array}\right]\left[{\omega}^2\right] $$
(2.1c)

Figure 2.3 presents the causality assignment established in the bond graph in order to obtain its dynamic equations. Due to the fact that elements ZC represent the introduction of two Lagrange multipliers, with the meaning of constraint forces, two new variables, F x and F y , are introduced by these two elements.

Fig. 2.3
figure 3

Introduction of Lagrange multipliers

With this causality assignment, ZCPs class 1 disappears and the dynamic equations result in three differential and two algebraic equations:

$$ \left[\begin{array}{ccc}\hfill J\hfill & \hfill 0\hfill & \hfill 0\hfill \\ {}\hfill 0\hfill & \hfill M\hfill & \hfill 0\hfill \\ {}\hfill 0\hfill & \hfill 0\hfill & \hfill M\hfill \end{array}\right]\left[\begin{array}{c}\hfill \overset{.}{\omega}\hfill \\ {}\hfill \overset{.}{u}\hfill \\ {}\hfill \overset{.}{v}\hfill \end{array}\right]+\left[\arraycolsep5pt\begin{array}{cc}\hfill -a\; \sin \varphi \hfill & \hfill a \cos \varphi \hfill \\ {}\hfill -1\hfill & \hfill 0\hfill \\ {}\hfill 0\hfill & \hfill -1\hfill \end{array}\right]\left[\begin{array}{c}\hfill {F}_X\hfill \\ {}\hfill {F}_Y\hfill \end{array}\right]=\left[\begin{array}{c}\hfill 0\hfill \\ {}\hfill 0\hfill \\ {}\hfill -\!\mathrm{Mg}\hfill \end{array}\right] $$
(2.2a)
$$ \begin{array}{c}\hfill u+a\omega\;\sin \varphi =0\hfill \\ {}\hfill v-a\omega\;\cos \varphi =0\hfill \end{array} $$
(2.2b)

But these equations can be reduced to only one using the previously described method. Then pre-multiplying (2.2a) by \( \left[\begin{array}{ccc}\hfill 1,\hfill & \hfill -a\; \sin \varphi, \hfill & \hfill a\; \cos \varphi \hfill \end{array}\right] \):

$$ \left[\begin{array}{ccc}\hfill J,\hfill & \hfill -\mathrm{M}\mathrm{a} \sin \varphi \hfill & \hfill \mathrm{Ma} \cos \varphi \hfill \end{array}\right]\left[\begin{array}{c}\hfill \overset{.}{\omega}\hfill \\ {}\hfill \overset{.}{u}\hfill \\ {}\hfill \overset{.}{v}\hfill \end{array}\right]+\left[\begin{array}{cc}\hfill 0\hfill & \hfill 0\hfill \end{array}\right]\left[\begin{array}{c}\hfill {F}_X\hfill \\ {}\hfill {F}_Y\hfill \end{array}\right]=-\mathrm{M}\mathrm{g}\mathrm{a} \cos \varphi\pagebreak $$
(2.3)

Substituting in (2.3) the acceleration vector by its expression (2.1c):

$$ \begin{array}{c}\hfill \left[\begin{array}{ccc}\hfill J\hfill & \hfill -\mathrm{M}\mathrm{a} \sin \varphi \hfill & \hfill \mathrm{Ma} \cos \hfill \end{array}\varphi \right]\left[\begin{array}{c}\hfill 1\hfill \\ {}\hfill -\!a \sin \varphi \hfill \\ {}\hfill a \cos \varphi \hfill \end{array}\right]\left[\overset{.}{\omega}\right]+\hfill \\ {}\hfill +\left[\begin{array}{ccc}\hfill J\hfill & \hfill -\mathrm{M}\mathrm{a} \sin \varphi \hfill & \hfill \mathrm{Ma} \cos \varphi \hfill \end{array}\right]\left[\begin{array}{c}\hfill 0\hfill \\ {}\hfill -\!a \cos \varphi \hfill \\ {}\hfill -\!a \sin \varphi \hfill \end{array}\right]\left[{\omega}^2\right]=-\mathrm{M}\mathrm{g}\mathrm{a} \cos \varphi \hfill \end{array} $$
(2.4)

And finally:

$$ \left\{\begin{array}{c}\hfill \left[J+{\mathrm{Ma}}^2\right]\left[\overset{.}{\omega}\right]=-\mathrm{M}\mathrm{g}\mathrm{a} \cos \varphi \hfill \\ {}\hfill \omega =\overset{.}{\varphi}\hfill \end{array}\right. $$
(2.5)

4 ZCP Class 2

The causal path is set between elements whose constitutive relations are algebraic (resistors are the most typical case). There are also several ways to obtain the set of equations. The first one is the introduction of Lagrange multipliers in order to change the causality in the R elements, introducing then a new variable that can be used as break variable. The second one is the use of a variable (flow or effort, depending on the case) in the R element as break variable (Fig. 2.4). In both cases, the system is increased with a number of variables (multipliers in the first one and break variables in the second one) and a number of algebraic equations equal to the number of ZCPs class 2 presented. The new proposed procedure consists in the change of the causality of an energetic element (C or I) in order to invert the causality in one R element and to eliminate the causal path (Fig. 2.5). The following example illustrates the procedure.

Fig. 2.4
figure 4

System with a ZCP class 2. Use of a break variable

Fig. 2.5
figure 5

System with a ZCP class 2 and inertance with derivative causality

If we use break variables, if integral causality is established in the inertance, a ZCP class 2 appears between resistances (Fig. 2.4), it then being necessary to establish as break variable effort F 1 for the resistance R 1.

The dynamic equation and the constraint equation established are

$$ \left[\begin{array}{cc}\hfill m\hfill & \hfill 0\hfill \\ {}\hfill 0\hfill & \hfill 0\hfill \end{array}\right]\left[\begin{array}{c}\hfill \overset{.}{v}\hfill \\ {}\hfill {\overset{.}{F}}_1\hfill \end{array}\right]+\left[\begin{array}{cc}\hfill 0\hfill & \hfill -1\hfill \\ {}\hfill 1\hfill & \hfill \dfrac{1}{R_1}+\dfrac{1}{R_2}\hfill \end{array}\right]\left[\begin{array}{c}\hfill v\hfill \\ {}\hfill {F}_1\hfill \end{array}\right]=\left[\begin{array}{c}\hfill \mathrm{S}\mathrm{e}\hfill \\ {}\hfill \mathrm{S}\mathrm{f}\hfill \end{array}\right] $$
(2.6)

On the other hand, if differential causality is established in the inertance (Fig. 2.5), the causality of this inertia eliminates the causal path between resistances.

Then, a single equation is obtained and the break variable and the algebraic equation disappear:

$$ v=-m\left(\frac{1}{R_1}+\frac{1}{R_2}\right)\overset{.}{v}+\mathrm{S}\mathrm{f}+\mathrm{S}\mathrm{e}\left(\frac{1}{R_1}+\frac{1}{R_2}\right) $$
(2.7)

This can be reorganized as follows:

$$ m\overset{.}{v}+\frac{R_1{R}_2}{R_1+{R}_2}v=\mathrm{S}\mathrm{e}+\frac{R_1{R}_2}{R_1+{R}_2}\mathrm{S}\mathrm{f} $$
(2.8)

For nonlinear systems, the proposed method is not applicable when the R elements among which the ZCP is produced do not let the flow variable be explicitly obtained from the effort variable using an equation of the type:

$$ f=e/R\vspace*{-4pt} $$
(2.9)

where the R coefficient may be non-constant, but never a function of the state variables.

5 ZCP Class 3

ZCP class 3 is a causal cycle whose topological loops are open (only one of the two variables, effort or flow, associated with each bond is used). The causal path starts and ends in the same port. Each ZCP class 3 needs one break variable and introduces one algebraic equation.

The way to solve both ZCP classes 3 and 4 is similar. It is also possible to add the new variables (multipliers or break variables), both being equivalent. If a Lagrange multiplier is introduced, this implies that a new variable is introduced in the system, and this new variable can be considered as break variable of the topological loop because the Lagrange multiplier does not change the causality in the loop. The proposed new procedure implies the establishment of derivative causality in inertance or compliance ports connected to the path, working the corresponding co-energetic variable as break variable.

In Fig. 2.6, a break variable is established. If integral causality is considered in the compliance element, a causal path appears. In order to break this, flow v 1 in resistance R 1 is introduced as break variable.

Fig. 2.6
figure 6

System with a ZCP class 3 and a break variable

The dynamic equation and the constraint equation established are

$$ \left\{\begin{array}{l}{\overset{.}{q}}_1=-{v}_1-\mathrm{S}\mathrm{f}\hfill \\ {}{R}_1{v}_1=-\mathrm{G}\mathrm{S}\mathrm{f}+{K}_1{q}_1\hfill \end{array}\right. $$
(2.10)

If differential causality is imposed on the compliance (Fig. 2.7), the causal path disappears since flow q 1, which imposes compliance, is used as break variable.

Fig. 2.7
figure 7

System with a ZCP class 3 and a compliance with derivative causality

The following expression is obtained:

$$ {K}_1{q}_1=-{R}_1{\overset{.}{q}}_1-{R}_1\mathrm{S}\mathrm{f}+\mathrm{G}\mathrm{S}\mathrm{f}\vspace*{-4pt} $$
(2.11)

That can be reorganized as:

$$ {\overset{.}{q}}_1+\frac{K_1}{R_1}{q}_1=\frac{\mathrm{GSf}}{R_1}-\mathrm{S}\mathrm{f} $$
(2.12)

For nonlinear systems, as in the ZCP class 2, the proposed method is not applicable when the elements among which the ZCP is produced do not let the derivative of the state variable to be explicitly obtained.

6 ZCP Class 4

ZCP class 4 is a causal cycle whose topological loops are closed. Each ZCP class 4 needs two break variables (usually a flow and an effort), and introduces two algebraic equations.

The following example illustrates the case of ZCP class 4. Two break variables are introduced (the flow v 1 and the effort e 1) (Fig. 2.8).

Fig. 2.8
figure 8

System with a ZCP class 4 and two break variables

The dynamic equations and the constraint equations established, with break variables, are

$$ \left\{\begin{array}{l}m\overset{.}{v}=\dfrac{e_1}{b}\hfill \\ {}\overset{.}{q}={v}_1\hfill \\ {}\dfrac{v_1}{a}=Sf-\dfrac{\left(v-{v}_1\right)}{b}\hfill \\[8pt] {}\dfrac{e_1}{a}={K}_1q+\dfrac{e_1}{b}\hfill \end{array}\right. $$
(2.13)

If differential causality is established on the inertance and the compliance (Fig. 2.9), the two causal paths disappear and no additional break variables are needed, since flow \( \overset{.}{q} \) and \( m\overset{.}{v} \) effort associated with the compliance and the inertance, respectively, act as break variables.

Fig. 2.9
figure 9

System with a ZCP class 4

The equations are then as follows:

$$ \left\{\begin{array}{c}\hfill v=\left(1-\raisebox{1ex}{$b$}\!\left/ \!\raisebox{-1ex}{$a$}\right.\right)\overset{.}{q}+b\mathrm{S}\mathrm{f}\hfill \\ {}\hfill {K}_1q=-\!\left(1-\raisebox{1ex}{$b$}\!\left/ \!\raisebox{-1ex}{$a$}\right.\right)m\overset{.}{v}\hfill \end{array}\right. $$
(2.14)

Then:

$$ \left[\begin{array}{cc}\hfill m\left(1-\raisebox{1ex}{$b$}\!\left/ \!\raisebox{-1ex}{$a$}\right.\right)\hfill & \hfill 0\hfill \\ {}\hfill 0\hfill & \hfill -\!\left(1-\raisebox{1ex}{$b$}\!\left/ \!\raisebox{-1ex}{$a$}\right.\right)\hfill \end{array}\right]\left[\begin{array}{c}\hfill \overset{.}{v}\hfill \\ {}\hfill \overset{.}{q}\hfill \end{array}\right]+\left[\begin{array}{cc}\hfill 0\hfill & \hfill {K}_1\hfill \\ {}\hfill 1\hfill & \hfill 0\hfill \end{array}\right]\left[\begin{array}{c}\hfill v\hfill \\ {}\hfill q\hfill \end{array}\right]=\left[\begin{array}{c}\hfill 0\hfill \\ {}\hfill b\mathrm{S}\mathrm{f}\hfill \end{array}\right] $$
(2.15)

Although the example showed corresponds to a linear system, the proposed method is applicable when the TF or GY variables involved in the ZCP are nonlinear (a and b in the case of example are the constitutive relations of the transformer), with the only possible constraint that in the final equations a singular position can appear (like a division by 0 as example), and in this case, a change of the causality direction in all the closed loop could be necessary.

The procedure is valid when constitutive relations of TF and GY are functions of the state variables, for instance, but is not valid if they are a function of the derivatives of the state variables.

7 ZCP with a Loop-Gain Equal to 1

Figure 2.10 represents a ZCP class 4 with a loop-gain equal to 1. To open the loop, two break variables e and f are needed as can be seen in Fig. 2.10.

Fig. 2.10
figure 10

System with a ZCP class 4 and loop-gain equal to 1 with two break variables

The equations obtained are as follows:

$$ \left\{\begin{array}{l}{\overset{.}{q}}_1=f\hfill \\ {}{\overset{.}{q}}_2=f-{v}_1\hfill \\ {}{m}_1{\overset{.}{v}}_1={K}_1{q}_1+{K}_2{q}_2+e-\mathrm{S}\mathrm{e}\hfill \\ {}{m}_2{\overset{.}{v}}_2=-{K}_1{q}_1-e+\mathrm{S}\mathrm{e}\hfill \\ {}{K}_1{q}_1+{K}_2{q}_2-\mathrm{S}\mathrm{e}=0\hfill \\ {}{v}_1-{v}_2=0\hfill \end{array}\right. $$
(2.16)

The problem with these equations is that they are differential algebraic equations of order 2 that cannot be solved numerically if they are not derived and the nilpotency index reduced.

However, if the proposed method of inverting the causality of elements C and I is used by assigning them differential causality, the ZCP class 4 disappears (Fig. 2.11).

Fig. 2.11
figure 11

System with a ZCP class 4 and loop-gain equal to 1

The following equations are obtained:

$$ \left[\begin{array}{cccc}\hfill 1\hfill & \hfill -1\hfill & \hfill 0\hfill & \hfill 0\hfill \\ {}\hfill 1\hfill & \hfill -1\hfill & \hfill 0\hfill & \hfill 0\hfill \\ {}\hfill 0\hfill & \hfill 0\hfill & \hfill {m}_1\hfill & \hfill {m}_2\hfill \\ {}\hfill 0\hfill & \hfill 0\hfill & \hfill {m}_1\hfill & \hfill {m}_2\hfill \end{array}\right]\left[\begin{array}{c}\hfill {\overset{.}{q}}_1\hfill \\ {}\hfill {\overset{.}{q}}_2\hfill \\ {}\hfill {\overset{.}{v}}_1\hfill \\ {}\hfill {\overset{.}{v}}_2\hfill \end{array}\right]+\left[\begin{array}{cccc}\hfill 0\hfill & \hfill 0\hfill & \hfill -1\hfill & \hfill 0\hfill \\ {}\hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill -1\hfill \\ {}\hfill {K}_1\hfill & \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill \\ {}\hfill 0\hfill & \hfill -{K}_2\hfill & \hfill 0\hfill & \hfill 0\hfill \end{array}\right]\left[\begin{array}{c}\hfill {q}_1\hfill \\ {}\hfill {q}_2\hfill \\ {}\hfill {v}_1\hfill \\ {}\hfill {v}_2\hfill \end{array}\right]=\left[\begin{array}{c}\hfill 0\hfill \\ {}\hfill 0\hfill \\ {}\hfill \mathrm{S}\mathrm{e}\hfill \\ {}\hfill 0\hfill \end{array}\right] $$
(2.17)

In this case, these equations can be simplified because if the first two rows are summed, it is obtained that:

$$ {v}_1={v}_2 $$
(2.18)

and (2.17) can be reduced to:

$$ \left[\begin{array}{ccc}\hfill 2{m}_1\hfill & \hfill 0\hfill & \hfill 0\hfill \\ {} 0 & \hfill 1\hfill & \hfill -1\hfill \\ {}0& \hfill 0\hfill & \hfill 0\hfill \end{array}\right]\left[\begin{array}{c}\hfill {\overset{.}{v}}_2\hfill \\ {}\hfill {\overset{.}{q}}_1\hfill \\ {}\hfill {\overset{.}{q}}_2\hfill \end{array}\right]+\left[\begin{array}{ccc}\hfill 0\hfill & \hfill 0\hfill & \hfill -{K}_2\hfill \\ {}\hfill -1\hfill & \hfill 0\hfill & \hfill 0\hfill \\ {}\hfill 0\hfill & \hfill {K}_1\hfill & \hfill {K}_2\hfill \end{array}\right]\left[\begin{array}{c}\hfill {v}_2\hfill \\ {}\hfill {q}_1\hfill \\ {}\hfill {q}_2\hfill \end{array}\right]=\left[\begin{array}{c}\hfill 0\hfill \\ {}\hfill 0\hfill \\ {}\hfill \mathrm{S}\mathrm{e}\hfill \end{array}\right] $$
(2.19)

The above Eq. (2.19) are differential algebraic equations and do not present any additional break variables.

8 Combinations of Several ZCPs

The objective of this section is to show the application of the proposed method when several ZCPs simultaneously appear. The idea is quite simple. First step is to apply a procedure to assign causality like the shown in [1, 4] developed by Felez et al. to detect the different ZCPs that appear in the model. In this step, when ZCPs are identified, causality is assigned and creak variables are used to solve and break the different identified ZCPs.

Because the aim of this work is to show the way of applying the proposed method, very simple and academic examples are proposed. The focus is not the physical interpretation of the bond graph models. The main focus is to show how, with a bond graph structure that presents combination of ZCPs, the proposed method can obtain a more reduced set of equations by eliminating break variables when it is possible.

Let’s analyze two different cases. In both cases, several ZCPs simultaneously appear, several storage elements, I and C, appear and for each case, equations obtained by using break variables and preferred causality for I and C elements are showed in comparison with the proposed method that inverts the causality of I and C in order to reduce the number of equations.

Equations are obtained with the assumption of linear behavior, but the procedure can be applied in the same way for nonlinear components behavior, taking into account that in this case several causality constraints may be taken into account.

8.1 Combination Between Two ZCPs Class 3

Figure 2.12 shows an example that includes one C element (energy storage element) and two R elements. If causality assignment procedure is applied, C element is assigned with preferred causality and two break variables, f 1 and f 2, are needed in order to solve the two ZCPs class 3 that appear.

Fig. 2.12
figure 12

System with combination of class 2 and 3 ZCPs

Expression (2.20) shows the obtained equations. They are composed by a set of three equations. This first one is a differential one, related with the C element, and the last two ones are algebraic equations related with the two R elements and the two class 3 ZCPs. Variables in the set of equations are q, f 1, and f 2.

$$ \left\{\begin{array}{l}\overset{.}{q}=\mathrm{S}\mathrm{f}={f}_1-{f}_2\hfill \\ {}{R}_1{f}_1=a\mathrm{S}\mathrm{f}+{K}_1q+\left(b-a\right){f}_2\hfill \\ {}{R}_2{f}_2=b\mathrm{S}\mathrm{f}+{K}_1q+\left(a-b\right){f}_1\hfill \end{array}\right. $$
(2.20)

Figure 2.13 shows the application of the proposed method for this case. If causality in the C element is inverted, the C element imposes its associated effort K 1 q. But, because of the presence of only one energy storage element, only one of the two original ZCPs can be broken, and one break variable is needed to solve the causality assignment. This break variable is f 1.

Fig. 2.13
figure 13

Opening procedure for a system with combination of class 2 and 3 ZCPs

Expression (2.21) shows the obtained equations. I this case they are composed by a set of two equations. This first one is an algebraic equations, related with the C element where the effort K 1 q is imposed, and the other equation is an n equation obtained when imposing the break variable, but that is differential due to the flow associated with the C element. Variables in the set of equations are q and f 1. In conclusion, originally one C element and two break variables (three equations), and with the application of the proposed method, the causality inversion in the C element eliminates one break variable, so only two equations are obtained.

$$ \left\{\begin{array}{l}{K}_1q=\left(B-a\right){f}_1-b\mathrm{S}\mathrm{f}\hfill \\ {}{R}_1{f}_1-\left(a-b\right)\overset{.}{q}+{R}_2\left(\mathrm{S}\mathrm{f}-{f}_1\right)\hfill \end{array}\right. $$
(2.21)

Let’s show other example, similar to the previous one, but with two energy storage elements, one C and one I. Figure 2.14 shows the example. If causality assignment is applied, C and I elements are assigned with preferred causality and two break variables, f 1 and f 2, are needed in order to solve the two ZCPs class 3 that also appear.

Fig. 2.14
figure 14

System with class 2 and 3 ZCPs

Expression (2.22) shows the obtained equations. They are composed by a set of four equations. Two are differential equations, related with the C and I elements, and the other two are algebraic equations related with the R elements and the two class 3 ZCPs. Variables in the set of equations are q, v, f 1, and f 2.

$$ \left\{\begin{array}{l}\overset{.}{q}=v-{f}_1-{f}_2\hfill \\ {}m\overset{.}{v}=-kq-a{f}_1-b{f}_2\hfill \\ {}{R}_1{f}_1=av+Kq+\left(b-a\right){f}_2\hfill \\ {}{R}_2{f}_2=bv+Kq+\left(a-b\right){f}_1\hfill \end{array}\right. $$
(2.22)

If causality in the C and I elements are inverted, the C element imposes its associated effort K 1 q and the I element imposes its associated flow v (Fig. 2.15).

Fig. 2.15
figure 15

Causal paths opening procedure

The presence of two energy storage elements produces the elimination of the two previous ZCPs, obtaining in consequence only two differential equations, and no one algebraic Eq. (2.23). So it can be concluded that the causality inversion of one energy storage element produces the elimination of one ZCP. In this particular case, two energy storage elements eliminate two ZCPs.

$$ \left\{\begin{array}{l}Kq=-\!\left(m-\raisebox{1ex}{$a$}\!\left/ \!\raisebox{-1ex}{${R}_1$}\right.-\raisebox{1ex}{$b$}\!\left/ \!\raisebox{-1ex}{${R}_2$}\right.\right)\overset{.}{v}-\left({a}^2-{b}^2\right)\overset{.}{q}\hfill \\ {}v=\left(1+\raisebox{1ex}{$a$}\!\left/ \!\raisebox{-1ex}{${R}_1$}\right.+\raisebox{1ex}{$b$}\!\left/ \!\raisebox{-1ex}{${R}_2$}\right.\right)\overset{.}{q}-\left(\raisebox{1ex}{$1$}\!\left/ \!\raisebox{-1ex}{${R}_1$}\right.+\raisebox{1ex}{$1$}\!\left/ \!\raisebox{-1ex}{${R}_2$}\right.\right)m\overset{.}{v}\hfill \end{array}\right. $$
(2.23)

8.2 Combination Between ZCPs Class 2 and 4

Let’s show other examples where combination of different ZCPs also appears. In this case, combination between class 2 and class 4 is presented, as shown in Fig. 2.16. The program presents one I element and two resistances. If preferred causality is applied to the I element, two break variables are needed. The first one e 2 is associated with the class 2 causal path, and the second one, e 1, is associated with the closed loop presented in the right hand of the bong graph in Fig. 2.16.

Fig. 2.16
figure 16

System with class 3 and 4 ZCPs

Expression (2.24) shows the obtained equations. They are composed by a set of three equations. This first one is a differential one, related with the I element, and the last two ones are algebraic equations related with the ZCPs. Variables in the set of equations are v, e 1, and e 2.

$$ \left\{\begin{array}{l}m\overset{.}{v}={e}_1+\mathrm{S}\mathrm{e}\hfill \\[6pt] \dfrac{e_2}{R_2}=\left({e}_2-{e}_1\right)\left(\dfrac{1}{R_1}+\dfrac{1}{R_3}\right)+\dfrac{e_1+\mathrm{S}\mathrm{e}}{R_3}\hfill \\[9pt] v=\mathrm{S}\mathrm{f}+\dfrac{e_2-{e}_1}{R_1}\hfill \end{array}\right.\vspace*{-4pt} $$
(2.24)

Figure 2.17 shows the application of the proposed method for this case. If causality in the I element is inverted, the I element imposes its associated effort. But, because of the presence of only one energy storage element, only one of the two original ZCPs can be broken, and one break variable is needed to solve the causality assignment. This break variable is e 2.

Fig. 2.17
figure 17

Opening procedure for class 3 and 4 ZCPs

Expression (2.25) shows the obtained equations. I this case they are composed by a set of two equations. There is a set of implicit differential equations. Variables in the set of equations are v and e 2. In conclusion, originally one I element and two break variables (three equations), and with the application of the proposed method, the causality inversion in the I element eliminates one break variable, so only two equations are obtained.

$$ \left\{\begin{array}{l}v=-\dfrac{e_2+\mathrm{S}\mathrm{e}+m\overset{.}{v}}{R_1}-\mathrm{S}\mathrm{f}\hfill \\ {}\dfrac{e_2}{R_2}=-\!\left({e}_2+\mathrm{S}\mathrm{e}+m\overset{.}{v}\right)\left(\dfrac{1}{R_1}+\dfrac{1}{R_3}\right)-\dfrac{m\overset{.}{v}}{R_3}\hfill \end{array}\right.\vspace*{-2pt} $$
(2.25)

Now, other similar example is presented, but with two I elements. Figure 2.18 shows the example. If causality assignment is applied, both I elements are assigned with preferred causality and two break variables, e 1 and e 2, are needed in order to solve the two ZCPs that also appear.

Fig. 2.18
figure 18

System with class 3 and 4 ZCPs

Expression (2.26) shows the obtained equations. They are composed by a set of four equations. Two are differential equations, related with the I elements, and the other two are algebraic equations related with the R element and ZCP class 4. Variables in the set of equations are v 1, v 2, e 1, and e 2.

$$ \left\{\begin{array}{l}{m}_1{\overset{.}{v}}_1={e}_1+\mathrm{S}\mathrm{e}\hfill \\ {}{m}_2{\overset{.}{v}}_2={e}_2\hfill \\ {}\dfrac{e_2}{R_2}=-{v}_2-\left({e}_2-{e}_1\right)\left(\dfrac{1}{R_1}+\dfrac{1}{R_3}\right)+\dfrac{e_1+\mathrm{S}\mathrm{e}}{R_3}\hfill \\[1pc] \mathrm{S}\mathrm{f}+\left({e}_2-{e}_1\right)\left(\dfrac{1}{R_1}+\dfrac{1}{R_3}\right)-\dfrac{e_1+\mathrm{S}\mathrm{e}}{R_3}={v}_1-\dfrac{e_2-{e}_1}{R_3}+\dfrac{e_1+\mathrm{S}\mathrm{e}}{R_3}\hfill \end{array}\right.\vspace*{-2pt} $$
(2.26)

And finally, Fig. 2.19 shows the application of the proposed method for this case. If causality in the I elements is inverted, the I element imposes its associated effort and both ZCPs disappear.

Fig. 2.19
figure 19

Opening procedure

Expression (2.27) shows the obtained equations. They are composed by a set of two differential equations.

$$ \left\{\begin{array}{l}{v}_1=\mathrm{S}\mathrm{f}+\dfrac{m_2{\overset{.}{v}}_2-{m}_1{\overset{.}{v}}_1+\mathrm{S}\mathrm{e}}{R_1}\hfill \\ {}{v}_2=-\dfrac{m_2{\overset{.}{v}}_2}{R_2}-\left({m}_2{\overset{.}{v}}_2-{m}_1{\overset{.}{v}}_1+\mathrm{S}\mathrm{e}\right)\left(\dfrac{1}{R_1}+\dfrac{1}{R_3}\right)+\dfrac{m_1{\overset{.}{v}}_1-\mathrm{S}\mathrm{e}}{R_3}\hfill \end{array}\right. $$
(2.27)

9 Conclusions

In this work, a method to eliminate the additional break variables needed when ZCPs appear in a bond graph is presented. This method has been developed with the aim of obtaining a minimal set of the dynamic equations of a system modeled with bond graphs. The method is based on an assignment of causality consisting in applying differential causality of I and C elements when ZCPs appear. With this causality assignment, ZCPs disappear and no break variables are needed.

The developed procedure allows the reduction of the number of equations in the dynamic system, obtaining the equations only in terms of the number of independent inertance and compliance elements of the system. A systematic analysis of each ZCP class has shown the way to apply the procedure. Some examples have been presented in order to show the application of the proposed method. The final equations are in most of the case purely ODEs, but in several particular cases, DAE equations remain.

Several examples are also provided in order to demonstrate the applicability of the proposed method when combination of different ZCOs appear simultaneously in the model.

The results obtained with this formulation are clearly superior, from the point of view of computational time, to those obtained with the classical bond graph formulation with break variables.