! ============================================================
! M08 - Macros, archivos y depuracion
! Driver reutilizable: valida ARG, orquesta build/solve/extract.
! Uso:
!   /CLEAR,START
!   *USE,08_macro_debug.mac,beam_h,tip_force,mesh_h,case_id
! Unidades coherentes: m, kg, s, N, Pa.
! No ejecutes /CLEAR dentro de esta macro.
! ============================================================

/FILNAME,m08_macro,1
/TITLE,M08 - Macros, archivos y depuracion
/UNITS,SI

! --- 1. CONTRATO DE ARGUMENTOS ---
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
*IF,tip_force,EQ,0,THEN
  /COM,ERROR: ARG2 tip_force must be nonzero
  /STATUS,PARM
  /EOF
*ENDIF
*IF,mesh_h,LE,0,THEN
  /COM,ERROR: ARG3 mesh_h must be positive
  /STATUS,PARM
  /EOF
*ENDIF
*IF,case_id,LE,0,THEN
  /COM,ERROR: ARG4 case_id must be a positive integer
  /STATUS,PARM
  /EOF
*ENDIF

! --- 2. PARAMETROS FIJOS DEL PROYECTO ---
beam_l=1.0
beam_b=0.05
young=210E9
nu=0.30
select_tol=MIN(beam_h,beam_b)*1E-5
equilibrium_tol=0.005
displacement_tol=0.05
spread_tol=0.01
stress_tol=0.10
symmetry_tol=0.05

/COM,M08 DRIVER: case_id=%case_id% h=%beam_h% F=%tip_force% mesh_h=%mesh_h%
/STATUS,PARM

! --- 3. FASES SEPARADAS ---
/INPUT,08_build,mac,,,,1
/INPUT,08_solve,mac,,,,1
/INPUT,08_extract,mac,,,,1

*IF,passes,EQ,1,THEN
  /COM,M08 CASE PASSED
*ELSE
  /COM,M08 CASE FAILED - inspect m08_results.csv and .out
*ENDIF

FINISH
