On Fri, 6 Sep 2013 15:59:19 +0200 "Garth N. Wells" <[email protected]> wrote: > On 6 September 2013 12:45, Jan Blechta <[email protected]> > wrote: > > It seems that for P1*R function space DofMapBuilder::reorder_local > > scales quadratically with number of DOFs. Is it inevitable? > > > > Yes. The 'Real' dof is coupled to all dofs, destroying graph sparsity. > > The solutions are (a) extend DofMapBuilder to re-order just sub-dofmap > or (b) do not use Real for anything other than small problems (for > nullspace, they can be handled by an iterative solve). It doesn't play > well with linear solvers, it's bad for assembly and its bad in > parallel.
Ok, I see. Is a result of the following code somewhat similar to approach (a)? ========================================= # Build reordered subspaces parameters['reorder_dofs_serial'] = True P1 = FunctionSpace(mesh, 'CG', 1) R = FunctionSpace(mesh, 'R', 0) # Build mixed space, do not reorder parameters['reorder_dofs_serial'] = False V = P1*R ========================================= Jan > > Garth > > > > ================================================================= > > from dolfin import * > > import time > > import numpy as np > > import matplotlib.pyplot as plt > > > > #set_log_level(DEBUG) > > #parameters['reorder_dofs_serial'] = False > > > > for n in range(25, 33): > > > > mesh = UnitCubeMesh(n, n, n) > > #mesh = UnitSquareMesh(10*n, 10*n) > > P1 = FunctionSpace(mesh, 'CG', 1) > > R = FunctionSpace(mesh, 'R', 0) > > > > # Measure time for creation of P1*R space > > t = time.time() > > V = P1*R > > t = time.time() - t > > > > # Report > > print 'DOFs:', V.dim(), 'TIME:', t, 'TIME/DOF:', t/V.dim() > > plt.loglog(V.dim(), t, 'o') > > > > # Plot some quadratic function for comparison > > xl = plt.xlim() > > yl = plt.ylim() > > x = np.linspace(*xl) > > y = map(lambda x:yl[0]/(xl[0]*xl[0])*x*x, x) > > plt.loglog(x, y) > > > > # Show plot > > plt.show() > > ================================================================= > > > > Jan > > _______________________________________________ > > fenics mailing list > > [email protected] > > http://fenicsproject.org/mailman/listinfo/fenics > _______________________________________________ > fenics mailing list > [email protected] > http://fenicsproject.org/mailman/listinfo/fenics _______________________________________________ fenics mailing list [email protected] http://fenicsproject.org/mailman/listinfo/fenics
