Помогите разобраться с алгоритмом построения спектра ответа по акселерограмме.
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Расчетные программы > Помогите разобраться с алгоритмом построения спектра ответа по акселерограмме.

Помогите разобраться с алгоритмом построения спектра ответа по акселерограмме.

Ответ
Поиск в этой теме
Непрочитано 22.12.2014, 02:51 #1
Помогите разобраться с алгоритмом построения спектра ответа по акселерограмме.
ИванМоскалев
 
Регистрация: 08.10.2013
Сообщений: 45

И снова здравствуйте!Пару недель назад я создавал тему про нахождение отклика конструкции(зависимость ускорения от частоты) на заданную акселерограмму(зависимость ускорения по времени). Написал при этом некоторый код на Python'е(использует в качестве решателя абакус).Так вот этот алгоритм вычисляет отклики простых осцилляторов с одной степенью свободы на приложенную акселерограмму(пока что без демпфирования). Но когда я начал тестировать программу на синусоидально приложенную акселерограмму(сравнивал результаты моей программы с программой взятой отсюда http://jimnik.narod.ru/proj_seismic.html), то оказалось что результаты в моей программе завышаются где-то в два раза..при чем ускорение нулевого периода получается верным. Помогите разобраться в чем проблема. Привожу текст программы(почему то не отображает смещение в циклах,поэтому приложил еще блокнотовский файл в архиве).Спасибо!

from abaqus import *
from part import *
from material import *
from section import *
from assembly import *
from step import *
from amplitude import *
from interaction import *
from abaqusConstants import *
from load import *
from mesh import *
from job import *
from sketch import *
from visualization import *
from connectorBehavior import *
from xyPlot import *
mdb.Model(name='Model-2')
Result=open('D:\Result.txt', 'w')
Result.closed
dirBas='D:\Force.txt'
Force=open(dirBas)
i=0
n=150
P=tuple()
while True:
line1=Force.readline()
if i==n+1:break
i=i+1
t=line1.split()[0]
a=line1.split()[1]
time=float(t)
ampl=float(a)
P=P+((time,ampl),)
Force.close()
mdb.models['Model-2'].TabularAmplitude(name=('AccS'),data=P,timeSpan=TOTAL)
mdb.models['Model-2'].ConstrainedSketch(name='__profile__', sheetSize=20.0)
mdb.models['Model-2'].sketches['__profile__'].Line(point1=(0, -1.0),point2=(0.0,0.0))
mdb.models['Model-2'].Part(dimensionality=TWO_D_PLANAR, name='Part-1', type=DEFORMABLE_BODY)
mdb.models['Model-2'].parts['Part-1'].BaseWire(sketch=mdb.models['Model-2'].sketches['__profile__'])
mdb.models['Model-2'].Material(name='Material-1')
mdb.models['Model-2'].materials['Material-1'].Elastic(table=((100000,0), ))
mdb.models['Model-2'].RectangularProfile(name='Profile-1',a=1,b=1)
k=100000
mdb.models['Model-2'].BeamSection(name='Section-1', integration=DURING_ANALYSIS, profile='Profile-1', material='Material-1')
et=mdb.models['Model-2'].parts['Part-1'].edges.findAt(((0.0,-0.5,0.0),))
rew = Region(edges=et)
mdb.models['Model-2'].parts['Part-1'].SectionAssignment(region=rew, sectionName='Section-1')
elemType=ElemType(elemCode=B21,elemLibrary=STANDARD)
mdb.models['Model-2'].parts['Part-1'].setElementType(elemTypes=(elemType,), regions=rew)
mdb.models['Model-2'].parts['Part-1'].seedPart(size=1)
mdb.models['Model-2'].parts['Part-1'].generateMesh()
myAssembly = mdb.models['Model-2'].rootAssembly
mdb.models['Model-2'].ImplicitDynamicsStep(name='Step-1',previous='Initial',timePeriod=15,timeIncrementationMethod=FIXED,maxNumInc=150,initialInc=0.1)
myAssembly = mdb.models['Model-2'].rootAssembly
myInstance = myAssembly.Instance(name='beamInstance',part=mdb.models['Model-2'].parts['Part-1'], dependent=ON)
Bassse = myInstance.vertices.findAt(((0.0,-1.0,0.0),))
bassse = Region(vertices=Bassse)
mdb.models['Model-2'].EncastreBC(name='FixBase',createStepName='Step-1',region=bassse)
mass = myInstance.vertices.findAt(((0.0,0.0,0.0),))
Ma = Region(vertices=mass)
mdb.models['Model-2'].rootAssembly.engineeringFeatures.PointMassInertia(name='mass-1',region=Ma,mass2=1000)
mdb.models['Model-2'].Gravity(name='earth',createStepName='Step-1',comp2=1,amplitude='AccS')
mdb.models['Model-2'].parts['Part-1'].assignBeamSectionOrientation(region=rew,method=N1_COSINES,n1=(0,0,0))
myJob=mdb.Job(name='solve2',model='Model-2')
mdb.models['Model-2'].HistoryOutputRequest(name='Set-1',createStepName='Step-1',region=Ma,variables=ALL,frequency=1)
Result=open('D:\Result.txt', 'w')
Result.write('0 0'+'\n')
Result.closed

Znachenia=[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1,1.1,1.2,1.3,1.4,1.5]
for f in Znachenia:
actmas=k/(f*f)
mdb.models['Model-2'].rootAssembly.engineeringFeatures.PointMassInertia(name='mass-1',region=Ma,mass2=actmas)
myJob.submit()
myJob.waitForCompletion()
session.isUpgradeRequiredForOdb(upgradeRequiredOdbPath='C:\Temp\solve2.odb')
session.openOdb(name='C:\Temp\solve2.odb', readOnly=True)
odb = session.odbs['C:\Temp\solve2.odb']
session.XYDataFromHistory(name='Acceleration',odb=odb,outputVariableName='Spatial acceleration: A2 PI: BEAMINSTANCE Node 2',steps=('Step-1',),)
xy1 = session.xyDataObjects['Acceleration']
session.writeXYReport(fileName='D:\X2.txt', xyData=(xy1, ),appendMode=OFF)
BaseMotion=open('D:\Force.txt')
dirAcc='D:\X2.txt'
i=0
n=150
Osc=open(dirAcc)
T=list()
line=Osc.readline()
line=Osc.readline()
line=Osc.readline()
while True:
OscStr=Osc.readline()
Base=BaseMotion.readline()
if i==n+1:break
i=i+1
a1=OscStr.split()[1]
a2=Base.split()[1]
ampl1=float(a1)
ampl2=float(a2)
T.append(abs(ampl1+ampl2))
react=max(T)
Result=open('D:\Result.txt', 'a')
Result.write(str(f)+' '+str(react)+'\n')
Result.closed
Result=open('D:\Result.txt', 'a')
Result.write(str(f)+' '+str(ampl))
Result.closed

Вложения
Тип файла: rar код.rar (1.8 Кб, 16 просмотров)


Последний раз редактировалось ИванМоскалев, 22.12.2014 в 03:00.
Просмотров: 3009
 
Непрочитано 22.12.2014, 07:10
#2
Бахил

?
 
Регистрация: 17.06.2014
Царицын
Сообщений: 12,801


Завяжи свою змею на два узла и повесь на ёлку.
Пользуйся екселем!
Смени расширение на .bas и вставляй в Excel.
__________________
Меньше знаешь - крепче зубы.

Последний раз редактировалось Бахил, 25.08.2016 в 08:12.
Бахил вне форума  
 
Автор темы   Непрочитано 22.12.2014, 21:00
#3
ИванМоскалев


 
Регистрация: 08.10.2013
Сообщений: 45


Цитата:
Сообщение от Бахил Посмотреть сообщение
Завяжи свою змею на два узла и повесь на ёлку.
Пользуйся екселем!
Смени расширение на .bas и вставляй в Excel.
о!спасибо огромнейшее!этот кусок программы которую я выкладывал был у меня в составе большой программы и из-за долгого решателя абакуса программа выполнялась крайне долго..Я что-то не подумал об обычных ручных решениях))Адаптирую код под питон и все заработает.Спасибо огромное!В который раз уже выручаете)
ИванМоскалев вне форума  
 
Непрочитано 23.12.2014, 08:03
#4
Бахил

?
 
Регистрация: 17.06.2014
Царицын
Сообщений: 12,801


Пожалуйста.
__________________
Меньше знаешь - крепче зубы.
Бахил вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Расчетные программы > Помогите разобраться с алгоритмом построения спектра ответа по акселерограмме.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться в расчёте металлических ферм в пространственной схеме в SCAD Stingry SCAD 9 04.01.2012 14:41
ANSYS 10 Помогите разобраться. Aндрeй ANSYS 6 12.12.2007 00:03