Thanks John. That seems to have done the trick. On Wed, Jun 12, 2019 at 4:00 PM John Peterson <jwpeter...@gmail.com> wrote:
> > > On Wed, Jun 12, 2019 at 4:58 PM John Peterson <jwpeter...@gmail.com> > wrote: > >> >> >> On Wed, Jun 12, 2019 at 4:38 PM Nathan Andrew Miller < >> nathan.a.mil...@colorado.edu> wrote: >> >>> I'm trying to compute the xyz, JxW, and other values at arbitrary points >>> for a FEBase object during the evaluation of a MOOSE UserObject. I >>> implemented the following in code: >>> >>> ``` >>> //Create a vector of points >>> std::vector< Point > cell_points; >>> >>> ...things to fill cell_points... >>> >>> //Create a vector of ones (the weights) >>> ones = std::vector< double > (cell_points.size(), 1); >>> >>> std::unique_ptr< libMesh::FEBase > fe( >>> libMesh::FEBase::build(_mesh.dimension(), >>> libMesh::FEType(_current_elem->default_order()))); >>> >>> fe->reinit(_current_elem, &cell_points, &ones); >>> >>> >> You have to pre-request that the xyz values be computed before you call >> fe->reinit. So put the following line: >> >> >>> std::vector< Point > xyz = fe->get_xyz(); >>> >> >> before the reinit() call and it should work. >> > > Oh, and be sure to get a *reference* > > std::vector< Point > & xyz = fe->get_xyz(); > > because it's going to be filled/changed as you reinit more elements later. > In the code you posted you are making a copy... > > -- > John > _______________________________________________ Libmesh-users mailing list Libmesh-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libmesh-users