сохранение новых тензорных данных в точках интеграции нового выходного поля - PullRequest
0 голосов
/ 30 марта 2019

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

Для этого яАдрес каждой записи тензоров напряжений выходного поля каждого кадра из модального анализа, сохраните ее в новой матрице (numpy) и умножьте эту матрицу на мои матрицы вращения и возьмите сумму всех соответствующих тензоров напряжений из каждого кадра.Теперь я хочу сохранить эти новые тензоры, чтобы я мог визуализировать новые данные через abaqus в новом кадре.

Я не могу найти никакой информации о том, как мне нужно назначить / объявить тензорные данные для соответствующих точек интеграции и меток элементов, чтобы добавить их в новый выход поля.Я могу сделать это для скалярного поля, но не для тензорных данных.

Расчет работает хорошо.

присвоение тензорам напряжений каждого режима модального анализа различных весов и сохранение их в виде списка матриц

Spannungstensor={}length=len(odb.rootAssembly.instances['BALKEN-1'].elements)
    for l in range(len(odb.steps['Modalanalyse'].frames)):
    Spannungstensor[l]={}

    for element in odb.rootAssembly.instances['BALKEN-1'].elements:    
        if element.label in Randelemente:    
            k=0       
            stressfield=odb.steps['Modalanalyse'].frames[l].fieldOutputs['S']
            field=stressfield.getSubset(region=element, position= INTEGRATION_POINT,
                                   elementType='C3D8')
            fieldvalues=field.values            
            for v in fieldvalues:
                o=element.label
                Spannungstensor[l][o]={}
                j=0        
                for integrationPoint in fieldvalues:           
                    j=j+1
                    Spannungstensor[l][o][j]=np.array(((0,0,0),(0,0,0),(0,0,0)))
                    k=-1             
                    for component in v.data:
                        k=k+1
                        if k<3:
                            Spannungstensor[l][o][j][k][k]=component *Wichtungen[l]
                        if k==3:
                            Spannungstensor[l][o][j][0][1]=component *Wichtungen[l]
                            Spannungstensor[l][o][j][1][0]=component *Wichtungen[l]
                        if k==4:
                            Spannungstensor[l][o][j][0][2]=component *Wichtungen[l]
                            Spannungstensor[l][o][j][2][0]=component *Wichtungen[l]
                        if k==5:
                            Spannungstensor[l][o][j][1][2]=component *Wichtungen[l]
                            Spannungstensor[l][o][j][2][1]=component *Wichtungen[l]

добавление тензоров напряжений и поворот тензора конечных напряжений

phi=np.pi/4
teta=0
#-Drehmatrix 
Q=np.array(((np.cos(teta),np.sin(teta),0),
            (-np.sin(teta)*np.cos(phi),np.cos(teta)*np.cos(phi),np.sin(phi)),
             (np.sin(teta)*np.sin(phi),-np.cos(teta)*np.sin(phi),np.cos(phi))))    
#-Drehmatrix transponiert                        
Qt=np.transpose(Q)                            

Spannungstensor_neu={} 
for element in Spannungstensor[1]:
    Spannungstensor_neu[element]={}
    for integrationpoint in Spannungstensor[1][element]:
        Spannungstensor_neu[element][integrationpoint]=np.array(((0,0,0),(0,0,0),(0,0,0)))
        S=np.array(((0,0,0),(0,0,0),(0,0,0)))
        for mode in range(len(odb.steps['Modalanalyse'].frames)):
                        S=S+Spannungstensor[mode][element][integrationpoint]
        Spannungstensor_neu[element][integrationpoint]=Q*S*Qt

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

Каким образом должны быть данные для использования метода field.addData?

field.addData (position =..., instance = ..., tags = ..., data = ...) У меня есть уважаемые ярлыки в виде списка.

Спасибо за любую помощь заранее!

...