## 3 Method
### Direct Morphing Approach
As these fixed nodes can be seen as control nodes with the displacement vector \(\mathbf{v}=\mathbf{0}=(0,0,0)^{T}\), we combine the control nodes and fixed nodes into one matrix of imposed displacement nodes  
\[\underline{x}_{d}=\left[\mathbf{x}_{c,1},\mathbf{x}_{c,2},\ldots,\mathbf{x}_{c,k},\mathbf{x}_{ f,1},\mathbf{x}_{f,2},\ldots,\mathbf{x}_{f,m}\right] \tag{4}\]  
with their displacements  
\[\underline{v}_{d}=\left[\mathbf{v}_{c,1},\mathbf{v}_{c,2},\ldots,\mathbf{v}_{c,k},\mathbf{0}, \mathbf{0},\ldots,\mathbf{0}\right]\quad. \tag{5}\]  
All \(n\) FE nodes are collected in one matrix and provide the free nodes  
\[\underline{x}_{FE}=\left[\mathbf{x}_{FE,1},\mathbf{x}_{FE,2},\ldots,\mathbf{x}_{FE,n} \right]\quad. \tag{6}\]  
The morphing algorithm calculates their displacement vectors  
\[\underline{v}_{FE}=\left[\mathbf{v}_{FE,1},\mathbf{v}_{FE,2},\ldots,\mathbf{v}_{FE,n}\right] \tag{7}\]  
depending on their locations \(\underline{x}_{FE}\) and the imposed displacements \(\underline{v}_{d}\) at the points \(\underline{x}_{d}\). We use the python [24] package _discrete Sibson (natural neighbor) interpolation_ by [23] to interpolate the imposed displacements \(\underline{v}_{d}\) at the nodes \(\underline{x}_{d}\) onto the nodes of a regular grid. This grid consists of nodes \(\underline{x}_{g}\) with the same equidistant spacing \(\lambda\) in all three directions \(x_{1}\), \(x_{2}\) and \(x_{3}\). Each direction of the vector field represents a separate scalar interpolation, following [22]. In the next step each FE node \(\underline{x}_{FE}\) receives its displacement by linear interpolation from the regular grid nodes \(\underline{x}_{g}\). We used _SciPy_'s _regularGrid_ to perform this interpolation [25]. The grid distancing \(\lambda\) was set to \(3\,\mathrm{mm}\) and influences morphing accuracy and calculation time in opposite directions. The accuracy increases linearly with the grid density, whereas the calculation time increases cubical. The used component consists of 170,000 FE nodes. The component has an extent of approximately \(300\times 300\times 300\,\mathrm{mm}\), which leads to 1,000,000 grid nodes \(\underline{x}_{g}\). The morphing is only exact if the node of the regular grid coincides with the control node. Lower values of \(\lambda\) reduce the maximum possible distance between grid node and control node. If the application demands to morph larger areas like bushings, we define multiple control nodes in the area with the same imposed displacement, so the morphing error in the middle becomes zero. If we need to achieve a displacement by using only one control node, the morphing process can be performed iteratively until the morphing error undercuts a defined limit. This is done for the validation in this paper. Altogether, we performed 3 natural neighbor interpolations for the 3 directions and use them to perform 3\(n\) regular grid interpolations. All mentioned steps, necessary to perform the morphing, are fully scripted in _Python_, making the morphing process completely automated. The only necessary input are the original FE model that represents the matrix \(\underline{x}_{FE}\) and a text-file that specifies the two matrices \(\underline{x}_{d}\) and \(\underline{v}_{d}\). This enables us to batch morph the designs necessary to create a profound metamodel. The creation of one design takes approximately five minutes on an _Intel Core i7_ quad-core processor of the 6 th generation. The mesh quality checks are applied directly before the FE calculation. In our application for morphing distances of up to \(10\,\mathrm{mm}\), the criteria hinted no necessary mesh refinements.