Marc & Structures
Índice
M01 Intermedio ~70 min (lectura + práctica)

Sintaxis y parámetros

*SET, expresiones, nombres, *IF, *DO y arrays

Entregable del módulo

01_parametric_beam.mac

Script APDL listo para ejecutar en MAPDL

Descargar .mac

En M00 ejecutaste una simulación preparada. Ahora harás que el modelo deje de ser una secuencia rígida: recibirá entradas, comprobará si tienen sentido y tomará su primera decisión de ingeniería.

Tu misión

La viga no puede superar 0,25 mm de flecha ni 150 MPa. Entre varias alturas candidatas, ¿cuál es la menor que cumple?

Al terminar, el script responderá por ti. Pero antes tendrás que enseñarle qué significa cada número.

Objetivos

Al completar M01 podrás demostrar que:

  • Sustituyes números dispersos por parámetros con significado físico y unidades conocidas.
  • Distingues entradas, magnitudes derivadas, referencias analíticas y resultados FEA.
  • Construyes expresiones APDL y predices su tendencia antes de ejecutar.
  • Detienes entradas inválidas mediante *IF.
  • Defines un array con *DIM y lo recorres mediante *DO.
  • Generas una tabla CSV y seleccionas la primera alternativa admisible.

Prerrequisitos y archivos

  • Haber completado M00 o reconocer el flujo /PREP7 → /SOLU → /POST1.
  • Conocer el significado de módulo elástico, momento de inercia y flecha.
  • Trabajar con el sistema coherente SI: metros, newtons y pascales.

Antes de programar: haz una predicción

En M00 la altura era 0.10 m. Imagina que la duplicamos:

beam_h=0.20

¿La flecha será la mitad, la cuarta parte o la octava parte?

Para una sección rectangular:

I = B·H³/12
uy = P·L³/(3·E·I)

Como I ∝ H³ y uy ∝ 1/I, obtenemos uy ∝ 1/H³. Duplicar la altura reduce la flecha teórica a 1/8. Guarda esta predicción: será nuestro primer test.

Gráfica de altura frente a flecha teórica: la primera altura que cumple 0,25 mm es 120 mm
La relación no es lineal: pequeños aumentos de altura producen reducciones importantes de flecha.

Modelo mental: el contrato del script

Organizaremos el programa como si fuera una función de ingeniería:

ENTRADAS → COMPROBACIONES → MODELO → SOLUCIÓN → RESULTADOS

Esto separa cuatro categorías que no deben confundirse:

CategoríaEjemploQuién la controla
Entradabeam_hUsuario o estudio
DerivadainertiaExpresión del programa
Referenciauy_refModelo analítico
Resultado FEAuy_tipSolver y postprocesado

Una referencia analítica no es «el resultado correcto» por decreto. Es una comparación independiente, basada en hipótesis distintas, que ayuda a detectar errores de unidades, cargas o rigidez.

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.025

Despué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_tip
Reglas prácticas para nombres
  • Usa nombres que indiquen objeto y magnitud: beam_h, no h1.
  • 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 i para í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)/inertia

Para el caso base deben obtenerse aproximadamente:

ParámetroValor esperadoInterpretación
inertia4.1667E-6 m⁴Propiedad geométrica
uy_ref-3.8095E-4 mSigno hacia −Y
uy_ref_abs0.381 mmMagnitud de comparación
sigma_ref12.0 MPaTensió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
*ENDIF

El 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

  1. Cambia temporalmente beam_h a cero.
  2. Ejecuta el script.
  3. Comprueba que no se crea geometría.
  4. 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.

Paso 4 — Dar memoria al programa con arrays

Queremos probar cuatro alturas sin crear cuatro parámetros independientes:

*DIM,heights,ARRAY,4
heights(1)=0.08
heights(2)=0.10
heights(3)=0.12
heights(4)=0.14

*DIM reserva un array. Cada posición contiene una alternativa. El array describe datos; todavía no indica qué hacer con ellos.

Paso 5 — Recorrer alternativas con *DO

*DO,i,1,4
  trial_h=heights(i)
  trial_i=beam_b*trial_h**3/12
  trial_uy=ABS(tip_force)*beam_l**3/(3*young*trial_i)
  trial_stress=ABS(tip_force)*beam_l*(trial_h/2)/trial_i
*ENDDO

El índice i toma sucesivamente los valores 1, 2, 3 y 4. En cada vuelta, trial_h representa una altura distinta. El cálculo analítico cuesta prácticamente nada; por eso es un buen lugar para aprender bucles. Ejecutar una simulación completa en cada vuelta llegará en M09.

Paso 6 — Convertir límites en una decisión

passes=0
*IF,trial_uy,LE,uy_limit,THEN
  *IF,trial_stress,LE,stress_limit,THEN
    passes=1
    *IF,selected_h,EQ,0,THEN
      selected_h=trial_h
    *ENDIF
  *ENDIF
*ENDIF

selected_h comienza en cero. Solo se actualiza para la primera alternativa válida, por lo que al finalizar contiene la menor altura admisible de un array ordenado.

AlturaFlechaTensiónEstado
80 mm0,744 mm18,75 MPaNo cumple flecha
100 mm0,381 mm12,00 MPaNo cumple flecha
120 mm0,220 mm8,33 MPaCumple
140 mm0,139 mm6,12 MPaCumple

La primera candidata válida es 120 mm.

Paso 7 — Escribir una evidencia reutilizable

Una tabla es más útil que valores enterrados en el output:

*CFOPEN,m01_design_table,csv
*VWRITE
('height_m,uy_ref_m,sigma_ref_pa,passes')

! Dentro del bucle:
*VWRITE,trial_h,trial_uy,trial_stress,passes
(E16.8,',',E16.8,',',E16.8,',',F2.0)

*CFCLOS

Al ejecutar el entregable aparecerá m01_design_table.csv en el Working Directory. Ábrelo en un editor de texto antes de llevarlo a una hoja de cálculo: debes poder entender su estructura sin depender de otra aplicación.

Caza de errores

Descarga 01_bug_hunt.mac. No lo ejecutes todavía. Encuentra cinco defectos:

  1. Una altura expresada en unidades incompatibles.
  2. Un tamaño de malla imposible.
  3. Una potencia escrita como multiplicación.
  4. Una magnitud de tensión con signo inadecuado para compararla con un límite.
  5. Una geometría que ignora el bloque de parámetros.

Para cada defecto escribe: síntoma probable, causa y corrección mínima.

Reto verificable

Abre 01_challenge.mac y completa los cuatro TODO.

  1. Añade una quinta altura elegida por ti.
  2. Recorre las cinco alternativas sin duplicar las expresiones.
  3. Identifica la primera que cumple flecha y tensión.
  4. Genera un CSV con entradas, referencias y estado.

Criterios de aceptación

  • uy_ref base difiere menos del 0,1 % de 3.8095E-4 m.
  • sigma_ref base difiere menos del 0,1 % de 12 MPa.
  • Al duplicar altura: uy_nuevo/uy_base = 0.125 ± 0.001.
  • Una entrada negativa se rechaza antes de `/PREP7`.
  • El CSV contiene una fila por alternativa y puede reproducirse.

Autoevaluación

¿Por qué beam_h es una entrada e inertia no?

Porque la altura es elegida por el usuario, mientras que la inercia se deriva de la geometría mediante una expresión.

¿Qué diferencia hay entre uy_ref y un desplazamiento FEA?

uy_ref procede de teoría de vigas; el desplazamiento FEA procede del modelo discreto y sus hipótesis.

¿Qué significa ** en una expresión APDL?

Es el operador de potencia; beam_h**3 representa el cubo de la altura.

¿Por qué validar antes de /PREP7?

Para detener el programa cerca de la causa y evitar que geometría o solver reciban entradas imposibles.

¿Por qué no ejecutamos cuatro FEA dentro del bucle?

M01 se centra en lógica y predimensionado barato. La automatización de simulaciones completas requiere controlar reconstrucción, resultados y archivos, y se aborda en M09.

Evidencia de aprendizaje

  • 01_parametric_beam.mac ejecutado desde una sesión limpia.
  • m01_design_table.csv con cuatro alternativas.
  • Archivo del reto con una quinta alternativa.
  • Tabla «defecto → síntoma → causa → corrección» de la caza de errores.
  • Predicción y comprobación de la razón 1/8 al duplicar altura.

Checklist de validación

  • Reuní todas las entradas físicas en un bloque documentado.
  • Eliminé los números mágicos de geometría, material, malla y carga.
  • Distingo entradas, derivados, referencias y resultados FEA.
  • El script rechaza dimensiones y malla no positivas.
  • El CSV coincide con los resultados esperados dentro de la tolerancia.
  • La primera altura válida del conjunto base es 120 mm.
  • Completé la caza de errores y el reto sin utilizar la GUI.

Lo siguiente

Tu modelo ya acepta entradas y toma decisiones. En M02 resolverás un problema más sutil: aplicar cargas y restricciones sin confiar en números de nodo que cambian al modificar geometría o malla.

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

Gobernar el modelo mediante parámetros y decisiones reproducibles.

Evidencia esperada

uy_ref y sigma_ref con error de redondeo inferior al 0,1 %.

Guarda el dominio entre dispositivos

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

1.¿Qué aporta *SET frente a repetir números literales?
2.¿Qué hace /UNITS con los valores ya escritos? Crítica
3.Introduce el valor de sigma_ref del caso base en MPa. Crítica
MPa
4.Introduce |uy_ref| del caso base en metros.
m
5.¿Qué estructura usarías para repetir el cálculo sobre varias alturas?
6.Una tabla CSV cambia entre ejecuciones idénticas. ¿Qué propiedad se ha perdido? 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 01_parametric_beam.mac