Example #1
0
 public static GaNumBilinearProductCba CreateCp(GaNumMetricNonOrthogonal metric)
 {
     return(new GaNumBilinearProductCba(
                metric,
                metric.BaseFrame.Cp
                ));
 }
Example #2
0
        internal GaNumFrameNonOrthogonal(GaNumFrame baseOrthoFrame, Matrix ipm, GaNumOutermorphism derivedToBaseOm, GaNumOutermorphism baseToDerivedOm)
        {
            if (baseOrthoFrame.IsOrthogonal == false)
            {
                throw new GMacNumericException("Base frame must be orthogonal");
            }

            if (ipm.IsDiagonal())
            {
                throw new GMacNumericException("Inner product matrix must be non-diagonal");
            }

            InnerProductMatrix = ipm;

            NonOrthogonalMetric =
                new GaNumMetricNonOrthogonal(
                    baseOrthoFrame,
                    this,
                    derivedToBaseOm,
                    baseToDerivedOm
                    );

            Op  = ComputedOp = new GaNumOp(VSpaceDimension);
            Gp  = ComputedGp = GaNumBilinearProductCba.CreateGp(NonOrthogonalMetric);
            Sp  = ComputedSp = GaNumBilinearProductCba.CreateSp(NonOrthogonalMetric);
            Lcp = ComputedLcp = GaNumBilinearProductCba.CreateLcp(NonOrthogonalMetric);
            Rcp = ComputedRcp = GaNumBilinearProductCba.CreateRcp(NonOrthogonalMetric);
            Fdp = ComputedFdp = GaNumBilinearProductCba.CreateFdp(NonOrthogonalMetric);
            Hip = ComputedHip = GaNumBilinearProductCba.CreateHip(NonOrthogonalMetric);
            Acp = ComputedAcp = GaNumBilinearProductCba.CreateAcp(NonOrthogonalMetric);
            Cp  = ComputedCp = GaNumBilinearProductCba.CreateCp(NonOrthogonalMetric);

            UnitPseudoScalarCoef =
                (MaxBasisBladeId.BasisBladeIdHasNegativeReverse() ? -1.0d : 1.0d) /
                BasisBladeSignature(MaxBasisBladeId)[0];
        }
Example #3
0
 private GaNumBilinearProductCba(GaNumMetricNonOrthogonal metric, IGaNumMapBilinear baseProductMap)
 {
     NonOrthogonalMetric = metric;
     BaseProductMap      = baseProductMap;
 }