Mesh generation method

The mesh generation method addresses the inefficiencies of current methods by using an implicit representation and optimization techniques to produce high-quality meshes for complex geometries, resulting in improved accuracy and computational efficiency.

WO2025016941A1PCT designated stage expired Publication Date: 2025-01-23VOXSHELL LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
PCT/EP2024/069943
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-07-20
Filing Date
2024-07-12
Publication Date
2025-01-23

AI Technical Summary

Technical Problem

Current mesh generation methods, particularly for unstructured meshes, are time-consuming, complex, and inefficient, especially when dealing with complex geometries and high topology complexity, leading to inaccurate numerical solutions and poor computational efficiency.

Method used

A mesh generation method that involves receiving input geometry data, generating an implicit representation, creating a first mesh and a refined mesh, performing surface mesh element optimization, and optionally performing sharp geometry refinement to improve mesh quality and adaptability.

Benefits of technology

The method achieves improved accuracy, convergence, stability, robustness, and computational efficiency by generating high-quality meshes that can handle complex geometries and topologies with reduced processing power.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure EP2024069943_23012025_PF_FP_ABST
    Figure EP2024069943_23012025_PF_FP_ABST
Patent Text Reader

Abstract

The mesh generation method comprises the steps of: receiving data representative of an input geometry of an object; generating an implicit representation of the geometry, the implicit representation comprising a geometry boundary, an exterior portion, and an interior portion; generating a first mesh based on the input geometry, the first mesh comprising a plurality of mesh elements; generating a refined mesh based on the first mesh, the refined mesh comprising one or more mesh element points; performing surface mesh element optimization on the refined mesh; and outputting an output mesh.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] MESH GENERATION METHOD

[0002] FIELD OF THE INVENTION

[0003] The present disclosure relates to a method for generating a mesh.

[0004] BACKGROUND TO THE INVENTION

[0005] Mesh generation is a process in which a continuous geometric space is divided into discrete geometric and topological cells or elements, known as a mesh. Meshes are a key component of efficient and reliable numerical or physical simulations, such as finite element method (FEM) analysis and computational fluid dynamics (CFD). Meshes have a significant impact on solution accuracy, computation efficiency, and the reduction of numerical diffusion. Mesh generation is a time consuming practice and can occupy a significant portion of an engineer’s time.

[0006] There are three types of meshes: structured; unstructured; and hybrid. Structured meshes generally comprise regular and uniform mesh elements, such as hexahedra, quadrilaterals, or prisms, arranged according to a set of grid lines or curves. Unstructured meshes instead generally comprise irregular and non-uniform mesh elements, such as tetrahedra, triangles, or pyramids that are not arranged according to a set of grid lines or curves and are instead randomly distributed and connected. Hybrid meshes are a combination of structured and unstructured meshes, generally using unstructured mesh elements in regions of “simple” geometry, and unstructured elements in regions of “complex” geometry.

[0007] Most commercial CFD applications use unstructured meshes, in part due to the mesh generation process for unstructured meshes being easier and less time-consuming than structured meshes for complex geometries. Unstructured meshes are advantageous in that they are more adaptable and are more capable of conforming to complex geometries.

[0008] However, unstructured meshes require the use of an indirect addressing scheme. In particular, whilst structured mesh elements may be directly addressed by an index, unstructured mesh elements may be addressed by more complex basis functions. Such indirect addressing schemes may slow down input / output performance and limit their application on parallel graphical processing unit (GPU) clusters. Additionally, mesh generation algorithms for generating unstructured meshes may be complex, with techniques such as interpolation and matrix assembly being required. Furthermore, users of unstructured mesh generation algorithms may treat the algorithm as a ‘black box’ without much control.

[0009] A curvilinear mesh is a structured mesh having mesh elements defined by curvilinear shapes. For example, the curvilinear mesh may comprise grid lines that curve to follow a shape of the geometry being modelled. Mesh nodes may be directly addressed using indices, for example (i,j,k). Connectivity and neighbouring relationships may be easily represented and thus, a curvilinear mesh may be highly memory efficient and favourable for parallel computing and for use on parallel GPU clusters.

[0010] However, curvilinear meshes may struggle with complex geometries, such as areas having a strong geometric variation. Furthermore, the generation process is not fully automated, making it less desirable for practical applications.

[0011] The present disclosure has been devised to mitigate or overcome at least some of the above-mentioned problems.

[0012] SUMMARY OF THE DISCLOSURE

[0013] In accordance with a first aspect of the present disclosure, there is provided a mesh generation method comprising the steps of: receiving data representative of an input geometry of an object; generating an implicit representation of the geometry, the implicit representation comprising a geometry boundary, an exterior portion, and an interior portion; generating a first mesh based on the input geometry, the first mesh comprising a plurality of mesh elements; generating a refined mesh based on the first mesh, the refined mesh comprising one or more mesh element points; performing surface mesh element optimization on the refined mesh; and outputting an output mesh.

[0014] The first mesh and / or the refined mesh may be of insufficient quality, and mesh elements proximate the geometry boundary (or geometry surface) may not adequately adhere to the geometry boundary. In particular, the refined mesh may comprise mesh elements proximate the geometry boundary that have one or more warped faces. These warped elements may lead to several problems, including inaccurate numerical solutions, poor convergence, poor stability, poor robustness, and poor computational efficiency. The step of performing surface element optimization may address the problems resulting from these warped faces. Thus, the present invention may advantageously provide a mesh generation method with improved accuracy, improved convergence, improved stability, improved robustness, and improved computational efficiency.

[0015] The proposed method may have a high tolerance with respect to geometry quality. For example, some STL files comprising data representative of the input geometry may comprise features or artefacts, such as small gaps, non-closed surfaces, and other artefacts. The proposed method may advantageously require no pre-cleaning steps, and can automatically handle these difficult features. For conventional mesh generation, the input data may require refinement to ensure that the geometry represented by the data is free of artefacts.

[0016] Additionally, the proposed method may have high tolerance to complex topology. In particular, the method can handle any level of topology complexity, whilst conventional mesh generation methods may struggle with increased topology complexity.

[0017] In some embodiments, the method further comprises: performing sharp geometry refinement on the output mesh; and outputting a new output mesh. Even following the surface element optimization step, some geometries may still be inadequately characterised (e.g., geometries having sharp edges). A sharp edge may be defined as a point on a curve comprising a local curvature or slope that is steeper than the surrounding area. The sharp geometry refinement step may address this inadequacy by generating mesh elements that can conform adequately to the input geometry having sharp edges. Thus, the mesh generated may advantageously be of further improved accuracy, improved convergence, improved stability, improved robustness, and improved computational efficiency.

[0018] In some embodiments, performing sharp geometry refinement comprises: extracting geometry edges of the input geometry; removing external mesh elements; identifying and classifying one or more mesh edge faces; generating one or more edge elements for each of the one or more mesh edge faces; and adding the one or more edge elements to the corresponding one or more mesh edge faces; wherein the one or more edge elements are generated according to the classification of the corresponding edge face. In this way, mesh elements that do not adequately adhere to sharp edges of the geometry may be removed, and edge elements may be generated that more adequately adhere to the sharp edges. Thus, the mesh generated may advantageously be of further improved accuracy, improved convergence, improved stability, improved robustness, and improved computational efficiency

[0019] In some embodiments, generating an edge element of the one or more edge elements comprises: identifying one or more intersecting lines of the edge faces; generating a respective new mesh point for each intersecting line; and generating the edge element based on the new mesh points. In this way, edge elements may be easily and automatically generated based on characteristics of mesh elements already present in the mesh.

[0020] In some embodiments, performing surface element optimization on the refined mesh comprises: identifying one or more low-quality surface mesh elements; and re-meshing the one or more low-quality surface mesh elements. In this way, low-quality mesh elements may be replaced with mesh elements of higher quality. Advantageously, the output mesh may be of improved accuracy, improved convergence, improved stability, improved robustness, and improved computational efficiency

[0021] In some embodiments, identifying one or more low-quality surface mesh elements comprises identifying one or more warped face elements of the plurality of mesh element of the first mesh. In some embodiments, identifying one or more warped face elements comprises: determining a number and configuration of points in each mesh element of the plurality of mesh elements that have been displaced to the boundary; and identifying that one or more face elements are warped based on the number and configuration of displaced points. In this way, the low-quality surface mesh elements may be easily identified based on characteristics associated with each mesh elements. Advantageously, an output mesh of increased quality may be generated with reduced processing power.

[0022] In some embodiments, re-meshing the one or more low-quality surface mesh elements comprises: splitting the warped face elements into two or more portions; and generating a group of new mesh elements for each of the low-quality surface mesh elements based on the split portions. In this way, the new mesh elements, being of higher quality than the low-quality surface mesh elements, may be easily generated based on characteristics of the low-quality surface mesh elements. Advantageously, an output mesh of increased quality may be generated with reduced processing power.

[0023] In some embodiments, re-meshing the one or more low-quality surface mesh elements further comprises: determining that one or more low-quality surface mesh elements require a new mesh point; and adding the new mesh point to the low-quality surface mesh element; wherein the group of new mesh elements is generated based further on the new mesh point.

[0024] In some embodiments, the mesh point is added at the gravity centre of the surface mesh point. In this way, the new mesh elements, being of higher quality than the low-quality surface mesh elements, may be more easily generated.

[0025] In some embodiments, re-meshing the one or more low-quality surface mesh elements further comprises: identifying one or more redundant points; and removing the one or more redundant points; wherein the group of new mesh elements is generated based further on the removed redundant points. In this way, the new mesh elements, being of higher quality than the low-quality surface mesh elements, may be more easily generated.

[0026] In some embodiments, generating the first mesh comprises: generating an intermediate mesh; and refining the intermediate mesh to generate the first mesh. The refinement of the intermediate mesh may advantageously facilitate r-adaptivity for the mesh generation method.

[0027] In some embodiments, the intermediate mesh is refined according to an equilibrium problem, wherein the equilibrium problem is solved when a stop condition is met. Advantageously, the intermediate mesh may be refined in a manner that is more easily executed by a processing means, such as a processor.

[0028] In some embodiments, the implicit representation comprises a signed distance map function. In some embodiments, generation of the implicit representation is based on level-set functions.

[0029] In some embodiments, the data representative of the input geometry is CAD data. Advantageously, the input geometry may be in a format that is more easily processed by a processing means.

[0030] In accordance with a second aspect of the present disclosure, there is provided a data processing system comprising means for carrying out the steps of the method of the first aspect.

[0031] In accordance with a third aspect of the present disclosure, there is provided a computer program product comprising instructions which, when the program is executed by a computer, cause the computer to carry out the steps of the method of the first aspect.

[0032] In accordance with a fourth aspect of the present disclosure, there is provided a computer-readable storage medium comprising instructions which, when executed by a computer, cause the computer to carry out the steps of the method of the first aspect.

[0033] It will be appreciated that any features described herein as being suitable for incorporation into one or more aspects or embodiments of the present disclosure are intended to be generalizable across any and all aspects and embodiments of the present disclosure. Other aspects of the present disclosure can be understood by those skilled in the art in light of the description, the claims, and the drawings of the present disclosure. The foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the claims.

[0034] BRIEF DESCRIPTION OF THE DRAWINGS

[0035] One or more embodiments of the disclosure will now be described, by way of example only, with reference to the accompanying drawings, in which:

[0036] Figure 1 shows a flow diagram of a mesh generation method in accordance with the first aspect of the present disclosure; Figure 2A shows an input geometry of an airfoil;

[0037] Figure 2B shows an implicit representation of the airfoil of Figure 2A;

[0038] Figure 3 shows an internal mesh element;

[0039] Figure 4 shows an example first mesh;

[0040] Figure 5 shows a portion of a Cartesian mesh;

[0041] Figure 6A shows a portion of a first mesh;

[0042] Figure 6B shows a portion of the first mesh of Figure 6A following a displacement step;

[0043] Figure 7 shows eight surface element scenarios;

[0044] Figure 8A shows an example re-meshed surface mesh element;

[0045] Figure 8B shows an example re-meshed surface mesh element;

[0046] Figure 8C shows a further example re-meshed surface mesh element;

[0047] Figure 8D shows a further example re-meshed surface mesh element;

[0048] Figure 8E shows a further example re-meshed surface mesh element;

[0049] Figure 8F shows a further example re-meshed surface mesh element;

[0050] Figure 9A shows a further scenario of a surface mesh element proximate a sharp angle;

[0051] Figure 9B shows the surface mesh element of Figure 9A comprising splitting lines;

[0052] Figure 9C shows a re-meshed surface mesh element corresponding to the surface mesh element of Figure 9A; Figure 10 shows an output mesh;

[0053] Figure 11 shows geometry edges extracted from an input geometry;

[0054] Figure 12 shows a triangle face, a first quadrilateral face, and a second quadrilateral face;

[0055] Figure 13A shows the triangle face of Figure 12 with intersecting lines;

[0056] Figure 13B shows the first quadrilateral face of Figure 12 with intersecting lines;

[0057] Figure 13C shows the second quadrilateral face of Figure 12 with intersecting lines;

[0058] Figure 13D shows a first special case, wherein the mesh edge face is a triangle face comprising a corner point and intersecting line;

[0059] Figure 13E shows a second special case, wherein the mesh edge face is a quadrilateral face comprising a corner point and an intersecting line;

[0060] Figure 14 shows an output mesh; and

[0061] Figure 15 shows a cross section of an output mesh of the input geometry of Figure 2A.

[0062] Note that the drawings are schematic and accompany the description, illustrating preferred and exemplary embodiments and not necessarily being drawn to scale.

[0063] DETAILED DESCRIPTION

[0064] Figure 1 shows a flow diagram of a mesh generation in accordance with a first aspect of the present disclosure.

[0065] At step 102, data representative of an input geometry of an object is received. In particular, a user imports a model representative of the geometry of an object to be modelled. The model may be a 2D model or a 3D model. The model may be represented by any suitable data for representing physical structures, for example computer-aided design (CAD) data. Figure 2A shows an input geometry 200A of an airfoil. In particular, input geometry 200A is a CAD model of the airfoil, the data of which is received in step 102.

[0066] At step 104, an implicit representation of the input geometry is generated, the implicit representation comprising a geometry boundary; an exterior portion; and an interior portion. The implicit representation may be based on level-set functions <p to generate a signed distance map function <p(x,y, z) based on known level-set methods. The signed distance function <p(x,y, z) provides a distance between a position or point (x,y, z) and the geometry boundary. The signed distance function <p(x,y, z) is <p(x,y, z) = 0 at the geometry boundary, negative in the interior portion, and positive in the exterior portion. It will be appreciated that the skilled person will know of additional ways to generate the implicit representation of the input geometry, for example directly by a computational geometry algorithm on an STL file.

[0067] Figure 2B shows an implicit representation of the airfoil of Figure 2A. In particular, Figure 2 shows a distance map 200B of the air foil comprising a geometry boundary 202B; an interior portion 204B; and an exterior portion 206B, the distance map 200B being based on level-set function values. The shading is representative of a magnitude of the distance function at a particular point.

[0068] At step 106, a first mesh is generated based on the implicit geometry, the mesh comprising a plurality of mesh elements. The plurality of mesh elements comprises one or more internal mesh elements and one or more external mesh elements.

[0069] To generate the first mesh, an intermediate “uniform” mesh is generated, comprising mesh elements of uniform shape and uniform size. The mesh elements are of any suitable shape. For example, the mesh elements are cube shaped. Alternatively, the mesh elements are cuboid shaped, having different sizes in X, Y, and Z directions. It will be understood that any suitable shape may be used for the first mesh elements. The intermediate mesh may be a curvilinear mesh. The intermediate mesh may also be an octree mesh. An octree mesh is a useful way to represent 3D scenes because it allows for efficient storage and manipulation of 3D data. It will be understood that any suitable intermediate mesh may be used. Figure 3 depicts an internal mesh element 300 comprising a set of internal mesh points

[0070] 304 in an example wherein the mesh element is cube shaped. More particularly, Figure 3 depicts an internal mesh element 300 comprising point p = (i, j, k) and edges 302 that link 18 neighbouring points pi = (i + 1 , j, k), p2 = (i - 1 , j, k), pa = (i, j + 1 , k), p4 = (i, j - 1 , k), p5= (i, j, k + 1), p6= (i, j, k - 1), p7= (i + 1 , j + 1 , k), p8= (i + 1 , j -1 , k), p9= (i - 1 , j +1 , k), p = (i - 1 , j - 1 , k), pn = (i+1 , j, k +1), P12 = (i+1 , j, k - 1), pi3= (i - 1 , j, k +1), pi4= (i - 1 , j, k - 1), pis = (i, j+1 , k+1), pie = (i, j - 1 , k+1), pn = (i, j+1, k - 1), pis = (i, j - 1 , k - 1).

[0071] Analogously, the edges 302 may be thought of as springs that only produce or exert attractive forces f on neighbouring points. It will be understood that Figure 3 depicts only a single mesh element, and that the first mesh comprises a plurality of substantially similar mesh elements (although different shaped mesh elements may be utilized).

[0072] A ‘force’ fsof a spring (i.e. , an edge) between a first point p and a second point pscan be calculated according to Hooke’s law,

[0073] =(k(ls- lsref) if ls > l7fIs1 0 if ls< lsref

[0074] Wherein k is the spring stiffness constant representing the strength of the string. The spring stiffness constant k should be a positive number.

[0075] Wherein lsis a distance between the first point p and the second point ps(ls= dist jp, psf).

[0076] Wherein lsrefis a desired edge length defined according to a mesh size function L(x, y, z) (herein referred to as L):

[0077] Wherein mesh size function L is configured to compute a reference mesh size. The mesh size function L provides the relative distribution of points over the domain. Wherein C is a scaling factor configured to convert the relative mesh size to the size of the desired mesh. The scaling factor C is a ratio of volume between the reference mesh and the desired mesh:

[0078] It will be appreciated that the reference mesh size provided by the mesh size function L may not be accurate to actual size. The scaling factor C converts the reference mesh size provided by the mesh size function L to the actual (i.e. , desired) size.

[0079] The mesh size function L(x, y, z) provides the reference mesh size at a position (x,y,z). The mesh size function L is dependent on the use case and the method 100 may further include a step in which a user input is received, the user input defining the mesh size function L. In general, it is desirable that the mesh size function value is small where topology features are rich or a large gradient of computing parameters is observed, such that more elements are pushed to the region of rich topology features.

[0080] The mesh size function L(x, y, z) may be computed on a uniform background mesh, such as a Cartesian grid. The value of the mesh size function L(x,y, z) at a point (x,y, z) is calculated via trilinear interpolation.

[0081] A first example mesh size function L may be determined according to L(x,y, z) = min ( ,Lmax), wherein K = is the curvature of level-set function p of the input geometry. Further detail regarding computation of the level-set function <p and K can be found in J. Yang, Y. Zhou, An automatic in situ contact angle determination based on level set method, Water Resources Research 255 56 (7) (202B0) e202B0WR027107.

[0082] A second example mesh size function L may be based on the signed distance map <p(x,y, z), wherein L(x,y, z) = max <p x,y, z), Lmin). The mesh will be refined near the geometry boundary to resolve the boundary.

[0083] A third example mesh size function L may be based on local feature size, wherein local feature size is a thickness of local geometry at a point (x,y,z). The local feature size can be approximate by the radius of the largest sphere centred at point (x,y,z). Further detail regarding this method can be found in R. Dougherty, K.-H. Kunzelmann, Computing local thickness of 3d structures with imagej, Microsc Microanal 13 (S02) (200B 7) 1678-1679.

[0084] Regardless of how the mesh size function L is computed, a force fsof an edge between a first point p and a second pointy is generated.

[0085] The first mesh is generated by refining the intermediate mesh according to an equilibrium problem:

[0086] Wherein F(p) is the gross force function of mesh point p computed by summing the forces exerted by neighbouring points.

[0087] Wherein the equilibrium problem is solved when F(p) = 0 is valid for all internal points. The equilibrium problem can also be solved when a stop condition Fp< s is met.

[0088] To solve the equilibrium problem, the equilibrium problem may be converted to an ordinary differential equation comprising an artificial time-dependence:

[0089] The forward Euler method can be used to solve the ordinary differential equation, wherein the positions of points can be updated (i.e., displaced) iteratively by:

[0090] Pn+l = Pn + 8t F(p)

[0091] Wherein at each time step, after the point has been displaced, the force function is updated. Furthermore, at each time step, any boundary or surface points that are moved away from boundary / surfaces are moved back to the closed boundary / surface points. A stationary (i.e. , final) solution is reached when a stop condition Fp< s is met. The stop condition may be predetermined. Alternatively, the stop condition may be set by a user and thus the method may further comprising receiving a user input defining the stop condition value.

[0092] Figure 4 depicts an example first mesh 400, wherein the mesh size function L(x,y, z) is equal to level-set function values. The example first mesh 400 comprises one or more internal mesh elements 402; and one or more external mesh elements 404. The one or more internal mesh elements 402 correspond to mesh points located within the interior portion 204B. The one or more external mesh points 404 correspond to mesh points located within the exterior portion 206B. Darker elements represent mesh elements having a smaller size, whist brighter elements represent elements having a larger size. Thus, it can be seen that internal mesh elements 402 are smaller in size than external mesh elements 404.

[0093] At step 108, a refined mesh is generated based on the first mesh.

[0094] One well known problem associated with Cartesian mesh is that it can’t always approximate the boundary accurately. For example, Figure 5 shows a portion of a Cartesian mesh 500 comprising a surface or boundary 502. The Cartesian mesh uses a “stair-case” approximation, easily seen at the left-most side (e.g., section 504) of the boundary 502. This approximation may have low accuracy with respect to adhering to the boundary. A very fine mesh resolution is needed to achieve acceptable mesh convergence near curved boundaries. Whilst the mesh may be relatively refined following the refinement step to generate the first mesh, stair-case boundary sections, such as section 504 of the mesh 500 may produce convergence issues.

[0095] This convergence issue can be addressed according to the approach proposed in M. Lesueur, H. Rattez, O. Colomes, Permeability computation of high resolution pctscan with an unfitted boundary method to improve accuracy (202B0).

[0096] Generation of the refined mesh comprises determining or identifying one or more internal elements and one or more external elements based on a sign distance value of the centre point of each element of the first mesh. In particular, if the sign distance value is negative, the element is an internal element. If the sign distance value is positive, the element is an external element.

[0097] Generation of the refined mesh also comprises determining or identifying one or more boundary points of the first mesh. In particular, determining boundary points comprises determining that a mesh point is between an internal element and an external element.

[0098] Figure 6A shows a portion 600 of a first mesh comprising a boundary 602 following the above steps for generation of the refined mesh. As shown in Figure 6A, one or more internal elements 604, one or more external elements 606, and one or more boundary points 608 have been identified.

[0099] Generation of the boundary points further comprises displacing the one or more boundary points to respective closest points on the geometry surface (i.e. , the boundary 602). The displaced boundary points are flagged by the algorithm as surface points. The displacement is computed by:

[0100] Wherein < >(%) is the level-set function value atx.

[0101] Figure 6B shows the portion 600 of the first mesh following the displacement step. As can be seen in Figure 6B, the one or more boundary points 608 have been displaced such that they are now positioned at respective closest points on the boundary 602. Thus, a precise geometry surface description may be generated for even coarse Cartesian meshes.

[0102] At step 110, surface element optimization is performed on the refined mesh.

[0103] Mesh elements proximate the boundary (herein “surface elements”) may not be of sufficient quality following displacement of the boundary points in step 108.

[0104] There are eights surface element scenarios, each corresponding to a respective number and configuration of points (e.g., vertexes of the element) displaced to the boundary. Figure 7 shows the 8 scenarios. Scenario 1 comprises a single point displaced. Scenario 2 comprises two points displaced. Scenario 3 comprises three points displaced. Scenario 4 comprises four points displaced. Scenario 5 comprises four points displaced. Scenario 6 comprises five points displaced. Scenario 7 comprises six points displaced. Scenario 8 comprises seven points displaced. Scenarios 1 , 2, and 4 may be of sufficient quality and thus may not need further optimization or refinement. However, scenarios 3, 5, 6, 7, and 8 may be of insufficient quality (e.g., due to distortion), and thus may require further optimization or refinement.

[0105] Step 110 comprises a first sub-step of identifying one or more low-quality surface mesh elements. The one or more low-quality surface mesh elements are mesh elements proximate the boundary that are not of sufficient quality following displacement of the boundary points in step 108. For example, the one or more low-quality surface mesh elements comprise the surface mesh elements of scenarios 3, 5, 6, 7, and 8. Identifying one or more low-quality surface mesh elements comprises determining that the surface mesh element comprises three or more surface points (i.e., vertexes that have been displaced to the boundary). Of this identified set, surface mesh elements comprising four surface points, each connected to two other surface points and one internal point (e.g., scenario 4), are identified as being of sufficient quality, and are excluded from the set of low-quality surface mesh elements. A point or vertex is identified as a surface point based on the flagging by the algorithm in step 108. Alternatively or additionally, the sign distance can be calculated to determine the surface points (e.g., the sign distance is 0 for surface points).

[0106] Identifying the one or more low-quality surface mesh elements comprises identifying one or more warped face elements of each of the plurality of mesh elements of the first mesh.

[0107] Identifying one or more warped face elements first comprises determining a number and configuration of points (e.g., vertexes) in a mesh element that have been displaced to the boundary. As discussed above, the number and configuration of points that have been displaced can be determined based on flags associated with the surface points, and / or sign distance values associated with the surface points. For example, in scenario 1 , it can be determined that one point out of eight points is moved onto the boundary. In scenario 2, it can be determined that two points out of eight points are moved onto the boundary. In scenario 3, it can be determined that three points out of eight points are moved onto the boundary. In scenario 4, it can be determined that four points out of eight points are moved onto the boundary, and that each of these four points are connected to a respective interior point and two surface points. In scenario 5, it can be determined that four points are moved onto the boundary, and that one of these four points (i.e. , the central point) is connected to the other three points. In scenario 6, it can be determined that five points out of eight points are moved onto the boundary. In scenario 7, it can be determined that six points out of eight points are moved onto the boundary. In scenario 8, it can be determined that seven points out of eight points are moved onto the boundary.

[0108] Determining one or more warped face elements further comprises determining that one or more faces of each mesh element are warped based on the number and configuration of displaced points. As discussed above, the number and configuration of points that have been displaced can be determined based on flags associated with the surface points, and / or sign distance values associated with the surface points. It may be observed that the surface mesh elements may have different face configuration scenarios. For example, for hexahedron mesh elements as shown in Figure 7, the surface mesh elements may comprise a square face having one, two, three, or four points on the boundary.

[0109] Surface mesh elements having square faces having one, two, or four points on the boundary are not determined to be low quality. However, surface mesh elements comprising square faces having three points on the boundary, and one point away from the boundary are determined to be low quality. More particularly, these low-quality mesh elements comprise one or more low-quality face elements. For example, scenarios 3, 5, 6, 7, and 8 show mesh elements comprising one or more square faces having three points on the boundary and one point away from the boundary.

[0110] Step 110 further comprises a second sub-step of re-meshing the one or more low-quality surface mesh elements.

[0111] This step of re-meshing the one or more low-quality surface mesh elements comprises: splitting the warped faces of each of the one or more low-quality surface mesh elements into two or more portions; and generating a group of new mesh elements for each of the low-quality surface mesh elements based on the split portions. The new mesh elements comprise one or more high-quality tetrahedron elements, prism elements, pyramid elements, or any combination thereof.

[0112] The step of re-meshing the one or more low-quality surface mesh elements may also comprise determining that one or more low-quality surface mesh elements require a new mesh point; and adding the new mesh point. Determining that a low-quality surface mesh element requires a new mesh point comprises determining that the number and configuration of surface points correspond to scenarios 3, 5, and 6. The new mesh point may be added at the gravity centre (i.e. , a position at the gravity centre) of the surface mesh element. The group of new mesh elements is generated based on the one or more split faces and the new mesh point. In particular, each of the new mesh elements comprises the new mesh point as a vertex.

[0113] Figure 8A shows an example re-meshed surface mesh element 800A corresponding to scenario 3. To generate the re-meshed surface mesh element 800A, the low-quality face having three points on the boundary, and one point away from the boundary is split into two portions. A first split portion 802A is a first triangle face comprising three points, each positioned on the boundary. A second split portion 804A is a second triangle face comprising two points positioned on the boundary and one point positioned in the exterior portion. A new mesh point is added at the gravity centre of the mesh element 800A. The surface mesh element 800A is segmented into a respective group of new mesh elements. Figure 8B shows the re-meshed surface mesh element 800A comprising the group of new mesh elements. The group of new mesh elements comprises five pyramid elements 806A, 808A, 810A, 812A, 814A, and two tetrahedron elements 802A, 804A, the tetrahedron elements corresponding to the first split portion 802A and the second split portion 804A. Thus, the previously low-quality mesh element of scenario 3 is converted to a group of new mesh elements, each being of high quality.

[0114] The step of re-meshing the one or more low-quality surface mesh elements may further comprise: identifying one or more redundant points; and removing the one or more redundant points; wherein the group of new mesh elements is generated based further on the removed redundant points. A redundant point may be identified as a surface point connected to three surface points. For example, scenario 5 comprises a central surface point shared by three warped face elements (i.e., the face elements comprising three points on the boundary, and one point away from the boundary). Figure 8C shows a further example re-meshed surface mesh element 800C corresponding to scenario 5 in which one or more redundant points are removed. To generate the re-meshed surface mesh element 800C, a redundant point is identified as the surface point shared by the three low-quality faces (each having three points on the boundary, and one point away from the boundary) and connected to three other surface points. The redundant point is removed. Each low-quality face is split into two portions. A new mesh point is added at the gravity centre of the mesh element 800C. The surface mesh element 800C is segmented into a respective group of new mesh elements. The group of new mesh elements comprises four tetrahedron elements 806C, 808C, 81 OC, 812C, and three pyramid elements 814C, 816C, 818C. It can be seen that the redundant point is not used as a vertex of any of the new mesh elements. Thus, the previously low- quality mesh element of scenario 5 is converted to a group of new mesh elements, each being of high quality.

[0115] Figure 8D shows a further example re-meshed surface mesh element 800D corresponding to scenario 6 in which one or more redundant points are removed. To generate the re-meshed surface mesh element 800D, a redundant point is identified as the surface point shared by the two low-quality faces (each having three points on the boundary, and one point away from the boundary) and connected to three other surface points, and is removed. Each low-quality face is split into two portions. A new mesh point is added at the gravity centre of the mesh element 800D. The surface mesh element 800D is segmented into a respective group of new mesh elements. The group of new mesh elements comprises four pyramid elements 806D, 808D, 81 OD, 812D, and two tetrahedron elements 814D, 816D. It can be seen that the redundant point is not used as a vertex of any of the new mesh elements. Thus, the previously low-quality mesh element of scenario 6 is converted to a group of new mesh elements, each being of high quality.

[0116] Figure 8E shows a further example re-meshed surface mesh element 800E corresponding to scenario 7 in which one or more redundant points are removed. To generate the re-meshed surface mesh element 800E, two redundant points are identified as the surface points connected to three other surface points, and are removed. Each low-quality face is split into two portions. The surface mesh element 800E is segmented into a respective group of new mesh elements. The group of new mesh elements comprises one prism element 806E. It can be seen that the redundant points are not used as a vertex of the new mesh element. Thus, the previously low- quality mesh element of scenario 7 is converted to a group of new mesh elements, being of high quality.

[0117] Figure 8F shows a further example re-meshed surface mesh element 800F corresponding to scenario 8 in which one or more redundant points are removed. To generate the re-meshed surface mesh element 800F, four redundant points are identified as the surface points connected to three other surface points, and are removed. Each low-quality face is split into two portions. The surface mesh element 800F is segmented into a respective group of new mesh elements. The group of new mesh elements comprises one tetrahedron element 806F. It can be seen that the redundant points are not used as a vertex of the new mesh element. Thus, the previously low-quality mesh element of scenario 8 is converted to a group of new mesh elements, being of high quality.

[0118] Figure 9A shows a further scenario of a surface mesh element 900A proximate a sharp angle, such as a corner of the input geometry. The surface mesh element 900A comprises six surface points (b, d, e, f, g, h) and two points away from the surface (a, c). This scenario is distinct from scenario 7 in that the two points away from the surface are not directly connected. Step 110 causes each warped face (having three points on the boundary and one point away from the boundary) to be split into two or more portions. Figure 9B shows the surface mesh element 900A including lines 902A, 904A, 906A, 908A splitting each of the warped faces. It is determined that a new mesh point is to be added, and a new mesh point is added at the gravity centre of the surface mesh element 900A. The group of new mesh elements is generated based on the one or more split faces and the new mesh point. Figure 9C shows the re-meshed surface element 900C corresponding to the surface mesh element 9C. The group of new mesh elements comprises one pyramid element 902C and six tetrahedron elements 904C, 906C, 908C, 910C, 912C, 914C.

[0119] Step 112 comprises outputting an output mesh following the surface element optimization step 110. Following step 110, the mesh may be of suitable quality for output. In particular, the mesh output by step 110 may work well with a smooth-surface topology. However, if the input geometry comprises sharp corners, further mesh improvement steps may be required for the mesh to conform adequately to these sharp corners. To illustrate this issue, Figure 10 shows an output mesh 1000 (e.g., following step 110) of two inclined and coupled cubes. The output mesh 1000 shows that the sharp corners of the cubes are not adequately characterised.

[0120] Step 114 comprises performing sharp geometry refinement on the output mesh.

[0121] The sharp geometry refinement step 114 first comprises extracting geometry edges of the input geometry. Geometry edges can be extracted by determining that an angle between two connecting faces is less than a threshold angle. For example, the threshold angle may be 150 degrees. Thus, faces connected at an angle of less than 150 degrees are identified as ‘sharp’ and are geometry edges. It will be appreciated that the threshold angle may be tunable by a user for different input geometries. Figure 11 shows geometry edges 1102 extracted from an input geometry 1100, the input geometry 1100 being two inclined and coupled cubes. It will be appreciated that extracting geometry edges of the input geometry 200A of the airfoil is achievable.

[0122] The sharp geometry refinement step 114 further comprises removing external mesh elements. Removing external mesh elements comprises identifying one or more mesh elements comprising both external mesh points and surface mesh points, and removing these identified mesh elements. Thus, mesh elements that comprise internal points and surface points, and mesh elements that comprise only internal points, are not removed. Figure 10 shows a mesh wherein the external mesh element are removed.

[0123] The sharp geometry refinement step 114 further comprises identifying and classifying one or more mesh edge faces. The one or more mesh edge faces are faces of surface mesh elements comprising mesh points on two sides of the geometry surface (i.e. , two sides of the geometry surface separated by a geometry edge 1102). The one or more mesh edge faces are classified into: a triangle face; a first quadrilateral face; a second quadrilateral face; and / or any combination thereof. Figure 12 shows a triangle face 1202, a first quadrilateral face 1204, and a second quadrilateral face 1206. The triangle face 1202 is a face comprising one mesh point on a first geometry surface, and two mesh points on a second geometry surface. The first quadrilateral face 1204 is a face comprising two mesh points on a first geometry surface and two mesh points on a second geometry surface. The second quadrilateral face 1206 is a face comprising one mesh point on a first geometry surface and three mesh points on a second geometry surface.

[0124] To classify an edge face, one or more lines that extend ‘under’ the geometry edge are determined. To identify the line extending ‘under’ the geometry edge, the normal vector of two points, for example points A and C of Figure 13A are determined. The algorithm determines an angle between the normal vectors, and if a threshold angle is met, the line between these two points is identified as a line extending ‘under’ the geometry edge. The threshold angle may be 20 degrees. Thus, if the angle between normal vectors (e.g., normal vectors of points A and B of Figure 13A) is less than 20 degrees (for example 0 degrees), the line is not identified as a line extending ‘under’ the geometry edge. It will be appreciated that the threshold angle may be tuned according to the input geometry. An edge face is any face comprising at least one line extending ‘under’ the geometry face.

[0125] The sharp geometry refinement step 114 further comprises generating one or more edge elements for each of the one or more mesh edge faces, and adding the one or more edge elements to the corresponding one or more mesh edge faces; wherein the one or more edge elements are generated according to the classification of the corresponding edge face. The edge elements are configured to occupy the space between the internal mesh elements and the geometry edges.

[0126] Generating an edge element comprises identifying one or more intersecting lines of the edge face; generating a respective new mesh point for each intersecting line; and generating an edge element based on the new mesh points. The intersecting line is a line that comprises a first mesh point on a first geometry surface, and a second mesh point on a second geometry surface. The new mesh point is generated by: identifying a closest point on the geometry edge to the first mesh point; identifying a closest point on the geometry edge to the second mesh point; determining a middle point of the first closest point and the second closest point; and placing the new mesh point at the middle point. Thus, the new mesh point lies on the geometry edge.

[0127] Figure 13A shows triangle face 1202 with intersecting lines BC and AC. A first new mesh point D is generated by identifying the closest point on the geometry edge to the first mesh point B, identifying the closest point on the geometry edge to the second mesh point C, determining a middle point between the first closest point and the second closest point; and placing the first new mesh point D at the middle point. The same method is used to generate a second new mesh point E based on intersecting line AC.

[0128] Figure 13B shows first quadrilateral face 1204 with intersecting lines BC and AD. A first new mesh point E is generated by identifying the closest point on the geometry edge to the first mesh point B, identifying the closest point on the geometry edge to the second mesh point C, determining a middle point between the first closest point and the second closest point; and placing the first new mesh point E at the middle point. The same method is used to generate a second new mesh point F based on intersecting line AD.

[0129] Figure 13C shows second quadrilateral face 1206 with intersecting lines CD and AD. A first new mesh point E is generated by identifying the closest point on the geometry edge to the first mesh point C, identifying the closest point on the geometry edge to the second mesh point D, determining a middle point between the first closest point and the second closest point; and placing the first new mesh point E at the middle point. The same method is used to generate a second new mesh point F based on intersecting line AD.

[0130] Figure 13D shows a first special case, wherein the mesh edge face is a triangle face 1302 comprising a corner point A and intersecting line BC. A new mesh point D is generated by identifying the closest point on the geometry edge to the first mesh point B, identifying the closest point on the geometry edge to the second mesh point C, determining a middle point between the first closest point and the second closest point; and placing the first new mesh point D at the middle point.

[0131] Figure 13E shows a second special case, wherein the mesh edge face is a quadrilateral face 1304 comprising a corner point D and an intersecting line AB. A new mesh point E is generated by identifying the closest point on the geometry edge to the first mesh point A, identifying the closest point on the geometry edge to the second mesh point B, determining a middle point between the first closest point and the second closest point; and placing the first new mesh point E at the middle point.

[0132] Generating the respective edge elements is achieved by filling the space between the edge face and the geometry edge, with the new mesh point being used as a vertex for the edge element. Due to the uniqueness of the new added mesh point on the geometry edge for every edge line beneath it, and the consistent element build rules, all the new edge elements correspond perfectly with their neighbouring mesh elements, and no penetration occurs between the new edge elements and neighbouring mesh elements. Thus, the sharp geometry refinement step 114 is fully automatic and no tuning parameter is required.

[0133] Step 116 comprises outputting a new output mesh following the sharp geometry refinement step of step 114. Figure 14 shows an output mesh 1400 following the sharp geometry refinement step 114. The edge elements generated in step 112 are highlighted with a dark outline. The output mesh 1400 mostly comprises hexahedron mesh elements, but also comprises tetrahedron elements, prism elements, and pyramid elements. Notably, mesh elements proximate the geometry surface or boundary of the input geometry may be modified in steps 110 and 114 so as to sufficiently adhere to the input geometry. Mesh elements away from the geometry surface are not modified by these steps and thus remain as hexahedrons.

[0134] Figure 15 shows a cross section of an output mesh 1500 of the input geometry 200A of the airfoil received in step 102, and following the steps of the method 100.

[0135] The method 100 provides an output mesh wherein all mesh elements are of good quality. By using only one layer (i.e., a layer proximate the geometry surface) of reformatted mesh elements, a smooth and high quality transition between an arbitrary geometry surface to a mesh comprising regular hexahedron elements and a comparatively small number of non-hexahedron mesh elements (e.g., tetrahedron, prism and pyramid elements).

[0136] The non-hexahedron mesh elements may be stored without storing the hexahedron mesh elements. The Cartesian coordinates of the Cartesian mesh can be easily derived from the non-hexhedron mesh elements. The storage of the non-hexahedron mesh elements will reduce the storage requirements of the mesh generation elements by between 0.5% and 3.5% relative to the storage requirements otherwise. This lessens the burden of large mesh input / output operations in storage and memory processing in high-performance computing, which makes it more easy to share. All computations can be performed locally which makes it ideal for parallel computing on distributed memories. It also means that meshes can be directly generated using signed distance functions, which saves time in processing faceted geometries, and this makes it ideal for generative design.

[0137] From the new hybrid and voxel shell format proposed herein, hybrid numerical solvers can be provided between Cartesian and unstructured meshes which take advantage of the voxel-based solver.

[0138] The algorithm or method 100 comprises no tunable parameters, and thus the method is fully automatic, and is robust. More particularly, the proposed method has a high tolerance with respect to geometry quality. For example, some STL files comprising data representative of the input geometry comprise features or artefacts, such as small gaps, non-closed surfaces, and other artefacts. The proposed method doesn't need pre-STL cleaning and can automatically handle these difficult features. For conventional mesh generation, the input data may require refinement to ensure that the geometry represented by the data is free of artefacts. Additionally, the proposed method has high tolerance to complex topology. In particular, the method can handle any level of topology complexity, whilst conventional mesh generation methods may struggle with increased topology complexity.

[0139] Some embodiments may assign computer processing tasks to recipient processors, for example, but not limited to CPUs, GPUs, DSPs, GP-GPUs, quantum processor and / or processors optimised for artificial intelligence tasks. In such embodiments, the processors are the recipients and the processing tasks are the opportunities. In such embodiments, in for example, a complex cloud computing infrastructure, a large number of tasks, of differing types, requiring execution may be received and a large number of processors may be housed within the cloud computing infrastructure.

[0140] The description provided herein may be directed to specific implementations. It should be understood that the discussion provided herein is provided for the purpose of enabling a person with ordinary skill in the art to make and use any subject matter defined herein by the subject matter of the claims. It should be intended that the subject matter of the claims not be limited to the implementations and illustrations provided herein, but include modified forms of those implementations including portions of implementations and combinations of elements of different implementations in accordance with the claims. It should be appreciated that in the development of any such implementation, as in any engineering or design project, numerous implementation-specific decisions should be made to achieve a developers’ specific goals, such as compliance with system-related and business related constraints, which may vary from one implementation to another. Moreover, it should be appreciated that such a development effort may be complex and time consuming, but would nevertheless be a routine undertaking of design, fabrication, and manufacture for those of ordinary skill having benefit of this disclosure.

[0141] Reference has been made in detail to various implementations, examples of which are illustrated in the accompanying drawings and figures. In the detailed description, numerous specific details are set forth to provide a thorough understanding of the disclosure provided herein. However, the disclosure provided herein may be practiced without these specific details. In some other instances, well-known methods, procedures, components, circuits, and networks have not been described in detail so as not to unnecessarily obscure details of the embodiments.

[0142] It should also be understood that, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first element could be termed a second element, and, similarly, a second element could be termed a first element. The first element and the second element are both elements, respectively, but they are not to be considered the same element.

[0143] The terminology used in the description of the disclosure provided herein is for the purpose of describing particular implementations and is not intended to limit the disclosure provided herein. As used in the description of the disclosure provided herein and appended claims, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. The term “and / or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. The terms “includes,” “including,” “comprises,” and / or “comprising,” when used in this specification, specify a presence of stated features, integers, steps, operations, elements, and / or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components and / or groups thereof.

[0144] As used herein, the term “if” may be construed to mean “when” or “upon” or “in response to determining” or “in response to detecting,” depending on the context. Similarly, the phrase “if it is determined” or “if [a stated condition or event] is detected” may be construed to mean “upon determining” or “in response to determining” or “upon detecting [the stated condition or event]” or “in response to detecting [the stated condition or event],” depending on the context. The terms “up” and “down”; “upper” and “lower”; “upwardly” and “downwardly”; “below” and “above”; and other similar terms indicating relative positions above or below a given point or element may be used in connection with some implementations of various technologies described herein.

[0145] While the foregoing is directed to implementations of various techniques described herein, other and further implementations may be devised in accordance with the disclosure herein, which may be determined by the claims that follow. Although the subject matter has been described in language specific to structural features and / or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.

Claims

CLAIMS1. A mesh generation method comprising the steps of: receiving data representative of an input geometry of an object; generating an implicit representation of the geometry, the implicit representation comprising a geometry boundary, an exterior portion, and an interior portion; generating a first mesh based on the input geometry, the first mesh comprising a plurality of mesh elements; generating a refined mesh based on the first mesh, the refined mesh comprising one or more mesh element points; performing surface mesh element optimization on the refined mesh; and outputting an output mesh.

2. The method of claim 1 , further comprising: performing sharp geometry refinement on the output mesh; and outputting a new output mesh.

3. The method of claim 2, wherein performing sharp geometry refinement comprises: extracting geometry edges of the input geometry; removing external mesh elements; identifying and classifying one or more mesh edge faces; generating one or more edge elements for each of the one or more mesh edge faces; and adding the one or more edge elements to the corresponding one or more mesh edge faces; wherein the one or more edge elements are generated according to the classification of the corresponding edge face.

4. The method of claim 3, wherein generating an edge element of the one or more edge elements comprises: identifying one or more intersecting lines of the edge faces; generating a respective new mesh point for each intersecting line; and generating the edge element based on the new mesh points.

5. The method of any preceding claim, wherein performing surface element optimization on the refined mesh comprises: identifying one or more low-quality surface mesh elements; and re-meshing the one or more low-quality surface mesh elements.

6. The method of claim 5, wherein identifying one or more low-quality surface mesh elements comprises identifying one or more warped face elements of the plurality of mesh element of the first mesh.

7. The method of claim 6, wherein identifying one or more warped face elements comprises: determining a number and configuration of points in each mesh element of the plurality of mesh elements that have been displaced to the boundary; and identifying that one or more face elements are warped based on the number and configuration of displaced points.

8. The method of any of claims 6 to 7, wherein re-meshing the one or more low- quality surface mesh elements comprises: splitting the warped face elements into two or more portions; and generating a group of new mesh elements for each of the low-quality surface mesh elements based on the split portions.

9. The method of claim 8, wherein re-meshing the one or more low-quality surface mesh elements further comprises: determining that one or more low-quality surface mesh elements require a new mesh point; and adding the new mesh point to the low-quality surface mesh element; wherein the group of new mesh elements is generated based further on the new mesh point.

10. The method of claim 9, wherein the mesh point is added at the gravity centre of the surface mesh point.

11. The method of any of claims 5 to 10, wherein re-meshing the one or more low- quality surface mesh elements further comprises:identifying one or more redundant points; and removing the one or more redundant points; wherein the group of new mesh elements is generated based further on the removed redundant points.

12. The method of any preceding claim, wherein generating the first mesh comprises: generating an intermediate mesh; and refining the intermediate mesh to generate the first mesh.

13. The method of claim 12, wherein the intermediate mesh is refined according to an equilibrium problem, wherein the equilibrium problem is solved when a stop condition is met.

14. The method of any preceding claim, wherein the implicit representation comprises a signed distance map function.

15. The method of claim 14, wherein generation of the implicit representation is based on level-set functions.

16. The method of any preceding claim, wherein the data representative of the input geometry is CAD data.

17. A data processing system comprising means for carrying out the steps of the method of any of claims 1 to 16.

18. A computer program product comprising instructions which, when the program is executed by a computer, cause the computer to carry out the steps of the method of any of claims 1 to 16.

19. A computer-readable storage medium comprising instructions which, when executed by a computer, cause the computer to carry out the steps of the method of any of claims 1 to 16.