Package cc.redberry.core.combinatorics

Examples of cc.redberry.core.combinatorics.Symmetry


        int i;
        for (i = 0; i < dimension; ++i) {
            int fromIndex = indicesNames[i];
            IndexMappingBufferRecord record = indexMappingBuffer.getMap().get(fromIndex);
            if (record == null) {
                return new Symmetry(dimension);
                //todo discuss with Dima
                //throw new IllegalArgumentException("Index " + IndicesUtils.toString(fromIndex) + " does not contains in specified IndexMappingBuffer.");
            }
            int newPosition = -1;
            //TODO refactor with sort and binary search
            for (int j = 0; j < dimension; ++j)
                if (indicesNames[j] == record.getIndexName()) {
                    newPosition = j;
                    break;
                }
            if (newPosition < 0) {
                return new Symmetry(dimension);
                //todo discuss with Dima
                //throw new IllegalArgumentException("Index " + IndicesUtils.toString(record.getIndexName()) + " does not contains in specified indices array.");
            }
            permutation[i] = newPosition;
        }
        for (i = 0; i < dimension; ++i)
            if (permutation[i] == -1)
                permutation[i] = i;
        return new Symmetry(permutation, indexMappingBuffer.getSign());
    }
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.addSign(s.isAntiSymmetry());
                return tempBuffer;
            }
            symmetryIterator = null;
            currentBuffer = null;
            return null;
View Full Code Here

                continue;
            if (typeData.length == 0)//redundant
                continue;
            int cpunt = random.nextInt(4);
            for (i = 0; i < cpunt; ++i)
                descriptor.getSymmetries().addUnsafe(type, new Symmetry(nextPermutation(typeData.length), false));
        }
    }
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);
        //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

                continue;
            if (typeData.length == 0)//redundant
                continue;
            int cpunt = random.nextInt(4);
            for (i = 0; i < cpunt; ++i)
                descriptor.getSymmetries().addUnsafe(type, new Symmetry(nextPermutation(typeData.length), false));
        }
    }
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

            permutation[i] = newPosition;
        }
        for (i = 0; i < dimension; ++i)
            if (permutation[i] == -1)
                permutation[i] = i;
        return new Symmetry(permutation, indexMappingBuffer.getSignum());
    }
View Full Code Here

            temp = multiply(epsComponent.toArray(new Tensor[epsComponent.size()]));
            epsComponent.clear();
            MappingsPort port = IndexMappings.createPort(temp, temp);
            IndexMappingBuffer buffer;
            Symmetry sym;

            IntArrayList nonPermutable = new IntArrayList();
            int[] indices = temp.getIndices().getFree().getAllIndices().copy();
            int[] epsIndices = content.get(epsPositions.get(i)).getIndices().getFree().getAllIndices().copy();

            boolean contract;
            for (b = 0; b < indices.length; ++b) {
                contract = false;
                for (a = 0; a < epsIndices.length; ++a)
                    if (indices[b] == inverseIndexState(epsIndices[a]))
                        contract = true;
                if (!contract)
                    nonPermutable.add(b);
            }
            int[] nonPermutablePositions = nonPermutable.toArray();

            if (indices.length == 1)
                continue;
            Map<IntArray, Boolean> symmetries = getEpsilonSymmetries(indices.length);
            while ((buffer = port.take()) != null) {
                sym = TensorUtils.getSymmetryFromMapping(indices, buffer);
                if (!checkNonPermutingPositions(sym, nonPermutablePositions))
                    continue;

                if (sym.isAntiSymmetry() != symmetries.get(sym.getPermutation()))
                    return Complex.ZERO;
            }

        }
        if (epsPositions.size() == 1)
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.