7.1  Nodes#

7.1.1  Node matrix#

Nodes are characterized using the convention of Universal files. model.Node and FEnode are node matrices. A node matrix has seven columns. Each row of gives

 NodeId PID DID GID x y z 

where NodeId are node numbers (positive integers with no constraint on order or continuity), PID and DID are coordinate system numbers for position and displacement respectively (zero or any positive integer), GID is a node group number (zero or any positive integer), and x y z are the coordinates . For cylindrical coordinate systems, coordinates represent r teta z (radius, angle in degrees, and z axis value). For spherical coordinates systems, they represent r teta phi (radius, angle from vertical axis in degrees, azimuth in degrees). For local coordinate system support see section 7.1.1.


A simple line of 10 nodes along the x axis could be simply generated by the command

 node = [[1:10]' zeros(10,3) linspace(0,1,10)'*[1 0 0]]; 

For other examples take a look at the finite element related demonstrations (see section 4.5) and the mesh handling utility femesh.


The only restriction applied to the NodeId is that they should be positive integers. The earlier limit of round((2^31-1)/100) 21e6 is no longer applicable.

In many cases, you will want to access particular nodes by their number. The standard approach is to create a reindexing vector called NNode. Thus the commands

 NNode=[];NNode(node(:,1))=1:size(node,1);
 Indices_of_Nodes = NNode(List_of_NodeId) 

gives you a simple mechanism to determine the indices in the node matrix of a set of nodes with identifiers List_of_NodeId. The feutil FindNode commands provide tools for more complex selection of nodes in a large list.

Coordinate system handling#

Local coordinate systems are stored in a model.bas field (see NodeBas). Columns 2 and 3 of model.Node define respectively coordinate system numbers for position and displacement.

Use of local coordinate systems is illustrated in section 3.1.1 where a local basis is defined for test results.

feplot, fe_mk, rigid, ... now support local coordinates. feutil does when the model is described by a data structure with the .bas field. femesh assumes you are using global coordinate system obtained with

 [FEnode,bas] = basis(model.Node,model.bas)

To write your own scripts using local coordinate systems, it is useful to know the following calls:

[node,bas,NNode]=feutil('getnodebas',model) returns the nodes in global coordinate system, the bases bas with recursive definitions resolved and the reindexing vector NNode.

To obtain, the local to global transformation matrix (meaning {qglobal} = [cGL] {qlocal}) use

 cGL=basis('trans l',model.bas,model.Node,model.DOF)