Marc & Structures
Índice
M04 Intermedio ~75 min (lectura + práctica)

Mallado, calidad y convergencia

ESIZE, LESIZE, MSHAPE, MSHKEY, SHPP, CHECK, VCLEAR y convergencia

Entregable del módulo

04_mesh_convergence.mac

Script APDL listo para ejecutar en MAPDL

Descargar .mac

El modelo ya contiene una geometría, un elemento y un material coherentes. Ahora debemos decidir cuánta discretización necesita. No elegiremos una malla por su apariencia: construiremos una familia comparable, la auditaremos y dejaremos que una magnitud física determine cuándo refinar deja de cambiar sustancialmente la respuesta.

Tu misión

Generarás tres mallas hexaédricas estructuradas, comprobarás su topología y calidad, medirás el desplazamiento de punta con el mismo banco de ensayo y seleccionarás la primera malla cuya variación frente a la siguiente sea inferior al 2 %.

Regla central: una malla bonita no demuestra convergencia; una diferencia pequeña tampoco sirve si los casos representan problemas distintos.

Objetivos

Al completar M04 podrás demostrar que:

  • Distingues refinamiento, calidad y convergencia.
  • Construyes una malla hexaédrica mediante divisiones paramétricas.
  • Explicas la diferencia entre un control global y uno aplicado a líneas concretas.
  • Auditas topología, atributos y advertencias de forma antes de resolver.
  • Mantienes constantes geometría, material, carga y punto de medida.
  • Calculas la variación respecto a la malla siguiente.
  • Seleccionas una malla por un criterio declarado o concluyes que el estudio es insuficiente.

Prerrequisitos y descargas

  • Haber completado M03 y reconocer SOLID185, TYPE y MAT.
  • Recordar de M02 que una selección es estado temporal y debe recuperarse con ALLSEL,ALL.
  • Haber ejecutado la primera simulación de M00. Su bloque de solución se reutiliza como instrumento, no como contenido nuevo.

Predicción — ¿Cuánto cuesta dividir h entre dos?

Si refináramos una línea, duplicaríamos su número de elementos. Pero nuestra viga ocupa tres dimensiones. Al dividir el tamaño entre dos duplicamos simultáneamente div_x, div_y y div_z:

2 × 2 × 2 = 8
Tres mallas hexaédricas con 40, 320 y 2560 elementos
Dos refinamientos convierten 40 elementos en 2560: sesenta y cuatro veces más.

El tiempo de cálculo no tiene por qué crecer exactamente con esa proporción: también intervienen los grados de libertad, la conectividad, la memoria y el solver. Pero el crecimiento geométrico explica por qué «refinar por si acaso» es una estrategia cara.

Modelo mental — Tres preguntas diferentes

ConceptoPreguntaEvidencia
Refinamiento¿Hemos aumentado la resolución?Divisiones, nodos y elementos.
Calidad¿Son geométricamente aceptables los elementos?SHPP,SUMMARY y CHECK.
Convergencia¿Se estabiliza una magnitud física relevante?Variación del desplazamiento entre mallas.

Ninguna de las tres pruebas sustituye a las otras

Un millón de elementos distorsionados no forman una buena malla. Una malla perfecta pero demasiado gruesa puede dar una respuesta rígida. Dos resultados iguales tampoco prueban nada si se cambiaron simultáneamente la longitud o la carga.

Anatomía de una familia comparable

Un estudio de convergencia cambia una sola decisión: la discretización. En los tres casos conservaremos exactamente:

  • la geometría 1.0 × 0.10 × 0.05 m;
  • SOLID185 con la misma formulación;
  • acero con EX=210E9 Pa y PRXY=0.30;
  • el empotramiento, la fuerza total de -1000 N y su dirección;
  • la coordenada del nodo utilizado para medir el desplazamiento.

También conservaremos la familia de elemento y la estrategia de mallado. Comparar tetraedros lineales gruesos con hexaedros finos mezclaría dos cambios y dificultaría interpretar la causa.

Paso 1 — De un tamaño nominal a divisiones

Para la familia base, las dimensiones son múltiplos exactos de los tres tamaños:

div_x=beam_l/mesh_h
div_y=beam_h/mesh_h
div_z=beam_b/mesh_h

No llamamos nx, ny y nz a estos parámetros: MAPDL reserva esos nombres para funciones intrínsecas de coordenadas nodales.

mesh_hnx × ny × nzElementosNodos
0.0500 m20 × 2 × 140126
0.0250 m40 × 4 × 2320615
0.0125 m80 × 8 × 425603645

Para un bloque estructurado, los conteos teóricos son:

n_elements = div_x*div_y*div_z
n_nodes    = (div_x+1)*(div_y+1)*(div_z+1)

Estas ecuaciones forman una prueba fuerte: si no coinciden, la malla obtenida no es la estructurada que el script afirmaba construir.

Paso 2 — ESIZE frente a LESIZE

ESIZE,mesh_size(i)

ESIZE declara el tamaño global predeterminado. MAPDL calcula divisiones a partir de ese valor, redondeándolas cuando sea necesario. Sin embargo, un control global no expresa por sí solo cómo queremos repartir elementos en cada dirección.

LSEL,S,LENGTH,,beam_l
LESIZE,ALL,,,div_x(i),,1

LSEL,S,LENGTH,,beam_h
LESIZE,ALL,,,div_y(i),,1

LSEL,S,LENGTH,,beam_b
LESIZE,ALL,,,div_z(i),,1
ALLSEL,ALL

LSEL agrupa las líneas por significado geométrico, no por ID. LESIZE,ALL aplica divisiones enteras a las líneas seleccionadas. El argumento KFORC=1 obliga a sustituir cualquier división anterior, algo necesario después de limpiar una malla y preparar la siguiente.

Paso 3 — Exigir hexaedros mapeados

MSHAPE,0,3D
MSHKEY,1
VMESH,ALL

MSHAPE,0,3D solicita hexaedros y MSHKEY,1 exige mallado mapeado. No utilizamos MSHKEY,2, porque permitir una malla libre como alternativa podría ocultar un fallo de nuestra preparación. El bloque rectangular es mapeable y las aristas opuestas reciben el mismo número de divisiones.

Una malla libre no es «mala». Aquí usamos una estructura regular para aislar el efecto del tamaño. En una geometría industrial, la estrategia deberá adaptarse a la forma.

Paso 4 — Crear el pasaporte de la malla

Antes de resolver, cada malla debe demostrar cuatro propiedades:

*GET,n_nodes(i),NODE,0,COUNT
*GET,n_elems(i),ELEM,0,COUNT

ESEL,S,TYPE,,1
*GET,n_type1(i),ELEM,0,COUNT
ALLSEL,ALL

ESEL,S,MAT,,1
*GET,n_mat1(i),ELEM,0,COUNT
ALLSEL,ALL

La prueba aprueba únicamente cuando:

n_elems = div_x*div_y*div_z
n_nodes = (div_x+1)*(div_y+1)*(div_z+1)
n_type1 = n_elems
n_mat1  = n_elems

Así conectamos M04 con M03: una malla más fina que pierde sus atributos no es una mejora del mismo modelo, sino otro modelo.

Paso 5 — Convertir la calidad en una prueba

SHPP,DEFAULT
SHPP,ON
...
SHPP,SUMMARY
CHECK,ESEL,WARN
*GET,n_shape_bad(i),ELEM,0,COUNT
ALLSEL,ALL

SHPP,SUMMARY lista el resumen de las pruebas de forma de los elementos seleccionados. Después, CHECK,ESEL,WARN hace algo especialmente útil: deselecciona los elementos sin incidencias y conserva únicamente los que producen advertencias o errores. Por tanto, n_shape_bad=0 es una condición automatizable.

CHECK modifica la selección

Si no ejecutas ALLSEL,ALL después, el banco de ensayo podría actuar únicamente sobre los elementos problemáticos o sobre un conjunto vacío.

Paso 6 — El banco de ensayo heredado

Para medir convergencia necesitamos una respuesta física. El siguiente bloque reutiliza la ruta vertical que ya ejecutaste en M00:

NSEL,S,LOC,X,0
D,ALL,ALL,0
ALLSEL,ALL

NSEL,S,LOC,X,beam_l
*GET,n_tip,NODE,0,COUNT
force_per_node=tip_force/n_tip
F,ALL,FY,force_per_node
ALLSEL,ALL

FINISH
/SOLU
ANTYPE,STATIC,NEW
SOLVE
FINISH

/POST1
SET,LAST
*GET,uy_tip(i),NODE,probe_node,U,Y

En M04 este bloque funciona como un instrumento de laboratorio: todas sus entradas permanecen constantes y solo devuelve una lectura. M05 explicará y auditará las condiciones de contorno; M06, la solución y el equilibrio; M07, la extracción y validación de resultados.

El nodo de medida se selecciona por X=beam_l, Y=0 y Z=0. Esa coordenada existe en todas las mallas. Escribir un ID mezclaría refinamiento con un cambio accidental del punto observado.

Paso 7 — Limpiar sin destruir la geometría

/PREP7
ALLSEL,ALL
DDELE,ALL,ALL
FDELE,ALL,ALL
CMDELE,fixed_nodes
CMDELE,tip_nodes
VCLEAR,ALL

VCLEAR,ALL elimina los elementos y nodos asociados al volumen, pero conserva el modelo sólido y sus atributos. Cambiar ESIZE sin limpiar y volver a mallar no refina una malla existente: solo cambia una preferencia para operaciones futuras.

Paso 8 — Automatizar la familia

*DIM,mesh_size,ARRAY,3
mesh_size(1)=0.0500
mesh_size(2)=0.0250
mesh_size(3)=0.0125

*DO,i,1,3
  ! divisiones, mallado, auditoria, medida y limpieza
*ENDDO

El bucle no crea tres estudios independientes escritos a mano. Obliga a que todos recorran exactamente la misma secuencia y reduce las oportunidades de cambiar una condición sin querer.

Paso 9 — Medir la convergencia

change_pct(1)=ABS(uy_tip(2)-uy_tip(1))/ABS(uy_tip(2))*100
change_pct(2)=ABS(uy_tip(3)-uy_tip(2))/ABS(uy_tip(3))*100
change_pct(3)=-1

Cada malla se compara con la siguiente más fina, utilizada como estimación mejorada. La última no puede compararse consigo misma; el valor -1 significa «sin comparación», no convergencia perfecta.

Curva de convergencia y selección de la primera malla con variación inferior al dos por ciento
La malla se acepta solo si aprueba tanto el pasaporte como el criterio de respuesta.

Paso 10 — Tomar una decisión honesta

El algoritmo recorre las comparaciones desde la malla más económica:

selected_case=0

! Si cambio 1→2 < 2 % y ambas mallas pasan:
!   selected_case=1
! En caso contrario, probar cambio 2→3.
! Si tampoco cumple:
!   selected_case=0

Nunca elegimos automáticamente la malla 3 por ser la más fina disponible. Si la última comparación supera el umbral, el estudio es inconcluso y necesita otra malla.

Por qué no usamos la tensión máxima

El empotramiento ideal introduce una transición abrupta entre nodos completamente restringidos y material libre. Una tensión puntual junto a esa frontera puede crecer o desplazarse al refinar, incluso cuando el desplazamiento global ya es estable. Elegirla como único criterio confundiría convergencia de una magnitud global con comportamiento local potencialmente singular.

En M07 compararemos tensiones en regiones justificables y separaremos tensión nominal, concentración física y singularidad numérica.

El CSV como acta del estudio

04_mesh_convergence.mac genera m04_mesh_study.csv:

case,mesh_h,nx,ny,nz,n_nodes,n_elements,n_type1,n_mat1,uy_tip,change_to_next_pct,mesh_pass,selected

Debe contener tres filas. Solo una puede tener selected=1; también es válido que todas sean cero si ninguna comparación cumple. El CSV registra intención, coste, auditoría, respuesta y decisión en una misma evidencia reproducible.

Resultado de referencia validado

En MAPDL Student 2025 R2 se obtuvieron variaciones de aproximadamente 1.168 % y 0.501 %. Con un umbral del 2 %, el algoritmo selecciona el caso 1. El resultado es deliberadamente interesante: «primera malla aceptable» no significa «malla más fina disponible».

Caza de errores

Ejecuta 04_bug_hunt.mac y redacta para cada defecto: síntoma, causa, evidencia y corrección. Busca cinco contaminaciones:

  1. La longitud declarada para el segundo caso ya no coincide con la del primero.
  2. Se cambia ESIZE sin ejecutar VCLEAR y volver a mallar.
  3. Se aplica -1000 N a cada nodo de la punta en lugar de conservar la fuerza total.
  4. El punto de medida se identifica mediante un ID fijo.
  5. Se elige la malla con más elementos sin calcular ninguna variación física.

Reto verificable — Cuando mesh_h no divide la pieza

Completa 04_challenge.mac con tamaños 0.04, 0.02 y 0.01 m. En el primer caso, beam_h/mesh_h=2.5: una línea no puede contener dos elementos y medio.

Tu script deberá:

  1. Declarar una política para convertir cada cociente en un número entero de divisiones.
  2. Informar del tamaño nominal y de las divisiones realmente utilizadas.
  3. Construir la malla sin IDs de líneas, nodos o elementos.
  4. Volver a comprobar las ecuaciones topológicas con los enteros adoptados.
  5. Generar el mismo CSV y seleccionar una malla solo si cumple el 2 %.

La decisión forma parte del modelo

Redondear al entero más cercano aproxima el tamaño nominal. Redondear siempre hacia arriba garantiza que el tamaño real no lo supere. Cualquiera debe quedar explícita y aplicarse de manera coherente; no delegues silenciosamente la decisión al mallador.

Autoevaluación

  1. ¿Por qué aparecen aproximadamente ocho veces más elementos al dividir el tamaño entre dos?
  2. ¿Qué diferencia práctica existe entre ESIZE y LESIZE?
  3. ¿Qué conjunto queda activo después de CHECK,ESEL,WARN?
  4. ¿Por qué la última malla no puede tener un cambio respecto a sí misma?
  5. ¿Qué debes concluir si selected_case=0?
> Ver respuestas breves
  1. Porque se duplican las divisiones en tres direcciones: 2³=8.
  2. ESIZE es global; LESIZE controla líneas seleccionadas y puede imponer divisiones.
  3. Solo los elementos que producen advertencias o errores de comprobación.
  4. La convergencia necesita una estimación más fina independiente.
  5. Que el estudio no permite elegir: debe añadirse otra malla o revisarse la familia.

Evidencia de aprendizaje

  • m04_mesh_study.csv con tres casos.
  • Conteos topológicos coincidentes con las divisiones.
  • Resumen SHPP y n_shape_bad=0.
  • Una gráfica de |uy_tip| frente al número de elementos.
  • La malla seleccionada y una justificación basada en coste y variación.
  • El diagnóstico de los cinco defectos.

Checklist de salida

  • ☐ Mis tres casos solo difieren en la discretización.
  • ☐ Las divisiones se obtienen de parámetros y no de IDs.
  • ☐ La topología real coincide con la esperada.
  • ☐ TYPE, MAT y forma aprueban antes de resolver.
  • ☐ La carga total y el punto de medida permanecen constantes.
  • ☐ Cada cambio usa como referencia la malla siguiente.
  • ☐ Acepto selected_case=0 como conclusión válida.
  • ☐ No utilizo la tensión singular del empotramiento como criterio.

Trazabilidad técnica

La lección utiliza Modeling and Meshing Guide para la estrategia mapeada; Command Reference 2024 R1 para ESIZE, LESIZE, MSHAPE, MSHKEY, SHPP, CHECK y VCLEAR; y Element Reference para SOLID185.

Siguiente paso: M05

El banco de ensayo ha mantenido constantes sus condiciones de contorno. En M05 dejaremos de tratarlas como una caja preparada: traduciremos el diagrama físico a restricciones y cargas, y auditaremos su valor total antes de resolver.

Demuestra que puedes hacerlo sin pistas

Necesitas al menos 80 % y acertar todas las comprobaciones críticas. Puedes repetirla sin límite; después de cada intento recibirás una ruta de repaso concreta.

6 comprobaciones

Competencia

Elegir una malla mediante calidad y convergencia.

Evidencia esperada

Variación relativa del desplazamiento inferior al 2 %.

Guarda el dominio entre dispositivos

Introduce tu email y recibirás un enlace seguro. La cuenta solo guarda progreso, intentos y puntuaciones.

1.¿Qué demuestra una sola malla con un contorno suave? Crítica
2.Introduce el umbral porcentual de variación usado para aceptar convergencia. Crítica
%
3.¿Qué secuencia representa refinamiento creciente?
4.SHPP informa de elementos de mala forma. ¿Qué haces? Crítica
5.Predicción: si mesh_h disminuye manteniendo la geometría, ¿qué esperas normalmente?
6.Ningún par de mallas cumple el 2 %. ¿Qué debe registrar el script? Crítica

Las respuestas se corrigen en el servidor; el navegador no puede desbloquear módulos.

El módulo se completa al superar la prueba de dominio. Las lecciones anteriores permanecen disponibles.

Descargar 04_mesh_convergence.mac