CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Meshing & Mesh Conversion

[mesh manipulation] Removing interfaces from data files

Register Blogs Community New Posts Updated Threads Search

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   March 19, 2008, 10:29
Default Removing interfaces from data files
  #1
peter_watson
Guest
 
Posts: n/a
I have a STAR-CCM+ model which works without problems, converges etc. This is an MRF model. In STAR-CCM+ the static and rotating parts of the mesh are separated by an internal interface. This interface remains in the model after conversion with ccm26ToFoam, and appears as two boundary regions, which make a perfect match.

OpenFOAM does not support internal interfaces or baffles and therefore it appears that the these boundaries need to be stitched together to make new internal faces.

Note that we do not have STAR-CD, no prostar, which can write out the mesh and boundaries separately. CCM+ will not allow me to do this.

Advice would be appreciated.
  Reply With Quote

Old   March 20, 2008, 08:28
Default Hi Peter, Have you tried us
  #2
Senior Member
 
Martin Beaudoin
Join Date: Mar 2009
Posts: 332
Rep Power: 22
mbeaudoin will become famous soon enough
Hi Peter,

Have you tried using stitchMesh?

Usage: stitchMesh <root> <case> <masterpatch> <slavepatch> [-perfect] [-partial]


Martin
mbeaudoin is offline   Reply With Quote

Old   March 20, 2008, 09:32
Default Martin, I have tried this a
  #3
peter_watson
Guest
 
Posts: n/a
Martin,

I have tried this and it does not work. stitchMesh requires 4 parameters, <root>, <case>, <masterpatch> and <slavepatch>.

I have the following files after conversion by ccm26ToFoam:

~/0/cellId
~/0/cellType
~/constant/polyMesh/boundary
~/constant/polyMesh/cellZones
~/constant/polyMesh/faces
~/constant/polyMesh/neighbour
~/constant/polyMesh/owner
~/constant/polyMesh/points
~/constant/polyMesh/sets/cellZone_1
~/constant/polyMesh/sets/cellZone_2

The masterPatch and slavePatch are internal to the above files and not separate entities.

The model was set up in CCM+ such that I can guarantee a perfect match across the internal interface.

Regards
  Reply With Quote

Old   March 20, 2008, 13:01
Default Hi Peter, The
  #4
Senior Member
 
Martin Beaudoin
Join Date: Mar 2009
Posts: 332
Rep Power: 22
mbeaudoin will become famous soon enough
Hi Peter,

The <masterpatch> and <slavepatch> are patch "names", and not patch "filenames".

Look into your file ~/constant/polyMesh/boundary.

If you can find your patch names there, then use them for stitchMesh like this:

stitchMesh . my_ccm26ToFoamCase nameOfPatch_1 nameOfPatch_2

Martin
mbeaudoin is offline   Reply With Quote

Old   March 31, 2008, 03:12
Default Martin, Now I am back from
  #5
peter_watson
Guest
 
Posts: n/a
Martin,

Now I am back from holiday I have followed your advice and unfortunately it did not work. The result is copied below:

pwa@cfd:~/ccmMakeMeshHere> stitchMesh .. ccmMakeMeshHere Copy_of_Interface Interface -perfect
/*---------------------------------------------------------------------------*\
| ========= | |
| \ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \ / O peration | Version: 1.4.1 |
| \ / A nd | Web: http://www.openfoam.org |
| \/ M anipulation | |
\*---------------------------------------------------------------------------*/

Exec : stitchMesh .. ccmMakeMeshHere Copy_of_Interface Interface -perfect
Date : Mar 31 2008
Time : 08:58:13
Host : cfd
PID : 16572
Root : ..
Case : ccmMakeMeshHere
Nprocs : 1
Create time

Create mesh for time = 0

Coupling perfectly aligned patches Copy_of_Interface and Interface
Resulting (internal) faces will be in faceZone Copy_of_InterfaceInterfaceCutFaceZone

Note: both patches need to align perfectly.
Both the vertex positions and the face centres need to align to within
a tolerance given by the minimum edge length on the patch
Adding point and face zones


--> FOAM FATAL ERROR : point, face or cell zone already exists#0 Foam::error::printStack(Foam:stream&) in "/home/pwa/OpenFOAM/OpenFOAM-1.4.1/lib/linux64GccDPOpt/libOpenFOAM.so"
#1 Foam::error::abort() in "/home/pwa/OpenFOAM/OpenFOAM-1.4.1/lib/linux64GccDPOpt/libOpenFOAM.so"
#2 Foam::polyMesh::addZones(Foam::List<foam::pointzon e*> const&, Foam::List<foam::facezone*> const&, Foam::List<foam::cellzone*> const&) in "/home/pwa/OpenFOAM/OpenFOAM-1.4.1/lib/linux64GccDPOpt/libOpenFOAM.so"
#3 main in "/home/pwa/OpenFOAM/OpenFOAM-1.4.1/applications/bin/linux64GccDPOpt/stitchMesh"
#4 __libc_start_main in "/lib64/libc.so.6"
#5 Foam::regIOobject::readIfModified() in "/home/pwa/OpenFOAM/OpenFOAM-1.4.1/applications/bin/linux64GccDPOpt/stitchMesh"


From function void addZones
(
const List<pointzone*>& pz,
const List<facezone*>& fz,
const List<cellzone*>& cz
)
in file meshes/polyMesh/polyMesh.C at line 865.

FOAM aborting

Aborted
pwa@cfd:~/ccmMakeMeshHere>

Regards Peter
  Reply With Quote

Old   March 31, 2008, 03:43
Default Hi Peter, Check this answer:
  #6
Senior Member
 
dmoroian's Avatar
 
Dragos
Join Date: Mar 2009
Posts: 648
Rep Power: 20
dmoroian is on a distinguished road
Hi Peter,
Check this answer: Remove Internals
dmoroian is offline   Reply With Quote

Old   April 1, 2008, 08:39
Default Dear Dragos, I followed the
  #7
peter_watson
Guest
 
Posts: n/a
Dear Dragos,

I followed the thread and went back to STAR-CCM+ and created two separate files, one for the rotating part and another for the static part.

Here is the result:

mergeMeshes /home/pwa/ccmMakeMeshHere rotatingPart /home/pwa/ccmMakeMeshHere staticPart
/*---------------------------------------------------------------------------*\
| ========= | |
| \ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \ / O peration | Version: 1.4.1 |
| \ / A nd | Web: http://www.openfoam.org |
| \/ M anipulation | |
\*---------------------------------------------------------------------------*/

Exec : mergeMeshes /home/pwa/ccmMakeMeshHere rotatingPart /home/pwa/ccmMakeMeshHere staticPart
Date : Apr 01 2008
Time : 14:27:15
Host : cfd
PID : 8919
Root :
Case :
Nprocs : 1
Master: "/home/pwa/ccmMakeMeshHere" "rotatingPart"
mesh to add: "/home/pwa/ccmMakeMeshHere" "staticPart"

Create Times
Reading master mesh for time = 0
Create mesh

Reading mesh to add for time = 0
Create mesh

Writing combined mesh to 2e-05
patch names:
10
(
Leading_Edges_1
Shaft
Blades
Hub
Copy_of_Interface
Leading_Edges_2
Outlet
Interface
Inlet
Tank_Walls
)

patch types:
10
(
wall
wall
wall
wall
wall
wall
wall
wall
wall
wall
)

point zone names:
0
(
)

face zone names:
0
(
)

cell zone names:
0
(
)

Copying old patches
Adding new patches.


--> FOAM FATAL ERROR : polyTopoChange was constructed with a mesh with 6 patches.
The mesh now provided has a different number of patches 10 which is illegal
#0 Foam::error::printStack(Foam:stream&) in "/home/pwa/OpenFOAM/OpenFOAM-1.4.1/lib/linux64GccDPOpt/libOpenFOAM.so"
#1 Foam::error::abort() in "/home/pwa/OpenFOAM/OpenFOAM-1.4.1/lib/linux64GccDPOpt/libOpenFOAM.so"
#2 Foam::polyTopoChange::compactAndReorder(Foam::poly Mesh const&, bool, Foam::Field<foam::vector<double> >&, Foam::List<int>&, Foam::List<int>&, Foam::List<foam::objectmap>&, Foam::List<foam::objectmap>&, Foam::List<foam::objectmap>&, Foam::List<foam::objectmap>&, Foam::List<foam::objectmap>&, Foam::List<foam::objectmap>&, Foam::List<foam::objectmap>&, Foam::List<foam::objectmap>&, Foam::List<foam::map<int> >&, Foam::List<int>&, Foam::List<int>&, Foam::List<foam::map<int> >&) in "/home/pwa/OpenFOAM/OpenFOAM-1.4.1/lib/linux64GccDPOpt/libdynamicMesh.so"
#3 Foam::polyTopoChange::changeMesh(Foam::polyMesh&, bool, bool) in "/home/pwa/OpenFOAM/OpenFOAM-1.4.1/lib/linux64GccDPOpt/libdynamicMesh.so"
#4 Foam::polyMesh::readUpdate() in "/home/pwa/OpenFOAM/OpenFOAM-1.4.1/applications/bin/linux64GccDPOpt/mergeMeshes"
#5 main in "/home/pwa/OpenFOAM/OpenFOAM-1.4.1/applications/bin/linux64GccDPOpt/mergeMeshes"
#6 __libc_start_main in "/lib64/libc.so.6"
#7 __gxx_personality_v0 in "/home/pwa/OpenFOAM/OpenFOAM-1.4.1/applications/bin/linux64GccDPOpt/mergeMeshes"


From function polyTopoChange::compactAndReorder(polyMesh&, const bool, const bool)
in file polyTopoChange/polyTopoChange/polyTopoChange.C at line 1631.

FOAM aborting

Aborted
pwa@cfd:~/ccmMakeMeshHere>

The rotating part has 6 boundary zones defined, and the static part has a further 4 boundary zones. Attempting to merge the meshes results in a domain with 10 boundary zones, when in reality two zones should be merged creating a model with 8 boundary zones.

Previously when the ccm+ file has been exported as a single domain 2 boundary zones were internal to the mesh and formed a cylindrical interface in the model. This interface is 3D, so it has the two flat circular ends and the circumferential surface all together.
  Reply With Quote

Old   April 1, 2008, 10:23
Default Hello Peter, Here is a discus
  #8
Senior Member
 
dmoroian's Avatar
 
Dragos
Join Date: Mar 2009
Posts: 648
Rep Power: 20
dmoroian is on a distinguished road
Hello Peter,
Here is a discussion on how to solve this kind of problem:mergeMesh
Basically it says:
Quote:
Before performing mergeMeshes, in boundary of the master case, I need to add the patchnames (from the second case) with nFaces 0 - some kind of place holder. Then, mergeMeshes was successful.
I hope it is useful,
Dragos
dmoroian is offline   Reply With Quote

Old   April 2, 2008, 04:43
Default Dear Dragos, I have followe
  #9
peter_watson
Guest
 
Posts: n/a
Dear Dragos,

I have followed your advice in what became an interesting diversion.

mergeMeshes did stitch together the two separate parts of the mesh into one model. However, it has given me the same boundary, faces, neighbour, owner and points files that I receive if I export both parts of the mesh together from CCM+ and then convert with ccm26ToFoam.

Unfortunately, the merged mesh only has one cellZone and not two and is therefore of no use in an MRF simulation.

Also the merged mesh contains the unwanted interface from the STAR-CCM+ model.

CCM+ uses the interface to separate the two parts of the MRF model. To remove the interface in CCM+ you first have to delete both the volume and surface meshes, leaving only the CAD behind. When you remesh without the interface there is only one cellZone in the model not two, also the boundary between the two cellZones no longer exists. So the interface has to remain. After conversion with ccm26ToFoam the interface appears in the neighbour and owner files as boundary data. This data needs to change to become internal faces.

This is what I am trying to achieve. I have one methodology, which produces models that run in icoFoam and turbFoam without trouble. However, these models have never run in SimpleFoam with MRF. These models always crash out.

Therefore I am interested in an alternative methodology for removing the interface and trying again to run MRF.
  Reply With Quote

Old   April 2, 2008, 05:07
Default Hi Peter, There is no problem
  #10
Senior Member
 
dmoroian's Avatar
 
Dragos
Join Date: Mar 2009
Posts: 648
Rep Power: 20
dmoroian is on a distinguished road
Hi Peter,
There is no problem if you still have the overlaping interfaces. It should be possible to remove them by using stitchMesh.
Again, there is no problem if you have only one zone in your mesh. You can define a cell set for the rotating part using cellSet and then transform that set into a zone using setsToZones utility.

Dragos
dmoroian is offline   Reply With Quote

Old   April 2, 2008, 10:20
Default Dear Dragos, Interesting, s
  #11
peter_watson
Guest
 
Posts: n/a
Dear Dragos,

Interesting, stitchMesh actually did just that, but not in the way I expected. I now have some new friends in my polyMesh directory, and some old friends normally resident in /sets are now absent from the party.

I now have the following files in polyMesh and the size of the file:

boundary 1633
cellZones 931
faces 202812803
faceZones 39558
meshModifiers 1118
neighbour 33016250
owner 33129866
points 120093444
pointZones 932

There is no /sets directory.

The boundary, faces, neighbour, owner and points files I am familiar with. The cellZones and pointZones files contain the usual 25 or so lines of header data, where you normally get vertex, face or cell data, both of these files only contain:

0
()

The faceZones file has a list of 4837, which is one side of my old (unwanted) interface. The meshModifiers now contains information on a perfectInterface, which is "active on."

I find this strange because I thought that OpenFOAM did not support internal interfaces.

I am unsure how to proceed because I now find myself with model files that are substantially different to the MRF mixer example. I was hoping to find my old friends in the sets directory would reappear, but no.

My understanding is that I need to define cellZones for both the rotating and static parts of the mesh. I have tried to run cellSet but it terminates after failing to find a set, which does not exist. The header data does exist, but beneath that all I have is the familiar:

0
()

Life with OpenFOAM would be easier if I worked for a company that was prepared to put its hand in its pocket to do things properly. Sadly not. Instead an old Fortran programme gets to try and sort this out on the fly. Ultimately more expensive.
  Reply With Quote

Old   April 2, 2008, 10:33
Default Be careful that stitchMesh pro
  #12
Senior Member
 
dmoroian's Avatar
 
Dragos
Join Date: Mar 2009
Posts: 648
Rep Power: 20
dmoroian is on a distinguished road
Be careful that stitchMesh produces the new mesh in a new time directory. That means, what you have in the constant/polyMesh directory remains there, and you should look for the result somewhere else!
I totally agree that some support for the guys that develop this would be very welcome, but unfortunately I'm in no possition to decide things like this .

Dragos
dmoroian is offline   Reply With Quote

Old   April 3, 2008, 04:41
Default Dear Dragos, I have looked
  #13
peter_watson
Guest
 
Posts: n/a
Dear Dragos,

I have looked through all the directories and apart from the empty header files there are no cellZone_1 and cellZone_2 files (or anything with another name) in these directories.

Your advice of using cellSet to create the rotating part. How do I achieve this?

The key data in the cellSetDict file is:

// Name of set to operate on
name cellZone_1;

This implies that the set must exist to start with! In my case it does not.

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

I have tried both new and add, but cellSet complains about the cellZone_1 not existing. naturally it does not exist, I am trying to make OpenFOAM do this, because I believe it is necessary to get the model running.

The rest of the cellsetDict file refers to:

topoSetSources
(
// cells in cell zone
zoneToCell;
{
name cellZone_1;
}
);

In my case zoneToCell is almost certainly wrong because i want to create a zone from cells and not cells in a zone.

Advice would be appreciated, and since this will remain online then it can be used to avoid other users in the future having to go through all this.
  Reply With Quote

Old   April 3, 2008, 06:21
Default Hi Peter, The cellSet utility
  #14
Senior Member
 
dmoroian's Avatar
 
Dragos
Join Date: Mar 2009
Posts: 648
Rep Power: 20
dmoroian is on a distinguished road
Hi Peter,
The cellSet utility has many different possibilities to select a bunch of cells. Take a look at ~/OpenFOAM/OpenFOAM-1.4.1/applications/utilities/mesh/manipulation/cellSet/cellS etDict file. One interesting option would be:
topoSetSources
(

<blockquote>// Cells with cell centre within box
<blockquote>boxToCell
{
<blockquote>box (0 0 0) (1 1 1);
}</blockquote></blockquote>

);
</blockquote>

I hope this is useful,
Dragos
dmoroian is offline   Reply With Quote

Old   April 3, 2008, 07:14
Default Dear Dragos, Thanks for you
  #15
peter_watson
Guest
 
Posts: n/a
Dear Dragos,

Thanks for your assistance. It is greatly appreciated. I will try your suggestion first, because you kindly responded.

A second possible approach is based on advice in another thread under mesh / mesh conversion / block mesh. There is a thread high up the list on removing internal faces from the mesh.

The advice here is to remove baffles, which start off as boundary regions and become new internal faces. This is what I am looking for. The problem in this case is that the interface in CCM+ is represented twice in the model, once in both cellZones. This means that I have two boundary definitions that are not necessarily consecutive in the model. The facility for removing baffles ask for a root, case and patchname. Only one patch name. I have two patch names each representating faces either side of the baffle. I can guarantee a perfect match, because the mesh in CCM+ was created with interface surface mesh parameters identical on both sides. When I stitched the models yesterday OpenFOAM reported a perfect match.

We now have CCM+ v3.02 and the ability to include cell sets. These are not translated by ccm26ToFoam. I was clearly hoping that these cell sets would be recognized by ccm26ToFoam and therefore appear as cellZone_1, etc. Alas no.

I have put this additional information in so that others with the same problem can see another possible solution to the problem (removing baffles).

Regards
  Reply With Quote

Old   April 4, 2008, 04:55
Default Hi Peter, stitchMesh is th
  #16
Member
 
Andrew King
Join Date: Mar 2009
Location: Perth, Western Australia, Australia
Posts: 82
Rep Power: 17
andersking is on a distinguished road
Hi Peter,

stitchMesh is the correct way to do this (as far as I know). Though I haven't been able to get it to work that sucessfully if any Zones or meshmodifiers are present (Due to the cells,faces and points being renumbered I think).

You will probably need to recreate the cellZones separately afterwards.

The procedure I use is as follows (for two meshes).

for a dir structure as follows.

root
\-merged
**\-system
**\-constant
**\-0
\-mesh1
**\-system (link to ../merged/system)
**\-constant (should be empty to start with)
\-mesh2
**\-system (link to ../merged/system)
**\-constant (should be empty to start with)

generate both the meshes - mesh1 and mesh2 - using any combination of blockMesh, netgenToFoam, gmshtoFoam, fluentMeshToFoam, etc that you want (don't have to use the same method for both).

remove any zones and mesh modifiers from both meshes.

rm mesh1/constant/polyMesh/*Zones*
rm mesh1/constant/polyMesh/meshModifiers*
rm mesh2/constant/polyMesh/*Zones*
rm mesh2/constant/polyMesh/meshModifiers*


If necessary change the boundary labels (in mesh?/constant/polyMesh/boundary )to stop mergeMeshes joining boundary conditions together (if necessary), and then copy one of the meshes to the merged directory.

rm -r merged/constant/polymesh
cp -rv mesh1/constant/polymesh


then merge it with the second mesh

mergeMeshes . merged . mesh2

This will create a new mesh in /merged/(timestep)/, which should be moved to the constant directory.

rm -r merged/constant/polyMesh
mv merged/(timestep)/polyMesh merged/constant
rm -r merged/(timestep)


then the mesh can be stitched together.

stitchMesh . merged interface1 interface2

and then moved back into the constant directory

rm -r merged/constant/polyMesh
mv merged/(timestep)/polyMesh merged/constant
rm -r merged/(timestep)


If you now need to recreate the sets/zones, setSet is a good choice as its interactive.

setSet . merged

though I haven't used it much. If you give an incorrect method it will list available options.

setSet> faceSet f0 new randomtextstringthatsnotvalid

gives a list of available methods.
my version gives:

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


Hope this helps.

Cheers
Andrew
__________________
Dr Andrew King
Fluid Dynamics Research Group
Curtin University
andersking is offline   Reply With Quote

Old   February 18, 2010, 09:56
Default
  #17
New Member
 
X.G. Li
Join Date: Nov 2009
Location: Bremen, Germany
Posts: 19
Rep Power: 16
CYMa is on a distinguished road
Hallo, Andrew,
I followed your method to merge and stitch two same meshes step by step. The mesh is depicted as follows,

I have merged two meshes very well, but when i tried to stitch side1 and side 2, it failed. The error is listed,
Duplicate point found in cut face. Error in the face cutting algorithm for global face 4(42413 42414 42447 42446) local face 4(402 603 604 403)
Slave size: 4200 Master size: 4200 index: 400.
Face: 7(42413 42414 88830 85223 11499 85023 88829)........................

I really can't find what's going wrong. May you give me some advice?
If possible, i will send you my cases (Merge, Mesh1 Mesh2).

Looking forward your guidelines very much!
Thank you.


Attached Images
File Type: jpg 2.jpg (25.8 KB, 40 views)
File Type: jpg 1.jpg (26.5 KB, 33 views)
CYMa is offline   Reply With Quote

Old   August 1, 2011, 08:05
Default
  #18
suh
New Member
 
Suhas
Join Date: Jul 2011
Location: Pune
Posts: 21
Rep Power: 14
suh is on a distinguished road
hi peter_watson and dragos

i am having similar problem in solving MRFSimpleFoam in OF 1.7.1 for star ccm+ case of pump problem.

so, if you got any answer to your problem (1 st Thread) please guide me through this. I know it is long time but ...i am stuck with this now.

plz help me out.

Thank you in advance
suh is offline   Reply With Quote

Old   October 4, 2011, 22:23
Default
  #19
Member
 
HD
Join Date: Jul 2011
Posts: 56
Rep Power: 14
Rebecca513 is on a distinguished road
Hi Xinggang,

I encountered the same error message. Have you figured out the solution?
If you could share it, I really appreciate your help.

Thank you!

Best,

Hang
Rebecca513 is offline   Reply With Quote

Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
DPM tracking on saved data files haghasa FLUENT 0 October 16, 2018 20:58
Parallel writing of data files aga010607 FLUENT 0 March 20, 2014 07:14
getting data from case and data files mkrao FLUENT 2 February 10, 2009 00:11
Export data from several .res files Nessan CFX 2 April 14, 2004 12:56
200 data files to post process (how?) Mark R FLUENT 1 August 9, 2001 13:35


All times are GMT -4. The time now is 20:28.