pyNastran  0.5.0
pyNastran BDF Reader/Writer, OP2 Parser, and GUI
oes_bars.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 
00026 from __future__ import division, print_function
00027 import sys
00028 
00029 from ..real.oes_objects import stressObject, strainObject
00030 
00031 
00032 class ComplexBarStressObject(stressObject):
00033     """
00034     # sCode=0
00035                            C O M P L E X   S T R E S S E S   I N   B A R   E L E M E N T S   ( C B A R )
00036                                                          (MAGNITUDE/PHASE)
00037  
00038             ELEMENT                    LOCATION       LOCATION       LOCATION       LOCATION             AVERAGE
00039               ID.                          1              2              3              4             AXIAL STRESS
00040 
00041                   1     ENDA          9.331276E+04   9.331276E+04   9.331276E+04   9.331276E+04        0.0
00042                                       180.0000         0.0            0.0          180.0000              0.0
00043     """
00044     def __init__(self,dataCode,isSort1,iSubcase,dt=None):
00045         stressObject.__init__(self,dataCode,iSubcase)
00046         self.eType = {}
00047 
00048         self.code = [self.formatCode,self.sortCode,self.sCode]
00049 
00050         self.s1    = {}
00051         self.s2    = {}
00052         self.s3    = {}
00053         self.s4    = {}
00054         self.axial = {}
00055 
00056         #if self.elementType==100:
00057             #self.getLength = self.getLength100_format1_sort0
00058             #self.addNewEid = self.addNewEid100
00059 
00060         self.dt = dt
00061         #print "BAR dt=%s" %(dt)
00062         if isSort1:
00063             if dt is not None:
00064                 #self.add = self.addSort1
00065                 self.addNewEid = self.addNewEidSort1
00066             ###
00067         else:
00068             assert dt is not None
00069             #self.add = self.addSort2
00070             self.addNewEid = self.addNewEidSort2
00071         ###
00072 
00073     def addF06Data(self,data,transient):
00074         if transient is None:
00075             for line in data:
00076                 (eType,eid,s1A,s2A,s3A,s4A,axialA,
00077                            s1B,s2B,s3B,s4B,       ) = line
00078                 self.eType[eid] = 'CBAR'
00079                 self.s1[eid] = [s1A,s1B]
00080                 self.s2[eid] = [s2A,s2B]
00081                 self.s3[eid] = [s3A,s3B]
00082                 self.s4[eid] = [s4A,s4B]
00083                 self.axial[eid] = axialA
00084             ###
00085             return
00086 
00087         (dtName,dt) = transient
00088         self.dataCode['name'] = dtName
00089         #print "dt = ",dt
00090         #print "dtName = ",dtName
00091         if dt not in self.s1:
00092             self.updateDt(self.dataCode,dt)
00093 
00094         for line in data:
00095             (eType,eid,s1A,s2A,s3A,s4A,axialA,
00096                        s1B,s2B,s3B,s4B       ) = line
00097             self.eType[eid] = 'CBAR'
00098             self.s1[dt][eid] = [s1A,s1B]
00099             self.s2[dt][eid] = [s2A,s2B]
00100             self.s3[dt][eid] = [s3A,s3B]
00101             self.s4[dt][eid] = [s4A,s4B]
00102             self.axial[dt][eid] = axialA
00103         ###
00104 
00105     def deleteTransient(self,dt):
00106         del self.s1[dt]
00107         del self.s2[dt]
00108         del self.s3[dt]
00109         del self.s4[dt]
00110         del self.axial[dt]
00111 
00112     def getTransients(self):
00113         k = self.s1.keys()
00114         k.sort()
00115         return k
00116 
00117     def addNewTransient(self,dt):
00118         """
00119         initializes the transient variables
00120         """
00121         #print "****add new transient****"
00122         self.dt = dt
00123         self.s1[dt]    = {}
00124         self.s2[dt]    = {}
00125         self.s3[dt]    = {}
00126         self.s4[dt]    = {}
00127         self.axial[dt] = {}
00128 
00129     def addNewEid100(self,dt,out):
00130         #print "out = ",out
00131         #return
00132         (eid,s1,s2,s3,s4,axial) = out
00133         #print "Bar Stress add..."
00134         self.eType[eid] = 'CBAR' #eType
00135 
00136         if self.eid in self.s1:
00137             self.s1[eid].append(s1)
00138             self.s2[eid].append(s2)
00139             self.s3[eid].append(s3)
00140             self.s4[eid].append(s4)
00141             self.axial[eid].append(axial)
00142         else:
00143             self.s1[eid]    = [s1]
00144             self.s2[eid]    = [s2]
00145             self.s3[eid]    = [s3]
00146             self.s4[eid]    = [s4]
00147             self.axial[eid] = axial
00148 
00149         #print msg
00150         #if nodeID==0: raise Exception(msg)
00151 
00152     def addNewEid(self,eType,dt,eid,s1a,s2a,s3a,s4a,axial,
00153                                     s1b,s2b,s3b,s4b,     ):
00154         #print "Bar Stress add..."
00155         self.eType[eid] = eType
00156 
00157         self.s1[eid]    = [s1a,s1b]
00158         self.s2[eid]    = [s2a,s2b]
00159         self.s3[eid]    = [s3a,s3b]
00160         self.s4[eid]    = [s4a,s4b]
00161         self.axial[eid] = axial
00162         #print msg
00163         #if nodeID==0: raise Exception(msg)
00164 
00165     def addNewEidSort1(self,eType,dt,eid,s1a,s2a,s3a,s4a,axial,
00166                                          s1b,s2b,s3b,s4b,      ):
00167         msg = "dt=%s eid=%s s1a=%s" %(dt,eid,s1a)
00168         #print msg
00169         if dt not in self.s1:
00170             self.addNewTransient(dt)
00171         self.eType[eid] = eType
00172         #print self.s1
00173         self.s1[dt][eid]    = [s1a,s1b]
00174         self.s2[dt][eid]    = [s2a,s2b]
00175         self.s3[dt][eid]    = [s3a,s3b]
00176         self.s4[dt][eid]    = [s4a,s4b]
00177         self.axial[dt][eid] = axial
00178 
00179         #if nodeID==0: raise Exception(msg)
00180 
00181     def writeF06(self,header,pageStamp,pageNum=1,f=None,isMagPhase=False):
00182         if self.nonlinearFactor is not None:
00183             return self.writeF06Transient(header,pageStamp,pageNum,f,isMagPhase)
00184 
00185         msg = header+[
00186                 '                                 S T R E S S E S   I N   B A R   E L E M E N T S          ( C B A R )\n',
00187                 '  ELEMENT        SA1            SA2            SA3            SA4           AXIAL          SA-MAX         SA-MIN     M.S.-T\n',
00188                 '    ID.          SB1            SB2            SB3            SB4           STRESS         SB-MAX         SB-MIN     M.S.-C\n',
00189               ]
00190 
00191         for eid,S1s in sorted(self.s1.iteritems()):
00192             eType = self.eType[eid]
00193             axial = self.axial[eid]
00194             s1   = self.s1[eid]
00195             s2   = self.s2[eid]
00196             s3   = self.s3[eid]
00197             s4   = self.s4[eid]
00198 
00199             vals = [s1[0],s2[0],s3[0],s4[0],axial,
00200                     s1[1],s2[1],s3[1],s4[1],      ]
00201             (vals2,isAllZeros) = self.writeImagFloats13E(vals,isMagPhase)
00202             [s1ar,s2ar,s3ar,s4ar,axialr,
00203              s1br,s2br,s3br,s4br,     
00204              s1ai,s2ai,s3ai,s4ai,axiali,
00205              s1bi,s2bi,s3bi,s4bi,     ] = vals2
00206             msg.append('0%8i   %13s  %13s  %13s  %13s  %-s\n' %(eid,  s1ar,s2ar,s3ar,s4ar,axialr.rstrip()))
00207             msg.append(' %8s   %13s  %13s  %13s  %13s  %-s\n' %('',   s1ai,s2ai,s3ai,s4ai,axiali.rstrip()))
00208 
00209             msg.append(' %8s   %13s  %13s  %13s  %-s\n'   %('', s1br,s2br,s3br,s4br.rstrip()))
00210             msg.append(' %8s   %13s  %13s  %13s  %-s\n'   %('', s1bi,s2bi,s3bi,s4bi.rstrip()))
00211         ###
00212         msg.append(pageStamp+str(pageNum)+'\n')
00213         return (''.join(msg),pageNum)
00214 
00215     def writeF06Transient(self,header,pageStamp,pageNum=1,f=None,isMagPhase=False):
00216         words = [
00217                 '                                 S T R E S S E S   I N   B A R   E L E M E N T S          ( C B A R )\n',
00218                 '  ELEMENT        SA1            SA2            SA3            SA4           AXIAL          SA-MAX         SA-MIN     M.S.-T\n',
00219                 '    ID.          SB1            SB2            SB3            SB4           STRESS         SB-MAX         SB-MIN     M.S.-C\n',
00220               ]
00221         msg = []
00222         for dt,S1s in sorted(self.s1.iteritems()):
00223             header[1] = ' %s = %10.4E\n' %(self.dataCode['name'],dt)
00224             msg += header + words
00225             for eid,S1 in sorted(S1s.iteritems()):
00226                 eType = self.eType[eid]
00227                 axial = self.axial[dt][eid]
00228                 s1   = self.s1[dt][eid]
00229                 s2   = self.s2[dt][eid]
00230                 s3   = self.s3[dt][eid]
00231                 s4   = self.s4[dt][eid]
00232                 vals = [s1[0],s2[0],s3[0],s4[0],axial,
00233                         s1[1],s2[1],s3[1],s4[1],     ]
00234                 (vals2,isAllZeros) = self.writeImagFloats13E(vals,isMagPhase)
00235                 [s1ar,s2ar,s3ar,s4ar,axialr,
00236                  s1br,s2br,s3br,s4br,     
00237                  s1ai,s2ai,s3ai,s4ai,axiali,
00238                  s1bi,s2bi,s3bi,s4bi,     ] = vals2
00239                 msg.append('0%8i   %13s  %13s  %13s  %13s  %-s\n' %(eid,  s1ar,s2ar,s3ar,s4ar,axialr.rstrip()))
00240                 msg.append(' %8s   %13s  %13s  %13s  %13s  %-s\n' %('',   s1ai,s2ai,s3ai,s4ai,axiali.rstrip()))
00241 
00242                 msg.append(' %8s   %13s  %13s  %13s  %-s\n'   %('', s1br,s2br,s3br,s4br.rstrip()))
00243                 msg.append(' %8s   %13s  %13s  %13s  %-s\n'   %('', s1bi,s2bi,s3bi,s4bi.rstrip()))
00244             ###
00245             msg.append(pageStamp+str(pageNum)+'\n')
00246             pageNum+=1
00247         return (''.join(msg),pageNum-1)
00248 
00249     def __repr__(self):
00250         if self.nonlinearFactor is not None:
00251             return self.__reprTransient__()
00252 
00253         msg = '---BAR STRESS---\n'
00254         msg += '%-6s %6s ' %('EID','eType')
00255         headers = ['s1','s2','s3','s4','Axial']
00256         for header in headers:
00257             msg += '%8s ' %(header)
00258         msg += '\n'
00259 
00260         for eid,S1s in sorted(self.s1.iteritems()):
00261             eType = self.eType[eid]
00262             axial = self.axial[eid]
00263 
00264             s1   = self.s1[eid]
00265             s2   = self.s2[eid]
00266             s3   = self.s3[eid]
00267             s4   = self.s4[eid]
00268             msg += '%-6i %6s ' %(eid,eType)
00269             vals = [s1[0],s2[0],s3[0],s4[0],axial]
00270             for val in vals:
00271                 if abs(val)<1e-6:
00272                     msg += '%8s ' %('0')
00273                 else:
00274                     msg += '%8i ' %(val)
00275                 ###
00276             msg += '\n'
00277 
00278             msg += '%s ' %(' '*13)
00279             vals = [s1[1],s2[1],s3[1],s4[1]]
00280             for val in vals:
00281                 if isinstance(val,str):
00282                     msg += '%8s ' %(val)
00283                 elif abs(val)<1e-6:
00284                     msg += '%8s ' %('0')
00285                 else:
00286                     msg += '%8i ' %(val)
00287                 ###
00288             msg += '\n'
00289 
00290 
00291             #msg += "eid=%-4s eType=%s s1=%-4i s2=%-4i s3=%-4i s4=%-4i axial=-%5i\n" %(eid,eType,s1[0],s2[0],s3[0],s4[0],axial)
00292             #msg += "%s                s1=%-4i s2=%-4i s3=%-4i s4=%-4i %s\n"         %(' '*4,    s1[1],s2[1],s3[1],s4[1])
00293         ###
00294         return msg
00295 
00296     def __reprTransient__(self):
00297         msg = '---BAR STRESS---\n'
00298         msg += '%-6s %6s ' %('EID','eType')
00299         headers = ['s1','s2','s3','s4','Axial','sMax','sMin']
00300         for header in headers:
00301             msg += '%8s ' %(header)
00302         msg += '\n'
00303 
00304         for dt,S1ss in sorted(self.s1.iteritems()):
00305             msg += '%s = %g\n' %(self.dataCode['name'],dt)
00306             for eid,S1s in sorted(S1ss.iteritems()):
00307                 eType = self.eType[eid]
00308                 axial = self.axial[dt][eid]
00309 
00310                 s1   = self.s1[dt][eid]
00311                 s2   = self.s2[dt][eid]
00312                 s3   = self.s3[dt][eid]
00313                 s4   = self.s4[dt][eid]
00314                 msg += '%-6i %6s ' %(eid,eType)
00315                 vals = [s1[0],s2[0],s3[0],s4[0],axial]
00316                 for val in vals:
00317                     msg += '%8s %8s' %(val.real,val.imag)
00318                 msg += '\n'
00319 
00320                 msg += '%s ' %(' '*13)
00321                 vals = [s1[1],s2[1],s3[1],s4[1]]
00322                 for val in vals:
00323                     if isinstance(val,str):
00324                         msg += '%8s ' %(val)
00325                     elif abs(val)<1e-6:
00326                         msg += '%8s %8s' %(val.real,val.imag)
00327                 msg += '\n'
00328 
00329                 #msg += "eid=%-4s eType=%s s1=%-4i s2=%-4i s3=%-4i s4=%-4i axial=-%5i\n" %(eid,eType,s1[0],s2[0],s3[0],s4[0],axial)
00330                 #msg += "%s                s1=%-4i s2=%-4i s3=%-4i s4=%-4i %s\n"         %(' '*4,    s1[1],s2[1],s3[1],s4[1])
00331             ###
00332         ###
00333         return msg
00334 
00335 class ComplexBarStrainObject(strainObject):
00336     """
00337     # sCode=10
00338                                      S T R A I N S   I N   B A R   E L E M E N T S          ( C B A R )
00339     ELEMENT        SA1            SA2            SA3            SA4           AXIAL          SA-MAX         SA-MIN     M.S.-T
00340       ID.          SB1            SB2            SB3            SB4           STRAIN         SB-MAX         SB-MIN     M.S.-C
00341 
00342     """
00343     def __init__(self,dataCode,isSort1,iSubcase,dt=None):
00344         strainObject.__init__(self,dataCode,iSubcase)
00345         self.eType = {}
00346 
00347         self.code = [self.formatCode,self.sortCode,self.sCode]
00348         self.e1    = {}
00349         self.e2    = {}
00350         self.e3    = {}
00351         self.e4    = {}
00352         self.axial = {}
00353 
00354         if isSort1:
00355             if dt is not None:
00356                 #self.add = self.addSort1
00357                 self.addNewEid = self.addNewEidSort1
00358             ###
00359         else:
00360             assert dt is not None
00361             #self.add = self.addSort2
00362             self.addNewEid = self.addNewEidSort2
00363         ###
00364 
00365     def addF06Data(self,data,transient):
00366         if transient is None:
00367             for line in data:
00368                 (eType,eid,e1A,e2A,e3A,e4A,axialA,
00369                            e1B,e2B,e3B,e4B,       ) = line
00370                 self.eType[eid] = 'CBAR'
00371                 self.e1[eid] = [e1A,e1B]
00372                 self.e2[eid] = [e2A,e2B]
00373                 self.e3[eid] = [e3A,e3B]
00374                 self.e4[eid] = [e4A,e4B]
00375 
00376                 self.axial[eid] = axialA
00377             ###
00378             return
00379 
00380         (dtName,dt) = transient
00381         self.dataCode['name'] = dtName
00382         if dt not in self.s1:
00383             self.updateDt(self.dataCode,dt)
00384 
00385         for line in data:
00386             (eType,eid,e1A,e2A,e3A,e4A,axialA,
00387                        e1B,e2B,e3B,e4B,       ) = line
00388             self.eType[eid] = 'CBAR'
00389             self.e1[dt][eid] = [e1A,e1B]
00390             self.e2[dt][eid] = [e2A,e2B]
00391             self.e3[dt][eid] = [e3A,e3B]
00392             self.e4[dt][eid] = [e4A,e4B]
00393             self.axial[dt][eid] = axialA
00394         ###
00395 
00396     def deleteTransient(self,dt):
00397         del self.e1[dt]
00398         del self.e2[dt]
00399         del self.e3[dt]
00400         del self.e4[dt]
00401         del self.exial[dt]
00402 
00403     def getTransients(self):
00404         k = self.e1.keys()
00405         k.sort()
00406         return k
00407 
00408     def addNewTransient(self,dt):
00409         """
00410         initializes the transient variables
00411         """
00412         self.e1[dt]    = {}
00413         self.e2[dt]    = {}
00414         self.e3[dt]    = {}
00415         self.e4[dt]    = {}
00416         self.axial[dt] = {}
00417 
00418     def addNewEid(self,eType,dt,eid,e1a,e2a,e3a,e4a,axial,
00419                                     e1b,e2b,e3b,e4b,      ):
00420         #print "Bar Stress add..."
00421         self.eType[eid] = eType
00422         self.e1[eid]    = [e1a,e1b]
00423         self.e2[eid]    = [e2a,e2b]
00424         self.e3[eid]    = [e3a,e3b]
00425         self.e4[eid]    = [e4a,e4b]
00426         self.axial[eid] = axial
00427 
00428         #msg = "eid=%s nodeID=%s fd=%g oxx=%g oyy=%g \ntxy=%g angle=%g major=%g minor=%g vm=%g" %(eid,nodeID,fd,oxx,oyy,txy,angle,majorP,minorP,ovm)
00429         #print msg
00430         #if nodeID==0: raise Exception(msg)
00431 
00432     def addNewEidSort1(self,eType,dt,eid,e1a,e2a,e3a,e4a,axial,
00433                                          e1b,e2b,e3b,e4b,      ):
00434         #print "Bar Stress add..."
00435 
00436         self.eType[eid] = eType
00437         if dt not in self.e1:
00438             self.addNewTransient(dt)
00439 
00440         self.e1[dt][eid]    = [e1a,e1b]
00441         self.e2[dt][eid]    = [e2a,e2b]
00442         self.e3[dt][eid]    = [e3a,e3b]
00443         self.e4[dt][eid]    = [e4a,e4b]
00444         self.axial[dt][eid] = axial
00445 
00446         #print msg
00447         #if nodeID==0: raise Exception(msg)
00448 
00449     def writeF06(self,header,pageStamp,pageNum=1,f=None,isMagPhase=False):
00450         return 'ComplexBarStress writeF06 not implemented...',pageNum
00451         if self.nonlinearFactor is not None:
00452             return self.writeF06Transient(header,pageStamp,pageNum,f,isMagPhase)
00453 
00454         msg = header+[
00455                 '                                  S T R A I N S    I N   B A R   E L E M E N T S          ( C B A R )\n',
00456                 '  ELEMENT        SA1            SA2            SA3            SA4           AXIAL          SA-MAX         SA-MIN     M.S.-T\n',
00457                 '    ID.          SB1            SB2            SB3            SB4           STRAIN         SB-MAX         SB-MIN     M.S.-C\n',
00458               ]
00459         for eid,E1s in sorted(self.e1.iteritems()):
00460             eType = self.eType[eid]
00461             axial = self.axial[eid]
00462             
00463             e1   = self.e1[eid]
00464             e2   = self.e2[eid]
00465             e3   = self.e3[eid]
00466             e4   = self.e4[eid]
00467             vals = [e1[0],e2[0],e3[0],e4[0],axial,
00468                     e1[1],e2[1],e3[1],e4[1]]
00469             (vals2,isAllZeros) = self.writeFloats13E(vals)
00470             [e10,e20,e30,e40,axial,
00471              e11,e21,e31,e41] = vals2
00472             
00473             msg.append('0%8i   %13s  %13s  %13s  %13s  %13s  %13s  %13s %-s\n' %(eid,  e10,e20,e30,e40,axial.rstrip()))
00474             msg.append(' %8s   %13s  %13s  %13s  %13s  %13s  %13s  %13s %-s\n'   %('', e11,e21,e31,e41.rstrip()))
00475         ###
00476         msg.append(pageStamp+str(pageNum)+'\n')
00477         return (''.join(msg),pageNum)
00478 
00479     def writeF06Transient(self,header,pageStamp,pageNum=1,f=None,isMagPhase=False):
00480         words = [
00481                 '                                  S T R A I N S    I N   B A R   E L E M E N T S           ( C B A R )\n',
00482                 '  ELEMENT        SA1            SA2            SA3            SA4           AXIAL          SA-MAX         SA-MIN     M.S.-T\n',
00483                 '    ID.          SB1            SB2            SB3            SB4           STRAIN         SB-MAX         SB-MIN     M.S.-C\n',
00484               ]
00485         msg = []
00486         for dt,E1s in sorted(self.e1.iteritems()):
00487             header[1] = ' %s = %10.4E\n' %(self.dataCode['name'],dt)
00488             msg += header + words
00489             for eid,e1s in sorted(E1s.iteritems()):
00490                 eType = self.eType[eid]
00491                 axial = self.axial[eid]
00492 
00493                 e1   = self.e1[eid]
00494                 e2   = self.e2[eid]
00495                 e3   = self.e3[eid]
00496                 e4   = self.e4[eid]
00497                 vals = [e1[0],e2[0],e3[0],e4[0],axial,
00498                         e1[1],e2[1],e3[1],e4[1]]
00499                 (vals2,isAllZeros) = self.writeFloats13E(vals)
00500                 [e10,e20,e30,e40,
00501                  e11,e21,e31,e41] = vals2
00502 
00503                 msg.append('0%8i   %13s  %13s  %13s  %13s  %13s  %13s  %13s %-s\n' %(eid,  e10,e20,e30,e40,axial.rstrip()))
00504                 msg.append(' %8s   %13s  %13s  %13s  %13s  %13s  %13s  %13s %-s\n'   %('', e11,e21,e31,e41.rstrip()))
00505             ###
00506             msg.append(pageStamp+str(pageNum)+'\n')
00507             pageNum+=1
00508         return (''.join(msg),pageNum-1)
00509 
00510     def __repr__(self):
00511         if self.nonlinearFactor is not None:
00512             return self.__reprTransient__()
00513 
00514         msg = '---BAR STRAIN---\n'
00515         msg += '%-8s %6s ' %('EID','eType')
00516         headers = ['e1','e2','e3','e4','Axial','eMax','eMin']
00517         for header in headers:
00518             msg += '%10s ' %(header)
00519         msg += '\n'
00520 
00521         for eid,E1s in sorted(self.e1.iteritems()):
00522             eType = self.eType[eid]
00523             axial = self.axial[eid]
00524             e1   = self.e1[eid]
00525             e2   = self.e2[eid]
00526             e3   = self.e3[eid]
00527             e4   = self.e4[eid]
00528             msg += '%-8i %6s ' %(eid,eType)
00529             vals = [e1[0],e2[0],e3[0],e4[0],axial]
00530             for val in vals:
00531                 if abs(val)<1e-6:
00532                     msg += '%10s ' %('0')
00533                 else:
00534                     msg += '%10.3g ' %(val)
00535                 ###
00536             msg += '\n'
00537 
00538             msg += '%s ' %(' '*17)
00539             vals = [e1[1],e2[1],e3[1],e4[1]]
00540             for val in vals:
00541                 if isinstance(val,str):
00542                     msg += '%10s ' %(val)
00543                 elif abs(val)<1e-6:
00544                     msg += '%10s ' %('0')
00545                 else:
00546                     msg += '%10.3g ' %(val)
00547                 ###
00548             msg += '\n'
00549 
00550             #msg += "eid=%-4s eType=%s s1=%-4i s2=%-4i s3=%-4i s4=%-4i axial=-%5i\n" %(eid,eType,s1[0],s2[0],s3[0],s4[0],axial)
00551             #msg += "%s                s1=%-4i s2=%-4i s3=%-4i s4=%-4i %s\n"         %(' '*4,    s1[1],s2[1],s3[1],s4[1])
00552         ###
00553         return msg
00554 
00555     def __reprTransient__(self):
00556         msg = '---BAR STRAIN---\n'
00557         msg += '%-8s %6s ' %('EID','eType')
00558         headers = ['e1','e2','e3','e4','Axial','eMax','eMin']
00559         for header in headers:
00560             msg += '%10s ' %(header)
00561         msg += '\n'
00562 
00563         for dt,E1s in sorted(self.e1.iteritems()):
00564             msg += "%s = %g\n" %(self.dataCode['name'],dt)
00565             for eid,e1s in sorted(Els.iteritems()):
00566                 eType = self.eType[eid]
00567                 axial = self.axial[dt][eid]
00568                 e1   = self.e1[dt][eid]
00569                 e2   = self.e2[dt][eid]
00570                 e3   = self.e3[dt][eid]
00571                 e4   = self.e4[dt][eid]
00572                 msg += '%-8i %6s ' %(eid,eType)
00573                 vals = [e1[0],e2[0],e3[0],e4[0],axial]
00574                 for val in vals:
00575                     if abs(val)<1e-6:
00576                         msg += '%10s ' %('0')
00577                     else:
00578                         msg += '%10.3g ' %(val)
00579                     ###
00580                 msg += '\n'
00581 
00582                 msg += '%s ' %(' '*17)
00583                 vals = [e1[1],e2[1],e3[1],e4[1]]
00584                 for val in vals:
00585                     if isinstance(val,str):
00586                         msg += '%10s ' %(val)
00587                     elif abs(val)<1e-6:
00588                         msg += '%10s ' %('0')
00589                     else:
00590                         msg += '%10.3g ' %(val)
00591                     ###
00592                 msg += '\n'
00593 
00594                 #msg += "eid=%-4s eType=%s s1=%-4i s2=%-4i s3=%-4i s4=%-4i axial=-%5i\n" %(eid,eType,s1[0],s2[0],s3[0],s4[0],axial)
00595                 #msg += "%s                s1=%-4i s2=%-4i s3=%-4i s4=%-4i %s\n"         %(' '*4,    s1[1],s2[1],s3[1],s4[1])
00596             ###
00597         ###
00598         return msg
 All Classes Namespaces Files Functions Variables