result_objects Package

element_table_object Module

digraph inheritanceacd67543ee { bgcolor=transparent; rankdir=LR; size=""; "pyNastran.op2.op2_interface.op2_codes.Op2Codes" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled"]; "pyNastran.op2.result_objects.element_table_object.ElementTableArray" [URL="#pyNastran.op2.result_objects.element_table_object.ElementTableArray",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "pyNastran.op2.result_objects.op2_objects.BaseElement" -> "pyNastran.op2.result_objects.element_table_object.ElementTableArray" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.op2.result_objects.element_table_object.RealElementTableArray" [URL="#pyNastran.op2.result_objects.element_table_object.RealElementTableArray",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "pyNastran.op2.result_objects.element_table_object.ElementTableArray" -> "pyNastran.op2.result_objects.element_table_object.RealElementTableArray" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.op2.result_objects.op2_objects.BaseElement" [URL="#pyNastran.op2.result_objects.op2_objects.BaseElement",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "pyNastran.op2.result_objects.op2_objects.ScalarObject" -> "pyNastran.op2.result_objects.op2_objects.BaseElement" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.op2.result_objects.op2_objects.BaseScalarObject" [URL="#pyNastran.op2.result_objects.op2_objects.BaseScalarObject",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="The base scalar class is used by:"]; "pyNastran.op2.op2_interface.op2_codes.Op2Codes" -> "pyNastran.op2.result_objects.op2_objects.BaseScalarObject" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.op2.result_objects.op2_objects.ScalarObject" [URL="#pyNastran.op2.result_objects.op2_objects.ScalarObject",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Used by all vectorized objects including:"]; "pyNastran.op2.result_objects.op2_objects.BaseScalarObject" -> "pyNastran.op2.result_objects.op2_objects.ScalarObject" [arrowsize=0.5,style="setlinewidth(0.5)"]; }
class pyNastran.op2.result_objects.element_table_object.ElementTableArray(data_code, is_sort1, isubcase, dt)[source]

Bases: BaseElement

build()[source]

sizes the vectorized attributes of the ElementTableArray

combine(result, is_sort1=True)[source]
data_type()[source]
get_stats(short: bool = False) list[str][source]
property headers
class pyNastran.op2.result_objects.element_table_object.RealElementTableArray(data_code, is_sort1, isubcase, dt)[source]

Bases: ElementTableArray

data_type() str[source]
extract_xyplot(element_ids, index)[source]
property is_complex: bool
property is_real: bool
property nnodes_per_element: bool

op2_objects Module

digraph inheritancec770694c5f { bgcolor=transparent; rankdir=LR; size=""; "pyNastran.op2.op2_interface.op2_codes.Op2Codes" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled"]; "pyNastran.op2.result_objects.op2_objects.BaseElement" [URL="#pyNastran.op2.result_objects.op2_objects.BaseElement",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "pyNastran.op2.result_objects.op2_objects.ScalarObject" -> "pyNastran.op2.result_objects.op2_objects.BaseElement" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.op2.result_objects.op2_objects.BaseScalarObject" [URL="#pyNastran.op2.result_objects.op2_objects.BaseScalarObject",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="The base scalar class is used by:"]; "pyNastran.op2.op2_interface.op2_codes.Op2Codes" -> "pyNastran.op2.result_objects.op2_objects.BaseScalarObject" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.op2.result_objects.op2_objects.ScalarObject" [URL="#pyNastran.op2.result_objects.op2_objects.ScalarObject",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Used by all vectorized objects including:"]; "pyNastran.op2.result_objects.op2_objects.BaseScalarObject" -> "pyNastran.op2.result_objects.op2_objects.ScalarObject" [arrowsize=0.5,style="setlinewidth(0.5)"]; }
class pyNastran.op2.result_objects.op2_objects.BaseElement(data_code, isubcase, apply_data_code=True)[source]

Bases: ScalarObject

class pyNastran.op2.result_objects.op2_objects.BaseScalarObject[source]

Bases: Op2Codes

The base scalar class is used by:
  • RealEigenvalues

  • BucklingEigenvalues

  • ComplexEigenvalues

  • ScalarObject

build_dataframe() None[source]

creates a pandas dataframe

property class_name: str
export_to_hdf5(group, log: SimpleLogger) None[source]

exports the object to HDF5 format

get_headers()[source]
get_stats(short: bool = False)[source]
object_attributes(mode: str = 'public', keys_to_skip=None, filter_properties: bool = False) list[str][source]
object_methods(mode: str = 'public', keys_to_skip=None) list[str][source]
object_stats(mode: str = 'public', keys_to_skip=None, filter_properties: bool = False) str[source]
write_f06(f06_file, header=None, page_stamp='PAGE %s', page_num=1, is_mag_phase=False, is_sort1=True) int[source]
class pyNastran.op2.result_objects.op2_objects.ScalarObject(data_code, isubcase, apply_data_code=True)[source]

Bases: BaseScalarObject

Used by all vectorized objects including:
  • DisplacementArray

  • RodStressArray

apply_data_code() None[source]
cast_grid_type(grid_type_str)[source]

converts a grid_type string to an integer

property dataframe: pd.DataFrame

alternate way to get the dataframe

get_data_code(prefix: str = '  ') list[str][source]
get_unsteady_value()[source]
print_data_members()[source]

Prints out the “unique” vals of the case.

Uses a provided list of data_code[‘data_names’] to set the values for each subcase. Then populates a list of self.name+’s’ (by using setattr) with the current value. For example, if the variable name is ‘mode’, we make self.modes. Then to extract the values, we build a list of of the variables that were set like this and then loop over them to print their values.

This way there is no dependency on one result type having [‘mode’] and another result type having [‘mode’,’eigr’,’eigi’].

recast_gridtype_as_string(grid_type)[source]

converts a grid_type integer to a string

Point type (per NX 10; OUG table; p.5-663): -1, Harmonic Point (my choice) -> ‘ ‘ = 538976288 (as an integer) =1, GRID Point =2, Scalar Point =3, Extra Point =4, Modal =5, p-elements, 0-DOF -6, p-elements, number of DOF

update_data_code(data_code)[source]
update_dt(data_code, unused_dt)[source]

This method is called if the object already exits and a new time/freq/load step is found

pyNastran.op2.result_objects.op2_objects.get_complex_times_dtype(size: int) tuple[str, str][source]
pyNastran.op2.result_objects.op2_objects.get_sort_element_sizes(self, debug: bool = False) tuple[int, int, int][source]
pyNastran.op2.result_objects.op2_objects.get_sort_node_sizes(self, debug: bool = False) tuple[int, int, int][source]
pyNastran.op2.result_objects.op2_objects.get_times_dtype(nonlinear_factor: int | float, size: int, analysis_code_fmt=None) tuple[str, str, str][source]
pyNastran.op2.result_objects.op2_objects.set_as_sort1(obj)[source]

scalar_table_object Module

table_object Module

digraph inheritancef9924b78ce { bgcolor=transparent; rankdir=LR; size=""; "pyNastran.op2.op2_interface.op2_codes.Op2Codes" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled"]; "pyNastran.op2.result_objects.op2_objects.BaseScalarObject" [URL="#pyNastran.op2.result_objects.op2_objects.BaseScalarObject",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="The base scalar class is used by:"]; "pyNastran.op2.op2_interface.op2_codes.Op2Codes" -> "pyNastran.op2.result_objects.op2_objects.BaseScalarObject" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.op2.result_objects.op2_objects.ScalarObject" [URL="#pyNastran.op2.result_objects.op2_objects.ScalarObject",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Used by all vectorized objects including:"]; "pyNastran.op2.result_objects.op2_objects.BaseScalarObject" -> "pyNastran.op2.result_objects.op2_objects.ScalarObject" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.op2.result_objects.table_object.ComplexTableArray" [URL="#pyNastran.op2.result_objects.table_object.ComplexTableArray",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="complex displacement style table"]; "pyNastran.op2.result_objects.table_object.TableArray" -> "pyNastran.op2.result_objects.table_object.ComplexTableArray" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.op2.result_objects.table_object.RealTableArray" [URL="#pyNastran.op2.result_objects.table_object.RealTableArray",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="displacement style table"]; "pyNastran.op2.result_objects.table_object.TableArray" -> "pyNastran.op2.result_objects.table_object.RealTableArray" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.op2.result_objects.table_object.TableArray" [URL="#pyNastran.op2.result_objects.table_object.TableArray",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Base class for:"]; "pyNastran.op2.result_objects.op2_objects.ScalarObject" -> "pyNastran.op2.result_objects.table_object.TableArray" [arrowsize=0.5,style="setlinewidth(0.5)"]; }
defines:
  • TableObject

  • RealTableArray

  • ComplexTableArray

these are used by:
  • RealDisplacementArray

  • RealVelocityArray

  • RealAccelerationArray

  • RealEigenvaluesArray

  • RealSPCForcesArray

  • RealMPCForcesArray

  • RealAppliedLoadsArray

  • ComplexDisplacementArray

  • ComplexVelocityArray

  • ComplexAccelerationArray

  • ComplexEigenvaluesArray

  • ComplexSPCForcesArray

  • ComplexMPCForcesArray

  • ComplexAppliedLoadsArray

class pyNastran.op2.result_objects.table_object.ComplexTableArray(data_code, is_sort1, isubcase, dt)[source]

Bases: TableArray

complex displacement style table

classmethod add_complex_modes_case(table_name, element, data, isubcase, modes, eigrs, eigis, is_sort1=True, is_random=False, is_msc=True, random_code=0, title='', subtitle='', label='')[source]
classmethod add_freq_case(table_name, node_gridtype, data, isubcase, freqs, is_sort1=True, is_random=False, is_msc=True, random_code=0, title='', subtitle='', label='')[source]
data_type() str[source]
extract_xyplot(node_ids, index, index_str)[source]
property is_complex: bool
property is_real: bool
write_op2(op2_file, fascii, itable, new_result, date, is_mag_phase=False, endian='>')[source]

writes an OP2

write_sort1_as_sort1(f06_file, page_num, page_stamp, header, words, is_mag_phase)[source]
write_sort1_as_sort2(f06_file, page_num, page_stamp, header, words, is_mag_phase)[source]
class pyNastran.op2.result_objects.table_object.RealTableArray(data_code, is_sort1, isubcase, dt)[source]

Bases: TableArray

displacement style table

classmethod add_modal_case(table_name, node_gridtype, data, isubcase, modes, eigenvalues, mode_cycles, is_sort1=True, is_random=False, is_msc=True, random_code=0, title='', subtitle='', label='')[source]
classmethod add_static_case(table_name, node_gridtype, data, isubcase, is_sort1=True, is_random=False, is_msc=True, random_code=0, title='', subtitle='', label='')[source]
classmethod add_transient_case(table_name, node_gridtype, data, isubcase, times, is_sort1=True, is_random=False, is_msc=True, random_code=0, title='', subtitle='', label='')[source]
data_type() str[source]
extract_xyplot(node_ids, index)[source]
property is_complex: bool
property is_real: bool
set_as_static_case()[source]
write_csv(csv_file: TextIO, is_exponent_format: bool = False, is_mag_phase: bool = False, is_sort1: bool = True, write_header: bool = True)[source]
write_frd(frd_file: TextIO, is_exponent_format: bool = False, is_mag_phase: bool = False, is_sort1: bool = True, write_header: bool = True)[source]

https://web.mit.edu/calculix_v2.7/CalculiX/cgx_2.7/doc/cgx/node174.html

Nodal Results Block Purpose: Stores values on node positions

1. Record: Format:(1X,’ 100’,’C’,6A1,E12.5,I12,20A1,I2,I5,10A1,I2) Values: KEY,CODE,SETNAME,VALUE,NUMNOD,TEXT,ICTYPE,NUMSTP,ANALYS,

FORMAT

Where: KEY = 100

CODE = C SETNAME= Name (not used) VALUE = Could be frequency, time or any numerical value NUMNOD = Number of nodes in this nodal results block TEXT = Any text ICTYPE = Analysis type

0 static 1 time step 2 frequency 3 load step 4 user named

NUMSTP = Step number ANALYS = Type of analysis (description) FORMAT = Format indicator

0 short format 1 long format 2 binary format

#————————————————————————– 2. Record: Format:(1X,I2,2X,8A1,2I5) Values: KEY, NAME, NCOMPS, IRTYPE Where: KEY = -4

NAME = Dataset name to be used in the menu NCOMPS = Number of entities IRTYPE = 1 Nodal data, material independent

2 Nodal data, material dependant 3 Element data at nodes (not used)

#————————————————————————– 3. Type of Record: Format:(1X,I2,2X,8A1,5I5,8A1) Values: KEY, NAME, MENU, ICTYPE, ICIND1, ICIND2, IEXIST, ICNAME Where: KEY = -5

NAME = Entity name to be used in the menu for this comp. MENU = 1 ICTYPE = Type of entity

1 scalar 2 vector with 3 components 4 matrix

12 vector with 3 amplitudes and 3 phase-angles in

degree

ICIND1 = sub-component index or row number ICIND2 = column number for ICTYPE=4 IEXIST = 0 data are provided

1 data are to be calculated by predefined

functions (not used)

2 as 0 but earmarked

ICNAME = Name of the predefined calculation (not used)

ALL calculate the total displacement if ICTYPE=2

This record must be repeated for each entity.

4. Type of Record: (not used) This record will be necessary in combination with the request for predefined calculations. This type of record is not allowed in combination with binary coding of data. Format:(1X,I2,2I5,20I3) Values: KEY,IRECTY,NUMCPS,(LSTCPS(I),I=1,NUMCPS) Where: KEY = -6

IRECTY = Record variant identification number NUMCPS = Number of components LSTCPS = For each variant component, the position of the

corresponding component in attribute definition

#————————————————————————–

5. Type of Record: The following records are data-records and the format is repeated for each node.

In case of material independent data

  • ascii coding:

Following records (ascci, FORMAT=0 | 1):

Short Format:(1X,I2,I5,6E12.5) Long Format:(1X,I2,I10,6E12.5) Values: KEY, NODE, XX.. Where: KEY = -1 if its the first line of data for a given node

-2 if its a continuation line

NODE = node number or blank if KEY=-2 XX.. = data

  • binary coding:

Following records (ascci, FORMAT=2): (int,NCOMPS*float) int and float are ansi-c data-types Values: NODE, XX.. Where:

NODE = node number or blank if KEY=-2 XX.. = data

In case of material dependant data REMARK: Implemented only for NMATS=1 - first line: Short Format:(1X,I2,4I5) Long Format:(1X,I2,I10,3I5) Values: KEY, NODENR, NMATS Where: KEY = -1

NODENR = Node number NMATS = Number of different materials at this node(unused)

  • second and following lines:

Short Format:(1X,I2,I5,6E12.5) Long Format:(1X,I2,I10,6E12.5) Values: KEY, MAT, XX, YY, ZZ, XY, YZ, ZX .. Where: KEY = -2

MAT = material-property-number if KEY=-2 (unused) XX.. = data

Last Record (only FORMAT=0 | 1 (ascii), omitted for FORMAT=2): Format:(1X,’-3’) Values: KEY Displacement Table —————— Flag, SubcaseID, iTime, NID, dx, dy, dz, rx, ry, rz, cd, PointType 1, 1, 0, 101, 0.014159, 0.03448, 0.019135, 0.00637, 0.008042, 0.00762, 0, 1 uses cd=-1 for unknown cd

write_op2(op2_file, fascii, itable, new_result, date, is_mag_phase=False, endian='>')[source]

writes an OP2

class pyNastran.op2.result_objects.table_object.TableArray(data_code, is_sort1, isubcase, dt)[source]

Bases: ScalarObject

Base class for:
  • RealTableArray

  • ComplexTableArray

assert_equal(table, rtol=1e-05, atol=1e-08)[source]
build()[source]

sizes the vectorized attributes of the TableArray

build_data(ntimes, nnodes, ntotal, float_fmt: str)[source]

actually performs the build step

build_dataframe()[source]

creates a pandas dataframe

works: 0.24.2 broken: 0.25.0

combine(result, is_sort1=True)[source]
data_type()[source]
finalize()[source]

Calls any OP2 objects that need to do any post matrix calcs

get_headers() list[str][source]
get_stats(short: bool = False) list[str][source]
property headers: list[str]
set_as_sort1()[source]

changes the table into SORT1

pyNastran.op2.result_objects.table_object.append_sort1_sort2(data1, data2, to_sort1=True)[source]

data1 : (ntimes, nnids, 6) data2 : (nnids, ntimes, 6)

pyNastran.op2.result_objects.table_object.index_str_to_axis(index_str: str) int[source]
pyNastran.op2.result_objects.table_object.oug_data_code(table_name, is_real: bool = False, is_complex: bool = False, is_sort1=True, is_random=False, random_code=0, title='', subtitle='', label='', is_msc=True)[source]
pyNastran.op2.result_objects.table_object.pandas_extract_rows(data_frame, ugridtype_str, index_names)[source]

removes the t2-t6 for S and E points

pyNastran.op2.result_objects.table_object.set_complex_table(cls, data_code, is_sort1, isubcase, node_gridtype, data, times)[source]
pyNastran.op2.result_objects.table_object.set_real_table(cls, data_code, is_sort1, isubcase, node_gridtype, data, times)[source]