Source code for UM2N.generator.equation_solver
# Author: Chunyang Wang
# GitHub Username: chunyang-w
import os
import random
import firedrake as fd
os.environ["OMP_NUM_THREADS"] = "1"
__all__ = ["EquationSolver"]
random.seed(42)
[docs]
class EquationSolver:
    def __init__(
        self, params={"LHS": None, "RHS": None, "function_space": None, "bc": None}
    ):
        self.uh = None
        self.function_space = params["function_space"]
        self.LHS = params["LHS"]
        self.RHS = params["RHS"]
        self.bc = params["bc"]
[docs]
    def solve_eq(self):
        """
        Solves the Helmholtz equation
        """
        uh = fd.Function(self.function_space)
        fd.solve(
            self.LHS == self.RHS,
            uh,
            solver_parameters={"ksp_type": "cg", "pc_type": "none"},
            bcs=self.bc,
        )
        self.uh = uh
        return self.uh