21 "Computes the filtered sensitivity using a radial average user object.");
22 params.
addRequiredParam<UserObjectName>(
"filter_UO",
"Radial Average user object");
24 params.
addRequiredParam<VariableName>(
"design_density",
"Design density variable name.");
31 _filter(getUserObject<
RadialAverage>(
"filter_UO").getAverage()),
32 _density_sensitivity(writableVariable(
"density_sensitivity")),
33 _design_density_name(getParam<VariableName>(
"design_density")),
34 _design_density(_subproblem.getStandardVariable(_tid, _design_density_name))
45 mooseAssert(filter_iter !=
_filter.end(),
46 "An element could not be found in the filter. Check that a RadialAverage user object " 47 "has run before this object.");
50 std::vector<Real> qp_vals = filter_iter->second;
53 Real den_sense_val = 0;
56 for (
unsigned int qp = 0; qp <
_qrule->n_points(); qp++)
57 den_sense_val += qp_vals[qp] *
_JxW[qp];
static InputParameters validParams()
static InputParameters validParams()
virtual void setNodalValue(const Real &value, unsigned int idx=0)=0
const Real & _current_elem_volume
const RadialAverage::Result & _filter
Radial average user object.
virtual void execute() override
SensitivityFilter(const InputParameters ¶meters)
MooseWritableVariable & _density_sensitivity
Sensitivity with respect to density.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const QBase *const & _qrule
const Elem *const & _current_elem
const MooseArray< Real > & _JxW
registerMooseObject("OptimizationApp", SensitivityFilter)
Element user object that filters the objective function sensitivities via a radial average user objec...