Neil,
I am sorry I have been unable to make this issue clear.
It is a subtle point, made more confusing by my rather
ornate use of variable names.
So, as requested, I will try here to illustrate it with
code that is more easy to copy. I hope that helps. I will, as always,
attach a notebook for convenience.
For comparison, here is a simple example where Solve, quite properly I believe, deduces the correct units. Notice in this first example the vector aVec is defined in a unit-less fashion.
None the less, Solve will still correctly determine the units from the calculation.
m = Quantity[40, "Kilograms"];
g = Quantity[9.8, ("Meters")/("Seconds")^2];
aVec = {ax, ay};
Fw = m*g;
FwVec = AngleVector[{Fw, 270 Degree}];
F1Vec = AngleVector[{Quantity[20, "Newtons"], 0 Degree}];
FnVec = AngleVector[{Fw, 90 Degree}];
RVec = F1Vec + FnVec + FwVec;
Solve[RVec == m*aVec, aVec]
This produces the following output:
{ax -> Quantity[0.5, ("Meters")/("Seconds")^2],
ay -> Quantity[0., ("Meters")/("Seconds")^2]}
So far so good. Notice that although aVec in the simple example above was defined without units,
Solve could determine the units from the calculation and the lack
of units is not a show-stopper. This seems to me to be reasonable and correct Mathematica behavior.
Now consider a similar calculation that requires the Integrate function.
r0Vec = {Quantity[0, "Meters"], Quantity[0, "Meters"]};
r1Vec = {Quantity[1, "Meters"], Quantity[0, "Meters"]};
v0Vec = AngleVector[{Quantity[2.8, ("Meters")/("Seconds")], 0 Degree}];
v1Vec = AngleVector[{Quantity[0, ("Meters")/("Seconds")], 0 Degree}];
aVec = {ax, ay};
m = Quantity[0.45, "Kilograms"];
g = Quantity[9.8, ("Meters")/("Seconds")^2];
Fw = m*g;
FwVec = AngleVector[{Fw, 270 Degree}];
FkVec = AngleVector[{Fk, 180 Degree}];
FnVec = AngleVector[{Fw, 90 Degree}];
RVec = FkVec + FnVec + FwVec;
In this example, the lack of units for the aVec appears
to be a complete showstopper for Integrate. The following
will produce many Quantity related errors.
v0Vec + Integrate[aVec, Quantity[t, "Seconds"]]
So, executing the following line, which is a valid mathematical description of the
solution, will never work in V12, for the reasons outlined.
NSolve[{RVec == m*aVec, r1Vec == r0Vec + Integrate[v0Vec, Quantity[t, "Seconds"]] + Integrate[Integrate[aVec, Quantity[t, "Seconds"]], Quantity[t, "Seconds"]], v1Vec == v0Vec + Integrate[aVec, Quantity[t, "Seconds"]]}, {t, ax, ay, Fk}] // First
It seems to me that it most definitely should work in V12, like it so beautifully did in V4. But it does not. The lack of units in the definition of the aVec vector seems to cause a whole class of solution expressions, that are perfectly valid mathematically, to no longer be calculable in Mathematica V12. How could such a fault be anything less than a "flaw" or "bug" or "mistake" in the architecture of units in V12 via the Quantity function?
So, in conclusion, here is why this strikes me as a "flaw" in V12.
Because in V4 (see example in attached notebook or JPEG below) these sort
of unit-less variables did not stop the Integrate function from completing
it's task. In V4, before the Quantity function was introduced and before functions
like Plus, Integrate, etc... were re-coded/updated, the units for aVec were easily deduced
from the calculation itself. Is this not superior? This is how it worked in V4. I found such functionality both beautiful and effective. But I can not find a way to make V12 behave in this V4 superior manner, and deduce the units of variables not explicitly defined with Quantity.

It feels like I am saying the same thing, over and over.
Does this make any sense?
Regards,
- Joe
Attachments: