On Thu, Apr 16, 2015 at 8:52 AM, ernestol <[email protected]> wrote: > Em 2015-04-16 09:18, John Peterson escreveu: > >> On Wed, Apr 15, 2015 at 7:55 PM, ernestol <[email protected] [1]> >> >> wrote: >> >> Hi all, >>> >>> I wonder if there is a simple way to get the global solution when >>> running the code in parallel? >>> >>> I tried: >>> >>> const System& system = es.get_system("System"); >>> const unsigned short int variable_num = >>> system.variable_number("variable"); >>> const unsigned int dim = mesh.mesh_dimension(); >>> std::vector<Number> sys_soln; >>> system.update_global_solution (sys_soln, 0); >>> >>> And also created this function >>> >>> void Solution(const EquationSystems& es,const MeshBase& mesh,string >>> s){ >>> std::vector<Number> soln; >>> std::vector<std::string> names; >>> es.build_variable_names(names); >>> es.build_solution_vector(soln); >>> ofstream myfile; >>> myfile.open(s); >>> for(unsigned int i=0;i<mesh.n_nodes();i++){ >>> const unsigned int n_vars = names.size(); >>> for(unsigned int c=0;c<n_vars;c++){ >>> myfile << scientific << " " << soln[i*n_vars + c]; >>> } >>> myfile << endl; >>> } >>> myfile.close(); >>> } >>> >>> However both only work in serial. The first in parallel gives me >>> only 0 >>> so sys_soln and the second gives me an error with PESTC when in >>> parallel. >>> >> >> Out of curiosity, what does calling >> >> system.solution->print_global(); >> >> do? Im a bit skeptical about your loop over nodes and vars... it >> might work for this one case, but be aware that it probably wont work >> if there are element and/or scalar dofs in the solution vector. >> > > It prints the solution without a problem both in serial and parallel. > However what I am needing is a vector with the solution, I am just > printing to check if I managed to get it. I will need to have the values at > each node so I can couple with a discrete part of the model. All the ways I > had tried worked in serial but not in parallel, any ideas? >
OK, sorry, misunderstood what you were after. In that case, the solution posted by Vasileios Vavourakis should work. I'm not sure if localize_to_one() calls close() on the vector beforehand, so why don't you try doing that as well? -- John ------------------------------------------------------------------------------ BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT Develop your own process in accordance with the BPMN 2 standard Learn Process modeling best practices with Bonita BPM through live exercises http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_ source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF _______________________________________________ Libmesh-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libmesh-users
