Esempio n. 1
0
def MaxCellEdgeLength(mesh: cpp.mesh.Mesh) -> ufl.MaxCellEdgeLength:
    """Return symbolic maximum cell edge length of a cell
    for given mesh.

    *Example of usage*

        .. code-block:: python

            mesh = UnitSquare(4,4)
            maxce = MaxCellEdgeLength(mesh)

    """

    return ufl.MaxCellEdgeLength(mesh.ufl_domain())
def MaxCellEdgeLength(mesh):
    """Return symbolic maximum cell edge length of a cell
    for given mesh.

    *Arguments*
        mesh
            a :py:class:`Mesh <dolfin.cpp.Mesh>`.

    *Example of usage*

        .. code-block:: python

            mesh = UnitSquare(4,4)
            maxce = MaxCellEdgeLength(mesh)

    """

    return ufl.MaxCellEdgeLength(_mesh2domain(mesh))
Esempio n. 3
0
iu = lambda s: ufl.conditional(s > 1.25, 1, 0)
top = 1.0
if dim == 3:
    top = ufl.conditional(x[2] > 1.25, 1, 0)

initial_u = iu(x[1]) * top + iu(2.5 - x[1]) * (1.0 - top)
initial_v = ufl.conditional(x[0] < 1.25, 0.5, 0)

uh = space.interpolate(initial_u, name="u")
uh_n = uh.copy()
vh = space.interpolate(initial_v, name="v")
vh_n = vh.copy()

u = ufl.TrialFunction(space)
phi = ufl.TestFunction(space)
hT = ufl.MaxCellEdgeLength(space.cell())
hS = ufl.avg(ufl.MaxFacetEdgeLength(space.cell()))
hs = ufl.MaxFacetEdgeLength(space.cell())('+')
n = ufl.FacetNormal(space.cell())

ustar = lambda v: (v + spiral_b) / spiral_a
diffusiveFlux = lambda w, d: spiral_D * d
source = lambda u1, u2, u3, v: -1 / spiral_eps * u1 * (1 - u2) * (u3 - ustar(v)
                                                                  )
source = lambda u1, u2, u3, v: -1 / spiral_eps * u1 * (1 - u2) * (u3 - ustar(v)
                                                                  )

xForm = inner(diffusiveFlux(u, grad(u)), grad(phi)) * dx
xForm += ufl.conditional(uh_n < ustar(vh_n), source(u, uh_n, uh_n, vh_n),
                         source(uh_n, u, uh_n, vh_n)) * phi * dx