应用C语言编写adams用户自定义函数导入到adams中
function builder 的整个过程
1,当前使用软件adams2005,visual c++ v6,Compaq visual fortran6 (这里最好不要用intel visual fortran .当所用的adams为07版本时可以用intel visual fortran.其时需要fortran的目的是获得其中的*.dll文件所需的dll文件都放在附件里.)
2,编写源程序,修改ADAMS安装目录下…/aview/user subs中vc_init_usr.c模板文件中的C 源代码或直接编写能够实现特定功能的C程序(注意严格按照模板格式编写)。
下面这个例子是我从网上找到的关于如何利用C程序产生正态分布的特殊随机数。假设源程序保存为myvcfun.c
#include"mdi_c.h"
#include"math.h"
#define M 8388608
#define T 2045
double MYRAND( double l )
{
double x,r,k,y,x1,x0;
int j,i;
x0=1;
x1=1;
for(j=0;j { k=0; for( i=0;i<12;i++) { x=fmod(T*x0,M); r=x/M; x0=x; k=r+k; } y=fmod(T*x1,M); x1=y; x0=x1; } return(k-6); } void vc_initialize_user() { vc_function_add("MYRAND", (FUNCTION)MYRAND, fn_R_R,1,0); } 注意必须保存为 c 文件,将这个C文件与…/aview/usersubs中的mdi_c.h 的头文件放在一起用VC打开myvcfun.c点击compile进行编绎,在debug 文件夹中会产生myvcfun.obj文件。 3,环境变量的设置 将变量值改为D:\Program Files\Microsoft Visual Studio\VC98\Bin;D:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin(具体路径按照visual studio的安装路径) 4,生成dll文件 首先将附件中的所有dll文件全部复制到MSC.adams\2005\win32中去,然后再打开MSC.adams\2005\common文件夹中的mdi.bat文件。过程如下图。 输入 cr-user 回车键 输入myvcfun.obj两次点击回车键 再输入 myvcfun.dll 点击回车键 此时myvcfun.dll文件已经出现在MSC.adams\2005\common文件夹中。 如果dos 窗口出现一闪之后就消失的情况,右击以记事本打开它,在最后一行加上“pause”然后保存。 5,将dll文件导入到function builder 还是打开mdi.bat文件 输入aview后回车 输入ru-user点击回车 输入I 点击回车 输入myvcfun.dll点击回车,再回车一下 此时自动打开aview 窗口 在function builder 中会发现多了一个函数 6,总结 子程序是可以导进去了,但这个程序毕竟不是自己编的,对adams和c语言之间的联系还不怎么了解。还不能把程序与具体的工程应用联系起来,再加上本人对c语言知识的缺乏,要想熟练地掌握用户子程序功能还需要一段时间。