Computational Mechanics Australia Pty Ltd
The Company Products Contact
Most advanced processing of external forces and constraints:
generation of sets of fine elements in user-defined refinement zones
Many finite element models of structural engineering objects contain areas where large gradient values of the stress tensor components are expected. Such areas are particularly common around points where external forces or constraints are applied. One of previous releases of QUAD-SURFACE had already implemented an algorithm that allowed to preserve in the generated mesh the coordinates of such points. In other words, it was guaranteed that the resulting quadrilateral mesh would always have a node coinciding with that point. However, earlier releases of QUAD-SURFACE didn’t have the refinement feature, i.e. an ability to generate areas of small elements around such points.

Now this feature is available. In the same way as before, such points will be further called, for the sake of simplicity, “non-zero PINT-points”.Two new numerical parameters have been introduced, which the user sets individually for each PINT-point with a surrounding refinement area

- STEP: a desirable average size of the quadrilaterals around the point (to be more precise, a desirable elements’ edge length);
- RAD: a desirable radius of the refinement area.

Obviously, both parameters can be defined as “desirable” only because they must be compatible with the surrounding large-size elements; and, most importantly, the transitional elements between “fine” and “large” must not be unacceptably distorted.

Example 1. Consider a rectangular domain with a non-zero PINT-point in the center (further down this page all Z-coordinates equal zero and not shown in the pictures).
A straightforward way would be to generate a separate set of elements inside the circle. However, the most accurate numerical results, especially in terms of the stress tensor components, are obtained when the finite elements are exactly squares. For that reason, QUAD-SURFACE has the following method implemented: it generates inside the RAD-circle a square set of elements which, in turn, are small squares and have their edges’ length equal or close to the user-defined STEP value.

The resulting mesh is shown below. It can be clearly seen that the program generated a set of square-shaped quadrilaterals around the non-zero PINT-point, and then a smooth transition from those small elements to the large elements in the remaining part of the domain is performed.
A significantly more difficult is the question: what to do if a non-zero PINT-point must be placed very close to (or even overlap with) another feature of the model, thus making the input data incompatible. For example, the user may require that RAD parameter is such that the refinement area overlaps or almost overlaps a boundary segment. In such case, the program will behave as follows: the program will generate a reduced-size set of square elements around the PINT-point, trying to preserve the main boundary feature: the user-defined step value, and at the same time to ensure that transitional elements between the small squares and the boundary are not very distorted. If the above is impossible (i.e. small elements of the refinement zone are supposed to be generated close to a boundary entity with large step size), the program will ignore both RAD and STEP parameters, but still place a node in the generated mesh into the user-defined PINT-point position. In other words, the program will convert the non-zero PINT-point into an ordinary PINT-point, and the user will be provided in the log-file with the corresponding warning.

Example 2. Consider the same rectangle, this time with two non-zero PINT-points in two different corners. For both points their RAD and STEP parameters are set the same: STEP=0.02 and RAD=0.1. However, the point on the right-hand side is placed a little closer to the corner, so that a refinement area should not be generated to avoid creation of unacceptably distorted transitional elements. For that point the RAD and STEP parameters are then automatically set to 0., but, as can be seen, the point's location is preserved, i.e. a node is placed in the generated mesh.
Certainly, if the user reduces the step size on the domain boundary, the program will detect that there is no danger of generating singular elements anymore, and now two refinement areas will be generated, not one.

Example 3. Even more complex question is: how should the algorithm behave if two (or more) refinement zones overlap, or are placed close to each other ?

The problem is that different strategies can be imagined here, and there appear to be no specific advantages of one over others. For example, the algorithm can:

(a) Generate a full-scale refinement area around PINT5 and then “move” the node closest to PINT4 into the position of the latter. Thus, user-defined RAD and STEP values of PINT4 are automatically set to 0., but the overall validity of the model is preserved, in a sense that for PINT4 and PINT5 the corresponding nodes are placed where required.

(b) Another approach would be the opposite: for all cases when two refinement zones overlap, the larger one is ignored (i.e. RAD and STEP are set to 0., whereas its user-defined position is preserved).

(c) The algorithm may also be designed such that approach (a) or approach (b) is chosen automatically depending on the actual values of RAD and STEP, whichever is smaller for each point: choose as “non-zero” PINT-point the one with the smaller RAD; or with the smaller STEP.

(d) Here is a bit more complex. The algorithm may automatically reduce the larger RAD to the value when the two refinement zones no longer overlap, but both pairs of STEP and RAD remain non-zero.

More questions: what if there are 3 or more overlapping refinement zones ? what if the 1st and 2nd overlap, the 2nd and the 3rd overlap, but 1st and 3rd don’t ? etc… The actual algorithm implemented in QUAD-SURFACE has been developed after a very large number of numerical experiments, and automatically chooses among the options (a)-(d) depending on a broad variety of meshing factors: for example, it is important that no or very few low quality elements (i.e. with angles significantly different from the right angle) are generated, so the algorithm also “looks after” that feature too.

However, the user still has some degree of freedom in what option the algorithm would choose. Namely, the user may decide: which of the two points to place first in the "points block" of input data. This sometimes may influence the final structure of the mesh, and it is recommended that the user performs more than one (in this case – two) numerical experiments, thus obtaining more than one mesh and selecting among them the most suitable for his/her purposes.

Consider a square domain with two non-zero PINT-points: one (PINT4) with smaller RAD and STEP placed in the domain center, and another (PINT5) with larger RAD and STEP placed slightly to the right from the center.
If in the input data PINT5 appears first and PINT4 appears second, the algorithm generated a mesh according the rule (a) : a refinement zone has been generated around PINT5, then RAD and STEP for PINT4 are set to zero but its position (1.,-1) is preserved, i.e. a node with those coordinates exists in the mesh.
If however the points PINT5 and PINT4 are swapped in the input data structure, the mesh is very different. One refinement zone is generated around PINT4, another around PINT5; but RAD value of the latter has been reduced automatically, to ensure that transitional elements between the two zones are not distorted and have high quality.
Also, QUAD-SURFACE and its earlier releases allow:

  • meshing of complex plate and shell structures in 3D space, consisting of planar, cylindrical, spherical components, surfaces of revolution and also general-case 3- and 4-edged patches;

  • meshing of non-homogeneous domains, commonly encountered in structural engineering, consisting of multiple plates and shells with different physical and/or geometrical properties;

  • easily readable and convenient description of geometrical models;

  • fully automatic processing, requiring no interference from the user.
  • QUAD-SURFACE is available with complete source codes and the full commercial lisence allowing easy incorporation into your own applications. All our codes are written in ANSI C and will compile and run on all UNIX and Windows platforms without changes. They are also fully commented, allowing easy modification at user discretion.

    QUAD-SURFACE is available on no-royalties and no-annual-renewals basis: there is a one-off price for the unlimited commercial lisence.

    QUAD-SURFACE standard distribution kit includes:

    - fully-commented source codes of the program in ANSI C,

    - the product's User Manual containing detailed description of input and output data structures and an example driver program;

    - a graphical application that allows displaying domains that are to be meshed, as well as generated quadrilateral meshes.

    QUAD-SURFACE is completely developed by our company and contains no third party code.

    Finally, our "try-before-you-buy" policy. If you send us several examples of your domains, we will run QUAD-SURFACE and send you the generated meshes. If you are satisfied with results, you can then buy QUAD-SURFACE.

    To learn more about the full range of our products please follow this link.

    We also invite you to contact us with any questions, preferably by e-mail on or