20 #ifndef __mast__level_set_nonlinear_implicit_assembly_h__ 21 #define __mast__level_set_nonlinear_implicit_assembly_h__ 30 template <
typename ValType>
class FieldFunction;
31 class LevelSetIntersection;
32 class LevelSetInterfaceDofHandler;
33 class LevelSetVoidSolution;
119 libMesh::NumericVector<Real>* R,
120 libMesh::SparseMatrix<Real>* J,
121 libMesh::NonlinearImplicitSystem& S);
126 libMesh::NumericVector<Real>& sensitivity_rhs);
132 libMesh::NumericVector<Real>& dq_dX);
135 #if MAST_ENABLE_PLPLOT == 1 136 void plot_sub_elems(
bool plot_reference_elem,
137 bool plot_low_phi_elem,
138 bool plot_high_phi_elem);
163 const libMesh::NumericVector<Real>* dXdp,
212 #endif //__mast__level_set_nonlinear_implicit_assembly_h__
virtual void calculate_output(const libMesh::NumericVector< Real > &X, MAST::OutputAssemblyElemOperations &output)
calculates the value of quantity .
bool _evaluate_output_on_negative_phi
MAST::LevelSetIntersection & get_intersection()
MAST::FieldFunction< RealVectorX > * _indicator
virtual void calculate_output_derivative(const libMesh::NumericVector< Real > &X, MAST::OutputAssemblyElemOperations &output, libMesh::NumericVector< Real > &dq_dX)
calculates
bool _enable_dof_handler
Evaluates the total sensitivity of output wrt p using the adjoint solution provided in dq_dX for a li...
This provides the base class for definitin of element level contribution of output quantity in an ana...
virtual void calculate_output_direct_sensitivity(const libMesh::NumericVector< Real > &X, const libMesh::NumericVector< Real > *dXdp, const MAST::FunctionBase &p, MAST::OutputAssemblyElemOperations &output)
evaluates the sensitivity of the outputs in the attached discipline with respect to the parametrs in ...
LevelSetNonlinearImplicitAssembly(bool enable_dof_handler)
constructor associates this assembly object with the system
virtual void set_indicator_function(MAST::FieldFunction< RealVectorX > &indicator)
attaches indicator function to this.
const MAST::FilterBase * _filter
MAST::LevelSetInterfaceDofHandler * _dof_handler
MAST::FieldFunction< RealVectorX > * _velocity
virtual void clear_level_set_function()
clears association with level set function
virtual void residual_and_jacobian(const libMesh::NumericVector< Real > &X, libMesh::NumericVector< Real > *R, libMesh::SparseMatrix< Real > *J, libMesh::NonlinearImplicitSystem &S)
function that assembles the matrices and vectors quantities for nonlinear solution ...
MAST::FieldFunction< Real > * _level_set
This will compute the solution at the interface under the assumption of zero surface normal flux...
Creates a geometric filter for the level-set design variables.
MAST::LevelSetInterfaceDofHandler & get_dof_handler()
virtual void set_level_set_function(MAST::FieldFunction< Real > &level_set, const MAST::FilterBase &filter)
attaches level set function to this
virtual void clear_level_set_velocity_function()
clears the velocity function
MAST::LevelSetVoidSolution * _void_solution_monitor
virtual bool sensitivity_assemble(const MAST::FunctionBase &f, libMesh::NumericVector< Real > &sensitivity_rhs)
Assembly function.
MAST::LevelSetIntersection * _intersection
bool if_use_dof_handler() const
virtual ~LevelSetNonlinearImplicitAssembly()
destructor resets the association of this assembly object with the system
virtual void set_level_set_velocity_function(MAST::FieldFunction< RealVectorX > &velocity)
the velocity function used to calculate topology sensitivity
void set_evaluate_output_on_negative_phi(bool f)
sets the flag on whether or not to evaluate the output on negative level set function ...