12#ifndef __PDETOOLS_EQUATION_EllipticEquation_HPP
13#define __PDETOOLS_EQUATION_EllipticEquation_HPP
38 const std::vector<Eigen::MatrixXd> &trial_basis_functions_derivative_values,
39 const std::vector<Eigen::MatrixXd> &test_basis_functions_derivative_values,
40 const Eigen::VectorXd &quadrature_weights)
const
42 Eigen::MatrixXd cell_matrix = test_basis_functions_derivative_values.at(0).transpose() *
43 quadrature_weights.cwiseProduct(diffusion_term_values).asDiagonal() *
44 trial_basis_functions_derivative_values.at(0);
46 for (
unsigned int d = 1; d < test_basis_functions_derivative_values.size(); ++d)
48 cell_matrix.noalias() += test_basis_functions_derivative_values.at(d).transpose() *
49 quadrature_weights.cwiseProduct(diffusion_term_values).asDiagonal() *
50 trial_basis_functions_derivative_values.at(d);
66 const std::vector<Eigen::MatrixXd> &basis_functions_derivative_values,
67 const Eigen::VectorXd &quadrature_weights)
const
69 return ComputeCellDiffusionMatrix(diffusion_term_values, basis_functions_derivative_values, basis_functions_derivative_values, quadrature_weights);
86 const std::vector<Eigen::MatrixXd> &trial_basis_functions_derivative_values,
87 const std::vector<Eigen::MatrixXd> &test_basis_functions_derivative_values,
88 const Eigen::VectorXd &quadrature_weights)
const
90 const unsigned int dimension = trial_basis_functions_derivative_values.size();
92 Eigen::MatrixXd cell_matrix = Eigen::MatrixXd::Zero(test_basis_functions_derivative_values.at(0).cols(),
93 trial_basis_functions_derivative_values.at(0).cols());
94 for (
unsigned int d1 = 0; d1 < dimension; d1++)
96 for (
unsigned int d2 = 0; d2 < dimension; d2++)
98 cell_matrix.noalias() += test_basis_functions_derivative_values.at(d1).transpose() *
99 quadrature_weights.cwiseProduct(diffusion_term_values.at(d1 + 3 * d2)).asDiagonal() *
100 trial_basis_functions_derivative_values.at(d2);
117 const std::vector<Eigen::MatrixXd> &basis_functions_derivative_values,
118 const Eigen::VectorXd &quadrature_weights)
const
120 return ComputeCellDiffusionMatrix(diffusion_term_values, basis_functions_derivative_values, basis_functions_derivative_values, quadrature_weights);
133 const Eigen::MatrixXd &basis_functions_values,
134 const Eigen::VectorXd &quadrature_weights)
const
136 return basis_functions_values.transpose() * quadrature_weights.cwiseProduct(reaction_term_values).asDiagonal() * basis_functions_values;
149 const Eigen::MatrixXd &trial_basis_functions_values,
150 const Eigen::MatrixXd &test_basis_functions_values,
151 const Eigen::VectorXd &quadrature_weights)
const
153 return test_basis_functions_values.transpose() *
154 quadrature_weights.cwiseProduct(reaction_term_values).asDiagonal() * trial_basis_functions_values;
170 const Eigen::MatrixXd &test_basis_functions_values,
171 const std::vector<Eigen::MatrixXd> &trial_basis_functions_derivative_values,
172 const Eigen::VectorXd &quadrature_weights)
const
174 Eigen::MatrixXd cell_matrix = test_basis_functions_values.transpose() *
175 quadrature_weights.cwiseProduct(advection_term_values[0]).asDiagonal() *
176 trial_basis_functions_derivative_values[0];
178 for (
unsigned int d = 1; d < trial_basis_functions_derivative_values.size(); ++d)
180 cell_matrix.noalias() += test_basis_functions_values.transpose() *
181 quadrature_weights.cwiseProduct(advection_term_values.at(d)).asDiagonal() *
182 trial_basis_functions_derivative_values.at(d);
197 const Eigen::MatrixXd &test_basis_functions_values,
198 const Eigen::VectorXd &quadrature_weights)
const
200 return test_basis_functions_values.transpose() * quadrature_weights.asDiagonal() * forcing_term_values;
214 const std::vector<Eigen::MatrixXd> &test_basis_functions_values,
215 const Eigen::VectorXd &quadrature_weights)
const
217 Eigen::MatrixXd rightHandSide =
218 test_basis_functions_values[0].transpose() * quadrature_weights.asDiagonal() * forcing_term_values[0];
220 for (
unsigned int d = 1; d < test_basis_functions_values.size(); d++)
222 rightHandSide.noalias() +=
223 test_basis_functions_values[d].transpose() * quadrature_weights.asDiagonal() * forcing_term_values[d];
226 return rightHandSide;
Definition FEM_MCC_2D_LocalSpace.cpp:17