Ejemplo n.º 1
0
 def compat(self):
     import firedrake
     return compat(firedrake)
Ejemplo n.º 2
0
import backend
from dolfin_adjoint_common import compat
from pyadjoint.tape import get_working_tape, stop_annotating
from pyadjoint.overloaded_type import OverloadedType, create_overloaded_object, register_overloaded_type
from pyadjoint.reduced_functional_numpy import gather

from dolfin_adjoint_common.blocks.constant import constant_from_values

from fenics_adjoint.blocks import ConstantAssignBlock

import numpy

compat = compat.compat(backend)


@register_overloaded_type
class Constant(OverloadedType, backend.Constant):
    def __init__(self, *args, **kwargs):
        super(Constant, self).__init__(*args, **kwargs)
        backend.Constant.__init__(self, *args, **kwargs)

    def assign(self, *args, **kwargs):
        annotate_tape = kwargs.pop("annotate_tape", True)
        if annotate_tape:
            other = args[0]
            if not isinstance(other, OverloadedType):
                other = create_overloaded_object(other)

            block = ConstantAssignBlock(other)
            tape = get_working_tape()
            tape.add_block(block)
Ejemplo n.º 3
0
class Backend:
    backend = fenics
    compat = compat(fenics)