# How to determine the support/influence domain for irregularly distributed nodes in the Element-Free Galekin Method?

EDIT (26-12-14):In the Belytschko's EFG code, the domain of influence for uniform distributed node can be calculated using the code below; my question is how to calculate xspac and yspac when the nodes are irregularly distributed?

% DETERMINE DOMAINS OF INFLUENCE - UNIFORM NODAL SPACING
dmax=3.5;
xspac = Lb/ndivl;
yspac = D/ndivw;
dm = zeros(2,numnod);
dm(1,1:numnod)=dmax*xspac*ones(1,numnod);
dm(2,1:numnod)=dmax*yspac*ones(1,numnod);


kindly help with idea on how /or source code to determine the influence domain for a domain in 2D or 3D with irregularly distributed nodes in EFG or any other meshfree method.

Please refer to the concept proposed by G.R Liu in his book:- Meshfree Methods: Moving beyond the Finite Element Method, Page 24 - 26 (Preview page via Google book at http://goo.gl/fd6wyw)

Thank you in advance.

• What do you not understand about what's in Liu's book? – Bill Barth Dec 25 '14 at 22:29
• Thanks for your comment. @Paul, am not referring to the entire method. In a more simple term, how do I get the size of the influence domain for a field node that are irregularly distributed? – Adesola Ademiloye Dec 26 '14 at 9:32
• @adesam01: It might help if you provide a definition of the influence domain and some intuition on how it plays a role in your method. – Paul Dec 26 '14 at 17:04
• @paul: In meshless method, the influence domain is used to determine the number of nodes in the support domain of a field node; the support domain is used to formulate the shape function instead of element as we have in finite element method. To get the influence domain, one need to specify the average nodal spacing -xspace and yspace. As in the sample code above, it is easier to get these spacings when the nodes are evenly distributed. Here, I am trying to get this average spacing when the nodes are IRREGULARLY distributed. – Adesola Ademiloye Dec 27 '14 at 18:01

## 2 Answers

Theoretically, you can choose this distance arbitrarily. In practice, you need to be more careful. If the distance is too small, the support regions around each node will never intersect with each other. Thus, the equations effectively decouple from eachother and no meaningful answer can result from this. In the other extreme, choosing the distance too large means that a lot of nodes couple to each other, making the linear system dense and more costly to solve. Balancing the need to guarantee sufficient coupling while promoting sparsity is non-trivial.

Ideally, you want to choose the distance large enough to have the support around each node overlap with the neighbors' support regions (as we usually observe with the traditional galerkin finite element method). This really depends on how your points are distributed. If you have points that roughly evenly throughout the domain (e.g. poisson disk sampling), you may want to use the average nearest neighbor distance for this purpose. If you have the internodal distances stored in a matrix, it is very easy to calculate. For each node $x_i$, find the nearest neighbor $x_j$ whose distance $d^*_i=d_{ij}$ from $x_i$ is smallest compared to all the other nodes. If you have n nodes, then simply take the average of all the minimum distances $\frac{\sum_i d^*_i}{n}$. In practice, you may want use a distance slightly larger than this to overcome any slight biases in the point distribution.

However, you need to be cautious about using this approach for two reasons:

1. If you don't already have the internodal distances, you'll need to compute them and that can be costly! ($O(n^2)$ operations).
2. If your points are clustered into groups, then the average nearest neighbor distance can also lead to decoupled systems.

In general, you'll need to analyze the statistics of your spatial distribution to make the wisest choice of your support size. No method works well for all possible distributions.

Thank you all for your kind attention.

I have solved the above challenge using the following approach.

1. Firstly, I used a nearest neighbor search algorithm to located the closest node to each of the field nodes;

2. The approach is more convenient for circular support domain - though it can be used for rectangular domain as well.

3. I then obtain the distance between the field node and its nearest neighbor; this distance was then taken/used as the radius of the support domain.

4. I subsequently obtain the size of the influence domain by using the formula: dm(i) = dmax*delta (i) where i is the field node and delta is the radius of the support domain.

Note that instead of using a for loop over all the nodes, I simply perform the step 1 above for all the field nodes hence size of delta is (numnod*1) and dm is also (numnod*1) since dmax is a scalar which ranges from 2.0 - 4.0 for static analysis.

Thanks!

N.B: Please feel free to comment on my approach.