2.4.4 Node properties

Node properties are created with the nodeProp method, rather than the general Prop. The kind field does not need to be set: it will be done automatically. When selecting records using the getProp method, add a kind='n' argument to select only node properties.

Node properties will recognize some special field names and check the values for consistency. Application plugins such as the Abaqus input file generator depend on these property structure, so the user should not mess with them. Currently, the following attributes are in use:

cload
A concentrated load at the node. This is a list of 6 items: three force components in axis directions and three force moments around the axes: [F_0, F_1, F_2, M_0, M_1, M_2].
bound
A boundary condition for the nodal displacement components. This can be defined in 2 ways:
displacement
Prescribed displacements. This is a list of tuples (i,v), where i is a DOF number (1..6) and v is the prescribed value for that DOF.
coords
The coordinate system which is used for the definition of cload, bound and displ fields. It should be a CoordSys object.

Some simple examples:

    P.nodeProp(cload=[5,0,-75,0,0,0])
    P.nodeProp(set=[2,3],bound='pinned')
    P.nodeProp(5,displ=[(1,0.7)])
The first line sets a concentrated load all the nodes, the second line sets a boundary condition 'pinned' on nodes 2 and 3. The third line sets a prescribed displacement on node 5 with value 0.7 along the first direction. The first positional argument indeed corresponds to the 'set' attribute.

Often the properties are computed and stored in variables rather than entered directly.

    P1 = [ 1.0,1.0,1.0, 0.0,0.0,0.0 ]
    P2 = [ 0.0 ] * 3 + [ 1.0 ] * 3 
    B1 = [ 1 ] + [ 0 ] * 5
    CYL = CoordSystem('cylindrical',[0,0,0,0,0,1])
    P.nodeProp(bound=B1,csys=CYL)
The first two lines define two concentrated loads: P1 consists of three point loads in each of the coordinate directions; P2 contains three force moments around the axes. The third line specifies a boundary condition where the first DOF (usually displacement in $x$-direction) is constrained, while the remaining 5 DOF's are free. The next line defines a local coordinate system, in this case a cylindrical coordinate system with axis pointing from point [0.,0.,0.] to point [0.,0.,1.]. The last line

To facilitate property selection, a tag can be added.

    nset1 = P.nodeProp(tag='loadcase 1',set=[2,3,4],cload=P1).nr
    P.nodeProp(tag='loadcase 2',set=Nset(nset1),cload=P2)
The last two lines show how you can avoid duplication of sets in mulitple records. The same set of nodes should receive different concentrated load values for different load cases. The load case is stored in a tag, but duplicating the set definition could become wasteful if the sets are large. Instead of specifying the node numbers of the set directly, we can pass a string setting a set name. Of course, the application will need to know how to interprete the set names. Therefore the property module provides a unified way to attach a unique set name to each set defined in a property record. The name of a node property record set can be obtained with the function Nset(nr), where nr is the record number. In the example above, that value is first recorded in nset1 and then used in the last line to guarantee the use of the same set as in the property above.