[讨论贴][已解决]Procast 中user function使用问题
本帖最后由 andrew_zwi 于 2013-3-2 15:42 编辑说在前面:本帖本意是希望通过向大家求教和讨论关于procast中userfunction部分内容 并给以后的网友一点启示
基本情况:1.使用Procast 2008 破解版
2.系统: WIN 7 64位系统
3.编译器为 Microsoft visual studio 2008
遇到的问题:温度场中一个传热边界的温度与y坐标有关,需要使用procastuserfunction来设置
以下是解决的方案
**** Hidden Message *****
我在百度贴吧里找到的帖子 出处已经不知道了 但我觉着写的挺好的 希望对大家有用 我试了 可是对我确没用的!!!:L
关于ProCAST的C++编译器(VC++2005)
1在ProCAST2008的bin目录中,有一个procastRun.bat。程序运行时,这个文件会被复制到当前实例,并重命名为prefix_procastRun.bat。两个文件内容完全相同。后者拷贝过来后会被执行。
2在prefix_procastRun.bat的第10行,有一个对VC\vcvarsall.bat的调用。
(VC++6.0版本,有的是vsvars32.bat)
vcvarsall.bat中,有
:x86
if not exist "%~dp0bin\vcvars32.bat" goto missing
call "%~dp0bin\vcvars32.bat"
goto :eof
实际执行了vcvars32.bat
vcvars32.bat的内容VS80COMNTOOLS%vsvars32.bat"
即执行了Microsoft Visual Studio 8\Common7\Tools\ vsvars32.bat
也就是最终执行的还是vsvars32.bat。这是一个配置VC++环境变量的bat
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
按照网上的配置方法
1、安装相关编译器
VC++ express2008官方免费版(其他版本也可以)
2、设置环境变量
在Path中添加(最好放在最前面) X:\Program Files\Microsoft Visual Studio 8\VC\bin
添加LIB变量,X:\Program Files\Microsoft Visual Studio 8\VC\lib
添加INCLUDE变量,X:\Program Files\Microsoft Visual Studio 8\VC\include
3、修复VC的bug。
复制X:\Program Files\Microsoft Visual Studio 8\Common7\IDE\mspdb80.dll到X:\Program Files\Microsoft Visual Studio 8\VC\bin\
一直不能生成libprocastdll.dll。怀疑是vsvars32.bat没有被执行,后来手动运行vsvars32.bat。在用user function的过程中生成了libprocastdll.dll。但却出现了
Feature procast_user_func not authorized by license file的错误。
百度一下,别人也有遇到过,反过去查破解的授权文件license.dat
里面有procast_user_funct,但确实没有procast_user_func,仍然没有解决Procast2008破解版使用user function的问题,准备转而使用ProCAST2009.0+visual-Environment5.0,据说可以用user function
在安装ProCAST2009.0+visual-Environment5.0的过程中,先安装了Visual-Environment5.0。这样在安装Procast2009时就检测到了Visual-Environment5.0,也没有再重复安装Flex manager。但这两个东西有一样的pam_lmd.lic。按照说明是把Visual-Environment5.0的pam_lmd.lic替换成Procast2009的pam_lmd.lic,然后Re-read一下,ProCAST2009可以启动了。(不需要再为ProCAST2009配置Service,否则出错,可能它们公用一个Service才对)
问题最终解决:
将ProCAST2009的bin文件夹下procastRun.bat修改
@echo off
set prefix=%1
echo %prefix%
REM Erase old solution
DEL libprocast.dll
REM Init tools for dynamic library compilation
REM : %2 = machine type : x64 or x86
@call"C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat" %2
我安装的是VC++2005 express,只有这样改才可以(改成运行vsvarsall.bat,还是会找不到vsvars32.bat)
ProCAST安装在云端,ghost重装系统需修改计算机名,否则运行用户函数时会提示授权出错
本帖最后由 andrew_zwi 于 2013-3-2 15:17 编辑
我编辑的程序先贴出来 同大家共享
#include <stdio.h>
#include <stdlib.h>
#define real double
#ifdef WIN32
#define EXPORT _declspec(dllexport)
EXPORT real func_texternal(char*, int, real, real, real, real, real, real, int);
#else
real func_texternal(char*, int, real, real, real, real, real, real, int);
#endif
extern real usertemp1(int);
extern real userfs1(int);
extern real uservx1(int);
extern real uservy1(int);
extern real uservz1(int);
extern int nodNum (real,real,real,int,real*,real*,real* );
/*
* ambient temperature (applied on external surfaces)
*/
real func_texternal(
charprefix[], /* case name*/
int dimension, /* 2 = 2D ; 3 = 3D */
realtemp, /* current temperature */
realfs, /* current fraction of solid */
realtime, /* current time */
realx_coor, /* local coordinates: x */
realy_coor, /* local coordinates: y */
realz_coor, /* local coordinates: z */
int numBC) /* boundary condition ID number */
{
/* ------------- Do not change anything above this line ------------- *
* ------------- Program your function below this line------------- */
/*本程序的默认单位是m 以下为本人编辑部分*/
real Temp;
/*边界温度*/
y_interface=0.01*time;
if (y_coor >y_interface)
Temp = 1184;
else
Temp = 40;
return Temp;
}
本楼 属灌水发表一些个人看法
1.接触Procast 半年多了总算是有点起色 但是还是很多不同
期间看了很多帖子 其中 沙漠浪子的帖子 收获最大 在这里谢谢了!
2.其次就是感觉做模拟的就像一句俗话说的
“有些事已经很努力了 可是结果却是个屁”
路上很坎坷 同志多努力啊!!! 我也遇到这个问题 正好遇到此问题 借鉴。。 通过我的实际经历,user fuction 不能使用如用上述方法后还是不行,那需要设置vs的sdks路径 探讨学习,交流讨论 学习下啊 应该很精彩 您好,我按照帖子修改了路径和环境变量等,我的VC是6.0版本的,但是还是没有libprocastdll.dll,请问是什么情况? mumu914 发表于 2013-4-12 00:09 static/image/common/back.gif
您好,我按照帖子修改了路径和环境变量等,我的VC是6.0版本的,但是还是没有libprocastdll.dll,请问是什么 ...
我用的visual studio 2012的 之前用vc的时候也出现不了libpraocastdll.dll文件我不知道原因 你可以试一试用高级版本。 小熊爱念 发表于 2013-3-29 18:57 static/image/common/back.gif
通过我的实际经历,user fuction 不能使用如用上述方法后还是不行,那需要设置vs的sdks路径 ...
哦 你可以具体的说一说 我并不是很懂你所表达的意思。 学习一下 andrew_zwi 发表于 2013-6-3 15:48 static/image/common/back.gif
哦 你可以具体的说一说 我并不是很懂你所表达的意思。
Try1)查了一下环境变量的库路径(LIB),Program Files\Microsoft Visual Studio 9.0\VC\lib是在的;查lib目录,果然找不到kernel32.lib文件。
Try2)看到我的SDK路径还是vs2005时候的路径:Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib,已经无效了,而Visual Studio 9.0\VC下没有PlatformSDK目录。
Try3)百度说,vs2008的SDK路径应该是这个:C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib,查了一下,C盘果然有这个瑙鲁。(注意:无论安装目录在哪里,都在C盘)
Try4)在环境变量LIB添加上述SDK目录,cl,成功!
按照上面设置有时可以解决vs2008 下userfaction 不能运行问题 学习学习! 小熊爱念 发表于 2013-8-12 15:59 static/image/common/back.gif
Try1)查了一下环境变量的库路径(LIB),Program Files\Microsoft Visual Studio 9.0\VC\lib是在的;查l ...
按照你说的做,调试成功!非常感谢! 没有用过 也遇到了这个问题 peakwind 发表于 2013-8-30 15:10 static/image/common/back.gif
按照你说的做,调试成功!非常感谢!
不客气