public void Reorder(IReorderingAlgorithm reorderingAlgorithm, ISubdomain subdomain) { var pattern = SparsityPatternSymmetric.CreateEmpty(NumFreeDofs); foreach (var element in subdomain.Elements) { (int[] elementDofIndices, int[] subdomainDofIndices) = MapFreeDofsElementToSubdomain(element); //TODO: ISubdomainFreeDofOrdering could perhaps return whether the subdomainDofIndices are sorted or not. pattern.ConnectIndices(subdomainDofIndices, false); } (int[] permutation, bool oldToNew) = reorderingAlgorithm.FindPermutation(pattern); FreeDofs.Reorder(permutation, oldToNew); }
//TODO: Use the reordering classes of project Solvers. //TODO: If the natural ordering is best, then there is no need to modify the stored dof data. // Find a better way to handle it, perhaps by checking if IReorderingAlgorithm produced a better ordering. public Factory(IReorderingAlgorithm reordering = null) { this.reordering = reordering; }
public SkylineFetiDPSubdomainMatrixManager(ISubdomain subdomain, IReorderingAlgorithm reordering) { this.linearSystem = new SingleSubdomainSystem <SkylineMatrix>(subdomain); this.reordering = reordering; }
public SkylineFetiDPCoarseProblemSolver(IReadOnlyList <ISubdomain> subdomains, IReorderingAlgorithm reordering) { this.subdomains = subdomains; this.reordering = reordering; }
private AmdReordering(IReorderingAlgorithm amd) { this.amd = amd; }