I was reading code for the stratified tank model in particular the buoyancy model (Buildings.Fluid.Storage.BaseClasses.Buoyancy).
Q_flow[i] = k*noEvent(smooth(1, if dT[i]>0 then dT[i]^2 else 0));
Now "k" has dimensions "W/K", so right hand side becomes [W/K * K^2] while left hand side is [W].
The old implementation was:
Q_flow[i] = k*max(heatPort[i+1].T-heatPort[i].T, 0);
which is dimensionally correct.
The smooth operator does not differentiate dT^2. Is this a correction factor kind of equation and so we do not look at dimensions? What am I missing here?