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

[二次开发] [原创]用户自定义材料里要用到makefile文件的解释

[复制链接]
发表于 2005-11-30 09:16:36 | 显示全部楼层 |阅读模式 来自 浙江杭州
当用户自定义材料时要要用到编译和链接,adina采用动态dll的方法,如何使用
版上已有文章说明,我这里只对makefile文件作一下说明。以便可以更加深入的了解自定义材料的编译和链接过程,有错误的请指正.

本帖子中包含更多资源

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

×

评分

1

查看全部评分

发表于 2005-12-2 19:28:53 | 显示全部楼层 来自 河北沧州

Re:[原创]用户自定义材料里要用到makefile文件的解释

Simdroid开发平台
to shaoyu1979,假如在静力分析后接着进行动力分析,在动力分析中我要根据静力分析的应力状态来确定动力分析的参数,如果自己编动力本构程序,应该怎样考虑静力结果如何传递到动力分析中来这个问题?比如在进行动力分析之前要根据单元静力结果,如静平均应力来计算单元动剪切模量Gd?
 楼主| 发表于 2005-12-3 21:10:01 | 显示全部楼层 来自 浙江杭州

Re:[原创]用户自定义材料里要用到makefile文件的解释

to jXNC
我看到你关于重启动的讨论。
我觉得重启动就是某个连续计算过程中间的停顿(便于用户对于模型的边界
载荷,材料等等作出相应的调整),adina纪录了一切提顿点的应力位移状态,如果是动力分析还有速度和加速度等初始状态,一旦从该停顿点恢复重启动,
程序将从这些状态作为初始条件继续计算。

因此你说的从静力分析,到动力分析,应力状态的传递是可以用重启动来实现的

我想你大概是要做土的动力本构吧。比如最简单的双线性模型和等效线性模型。土的剪切模量和等效阻尼比都随着剪应变幅值而变化。这是个迭代的过程:
1首先,计算再给定一个合适的时间段(载荷步)内进行。
2先假定G,和阻尼比为常数,计算给定的载荷下的剪应变,求得该时段内的平均剪应变。
3根据剪切模量和等效阻尼与剪应变的关系修正G,和阻尼比为常数
4反复迭代,直到实现相互协调。
5再进行下一个时间段

我觉得G的修正容易在用户自定义材料里面实现,关键是阻尼比,无法在材料中修正。

因此,本办法,就是人为的计算一次,调整一次,然后再计算,但这样不是现实。最好是有能够外部控制语句来实现
自编程序,或者ansys的命令语句,我看到过ansys与matlab的相互调用。
发表于 2005-12-3 22:04:51 | 显示全部楼层 来自 华南理工大学

Re:[原创]用户自定义材料里要用到makefile文件的解释

shaoyu1979,您好!在地基震陷分析中,先用邓肯-张模型进行静力分析,后用hardin-drnevich等效线性模型进行动力分析,把地震加速度时程分为若干个时段如30,按动静交替法,在每一个时段结束时用邓肯-张进行一次静力计算,不知道能不能在自编的动力本构程序中调用邓肯-张,还是要按重启动来计算?例外,在adina自带的链接库程序中有很多与温度有关的变量和程序段,能不能把这些变量和程序短直接删掉,仅保留调用SUBROUTINE CUSER2 或CUSER3时传递的于温度有关的变量,即在程序中不考虑与温度有关的计算,以减少程序运行时间?
 楼主| 发表于 2005-12-3 22:47:53 | 显示全部楼层 来自 浙江杭州

Re:[原创]用户自定义材料里要用到makefile文件的解释

关于第一个问题:还是用重启动比较保险
关于第二个问题:不应删除为好,删除可能会导致计算出错,因为cuser2或3是有由adina调用的子程序,因为你无法修改上部程序,而改cuser可能会导致参数无法对应。
发表于 2005-12-4 22:10:20 | 显示全部楼层 来自 华南理工大学

Re:[原创]用户自定义材料里要用到makefile文件的解释

to shaoyu1979,在adina程序中有个STRESS/STRAIN MATRIX FOR U/P FORMULATION,不知它是有什么作用?如果我要编粘弹性的程序,是不是一定要在adina的visco-elastic material model链接库程序上来开发,visco-plastic model的连接库程序行不行(假定屈服应力取得很大,不让材料达到屈服,也就不产生塑性应变)?因为后者程序简单些,没有那么多温度应力应变的计算。另外,据说网上下载的adina的邓肯-张模型不能用于平面应变计算,不知是否?
 楼主| 发表于 2005-12-5 13:30:09 | 显示全部楼层 来自 浙江杭州

Re:[原创]用户自定义材料里要用到makefile文件的解释

1、网上下载的adina的邓肯-张模型不能用于平面应变计算只能用于三维计算。这是真的,我试过,估计dll编译的时候只有cuser3
2、关于STRESS/STRAIN MATRIX FOR U/P FORMULATION:你编的东西应该没有用,可以不管它,是用来做不可压缩材料的
3、关于编自程序,什么都可以,可以参数传递正确就好,我觉得visco-plastic model是可以的
发表于 2005-12-6 17:40:58 | 显示全部楼层 来自 华南理工大学

Re:[原创]用户自定义材料里要用到makefile文件的解释

to shaoyu1979,很感谢您的回复。我还有点不明白,在进行静力分析之后重启动进行动力分析,在进行动力计算前的动力本构中如何获得静力计算结束时的应变作为动力分析的初始应变?是在EPSI(I)中还是在STRAIN(I)中呢?
 楼主| 发表于 2005-12-6 23:59:27 | 显示全部楼层 来自 浙江杭州

Re:[原创]用户自定义材料里要用到makefile文件的解释

STRAIN(4)            TOTAL STRAIN COMPONENTS AT TIME T+DT
EPS(4)               TOTAL STRAIN COMPONENTS AT TIME T
重启动之后先是得到EPS,stress,还有一些历史变量什么,然后程序应该会根据这个时候的状态来计算STRAIN(4),把这些调给你的子程序来计算应力和应力应变刚度矩阵.
所以我觉得应该EPS可能合适一些.
我只是我的理解,不一定对.另外我不知道你的EPSI是否就是我这里所说的EPS.
一些变量说明可以在ovl30u_vp1.f上找到
发表于 2005-12-8 22:10:45 | 显示全部楼层 来自 华南理工大学

Re:[原创]用户自定义材料里要用到makefile文件的解释

EPSI是TAU时刻的应变,看了版主的介绍我明白了些。我现在在编非线性粘弹性的程序,根据静力计算的最终应力stress(假定IF(TIME.EQ.DT.AND.KTR.EQ.1) THEN时得到stress和EPS(4)等)在动力程序初始时来计算最大动剪切模量Gdmax,参考剪应变γ等,在动静交替计算中,即在下一次重启动后的动力计算中这些变量要保持不变,那么如何做到这一点呢?能不能先把Gdmax,γ等变量定义为常数变量,再把它们保存在ARRAY数组中?因为Gdmax,γ等变量都是应力stress的表达式,当stress变化时,程序会不会出现问题,即因修改常数变量的值而出错?
发表于 2005-12-9 12:48:13 | 显示全部楼层 来自 华南理工大学

Re:[原创]用户自定义材料里要用到makefile文件的解释

在卸荷反向加荷以及反向卸荷正向加荷时要记住此时的应力应变(τc, γc),作为以后应力计算的历史状态,应该如何记忆呢?因为在卸荷反向加荷以及反向卸荷正向加荷时的应力应变(τc, γc),是以某一时间步开始时的STRESS(4)和EPS(4)来表示的(在一个时间步里各子步的应变是按线性增加的,应变增量方向不变),而STRESS(4)和EPS(4)却是随时间步(DT)增加而变化的,造成卸荷反向加荷以及反向卸荷正向加荷时的应力应变(τc ,γc)也跟着变化,而实际上只在某些情况下即当应变增量方向发生变化时,(τc ,γc)才需要更新,并不是每一个时间步都更新,不知如何处理? ------在下先谢过版主了!
 楼主| 发表于 2005-12-9 13:25:28 | 显示全部楼层 来自 浙江杭州

Re:[原创]用户自定义材料里要用到makefile文件的解释

虽然Gdmax,γ为应力stress的表达式,但是只要在你的代码中,不更新它们就行了,在一个动力计算的过程中,保持常数。

我还是对你的过程不是很清楚:引用你的话“用hardin-drnevich等效线性模型进行动力分析,把地震加速度时程分为若干个时段如30,按动静交替法,在每一个时段结束时用邓肯-张进行一次静力计算”

你说把震加速度时程分为若干个时段如30,这可以理解,但是用动静交替法,我不知道你的静力计算加的是什么载荷,物理意义明显吗?
发表于 2005-12-9 20:40:25 | 显示全部楼层 来自 华南理工大学

Re:[原创]用户自定义材料里要用到makefile文件的解释

采用动静交替法计算主要是考虑获得地基变形随地震加速度时程的变化,吧动力作用看成是一种对土的软化,使土的模量降低,静力计算就是在土和结构重力作用下根据这种降低了的模量来计算变形,与第一次静力计算的变形差值就是在地震作用某时刻产生的附加变形。考虑到hardin-drnevich等效线性模型的阻尼很难在程序中考虑,故我现在用masing法来编.本来我打算动力本构结合adina里的固液耦合来分析的,但好像版主说自定义本构不能考虑biot 动力固结,所以我打算在程序中引入孔压模型,用经验公式来计算孔压。但这样计算出来的孔压应该是不是单元积分点的孔压,还是单元平均孔压?有文献说把孔压当成节点荷载计算孔压引起的应变,这在本构中能实现吗?

评分

1

查看全部评分

发表于 2005-12-12 21:33:45 | 显示全部楼层 来自 华南理工大学

Re:[原创]用户自定义材料里要用到makefile文件的解释

to shaoyu1979,在adina OVL30U_VEL连接库程序里在K=2模块求应力STRESS(I)时,用到的本构矩阵是4X4阶的,而在k=3(calculate the stress/strain matrix)时本构矩阵有3X3阶的(IF(IT2D.EQ.1.AND.(NELP.EQ.0.OR.INDNL.NE.2))也有4X4阶的,这是怎么回事啊?我想做平面应变masing本构,在k=3模块里我应该用几阶的?谢谢!
 楼主| 发表于 2005-12-13 15:26:39 | 显示全部楼层 来自 浙江杭州

Re:[原创]用户自定义材料里要用到makefile文件的解释

to JXNC
你说的引入引入孔压模型来算应该可以实现,你可以利用经验公式,也可以用笔biot固结方程,你可以参考一下书:《土工原理与计算》第十二章土体动力分析,它对总应力分析法和有效应力分析法讲的比较详细。

再仔细读读源程序,(IF(IT2D.EQ.1.AND.(NELP.EQ.0.OR.INDNL.NE.2))是指2维的U/P格式,可能加了孔压自由度,因此是4*4阶的。在算应力时候,虽然用的是4阶D,但是应力张量的最后一个分量都置零了。
发表于 2005-12-13 15:54:56 | 显示全部楼层 来自 华南理工大学

Re:[原创]用户自定义材料里要用到makefile文件的解释

十分感谢版主的指点,我在算子步应力时用的是4阶D,在k=3更新应力应力-应变矩阵时用的是3阶的。我但不清楚如果引入孔压模型,在每一时间步结束时计算一次孔压,这个孔压到底是积分点的孔压还是单元节点的孔压,我希望得到的是单元节点孔压,不知我按经验孔压公式计算的孔压在k=4输出时adina会不会自动转变为单元节点孔压输出,这样我就可以绘出孔压等值线或某节点的孔压变化。自定义本构真不能用adina的FSI进行biot动力固结计算吗,要能的话就轻松多了!谢谢版主给俺加分!版主万岁!
 楼主| 发表于 2005-12-14 09:59:28 | 显示全部楼层 来自 浙江杭州

Re:[原创]用户自定义材料里要用到makefile文件的解释

自定义本构真不能用adina的FSI进行biot动力固结计算:这个真的不能算,我个也是我郁闷的地方,关于U/P格式,我现在只知道是用来算不可压缩性材料的,关于原理,还要看看bathe的原著。我也不是很了解。
发表于 2005-12-15 22:07:19 | 显示全部楼层 来自 华南理工大学

Re:[原创]用户自定义材料里要用到makefile文件的解释

版主,Fortran environment要怎样设置啊,是不是一定要在 Command Prompt方式下设置? 是不是一定要在DOS下做,因为在链接的时候,makefile.adusr里还指明了要链接别的程序。
我的DLL是在打开VISUAL FORTRAN后选择FORTRAN Dynamic Link Library,选择An empty DLL application,在C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\目录下建立DLL,build后提示Creating library Debug/adust.lib and object Debug/adust日.exp
adusr.dll - 0 error(s), 0 warning(s)
然后我把adusr.dll拷到.../bin目录下,但计算时只提示ADINA data input file D:\...*.dat successfully created,没有计算结果,不知是哪里出问题了?是不是没有Makefile文件,我的材料模型没有导进去啊?二次开发真难那!
发表于 2006-2-20 11:16:39 | 显示全部楼层 来自 大连理工大学

Re:[原创]用户自定义材料里要用到makefile文件的解释

shaoyu1979 wrote:
to jXNC
我看到你关于重启动的讨论。
我觉得重启动就是某个连续计算过程中间的停顿(便于用户对于模型的边界
载荷,材料等等作出相应的调整),adina纪录了一切提顿点的应力位移状态,如果是动力分析还有速度和加速度等初始状态,一旦从该停顿点恢复重启动,
程序将从这些状态作为初始条件继续计算。

因此你说的从静力分析,到动力分析,应力状态的传递是可以用重启动来实现的

我想你大概是要做土的动力本构吧。比如最简单的双线性模型和等效线性模型。土的剪切模量和等效阻尼比都随着剪应变幅值而变化。这是个迭代的过程:
1首先,计算再给定一个合适的时间段(载荷步)内进行。
2先假定G,和阻尼比为常数,计算给定的载荷下的剪应变,求得该时段内的平均剪应变。
3根据剪切模量和等效阻尼与剪应变的关系修正G,和阻尼比为常数
4反复迭代,直到实现相互协调。
5再进行下一个时间段

我觉得G的修正容易在用户自定义材料里面实现,关键是阻尼比,无法在材料中修正。

因此,本办法,就是人为的计算一次,调整一次,然后再计算,但这样不是现实。最好是有能够外部控制语句来实现
自编程序,或者ansys的命令语句,我看到过ansys与matlab的相互调用。

版主在上文中提到:本办法,就是人为的计算一次,调整一次,然后再计算,但这样不是现实。最好是有能够外部控制语句来实现:)。

我想问一下:Adina中有这样的外部控制语句来实现,提取,调整,再计算的过程吗,或者说可以用fortran写出这样的程序而adina又可以调用的吗?
发表于 2006-2-20 14:17:49 | 显示全部楼层 来自 江苏常州

Re:[原创]用户自定义材料里要用到makefile文件的解释

shaoyu1979 wrote:
to jXNC
我看到你关于重启动的讨论。
我觉得重启动就是某个连续计算过程中间的停顿(便于用户对于模型的边界
载荷,材料等等作出相应的调整),adina纪录了一切提顿点的应力位移状态,如果是动力分析还有速度和加速度等初始状态,一旦从该停顿点恢复重启动,
程序将从这些状态作为初始条件继续计算。

因此你说的从静力分析,到动力分析,应力状态的传递是可以用重启动来实现的

我想你大概是要做土的动力本构吧。比如最简单的双线性模型和等效线性模型。土的剪切模量和等效阻尼比都随着剪应变幅值而变化。这是个迭代的过程:
1首先,计算再给定一个合适的时间段(载荷步)内进行。
2先假定G,和阻尼比为常数,计算给定的载荷下的剪应变,求得该时段内的平均剪应变。
3根据剪切模量和等效阻尼与剪应变的关系修正G,和阻尼比为常数
4反复迭代,直到实现相互协调。
5再进行下一个时间段

我觉得G的修正容易在用户自定义材料里面实现,关键是阻尼比,无法在材料中修正。

因此,本办法,就是人为的计算一次,调整一次,然后再计算,但这样不是现实。最好是有能够外部控制语句来实现
自编程序,或者ansys的命令语句,我看到过ansys与matlab的相互调用。

ADINA材料开发中缺省有60个历史变量可以使用,应该是可以记住以前的各种中间的结果,作为下一步物理量确定的算式中的一个变量。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-26 22:47 , Processed in 0.084566 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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