def plotComp(self, fig): q = sorted(list(self.queue)) axes = [] sifs = ['K1', 'K2', 'K3'] ylabels = {'K1': '$K_{I}$', 'K2': '$K_{II}$', 'K3': '$K_{III}$'} res = [] ad = dp.AnalysisData(q[0]) ad.calcAnSol() ad.calculateStats() for i in range(len(sifs)): axes.append(fig.add_subplot(len(sifs) * 100 + 10 + (i + 1))) analytical = axes[i].plot(ad.getAngles(), ad.getAnSol()[sifs[i]]) for simId in q: ad1 = dp.AnalysisData(simId) ad1.calcAnSol() ad1.calculateStats() res = res + axes[i].plot(ad1.getAngles(), ad1.getResults()[sifs[i]]) axes[i].set_ylabel(ylabels[sifs[i]]) axes[i].set_xlabel('angles') axes[i].set_xlim(0, 360) axes[i].grid(True) axes[0].legend(analytical + res[0:len(q)], ['SIF analytical'] + ['Sim Num: {0}'.format(i + 1) for i in range(len(q))], bbox_to_anchor=(1.02, 1), loc=2, borderaxespad=0.)
def plotSimId(simId, fig): sifs = ['K1', 'K2', 'K3'] ylabels = {'K1': '$K_{I}$', 'K2': '$K_{II}$', 'K3': '$K_{III}$'} ylabels2 = { 'K1': '$K_{I}$ errors [%]', 'K2': '$K_{II}$ errors [%]', 'K3': '$K_{III}$ errors [%]' } ad = dp.AnalysisData(simId) ad.calcAnSol() ad.calculateStats() angles = np.array(ad.getAngles()) axes = [] for i in range(len(sifs)): axes.append(fig.add_subplot(len(sifs) * 100 + 10 + (i + 1))) ax2 = axes[i].twinx() ansol = axes[i].plot(angles, ad.getAnSol()[sifs[i]]) res = axes[i].plot(angles, ad.getResults()[sifs[i]]) errs = ax2.plot(angles, ad.getErrorReports()['difference'][sifs[i]], 'r') # *100 axes[i].set_ylabel(ylabels[sifs[i]]) ax2.set_ylabel(ylabels2[sifs[i]]) axes[i].grid(True) axes[i].set_xlim(min(angles), max(angles)) axes[i].spines['right'].set_color('r') axes[0].legend(ansol + res + errs, ['SIF analytical', 'simulation', 'errors'], bbox_to_anchor=(1.08, 1), loc=2, borderaxespad=0)
def getDiamHeightError(simId, errType, sif): ad = dp.AnalysisData(simId) ad.calcAnSol() ad.calculateStats() d = ad.getContainerDiam() h = ad.getContainerHeight() err = ad.getErrorReports()[errType][sif] key = (d, h) return key, err
def get3dScatterPlotData(simIds): diams, heights, aes = [], [], [] for simId in simIds: dob = dp.AnalysisData(simId) d, h, ae = dob.get3dScatterPlotData() diams.append(d) heights.append(h) aes.append(ae) return diams, heights, aes
def getSimIdErrors(self, simKey): if simKey == []: return {s: [] for s in self.sifs} elif isinstance(simKey, list) and len(simKey) == 1: ad = dp.AnalysisData(simKey[0]) ad.calcAnSol() ad.calculateStats() errs = ad. getErrorReports()[self.errType] return {sif: errs[sif] for sif in self.sifs}
def createOptSimPlot(self): for n in range(len(self.dataDicts)): i = self.getItemKey(n) ad = dp.AnalysisData(self.dataStr[n][1]) ad.calcAnSol() ad.calculateStats() angles = ad.getAngles() for sif in self.sifs: ax = self.getAxes(i, sif) res = ad.getResults()[sif] ax.plot(angles, res, 'lime', lw=1, label='optSim')
def printQueue(self): count = 1 print '|Num. | Container | Seed Parameters' print '|-----|-----------------------------|----------------------------------' for s in sorted(list(self.queue)): ad = dp.AnalysisData(s) num = '|{0}{1} |'.format(' ' * (4 - len(str(count))), count) num = num + self.getGeomParamRepr(ad) num = num + self.getMeshParamRepr(ad) print num count += 1 self.updated = True
def getCeAeError(simId, errType, sif, successful=True): ad = dp.AnalysisData(simId) ad.calcAnSol() ad.calculateStats() ce = ad.getMeshParams()['crackEdges'] ae = ad.getMeshParams()['allEdges'] if successful: err = ad.getErrorReports()[errType][sif] else: err = None key = (ce, ae) return key, err
def createTreeFromDbKeys(dbKeys): root = TreeNode(treeRootNodeName) for key in dbKeys: parent = root anDataObj = dp.AnalysisData(key) for tlevel in treeLevelParameterNames: nodeName = anDataObj.getParameter(tlevel) node = parent.hasChildNode(nodeName) if not node: node = TreeNode(nodeName) node.setParent(parent) parent.setChild(node) if tlevel == treeLevelParameterNames[-1]: node.addMember(anDataObj) parent = node return root
def divideSimIds(self, limD, limH): self.d = limD self.h = limH for s in self.sims: ad = dp.AnalysisData(s) ad.calcAnSol() ad.calculateStats() simD = ad.getContainerDiam() simH = ad.getContainerHeight() errs = ad.getErrorReports()[self.errType][self.sif] if simD == limD and simH == limH: key = self.dKeys[1] elif simD >= limD and simH >= limH: key = self.dKeys[2] else: key = self.dKeys[0] self.simIds[key].add(s) self.errs[key] = np.concatenate((self.errs[key], errs))