It is not clear to me how to access an object in the structure “Postprocessor”. The idea is that I compute the solution, but I am also computing secondary variables using the postprocessor structure in this way:
dealii::DataOut<dim> data_out;
data_out.attach_dof_handler(dof_handler);
Postprocessor postprocessor;
data_out.add_data_vector(solution, postprocessor);
data_out.build_patches();
When declaring the postprocessor class, I declare a function evaluate_vector_field where I compute all the secondary variables that are written on a vtk file later:
void evaluate_vector_field(const dealii::DataPostprocessorInputs::Vector<dim>& input_data, std::vector<dealii::Vector<double>>& computed_quantities) const override;
…..
for (int q = 0; q < n_q_points; ++q) {
// Displacements
computed_quantities[q](0) = input_data.solution_values[q](0);
computed_quantities[q](1) = input_data.solution_values[q](1);
// Stress
computed_quantities[q](2) = sigma_x
computed_quantities[q](3) = sigma_y
}
These variables are saved on the data_out object, so I use “data_out.write_vtk(output);” and I get them on the vtk file. However, I do not know how to access to these new variables (computed_quantities) from another file different from the one where I declare the functions.
The function evaluate_vector_field is a virtual function, and it is declared as const override. I do not know how to export the variables computed_quantities or modify them, because it is only allowed to read them since the function is declared as constant. Is there any way to access the structure postprocessor? Something like:
postprocessor.getVariables(xxxxxxxx)
Or an example where I can see how to implement it. Thank you very much in advance
Raul
--
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+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/d9a60280-0181-427b-a372-2eee29ab3257n%40googlegroups.com.
Hi Jean-Paul and Wolfgang,
Exactly, I would like to use what my DataPostprocessor computes in other parts of the programme.
Here my problem:
In my postprocessor, I compute stresses and principal stresses for all quadrature points (to give you the context, I am using quad elements with 4 quadrature points. The stress is constant for each cell/element as I am using quadratic functions for the displacement. I am solving a plane stress problem, isotropic elastic material). Principal stresses can be also computed.
So, for each element, I get the same principal stress at the 4 quadrature points (they are constant for each element). If I plot them, I get the following in Paraview (see screenshot.PNG)
Shared vertices with different principal stress components of different elements. To solve this, I would like to get the value of the principal stress of each element and plot it in the centre of the element, so that I can draw the arrow with the principal stress direction. For this I need the coordinates of the centre of the element and the value of stress. I do not know how to export these variables in other parts of the programme, so I can build the paraview file to plot that.
I still struggle to understand some of the c++ structures and how they can be accessed in the virtual functions of the dealii library.
I hope my problem is a little clearer now, thank you!!!
Raúl
Hi Wolfgang,
Thank you for pointing that out. I was wrong because I thought that what happens with 1-D is the same as in 2-D, and that’s not true.
I will try to think again how I solve the problem and the structures related to it. Thank you for the suggestions!!
Best