diff --git a/DG_Approximation.py b/DG_Approximation.py index 086c8b9034c6ad43a6063cbfee0f250014073c5e..6abea2d35b00f42aa2fc06e566e09f1f0aa4efb1 100644 --- a/DG_Approximation.py +++ b/DG_Approximation.py @@ -15,8 +15,8 @@ TODO: Ask whether all quadratures depend on freely chosen num_nodes Urgent: TODO: Replace getter with property attributes for quadrature -> Done -TODO: Rename eval_points in Quadrature to nodes -TODO: Make num_nodes quadrature argument +TODO: Rename eval_points in Quadrature to nodes -> Done +TODO: Improve docstring for quadrature TODO: Remove use of DGScheme from ANN_Data_Generator TODO: Find error in centering for ANN training TODO: Adapt TCD from Soraya @@ -359,11 +359,11 @@ def do_initial_projection(initial_condition, mesh, basis, quadrature, for degree in range(basis.polynomial_degree + 1): new_row.append(np.float64(sum(initial_condition.calculate( mesh, eval_point + mesh.cell_len/2 - * quadrature.eval_points[point] - adjustment) + * quadrature.nodes[point] - adjustment) * basis.basis[degree].subs( - x, quadrature.eval_points[point]) + x, quadrature.nodes[point]) * quadrature.weights[point] - for point in range(quadrature.num_points)))) + for point in range(quadrature.num_nodes)))) new_row = np.array(new_row) output_matrix.append(basis.inverse_mass_matrix @ new_row) diff --git a/Plotting.py b/Plotting.py index 38c7dc7de09e7c1e1d5faea94d7197a027b9613b..87c06211251857fb7dcb3c3183c12c5965136e25 100644 --- a/Plotting.py +++ b/Plotting.py @@ -421,7 +421,7 @@ def plot_results(projection: ndarray, troubled_cell_history: list, grid, exact = calculate_exact_solution( mesh, wave_speed, final_time, quadrature, init_cond) approx = calculate_approximate_solution( - projection[:, 1:-1], quadrature.eval_points, + projection[:, 1:-1], quadrature.nodes, basis.polynomial_degree, basis.basis) # Plot multiwavelet solution (fine and coarse grid) @@ -434,7 +434,7 @@ def plot_results(projection: ndarray, troubled_cell_history: list, coarse_grid, coarse_exact = calculate_exact_solution( coarse_mesh, wave_speed, final_time, quadrature, init_cond) coarse_approx = calculate_approximate_solution( - coarse_projection, quadrature.eval_points, + coarse_projection, quadrature.nodes, basis.polynomial_degree, basis.basis) plot_solution_and_approx( coarse_grid, coarse_exact, coarse_approx, colors['coarse_exact'], diff --git a/Quadrature.py b/Quadrature.py index 79c796476a8bb6845f0616e5146cd744c80f8a7a..1091d776753e4b0084f22d7e4b9b01ab6e7e531f 100644 --- a/Quadrature.py +++ b/Quadrature.py @@ -18,10 +18,10 @@ class Quadrature(ABC): ---------- name : str String of class name. - num_eval_points : int - Number of evaluation points per cell used for approximation. - eval_points : ndarray - Evaluation points per cell used for approximation. + num_nodes : int + Number of nodes (evaluation points) per cell used for approximation. + nodes : ndarray + Nodes (evaluation points) per cell used for approximation. weights : ndarray Weights used for approximation calculation. @@ -46,8 +46,8 @@ class Quadrature(ABC): Additional parameters for quadrature. """ - self._num_eval_points = None - self._eval_points = None + self._num_nodes = None + self._nodes = None self._weights = None @property @@ -56,14 +56,14 @@ class Quadrature(ABC): return self.__class__.__name__ @property - def num_points(self) -> int: - """Returns number of evaluation points.""" - return self._num_eval_points + def num_nodes(self) -> str: + """Returns number of nodes (evaluation points).""" + return self._num_nodes @property - def eval_points(self) -> ndarray: - """Returns evaluation points.""" - return self._eval_points + def nodes(self) -> ndarray: + """Returns nodes (evaluation points).""" + return self._nodes @property def weights(self) -> ndarray: @@ -78,10 +78,10 @@ class Gauss(Quadrature): ---------- name : str String of class name. - num_eval_points : int - Number of evaluation points per cell used for approximation. - eval_points : ndarray - Evaluation points per cell used for approximation. + num_nodes : int + Number of nodes (evaluation points) per cell used for approximation. + nodes : ndarray + Nodes (evaluation points) per cell used for approximation. weights : ndarray Weights used for approximation calculation. @@ -98,11 +98,11 @@ class Gauss(Quadrature): super()._reset(config) # Unpack necessary configurations - self._num_eval_points = config.pop('num_eval_points', 6) + self._num_nodes = config.pop('num_eval_points', 6) - self._eval_points, self._weights = leg.leggauss(self._num_eval_points) + self._nodes, self._weights = leg.leggauss(self._num_nodes) @property def name(self): """Returns string of class name.""" - return self.__class__.__name__ + str(self._num_eval_points) + return self.__class__.__name__ + str(self._num_nodes) diff --git a/projection_utils.py b/projection_utils.py index f6ace83c00376c8e012ade3708d48c35ccc82c95..9e3a9d4bcc8166dc62c0fdaedffef18df6b5c468 100644 --- a/projection_utils.py +++ b/projection_utils.py @@ -170,7 +170,7 @@ def calculate_exact_solution( for cell_center in mesh.non_ghost_cells: eval_points = cell_center+mesh.cell_len / 2 * \ - quadrature.eval_points + quadrature.nodes eval_values = [] for eval_point in eval_points: