const FiniteElement<dim> &low,
dFMatrix& result)
{
- result.reinit (high.total_dofs, low.total_dofs);
+ result.reinit (low.total_dofs, high.total_dofs);
vector<Point<dim> > unit_support_points (high.total_dofs);
high.get_unit_support_points (unit_support_points);
- for (unsigned int i=0; i<high.total_dofs; ++i)
- for (unsigned int j=0; j<low.total_dofs; ++j)
- result(i,j) = low.shape_value (j, unit_support_points[i]);
+ for (unsigned int i=0; i<low.total_dofs; ++i)
+ for (unsigned int j=0; j<high.total_dofs; ++j)
+ result(i,j) = high.shape_value (j, unit_support_points[i]);
}
const dVector &high,
dVector &low)
{
+ dVector cell_high(high_dof.get_fe().total_dofs);
+ dVector cell_low(low_dof.get_fe().total_dofs);
+ DoFHandler<dim>::active_cell_iterator h = high_dof.begin_active();
+ DoFHandler<dim>::active_cell_iterator l = low_dof.begin_active();
+
+ for(; h != high_dof.end(); ++h, ++l)
+ {
+ h->get_dof_values(high, cell_high);
+ transfer.vmult(cell_low, cell_high);
+ l->distribute_local_to_global(cell_low, low);
+ }
}
#if deal_II_dimension == 1