97 {
99
102 const int nb_gauss_pts = pts.size2();
103
105 auto &ptr = data.getBBAlphaIndicesSharedPtr(
field_name);
106 if (!ptr)
108 return *ptr;
109 };
110
113 if (!ptr)
115 return *ptr;
116 };
117
119 auto &ptr = data.getBBDiffNSharedPtr(
field_name);
120 if (!ptr)
122 return *ptr;
123 };
124
126 auto &get_diff_n = get_diff_base(data.
dataOnEntities[MBVERTEX][0]);
127 get_n.resize(nb_gauss_pts, 2, false);
128 get_diff_n.resize(nb_gauss_pts, 2, false);
129 get_n.clear();
130 get_diff_n.clear();
131
133 (unsigned int)nb_gauss_pts)
135 "Base functions or nodes has wrong number of integration points "
136 "for base %s",
139
141 vertex_alpha.resize(2, 2, false);
142 vertex_alpha(0, 0) = data.
dataOnEntities[MBVERTEX][0].getBBNodeOrder()[0];
143 vertex_alpha(0, 1) = 0;
144 vertex_alpha(1, 0) = 0;
145 vertex_alpha(1, 1) = data.
dataOnEntities[MBVERTEX][0].getBBNodeOrder()[1];
146
148 1, nb_gauss_pts, vertex_alpha.size1(), &vertex_alpha(0, 0), &
lambda(0, 0),
150 std::array<double, 2>
f = {
151 boost::math::factorial<double>(
153 boost::math::factorial<double>(
155
156 for (
int g = 0;
g != nb_gauss_pts; ++
g)
157 for (
int n = 0;
n != 2; ++
n) {
159 get_diff_n(
g,
n) *=
f[
n];
160 }
161
165 "Wrong size ent of ent data");
166
169
172 get_n.resize(nb_gauss_pts, nb_dofs, false);
173 get_diff_n.resize(nb_gauss_pts, nb_dofs, false);
174
175 if (nb_dofs) {
177 edge_alpha.resize(nb_dofs, 2);
180 order, nb_gauss_pts, edge_alpha.size1(), &edge_alpha(0, 0),
182 &get_diff_n(0, 0));
183 }
184 } else {
185 get_n.resize(nb_gauss_pts, 0, false);
186 get_diff_n.resize(nb_gauss_pts, 0, false);
187 }
188
190}
const double n
refractive index of diffusive medium
UBlasMatrix< int > MatrixInt
UBlasMatrix< double > MatrixDouble
constexpr auto field_name
static MoFEMErrorCode baseFunctionsEdge(const int N, const int gdim, const int n_alpha, const int *alpha, const double *lambda, const double *grad_lambda, double *base, double *grad_base)
static MoFEMErrorCode generateIndicesEdgeEdge(const int N, int *alpha)
const std::string fieldName
std::array< std::bitset< LASTSPACE >, MBMAXTYPE > spacesOnEntities
spaces on entity types