The provided suggestion of the unit delay is a work around, but it does not provide the reason for the presence of the algebraic loop.
Here is the real answer to "why?":
The unit delay proposed in the answer is not supposed to be necessary, since the V-Filter and I-Filter in the model, for the computation of Vd, is supposed to break the algbraic loop. Vd which is dependent on the model output is fed-back to the model inputs which would have caused an algebraic loop if the filters were not present. The presence of the algebraic loop indicates that the V-Filter and I-Filter implementation probably has an unintended direct feed-through at some point during the simulation.
Adding a unit delay forces the model to be a mixed simulation problem, even if the rest of the model consist out of continuous state models. Secondly, what is an appropriate sample time for the unit delay?
A much better solution:
Replace the faulty filters with ones which actually work as intended:
- right-click on the PV arrary->library->disable link
- Bypass the low-pass filters with the one provided here: https://www.mathworks.com/matlabcentral/fileexchange/58498-real-time-tunable-filters
- Set the cut-off frequency equal to 1/Tf, i.e. the same cutoff frequency of the V-Filter and I-Filter
- Keep the old I Filter and V Filter models inside the original PV array model, but comment them out. The old filters have to be inside the subsystem for model initialization to work correctly.
Or download the model with the required modifications made at:
The proposed solution has been tested.