# Space Node Topology Optimization Design Considering Anisotropy of Additive Manufacturing
## 2 Materials and Methods
### Secondary Development of the BESO Method
When using this average as the critical value, if the number of solid elements is greater than the volume constraint, the average is again averaged with the maximum value. Otherwise, the average is summed with the minimum value. In the recycling process, the most accurate critical value is obtained by continuous approximation through the bisection method, to carry out the unit division. Figure 1: Schematic diagram of sensitivity filtering. The formula is as follows [34]:  
\[\left\{ \begin{array}{l}a_{th}=\frac{a_{min}+a_{max}}{2}\\ a_{th}=\frac{a_{th}+a_{max}}{2}\text{ if }V>V_{goal}\\ a_{th}=\frac{a_{th}+a_{min}}{2}\text{ if }V<V_{goal}\end{array} \right., \tag{9}\]  
where \(a_{th}\) is the critical value of the division unit, \(a_{min}\) is the minimum sensitivity, \(a_{max}\) is the maximum sensitivity, \(V\) is the current volume value, and \(V_{goal}\) is the target volume under the control of the current evolution rate. With a certain number of optimization iterations, the convergence of the algorithm iteration is judged according to the historical change of sensitivity. The formula is as follows [31; 32; 33]:  
\[\frac{\left|\sum\limits_{i=1}^{N}C_{K-i+1}-\sum\limits_{i=1}^{N}C_{K-i-N+1} \right|}{\sum\limits_{i=1}^{N}C_{K-i+1}}\leq e, \tag{10}\]  
where \(C\) is the compliance of each iteration, \(K\) is the iteration order, and \(N\) is a positive integer. When it is smaller than the relative error e, it is judged to be converged. On the basis of the above optimization theory, the algorithm flow of secondary development is shown in Figure 2:  
Figure 2: Flowchart of topology optimization. When using this method, the finite element analysis model is first established and meshed in Abaqus. Then, the.inp format of the Abaqus calculation file is exported. Then, the DOS command 'dos(strcat('abaqus job=',Name,' double interactive cpus=2'))' based on Matlab programming is called, the finite element.inp file is calculated in the background, and the.ODB result file is obtained. The resulting data from the.ODB file are then extracted by calling a Python program, which contains the stress and energy of the element. The extraction method is to open the.ODB file through the openOdb() command in python, and to accurately extract the target SET's data with the help of the command 'odb.steps[].frames[].fieldOutputs[].getSubset (region=odb.rootAssembly.instances.elementSets)', because python tools have a rich database to call. When analyzing, the material properties, penalty index, evolution rate, unit range, and filter radius are firstly set. In Matlab, according to the arrangement of elements of the finite element model, the element values obtained from.odb are correspondingly arranged into a three-dimensional matrix. Sensitivity analysis and filtering are then performed. Lastly, on the basis of the filtered design variables, the unit is divided using the bisection method, and a new.inp file is written in Matlab through the 'fopen' and 'fprintf' commands. On the basis of the set evolution rate, the volume is continuously reduced until the target volume fraction is reached. This can be achieved with the help of 3D modeling software and a 3D printer. This completes the optimization, followed by actinic processing and additive manufacturing. Relying on mature commercial finite element solvers, this method has good reliability and can be easily invoked when solving optimization problems.