Package cc.redberry.core.transformations.substitutions

Examples of cc.redberry.core.transformations.substitutions.SubstitutionTransformation


                            addAll(varIndices.getInverted().getAllIndices().copy(), allFreeArgIndices)),
                    new int[0]);
            ProductBuilder builder = new ProductBuilder(0, length);
            for (i = 0; i < length; ++i)
                builder.put(createMetricOrKronecker(allFreeArgIndices[i], allFreeVarIndices[i]));
            derivative = new SubstitutionTransformation(symmetric, builder.build()).transform(derivative);
            this.derivative = derivative;
            this.freeVarIndices = var.getIndices().getFree().getInverted().getAllIndices().copy();
            this.allFreeFrom = addAll(allFreeArgIndices, freeVarIndices);
        }
View Full Code Here


        return ExpressionFactory.FACTORY;
    }

    @Override
    public Tensor transform(Tensor t) {
        return new SubstitutionTransformation(this).transform(t);
    }
View Full Code Here

        final Expression[] scalarSubs = new Expression[tensorSubstitutions.size()];
        i = -1;
        for (Map.Entry<Tensor, Tensor> entry : tensorSubstitutions.entrySet())
            scalarSubs[++i] = Tensors.expression(entry.getKey(), entry.getValue());
        SubstitutionTransformation fullSub = new SubstitutionTransformation(scalarSubs, true);
        for (i = 0; i < equations.length; ++i)
            equations[i] = (Expression) fullSub.transform(equations[i]);


        /*if (scalarSubs.length != 0) {
            StringBuilder scalarsString = new StringBuilder().append('[');
            for (Expression sub : scalarSubs)
View Full Code Here

        }
    }

    private SubstitutionTransformation createGammaSubstitution(int gammasCount) {
        Key key = new Key(gammaName, gammasCount, metricType, matrixType);
        SubstitutionTransformation sub = cache.get(key);
        if (sub != null)
            return sub;
        Tensor[] gammas = new Tensor[gammasCount];
        IndexGenerator generator = new IndexGenerator();
        int firstUpper, u = firstUpper = generator.generate(matrixType), i;
        for (i = 0; i < gammasCount; ++i) {
            gammas[i] = Tensors.simpleTensor(gammaName,
                    createSimple(null,
                            u | 0x80000000,
                            i == gammasCount - 1 ? firstUpper : (u = generator.generate(matrixType)),
                            generator.generate(metricType)));

        }
        sub = new SubstitutionTransformation(Tensors.multiply(gammas), traceOfArray(gammas, metricType));
        cache.put(key, sub);
        return sub;
    }
View Full Code Here

        expressions[2] = expression(simpleTensor(gamma5Name, createSimple(null,
                setType(matrixType, 0x80000000 | 0),
                setType(matrixType, 0))),
                Complex.ZERO);

        subs[0] = new SubstitutionTransformation(expressions);

        expressions = new Expression[2];

        //Tr[G_a*G_b*G_c*G_d*G5] = -4*I*e_abcd
        ProductBuilder pb = new ProductBuilder(0, 5);
        for (int i = 0; i < 4; ++i) {
            pb.put(simpleTensor(gammaName,
                    createSimple(null,
                            setType(metricType, i),
                            setType(matrixType, 0x80000000 | i),
                            setType(matrixType, i + 1))));
        }
        pb.put(simpleTensor(gamma5Name,
                createSimple(null,
                        setType(matrixType, 0x80000000 | 4),
                        setType(matrixType, 0))));
        expressions[0] = expression(pb.build(),
                multiply(Complex.MINUS_ONE, Complex.FOUR, Complex.IMAGE_ONE,
                        simpleTensor(leviCivitaName, createSimple(null, 0, 1, 2, 3))));

        //Chiholm-Kahane identitie:
        //G_a*G_b*G_c = g_ab*G_c-g_ac*G_b+g_bc*G_a-I*e_abcd*G5*G^d
        Tensor lhs = multiply(
                simpleTensor(gammaName, createSimple(null,
                        setType(metricType, 0),
                        setType(matrixType, 0x80000000),
                        setType(matrixType, 1))),
                simpleTensor(gammaName, createSimple(null,
                        setType(metricType, 1),
                        setType(matrixType, 1 | 0x80000000),
                        setType(matrixType, 2))),
                simpleTensor(gammaName, createSimple(null,
                        setType(metricType, 2),
                        setType(matrixType, 2 | 0x80000000),
                        setType(matrixType, 3)))
        );


        SumBuilder rhs = new SumBuilder();
        Tensor temp;
        for (int i = 0; i < 3; ++i) {
            temp = multiply(simpleTensor(gammaName,
                    createSimple(null,
                            setType(metricType, i),
                            setType(matrixType, 0x80000000),
                            setType(matrixType, 3))),
                    i == 0 ? createMetric(setType(metricType, 1), setType(metricType, 2))
                            : i == 1 ? createMetric(setType(metricType, 0), setType(metricType, 2))
                            : createMetric(setType(metricType, 0), setType(metricType, 1)));
            rhs.put(i == 1 ? negate(temp) : temp);
        }

        temp = multiply(Complex.MINUS_ONE, Complex.IMAGE_ONE,
                simpleTensor(leviCivitaName, createSimple(null,
                        setType(metricType, 0),
                        setType(metricType, 1),
                        setType(metricType, 2),
                        setType(metricType, 3))),
                simpleTensor(gamma5Name, createSimple(null,
                        setType(matrixType, 0x80000000),
                        setType(matrixType, 1))),
                simpleTensor(gammaName, createSimple(null,
                        setType(metricType, 0x80000000 | 3),
                        setType(matrixType, 1 | 0x80000000),
                        setType(matrixType, 3))));
        rhs.put(temp);
        expressions[1] = expression(lhs, rhs.build());
        subs[1] = new SubstitutionTransformation(expressions);
        cache5.put(key, subs);
        return subs;
    }
View Full Code Here

        final Expression[] scalarSubs = new Expression[tensorSubstitutions.size()];
        i = -1;
        for (Map.Entry<Tensor, Tensor> entry : tensorSubstitutions.entrySet())
            scalarSubs[++i] = Tensors.expression(entry.getKey(), entry.getValue());
        SubstitutionTransformation fullSub = new SubstitutionTransformation(scalarSubs, true);
        for (i = 0; i < equations.length; ++i)
            equations[i] = (Expression) fullSub.transform(equations[i]);


        /*if (scalarSubs.length != 0) {
            StringBuilder scalarsString = new StringBuilder().append('[');
            for (Expression sub : scalarSubs)
View Full Code Here

                            addAll(varIndices.getInverted().getAllIndices().copy(), allFreeArgIndices)),
                    new int[0]);
            ProductBuilder builder = new ProductBuilder(0, length);
            for (i = 0; i < length; ++i)
                builder.put(createMetricOrKronecker(allFreeArgIndices[i], allFreeVarIndices[i]));
            derivative = new SubstitutionTransformation(symmetric, builder.build()).transform(derivative);
            this.derivative = derivative;
            this.freeVarIndices = var.getIndices().getFree().getInverted().getAllIndices().copy();
            this.allFreeFrom = addAll(allFreeArgIndices, freeVarIndices);
        }
View Full Code Here

        return ExpressionFactory.FACTORY;
    }

    @Override
    public Tensor transform(Tensor t) {
        return new SubstitutionTransformation(this).transform(t);
    }
View Full Code Here

                            addAll(varIndices.getInverted().getAllIndices().copy(), allFreeArgIndices)),
                    new int[0]);
            ProductBuilder builder = new ProductBuilder(0, length);
            for (i = 0; i < length; ++i)
                builder.put(createMetricOrKronecker(allFreeArgIndices[i], allFreeVarIndices[i]));
            derivative = new SubstitutionTransformation(symmetric, builder.build()).transform(derivative);
            this.derivative = derivative;
            this.freeVarIndices = var.getIndices().getFree().getInverted().getAllIndices().copy();
            this.allFreeFrom = addAll(allFreeArgIndices, freeVarIndices);
        }
View Full Code Here

                            addAll(varIndices.getInverted().getAllIndices().copy(), allFreeArgIndices)),
                    new int[0]);
            ProductBuilder builder = new ProductBuilder(0, length);
            for (i = 0; i < length; ++i)
                builder.put(createMetricOrKronecker(allFreeArgIndices[i], allFreeVarIndices[i]));
            derivative = new SubstitutionTransformation(symmetric, builder.build()).transform(derivative);
            this.derivative = derivative;
            this.freeVarIndices = var.getIndices().getFree().getInverted().getAllIndices().copy();
            this.allFreeFrom = addAll(allFreeArgIndices, freeVarIndices);
        }
View Full Code Here

TOP

Related Classes of cc.redberry.core.transformations.substitutions.SubstitutionTransformation

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.