18#include "libmesh/libmesh_config.h"
20#ifdef LIBMESH_TRILINOS_HAVE_DTK
22#include "libmesh/dtk_evaluator.h"
24#include "libmesh/dof_map.h"
25#include "libmesh/fe_interface.h"
26#include "libmesh/fe_compute_data.h"
27#include "libmesh/numeric_vector.h"
28#include "libmesh/equation_systems.h"
29#include "libmesh/system.h"
35 std::string var_name):
37 current_local_solution(*sys.current_local_solution),
38 es(in_sys.get_equation_systems()),
41 dof_map(sys.get_dof_map()),
42 var_num(sys.variable_number(var_name)),
43 fe_type(dof_map.variable_type(var_num))
48 const Teuchos::ArrayRCP<double> & coords)
50 unsigned int num_values = elements.size();
52 Teuchos::ArrayRCP<Number> values(num_values);
53 DataTransferKit::FieldContainer<Number> evaluations(values, 1);
55 for (
unsigned int i=0; i<num_values; i++)
61 for (
unsigned int j=0; j<
dim; j++)
62 p(j) = coords[(j*num_values)+i];
69 std::vector<dof_id_type> dof_indices;
DataTransferKit::FieldContainer< Number > FieldContainerType
DTKEvaluator(System &in_sys, std::string var_name)
virtual FieldContainerType evaluate(const Teuchos::ArrayRCP< int > &elements, const Teuchos::ArrayRCP< double > &coords) override
NumericVector< Number > & current_local_solution
void dof_indices(const Elem *const elem, std::vector< dof_id_type > &di) const
This is the base class from which all geometric element types are derived.
class FEComputeData hides arbitrary data to be passed to and from children of FEBase through the FEIn...
std::vector< Number > shape
Storage for the computed shape function values.
static void compute_data(const unsigned int dim, const FEType &fe_t, const Elem *elem, FEComputeData &data)
Lets the appropriate child of FEBase compute the requested data for the input specified in data,...
static Point inverse_map(const unsigned int dim, const Elem *elem, const Point &p, const Real tolerance=TOLERANCE, const bool secure=true, const bool extra_checks=true)
virtual const Elem * elem_ptr(const dof_id_type i) const =0
A Point defines a location in LIBMESH_DIM dimensional Real space.
Manages consistently variables, degrees of freedom, and coefficient vectors.
The libMesh namespace provides an interface to certain functionality in the library.
auto index_range(const T &sizable)
Helper function that returns an IntRange<std::size_t> representing all the indices of the passed-in v...