Create a parametrized array of arbitrary shapes




I would like be able to create an array of an arbitrary shape, say for example, an array of star-shaped pillars in an orthogonal grid.

I would like to be able to use a script at change the spacing and angle of the array structure. Is this possible? Currently the ‘Array’ function creates X amount of discrete pillars and does not link them to the array created.



Hi James,

Based on your description of the problem, I created a structure group for an array of star-shaped pillars. [ 3119_structure_group.fsp ]
I have used the ‘rectangular photonic crystal’ object from the object library and replaced the cylinder with a star-shaped pillar.

I was not quite sure about the ‘angle of array structure’. So I added a variable called ‘theta0’ which is the angle of the first tip (ponit ‘1’ in the figure above) with respect to the x-axis. If you want to rotate the whole rectangular array, then you can set the rotation axis and the amount of rotation in the ‘rotation’ tab of the structure group.


Whoa great this is awesome. Thank you for making this. It is very informative.



What if I wanted to rotate all the pillars around the x-axis, making all the pillars tilt? I’ve tried adding these lines to the script:

first_axis = %first axis%;
rotation_1 = %rotation 1%;
set(“first axis”,first_axis);
set(“rotation 1”,rotation_1);

and these User Properties:

But the String user property doesn’t seem to want to be called ‘first axis’ and have the String value set to ‘y’ at the same time. Is this the right way to go about it?



To rotate the major axis of each pillar, you can define the rotation angles (α and β) in the ‘User properties’ and add the following lines:

set(“first axis”,“y”);
set(“rotation 1”, alpha);
set(“second axis”,“z”);
set(“rotation 2”, beta);

Here’s the revised file: 3119_revised.fsp (239.8 KB)



Nice! Thanks


Ok here is a more challenging question:

Let’s say I wanted to ‘cut off’ the tops of the angled star-pillars to make the surface parallel to the base. I know that I can place an ‘etch’ block on the top of the pillars to do this. Then I can set the mesh order of the base to ‘1’ to make sure it takes priority over the pillars.

But now what if I wanted to ‘coat’ this whole structure with a thin layer of silicon? My initial guess are that I could:

  1. Duplicate the pillar structure
  2. Increase the ‘diameter’ of the new pillar structure so that I get a larger star pillar surrounding the original
  3. Set the mesh order of this duplicate pillar array to 3.

This would give me a tube of a star pillar surrounding my original star pillar. Viewed from the top we would still see the inner star because of the etch block with mesh order 1

What I haven’t figured out yet is how to cap the new structure with silicon to give me a totally encased pillar structure. Is there a way to sequentially add features to the model without an item with a mesh order of 1 cutting through everything?

Hope this makes sense…


The construction of such structures will require the use of planar solid object. If you are interested in how this primitive works, please have a look at the following pages:

The structure you described is equivalent to a star-shaped pillar which is rotated and then clipped. As a result, the cross-sectional shape of the structure in xy plane will change depending on the amount of tilt.

Here’s the simulation file ( 3119_star_pillar_with_coating.fsp ) containing a structure group taking into account the coating layer. Note that the coating is isotropic in a sense that its thickness measured normal to the surface is the same for every facet.

You can also find in the simulation file another structure group for skewed star-shaped pillars, whose cross-sectional shape in xy plane is identical regardless of the angle of rotation.

Hope this helps.




Thank you for this guidance! I will definitely check this out.