您好,欢迎访问三七文档
当前位置:首页 > 财经/贸易 > 资产评估/会计 > Python-语言在-Abaqus-中的应用--学习笔记
1学习笔记学习资料:《Python语言在Abaqus中的应用》20世纪60年代,RayW.Clough教授在发表的论文《TheFiniteElementinPlaneStressAnalysis》中首次提出有限单元法,此后,有限单元法的理论得到迅速发展,并广泛应用于各种力学问题和非线性问题,成为分析大型复杂工程结构的强有力手段。Abaqus提供两种接口:1)用户子程序接口(UserSubroutine)。该接口使用Fortran语言进行开发,主要用于自定义本构关系、自定义单元等。常用的用户子程序包括(V)UMAT、(V)UEL、(V)FRIC、(V)DLOD等。2)Abaqus脚本接口(AbaqusScriptingInterface)。该接口是在Python语言的基础上进行的定制开发,它扩充了Python的对象模型和数据类型,使Abaqus脚本接口的功能更加强大。一般情况下,Abaqus的脚本接口主要用于前处理(例如,快速建模)、后处理(例如,创建和访问输出数据库)、自定义模块(例如,自动后处理模块等)。Python语言是公认的功能强大的面向对象的编程语言,Abaqus脚本接口在它的基础上又添加了许多数据类型和核心模块,因此功能更加强大。即便如此,Abaqus脚本接口仍然允许读者编写自己的模块或函数,以扩展其功能。保留字Python的保留字:Python语言的代码简洁,易于阅读,保留字相对较少;Python语言中不包含分号(;)、begin、end等标记,而是通过使用空格或制表键缩进的方式进行代码分隔。编写程序时,尽量不要选择保留字作为变量名、函数名等保留字说明and表达式运算,逻辑“和”操作as类型转换assert判断变量或条件表达式的值是否为真break中止循环语句的执行class定义类continue继续执行下一次循环def定义函数或方法del删除变量或序列的值elif条件语句,与if、else联合使用if…elif…elseelse条件语句except包含捕获异常后的操作代码块,与try、finally联合使用exec执行Python语句finally出现异常后始终执行finally代码块中的语句,与try、exceptforfor循环语句from用于导入模块,与import联合使用global定义全局变量if条件判断语句,与else、elif联合使用import导入模块,与from联合使用in判断变量是否包含在序列中is判断变量是否为某个类的实例lambda定义匿名函数not用于表达式运算,逻辑“非”操作or用于表达式运算,逻辑“或”操作pass空的类、方法或函数的占位符print输出语句raise抛出异常return返回函数的计算结果try包含可能出现异常的语句,与except、finally联合使用whilewhile循环语句with简化Python中的语句yield从Generator函数中每次返回1个值开发工具&运行环境:1)PythonWin:【开始】→【程序】→【ActiveStateActivePython2.6(32-bit)】→【PythonWinEditor】;运行按F5或【File】→【Debug】→【Go】2)Abaqus运行环境:启动Abaqus/CAE,【File】→【AbaqusPDE】※在Abaqus中编写Python源代码,可以与Abaqus/CAE进行实时互动,而且代码修改后的效果能够立即在Abaqus/CAE中得到体现,便于调试和修改。Abaqus中的PDE也提供了多种编辑、调试程序的功能,包括代码着色、自动缩进、断点设置与管理、堆栈(stack)、观察列表(watchlist)等功能。3)EditPlus编辑器:模板代码:#!/user/bin/python使Python程序可以在UNIX操作系统下运行#-*-coding:UTF-8-*-设置编码集为UTF-8,使得编写Python代码过程中可以输入中文字符编写规则1)合理使用注释:注释语句放在#后;中文注释必须先添加#-*-coding:UTF-8-*-2)合理使用空行:空行的作用在于分隔两段不同功能或不同含义的代码,便于以后代码的维护或重构。一般情况下,变形程序代码时应该在函数与函数之间、类的方法之间、类和函数入口之间设置空行,用来表示一段新代码的开始。一般情况下,最好设置两个空行。※空行是源代码的一部分,但不是语法的部分,不会报错。在Abaqus脚本结构中使用空行是一定要十分谨慎。如果存在嵌套循环时使用空行,一定注意空行的缩进格式。在EditPlus编辑器下可以很清楚地看到缩进层次。如果不便于查看空行缩进,则可以将空行作为注释行进行处理,即以#开始。3)语句的分隔:Python中可以用分号分隔语句,物理行间的分号也可以省略,但如果一个物理行中包含多个逻辑行,则需要以分号分隔。※习惯上一个物理行只写一个逻辑行,如果逻辑行太长需要多个物理行编写,则用反斜杠“\”作为换行符,这种做法叫做“行连接”,如果逻辑行中使用了圆括号()、方括号[]、大括号{}等暗示行连接,则无需使用反斜线。4)模块的导入方式:模块(module)指的是某些类或函数的集合,用于实现特定功能。importfrom…import…5)命名规则:便于大型程序的协作开发变量名:首字母一般是字母或下划线,其他字符可由字母、下划线或数字组成。定义时不得使用保留字;避免使用i、j、k等单个字母;变量名尽可能地表达该变量的含义、定义变量时尽量避免使用缩写,方便模块名:一般首字符是小写英文字母。扩展名为.py的文件本身就是一个模块,因此,模块名也是文件名。类名:通常类名首字母必须大写,其他字母小写;访问类的属性和方法的表示方式为:在对象名后面跟操作符“.”。对象名:使用小写字母。函数名:首字母小写,并通过下划线或单词首字母大写的方式增加函数名的可读性。对于导入模块快中的函数名,则使用模块名作为其前缀。6)代码缩进:每行代码前输入空格或制表符来表示代码之间的层次(空格数量没有明确要求,1个即可,但习惯上每层间4空格)关系,对于Python而言,代码缩进是一种语法,如果缩进错误会抛出IdentationError异常;Python采用代码缩进和冒号“:”来区分代码块之间的层次关系。※使用IDE开发工具或EditPlus等文本编辑软件编写代码时,编辑软件能够不起冒号并实现自动缩进,可以大大提高代码的编写效率。数据类型1)数字类型:整型int:可以使用二进制、八进制、十六进制;Python能根据数值的大小自动将整型数转换为长整型,定义时更加方便。长整形long:浮点型float:只有双精度浮点型数据复数类型complex:c=1+2j布尔型数据bool:2)字符串类型:使用单引号(’)、双引号(”)、三引号(’’’)来表示字符串类型的数据,其中单引号和双引号的作用相同,使用它们定义字符串时,字符串中所有的空格和制表符都被保留;三引号是Python特有的语法,用来定义多行字符串,三引号内还可以任意使用单、双引号或换行符※三引号是三个单引号※若单引号表示的字符串中还有单引号,如’what’syourname’,系统将无法判断字符串起始点而报错,这时可以用转义字符(\)实现,如’what\’syourname’;也可以使用双引号”what’syourname”。※常用转义字符及含义转义字符含义转义字符含义\’单引号\v纵向制表符\”双引号\r回车符\a发出系统响铃声\f换页符\b退格符\o代表八进制数的字符\n换行符\x代表十六进制数的字符\t横向制表符\000终止符,其后信息将全部被忽略※如果字符串末尾处有一个单独的反斜线\,则表示下一行是续行,如:3)元组(tuple):由一系列元素组成,且每个元素可以存储不同类型的数据。4)列表(list):5)字典(dictionary):变量和常量Python语言中的变量无需声明,赋值操作包含了变量声明的定义。需要注意的是:Python语言每一次新的赋值操作都将创建一个新的变量,即使创建的变量名相同,但是变量的标识却不相同。变量在使用之前必须赋值,因为只有为变量赋值后该变量才被创建。可以在一条语句中同时为多个变量赋值,如a,b,c=1,2,3全局变量:全局变量指的是能够被不同的函数、类或文件所共享的变量。全局变量可以被文件内部的任何函数访问,也可以被外部文件访问。一般情况下,在函数块之外定义的变量都可以认为是全局变量。为使代码更加易读,最好在文件的开始位置定义全局变量。全局变量用global语句声明。※很多情况下,两个变量名相同的变量并非表示同一个变量,变量名只是变量的标识符。相同的变量名出现在代码的不同位置,含义往往是不相同的。为变量命名时,好的习惯:1)为避免混淆全局变量和局部变量,可以将全局变量放到单独的文件中,便于管理和修改。2)尽量不要使用全局变量。全局变量对于不同的模块都可以自由访问,可能导致全局变量的不可预知性,造成错误,且这种错误非常隐蔽,难以发现和改正。局部变量:局部变量指的是只能在函数或代码块范围内使用的变量。函数或代码块一旦结束,局部变量的生命周期也将结束。常量:初始化之后就不能改变的固定值。例如字符串、数字等。编写程序时,可以根据需要将所有的常量定义在一个块中,使用时通过导入模块来实现。运算符和表达式赋值运算符=算数运算符:加+减-乘*除/幂**x**y将返回x的y次幂取模%返回除法的余数取整数//返回商的整数部分※Python不支持自增、自减运算关系运算符:小于大于小于等于=大于等于=等于==不等于!=※关系运算符返回值True或False逻辑运算符:与and或or非not※逻辑运算符返回值True或False【重】运算符优先级(序号越大表示优先级越高)序号运算符含义序号运算符含义1=Lambda表达式13*,/,%乘,除,取余2or逻辑或14+x,-x正负号3and逻辑与15~x按位翻转4not逻辑非16**指数5in,notin成员测试17x,attribute属性参考6is,isnot同一性测试18x[index]下表7,=,,=,!=,,==比较19x[index:index]寻址段8|按位或20f(arguments…)调用函数9^按位异或21(expression,…)绑定或显示元组10&按位与22[expression,…]显示列表11,移位23{key:datum,...}显示字典12+,-加,减运算24‘expression,…’字符串转换文件类型1)源代码文件:.py(源代码文件,由python.exe执行).pyw(专门用于开发图形用户界面,由pythonw.exe执行)2)字节代码文件:.pyc(源代码文件经编译后生成,不能在文本编辑器中打开或编辑)3)优化代码文件:.pyo(经过优化的源文件生成,需要使用指令行工具生成)元组(tuple):由一系列元素组成,且每个元素可以存储不同类型的数据。创建:tuple_name=(元素0元素1,…)※元组创建时可以为空;只有一个元素时,也应该加逗号,否则系统无法识别是元组还是表达式。例:zoo=(‘wolf’,‘elephant’,‘penguin’)emptytuple=()newzoo=(‘wolf’,)※元组索引从0开始计数,如zoo[0]表示其中第一个元素※print语句后面可以跟具备定制功能的带符号%的元组。定制功能可以输出特定格式,元组中各元素的顺序必须与定制的顺序一一对应,例:age=33name='John'print'%sis%dyearsold'%(name,age)print'Whyis%splayingwiththatsnake?'%name这里如果不加%的话无法输出Python语言中常用定制字符串的替代符符号描述符号描述%c定制字符及其ASCII码%o定制无符号八进制数%s定制字符串%x定制无符号十六进制数%d定制整数%f定制浮点型数据,可指定小数点后的精度%u定制无符号整
本文标题:Python-语言在-Abaqus-中的应用--学习笔记
链接地址:https://www.777doc.com/doc-4480793 .html