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

[二次开发] 优化程序二次开发中差值问题请教

[复制链接]
发表于 2011-4-28 09:46:13 | 显示全部楼层 |阅读模式 来自 大连理工大学
不知道有没有人遇到过二次开发中求差值或者一阶导数的问题,求高手指点
发表于 2011-4-29 23:48:48 | 显示全部楼层 来自 陕西西安
Simdroid开发平台
lz,差值直接相减即可,一阶导数?难道你输入的是一个偏微分方程?
回复 不支持

使用道具 举报

 楼主| 发表于 2011-5-2 15:58:00 | 显示全部楼层 来自 大连理工大学
是这样的,主要目的是求一阶导数,但是我的因变量可以变化,但是整个函数是ansys分析中提取出来的,也就是说要对整个结构可能要自动再分析。这样我就不知道在二次开发上怎么弄了,求高人指点
回复 不支持

使用道具 举报

发表于 2011-6-14 18:52:47 | 显示全部楼层 来自 大连理工大学
本帖最后由 cocoon 于 2011-6-14 18:58 编辑

楼主需要使用外部程序循环调用Ansys,修改自变量,提取Ansys分析结果,然后使用差分方法计算导数。
简要流程:
  1.自变量保存在一个参数文件中,
  2.启动Ansys,Ansys读取参数文件,分析后,将结果保存在结果文件中。
  3.解析结果文件,
  4.修改参数文件,
2,3,4 步循环,
你可以
1)使用VC等编写程序调用Ansys,然后从Ansys分析结果中提取函数值,然后从Ansys分析结果中提取函数值
2)使用VB, Matlab,iSight,SiPESC.OPT等编写脚本程序调用Ansys,然后从Ansys分析结果中提取函数值
第一类方法比较麻烦,第二类方法相对而言较简单一些,省去了编译的痛苦。
我这里有 SiPESC.OPT, 可以免费使用。SiPESC.OPT使用JavaScript脚本语言,提供了启动Ansys分析程序,文本文件解析等功能。
下面是使用启动Ansys分析程序脚本程序

  1. //
  2. // 启动Ansys
  3. //

  4. var programe = "D:/Ansys10/v100/Ansys/bin/intel/Ansys100.exe"

  5. var arguments =new Array( "-b", "-i" ,"F:/bridge_Ansys/xg_full.txt", "-o", "result.txt" );


  6. process = new Process;

  7. process.setWorkingDirectory("f:/bridge_Ansys/result");

  8. process.execute( programe  );
复制代码
下面是使用启动Ansys编写参数文件的脚本程序

  1. // 生成一个名为parameterFile的FILE对象  
  2. parameterFile = new FILE;

  3. //  设置文件名为 F:/bridge_Ansys/parameter.txt
  4. parameterFile.setFileName( "F:/bridge_Ansys/parameter.txt" );

  5. //以模式2打开文件,
  6. state = parameterFile.open(2);
  7. // 如果返回值为false,则输出警告信息。
  8. if( !state )
  9. {
  10.         print("open result file failed.");
  11. }

  12. var R = 1;
  13. var H = 1;

  14. //  向文件中写入变量R 以及一个换行符\n
  15. parameterFile.write( R + "\n" );

  16. //  向文件中写入变量H 以及一个换行符\n
  17. parameterFile.write( H + "\n" );

  18. //将缓冲池中的数据写入文件中。
  19. parameterFile.flush();

  20. //关闭文件result
  21. parameterFile.close();


复制代码
下面是使用启动Ansys解析结果文件的脚本程序

  1. // 文件名
  2. var parameterFilePath = "F:/bridge_Ansys/result.txt";

  3. // 生成一个名为fooParser的FileParser对象
  4. var fooParser = new FileParser;

  5. //  指定文件名,并尝试打开文件。
  6. fooParser.open( parameterFilePath );


  7. //   第一行
  8. var line = fooParser.readLine();
  9. var V = parseFloat(line);

  10. //   第二行
  11. line = fooParser.readLine();
  12. var V = parseFloat(line);

  13. fooParser.close();
复制代码
可以参考
http://forum.simwe.com/thread-976523-1-1.html
回复 不支持

使用道具 举报

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

本版积分规则

Simapps系列直播

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

GMT+8, 2024-11-1 07:55 , Processed in 0.039263 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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