Question-and-Answer Resource for the Building Energy Modeling Community
Get started with the Help page
Ask Your Question

Revision history [back]

This was changed on September 16, 2011 by Michael Wetter (see revision notes in the model file. The model's revision notes state:
Changed the implementation from Q_flow[i] = kmax(heatPort[i+1].T-heatPort[i].T, 0); to Q_flow[i] = ksmooth(1, if dT[i]>0 then dT[i]^2 else 0);. The previous implementation was not differentiable. In modeling a solar system, this change reduced the computing time by a factor of 20 during the time when the pumps were almost switched off and colder temperature was fed from the collector to the tank.

The new formulation is differentiable and triggers no events, which makes it easier for Newton-solvers to find a solution, and avoids a computationally expensive event iteration which was done in the old implementation whenever the result of the if-then condition changed.

This was changed on September 16, 2011 by Michael Wetter (see revision notes in the model file. The model's revision notes notes state:
Changed the implementation from Q_flow[i] = kmax(heatPort[i+1].T-heatPort[i].T, 0); to Q_flow[i] = ksmooth(1, if dT[i]>0 then dT[i]^2 else 0);. The previous implementation was not differentiable. In modeling a solar system, this change reduced the computing time by a factor of 20 during the time when the pumps were almost switched off and colder temperature was fed from the collector to the tank.

The new formulation is differentiable and triggers no events, which makes it easier for Newton-solvers to find a solution, and avoids a computationally expensive event iteration which was done in the old implementation whenever the result of the if-then condition changed.

This was changed on September 16, 2011 by Michael Wetter (see revision notes in the model file. The model's revision notes state:

Changed the implementation from Q_flow[i] = kmax(heatPort[i+1].T-heatPort[i].T, 0); to Q_flow[i] = ksmooth(1, if dT[i]>0 then dT[i]^2 else 0);. .

The previous implementation was not differentiable. In modeling a solar system, this change reduced the computing time by a factor of 20 during the time when the pumps were almost switched off and colder temperature was fed from the collector to the tank.

The new formulation is differentiable and triggers no events, which makes it easier for Newton-solvers to find a solution, and avoids a computationally expensive event iteration which was done in the old implementation whenever the result of the if-then condition changed.

This was changed on September 16, 2011 by Michael Wetter (see revision notes in the model file. The model's revision notes state:

Changed the implementation from Q_flow[i] = kmax(heatPort[i+1].T-heatPort[i].T, k*max(heatPort[i+1].T-heatPort[i].T, 0); to Q_flow[i] = ksmooth(1, k*smooth(1, if dT[i]>0 then dT[i]^2 else 0);.

The previous implementation was not differentiable. In modeling a solar system, this change reduced the computing time by a factor of 20 during the time when the pumps were almost switched off and colder temperature was fed from the collector to the tank.

The new formulation is differentiable and triggers no events, which makes it easier for Newton-solvers to find a solution, and avoids a computationally expensive event iteration which was done in the old implementation whenever the result of the if-then condition changed.

This was changed on September 16, 2011 by Michael Wetter (see revision notes in the model file. The model's revision notes state:

Changed the implementation from Q_flow[i] = k*max(heatPort[i+1].T-heatPort[i].T, 0); to Q_flow[i] = k*smooth(1, if dT[i]>0 then dT[i]^2 else 0);.

The previous implementation was not differentiable. In modeling a solar system, this change reduced the computing time by a factor of 20 during the time when the pumps were almost switched off and colder temperature was fed from the collector to the tank.

The new formulation is differentiable and triggers no events, which makes it easier for Newton-solvers to find a solution, and avoids a computationally expensive event iteration which was done in the old implementation whenever the result of the if-then condition changed.