CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Meshing & Mesh Conversion (
-   -   cellSet: command not found (

Shawn_A October 12, 2011 16:28

cellSet: command not found
I'm trying to execute the cellSet command, but get the error "command not found." I'm new to Ubuntu and OpenFOAM, however, the limited number of other commands I've used seem to be accessible. Perhaps it was something I did (or didn't do) when I installed OpenFOAM.

Ultimately, my goal is to simulate a vertical axis wind turbine. So far I have converted my .msh meshes (stator and rotor) to openfoam successfully, and I'm now trying to use cellSet to define my rotating region.

Regards, and thanks,

wyldckat October 12, 2011 16:38

Greetings Shawn and welcome to the forum!

As of OpenFOAM 2.0, all "*Set" applications have been all merged into setSet. Here is an example of how to use:

For even more examples, the following command will show you which tutorials make use of setSet:

find $FOAM_TUTORIALS | xargs grep 'setSet' -sl
Best regards,

Bernhard October 12, 2011 17:30

Maybe it is good to also point on topoSet

Shawn_A October 13, 2011 13:15

Thanks for the tips and feedback! Greatly appreciated. I'm working off a case setup 'cheat sheet' that someone else in our department did a little over a year ago, so that would explain why some of the commands/instructions are out of date.


Shawn_A October 13, 2011 14:46

Well, setSet and topoSet are definitely available, but I can't figure out how to use them. With the cellSet command, all I needed to specify was my case: "-case rotor", and cellSet would reference my cellSetDict file which contained:

// Name of set to operate on
name movingCells;

// One of clear/new/invert/add/delete|subset/list
action new;

// Actions to apply to cellSet. These are all the topoSetSource's ending
// in ..ToCell (see the meshTools library).

// Cells with cell centre within box
box (-0.025 -0.025 -0.005) (0.025 0.025 0.005);

name movingCells; // name of cellZone


With setSet (topoSet), I have copied and renamed cellSetDict to setSetDict (topoSetDict), but the command failed to execute with the error "no times selected" ("keyword actions is undefined in dictionary "./rotor/system/topoSetDict" ").

What I am trying to do is create a set of cells(?) (or am I creating a zone?) that defines my moving mesh region, the rotor. Perhaps there is a different way I need to do this.

wyldckat October 16, 2011 04:32


Shawn, the tutorial "$FOAM_TUTORIALS/incompressible/windSimpleFoam/turbineSiting" has two files that are relevant to your problem:
  • Allrun - shows how to use setSet and setsToZones.
  • makeZones - shows the commands to be used by setSet.
"setSetDict" will not work, since that dictionary strategy is incompatible with the batch/script system used by setSet.

As for topoSet, you can see the tutorial "$FOAM_TUTORIALS/multiphase/MRFInterFoam/mixerVessel2D/":
  • Allrun calls makeMesh, which in turn calls simply topoSet.
  • topoSet will then use "system/topoSetDict". This dictionary implies that a predefined "zone" be used to convert to "cellSet".
  • In this case, the zone "rotor" has been defined in "blockMeshDict" as a patch of type "wall".
  • Note: this tutorial makes use of m4, a macro processor used in many OpenFOAM tutorials for it's power for programatically generating "blockMeshDict" files.
Like I said in my previous post, you could have used the find command to search for tutorials on how to use setSet, which could also have been used to look for topoSet! This is how I found out about these two tutorials!

Best regards and good luck!

Shawn_A October 18, 2011 15:44

Hi Bruno,

Once I got into the tutorials, things started making a lot more sense.

The original reference material I was working suggested:

cellSet -case rotor
setsToZones -noFlipMap -case rotor

From what I understand this first creats a cellSet then converts it to a Zone. I see now that I can perform these same operations by calling:
and specifying the actions in the topoSetDict file or alternately by calling:
setSet -batch filename
and specifying the actions in filename.

One thing that I don't understand is the specifiers you have used for the search terms, like "xargs" "grep" and "-sl". Do you know where I can find documentation of what specifiers are available and what they do?


wyldckat October 18, 2011 16:52

Hi Shawn,


Originally Posted by Shawn_A (Post 328477)
One thing that I don't understand is the specifiers you have used for the search terms, like "xargs" "grep" and "-sl". Do you know where I can find documentation of what specifiers are available and what they do?

Paraphrasing a somewhat known expression - «and then men made man»:

man xargs
man grep
man find

In Linux, when in doubt about some commands, simply type man and the command. Although some other commands might be part of the shell, so in those cases, you'll probably have to "man bash" in case bash is the shell being used.
I believe this dates back to Un*x and is short for manual :) See wikipedia for some historic details:

Searching online with the same commands will also give you an online version of each command:
As for the long combo for searching, I found after searching for this very specific reason: finding files that have a keyword, text or expression. Here we go, probably this is where I learned it from:

Ironically, wikipedia also talks a bit about the combo of find/xargs/grep: :)

Best regards,

CaroVandame November 16, 2011 10:47

Hi all,

thanks for your help, this thread was actually very helpful!

I have a small question:
I'm using snappyHexMesh to create my mesh around a wind turbine stl file. In this case, when topoSetDict asks for a sourceInfo name, I should give the cellZone name of my refinementSurfaces from SnappyHM?
And do I need to call my new cellSet the same way?
And are we going to use the faceZone defined as well in Snappy?

Thanks to all of you for your help

Shawn_A November 16, 2011 16:24

I suppose it would depend what you are trying to define. For my setup, I wanted to define a bunch of cells as my rotation domain, so I needed to create them as a cellSet within topoSetDict:

name movingCells;
type cellSet;
action new;
source boxToCell;
box (x1 y1 z1) (x2 y2 z2);

So this worked for me because it just drew a large box around my rotating domain (after which I merged my rotor and stator). To make my cellSet and convert it into a zone I called:

topoSet -case rotor
setsToZones -noFlipMap -case rotor

There are other types of sources:

(there may be more, just type it in incorrectly and OF should tell you what's available)

The correct one to use would depend on how you've defined things in your case, and what you want as the outcome. I needed a "movingCells" (it has to be called movingCells to work) zone to make a rotating domian with the ggi interface. If you have a zone defined and want the zone in cells, use zoneToCell as the source and the name of your zone as the sourceinfo.

If you want to add a few items to the same cellSet (or other type of set) you can use "add" instead of "new" for the action.

lovecraft22 April 6, 2012 09:54

I opened a similar discussion to this here:

and then I found this topic… so, is really necessary to use setSet when running a MRF or a moving mesh or this can be avoided by defining the zones in the snappyHexMeshDict?

Thank you!

wyldckat April 6, 2012 15:01

Hi lovecraft22, I'll answer you on your other thread.

All times are GMT -4. The time now is 02:11.