Dear Wolfgang,
I meet almost the same situation but a little different:
As I am dealing with a vector-valued problem like 
(disp_x,disp_y,another_quantitied), 
I want to output the strain tensor and I use the *DataPostprocessorTensor 
*which 
described in 
https://dealii.org/developer/doxygen/deal.II/classDataPostprocessorTensor.html
 .
But as I am dealing with a vector-valued problem, 
how can I pass the displacement component of the solution to *DataOut* 
object?
...
StrainPostprocessor<dim> strain_disp;
...
data_out.add_data_vector(present_solution, strain_disp);
...
in
 template <int dim>
 void MartTran<dim>::output()
 {
 std::vector<std::string> solution_names(dim, "displacement");
 solution_names.emplace_back("order_parameter");

 std::vector<DataComponentInterpretation::DataComponentInterpretation>
 data_component_interpretation(dim, DataComponentInterpretation::
component_is_part_of_vector);
 data_component_interpretation.push_back(DataComponentInterpretation::
component_is_scalar);

 *StrainPostprocessor<dim> strain_disp;*
 DataOut<dim> data_out;
 data_out.attach_dof_handler(dof_handler);
 data_out.add_data_vector(present_solution, 
 solution_names,
 DataOut<dim>::type_dof_data,
 data_component_interpretation);
 *data_out**.add_data_vector(present_solution, strain_disp);* 
 data_out.build_patches();
 const std::string filename =
   "solution-" + Utilities::int_to_string(timestep_number, 5) + ".vtk";
 std::ofstream output(filename);
 data_out.write_vtk(output);
 }

Obviously, the code aboved is wrong(?), because the solution is not only 
contains displacement  component,
but while running the code it seems that nothing is wrong and the vtk file 
also can be viewed with the strain_xx,strain_xy, strain_yx,strain_yy. 
Is it the right way to do that (and why it can?)
or
has to extract displacement component of solution and send it to 
*data_out/datapostprocessor*?


>(It's possible to extract individual components using a 
>DataPostprocessor, but I don't usually understand why one would want to do 
that.) 
Maybe this is the situation some one want to do that? :-x

Best,
M.
在 2017年4月17日星期一 UTC+8下午10:43:56,Wolfgang Bangerth写道:
>
> On 04/17/2017 08:37 AM, Alberto Salvadori wrote: 
> > Thanks Wolfgang. 
> > What you surmised is exactly what it is happening, see the error message 
> below. 
> > I have no run-time errors in running this code 
> > 
> >   
> conststd::vector<DataComponentInterpretation::DataComponentInterpretation> 
> > 
> >     data_component_interpretation(dim+2, 
> > DataComponentInterpretation::component_is_part_of_vector); 
> > 
> >   data_out.add_data_vector(system_solution, 
> > 
> >                            std::vector<std::string> (dim+2, 
> "displacement"), 
> > 
> >                            DataOut<dim>::type_dof_data, 
> > data_component_interpretation); 
> > 
> > 
> > but I believe it is not what I want. I suppose that the data_out 
> contains now 
> > 4 components for each node, two displacements, plus pressure and 
> dilatation. 
> > I'd love to export displacements 
> > and the other two separately, but I am not sure how to achieve this. 
> Doing this: 
> > 
> >   data_out.add_data_vector(system_solution, 
> > 
> >                            std::vector<std::string> (dim, 
> "displacement"), 
> > 
> >                            DataOut<dim>::type_dof_data, 
> > data_component_interpretation); 
> > 
> > 
> > provides an run-time error, which makes sense. 
>
> Just provide the missing components to the data_out_interpretation -- take 
> a 
> look at step-22 how this looks like. 
>
> Why do you want to output things separately? Why not have everything in 
> one 
> output file? (It's possible to extract individual components using a 
> DataPostprocessor, but I don't usually understand why one would want to do 
> that.) 
>
> Best 
>   W. 
>
>
> -- 
> ------------------------------------------------------------------------ 
> Wolfgang Bangerth          email:                 bang...@colostate.edu 
> <javascript:> 
>                             www: http://www.math.colostate.edu/~bangerth/ 
>
>

-- 
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to dealii+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/dealii/ef7e4ec6-5518-4436-b356-e2fd2ede0492%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to