Esempio n. 1
0
        public void Solve()
        {
            mb        = new MeshBuilder(Info.Points.Length);
            NodeCount = mb.Build(Info.Mesh);

            mb.BuildBoundary(Info.FB);
            mb.BuildBoundary(Info.SB);

            pb = new PortraitBuilder(NodeCount, Info.Mesh);
            MatrixPortrait mp = new MatrixPortrait();

            pb.Build(mp);

            IMatrix A = new SymmetricSparseMatrix(NodeCount, mp);

            double[] B = new double[NodeCount];

            SLAEInfo slaeinfo = new SLAEInfo();

            slaeinfo.Points = Info.Points;
            slaeinfo.Mesh   = Info.Mesh;
            slaeinfo.F      = Info.F;

            sb = new SLAEBuilder(slaeinfo);
            sb.Build(A, B);
            sb.AddBoundary(A, B, Info.FB);
            sb.AddBoundary(A, B, Info.SB);

            Weights = Solver.Solve(A, B);
        }
Esempio n. 2
0
        public SLAEBuilder(SLAEInfo info)
        {
            Info = info;

            local  = new double[FEMInfo.BasisSize, FEMInfo.BasisSize];
            localb = new double[FEMInfo.BasisSize];

            BuildPatterns();
        }