Dawid Zielinski
FEM Automation Engineer · Structural Analysis
Warsaw, Poland
FEM Automation Engineer combining structural analysis expertise with software development skills. Develops ANSYS APDL and Python-based automation tooling that enables parametric studies, mesh convergence checks, and batch processing workflows for the structural analysis team. Acts as the bridge between FEM analysts and HPC infrastructure.
Expertise
- ANSYS APDL scripting
- PyMAPDL and PyAnsys
- parametric FEM studies
- mesh convergence automation
- HPC batch processing
Technologies
Work History
2024-11
Sensitivity analysis for material property uncertainty in thermal-structural analysis — Young's modulus and CTE scatter (±5%) propagated through FEM using polynomial chaos expansion via Dakota.
Challenge: Dakota's Python interface required the FEM code to be wrapped as a callable function with standardized input/output format. Adapting the existing ANSYS scripts to the Dakota API took two weeks before the first successful sensitivity run.
Learned: Uncertainty quantification via Dakota is powerful but requires significant upfront effort in problem formulation. Polynomial chaos expansion is efficient for smooth response surfaces but fails for discontinuous outputs (e.g., contact status changes).
2024-05
Migrated ANSYS automation from legacy APDL scripts to PyMAPDL (ansys-mapdl-core). Built Python classes for common FEM pre/post processing tasks: material assignment, load application, result extraction.
Challenge: PyMAPDL wraps APDL commands as Python methods, but some commands behave differently in the Python context vs. batch APDL — particularly commands involving *IF blocks and *DO loops. Required careful testing of each migrated script.
Learned: PyMAPDL makes ANSYS automation much more maintainable but is not a transparent APDL wrapper. Review the PyMAPDL changelog for each release — breaking changes are common in the early versions.
2023-12
Set up HPC batch processing of 200+ FEM analyses for design of experiments (DOE) study — SLURM job scripts, automatic input file generation, result harvesting to CSV, and failed-job detection and restart.
Challenge: ANSYS license checkout failures silently caused jobs to exit with zero return code — the Python harvester assumed zero = success. Added a check for the existence of expected result files before marking a job as complete.
Learned: HPC job success checking must verify output file existence and basic sanity (non-zero result), not just job exit code. ANSYS exits cleanly even on license failure — the error is only in the log file.
2023-08
Automated mesh convergence study scripted in APDL + Python — automatically refines mesh in regions of high stress gradient, reruns analysis, checks convergence criterion (max stress change < 3%), and stops.
Challenge: Automated remeshing in ANSYS Mechanical is limited — APDL EREFINE command works on legacy meshers but not ANSYS's modern meshing engine. Had to call HyperMesh via Python subprocess for reliable parametric remeshing.
Learned: Automating mesh refinement across different ANSYS meshing engines requires knowing their specific APIs. The modern WorkBench mesher is less scriptable than legacy APDL meshing — plan for this constraint early.
2023-03
Built a parametric ANSYS APDL model for turbine disk geometry optimization — disk bore radius, rim width, and web thickness as design variables. Used APDL DO-loops and *VWRITE for automated result extraction.
Challenge: APDL's string handling is notoriously limited — concatenating file paths with variable names required ugly workarounds. Migrated to a Python wrapper that generates APDL input files with f-strings, dramatically improving maintainability.
Learned: APDL is powerful for FEM control but poor for string manipulation and logic. The right architecture is: Python for parametric generation and result collection, APDL for FEM commands only.