pyNastran  0.5.0
pyNastran BDF Reader/Writer, OP2 Parser, and GUI
oes.py
Go to the documentation of this file.
00001 ## GNU Lesser General Public License
00002 ## 
00003 ## Program pyNastran - a python interface to NASTRAN files
00004 ## Copyright (C) 2011-2012  Steven Doyle, Al Danial
00005 ## 
00006 ## Authors and copyright holders of pyNastran
00007 ## Steven Doyle <mesheb82@gmail.com>
00008 ## Al Danial    <al.danial@gmail.com>
00009 ## 
00010 ## This file is part of pyNastran.
00011 ## 
00012 ## pyNastran is free software: you can redistribute it and/or modify
00013 ## it under the terms of the GNU Lesser General Public License as published by
00014 ## the Free Software Foundation, either version 3 of the License, or
00015 ## (at your option) any later version.
00016 ## 
00017 ## pyNastran is distributed in the hope that it will be useful,
00018 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
00019 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00020 ## GNU General Public License for more details.
00021 ## 
00022 ## You should have received a copy of the GNU Lesser General Public License
00023 ## along with pyNastran.  If not, see <http://www.gnu.org/licenses/>.
00024 ## 
00025 #pylint: disable=C0301,C0111,C0324,R0912,R0915,W0223,E1101
00026 
00027 from __future__ import division, print_function
00028 #import sys
00029 from struct import unpack
00030 
00031 from .real.elementsStressStrain import RealElementsStressStrain
00032 from .real.oes_rods    import RodStressObject,   RodStrainObject
00033 from .real.oes_shear   import ShearStressObject, ShearStrainObject
00034 from .real.oes_bars    import BarStressObject,   BarStrainObject
00035 from .real.oes_beams   import BeamStressObject,  BeamStrainObject
00036 from .real.oes_solids  import SolidStressObject, SolidStrainObject
00037 from .real.oes_plates  import PlateStressObject, PlateStrainObject
00038 from .real.oes_springs import CelasStressObject, CelasStrainObject
00039 from .real.oes_triax   import TriaxStressObject, TriaxStrainObject
00040 from .real.oes_compositePlates import CompositePlateStressObject, CompositePlateStrainObject
00041 
00042 
00043 from .complex.elementsStressStrain import ComplexElementsStressStrain
00044 from .complex.oes_rods    import ComplexRodStressObject,   ComplexRodStrainObject
00045 from .complex.oes_springs import ComplexCelasStressObject, ComplexCelasStrainObject
00046 from .complex.oes_bars    import ComplexBarStressObject,   ComplexBarStrainObject
00047 from .complex.oes_plates  import ComplexPlateStressObject, ComplexPlateStrainObject
00048 
00049 
00050 from .oes_nonlinear import NonlinearRodObject,NonlinearQuadObject,HyperelasticQuadObject
00051 
00052 class OES(RealElementsStressStrain,ComplexElementsStressStrain):
00053     """Table of stresses/strains"""
00054 
00055     def readTable_OES(self):
00056         table3 = self.readTable_OES_3
00057         table4Data = self.readTable_OES_4_Data
00058         self.readResultsTable(table3,table4Data,flag=1) # flag=1 defines old style
00059         self.deleteAttributes_OES()
00060 
00061     def deleteAttributes_OES(self):
00062         params = ['sCode','elementType','obj','markerStart','loadSet','formatCode','sCode','thermal',
00063                   'lsdvmn','mode','eign','modeCycle','freq','mode','eigr','eigi','dt']
00064         self.deleteAttributes(params)
00065 
00066     def readTable_OES_3(self, iTable):
00067         #print "*iTable3 = ", iTable
00068         #if 0:
00069             #markers = self.readMarkers([0,2])
00070             #print "markers=%s" % (markers)
00071             #block = self.readBlock()
00072             #print "block = ",block
00073             #markers = self.readMarkers([-1,7])
00074             #print "markers=%s" % (markers)
00075             #print self.printSection(200)
00076         
00077         bufferWords = self.getBufferWords()
00078         
00079         data = self.getData(4)
00080         bufferSize, = unpack(b'i',data)
00081         if self.makeOp2Debug:
00082             self.op2Debug.write('bufferSize=|%s|\n' % (str(bufferSize)))
00083 
00084         data = self.getData(4*50)
00085         #self.printBlock(data)
00086         if self.makeOp2Debug:
00087             self.op2Debug.write('block3header\n')
00088         
00089         self.parseApproachCode(data) # 3
00090         self.addDataParameter(data,'elementType', 'i', 3, False)   ## element type
00091         self.addDataParameter(data,'loadSet',     'i', 8, False)   ## load set ID
00092         self.addDataParameter(data,'formatCode',  'i', 9, False)   ## format code
00093         self.addDataParameter(data,'numWide',     'i', 10, False)  ## number of words per entry in record; @note is this needed for this table ???
00094         self.addDataParameter(data,'sCode',       'i', 11, False)  ## stress/strain codes
00095         self.addDataParameter(data,'thermal',     'i', 23, False)  ## thermal flag; 1 for heat ransfer, 0 otherwise
00096 
00097         #print "loadset=%s formatCode=%s numWordsEntry=%s sCode=%s" % (self.loadSet,self.formatCode,self.numWide,self.sCode)
00098         #print "thermal(23)=%s elementType(3)=%s" % (self.thermal,self.elementType)
00099 
00100 
00101         ## assuming tCode=1
00102         if self.analysisCode == 1:   # statics / displacement / heat flux
00103             self.addDataParameter(data,'lsdvmn','i',5,False)   ## load set number
00104             self.applyDataCodeValue('dataNames',['lsdvmn'])
00105             self.setNullNonlinearFactor()
00106         elif self.analysisCode == 2: # real eigenvalues
00107             self.addDataParameter(data,'mode',     'i',5)         ## mode number
00108             self.addDataParameter(data,'eign',     'f',6,False)   ## real eigenvalue
00109             self.addDataParameter(data,'modeCycle','f',7,False)   ## mode or cycle @todo confused on the type - F1???
00110             self.applyDataCodeValue('dataNames',['mode','eigr','modeCycle'])
00111         #elif self.analysisCode==3: # differential stiffness
00112             #self.lsdvmn = self.getValues(data,'i',5) ## load set number
00113             #self.dataCode['lsdvmn'] = self.lsdvmn
00114         #elif self.analysisCode==4: # differential stiffness
00115         #    self.lsdvmn = self.getValues(data,'i',5) ## load set number
00116         elif self.analysisCode == 5:   # frequency
00117             self.addDataParameter(data,'freq','f',5)   ## frequency
00118             self.applyDataCodeValue('dataNames',['freq'])
00119         elif self.analysisCode == 6: # transient
00120             self.addDataParameter(data,'dt','f',5)   ## time step
00121             self.applyDataCodeValue('dataNames',['dt'])
00122         elif self.analysisCode == 7: # pre-buckling
00123             self.addDataParameter(data,'lsdvmn','i',5)   ## load set
00124             self.applyDataCodeValue('dataNames',['lsdvmn'])
00125         elif self.analysisCode == 8: # post-buckling
00126             self.addDataParameter(data,'lsdvmn','i',5)       ## mode number
00127             self.addDataParameter(data,'eigr','f',6,False)   ## real eigenvalue
00128             self.applyDataCodeValue('dataNames',['lsdvmn','eigr'])
00129         elif self.analysisCode == 9: # complex eigenvalues
00130             self.addDataParameter(data,'mode','i',5)   ## mode number
00131             self.addDataParameter(data,'eigr','f',6,False)   ## real eigenvalue
00132             self.addDataParameter(data,'eigi','f',7,False)   ## imaginary eigenvalue
00133             self.applyDataCodeValue('dataNames',['mode','eigr','eigi'])
00134         elif self.analysisCode == 10: # nonlinear statics
00135             self.addDataParameter(data,'lftsfq','f',5)   ## load step
00136             self.applyDataCodeValue('dataNames',['lftsfq'])
00137         elif self.analysisCode == 11: # old geometric nonlinear statics
00138             self.addDataParameter(data,'lsdvmn','i',5)   ## load set number
00139             self.applyDataCodeValue('dataNames',['lsdvmn'])
00140         elif self.analysisCode == 12: # contran ? (may appear as aCode=6)  --> straight from DMAP...grrr...
00141             self.addDataParameter(data,'dt','f',5)   ## Time step ??? --> straight from DMAP
00142             self.applyDataCodeValue('dataNames',['dt'])
00143         else:
00144             raise RuntimeError('invalid analysisCode...analysisCode=%s' % (self.analysisCode))
00145         # tCode=2
00146         #if self.analysisCode==2: # sort2
00147         #    self.lsdvmn = self.getValues(data,'i',5)
00148 
00149         if not self.isSort1():
00150             raise NotImplementedError('sort2...')
00151 
00152         self.readTitle()
00153         #print "n4 = ",self.n
00154 
00155     def parseStressCode(self):
00156         """
00157         sCode =  0 -> stressBits = [0,0,0,0,0]
00158         sCode =  1 -> stressBits = [0,0,0,0,1]
00159         sCode =  2 -> stressBits = [0,0,0,1,0]
00160         sCode =  3 -> stressBits = [0,0,0,1,1]
00161         etc.
00162         sCode = 32 -> stressBits = [1,1,1,1,1]
00163 
00164         stressBits[0] = 0 -> isMaxShear=True       isVonMises=False
00165         stressBits[0] = 1 -> isMaxShear=False      isVonMises=True
00166 
00167         stressBits[1] = 0 -> isStress=True         isStrain=False
00168         stressBits[2] = 0 -> isFiberCurvature=True isFiberDistance=False
00169         stressBits[3] = 0 -> duplicate of Bit[1] (stress/strain)
00170         stressBits[4] = 0 -> material coordinate system flag
00171         """
00172         bits = [0,0,0,0,0]
00173         
00174         sCode = self.sCode
00175         i=4
00176         while sCode>0:
00177             value = sCode%2
00178             sCode = (sCode - value)//2
00179             bits[i] = value
00180             #print "    *bit = ",value
00181             #print "    sCode = ",sCode
00182             i-=1
00183         #bits.reverse()
00184         #print "stressBits = ",bits
00185         self.stressBits = bits
00186         self.dataCode['stressBits'] = self.stressBits
00187 
00188     def readTable_OES_4_Data(self, iTable):
00189         isTable4Done = False
00190         isBlockDone  = False
00191         #print self.printSection(100)
00192 
00193         data = self.getData(16)
00194         #print self.printBlock(data) # on
00195         #print "16 block..."
00196         #self.printBlock(data)
00197         bufferWords, = unpack(b'i',data[4:8])
00198         #print "bufferWords = ",bufferWords
00199         if self.makeOp2Debug:
00200             self.op2Debug.write('bufferWords=|%s|\n' % (str(bufferWords)))
00201 
00202         #print "*********************"
00203         #bufferWords = self.getMarker() # 87 - buffer
00204         #print "OES4 bufferWords = ",bufferWords,bufferWords*4
00205         #self.verifyBufferSize(bufferWords)
00206         
00207         isBlockDone = not(bufferWords)
00208         #print "self.firstPass = ",self.firstPass
00209         
00210         ## table -4 is done, restarting table -3
00211         if self.isBufferDone: # table is done when the buffer is done
00212             isTable4Done = True
00213             #print "exitA"
00214             return (isTable4Done, isBlockDone)
00215         if bufferWords == 0:
00216             #print "bufferWords 0 - done with Table4"
00217             isTable4Done = True
00218             #isBlockDone  = True
00219             self.printSection(40)
00220             #print "exitB"
00221             return (isTable4Done, isBlockDone)
00222 
00223         self.readElementTable()
00224         return isTable4Done,isBlockDone
00225 
00226     def readElementTable(self):
00227         #print "**self.readElementTable"
00228         #print "*elementType = ",self.elementType
00229         #print "op2.tell=%s n=%s" % (self.op2.tell(),self.n)
00230         
00231         self.rewind(4)
00232         self.data = self.readBlock()  # 348
00233         #print "len(self.data) = ",len(self.data)
00234 
00235         if self.makeOp2Debug:
00236             self.op2Debug.write('reading big data block\n')
00237         #print self.printBlock(self.data)
00238 
00239         #msg = 'elementType=%s -> %s' % (self.elementType,self.ElementType(self.elementType))
00240         self.parseStressCode()
00241 
00242         if not self.isValidSubcase(): # lets the user skip a certain subcase
00243             self.log.debug("***skipping table=%s iSubcase=%s" % (self.tableName,self.iSubcase))
00244             print("***skipping table=%s iSubcase=%s" % (self.tableName,self.iSubcase))
00245             self.skipOES_Element()
00246         elif self.thermal == 0:
00247             # Stress / Strain
00248             self.dataCode['elementName'] = self.ElementType(self.elementType)
00249             if self.tableCode == 5 and self.isSort1():
00250                 assert self.tableName in ['OES1', 'OES1X', 'OES1X1', 'OES1C', 'OESNLXR','OESNLXD','OESNL1X','OESCP','OESTRCP',
00251                                           'OSTR1X','OSTR1C'],'%s is not supported' % (self.tableName)
00252                 self.readOES_Data()
00253             else:
00254                 self.NotImplementedOrSkip('invalid atfsCode=%s' % (self.atfsCode))
00255         elif self.thermal == 1:
00256             self.OES_Thermal()
00257         else:
00258             raise RuntimeError('invalid thermal option...')
00259         
00260         #print self.obj
00261 
00262     def OES_StressStrainCode(self):
00263         """
00264         Gets the numwide codes for the element to determine if
00265         the real / complex / random result should be found.
00266         The format and sort codes do not always give the right answer...
00267         """
00268         realMapper = {
00269                        0:   17,         # GRID - OES1G
00270                        1:   5,          # CROD
00271                        2:   1+(11-1)*11, # CBEAM
00272                        3:   5,          # CTUBE
00273                        4:   4,          # CSHEAR
00274                        10:  5,          # CONROD
00275                        11:  2,          # CELAS1
00276                        12:  2,          # CELAS2
00277                        13:  2,          # CELAS3
00278                       #14:  2,          # CELAS4
00279                        24:  None,       # CVISC
00280                        33:  17,         # CQUAD4
00281                        34:  16,         # CBAR
00282                        35:  18,         # CCONEAX
00283                        38:  None,       # CGAP
00284                        39:  4+(25-4)*5, # CTETRA
00285                        40:  8,          # CBUSH1D
00286                        47:  5,          # CAXIF2
00287                        48:  10,         # CAXIF3
00288                        50:  6,          # CSLOT3
00289                        51:  7,          # CSLOT4
00290                        53:  1+(9-1)*4,  # CTRIAX6
00291                        60:  10,         # CRAC2D, CDUM8
00292                        61:  10,         # CRAC3D, CDUM9
00293                        64:  2+(19-2)*5, # CQUAD8
00294                        67:  4+(25-4)*9, # CHEXA
00295                        68:  4+(25-4)*7, # CPENTA
00296                        69:  1+(11-1)*2, # CBEND
00297                        70:  2+(19-2)*4, # CTRIAR
00298                        74:  17,         # CTRIA3
00299                        75:  2+(19-2)*4, # CTRIA6
00300                        82:  2+(19-2)*5, # CQUADR
00301                        85:  2+(18-2)*5, # Nonlinear CTETRA
00302                        86:  11,         # Nonlinear CGAP
00303                        87:  7,          # Nonlinear CTUBE
00304                        88:  13,         # Nonlinear CTRIA
00305                        89:  7,          # Nonlinear CROD
00306                        90:  13,         # Nonlinear QUAD
00307                        91:  4+(25-4)*7, # Nonlinear CPENTA
00308                        92:  7,          # Nonlinear CONROD
00309                        93:  4+(25-4)*9, # Nonlinear CHEXA
00310                        94:  51,         # Nonlinear CBEAM
00311                        95:  11,         # Composite QUAD4
00312                        96:  11,         # Composite QUAD8
00313                        97:  11,         # Composite CTRIA3
00314                        98:  11,         # Composite CTRIA6
00315                        145: 98,         # VUHEXA
00316                        146: 74,         # VUPENTA
00317                        100: 10,         # CBAR 100
00318                        101: 3,          # CAABSF
00319                        102: 7,          # CBUSH
00320                        139: 2+(9-2)*4,  # hyperelastic QUAD4FD
00321                        140: 2+(22-2)*8, # hyperelastic HEXAFD
00322                        144: 2+(19-2)*5, # bilinear CQUAD4
00323                        147: 50,         # VUTETRA
00324                        160: 2+(22-2)*6, # linear hyperelastic PENTAFD - 6 nodes
00325                        161: 2+(22-2)*1, # linear hyperelastic TETRAFD - 4 nodes
00326                        162: 2+(9-2)*1,  # linear hyperelastic TRIAFD
00327                        163: 2+(22-2)*27,# linear hyperelastic HEXAFD - 20 nodes
00328                        164: 2+(9-2)*9,  # linear hyperelastic QUADFD
00329                        165: 2+(22-2)*21,# linear hyperelastic PENTAFD - 15 nodes
00330                        166: 2+(22-2)*5, # linear hyperelastic TETRAFD - 10 nodes
00331                        167: 2+(9-2)*3,  # linear hyperelastic TRIA6FD
00332                        168: 2+(9-2)*1,  # linear hyperelastic TRIAXFD
00333                        169: 2+(9-2)*3,  # linear hyperelastic TRIAX6FD
00334                        170: 2+(9-2)*4,  # linear hyperelastic QUADXFD
00335                        171: 2+(9-2)*9,  # linear hyperelastic QUAD9XFD
00336                        172: 13,         # Nonlinear CQUADR
00337                        173: 13,         # Nonlinear CTRIAR
00338                        189: 6+(23-6)*4, # VUQUAD
00339                        190: 6+(23-6)*3, # VUTRIA
00340                        191: 6+((12-6)*2+4)*2, # VUBEAM
00341                        200: 8,          # WELD
00342                        201: 2+(13-2)*4, # nonlinear hyperelastic QUAD
00343                        202: 2+(17-2)*8, # nonlinear hyperelastic HEXA8FD
00344                        204: 2+(17-2)*8, # hyperelastic HEXAFD - 20 nodes
00345                        205: 2+(17-2)*5, # hyperelastic PENTAFD - 4 nodes
00346                        211: 2+(13-2)*3, # hyperelastic TRIAFD
00347                        212: 2+(13-2)*1, # hyperelastic TRIAX3FD
00348                        213: 2+(13-2)*3, # hyperelastic TRIAXFD
00349                        214: 2+(13-2)*4, # hyperelastic QUAD4XFD
00350                        215: 2+(13-2)*9, # hyperelastic QUADXFD
00351                        216: 2+(17-2)*4, # hyperelastic TETRAFD -  4 nodes
00352                        217: 2+(13-2)*3, # hyperelastic TRIA3FD -  3 nodes
00353                        218: 2+(17-2)*8, # hyperelastic HEXAFD  - 20 nodes
00354                        219: 2+(13-2)*4, # hyperelastic QUAD4FD -  4 nodes
00355                        220: 2+(17-2)*8, # hyperelastic PENTAFD - 15 nodes
00356                        221: 2+(17-2)*4, # hyperelastic TETRAFD -  4 nodes
00357                        222: 2+(13-2)*3, # hyperelastic TRIAXFD -  3 nodes
00358                        223: 2+(13-2)*4, # hyperelastic QUADXFD -  4 nodes
00359                        224: 3,          # nonlinear CELAS1
00360                        225: 3,          # nonlinear CELAS3
00361                        226: 19,         # nonlinear CBUSH
00362                        232: 11,         # composite CQUADR (same as CQUAD4)
00363                        233: 11,         # composite CTRIAR (same as CQUAD4)
00364                        235: 16,         # punch plate CQUADR
00365                        236: 16,         # punch plate CTRIAR
00366                  }
00367 
00368         imagMapper = {
00369                        0:   None,       # GRID - OES1G
00370                        1:   5,          # CROD
00371                        2:   1+(11-1)*11, # CBEAM
00372                        3:   5,          # CTUBE
00373                        4:   5,          # CSHEAR
00374                        10:  5,          # CONROD
00375                        11:  3,          # CELAS1
00376                        12:  3,          # CELAS2
00377                        13:  3,          # CELAS3
00378                        14:  3,          # CELAS4
00379                        24:  5,          # CVISC
00380                        33:  15,         # CQUAD4
00381                        34:  19,         # CBAR
00382                        35:  None,       # CCONEAX
00383                        38:  None,       # CGAP
00384                        39:  4+(17-4)*5, # CTETRA
00385                        40:  9,          # CBUSH1D
00386                        47:  9,          # CAXIF2
00387                        48:  19,         # CAXIF3
00388                        50:  11,         # CSLOT3
00389                        51:  13,         # CSLOT4
00390                        53:  1+(10-1)*4, # CTRIAX6
00391                        60:  None,       # CRAC2D, CDUM8
00392                        61:  None,       # CRAC3D, CDUM9
00393                        64:  2+(17-2)*5, # CQUAD8
00394                        67:  4+(17-4)*9, # CHEXA
00395                        68:  4+(17-4)*7, # CPENTA
00396                        69:  1+(11-1)*2, # CBEND
00397                        70:  2+(17-2)*4, # CTRIAR
00398                        74:  15,         # CTRIA3
00399                        75:  2+(17-2)*4, # CTRIA6
00400                        82:  2+(17-2)*5, # CQUADR
00401                        85:  None,       # Nonlinear CTETRA
00402                        86:  None,       # Nonlinear CGAP
00403                        87:  None,       # Nonlinear CTUBE
00404                        88:  25,         # Nonlinear CTRIA
00405                        89:  None,       # Nonlinear CROD
00406                        90:  25,         # Nonlinear QUAD
00407                        91:  None,       # Nonlinear CPENTA
00408                        92:  None,       # Nonlinear CONROD
00409                        93:  None,       # Nonlinear CHEXA
00410                        94:  None,       # Nonlinear CBEAM
00411                        95:  None,       # Composite QUAD4
00412                        96:  None,       # Composite QUAD8
00413                        97:  None,       # Composite CTRIA3
00414                        98:  None,       # Composite CTRIA6
00415                        100: 16,         # CBAR 100
00416                        101: 4,          # CAABSF
00417                        102: 13,         # CBUSH
00418                        139: None,       # hyperelastic QUADFD
00419                        140: None,       # hyperelastic HEXAFD
00420                        144: 2+(17-2)*5, # bilinear CQUAD4
00421                        145: 58,         # VUHEXA
00422                        146: 44,         # VUPENTA
00423                        147: 30,         # VUTETRA
00424                        160: None,       # linear hyperelastic PENTAFD - 6 nodes
00425                        161: None,       # linear hyperelastic TETRAFD - 4 nodes
00426                        162: None,       # linear hyperelastic TRIAFD
00427                        163: None,       # linear hyperelastic HEXAFD - 20 nodes
00428                        164: None,       # linear hyperelastic QUADFD
00429                        165: None,       # linear hyperelastic PENTAFD - 15 nodes
00430                        166: None,       # linear hyperelastic TETRAFD - 10 nodes
00431                        167: None,       # linear hyperelastic TRIA6FD
00432                        168: None,       # linear hyperelastic TRIAXFD
00433                        169: None,       # linear hyperelastic TRIAX6FD
00434                        170: None,       # linear hyperelastic QUADXFD
00435                        171: None,       # linear hyperelastic QUAD9XFD
00436                        172: 25,         # Nonlinear CQUADR
00437                        173: 25,         # Nonlinear CTRIAR
00438                        189: 6+(33-6)*4, # VUQUAD
00439                        190: 6+(33-6)*3, # VUTRIA
00440                        191: 6+((15-6)*2+4)*2, # VUBEAM
00441                        200: None,       # WELD
00442                        201: None,       # nonlinear hyperelastic QUAD
00443                        202: None,       # nonlinear hyperelastic HEXA8FD
00444                        204: None,       # hyperelastic HEXAFD - 20 nodes
00445                        205: None,       # hyperelastic PENTAFD - 4 nodes
00446                        211: None,       # hyperelastic TRIAFD
00447                        212: None,       # hyperelastic TRIAX3FD
00448                        213: None,       # hyperelastic TRIAXFD
00449                        214: None,       # hyperelastic QUAD4XFD
00450                        215: None,       # hyperelastic QUADXFD
00451                        216: None,       # hyperelastic TETRAFD -  4 nodes
00452                        217: None,       # hyperelastic TRIA3FD -  3 nodes
00453                        218: None,       # hyperelastic HEXAFD  - 20 nodes
00454                        219: None,       # hyperelastic QUAD4FD -  4 nodes
00455                        220: None,       # hyperelastic PENTAFD - 15 nodes
00456                        221: None,       # hyperelastic TETRAFD -  4 nodes
00457                        222: None,       # hyperelastic TRIAXFD -  3 nodes
00458                        223: None,       # hyperelastic QUADXFD -  4 nodes
00459                        224: None,       # nonlinear CELAS1
00460                        225: None,       # nonlinear CELAS3
00461                        226: None,       # nonlinear CBUSH
00462                        232: None,       # composite CQUADR (same as CQUAD4)
00463                        233: None,       # composite CTRIAR (same as CQUAD4)
00464                        235: 14,         # punch plate CQUADR
00465                        236: 14,         # punch plate CTRIAR
00466                  }
00467 
00468         randomMapper = {
00469                        0:   None,       # GRID - OES1G
00470                        1:   3,          # CROD
00471                        2:   1+(7-1)*11, # CBEAM
00472                        3:   3,          # CTUBE
00473                        4:   3,          # CSHEAR
00474                        10:  3,          # CONROD
00475                        11:  2,          # CELAS1
00476                        12:  2,          # CELAS2
00477                        13:  2,          # CELAS3
00478                       #14:  2,          # CELAS4
00479                        24:  3,          # CVISC   ## @todo:  ?????
00480                        33:  9,          # CQUAD4
00481                        34:  None,       # CBAR   ## @todo: 19 stress; 10 for strain???
00482                        35:  None,       # CCONEAX
00483                        38:  None,       # CGAP
00484                        39:  4+(11-4)*5, # CTETRA
00485                        40:  2+(19-2)*5, # CBUSH1D
00486                        47:  5,          # CAXIF2
00487                        48:  10,         # CAXIF3
00488                        50:  6,          # CSLOT3
00489                        51:  7,          # CSLOT4
00490                        53:  1+(9-1)*4,  # CTRIAX6
00491                        60:  None,       # CRAC2D, CDUM8
00492                        61:  None,       # CRAC3D, CDUM9
00493                        64:  2+(11-2)*5, # CQUAD8
00494                        67:  4+(11-4)*9, # CHEXA
00495                        68:  4+(11-4)*7, # CPENTA
00496                        69:  1+(7-1)*2,  # CBEND
00497                        70:  2+(11-2)*4, # CTRIAR
00498                        74:  9,          # CTRIA3
00499                        75:  2+(11-2)*4, # CTRIA6
00500                        82:  2+(11-2)*5, # CQUADR
00501                        85:  None,       # Nonlinear CTETRA
00502                        86:  None,       # Nonlinear CGAP
00503                        87:  None,       # Nonlinear CTUBE
00504                        88:  None,       # Nonlinear CTRIA
00505                        89:  None,       # Nonlinear CROD
00506                        90:  None,       # Nonlinear QUAD
00507                        91:  None,       # Nonlinear CPENTA
00508                        92:  None,       # Nonlinear CONROD
00509                        93:  None,       # Nonlinear CHEXA
00510                        94:  None,       # Nonlinear CBEAM
00511                        95:  None,       # Composite QUAD4
00512                        96:  None,       # Composite QUAD8
00513                        97:  None,       # Composite CTRIA3
00514                        98:  None,       # Composite CTRIA6
00515                        100: 9,          # CBAR 100
00516                        101: 3,          # CAABSF
00517                        102: 7,          # CBUSH
00518                        139: None,       # hyperelastic QUADFD
00519                        140: None,       # hyperelastic HEXAFD
00520                        144: 2+(11-2)*5, # bilinear CQUAD4
00521                        145: 106,        # VUHEXA
00522                        146: 80,         # VUPENTA
00523                        147: 54,         # VUTETRA
00524                        160: None,       # linear hyperelastic PENTAFD - 6 nodes
00525                        161: None,       # linear hyperelastic TETRAFD - 4 nodes
00526                        162: None,       # linear hyperelastic TRIAFD
00527                        163: None,       # linear hyperelastic HEXAFD - 20 nodes
00528                        164: None,       # linear hyperelastic QUADFD
00529                        165: None,       # linear hyperelastic PENTAFD - 15 nodes
00530                        166: None,       # linear hyperelastic TETRAFD - 10 nodes
00531                        167: None,       # linear hyperelastic TRIA6FD
00532                        168: None,       # linear hyperelastic TRIAXFD
00533                        169: None,       # linear hyperelastic TRIAX6FD
00534                        170: None,       # linear hyperelastic QUADXFD
00535                        171: None,       # linear hyperelastic QUAD9XFD
00536                        172: None,       # Nonlinear CQUADR
00537                        173: None,       # Nonlinear CTRIAR
00538                        189: None,       # VUQUAD
00539                        190: None,       # VUTRIA
00540                        191: None,       # VUBEAM
00541                        200: None,       # WELD
00542                        201: None,       # nonlinear hyperelastic QUAD
00543                        202: None,       # nonlinear hyperelastic HEXA8FD
00544                        204: None,       # hyperelastic HEXAFD - 20 nodes
00545                        205: None,       # hyperelastic PENTAFD - 4 nodes
00546                        211: None,       # hyperelastic TRIAFD
00547                        212: None,       # hyperelastic TRIAX3FD
00548                        213: None,       # hyperelastic TRIAXFD
00549                        214: None,       # hyperelastic QUAD4XFD
00550                        215: None,       # hyperelastic QUADXFD
00551                        216: None,       # hyperelastic TETRAFD -  4 nodes
00552                        217: None,       # hyperelastic TRIA3FD -  3 nodes
00553                        218: None,       # hyperelastic HEXAFD  - 20 nodes
00554                        219: None,       # hyperelastic QUAD4FD -  4 nodes
00555                        220: None,       # hyperelastic PENTAFD - 15 nodes
00556                        221: None,       # hyperelastic TETRAFD -  4 nodes
00557                        222: None,       # hyperelastic TRIAXFD -  3 nodes
00558                        223: None,       # hyperelastic QUADXFD -  4 nodes
00559                        224: None,       # nonlinear CELAS1
00560                        225: None,       # nonlinear CELAS3
00561                        226: None,       # nonlinear CBUSH
00562                        232: None,       # composite CQUADR (same as CQUAD4)
00563                        233: None,       # composite CTRIAR (same as CQUAD4)
00564                        235: None,       # punch plate CQUADR
00565                        236: None,       # punch plate CTRIAR
00566                  }
00567         
00568         Real   = realMapper[self.elementType]
00569         Imag   = imagMapper[self.elementType]
00570         Random = randomMapper[self.elementType]
00571         return (Real,Imag,Random)
00572 
00573     def readOES_Data(self):
00574         #msg = '%s-OES elementType=%-3s -> %-6s\n' % (self.tableName,self.elementType,self.ElementType(self.elementType))
00575         msg = ''
00576         #if self.analysisCode not in [1,6,10]:
00577             #raise InvalidATFSCodeError('self.atfsCode=%s' % (self.atfsCode))
00578 
00579         readCase = True
00580         if self.iSubcase in self.expectedTimes and len(self.expectedTimes[self.iSubcase])>0:
00581             readCase = self.updateDtMap()
00582         
00583         if readCase==False:
00584             self.skipOES_Element()
00585             return
00586 
00587         #print 'self.elementType  = ',self.elementType
00588         (numWideReal,numWideImag,numWideRandom) = self.OES_StressStrainCode()
00589         if self.elementType in [1,3,10]: # crod/ctube/conrod
00590             #if self.elementType==1:    self.dataCode['elementName'] = 'CROD'
00591             #if self.elementType==3:    self.dataCode['elementName'] = 'CTUBE'
00592             #if self.elementType==10:   self.dataCode['elementName'] = 'CONROD'
00593             if self.numWide==numWideReal:
00594                 resultName = self.makeOES_Object(self.rodStress,RodStressObject,'rodStress',
00595                                                  self.rodStrain,RodStrainObject,'rodStrain')
00596                 self.handleResultsBuffer3(self.OES_basicElement,resultName)
00597             elif self.numWide==numWideImag:
00598                 resultName = self.makeOES_Object(self.rodStress,ComplexRodStressObject,'rodStress',
00599                                                  self.rodStrain,ComplexRodStrainObject,'rodStrain')
00600                 self.handleResultsBuffer3(self.OES_Rod1_alt,resultName)
00601             else:
00602                 self.NotImplementedOrSkip()
00603 
00604         elif self.elementType == 2:   # cbeam - these have the same numWide
00605             self.dataCode['elementName'] = 'CBEAM'
00606             #print self.codeInformation()
00607             #print "numWideReal=%s numWideImag=%s" % (numWideReal,numWideImag)
00608             if self.formatCode==1: # Real
00609             #if self.numWide==numWideReal:
00610                 resultName = self.makeOES_Object(self.beamStress, BeamStressObject, 'beamStress',
00611                                                  self.beamStrain, BeamStrainObject, 'beamStrain')
00612                 self.handleResultsBuffer3(self.OES_CBEAM_2,resultName)
00613             #elif self.formatCode in [2,3]: # Imag
00614             ##elif self.numWide==numWideImag:
00615             #    self.makeOES_Object(self.beamStress, ComplexBeamStressObject, 'beamStress',
00616             #                        self.beamStrain, ComplexBeamStrainObject, 'beamStrain')
00617             #    self.handleResultsBuffer3(self.OES_CBEAM_2_alt,resultName)
00618             else:
00619                 self.NotImplementedOrSkip()
00620             
00621         elif self.elementType in [4]: # cshear
00622             self.dataCode['elementName'] = 'CSHEAR'
00623             if self.numWide==numWideReal:
00624                 resultName = self.makeOES_Object(self.shearStress,ShearStressObject, 'shearStres',
00625                                                  self.shearStrain,ShearStrainObject, 'shearStrain')
00626                 self.handleResultsBuffer3(self.OES_basicElement,resultName)
00627             #elif self.numWide==numWideImag:
00628             #    resultName = self.makeOES_Object(self.shearStress, ComplexShearStressObject, 'shearStress',
00629             #                                     self.shearStrain, ComplexShearStrainObject, 'shearStrain')
00630             #    self.handleResultsBuffer3(self.OES_shear4_alt,resultName)
00631             else:
00632                 self.NotImplementedOrSkip()
00633         elif self.elementType in [11,12,13]:   # celas1/celas2/celas3
00634             #print "    found celas2_12"
00635             #if   self.elementType==11: self.dataCode['elementName'] = 'CELAS1'
00636             #elif self.elementType==12: self.dataCode['elementName'] = 'CELAS2'
00637             #elif self.elementType==13: self.dataCode['elementName'] = 'CELAS3'
00638             #else:  raise Exception('not implemented error')
00639             
00640             if self.numWide==numWideReal:
00641                 resultName = self.makeOES_Object(self.celasStress,CelasStressObject,'celasStress',
00642                                                  self.celasStrain,CelasStrainObject,'celasStrain')
00643                 self.handleResultsBuffer3(self.OES_basicElement,resultName)
00644             elif self.numWide==numWideImag:
00645                 resultName = self.makeOES_Object(self.celasStress,ComplexCelasStressObject,'celasStress',
00646                                                  self.celasStrain,ComplexCelasStrainObject,'celasStrain')
00647                 self.handleResultsBuffer3(self.OES_Elas1_alt,resultName)
00648                 #print self.obj
00649                 #raise NotImplementedError('add printing to stress CELAS complex...')
00650             else:
00651                 self.NotImplementedOrSkip()
00652         elif self.elementType == 34:   # cbar
00653             self.dataCode['elementName'] = 'CBAR'
00654             #print "numWideReal=%s numWideImag=%s" % (numWideReal,numWideImag)
00655             if self.numWide==numWideReal:
00656                 resultName = self.makeOES_Object(self.barStress,BarStressObject,'barStress',
00657                                                  self.barStrain,BarStrainObject,'barStrain')
00658                 self.handleResultsBuffer3(self.OES_CBAR_34,resultName)
00659             elif self.numWide==numWideImag:
00660                 resultName = self.makeOES_Object(self.barStress,ComplexBarStressObject,'barStress',
00661                                                  self.barStrain,ComplexBarStrainObject,'barStrain')
00662                 self.handleResultsBuffer3(self.OES_CBAR_34_alt,resultName)
00663             else:
00664                 self.NotImplementedOrSkip()
00665 
00666         elif self.elementType==33: # cquad4_33
00667             if self.numWide==numWideReal:
00668                 self.dataCode['elementName'] = 'CQUAD4'
00669                 resultName = self.makeOES_Object(self.plateStress,PlateStressObject,'plateStress',
00670                                                  self.plateStrain,PlateStrainObject,'plateStrain')
00671                 self.handleResultsBuffer3(self.OES_CQUAD4_33,resultName)
00672             elif self.numWide==numWideImag:
00673                 resultName = self.makeOES_Object(self.plateStress,ComplexPlateStressObject,'plateStress',
00674                                                  self.plateStrain,ComplexPlateStrainObject,'plateStrain')
00675                 self.handleResultsBuffer3(self.OES_CQUAD4_33_alt,resultName)
00676             else:
00677                 self.NotImplementedOrSkip()
00678 
00679         elif self.elementType==53: # ctriax6
00680             self.dataCode['elementName'] = 'CTRIAX6'
00681             #print self.codeInformation()
00682             if self.numWide==numWideReal:
00683                 resultName = self.makeOES_Object(self.ctriaxStress,TriaxStressObject,'ctriaxStress',
00684                                                  self.ctriaxStrain,TriaxStrainObject,'ctriaxStrain')
00685                 self.handleResultsBuffer3(self.OES_CTRIAX6_53,resultName)
00686             #elif self.numWide==numWideImag:
00687             #    resultName = self.makeOES_Object(self.ctriaxStress,ComplexTriaxStressObject,'ctriaxStress',
00688             #                                     self.ctriaxStrain,ComplexTriaxStrainObject,'ctriaxStrain')
00689             #    self.handleResultsBuffer3(self.OES_CTRIAX6_53_alt,resultName)
00690             else:
00691                 self.NotImplementedOrSkip()
00692 
00693         elif self.elementType==74:  # ctria
00694             self.dataCode['elementName'] = 'CTRIA3'
00695             if self.numWide==numWideReal:
00696                 resultName = self.makeOES_Object(self.plateStress,PlateStressObject,'plateStress',
00697                                                  self.plateStrain,PlateStrainObject,'plateStrain')
00698                 self.handleResultsBuffer3(self.OES_CTRIA3_74,resultName)
00699             elif self.numWide==numWideImag:
00700                 resultName = self.makeOES_Object(self.plateStress,ComplexPlateStressObject,'plateStress',
00701                                                  self.plateStrain,ComplexPlateStrainObject,'plateStrain')
00702                 self.handleResultsBuffer3(self.OES_CTRIA3_74_alt,resultName)
00703             else:
00704                 self.NotImplementedOrSkip()
00705         elif self.elementType in [64,144,70,75,82]: # 64-cquad8/cquad4/70-ctriar/ctria6/cquadr
00706             #print "    found cquad_144"
00707             if     self.elementType == 64:
00708                 self.dataCode['elementName'] = 'CQUAD8'
00709             elif   self.elementType == 144:
00710                 self.dataCode['elementName'] = 'CQUAD4'
00711             elif   self.elementType == 70:
00712                 self.dataCode['elementName'] = 'CTRIAR'
00713             elif   self.elementType == 75:
00714                 self.dataCode['elementName'] = 'CTRIA6'
00715             elif   self.elementType == 82:
00716                 self.dataCode['elementName'] = 'CQUADR'
00717             else:
00718                 msg = 'card not implemented elementType=%s' % (self.elementType)
00719                 raise NotImplementedError(msg)
00720             if self.numWide==numWideReal:
00721                 resultName = self.makeOES_Object(self.plateStress,PlateStressObject,'plateStress',
00722                                                  self.plateStrain,PlateStrainObject,'plateStrain')
00723                 self.handleResultsBuffer3(self.OES_CQUAD4_144,resultName)
00724             elif self.numWide==numWideImag:
00725                 resultName = self.makeOES_Object(self.plateStress,ComplexPlateStressObject,'plateStress',
00726                                                  self.plateStrain,ComplexPlateStrainObject,'plateStrain')
00727                 self.handleResultsBuffer3(self.OES_CQUAD4_144_alt,resultName)
00728             else:
00729                 self.NotImplementedOrSkip()
00730 
00731         elif self.elementType in [39,67,68]:   # ctetra/chexa/cpenta (linear)
00732             if self.numWide==numWideReal:
00733                 resultName = self.makeOES_Object(self.solidStress,SolidStressObject,'solidStress',
00734                                                  self.solidStrain,SolidStrainObject,'solidStrain')
00735                 self.handleResultsBuffer3(self.OES_CSOLID_67,resultName)
00736             #elif self.numWide==numWideImag:
00737             #    resultName = self.makeOES_Object(self.solidStress,ComplexSolidStressObject,'solidStress',
00738             #                                     self.solidStrain,ComplexSolidStrainObject,'solidStrain')
00739             #    self.handleResultsBuffer3(self.OES_CSOLID_67_alt,resultName)
00740             else:
00741                 self.NotImplementedOrSkip()
00742 
00743         elif self.elementType in [85]:   # ctetra/chexa/cpenta (91,93)  (nonlinear)
00744             if self.numWide==numWideReal:
00745                 resultName = self.makeOES_Object(self.solidStress,SolidStressObject,'solidStress',
00746                                                  self.solidStrain,SolidStrainObject,'solidStrain')
00747                 self.handleResultsBuffer3(self.OES_CSOLID_85,resultName)
00748             #elif self.numWide==numWideImag:
00749             #    resultName = self.makeOES_Object(self.solidStress,ComplexSolidStressObject,'solidStress',
00750             #                                     self.solidStrain,ComplexSolidStrainObject,'solidStrain')
00751             #    self.handleResultsBuffer3(self.OES_CSOLID_85_alt,resultName)
00752             else:
00753                 self.NotImplementedOrSkip()
00754 
00755         elif self.elementType in [87,89,92]:   # CTUBENL, RODNL, CONRODNL
00756             #print "    found RODNL_89"
00757             resultName = self.makeOES_Object(self.nonlinearRodStress,NonlinearRodObject,'nonlinearRodStress',
00758                                              self.nonlinearRodStrain,NonlinearRodObject,'nonlinearRodStrain')
00759             self.handleResultsBuffer3(self.OES_RODNL_89_92,resultName)
00760 
00761         elif self.elementType in [88,90]: # CTRIA3NL, CQUAD4NL
00762             #print "cquad4_90"
00763             if self.numWide==numWideReal:
00764                 resultName = self.makeOES_Object(self.nonlinearPlateStress,NonlinearQuadObject,'nonlinearPlateStress',
00765                                                  self.nonlinearPlateStrain,NonlinearQuadObject,'nonlinearPlateStrain')
00766                 self.handleResultsBuffer3(self.OES_CQUAD4NL_90,resultName)
00767             elif self.numWide==numWideImag: ## @todo switch to ComplexNonlinearPlateObject
00768                 resultName = self.makeOES_Object(self.nonlinearPlateStress,NonlinearQuadObject,'nonlinearPlateStress',
00769                                                  self.nonlinearPlateStrain,NonlinearQuadObject,'nonlinearPlateStrain')
00770                 self.handleResultsBuffer3(self.OES_CQUAD4NL_90_alt,resultName)
00771             else:
00772                 self.NotImplementedOrSkip()
00773 
00774         #elif self.elementType in [91]: # CPENTANL
00775         #    #print "hexa_93"
00776         #    self.handleResultsBuffer3(self.OES_CPENTANL_91)
00777         #elif self.elementType in [93]: # CHEXANL
00778         #    #print "hexa_93"
00779         #    self.handleResultsBuffer3(self.OES_CHEXANL_93)
00780 
00781         elif self.elementType in [95,96,97,98]: # CQUAD4, CQUAD8, CTRIA3, CTRIA6 (composite)
00782             #print "    found a 95/96/97 or 98!"
00783             self.eid2 = None # stores the previous elementID
00784             if self.numWide==numWideReal:
00785                 resultName = self.makeOES_Object(self.compositePlateStress,CompositePlateStressObject,'compositePlateStress',
00786                                                  self.compositePlateStrain,CompositePlateStrainObject,'compositePlateStrain')
00787                 self.handleResultsBuffer3(self.OES_CQUAD4_95,resultName)
00788             #elif self.numWide==numWideImag:
00789             #    resultName = self.makeOES_Object(self.compositePlateStress,ComplexCompositePlateStressObject,'compositePlateStress',
00790             #                                     self.compositePlateStrain,ComplexCompositePlateStrainObject,'compositePlateStrain')
00791             #    self.handleResultsBuffer3(self.OES_CQUAD4_95_alt,resultName)
00792             else:
00793                 self.NotImplementedOrSkip()
00794             del self.eid2
00795 
00796         #elif self.elementType in [94]: # CBEAM (nonlinear)
00797             #print "    found a 94!"
00798             #self.eid2 = None # stores the previous elementID
00799             #self.makeOES_Object(self.beamStress,beamStressObject,
00800             #                    self.beamStrain,beamStrainObject)
00801             #self.handleResultsBuffer3(self.OES_CBEAM_94)
00802             #raise NotImplementedError('stoping at end of CBEAM_94')
00803             #del self.eid2
00804 
00805         elif self.elementType in [139]:   # QUAD4FD (hyperelastic)
00806             #print "    found QUAD4FD_139"
00807             if self.numWide==numWideReal:
00808                 resultName = self.makeOES_Object(self.hyperelasticPlateStress,HyperelasticQuadObject,'hyperelasticPlateStress',
00809                                                  self.hyperelasticPlateStrain,HyperelasticQuadObject,'hyperelasticPlateStrain')
00810                 self.handleResultsBuffer3(self.OES_QUAD4FD_139,resultName)
00811             #elif self.numWide==numWideImag:
00812             #    resultName = self.makeOES_Object(self.hyperelasticPlateStress,ComplexHyperelasticQuadObject,'hyperelasticPlateStress',
00813             #                                     self.hyperelasticPlateStrain,ComplexHyperelasticQuadObject,'hyperelasticPlateStrain')
00814             #    self.handleResultsBuffer3(self.OES_QUAD4FD_139,resultName)
00815             else:
00816                 self.NotImplementedOrSkip()
00817 
00818         #elif self.elementType in [2,53,61,70,86,88,90,94,102,189,232,]:
00819             #elementType=53  -> TRIAX6  is not supported
00820             #elementType=61  -> DUM9    is not supported
00821             #elementType=70  -> TRIAR   is not supported
00822             #elementType=86  -> GAPNL   is not supported
00823             #elementType=88  -> TRIA3NL is not supported
00824             #elementType=90  -> QUAD4NL is not supported
00825             #elementType=94  -> BEAMNL  is not supported
00826             #elementType=102 -> BUSH    is not supported
00827             #elementType=189 -> VUQUAD  is not supported
00828             #elementType=232 -> QUADRLC is not supported
00829         #elif self.elementType in [100]:   # BARS
00830         #    self.makeOES_Object(self.barStress,barStressObject,
00831         #                        self.barStrain,barStrainObject)
00832         #    self.handleResultsBuffer3(self.OES_basicElement)
00833         #elif self.elementType in [75,89,90,92,93]:
00834         #    msg = '%s-OES format1_sort0 elementType=%-3s -> %s is not supported - fname=%s\n' % (self.tableName,self.elementType,self.ElementType(self.elementType),self.op2FileName)
00835         #    raise AddNewElementError(msg)
00836         else:
00837             msg = '%s-OES format%s elementType=%-3s -> %s is not supported - fname=%s\n' % (self.tableName,self.formatCode,self.elementType,self.ElementType(self.elementType),self.op2FileName.strip())
00838             self.log.debug(msg)
00839             self.skippedCardsFile.write(msg)
00840             self.NotImplementedOrSkip()
00841         ###
00842         #elif self.elementType == 1:    # crod     (done)
00843         #elif self.elementType == 2:    # cbeam    (done)
00844         #elif self.elementType == 3:    # ctube    (done)
00845         #elif self.elementType == 4:    # cshear   (done)
00846         #elif self.elementType == 10:   # conrod   (done)
00847 
00848         #elif self.elementType == 33:   # cquad4_33 (done)
00849         #elif self.elementType == 34:   # cbar      (done)
00850         #elif self.elementType == 35:   # cconeax
00851         #elif self.elementType == 38:   # cgap
00852         #elif self.elementType == 39:   # ctetra    (done)
00853         #elif self.elementType == 40:   # cbush1d
00854 
00855         #elif self.elementType == 47:   # caxif2
00856         #elif self.elementType == 48:   # caxif3
00857         #elif self.elementType == 49:   # caxif4
00858         #elif self.elementType == 50:   # cslot3
00859         #elif self.elementType == 51:   # cslot4
00860         #elif self.elementType == 53:   # ctriax6
00861         #elif self.elementType == 55:   # cdum3
00862         #elif self.elementType == 56:   # cdum4
00863         #elif self.elementType == 57:   # cdum5
00864         #elif self.elementType == 58:   # cdum6
00865         #elif self.elementType == 59:   # cdum7
00866         #elif self.elementType == 60:   # cdum8/crac2d
00867         #elif self.elementType == 64:   # cquad8   (done)
00868         #elif self.elementType == 67:   # chexa    (done)
00869         #elif self.elementType == 68:   # cpenta   (done)
00870         #elif self.elementType == 69:   # cbend
00871         #elif self.elementType == 70:   # ctriar
00872         #elif self.elementType == 74:   # ctria3  (done)
00873         #elif self.elementType == 75:   # ctria6  (done)
00874         #elif self.elementType == 82:   # cquadr  (done)
00875         #elif self.elementType == 95:   # composite CQUAD4    (done)
00876         #elif self.elementType == 96:   # composite CQUAD8    (done)
00877         #elif self.elementType == 97:   # composite CTRIA3    (done)
00878         #elif self.elementType == 98:   # composite CTRIA6    (done)
00879         #elif self.elementType == 100:  # cbar w/ cbarao or pload1
00880 
00881         #elif self.elementType == 102:  # cbush
00882         #elif self.elementType == 144:  # cquad_144 - corner stresses (done)
00883 
00884 
00885         # rods/bars/beams
00886         #elif self.elementType == 1:    # crod   (done)
00887         #elif self.elementType == 2:    # cbeam  (done)
00888         #elif self.elementType == 3:    # ctube  (done)
00889         #elif self.elementType == 10:   # conrod (done)
00890         #elif self.elementType == 34:   # cbar   (done)
00891 
00892         #springs
00893         #elif self.elementType == 11:   # celas1 (done)
00894         #elif self.elementType == 12:   # celas2 (done)
00895         #elif self.elementType == 13:   # celas3 (done)
00896         
00897         #plate
00898         #elif self.elementType == 33:   # cquad_33 (done)
00899         #elif self.elementType == 74:   # ctria3_74  - (done)
00900         #elif self.elementType == 75:   # ctria6_75  - (in progress)
00901         #elif self.elementType == 64:   # cquad8_64  - corner stresses (done)
00902         #elif self.elementType == 144:  # cquad4_144 - corner stresses (done)
00903 
00904         #solid (???)
00905         #elif self.elementType == 39:  # ctetra (done)
00906         #elif self.elementType == 67:  # chexa  (done)
00907         #elif self.elementType == 68:  # cpenta (done)
00908 
00909         # composite plate
00910         #elif self.elementType == 95: # CQUAD4 (done)
00911         #elif self.elementType == 96: # CQUAD8 (done)
00912         #elif self.elementType == 97: # CTRIA3 (done)
00913         #elif self.elementType == 98: # CTRIA6 (done)
00914 
00915         # nonlinear
00916         #elif self.elementType == 85:   # tetra  (nonlinear,not integrated)
00917         #elif self.elementType == 86:   # gap    (nonlinear)
00918         #elif self.elementType == 87:   # ctube  (nonlinear, done)
00919         #elif self.elementType == 88:   # tria3  (nonlinear) - same as quad4
00920         #elif self.elementType == 89:   # crod   (nonlinear, done)
00921         #elif self.elementType == 90:   # quad4  (nonlinear, done)
00922         #elif self.elementType == 91:   # cpenta (nonlinear)
00923         #elif self.elementType == 92:   # conrod (nonlinear, done)
00924         #elif self.elementType == 93:   # chexa  (nonlinear,not integrated)
00925         #elif self.elementType == 94:   # cbeam  (nonlinear)
00926         
00927         # acoustic
00928         #elif self.elementType == 76:   # chexa  (acoustic)
00929         #elif self.elementType == 77:   # cpenta (acoustic)
00930         #elif self.elementType == 78:   # ctetra (acoustic)
00931         #elif self.elementType == 101:  # caabsf (acoustic)
00932 
00933     def makeOES_Object(self, stress, stressObject, stressName,
00934                              strain, strainObject, strainName):
00935         """
00936         Creates a stress/strain object if necessary
00937         """
00938         if self.isStress():
00939             self.createTransientObject(stress,stressObject)
00940             return stressName
00941         else:
00942             self.createTransientObject(strain,strainObject)
00943             return strainName
00944         ###
00945         #print "loading",self.obj.__class__.__name__
00946         #return self.obj
 All Classes Namespaces Files Functions Variables