I am using ANSYS Twinbuilder to model a system containing two reservoirs (open tank) connected to their respectives pumps (2) connected to two Mills (opentank). Everything is modelled in modellica. I want to control the flow depending on the plant operation mode, to every possible combination of tanks using discrete valves. The discrete valves contain variables for ex: flowdir_R1M1, meaning it controls the flow from Reservoir 1 to Mill 1. The code produces the following error:
[error] Index reduction failed
[error] The system is structurally singular. The following variable(s) could not be matched to any equation: flowdir_R1M2 flowdir_R2M1 flowdir_R2M2 flowdir_M1R2 flowdir_M2R1 flowdir_M2R2 flowdir_M1M2 flowdir_R1R2 flowdir_R2R1
code (relevant bit):
model plant
//Declarations
......
parameter Integer op_mode = 1;
Boolean flowdir_R1M1;
Boolean flowdir_R1M2;
Boolean flowdir_R2M1;
Boolean flowdir_R2M2;
Boolean flowdir_M1R1;
Boolean flowdir_M1R2;
Boolean flowdir_M2R1;
Boolean flowdir_M2R2;
Boolean flowdir_M1M2;
Boolean flowdir_R1R2;
Boolean flowdir_R2R1;
Real rpm_nominal = 500;
Real pump1_rpm;
Real pump2_rpm;
//connections
....
initial algorithm
flowdir_R1M1 := false;
flowdir_R1M2 := false;
flowdir_R2M1 := false;
flowdir_R2M2 := false;
flowdir_M1R1 := false;
flowdir_M1R2 := false;
flowdir_M2R1 := false;
flowdir_M2R2 := false;
flowdir_M1M2 := false;
flowdir_R1R2 := false;
flowdir_R2R1 := false;
pump1_rpm := 0;
pump2_rpm := 0;
algorithm
// Control logic based on mode
if op_mode == 1 then
flowdir_R1M1 := true;
flowdir_M1R1 := true;
pump1_rpm := rpm_nominal;
pump2_rpm := 0;
end if;
equation
....
end plant;
I new to modelica and am not able to pinpoint what’s causing the error. I’d really appretiate your help!
1