Source code for pyNastran.op2.tables.oes_stressStrain.complex.oes_shear

from __future__ import (nested_scopes, generators, division, absolute_import,
                        print_function, unicode_literals)

from pyNastran.op2.tables.oes_stressStrain.real.oes_objects import StressObject, StrainObject
from pyNastran.f06.f06_formatting import get_key0



[docs]class ComplexShearStress(StressObject): """ :: # format_code=1 sort_code=0 stressCode=0 S T R E S S E S I N S H E A R P A N E L S ( C S H E A R ) ELEMENT MAX AVG SAFETY ELEMENT MAX AVG SAFETY ID. SHEAR SHEAR MARGIN ID. SHEAR SHEAR MARGIN 328 1.721350E+03 1.570314E+03 7.2E+01 """ def __init__(self, data_code, is_sort1, isubcase, dt): StressObject.__init__(self, data_code, isubcase) self.eType = 'CSHEAR' self.code = [self.format_code, self.sort_code, self.s_code] self.maxShear = {} self.avgShear = {} self.isImaginary = False self.dt = dt if is_sort1: if dt is not None: #self.add = self.add_sort1 self.add_new_eid = self.add_new_eid_sort1 else: assert dt is not None #self.add = self.addSort2 self.add_new_eid = self.add_new_eid_sort2
[docs] def get_stats(self): msg = self.get_data_code() if self.dt is not None: # transient ntimes = len(self.maxShear) s0 = get_key0(self.maxShear) nelements = len(self.maxShear[s0]) msg.append(' type=%s ntimes=%s nelements=%s\n' % (self.__class__.__name__, ntimes, nelements)) else: nelements = len(self.maxShear) msg.append(' type=%s nelements=%s\n' % (self.__class__.__name__, nelements)) msg.append(' eType, maxShear, avgShear\n') return msg
[docs] def delete_transient(self, dt): del self.maxShear[dt] del self.avgShear[dt]
[docs] def get_transients(self): k = self.maxShear.keys() k.sort() return k
[docs] def add_new_transient(self, dt): """ initializes the transient variables """ self.dt = dt self.maxShear[dt] = {} self.avgShear[dt] = {}
[docs] def add_f06_data(self, data, dt): if dt: if dt not in self.maxShear: self.maxShear[dt] = {} self.avgShear[dt] = {} for datai in data: (eid, max_shear, avg_shear) = datai self.maxShear[dt][eid] = max_shear self.avgShear[dt][eid] = avg_shear return for datai in data: (eid, max_shear, avg_shear) = datai self.maxShear[eid] = max_shear self.avgShear[eid] = avg_shear
[docs] def add_new_eid_sort1(self, dt, eid, out): (maxShear, avgShear) = out if dt not in self.maxShear: self.add_new_transient(dt) assert isinstance(eid, int) assert eid >= 0 self.maxShear[dt][eid] = maxShear self.avgShear[dt][eid] = avgShear
[docs]class ComplexShearStrain(StrainObject): def __init__(self, data_code, is_sort1, isubcase, dt): StrainObject.__init__(self, data_code, isubcase) self.eType = 'CSHEAR' #raise Exception('not supported...CSHEAR strain') self.code = [self.format_code, self.sort_code, self.s_code] self.maxShear = {} self.avgShear = {} self.dt = dt if is_sort1: if dt is not None: self.add = self.add_sort1 self.add_new_eid = self.add_new_eid_sort1 else: assert dt is not None self.add = self.addSort2 self.add_new_eid = self.add_new_eid_sort2
[docs] def get_stats(self): msg = self.get_data_code() if self.dt is not None: # transient ntimes = len(self.maxShear) s0 = get_key0(self.maxShear) nelements = len(self.maxShear[s0]) msg.append(' type=%s ntimes=%s nelements=%s\n' % (self.__class__.__name__, ntimes, nelements)) else: nelements = len(self.maxShear) msg.append(' type=%s nelements=%s\n' % (self.__class__.__name__, nelements)) msg.append(' eType, maxShear, avgShear\n') return msg
[docs] def getLength(self): return (16, 'fff')
[docs] def delete_transient(self, dt): del self.maxShear[dt] del self.avgShear[dt]
[docs] def get_transients(self): k = self.maxShear.keys() k.sort() return k
[docs] def add_new_transient(self, dt): """ initializes the transient variables .. note:: make sure you set self.dt first """ self.dt = dt self.maxShear[dt] = {} self.avgShear[dt] = {}
[docs] def add_f06_data(self, data, dt): if dt: if dt not in self.maxShear: self.maxShear[dt] = {} self.avgShear[dt] = {} for datai in data: (eid, max_shear, avg_shear) = datai self.maxShear[dt][eid] = max_shear self.avgShear[dt][eid] = avg_shear return for datai in data: (eid, max_shear, avg_shear) = datai self.maxShear[eid] = max_shear self.avgShear[eid] = avg_shear
[docs] def add_new_eid_sort1(self, dt, eid, out): (maxShear, avgShear) = out if dt not in self.maxShear: self.add_new_transient(dt) assert eid >= 0 #self.eType[eid] = self.element_type self.maxShear[dt][eid] = maxShear self.avgShear[dt][eid] = avgShear
[docs] def add_new_eid_sort2(self, eid, dt, out): (maxShear, avgShear) = out if dt not in self.maxShear: self.add_new_transient(dt) assert eid >= 0 #self.eType[eid] = self.element_type self.maxShear[dt][eid] = maxShear self.avgShear[dt][eid] = avgShear