Node class
- class femedu.domain.Node.Node(x0, y0=None, z0=None)
class: representing a single Node
- Parameters:
x0 – Initial position (List)
- addLoad(loads, dofs)
Nodes are applied as components energetically linked to any degree of freedom provided at this node.
For example, in a 2D-problem with the x-axis to the right and the y-axis pointing up, applying a vertical downward force, P, and a counter-clockwise moment, M, at a node, xn:
xn.addLoad([-P, M],['uy','rz'])
- Parameters:
loads (list of floats)
dofs (list of dof-codes)
- addTransformation(T)
Attach a
femedu.domain.Transformation()
object to this node. The transformation defines a local coordinate system.If a transformation is given, all loads and prescribed displacements are assumed in that local coordinate system.
Furthermore, all nodal displacements, velocity, or acceleration will be reported in that local coordinate system.
- areFixed()
To be used by the assembly routines.
return a list of indices pointing to fixed dofs in this node. Indices are local to this node:
0..num_dofs
- distanceTo(x)
- Parameters:
x –
nd.array
- Returns:
scalar distance from x
- fixDOF(*dofs)
provide a list of dof codes that shall be restrained
- Parameters:
dofs – fix the dof defined by key(s)
- getDeformedPos(caller=None, factor=1.0, **kwargs)
Return deformed position \({\bf x} = {\bf X} + f \: {\bf u}\)
If a caller is specified, the node will adjust the output to the d.o.f.s specified by the element’s request() call. (called during initialization.)
- Parameters:
caller – pointer to the calling element.
factor – deformation magnification factor, \(f\).
- Returns:
deformed position vector, \({\bf x}\).
- getDeltaU(previous_step=False)
- Returns:
delta u = (current u) - (last converged u)
- getDisp(dofs=None, caller=None, **kwargs)
return a vector (nd.array) of (generalized) displacements.
If a
caller
is given, the element-specific d.o.f.s will be returned as a sequence in the same order as given by the element’srequest()
call.If a
dof_list
is given, d.o.f.s will be returned as the sequence given by that list. A zero value will be returned for all d.o.f.s that do not exist at this node.Note
A single d.o.f., e.g., “ux”, can be requested using
getDisp(dofs=('ux',))
. Do not forget the,
to indicate the definition of a single-element tuple.- Parameters:
caller – pointer to element
dofs – tuple or list of d.o.f. keys
- Returns:
nodal displacement vector
- getFixedDofs()
- Returns:
a list of fixed dofs by dof-code strings.
- getID()
- Returns:
the node ID (
str
)
- getIdx4DOFs(dofs=[], local=False)
- Parameters:
dofs – a list of named dofs for which an index is requested. The returned list will be in the same order as listed in dofs.
local – by default return index to the global list of dofs. Set
local=True
to return index to this node’s list of dofs.
- Returns:
an index list to this node’s dofs
- getIdx4Element(elem)
- Returns:
an index list to nodal dofs associated with the attached elem within the global dof list
- getLead()
- Returns:
pointer to the lead node (
Node
)
- getLeadID()
- Returns:
the node ID of the lead node (
str
)
- getLoad(dof_list=None, apply_load_factor=False)
- Parameters:
dof_list – list (or tuple) if dof-keys for which nodal loads are requested. Fill missing dofs by 0.0.
apply_load_factor – defaults to False -> no factors applied.
- Returns:
nodal load vector (ndarray)
- getLocalTransformationMap(dofs=[])
- Returns:
Transformation matrix
- getMappedValue(var=None, ignore_lead=False)
Returns the mapped and weighted nodal value.
- Parameters:
var – optional. If a string identifying the variable is given, this function will return zero i fthe current variable does not match the once provided by the caller.
- Returns:
the weighted nodal average for the requested variable.
- getNormDeltaU2(previous_step=False)
- Returns:
norm of delta u = (current u) - (last converged u)
- Returns:
0.0 if node is a “follower”
- getPos(caller=None, **kwargs)
- Parameters:
caller – pointer to calling element
- Returns:
initial position vector
- hasDOF(dof)
- Parameters:
dof – a dof string ID
- Returns:
True(False) if dof in(not in) the node’s dof-list
- hasLoad()
- Returns:
True if this node has any loads (bool)
- isClose(x, TOL=1e-05)
- Parameters:
x –
nd.array
- Returns:
True if x is within TOL from this node.
- isFixed(dof)
- Parameters:
dof – dof code as defined in
request()
- m2l(M, caller=None)
transform a nodal matrix from global to local coordinates
This is commonly used by Elements to transform nodal forces to the Node’s local system such that the
Solver.assemble
method receives stiffness in local coordinates.- Parameters:
M – vector to be transformed
caller – pointer to the calling element
- Returns:
the transformed matrix
- make_follower(lead)
this command tells the current node (self) to “follow” whatever the lead node is doing.
- Parameters:
lead (Node) – pointer to the lead node
- on_converged()
This method is called every time a solver signals a converged solution.
- popU()
Restore a previously pushed displacement vector (using
pushU()
).
- pushU()
Store the current displacement vector for later restore using
popU()
.
- recordThisStep(load_level)
record current state of the system
- request(dof_list, caller)
send list or individual dof code. Common codes:
code
description
ux
displacement in x-direction
uy
displacement in y-direction
uz
displacement in z-direction
rx
rotation about x-axis
ry
rotation about y-axis
rz
rotation about z-axis
- Parameters:
dof_list – list of dof-codes required by calling element
caller – pointer to calling element (usually sent as self)
- resetAll()
Resets load and displacement vectors.
- resetDisp()
Resets the displacement vector.
- resetLoad()
Resets the load vectors
- setDOF(dofs=[], values=[])
alternative to the fixDOF() method that allows to set a prescribed value other than 0.0 for each degree of freedom.
- Parameters:
dofs – list of dofs, defined by key(s), for which displacement values shall be prescribed.
values –
list of prescribed values for the given list of dofs. Values may be given as a float or as a list of two values.
If only a single value is given, the respective dof will be set to that value.
If a list is given, the dof will be set to
value[0] + loadfactor*value[1]
- setDisp(U, dof_list=None, modeshape=False)
use for prescribed displacements
- Parameters:
U – list or tuple of prescribed values
dof_list – list or tuple of dof-codes associated with values in U
modeshape – set to True if U represents a mode shape (BOOL)
- setLoad(loads, dofs)
- Parameters:
loads – list of force components
dofs – associated list of DOFs to which respective loads are to be applied
- setLoadFactor(lam)
Set the target load factor to lam
Warning
This method should not be called by the user. USE
System.setLoadFactor(lam)
instead!The entered load pattern is considered a reference load, to be multiplied by a scalar load factor, \(\lambda\).
If no load factor is set explicitly, a factor of 1.0 is assumed, i.e., the entire entered load is applied in full.
- setTrialState()
This will set a suitable trial position for the arc-length method to
\[{\bf u}^{(0)}_{n+1} = 2{\bf u}^{(\infty)}_{n} - {\bf u}^{(\infty)}_{n-1}\]This should be used by a solution algorithm but not by regular user input.
- v2g(U, caller=None)
transform a nodal vector from local to global coordinates
This is commonly used by the solver to transform nodal displacements from the Node’s local to the global system such that the
Node
class can store displacements internally in global coordinates.- Parameters:
U – vector to be transformed
caller – pointer to the calling element
- Returns:
the transformed vector
- v2l(U, caller=None)
transform a nodal vector from global to local coordinates
This is commonly used by Elements to transform nodal forces to the Node’s local system such that the
Solver.assemble
method receives forces in local coordinates.- Parameters:
U – vector to be transformed
caller – pointer to the calling element
- Returns:
the transformed vector