2D求解中边界条件设置请教
本帖最后由 flyingmind 于 2009-4-1 19:57 编辑我需要利用循环程序自行设置内部场域分布、边界条件设置、求解等过程,但是由于外边界编号也会随之改变,所以无法实现循环编程。请问有没有固定边界编号的方法,或是其他解决办法?
这个问题已经困惑很久了,http://forums.caenet.cn/editor/images/smilies/default/9.gif否则课题无法继续 啊!
请高手指教!谢谢 只要你能将场域分布设置为一个数值,边界条件也设置为固定值,将值作为变量,然后在循环前修改变量,重新求解即可
这和你修改边界编号可能是不同的思路,可以考虑一下 楼上的意思是将场域分布,和边界条件都看作变量吗?
因为我用的是一个圆形场域,16个电极均匀分布于场域周围,分别给相邻电极电流激励,相邻电压测量,循环16次激励测量为一组数据;我需要设置在场域内变换物体分布(包括物体的位置、大小),以求得不同的解。
楼上的能否说得更具体些?
谢谢啦! 物体的大小也变?大小变的话,模型也要重新建了。如果物体大小不变,只是每个循环内对相邻电极电流激励的话,可以给16个电极都各自加个激励,比如x1....x16,然后在每个循环n内,依次使xn,x_n+1的值为你想要的值,其余激励值为0,依次循环就可以了,当然需要将模型导出为.m文件,然后外加循环,最好在matlab中做 楼上说,将场域分布设置为一个数值,边界条件也设置为固定值,将值作为变量,然后在循环前修改变量,当内部物体位置改变时,不太清楚怎么具体实现的,能否具体说明一下。
不太明白,谢谢啦! 你先看看matlab与comsol的联合的例子吧
链接如下:
http://bbs.simol.cn/thread-17547-1-1.html 我一直用的都是matlab循环程序,只是一旦场域内部物体位置改变,边界编号也改变了,导致程序无法顺利进行。因为需要实现物体动态变化,所以想请教有没有什么解决方案?
谢谢哦! 本帖最后由 flyingmind 于 2009-4-8 11:49 编辑
你是要考虑物体的运动效应么?瞬态分析?
最好把你的问题描述清楚,配上图说明
现在信息根本不对称,我说我的,你说你的
对解决问题没有任何帮助
楼主不觉得是这样么?
对问题清楚的描述,虽然可能你当时多花了点时间,但得到好处确实很多的
要知道其他人并不是都对你的问题很清楚,如果你自己把问题都不能很好的描述,那更别期望别人能给你什么帮助了
毕竟别人只能给你一个思路,我觉得我的思路应该是比较清楚了,也有人提了ALE运动网格的解决方法
但这些都有相应的应用背景,虽然大家一股脑把解决思路都提出,你不还是一头雾水么? 本帖最后由 fwr0605 于 2009-4-8 17:35 编辑
下图是场域分布图,场域周围均匀分布16个电极,内部有一个圆形物体做自由运动:
其激励测量激励如下图所示,相邻电极电流激励相邻电极电压测量,即1-2电极电流激励(1电极输入电流,2电极接地,其他电极浮空),获取2-3,3-4,...,14-15,15-16,16-1电极对电压差,如下图所示。依次循环,2-3激励,...,15-16,16-1激励。
由于内部圆形物体位置,或者半径大小改变,都会导致边界编号变化,循环出现问题。下面是我用的matlab循环部分程序:
% Geometry
% Import CAD data
garr = geomimport('F:\Program\Comsol_Pro\2009.4.1kalman\model1.mphbin');
=deal(garr{:});
g3=rotate(g3,0.5235987755982988,);%%%%%%%%%%%%%%%%%%%%%%物体旋转角度任意设定
% Analyzed geometry
clear s
s.objs={g1,g2,g3};
s.name={'CO1','CO2','CO3'};
s.tags={'g1','g2','g3'};
fem.draw=struct('s',s);
fem.geom=geomcsg(fem);
% Initialize mesh
fem.mesh=meshinit(fem, ...
'hauto',5);
% (Default values are not included)
A=;%%%%16个电极编号 %%%%变换物体位置时会发生变化????
for i=1:16 %%%%%%%%%%%% 设置16次循环激励 %%%%%%%%%%%%%
L=16; % The number of electrodes.%%%%%%%%%%%%%%%%%%%%%%%%%%%
=Currenteit(L,'adj'); %%%%%%%%% 调用激励模式子程序 %%%%%%%%%%%%%%%%%%
T(find(T==1))=3;%%%%%%%%% 设置电极电流激励 %%%%%%%%%%%%%5
T(find(T==-1))=4;%%%%%%%% 设置电极接地 %%%%%%%%
T(find(T==0))=1;%%%%%%%%% 设置电极浮空 %%%%%%%%%%55
clear appl
appl.mode.class = 'EmConductiveMediaDC';
appl.module = 'ACDC';
appl.assignsuffix = '_emdc';
clear bnd
bnd.Jn = {0,0,1,0};
bnd.type = {'nJ0','cont','nJ','V0'};
bnd.ind = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, ... %%%%变换物体位置时,有些边界变为内部边界或内部变为外部,导致设置不成立?????
1,1,1,1,2,1,1,1,2,2,1,1,1,2,1,2,1,1,1,2,1,2,1,1,1,2,1,2,1,1,2,1,2,1,1, ...
1,2,1,2,1,1,1,2,3,2,1,1,1,2,4];
bnd.ind(A(:))=T(:,i); %%%%%%设置电极激励条件%%%%%%%%%
appl.bnd = bnd;
clear equ
equ.sigma = {5.99e7,80,1};
equ.ind = ;
appl.equ = equ;
fem.appl{1} = appl;
fem.frame = {'ref'};
fem.border = 1;
clear units;
units.basesystem = 'SI';
fem.units = units;
% ODE Settings
clear ode
clear units;
units.basesystem = 'SI';
ode.units = units;
fem.ode=ode;
% Multiphysics
fem=multiphysics(fem);
% Extend mesh
fem.xmesh=meshextend(fem);
% Solve problem
fem.sol=femstatic(fem, ...
'solcomp',{'V'}, ...
'outcomp',{'V'});
% Save current fem structure for restart purposes
fem0=fem;
for j=1:16%%%%%%%%%%%%%%%%%导出电极电压值%%%%%%%%%%%%%%%%%%%5
I1(i,j)=postint(fem,'V', ... %potenital on each electrode
'unit','V*m', ...
'dl',, ...
'edim',1);
end
I1(i,17)=postint(fem,'V', ...
'unit','V*m', ...
'dl',, ...
'edim',1);
end
不知问题交代清楚了吗?
请多多指教! 按照你的说法,是想做瞬态分析?是想研究当电极激励在不断循环过程中,中间物体的运动情况?但你是用循环实现,中间不涉及任何时间,似乎是静态分析?
你好像是改变模型的结构来做循环的?
其实你可以用ALE方法,也就是在multiphysics下面的deform mesh,下有个moving mesh(ALE),添加这个以后,里面的物体你可以设置为自由运动,周围电极设置为静止,这样周围电极的边界条件编号就不会变了 谢谢版主的答复,可以前没有用过ALE,不知道怎么具体设置,有没有什么参考资料可以借鉴一下啊? comsol里有例子的还有比较详尽的例子的相关文档的 LZ 用的哪个版本? 回复 9# fwr0605
你好,我最近在做这个,但是新手,可以请教你吗?我的QQ627205677,或者你把QQ告诉我加你也行,非常感谢
页:
[1]