source: issm/trunk-jpl/src/m/mesh/NodeInElement.m@ 13730

Last change on this file since 13730 was 13730, checked in by Mathieu Morlighem, 12 years ago

CHG: per matlab's request, removed all unnecessary semicolon

File size: 1.5 KB
Line 
1function node_in_element=NodeInElement(newx,newy,elements,x,y,nodeconnectivity)
2% NODEINELEMENT - find for a list of nodes (in newx,newy), which elements in the mesh (elements,x,y) they belong to.
3%
4% Usage:
5% node_in_element=NodeInElement(newx,newy,elements,x,y,md.mesh.vertexconnectivity);
6%
7% See also Nodeconnectivity
8%
9epsilon=10^-10;
10
11%compute some quantities that will speed up the process
12x3x1=x(elements(:,1))-x(elements(:,3));
13y3y1=y(elements(:,1))-y(elements(:,3));
14x3x2=x(elements(:,2))-x(elements(:,3));
15y3y2=y(elements(:,2))-y(elements(:,3));
16x3=x(elements(:,3));
17y3=y(elements(:,3));
18delta=x(elements(:,2)).*y(elements(:,3))-y(elements(:,2)).*x(elements(:,3))-x(elements(:,1)).*y(elements(:,3))+y(elements(:,1)).*x(elements(:,3))+x(elements(:,1)).*y(elements(:,2))-y(elements(:,1)).*x(elements(:,2));
19
20%max connectivity:
21max_connectivity=max(nodeconnectivity(:,end));
22node_in_element=zeros(length(newx),max_connectivity+1); %last column is the number of elements to which the row node is connected.
23
24for i=1:length(newx),
25 x0=newx(i);
26 y0=newy(i);
27
28 %first area coordinate
29 area_1=(y3y2.*(x0-x3)-x3x2.*(y0-y3))./delta;
30 %second area coordinate
31 area_2=(x3x1.*(y0-y3)-y3y1.*(x0-x3))./delta;
32 %third area coordinate
33 area_3=1-area_1-area_2;
34
35 %get elements for which all area coordinates are positive (meaning (x0,y0) belongs to these elements
36 pos=find((area_1>=0-epsilon) & (area_2>=0-epsilon) & (area_3>=0-epsilon));
37
38 num_elements=length(pos);
39
40 node_in_element(i,1:num_elements)=pos;
41 node_in_element(i,end)=num_elements;
42end
Note: See TracBrowser for help on using the repository browser.