Ejemplo n.º 1
0
def framePotentialSeparated(elementArray):
    ##  get frame potential from a FLATTENED ELEMENT ARRAY ##
    d = len(elementArray) / 2
    elements = []
    for i in range(0, len(elementArray) - 1, 2):
        elements.append(elementArray[i] + elementArray[i + 1] * 1j)
    vec = mathBackBone.vector(elements)
    framePotentialSum = 0
    for k in range(d):
        for l in range(d):
            # middleOperator = mathBackBone.matrix(mathBackBone.X(d=d, power=k).dot(mathBackBone.Z(d=d, power=l)), size=d)
            # middleOperatorDotVector = mathBackBone.vector(middleOperator.dot(vec))
            # framePotentialSum += numpy.abs(mathBackBone.vector(vec.conjugate).dot(middleOperatorDotVector))**4
            XpowerK = mathBackBone.X(d=d, power=k)
            ZpowerL = mathBackBone.Z(d=d, power=l)
            # print "X", XpowerK.matrix
            # print "Z", ZpowerL.matrix
            conjugateVector = mathBackBone.vector(vec.conjugate)
            lastTwo = mathBackBone.vector(ZpowerL.dot(vec))
            # print "Last two: ", lastTwo.elements
            lastThree = mathBackBone.vector(XpowerK.dot(lastTwo))
            # print "Last three:", lastThree.elements
            # print conjugateVector.dot(lastThree)
            framePotentialSum += abs(conjugateVector.dot(lastThree))**4

    return framePotentialSum
Ejemplo n.º 2
0
def framePotentialReal(elementArray):
    ## (MINIMIZE) get frame potential from a FLATTENED ELEMENT ARRAY ##
    d = len(elementArray) / 2
    vec = elementArray
    elements = []
    for i in range(0, len(elementArray) - 1, 2):
        # print "REAL", elementArray[i]
        # print "COMPLEX", elementArray[i+1]
        elements.append(
            complex(elementArray[i], elementArray[i + 1]) /
            numpy.linalg.norm(elementArray))

    vec = mathBackBone.vector(elements)
    framePotentialSum = 0
    for k in range(d):
        for l in range(d):
            # middleOperator = mathBackBone.matrix(mathBackBone.X(d=d, power=k).dot(mathBackBone.Z(d=d, power=l)), size=d)
            # middleOperatorDotVector = mathBackBone.vector(middleOperator.dot(vec))
            # framePotentialSum += numpy.abs(mathBackBone.vector(vec.conjugate).dot(middleOperatorDotVector))**4
            XpowerK = mathBackBone.X(d=d, power=k)
            ZpowerL = mathBackBone.Z(d=d, power=l)
            # print "X", XpowerK.matrix
            # print "Z", ZpowerL.matrix
            conjugateVector = mathBackBone.vector(vec.conjugate)
            lastTwo = mathBackBone.vector(ZpowerL.dot(vec))
            # print "Last two: ", lastTwo.elements
            lastThree = mathBackBone.vector(XpowerK.dot(lastTwo))
            # print "Last three:", lastThree.elements
            # print conjugateVector.dot(lastThree)
            framePotentialSum += abs(conjugateVector.dot(lastThree))**4

    return ((framePotentialSum) -
            (2. * d /
             (d + 1.)))**2. + (1. - numpy.linalg.norm(vec.elements))**2
Ejemplo n.º 3
0
def framePotential(vec):
    ## get frame potential from a VECTOR OBJECT ##
    d = vec.length
    framePotentialSum = 0
    for k in range(d):
        for l in range(d):
            # middleOperator = mathBackBone.matrix(mathBackBone.X(d=d, power=k).dot(mathBackBone.Z(d=d, power=l)), size=d)
            # middleOperatorDotVector = mathBackBone.vector(middleOperator.dot(vec))
            # framePotentialSum += numpy.abs(mathBackBone.vector(vec.conjugate).dot(middleOperatorDotVector))**4
            XpowerK = mathBackBone.X(d=d, power=k)
            ZpowerL = mathBackBone.Z(d=d, power=l)
            # print "X", XpowerK.matrix
            # print "Z", ZpowerL.matrix
            conjugateVector = mathBackBone.vector(vec.conjugate)
            lastTwo = mathBackBone.vector(ZpowerL.dot(vec))
            # print "Last two: ", lastTwo.elements
            lastThree = mathBackBone.vector(XpowerK.dot(lastTwo))
            # print "Last three:", lastThree.elements
            # print conjugateVector.dot(lastThree)
            framePotentialSum += abs(conjugateVector.dot(lastThree))**4

    return framePotentialSum
Ejemplo n.º 4
0
def sicTest():
    sic = (1./numpy.sqrt(2.))*numpy.array([1, 0, -1, 0, 0, 0])
    print mathBackBone.vector(sic).elements
    print FramePotential.framePotentialReal(sic)
Ejemplo n.º 5
0
def framePotentialTest2():
    testVec = mathBackBone.vector([0.0723391 - 0.19082j, 0.0792411 + 0.2153j, 0.536444 + 0.199117j, 0.137276 + 0.0599187j, -0.312771 - 0.439084j, 0.447471 + 0.254983j]) ## frame potential should be 2.27671
    return FramePotential.framePotential(testVec)
Ejemplo n.º 6
0
def generateRandomVector(d):
    elems = [complex(random.random(), random.random()) for i in range(d)]
    vec = mathBackBone.vector(elems)
    print list(vec.elements)
    return vec