Showing results for 
Search instead for 
Did you mean: 

HERTZ Contact in FEMAP: Meshing with 1-D Contact CGAP node-to-node elements

Solution Partner Phenom Solution Partner Phenom
Solution Partner Phenom


I will try to answer the question posed by Dragoljub about meshing with CGAP contact elements a contact problem between LUG & PIN. First at all I see that LUG is splitted in many parts, not necessary to have multiple solids here, simple create 2D mesh and extrude to create 3D  solid HEX mesh, to learn how to do it visit my block in the following address:



 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.

VERY IMPORTANT: 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.


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 to 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 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.


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 crompression value of say 1e6 N/mm
  • For orientation choose VECTOR and select the global X axis.

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 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, OK?.


For the creation of the CGAP elements exactly at the points where the LUG & PIN are touching each other we need to define an 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`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.


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 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.

 ^^^NUMBER OF CONTACT STATUS CHANGES:                2       (NCHG:            0)    
 ^^^NUMBER OF INACTIVE CONTACTS:                    49 
 ^^^NUMBER OF STICKING CONTACTS:                     0 
 ^^^NUMBER OF SLIDING CONTACTS:                     11                                                                                                                                  
 ^^^      FORCE LOOP:            1 
 ^^^      FORCE LOOP:            2 
 ^^^      FORCE LOOP:            3 
 ^^^      FORCE LOOP:            4 
 ^^^      FORCE LOOP:            5 
 ^^^CONTACT FORCE CONVERGENCE RATIO:      6.584717E-05       (CTOL:     0.000000E+00)    
 ^^^NUMBER OF CONTACT STATUS CHANGES:                2       (NCHG:            0)    
 ^^^NUMBER OF INACTIVE CONTACTS:                    51 
 ^^^NUMBER OF STICKING CONTACTS:                     0 
 ^^^NUMBER OF SLIDING CONTACTS:                      9 
 ^^^      FORCE LOOP:            1 
 ^^^      FORCE LOOP:            2 
 ^^^      FORCE LOOP:            3 
 ^^^      FORCE LOOP:            4 
 ^^^      FORCE LOOP:            5 
 ^^^CONTACT FORCE CONVERGENCE RATIO:      3.258061E-05       (CTOL:     0.000000E+00)    


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 th 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:

BCTPARM      108  PENTYP       1 INIPENE       0    MAXS      40

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:

 ^^^NUMBER OF CONTACT STATUS CHANGES:                6       (NCHG:            0)    
 ^^^NUMBER OF INACTIVE CONTACTS:                    54 
 ^^^NUMBER OF STICKING CONTACTS:                     0                                                                  
 ^^^NUMBER OF SLIDING CONTACTS:                      6 
 ^^^      FORCE LOOP:            1 
 ^^^      FORCE LOOP:            2 
 ^^^      FORCE LOOP:            3 
 ^^^      FORCE LOOP:            4 
 ^^^      FORCE LOOP:            5 
 ^^^CONTACT FORCE CONVERGENCE RATIO:      7.377217E-05       (CTOL:     1.000000E-02)    
 ^^^NUMBER OF CONTACT STATUS CHANGES:                0       (NCHG:            0)    
 ^^^NUMBER OF INACTIVE CONTACTS:                    54 
 ^^^NUMBER OF STICKING CONTACTS:                     0 
 ^^^NUMBER OF SLIDING CONTACTS:                      6 



Lets 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 donsnt exist!!).

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 meamwhile the resultant displacements could be considered as "small", if not the results are useless ..


Well, I hope the above explain the way how to mesh with 1-D CGAP elements and how to setup & solve a CONTACT HERTZ problem, OK?.

Best regards,


Blas Molero Hidalgo, Ingeniero Industrial, Director
Blog Femap-NX Nastran: