I continue the trend of inviting some of the FEA-finest to write on the blog! This week none other than Blas Molero Hidalgo joined us with his awesome work! If you use Femap and you ever searched for an answer in google you know who Blas is. He has this superpower I don’t yet understand that whenever there is a question on the Internet regarding FEA in Femap, his answer will be there as well… I wonder how many clones does he have to put out so much work!
Drumroll… and let’s go!
Oh, wait – there is one more thing. Blas is so super cool that he provided an .STP file with this problems geometry – you can download it with the button below. It will allow you to solve the problem on your own – cool huh?!?
As always I will add my comments in quotes : )
First things first – the problem!
I will try to answer the question posed by Dragoljub about meshing with CGAP contact elements a contact problem between LUG & PIN. First of all, I see that LUG is split into parts, not necessary to have multiple solids here, simply create a 2D mesh and extrude to create 3D solid HEX mesh, to learn how to do it visit my blog.
Yup… this whole article is an answer to someones question : )
When dealing with contact problems the most important thing is to take advanced of symmetry in loads & boundary conditions: this will stabilize “naturally” the contact problem and will reduce both the model size & solution time. Here simply solid SLICE the assembly parts to let it ready to apply symmetry constraints as follows.
Pro tip by Blas:
LAYERS use is critical, I encourage to learn to use LAYERS correctly, this will help a lot to manage the model to hide or active portions of the model during meshing or model construction. If by error or slip one thing (geometry, mesh, etc..) is in the wrong layer, not problem, simply use MODIFY > LAYER> entity to move to the correct layer, not a big problem.
Mesh the thing!
Next activate to PIN layer and mesh with 2D PLOT PLANAR mesh: I have used an element size around 3 mm, the key here is to activate the option “map subdivisions” to have a quality mesh with QUAD-ONLY elements, the target is to have ZERO triangles, if not when extruding the 2D-Mesh to generate 3D solid mesh the result will be WEDGE elements, not good quality here, the target is to have quality QUAD elements to create HEX elements.
Once created the 2D Mesh in the pin face the “trick” is to generate vertical curves to use it to mesh with 1-D CGAP elements. For instance, the workflow could be the following:
- Define a workplane using TOOL >WORKPLANE > ON SURFACE using the vertical curve to orient the X-axis of the plane.
- Next use command GEOMETRY > CURVE – LINE > HORIZONTAL to create the vertical curves. Do not forget to set HORIZONTAL/VERTICAL LINE LENGTH in the PARAMETERS of the order.
- And finally once you have the vertical lines created you will need to use command “MODIFY > BREAK > AT ALL INTERSECTIONS” to break the vertical lines at the intersection with the circular edges of PIN & LUG, and also to break the LUG edge to make sure to have nodes at the intersection points when later performing the 2D meshing of the LUG face.
Next, activate the LUG LAYER and perform a 2D PLOT PLANAR mesh of the surface with QUAD4 elements. Make a proper preparation of the lug to arrive at a quality mesh, splitting the face to have regular regions to mesh with QUAD4 elements, this is critical. Remember: any triangle will create a WEDGE element after extruding the 2-D mesh.
Next, activate the PIN LAYER and apply a curve mesh size on the edges of the pin in the direction of extrusion: I have used an element size around 3 mm, then resulting in 5# a 12# divisions. Use command MESH > SWEEP > ELEMENT and generate the HEX elements of the PIN by sweeping the 2D PLOT PLANAR mesh along the two curves.
Next, activate the LUG LAYER and repeat the same procedure: using command MESH > SWEEP > ELEMENT generate the HEX elements of the LUG by sweeping the 2D PLOT PLANAR mesh along the curve.
Here you are the resulting 3D Solid mesh using CHEXA 8-nodes elements of both LUG & PIN, both GEOMETRY & MESH located in each corresponding layer: play with HIDE LAYER and see if any entity (geometry or mesh) is not in the correct layer. If this is the case, simply use command MODIFY > LAYER to move any entity, remember when using MODIFY > LAYER > SOLID you move as well surface, curves & points.
“Dealing with contact” with CGAP elements!
This is a nice trick, especially if you want to use SOL 106 in NX Nastran. This is a nonlinear solver, but it can’t really use “real” contacts, so CGAP fit there perfectly!
Next, let’s create the 1-D mesh of the CGAP elements:
- Very important, move curves & points to a new layer, for instance, name it CGAP, or use the 1.. Default Layer.
- Apply “MESH > MESH CONTROL > Size Along Curve” on all the curves used to mesh with CGAP elements prescribing ONE element per curve this is very important, make sure each curve line is meshed with only ONE element.
- Apply attribute on curves using “MESH > MESH CONTROL > Attributes Along Curve“. Select the GAP element property type under the “Line Properties”. The “trick” is to locate the cursor in the field INITIAL GAP and press the keys <Ctrl><M> and select the curve line, this short-cut will measure the length of the curve and will insert in the field “Initial Gap”.
- Enter a compression value of say 1e6 N/mm
- For orientation choose VECTOR and select the global X-axis.
This orientation thing is something that tells Femap how the beam is oriented in space. It knows where the axis is, but doesn’t know where the “up” is. This would be important for an I-Section for instance (you know, where the “strong” and the “weak” axis is). For CGAP this is less of an issue (it doens’t care), but you still need to define this direction. Just pick any that is not “along” the length of the CGAP and you’re fine : )
Repeat the above command with every curve line to mesh with 1-D CGAP elements. With I do is to edit the title including the curve length as well, this way is more descriptive.
Once all CGAP properties are created simply mesh ALL curves with command “MESH > GEOMETRY > CURVE“, select the CGAP curves and all CGAP elements will be created simultaneously.
Next step is to copy the generated CGAP elements using command “MESH > COPY > ELEMENT“. If you have created the CGAP elements in an isolated layer the HIDE all layers and you can select easily using a window the CGAP elements to copy. Enter the number of copies and use the method “ALONG VECTOR”.
If you HIDE the layer PIN you can see the mesh of the CGAP elements: each color represent a PROPERTY, play with it using command MODIFY > PROPERTY > COLOR > SELECT ALL > RANDOM
The next step is to MERGE NODES between CGAP & CHEXA elements: do not select ALL NODES of the model, make a window including only the nodes around the created CGAP elements. The reason is that we don’t want to merge nodes in the line where both PIN & LUG are coincident (touching), in next step we will create the node-to-node CGAP elements there, they are special because both nodes are coincident.
This is a really nice thing to know – I will definitely learn something in just a second!
For the creation of the CGAP elements exactly at the points where the LUG & PIN are touching each other we need to define a special CAGP property: we need to create a local coordinate system whose X-Axis is opposed to the direction of contact between LUG & PIN, in this case, the Z-axis (or normal to the “plane” of contact between LUG & PIN and opposed the to direction of contact). This way, using the linear contact functionality of NX Nastran, one gets compression only stiffness.
Next, during GAP property creation the local coordinate system is selected.
- Please note this is only necessary when creating CGAP elements with coincident nodes.
- Also please note the Initial Gap distance = 0.
For the generation of the CGAP coincident nodes simply use command “Mesh > Connect > Closest Link“, to select the set of nodes “FROM” and “TO” hide & show the corresponding LAYER and use METHOD > CURVE, selecting first the curve of LUG and next the curve of PIN, next select the CGAP property for the vector doesn’t matter, for instance (1,0,0), the orientation is defined in the property:
And here we are, all the CGAP elements are meshed, including the zero-length gaps, the NON-ZERO length gaps, and the CHEXA 3-D solid elements of both PIN & LUG.
Meshing is done – let’s move on!
Finally, we simply apply LOADS & BCs to the surface geometry and define the Linear Static Contact Study as always, making sure to activate “Gaps as contact” in the NX NASTRAN BULK DATA OPTIONS, if not, GAP will run as regular springs, NOT CONTACT:
If we solve the Linear Static Analysis you can see in the NX NASTRAN ANALYSIS MONITOR activating the CONTACT CONVERGENCE plot the solution finish at contact iteration#20, and that’s all, the solution seems to finish with success, not an error: wrong!!.
Please visit the F06 file and you will realize how important is to revise ALWAYS the output results file generated by NX NASTRAN: the solver perform CONTACT ITERATION #20 without convergence, then NX NASTRAN stop calculations, without issuing any warning or severe error message. This is wrong, the achieved contact result is not correct, the NX NASTRAN developers should change this because the user is not aware of this situation of lack of accuracy in the linear contact stress results.
Yup… always check output files. Also, if you will learn to read them, you would be consiedered a pro!
To solve the problem we need to increase the number of CONTACT ITERATIONS, by default is 20, I suggest to use for instance a value of 40. But with CGAP elements we don’t have GUI in FEMAP to do it, we need enter the following as TEXT in the NX NASTRAN BULK DATA OPTIONS for the BCTPARM command that is the NX NASTRAN command that control all the parameters for the contact algorithm with SOL101, 103, 111, 112 and the new nonlinear multistep solver SOL401:
Editing input files is also great : ) This is like a superpower of it’s own : )
If we rerun the linear contact problem using NX NASTRAN (SOL101) we can see that the solution now reach convergence very fast at contact iteration#7, and results are fully valid:
NX Nastran Basic Nonlinear (SOL 106)
I really like how there is “basic” and “advanced” nonlinear solvers in NX Nastran : P
Kind of gets you wonder what basic “lacks” doesn’t it : )
Let’s solve the problem using basic nonlinear solver of NX NASTRAN (SOL106). With the nonlinear solver is not necessary to include the “gaps as contact” in the BULK data neither to tune the BCPARM command, the CGAP element is nonlinear by nature (I remember to start using CGAP elements running COSMOS/M NONLINEAR Analysis around 30 years ago …. at that time SURFACE-TO-SURFACE contact doesn’t exist!!).
Yup, this is how much experience Blas have… I was in the kindergarden when he was using contact in nonlinear analysis !!
I will use LARGE DISPLACEMENTS (activated by default) and nonlinear contact is activated by default as well because CGAP elements are used. The nonlinear parameters used are the following: basically 25 increments, and 1 iteration before update the stiffness matrix:
The nonlinear results of maximum resultant displacement URES=0.0635 mm, that compared with the LINEAR CONTACT maximum displacement URES=0.0617 mm is telling you that the linear contact solution is not bad. You can play activating any plastic nonlinear material and compare results. Linear contact is valid meanwhile the resultant displacements could be considered as “small”, if not the results are useless…
Well, I hope the above explains the way how to mesh with 1-D CGAP elements and how to setup & solve a CONTACT HERTZ problem
Łukasz taking over the mic!
First of all – thanks Blas, this was a great read!
If you like such tutorials, and you would like to see more of those, let me know in the comments below.
In the meantime, be sure to check out my free FEA course (you can get it by signing up below):