Перейти к публикации

Гармонический анализ. Макрос работает очень медленно. Оптимизация?


Рекомендованные сообщения

 

Ниже макрос для постпроцессора (Гармонический анализ). Макрос в цикле считывает последовательно кривые для каждой точки по отдельности, для каждой оси (X,Y,Z,RotX,RotY и RotZ) и сохраняет их в файл. Для каждого случая отдельный файл.

file.rts – примерно 60 гигабайт.

Всего 164 точки и 6 результатов (X,Y,Z,RotX,RotY и RotZ).

Частота от 0 до 1000 Гц. Шаг частоты – примерно 0,6 Гц. Получается 1500 точек в диапазоне.

Сам гармонический анализ длиться примерно 4 часа. А макрос работает больше 8 часов.

 

Вопрос. Это нормально или можно переписать/оптимизировать, что значительно уменьшить время работа макроса примерно на порядок? Например, как-то считывать не в одной точке, а сразу во всех? Или сразу по 6 направлениям (X,Y,Z,RotX,RotY и RotZ)?

Может другие команды, что будут работать значительно быстрее?

 

 

/POST26

FILE,'file','rst','.'  

/UI,COLL,1 

NUMVAR,200 

SOLU,191,NCMIT 

STORE,MERGE

PLCPLX,0

PRCPLX,1

FILLDATA,191,,,,1,1

REALVAR,191,191

 

 

KolStr=1500   ! Eto zadaetsa kolitsestvo Strok

NuPo1=15    ! Eto nomera Uzlov. Vsego 164

NuPo2=44

! ______ …..

! ______ …..

! NuPo164=578562

J1=-4

IbZ=0

STORE,MERGE

*CREATE,scratch,gui

*DO,IbZ,1,164,1

NSOL,J1+6,NuPo%IbZ%,ROT,X,ROTX_%IbZ%,  

*DEL,_P26_EXPORT

*DIM,_P26_EXPORT,TABLE,KolStr,2

VGET,_P26_EXPORT(1,0),1

VGET,_P26_EXPORT(1,1),J1+6,,0 

VGET,_P26_EXPORT(1,2),J1+6,,1 

/OUTPUT,'RotX_%IbZ%','prn',

*VWRITE,'FREQ','ROTX_%IbZ%',' '

%C, %C, %C

*VWRITE,' ','REAL','IMAGINARY' 

%C, %C, %C 

*VWRITE,_P26_EXPORT(1,0),_P26_EXPORT(1,1),_P26_EXPORT(1,2) 

%G, %G, %G

/OUTPUT,TERM

! ******************************************************

! ******************************************************

NSOL,J1+7,NuPo%IbZ%,ROT,Y,ROTY_%IbZ%,  

*DEL,_P26_EXPORT

*DIM,_P26_EXPORT,TABLE,KolStr,2

VGET,_P26_EXPORT(1,0),1

VGET,_P26_EXPORT(1,1),J1+7,,0 

VGET,_P26_EXPORT(1,2),J1+7,,1 

/OUTPUT,'RotY_%IbZ%','prn',

*VWRITE,'FREQ','ROTY_%IbZ%',' '

%C, %C, %C

*VWRITE,' ','REAL','IMAGINARY' 

%C, %C, %C 

*VWRITE,_P26_EXPORT(1,0),_P26_EXPORT(1,1),_P26_EXPORT(1,2) 

%G, %G, %G

/OUTPUT,TERM

! ******************************************************

! ******************************************************

NSOL,J1+8,NuPo%IbZ%,ROT,Z,ROTZ_%IbZ%,  

*DEL,_P26_EXPORT

*DIM,_P26_EXPORT,TABLE,KolStr,2

VGET,_P26_EXPORT(1,0),1

VGET,_P26_EXPORT(1,1),J1+8,,0 

VGET,_P26_EXPORT(1,2),J1+8,,1 

/OUTPUT,'RotZ_%IbZ%','prn',

*VWRITE,'FREQ','ROTZ_%IbZ%',' '

%C, %C, %C

*VWRITE,' ','REAL','IMAGINARY' 

%C, %C, %C 

*VWRITE,_P26_EXPORT(1,0),_P26_EXPORT(1,1),_P26_EXPORT(1,2) 

%G, %G, %G

/OUTPUT,TERM

! ******************************************************

! ******************************************************

NSOL,J1+9,NuPo%IbZ%,U,X,UX_%IbZ%,  

*DEL,_P26_EXPORT

*DIM,_P26_EXPORT,TABLE,KolStr,2

VGET,_P26_EXPORT(1,0),1

VGET,_P26_EXPORT(1,1),J1+9,,0 

VGET,_P26_EXPORT(1,2),J1+9,,1 

/OUTPUT,'UX_%IbZ%','prn',

*VWRITE,'FREQ','UX_%IbZ%',' '

%C, %C, %C

*VWRITE,' ','REAL','IMAGINARY' 

%C, %C, %C 

*VWRITE,_P26_EXPORT(1,0),_P26_EXPORT(1,1),_P26_EXPORT(1,2) 

%G, %G, %G

/OUTPUT,TERM

! ******************************************************

! ******************************************************

NSOL,J1+10,NuPo%IbZ%,U,Y,UY_%IbZ%,  

*DEL,_P26_EXPORT

*DIM,_P26_EXPORT,TABLE,KolStr,2

VGET,_P26_EXPORT(1,0),1

VGET,_P26_EXPORT(1,1),J1+10,,0 

VGET,_P26_EXPORT(1,2),J1+10,,1 

/OUTPUT,'UY_%IbZ%','prn',

*VWRITE,'FREQ','UY_%IbZ%',' '

%C, %C, %C

*VWRITE,' ','REAL','IMAGINARY' 

%C, %C, %C 

*VWRITE,_P26_EXPORT(1,0),_P26_EXPORT(1,1),_P26_EXPORT(1,2) 

%G, %G, %G

/OUTPUT,TERM

! ******************************************************

! ******************************************************

NSOL,J1+11,NuPo%IbZ%,U,Z,UZ_%IbZ%,  

*DEL,_P26_EXPORT

*DIM,_P26_EXPORT,TABLE,KolStr,2

VGET,_P26_EXPORT(1,0),1

VGET,_P26_EXPORT(1,1),J1+11,,0 

VGET,_P26_EXPORT(1,2),J1+11,,1 

/OUTPUT,'UZ_%IbZ%','prn',

*VWRITE,'FREQ','UZ_%IbZ%',' '

%C, %C, %C

*VWRITE,' ','REAL','IMAGINARY' 

%C, %C, %C 

*VWRITE,_P26_EXPORT(1,0),_P26_EXPORT(1,1),_P26_EXPORT(1,2) 

%G, %G, %G

/OUTPUT,TERM

*ENDDO

*END

/INPUT,scratch,gui 

! End of time history save

 

 

Ссылка на сообщение
Поделиться на других сайтах
  • 3 недели спустя...


В 11.10.2019 в 17:13, Инжмаш сказал:

Это нормально или можно переписать/оптимизировать, что значительно уменьшить время работа макроса примерно на порядок?

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

это, правда, не отменяет того, что у Вас все еще есть простор для оптимизации кода. но чтобы его найти, надо же в Вашем коде разобраться)

Ссылка на сообщение
Поделиться на других сайтах
В 11.10.2019 в 16:13, Инжмаш сказал:

Сам гармонический анализ длиться примерно 4 часа. А макрос работает больше 8 часов.

 А бывает, что считается пол часа, а анализируешь пол года :)

 

В 11.10.2019 в 16:13, Инжмаш сказал:

Это нормально

Нет. Посмотрите какая команда дольше всего выполняется. Сиса может время выдергивать текущее кажется.

Ссылка на сообщение
Поделиться на других сайтах
12 часа назад, Борман сказал:

Посмотрите какая команда дольше всего выполняется.

наверное, существует список основных принципов отладки и оптимизации кода. и расставить таймстампы с комментариями -  один из его пунктов.

Ссылка на сообщение
Поделиться на других сайтах
В 29.10.2019 в 22:46, Борман сказал:

Нет. Посмотрите какая команда дольше всего выполняется. Сиса может время выдергивать текущее кажется.

Тут и смотреть нечего. Даже не запуская скажу, NSOL.

Можно попробовать обмануть систему и самому поиграть в POST26. Запустить цикл по всем временным шагам:

DO,i,1,...

SET,1,i

...

И внутри каждого шага цикла считывать результаты по всем точкам, накапливая всё это в массиве.

Смысл в том, что каждый NSOL суть тот же цикл чтения эрэстеншника с накоплением результата в переменной и надо максимально сократить число "подходов к снаряду".

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




  • Сообщения

    • alek77
      Не отработал на нарисованном прямоугольнике: Начальный макрос такие вещи отрабатывает:   SW17 у меня   И еще. И для чертежа с модели тоже не отработал: Хотя я никакими галочками "измененное значение" не пользуюсь, и не знаю где они находятся. Я тупо меняю размер в свойствах: Старый макрос при этом прекрасно все видит и раскрашивает такие размеры. В чем разница не вникал. Просто потестил. Сам я так размеры никогда не меняю, это вредно. А за другими проверить очень даже полезно бывает.  
    • Горыныч
      Не занимайтесь ерундой. В Китае б/у оборудование ОЧЕНЬ ликвидно, а потому дорого. Ну и в 99%случаев уже ушатано почти в ноль. 
    • Guhl
      Кто-нибудь может подсказать сайт, где продаются б/у станки в Китае?
    • gudstartup
      если не повезет то вобразе исправляйте user/system/etc/basesys.ini
    • andref
      @gudstartup  ну если есть PCU50  то все гораздо проще: подключаем к нему мышь , клаву и монитор, загружаемся в Windows и выставляем там  нужный IP (надеюсь что он известен). А вот если 840Dsl без PCU50 , то да... Хотя может просто сетевые разъемы  перепутали  
    • Kate KAUS
      Инжиниринговая компания, специализирующаяся на проектировании морских портов и терминалов приглашает в команду Ведущего/главного инженера-проектировщика ПОС. Чем предстоит заниматься: Разработка разделов проектной документации ПОС согласно ПП№87; Анализ проектной и исходно-разрешительной документации, используемой в качестве данных для составления раздела ПОС Составление ведомостей объемов работ разделов ПОС; Выдача заданий и исходных данных для смежных отделов; Обеспечение увязки принятых решений с проектными решениями других разделов (частей) проекта; Принятие основных технических решений, их обоснование, согласование и защита в органах экспертизы. Разработка основных технических решений на период строительства объектов (ППР, ОПР, строительные решения); Обеспечение соответствия разрабатываемой документации стандартам, техническим условиям, заданию на проектирование.   Требования: Высшее профильное образование (строительное); Опыт не менее 3 лет по специализации ПОС, ППР; Знание требований, предъявляемых к оформлению проектной документации; Умение качественно и в срок выполнять поставленные задачи; Опыт работ на строительных площадках приветствуется; Опыт прохождения согласований проектной документации; Знание ПК на уровне уверенного пользователя: (AutoCAD, Adobe Acrobat PRO, MS Office : Word, Excel, выполнение расчетов в программах).   Мы предлагаем: Трудоустройство согласно ТК РФ Пятидневную рабочую неделю с 9:00 до 18:00 Все социальные гарантии, ДМС Полностью официальную заработную плату, уровень готовы обсуждать с успешным кандидатом Динамично развивающаяся компания, комфортный офис   г. СПб м. Василеостровская, зп от 100 000-140 000р.   Контакты: eksmirnova@kaus-group.ru ТГ @Kate_Kaus  
    • Maks Horhe
      Все ок, работает. Спасибо, только пересчитывает подачи, как отключить пересчет, работать с постоянной подачей? Есть аналог cftcp Siemens? Или надо лезть в параметры?
    • Anat2015
      Боюсь, что не смогу вам помочь, тему прочитал. Я давно уже на административной работе, технические нюансы не помню. Думаю, вам тут помогут.
    • gudstartup
      придется вам вооружиться access my machine выкачать образ cf и там отредактировать сетевые настройки или если образ есть то залить его для восстановления
    • andref
      на фото у вас не стойка а TCU (Thin Client Unit) Посмотрите в шкафу, вот примерно такой блок есть? PCU50.3
×
×
  • Создать...