CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > OpenFOAM

irregular model simulation with chtMultiregionFoam

Register Blogs Members List Search Today's Posts Mark Forums Read

Reply
 
LinkBack Thread Tools Display Modes
Old   August 31, 2012, 11:24
Default irregular model simulation with chtMultiregionFoam
  #1
Member
 
jack
Join Date: Jul 2011
Posts: 52
Rep Power: 6
lg88 is on a distinguished road
Hello everyone
I am simulating a turbulence and heat transfer problem with chtMultiregionFoam.But the geometrical model is irregular.It looks like the picture I attached.I have used chtMultiregionFoam before but with simple model only ,like rectangular duct flow.So I just know how to deal with the simple model which I can assign different fields in the file named makeCellSets.setSet easily. Can you tell me how to assign the different domains with complex geometrical model?The meshes I used are generated with ICEM.

Thank you very much!
regards!


lg88
Attached Images
File Type: png QQ??20120831232256.png (21.1 KB, 106 views)
lg88 is offline   Reply With Quote

Old   September 1, 2012, 08:44
Default
  #2
Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 8,507
Blog Entries: 34
Rep Power: 86
wyldckat is just really nicewyldckat is just really nicewyldckat is just really nicewyldckat is just really nice
Hi lg88,

Well... since the mesh is coming from somewhere else, you'll need some form of identification coming from the ICEM's side.

So it really depends on how far you've gotten right now. Are you able to export and convert the whole and complete mesh to OpenFOAM? Or are you exporting in parts?

You can use STL surfaces to help isolate the zones for each volume and then use surfaceToPatch.
Then work from there with setSet or topoSet.

If the meshes come in separate volumes, you'll have to use mergeMesh at some point... either before or after the sets have been defined.

Good luck!
Bruno
wyldckat is offline   Reply With Quote

Old   September 1, 2012, 09:51
Default
  #3
Member
 
jack
Join Date: Jul 2011
Posts: 52
Rep Power: 6
lg88 is on a distinguished road
Hi Bruno

Yes ,I have exported and converted the whole and complete mesh to OpenFOAM.But if necessary I think I can exported the mesh in parts also.

Code:
You can use STL surfaces to help isolate the zones for each volume and then use surfaceToPatch.
Then work from there with setSet or topoSet.
It is a little difficult for me to understand.What does STL surfaces mean?
How to use surfaceToPatch and setSet or topoSet?

Can you tell me where can I obtain relative tutorials or information about that?

Thank you very much!

lg88
lg88 is offline   Reply With Quote

Old   September 2, 2012, 04:33
Default
  #4
Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 8,507
Blog Entries: 34
Rep Power: 86
wyldckat is just really nicewyldckat is just really nicewyldckat is just really nicewyldckat is just really nice
Hi lg88,

Have you never used snappyHexMesh? STL is the usual file format for 3D geometries, which was the first format used with snappyHexMesh in the famous "motorBike" tutorial. You can find such STL files being used with snappyHexMesh in the tutorial "heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater".

Run the following commands to see tutorials that use topoSet, createPatch and so on:
Code:
find $FOAM_TUTORIALS -name topoSetDict
find $FOAM_TUTORIALS -name createPatchDict
Study each tutorial and you'll get an idea of how things can be done.

As for surfaceToPatch, it should be intuitive after you understand the other tutorials, specially if you check the arguments it expects:
Code:
surfaceToPatch -help
Best regards,
Bruno
wyldckat is offline   Reply With Quote

Old   September 2, 2012, 06:10
Default
  #5
Member
 
jack
Join Date: Jul 2011
Posts: 52
Rep Power: 6
lg88 is on a distinguished road
Hi Bruno
Yes,I have never used snappyHexMesh.The mesh I used before was generated by ICEM.And I will look into the tutorials which you suggested.
By the way,
Code:
If the meshes come in separate volumes, you'll have to use mergeMesh at some point...
Do you mean that if I already have two or more separated meshes,then I can use mergeMesh to merge them at some point?What points do you mean and how to merge them?Can you tell me in details?Thank you very much!

regards

lg88
lg88 is offline   Reply With Quote

Old   September 2, 2012, 07:33
Default
  #6
Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 8,507
Blog Entries: 34
Rep Power: 86
wyldckat is just really nicewyldckat is just really nicewyldckat is just really nicewyldckat is just really nice
Hi lg88,

I wrote "at some point", in the sense of bullet points. The steps I imagined were:
  • Export mesh from ICEM as separate volumes.
  • Define cells for each volume as a particular cell zone.
  • Merge the meshes.
The last point could come in second...



As for mergeMeshes: unfortunately I've never understood it very well either. All I know is that mergeMesh will place the requested meshes into the same mesh space, but it will not attach faces automatically. Here's the page at openfoamwiki.net: http://openfoamwiki.net/index.php/MergeMeshes

Good luck!
Bruno
wyldckat is offline   Reply With Quote

Old   September 4, 2012, 07:56
Default
  #7
Member
 
jack
Join Date: Jul 2011
Posts: 52
Rep Power: 6
lg88 is on a distinguished road
Hi Bruno
Can you tell me how to define cells for each volume as a particular cell zone?The second step that you told me to do.I just give them different region names and put them at different folders as the folder structure in chtMultiRegionHeater.

regards!

lg88
lg88 is offline   Reply With Quote

Old   September 4, 2012, 14:59
Default
  #8
Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 8,507
Blog Entries: 34
Rep Power: 86
wyldckat is just really nicewyldckat is just really nicewyldckat is just really nicewyldckat is just really nice
Hi lg88,

OK, let's try to do this in steps then. Here's what I'm going to ask you to do:
  1. Create a very simple geometry, conceptually similar to what you're trying to do now. For example, a cylinder with a solid meshed wall; which would mean it would have 2 meshes: the internal mesh of the cylinder and the mesh of the wall of the cylinder.
  2. Export the mesh to OpenFOAM in two types:
    1. Both volumes in a single mesh.
    2. Separate meshes.
  3. Additionally, export the original geometry as 2 well defined STL files:
    1. One that has the internal cylinder;
    2. Another that has the wall cylinder.
After you've got these prepared, compress them into a single tar.gz file and share it with us or you can send a link to me via private message. You can use Dropbox or some other file sharing site.

This way it'll be easier to explain how to do it, namely with a practical example.

Best regards,
Bruno
wyldckat is offline   Reply With Quote

Old   December 22, 2013, 05:45
Default
  #9
Member
 
Kumudu
Join Date: Oct 2013
Posts: 63
Rep Power: 3
Kumudu is on a distinguished road
[Moderator note: The following quote is a group of posts that were moved from this thread: Heattransfer of a pipe using chtMultiRegionFoam
Quote:
I have to simulate the similar problem you posted. I want to simulate a temperature field when a U-shape pipe is buried a solid. water is circulating through the pipe. Pipe is buried in a cylindrical domain. And again this cylindrical domain is buried in a cube.

I understood you have set constant mass flow rate in the pipe. So, in the case of constant mass flow rate don't I need to define velocity. you have given zero velocity as follows,

Code:
internalField   uniform (0 0 0);

 boundaryField
 {
   water_inlet
            {
            type            flowRateInletVelocity;
            volumetricFlowRate 0.1;
            value           uniform (0 0 0);
            }
So, if I have to 10m/s uniform velocity in the inlet with constant mass flow rate throughout the pipe, how should I give b.c.


Also, I couldn’t find the topoSet dictionary in the folder "laminar". I am curious about, how to define a U-shape pipe using topoSet.

Since, my pipe diameter is 32 mm (outer) and 23 mm (inner), and pipe is in the 1m*1m*40m cubic domain, I couldn’t define this region. It gives me killed command.

Also, I want to have a forced convection, not free convection. If I give g=0, is it correct?

I still can't figure it out, how to define inlet and outlet boundary condition for U-pipe, because, I don't know how to define these in the blockMeshDict which is related with topoSet.
----------------------------

Hi Bruno,

I want to learn how to define boundaries of a irregular region. I have a U-shape pipe which is buried in a solid region. I create this U-pipe using the topoSetDict and the blockMesh was defined for the cubic solid region.

Now, I have a problem defining boundaries. In the chtMultiRegionFoam/multiRegionLiquidHeater the boundaries were defined as minX,maxX,minY,maxY, blaaa

But, in my case this is only can be valid for solid. But for the fluid, as I have to give different boundary condition for inlet and outlet of the pipe, I can't understand how to define boundaries. I have attached the schematic of my domain.

Can you give me a hint for this.

Best,
Kumudu
Attached Files
File Type: docx schematic_of_computational_domain.docx (54.0 KB, 18 views)

Last edited by wyldckat; December 26, 2013 at 12:48. Reason: So much information, have to collate it all into one post
Kumudu is offline   Reply With Quote

Old   December 26, 2013, 13:08
Default
  #10
Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 8,507
Blog Entries: 34
Rep Power: 86
wyldckat is just really nicewyldckat is just really nicewyldckat is just really nicewyldckat is just really nice
Hi Kumudu,

OK, regarding the case set-up, I suggest that you start by studying this very simple tutorial: http://openfoamwiki.net/index.php/Ge..._-_planeWall2D - then start playing with the case configuration, as explained in that tutorial. This will give you more experience than any answer people can give you. In addition, it will give you the sense that you need (and how) to be able validate your simulations.


As for the geometry+mesh, I suggest you should do one step at a time, by starting with a simple example and then gradually add more complexity to it. In summary, I suggest that you follow these steps:
  1. Given the complexity of your model, and assuming you don't need anything more sophisticated than the image you've attached, then learn how to use SwiftBlock: http://openfoamwiki.net/index.php/Contrib/SwiftBlock
  2. Start off by trying to build only the pipe in SwiftBlock. And simulate some fluid flowing inside that pipe.
  3. Then try creating the other part, namely the ground around the pipe. Try using laplacianFoam to simulate some basic heat transfer going through that ground. Keep in mind that you only want to create the mesh for the ground itself.
  4. Once you have created both parts independently and with success, it's possible to merge the two meshes with mergeMesh, along with stitchMesh to stitch the two parts of the mesh. Better yet, it should be possible to do the whole mesh in a single "blockMeshDict", with the help of SwiftBlock.
When you reach step #4, it will be easier to explain to you how you can merge+stitch the two meshes and how to look at the case set-up.

Best regards,
Bruno
wyldckat is offline   Reply With Quote

Old   December 26, 2013, 13:21
Default
  #11
Member
 
Kumudu
Join Date: Oct 2013
Posts: 63
Rep Power: 3
Kumudu is on a distinguished road
Quote:
Originally Posted by wyldckat View Post
Hi Kumudu,

OK, regarding the case set-up, I suggest that you start by studying this very simple tutorial: http://openfoamwiki.net/index.php/Ge..._-_planeWall2D - then start playing with the case configuration, as explained in that tutorial. This will give you more experience than any answer people can give you. In addition, it will give you the sense that you need (and how) to be able validate your simulations.


As for the geometry+mesh, I suggest you should do one step at a time, by starting with a simple example and then gradually add more complexity to it. In summary, I suggest that you follow these steps:
  1. Given the complexity of your model, and assuming you don't need anything more sophisticated than the image you've attached, then learn how to use SwiftBlock: http://openfoamwiki.net/index.php/Contrib/SwiftBlock
  2. Start off by trying to build only the pipe in SwiftBlock. And simulate some fluid flowing inside that pipe.
  3. Then try creating the other part, namely the ground around the pipe. Try using laplacianFoam to simulate some basic heat transfer going through that ground. Keep in mind that you only want to create the mesh for the ground itself.
  4. Once you have created both parts independently and with success, it's possible to merge the two meshes with mergeMesh, along with stitchMesh to stitch the two parts of the mesh. Better yet, it should be possible to do the whole mesh in a single "blockMeshDict", with the help of SwiftBlock.
When you reach step #4, it will be easier to explain to you how you can merge+stitch the two meshes and how to look at the case set-up.

Best regards,
Bruno
Dear Bruno,


Thank you very much. I have already done steps up to 3rd . I just have to go through the 4rth step. Thanks again. This means a lot to me.

Best,
Kumudu
Kumudu is offline   Reply With Quote

Old   December 26, 2013, 13:29
Default
  #12
Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 8,507
Blog Entries: 34
Rep Power: 86
wyldckat is just really nicewyldckat is just really nicewyldckat is just really nicewyldckat is just really nice
Quote:
Originally Posted by Kumudu View Post
Thank you very much. I have already done steps up to 3rd . I just have to go through the 4rth step. Thanks again. This means a lot to me.
That was quick!

OK, then what exactly do you have?
  1. A single "blockMeshDict" file?
  2. Two "blockMeshDict" files?
Can you share the "blockMeshDict" file(s)? It would make it easier to ascertain what's missing.
wyldckat is offline   Reply With Quote

Old   December 26, 2013, 14:49
Default
  #13
Member
 
Kumudu
Join Date: Oct 2013
Posts: 63
Rep Power: 3
Kumudu is on a distinguished road
Quote:
Originally Posted by wyldckat View Post
That was quick!

OK, then what exactly do you have?
  1. A single "blockMeshDict" file?
  2. Two "blockMeshDict" files?
Can you share the "blockMeshDict" file(s)? It would make it easier to ascertain what's missing.
Hi,

I didn't do it right now. I am not that talented. I did it before.
I created a single blockMesh. And created regions using topoSet.
Since, after topoSet command is run, I ran the command,
splitMeshRegions -cellZones -overwrite.

Now I have more than one block. Only problem I had using multiRegionLiquidHeater tutorial case, is my less knowledge in merging mesh, I guess. I can't understand how to define boundaries as inlet and outlet for the fluid region. Because , I used only one blockMesh.

I am attaching the one pipe case, that I created.I realized that some boundary conditions may be wrong. I will make them correct and upload the corrected one.

I will upload the fluid region having the U-shape created using topoSet. And blockMeshDict (one block). then, you can tell me exactly what should I do to define different boundaries at the blockMesh.

Thank Bruno,

Kumudu
Attached Files
File Type: zip Example.zip (23.0 KB, 7 views)
Kumudu is offline   Reply With Quote

Old   December 26, 2013, 15:09
Default
  #14
Member
 
Kumudu
Join Date: Oct 2013
Posts: 63
Rep Power: 3
Kumudu is on a distinguished road
Hi Bruno,

I think I have misunderstood the steps. I haven't really go through SwiftBlock properly. I will go through these steps. And let you know. I thought you are saying that make a one fluid region using one pipe.

I am really going crazy with thesis.

Thanks again.

Once I did all these steps, I will posted the new one.

Best,
Kumudu
Kumudu is offline   Reply With Quote

Old   December 26, 2013, 15:28
Default
  #15
Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 8,507
Blog Entries: 34
Rep Power: 86
wyldckat is just really nicewyldckat is just really nicewyldckat is just really nicewyldckat is just really nice
Hi Kumudu,

This is indeed a nice simple example! Although a bit familiar... looks a bit like the 2D plane wall: http://openfoamwiki.net/index.php/Ge..._-_planeWall2D - but extended to 3D.

You've got at least one problem here, as shown in the attached image "Screenshot from 2013-12-26 19:06:11.jpg", that after running splitMeshRegions, the 3 regions are far from perfect.
You need to better define the boxes in "topoSetDict".

Have a look into the region folders inside the "constant" folder. Look for the files "polyMesh/boundary" in all of them and you'll find the names of the patches that were assigned automatically to each one side of the regions.

For example, if you look into the file "constant/bottomWater/polyMesh/boundary", you'll find two new patches:
  • bottomWater_to_leftSolid
  • bottomWater_to_rightSolid
Therefore, the field files inside the folder "0/bottomWater", will have to also refer to those new patch names.


Quote:
Originally Posted by Kumudu View Post
I think I have misunderstood the steps. I haven't really go through SwiftBlock properly. I will go through these steps. And let you know. I thought you are saying that make a one fluid region using one pipe.

I am really going crazy with thesis.

Thanks again.

Once I did all these steps, I will posted the new one.
OK! Try not to panic with anything related to the thesis. Working with OpenFOAM should not be done when one is: irritated, sleepy and/or in a hurry. Any of the 3 or all combined, usually only results in one thing: pretty colours.

Good luck! Best regards,
Bruno
Attached Images
File Type: jpg Screenshot from 2013-12-26 19:06:11.jpg (40.7 KB, 30 views)
wyldckat is offline   Reply With Quote

Old   December 27, 2013, 03:20
Default
  #16
Member
 
Kumudu
Join Date: Oct 2013
Posts: 63
Rep Power: 3
Kumudu is on a distinguished road
Thanks Bruno,

You are so generous and brilliant. Above the the comment, I think, I understood the problem.

Quote:
Originally Posted by wyldckat View Post
Hi Kumudu,

You've got at least one problem here, as shown in the attached image "Screenshot from 2013-12-26 19:06:11.jpg", that after running splitMeshRegions, the 3 regions are far from perfect.
You need to better define the boxes in "topoSetDict".
I found that now, I have defined, minX and maxX as patches. This should be wall for the fluid region. Because, fluid can't migrate into the other regions. Right.

Quote:
Originally Posted by wyldckat View Post

For example, if you look into the file "constant/bottomWater/polyMesh/boundary", you'll find two new patches:
  • bottomWater_to_leftSolid
  • bottomWater_to_rightSolid
Therefore, the field files inside the folder "0/bottomWater", will have to also refer to those new patch names.

In the Example/system/bottomWater/changeDictionaryDict,

I have defined, the boundary conditions for velocity and temperature

For velocity,U

Code:
U
    {
        internalField   uniform (0 0 -4);

        boundaryField
        {
            maxZ
            {
                type            fixedValue;
                value           uniform (0 0 -4);
            }

            minZ
            {
                type            zeroGradient;
            }

            ".*" //isn't this automatically refers to all other boundaries  including bottomWater_to_leftSolid & bottomWater_to_rightSolid 
            {
                type            fixedValue;
                value           uniform (0 0 0);
            }
For T,

Code:
T
    {
        internalField   uniform 273;

        boundaryField
        {
            maxZ
            {
                type            fixedValue;
                value           uniform 273;
            }

            minZ
            {
                type            zeroGradient;
            }

            ".*"
            {
                type            zeroGradient;
                value           uniform 273;
            }

            "bottomWater_to_.*" //isn't this  refers to the  boundaries  bottomWater_to_leftSolid & bottomWater_to_rightSolid 
            {
                type             compressible::turbulentTemperatureCoupledBaffleMixed;
                neighbourFieldName T;
                K               basicThermo;
                KName           none;
                value           uniform 273;
            }
        }
    }
I have to go through the 4 steps you told me to do. I haven't really looked at mesh generation (complex ) before, as my target was to first create the solver that accounts only the heat transfer in solid and liquid (only diffusion for solid and diffusion and convection for liquid). I am reading the link http://openfoamwiki.net/index.php/Contrib/SwiftBlock you sent me now.

Thanks again.

Kumudu

Last edited by wyldckat; December 27, 2013 at 15:15. Reason: Added [CODE][/CODE] and fixed broken quotes
Kumudu is offline   Reply With Quote

Old   December 27, 2013, 05:24
Default
  #17
Member
 
Kumudu
Join Date: Oct 2013
Posts: 63
Rep Power: 3
Kumudu is on a distinguished road
Quote:
Originally Posted by wyldckat View Post
Hi Kumudu,

As for the geometry+mesh, I suggest you should do one step at a time, by starting with a simple example and then gradually add more complexity to it. In summary, I suggest that you follow these steps:
  1. Given the complexity of your model, and assuming you don't need anything more sophisticated than the image you've attached, then learn how to use SwiftBlock: http://openfoamwiki.net/index.php/Contrib/SwiftBlock
  2. Start off by trying to build only the pipe in SwiftBlock. And simulate some fluid flowing inside that pipe.
  3. Then try creating the other part, namely the ground around the pipe. Try using laplacianFoam to simulate some basic heat transfer going through that ground. Keep in mind that you only want to create the mesh for the ground itself.
  4. Once you have created both parts independently and with success, it's possible to merge the two meshes with mergeMesh, along with stitchMesh to stitch the two parts of the mesh. Better yet, it should be possible to do the whole mesh in a single "blockMeshDict", with the help of SwiftBlock.
When you reach step #4, it will be easier to explain to you how you can merge+stitch the two meshes and how to look at the case set-up.

Dear Bruno,

As you suggested I read the link on SwiftBlock. I think this for irregular geometries. For the time being, I just need to create the U-pipe using three rectangles. That is done. For now, I am not concern about the cylindrical Shapes of pipes. I have created the U-pipe using topoSet. As I said before, my only concern is to define the boundaries of the region I created for fluid because I need to name the boundaries of the liquid region as inlet, outlet and wall.

You can see that, in the attachment that I have created the U-pipe easily using topoSet. I can do this for cylindrical shape (without using boxToCell ) using cylinderToCell. So, I will get the pipe (cylindrical shape) geometry easily. I did the following,

blockMesh for ground (a cube with for now I reducing the sizes to 120 mm*120mm*50m)

topoSet (this will create liquid region as the U-shape pipe and other all parts as ground)

splitMeshRegions -cellZones -overwrite


ok, now I have U-shape block for liquid region and cubic shape block for ground, cells other than included in the water (pipe shape). This way I can get a perfect mesh without any complex meshing method.

Lets say, I defined one block in the blockMeshDict with all faces as walls. So, my U-shape is with walls. I can even change the inlet and outlet as patches if I am considering my pipe flow as open pipe flow by setting maxZ into patches in the changeDictionaryDict. So, every thing is good, other than defining inlet and outlet boundary conditions for liquid. Because,
If I consider closed pipe flow,

B.C for velocity,

inlet, fixedValue= (0,0,-4)
outlet, zeroGradient
wall, fixedValue = (0,0,0)

Just tell me now how to define the inlet and outlet faces as the same to liquid. Then, I can easily give required boundary conditions in the changeDictionaryDict as follows,

Code:
U
    {
        internalField   uniform (0 0 -4);

        boundaryField
        {
            inlet
            {
                type         fixedValue;
                value        $internalField
            }
            outlet
            {
                type         zeroGradient;
            }

            ".*"
            {
                type            fixedValue;
                value           uniform (0 0 0);
            }
        }
    }
Thats all I need. I think you can easily give me a hint for this. Then, I can have a look at exact shape of the pipe if my supervisor say so.

Thank you very much for helping me. I am really really grateful to you for this.

Best regards,
Kumudu
Attached Images
File Type: jpg Pipe.jpg (23.7 KB, 14 views)
File Type: jpg Grout_with_pipe.jpg (20.2 KB, 16 views)

Last edited by wyldckat; December 27, 2013 at 15:16. Reason: Added [CODE][/CODE]
Kumudu is offline   Reply With Quote

Old   December 27, 2013, 15:46
Default
  #18
Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 8,507
Blog Entries: 34
Rep Power: 86
wyldckat is just really nicewyldckat is just really nicewyldckat is just really nicewyldckat is just really nice
Hi Kumudu,

Quote:
Originally Posted by Kumudu View Post

Code:
".*" //isn't this automatically refers to all other boundaries  including bottomWater_to_leftSolid & bottomWater_to_rightSolid 
{
   type            fixedValue;
   value           uniform (0 0 0);
}
Yes, the ".*" automatically selects all other patch names.

Quote:
Originally Posted by Kumudu View Post
Code:
"bottomWater_to_.*" //isn't this  refers to the  boundaries  bottomWater_to_leftSolid & bottomWater_to_rightSolid 
{
   type             compressible::turbulentTemperatureCoupledBaffleMixed;
   neighbourFieldName T;
   K               basicThermo;
   KName           none;
   value           uniform 273;
            }
        }
    }
Yes, "bottomWater_to_.*" selects all patch names that start with "bottomWater_to_".

Quote:
Originally Posted by Kumudu View Post
For now, I am not concern about the cylindrical Shapes of pipes. I have created the U-pipe using topoSet.
Mmm... I thought it was a simplified solid-water-solid geometry... an I-pipe, perhaps?

Quote:
Originally Posted by Kumudu View Post
As I said before, my only concern is to define the boundaries of the region I created for fluid because I need to name the boundaries of the liquid region as inlet, outlet and wall.
Ah, OK OK. Got it.

Quote:
Originally Posted by Kumudu View Post
You can see that, in the attachment that I have created the U-pipe easily using topoSet. I can do this for cylindrical shape (without using boxToCell ) using cylinderToCell. So, I will get the pipe (cylindrical shape) geometry easily. I did the following,

[...]

Thats all I need. I think you can easily give me a hint for this. Then, I can have a look at exact shape of the pipe if my supervisor say so.
!!! Many, many thanks for the detailed explanation! This does make it a lot easier for me to explain things to you.

OK, the main utility that you are missing and are searching for is createPatch. It's similar to topoSet, in the sense that the dictionary shares some similar features, but the objective of createPatch is very simple: to take a "faceSet", existing patch or patches and create a new patch from any of them. It will also do some house cleaning, by removing the patches that have no mesh faces assigned to them .

Therefore, since you already have good experience with topoSet, you can easily create one or more "faceSet" that are the selection of faces in already existing patches, even in case you don't want to use the whole patch. In case you don't already know, this page gives a very nice description of what topoSet can do: http://openfoamwiki.net/index.php/TopoSet

Now for createPatch: http://openfoamwiki.net/index.php/CreatePatch - That wiki pretty much sums it all very nicely.
The information that might escape you upon reading the wiki page is this:
  1. "-region" - you need to use this option, in order to apply the "createPatchDict" file to correct region. Which implies that you will need one "createPatchDict" file for each region you want to manipulate.
  2. The location of the "createPatchDict" file... honestly, I'm not 100% certain of this, but I think that you can place each one directly inside the "system/region_name" folder.
  3. Since the patches are defined by region and will not assign values to the other region, even if they have the same name, means that you can do a simple patch renaming of the patches. Something like renaming "maxY" to "inlet" and "minY" to "outlet" (I have not checked if these are the correct names!). If I'm not mistaken, something like this:
    Code:
       {   
            // Name of new patch
            name inlet;
    
            // How to construct: either from 'patches' or 'set'
            constructFrom patches;
    
            // If constructFrom = patches : names of patches. Wildcards allowed.
            patches (maxY);
        }
    
       {   
            // Name of new patch
            name outlet;
    
            // How to construct: either from 'patches' or 'set'
            constructFrom patches;
    
            // If constructFrom = patches : names of patches. Wildcards allowed.
            patches (minY);
        }
  4. Similarly, you can something like this using a "faceSet" instead of a patch.
Right now I'm in a hurry, so I'm not 100% if this is all that you asked for.

Best regards,
Bruno
wyldckat is offline   Reply With Quote

Old   December 27, 2013, 16:07
Default
  #19
Member
 
Kumudu
Join Date: Oct 2013
Posts: 63
Rep Power: 3
Kumudu is on a distinguished road
Quote:
Originally Posted by wyldckat View Post
Hi Kumudu,


OK, the main utility that you are missing and are searching for is createPatch. It's similar to topoSet, in the sense that the dictionary shares some similar features, but the objective of createPatch is very simple: to take a "faceSet", existing patch or patches and create a new patch from any of them. It will also do some house cleaning, by removing the patches that have no mesh faces assigned to them .

Therefore, since you already have good experience with topoSet, you can easily create one or more "faceSet" that are the selection of faces in already existing patches, even in case you don't want to use the whole patch. In case you don't already know, this page gives a very nice description of what topoSet can do: http://openfoamwiki.net/index.php/TopoSet

Now for createPatch: http://openfoamwiki.net/index.php/CreatePatch - That wiki pretty much sums it all very nicely.
The information that might escape you upon reading the wiki page is this:
  1. "-region" - you need to use this option, in order to apply the "createPatchDict" file to correct region. Which implies that you will need one "createPatchDict" file for each region you want to manipulate.
  2. The location of the "createPatchDict" file... honestly, I'm not 100% certain of this, but I think that you can place each one directly inside the "system/region_name" folder.
  3. Since the patches are defined by region and will not assign values to the other region, even if they have the same name, means that you can do a simple patch renaming of the patches. Something like renaming "maxY" to "inlet" and "minY" to "outlet" (I have not checked if these are the correct names!). If I'm not mistaken, something like this:
    Code:
       {   
            // Name of new patch
            name inlet;
    
            // How to construct: either from 'patches' or 'set'
            constructFrom patches;
    
            // If constructFrom = patches : names of patches. Wildcards allowed.
            patches (maxY);
        }
    
       {   
            // Name of new patch
            name outlet;
    
            // How to construct: either from 'patches' or 'set'
            constructFrom patches;
    
            // If constructFrom = patches : names of patches. Wildcards allowed.
            patches (minY);
        }
  4. Similarly, you can something like this using a "faceSet" instead of a patch.
Thank you very much Bruno. I will have a look at the "faceSet"& "createPatchDict" and let you know. So, this means I can do this without having much problem.

Again, I am really grateful to you.
Thanks,
Kumudu
Kumudu is offline   Reply With Quote

Old   December 28, 2013, 07:16
Default
  #20
Super Moderator
 
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 8,507
Blog Entries: 34
Rep Power: 86
wyldckat is just really nicewyldckat is just really nicewyldckat is just really nicewyldckat is just really nice
Hi Kumudu,

You're welcome!
Quote:
Originally Posted by Kumudu View Post
So, this means I can do this without having much problem.
Keep in mind that the "faceSet" is a selection of faces. So don't expect square-like faces to magically adjust to the shape of a cylinder face
In other words: the selection won't modify the mesh itself.

But you can do some mesh manipulation, once the correct selections are made and operated upon.
Not wanting to throw you off the right track, but this is just to give you an idea of what can be done with sets: http://openfoamwiki.net/index.php/SetSet#Usage_example - in that example, the idea is to select all cells and faces that are sort-of damaged and remove them completely by using subsetMesh to operate on the cell selection.

Best regards,
Bruno
wyldckat is offline   Reply With Quote

Reply

Tags
fields chtmultiregionfoam

Thread Tools
Display Modes

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 On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Superlinear speedup in OpenFOAM 13 msrinath80 OpenFOAM Running, Solving & CFD 18 March 3, 2015 06:36
LES simulation with Smagorinsky2 model Zuixy OpenFOAM Running, Solving & CFD 3 October 20, 2011 06:17
Turbulence model in a simulation with wide spatial range of Reynolds numbers Chander CFX 33 September 28, 2011 08:48
Simulation of a single bubble with a VOF-method Suzzn CFX 18 October 2, 2009 04:18
Experimental And Simulation Data for my model Timothy Song CD-adapco 0 January 12, 2009 06:23


All times are GMT -4. The time now is 19:15.