找回密码
 注册
Simdroid-非首页
查看: 95|回复: 13

[建模和网格划分] 急!求助 变密度问题建模

[复制链接]
发表于 2012-3-16 20:12:47 | 显示全部楼层 |阅读模式 来自 重庆沙坪坝区
finish
/clear
/prep7
/view,1,1,1,1
blc4,,,12,3.5,0.3
et,1,45
mshape,0,3d
esize,0.5
vmesh,all
*get,etol,elem,,count         !获取单元总数
*do,i,1,etol
mp,ex,i,2.8e10
mp,prxy,i,0.2
x=centrx(i)
y=centry(i)
z=centrz(i)
mp,dens,i,576*centry(i)+2500
*enddo
et,2,154
r,2
rmodif,2,4,1.1e8
nsel,s,loc,z,0
type,2
real,2
esurf
/solu
nsel,none
nsel,s,loc,y,0
d,all,all
antype,2
modopt,lanb,10,,,,1
mxpand,10,,,yes
lumpm,off
solve
/post1
set,list
哪位大侠帮我看看这个命令流那个地方错误啊   小弟是做变密度的实体结构的模态分析 怎么运行不了啊
发表于 2012-3-17 13:36:03 | 显示全部楼层 来自 湖北武汉
Simdroid开发平台
楼主运行不了是出现了什么问题?警告?错误??!这具体问题应该发上来。
没看出来楼主使用表面效应单元有什么用。
问题应该是在:施加约束时选择了y=0的节点,但之后没有allsel
解决方法:solve之前allsel一下,选择所有entities
回复 不支持

使用道具 举报

 楼主| 发表于 2012-3-18 10:35:25 | 显示全部楼层 来自 重庆沙坪坝区
senja 发表于 2012-3-17 13:36
楼主运行不了是出现了什么问题?警告?错误??!这具体问题应该发上来。
没看出来楼主使用表面效应单元有 ...

运行倒是没有什么问题,我主要是想模拟挡土墙的密度是变化的 表面效应单元主要是模拟地基刚度的
但是有一个问题是在模拟密度变化的时候 我运用循环变化密度  但是为什么最后还是mat 1 时候的密度 并没有变化 不知道具体怎么来模拟这个变密度 如,我运用循环计算的第一个单元的密度是2556,和我把所有单元密度设为2556,算的的频率结构都一样。
你说的那个allsel,最后加上去了
谢谢帮助一下吧
回复 不支持

使用道具 举报

发表于 2012-3-18 18:59:48 | 显示全部楼层 来自 湖北武汉
本帖最后由 senja 于 2012-3-18 19:00 编辑
machuansheng1 发表于 2012-3-18 10:35
运行倒是没有什么问题,我主要是想模拟挡土墙的密度是变化的 表面效应单元主要是模拟地基刚度的
但是有 ...

这个替换材料参数的命令你没有写,而只是定义了与单元个数一样的材料参数。使用mpchg命令为每个单元替换材料参数就可以实现了。
一下是命令及结果,楼主看看是否是你需要的。

finish
/clear

/prep7
/view,1,1,1,1
blc4,,,12,3.5,0.3
et,1,45
mshape,0,3d
esize,0.5
vmesh,all

*get,etol,elem,,count         !获取单元总数
*do,i,1,etol
mp,ex,i,2.8e10
mp,prxy,i,0.2
mp,dens,i,576*centry(i)+2500
mpchg,i,i
*enddo

et,2,154
r,2
rmodif,2,4,1.1e8
nsel,s,loc,z,0
type,2
real,2
esurf

/solu
nsel,none
nsel,s,loc,y,0
d,all,all
antype,2
modopt,lanb,10,,,,1
mxpand,10,,,yes
lumpm,off
allsel
solve

/post1
set,list



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2012-3-18 19:39:23 | 显示全部楼层 来自 重庆沙坪坝区
senja 发表于 2012-3-18 18:59
这个替换材料参数的命令你没有写,而只是定义了与单元个数一样的材料参数。使用mpchg命令为每个单元替换材 ...

谢谢你,这个问题最后把我逼的我是使用的把结构在y方向划分成条状体,近视的条状体密度相等的办法,你的方法很好!再次感谢!
还有一个问题,也是这个问题的后半部分:命令流如下:finish
/clear
/prep7
ka=0.5
/view,1,1,1,1

blc4,,,12,3.5,0.3
et,1,45
r,1

*do,i,1,35,1
mp,ex,i,2.8e10
mp,prxy,i,0.2
mp,dens,i,576*(0.1*i-0.05)+2500
*enddo

wprota,,90
*do,i,1,34,1
wpoff,,,-0.1
vsbw,all
*enddo
wpcsys,-1

*do,i,1,35,1
vsel,s,loc,y,0.1*i-0.1,0.1*i
vatt,i,1,1
vsel,none
*enddo

esize,0.1
vsell,all
vmesh,all
wpcsys,-1

et,2,154
r,2
rmodif,2,4,1.1e8
nsel,s,loc,z,0
type,2
real,2
esurf

allsel,all
*get,tmmax,node,,num,max       !获取整个模型的最大节点号,以便创建弹簧节点时用
nsel,none
nsel,s,loc,z,0               !选择z=0的节点,形成当前的选择集
*get,ntol,node,,count          !获取选择集下的节点总数
*get,nmax,node,,num,max        !获取选择集下的最大节点号
*dim,nodno,,ntol               !定义数组,存储各个节点号
*get,n1,node,,num,min        !获取选择集下的最小节点号
nodno(1)=n1
*do,i,2,ntol
nodno(i)=ndnext(n1)
*enddo


et,3,14
keyopt,3,2,2

*do,i,1,ntol
ni=nodno(i)
r,i+2,0.2*0.2*(ka*18000*ny(ni))**0.7
*enddo

type,3
*do,i,1,ntol
ni=nodno(i)
n,tmmax+i,nx(ni),ny(ni)         
real,i+2
e,ni,tmmax+i
*enddo

nsel,none
nsel,s,,,tmmax+1,tmmax+ntol
d,all,all

/solu
nsel,none
nsel,s,loc,y,0
d,all,all
allsel,all
antype,2
modopt,lanb,10,,,,1
mxpand,10,,,yes
lumpm,off
solve
/post1
set,list

我的本意是在墙背面相应节点处在建立重合节点,然后在在两重合节点处建立combin14号弹簧单元,模拟剪切刚度,但是上面的命令流好像有问题,在墙背没有建立起相应的节点,但是也没有出项错误,但是把这部分去掉计算的结果不变,说明弹簧单元还是没有加上
能帮我看下吗?非常感谢
回复 不支持

使用道具 举报

发表于 2012-3-18 20:07:27 | 显示全部楼层 来自 湖北武汉
machuansheng1 发表于 2012-3-18 19:39
谢谢你,这个问题最后把我逼的我是使用的把结构在y方向划分成条状体,近视的条状体密度相等的办法,你的 ...

自己仔细查看是否成功建立弹簧,如果没有建立,那么试着修改。我查看下,但重点是你能改出来,这是最好的。
回复 不支持

使用道具 举报

 楼主| 发表于 2012-3-18 20:21:05 | 显示全部楼层 来自 重庆沙坪坝区
senja 发表于 2012-3-18 20:07
自己仔细查看是否成功建立弹簧,如果没有建立,那么试着修改。我查看下,但重点是你能改出来,这是最好的 ...

好的 谢谢你 我在努力的看看什么地方出错了  好像是哪个地方没有选择上  但是还是找不出来
回复 不支持

使用道具 举报

 楼主| 发表于 2012-3-18 20:58:05 | 显示全部楼层 来自 重庆沙坪坝区
senja 发表于 2012-3-18 20:07
自己仔细查看是否成功建立弹簧,如果没有建立,那么试着修改。我查看下,但重点是你能改出来,这是最好的 ...

刚才检查了一下  需要把其中的一句修改如下!
*do,i,2,ntol
n1=ndnext(n1)         
nodno(i)=n1
*enddo修改之后可以建立了 ,但是弹簧还是没有作用!
真的没辙了!谢谢 有时间帮我看下巴
回复 不支持

使用道具 举报

 楼主| 发表于 2012-3-18 21:05:05 | 显示全部楼层 来自 重庆沙坪坝区
machuansheng1 发表于 2012-3-18 20:58
刚才检查了一下  需要把其中的一句修改如下!
*do,i,2,ntol
n1=ndnext(n1)         

想请问一下 combin14号单元和实体单元连接的时候连接点可以用公用吗,还是建一个节点在用耦合命令
谢谢
回复 不支持

使用道具 举报

 楼主| 发表于 2012-3-18 21:05:37 | 显示全部楼层 来自 重庆沙坪坝区
senja 发表于 2012-3-18 20:07
自己仔细查看是否成功建立弹簧,如果没有建立,那么试着修改。我查看下,但重点是你能改出来,这是最好的 ...

想请问一下 combin14号单元和实体单元连接的时候连接点可以用公用吗,还是建一个节点在用耦合命令
谢谢
回复 不支持

使用道具 举报

发表于 2012-3-18 21:09:31 | 显示全部楼层 来自 湖北武汉
本帖最后由 senja 于 2012-3-18 21:10 编辑
machuansheng1 发表于 2012-3-18 20:21
好的 谢谢你 我在努力的看看什么地方出错了  好像是哪个地方没有选择上  但是还是找不出来 ...


finish
/clear

/prep7
/view,1,1,1,1
ka=0.5

blc4,,,12,3.5,0.3
et,1,45
mshape,0,3d
esize,0.3
vmesh,all

*get,etol,elem,,count         !获取单元总数
*do,i,1,etol
mp,ex,i,2.8e10
mp,prxy,i,0.2
mp,dens,i,576*centry(i)+2500
mpchg,i,i
*enddo

et,2,154
r,2
rmodif,2,4,1.1e8
nsel,s,loc,z,0
type,2
real,2
esurf

allsel,all
*get,tmmax,node,,num,max       !获取整个模型的最大节点号,以便创建弹簧节点时用

nsel,none
nsel,s,loc,z,0               !选择z=0的节点,形成当前的选择集
*get,ntol,node,,count          !获取选择集下的节点总数
*get,nmax,node,,num,max        !获取选择集下的最大节点号
*dim,nodno,,ntol               !定义数组,存储各个节点号
*get,nmin,node,,num,min        !获取选择集下的最小节点号
nodno(1)=nmin
*do,i,2,ntol
nodno(i)=ndnext(nmin)    !!!!!!原来问题出处:楼主写程序的时候nl 和 n1写混了,“1”和小写“L”不分,这是查看数组nodno时发现的。为方便改为nmin了
nmin=nodno(i)
*enddo
allsel

et,3,14
keyopt,3,2,2

*do,i,1,ntol
ni=nodno(i)
r,i+2,0.2*0.2*(ka*18000*ny(ni))**0.7
*enddo

type,3
*do,i,1,ntol
ni=nodno(i)
n,tmmax+i,nx(ni),ny(ni)         
real,i+2
e,ni,tmmax+i
*enddo

nsel,none
nsel,s,,,tmmax+1,tmmax+ntol
d,all,all

/solu
nsel,none
nsel,s,loc,y,0
d,all,all
allsel,all
antype,2
modopt,lanb,10,,,,1
mxpand,10,,,yes
lumpm,off
solve

/post1
set,list

加弹簧前后的数据对比(前:无弹簧;后:有弹簧)





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2012-3-19 12:27:55 | 显示全部楼层 来自 重庆沙坪坝区
senja 发表于 2012-3-18 21:09
finish
/clear

谢谢啦 但是我修改之后弹簧好像还是没有加上 计算结果没有变化
命令流和你给我修改之后的一样:
finish
/clear
/prep7
ka=0.5
/view,1,1,1,1

blc4,,,12,3.5,0.3
et,1,45
r,1

*do,i,1,35,1
mp,ex,i,2.8e10
mp,prxy,i,0.2
mp,dens,i,576*(0.1*i-0.05)+2500
*enddo

wprota,,90
*do,i,1,34,1
wpoff,,,-0.1
vsbw,all
*enddo
wpcsys,-1

*do,i,1,35,1
vsel,s,loc,y,0.1*i-0.1,0.1*i
vatt,i,1,1
vsel,none
*enddo

esize,0.1
vsell,all
vmesh,all
wpcsys,-1

et,2,154
r,2
rmodif,2,4,1.1e8
nsel,s,loc,z,0
type,2
real,2
esurf

allsel,all
*get,tmmax,node,,num,max       !获取整个模型的最大节点号,以便创建弹簧节点时用
nsel,none
nsel,s,loc,z,0                 !选择z=0的节点,形成当前的选择集
*get,ntol,node,,count          !获取选择集下的节点总数
*get,nmax,node,,num,max        !获取选择集下的最大节点号
*dim,nodno,,ntol               !定义数组,存储各个节点号
*get,nmin,node,,num,min         !获取选择集下的最小节点号
nodno(1)=nmin
*do,i,2,ntol
nodno(i)=ndnext(nmin)         
nmin=nodno(i)
*enddo
allsel

et,3,14
keyopt,3,2,2

*do,i,1,ntol
ni=nodno(i)
r,i+2,3*e4*0.1*0.1*(ka*18000*ny(ni))**0.7
*enddo

type,3
*do,i,1,ntol
ni=nodno(i)
n,tmmax+i,nx(ni),ny(ni)         
real,i+2
e,ni,tmmax+i
*enddo

nsel,none
nsel,s,,,tmmax+1,tmmax+ntol
d,all,all

/solu
nsel,none
nsel,s,loc,y,0
d,all,all
allsel,all
antype,2
modopt,lanb,10,,,,1
mxpand,10,,,yes
lumpm,off
solve
/post1
set,list


不知道怎么回事,是不是要对弹簧和实体连接的节点进行耦合啊
谢谢 为了这个问题你已经帮我很多次了,再次说声感谢
回复 不支持

使用道具 举报

发表于 2012-3-19 15:44:33 | 显示全部楼层 来自 湖北武汉
machuansheng1 发表于 2012-3-19 12:27
谢谢啦 但是我修改之后弹簧好像还是没有加上 计算结果没有变化
命令流和你给我修改之后的一样:
finish

你再检查检查,我这边能够计算。另外,我计算的两个结果过楼主是否赞同或者说结果过是否可信?!
回复 不支持

使用道具 举报

 楼主| 发表于 2012-3-20 13:09:17 | 显示全部楼层 来自 重庆沙坪坝区
我的计算和你的计算结果的差别可能是密度定义的区别 这个暂且不说 问题是加上弹簧以后计算的结果和没有加上的计算结果一样,相当于没有定义,我本来定义的是一维弹簧单元,但是在和45号单元连接之后都变成自由度ux,uy,uz了 我把耦合了也不行,现在倒是能计算了
命令流还是这些:
finish
/clear
/prep7
ka=0.8
/view,1,1,1,1

blc4,,,12,3.5,0.3
et,1,45
r,1

*do,i,1,35,1
mp,ex,i,2.8e10
mp,prxy,i,0.2
mp,dens,i,576*(0.1*i-0.05)+2500
*enddo

wprota,,90
*do,i,1,34,1
wpoff,,,-0.1
vsbw,all
*enddo
wpcsys,-1

*do,i,1,35,1
vsel,s,loc,y,0.1*i-0.1,0.1*i
vatt,i,1,1
vsel,none
*enddo

esize,0.1
vsell,all
vmesh,all
wpcsys,-1

et,2,154
r,2
rmodif,2,4,1.1e8
nsel,s,loc,z,0
type,2
real,2
esurf

allsel,all
*get,tmmax,node,,num,max       !获取整个模型的最大节点号,以便创建弹簧节点时用
nsel,none
nsel,s,loc,z,0                 !选择z=0的节点,形成当前的选择集
*get,ntol,node,,count          !获取选择集下的节点总数
*get,nmax,node,,num,max        !获取选择集下的最大节点号
*dim,nodno,,ntol               !定义数组,存储各个节点号
*get,nmin,node,,num,min         !获取选择集下的最小节点号
nodno(1)=nmin
*do,i,2,ntol
nodno(i)=ndnext(nmin)         
nmin=nodno(i)
*enddo
allsel

et,3,14,,2  
keyopt,3,2,2

*do,i,1,ntol
ni=nodno(i)
r,i+2,3*e10*0.1*0.1*(ka*18000*ny(ni))**0.7
*enddo


type,3
*do,i,1,ntol
ni=nodno(i)
n,tmmax+i,nx(ni),ny(ni)
n,tmmax+ntol+i,nx(ni),ny(ni)         
real,i+2
e,tmmax+i,tmmax+ntol+i
*enddo


*do,i,1,ntol
ni=nodno(i)
nsel,none
nsel,s,,,ni
nsel,a,,,tmmax+i
cpintf,uy
d,tmmax+i,ux,,,,,uz
*enddo



nsel,none
nsel,s,,,tmmax+ntol+1,tmmax+ntol+ntol
d,all,all

/solu
nsel,none
nsel,s,loc,y,0
d,all,all
allsel,all
antype,2
modopt,lanb,10,,,,1
mxpand,10,,,yes
lumpm,off
solve
/post1
set,list
真的快被逼疯了
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-9-22 13:40 , Processed in 0.047229 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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