leovikkieleo 发表于 2014-2-22 11:02:38

求教通过matlab能不能调用Adina进行循环计算

各位坛友,最近在做一个有关参数的优化问题,由于本人对matlab和adina比较熟悉,所以想通过matlab调用adina进行模型计算,再通过循环计算结果修正特定的一些参数。我在网上看到matlab可以实现对ansys和abaqus的调用,所以向咨询一下各位大侠,调用adina能否实现。在此先谢过了

leovikkieleo 发表于 2014-2-23 11:16:34

自己顶一下,这个问题是可以实现的,利用matlab中的system语句,如下:system('C:\ADINA\bin\adina.exe -b -i C:\Users\dell\Desktop\adina\1.dat -o C:\Users\dell\Desktop\adina\1.txt'); 其中'C:\ADINA\bin\adina.exe 是你安装adina的路径,但切记最好路径中不要有空格,有的话重装一下也容易。C:\Users\dell\Desktop\adina\1.dat 是提前通过前处理生成的计算文件,同样路径中不要有空格。后面正常来说应该是你计算生成的结果文件,但是在试验中基本没啥用处,具体还有待研究。目前,仅仅实现了调用,循环优化计算还在进行。希望坛友们多多赐教。

狼跃冲顶 发表于 2014-2-23 23:03:39

很不错,照这思路
fortran应该也可以实现

leovikkieleo 发表于 2014-2-24 15:46:18

狼跃冲顶 发表于 2014-2-23 23:03
很不错,照这思路
fortran应该也可以实现

是的,fortran和c语言在ansys和abaqus上好像已经可以实现了,相信adina也可以的,不过还是matlab用的比较熟悉一些。:lol

武汉游侠 发表于 2014-2-28 09:48:00

大家都研究的很深入嘛,这块我已经生疏了。

nwcwww 发表于 2014-2-28 22:19:27

本帖最后由 nwcwww 于 2014-2-28 22:23 编辑

leovikkieleo 发表于 2014-2-23 11:16
自己顶一下,这个问题是可以实现的,利用matlab中的system语句,如下:system('C:\ADINA\bin\adina.exe -b...
这个问题先前我在游侠的群里回答过你了吧。核心是matlab里的system函数。

1. 运行adina的aui.exe,读取.in文件生成模型;
2. 运行solver(如adina.exe),读取.dat文件进行计算;
3. 再次运行aui.exe,读取.plo来输出结果;
4. 把结果文件导入matlab,进行处理;
5. 根据你的需要修改.in文件,准备再次提交。

如果你有比较明确的优化目标,这个过程一般是可以自动执行的。
当然了,你也可以跳过.in,直接就.dat进行修改。这样的话也可以越过第一步。

武汉游侠 发表于 2014-3-1 22:40:27

都是牛人!
编程没精力搞,不参与你们的讨论。

leovikkieleo 发表于 2014-3-4 21:19:16

nwcwww 发表于 2014-2-28 22:19
这个问题先前我在游侠的群里回答过你了吧。核心是matlab里的system函数。

1. 运行adina的aui.exe,读取.i ...

几天没上论坛,原来是版主在群里相助,这里先谢过了。还有一个问题,在第3步中对于计算结果的提取是手动打开结果进行提取吗?我的想法是在matlab里面进行循环优化并循环调用adina计算,即根据计算结果优化相关参数,再通过读取dat文件并进行修改,随后调用adina对修改后的dat文件进行计算后,再根据结果进行参数优化。那么这其中如果要自动读取并提取计算结果能否实现呢?需要打开那个格式的结果文件呢?请版主多多指教

leovikkieleo 发表于 2014-3-4 21:28:18

武汉游侠 发表于 2014-3-1 22:40
都是牛人!
编程没精力搞,不参与你们的讨论。

欢迎版主多来小贴逛逛,多多指导啊!:lol

武汉游侠 发表于 2014-3-8 12:33:57

leovikkieleo 发表于 2014-3-4 21:19
几天没上论坛,原来是版主在群里相助,这里先谢过了。还有一个问题,在第3步中对于计算结果的提取是手动 ...

在第3步中对于计算结果的提取是手动打开结果进行提取吗?
后处理提取结果也有相应的plo的命令流的。

需要打开那个格式的结果文件呢?
后处理的格式是por的结果文件。

武汉游侠 发表于 2014-3-8 12:34:34

看看primer里面in是前处理的命令流,plo是后处理的命令流,他们之间你可以考虑用matlab结合起来。

nwcwww 发表于 2014-3-11 21:08:19

和游侠说的一样,命令流写成.plo文件,用system来运行aui.exe做后处理。

武汉游侠 发表于 2014-3-11 21:11:18

nwcwww 发表于 2014-3-11 21:08
和游侠说的一样,命令流写成.plo文件,用system来运行aui.exe做后处理。

海龟都浮出水面了啊~~~

leovikkieleo 发表于 2014-3-16 14:11:49

感谢各位版主和大神的指教,在研究上又给了我很大的启发。我现在主要是利用前处理的dat文件和后处理的out文件进行处理,通过matlab将两个文件打开并分别根据需要进行修改和数据提取,再进行循环优化计算。目前还没有完全成功,目前主要是在dat文件的修改上遇到了点小问题,没有达到预期效果,希望能够尽快解决。再次谢谢大家的热心援助:lol

leovikkieleo 发表于 2014-3-17 11:40:41

nwcwww 发表于 2014-3-11 21:08
和游侠说的一样,命令流写成.plo文件,用system来运行aui.exe做后处理。

版主,还有一个小问题想跟您请教一下,不知道您以前做循环调用时是不是修改的dat文件。我现在再做一个输入不同荷载条件的动力模型,先设定一个初始荷载参数加到模型中进行计算,提取输出值与目标输出值进行对比,如果误差较大就再根据相应的优化算法进行优化给一个新的荷载参数值,再进行动力计算直到与目标输出值误差满足条件。那在这个过程中需要每次根据优化的荷载参数修改dat文件中相应的值,我现在遇到的问题是通过matlab对dat文件进行自动修正时(部分文件内容图图所示),需要首先把优化的参数存为一个变量,但是存为变量之后不知道如何将其替换dat文件中相应的数据(图中为-5.0000000),自己也试了一些方法但是都为没能成功。所以在此请教版主之前处理时有没有修改过dat文件中的数据,使用的是什么办法。由于可能需要循环上百次进行优化计算,所以不想每次都得到优化值后都手动修改dat文件,希望版主能够不吝赐教,在此谢过了。

nwcwww 发表于 2014-3-17 22:52:11

不明白难点何在。这应该就是matlab里基础的文件读写操作。

leovikkieleo 发表于 2014-3-18 21:54:25

nwcwww 发表于 2014-3-17 22:52
不明白难点何在。这应该就是matlab里基础的文件读写操作。

呵呵是的 不过昨天已经解决了,现在正在调试程序。多谢楼主指点:lol

leovikkieleo 发表于 2014-3-18 22:11:59

打错了是多谢版主指点
页: [1]
查看完整版本: 求教通过matlab能不能调用Adina进行循环计算