对于1-2-3坐标系:

应力矩阵如下:

\[\left.[\sigma]=\left[\begin{array}{ccc}\sigma_{11}&\sigma_{12}&\sigma_{13}\\\sigma_{12}&\sigma_{22}&\sigma_{23}\\\sigma_{13}&\sigma_{23}&\sigma_{33}\end{array}\right.\right]
\]

张量应变矩阵如下:

\[\left.[\varepsilon]=\left[\begin{array}{ccc}\varepsilon_{11}&\varepsilon_{12}&\varepsilon_{13}\\\varepsilon_{12}&\varepsilon_{22}&\varepsilon_{23}\\\varepsilon_{13}&\varepsilon_{23}&\varepsilon_{33}\end{array}\right.\right]
\]

工程剪应变\(\gamma=2*\varepsilon\)

实际使用中会写成向量的形式:

\[应力向量\boldsymbol{\sigma}=[\sigma_{1} \quad \sigma_{2} \quad \sigma_{3} \quad \tau_{4} \quad \tau_{5} \quad \tau_{6}]
\]
\[应变向量\boldsymbol{\epsilon}=[\epsilon_{1} \quad \epsilon_{2} \quad \epsilon_{3} \quad \gamma_{4} \quad \gamma_{5} \quad \gamma_{6}]
\]

但是不同的商业软件,书籍中,应力/应变向量的含义并不完全一致,导致刚度柔度矩阵需要注意区分.

在<<复合材料力学>>胡更开第二版,以及<>Robert M.Jones 第二版中,应力/应变的简写表示为:

\[\begin{matrix} \sigma_{11} \rightarrow \sigma_1 & \epsilon_{11} \rightarrow \epsilon_1 \\ \sigma_{22} \rightarrow \sigma_2 & \epsilon_{22} \rightarrow \epsilon_2 \\ \sigma_{33} \rightarrow \sigma_3 & \epsilon_{33} \rightarrow \epsilon_3 \\ \tau_{23} \rightarrow \sigma_4 & \gamma_{23}=2\epsilon_{23} \rightarrow \epsilon_4 \\ \tau_{13} \rightarrow \sigma_5 & \gamma_{13}=2\epsilon_{13} \rightarrow \epsilon_5 \\ \tau_{12} \rightarrow \sigma_6 &\gamma_{12}=2\epsilon_{12} \rightarrow \epsilon_6 \end{matrix}
\]

以上可以称为"Standard Convention"

其他商业软件中的conventions:

根据上表,可愿意定义一个转换矩阵T,将应变应力从标准Voigt形式转换到Abaqus,Ls-dyna,Ansys等软件的应力应变形式:

\[\{\sigma_A\}=[T]\{\sigma\}
\]
\[[T]=\left[\begin{array}{cccccc}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\end{array}\right]
\]

使用以上的T矩阵,就可以将应变应力从标准张量形式转换到Abaqus的notation.此外,刚度矩阵的转换为:

\[[C_A]=[T]^T[C][T]
\]

For LS-DYNAand ANSYS, the transformation matrix is:

\[[T]=\left[\begin{array}{cccccc}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\end{array}\right]
\]

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脚本】刚度矩阵格式转换的更多相关文章

  1. 分别用Excel和python进行日期格式转换成时间戳格式

    最近在处理一份驾驶行为方面的数据,其中要用到时间戳,因此就在此与大家一同分享学习一下. 1.什么是时间戳? 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01 ...

  2. python 使用json格式转换

    什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programm ...

  3. Python脚本 - 常用单位转换

    测试系统为:Centos 6.7 Python版本为: 3.6.4 脚本功能:常用单位的转换,这里用内存来模拟 import pstuil def bytes2human(n): symbols = ...

  4. 使用python将ppm格式转换成jpg【转】

    转自:http://blog.csdn.net/hitbeauty/article/details/48465017 最近有个很火的文章,叫 有没有一段代码,让你觉得人类的智慧也可以璀璨无比? 自己试 ...

  5. Python之图片格式转换

    import os import shutil from PIL import Image def getAllFiles(dirName, houzhui=' '): results = [] fo ...

  6. Python - 文档格式转换(CSV与JSON)

  7. day17-json格式转换

    Json简介:Json,全名 JavaScript Object Notation,是一种轻量级的数据交换格式.Json最广泛的应用是作为AJAX中web服务器和客户端的通讯的数据格式.现在也常用于h ...

  8. 使用py2exe将python脚本转换成exe可执行文件

    Python(wiki en  chs)是一门弱类型解释型脚本语言,拥有动态类型系统和垃圾回收功能,支持多种编程范式:面向对象.命令式.函数式和过程式编程. 由于Python拥有一个巨大而广泛的标准库 ...

  9. python 将png图片格式转换生成gif动画

    先看知乎上面的一个连接 用Python写过哪些[脑洞大开]的小工具? https://www.zhihu.com/question/33646570/answer/157806339 这个哥们通过爬气 ...

  10. 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本

    摘自:http://blog.csdn.net/forandever/article/details/5711319 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本 ...

随机推荐

  1. Java调用与发布Webservice接口(一)

    ​ 一  准备工作 (一)开发环境 demo以springboot为基础框架,使用到了httpclient.hutool等依赖,详情如下:         springboot版本: org.spri ...

  2. Windows下,terminal美化、命令行美化

    1. Terminal terminal 比 原生的 cmd 要更加好用 直接去 Micorosoft Store 下载就行了 2. 美化效果图 3. 美化步骤 3.1 需要的插件 git-alias ...

  3. 实现一个分布式调用(OkHttp+SpringBoot)

    很多情况,trace是分布在不同的应用中的,最常用的远程调用方式就是Http. 在这种情况下,我们通常通过增加额外的Http Header传递Trace信息,然后将其组织起来. 本部分通过构建一个目前 ...

  4. MybatisPlusException: can not find lambda cache for this entity[]异常解决

    文章目录 场景说明 解决方案 场景说明   简单来说,我们系统中许多数据都是树状结构的,所以我定义了一个实体类父类BaseTreePO,并且想封装一个通用的树状对象的Service类,部分代码如下: ...

  5. 有邻App覆盖3000多个小区成杭州用户量最大的邻里分享经济平台 杨仁斌:开创新社区时代

    [浙商创业青云榜] 当下中国大多数的城市社区里,邻居这个词是个淡薄的概念. 2014年,一名阿里高管决心改变现状,辞职创业,深挖社区分享经济,准备用一款手机App"有邻",去敲开陌 ...

  6. Qt编写地图综合应用11-动态添加

    一.前言 在添加设备点或者区域形状的时候,会考虑是直接静态的方式写入到网页中加载,还是动态js函数异步加载的方式,这个需要根据现场的实际需求来,如果只需要一次加载的话建议静态即可,如果运行期间还需要动 ...

  7. Qt开源作品26-通用按钮地图效果

    一.前言 在很多项目应用中,需要根据数据动态生成对象显示在地图上,比如地图标注,同时还需要可拖动对象到指定位置显示,能有多种状态指示,安防领域一般用来表示防区或者设备,可以直接显示防区号,有多种状态颜 ...

  8. WebSocket硬核入门:200行代码,教你徒手撸一个WebSocket服务器

    本文原题"Node.js - 200 多行代码实现 Websocket 协议",为了提升内容品质,有较大修订. 1.引言 最近正在研究 WebSocket 相关的知识,想着如何能自 ...

  9. Solution -「ZJOI 2018」「洛谷 P4338」历史

    \(\mathscr{Description}\)   Link.   给定一棵以 \(1\) 为根的树,点 \(u\) 有非负点权 \(a_u\).   定义 \(u\) 的一次染色的代价为:路径 ...

  10. https证书管理系统- 自动化签发

    https证书管理系统- 自动化签发 第一步:前往网站,注册账户 https://www.lingyanspace.com/ 第二步:进入证书服务菜单,点击新增证书 第三步:填写自有的域名,点击创建订 ...