NekSideIntegralVariableUserObject.h 2.62 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
/****************************************************************/
/*               DO NOT MODIFY THIS HEADER                      */
/* MOOSE - Multiphysics Object Oriented Simulation Environment  */
/*                                                              */
/*           (c) 2010 Battelle Energy Alliance, LLC             */
/*                   ALL RIGHTS RESERVED                        */
/*                                                              */
/*          Prepared by Battelle Energy Alliance, LLC           */
/*            Under Contract No. DE-AC07-05ID14517              */
/*            With the U. S. Department of Energy               */
/*                                                              */
/*            See COPYRIGHT for full restrictions               */
/****************************************************************/

#ifndef NEKSIDEINTEGRALVARIABLEUSEROBJECT_H
#define NEKSIDEINTEGRALVARIABLEUSEROBJECT_H

#include "SideIntegralUserObject.h"
#include "MooseVariableInterface.h"
#include "LegendrePolynomial.h"
#include "FourierPolynomial.h"

//Forward Declarations
class NekSideIntegralVariableUserObject;

template<>
InputParameters validParams<NekSideIntegralVariableUserObject>();

/**
 * This postprocessor computes the projection of solution field to an expansion
 */
class NekSideIntegralVariableUserObject :
  public SideIntegralUserObject,
34
  public MooseVariableInterface<Real>
35 36 37 38 39 40 41
{
public:
  NekSideIntegralVariableUserObject(const InputParameters & parameters);

protected:
  virtual Real computeQpIntegral() override;
  virtual void finalize() override;
42

43 44
  /// Holds the solution at current quadrature points
  const VariableValue & _u;
45
  /// Legendre polynomial object. TODO address dynamic casting of this object
46
  LegendrePolynomial & _legendre_poly_function;
47
  /// Fourier polynomial object.  TODO address dynamic casting of this object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
  FourierPolynomial & _fourier_poly_function;
  /// The coordinate directions of the integration for Legendre polynomial
  int _l_direction;
  /// The coordinate directions of the itnegration for Fourier polynomials
  int _f_direction_1;
  int _f_direction_2;
  /// The order of the Legendre polynomial
  int _l_order;
  /// The order of the Fourier polynomial
  int _f_order;
  /// The name of the aux scalar index by l_order
  std::string _aux_scalar_name;
  /// The coupled gradient for heat flux
  const VariableGradient & _coupled_grad;
  /// Thermal conductivity (diffusion coefficient)
  const MaterialProperty<Real> & _diffusion_coefficient;
64 65
  /// The name of the post processor that calculates the surface area
  const PostprocessorValue & _surface_area_pp;
66 67 68
};

#endif