Teaching Case — What a Library This Engine Does Not Carry Looks Like
The most important template in this set, and nothing in it is wrong. Every real SysML v2 model opens with `import ISQ::*`, and the quantity kinds it brings live in a model library shipped with the standard that this engine does not carry. So `ISQ::MassValue` is reported as a GAP with the reason — not as an error against a type that is perfectly correct, and not as a pass on a name that was never checked. Delete the import line and the same names become hard findings, because then nothing could have supplied them. Same model, two honest answers, and collapsing them in either direction is how a checking tool gets switched off in an afternoon.
Make it your own.
package Powertrain {
// Shipped with the standard. Not carried here, and said so rather than
// guessed at in either direction.
import ISQ::*;
import SI::*;
item def Torque;
port def DriveShaft {
out item torque : Torque;
}
part def Motor {
port output : DriveShaft;
attribute mass : ISQ::MassValue;
attribute peakPower : ISQ::PowerValue;
}
part def Gearbox {
port input : ~DriveShaft;
port output : DriveShaft;
attribute mass : ISQ::MassValue;
attribute ratio : Real;
}
part def Driveline {
port wheelEnd : DriveShaft;
part motor : Motor;
part gearbox : Gearbox;
connect motor.output to gearbox.input;
flow of Torque from gearbox.output.torque to wheelEnd.torque;
}
}