def getDBlocks(self): self.dBk, self.lBkID, lTT, tD = {}, [], [], self.dIA['tDimBkG'] nX, nY, aDRI = self.nX, self.nY, self.cSonne.aDRInv # aPD = np.array(self.dIA['basisR3'] + [-v for v in self.dIA['basisR3']]) # aArea = np.array([self.aDim[1]*self.aDim[2], self.aDim[0]*self.aDim[2], # self.aDim[0]*self.aDim[1]]*2) # aLtCol = [np.dot(cPD, aDRI)*aArea[k] for k, cPD in enumerate(aPD)] # aLtCol = np.array([max(aLtCol[k], aLtCol[k + 3]) for k in range(3)]) # aLtCol /= sum(aLtCol) for i in reversed(range(self.nZ)): tLZ = (i, self.nZ - i - 1) for j in range(self.nY): tLY = (j, self.nY - j - 1) for k in range(self.nX): tLX = (k, self.nX - k - 1) tPMid = (-(nX // 2) * tD[0] + ((nX + 1) % 2) * tD[0] / 2. + k * tD[0], -(nY // 2) * tD[1] + ((nY + 1) % 2) * tD[1] / 2. + j * tD[1], tD[2] / 2. + i * tD[2]) pRSunl = Fkt.getLenNewCS(tPMid, aDRI) lTT.append((pRSunl, tPMid, self.getTLayer(tLX, tLY, tLZ))) self.getLAEdgeXtr([lTT[0][1], lTT[-1][1]]) lTT.sort(reverse=True) for (i, (pRSunl, tPMid, tLC)) in enumerate(lTT): self.lBkID.append((pRSunl, tLC)) self.dBk[tLC] = Block(self.dIA, self.aDim, self.tSigRays, self.lAEdgeXtr, pRSunl, tPMid, tLC, i) for keyBk in self.dBk: self.updateBlock(keyBk)
def __init__(self, dInA, dInTp, cMk, IDBlt, vS=P0, vDB=vUz, vDZ=vUz, lenBl=1., widBl=1., shpBl='circle', ageBl=1): self.dIA = dInA self.dITp = dInTp self.cMk = cMk self.cM = self.dIA['Mode'] self.IDBt = IDBlt self.pS = vS self.vDirBt = vDB self.vDirZw = vDZ self.shpBt = shpBl self.lenBt = lenBl self.widBt = widBl self.getArea() self.pMid = self.pS + (self.lenBt / 2.) * self.vDirBt self.pRBt = Fkt.getLenNewCS(self.pMid, self.vDirBt) self.ageBt = ageBl self.addToBlock()