对于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. C#中 CancellationTokenSource的妙用

    在.NET中,CancellationTokenSource.CancellationToken和Task是处理异步操作和取消任务的重要工具.本文将通过一些简单的例子,帮助你理解它们的用法和协作方式. ...

  2. 【NAS】绿联NAS UGOS PRO 使用natfrp(Sakura Frp)内网穿透访问Docker应用

    配置加速 https://registry.cn-hongkong.aliyuncs.com 下载镜像 创建容器 [容器]-[创建]-[手动创建]- 选择你下载的镜像即可 在日志中查看密码 访问容器 ...

  3. Springboot 指定外部配置文件启动

    <resources> <resource> <directory>src/main/resources</directory> <filteri ...

  4. Netty中ByteBuf内存泄露及释放解析

    近日在使用Netty框架开发程序中出现了内存泄露的问题,百度加调试了一番,做个整理. 直接看解决方法请移步Netty内存泄漏解决ERROR io.netty.util.ResourceLeakDete ...

  5. 禁止所有搜索爬虫访问网站指定目录robots.txt

    禁止所有搜索爬虫访问网站指定目录 用自己私人的服务器来测试吧,99买阿里云 文件放置不让爬取的网站文件夹目录里 robots.txt User-agent: * Disallow: / User-Ag ...

  6. Qt编写可视化大屏电子看板系统32-模块10大屏地图

    一.前言 大屏地图模块采用浏览器模块+echart组件,Qt自带了webkit或者webengine模块,其中在win上mingw编译器的Qt5.6以后的版本,没有了浏览器模块,这个就需要用第三方的浏 ...

  7. Qt音视频开发27-Onvif设备搜索

    一.前言 最近业余时间主要研究音视频开发这块,前面的文章写了好多种视频监控内核,一旦将这些内核搞定以后,视频监控的相关功能水到渠成.做视频监控系统,绕不过onvif这玩意,这玩意主要就是为了统一一个大 ...

  8. Qt编写安防视频监控系统31-onvif设备搜索

    一.前言 做视频监控系统,绕不过onvif这玩意,这玩意主要就是为了统一一个大概的标准,能够对各个厂家的监控设备进行常用的一些操作,比如搜索.获取信息.云台控制.事件订阅.抓拍图片等,如果没有这个规范 ...

  9. UDP与TCP+JAVA相关理论

    相关知识 目录 相关知识 UDP UDP认识 UDP的特点(与TCP相比) UDP网络Socket编程(Java实现) 1.创建客户端 2.客户端图形界面 TCP Socket编程通信 JAVA 基础 ...

  10. Vue cli 2.x 3.x及4.x区别

    原文链接: 1.Vue cli 2.x 3.x及4.x区别 2.vue-cli2.0/3.0/4.0创建项目的方式差异解读和vue-cli4.0打包命令和环境配置