! ============================================================
! M09 - Fase de construccion
! Geometria, malla y componentes. Reconstruye el modelo por caso.
! ============================================================

FINISH
/PREP7

! --- Limpieza de iteraciones anteriores (sin /CLEAR global) ---
*GET,n_vol,VOLU,,COUNT
*IF,n_vol,GT,0,THEN
  VSEL,ALL
  VCLEAR,ALL
  VDELE,ALL,,,1
  KDELE,ALL,,,1
*ENDIF
CMDELE,ALL

ET,1,SOLID185
! KEYOPT(2)=3: simplified enhanced strain (hallazgo M07-M08).
KEYOPT,1,2,3
MP,EX,1,young
MP,PRXY,1,nu
TYPE,1
MAT,1
BLOCK,0,beam_l,0,beam_h,0,beam_b

div_x=NINT(beam_l/mesh_h)
div_y=NINT(beam_h/mesh_h)
div_z=NINT(beam_b/mesh_h)
*IF,div_x,LT,1,THEN
  div_x=1
*ENDIF
*IF,div_y,LT,1,THEN
  div_y=1
*ENDIF
*IF,div_z,LT,1,THEN
  div_z=1
*ENDIF

MSHAPE,0,3D
MSHKEY,1
LSEL,S,LENGTH,,beam_l
LESIZE,ALL,,,div_x,,1
LSEL,S,LENGTH,,beam_h
LESIZE,ALL,,,div_y,,1
LSEL,S,LENGTH,,beam_b
LESIZE,ALL,,,div_z,,1
ALLSEL,ALL
VMESH,ALL

*GET,n_nodes,NODE,0,COUNT
*GET,n_elements,ELEM,0,COUNT

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,

*IF,n_fixed,LE,0,THEN
  /COM,ERROR: fixed_nodes is empty - check beam_l and SELTOL
  /STATUS,PREP
  /EOF
*ENDIF
*IF,n_tip,LE,0,THEN
  /COM,ERROR: tip_nodes is empty - check beam_l and SELTOL
  /STATUS,PREP
  /EOF
*ENDIF

/COM,M09 BUILD case=%case_id%: nodes=%n_nodes% elems=%n_elements% fixed=%n_fixed% tip=%n_tip%
