template <int dim> void OutputResults<dim>::output_volume (const unsigned int timestep){
std::vector<std::string> solution_names (dim, "displacement");
std::vector<DataComponentInterpretation::DataComponentInterpretation> data_component_interpretation (dim, DataComponentInterpretation::component_is_part_of_vector);
DataOut<dim> data_out;
data_out.attach_dof_handler (dof_handler);
data_out.add_data_vector (solution, solution_names, DataOut<dim>::type_dof_data,data_component_interpretation);
const unsigned int n_cells = triangulation.n_active_cells();
Vector<double> mises_e (n_cells);
FEValues<dim> fe_values (fe, quadrature_formula,update_values|update_gradients|update_quadrature_points |update_JxW_values);
const unsigned int n_q_points = quadrature_formula.size();
Vector<double> mises_e_2(n_cells*n_q_points);
int index=0;
int index2=0;
typename DoFHandler<dim>::active_cell_iterator cell = dof_handler.begin_active(), endc = dof_handler.end();
for (; cell!=endc; ++cell,++index, index2=index2+n_q_points){
fe_values.reinit (cell);
std::vector<std::vector<Tensor<1,dim> > > gradients (n_q_points, std::vector<Tensor<1,dim> >(dim));
std::vector<Vector<double> > values (n_q_points, Vector<double> (dim));
fe_values.get_function_gradients (solution, gradients);
fe_values.get_function_values (solution, values);
double vol=0;
for (unsigned int q_point=0; q_point<n_q_points; ++q_point){
vol+=fe_values.JxW (q_point);
mises_e(index)+=get_mises_eps(gradients[q_point])*fe_values.JxW (q_point);
mises_e_2(index2+q_point)=get_mises_eps(gradients[q_point]);
}
mises_e(index)/=vol;
}
data_out.add_data_vector (mises_e_2, "E_Mises_2");
data_out.add_data_vector (mises_e, "E_Mises");
data_out.build_patches ();
std::string filename = "solution/solution." + Utilities::int_to_string(timestep,4)+ ".vtu";
std::ofstream output (filename.c_str());
data_out.write_vtu (output);
}