Package cc.redberry.core.combinatorics

Examples of cc.redberry.core.combinatorics.Symmetry


        int dimension = tensor.getIndices().size(type);
        boolean symmetriesAreEmpty = tensor.getIndices().getSymmetries().isEmpty();
        addSymmetry(tensor, type, true, Combinatorics.createTransposition(dimension));
        if (dimension > 2)
            if (symmetriesAreEmpty)
                tensor.getIndices().getSymmetries().addUnsafe(type.getType(), new Symmetry(Combinatorics.createCycle(dimension), dimension % 2 == 0 ? true : false));
            else
                tensor.getIndices().getSymmetries().add(type.getType(), new Symmetry(Combinatorics.createCycle(dimension), dimension % 2 == 0 ? true : false));
    }
View Full Code Here


    public static void setSymmetric(SimpleTensor tensor, IndexType type) {
        int dimension = tensor.getIndices().size(type);
        boolean symmetriesAreEmpty = tensor.getIndices().getSymmetries().isEmpty();
        tensor.getIndices().getSymmetries().addSymmetry(type, Combinatorics.createCycle(dimension));
        if (symmetriesAreEmpty)
            tensor.getIndices().getSymmetries().addUnsafe(type.getType(), new Symmetry(Combinatorics.createTransposition(dimension), false));
        else
            tensor.getIndices().getSymmetries().addSymmetry(type, Combinatorics.createTransposition(dimension));
    }
View Full Code Here

final 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);
        //TODO 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

        for (Symmetries ss : this.symmetries) {
            final List<Symmetry> basis = ss.getBasisSymmetries();
            //iterating from 1 because zero'th element is always identity symmetry
            for (k = 1; k < basis.size(); ++k) {
                c = new int[data.length];
                Symmetry s = basis.get(k);
                for (j = 0; j < data.length; ++j)
                    if (cosort[j] < position || cosort[j] >= position + s.dimension())
                        c[j] = j;
                    else
                        c[j] = cosortInv[s.newIndexOf(cosort[j] - position) + position];
                resultingSymmetries.addUnsafe(UnsafeCombinatorics.createUnsafe(c, s.isAntiSymmetry()));
            }
            //increasing position in the total symmetry array
            position += ss.dimension();
        }
View Full Code Here

        if (dimension == 0)
            return EmptySymmetries0;
        if (dimension == 1)
            return EmptySymmetries1;
        Symmetries symmetries = createSymmetries(dimension);
        symmetries.add(new Symmetry(Combinatorics.createTransposition(dimension), true));
        symmetries.add(new Symmetry(Combinatorics.createCycle(dimension), dimension % 2 == 0 ? true : false));
        return symmetries;
    }
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

*/
class EmptySymmetries extends DummySymmetries {

    EmptySymmetries(int dimension) {
        super(dimension,
              Collections.unmodifiableList(Arrays.asList(new Symmetry(dimension))));
        assert dimension == 0 || dimension == 1;
    }
View Full Code Here

            if (typeData == null)
                continue;
            if (typeData.length == 0)//redundant
                continue;
            for (i = 0; i < random.nextInt(3); ++i)
                descriptor.addSymmetry(type, new Symmetry(getRandomPermutation(typeData.length, random), false));
//                try {
//                    descriptor.addSymmetry(type, new Symmetry(getRandomPermutation(typeData.length, random), random.nextBoolean()));
//                } catch (InconsistentGeneratorsException exception) {
//                }
        }
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.