Abstract
Radial basis functions (RBFs) based mesh morphing allows to adapt the shape of a computational grid onto a new one by updating the position of all its nodes. Usually nodes on surfaces are used as sources to define the interpolation field that is propagated into the volume mesh by the RBF. The method comes with two distinctive advantages that makes it very flexible: it is mesh independent and it allows a node wise precision. There are however two major drawbacks: large data set management and excessive distortion of the morphed mesh that may occur. Two radial kernels are widely adopted to overtake such issues: the biharmonic spline (BHS) and the Wendland C2 (WC2). The BHS minimizes the mesh distortion but it is computational intense as a dense linear system has to be solved whilist the WC2 leads to a sparse system easier to solve but which can lack in smoothness. In this paper we compare these two radial kernels with a specific focus on mesh distortion. A detailed insight about RBF fields resulting from BHS and WC2 is first provided by inspecting the intensity and the distribution of the strain for a very simple shape: a square plate with a central circular hole. An aeronautical example, the ice formation onto the leading edge of a wing, is then exposed adopting an industrial software implementation based on the state of the art of RBF solvers.
Keywords
 CAE
 Mesh morphing
 Radial basis functions
Download conference paper PDF
1 Introduction
Radial basis functions (RBFs) are a powerful mathematical tool introduced by Hardy [1] in the late sixties for the interpolation of scattered data in the field of surveying and mapping. A review of the multiquadric (MQ) approach was published by Hardy himself [2] twenty years later; here the author explains that the MQ is biharmonic for 3D problems. Since their inception, RBF where adopted in many different fields and their mathematical framework developed [3] by exploring a variety of RBF kernels; among them the compact supported ones were introduced by Wendland [4].
An RBF interpolation at a generic point \( \varvec{x} \) (see Eq. 1) consists in the weighted summation of interdistance interactions of the point \( \varvec{x} \) with a set of given points, defined sources \( \varvec{x}_{{\varvec{s}i}} \), where the interdistance interaction consists in the Euclidean distance transformed by the radial function \( \varphi \left( {\text{r}} \right) \). The weights \( \gamma_{i} \) are computed so that the RBF gets at the sources the known input values to be interpolated.
RBF are nowadays adopted in several engineering applications [5] and are well accepted as one of the most powerful and versatile mathematical approach to manage mesh morphing. The RBF allows creating a scalar field that interpolates a function defined on a set of source points: in the case of 3d mesh morphing a vector field is defined by individually interpolating the three components of the displacement known at source points. The RBF vector field is a point function independent from the mesh itself, all the points in the space receiving the field are called targets. A typical mesh morphing problem that can be faced using RBF consists in a threedimensional mesh to be adapted according to a known displacement of the surface; surface nodes are extracted from the surface mesh as sources and all the nodes of the volume mesh receive the morphing field as targets.
Computer Aided Engineering (CAE) is more and more demanding for advanced methods capable to generate and adapt computational grids for multiphysics models. High fidelity models are widely employed, for instance, in computational fluid dynamics (CFD) and computational structural mechanics (CSM). The size of the grids daily adopted for CFD according to industrial best practices can be comprised of many millions of cells and, in some situation, close to one billion [6]; structured meshes of hexahedrons, hybrid meshes of tetrahedrons with prisms layers at the wall and meshes of Cartesian polyhedrons with inflation of prisms at surfaces are common adopted options for CFD. For CSM applications the mesh size is about onetwo order lower than CFD ranging from hundred thousand up to some million of nodes for the most complex cases [7]; parabolic tetrahedrons are in this case widely adopted and the extra complexity of midside nodes management is added. In view of mesh morphing we have to consider that to the complexity of the mesh typology (i.e. linear/parabolic, tetra/hexa/poly) we have to add special cases for management of interfaces: moving/rotating parts are common in CFD, contact connections are common in CSM.
Mesh morphing for CAE applications is required as a companion/replacement of meshing when multiple shape variations of the same component/system are required. This is typical of design optimization which requires the automatic update of the CAE grid onto new design configurations to be explored: the baseline mesh is updated onto the new configuration instead of generating a new mesh onto the updated geometry [8, 9]. Morphing becomes very useful for optimization where the new shape is not known in advance but predicted by automatic sculpting methods as the adjoint based [10, 11] and the biological growth method [12]. Mesh morphing can furthermore help the solver itself as a tool to support the shape evolution (ice/snow deposition, erosion) [27], to enable fluid structure interaction (1way, 2way, structural modes embedding) [13, 14] and to move the CAE model onto “as built” configurations surveyed. Mesh morphing is also a key enabler toward the creation of reduced order models (ROM) that are adopted for the creation of digital twins [15].
Whatever is the need for mesh morphing, there are common requirements to fulfill to setup an effective mesh morphing approach. Among these there are the ability to:

manage different element typology (linear/parabolic, tetra/hexa/poly);

go across interfaces (contact/rotating parts) and across partitions (distributed meshes for parallel calculations);

adapt the mesh with the minimum distortion (stretching/compression);

preserve the aspect ratio of cells at the boundary so that the ability to capture stress raisers/boundary layers is preserved;

adapt the mesh in a reasonable time even for very large models.
RBF mesh morphing satisfactorily fits above mentioned requirements because it comes with two distinctive advantages that makes it very flexible: it is mesh independent and it allows a node wise precision. Its meshless nature is due to the fact that once the RBF field is defined, the mesh deformation becomes a point function; nodal positions are updated regardless the attached mesh elements, and interfaces (contact/partitions boundaries) are implicitly preserved as the same field is received on coincident locations. The meshless nature is a distinctive feature of another widely adopted mesh morphing method: the free form deformation (FFD) [16]. One of the major drawbacks of FFD is that a pointwise precision cannot be achieved. Mesh based methods, as for instance the use of an auxiliary FEM solution [17, 18], allow the user to have pointwise control; despite this benefit their mesh based nature makes complex the management of arbitrary elements typology and interfaces.
Considering the great advantages of RBF, it is clear why a large research effort has been invested over the last decades toward their effective implementation. There are however two major drawbacks to be handled: numerical complexity and deformed mesh quality.
RBFs require the solution of large linear systems whose size is equal to the number of source points. The source points count grows fast especially if a nodewise control is needed because large portions of the nodes on the surface mesh are used as sources. Most of the implementations that are considered for research purposes exploits direct linear solvers because a great flexibility is possible and different radial function kernels can be seamlessly adopted. Unfortunately the numerical complexity scales up in this case with a cubic law so the maximum size of the RBF problem (number of sources) is limited to about 10 000 points. To overtake such limit there are different strategies: replace the original cloud with a smaller one (point decimation) fine enough to guarantee the desired precision [19], adopt iterative [20] solvers, use of the partition of unity [21] and use of fast multipole expansion [22]. The best “recipe” for a fast and effective RBF solver is still an open issue and the acceleration extent is strictly related to the adopted kernel.
The quality of the morphed mesh is of paramount importance and the effectiveness of deformation depends on the radial kernel adopted. The distortion (stretching/compression) of the mesh should be limited as much as possible because the validity of the numerical solution is maintained only within a certain range (which is solver related) of the element/cell^{Footnote 1} quality (skeweness, aspect ratio, …). Keeping a good quality usually is not enough; a proper spacing of the cells close to the surfaces is required, as example, for CFD meshes in order to preserve the capability to correctly solve the boundary layer. The same spacing is expected in the deformed mesh. This means that while the shape of the surface is changed, the deformation orthogonal to the surface itself has to be minimum so that the boundary layers are solved keeping a similar overall thickness and spacing.
The aim of this paper is to provide useful insights on two specific kernels that are widely adopted for mesh morphing: the biharmonic spline (BHS) and the Wendland C2 (WC2). The BHS minimizes the mesh distortion and it is known to have the feature of “smoothest interpolant” for the threedimensional case; it is computationally expensive because of the full support of the radial function and so a dense linear system has to be solved. The WC2 is compactly supported and so a sparse system has to be solved; however it may lack in smoothness and the behavior close to the surfaces is strongly dependent on the radius of the support.
An overview of the studied problem is given in the first section (this introduction), a refresh of the math of RBF, including first derivatives calculation, is provided in the second section; the third section demonstrates how various RBFs perform for a square plate with a central circular hole, the fourth section deals with an aeronautical example faced with an industrial software and, finally, the fifth section wraps the study with the concluding remarks.
2 Radial Basis Functions Mesh Morphing
2.1 Radial Basis Functions Background
The RBF interpolation of a generic scalar field can be adopted to represent a variety of quantities. A generic component of a displacement field can be interpolated as
In this study we consider the case where the quantity to be interpolated \( \varvec{\delta}_{\varvec{s}} \) is given at the source point locations
The unknown coefficient vector \( \varvec{\gamma}^{\varvec{\delta}} \) can be computed by solving the linear system
Where the interpolation matrix \( \varvec{M} \) is
Different radial functions can be adopted. In this study we focus on the splines and on the Wendland, summarized in Table 1. In the case of threedimensional spaces the interpolated function can be rewritten as
And can be differentiated, for instance, with respect to \( x \)
The full gradient of the interpolated function can be computed accordingly
2.2 RBF Mesh Morphing
When RBFs are used for mesh morphing, the three components of a displacement field (Eq. 9), that is typically assigned at a cloud of control points here defined as RBF centers or source points, are interpolated in the space and used to update the nodal positions of the mesh nodes to be morphed.
The field is applied to process all the nodal positions to be updated.
The local deformation due to the morphing field can be inspected by computing the derivatives of the three components of displacement thus obtaining the strains as follows
The definition of the RBF problem, i.e. the arrangement of the cloud of RBF sources and their input values, is the key enabler for RBF based mesh morphing and, considering its meshless nature and the great flexibility offered by the RBF mathematics, there are a variety of options to impose a desired morphing action. An overview of RBF mesh morphing strategies is given in [23, 24], while a deeper presentation about the use of RBF mesh morphing in industrial applications can be found in [25]. Among such a variety of mesh morphing paradigms the simpler one, which is the easiest to be automated, consists in the usage of all the nodes (or a subset) onto the surfaces as sources [26]. For sake of simplicity the study herein presented is based on such approach. The example of Fig. 1 demonstrates how the mesh of a notched bar can be updated controlling the radius of the notch. In this case the new CAD representation allows the user to define the positions of the RBF sources. An uniform spacing is imposed to all curves of the original geometry. The deformed positions of sources are then computed onto the updated CAD by keeping the same parametric distribution along the curve. The RBF field produced by source points is then used to update all the nodes of the mesh.
3 A Square Plate with a Circular Hole
The first application faced to understand how the different radial functions are capable to handle mesh morphing consists in a simple geometry: the square plate (1.0 m side) with a circular hole (0.2 m radius) represented in Fig. 2.
The implementation of this RBF mesh morphing demonstrator is divided in two parts. The mesh morphing setup is performed using a preprocessor for FEA applications, the NX Femap in this case. The mesh is exported in a readable ASCII format (Nastran data deck in this example) so that the full mesh (nodes and elements) together with boundary conditions (constrained nodes with prescribed displacements) can be translated. The second part is a Mathcad application that implements basic RBF according to [5] and provides a fast bench to play around with the math and with obtainable morphed mesh. This implementation is good for investigate the method thanks to great flexibility provided, but it is not intended to be used for the assessment of numerical performances.
3.1 Changing the Diameter of the Hole
All the nodes belonging to the curves on the boundary are in this case used as RBF sources. The ones along the square perimeter are kept fixed while the ones on the hole are moved radially of 0.1 m so that the radius is changed from 0.2 m to 0.3 m. The effect of the radial functions is firstly investigated by generating a uniform map of points in the square (100 × 100 samples). The surface plot of the \( \varepsilon_{y} \) strain is then generated for all the points with the exception of the ones inside the circle for which a zero value is imposed. All surface plots of Fig. 3 (top BHS and THS, bottom WC2 with support radius 0.2 m and 0.1 m) have the same scale (−2, 1). We can clearly notice that, as expected, the maximum strain is 0.5 for all the situations: it is the hoop strain imposed at the circle and it occurs along the x direction. As far as the minimum strain, this is related to the compression of the cell required to accommodate morphing, and it has a peak along the y direction (pure radial on the circle). The minimum value represents the severity of element compression due to morphing. It clearly grows moving form BHS to THS and becomes more and more severe with WC2, especially if a small support radius is selected.
A better insight can be gained by plotting the \( \varepsilon_{y} \) strain along the vertical segment that starts from the midpoint of the bottom side of the square and ends at the intersection with the circle (Fig. 4). In this comparison also the WC0 and WC4 functions are included. The value of the \( \varepsilon_{y} \) strain at the intersection with the circle for BHS, THS is respectively: 0.04, 0.109; its values with support radius 0.1 m for WC0, WC2, WC4 are respectively: 0.276, −0.242, −0.244; its values with support radius 0.2 m for WC0, WC2, WC4 are respectively: −0.093, −0.235, −0.238.
The ability of the RBF to succesfully adapt the mesh is investigated by plotting the minimum quality of the triangles (i.e. the ratio between the inner circle and the outer circle for each triangle) as a function of the deformation intensity (Fig. 5). The chart for BHS and THS is very similar so only BHS is plotted. The WC2 with radius 0.2 m is at the limit whilst the case of WC2 with radius 0.1 m (Fig. 6 right) produces negative quality at an half of the intensity.
To better understand the effect of the support radius for the WC2 a larger value of 0.4 m has been considered. Figure 6 (right) shows that in this case a valid mesh can be achieved for the full interval. The case of 0.1 m is plotted as well to show how the quality is strictly related to the support radius. It is worth to notice that such large support radius allows to add the long distance interactions; the benefit of generating sparse system will be in this case reduced or lost.
4 Industrial Example
The application shown in this section was tackled adopting an industrial software implementation: the RBF Morph module for the ANSYS Fluent CFD solver [25]. RBF Morph allows to setup the RBF mesh morphing problems with a variety of methods including the simple ones relevant for this study. The software features a fast RBF solver that comes with specific acceleration for the BHS. A library of Wendland functions is available as well.
4.1 Ice Profile on an Aircraft Wing Airfoil
The study presented in this section refers to the problem studied in [27, 28]. Mesh morphing is adopted to simulate the growth of ice; advanced CFD simulations coupled with icing models allow to compute the distribution of ice thickness onto the surfaces. The ice profile has an aerodynamic impact which cannot be neglected if the shape change is relevant. In the icing workflow the mesh is adapted onto the new “as iced” shape after a certain number of iterations. The CFD model of the 2D geometry is meshed in 3D as a single layer of hexahedrons; the mesh is represented in Fig. 7 where a detail of the mesh around the airfoil profile is shown. The chord length of the wing is 1 m and the thickness is 0.12 m. It is worth to notice that, as anticipated in the introduction, the spacing of the cells close to the wall is defined to solve the boundary layer. A key feature of the mesh adapted onto new shapes is to preserve such spacing similar to the one of the baseline mesh.
The mesh morphing setup can be appreciated in Fig. 7 and in the detail of Fig. 8 where the shape of the ice profile is shown.
The mesh morphing behavior depends on the radial function. In Fig. 9 the BHS is compared with the WC2 with support radius 0.1 m. The figure clearly shows the local nature of the compact supported RBF. It comes with lighter computational efforts, especially if a sparse solver is adopted. Remote points on the inlet outlet walls could in this case be deleted as there is no interaction. Instead, the BHS allows to distribute the deformation over the full domain at the cost of full long distance interactions and a dense interpolation matrix.
The effect of the radial function can be visually inspected in Fig. 10 where a detail of the deformed mesh is represented in overlay with the baseline one. To have a quantitative metric of mesh distortion close to the wall, the distance from the surface of the fifth layer of cells is measured along the horizontal direction starting from the nose of the leading edge. Such distance on the baseline mesh is 21.7 mm and, after morphing, it becomes 22.3 mm for the BHS, 28.9 mm for the WC2 with radius 0.5 mm, 27.5 mm for the radius 0.3 mm, 17.5 mm for the radius 0.1 mm. Adopting a radius of 0.15 mm the distance becomes 22.7 mm.
5 Conclusions
In this paper a brief introduction about RBF mesh morphing is given with a special focus on the selection of the radial function. Among the many available options two of the most adopted ones have been considered in detail: the BHS and the WC2. The first example examined is a very simple mesh constituted of triangular elements representing a square plate with a circular hole. The deformation fields are in this case examined in details for BHS, WC2 with various support radii and for THS, WC0, WC4 as well. The study clearly shows that the radial function has an important effect on how deformations are distributed and on their peaks. A successful morphing is obtained with BHS and THS whilst the success of the WC2 depends from the radius. If too small values are adopted the morphed mesh results to have reversed cells. With increased radii (0.1 m, 0.2 m, 0.4 m) the filling ratio of the matrix increases (4.0%, 7.9%, 23.7%) together with the linear system solving effort.
An industrial aeronautical application is also faced. In this case the morphing action is applied to the nose of an airfoil to adapt its shape to the shape of the ice computed by an ice accretion grow code. Inspected radial functions (BHS and WC2) allow to get a successful morphing with all the examined combinations of parameters. Also for this application the deformation intensity is strongly dependent on the radial function. A qualitative comparison between global supported BHS and compact supported WC2 with support radius 0.1 m is firstly given showing the differences between the global and local morphing. The effect of the support radius is then investigated by examining how the spacing of first five layers of cells close to the leading edge evolves after morphing. The BHS allows to preserve such a spacing with a variation (small increment) that is smaller than 3%. As far as the WC2 is concerned, such variation is strongly affected by the radius. The smaller radius considered (0.1 m) results in a reduction of such distance of about 20%. The larger one produces an opposite effect with an increment of about 33%. A proper tuning of the radius (0.15 m) allows to almost preserve the distance with an increment lower than 5%.
The numerical tests presented in this paper support what is well known from practical experience in industrial applications of mesh morphing. BHS, if compared to WC2, allows to get less distortion, a better overall quality and a good preservation of mesh spacing close to the boundaries. When adopting WC2 the results are strongly affected by the support radius. The BHS, on the other hand, produces a full populated linear system and requires far source points to limit the morphing field not needed with the WC2 that, thanks to the compact support, produces a decaying morphing field.
Notes
 1.
In this paper we use both “element” and “cell” terms for the same entity because in CSM the finite element method is the standard and the “element” term is commonly adopted whilst in CFD the finite volume method is the standard and the “cell” term is commonly adopted.
References
Hardy, R.L.: Multiquadric equations of topography and other irregular surfaces. J. Geophys. Res. 76(8), 1905–1915 (1971)
Hardy, R.L.: Theory and applications of the multiquadricbiharmonic method, 20 years of discovery, 1968–1988. Comput. Math Appl. 19(8/9), 163–208 (1990)
Buhmann, M.D.: Radial Basis Functions: Theory and Implementation. Cambridge University Press, New York (2003)
Wendland, H.: Piecewise polynomial, positive definite and compactly supported radial basis functions of minimal degree. Adv. Comput. Math. 4(1), 389–396 (1995). ISSN 10197168
Biancolini, M.E.: Fast Radial Basis Functions for Engineering Applications. Springer, Heidelberg (2017). https://doi.org/10.1007/9783319750118
Cella, U., Biancolini, M.E., Wade, A.: RBF morph and ANSYS contribution to GMGW2 (case 3 – OPAM1). In: 2nd AIAA Geometry and Mesh Generation Workshop, San Diego, California (USA), 5–6 January 2019 (2019)
Groth, C., et al.: Structural validation of a realistic wing structure: the RIBES test article. Procedia Struct. Integrity 12, 448–456 (2018)
Biancolini, M.E., Costa, E., Cella, U., Groth, C., Veble, G., Andrejašič, M.: Glider fuselagewing junction optimization using CFD and RBF mesh morphing. AEAT 88(6), 740–752 (2016)
Biancolini, M.E., Del Bene, C., Larsson, T., Groth, C.: Evaluation of gokart aerodynamic efficiency using CFD, RBF mesh morphing and lap time simulation. Int. J. Aerodyn. 5(3–4), 146–171 (2016)
Groth, C., Chiappa, A., Biancolini, M.E.: Shape optimization using structural adjoint and RBF mesh morphing. Procedia Struct. Integrity 8, 379–389 (2018)
PapoutsisKiachagias, E.M., Porziani, S., Groth, C., Biancolini, M.E., Costa, E., Giannakoglou, K.C.: Aerodynamic optimization of car shapes using the continuous adjoint method and an RBF morpher. In: Minisci, E., Vasile, M., Periaux, J., Gauger, Nicolas R., Giannakoglou, Kyriakos C., Quagliarella, D. (eds.) Advances in Evolutionary and Deterministic Methods for Design, Optimization and Control in Engineering and Sciences. CMAS, vol. 48, pp. 173–187. Springer, Cham (2019). https://doi.org/10.1007/9783319899886_11
Porziani, S., Groth, C., Biancolini, M.: Automatic shape optimization of structural components with manufacturing constraints. Procedia Struct. Integrity 12, 416–428 (2018)
Biancolini, M., Cella, U., Groth, C., Genta, M.: Static aeroelastic analysis of an aircraft windtunnel model by means of modal RBF mesh updating. J. Aerosp. Eng. 29(6), 04016061 (2016)
Groth, C., Cella, U., Costa, E., Biancolini, M.E.: Fast high fidelity CFD/CSM fluid structure interaction using RBF mesh morphing and modal superposition method. Aircr. Eng. Aerosp. Technol. 91, 893–904 (2019)
Groth, C., et al.: The medical digital twin assisted by reduced order models and mesh morphing (2019)
Sederberg, T.W., Parry, S.R.: Freeform deformation of solid geometric models. In: Evans, D.C., Athay, R.J. (eds.) Proceedings of the 13th Annual Conference on Computer Graphics and Interactive Techniques (SIGGRAPH 1986), New York, NY, pp. 151–160 (1986)
Masud, A., Bhanabhagvanwala, M., Khurram, R.A.: An adaptive mesh rezoning scheme for moving boundary flows and fluid–structure interaction. Comput. Fluids 36(1), 77–91 (2007)
Biancolini, M.E., Brutti, C., Pezzuti, E.: Shape optimisation for structural design by means of finite elements method. In: ADM, vol. 12 (2001)
Rendall, T.C.S., Allen, C.B.: Reduced surface point selection options for efficient mesh deformation using radial basis functions. J. Comput. Phys. 229(8), 2810–2820 (2010)
Faul, A.C., Goodsell, G., Powell, M.J.D.: A Krylov subspace algorithm for multiquadric interpolation in many dimensions. IMA J. Numer. Anal. 25, 1–24 (2005)
Wendland, H.: Fast evaluation of radial basis functions: methods based on partition of unity. In: Chui, C.K., Schumaker, L.L., Stöckler, J. (eds.) Approximation Theory X: Wavelets, Splines, and Applications, pp. 473–483. Vanderbilt University Press (2002)
Beatson, R.K., Powell, M.J.D., Tan, A.M.: Fast evaluation of polyharmonic splines in three dimensions. IMA J. Numer. Anal. 27, 427–450 (2007)
Cella, U., Groth, C., Biancolini, M.E.: Geometric parameterization strategies for shape optimization using RBF mesh morphing. Advances on Mechanics, Design Engineering and Manufacturing. LNME, pp. 537–545. Springer, Cham (2017). https://doi.org/10.1007/9783319457819_54
Botsch, M., Kobbelt, L.: Realtime shape editing using radial basis functions. In: Marks, J., Alexa, M. (eds.) Computer Graphics. Eurographics, vol. 24, no. 3 (2005)
Biancolini, M.E.: Mesh morphing and smoothing by means of radial basis functions (RBF): a practical example using fluent and RBF morph. In: Handbook of Research on Computational Science and Engineering: Theory and Practice, p. 34 (2012)
Sieger, D., Menzel, S., Botsch, M.: RBF morphing techniques for simulationbased design optimization. Eng. Comput. 30(2), 161–174 (2014)
Biancolini, M.E., Groth, C.: An efficient approach to simulating ice accretion on 2D and 3D airfoils. In: Advanced Aero Concepts, Design and Operations (2014)
Groth, C., Costa, E., Biancolini, M.E.: RBFbased mesh morphing approach to perform icing simulations in the aviation sector. Aircr. Eng. Aerosp. Technol. 91(4), 620–633 (2019)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2020 Springer Nature Switzerland AG
About this paper
Cite this paper
Biancolini, M.E., Chiappa, A., Cella, U., Costa, E., Groth, C., Porziani, S. (2020). Radial Basis Functions Mesh Morphing. In: , et al. Computational Science – ICCS 2020. ICCS 2020. Lecture Notes in Computer Science(), vol 12142. Springer, Cham. https://doi.org/10.1007/9783030504335_23
Download citation
DOI: https://doi.org/10.1007/9783030504335_23
Published:
Publisher Name: Springer, Cham
Print ISBN: 9783030504328
Online ISBN: 9783030504335
eBook Packages: Computer ScienceComputer Science (R0)