Skip to content
ReverseCausality.md

ReverseCausality ​

Forces equality between two input signals by computing an implicit output.

The way to think about this component is that it computes an output (implicitly) such that the two inputs are equal. To do this, it must be possible for the output to affect at least one of the inputs somehow. This component supports model inversion scenarios where one of the outputs is prescribed and the system works backward to solve for one of the inputs.

This component extends from BlockComponents.SI2SO

Usage ​

BlockComponents.ReverseCausality()

Connectors ​

  • u1 - This connector represents a real signal as an input to a component (RealInput)

  • u2 - This connector represents a real signal as an input to a component (RealInput)

  • y - This connector represents a real signal as an output from a component (RealOutput)

Behavior ​

u1(t)=u2(t)

Source ​

dyad
"""
Forces equality between two input signals by computing an implicit output.

The way to think about this component is that it computes an output (implicitly)
such that the two inputs are equal.  To do this, it must be possible for the output
to affect at least one of the inputs somehow.  This component supports model
inversion scenarios where one of the outputs is prescribed and the system works
backward to solve for one of the inputs.
"""
component ReverseCausality
  extends BlockComponents.SI2SO
relations
  "Enforces equality between the two input signals"
  u1 = u2
metadata {
  "Dyad": {
    "icons": {"default": "dyad://BlockComponents/ReverseCausality.svg"},
    "labels": [{"label": "$(instance)", "x": 500, "y": 1100, "rot": 0}]
  }
}
end
Flattened Source
dyad
"""
Forces equality between two input signals by computing an implicit output.

The way to think about this component is that it computes an output (implicitly)
such that the two inputs are equal.  To do this, it must be possible for the output
to affect at least one of the inputs somehow.  This component supports model
inversion scenarios where one of the outputs is prescribed and the system works
backward to solve for one of the inputs.
"""
component ReverseCausality
  "First real-valued input signal"
  u1 = RealInput() {
    "Dyad": {
      "placement": {
        "icon": {"iconName": "default", "x1": -50, "y1": 150, "x2": 50, "y2": 250, "rot": 0},
        "diagram": {"iconName": "default", "x1": -100, "y1": 150, "x2": 0, "y2": 250, "rot": 0}
      }
    }
  }
  "Second real-valued input signal"
  u2 = RealInput() {
    "Dyad": {
      "placement": {
        "icon": {"iconName": "default", "x1": -100, "y1": 750, "x2": 0, "y2": 850, "rot": 0},
        "diagram": {"iconName": "default", "x1": -100, "y1": 750, "x2": 0, "y2": 850, "rot": 0}
      }
    }
  }
  "Real-valued output signal"
  y = RealOutput() {
    "Dyad": {
      "placement": {
        "icon": {"iconName": "default", "x1": 1000, "y1": 450, "x2": 1100, "y2": 550, "rot": 0},
        "diagram": {"iconName": "default", "x1": 1000, "y1": 450, "x2": 1100, "y2": 550, "rot": 0}
      }
    }
  }
relations
  "Enforces equality between the two input signals"
  u1 = u2
metadata {
  "Dyad": {
    "labels": [{"label": "$(instance)", "x": 500, "y": 1100, "rot": 0}],
    "icons": {"default": "dyad://BlockComponents/ReverseCausality.svg"}
  }
}
end


Test Cases ​

No test cases defined.

  • Examples

  • Experiments

  • Analyses