Paso 1 — Encontrar los números mágicos
Abre 01_start.mac. Encontrarás expresiones como:
MP,EX,1,210E9
BLOCK,0,1.0,0,0.10,0,0.05
ESIZE,0.025
F,ALL,FY,-1000/n_tip
Los valores no son incorrectos, pero su significado está oculto y aparecen dentro de las instrucciones.
Cambiar la longitud exige buscar cada aparición de 1.0 y decidir si representa longitud,
coordenada o cualquier otra cosa.
Reúne las entradas al principio:
! --- INPUTS: SI units ---
beam_l=1.0
beam_h=0.10
beam_b=0.05
young=210E9
nu=0.30
tip_force=-1000
mesh_h=0.025Después reemplaza los números físicos:
MP,EX,1,young
MP,PRXY,1,nu
BLOCK,0,beam_l,0,beam_h,0,beam_b
ESIZE,mesh_h
NSEL,S,LOC,X,beam_l
F,ALL,FY,tip_force/n_tipReglas prácticas para nombres
- Usa nombres que indiquen objeto y magnitud:
beam_h, noh1. - Conserva un idioma y un estilo en todo el proyecto.
- No codifiques unidades distintas dentro del nombre si todo el contrato usa un sistema coherente.
- Reserva nombres como
ipara índices breves de bucles. - No reutilices un parámetro de entrada para almacenar un resultado.
Paso 2 — Construir expresiones verificables
Calcula primero la inercia:
inertia=beam_b*beam_h**3/12
En APDL, ** representa potencia. beam_h*3 no es una forma alternativa:
es otra operación.
Añade las referencias:
uy_ref=tip_force*beam_l**3/(3*young*inertia)
uy_ref_abs=ABS(uy_ref)
sigma_ref=ABS(tip_force)*beam_l*(beam_h/2)/inertiaPara el caso base deben obtenerse aproximadamente:
| Parámetro | Valor esperado | Interpretación |
|---|---|---|
inertia | 4.1667E-6 m⁴ | Propiedad geométrica |
uy_ref | -3.8095E-4 m | Signo hacia −Y |
uy_ref_abs | 0.381 mm | Magnitud de comparación |
sigma_ref | 12.0 MPa | Tensión nominal de flexión |
La trampa de los milímetros
Si escribes beam_h=100 dentro de este modelo, MAPDL no sabe que querías decir
100 mm. Interpretará 100 metros. /UNITS,SI documenta el convenio, pero no convierte entradas.
Paso 3 — Rechazar entradas imposibles
Esperar hasta VMESH para descubrir que una dimensión es cero produce mensajes lejanos a la causa.
Es mejor comprobar el contrato inmediatamente:
*IF,beam_h,LE,0,THEN
/COM,ERROR: beam_h must be positive
/EOF
*ENDIF
*IF,mesh_h,GT,beam_h/2,THEN
/COM,WARNING: mesh_h is larger than beam_h/2
*ENDIFEl primer bloque representa un error que impide continuar. El segundo es una advertencia: el modelo puede ejecutarse, pero la discretización transversal merece atención.
Experimento controlado
- Cambia temporalmente
beam_ha cero. - Ejecuta el script.
- Comprueba que no se crea geometría.
- Restaura
beam_h=0.10.
No celebres que MAPDL «ha fallado correctamente». Celebra que tu programa detectó el problema antes de entregar datos absurdos al modelador.