python调用comsol (2)

python调用comsol (2)

用Python调用comsol执行参数化分析的基本流程,大致可以先用comsol的图形界面建立好某个参数下的结构和设置完成一次模拟,保存文件为xx.mph。然后调用mph库,load刚才保存的文件。mph这个库相当于把comsol的java接口做一个封装,它本身提供的接口非常有限,因此实际操作一般还是直接调用里面的java模型。

1
2
3
4
5
import mph

client = mph.start(cores=1)
model = client.load('Template.mph')
java_model = model.java

由于comsol这部分手册写的令人难以理解,所以实际操作一般就是用mph里提供的inspect方法来猜测一下应该怎么设置。比如下面这个是Template.mph的目录树,以Interpolation 1为例,前面长的名字Interpolation 1叫作Label,后面括号里的int1叫作Name,后面花括号里的int1叫作Tag,我们用接口调用comsol里面的对象时,是指定它的Tag。

比如我们想要调用comp1对象时,需要先确定comp1所属的类,然后用提供的类方法接口调用它,我们inspect一下java_model这个对象

1
mph.inspect(java_model)

结果是

我们发现里面有一个component方法,于是就可以通过

1
java_model.component('comp1')

这样的方法来获得comp1对象,有点类似python类中的property方法。methods方法是用来获取这些对象的,要更改对象的属性,比如想要更改插值函数int1的插值文件,可以inspect一下int1

1
mph.inspect(java_model.func('int1'))

发现它有一个叫filename的property,于是就可以用set方法来更改这个属性的值

1
java_model.func('int1').set('filename', 'newfilename')

其他大致的设置可以参考comsol用户手册以及inspect不断猜测进行设置..