【Python脚本】刚度矩阵格式转换
对于1-2-3坐标系:

应力矩阵如下:
\]
张量应变矩阵如下:
\]
工程剪应变\(\gamma=2*\varepsilon\)
实际使用中会写成向量的形式:
\]
\]
但是不同的商业软件,书籍中,应力/应变向量的含义并不完全一致,导致刚度柔度矩阵需要注意区分.
在<<复合材料力学>>胡更开第二版,以及<>Robert M.Jones 第二版中,应力/应变的简写表示为:
\]
以上可以称为"Standard Convention"
其他商业软件中的conventions:

根据上表,可愿意定义一个转换矩阵T,将应变应力从标准Voigt形式转换到Abaqus,Ls-dyna,Ansys等软件的应力应变形式:
\]
\]
使用以上的T矩阵,就可以将应变应力从标准张量形式转换到Abaqus的notation.此外,刚度矩阵的转换为:
\]
For LS-DYNAand ANSYS, the transformation matrix is:
\]
Code
根据以上公式,可以写出转换代码:
def tMatrix(target:str='abq-sta')->np.ndarray:
"""定义一个转换矩阵T,将应变应力从标准Voigt形式转换到Abaqus,Ls-dyna,Ansys等软件的应力应变形式"""
match target:
case 'abq-sta':
# Abaqus/Standard应力应变形式
t=np.array([[1,0,0,0,0,0],
[0,1,0,0,0,0],
[0,0,1,0,0,0],
[0,0,0,0,0,1],
[0,0,0,0,1,0],
[0,0,0,1,0,0]],dtype=float)
case 'ls-dyna':
# Ls-dyna应力应变形式
t=np.array([[1,0,0,0,0,0],
[0,1,0,0,0,0],
[0,0,1,0,0,0],
[0,0,0,0,0,1],
[0,0,0,1,0,0],
[0,0,0,0,1,0]],dtype=float)
case 'ansys':
# Ansys应力应变形式
t=np.array([[1,0,0,0,0,0],
[0,1,0,0,0,0],
[0,0,1,0,0,0],
[0,0,0,0,0,1],
[0,0,0,1,0,0],
[0,0,0,0,1,0]],dtype=float)
case 'abq-exp':
# Abaqus/Explicit应力应变形式
t=np.array([[1,0,0,0,0,0],
[0,1,0,0,0,0],
[0,0,1,0,0,0],
[0,0,0,0,0,1],
[0,0,0,1,0,0],
[0,0,0,0,1,0]],dtype=float)
case _:
raise ValueError("target参数错误")
return t
def StiffnessFormatTransform(C:np.ndarray,
target:str='abq-sta',
source:str='voigt')->np.ndarray:
"""将标准刚度矩阵C转换为ABAQUS格式的刚度矩阵
input:
C: (6,6) np.ndarray, 标准刚度矩阵
target: str, 目标格式,可选值'abq-sta'(Abaqus/Standard), 'ls-dyna'(Ls-dyna), 'ansys'(Ansys), 'abq-exp'(Abaqus/Explicit)
source: str, 源格式,可选值'voigt'(Voigt格式)
output:
C_target: (6,6) np.ndarray, 目标格式的刚度矩阵
"""
t=tMatrix(target)
if source=='voigt':
return t.T.dot(C).dot(t)
else:
assert True, f"从{source}到{target}的转换尚未实现"
def StressFormatTransform(S:np.ndarray,
target:str='abq-sta',
source:str='voigt')->np.ndarray:
"""将标准应力向量S={sigma11,sigma22,sigma33,tau23,tau13,tau12}^T转换为target格式的应力向量"""
t=tMatrix(target)
if source=='voigt':
return t.dot(S)
else:
assert True, f"从{source}到{target}的转换尚未实现"
def StrainFormatTransform(E:np.ndarray,
target:str='abq-sta',
source:str='voigt')->np.ndarray:
"""将标准应变矩阵E={eps11,eps22,eps33,gamma23,gamma13,gamma12}^T转换为target格式的应变矩阵"""
t=tMatrix(target)
if source=='voigt':
return t.T.dot(E).dot(t)
else:
assert True, f"从{source}到{target}的转换尚未实现"
实现了不同notation格式(应力,应变,刚度矩阵)之间的转换,可以根据需要选择使用.
【Python脚本】刚度矩阵格式转换的更多相关文章
- 分别用Excel和python进行日期格式转换成时间戳格式
最近在处理一份驾驶行为方面的数据,其中要用到时间戳,因此就在此与大家一同分享学习一下. 1.什么是时间戳? 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01 ...
- python 使用json格式转换
什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programm ...
- Python脚本 - 常用单位转换
测试系统为:Centos 6.7 Python版本为: 3.6.4 脚本功能:常用单位的转换,这里用内存来模拟 import pstuil def bytes2human(n): symbols = ...
- 使用python将ppm格式转换成jpg【转】
转自:http://blog.csdn.net/hitbeauty/article/details/48465017 最近有个很火的文章,叫 有没有一段代码,让你觉得人类的智慧也可以璀璨无比? 自己试 ...
- Python之图片格式转换
import os import shutil from PIL import Image def getAllFiles(dirName, houzhui=' '): results = [] fo ...
- Python - 文档格式转换(CSV与JSON)
- day17-json格式转换
Json简介:Json,全名 JavaScript Object Notation,是一种轻量级的数据交换格式.Json最广泛的应用是作为AJAX中web服务器和客户端的通讯的数据格式.现在也常用于h ...
- 使用py2exe将python脚本转换成exe可执行文件
Python(wiki en chs)是一门弱类型解释型脚本语言,拥有动态类型系统和垃圾回收功能,支持多种编程范式:面向对象.命令式.函数式和过程式编程. 由于Python拥有一个巨大而广泛的标准库 ...
- python 将png图片格式转换生成gif动画
先看知乎上面的一个连接 用Python写过哪些[脑洞大开]的小工具? https://www.zhihu.com/question/33646570/answer/157806339 这个哥们通过爬气 ...
- 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本
摘自:http://blog.csdn.net/forandever/article/details/5711319 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本 ...
随机推荐
- uni-app微信小程序GPS位置获取爬坑
前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验也挺棒的,现在所在公司项目有抖音.快手.微信.支付.APP端, ...
- Macos 安装md5sum、sha1sum、md5deep、sha1deep
一.安装md5sum和sha1sum 方法一:brew 安装 # brew install md5sha1sum 方法二:编译安装 源码下载地址:http://www.microbrew.org/to ...
- Qt/C++编写地图应用/离线地图下载/路径规划/轨迹回放/海量点/坐标转换
一.前言说明 这个地图组件写了很多年了,最初设计的比较粗糙,最开始只是为了满足项目需要,并没有考虑太多拓展性,比如最初都是按照百度地图写死在代码中,经过这几年大量的现场实际应用,以及大量的用户提出的改 ...
- Qt开源作品16-通用无边框拖动拉伸
一.前言 相信各位CS结构开发的程序员,多多少少都遇到过需要美化界面的事情,一般都不会采用系统的标题栏,这样就需要无边框标题栏窗体,默认的话无边框的标题栏都不支持拉伸和拖动的,毕竟去掉了标题栏则意味着 ...
- Python 潮流周刊#83:uv 的使用技巧(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- Spring Security默认登录页面代码位于哪里?
问:Spring Security默认登录页面代码位于哪里? 答:它是从此类生成的org.springframework.security.web.authentication.ui.DefaultL ...
- runoob-scala
https://www.runoob.com/scala/scala-tutorial.html Scala 简介 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成 ...
- 某Websocket反爬逆向分析+请求加解密+还原html
网址 aHR0cHM6Ly93d3cueWR4Zi5nb3YuY24vTmV3cy9zaG93TGlzdC80L3BhZ2VfMS5odG1s 前言 工作中遇到的某websocket反爬,比混淆网站还 ...
- BUUCTF刷题-Web方向1~5wp
[极客大挑战 2019]EasySQL 一个sql注入登录框,直接万能密码登录 拿到flag [极客大挑战 2019]Havefun 打开环境,没有任何信息,查看源码,发现这么一段代码 GET方式传入 ...
- 实“智”名归!天翼云论文被国际顶会IEEE CVPR收录!
近日,由天翼云弹性网络产品线撰写的<Small Scale Data-free Knowledge Distillation>长文被IEEE Conference on Computer ...