Source code for pyNastran.op2.writer.ougWriter

from struct import pack


[docs]class Ougv1Writer(object):
[docs] def writeOUGV1(self): msg = '' self.deviceCode = 1 # print the OP2... self.writeStringBlock('OUGV1', 8) msg += self.writeMarkers([-1, 7]) out = [101, 0, 4136, 0, 0, 0, 1] ## @todo what this is - DMAP -> "no def or month,year,one,one"...huh??? msg += pack('iiiiiii', *out) msg += self.writeMarkers([-2, 1, 0]) # approachCode=1, tableCode=1 self.iTable = -3 data = self.displacements for iSubcase in data: msg += self.writeMarkers([self.iTable, 1, 0]) msg += self.writeOUG_displacements(iSubcase, data) self.iTable -= 1 data = self.temperatures for iSubcase in data: msg += self.writeMarkers([self.iTable, 1, 0]) msg += self.writeOUG_displacements(iSubcase, data, thermal=1) self.iTable -= 1 # approachCode=3, tableCode=1 #for iSubcase in self.fluxes: # msg += writeMarkers([iTable,1,0]) # msg += self.writeOUG_temperatures(iSubcase,iTable) # iTable-=1 # approachCode=6, tableCode=1 #data = self.nonlinearDisplacements #for iSubcase in self.nonlinearDisplacements: # msg += writeMarkers([iTable,1,0]) # msg += self.writeOUG_temperatures(iSubcase,iTable) # iTable-=1 #data = self.nonlinearTemperatures #for iSubcase in self.nonlinearTemperatures: # msg += writeMarkers([iTable,1,0]) # msg += self.writeOUG_temperatures(iSubcase,iTable) # iTable-=1 msg += self.writeMarkers([self.iTable - 1, 1, 0])
#self.displacements = {} #self.temperatures = {}
[docs] def writeOUG_displacements(self, iSubcase, data, thermal=0): """ this function writes table 3 for the OUGV1 Table @todo add the buffer and block caps """ msg = '' disp = data[iSubcase] self.writeMarkers([146, 584]) lsdvmn = iSubcase ## @todo is this correct??? if disp.dt is None: approachCode = 1 # statics five = lsdvmn FiveSixSeven = [lsdvmn, 0, 0] # fields five,six,seven else: approachCode = 6 # transient FiveSixSeven = [disp.dt, 0, 0] # fields five,six,seven ### tableCode = 1 # statics sortCode = 0 randomCode = 0 # 8 @todo no idea... formatCode = 1 # 9 - Real numbers numWide = 7 # 10 #thermal = 0 # 23 (aCode, tCode) = self.aCode_tCode(approachCode, tableCode, sortCode) #12345 zero = pack('i', 0) msg += pack('iiii', aCode, tCode, 0, iSubcase) # 1,2,3,4 msg += pack('iii', *FiveSixSeven) # 5,6,7 msg += pack('iii', randomCode, formatCode, numWide) # 8,9,10 #22-11 = 11 msg += zero * 11 msg += pack('i', thermal) #51-23 = 28 msg += zero * 28 msg += self.packTitle(iSubcase) msg += data[iSubcase].writeOp2('', self.deviceCode) #msg += pack('i',4) # data length... return msg