On Thu, Aug 4, 2016 at 6:21 AM, Hubert Weissmann <[email protected]> wrote:

> Hi everyone,
> I am trying to print the solution of a test-system to a file/stdout.
> For this I think it is best to use the compute_data() function which I
> do in the following way:
> After solving the system, I inserted
>
>    MeshBase::const_element_iterator           el =
> mesh.active_local_elements_begin();
>     const MeshBase::const_element_iterator end_el =
> mesh.active_local_elements_end();
>     for ( ; el != end_el; ++el)
>       {
>         const Elem * elem = *el;
>         for(unsigned int i=0; i<elem->n_nodes(); i++){
>            Point q_point=elem->point(i); // how are points enumerated??
>            FEComputeData data(equation_systems, q_point);
>            data.init();
>            FEInterface::compute_data(3, fe_type, elem, data);  //fe_type
> is declared before already
>            out<<q_point<<"  ";
>            const unsigned int n_dof = data.shape.size();
>            for(unsigned int j=0; j<n_dof; j++){
>               out<<data.shape[j]<<"  "; // how do I make the output in
> best case??
>            }
>            out<<std::endl;
>         }
>      }
>
> (Here, I use the example miscellaneous_ex1 as starting point). However,
> as in the example, I want to use infinite elements as well and than the
> calculation ends with the error
>
> Assertion `-1.-1.e-5 <= v && v < 1.' failed.
>
> Stack frames: 10
> 0: libMesh::print_trace(std::ostream&)
> 1: libMesh::MacroFunctions::report_error(char const*, int, char const*,
> char const*)
> 2:
> /home/tm162/bin/libmesh/libmesh-1.0/.libs/libmesh_dbg.so.0(+0x135da7d)
> [0x2aeffb645a7d]
> 3: libMesh::InfFE<3u, (libMesh::FEFamily)11,
> (libMesh::InfMapType)0>::eval(double, libMesh::Order, unsigned int)
> ........
>
> As far as I understand the problem, the function InfFE::compute_data()
> (in src/fe/inf_fe_static.C)  ist called.
> Therein, the parameter v is set (line 249) to the z-coordinate of the
> point of evaluation (which is contrary to my understanding of the
> parameter v) and than evaluated in InfFE::eval()
> (src/fe/inf_fe_map_eval.C) in line 316 which requires v to be in -1<v<1
> as the assertion says.
>
> So my main question is: Am I using the function in the way it is thought
> to be used


Looks like the eval function is expecting a point in some sort of
"reference" space, but you are handing it elem->point(i), which is a point
in physical space.
  /**
   * Specialized for \p T_radial=INFINITE_MAP, this function returns
   * the value of the \f$ i^{th} \f$ @e mapping shape function
   * in radial direction evaluated at \p v.  Currently, only one specific
   * mapping shape is used.  Namely the one by Marques JMMC, Owen DRJ:
   * Infinite elements in quasi-static materially nonlinear problems,
   * @e Computers @e and @e Structures, 1984.
   */
  static Real eval(Real v,
                   Order o_radial,
                   unsigned int i);

Therefore you will need to somehow map q_point into the infinite element
reference space before passing it to FEComputeData.

-- 
John
------------------------------------------------------------------------------
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to