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/)
-   -   [snappyHexMesh] multiple regions (https://www.cfd-online.com/Forums/openfoam-meshing/112637-multiple-regions.html)

Tobi February 1, 2013 10:59

multiple regions
 
2 Attachment(s)
Hello all,

I have a new problem. Well lets say not a new but an old new problem. I want to mesh the domain shown in the attachement.

There are two STL file. One for the water and on for the solid region.

Now I want to mesh the geometry with sHM and write out the "two" regions.

As you can see in the picture the water stl is seperated into two single regions and the solid depends on six singel regions.

After meshing with sHM the command checkMesh gives me the following:

Code:

Mesh stats
    points:          1163130
    faces:            3316330
    internal faces:  3274409
    cells:            1076892
    boundary patches: 8
    point zones:      0
    face zones:      2
    cell zones:      2

To get the regions I set the following in the sHM dict:

Code:

        rohr
        {
            // Surface-wise min and max refinement level
            level (2 2);

            faceZone rohr;
            cellZone rohr;
            cellZoneInside inside;
        }
        wasser
        {
            // Surface-wise min and max refinement level
            level (0 0);

            faceZone wasser;
            cellZone wasser;
            cellZoneInside inside;

        }

If I have a look at the meshed geometry with paraFoam I have the two cellZones like I want to have.

CellZone 1 = 2x fluid
CellZone 2 = 6x solid

(attached file)


After splitting the cellZones to regions with
Code:

splitMeshRegions -cellZones
I got 14 regions. every solid region is seperated in a new mesh couse they are not connected to each other.

So my question:

How can I handle that problem?
After splitting my mesh I want to have only the two regions!


I hope that I described my problem properply.

Thanks for every help.
Tobi

wyldckat February 2, 2013 06:00

Hi Tobi,

A quick glance to your post makes me remember an old thread about multi-regions, for which I left a link at the wiki page, namely section 3.2: http://openfoamwiki.net/index.php/Sn...-region_meshes

Best regards,
Bruno

Tobi February 2, 2013 06:02

Quote:

Originally Posted by wyldckat (Post 405603)
Hi Tobi,

A quick glance to your post makes me remember an old thread about multi-regions, for which I left a link at the wiki page, namely section 3.2: http://openfoamwiki.net/index.php/Sn...-region_meshes

Best regards,
Bruno

Thanks Bruno,

i ll have a look at it!

Tobi February 2, 2013 06:36

10000 thanks - works!

:D - now I am the happiest men in the world.

Greate work.

Tobi February 2, 2013 09:40

Well Bruno just one question.

Now I have my case ready, but there is only one boundary as
Code:

oldInternalFaces
Code:

Checking patch topology for multiply connected surfaces ...
    Patch              Faces    Points  Surface topology                 
    defaultFaces        0        0        ok (empty)                       
    inlet              0        0        ok (empty)                       
    outlet              0        0        ok (empty)                       
    mappedOut          0        0        ok (empty)                       
    mappedIn            0        0        ok (empty)                       
    wallWasser          0        0        ok (empty)                       
    wasserToRohre      0        0        ok (empty)                       
    oldInternalFaces    34074    34398    ok (closed singly connected)

How can I set the BC for that?
Sorry I am not familiar with setSet and stuff like that!?

Any suggestions?

wyldckat February 2, 2013 14:15

Hi Tobi,

"oldInternalFaces" is just an old collection of faces, which should no longer be used. In other words, after you split the zones into regions, the main mesh is basically gone. You now have to (only) set the boundary conditions for the regions.

For more information, check the "chtMultiRegion*Foam" tutorials ;)

Best regards,
Bruno

Tobi February 3, 2013 17:40

3 Attachment(s)
Quote:

Originally Posted by wyldckat (Post 405669)
Hi Tobi,

"oldInternalFaces" is just an old collection of faces, which should no longer be used. In other words, after you split the zones into regions, the main mesh is basically gone. You now have to (only) set the boundary conditions for the regions.

For more information, check the "chtMultiRegion*Foam" tutorials ;)

Best regards,
Bruno

Hi Bruno,

well thats not the problem. The problem is, that after splitting the mesh I getting 2 regions again. The step I done befor does not make sence at all if I get again two regions.

Okay a short example:

I want to mesh the region shown in the picture.
The two seperated region should be (after meshing) one region.

After meshing and using your advice I get picture #2
The two blocks are in the cellZone wasser

But if I split my mesh now I get two regions again: each for one block.

- region1: wasser
- region2: domain0


But both regions should be in one!
Do you know what I mean?

Is that possible to do?

Thanks Tobi

wyldckat February 4, 2013 05:23

Hi Tobi,

From your images, it looks like you have 4 regions in total, no matter what. There is no clear indication that the tubes are connected between the two blocks. If the tubes were connected, you should then have 3 regions in total.

If you can share a simpler version of this case, it should be easier to help you.

Best regards,
Bruno

Tobi February 4, 2013 07:10

Hi Bruno

here is my testcase.

After splitting into Regions I get 4 Regions and the region

"wasser" and " domain1" should be together as one region.

Hope it clear now.

As you said, the geometry is not connected. Thats my question at all. Is it possible to get one region with two not connected regions!?


Couse If you have 20 not connected pipes and all has the same properties it would be very very nice to get only one region which contains all 20 pipes.

Thanks for helping.


Testcase Download

wyldckat February 5, 2013 05:23

Hi Tobi,

Good point... now that I think of it, there should be as many zones as tubes...
But from your description, I remembered this groovyBC example: http://openfoamwiki.net/index.php/Co...ing_of_patches - it allows for two separated domains of the mesh to interact with one-another. But I don't remember how exactly it works.

I'll try to look into this the coming weekend... but I hope you manage to figure this out sooner ;)

Best regards,
Bruno

wyldckat February 10, 2013 07:34

Hi Tobi,

OK, I didn't have time to test the following theory, but it should work:
  1. Define the pipes as being part of a single solid. Ditto for the housing blocks.
  2. Generate the mesh using snappyHexMesh and using multi-regions, as shown on "mesh/snappyHexMesh/snappyMultiRegionHeater". The pipes will be defined into a single cell zone region.
  3. Take out the unwanted mesh, following the instructions I mentioned on the 2nd post.
  4. Then... uhm... it depends. You can use createPatch, autoPatch or even snappyHexMesh in a non-refining run, for assigning the patches to the mesh.
Best regards,
Bruno

Tobi February 11, 2013 18:54

Hi Bruno,

I build a new simpler case.
Just wanna mesh three seperated pipes.

1. create background
2. mesh with sHM
3. step in your post #2


then I have my pipes as mesh but without the correct BC.
A new run with sHM to generate the patches is not working.

The other tools "createPatch" or "autoPatch" I ll try but I never done sth. with that commands.

If you know how to create the patches out of the STL files please let me know :rolleyes:


My very easy testcase: www.holzmann-cfd.de/openfoamcases/testCase.tar.gz

Thanks in advance
Tobi


PS: via autoPatch its possible to seperate the patches into "autopatch xx" well ... maybe there is a better solution

Tobi February 12, 2013 18:46

Hi Bruno,

with an additional sHM run without refinement I get some Boundary Faces but not the whole boundary. Its splittet into oldInternalFields and patches created with the additional run.

:( :(

AutoPatch is not working couse its not completely a good surface

wyldckat February 13, 2013 04:40

Hi Tobi,

Only in the coming weekend will I be able to play with this.
But in the mean time, try to first use splitMeshRegions (not sure of the name of the app) and then use autoPatch each region.

Good luck!
Bruno

Tobi February 13, 2013 11:32

Hi Bruno,

I have an idea and I think its working but now I have a strange problem. With checkMesh I get 4 regions but if I split my mesh into my regions I get over 70 regions - most of them just contain 1 - 3 cells.

How can I provide that problem?

Code:

Region    Cells
------    -----
0    57621
1    12473
2    59994
3    201142
4    2
5    3
6    1
7    1
8    1
9    1
10    2
11    2
12    3
13    1
14    2
15    4
16    1
17    2
18    3
19    1
20    3
21    2
22    1
23    1
24    2
25    1
26    1
27    19
28    2
29    15
30    2
31    2
32    2
33    1
34    1
35    2
36    1
37    2
38    1
39    1
40    1
41    2
42    4
43    2
44    2
45    3
46    1
47    2
48    3
49    1
50    3
51    1
52    1
53    1
54    2
55    1
56    1
57    2
58    1
59    1
60    2
61    1
62    1
63    1
64    1
65    2
66    2
67    1
68    1
69    1
70    1
71    1
72    2
73    1
74    2
75    1
76    1
77    1
78    1
79    1


wyldckat February 13, 2013 16:20

Hi Tobi,

Multi-regions is a pain to deal with, at least until we get the hang of it.

OK, hints/details/suggestions:
  1. Make the geometry even simpler, at least for now: use only 3 square'ish pipes. The reason is so that you have a less complex and lighter mesh to experiment with, therefore also avoiding crooked meshes.
  2. If you examine in detail the tutorial "mesh/snappyHexMesh/snappyMultiRegionHeater", you'll see that each block only has one name. The interfaces are automatically derived by splitMeshRegions. Which means that for the first mesh, you should not use the definitions of "inlet" and "outlet", simply keep them all as "walls".
  3. After splitting the mesh regions, you can use changeDictionary for renaming patches, if-and-only-if there are enough regions they can interface with... i.e. in the same way as the tutorial "mesh/snappyHexMesh/snappyMultiRegionHeater".
Good luck!
Bruno

Tobi February 13, 2013 17:08

Quote:

Originally Posted by wyldckat (Post 407682)
Hi Tobi,

Multi-regions is a pain to deal with, at least until we get the hang of it.

OK, hints/details/suggestions:
  1. Make the geometry even simpler, at least for now: use only 3 square'ish pipes. The reason is so that you have a less complex and lighter mesh to experiment with, therefore also avoiding crooked meshes.
  2. If you examine in detail the tutorial "mesh/snappyHexMesh/snappyMultiRegionHeater", you'll see that each block only has one name. The interfaces are automatically derived by splitMeshRegions. Which means that for the first mesh, you should not use the definitions of "inlet" and "outlet", simply keep them all as "walls".
  3. After splitting the mesh regions, you can use changeDictionary for renaming patches, if-and-only-if there are enough regions they can interface with... i.e. in the same way as the tutorial "mesh/snappyHexMesh/snappyMultiRegionHeater".
Good luck!
Bruno


Hi Bruno,

thanks for the hints.
The last problem is gonna be solved by refining the STL mesh!

So first problem solved!

Tobi February 14, 2013 12:35

Hi Bruno,

well everythings works fine with multiregion. Yesterday I meshed a reactor with heatelemnt and steel (3 regions) out of four due to the domain0.

But that was not a problem couse domain0 does not matter. I delete that region and renamed the patches with createPatch.

The only thing that makes the multi region complicated is the fact, that if you have more similar geometries e.g. pipes with same properties but not connected to each other, you ll get several regions for each pipe (but you know that). After sHM you have all pipes in ONE region but by splitting it, it ll be seperated.

Well I think the easiest way is:

1. for every single region you have to build one STL (instead of building one STL for 10 pipes)
2. load everything into sHM
3. Meshing
4. splitting

and then: create a simple script that change all the entries and values you have to change.


I ll do that way now and publish my case here.
Yesterday I had success in doing that way on a other geometry. This one ll be published in a few weeks couse now I am not allowed to publish it.

Tobi

BUT Bruno, thanks for all your help and commitment to help me!

Tobi February 14, 2013 17:04

1 Attachment(s)
Hi Bruno,

do you know how to solve that problem:
--------------------------------------------------------

I made my six pipes and the channel as singel STL and after splitting the mesh I get some little smart domains with one or two cells at the interface between pipes and channel (attachement! <- the two brightness cells)

How can I solve that problem?
Or did anybody else know that problem?

Tobi

wyldckat February 15, 2013 07:18

Hi Tobi,

My guess is that the base mesh needs a little bump in one of the directions, because an edge might be in the wrong place, leading snappy to have difficulties aligning the final mesh onto the surface of the pipes.

The other possibility is the need to improve some of the quality controls for meshing. Don't forget that when meshing all zones, snappy will have to take into account both sides of all surfaces, not just one side!

Use the "Extract Cells by Region" filter on ParaView to diagnose better those odd shaped cells (don't forget to not decompose polyhedra!), where you'll probably see some contortions going on there! It'll be easier this way to assess what quality indicator is having problems there.

Best regards,
Bruno


All times are GMT -4. The time now is 00:40.