声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2686|回复: 17

[综合讨论] 材料参数的循环怎么做?

[复制链接]
发表于 2007-7-21 01:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我做的一个分析是这样的:一个结构里面的两块是不同的材料做的   现在要求它们的模量变化组合时的结构应变   
请问这种情况ANSYS可以在通过循环来完成这种参数的变化吗?我现在是用把APDL里面定义的参数改一次算一次  很麻烦  :@(

[ 本帖最后由 xuruikl 于 2007-7-31 08:45 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-7-22 11:29 | 显示全部楼层
不知你是不是想寻找,两种模量组合下的最小结构应变?
这个应该可以试试用优化设计的方法考虑,定义组合系数为设计变量,结构应变为目标函数,
 楼主| 发表于 2007-7-23 00:49 | 显示全部楼层

回复 #2 rodge 的帖子

我是要建一个多种模量变化情况下应力应变的数据库    所以要做循环的   有没有详细点的命令流啊?
发表于 2007-7-23 09:32 | 显示全部楼层
如果是这样的话,我觉得可以编个小程序,调用ansys,输入需要变化的参数,然后输出所需要的结果文件。
或者像你所说的在APDL中设置循环,设置一个大的循环,循环下包括结果的提取和写入文件
举个简单的例子
!设置变量的初始值
!你的建模部分
!有限元模型建立过程
*do,i,1,N,1
solve
fini
/post1
!提取你需要的结果数据,写入一个数组或文件中
fini
/prep7
!根据你需要的修改变量值(这个是看你怎么变化了)
fini
/solu
*enddo
 楼主| 发表于 2007-7-26 19:50 | 显示全部楼层

回复 #4 rodge 的帖子

循环时,模量变化了,要清除原来的网格重新划分网格  ,那么循环一次就要重新划网格  比较费时间,有没有什么方法在网格划好后开始循环,每次循环时改变材料参数,不经过重新划分网格这个步骤呢?有没有这样的例子啊?发个给我啊
cscuxj@126.com  谢谢
发表于 2007-7-27 21:51 | 显示全部楼层
重新定义材料,不需要重新划分网格吧,
 楼主| 发表于 2007-7-28 00:07 | 显示全部楼层

回复 #6 rodge 的帖子

rodge ,我的例子的命令流如下,你告诉我怎么让材料循环计算吧:
/PREP7  
!*  
ET,1,SOLID95
!*  
*dim,maxsx,array,27,2
K, ,0,0,5.52,   
K, ,4.5,0,5.52,
K, ,4.5,10,5.52,
K, ,0,10,5.52,  
K, ,0,0,5.45,   
K, ,4.5,0,5.45,
K, ,4.5,10,5.45,
K, ,0,10,5.45,  
LSTR,1,2
LSTR,2,3
LSTR,3,4  
LSTR,1,4     
LSTR,5,6     
LSTR,6,7   
LSTR,7,8      
LSTR,5,8      
LSTR,1,5     
LSTR,2,6      
LSTR,3,7      
LSTR,4,8  
AL,1,2,3,4
AL,5,6,7,8
AL,1,5,9,10
AL,3,7,11,12
AL,2,6,10,11
AL,4,8,9,12
FLST,2,1,8  
FITEM,2,2.25,5,5.52
WPAVE,P51X  
PCIRC,0.15,0,0,360,
RECTNG,-0.18,0.18,-0.18,2,   
CSYS,0  
WPAVE,0,0,0
CSYS,0   
!*  
FLST,2,2,5,ORDE,2   
FITEM,2,1   
FITEM,2,8   
AOVLAP,P51X
FLST,2,2,5,ORDE,2   
FITEM,2,7   
FITEM,2,-8  
AOVLAP,P51X
FLST,2,8,5,ORDE,3   
FITEM,2,1   
FITEM,2,-7  
FITEM,2,9   
VA,P51X
BLOCK,0,5,0,10,5.15,5.45,   
BLOCK,0,5,0,10,5,5.15,  
BLOCK,0,6.8,0,10,0,5,
FLST,2,4,6,ORDE,2   
FITEM,2,1   
FITEM,2,-4  
VGLUE,P51X  
MPTEMP,,,,,,,,  
MPTEMP,1,0  
MPDATA,EX,1,,40E6   
MPDATA,PRXY,1,,0.35
MPTEMP,,,,,,,,  
MPTEMP,1,0  
MPDATA,EX,2,,200E6  
MPDATA,PRXY,2,,0.25
MPTEMP,,,,,,,,  
MPTEMP,1,0  
MPDATA,EX,3,,1300E6
MPDATA,PRXY,3,,0.25
MPTEMP,,,,,,,,  
MPTEMP,1,0  
MPDATA,EX,4,,1200E6
MPDATA,PRXY,4,,0.25
TYPE,   1   
MAT,       1
REAL,   
ESYS,       0   
SECNUM,
!*  
MSHAPE,1,3D
MSHKEY,0
!*  
CM,_Y,VOLU  
VSEL, , , ,       7
CM,_Y1,VOLU
CHKMSH,'VOLU'   
CMSEL,S,_Y  
!*  
VMESH,_Y1   
!*  
CMDELE,_Y   
CMDELE,_Y1  
CMDELE,_Y2  
!*  
TYPE,   1   
MAT,       2
REAL,   
ESYS,       0   
SECNUM,
!*  
VPLOT   
CM,_Y,VOLU  
VSEL, , , ,       5
CM,_Y1,VOLU
CHKMSH,'VOLU'   
CMSEL,S,_Y  
!*  
VMESH,_Y1   
!*  
CMDELE,_Y   
CMDELE,_Y1  
CMDELE,_Y2  
!*  
VPLOT   
TYPE,   1   
MAT,       3
REAL,   
ESYS,       0   
SECNUM,
!*  
CM,_Y,VOLU  
VSEL, , , ,       6
CM,_Y1,VOLU
CHKMSH,'VOLU'   
CMSEL,S,_Y  
!*  
VMESH,_Y1   
!*  
CMDELE,_Y   
CMDELE,_Y1  
CMDELE,_Y2  
!*  
VPLOT   
TYPE,   1   
MAT,       4
REAL,   
ESYS,       0   
SECNUM,
!*  
CM,_Y,VOLU  
VSEL, , , ,       1
CM,_Y1,VOLU
CHKMSH,'VOLU'   
CMSEL,S,_Y  
!*  
VMESH,_Y1   
!*  
CMDELE,_Y   
CMDELE,_Y1  
CMDELE,_Y2  
!*  
FINISH  
/SOL
FLST,2,1,5,ORDE,1   
FITEM,2,21  
!*  
/GO
DA,P51X,ALL,
FLST,2,1,5,ORDE,1   
FITEM,2,7   
/GO
!*  
SFA,P51X,1,PRES,0.7E6   
SFGRAD,PRES, ,Z, , ,
/STATUS,SOLU
SOLVE
ASEL,S, , ,       2
NSLA,S,1
!   
FINISH  
/POST1  
!*  
NSORT,S,X,0,0, ,0  
!
*get,maxsx(1,1),sort,0,min

其中,材料1,2,3,4的模量同时循环套嵌,而不用重新划分网格该怎么办啊?写个命令流出来吧
还有我划分网格时提示的警告该怎么处理啊?  谢谢
 楼主| 发表于 2007-7-28 00:09 | 显示全部楼层

回复 #6 rodge 的帖子

还有  那个划分网格的命令流好长 怎么精简点啊?
还有就是循环时可以把提取数据的也一起循环提取数据吗?
发表于 2007-7-29 22:56 | 显示全部楼层

回复 #7 cscuxj 的帖子

给你说一种思路吧,修改单元属性
不是有4种材料吗,你先定义5种材料,其中一种随便,只是为了中间过程需要
用修改单元属性的方法修改单元的材料
举个例子:
ESEL,S,MAT,,1    !!!!!先选出材料为1的单元,
EMODIF,all,MAT,5, !!!!!将其材料修改为备份的过渡材料
ESEL,S,MAT,,2      !!!!!选择材料为2的单元,修改为材料1,以下类同
EMODIF,all,MAT,1,
ESEL,S,MAT,,3
EMODIF,all,MAT,2,
ESEL,S,MAT,,4
EMODIF,alll,MAT,3,
ESEL,S,MAT,,5
EMODIF,all,MAT,4,

该怎么利用循环,可以自己慢慢研究

[ 本帖最后由 xuruikl 于 2007-7-30 09:08 编辑 ]

评分

1

查看全部评分

发表于 2007-7-29 23:05 | 显示全部楼层
划分网格时提示的警告该怎么处理啊?
还有  那个划分网格的命令流好长 怎么精简点啊?
还有就是循环时可以把提取数据的也一起循环提取数据吗?

划网格时的警告,看是怎么样的警告了,如果是问题不大的警告,就可以忽略,总之看警告提示,关闭警告提示也可以
/uis,msgpop,3可以去掉警告的显示

你的划分网格命令流那是GUI操作后的log命令流,想精简,改回一般的命令流不就可以了

想提取的数据可以先循环放在数组里,也可以循环写文件
 楼主| 发表于 2007-7-30 08:38 | 显示全部楼层
VSEL, , , ,       5
CM,_Y1,VOLU
CHKMSH,'VOLU'   
CMSEL,S,_Y  
!*  
VMESH,_Y1   
!*  
CMDELE,_Y   
CMDELE,_Y1  
CMDELE,_Y2  
!*  
VPLOT   
TYPE,   1   
MAT,       3
REAL,   
ESYS,       0   
SECNUM,
!*  
CM,_Y,VOLU  
像这个划分网格的该怎么精简啊?
FITEM,2,1   这个是什么意思啊?
 楼主| 发表于 2007-7-31 01:15 | 显示全部楼层

回复 #10 rodge 的帖子

做了一次循环  虽然可以处结果  但是每次变化材料后都要重新加载   有没有可以不重新加载的方法啊?
那些象
ESEL,S,MAT,,1   
EMODIF,all,MAT,5,
finshi
/SOL
........

/STATUS,SOLU
SOLVE  
这种命令该怎么写啊?
还有定义材料MAT矩阵在哪里定义啊?

我的部分命令流
/PREP7
allsel
ESEL,S,MAT,,1   
FLST,2,1641,2,ORDE,2
FITEM,2,1   
FITEM,2,-1641   
EMODIF,P51X,MAT,2,  
FINISH  
/SOL
allsel
FLST,2,1,5,ORDE,1   
FITEM,2,21  
!*  
/GO
DA,P51X,ALL,
FLST,2,1,5,ORDE,1   
FITEM,2,7   
/GO
!*  
SFA,P51X,1,PRES,0.7E6   
SFGRAD,PRES, ,Z, , ,
/STATUS,SOLU
SOLVE  
allsel
*get,fwduy(1,2),node,7005,uz
*get,fwduy(2,2),node,6625,uz
*get,fwduy(3,2),node,6626,uz
*get,fwduy(4,2),node,6617,uz
*get,fwduy(5,2),node,6618,uz
*get,fwduy(6,2),node,6627,uz
*get,fwduy(7,2),node,6628,uz
*get,fwduy(8,2),node,6623,uz
发表于 2007-7-31 01:34 | 显示全部楼层
看你的循环到底是怎么加的啊,如果模型没变的话,你又不删除载荷,为什么还需要在每次循环后再加载荷?原来的载荷不是还可以用来计算吗
定义材料的MAT不就是你自己定义的几种材料吗
你用来循环的只需要是

/prep7
!!!!!你的模型建立,你的材料定义,你的网格划分
/solu
!!!!!你的载荷施加
*do,i,1,N,1
  /solu
  solve
/post1
*get,,,,   !!!!!是你得到的数据,可以保存在一个数组里,也可以写入文件
  !!!你修改材料的参数,用选择单元的方法,将单元选出来,再用EMODIF修改单元的属性
*enddo

这样不是就可以了,没有你所提出来的,一会要重划网格,一会要重新定义载荷,除非这载荷是在循环的过程中改变的
 楼主| 发表于 2007-8-1 00:03 | 显示全部楼层

回复 #13 rodge 的帖子

我的模型和荷载都是不变的  只是结构的不同部分模量变化了  荷载可以重复使用   结构一共四个部分,每个部分的模量有四种变化取值,计算就是计算各种模量不同组合下的应变计算结果
假设四种结构的材料编号:
结构一材料编号:11,12,13,14
二:                   21,22,23,24
三:                   31,32,33,34
四:                   41,42,43,44               
/prep7
!!!!!模型建立,材料定义,网格划分(初始模量组合)
/solu
!!!!!载荷施加
a=11,
b=21,
c=31,
d=41,
*do,i,1,4,1
  *do,j,1,4,1
    *do,k,1,4,1
       *do,l,1,4,1
  /solu
  solve
/post1
*get,,,,   !!!!!
ESEL,S,MAT,,a    !!!!!先选出材料为1的单元,
EMODIF,all,MAT,i+10, !!!!!将其材料修改为材料1变化的模量值
a=i+10,
ESEL,S,MAT,,b      !!!!!选择材料为2的单元,修改为材料2变化的模量值
EMODIF,all,MAT,j+20,
b=j+20,
ESEL,S,MAT,,c
EMODIF,all,MAT,k+30,
c=k+30,
ESEL,S,MAT,,d
EMODIF,all,MAT,l+40,
d=l+40,
      *enddo
    *enddo
  *enddo
*enddo

如上,每循环一次,只有一个模量发生变化,共4*4*4*4=256种变化,我上面的做法和写法不知道可以不?
可以把材料库做成一个数组来提取吗?
 楼主| 发表于 2007-8-1 22:37 | 显示全部楼层

回复 #13 rodge 的帖子

循环可以做出来了 但是提取的结果总是第一次循环的结果?为什么?
a=11,
b=21,
c=31,
d=41,
*do,i,1,3,1
/PREP7
allsel
ESEL,S,MAT,,a   
FLST,2,1641,2,ORDE,2
FITEM,2,1   
FITEM,2,-1641   
EMODIF,P51X,MAT,i+10,  
a=i+10,
FINISH  
/SOL
allsel
FLST,2,1,5,ORDE,1   
FITEM,2,21  
!*  
/solu
  solve
/post1
allsel
*get,fwduy(1,i),node,7005,uz
*get,fwduy(2,i),node,6625,uz
*get,fwduy(3,i),node,6626,uz
*get,fwduy(4,i),node,6617,uz
*get,fwduy(5,i),node,6618,uz
*get,fwduy(6,i),node,6627,uz
*get,fwduy(7,i),node,6628,uz
*get,fwduy(8,i),node,6623,uz
*enddo
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-20 06:02 , Processed in 0.073579 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表