Ejemplo n.º 1
0
 def __init__(self, V, expression_type, basis_generation):
     self.V = V
     # Parametrized function to be interpolated
     mock_problem = MockProblem(V)
     f1 = ParametrizedExpression(
         mock_problem, "1/sqrt(pow(x[0]-mu[0], 2) + pow(x[1]-mu[1], 2) + 0.01)", mu=(-1., -1.),
         element=V.sub(1).ufl_element())
     f2 = ParametrizedExpression(
         mock_problem, "exp( - 2*pow(x[0]-mu[0], 2) - 2*pow(x[1]-mu[1], 2) )", mu=(-1., -1.),
         element=V.sub(1).ufl_element())
     f3 = ParametrizedExpression(
         mock_problem, "(1-x[0])*cos(3*pi*(pi+mu[1])*(1+x[1]))*exp(-(pi+mu[0])*(1+x[0]))", mu=(-1., -1.),
         element=V.sub(1).ufl_element())
     #
     folder_prefix = os.path.join("test_eim_approximation_05_tempdir", expression_type, basis_generation)
     assert expression_type in ("Vector", "Matrix")
     if expression_type == "Vector":
         vq = TestFunction(V)
         (v, q) = split(vq)
         form = f1 * v[0] * dx + f2 * v[1] * dx + f3 * q * dx
         # Call Parent constructor
         EIMApproximation.__init__(
             self, mock_problem, ParametrizedTensorFactory(form), folder_prefix, basis_generation)
     elif expression_type == "Matrix":
         up = TrialFunction(V)
         vq = TestFunction(V)
         (u, p) = split(up)
         (v, q) = split(vq)
         form = f1 * inner(grad(u), grad(v)) * dx + f2 * p * div(v) * dx + f3 * q * div(u) * dx
         # Call Parent constructor
         EIMApproximation.__init__(
             self, mock_problem, ParametrizedTensorFactory(form), folder_prefix, basis_generation)
     else:  # impossible to arrive here anyway thanks to the assert
         raise AssertionError("Invalid expression_type")
Ejemplo n.º 2
0
 def __init__(self, V, expression_type, basis_generation):
     self.V = V
     # Parametrized function to be interpolated
     mock_problem = MockProblem(V)
     f = ParametrizedExpression(mock_problem,
                                "0",
                                mu=(1., ),
                                element=V.ufl_element())
     #
     folder_prefix = os.path.join("test_eim_approximation_00_tempdir",
                                  expression_type, basis_generation)
     assert expression_type in ("Function", "Vector", "Matrix")
     if expression_type == "Function":
         # Call Parent constructor
         EIMApproximation.__init__(self, mock_problem,
                                   ParametrizedExpressionFactory(f),
                                   folder_prefix, basis_generation)
     elif expression_type == "Vector":
         v = TestFunction(V)
         form = f * v * dx
         # Call Parent constructor
         EIMApproximation.__init__(self, mock_problem,
                                   ParametrizedTensorFactory(form),
                                   folder_prefix, basis_generation)
     elif expression_type == "Matrix":
         u = TrialFunction(V)
         v = TestFunction(V)
         form = f * u * v * dx
         # Call Parent constructor
         EIMApproximation.__init__(self, mock_problem,
                                   ParametrizedTensorFactory(form),
                                   folder_prefix, basis_generation)
     else:  # impossible to arrive here anyway thanks to the assert
         raise AssertionError("Invalid expression_type")
Ejemplo n.º 3
0
 def __init__(self, V, expression_type, basis_generation):
     self.V = V
     # Parametrized function to be interpolated
     mock_problem = MockProblem(V)
     f_expression = (
         ("1/sqrt(pow(x[0]-mu[0], 2) + pow(x[1]-mu[1], 2) + 0.01)",
          "exp( - 2*pow(x[0]-mu[0], 2) - 2*pow(x[1]-mu[1], 2) )"),
         ("10.*(1-x[0])*cos(3*pi*(pi+mu[1])*(1+x[1]))*exp(-(pi+mu[0])*(1+x[0]))",
          "sqrt(pow(x[0]-mu[0], 2) + pow(x[1]-mu[1], 2) + 0.01)")
     )
     tensor_element = TensorElement(V.sub(0).ufl_element())
     f = ParametrizedExpression(mock_problem, f_expression, mu=(-1., -1.), element=tensor_element)
     #
     folder_prefix = os.path.join("test_eim_approximation_07_tempdir", expression_type, basis_generation)
     assert expression_type in ("Function", "Vector", "Matrix")
     if expression_type == "Function":
         # Call Parent constructor
         EIMApproximation.__init__(
             self, mock_problem, ParametrizedExpressionFactory(f), folder_prefix, basis_generation)
     elif expression_type == "Vector":
         v = TestFunction(V)
         form = inner(f, grad(v)) * dx
         # Call Parent constructor
         EIMApproximation.__init__(
             self, mock_problem, ParametrizedTensorFactory(form), folder_prefix, basis_generation)
     elif expression_type == "Matrix":
         u = TrialFunction(V)
         v = TestFunction(V)
         form = inner(grad(u) * f, grad(v)) * dx
         # Call Parent constructor
         EIMApproximation.__init__(
             self, mock_problem, ParametrizedTensorFactory(form), folder_prefix, basis_generation)
     else:  # impossible to arrive here anyway thanks to the assert
         raise AssertionError("Invalid expression_type")
Ejemplo n.º 4
0
 def __init__(self, V, subdomains, expression_type, basis_generation):
     self.V = V
     # Parametrized function to be interpolated
     mock_problem = MockProblem(V)
     f = ParametrizedExpression(
         mock_problem,
         "exp( - 2*pow(x[0]-mu[0], 2) - 2*pow(x[1]-mu[1], 2) )",
         mu=(0., 0.),
         element=V.ufl_element())
     # Subdomain measure
     dx = Measure("dx")(subdomain_data=subdomains)(1)
     #
     folder_prefix = os.path.join("test_eim_approximation_04_tempdir",
                                  expression_type, basis_generation)
     assert expression_type in ("Vector", "Matrix")
     if expression_type == "Vector":
         v = TestFunction(V)
         form = f * v * dx
         # Call Parent constructor
         EIMApproximation.__init__(self, mock_problem,
                                   ParametrizedTensorFactory(form),
                                   folder_prefix, basis_generation)
     elif expression_type == "Matrix":
         u = TrialFunction(V)
         v = TestFunction(V)
         form = f * u * v * dx
         # Call Parent constructor
         EIMApproximation.__init__(self, mock_problem,
                                   ParametrizedTensorFactory(form),
                                   folder_prefix, basis_generation)
     else:  # impossible to arrive here anyway thanks to the assert
         raise AssertionError("Invalid expression_type")
Ejemplo n.º 5
0
 def __init__(self, V, expression_type, basis_generation):
     self.V = V
     # Parametrized function to be interpolated
     mock_problem = MockProblem(V)
     f1 = ParametrizedExpression(
         mock_problem,
         "1/sqrt(pow(x[0]-mu[0], 2) + pow(x[1]-mu[1], 2) + 0.01)",
         mu=(-1., -1.),
         element=V.sub(1).ufl_element())
     #
     folder_prefix = os.path.join("test_eim_approximation_08_tempdir",
                                  expression_type, basis_generation)
     assert expression_type in ("Vector", "Matrix")
     if expression_type == "Vector":
         q = TestFunction(V.sub(1).collapse())
         form = f1 * q * dx
         # Call Parent constructor
         EIMApproximation.__init__(self, mock_problem,
                                   ParametrizedTensorFactory(form),
                                   folder_prefix, basis_generation)
     elif expression_type == "Matrix":
         up = TrialFunction(V)
         q = TestFunction(V.sub(1).collapse())
         (u, p) = split(up)
         form = f1 * q * div(u) * dx
         # Call Parent constructor
         EIMApproximation.__init__(self, mock_problem,
                                   ParametrizedTensorFactory(form),
                                   folder_prefix, basis_generation)
     else:  # impossible to arrive here anyway thanks to the assert
         raise AssertionError("Invalid expression_type")