MATLAB How to Create Geometry Loops in MATLAB/COMSOL?

  • Thread starter Thread starter luhao
  • Start date Start date
  • Tags Tags
    Geometry Loops
AI Thread Summary
Creating multiple boxes within a box in COMSOL using MATLAB can be efficiently achieved through loops, but challenges arise due to variable naming conventions. A user seeks to automate the creation of multiple rectangular geometries without manually defining each one (g1, g2, etc.). The initial approach using dynamic variable names fails because MATLAB overwrites the variable with each iteration. A solution involves using a cell array to store the geometries. By employing a while loop, the user can create and store each rectangle in the cell array, allowing for dynamic access to each geometry through indexing. This method circumvents the need for predefined variable names and enables the creation of a variable number of boxes based on specified dimensions. The discussion highlights the importance of structuring the code to effectively manage geometry creation in COMSOL via MATLAB.
luhao
Messages
1
Reaction score
0
Hi I'm a new user in Comsol and Matlab and I have to create boxes within a box. Of course those boxes are easy, my problem is how do you make loops in MATLAB that translates to the g1=rect2(blah blah)
g2=rect2(blah blah)..

For example:
The boxes within the outside box varies so it's better to write everything in a loop say 5 boxes
and i had

length=[1,2,3,4,5];
width=[1, 1, 1, 1, 1];
cornerx=[0, 5, 10, 15, 20];
num=5;
for i=1:num;
name=strcat('g',num2str(i));
name=rect2(width(i),length(i),'base','corner','pos',[cornerx,0])
end;

Of course that would not work because the variable name will be overwritten everytime the rect2 occurs. Comsol doesn't follow that name=rect2(width(i),length(i),'base','corner','pos',[cornerx,0]), since it only recognizes g1= , g2=, etc.

Is there any way to write the loop and COMSOL would understand that i want to write 5 or 6 or 7 boxes in a box other than writing out each g1 g2 g3 manually?

Thanks!

Luhao
 
Physics news on Phys.org
I also had the same problems with making a loop of my geometries in comsol throug matlab. With a little help from this link:

https://www.physicsforums.com/showthread.php?t=297843

I manages to make my loop in a while loop, making a cell array :) The problem was that I was not able to use the varible g, i don't know why??!


My script looks like this:

while a > a_internal+(i)*(spac+w)
draw{i} = rect2(w,h,'base','corner','pos',[a_internal+(i-1)*(spac+w),0]);
i = i+1;
end

where a is radius, spac,w,h is different values for my geometry dimention. Then you use acces the structueres with draw{i} where i is the i'th number in your loop..

Hope it helps you:)
 
Back
Top