Dymola BlockTimers для симуляции, которая была остановлена - PullRequest
0 голосов
/ 15 января 2019

У меня есть симуляция, которая очень медленная в определенные моменты времени (в моем примере, показанном ниже во время = 358,65). В eventlog.txt и dslog.txt нет записей для этого времени. В качестве следующего шага я установил для GenerateTimers и GenerateBlockTimers значение true, но мне пришлось остановить симуляцию, и кажется, что в этом случае результаты таймера не могут быть просмотрены!?

  • Первый вопрос: могу ли я как-нибудь увидеть результаты таймера для прерванных симуляций? Они хранятся в каком-то файле?
  • Второй вопрос: есть ли другие способы узнать, на что Димола тратит так много времени?

enter image description here После 8E4 секунд (22 ч) времени процессора я остановил симуляцию.
Во время моделирования 358.65 никаких событий не произошло, но было много предупреждений, связанных с отрицательными температурами и отрицательными давлениями, поэтому я предполагаю, что нелинейный решатель как-то движется в неправильном направлении !? Итак, я хотел бы определить систему уравнений, которую так сложно решить за время = 358,65.

1 Ответ

0 голосов
/ 15 января 2019

Первый вопрос: это странно, для меня после остановки симуляции я могу открыть оба, dslog.txt и eventlog.txt, и они содержат соответствующую информацию.

Второй вопрос: есть несколько способов исследовать производительность модели. Я предполагаю, что вы использовали некоторые из них, но я все же перечислю их для полноты, перейдя от простых к более сложным (любой может свободно расширяться, если я что-то забыл):

  1. Активируйте флаг «Включить переменную для истекшего времени ЦП во время моделирования» в настройке моделирования (вкладка «Трансляция»). Это даст вам две дополнительные переменные, а именно «CPUtime» и «EventCounter» в вашем результате. Это помогает указать, когда много времени расходуется (время ЦП) и возможная причина этого (EventCounter). В качестве альтернативы вы можете установить OutputCPUtime = true; из командной строки.
  2. Проверьте в журнале моделирования «количество событий xxx», тогда как большие числа (> 1000) для событий состояния и шага особенно важны.
  3. Учитывая, что у вас много событий (и ваша симуляция очень медленная в определенное время), имеет смысл прервать симуляцию, открыв командное окно, в котором выполняется симуляция (dymosim.exe), и дважды нажмите CTRL + C. Затем вы можете включить ведение журнала событий, введя le = true и продолжить моделирование, введя c. Выходные данные должны указывать, происходят ли события быстро. Если происходит много событий и время не наступает, проблема, скорее всего, «болтается».
  4. Если это не так, проблема может быть трудно решить системы. Это можно исследовать, активировав флаг «Какие состояния доминируют над ошибкой» в настройке моделирования (вкладка «Отладка»). Это будет указывать, какое состояние часто ограничивает размер шага или вызывает доминирующую ошибку. Если это только одно или несколько состояний, вы можете подумать об их упрощении или удалении.
  5. Использование профилирования при настройке
    • Advanced.GenerateTimers=true
    • Advanced.Define.PrecisionTiming=true
    • Advanced.DymosimRealTimePriority=true
    • сгенерирует plotTiming.mos в вашем рабочем каталоге. Это определит матрицу, которую можно построить, набрав
    • RunScript("plotTiming.mos",true)
    • createPlot(grid=true, leftTitle="Execution time for step", bottomTitle="Simulation time");
    • plotArray(times[:,1],times[:,2],-1);
    • Это создает график, на котором время выполнения для каждого шага отображается на оси Y против времени моделирования на оси X. Поэтому, если у вас есть определенный размер шага 1 мс, и вы хотите имитировать в режиме реального времени, вы должны убедиться, что теперь есть отметки выше 1 мс.
  6. Более сложное профилирование можно сделать, установив
    • Advanced.GenerateTimers=true
    • Advanced.GenerateBlockTimers=true
    • , результаты которого отображаются в журнале моделирования.
    • Для понимания этого dsmodel.c должно помочь (если у вас есть лицензия на создание исходных файлов из вашей модели). C-файл содержит ссылки на разделы, упомянутые в выходных данных журнала.
  7. Начиная с Dymola 2018FD01, вы должны иметь возможность щелкнуть правой кнопкой мыши результат моделирования и выбрать «Анализ чисел», открывая диалоговое окно, которое не требует пояснений.

Для вашего конкретного случая, я думаю, пункты 1-4 должны помочь. Для 5 и 6 вы должны иметь больше информации в Dymola Manual Раздел 5.7.5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...