modelLinearInteraction

Linear model of interaction between two stocks

Extends from Interfaces.Basics.GenericFlow (Flow Template with two FlowPorts), Interfaces.Basics.Interaction4SO (Output connectors for interaction elements reporting rates), Icons.Interaction (Icon for interactional flow classes).

Information

This information is part of the Business Simulation Library (BSL). Please support this work and ► donate.

The LinearInteraction component allows to model the interaction between two stocks A (portA) and B (portB) as linear equations:

Formula.svg

Note: Capital letters were chosen to represent the stocks (state variables) connected at portA and portB in the formula above. Also dot notation is used for a stock's rate of flow—its first derivative with respect to time.

Coefficient Unit Description
a_0

base units for flow to A (OutputType_A)

Rate of growth for stock A

b_0

base units for flow to B (OutputType_B)

Rate of growth for stock B

a_A

1/s

Fractional rate of growth for stock A
(e.g., the self-coupling coefficient for A)

b_B

1/s

Fractional rate of growth for stock B
(e.g., the self-coupling coefficient for B)

a_B

base units for flow to A (OutputType_A)
per base units of B (TypeB)

Rate of growth for stock A per stock B
(e.g., the coupling-cofficient for B towards A)

b_A

base units for flow to B (OutputType_B)
per base units of A (TypeA)

Rate of growth for stock B per stock A
(e.g., the coupling-coefficient for A towards B)

The coefficients can be given as parameters or as variables via the expandable connector dataIn.


Examples

A linear harmonic oscillator can be modeled as a special case of linear interactions where the rates for the mutual influences (e.g., fractionalGrowthRate_B_per_A and fractionalGrowthRate_A_per_B) are negative. In that case, positive stock A will decrease stock B and vice versa.

The Linear Interaction can be used to model Strogatz' famous model for the dynamics of a love affair (conspicuously between "Romeo" and "Juliet") as shown in →LoveHateDynamics [16].

Notes

  • The type selectors OutputType_A and OutputType_B will be used to conveniently set the types, e.g., units, of the parameters a_0,a_B and b_0, b_A.

  • The coupling coefficient a_B might have rather convoluted units, e.g., base units of A/(base units of B.s). For convenient modeling, a_B will be divided by refB, which allows to use displayUnit should unit conversion be required. Since TypeB by default is set to Unspecified in most cases nothing needs to be done.

  • This will, conversely, also apply to b_A.

See also

NonlinearInteractionComplexInteraction

Parameters

TypeNameDefaultDescription
OutputType_Aa_0unspecifiedConstant rate of growth for stock A [OutputType_A]
OutputType_Bb_0unspecifiedConstant rate of growth for stock B [OutputType_B]
Ratea_AunspecifiedConstant fractional rate of growth for stock A (self-coupling)
Rateb_BunspecifiedConstant fractional rate of growth for stock B (self-coupling)
OutputType_Aa_BunspecifiedConstant rate of growth for stock A per reference units of B (coupling B to A)
TypeBrefB1Reference value for B, i.e., divisor for a_B
OutputType_Bb_AunspecifiedConstant rate of growth for stock B per reference units of A (coupling A to B)
TypeArefA1Reference value for A, i.e., divisor for b_A
Structural Parameters
BooleanhasConstantGrowthRatesfalse= true, if the linear growth rates are given by constant parameters
BooleanhasConstantFractionalGrowthRatesfalse= true, if the fractional growth rates are given by constant parameters
BooleanhasConstantCouplingCoefficientsfalse= true, if the induced growth rates are given by constant parameters

Connectors

TypeNameDefaultDescription
Connectors.FlowPortportA (from GenericFlow)Flow from/to Stock A
Connectors.FlowPortportB (from GenericFlow)Flow to/from Stock B
RealOutput_By_B (from Interaction4SO)Rate for flow to and from B (positive value indicates inflow)
RealOutput_By1_B (from Interaction4SO)Rate for flow to and from B (positive value indicates inflow)
RealOutput_Ay1_A (from Interaction4SO)Rate for flow to and from A (positive value indicates inflow)
RealOutput_Ay_A (from Interaction4SO)Rate for flow to and from A (positive value indicates inflow)
Input_ConnectordataInContinuous inputs for the component

Contents

NameDescription
TypeAType selector for stock A (default = Unspecified)
TypeBType selector for stock B (default = Unspecified)
Input_ConnectorData bus for inputs

Revisions

  • Input_Connector defined as encapsulated expandable connector in v2.1.0.

  • Values for optional parameters changed to unspecified in v2.1.0.

  • Adapted types and added divisors for compliance with unit checking and convenient unit conversions in v2.2.