++thread;
c = 0;
- };
- };
+ }
+ }
blocking[n_threads - 1].second = matrix->m();
using FunPtr =
{
inverses[row] = &local_matrix;
inverses[row]->reinit(row_length, row_length);
- };
+ }
b.reinit(row_length);
x.reinit(row_length);
++block;
c = 0;
- };
- };
+ }
+ }
intervals[n_blocks - 1].second = M.m();
- };
+ }
// now transfer the knowledge on
// the splitting points into the
intervals[block].second - intervals[block].first,
true);
break;
- };
+ }
case adaptive:
{
const size_type row_length = structure.row_length(row);
for (size_type i = 0; i < row_length; ++i)
++access_count[block_number][structure.column_number(row, i)];
- };
+ }
// now we know that block @p i
// wants to write to DoF @p j
{
max_accesses = access_count[block][row];
max_access_block = block;
- };
+ }
dof_masks[max_access_block][row] = true;
- };
+ }
break;
- };
+ }
default:
Assert(false, ExcInternalError());
- };
+ }
}
{
parameter_dofs[local_coarse_dof](fine_dof) = 1.;
break;
- };
+ }
// find out how many DoFs there are on the grids belonging to the
if (fine_fe.system_to_component_index(i).first ==
fine_component)
dof_is_interesting[local_dof_indices[i]] = true;
- };
+ }
n_parameters_on_fine_grid = std::count(dof_is_interesting.begin(),
dof_is_interesting.end(),
true);
- };
+ }
// set up the weights mapping
{
weight_mapping[local_dof_indices[i]] = next_free_index;
++next_free_index;
- };
- };
+ }
+ }
Assert(next_free_index == n_parameters_on_fine_grid,
ExcInternalError());
- };
+ }
// for each cell on the parameter grid: find out which degrees of
Assert((std::fabs(sum - 1) < 1.e-12) ||
((coarse_fe.n_components() > 1) && (sum == 0)),
ExcInternalError());
- };
+ }
#endif
// consistency check: if this is no parameter dof on the coarse grid,
// then the respective row must be empty!
Assert(weights[parameter_dof].size() == 0, ExcInternalError());
- };
+ }
weights[row].find(col);
if ((j != weights[row].end()) && (j->second != 0))
constraint_line.emplace_back(representants[row], j->second);
- };
+ }
constraints.add_entries(global_dof, constraint_line);
- };
+ }
}
ExcInternalError());
inverse_weight_mapping[parameter_dof] = i;
- };
- };
+ }
+ }
// next copy over weights array and replace respective numbers
const types::global_dof_index n_rows = weight_mapping.size();
Assert(p < n_rows, ExcInternalError());
transfer_representation[p][i] = j->second;
- };
- };
+ }
+ }
}