首页 > 编程语言 >abaqus基于python二次开发——钢结构穹顶建模

abaqus基于python二次开发——钢结构穹顶建模

时间:2024-07-13 19:30:27浏览次数:19  
标签:abaqus v1 python 0.0 s1 np 环向梁 二次开发 center

  1. 模型示意
    本工作旨在建立一个上表面近乎球面的钢结构穹顶。如下图所示,该穹顶由环向梁和径向梁组成。环向梁径向梁上下截面都为工字钢。
    
    环向梁截面如下图所示,环向梁截面有一个倾斜角度,为了使其上表面尽可能与球面贴合。
    
    
    径向梁横截面为不经过旋转的工字形
    
  2. 代码讲解

 2.1准备工作

在abaqus中运行,需要在开头引入

from abaqus import *
from abaqusConstants import *
from caeModules import *
from driverUtils import executeOnCaeStartup
import numpy as np
executeOnCaeStartup()
定义球体中心点
# center and radius
center = [0,0,0]
定义环向梁径向梁数量与截面尺寸
n=5#环向梁数
m=10#径向梁数
st=0.085#翼缘
sh=0.35/2#腹板
定义球面半径与穹顶底部半径
R=50.235-sh#球面半径
r=21.000-sh#穹顶底部半径
定义径向梁角度和环向梁旋转角度,决定最终建完的穹顶的角度,这里定义为360度,代表建立一个完整的穹顶

ala=2*np.pi
ala2=360
计算径向梁轨迹的角度
an0=np.arcsin(r/R)
2.2 环向梁
一根一根建立环向梁,环向梁根数已于前文定义
for i in range(n):
    angle = an0 * (i+1)/ n
    center = [0, 0]

    s = mdb.models['Model-1'].ConstrainedSketch(name='__sweep__', sheetSize=2000.0)
    g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints
    s.setPrimaryObject(option=STANDALONE)

    r0=R*np.sin(angle)
    # 圆弧,圆心,起点、终点、顺时针(CLOCKWISE),逆时针(COUNTERCLOCKWISE)
    s.ArcByCenterEnds(center=(0, 0), point1=(0, r0),
                      point2=(r0*np.sin(ala), r0*np.cos(ala)), direction=CLOCKWISE)
    # s.CircleByCenterPerimeter(center=(0,0),point1=(0,20))#trajectory
    # s.unsetPrimaryObject()
    s1 = mdb.models['Model-1'].ConstrainedSketch(name='__profile__',
                                                 sheetSize=2000.0, transform=(-0.067804759839806, -0.99769860907143, 0.0,
                                                                             0.0, 0.0, 1.0, -0.99769860907143,
                                                                             0.067804759839806, 0.0,
                                                                             -3.10862446895044e-15, 20.0, 0.0))
    g1, v1, d1, c1 = s1.geometry, s1.vertices, s1.dimensions, s1.constraints
    s1.setPrimaryObject(option=SUPERIMPOSE)
    s1.ConstructionLine(point1=(-100, 0.0), point2=(100, 0.0))
    s1.ConstructionLine(point1=(0.0, -100), point2=(0.0, 100))

    #revolve
    Ibeamx0=np.array([[-1,1],[-1,1],[0,0]])
    Ibeamy0=np.array([[1,1],[-1,-1],[1,-1]])
    Ibeamx=(Ibeamx0-center[0])*np.cos(angle)-(Ibeamy0-center[1])*np.sin(angle)+center[0]
    Ibeamy=(Ibeamy0-center[1])*np.cos(angle)+(Ibeamx0-center[0])*np.sin(angle)+center[1]

    s1.Line(point1=(st*Ibeamx[0][0],st*Ibeamy[0][0]), point2=(st*Ibeamx[0][1],st*Ibeamy[0][1]))
    s1.Line(point1=(st * Ibeamx[1][0], st * Ibeamy[1][0]), point2=(st * Ibeamx[1][1], st * Ibeamy[1][1]))
    s1.CoincidentConstraint(entity1=v1[2], entity2=g1[2], addUndoState=False)
    s1.CoincidentConstraint(entity1=v1[3], entity2=g1[3], addUndoState=False)
    s1.Line(point1=(sh*Ibeamx[2][0],sh*Ibeamy[2][0]), point2=(sh*Ibeamx[2][1],sh*Ibeamy[2][1]))
    s1.PerpendicularConstraint(entity1=g1[4], entity2=g1[6], addUndoState=False)
    s1.CoincidentConstraint(entity1=v1[4], entity2=g1[4], addUndoState=False)
    s1.EqualDistanceConstraint(entity1=v1[0], entity2=v1[1], midpoint=v1[4],
        addUndoState=False)
    s1.CoincidentConstraint(entity1=v1[5], entity2=g1[5], addUndoState=False)
    s1.EqualDistanceConstraint(entity1=v1[2], entity2=v1[3], midpoint=v1[5],
        addUndoState=False)


    p = mdb.models['Model-1'].Part(name='beam'+str(i), dimensionality=THREE_D,
        type=DEFORMABLE_BODY)
    p = mdb.models['Model-1'].parts['beam'+str(i)]
    p.BaseShellSweep(sketch=s1, path=s)
    s1.unsetPrimaryObject()
    p = mdb.models['Model-1'].parts['beam'+str(i)]
    session.viewports['Viewport: 1'].setValues(displayedObject=p)
    name.append('beam'+str(i))
    del mdb.models['Model-1'].sketches['__profile__']
    del mdb.models['Model-1'].sketches['__sweep__']
print(name)
装配环向梁
for j in range

标签:abaqus,v1,python,0.0,s1,np,环向梁,二次开发,center
From: https://blog.csdn.net/weixin_49092939/article/details/140400276

相关文章

  • 使用 pip 和 requirements.txt 安装 Python 包
    1.构建当前项目需要的软件包pip3installpipreqspip3installpip-toolspipreqs--savepath=requirements.in&&pip-compile1.根据配置文件批量安装软件包。requirements.txt在某些环境中,可使用pip3而不是pippipinstall-rrequirements.txt2.检查当前环境......
  • python——数据类型及常用操作
    1.Intint是一种基本的数据类型,可以存储任意大小的整数,定义简单,将一个值赋给变量即可可以和+-*/等运算符结合a=2b=3c=a+bprint(c)d=b-apint(d)e=a*bprint(e)fa/bprint(f)a=2print(a)2.Floatfloat表示浮点数 也就是我们常说的带有小数......
  • python进程和线程_day013
    python进程和线程概念相关进程概览线程概览Python中的多进程Python中的多线程多进程还是多线程单线程+异步I/O(协程)应用案例示例1:将耗时间的任务放到线程中以获得更好的用户体验示例2:使用多进程对复杂任务进行“分而治之”。今天我们使用的计算机早已进入多CPU或多核......
  • 使用python绘制3D柱状图+完整代码展示
    一、首先进行代码效果图的展示        这是一个简单的3D模型图的展示,我们可以从官网上看到有类似的模型代码,但是大部分都没有加上全局系统配置,整体效果很单一,看不出来有什么特色,我们可以通过了解我们的python绘图工具pyecharts库。二、了解代码这个就是我们的全局......
  • python数据可视化(5)——绘制饼图
    课程学习来源:b站up:【蚂蚁学python】【课程链接:【【数据可视化】Python数据图表可视化入门到实战】】【课程资料链接:【链接】】Python绘制饼图分析北京天气饼图,是一个划分为几个扇形的圆形统计图表,能够直接以图形的方式直接显示各个组成部分所占比例目的:查看2019年北京......
  • Python数据容器(dict字典、set集合)
    dic字典dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。字典的创建使用大括号{}包含键值对,并用冒号:分隔键和值,形成键:值对。字典的特性唯一键:字典中的每个键都必须是唯一的。值可以取任何数据类型,如字符串,数字,元组。无序(Python......
  • Python 潮流周刊#60:Python 的包管理工具真是多啊(摘要)
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。本期周刊分享了13篇文章,13个开源项目,全文2300字。重要提醒:1、本专栏的......
  • python获取Android App性能数据(CPU、GPU、内存、电池、耗电量)
    原文链接:https://blog.csdn.net/u012089395/article/details/1266689461、原理python脚本通过os.popen()方法运行adb命令,获取性能数据,将性能数据保存在csv文件并算出均值、最大值、最小值。本脚本可测试一个app包含多个进程的场景,可以获取每个进程的性能数据。2、环境准备:2.1软......
  • python remote
    #!/usr/bin/python#-*-coding:utf-8-*-#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@auhorbyruiy####pipinstallparamiko-ihttps://pypi.tuna.tsinghua.edu.cn/simple##pipinstallpsutil-ihttps://py......
  • python paramiko remote 采集监控信息
    #!/usr/bin/python#-*-coding:utf-8-*-#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@auhorbyruiy####pipinstallparamiko-ihttps://pypi.tuna.tsinghua.edu.cn/simple##pipinstallpsutil-ihttps://py......