CFD Online URL
[Sponsors]
Home > Forums > ANSYS Meshing & Geometry

[ICEM] Null pointer error?

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

Reply
 
LinkBack Thread Tools Display Modes
Old   May 26, 2010, 16:21
Default Null pointer error?
  #1
New Member
 
Patrick Young
Join Date: May 2010
Posts: 15
Rep Power: 6
Mudblood is on a distinguished road
I'm trying to model a tank, that has a fluid input through one pipe, and a fluid output through another pipe. So to model this, I have created a cylinder for the tank, and attached two smaller cylinders to a face for the inlet/outlets. I where the cylinders touch the tank, I deleted the face of the inlet and outlet pipes, and made a hole in the surface where the inlet/outlets touch the tank.

I then generate the mesh, and that works fine. However, when I open it in fluent, I get the following error:

WARNING: cell 15 or thread 22 has NULL face pointer 3. Clearing partially read grid.

It also gives me (x,y,z) coordinates of the offending cell, so I looked at where it was, and it appears to be around my outlet. I have attached a picture of the area, and dotted the cell with a green point.

Anyone have an idea why this isn't working?
Attached Images
File Type: jpg mesh.JPG (92.0 KB, 52 views)
Mudblood is offline   Reply With Quote

Old   May 27, 2010, 10:38
Default You can't just delete shells
  #2
Senior Member
 
PSYMN's Avatar
 
Simon Pereira
Join Date: Mar 2009
Location: Ann Arbor, MI
Posts: 2,660
Blog Entries: 1
Rep Power: 34
PSYMN has a spectacular aura aboutPSYMN has a spectacular aura about
A null face pointer error means you are missing boundaries... Usually I see it in 2D cases where the user has forgotten to create line elements around the perimeter, but in your case, it is a direct result of deleting shell elements. FLUENT and many other solvers need these shell elements to determine the boundaries of the fluid.

You can't just delete shells to join two fluids together. You must either merge the regions (or mesh them simultaneously) to get a conformal mesh or you must keep the shells between the volumes as an internal wall and apply your non-conformal boco to that..

To check for this problem in ICEM CFD, you can run the edit mesh checks, particularly the one for "uncovered faces".
PSYMN is offline   Reply With Quote

Old   May 28, 2010, 12:59
Default
  #3
New Member
 
Patrick Young
Join Date: May 2010
Posts: 15
Rep Power: 6
Mudblood is on a distinguished road
Oh okay.

I tried merging the surfaces for the bottom of the tank, and the outlet and it was not successful.

I tried the route that did not involve deleting the opening to the outlet, but I can't figure out which boundary condition to apply for Fluent to give it the "non-conformal" boco.

Also, the uncovered faces check in ICEM came up with nothing exceptional.
Mudblood is offline   Reply With Quote

Old   May 28, 2010, 16:35
Default Circle within the square...
  #4
Senior Member
 
PSYMN's Avatar
 
Simon Pereira
Join Date: Mar 2009
Location: Ann Arbor, MI
Posts: 2,660
Blog Entries: 1
Rep Power: 34
PSYMN has a spectacular aura aboutPSYMN has a spectacular aura about
Quote:
Originally Posted by Mudblood View Post
Oh okay.

I tried merging the surfaces for the bottom of the tank, and the outlet and it was not successful.

I tried the route that did not involve deleting the opening to the outlet, but I can't figure out which boundary condition to apply for Fluent to give it the "non-conformal" boco.

Also, the uncovered faces check in ICEM came up with nothing exceptional.

Merge Meshes is very robust, but has very specific requirements, specifically that the merged part be shared properly and that both sides share a perimeter. I have several other posts about that. Basically, you can't merge a square to a circle, you must first have the perimeter of the circle imprinted on the square so that your square's mesh can include that perimeter. Then you don't merge the square with the circle, you merge the circle inside the square with the circle. Do you know what I mean?

Ask your fluent question on the Fluent Forum. Just say you have two separately meshed volumes that you want to share a non-conformal interface... Perhaps there is even a tutorial about that. I think the trick is the same thing that would have made your merge meshes successful. The Overlap region needs to share a perimeter on both sides. In other words, you would apply the boco to the circle and the circle within the square, but not to the square.

The uncovered faces check should either come up with uncovered faces (which would have lead to null pointer errors) or it won't. There are not degrees of "exceptional". A single uncovered face will cause a problem in Fluent.
PSYMN is offline   Reply With Quote

Old   May 28, 2010, 17:04
Default
  #5
New Member
 
Patrick Young
Join Date: May 2010
Posts: 15
Rep Power: 6
Mudblood is on a distinguished road
Quote:
Originally Posted by PSYMN View Post
Merge Meshes is very robust, but has very specific requirements, specifically that the merged part be shared properly and that both sides share a perimeter. I have several other posts about that. Basically, you can't merge a square to a circle, you must first have the perimeter of the circle imprinted on the square so that your square's mesh can include that perimeter. Then you don't merge the square with the circle, you merge the circle inside the square with the circle. Do you know what I mean?

Ask your fluent question on the Fluent Forum. Just say you have two separately meshed volumes that you want to share a non-conformal interface... Perhaps there is even a tutorial about that. I think the trick is the same thing that would have made your merge meshes successful. The Overlap region needs to share a perimeter on both sides. In other words, you would apply the boco to the circle and the circle within the square, but not to the square.

The uncovered faces check should either come up with uncovered faces (which would have lead to null pointer errors) or it won't. There are not degrees of "exceptional". A single uncovered face will cause a problem in Fluent.
I'm not sure what being shared properly means. What you said confuses me, but the attached image shows my geometry. I have one surface that is the "square" and one that is the "circle". A curve exists outlining the hole, and where the interface is. From there, I generated a mesh and got the result shown in my first post.

The I meshed the volume simultaneously as the geometry and the meshing was done in ICEM. The resulting mesh will not open in Fluent.

The uncovered faces check did not come up with any uncovered faces, and the mesh still results in the null pointer error, which confuses me.
Attached Images
File Type: jpg surfaces.JPG (10.7 KB, 18 views)
Mudblood is offline   Reply With Quote

Old   June 1, 2010, 16:29
Default Uncovered to the Max
  #6
Senior Member
 
PSYMN's Avatar
 
Simon Pereira
Join Date: Mar 2009
Location: Ann Arbor, MI
Posts: 2,660
Blog Entries: 1
Rep Power: 34
PSYMN has a spectacular aura aboutPSYMN has a spectacular aura about
OK, after looking at your model, I see the problem right away... You have no shells at all. Fluent (and all CFD solvers that I know of) need shells to bound the volume and for placing bocos.

Mudblood_1.gif

If you generated this in ICEM CFD, just do it again and DON'T delete the shells.

If you want to fix it without regenerating, then you must go in and run your diagnostics. It will tell you that you have uncovered faces. These are the faces of volume elements with no neighbors. Choose Fix and it will ask you for a part to put some new shell elements in (I called mine "TEMP"). It then covers these faces in shells of that part. Next, it will run a diagnostic for missing internal faces... Do the same here (I called mine "TEMPINT")

Great, so now we have all our volumes covered and separated. But we want to get these shells back into the parts of the underlaying surfaces so we can setup appropriate bocos. Go to "Edit Mesh (tab) => Repair Mesh => Associate Mesh"; For select elements, use the second last icon in the tool bar to select all the shells in the model (or hotkey = 2). This function takes a ray from the centroid of each element to the nearest surface and changes the element part to match the surface part... It usually does a pretty good job, but is not as good as simply not deleting your shells so you may need to visually check for stragglers. I do this by turning on one part at a time and checking the shells. I guess your surfaces for HEADER and SURFACE overlap because some elements ended up in one or the other. You should decide and manually put those into the part you want them in (even if they are all just wall and it doesn't really matter). I moved the elements within the circle into "Header". There was a similar Overlap between the Parts "FLUID" (strange name for a surface) and "TANKWALLS", so I moved the "FLUID" shells into "TANKWALLS". Last bu not least, The "TEMPINTERNAL" Part still had a few elements in it... So I put those into a subset and added some layers to see what was going on around those elements. As this pic showed, these turned out to be elements who should have been in the Header part, but whose centroid fell in the gap between the "HEADER" and the "BRANCHES"... I fixed the problem by moving those to the "HEADER"

Mudblood_2.jpg
PSYMN is offline   Reply With Quote

Old   June 1, 2010, 16:30
Default Start over strategy
  #7
Senior Member
 
PSYMN's Avatar
 
Simon Pereira
Join Date: Mar 2009
Location: Ann Arbor, MI
Posts: 2,660
Blog Entries: 1
Rep Power: 34
PSYMN has a spectacular aura aboutPSYMN has a spectacular aura about
In the end, as often happens, by the time I am finished fixing your model, I am getting an idea of what you probably intended to do. You probably intended to have 1, 2 or 3 volumes (not 10). To join these volumes together and not have shells between them, use Material points. Put the same material point in each volume that you want joined (like "union" for mesh flood fill). If you do that, and then remesh, you could save yourself some hassle. You may also want density regions or at least a "width" setting on those NOZZEOUTLETs.

If I assume that you wanted just one FLUID, separated by shells for the pipe walls (HEADER and BRANCHES) but no walls where the fluid flows thru, then you just need one material point (FLUID) in each volume and a Thinwall Flag on this important thin wall parts so the shells are not removed during Flood fill. Or in my case, I just deleted the extra surfaces and removed the surfaces between volumes (except NOZZEL OUTLET). I also deleted all the unnecessary points (all of them were unnecessary since your model had no corners) and the seam curves, etc. The unnecessary points just constrain the model and reduce quality. The seam curves do similar and can actually cause problems if left after removing the points.

After Meshing with the Octree Mesher (this is what you seem to have used last time, you may want to remesh the tetra region with Delaunay with TGLib and the AF refinement. In which case you should use the Density regions instead of the width setting.

And I didn't have the hour or two it would take to Hexa mesh this, but that would really be your best solution for a model like this.

Anyway, I will send you some files...
PSYMN is offline   Reply With Quote

Reply

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
Compile problem ivanyao OpenFOAM Running, Solving & CFD 1 October 12, 2012 10:31
erros when compiling simpleSRFFoam examosty OpenFOAM Installation 12 April 26, 2010 19:53
compile errors of boundary condition "expDirectionMixed" liying02ts OpenFOAM Bugs 2 February 1, 2010 21:11
OpenFOAM on MinGW crosscompiler hosted on Linux allenzhao OpenFOAM Installation 127 January 30, 2009 20:08
DecomposePar links against liblamso0 with OpenMPI jens_klostermann OpenFOAM Bugs 11 June 28, 2007 18:51


All times are GMT -4. The time now is 22:42.