On 22 Dec 2014, at 15:21, Homolya, Miklós <m.homolya14@imperial.ac.uk> wrote:multigrid-automation was merged. Use master.
________________________________
From: firedrake-bounces@imperial.ac.uk [firedrake-bounces@imperial.ac.uk] on behalf of Eike Mueller [e.mueller@bath.ac.uk]
Sent: 22 December 2014 15:20
To: firedrake
Subject: Re: [firedrake] 1+1 dimensional hierarchical meshes and function spaces
Hi Lawrence,
has the multigrid-automation branch been deleted on the server, and if so, which branch should I use instead? I get the following error when I try to pull that branch:
eikemueller@Eikes-MBP $ git branch
master
* multigrid-automation
multigrid-parallel
eikemueller@Eikes-MBP $ git pull
Your configuration specifies to merge with the ref 'multigrid-automation'
from the remote, but no such ref was fetched.
The 2d multigrid now seems to work, but in the 3d case I get the error message shown below
Thanks,
Eike
==================================== ERRORS ====================================
_____________ ERROR at setup of test_pressuresolve_lowest_order[3] _____________
finite_elements = (FiniteElement('Raviart-Thomas', Domain(Cell('triangle', 2), label=None, data=None), 1, quad_scheme=None), FiniteEleme...one), FiniteElement('Discontinuous Lagrange', Domain(Cell('interval', 1), label=None, data=None), 0, quad_scheme=None))
mesh_hierarchy = <firedrake.mg.mesh.ExtrudedMeshHierarchy object at 0x10cac98d0>
@pytest.fixture
def W2_horiz_hierarchy(finite_elements,mesh_hierarchy):
'''Horizontal velocity space hierarchy.
Build pressure space :math:`W_2^{h}=HDiv(U_1\otimes V_1)`
hierarchy.
:arg finite_elements: Horizontal and vertical finite element
:arg mesh: Underlying extruded mesh
'''
U1, U2, V0, V1 = finite_elements
# Three dimensional elements
W2_elt = HDiv(OuterProductElement(U1,V1))
if (mesh_hierarchy != None):W2_horiz_hierarchy = FunctionSpaceHierarchy(mesh_hierarchy,W2_elt)
fixtures.py:243:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <firedrake.mg.functionspace.FunctionSpaceHierarchy object at 0x10cc28950>
mesh_hierarchy = <firedrake.mg.mesh.ExtrudedMeshHierarchy object at 0x10cac98d0>
family = HDiv(OuterProductElement(*[FiniteElement('Raviart-Thomas', Domain(Cell('triang...ductCell(*[Cell('triangle', 2), Cell('interval', 1)]), label=None, data=None)))
degree = None, name = None, vfamily = None, vdegree = None
def __init__(self, mesh_hierarchy, family, degree=None,
name=None, vfamily=None, vdegree=None):
"""
:arg mesh_hierarchy: a :class:`~.MeshHierarchy` to build the
function spaces on.
:arg family: the function space family
:arg degree: the degree of the function space
See :class:`~.FunctionSpace` for more details on the form of
the remaining parameters.
"""
fses = [functionspace.FunctionSpace(m, family, degree=degree,
name=name, vfamily=vfamily,
vdegree=vdegree)
for m in mesh_hierarchy]
self.dim = 1super(FunctionSpaceHierarchy, self).__init__(mesh_hierarchy, fses)
../../../firedrake/firedrake/mg/functionspace.py:269:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <firedrake.mg.functionspace.FunctionSpaceHierarchy object at 0x10cc28950>
mesh_hierarchy = <firedrake.mg.mesh.ExtrudedMeshHierarchy object at 0x10cac98d0>
fses = [<firedrake.functionspace.FunctionSpace object at 0x10cc289d0>, <firedrake.functionspace.FunctionSpace object at 0x10c...rake.functionspace.FunctionSpace object at 0x10cc28b50>, <firedrake.functionspace.FunctionSpace object at 0x10cc28bd0>]
def __init__(self, mesh_hierarchy, fses):
"""
Build a hierarchy of function spaces
:arg mesh_hierarchy: a :class:`~.MeshHierarchy` on which to
build the function spaces.
:arg fses: an iterable of :class:`~.FunctionSpace`\s.
"""
self._mesh_hierarchy = mesh_hierarchy
self._hierarchy = tuple(fses)
self._map_cache = {}
self._cell_sets = tuple(op2.LocalSet(m.cell_set) for m in self._mesh_hierarchy)
self._ufl_element = self[0].ufl_element()
self._restriction_weights = None
element = self.ufl_element()
family = element.family()
degree = element.degree()
self._P0 = ((family == "OuterProductElement" and(element._A.family() == "Discontinuous Lagrange" andelement._B.family() == "Discontinuous Lagrange" and
degree == (0, 0))) or
(family == "Discontinuous Lagrange" and degree == 0))
E AttributeError: _A
../../../firedrake/firedrake/mg/functionspace.py:40: AttributeError
--
Dr Eike Hermann Mueller
Research Associate (PostDoc)
Department of Mathematical Sciences
University of Bath
Bath BA2 7AY, United Kingdom
+44 1225 38 5803
e.mueller@bath.ac.uk<mailto:e.mueller@bath.ac.uk>
http://people.bath.ac.uk/em459/
On 8 Dec 2014, at 14:44, Lawrence Mitchell <lawrence.mitchell@imperial.ac.uk<mailto:lawrence.mitchell@imperial.ac.uk>> wrote:
On 7 Dec 2014, at 19:11, Lawrence Mitchell <lawrence.mitchell@imperial.ac.uk<mailto:lawrence.mitchell@imperial.ac.uk>> wrote:
On 7 Dec 2014, at 17:49, Eike Mueller <e.mueller@bath.ac.uk<mailto:e.mueller@bath.ac.uk>> wrote:
Dear firedrakers,
do the hierarchical meshes and function spaces currently only work in 2+1 dimension and not for 1+1? If I run the code below it works for dimension=3, but if I replace this by dimension=2 it crashes with
[0]PETSC ERROR: DMPlexGetCellRefiner_Internal() line 6777 in /Users/eikemueller/PostDocBath/EllipticSolvers/petsc/src/dm/impls/plex/plexrefine.c
Unknown dimension 1 for cell refiner
--------------------------------------------------------------------------
MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD
with errorcode 62.
NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
You may or may not see output from other processes, depending on
exactly when Open MPI kills them.
--------------------------------------------------------------------------
I want to work in dimension=2+1, but having dimension=1+1 would be useful for testing.
There are two parts of this that won't work:
1. DMPlex doesn't know how to refine intervals: that's the error above.
I think this is easy to add, so can have a go.
2. I haven't added the necessary numbering magic and so forth for the generated interval mesh hierarchies.
If 1. is done, I think this should not be too difficult to add, but might take a little while.
I did this this morning. The multigrid-automation branch (which will hopefully merge soon) adds support for grid transfers on refined intervals (and DG0 on extruded intervals). You'll need (until it's merged upstream) the mapdes/petsc branch dmplex-1d-refinement if you want to try things.
I would be inclined to wait a bit until things are merged and settled down :).
Lawrence
_______________________________________________
firedrake mailing list
firedrake@imperial.ac.uk<mailto:firedrake@imperial.ac.uk>
https://mailman.ic.ac.uk/mailman/listinfo/firedrake
<winmail.dat>_______________________________________________
firedrake mailing list
firedrake@imperial.ac.uk
https://mailman.ic.ac.uk/mailman/listinfo/firedrake