Source code for pyNastran.op2.result_objects.monpnt

[docs] class MONPNT1: """MONPNT1 table""" def __init__(self, frequencies, matrices, comp_matrices): self.frequencies = frequencies # [inertial, external, flexible_increment, gust, total_aero, total] self.comp_matrices = comp_matrices self.cx_matrix = matrices[comp_matrices[0]] self.cy_matrix = matrices[comp_matrices[1]] self.cz_matrix = matrices[comp_matrices[2]] self.rx_matrix = matrices[comp_matrices[3]] self.ry_matrix = matrices[comp_matrices[4]] self.rz_matrix = matrices[comp_matrices[5]]
[docs] def write(self, f06_file, page_stamp: str='', page_num: int=1): comps = ['CX', 'CY', 'CZ', 'CMX', 'CMY', 'CMZ'] dok1 = self.cx_matrix.data.todok() dok2 = self.cy_matrix.data.todok() dok3 = self.cz_matrix.data.todok() dok4 = self.rx_matrix.data.todok() dok5 = self.ry_matrix.data.todok() dok6 = self.rz_matrix.data.todok() for icomp, comp in enumerate(comps): lines = [ ' S T R U C T U R A L M O N I T O R P O I N T I N T E G R A T E D L O A D S (MONPNT1)\n' ' (REAL/IMAGINARY)\n' '\n' ' MONITOR POINT NAME = AEROSG2D COMPONENT = %3s GENERAL SUBCASE NO. 1\n' % comp, ' LABEL = Full Vehicle Integrated Loads \n' ' CP = 2 X = 0.000000E+00 Y = 0.000000E+00 Z = 0.000000E+00 CD = 2\n' '\n' ' FREQUENCY INERTIAL EXTERNAL FLEXIBLE GUST TOTAL TOTAL \n' ' INCREMENT AERO \n' ' ------------ ------------ ------------ ------------ ------------ ------------ ------------\n' #' 0.000000E+00 0.000000E+00 -1.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 -1.000000E+00\n' #' 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00 0.000000E+00\n' ] f06_file.write(''.join(lines)) for ifreq, freq in enumerate(self.frequencies): #if icomp == 4: v1 = dok1[(icomp, ifreq)] v2 = dok2[(icomp, ifreq)] v3 = dok3[(icomp, ifreq)] v4 = dok4[(icomp, ifreq)] v5 = 0. v6 = 0. #v5 = dok5[(icomp, ifreq)] #v6 = dok6[(icomp, ifreq)] #v4 = v3 #v6 = v1 + v2 + v3 + v4 # wrong #v6 = v2 #v2 = v6 #v4 = v3 f06_file.write(' %13E %13E %13E %13E %13E %13E %13E\n' % ( freq, v1.real, v2.real, v3.real, v4.real, v5.real, v6.real)) f06_file.write(' %13E %13E %13E %13E %13E %13E\n' % ( v1.imag, v2.imag, v3.imag, v4.imag, v5.imag, v6.imag)) page_num += 1 f06_file.write(page_stamp % page_num) page_num -= 1 return page_num
[docs] class MONPNT3: """MONPNT3 table""" def __init__(self, frequencies, matrix): self.name = matrix.name self.frequencies = frequencies self.data = matrix.data
[docs] def write(self, f06_file, page_stamp: str='', page_num: int=1): comps = ['CX', 'CY', 'CZ', 'CMX', 'CMY', 'CMZ'] matrix = self.data dok = matrix.todok() assert self.frequencies is not None, self.frequencies for icomp, comp in enumerate(comps): lines = [ ' S T R U C T U R A L I N T E G R A T E D F R E E B O D Y M O N I T O R P O I N T L O A D S (MONPNT3)\n' ' (REAL/IMAGINARY)\n' '\n' ' MONITOR POINT NAME = M3_B COMPONENT = %3s SUBCASE NO. 1\n' % comp, ' LABEL = NODE 2 AND ELEMENT 102 \n' ' CP = 0 X = 1.000000E+00 Y = 0.000000E+00 Z = 0.000000E+00 CD = 0\n' '\n' ' FREQUENCY RESULTANT \n' ' \n' ' ------------ ------------\n' ] f06_file.write(''.join(lines)) for ifreq, freq in enumerate(self.frequencies): #print('icomp=%r ifreq=%r' % (icomp, ifreq)) val = dok[(icomp, ifreq)] f06_file.write(' %13E %13E\n %13E\n' % ( freq, val.real, val.imag)) page_num += 1 f06_file.write(page_stamp % page_num) page_num -= 1 return page_num
def __repr__(self): msg = 'MONPNT3; nfreqs=%s\n' % len(self.frequencies) return msg