-
Filter by Topic
Most Popular
All Topics
- List all discussions
export current plot/particle tracing with comsol w/ matlab
|
Thread index | Previous thread | Next thread | Start a new discussion |
March 8, 2010 11:32am UTC
export current plot/particle tracing with comsol w/ matlab
Hi,
I'm working on polymer flow, through a canal, and I need to determine the temperature function of time, for some particles in the flow. But I don't know how to do that through Matlab.
I'm using the particle tracing plot of postprocessing of COMSOL, and more precisely the function "color expression" where I write "partt", it represents the time. I export the datas with "file/export/current plot + write script etc.".
I repeat the same operation writing "T" (for temperature) instead of partt in the color expression of particle tracing plot, and then export datas through the same way (file/export/...).
The problem is that I need to do this for a program which can't be runned with Comsol, but only with Matlab with comsol because of some loops in it.
I've no problem to do the particle tracing plot with matlab (using postplot), but I really don't know how to obtain the same datas than with "File/export current plot, ...".
I've been trying with postcrossplot (+ outtype with postdata) but didn't find how to call "partt"...
Does anyone have an idea ?
Thank you.
Reply | Reply with Quote | Send private message | Report Abuse
March 8, 2010 3:35pm UTC in response to Julien LAUNAY
Re: export current plot/particle tracing with comsol w/ matlab
I finally found the solution of my problem, maybe it could be useful for somebody.
Some codes seems to work with Comsol but not with Matlab. This is the one I use :
"VAR_PART=postplot(fem, ...
'outtype','postdataonly', ...
'partmasstype','massless', ...
'partstart',{[0.001],[eps]}, ...
'partcolordata','partt', ...
'partdata',{'u','v'}, ...
'partedgetol',0.001, ...
'parttvar','partt', ...
'partres',5, ...
'solnum','end', ...
'geom','off', ...
'axis',[-0.038658065092179075,0.08865806583723716,-0.005000000074505795,0.10500000156462193]);"
And the datas are contained in the workspace of Matlab, in VAR_PART, to access them, by example the time :
VAR_PART{1,1}.parttime
To plot the results, just change outtype in "postdata" or "handle".
Reply | Reply with Quote | Send private message | Report Abuse
March 8, 2010 4:31pm UTC in response to Julien LAUNAY
Re: export current plot/particle tracing with comsol w/ matlab
Hi man!
Listen I have a problem...I'm able to plot streamlines in COMSOL+Matlab but not pathlines. Here is my code (just a part of it):
A = {0.24, -0.015}; % Single streamline/pathline as test case
figure
h = postplot(fem,...
'parttvar','partt','parttstar','auto',...
'partstart',A,'outtype','postdata');
grid on
xlabel('x-coordinate');
ylabel('y-coordinate');
Can you tell me why doesn't work? Thanks in advance for that!
J
Reply | Reply with Quote | Send private message | Report Abuse
March 9, 2010 10:43am UTC in response to Jacopo Biasetti
Re: export current plot/particle tracing with comsol w/ matlab
Hi,
I'm not sure for your code, but using the one I post below, it seems to work, with something like that :
A = {0.24, -0.015};
figure
h=postplot(fem, ...
'outtype','postdata', ...
'partstart',A, ...
'parttstar','auto', ...
'partdata',{'u','v'}, ...
'parttvar','partt', ...
'geom','off');
grid on
xlabel('x-coordinate');
ylabel('y-coordinate');
You can change 'geom' in 'on' to see your geometry with the particle.
I think the problem was the line 'partdata'
Hope it will help you,
JL
Reply | Reply with Quote | Send private message | Report Abuse
March 9, 2010 5:13pm UTC in response to Julien LAUNAY
Re: export current plot/particle tracing with comsol w/ matlab
In my case partdata is giving error, I'm forced to use partvelvar. No idea why...
Reply | Reply with Quote | Send private message | Report Abuse
March 9, 2010 5:14pm UTC in response to Jacopo Biasetti
Re: export current plot/particle tracing with comsol w/ matlab
Forgot this...and doesn't work anyway!
Reply | Reply with Quote | Send private message | Report Abuse
November 16, 2010 3:50pm UTC in response to Julien LAUNAY
Re: export current plot/particle tracing with comsol w/ matlab
Hi
Thank you for your kindness. but i have some question and i hope that you could help me. I used your code
and i got the results. for example the x and y dimension was 9097. and i get the amount of x, y through
cc=get(fem.mesh,'p');x=cc(1,:);y=cc(2,:);
and the dimension was1049 and the results were different? which of these is true? and this x and y are the x and y of each node or they are something else.
also, when i solve my comsol problem in matlab, i have to insert some new variables. how can i plot this new variable in matlab (over my previous mesh).?
any answer would be appriciated
Reply | Reply with Quote | Send private message | Report Abuse
November 17, 2010 9:12am UTC in response to ??fatemeh sharifi
Re: export current plot/particle tracing with comsol w/ matlab
Hi
I'm not sure I've understood your question but, the x and y you're talking about are the positions of your mesh elements. All informations about your mesh can be accessed with the simple command:
fem.mesh
During a particle tracing, comsol calculate the succesives positions of a particle at each time in fonction of the velocity. All positions are independent of your previous Comsol mesh. And through the command you use, you can only deal with mesh elements.
For your other question, to plot new variables, you need to create your own mesh in matlab with the command meshgrid and griddata.
You can find help on matlab forums, or directly in matlab typing "help griddata"
Hope I've correctly answered your questions,
JL
Reply | Reply with Quote | Send private message | Report Abuse
November 17, 2010 2:35pm UTC in response to Julien LAUNAY
Re: export current plot/particle tracing with comsol w/ matlab
Dear LAUNAY,
Thank you very much for your attention. My domain is very complicated . how can i generate this complicated model in matlab? and i think (i'm not so sure) that i can't use the x , y (x and y data from fem.mesh) to generate my model in matlab, can i? ( if you know something please let me know)
so how can i generate this complecated model in matlab. I think there should be some command that i can use both previous comsol data and matlab data together. please tell me if you know sth about it.
Thank you very much in advance
With Best Regards,
Fatemeh Sharifi
Reply | Reply with Quote | Send private message | Report Abuse
November 17, 2010 4:28pm UTC in response to ??fatemeh sharifi
Re: export current plot/particle tracing with comsol w/ matlab
Hi Fatemeh
I have complicated geometries too, sometimes in 2D or 3D. I don't know if there are functions in Matlab to use your comsol mesh, directly.
I use to make a new grid, larger than the entire geometry in comsol, in 2D or 3D, with the command meshgrid, and griddata enables to interpolate the values from comsol in the right place in my matlab mesh.
I just need to impose in my matlab's mesh, NaN on the cells located outside my geometry, in order to have the perfect representation of it. I assume that it does represent really complicated programs but I did'nt find other ways.
But you're right, maybe there's a possibility of using the fem.mesh. Did you try to get X and Y positions of the different elements :
AA=get(fem.mesh,'p');
Xpos=AA(1,:);
Ypos=AA(2,:);
MESH=[Xpos' Ypos'];
for i=1:length(MYMESH)
MYMESH(:,3)=0;
end
X1=MYMESH(:,1);
Y1=MYMESH(:,2);
Z1=MYMESH(:,3);
plot3(Z1,X1,Y1);
I just typed that, never test it before but these commands seems to work with my programs... Maybe a start ?
Best regards,
JL
Reply | Reply with Quote | Send private message | Report Abuse
November 19, 2010 8:45am UTC in response to Julien LAUNAY
Re: export current plot/particle tracing with comsol w/ matlab
Dear LAUNAY,
Thank you very much. with this command that you gave me i just can see my domain (in very very bad shape with out any mesh) and i could'nt plot any countor of my new variables. how could you plot your new variables over your domain?
Thanks a lot.
With Best Regards,
Fatemeh Sharifi
Reply | Reply with Quote | Send private message | Report Abuse
November 19, 2010 1:19pm UTC in response to ??fatemeh sharifi
Re: export current plot/particle tracing with comsol w/ matlab
Hi Fatemeh
The rule to apply your datas on a new mesh is to create a new matlab mesh which must be regular. I mean that you have to create a rectangular mesh by the commands below :
with a vector X and a vector Y (coordinates of your particle track for example)
xi=linspace(min(X),max(X),100);
yi=linspace(min(Y),max(Y),100);
[XI,YI]=meshgrid(xi,yi);
These commands create a rectangular mesh of hundred coordinates in Y and X. Now, to apply your datas "DAT", depending of Xcoord and Ycoord, you can use the next command :
DAT_2=griddata(XI,YI,DAT,X,Y);
I repeat myself, but the only possibility I've found for complicated geometries is to create a surface larger that my comsol domain, (from min(X) to max(X) and from min(Y) to max(Y)) and just apply NaN on the cells outside of my comsol domain.
You can also create matrices before you use them as :
DAT_2=NaN(100,100);
That's just an example. You have to modify it for your own case.
Finally to see the result :
surf(DAT_2);
shading interp
Julien
Reply | Reply with Quote | Send private message | Report Abuse
Rules and guidelines

