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))
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