SystemModelUntil[texpr1,texpr2]
is True in the intervals where texpr1 is True until texpr2 first becomes True.
SystemModelUntil
SystemModelUntil[texpr1,texpr2]
is True in the intervals where texpr1 is True until texpr2 first becomes True.
Details
- SystemModelUntil is typically used to test the expected end of a behavior in a system signaled by a separate response, often indicating the transition of a system between modes.
- SystemModelUntil[texpr1,texpr2][t] is ¬texpr2[t] for
if texpr1[t] is True for
and texpr2[t2] is True. - SystemModelUntil[texpr1,texpr2][t] is False for
if texpr1[t] is False for
. - SystemModelUntil[texpr1,texpr2][t] is False for
if texpr1[t] is True for
and texpr2[t] never becomes True in
. - SystemModelUntil can be used to specify system behaviors in functions like SystemModelValidate.
Examples
open all close allBasic Examples (1)
Use SystemModelUntil to validate a behavior that must happen until a separate condition becomes true:
model = [image];Validate the requirement, "Whenever the controller is turned on, until the room temperature reaches a value between 19.5 °C and 20.6 °C, the floor must input at least 7.6 W of heat into the room.":
req = SystemModelAlways[t, SystemModelUntil["thermostat.onOffController.y"[t], 19.5 < "temperatureSensor1.T"[t] < 20.5]"room.floor.Q_flow"[t] > 7.6];spec = <|"SimulationInterval" -> 2000|>;The model fails the requirement:
SystemModelValidate[model, req, spec]Scope (1)
Basic Uses (1)
Validate requirements in a model of a pendulum:
model = CreateSystemModel["MyPendulum", {θ'[t] == ω[t], ω'[t] == -θ[t], right[t] == (θ[t] ≥ 0), θ[0] == 1}, t, {right∈ Booleans}, <|"SimulationSettings" -> <|"StopTime" -> 15|>|>];
SystemModelPlot[model, {θ, right}]Validate the requirement, "Whenever the angular velocity is positive, until the angle is non-negative, the angular acceleration must be above -10.-9.":
SystemModelValidate[model, SystemModelAlways[t, SystemModelUntil[ω[t] > 0, θ[t] ≥ 0](ω'[t] > -10.^-9)]]Validate the requirement, "Whenever the angular velocity is positive, until the angle is non-negative, the angular acceleration must be above 0.8.":
smv = SystemModelValidate[model, SystemModelAlways[t, SystemModelUntil[ω[t] > 0, θ[t] ≥ 0](ω'[t] > 0.8)]]smv["FailurePlot", 1]Applications (1)
Start with a simple model of an electrical vehicle following the US EPA Highway Fuel Economy Driving Schedule (HWFET):
model = \!\(\*GraphicsBox[«8»]\);Validate the requirement, "Whenever the state of charge of the battery is greater than 0.86, until the battery temperature reaches a value greater than 26 °C, the current produced by the battery must be above 22 A.":
val = SystemModelValidate[model, SystemModelAlways[t, SystemModelUntil[0.86 < "battery.SOC"[t], 26 + 273.15 < "T"[t]]22 < "sensor.i"[t]]]val["FailurePlot", 1]Extract the maximum of the failure intervals:
tmax = Max[val["FailureIntervals", 1, -1]]Plot the current together with the bound and failure intervals as filling:
SystemModelPlot[model, {"sensor.i", 22}, tmax, PlotRange -> {All, {21, 23}}, ...]Tech Notes
Related Guides
Related Links
History
Text
Wolfram Research (2025), SystemModelUntil, Wolfram Language function, https://reference.wolfram.com/language/ref/SystemModelUntil.html.
CMS
Wolfram Language. 2025. "SystemModelUntil." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/SystemModelUntil.html.
APA
Wolfram Language. (2025). SystemModelUntil. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/SystemModelUntil.html
BibTeX
@misc{reference.wolfram_2026_systemmodeluntil, author="Wolfram Research", title="{SystemModelUntil}", year="2025", howpublished="\url{https://reference.wolfram.com/language/ref/SystemModelUntil.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_systemmodeluntil, organization={Wolfram Research}, title={SystemModelUntil}, year={2025}, url={https://reference.wolfram.com/language/ref/SystemModelUntil.html}, note=[Accessed: 13-June-2026]}