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

Geometría, selecciones y componentes

NSEL, ESEL, CM, CMSEL, LOCAL, CSYS, SELTOL y auditoría de regiones

Entregable del módulo

02_geometry_selections.mac

Script APDL listo para ejecutar en MAPDL

Descargar .mac

Tu modelo ya entiende parámetros. Ahora debe aprender algo igual de importante: reconocer regiones físicas aunque cambien la longitud, la malla y los números internos que MAPDL asigna a nodos y elementos.

Tu misión

Construirás cinco regiones con nombre: el extremo fijo, la punta, la cara superior, la arista superior de la punta y una banda central de elementos. Después modificarás la viga y comprobarás que todas siguen existiendo sin escribir un solo ID.

Pregunta guía: ¿cómo se programa una región física cuando todavía no conoces sus números de nodo?

Objetivos

Al completar M02 podrás demostrar que:

  • Distingues entidades del modelo sólido y del modelo de elementos finitos.
  • Explicas por qué una selección es estado temporal y un componente es una referencia persistente.
  • Combinas conjuntos mediante S, A, R y U.
  • Seleccionas nodos por localización y elementos por posición de su centroide.
  • Controlas explícitamente la tolerancia mediante SELTOL.
  • Utilizas un sistema local como referencia móvil ligada a la punta.
  • Auditas componentes con *GET,COUNT y relaciones entre conteos.
  • Recuperas el modelo completo antes de continuar mediante ALLSEL,ALL.

Prerrequisitos y archivos

  • Haber completado M01 o entender parámetros, expresiones y comprobaciones con *IF.
  • Reconocer que la viga ocupa 0 ≤ X ≤ beam_l, 0 ≤ Y ≤ beam_h y 0 ≤ Z ≤ beam_b.
  • Mantener el sistema coherente SI: metros, newtons y pascales.

Antes de programar: haz una predicción

Imagina que MAPDL asigna al extremo libre los nodos 241–255. Al aumentar la longitud de 1.0 m a 1.2 m y refinar la malla, ¿seguirán representando la punta?

No hay ninguna garantía. Los IDs describen cómo quedó almacenado este mallado, no qué significa físicamente una región. En cambio, la frase «nodos situados en la punta» puede expresarse mediante geometría:

NSEL,S,LOC,X,beam_l

En esta lección iremos un paso más allá: colocaremos el origen de un sistema local en la punta y la seleccionaremos siempre con X=0. La instrucción será relativa a la pieza, no al tamaño particular del caso.

Modelo mental: dos modelos superpuestos

MAPDL mantiene en la misma base de datos dos familias de entidades. El modelo sólido describe la geometría; el modelo de elementos finitos describe su discretización.

Jerarquía de entidades: volumen, áreas, líneas y keypoints en el modelo sólido; elementos y nodos en el modelo de elementos finitos
Un componente contiene una única clase de entidad. fixed_nodes contiene nodos; mid_elems, elementos.
Pregunta físicaEntidad útilEjemplo APDL
¿Dónde termina el sólido?Área o nodos de la caraNSEL,...,LOC,X,...
¿Qué parte se empotrará?Componente nodalCM,fixed_nodes,NODE
¿Qué elementos están en el centro?Elementos por centroideESEL,...,CENT,X,...
¿Qué entidades están activas ahora?Estado de selección*GET,...,COUNT

Seleccionar no significa borrar

Los comandos NSEL y ESEL cambian banderas internas. Las entidades no seleccionadas siguen en la base de datos. El peligro no es perderlas, sino olvidar que están temporalmente invisibles para comandos posteriores.

Paso 1 — Construir la geometría paramétrica

El bloque de M01 se mantiene:

/PREP7
ET,1,SOLID185
MP,EX,1,young
MP,PRXY,1,nu
TYPE,1
MAT,1

BLOCK,0,beam_l,0,beam_h,0,beam_b
ESIZE,mesh_h
VMESH,ALL

Un BLOCK aislado crea un volumen delimitado por seis áreas, doce líneas y ocho keypoints. VMESH añade elementos y nodos. Sus IDs pueden cambiar aunque el sólido represente exactamente la misma viga.

Límite de M02: utilizamos ET, MP, ESIZE y VMESH como infraestructura heredada. La elección del elemento y el material se justificará en M03; la estrategia de mallado se estudiará en M04.

Antes de reducir ninguna selección, guardamos el tamaño completo del modelo:

ALLSEL,ALL
*GET,n_nodes,NODE,0,COUNT
*GET,n_elements,ELEM,0,COUNT

Estos dos valores son nuestra línea base. Al final deberán reaparecer exactamente.

Paso 2 — Pensar las selecciones como álgebra de conjuntos

El segundo argumento de los comandos xSEL indica cómo se combina la nueva condición con el conjunto activo:

Operaciones de selección APDL: S sustituye, A añade, R intersecta y U retira
La palabra «actual» importa: A, R y U dependen del estado previo.
OperaciónLecturaResultado
SSelectSustituye el conjunto activo por uno nuevo.
AAdditionally selectAñade entidades: unión.
RReselectConserva la intersección.
UUnselectRetira entidades: diferencia.

Por eso una secuencia de selección debe leerse de arriba abajo. Si una operación deja el conjunto vacío, una reselección posterior no puede recuperar entidades que ya no estaban activas.

Paso 3 — Controlar la tolerancia geométrica

Una coordenada calculada y una coordenada almacenada pueden diferir unas fracciones diminutas. MAPDL utiliza una tolerancia en las selecciones de valores no enteros. Su lógica automática depende de VMIN y VMAX; por ejemplo, si ambos son iguales y no nulos, puede tomar el 0.5 % del valor solicitado.

Seleccionar globalmente X=1.0 m podría implicar una banda mucho más ancha de la esperada cuando la malla sea muy fina. En un script reproducible conviene declarar el criterio:

select_tol=MIN(beam_h,beam_b)*1E-5
SELTOL,select_tol

Para el caso base, select_tol=5E-7 m. Es pequeña frente a la geometría y suficiente para absorber ruido numérico. La tolerancia permanece activa hasta que se redefine, así que al final la restauraremos:

SELTOL,

Una tolerancia no debe tener el tamaño de un elemento

Si escribieras SELTOL,mesh_h, una selección de cara podría capturar también la siguiente capa de nodos. El comando funcionaría; la región física sería incorrecta.

Paso 4 — Crear fixed_nodes

Comenzamos en el sistema cartesiano global y seleccionamos la cara X=0:

CSYS,0
NSEL,S,LOC,X,0
*GET,n_fixed,NODE,0,COUNT
CM,fixed_nodes,NODE
ALLSEL,ALL

El patrón contiene cuatro decisiones:

  1. NSEL,S inicia un conjunto nodal nuevo.
  2. LOC,X,0 expresa la región mediante una condición geométrica.
  3. *GET comprueba inmediatamente que la selección existe.
  4. CM guarda una fotografía antes de restaurar todo con ALLSEL.

El orden es esencial. Si ejecutaras ALLSEL antes de CM, fixed_nodes contendría todos los nodos.

Paso 5 — Pegar una regla local a la punta

LOCAL define un sistema de coordenadas y CSYS decide cuál está activo. Los números de sistemas locales deben ser mayores que 10; usaremos el 11:

LOCAL,11,CART,beam_l,0,0
CSYS,11
NSEL,S,LOC,X,0
*GET,n_tip,NODE,0,COUNT
CM,tip_nodes,NODE

CSYS,0
ALLSEL,ALL

No hemos girado los ejes; solo trasladamos el origen hasta X=beam_l. En el sistema global, la punta está en X=beam_l. En el sistema 11, está en X=0.

Modelo mental: una regla pegada a la pieza

Si beam_l cambia, el origen local viaja con la punta. La condición LOC,X,0 permanece idéntica. Esta idea será muy útil en modelos ensamblados, regiones inclinadas y operaciones repetitivas.

LOC interpreta X, Y y Z en el sistema activo. Por eso CSYS,0 no es limpieza estética: evita que las selecciones siguientes se interpreten desde el origen equivocado.

Paso 6 — Crear top_nodes y mid_elems

Con el sistema global restaurado, la cara superior se define mediante su altura:

NSEL,S,LOC,Y,beam_h
*GET,n_top,NODE,0,COUNT
CM,top_nodes,NODE
ALLSEL,ALL

Para la banda central cambiamos de clase de entidad. ESEL,CENT comprueba la coordenada del centroide de cada elemento:

ESEL,S,CENT,X,0.4*beam_l,0.6*beam_l
*GET,n_mid_elems,ELEM,0,COUNT
CM,mid_elems,ELEM
ALLSEL,ALL

La banda debe contener elementos, pero no todos. Esa relación es más estable que exigir un número exacto, porque el conteo puede variar con la estrategia de mallado o la versión.

Paso 7 — Construir tip_top_nodes mediante intersección

La arista superior de la punta cumple dos condiciones simultáneas: pertenecer a tip_nodes y a top_nodes.

CMSEL,S,tip_nodes
CMSEL,R,top_nodes
*GET,n_tip_top,NODE,0,COUNT
CM,tip_top_nodes,NODE
ALLSEL,ALL

CMSEL,S recupera el primer componente. CMSEL,R lo intersecta con el segundo. El resultado debe ser no vacío, menor que la cara completa de la punta y menor que toda la cara superior:

0 < n_tip_top < n_tip
0 < n_tip_top < n_top

Paso 8 — Demostrar que los extremos no se solapan

Una viga de longitud positiva no puede tener nodos que pertenezcan a ambos extremos:

CMSEL,S,fixed_nodes
CMSEL,R,tip_nodes
*GET,n_overlap,NODE,0,COUNT
ALLSEL,ALL

*GET,n_restored,NODE,0,COUNT

Las condiciones esperadas son:

n_overlap  = 0
n_restored = n_nodes

La primera es una comprobación física. La segunda es una comprobación de estado: confirma que ningún filtro accidental seguirá afectando a módulos posteriores.

Paso 9 — Convertir las regiones en un contrato ejecutable

Un componente que existe por nombre puede estar vacío o contener demasiado. El entregable evalúa todas las relaciones y resume el resultado en passes:

passes=1
*IF,n_fixed,LE,0,THEN
  passes=0
*ENDIF
*IF,n_overlap,NE,0,THEN
  passes=0
*ENDIF
*IF,n_restored,NE,n_nodes,THEN
  passes=0
*ENDIF

Después genera una evidencia legible:

*CFOPEN,m02_selection_audit,csv
*VWRITE
('case,beam_l,beam_h,mesh_h,n_nodes,n_elements,n_fixed,n_tip,n_top,n_mid_elems,n_tip_top,n_overlap,n_restored,passes')
...
*CFCLOS

Abre m02_selection_audit.csv y comprueba que la última columna vale 1. Los conteos concretos pueden variar; las relaciones del archivo 02_expected_results.csv deben cumplirse siempre.

El patrón que debes conservar

Seleccionar → contar → nombrar → restaurar → recuperar → auditar

Traducido a APDL:

NSEL,S,...
*GET,n_region,NODE,0,COUNT
CM,region_nodes,NODE
ALLSEL,ALL

CMSEL,S,region_nodes
! operacion sobre la region
ALLSEL,ALL

Este patrón separa la definición de una región de su uso. En M05 podremos aplicar restricciones o cargas a componentes cuyo significado ya ha sido probado.

Caza de errores

Descarga 02_bug_hunt.mac. El archivo se ejecuta, pero contiene cinco defectos lógicos:

  1. Una región física definida mediante IDs de nodo.
  2. Un componente creado después de restaurar todos los nodos.
  3. Un sistema local que continúa activo sin intención.
  4. Una tolerancia del mismo orden que el tamaño de malla.
  5. Una selección parcial de elementos que se propaga hasta el final.

Para cada defecto escribe: estado incorrecto → síntoma probable → comprobación que lo revela → corrección mínima. No basta con señalar la línea.

Reto verificable

Abre 02_challenge.mac. La longitud ahora es 1.2 m y la malla usa 0.02 m.

  1. Crea los cinco componentes sin escribir IDs.
  2. Utiliza el sistema local 11 para definir tip_nodes.
  3. Construye tip_top_nodes mediante intersección.
  4. Demuestra que los extremos no se solapan.
  5. Genera m02_selection_audit.csv con el mismo esquema que la solución.

Criterios de aceptación

  • Los cinco componentes son no vacíos.
  • n_overlap=0.
  • n_tip_top<n_tip y n_tip_top<n_top.
  • 0<n_mid_elems<n_elements.
  • n_restored=n_nodes.
  • La fila del CSV termina con passes=1.
  • No aparece ningún ID de nodo o elemento en las instrucciones de selección.

Autoevaluación

¿Qué diferencia hay entre NSEL y CM?

NSEL modifica el conjunto nodal activo; CM guarda los nodos seleccionados bajo un nombre reutilizable.

¿Por qué CM debe ejecutarse antes de ALLSEL?

Porque CM captura la selección existente en ese instante. Después de ALLSEL guardaría todos los nodos.

¿Qué representa R en CMSEL,R,top_nodes?

Una reselección: conserva únicamente la intersección entre el conjunto activo y top_nodes.

¿Por qué restauramos CSYS,0?

Porque las selecciones por LOC interpretan las coordenadas en el sistema activo. Olvidarlo cambia silenciosamente el significado de X, Y y Z.

¿Por qué no exigimos un número exacto de nodos?

Porque puede depender del mallador o de la versión. Comprobamos invariantes físicas y relaciones entre conjuntos, que son más robustas.

¿Qué demuestra n_restored=n_nodes?

Que ALLSEL,ALL recuperó todos los nodos y no dejamos un filtro accidental activo.

Evidencia de aprendizaje

  • 02_geometry_selections.mac ejecutado desde una sesión limpia.
  • m02_selection_audit.csv con passes=1.
  • 02_challenge.mac completado para la viga de 1.2 m.
  • Tabla de diagnóstico de los cinco defectos de 02_bug_hunt.mac.
  • Explicación breve de por qué una selección geométrica es más estable que una lista de IDs.

Checklist de validación

  • Distingo entidades del modelo sólido y del modelo de elementos finitos.
  • Puedo anticipar el efecto de S, A, R y U.
  • Definí y restauré explícitamente SELTOL.
  • Creé fixed_nodes y tip_nodes sin IDs.
  • Restauré CSYS,0 después de utilizar el sistema 11.
  • Construí tip_top_nodes como intersección de dos componentes.
  • Comprobé que fixed_nodes y tip_nodes no se solapan.
  • Verifiqué que ALLSEL,ALL recupera todos los nodos.
  • El reto genera un CSV con passes=1.
  • No apliqué cargas ni resolví el modelo en este módulo.
> Trazabilidad técnica de M02

Contenido contrastado con Ansys Mechanical APDL Command Reference 2024 R1: ALLSEL, CM, CMSEL, CSYS, ESEL, LOCAL, NSEL y SELTOL; y con el capítulo 3 de ANSYS Mechanical APDL Modeling and Meshing Guide.

Lo siguiente

Tu modelo ya reconoce regiones por significado, no por casualidad numérica. En M03 decidirás qué formulación de elemento, material y atributos deben recibir las entidades que acabas de construir y aprenderás a auditar esas asignaciones.

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

Crear y auditar regiones sin depender de identificadores frágiles.

Evidencia esperada

n_overlap=0, n_restored=n_nodes y passes=1.

Guarda el dominio entre dispositivos

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

1.¿Por qué una selección basada solo en IDs es frágil?
2.¿Qué comando restaura todas las entidades seleccionables? Crítica
3.¿Cuántos componentes no vacíos exige el contrato del módulo?
componentes
4.¿Qué valor debe tener n_overlap para demostrar que las regiones no se solapan? Crítica
5.¿Qué debes comprobar después de CMSEL?
6.Tras trabajar en un sistema local, ¿qué debes dejar explícito antes de una selección global? 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 02_geometry_selections.mac