^{1}

^{2}

^{2}

^{2}

^{1}

^{1}

^{2}

We apply a 3D adaptive refinement procedure using meshless generalized finite difference method for solving elliptic partial differential equations. This adaptive refinement, based on an octree structure, allows adding nodes in a regular way in order to obtain smooth transitions with different nodal densities in the model. For this purpose, we define an error indicator as stop condition of the refinement, a criterion for choosing nodes with the highest errors, and a limit for the number of nodes to be added in each adaptive stage. This kind of equations often appears in engineering problems such as simulation of heat conduction, electrical potential, seepage through porous media, or irrotational flow of fluids. The numerical results show the high accuracy obtained.

The generalized finite difference method, hereafter GFDM, is a meshless method that allows the linearization of the partial derivatives in a partial differential equation. Among the first works of the method, the works of Jensen [

Clark et al. [

In 2D, two adaptive methods have been described in Benito et al. [

Both in 2D and in 3D, Ureña et al. [

An advantage of increasing few nodes in a domain is to avoid the increasing in the calculation time. However, if the calculation time is not a problem and it is possible to add much more nodes, then it is better to use an adaptive method that places nodes in a more regular way than the improved adaptive method given in [

It is more difficult to deal with adaptivity in 3D cases because the appearing of degenerated solutions is possible and it is also necessary to keep the number of nodes that are added in the refinement stages limited.

In this paper, an octree data structure for avoiding the possibility of obtaining degenerated solutions in the adaptive process is shown. Because of the local behaviour of the refinement procedure and after successive refinement iterations, a cloud of nodes with different nodal densities is obtained. The octree split is controlled by an error indicator and a constraint that limit the possibility of adding too many nodes in each refinement stage, in order to obtain smooth transitions between the different nodal densities in the model.

In the developed adaptive algorithm, the following characteristics are included: the use of a background octree structure, a criterion of selection of cells based on the variations of the gradient, an error indicator that works as a stop condition, and a limit for the addition of new nodes in each refinement stage. Moreover, different 3D elliptic partial differentials equations are solved for cases with sharp gradients. A practical application to the electric potential problem with unknown solution is also included.

The remainder of the paper is organized as follows. In Section

Let

Since generalized finite differences method is a meshless method, a discretization of the domain,

As

Let

Further details about consistency, order, and convergence are given in [

Numerical convergence.

| | | |
---|---|---|---|

| 1.46 | 1.25 | 1.70 |

| 2.32 | 1.60 | 1.79 |

| 1.51 | 1.25 | 1.85 |

| 3.74 | 2.00 | 1.90 |

Numerical convergence. Abscissas represent the step of each discretization and ordinates represent the corresponding global error.

As it can be appreciated, the rate of convergence is close to quadratic convergence.

With the aim of improving the accuracy of the obtained approximation in a particular problem, it is possible to increase the number of nodes in the considered cloud of nodes. Since the GFDM allows using irregular clouds of nodes, the position of the added nodes can be selective and so it is possible to add more nodes in regions with higher errors. An important case of regions with higher errors gives rise when there are sharp variations of the gradient. In those cases, it is important to account for an adaptive algorithm that allows adding nodes as regular as possible.

An octree algorithm is a tree data structure based on a cell with eight children. Each cell of an octree represents a cube in the physical space and each child represents an octant of its parent. In the first step, the octree algorithm uses the initial nodes and, hereafter, the process is realized recursively; that is, each cell in turn can be split into eight children that have a higher level than their parent. Figures

Initial structure

First step of the refinement. The cell in the corner has been divided into eight octants

In spite of the fact that the GFDM is a meshless method and the application of the octree structure requires the computation of a mesh, it is important to note that there is not a loss of applicability in the method as the structure is just needed for the discretization of the domain, but not for the selection of the nodes of the star. Moreover, the use of the octree structure in the adaptive refinement places nodes in a favourable way in order to avoid ill-conditioned stars.

As error indicator, we use an algorithm based on the computing of the variations of the gradient between the nodes of an octree cell.

Firstly, the first-order derivatives are calculated by solving (

As stop condition, we calculate the following error between two successive adaptive stages:

In order to achieve better results, the following consideration should be taken into account. The refined cells should be less than 15% of the number of cells in the domain in each stage due to the amount of nodes generated by the octree method, 8 new cells and 19 new nodes by cell. This situation can provoke an unnecessary increase of nodes in the same stage and because of that it is better to increase the number of nodes in several stages.

We solve five elliptic problems corresponding to partial differential equations with singularities or sharp variations of the gradients. In addition, we solve a practical case of potential electric where the exact solution is unknown.

In the following examples, we use stars with 16 nodes formed by the octant criterion and we use the potential weighting function

The global error is calculated in each stage as follows:

In order to clarify the visualization of the figures, we only show the background octree structure in the boundaries.

Let us consider the following heat transmission problem:

Example 1.

Node | | | |
---|---|---|---|

1 | .00001 | .00001 | .00001 |

2 | .2600 | .0001 | .0001 |

3 | .5100 | .0001 | .0001 |

4 | .7600 | .0001 | .0001 |

5 | 0.900 | .0001 | .0001 |

6 | .0100 | .2600 | .0001 |

7 | .2600 | .2600 | .0001 |

8 | .5100 | .2600 | .0001 |

9 | .7600 | .2600 | .0001 |

10 | 1.0100 | .2600 | .0001 |

11 | .0100 | .5100 | .0001 |

12 | .2600 | .5100 | .0001 |

13 | .5100 | .5100 | .0001 |

14 | .7600 | .5100 | .0001 |

15 | 1.2000 | .5100 | .0001 |

16 | .0100 | .7600 | .0001 |

17 | .2600 | .7600 | .0001 |

18 | .5100 | .7600 | .0001 |

19 | .7600 | .7600 | .0001 |

20 | 1.0100 | .7600 | .0001 |

21 | .0100 | 0.9000 | .0001 |

22 | .2600 | 1.0100 | .0001 |

23 | .5100 | 1.2000 | .0001 |

24 | .7600 | 1.0100 | .0001 |

25 | .9000 | .9000 | .0001 |

26 | .0100 | .0001 | .2600 |

27 | .2600 | .0001 | .2600 |

28 | .5100 | .0001 | .2600 |

29 | .7600 | .0001 | .2600 |

30 | 0.9000 | .0001 | .2600 |

31 | .0100 | .2600 | .2600 |

32 | .2600 | .2600 | .2600 |

33 | .5100 | .2600 | .2600 |

34 | .7600 | .2600 | .2600 |

35 | 1.0100 | .2600 | .2600 |

36 | .0100 | .5100 | .2600 |

37 | .2600 | .5100 | .2600 |

38 | .5100 | .5100 | .2600 |

39 | .7600 | .5100 | .2600 |

40 | 1.2000 | .5100 | .2600 |

41 | .0100 | .7600 | .2600 |

42 | .2600 | .7600 | .2600 |

43 | .5100 | .7600 | .2600 |

44 | .7600 | .7600 | .2600 |

45 | 1.0100 | .7600 | .2600 |

46 | .0100 | 0.9000 | .2600 |

47 | .2600 | 1.0100 | .2600 |

48 | .5100 | 1.2000 | .2600 |

49 | .7600 | 1.0100 | .2600 |

50 | 0.9000 | 0.9000 | 2600 |

51 | .0100 | .0001 | .5100 |

52 | .2600 | .0001 | .5100 |

53 | .5100 | .0001 | .5100 |

54 | .7600 | .0001 | .5100 |

55 | 0.9000 | .0100 | .5100 |

56 | .0100 | .2600 | .5100 |

57 | .2600 | .2600 | .5100 |

58 | .5100 | .2600 | .5100 |

59 | .7600 | .2600 | .5100 |

60 | 1.0100 | .2600 | .5100 |

61 | .0100 | .5100 | .5100 |

62 | .2600 | .5100 | .5100 |

63 | .5100 | .5100 | .5100 |

64 | .7600 | .5100 | .5100 |

65 | 1.2000 | .5100 | .5100 |

66 | .0100 | .7600 | .5100 |

67 | .2600 | .7600 | .5100 |

68 | .5100 | .7600 | .5100 |

69 | .7600 | .7600 | .5100 |

70 | 1.0100 | .7600 | .5100 |

71 | .0100 | 0.9000 | .5100 |

72 | .2600 | 1.0100 | .5100 |

73 | .5100 | 1.2000 | .5100 |

74 | .7600 | 1.0100 | .5100 |

75 | 0.9000 | 0.9000 | .5100 |

76 | .0100 | .0001 | .7600 |

77 | .2600 | .0001 | .7600 |

78 | .5100 | .0001 | .7600 |

79 | .7600 | .0001 | .7600 |

80 | 0.9000 | .0100 | .7600 |

81 | .0100 | .2600 | .7600 |

82 | .2600 | .2600 | .7600 |

83 | .5100 | .2600 | .7600 |

84 | .7600 | .2600 | .7600 |

85 | 1.0100 | .2600 | .7600 |

86 | .0100 | .5100 | .7600 |

87 | .2600 | .5100 | .7600 |

88 | .5100 | .5100 | .7600 |

89 | .7600 | .5100 | .7600 |

90 | 1.2000 | .5100 | .7600 |

91 | .0100 | .7600 | .7600 |

92 | .2600 | .7600 | .7600 |

93 | .5100 | .7600 | .7600 |

94 | .7600 | .7600 | .7600 |

95 | 1.0100 | .7600 | .7600 |

96 | .0100 | 0.9000 | .7600 |

97 | .2600 | 1.0100 | .7600 |

98 | .5100 | 1.2000 | .7600 |

99 | .7600 | 1.0100 | .7600 |

100 | 0.9000 | 0.9000 | .7600 |

101 | .0100 | .0001 | 1.0100 |

102 | .2600 | .0001 | 1.0100 |

103 | .5100 | .0001 | 1.0100 |

104 | .7600 | .0001 | 1.0100 |

105 | 0.9000 | .0001 | 1.0100 |

106 | .0100 | .2600 | 1.0100 |

107 | .2600 | .2600 | 1.0100 |

108 | .5100 | .2600 | 1.0100 |

109 | .7600 | .2600 | 1.0100 |

110 | 1.0100 | .2600 | 1.0100 |

111 | .0100 | .5100 | 1.0100 |

112 | .2600 | .5100 | 1.0100 |

113 | .5100 | .5100 | 1.0100 |

114 | .7600 | .5100 | 1.0100 |

115 | 1.2000 | .5100 | 1.0100 |

116 | .0100 | .7600 | 1.0100 |

117 | .2600 | .7600 | 1.0100 |

118 | .5100 | .7600 | 1.0100 |

119 | .7600 | .7600 | 1.0100 |

120 | 1.0100 | .7600 | 1.0100 |

121 | .0100 | 0.9000 | 1.0100 |

122 | .2600 | 1.0100 | 1.0100 |

123 | .5100 | 1.2000 | 1.0100 |

124 | .7600 | 1.0100 | 1.0100 |

125 | 0.9000 | 0.9000 | 1.0100 |

Initial cloud of nodes with 125 nodes.

Final cloud of nodes with 1776 nodes.

Reduction of the global error in logarithmic scale. Abscissa axis represents the number of inner nodes.

Let us consider the following Poisson problem:

Initial cloud of nodes with 125 nodes.

Final cloud of nodes with 608 nodes.

Reduction of the global error in logarithmic scale. Abscissa axis represents the number of inner nodes.

Let us consider the problem governed by the following partial differential equation:

Initial cloud of nodes with 125 nodes.

Final cloud of nodes with 863 nodes.

Reduction of the global error in logarithmic scale. Abscissa axis represents the number of inner nodes.

Let us consider the problem governed by the following partial differential equation:

Figures

Example 4.

Node | | | |
---|---|---|---|

1 | .1100 | .0100 | .0100 |

2 | .2600 | .0100 | .0100 |

3 | .5100 | .0100 | .0100 |

4 | .7600 | .0100 | .0100 |

5 | 0.9000 | .0100 | .0100 |

6 | .0100 | .2600 | .0100 |

7 | .2600 | .2600 | .0100 |

8 | .5100 | .2600 | .0100 |

9 | .7600 | .2600 | .0100 |

10 | 1.0100 | .2600 | .0100 |

11 | −.0500 | .5100 | .0100 |

12 | .2600 | .5100 | .0100 |

13 | .5100 | .5100 | .0100 |

14 | .7600 | .5100 | .0100 |

15 | 1.0500 | .5100 | .0100 |

16 | .0100 | .7600 | .0100 |

17 | .2600 | .7600 | .0100 |

18 | .5100 | .7600 | .0100 |

19 | .7600 | .7600 | .0100 |

20 | 1.0100 | .7600 | .0100 |

21 | .1100 | 0.9000 | .0100 |

22 | .2600 | 1.0100 | .0100 |

23 | .5100 | 1.0100 | .0100 |

24 | .7600 | 1.0100 | .0100 |

25 | 0.9000 | 0.9000 | .0100 |

26 | .1100 | .0100 | .2600 |

27 | .2600 | .0100 | .2600 |

28 | .5100 | .0100 | .2600 |

29 | .7600 | .0100 | .2600 |

30 | 0.9000 | .0100 | .2600 |

31 | .0100 | .2600 | .2600 |

32 | .2600 | .2600 | .2600 |

33 | .5100 | .2600 | .2600 |

34 | .7600 | .2600 | .2600 |

35 | 1.0100 | .2600 | .2600 |

36 | −.0500 | .5100 | .2600 |

37 | .2600 | .5100 | .2600 |

38 | .5100 | .5100 | .2600 |

39 | .7600 | .5100 | .2600 |

40 | 1.0500 | .5100 | .2600 |

41 | .0100 | .7600 | .2600 |

42 | .2600 | .7600 | .2600 |

43 | .5100 | .7600 | .2600 |

44 | .7600 | .7600 | .2600 |

45 | 1.0100 | .7600 | .2600 |

46 | .1100 | 0.9000 | .2600 |

47 | .2600 | 1.0100 | .2600 |

48 | .5100 | 1.0100 | .2600 |

49 | .7600 | 1.0100 | .2600 |

50 | 0.9000 | 0.9000 | .2600 |

51 | .1100 | .0100 | .5100 |

52 | .2600 | .0100 | .5100 |

53 | .5100 | .0100 | .5100 |

54 | .7600 | .0100 | .5100 |

55 | 0.9000 | .0100 | .5100 |

56 | .0100 | .2600 | .5100 |

57 | .2600 | .2600 | .5100 |

58 | .5100 | .2600 | .5100 |

59 | .7600 | .2600 | .5100 |

60 | 1.0100 | .2600 | .5100 |

61 | −.0500 | .5100 | .5100 |

62 | .2600 | .5100 | .5100 |

63 | .5100 | .5100 | .5100 |

64 | .7600 | .5100 | .5100 |

65 | 1.0500 | .5100 | .5100 |

66 | .0100 | .7600 | .5100 |

67 | .2600 | .7600 | .5100 |

68 | .5100 | .7600 | .5100 |

69 | .7600 | .7600 | .5100 |

70 | 1.0100 | .7600 | .5100 |

71 | .1100 | 0.9000 | .5100 |

72 | .2600 | 1.0100 | .5100 |

73 | .5100 | 1.0100 | .5100 |

74 | .7600 | 1.0100 | .5100 |

75 | 0.9000 | 0.9000 | .5100 |

76 | .0100 | .0100 | .7600 |

77 | .2600 | .0100 | .7600 |

78 | .5100 | .0100 | .7600 |

79 | .7600 | .0100 | .7600 |

80 | 0.9000 | .0100 | .7600 |

81 | .0100 | .2600 | .7600 |

82 | .2600 | .2600 | .7600 |

83 | .5100 | .2600 | .7600 |

84 | .7600 | .2600 | .7600 |

85 | 1.0500 | .2600 | .7600 |

86 | .0100 | .5100 | .7600 |

87 | .2600 | .5100 | .7600 |

88 | .5100 | .5100 | .7600 |

89 | .7600 | .5100 | .7600 |

90 | 1.1000 | .5100 | .7600 |

91 | .0100 | .7600 | .7600 |

92 | .2600 | .7600 | .7600 |

93 | .5100 | .7600 | .7600 |

94 | .7600 | .7600 | .7600 |

95 | 1.0100 | .7600 | .7600 |

96 | .0100 | 0.9000 | .7600 |

97 | .2600 | 1.0100 | .7600 |

98 | .5100 | 1.0100 | .7600 |

99 | .7600 | 1.0100 | .7600 |

100 | 1.0100 | 1.0100 | .7600 |

101 | .0100 | .0100 | 1.0100 |

102 | .2600 | .0100 | 1.0100 |

103 | .5100 | .0100 | 1.0100 |

104 | .7600 | .0100 | 1.0100 |

105 | 0.9000 | .0100 | 1.0100 |

106 | .0100 | .2600 | 1.0100 |

107 | .2600 | .2600 | 1.0100 |

108 | .5100 | .2600 | 1.0100 |

109 | .7600 | .2600 | 1.0100 |

110 | 1.0100 | .2600 | 1.0100 |

111 | .0100 | .5100 | 1.0100 |

112 | .2600 | .5100 | 1.0100 |

113 | .5100 | .5100 | 1.0100 |

114 | .7600 | .5100 | 1.0100 |

115 | 1.0100 | .5100 | 1.0100 |

116 | .0100 | .7600 | 1.0100 |

117 | .2600 | .7600 | 1.0100 |

118 | .5100 | .7600 | 1.0100 |

119 | .7600 | .7600 | 1.0100 |

120 | 1.0100 | .7600 | 1.0100 |

121 | .0100 | 0.9000 | 1.0100 |

122 | .2600 | 1.0100 | 1.0100 |

123 | .5100 | 1.0100 | 1.0100 |

124 | .7600 | 1.0100 | 1.0100 |

125 | 1.0100 | 1.0100 | 1.0100 |

Initial cloud of nodes with 125 nodes.

Final cloud of nodes with 1449 nodes.

Let us consider the problem governed by the partial differential equation (

Initial cloud of nodes with 125 nodes.

Final cloud of nodes with 3629 nodes.

The initial global errors in the examples are too high because we have generated starting clouds of few nodes to show the extreme conditions of the solutions involved. As it can be seen, the refinement gets large reductions of the global error in a few stages.

The efficiency of the algorithm adding progressively new nodes shows the reduction in the solution error. The refinement procedure creates new nodes in the neighborhood of areas with higher gradients; furthermore these nodes have a more balanced distribution and it is not necessary further constraints to control ill-conditioned stars. Moreover, as the number of new nodes is limited in each adaptive stage, the transition between areas with different density of nodes is smooth.

The method can be also applied to the case of Neumann boundary conditions. In this case the procedure described in [

Electric fields are used for designing high voltage equipment. In these cases, it is necessary to know the distribution of the electrical potential. In electrical power distribution, a busbar is a metallic strip for local high current power distribution. We consider the case of a busbar box at potential 220 volts. The considered domain is

Figures

Initial discretization of the domain.

Final discretization of the domain.

In the octree refinement, the new interior nodes of each stage are incorporated in the next adaptive stages as nodes with unknown potential. As the exact error is unknown, the results obtained in the last adaptive step have been considered as the best approximation to the solution; then formula (

Figure

Reduction of the approximated global error in logarithmic scale. Abscissa axis represents the number of inner nodes.

A fully automatic 3D adaptive refinement procedure using GFDM for solving elliptic equations has been developed and implemented. An octree background structure has been used to guide the refinement of the clouds of nodes.

An error indicator has been used as a stop condition. This indicator is based on the differences between the gradients of the nodes in the same cell. In each adaptive stage, the number of new nodes is limited in order to obtain smooth transition areas between regions with different gradients. The efficiency of the algorithm is shown by means of the progressive decrease of the error. It is important to note that this adaptive method allows considering a coarse starting cloud of nodes and making it finer in several stages. This allows having a more suitable cloud of nodes adapted to the considered problem.

Simulation of heat conduction, electric potential, seepage through porous media, and irrotational flow of fluids are some problems where it is necessary to solve elliptical partial differential equations. The adaptive procedure refines the regions with high gradients and obtains very accurate results in different types of domain. All has been shown in the considered examples which is why the proposed refinement procedure will help to improve future applications of the GFDM for solving three-dimensional problems in complex domains.

The authors declare that they have no conflicts of interest.

The authors acknowledge the support of the Technical University of Madrid (Research Group) and the UNED of Spain, Project 2017-IFC02.