最近在使用comsol&MATLAB时候想要尝试通过类似于tutorials里,案例“pseudoperiodicity llmatlab”那样用计算区域的边界条件替换来计算更大的计算区域,案例中计算的是一个在圆形管道中流动的流体受到底部加热的情况,计算总区域有6m长,为了提高效率,使用了一个1m长的计算区域,在计算完成后将出口条件赋值给入口条件,通过这样的方式计算下一段,一直计算到最后一段,计算的变量是流体的温度,速度使用的是管内均匀流动。我想使用类似的方法来计算流动,想通对过一段较短的计算区域反复计算来求出整个空间分布,但是在边界条件传递的时候会有问题,为了简单,我使用圆形流道,壁面光滑无滑移,法相速度入口边界,压力出口条件,计算可以进行但是在MATLAB中想要通过边界条件传递来反复计算时出现问题,报错提示是我给新的入口边界赋值是出现错误,我给入口边界赋值的语句是
inlet1=model.physics('spf').feature('inlet1');
inlet1.set('U0in',3,'inletVelo(x,y)');
其中inletVelo(x,y)是我仿照案例中对出口温度数据进行提取时用的插值函数
案例中的语句是这样的
%添加一个名为inletTemp的插值函数。通过读取后面建立的包含出口边界温度分布的文本文件。
int1=model.func.create('int1','Interpolation');
int1.model('comp1');
int1.set('source','file');
filename=fullfile(tempdir,'pp_data.txt');
int1.set('filename',filename);
int1.set('nargs','2');
model.func('int1').setIndex('funcs','inletTemp',0,0);
%%
%为inlteTemp(x,y)插值函数设置入口边界温度
temp1=model.physics('ht').feature('temp1');
temp1.set('T0',1,'inletTemp(y,z)');
%%
我仿照案例写的插值函数定义和使用是这样的
%添加一个名为inletVelo的插值函数。通过读取后面建立的包含出口边界速度分布的文本文件。
int1=model.func.creat('int1','Interpolation');
int1.model('comp1');
int1.set('source','file');
filename=fullfile(tempdir,'Untitled1_datav.txt');
int1.set('filename',filename);
int1.set('nargs','2');
model.func('int1').setIndex('funcs','inletVelo',0,0);
%%
%%
%为inlteVelo(x,y)插值函数设置入口边界速度
inlet1=model.physics('spf').feature('inlet1');
inlet1.set('U0in',3,'inletVelo(x,y)');
在运行时这里报错
提示这句话出错,还有A scalar value expected
我在考虑是不是要被赋值的变量应该被赋予一个标量而不是这样的一个分布,如果是这样那我想用那种方法进行计算该怎么做呢,出口边界条件或者进口条件该选哪一种
这个问题也搞了有几天了一直没搞出来,希望有会的朋友能帮帮忙 |