Una malla no sabe por sí sola dónde está apoyada la estructura ni qué acción exterior debe soportar. En M05 convertiremos el diagrama físico en restricciones y cargas, y comprobaremos los valores que MAPDL ha guardado antes de resolver.
Tu misión
Empotrarás el extremo izquierdo de la viga, distribuirás una fuerza total de
-1000 N sobre su extremo derecho y generarás un CSV que demuestre el alcance,
los grados de libertad restringidos y la suma real de fuerzas nodales.
Pregunta guía: ¿cómo distingues una fuerza total de una fuerza aplicada a cada nodo?
Objetivos
Al completar M05 podrás demostrar que:
- Traducir un diagrama de cuerpo libre a regiones, grados de libertad y componentes de fuerza.
- Aplicar restricciones y cargas exclusivamente sobre componentes nombrados.
- Explicar qué significa
ALLenD,ALL,ALL,0. - Mantener una fuerza resultante constante cuando cambia el número de nodos.
- Distinguir selección, sistema nodal, visualización y sistema de resultados.
- Leer restricciones y fuerzas almacenadas mediante
*GET. - Auditar las condiciones de contorno sin utilizar reacciones ni resultados.
Prerrequisitos y descargas
- Haber completado M02 para trabajar con componentes y selecciones.
- Haber completado M04: utilizaremos la primera malla aceptada, de 40 elementos.
- Recordar que
SOLID185dispone de los desplazamientosUX,UYyUZ.
05_start.mac— punto de partida.05_loads_constraints.mac— solución auditada.05_bug_hunt.mac— cinco fallos deliberados.05_challenge.mac— reto de independencia de malla.05_expected_results.csv— contrato de autocorrección.
Predicción — El error que crece al refinar
La malla base tiene seis nodos en la punta. ¿Cuál sería la fuerza total si ejecutaras
F,ALL,FY,-1000 con esos seis nodos seleccionados?
6 nodos × (−1000 N/nodo) = −6000 N
F recibe una carga nodal. MAPDL no interpreta que -1000 sea la
resultante que deseas repartir. Esa intención debe aparecer explícitamente en el script.
Del diagrama físico a una prueba
| Decisión física | Representación APDL | Prueba |
|---|---|---|
| Extremo izquierdo inmóvil | fixed_nodes + D | 6 nodos y 18 desplazamientos a cero. |
| Fuerza total vertical | tip_nodes + F | 6 nodos cargados y suma FY=-1000 N. |
| Regiones distintas | Intersección de componentes | n_overlap=0. |
Modelo mental — Las condiciones de contorno son parte del modelo
Un empotramiento ideal no es simplemente «donde la pieza toca una pared». Es la hipótesis matemática de que ciertos grados de libertad tienen un valor prescrito. Una fuerza nodal tampoco es una flecha decorativa: tiene magnitud, signo, dirección, punto de aplicación y sistema de referencia.
Una solución puede converger con condiciones equivocadas
El solver puede resolver sin dificultad una viga completamente bloqueada o una carga seis veces mayor que la pretendida. La convergencia algebraica no corrige el modelo físico.
Paso 1 — Recuperar la malla elegida en M04
Utilizamos mesh_h=0.05 m, porque fue la primera malla que cumplió el criterio de
desplazamiento de M04. Sus divisiones son 20 × 2 × 1:
MSHAPE,0,3D
MSHKEY,1
! LESIZE sobre las tres familias de lineas
VMESH,ALL
*GET,n_nodes,NODE,0,COUNT
*GET,n_elements,ELEM,0,COUNTEl contrato de entrada de M05 exige 126 nodos y 40 elementos.
Paso 2 — Construir regiones antes de aplicar nada
SELTOL,select_tol
CSYS,0
NSEL,S,LOC,X,0
CM,fixed_nodes,NODE
*GET,n_fixed,NODE,0,COUNT
ALLSEL,ALL
NSEL,S,LOC,X,beam_l
CM,tip_nodes,NODE
*GET,n_tip,NODE,0,COUNT
ALLSEL,ALL
SELTOL,Aplicar y seleccionar son responsabilidades distintas. Primero demostramos que cada región existe; después guardamos su significado en un componente. La prueba de intersección confirma que ningún nodo pertenece simultáneamente a los dos extremos.
Paso 3 — Entrar en /SOLU sin resolver
FINISH
/SOLU
M05 entra en el procesador de solución porque las cargas pertenecen a la definición del
análisis. Sin embargo, no contiene ANTYPE ni SOLVE. Al terminar solo
tendremos una base de datos preparada; no habrá reacciones, archivo de resultados ni tensiones.
Paso 4 — Aplicar el empotramiento
CMSEL,S,fixed_nodes
D,ALL,ALL,0
ALLSEL,ALLLa línea debe leerse con sus dos apariciones de ALL:
- el primer
ALLsignifica todos los nodos actualmente seleccionados; - el segundo significa todos los grados de libertad activos del elemento.
Para SOLID185 esos grados de libertad son UX, UY y
UZ. No aparecen rotaciones porque el elemento sólido no las posee como grados de
libertad nodales.
Paso 5 — Repartir una resultante
CMSEL,S,tip_nodes
*GET,n_tip,NODE,0,COUNT
force_per_node=tip_force/n_tip
F,ALL,FY,force_per_node
ALLSEL,ALL
Para seis nodos, force_per_node=-166.6667 N. El parámetro expresa una distinción
fundamental:
entrada fisica: tip_force
entrada para F: force_per_node
comprobacion final: suma de todas las fuerzas FY almacenadasPatrón de seguridad
CMSEL,S,nombre_region
*GET,n_region,NODE,0,COUNT
! abortar o fallar si n_region=0
comando_de_carga
ALLSEL,ALLSeleccionar, comprobar, aplicar y restaurar forman una sola unidad. Separar esos pasos por bloques largos de código hace más fácil que una selección incompleta se propague.
Sistemas de referencia — Cuatro conceptos distintos
| Estado | Qué controla | Qué no controla |
|---|---|---|
CSYS | Interpretación de coordenadas y selecciones geométricas. | No rota retroactivamente una fuerza nodal existente. |
| Sistema nodal | Direcciones de UX/UY/UZ y FX/FY/FZ. | No cambia solo porque se modifique la vista. |
DSYS | Sistema utilizado para mostrar la geometría. | No redefine cargas ni restricciones. |
RSYS | Sistema de resultados en postprocesado. | No actúa sobre las cargas aplicadas. |
En el caso conductor todos los sistemas nodales permanecen cartesianos globales. Por eso
FY representa inequívocamente la dirección global Y. Las cargas en sistemas
nodales rotados requieren una decisión explícita, no un cambio cosmético de visualización.
F frente a SF
| Comando | Entrada | Uso típico |
|---|---|---|
F | Fuerza concentrada por nodo. | Resultantes repartidas o acciones nodales. |
SF | Carga superficial sobre caras identificadas mediante nodos. | Presión normal, convección u otras etiquetas compatibles. |
! Ejemplo conceptual, no se anade al caso conductor
CMSEL,S,top_nodes
SF,ALL,PRES,pressure_value
SFLIST,ALL,PRES
ALLSEL,ALLUna presión sigue la convención normal de la cara; no sustituye automáticamente a nuestra fuerza transversal de punta. M05 mantiene una única acción para que la auditoría sea inequívoca.
Paso 6 — Listar no es todavía automatizar
DLIST,ALL,ALL
FLIST,ALL,ALL
Los listados permiten leer nodos, etiquetas y valores en el archivo .out. Son
esenciales para depurar, pero una revisión humana no basta para ejecutar muchos casos.
Convertiremos las mismas preguntas en parámetros y condiciones de aprobación.
Paso 7 — Auditar los tres desplazamientos prescritos
CMSEL,S,fixed_nodes
node_id=0
*DO,j,1,n_fixed
node_id=NDNEXT(node_id)
*GET,dof_ux,NODE,node_id,D,UX
*GET,dof_uy,NODE,node_id,D,UY
*GET,dof_uz,NODE,node_id,D,UZ
! comprobar los tres valores
*ENDDO
NDNEXT devuelve el siguiente nodo seleccionado. Así recorremos los IDs reales
sin suponer que son consecutivos. Cada uno de los seis nodos debe almacenar tres valores cero:
n_constrained_dof=18.
Compatibilidad comprobada: MAPDL 2025 R2 puede devolver cero al consultar
un desplazamiento no prescrito. Por eso el macro audita valores sobre
fixed_nodes y utiliza el DLIST global para documentar que no existen
restricciones fuera del componente. No intenta detectar ausencia mediante un valor centinela.
Paso 8 — Sumar las fuerzas realmente almacenadas
ALLSEL,ALL
node_id=0
*DO,j,1,n_nodes
node_id=NDNEXT(node_id)
*GET,node_fx,NODE,node_id,F,FX
*GET,node_fy,NODE,node_id,F,FY
*GET,node_fz,NODE,node_id,F,FZ
force_sum_x=force_sum_x+node_fx
force_sum_y=force_sum_y+node_fy
force_sum_z=force_sum_z+node_fz
*ENDDO
Esta suma recorre todo el modelo, no solo tip_nodes. Por tanto puede detectar
una fuerza accidental fuera de la región prevista o una componente inesperada.
load_error=ABS(force_sum_y-tip_force)/ABS(tip_force)La auditoría exige:
n_force_nodes = n_tip
force_sum_x = 0
force_sum_y = -1000
force_sum_z = 0
load_error < 0.001Contrato CSV
05_loads_constraints.mac genera:
case,mesh_h,n_nodes,n_elements,n_fixed,n_tip,n_constrained_dof,n_force_nodes,force_per_node,force_sum_x,force_sum_y,force_sum_z,target_force,load_error,passes
La fila base debe contener 126 nodos, 40 elementos, 18 restricciones, 6 nodos cargados y
passes=1. En MAPDL 2025 R2 la suma validada es -1000 N con un error
relativo del orden de 10⁻¹⁶.
Caza de errores
Ejecuta 05_bug_hunt.mac. No contiene un fallo del solver: contiene cinco
traducciones lógicamente incorrectas.
fixed_nodesse crea después de recuperar todos los nodos.- El empotramiento termina aplicado a todo el modelo.
NSEL,Rintenta encontrar la punta dentro de una selección que ya no la contiene.- La fuerza total se aplica completa a cada nodo de la punta.
CSYS,DSYSyRSYSse utilizan como si rotaran el sistema nodal.
Reto verificable — Misma fuerza, más nodos
Completa 05_challenge.mac con mesh_h=0.025 m. No copies IDs del caso
anterior y no resuelvas.
| Magnitud | Caso base | Reto |
|---|---|---|
| Elementos | 40 | 320 |
| Nodos | 126 | 615 |
| Nodos por extremo | 6 | 15 |
| DOF restringidos | 18 | 45 |
| Fuerza nodal | −166.6667 N | −66.6667 N |
| Suma FY | −1000 N | −1000 N |
Antes de ejecutar, predice qué columnas deben cambiar y cuáles deben permanecer invariantes.
Después explica por qué force_per_node no es una entrada física independiente.
Autoevaluación
- ¿Qué dos significados tiene
ALLenD,ALL,ALL,0? - ¿Por qué
F,ALL,FY,tip_forceno aplica una resultante total? - ¿Qué cambia al ejecutar
DSYS,1? - ¿Por qué la auditoría de fuerzas recorre todos los nodos?
- ¿Qué evidencia todavía no puede existir antes de
SOLVE?
Ver respuestas breves
- Todos los nodos seleccionados y todos sus DOF activos.
- Porque
Frecibe el valor para cada nodo seleccionado. - Solo el sistema de representación gráfica.
- Para detectar cargas accidentales fuera del componente previsto.
- Reacciones, equilibrio y resultados estructurales.
Evidencia de aprendizaje
m05_bc_audit.csvconpasses=1.- Los extractos de
DLISTyFLIST. - Una captura de los símbolos de restricciones y cargas.
- El CSV del reto con la misma fuerza total y 15 nodos cargados.
- El diagnóstico de los cinco defectos.
Checklist de salida
- ☐ Mis componentes se crean antes de aplicar condiciones.
- ☐ Compruebo que las regiones son no vacías y disjuntas.
- ☐ Distingo fuerza total y fuerza por nodo.
- ☐ Restauro la selección después de cada aplicación.
- ☐ No confundo CSYS, sistema nodal, DSYS y RSYS.
- ☐ Leo y sumo las cargas almacenadas en todo el modelo.
- ☐ Mi script termina sin ANTYPE, SOLVE, /POST1 ni FSUM.
Trazabilidad técnica
La lección utiliza Basic Analysis Guide para la definición de condiciones de contorno
y Command Reference 2024 R1 para D, F, SF,
DLIST, FLIST, NDNEXT, *GET,
CSYS, DSYS y RSYS.
Siguiente paso: M06
Ya hemos demostrado qué cargas y restricciones entrarán en el análisis. En M06 declararemos el análisis estático, resolveremos y compararemos la fuerza aplicada con las reacciones para cerrar el equilibrio global.