MD ADAMS R3用户子程序使用相关问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
1. 系统软件要求
· MD ADAMS R3版本的ADMAS软件。最好直接安装在根目录下。
· 由于MD ADAMS R3版本在编译用户子程序时要求Intel Fortran Compiler 9.1或者Visual Studio 2005。这个可以从下面的步骤发现:
1) 开始->所有程序->MSC.Software->MD ADAMS R3->ADAMS Command
2) 打开后会出现下面的DOS界面
3) 在下面的光标处输入cr-u,回车,出现那个什么Debug mode行时,直接回车(我也不清楚这行是干什么的),就会看到列出来的编译器版本。
补充:其实这里安装Intel Fortran编译器,就是为了下面编译的时候用到起类库中的libifcoremd.lib、libmmd.lib、libifportmd.lib、libirc.lib这四个文件。前三个文件你会在MD ADAMS的安装文件中的win32文件夹中发现已经存在,但是注意的是这三个文件还是需要用上述的文件替换,因为我使用的系统式XP,如果不替换,在编译的时候会提示说和目标机器不对应。
如果不把这四个文件从Intel Fortran的安装文件下(C:\Program Files\Intel\Compiler\11.0\072\fortran\lib\ia32,我的是装在C盘下)拷贝到MD ADAMS得win32文件夹中,编译的时候也会提示说找不到这些文件,即使你在环境变量的PATH中已经添加了Intel Fortran的安装路径。
我觉得安装Intel Fortran编译器的实质也就是为了得到这四个文件,所以把这四个文件拷贝到MD ADAMS的win32中就可以了。
2. 实例—在一个模型中施加一个VFORCE
1) 用记事本创建一个文件,保存为VForce.c(必须是.c扩展名,不能使.cpp。这个我试过了,如果是.cpp扩展名,编译的时候会出错)。内容如下:
#define port2pcnt
#include "userPortName.h"
#include "utilCcallable.h"
VOID_FUNCTION VFOSUB(int *id,REAL *time,REAL *par,int *nPar,BOOL *dflag,BOOL *iflag,REAL *value)
{
if(time[0]<1.0) {value[0]=id[0];return;}
if(time[0]<2.0) {value[0]=time[0];return;}
if(time[0]<3.0) {value[0]=nPar[0];return;}
if(time[0]<4.0) {value[0]=par[0];return;}
if(time[0]<5.0) {value[0]=par[1];return;}
if(time[0]<6.0) {value[0]=par[2];return;}
value[0]=3.215478;return;
}
补充:这里需要注意的是要在开头定义#define port2pcnt,并要加入头文件#include "userPortName.h"、#include "utilCcallable.h"
*********************************************************************************************
程序编写时首先需要定义两个头文件userPortName.h和utilCcallable.h,要使得头文件userPortName.h顺利运行还需要定义编译标记,根据计算机所应用的操作系统平台不同和软件的版本不同编译标记也不同,对应关系见
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
1。
表1 平台与编译标记对应关系
平台
定义变量
编译标记
IRIX
#define port2sgi
-Port2sgi
Sun
#define port2sun
-Port2sun
HP
#define port2hp700
-Port2hp700
Cray
#define port2cray
-Port2cray
Windows
#define port2pcnt
-Port2pcnt
IBM-RS
#define port2ibmrs
-Port2ibmrs
由表1可见,在Windows系统中编译标记一般定义为Dport2pcnt。综上,程序开头定义形式为:
#define port2pcnt //定义编译标记
#include "userPortName.h" //定义头文件
#include "utilCcallable.h"
*号间的说明摘自Simwe论坛上的一位网友的帖子,具体是哪位网友我记不清了,实在不好意思。
*********************************************************************************************
2) 从上面的叙述可以看出还需要userPortName.h和utilCcallable.h这两个文件。这两个文件在
D:\MSC.Software\MD_Adams\R3\solver\samples中(我的ADAMS是安装在D盘下)
3) 将VForce.c、userPortName.h和utilCcallable.h这三个文件一起拷贝到ADAMS的工作目录(就是ADAMs启动的时候生成aview.log文件的那个目录)下,然后打开ADAMS-Command。
4) 输入cr-u,回车。依次如下图输入:
5) 回车后就会看到下面的情况:
如果出现这样的提示说明就没有错,在工作目录下就会生成下面的文件:
其中VForce.dll就是我们需要的。
补充:如果想看清楚生成的dll的过程,需要修改一下mdi.bat文件。这个文件在D:\MSC.Software\MD_Adams\R3\common下,用记事本打开mdi.bat文件,其他的代码都不能动,直接在最后一行加入pause,然后保存,再编译的时候Dos窗口就不会一闪而过了。
6) 将VForce.dll加载到ADAMS中
打开ADAMS-Commad窗口,输入aview,回车;然后输入ru-u,回车;再输入i,回车;再输入VForce.dll,回车;直接回车;就会打开aview窗口。
新建一个model,并施加一个VFORCE,如下:
修改这个VFORCE,如下:
仿真结果如下:
至此,实例结束。
我就是按照这样的步骤做的,并且成功了,在这里把这点小小的经验和大家分享一下,希望能够抛砖引玉了,呵呵。
关于用户子程序我也是刚开始学,有很多地方也不是很明白,望各位大虾多多指点!