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

[子程序/二次开发] 子程序介绍四:分布力子程序forcem

[复制链接]
发表于 2010-7-9 15:22:03 | 显示全部楼层 |阅读模式 来自 黑龙江哈尔滨
本帖最后由 mlj0016 于 2010-7-9 15:24 编辑

先请大家帮个忙。本人在“建设家园”版申请MARC版的版主,希望大家能去捧个场,谢啦。

言归正传,介绍一下今天的子程序forcem。
其实《二次开发》上最初的例子,介绍的就是这个子程序。我写的和这个例子几乎相同,区别就是路径不同。子程序如下:
      subroutine forcem(press,th1,th2,nn,n)
implicit real*8 (a-h, o-z)
      dimension th1(3), th2(3), n(7)
include 'C:\MSC.Software\Marc\2010\marc2010\common\creeps'

if (th1(1).le.30.and.th1(1).ge.20.and.th1(2).le.(4*(time_beg_inc
     $ +1)).and.th1(2).ge.(4*time_beg_inc)) then
  press=0.002
end if
th2(1)=0.0d0
th2(2)=0.0d0
th2(3)=-1.0d0
      return
      end

说明一下,载荷沿着y轴移动,速度为4mm/s,载荷范围x方向10mm,y方向4mm。
需要指出的是,在marc2005中,使用cptim作为增量步开始时间,timinc作为时间增量,
而在marc2010中,使用这两个变量时出了些问题。可能与声明有关。因此改用time_beg_inc作为增量步开始时间。
这个子程序非常简单,需要注意的是,必须在job的analysis options中选择follower force,才能实现我们希望的载荷的移动。大家可以分别选择follower force和no follower force计算一下,结果的区别显而易见。
另外,如果大家注意的话,我在已经介绍的这四个子程序中,三次都用到了“移动”。相信大家能够很好的掌握这种方式了。
对于这样的一个简单子程序,通过一些变化,如坐标变换,就可以实现圆形、环状、正弦分布等力的范围、力的大小的变化。过些日子将专门发帖介绍一下坐标变换的应用。

模拟结果如图。


模型与子程序见附件。
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

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

×

评分

2

查看全部评分

发表于 2010-7-9 19:36:51 | 显示全部楼层 来自 河北石家庄
Simdroid开发平台
1# mlj0016

希望楼主,对程序再讲解细点,我是赖鸟,什么都不会啊,
另外请教,学子程序应该先学什么呀
回复 不支持

使用道具 举报

发表于 2010-7-9 19:50:31 | 显示全部楼层 来自 江苏南京
向楼主学习,正在努力钻研中。
回复 不支持

使用道具 举报

 楼主| 发表于 2010-7-9 20:00:19 | 显示全部楼层 来自 黑龙江哈尔滨
编写子程序的基础当然是fortran语言。但fortran仅仅是个工具,重点还在于一些专业性的基础知识。比如使用film、flux这两个子程序,最好懂传热学的基本原理;而要使用hypela,一定要学一下弹塑性力学。

2# sj27725liu
回复 不支持

使用道具 举报

发表于 2010-7-9 21:13:55 | 显示全部楼层 来自 陕西西安
本帖最后由 zhangluu 于 2010-7-9 21:33 编辑
编写子程序的基础当然是fortran语言。但fortran仅仅是个工具,重点还在于一些专业性的基础知识。比如使用film、flux这两个子程序,最好懂传热学的基本原理;而要使用hypela,一定要学一下弹塑性力学。

2# sj2772 ...
mlj0016 发表于 2010-7-9 20:00


我用的marc2005,CVF6.6b

为什么我的子程序编译时说没有主程序呢???是不是marc不必须要求有主程序啊

我必须加上这几句
program force
call forcem
才能build通过

要不,只compile的话,marc调用会出错,不知道哪儿出错了,还望mlj兄多多指点
http://forum.simwe.com/thread-938882-1-3.html


另外再请教mlj兄个问题
我发的这个帖子里的荷载http://forum.simwe.com/thread-939348-1-2.html用forcem可以吗?群里几个网友告诉我说用table也可以,试了试发现不太懂X0-coordinate跟x-coordinate有啥区别,另外用2个变量table的时候,自变量V2是自变量V1的函数该怎么处理?
回复 不支持

使用道具 举报

发表于 2010-7-9 21:43:31 | 显示全部楼层 来自 江苏南京
看看,拜读一下
回复 不支持

使用道具 举报

发表于 2010-7-9 22:13:29 | 显示全部楼层 来自 黑龙江哈尔滨
师兄,过来顶你!
回复 不支持

使用道具 举报

 楼主| 发表于 2010-7-10 09:00:09 | 显示全部楼层 来自 黑龙江哈尔滨
我在使用子程序时,只要compile通过就可以了。
关于你问的第二个问题,我也没太看明白什么意思。不知道你是要施加重力还是分布力。如果是一个分布力的话,利用子程序是很好实现的。只要把press写成th1()的函数就可以了。另外,利用table应该也可以实现。你可以试一下。
5# zhangluu
回复 不支持

使用道具 举报

发表于 2010-7-10 09:10:04 | 显示全部楼层 来自 陕西西安
本帖最后由 zhangluu 于 2010-7-10 09:19 编辑
我在使用子程序时,只要compile通过就可以了。
关于你问的第二个问题,我也没太看明白什么意思。不知道你是要施加重力还是分布力。如果是一个分布力的话,利用子程序是很好实现的。只要把press写成th1()的函数就可以 ...
mlj0016 发表于 2010-7-10 09:00


mlj兄好,我想施加的是一个重力,不知道应该怎么做,mlj兄我可以加你QQ吗,希望有机会向你请教
回复 不支持

使用道具 举报

发表于 2010-7-10 10:41:51 | 显示全部楼层 来自 江苏南京
我想看看你的模型,可对话区显示model is corrupt ,点FILL没有模型显示是因为版本不对忙呢 我的是2005版的
回复 不支持

使用道具 举报

发表于 2010-7-11 19:30:28 | 显示全部楼层 来自 黑龙江哈尔滨
支持师兄当版主。
回复 不支持

使用道具 举报

发表于 2010-7-12 08:00:00 | 显示全部楼层 来自 江苏常州
学习子程序,太难了,但也得学啊,支持楼主升版主
回复 不支持

使用道具 举报

发表于 2010-7-13 23:00:07 | 显示全部楼层 来自 云南昆明
学习一下:)
回复 不支持

使用道具 举报

发表于 2010-7-14 09:15:37 | 显示全部楼层 来自 北京
子程序的学习很有意思,感谢lz。
回复 不支持

使用道具 举报

发表于 2010-7-26 09:43:32 | 显示全部楼层 来自 北京
哇,见习版主啊,呵呵。
图文并茂,很好,支持!
回复 不支持

使用道具 举报

发表于 2010-7-27 19:22:50 | 显示全部楼层 来自 湖南长沙
不错的好东西哦
回复 不支持

使用道具 举报

发表于 2010-8-9 20:18:10 | 显示全部楼层 来自 广东广州
我是新手,刚做上面那个例子。怎么compaq visual fortran的build里面老出现下面的错误,是什么意思啊?
“--------------------Configuration: plate - Win32 Debug--------------------
Compiling Fortran...
D:\Marc\plate.f
Linking...
dfor.lib(DFORMAIN.OBJ) : error LNK2001: unresolved external symbol _MAIN__
Debug/plate.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

plate.exe - 2 error(s), 0 warning(s)
回复 不支持

使用道具 举报

发表于 2010-8-10 11:14:00 | 显示全部楼层 来自 陕西西安
[quote]我是新手,刚做上面那个例子。怎么compaq visual fortran的build里面老出现下面的错误,是什么意思啊?
“--------------------Configuration: plate - Win32 Debug--------------------
Compiling Fortran...
D: ...
gtd 发表于 2010-8-9 20:18 [/quot

Marc好像不用这一步骤,只要fortran编译通过就可以了~~
说是没有主程序,后来我试了试,编译通过,marc是可以调用的

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2010-8-10 19:52:58 | 显示全部楼层 来自 广东广州
谢谢18楼,今天我把CVF6.6升级成CVF6.6b就好了!不好意思啊,小问题惊动了各位
回复 不支持

使用道具 举报

发表于 2010-8-12 14:21:43 | 显示全部楼层 来自 湖北武汉
支持一下,希望MARC版块可以火起来!
回复 不支持

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 10:36 , Processed in 0.060290 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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