Step 3 — Write evidence, not just messages
*CFOPEN,m08_results,csv
*VWRITE
('case_id,beam_h,tip_force,mesh_h,n_nodes,n_elements,...,passes')
*VWRITE,case_id,beam_h,tip_force,mesh_h,n_nodes,n_elements,...,passes
(...format...)
*CFCLOSThe CSV must contain inputs, topology, FE results, analytical references, relative errors, and passes. An on-screen /COM helps debugging; the file is evidence that survives the session.
Step 4 — Always diagnose with the same method
/STATUS,PARM
/COM,Inspect the .out for file paths, empty selections and missing setsIf passes=0, do not relax tolerances. Ask in this order: is the argument contract valid? Are the submacros in the working directory? Do the components contain nodes? Does a result set exist before extraction?
CSV acceptance contract
Compare your output with 08_expected_results.csv:
- Case 1:
126nodes,40elements,uy_ref=−3.80952381E−4. - Case 2:
156nodes,50elements,uy_ref=−7.44047619E−4. - Deflection error
< 5%, interior stress< 10%, equilibrium< 0.5%. passes=1in both cases.
Common pitfalls
- Calling
*USEwithout also copying08_build,08_solve, and08_extract. - Forgetting
ALLSEL,ALLbetween regions and carrying a residual selection. - Extracting displacements when
n_sets=0. - Changing the physics or tolerance to “make” an incorrectly invoked case pass.