Ejemplo n.º 1
0
 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.)
Ejemplo n.º 2
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)
Ejemplo n.º 3
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
 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}
Ejemplo n.º 6
0
 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')
Ejemplo n.º 7
0
 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
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
 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))