34 #include "libmesh/getpot.h" 
   35 #include "libmesh/fem_system.h" 
   36 #include "libmesh/quadrature.h" 
   37 #include "libmesh/fe_base.h" 
   38 #include "libmesh/elem.h" 
   64     int num_ids = input.vector_variable_size( 
"QoI/Vorticity/enabled_subdomains" );
 
   68         std::cerr << 
"Error: Must specify at least one subdomain id on which to compute vorticity." << std::endl;
 
   72     for( 
int i = 0; i < num_ids; i++ )
 
   74         libMesh::subdomain_id_type s_id = input( 
"QoI/Vorticity/enabled_subdomains", -1, i );
 
   75         _subdomain_ids.insert( s_id );
 
   79     std::string u_var_name = input(
"Physics/VariableNames/u_velocity", 
u_var_name_default);
 
   80     std::string v_var_name = input(
"Physics/VariableNames/v_velocity", 
v_var_name_default);
 
   81     this->_u_var = system.variable_number(u_var_name);
 
   82     this->_v_var = system.variable_number(v_var_name);
 
   89     libMesh::FEBase* u_fe = NULL;
 
   90     libMesh::FEBase* v_fe = NULL;
 
   92     context.get_element_fe<libMesh::Real>(this->
_u_var, u_fe);
 
   93     context.get_element_fe<libMesh::Real>(this->
_v_var, v_fe);
 
  104                                const unsigned int qoi_index )
 
  109         libMesh::FEBase* element_fe;
 
  110         context.get_element_fe<libMesh::Real>(this->
_u_var, element_fe);
 
  111         const std::vector<libMesh::Real> &JxW = element_fe->get_JxW();
 
  113         unsigned int n_qpoints = context.get_element_qrule().n_points();
 
  116         libMesh::Number& qoi = context.get_qois()[qoi_index];
 
  118         for( 
unsigned int qp = 0; qp != n_qpoints; qp++ )
 
  120             libMesh::Gradient grad_u = 0.;
 
  121             libMesh::Gradient grad_v = 0.;
 
  122             context.interior_gradient( this->_u_var, qp, grad_u );
 
  123             context.interior_gradient( this->
_v_var, qp, grad_v );
 
  124             qoi += (grad_v(0) - grad_u(1)) * JxW[qp];
 
  132                                           const unsigned int qoi_index )
 
  138         libMesh::FEBase* element_fe;
 
  139         context.get_element_fe<libMesh::Real>(this->
_u_var, element_fe);
 
  142         const std::vector<libMesh::Real> &JxW = element_fe->get_JxW();
 
  145         const std::vector<std::vector<libMesh::RealGradient> >& du_phi =
 
  146           context.get_element_fe(_u_var)->get_dphi();
 
  147         const std::vector<std::vector<libMesh::RealGradient> >& dv_phi =
 
  148           context.get_element_fe(
_v_var)->get_dphi();
 
  151         const unsigned int n_T_dofs = context.get_dof_indices(0).size();
 
  152         unsigned int n_qpoints = context.get_element_qrule().n_points();  
 
  157         libMesh::DenseSubVector<libMesh::Number> &Qu = context.get_qoi_derivatives(qoi_index, _u_var);
 
  158         libMesh::DenseSubVector<libMesh::Number> &Qv = context.get_qoi_derivatives(qoi_index, 
_v_var);
 
  161         for( 
unsigned int qp = 0; qp != n_qpoints; qp++ )
 
  163             for( 
unsigned int i = 0; i != n_T_dofs; i++ )
 
  165                 Qu(i) += - dv_phi[i][qp](1) * JxW[qp];
 
  166                 Qv(i) += du_phi[i][qp](0) * JxW[qp];
 
Vorticity()
User never call default constructor. 
 
virtual QoIBase * clone() const 
Required to provide clone (deep-copy) for adding QoI object to libMesh objects. 
 
virtual void init_context(AssemblyContext &context)
 
std::set< libMesh::subdomain_id_type > _subdomain_ids
List of sumdomain ids for which we want to compute this QoI. 
 
const std::string v_var_name_default
y-velocity 
 
const std::string u_var_name_default
Default physics variable names. 
 
virtual void element_qoi(AssemblyContext &context, const unsigned int qoi_index)
Compute the qoi value. 
 
Interface with libMesh for solving Multiphysics problems. 
 
virtual void init(const GetPot &input, const MultiphysicsSystem &system, unsigned int qoi_num)
Initialize local variables. 
 
virtual void element_qoi_derivative(AssemblyContext &context, const unsigned int qoi_index)
Compute the qoi derivative with respect to the solution. 
 
VariableIndex _v_var
v-velocity component variable index 
 
VariableIndex _u_var
u-velocity component variable index