Sign in to follow this  
Followers 0
Инжмаш

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

1 post in this topic

 

Ниже макрос для постпроцессора (Гармонический анализ). Макрос в цикле считывает последовательно кривые для каждой точки по отдельности, для каждой оси (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

 

 

Share this post


Link to post
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.