Example #1
0
    def __init__(self,
                 mesh_hierarchy,
                 layers,
                 kernel=None,
                 layer_height=None,
                 extrusion_type='uniform',
                 gdim=None):
        """Build a hierarchy of extruded meshes by extruded a hierarchy of meshes.

        :arg mesh_hierarchy: the :class:`MeshHierarchy` to extruded

        See :func:`~.ExtrudedMesh` for the meaning of the remaining parameters.
        """
        self._base_hierarchy = mesh_hierarchy
        hierarchy = [
            set_level(
                mesh.ExtrudedMesh(m,
                                  layers,
                                  kernel=kernel,
                                  layer_height=layer_height,
                                  extrusion_type=extrusion_type,
                                  gdim=gdim), self, lvl)
            for lvl, m in enumerate(mesh_hierarchy)
        ]
        self._hierarchy = tuple(hierarchy)
        self._cells_vperm = self._base_hierarchy._cells_vperm
Example #2
0
    def __init__(self,
                 mesh_hierarchy,
                 layers,
                 kernel=None,
                 layer_height=None,
                 extrusion_type='uniform',
                 gdim=None):
        """Build a hierarchy of extruded meshes by extruded a hierarchy of meshes.

        :arg mesh_hierarchy: the :class:`MeshHierarchy` to extruded

        See :func:`~.ExtrudedMesh` for the meaning of the remaining parameters.
        """
        self.comm = mesh_hierarchy.comm
        self._base_hierarchy = mesh_hierarchy
        hierarchy = [
            mesh.ExtrudedMesh(m,
                              layers,
                              kernel=kernel,
                              layer_height=layer_height,
                              extrusion_type=extrusion_type,
                              gdim=gdim)
            for m in mesh_hierarchy._unskipped_hierarchy
        ]
        self._unskipped_hierarchy = tuple(hierarchy)
        self._hierarchy = tuple(
            hierarchy[::mesh_hierarchy.refinements_per_level])
        self._cells_vperm = self._base_hierarchy._cells_vperm
        for level, m in enumerate(self):
            set_level(m, self, level)
        # Attach fractional levels to skipped parts
        for level, m in enumerate(hierarchy):
            if level % mesh_hierarchy.refinements_per_level == 0:
                continue
            set_level(m, self,
                      Fraction(level, mesh_hierarchy.refinements_per_level))
        self.refinements_per_level = mesh_hierarchy.refinements_per_level