探索ABAQUS中的空间随机场折减技术

经过这几天的摸索终于实现了随机场的强度折减了,直接上代码,讲解暂时先不细说,基本的解释都在代码里面,主要思想就是如下:

   1、获取单元数量

   2、根据单元数量定义材料数量

   3、根据单元数量设置Section的数量

   4、最后设置相同数量的element set

   生成效果:
在这里插入图片描述

   当然我的材料参数中的内摩擦角折减公式是不对的,我这里附上正确的折减公式:

np.round(np.arctan((np.tan(chi1_phi*(np.pi/180))/zhejian[i]))*(180/np.pi),10)

另外我这里的随机公式也没有考虑空间随机理论,这里我只是演示给大家看,别的不多说,埋头干活

   1、需要根据我们构建的数值仿真模型的单元数量生成随机场

   这里将每行的数据存储为一个元组,先获得每行的数据,在获取每行的第一个值,就是我们的序列号

'''获取单元序号'''
def Unitnumber(Partitions,filename):
    with open(filename,mode='r') as txtfile:
        data=[]
        line=txtfile.readlines()
        for i,rows in enumerate(line):
            if i in range(0,len(line)):
                data.append(rows.strip('\n'))
        for i in range(len(data)):
            a=data[i].split(',')
            for j in range(len(a)):
                b=a[j].split(',')
                Partitions.append(int(b[0]))
    return Partitions

2、随机场的生成

   随机长的生成式假设为正态分布随机抽样的,样本数量即为网格数量,np.random.normal()的三个参数分别代表均值、标准差、抽样数量

randon_c=np.random.normal(6,0.2,len(elementlist))
randon_phi=np.random.normal(20,0.2,len(elementlist))

3、根据inp文件的规则我们需要将生成的随机参数赋予我们的单元

   读取模型及对应part

mymodel = mdb.models['Model-1']#获取模型
mypart = mdb.models['Model-1'].parts['Part-1']#获取part

mypart.elements是指part下的单元,每个单元对应序号

for ele_index in mypart.elements:
    ele = ele_index.label#单元序号

用序号定义材料名称,,并赋予单元材料名称

Matname='Material-'+str(ele)#材料名
mySoil= mymodel.Material(name=Matname)

赋予容重和弹性模型

mySoil.Density(table=((2.0,),))
        mySoil.Elastic(table=((1000000.0, 0.35),))

赋予每个单元内摩擦角值

mySoil.MohrCoulombPlasticity(
            dependencies=1, table=((randon_phi[m]/0.5, 0.0, 0.5), (randon_phi[m]/0.75, 0.0, 0.75), (
                randon_phi[m]/1, 0.0, 1.0), (randon_phi[m]/1.25, 0.0, 1.25), (randon_phi[m]/1.5, 0.0, 1.5), (
                                       randon_phi[m]/1.75, 0.0, 1.75), (randon_phi[m]/2.0, 0.0, 2.0)))

赋予每个单元粘聚力值

 mySoil.mohrCoulombPlasticity.MohrCoulombHardening(
            dependencies=1, table=((randon_c[m]/0.5, 0.0, 0.5), (randon_c[m]/0.75, 0.0, 0.75), (randon_c[m]/1, 0.0, 1.0),
                                   (randon_c[m]/1.25, 0.0, 1.25), (randon_c[m]/1.5, 0.0, 1.5), (randon_c[m]/1.75, 0.0, 1.75), (randon_c[m]/2,0.0, 2.0)))

材料赋予区域

mySection=mymodel.HomogeneousSolidSection(name=sectionname,  material=Matname, thickness=None)#创建section
        # elements=mypart.elements[0]

设置点集

setname='myset'+str(ele)
        region=mypart.Set(elements=mypart.elements[ele-1:ele], name=setname)
sectionname='Section-'+str(ele)

最后是装配

 mypart.SectionAssignment(region=region, sectionName=sectionname)
#  -*-coding:utf8 -*-
import numpy as np
mymodel = mdb.models['Model-1']#获取模型
mypart = mdb.models['Model-1'].parts['Part-1']#获取part
soil=[]
'''获取单元序号'''
def Unitnumber(Partitions,filename):
    with open(filename,mode='r') as txtfile:
        data=[]
        line=txtfile.readlines()
        for i,rows in enumerate(line):
            if i in range(0,len(line)):
                data.append(rows.strip('\n'))
        for i in range(len(data)):
            a=data[i].split(',')
            for j in range(len(a)):
                b=a[j].split(',')
                Partitions.append(int(b[0]))
    return Partitions
filename='E:\\abaqus\elementlist.txt'
elementlist=Unitnumber(soil,filename)
'''生成随机场'''
randon_c=np.random.normal(6,0.2,len(elementlist))
randon_phi=np.random.normal(20,0.2,len(elementlist))
m=0
for ele_index in mypart.elements:
    ele = ele_index.label
    if ele in elementlist:
        Matname='Material-'+str(ele)#材料名
        mySoil= mymodel.Material(name=Matname)
        mySoil.Density(table=((2.0,),))
        mySoil.Elastic(table=((1000000.0, 0.35),))
        mySoil.MohrCoulombPlasticity(
            dependencies=1, table=((randon_phi[m]<


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空