创建时间:2020-06-02 11:05

本文为短文“PythonITASCA系列软件中的应用(一)”(简称为“文(一)”)的续篇介绍ITASCA软件Python应用环境的技术框架极为丰富的开源类库是Python语言的核心优势所在,技术框架因此主要涉及在科学计算领域常用类库,以及为满足其与ITASCA数值分析模型交互控制而特别定制开发的功能库(模块)-itasca(小写)

 

ITASCA系列软件中Python的实现及Ipython简介

 

考虑到成熟性因素,目前ITASCA软件纳入的Python版本是3.6(最新版本为3.8,且Python应用嵌入了shell版运行环境-IPython

 

Ipython是一个用于Python开发的交互式shellPython默认提供shell环境更为方便,支持变量自动补全自动缩进bash shell命令等便捷化功能内置大量高效的功能和函数。Ipython将会使我们更为效率的使用python,目前普遍认为,Ipython是利用Python进行科学计算和交互可视化的一个最佳的平台。

 

ITASCA类库概况

 

Python基本环境外,ITASCA软件对常用科学计算类库进行了整合。支持的公共开源类库包括:

l        Numpy: 矩阵运算;

l       Matplotlib: 绘图库;

l        Scipy科学计算;

l         Networkx: 复杂网格分析;

l         Fipy: 有限体积分析;

l         Numexpr: 提高计算效率;

l         Pyside2: 图形界面;

l           

其中,MSNMatplotlib Scipy Numpy称为科学计算三剑客。可见,ITASCA软件中已包含的Python类库可满足普遍的数据处理、分析、绘图等需求

 

FLAC3D 7.0为例,以上Python类库可见于安装目录 \Itasca\FLAC3D700\exe64\python36\Lib\site-packages

 

img2

1 : FLAC3D 7.0 Python

 

对于Numpy等公共类库的使用方法,在此不作展开,本文主要介绍itasca类库相关的内容。

 

ITASCA功能库 — itasca

Python面向对象程序开发概念中,功能(模块)总体由属性和方法构成。基于这一概念,可以简单对itasca功能库的技术特点作简单概述

l    属性:基于ITASCA软件数值模型的特点,为模型全局控制(设置)、模型元素(节点、单元、块体、颗粒等)提供基于Python环境进行模型访问的专用数据类型,这些数据类型综合利用了整型、浮点型、数组等一系列基本数据类型。以FLAC3D为例itasca模块为节点(gridpoint、实体单元zone、结构单元等模型元素的基本属性(如id)、几何信息(如位置等)、模型响应(如变形、速度等)定制了多种数据结构。其中,数组数据类型特别满足了数据分析对便捷、高效访问数据的一般要求;

l     方法:从程序开发角度,方法即为函数。itasca类库为模型控制和数据分析提供大量功能函数用于进行模型控制(建模命令嵌入、重力加速度、计算迭代时间步长全局化参数设置),以及对上述数值模型构成元素的属性进行访问、编辑、分析等处理操作,如依据模型元素位置数组调整模型形态。

 

img3

2 : itasca模块主要属性和方法函数

 

1)         itasca功能库调用方法

依据Python命令及语法规则调用itasca功能库。以FLAC3D为例

        主模块调用:

                import itasca as it

                from itasca import *

        子模块调用:

                from itasca import zonearray as za

                from itasca import gridpointarray as gpa

其中,itzagpa为模块别名,支持用户自定义。

 

2)          简单示例

FLAC3D为例,本小节用简单案例展示采用Python进行模型控制和分析的基本方法和流程。

 

用户可调用FLAC3D程序主菜单功能创建后缀为pyPython文件,在其中尝试调试理解如下代码:

        import itasca as it

         from itasca import zonearray as za

          from itasca import gridpointarray as gpa

           it.command("python-reset-state false")

上语句实现如下意图

l        导入itasca主模块,及其子模块zonearraygridpointarray,别名分别为itzagpa

l          采用主模块提供的command函数嵌入FLAC3D命令,此处python-reset-state false为标准语句,设定Python状态独立于FLAC3D模型状态Python环境下变量生存状态不受FLAC3D模型文件调用操作影响。

 

           it.command("""

model new

model large-strain off

zone create brick size 10 10 10

zone cmodel assign elastic

zone property density 2950 young 12e9 poisson 0.25

zone gridpoint fix velocity-z range position-z -0.1 0.1

""")

以上语句采用主模块command函数嵌入FLAC3D命令依次设定了大变形关闭模式、创建网格模型、本构模型设定、材料参数赋值以及边界条件定义。

 

          it.set_gravity((0,0,-10))

           it.command("""

model cyc 10

model save 'demo'

""")

以上语句实现如下操作:

l         采用主模块命令set_gravity设定重力加速度这一全局化分析条件;

l         句完成模型迭代计算和文件保存操作。

 

       print(it.zone.count())

       print(za.stress())

       print(gpa.disp())

以上语句简单展示采用Python环境和itasca模块功能进行模型后处理分析:

l        句利用主模块命令zone.count统计得到模型单元数;

l        句利用子模块zonearray提供的stress函数打印单元应力数组;

l        句利用子模块gridpointarray提供的disp函数打印节点变形数组。

 

   

本文在文(一)的基础上,ITASCA系列软件中Python的实现和Ipython进行了简单介绍ITASCA软件安装完成后,内置的Python中已包含较多python常用类库本文主要itasca类库构成和功能进行了概括性介绍,并通过简单案例演示该类库的使用方法。

 

参考文献:

[1]       FLAC3D 7.0 Manual. Itasca Consulting Group, Inc.

首页    关于我们    行业资讯    Python在ITASCA系列软件中的应用(二)

Python在ITASCA系列软件中的应用(二)