In step16 function assemble_system() and assemble_multigrid(), there are 2 variables/functions defined as:
auto cell_worker =
[&](const typename DoFHandler<dim>::active_cell_iterator &cell,
ScratchData<dim> & scratch_data,
CopyData & copy_data)
{
this->cell_worker(cell, scratch_data, copy_data);
};
auto copier =
[&](const CopyData &cd)
{
this->constraints.distribute_local_to_global(cd.cell_matrix,
cd.cell_rhs,
cd.local_dof_indices,
system_matrix,
system_rhs);
};
I'm not expert in C++ and these codes seem confusing to me. Are cell_worker and copier defined here variables or functions? And why we define a new cell_worker here (is it because we cannot directly pass this->cell_worker to MeshWorker::mesh_loop) ? Sorry it might be silly. Should I know the terminology for this "technique" I can google myself.
Thank you.