Skip to content

Commit 29a1219

Browse files
committed
Introduce BS<> alias
1 parent 5b65ad8 commit 29a1219

File tree

4 files changed

+32
-37
lines changed

4 files changed

+32
-37
lines changed

cpp/demo/custom_kernel/main.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -168,10 +168,9 @@ double assemble_vector1(const mesh::Geometry<T>& g, const fem::DofMap& dofmap,
168168
md::mdspan<const T, md::extents<std::size_t, md::dynamic_extent, 3>> x(
169169
g.x().data(), g.x().size() / 3, 3);
170170
common::Timer timer("Assembler1 lambda (vector)");
171-
fem::impl::assemble_cells<T, std::integral_constant<int, 1>>(
171+
fem::impl::assemble_cells<T, BS<1>>(
172172
[](auto, auto, auto, auto) {}, b.mutable_array(), g.dofmap(), x, cells,
173-
{dofmap.map(), std::integral_constant<int, 1>(), cells}, kernel, {}, {},
174-
{});
173+
{dofmap.map(), BS<1>(), cells}, kernel, {}, {}, {});
175174
b.scatter_rev(std::plus<T>());
176175
return la::squared_norm(b);
177176
}

cpp/dolfinx/common/types.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ concept BlockSize
5454
requires T::value >= 1 && T::value <= MaxOptimizedBlockSize;
5555
});
5656

57+
/// @private Short notation for a compile time block size.
58+
template <int N>
59+
using BS = std::integral_constant<int, N>;
60+
5761
/// @private Check if block size is a compile time constant.
5862
template <BlockSize T>
5963
constexpr bool is_compile_time_v = !std::is_same_v<T, int>;

cpp/dolfinx/fem/assemble_vector_impl.h

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -920,21 +920,17 @@ void lift_bc(std::span<T> b, const Form<T, U>& a, mdspan2_t x_dofmap,
920920
auto coeffs = md::mdspan(_coeffs.data(), cells.size(), cstride);
921921
if (bs0 == 1 and bs1 == 1)
922922
{
923-
_lift_bc_cells<T, std::integral_constant<int, 1>,
924-
std::integral_constant<int, 1>>(
925-
b, x_dofmap, x, kernel, cells,
926-
{dofmap0, std::integral_constant<int, 1>(), cells0}, P0,
927-
{dofmap1, std::integral_constant<int, 1>(), cells1}, P1T, constants,
928-
coeffs, cell_info0, cell_info1, bc_values1, bc_markers1, x0, alpha);
923+
_lift_bc_cells<T, BS<1>, BS<1>>(
924+
b, x_dofmap, x, kernel, cells, {dofmap0, BS<1>(), cells0}, P0,
925+
{dofmap1, BS<1>(), cells1}, P1T, constants, coeffs, cell_info0,
926+
cell_info1, bc_values1, bc_markers1, x0, alpha);
929927
}
930928
else if (bs0 == 3 and bs1 == 3)
931929
{
932-
_lift_bc_cells<T, std::integral_constant<int, 3>,
933-
std::integral_constant<int, 3>>(
934-
b, x_dofmap, x, kernel, cells,
935-
{dofmap0, std::integral_constant<int, 3>(), cells0}, P0,
936-
{dofmap1, std::integral_constant<int, 3>(), cells1}, P1T, constants,
937-
coeffs, cell_info0, cell_info1, bc_values1, bc_markers1, x0, alpha);
930+
_lift_bc_cells<T, BS<3>, BS<3>>(
931+
b, x_dofmap, x, kernel, cells, {dofmap0, BS<3>(), cells0}, P0,
932+
{dofmap1, BS<3>(), cells1}, P1T, constants, coeffs, cell_info0,
933+
cell_info1, bc_values1, bc_markers1, x0, alpha);
938934
}
939935
else
940936
{
@@ -1158,16 +1154,14 @@ void assemble_vector(
11581154
assert(cells.size() * cstride == coeffs.size());
11591155
if (bs == 1)
11601156
{
1161-
impl::assemble_cells<T, std::integral_constant<int, 1>>(
1162-
P0, b, x_dofmap, x, cells,
1163-
{dofs, std::integral_constant<int, 1>(), cells0}, fn, constants,
1157+
impl::assemble_cells<T, BS<1>>(
1158+
P0, b, x_dofmap, x, cells, {dofs, BS<1>(), cells0}, fn, constants,
11641159
md::mdspan(coeffs.data(), cells.size(), cstride), cell_info0);
11651160
}
11661161
else if (bs == 3)
11671162
{
1168-
impl::assemble_cells<T, std::integral_constant<int, 3>>(
1169-
P0, b, x_dofmap, x, cells,
1170-
{dofs, std::integral_constant<int, 3>(), cells0}, fn, constants,
1163+
impl::assemble_cells<T, BS<3>>(
1164+
P0, b, x_dofmap, x, cells, {dofs, BS<3>(), cells0}, fn, constants,
11711165
md::mdspan(coeffs.data(), cells.size(), cstride), cell_info0);
11721166
}
11731167
else
@@ -1209,17 +1203,15 @@ void assemble_vector(
12091203
if (bs == 1)
12101204
{
12111205

1212-
impl::assemble_exterior_facets<T, std::integral_constant<int, 1>>(
1213-
P0, b, x_dofmap, x, facets,
1214-
{dofs, std::integral_constant<int, 1>(), facets1}, fn, constants,
1206+
impl::assemble_exterior_facets<T, BS<1>>(
1207+
P0, b, x_dofmap, x, facets, {dofs, BS<1>(), facets1}, fn, constants,
12151208
md::mdspan(coeffs.data(), facets.extent(0), cstride), cell_info0,
12161209
perms);
12171210
}
12181211
else if (bs == 3)
12191212
{
1220-
impl::assemble_exterior_facets<T, std::integral_constant<int, 3>>(
1221-
P0, b, x_dofmap, x, facets,
1222-
{dofs, std::integral_constant<int, 3>(), facets1}, fn, constants,
1213+
impl::assemble_exterior_facets<T, BS<3>>(
1214+
P0, b, x_dofmap, x, facets, {dofs, BS<3>(), facets1}, fn, constants,
12231215
md::mdspan(coeffs.data(), facets.size() / 2, cstride), cell_info0,
12241216
perms);
12251217
}
@@ -1250,21 +1242,21 @@ void assemble_vector(
12501242
assert((facets.size() / 4) * 2 * cstride == coeffs.size());
12511243
if (bs == 1)
12521244
{
1253-
impl::assemble_interior_facets<T, std::integral_constant<int, 1>>(
1245+
impl::assemble_interior_facets<T, BS<1>>(
12541246
P0, b, x_dofmap, x,
12551247
mdspanx22_t(facets.data(), facets.size() / 4, 2, 2),
1256-
{*dofmap, std::integral_constant<int, 1>(),
1248+
{*dofmap, BS<1>(),
12571249
mdspanx22_t(facets1.data(), facets1.size() / 4, 2, 2)},
12581250
fn, constants,
12591251
mdspanx2x_t(coeffs.data(), facets.size() / 4, 2, cstride),
12601252
cell_info0, perms);
12611253
}
12621254
else if (bs == 3)
12631255
{
1264-
impl::assemble_interior_facets<T, std::integral_constant<int, 3>>(
1256+
impl::assemble_interior_facets<T, BS<3>>(
12651257
P0, b, x_dofmap, x,
12661258
mdspanx22_t(facets.data(), facets.size() / 4, 2, 2),
1267-
{*dofmap, std::integral_constant<int, 3>(),
1259+
{*dofmap, BS<3>(),
12681260
mdspanx22_t(facets1.data(), facets1.size() / 4, 2, 2)},
12691261
fn, constants,
12701262
mdspanx2x_t(coeffs.data(), facets.size() / 4, 2, cstride),

cpp/dolfinx/fem/pack.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,8 @@ void pack_coefficient_entity(std::span<T> c, int cstride,
108108
if (std::int32_t cell = cells(e); cell >= 0)
109109
{
110110
auto cell_coeff = c.subspan(e * cstride + offset, space_dim);
111-
pack_impl(cell_coeff, cell, std::integral_constant<int, 1>(), v,
112-
cell_info, dofmap, transformation);
111+
pack_impl(cell_coeff, cell, BS<1>(), v, cell_info, dofmap,
112+
transformation);
113113
}
114114
}
115115
break;
@@ -119,8 +119,8 @@ void pack_coefficient_entity(std::span<T> c, int cstride,
119119
if (std::int32_t cell = cells(e); cell >= 0)
120120
{
121121
auto cell_coeff = c.subspan(e * cstride + offset, space_dim);
122-
pack_impl(cell_coeff, cell, std::integral_constant<int, 2>(), v,
123-
cell_info, dofmap, transformation);
122+
pack_impl(cell_coeff, cell, BS<2>(), v, cell_info, dofmap,
123+
transformation);
124124
}
125125
}
126126
break;
@@ -130,8 +130,8 @@ void pack_coefficient_entity(std::span<T> c, int cstride,
130130
if (std::int32_t cell = cells(e); cell >= 0)
131131
{
132132
auto cell_coeff = c.subspan(e * cstride + offset, space_dim);
133-
pack_impl(cell_coeff, cell, std::integral_constant<int, 3>(), v,
134-
cell_info, dofmap, transformation);
133+
pack_impl(cell_coeff, cell, BS<3>(), v, cell_info, dofmap,
134+
transformation);
135135
}
136136
}
137137
break;

0 commit comments

Comments
 (0)