Contacto Hertz en FEMAP y NX NASTRAN con elementos GAP

En 1882 Heinrich Hertz resolvió el problema del contacto entre dos cuerpos elásticos con superficies curvas. Esta relevante solución clásica supone el fundamento para problemas más modernos de la mecánica de contacto. Los principios de la mecánica de contacto pueden ser aplicables en áreas como el contacto rueda-carril, mecanismos de acoplamiento, embragues, sistemas de frenos, neumáticos y rodamientos deslizantes, motores de combustión, articulaciones, juntas, remodelaciones, estudio de materiales, soldadura por ultrasonidos, contactos eléctricos y muchos otros. Los desafíos actuales en este campo incluyen desde la verificación de resistencia entre elementos de contacto y la influencia de la lubricación y el diseño de material en la fricción y el desgaste. Otras aplicaciones de la mecánica de contacto se amplían al campo de la micro y nanotecnología.

cgap-elements-hertz-contact.png

Según el manual de “NX NASTRAN V12 Element Library“:

In NX Nastran, you can define gap and friction elements with a CGAP entry. The element coordinate system and nomenclature are shown in Figure 6-13. CID is required, if it is used to define the element coordinate system. Otherwise, the X -axis of the element coordinate system, Xelem , is defined by a line connecting GA and GB of the gap element. The orientation of the gap element is determined by vector similar to the definition of the beam element, which is in the direction from grid points GA to GO or defined by (X1, X2, X3).

The properties for the gap elements are defined on the PGAP entry. The initial gap opening is defined by U0 . If the gap is closed (UA − UB ≥ U0 ), the axial stiffness (KA ) has a very large value (relative to the adjacent structure). When the gap is open, there is a small stiffness KB in the axial direction.

NX Nastran includes two types of gap elements: non-adaptive and adaptive. When you use the non-adaptive GAP element, you specify the anisotropic coefficients of friction (μ1 and μ2 ) for the frictional displacements. Also, the anisotropic coefficients of friction are replaced by the coefficients of static and dynamic friction μs and μk. On the PGAP continuation entry, the allowable penetration limit Tmax should be specified because there is no default. In general, the recommended allowable penetration Tmax is about 10% of the element thickness for plates or the equivalent thickness for other elements that are connected by GA and GB. When Tmax is set to zero, the penalty values will not be adjusted adaptively.

Gap element forces (or stresses) and relative displacements are requested by the STRESS or FORCE Case Control command and computed in the element coordinate system. A positive axial force Fx indicates compression. For the element with friction, the magnitude of the slip displacement is always less than the shear displacement after the slip starts. For the element without friction, the shear displacements and slip displacements have the same value.

 En este POST voy a mostrar cómo resolver con FEMAP y NX NASTRAN el problema de contacto de HERTZ usando los elementos 1-D CGAP de contacto nodo-a-nodo. Me diréis porqué aprender a usar elementos CGAP de contacto nodo-a-nodo cuando el módulo de Análisis Estático Lineal de NX NASTRAN (SOL101) soporta contacto de no penetración SUPERFICIE-A-SUPERFICIE, ofreciendo una gran facilidad para definir contactos de no penetración sin que el usuario tenga que mallar de forma explícita los elementos de contacto, ya que de eso se encarga el solver NX NASTRAN durante el cálculo. Pues veréis:

 Aprender a mallar con elementos de contacto CGAP es básico en Elementos Finitos: son elementos clásicos que yo ya usaba hace más de 30 años. Eso sí, exclusivamente para realizar análisis no lineal, aunque ahora en la época moderna podemos resolver problemas de contacto de no-penetración mediante análisis estático lineal (es lo que se denomina “linear contact stress“), un avance un tanto peligroso ya que debemos recordar que la solución es válida siempre que estemos en el campo de los pequeños desplazamientos, así que atentos!!.
 Otra razón importante: el módulo no lineal básico de NX NASTRAN (SOL106) no soporta contactos de no-penetración superficie-a-superficie, así que para resolver problemas de contacto en análisis no lineal es necesario mallar con elementos CGAP. Esto ya está plenamente resuelto a partir de NX NASTRAN 12 con los nuevos módulos de Análisis No Lineal SOL401 & SOL402 que soportan contacto de no-penetración superficie-a-superficie, pero requiere adquirir una licencia aparte, así que quien no tenga licencia deberá seguir usando el viejo SOL106.

CONTACT-HERTZ.png

 En problemas de contacto es importante sacar el máximo partido de la simetría en geometría, cargas y condiciones de contorno, NUNCA estudiar el problema antero: esto estabiliza el modelo frente a movimientos de cuerpo rígido, y reduce tanto el tamaño del modelo como el tiempo de cálculo, es vital!. En este caso nos hemos quedado con 1/4 de modelo aplicando las correspondientes condiciones de contorno de simetría.

MUY IMPORTANTE: el uso de CAPAS (LAYERS) es crítico cuando queremos resolver problemas de contacto en ensamblajes con múltiples componentes, animo a usar las capas en FEMAP de forma correcta y eficiente, te permitirá gestionar la visibilidad de los componentes del modelo para facilitar el mallado, definir contactos, etc.. Si por error un componente se encuentra en una capa que no le corresponde, no hay problema, simplemente usa la orden MODIFY > LAYER y mueve el sólido, superficie, curva, punto o malla a la capa que le corresponda, OK?.
Moveré tanto el PIN como LUG a capas separadas con el correspondiente nombre.

CGAP1.png

 Activaremos la CAPA del componente PIN y la cara plana la mallaremos con elementos planos 2-D del tipo PLOT PLANAR: aquí he utilizado un tamaño de malla de 3 mm, la clave aquí es activar la opción “map subdivisions” para tener una malla de calidad con elementos QUAD-ONLY, el objetivo es tener  triángulos, si no al extruir la malla 2D para generar una malla sólida 3D el resultado será elementos tipo WEDGE, hay que evitarlos siempre que sea posible porque no son de buena calidad, el objetivo es tener elementos QUAD de calidad excelente para crear elementos CHEXA.

Una vez que hemos creado la malla 2D en la cara del pasador, el “truco” consiste en generar curvas verticales para mallarlas con elementos GAP. Por ejemplo, el flujo de trabajo podría ser el siguiente:

  • Definimos un plano de trabajo utilizando TOOL >WORKPLANE > ON SURFACE utilizando la curva vertical para orientar el eje X del plano.
  • A continuación, usaremos el comando GEOMETRY> CURVE – LINE> HORIZONTAL para crear las curvas verticales. No olvides configurar la LONGITUD DE LÍNEA HORIZONTAL / VERTICAL en los PARÁMETROS de la orden, por defecto vale 1.0.
  • Y finalmente, una vez que hayamos creado las líneas verticales, usaremos la orden “MODIFY > BREAK > AT ALL INTERSECTIONS” para romper las líneas verticales en la intersección con los bordes circulares de PIN y LUG, y también para romper el borde LUG para asegúrese de tener nodos en los puntos de intersección cuando más tarde realice el mallado 2D de la cara de la pieza LUG.

CGAP2.png

 Seguidamente activamos la capa LUG y crearemos la malla 2-D PLOT PLANAR usando como geometría la cara plana de LUG mallando con elementos cuadriláteros de 4-nodos QUAD4.
Deberemos preparar bien la geometría de la cara base para tener una malla QUAD4 de buena calidad, por ejemplo, partiendo la cara plana en regiones regulares de 4 lados siempre que sea posible, esto es crítico.
Recuerda: un elemento triángulo plano 2-D creará elementos sólidos 3-D del tipo CPENTA al extruir la malla 2-D.

CGAP3.png

 Seguidamente activamos la capa PIN y prescribimos una densidad de malla en las dos curvas que usaremos como PATH para definir la dirección de la extrusión mediante la orden MESH > MESH CONTROL > SIZE ON CURVE: usando un tamaño de malla de 3 mm resulta en 5 y 12 divisiones.
• El siguiente paso es usar la orden MESH > SWEEP > ELEMENT y generamos los elementos CHEXA del PIN arrastrando la malla 2D PLOT PLANAR a lo largo de las dos curvas seleccionadas.

CGAP4.png

 Seguidamente activamos la capa LUG y repetimos el mismo procedimiento: asignamos un tamaño de malla de 3 mm a una curva en dirección de la extrusión (en este caso 5 divisiones) y seguidamente usando la orden MESH > SWEEP > ELEMENT generamos los elementos CHEXA de la pieza LUG arrastrando la malla 2D PLOT PLANAR a lo largo de la curva.

CGAP5.png

Aquí tenemos la malla resultante de las piezas LUG & PIN a base de elementos CHEXA de 8-nodos, con la geometría y la malla todo incluido en su capa correspondiente: juega con HIDE LAYER y comprueba que ninguna entidad (malla o geometría) no está en la capa correcta. Si fuera el caso, simplemente usa la orden MODIFY > LAYER para mover cualquier entidad, recuerda que por ejemplo usando MODIFY > LAYER > SOLID mueves también las superficies, curvas y puntos que pertenecen al sólido (no así la malla, eso es un proceso separado).

CGAP6.png

No olvidemos usar la orden MODIFY > ASSOCIATIVITY > AUTOMATIC para asociar la malla de elementos 3-D Sólidos CHEXA que hemos creado por extrusión de la malla 2-D con la geometría sólida de las piezas PIN & LUG. Si no lo hacemos, la malla no estará asociada con la geometría, y cuando apliquemos cargas & condiciones de contorno a la geometría no se transmitirá a la malla, y el solver NX NASTRAN nos dará error, ¿OK?.

 Seguidamente creamos la malla correspondiente a los elementos GAP de 2-nodos:

  • MUY IMPORTANTE: mover las curvas & puntos a una nueva capa, por ejemplo dale el nombre GAP, o usa la capa 1.. Default Layer. Asegúrate de activar la capa.
  • Aplicamos la orden “MESH > MESH CONTROL > Size Along Curve” a todas las curvas a mallar con elementos CGAP prescribiendo UN elemento por curva (esto es muy importante!!), asegúrate de que cada curva esté mallada con sólo UN elemento GAP, de lo contrario, si mallas con más de un elemento GAP por curva el solver NX NASTRAN dará error.
  • Aplicamos atributos de mallado en las curvas usando la orden “MESH > MESH CONTROL > Attributes Along Curve“. Seleccionamos el tipo de elemento GAP de la familia “Line Elements” en la ventana “Element / Property Type“:

  • El “truco” es colocar el cursor en el campo INITIAL GAP y pulsar simultáneamente las teclas “Ctrl” y “M” y seleccionar una de las curvas a mallar con un elemento CGAP, este “atajo” medirá la longitud de la curva y el resultado lo insertará en el campo “Initial Gap“.
  • En el campo “Compression Stiffness” introducir un valor de digamos 1e6 N/mm (es la rigidez del elemento GAP cuando se cierre).

  • Para definir la orientación del elemento GAP elegimos VECTOR y seleccionamos el eje X global (siempre debemos elegir un vector perpendicular a la línea que une los dos nodos del elemento GAP).

Repetiremos el mismo proceso con cada una de las curvas que vamos a mallar con elementos GAP. Lo que yo hago es editar el título de la propiedad incluyendo la longitud del elemento GAP, de esta forma todo es más descriptivo.

Una vez que se hayan creado todas las propiedades de los elementos GAP y asignadas a las curvas correspondientes procedemos a mallar las curvas con la orden “MESH > GEOMETRY > CURVE“, seleccionamos todas las curvas y todos los elementos GAP se crean simultáneamente.

 El siguiente paso es copiar los elementos GAP generados anteriormente usando la orden “MESH > COPY > ELEMENT“. Si has creado los elementos GAP aislados en una capa simplemente oculta (HIDE) el resto de capas y podrás seleccionar de forma fácil usando una ventana los elementos GAP a copiar: introduce el nº de copias (5 en nuestro caso) y usa el método “ALONG VECTOR“.

CGAP8.png

Si ocultamos la capa PIN podemos ver la malla de los elementos GAP: cada color representa una propiedad diferente, juega con los colores de propiedades asignando de forma aleatoria un color por propiedad usando en FEMAP la orden MODIFY > PROPERTY > COLOR > SELECT ALL > RANDOM:

CGAP9.png

 El siguiente paso es MERGEAR nodos comunes entre elementos CGAP y CHEXA: no selecciones todos los nodos del modelo, haz una ventana incluyendo únicamente los nodos alrededor de los elementos CGAP generados anteriormente. La razón es que no queremos mergear los nodos coincidentes situados en la línea de contacto entre PIN y LUG. En el siguiente paso crearemos aquí un elemento especial CGAP de 2-nodos, es especial porque estará formado por dos nodos que tienen la misma coordenada X,Y,Z en el espacio.

CGAP10.png

 Para la creación de los elementos GAP situados exactamente en la línea de contacto físico entre los cuerpos LUG y PIN necesitamos definir una propiedad de elemento GAP especial: necesitamos crear un sistema local de coordenadas cuyo eje X vaya en la dirección opuesta al contacto entre los cuerpos LUG y PIN, en este caso en la dirección negativa del eje Z global (es decir, eje normal al plano de contacto entre LUG y PIN, y opuesto a la dirección de contacto). De esta forma, usando la funcionalidad de contacto lineal de NX NASTRAN, tendremos elementos GAP de sólo compresión.

CGAP11-local-coordinate-system.png

 El siguiente paso es definir la propiedad especial del elemento de contacto GAP: aquí seleccionamos el sistema de coordenadas locales y lo metemos todo en la propiedad del elemento, no en los atributos de mallado de las curvas.

  • Nótese que esto es un caso especial, es sólo necesario cuando creamos elementos GAP con nodos coincidentes, es decir, de longitud cero.
  • También nótese que Initial Gap distance = 0.

CGAP11-prop-for-CGAP-coincident-nodes.png

 Para el mallado de los elementos GAP de longitud cero (con nodos coincidentes):

  • Usar la orden “Mesh > Connect > Closest Link“, donde para seleccionar el grupo de nodos “FROM” y “TO” simplemente ocultamos y visualizamos la capa correspondiente de LUG y PIN y con METHOD > CURVE seleccionamos primero la curva de LUG y seguidamente para el grupo TO la curva de PIN.
  • Seguidamente seleccionamos la propiedad CGAP d=0mm.
  • Para el vector no importa (por ejemplo mete 1,0,0) ya que la orientación está definida en la propiedad del elemento GAP.

CGAP11.png

¡¡Y listo!!, todos los elementos GAP están mallados, incluyendo los elementos GAP de longitud cero, así como todos los elementos sólidos CHEXA de los componentes PIN y LUG.

CGAP12.png

 El siguiente paso es aplicar las correspondientes cargas y condiciones de contorno a las superficies de PIN y LUG y definir los parámetros del análisis Estático Lineal.

CGAP13.png

 En los parámetros del análisis estático lineal con NX NASTRAN (SOL101) asegúrate de activar “Gaps as contact” en el NX NASTRAN BULK DATA OPTIONS. Si en un análisis estático lineal no se activa este parámetro los elementos GAP se comportan como muelles, no como elementos de contacto genuinos que se abren o se cierran en función de si la dirección de la carga es de tracción o de compresión.

En cálculo no lineal con NX NASTRAN (SOL106) no es necesario activar este parámetro de forma explícita, los elementos GAP siempre son elementos de contacto genuinos.

Si ejecutamos el Análisis Estático Lineal con NX NASTRAN (SOL101) y activamos el diagrama de convergencia de contacto en el NX NASTRAN ANALYSIS MONITOR veremos que la solución termina con la iteración de contacto nº 20, y ya está, parece que todo está calculado correctamente y el control del análisis pasa de nuevo a FEMAP: error!!

Siempre que ejecutéis cualquier análisis con NX NASTRAN es obligatorio revisar el fichero de salida de resultados *.F06 porque aquí es donde encontraréis los mensajes del solver NX NASTRAN relativos a cualquier mensaje de error (o WARNING) que se produzca durante el cálculo (si el cálculo da error buscar directamente por la palabra FATAL, allí encontraréis la descripción del motivo del error). En nuestro caso revisando el fichero *.F06 vemos que la CONTACT ITERATION #20 se alcanza sin obtener la convergencia de contacto, así que el solver NX NASTRAN finaliza el cálculo sin emitir ningún mensaje de error (20 iteraciones de contacto es el valor límite por defecto). Esto es un problema, ya que la solución estática lineal alcanzada en tensiones y desplazamientos hasta la iteración de contacto nº 20 no es correcta, y el usuario no recibe ningún aviso en pantalla, si el usuario no revisa el fichero *.F06 no es consciente de la falta de precisión de los resultados de tensiones de contacto del análisis estático lineal (sugiero a los desarrolladores de FEMAP & NX NASTRAN que modifiquen este comportamiento, informando al usuario del error de forma explícita).

^^^
^^^CONTACT ITERATION NUMBER 20
^^^
^^^NUMBER OF CONTACT STATUS CHANGES: 2 (NCHG: 0)
^^^NUMBER OF INACTIVE CONTACTS: 49
^^^NUMBER OF STICKING CONTACTS: 0
^^^NUMBER OF SLIDING CONTACTS: 11
^^^BEGIN CONTACT FORCE ITERATION
^^^ 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
^^^BEGIN CONTACT FORCE ITERATION
^^^ 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)
^^^ USER WARNING MESSAGE 9284 (PHASE1D)
^^^ NUMBER OF OUTER LOOP ITERATIONS EXCEEDED

Para resolver el problema debemos incrementar el nº de ITERACIONES DE CONTACTO (que por defecto es 20). Sugiero usar siempre entre 35 a 40 iteraciones de contacto. Pero con elementos GAP el interface gráfico de FEMAP no ofrece la posibilidad de cambiar el nº de iteraciones de contacto, sólo se definen propiedades de contacto (tanto GLUE como NO PENETRATION) con contactos SURFACE-TO-SURFACE, pero siempre podemos cambiar el fichero de entrada de NX NASTRAN metiendo directamente el siguiente texto en el NX NASTRAN BULK DATA OPTIONS modificando la orden BCTPARM de NX NASTRAN que controla todos los parámetros del algoritmo de contacto con los módulos de cálculo SOL101, 103, 111, 112 y el nuevo solver no lineal “multistep” SOL401:

BCTPARM      108  PENTYP       1 INIPENE       0    MAXS      40

Si ejecutamos de nuevo el análisis estático lineal veremos que la convergencia de contacto se alcanza rápidamente en 7 iteraciones, y los resultados son perfectamente válidos:

^^^
^^^CONTACT ITERATION NUMBER 7
^^^
^^^NUMBER OF CONTACT STATUS CHANGES: 6 (NCHG: 0)
^^^NUMBER OF INACTIVE CONTACTS: 54
^^^NUMBER OF STICKING CONTACTS: 0
^^^NUMBER OF SLIDING CONTACTS: 6
^^^BEGIN CONTACT FORCE ITERATION
^^^ 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)
^^^FINAL CONTACT STATUS AT CONVERGENCE
^^^
^^^NUMBER OF CONTACT STATUS CHANGES: 0 (NCHG: 0)
^^^NUMBER OF INACTIVE CONTACTS: 54
^^^NUMBER OF STICKING CONTACTS: 0
^^^NUMBER OF SLIDING CONTACTS: 6
^^^
^^^CONTACT ITERATION CONVERGED
^^^  

 

NX Nastran Basic Nonlinear (SOL106)

Vamos a resolver el problema usando el módulo estático no lineal básico de NX NASTRAN (SOL106). Con el solver no lineal básico no es necesario activar la opción “gaps as contact” en el BULK DATA ni tampoco editar los parámetros de iteraciones de convergencia de la orden BCPARM, el elemento CGAP es no lineal por naturaleza (recuerdo usar elementos GAP con COSMOS/M NSTAR hace más de 30 años …. y por entonces los contactos SURFACE-TO-SURFACE no existían!!). La opción de grandes desplazamientos (LARGE DISPLACEMENTS EFFECT con PARAM,LGDISP,1) se activa automáticamente en el BULK DATA cuando se crea un estudio no lineal:

Los parámetros del análisis No Lineal utilizados para el cálculo son los siguientes: básicamente 25 incrementos, y 1 iteración antes de activar la matriz de rigidez, el resto por defecto:

Los resultados del ANÁLISIS ESTÁTICO NO LINEAL muestran un desplazamiento resultante URES=0.0635 mm, que comparado con la solución de CONTACTO LINEAL donde el máximo desplazamiento resultante era URES=0.0617 mm nos está diciendo que la solución de contacto obtenida con el análisis estático lineal no está nada mal. Puedes jugar activando un modelo de material no lineal y comparar resultados, de esta forma podrás tener en cuenta la plastificación del material, aspecto éste imposible de aplicar en un análisis estático lineal.

Recuerda que la solución de contacto obtenida en un análisis Estático Lineal es válida mientras los resultados de desplazamientos puedan considerarse como “pequeños”, de lo contrario la solución obtenida tendría poca validez, sería “useless” como dicen los americanos …

Pues nada, espero que todo lo anterior os sirva para entender mejor cómo mallar en FEMAP con elementos GAP de 2-nodos y calcular con NX NASTRAN para resolver el problema de CONTACTO HERTZIANO, ¿OK?.

Saludos,
Blas.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s