pyyeti.nastran.n2p.formdrm

pyyeti.nastran.n2p.formdrm(nas, seup, dof, sedn=0, gset=False)[source]

Form a displacement data recovery matrix for specified dof.

Parameters:
  • nas (dictionary) – This is the nas2cam dictionary: nas = op2.rdnas2cam()

  • seup (integer) – The id of the upstream superelement.

  • dof (1d or 2d integer array) – One or two column matrix: [ids] or [[ids, dofs]]; if 1d, the DOF for each node is internally set to 123456. The DOF can be entered in Nastran style, eg: 123 for the three translations. For example, all of these are equivalent:

    dof = 99
    dof = [99]
    dof = [[99, 123456]]
    dof = [[99, 1], [99, 2], [99, 3],
           [99, 4], [99, 5], [99, 6]]
    
  • sedn (integer) – The id of the downstream superelement.

  • gset (bool; optional) – If true, and sedn == 0, transform from g-set instead of modal DOF. See below.

Returns:

  • DRM (ndarray) – Transformation from downstream DOF to the specified upstream DOF (dof). The transformation is as follows:

    if sedn > 0:
      {upstream DOF} = DRM * {downstream T & Q}
    
    if sedn == 0:
      {upstream DOF} = DRM * {modal}     (for gset == False)
      {upstream DOF} = DRM * {g-set}     (for gset == True)
    
  • outdof (ndarray) – The expanded version of the dof input as returned by mkdofpv():

    [id1, dof1; id1, dof2; ... id2, dof1; ...]
    

Notes

This routine uses formulvs() and formtran() as necessary.

Example usage:

# Want data recovery matrix from se 0 to grids 3001 and
# 3002 of se 300:
from pyyeti import nastran
import op2
nas = op2.rdnas2cam()
drm, dof = nastran.formdrm(nas, 300, [3001, 3002])

# for only the translations:
drm, dof = nastran.formdrm(nas, 300, [[3001, 123],
                                      [3002, 123])