I'm willing to perform a thermal simulation for a system composed of different solids.
In order to do this I tried to mesh the different solids by being sure common surfaces have common node positions.
However no matter how much I try, I always get different mesh along the common surfaces and get bad results during the thermal simulation.
How should I procede to mesh a multi-solid system?
Do the mesh need to be coincident in the common surfaces?
This function usually works well, use Mesh > Mesh Control > Approach on Surface to specify "slaved" surfaces.
Read carfully the concerned help section though, §126.96.36.199 in the Commands section. Most notable points are:
- surfaces on different solids must be closely aligned
- surfaces to link must have the same mesh sizing
- this is intended for hex-meshable geometry, so there might be cases where this fails.
If this fails persistently, the common workarounds will be to create 3D from 2D mesh:
- extrude element faces - but this supposes your 2nd solid is an extrudable geometry
or - mesh from surfaces (Mesh > Geometry > Solid from Elements) - but this generally works for tet-mesh, it's a bit tricky to get this to work on hex mesh (Help §188.8.131.52)
Hope this helps!
The workflow depends if you plan to mesh solids using TET or HEX mesh elements. In the command "Mesh > Mesh Control > Size on Solid" you will have to choose the option that is appropriate to the type of meshing that you want to do. Depending on your choice however, the mesh sizing that is generated can be significantly different.
If you choose Tet meshing, the resulting sizes are similar to those created if you had simply set mesh sizes on the individual surfaces. Tet meshing does not require any additional adjustments to the mesh sizing.
If you are specifying sizes on multiple solids at the same time, this option will set a “slaved” mesh approach on surfaces that are adjacent to each other and which are the same size. (this condition is critical, both solid sides should be identical!!). This option automatically finds surfaces which are adjacent between multiple solids and slaves them to each other.
Later, when issuing command "Mesh > Geometry > Solids" make sure to activate the merging nodes feature. This option allows you to choose how nodes will be merged between solids, using the default merge tolerance, after solids have been meshed with tetrahedrals. The default option is 0..Off, which will not merge any nodes between solids. 1..New Nodes will only merge nodes between solids which were meshed during the current command. Finally, 2..All Nodes will run a “node merge” on all nodes in the model.
Preparing for hex meshing however, requires very specific mesh sizing. Many surfaces must be mapped meshed so that the hex mesh can be generated. In addition, surfaces across multiple solids must be consistently sized and meshed so that the resulting hex mesh will be compatible. Due to this extra checking that must be done, hex mesh sizing takes much more time than tet mesh sizing
Also, if you are preparing for hex meshing, you MUST select all solids that you plan to mesh in a single command. If you try to select them one at a time, there is no way to guarantee that the meshes will be compatible across different solids.
Independly of the node merging option above, the glue face-to-face gives you freedom about how to joint two solids. Glue is a simple and effective method to join meshes which are dissimilar. It correctly transfers displacement and loads resulting in an accurate strain and stress condition at the interface. The grid points on glued edges and surfaces do not need to be coincident. Glue creates stiff springs or a weld like connection to prevent relative motion in all directions.
For GLUE Thermal Coupling I have created the following tutorial for heat transfer between a chip and a PCB using FEMAP & NX NASTRAN -- enjoy!:
thank you very much for your answer.
In fact the "Approach on Surface" worked perfecty and I could obtain the same mesh on surfaces that were "unslaved" before. I think that is the way to go for my model.
However I have pleny of surfaces that would need that approach and manually selecting each of them would require ages (there are more than 300 surfaces that would require to be slaved manually). Is there any way to automatize the process?
And I still have a short question:
Some of the surfaces I tried to slave appear to be unrelated. For many of them I get the following error message:
"Unable to link mesh locations between Surfaces XXX and YYY. Surfaces must be on same solid or must be coincident."
If I do any intersect operation between the different solids I get the intersecting surfaces perfectly so I don't think my surfaces are not closely aligned. If that would be the case I don't know how the get closely aligned surfaces. I obtained the internal surfaces by subtracting a master solid with a smaller one, so surfaces should be aligned.
By the way; its quite a complex geometry so I want to mesh it by tetra. I tried hex but didn't work, and considering the quite complex geometry it didn't suprise me that much.
Thank you very much for the reference on the help. That was helpful too.
Dear Blas Molero,
Thank you very much for your answer.
The method you describe works well for simple geometries and hex mesh, but I don't get good results with tet mesh.
Although I select the same size on solid for all the solids and I chose the "Adjacent Surface Matching" I don't get the same mesh between different surfaces.
I think maybe my problem is that adjacent surfaces are not considered as connected. I think that maybe your method work well but I've got a bad model.
But considering the the internal surfaces are obtained from a solid subtraction, there is no reason why I don't get the same meshing on connecting surfaces.
In any case thank you for your answer. I didn't know about the "Merge Nodes" option. I always did it as a separate operation after the meshing. By doing it directly and automatically save me some time. Thank you very much.
I'm now trying your glued approach but I'm worried if that will work in the case of a thermal simulation. That's the kind of simulation I'm supposed to do...
Along this line(s)
Does anyone have any thoughts on how to remedy:
Elements do not form a single outer surface. There are too many elements connected to Nodes 125352 and 125353
Ive tried checking coincident nodes and have a connector in place between my two surfaces. Well at least I think I have, I could have done it wrong perhaps.
A trick I usually run to see is 3-D meshing will be successful is to perform a 2-D mesh using ALL the surfaces of the solid with 2-D PLOT-PLANAR elements using command "Mesh > Geometry > Surface > Method = On Solid", select the solid body, click OK and in the AUTOMESH SURFACES form do not select any property (let the field empty, in blank!), this way you will mesh with plot-only elements.
After performing the 2-D mesh look for FREE EDGES using command "View > Select" (o clicking the short-cut "F5" key), if not free edges exist then your 3-D solid mesh will be successful.
You can improve the 2-D mesh "interactively" using the MESHING TOOLBOX with "MESH SIZING", when you are happy with your 2-D mesh then issue command "Mesh > Geometry > Solids" and the 2-D PLOT PLANAR mesh will be a seed-mesh for the 3-D TET mesh, OK?.
Would you please show me how to impose compatibloe nodes between two shells when one is perpendicular to the other? Please see the attached file. Originally, these are a round HSS (Hollow Structural Steel) and a square HSS. The interface is between the perimeter of the round HSS and a surface of the square HSS.
I am doing this despite the fact that the two shells are glued, which should not require this level of precision. The reason is that there were very high stresses just due to the geometry.
Hi Feli and everone,
when you use the command "Mesh > Mesh Control > Size on Solid" with Adjacent Surface Meshing, it wont work, when you have connection region(s) on adjacent surfaces (this is an error in Femap), In this case you must first make the mesh sizing, and using later the connection region commands.
I wrote a lot of API, I share two to about this theme.
First one is the macro Mesh Size Along Curve - Match to Curve on Solid (MeshSizeAlongCurve_MatchToSolid.bas). It use an .ini file, in my case "D:\Home\Femap\KadP_Femap.ini" (filename with path written in the procedure InitializeVariables, can be modified). This variables are:
CustomSizeLimet - this is the number of element on curve, under this value Femap modify mesh size to custom mesh size. This value in current Femap v11.2 version is 325.
Skip_NonCoincident - when True, API skip curves with noncoincident endpoints.
Tolerance - this is the tolerance to checking the coincident endpoints of the curves.
First of all you must select the master solid (master curve must be on this solid), after that the muster curve (from where you want to copy mesh size) and one or more curves (where you want to copy mesh size). After copying mesh size you can select again master curve and other curve(s) until you click Cancel. I sent this macro earlier, see my post "Equal length mesh sizing positions".
The second macro is the Mesh Approach Link to Surface (LinkToSurface.bas). It use from the previous ini file the following variable:
Answer_Group - when True, the selected surfaces will be added to active group.
First you must select the active solid (muster surface must be on this solid), after that two surfaces (one of them must be on master solid). The API make the link between this surfaces, as the command Mesh > Mesh Control > Approach on Surface, Matched - Link to Surface (and remove previous slaving, when it exists). You can add the selected surface to active group (when variable Answer_Group is True), modify selected surface's color to Light Blue (or Magenta, when surface color of master surface was Magenta, because I use this color to mark surfaces with connection region). After creating the link you can select two surfaces again until you click Cancel.
With these macros I can make the mesh sizing much faster as with the original commands of Femap. I hope, these can help you.