CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Meshing & Mesh Conversion (https://www.cfd-online.com/Forums/openfoam-meshing/)
-   -   [mesh manipulation] cellSet: command not found (https://www.cfd-online.com/Forums/openfoam-meshing/93366-cellset-command-not-found.html)

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,
Shawn

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: http://openfoamwiki.net/index.php/SetSet

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

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

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.

Regards,
Shawn

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).

topoSetSources
(
// Cells with cell centre within box
boxToCell
{
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

Greetings!

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!
Bruno

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:
topoSet
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?

Regards,
Shawn

wyldckat October 18, 2011 16:52

Hi Shawn,

Quote:

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»:
Code:

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: http://en.wikipedia.org/wiki/Man_page

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: http://www.liamdelahunty.com/tips/li...ring_files.php

Ironically, wikipedia also talks a bit about the combo of find/xargs/grep: http://en.wikipedia.org/wiki/Xargs :)

Best regards,
Bruno

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
Sincerely
Caroline

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:

actions
(
{
name movingCells;
type cellSet;
action new;
source boxToCell;
sourceinfo
{
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:

pointToCell
boxToCell
zoneToPoint
surfaceToCell
nearestToCell
zoneToCell
cellToFace
pointToFace
normalToFace
boxToFace
rotatedBoxToCell
fieldToCell
cellToPoint
zoneToFace
nbrToCell
patchToFace
labelToCell
pointToPoint
faceToCell
boxToPoint
labelToPoint
boundaryToFace
faceToPoint
labelToFace
shapeToCell
faceToFace
cellToCell
surfaceToPoint
(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:
http://www.cfd-online.com/Forums/ope...g-setsets.html

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.

stephie April 9, 2015 03:58

Hello everyone,

since some days I trie to solve a tutorial called: A pimpleFoam tutorial for channel flow. I created the mesh and now I should run the commend "cellSet".
In the cellSetDict I find these informations:

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

// Name of set to operate on
name c0;

// 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).

topoSetSources
(

// Cells with cell centre within box
boxToCell
{
box (0.1 0.05 0) (0.4 0.15 0.005);
}
);


// ************************************************** *********************** //

The instruction say:

To make use of refineMesh, one first need to define a region on which the refinement shall be performed. This is done in $CASE_DIR/system/setCellDict. The cellSetDict is then executed by running cellSet in $CASE_DIR.

Unfortunately it didn't work, when I type "cellSet". There is allways the mistake "command not found" I had a look in your discussion and I tried the following command:

< cellSet c0 new boxToCell (0.4 0.005 0) (0.4 0.15 0.2) >

but it also does not work.. there is now the mistake: bash: Syntaxfehler beim unerwarteten Wort »(« --> bash: syntax error when unexpected word "("

Maybe one of you might help me.. I would be very grateful.

Thank you so much, and nice regards,

Stephie

alexeym April 9, 2015 04:26

Hi,

@stephie: guess you are using OpenFOAM? As in foam-extend 3.1 there is cellSet (http://sourceforge.net/p/openfoam-ex...ation/cellSet/).

To create cellSet in OpenFOAM you can use topoSet utility.

stephie April 9, 2015 05:09

Hello Alexey,

yes you are right - I use OpenFoam and I am quite new.

Perhaps it is a stupid question.. but might you explain how toposet works? I really don't understand it. What do I have to do?
I read cellSet was repaced by setSet. And toposet can used instead of it.

nice regards and thank you for your help

alexeym April 9, 2015 05:24

Hello,

The cellSet dictionary you have posted can be translated into topSet dictionary like this:

Code:

FoamFile
{
    version    2.0;
    format      ascii;
    class      dictionary;
    object      topoSetDict;
}

actions
(
    {
        name c0;
        type cellSet;
        action new;
        source boxToCell;
        sourceInfo
        {
            box (0.1 0.05 0) (0.4 0.15 0.005);
        }
    }
);

I.e. topoSet is just generalization of cellSet utility.

stephie April 9, 2015 07:12

Okay, I include a file with the content of your post and type in "topoSet" and I think it worke.. this was the output:
stephanie@stephanie:~/OpenFOAM/stephanie-2.3.1/run/smagorinsky_mini$ topoSet
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.1 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
Build : 2.3.1-262087cdf8db
Exec : topoSet
Date : Apr 09 2015
Time : 11:42:59
Host : "stephanie"
PID : 7978
Case : /home/stephanie/OpenFOAM/stephanie-2.3.1/run/smagorinsky_mini
nProcs : 1
sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
fileModificationChecking : Monitoring run-time modified files using timeStampMaster
allowSystemOperations : Allowing user-supplied system call operations

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time

Create polyMesh for time = 0

Reading topoSetDict

Time = 0
mesh not changed.
Created cellSet c0
Applying source boxToCell
Adding cells with center within boxes 1((0.1 0.05 0) (0.4 0.15 0.005))
cellSet c0 now size 1184

End

Now I will try to refine the mesh.

I thank you so much for your patience and you help,

nice regards,

Stephie

Howard June 9, 2015 06:47

Quote:

Originally Posted by Shawn_A (Post 327870)
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).

topoSetSources
(
// Cells with cell centre within box
boxToCell
{
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.

Hi Friend, I would like to ask what 'box (0.5 0 0)(0.6 1 0.5)' stand for exactly, are they two points or vectors?

wyldckat June 12, 2015 18:16

Quote:

Originally Posted by Howard (Post 549484)
I would like to ask what 'box (0.5 0 0)(0.6 1 0.5)' stand for exactly

Quick answer: It's a bounding box:
  1. Minimum point: (0.5 0 0)
  2. Maximum point: (0.6 1 0.5)


All times are GMT -4. The time now is 13:58.