Неявные решатели должны повторяться, чтобы найти решение, так как они используют неизвестные переменные для оценки результата. Эти переменные сначала оцениваются, а затем проверяются с использованием остаточного уравнения. Эта итерация должна выполняться на каждом этапе решателя и часто выполняется с помощью итерации Ньютона, поскольку это обещает хорошую производительность (некоторые slide-deck на этом и полная лекция ) , Одним из недостатков итераций Ньютона является то, что он может потерпеть неудачу при сильной нелинейности или неоптимальных значениях догадки. По этой причине в сообщении об ошибке указывается, что должны быть предоставлены лучшие «начальные значения».
Что могут сделать решатели, так это переключиться с хорошо работающей, но не всегда стабильной итерации Ньютона на что-то более медленное, но более надежный, как би-секция. В Dymola это даст вам предупреждение (к сожалению, записано как ERROR
), но симуляция продолжается. Таким образом, ваша модель сложна в обращении, но решатель все еще может сделать это с некоторой дополнительной работой.
Обеспечение лучших начальных значений кажется трудным в вашем случае, так как это происходит во время моделирования, а не в начале (хотя перед тем, который вы показываете, были сообщения того же типа, причем первое предоставляло больше информации). Поэтому кажется, что сам решатель оценивает значение удаленно, или в это время произошло событие, прерывающее и перезапускающее решающее устройство. Вероятно, стоит протестировать предоставленные опции здесь .
Если вы хотите избавиться от итерации Ньютона, вам нужно будет выбрать явный решатель (например, Euler, Rkfix, Dopri в Dymola). Но, вероятно, вам понадобятся очень маленькие шаги, чтобы успешно смоделировать модель - замедление моделирования.