Если вы хотите найти падение напряжения для резистора 1 Ом, учитывая, что тепловой поток составляет 1 Вт, это можно смоделировать следующим образом. Сначала вы берете модель, которая генерирует тепловой поток для простой цепи (в VoltageToHeatFlow), а затем инвертируете сигнал (в тестовой модели):
package ShowInvertPower
model VoltageToHeatFlow
Modelica.Electrical.Analog.Basic.Ground ground
annotation (Placement(transformation(extent={{-22,-16},{-2,4}})));
Modelica.Electrical.Analog.Basic.HeatingResistor resistor(R_ref=1)
annotation (Placement(transformation(extent={{-8,48},{12,68}})));
Modelica.Electrical.Analog.Sources.SignalVoltage signalVoltage
annotation (Placement(transformation(extent={{-58,52},{-38,72}})));
Modelica.Thermal.HeatTransfer.Sensors.HeatFlowSensor heatFlowSensor
annotation (Placement(transformation(extent={{52,22},{72,42}})));
Modelica.Thermal.HeatTransfer.Components.HeatCapacitor heatCapacitor(C=1)
annotation (Placement(transformation(extent={{84,36},{104,56}})));
Modelica.Blocks.Interfaces.RealOutput Q_flow1
"Heat flow from port_a to port_b as output signal"
annotation (Placement(transformation(extent={{96,-18},{116,2}})));
Modelica.Blocks.Interfaces.RealInput v1
"Voltage between pin p and n (= p.v - n.v) as input signal"
annotation (Placement(transformation(extent={{-126,-32},{-86,8}})));
equation
connect(signalVoltage.n, resistor.p) annotation (Line(points={{-38,62},{-26,
62},{-26,58},{-8,58}}, color={0,0,255}));
connect(resistor.n, ground.p) annotation (Line(points={{12,58},{30,58},{30,4},
{-12,4}}, color={0,0,255}));
connect(signalVoltage.p, ground.p) annotation (Line(points={{-58,62},{-68,62},
{-68,4},{-12,4}}, color={0,0,255}));
connect(resistor.heatPort, heatFlowSensor.port_a) annotation (Line(points={{
2,48},{28,48},{28,32},{52,32}}, color={191,0,0}));
connect(heatFlowSensor.port_b, heatCapacitor.port) annotation (Line(points={
{72,32},{84,32},{84,36},{94,36}}, color={191,0,0}));
connect(heatFlowSensor.Q_flow, Q_flow1) annotation (Line(points={{62,22},{66,
22},{66,-8},{106,-8}}, color={0,0,127}));
connect(signalVoltage.v, v1) annotation (Line(points={{-48,74},{-106,74},{-106,
-12}}, color={0,0,127}));
end VoltageToHeatFlow;
model Test
ShowInvertPower.VoltageToHeatFlow voltageToHeatFlow annotation (Placement(
transformation(
extent={{-10,-10},{10,10}},
rotation=180,
origin={-2,58})));
Modelica.Blocks.Math.InverseBlockConstraints inverseBlockConstraints
annotation (Placement(transformation(extent={{-24,46},{16,70}})));
Modelica.Blocks.Sources.Constant const(k=2)
annotation (Placement(transformation(extent={{-86,46},{-66,66}})));
equation
connect(voltageToHeatFlow.v1, inverseBlockConstraints.y2) annotation (Line(
points={{8.6,59.2},{13.1,59.2},{13.1,58},{13,58}}, color={0,0,127}));
connect(inverseBlockConstraints.u2, voltageToHeatFlow.Q_flow1) annotation (
Line(points={{-20,58},{-12,58},{-12,58.8},{-12.6,58.8}}, color={0,0,127}));
connect(const.y, inverseBlockConstraints.u1) annotation (Line(points={{-65,56},
{-46,56},{-46,58},{-26,58}}, color={0,0,127}));
annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram(
coordinateSystem(preserveAspectRatio=false)));
end Test;
annotation (uses(Modelica(version="3.2.3")));
end ShowInvertPower;
В результате требуется 1 В (и 1 А). Очевидно, что его можно смоделировать более простыми способами, но использование обратных моделей таким способом является стандартным способом в Modelica.