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); }
public SLAEBuilder(SLAEInfo info) { Info = info; local = new double[FEMInfo.BasisSize, FEMInfo.BasisSize]; localb = new double[FEMInfo.BasisSize]; BuildPatterns(); }