Package cc.redberry.core.combinatorics

Examples of cc.redberry.core.combinatorics.Symmetry


        int i;
        if (upperCount > 1) {
            int[] upperTransposition = Combinatorics.createIdentity(upperCount + lowerCount);
            upperTransposition[0] = 1;
            upperTransposition[1] = 0;
            Symmetry upperTranspositionSymmetry = new Symmetry(upperTransposition, false);
            symmetries.addUnsafe(upperTranspositionSymmetry);
        }

        if (lowerCount > 1) {
            int[] lowerTransposition = Combinatorics.createIdentity(upperCount + lowerCount);
            lowerTransposition[upperCount] = 1 + upperCount;
            lowerTransposition[upperCount + 1] = upperCount;
            Symmetry lowerTranspositionSymmetry = new Symmetry(lowerTransposition, false);
            symmetries.addUnsafe(lowerTranspositionSymmetry);
        }

        //cycle       
        if (upperCount > 2) {
            int[] upperCycle = new int[upperCount + lowerCount];
            upperCycle[0] = upperCount - 1;
            for (i = 1; i < upperCount; ++i)
                upperCycle[i] = i - 1;
            for (; i < upperCount + lowerCount; ++i)
                upperCycle[i] = i;
            Symmetry upperCycleSymmetry = new Symmetry(upperCycle, false);
            symmetries.addUnsafe(upperCycleSymmetry);
        }
        if (lowerCount > 2) {
            int[] lowerCycle = new int[upperCount + lowerCount];
            for (i = 0; i < upperCount; ++i)
                lowerCycle[i] = i;
            lowerCycle[upperCount] = upperCount + lowerCount - 1;
            ++i;
            for (; i < upperCount + lowerCount; ++i)
                lowerCycle[i] = i - 1;
            Symmetry lowerCycleSymmetry = new Symmetry(lowerCycle, false);
            symmetries.addUnsafe(lowerCycleSymmetry);
        }

        return symmetries;
    }
View Full Code Here


            throw new IllegalArgumentException("Input tensor is not Expression.");
        return (Expression) t;
    }

    public static void addSymmetry(String tensor, IndexType type, boolean sign, int... symmetry) {
        parseSimple(tensor).getIndices().getSymmetries().add(type.getType(), new Symmetry(symmetry, sign));
    }
View Full Code Here

    public static void addSymmetry(String tensor, IndexType type, boolean sign, int... symmetry) {
        parseSimple(tensor).getIndices().getSymmetries().add(type.getType(), new Symmetry(symmetry, sign));
    }

    public static void addSymmetry(SimpleTensor tensor, IndexType type, boolean sign, int... symmetry) {
        tensor.getIndices().getSymmetries().add(type.getType(), new Symmetry(symmetry, sign));
    }
View Full Code Here

        }

        if (symmetryIterator != null) {
            OUT:
            while (symmetryIterator.hasNext()) {
                Symmetry s = symmetryIterator.next();
                IndexMappingBuffer tempBuffer = currentBuffer.clone();
                for (int i = 0; i < size; ++i)
                    if (!tempBuffer.tryMap(fromIndices.get(s.newIndexOf(i)), toIndices.get(i)))
                        continue OUT;
                tempBuffer.addSignum(s.isAntiSymmetry());
                return tempBuffer;
            }
            symmetryIterator = null;
            currentBuffer = null;
            return null;
View Full Code Here

class SymmetriesImpl extends AbstractSymmetries {

    SymmetriesImpl(int dimension) {
        super(dimension, new ArrayList<Symmetry>());
        this.basis.add(new Symmetry(dimension));
    }
View Full Code Here

        if (symmetry.dimension() != dimension)
            throw new IllegalArgumentException();
        PermutationsSpanIterator<Symmetry> it = new PermutationsSpanIterator<>(basis);
        //BOTTLENECK review
        while (it.hasNext()) {
            Symmetry s = it.next();
            if (s.equals(symmetry))
                return false;
        }
        basis.add(symmetry);
        //BOTTLENECK
        //checking consistense
View Full Code Here

class FullSymmetries extends DummySymmetries {

    FullSymmetries(int dimension) {
        super(dimension, Collections.unmodifiableList(
                Arrays.asList(
                new Symmetry(dimension),
                new Symmetry(Combinatorics.createTransposition(dimension), false),
                new Symmetry(Combinatorics.createCycle(dimension), false))));
    }
View Full Code Here

        int i;
        if (upperCount > 1) {
            int[] upperTransposition = Combinatorics.createIdentity(upperCount + lowerCount);
            upperTransposition[0] = 1;
            upperTransposition[1] = 0;
            Symmetry upperTranspositionSymmetry = new Symmetry(upperTransposition, false);
            symmetries.addUnsafe(upperTranspositionSymmetry);
        }

        if (lowerCount > 1) {
            int[] lowerTransposition = Combinatorics.createIdentity(upperCount + lowerCount);
            lowerTransposition[upperCount] = 1 + upperCount;
            lowerTransposition[upperCount + 1] = upperCount;
            Symmetry lowerTranspositionSymmetry = new Symmetry(lowerTransposition, false);
            symmetries.addUnsafe(lowerTranspositionSymmetry);
        }

        //cycle       
        if (upperCount > 2) {
            int[] upperCycle = new int[upperCount + lowerCount];
            upperCycle[0] = upperCount - 1;
            for (i = 1; i < upperCount; ++i)
                upperCycle[i] = i - 1;
            for (; i < upperCount + lowerCount; ++i)
                upperCycle[i] = i;
            Symmetry upperCycleSymmetry = new Symmetry(upperCycle, false);
            symmetries.addUnsafe(upperCycleSymmetry);
        }
        if (lowerCount > 2) {
            int[] lowerCycle = new int[upperCount + lowerCount];
            for (i = 0; i < upperCount; ++i)
                lowerCycle[i] = i;
            lowerCycle[upperCount] = upperCount + lowerCount - 1;
            ++i;
            for (; i < upperCount + lowerCount; ++i)
                lowerCycle[i] = i - 1;
            Symmetry lowerCycleSymmetry = new Symmetry(lowerCycle, false);
            symmetries.addUnsafe(lowerCycleSymmetry);
        }

        return symmetries;
    }
View Full Code Here

        }
        return diffIds;
    }

    public boolean add(IndexType type, boolean sign, int... permutation) {
        return add(type.getType(), new Symmetry(permutation, sign));
    }
View Full Code Here

    public boolean add(IndexType type, boolean sign, int... permutation) {
        return add(type.getType(), new Symmetry(permutation, sign));
    }

    public boolean add(byte type, boolean sign, int... permutation) {
        return add(type, new Symmetry(permutation, sign));
    }
View Full Code Here

TOP

Related Classes of cc.redberry.core.combinatorics.Symmetry

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.