Paso 1 — Invocar con un contrato explícito
/CLEAR,START
*USE,08_macro_debug.mac,0.10,-1000,0.05,1
*USE carga la macro y asigna ARG1…ARG4. El driver
traduce esos argumentos a parámetros con nombre y rechaza valores inválidos antes de
construir nada:
beam_h=ARG1
tip_force=ARG2
mesh_h=ARG3
case_id=ARG4
*IF,beam_h,LE,0,THEN
/COM,ERROR: ARG1 beam_h must be positive
/STATUS,PARM
/EOF
*ENDIF
No ejecutes /CLEAR dentro del driver. Vaciaría la base de datos y la
pila de macros. Limpia la sesión antes de llamar a *USE.
Paso 2 — Separar construcción, solución y extracción
/INPUT,08_build,mac,,,,1
/INPUT,08_solve,mac,,,,1
/INPUT,08_extract,mac,,,,1
Cada fase asume precondiciones y las comprueba. 08_build.mac crea geometría,
malla y componentes; 08_solve.mac aplica D/F y
resuelve; 08_extract.mac activa el set, valida frente a teoría y escribe el CSV.
Las divisiones de malla se obtienen con NINT(dim/mesh_h). Así
mesh_h es un argumento real del contrato, no un valor hardcodeado en el
monolito. La construcción fija KEYOPT(2)=3 en SOLID185: con
KEYOPT(2)=0 la tensión de flexión queda artificialmente baja (~22 %) en esta
malla.