def translate_cellvolume(terminal, mt, ctx): integrand, degree = one_times(ufl.dx(domain=terminal.ufl_domain())) interface = CellVolumeKernelInterface(ctx, mt.restriction) config = {name: getattr(ctx, name) for name in ["ufl_cell", "precision", "index_cache"]} config.update(interface=interface, quadrature_degree=degree) expr, = compile_ufl(integrand, point_sum=True, **config) return expr
def facetarea(): from ufl import Measure assert integral_type != 'cell' integrand, degree = ufl_utils.one_times(Measure(integral_type, domain=domain)) integrand = ufl_utils.replace_coordinates(integrand, coordinate_coefficient) config = kernel_config.copy() config.update(quadrature_degree=degree) expr, = fem.compile_ufl(integrand, point_sum=True, **config) return expr
def cellvolume(restriction): from ufl import dx integrand, degree = ufl_utils.one_times(dx(domain=domain)) integrand = ufl_utils.replace_coordinates(integrand, coordinate_coefficient) interface = CellVolumeKernelInterface(kernel_config["interface"], restriction) config = {k: v for k, v in kernel_config.items() if k in ["ufl_cell", "precision", "index_cache"]} config.update(interface=interface, quadrature_degree=degree) expr, = fem.compile_ufl(integrand, point_sum=True, **config) return expr
def translate_facetarea(terminal, mt, ctx): assert ctx.integral_type != 'cell' domain = terminal.ufl_domain() integrand, degree = one_times(ufl.Measure(ctx.integral_type, domain=domain)) config = {name: getattr(ctx, name) for name in ["ufl_cell", "integration_dim", "entity_ids", "precision", "index_cache"]} config.update(interface=ctx, quadrature_degree=degree) expr, = compile_ufl(integrand, point_sum=True, **config) return expr
def facetarea(): from ufl import Measure assert integral_type != 'cell' integrand, degree = ufl_utils.one_times(Measure(integral_type, domain=domain)) integrand = ufl_utils.replace_coordinates(integrand, coordinate_coefficient) quadrature_index = gem.Index(name='q') config = kernel_config.copy() config.update(quadrature_degree=degree, point_index=quadrature_index) expr, = fem.compile_ufl(integrand, **config) if quadrature_index in expr.free_indices: expr = gem.IndexSum(expr, quadrature_index) return expr
def cellvolume(restriction): from ufl import dx integrand, degree = ufl_utils.one_times(dx(domain=domain)) integrand = ufl_utils.replace_coordinates(integrand, coordinate_coefficient) interface = CellVolumeKernelInterface(kernel_config["interface"], restriction) quadrature_index = gem.Index(name='q') config = {k: v for k, v in kernel_config.items() if k in ["ufl_cell", "precision", "index_cache"]} config.update(interface=interface, quadrature_degree=degree, point_index=quadrature_index) expr, = fem.compile_ufl(integrand, **config) if quadrature_index in expr.free_indices: expr = gem.IndexSum(expr, quadrature_index) return expr