MAST
Multidisciplinary-design Adaptation and Sensitivity Toolkit (MAST)
MAST::ComplianceOutput Class Reference

Detailed Description

Computes the compliance as $ \frac{1}{2} U^T K U $.

Definition at line 46 of file compliance_output.h.

#include <compliance_output.h>

Inheritance diagram for MAST::ComplianceOutput:
Collaboration diagram for MAST::ComplianceOutput:

Public Member Functions

 ComplianceOutput ()
 default constructor More...
 
virtual ~ComplianceOutput ()
 
virtual void evaluate ()
 this evaluates all relevant stress components on the element to evaluate the p-averaged quantity. More...
 
virtual void evaluate_sensitivity (const MAST::FunctionBase &f)
 this evaluates all relevant stress sensitivity components on the element to evaluate the p-averaged quantity sensitivity. More...
 
virtual void evaluate_shape_sensitivity (const MAST::FunctionBase &f)
 this evaluates all relevant shape sensitivity components on the element. More...
 
virtual void evaluate_topology_sensitivity (const MAST::FunctionBase &f)
 this evaluates all relevant topological sensitivity components on the element. More...
 
virtual void evaluate_topology_sensitivity (const MAST::FunctionBase &f, const MAST::FieldFunction< RealVectorX > &vel)
 This evaluates the contribution to the topology sensitivity on the boundary. More...
 
virtual void init (const MAST::GeomElem &elem)
 initialize for the element. More...
 
virtual void output_derivative_for_elem (RealVectorX &dq_dX)
 calculates the derivative of p-norm von Mises stress for the $p-$norm identified using set_p_val(). More...
 
virtual Real output_for_elem ()
 should not get called for this output. More...
 
virtual Real output_sensitivity_for_elem (const MAST::FunctionBase &p)
 
virtual Real output_sensitivity_total (const MAST::FunctionBase &p)
 
virtual Real output_total ()
 
virtual void set_elem_data (unsigned int dim, const libMesh::Elem &ref_elem, MAST::GeomElem &elem) const
 sets the structural element y-vector if 1D element is used. More...
 
virtual void zero_for_analysis ()
 zeroes the output quantity values stored inside this object so that assembly process can begin. More...
 
virtual void zero_for_sensitivity ()
 zeroes the output quantity values stored inside this object so that assembly process can begin. More...
 
- Public Member Functions inherited from MAST::OutputAssemblyElemOperations
 OutputAssemblyElemOperations ()
 
virtual ~OutputAssemblyElemOperations ()
 virtual destructor More...
 
const std::set< libMesh::boundary_id_type > & get_participating_boundaries ()
 
const std::set< const libMesh::Elem * > & get_participating_elements () const
 
const std::set< libMesh::subdomain_id_type > & get_participating_subdomains ()
 
virtual bool if_evaluate_for_boundary (const MAST::GeomElem &elem, const unsigned int s) const
 checks to see if the specified side of the element needs evaluation of the output contribution. More...
 
virtual bool if_evaluate_for_element (const MAST::GeomElem &elem) const
 checks to see if the object has been told about the subset of elements and if the specified element is in the subset. More...
 
void set_participating_boundaries (const std::set< libMesh::boundary_id_type > &bids)
 The assembly will integration over boudnaries with ids specified in bids. More...
 
void set_participating_elements (const std::set< const libMesh::Elem *> &elems)
 sets the elements for which this object will evaluate and store the output data. More...
 
void set_participating_elements_to_all ()
 This will allow volume contribution from all elements. More...
 
void set_participating_subdomains (const std::set< libMesh::subdomain_id_type > &sids)
 The output function can be a boundary integrated quantity, volume integrated quantity or a combination of these two. More...
 
- Public Member Functions inherited from MAST::AssemblyElemOperations
 AssemblyElemOperations ()
 
virtual ~AssemblyElemOperations ()
 
virtual void clear_assembly ()
 clears the assembly object More...
 
virtual void clear_discipline_and_system ()
 clears association with a system to this discipline More...
 
virtual void clear_elem ()
 clears the element initialization More...
 
virtual MAST::AssemblyBaseget_assembly ()
 
MAST::PhysicsDisciplineBaseget_discipline ()
 
virtual std::pair< const MAST::FieldFunction< RealVectorX > *, unsigned int > get_elem_boundary_velocity_data ()
 searches through the side load data and populates the data with the boundary id and velocity function on the boundary. More...
 
MAST::ElementBaseget_physics_elem ()
 
MAST::SystemInitializationget_system_initialization ()
 
virtual void set_assembly (MAST::AssemblyBase &assembly)
 sets the assembly object More...
 
virtual void set_discipline_and_system (MAST::PhysicsDisciplineBase &discipline, MAST::SystemInitialization &system)
 attaches a system to this discipline More...
 
virtual void set_elem_acceleration (const RealVectorX &accel)
 sets the element acceleration More...
 
virtual void set_elem_acceleration_sensitivity (const RealVectorX &accel)
 sets the element acceleration More...
 
virtual void set_elem_perturbed_acceleration (const RealVectorX &accel)
 sets the element perturbed acceleration More...
 
virtual void set_elem_perturbed_solution (const RealVectorX &sol)
 sets the element perturbed solution More...
 
virtual void set_elem_perturbed_velocity (const RealVectorX &vel)
 sets the element perturbed velocity More...
 
virtual void set_elem_solution (const RealVectorX &sol)
 sets the element solution More...
 
virtual void set_elem_solution_sensitivity (const RealVectorX &sol)
 sets the element solution sensitivity More...
 
virtual void set_elem_velocity (const RealVectorX &vel)
 sets the element velocity More...
 
virtual void set_elem_velocity_sensitivity (const RealVectorX &vel)
 sets the element velocity sensitivity More...
 
void set_skip_comm_sum (bool skip)
 If an output has contrinutions only from local processor then the user can request that the global comm().sum() calls be skipped to avoid blocking MPI calls. More...
 

Protected Attributes

Real _compliance
 
Real _dcompliance_dp
 
- Protected Attributes inherited from MAST::OutputAssemblyElemOperations
std::set< libMesh::boundary_id_type > _bids
 set of bids for which data will be processed More...
 
std::set< const libMesh::Elem * > _elem_subset
 set of elements for which the data will be stored. More...
 
bool _if_evaluate_on_all_elems
 if true, evaluates on all elements. More...
 
std::set< libMesh::subdomain_id_type > _sub_domain_ids
 set of subdomain ids for which data will be processed. More...
 
- Protected Attributes inherited from MAST::AssemblyElemOperations
MAST::AssemblyBase_assembly
 
MAST::PhysicsDisciplineBase_discipline
 
MAST::ElementBase_physics_elem
 
bool _skip_comm_sum
 If an output has contrinutions only from local processor then the user can request that the global comm().sum() calls be skipped to avoid blocking MPI calls. More...
 
MAST::SystemInitialization_system
 

Constructor & Destructor Documentation

◆ ComplianceOutput()

MAST::ComplianceOutput::ComplianceOutput ( )

default constructor

Definition at line 37 of file compliance_output.cpp.

◆ ~ComplianceOutput()

MAST::ComplianceOutput::~ComplianceOutput ( )
virtual

Definition at line 47 of file compliance_output.cpp.

Member Function Documentation

◆ evaluate()

void MAST::ComplianceOutput::evaluate ( )
virtual

this evaluates all relevant stress components on the element to evaluate the p-averaged quantity.

This is only done on the current element for which this object has been initialized.

Implements MAST::OutputAssemblyElemOperations.

Definition at line 72 of file compliance_output.cpp.

◆ evaluate_sensitivity()

void MAST::ComplianceOutput::evaluate_sensitivity ( const MAST::FunctionBase f)
virtual

this evaluates all relevant stress sensitivity components on the element to evaluate the p-averaged quantity sensitivity.

This is only done on the current element for which this object has been initialized.

Implements MAST::OutputAssemblyElemOperations.

Definition at line 107 of file compliance_output.cpp.

◆ evaluate_shape_sensitivity()

virtual void MAST::ComplianceOutput::evaluate_shape_sensitivity ( const MAST::FunctionBase f)
inlinevirtual

this evaluates all relevant shape sensitivity components on the element.

This is only done on the current element for which this object has been initialized.

Implements MAST::OutputAssemblyElemOperations.

Definition at line 112 of file compliance_output.h.

◆ evaluate_topology_sensitivity() [1/2]

void MAST::ComplianceOutput::evaluate_topology_sensitivity ( const MAST::FunctionBase f)
virtual

this evaluates all relevant topological sensitivity components on the element.

This is only done on the current element for which this object has been initialized.

Implements MAST::OutputAssemblyElemOperations.

Definition at line 158 of file compliance_output.cpp.

◆ evaluate_topology_sensitivity() [2/2]

void MAST::ComplianceOutput::evaluate_topology_sensitivity ( const MAST::FunctionBase f,
const MAST::FieldFunction< RealVectorX > &  vel 
)
virtual

This evaluates the contribution to the topology sensitivity on the boundary.

Given that the integral is nonlinear due to the $p-$norm, the expression is quite involved:

\[ \frac{ \frac{1}{p} \left( \int_\Omega (\sigma_{VM}(\Omega))^p ~ d\Omega \right)^{\frac{1}{p}-1}}{\left( \int_\Omega ~ d\Omega \right)^{\frac{1}{p}}} \int_\Gamma V_n \sigma_{VM}^p ~d\Gamma + \frac{ \frac{-1}{p} \left( \int_\Omega (\sigma_{VM}(\Omega))^p ~ d\Omega \right)^{\frac{1}{p}}}{\left( \int_\Omega ~ d\Omega \right)^{\frac{1+p}{p}}} \int_\Gamma V_n ~d\Gamma \]

Implements MAST::OutputAssemblyElemOperations.

Definition at line 198 of file compliance_output.cpp.

◆ init()

void MAST::ComplianceOutput::init ( const MAST::GeomElem elem)
virtual

initialize for the element.

Implements MAST::AssemblyElemOperations.

Definition at line 319 of file compliance_output.cpp.

◆ output_derivative_for_elem()

void MAST::ComplianceOutput::output_derivative_for_elem ( RealVectorX dq_dX)
virtual

calculates the derivative of p-norm von Mises stress for the $p-$norm identified using set_p_val().

The quantity is evaluated over the current element for which this object is initialized.

Implements MAST::OutputAssemblyElemOperations.

Definition at line 266 of file compliance_output.cpp.

◆ output_for_elem()

virtual Real MAST::ComplianceOutput::output_for_elem ( )
inlinevirtual

should not get called for this output.

Use output_total() instead.

Implements MAST::OutputAssemblyElemOperations.

Definition at line 144 of file compliance_output.h.

◆ output_sensitivity_for_elem()

virtual Real MAST::ComplianceOutput::output_sensitivity_for_elem ( const MAST::FunctionBase p)
inlinevirtual
Returns
the sensitivity of p-norm von Mises stress for the $p-$norm identified using set_p_val(). The returned quantity is evaluated for the element for which this object is initialized.

Implements MAST::OutputAssemblyElemOperations.

Definition at line 159 of file compliance_output.h.

◆ output_sensitivity_total()

Real MAST::ComplianceOutput::output_sensitivity_total ( const MAST::FunctionBase p)
virtual
Returns
the output quantity sensitivity for parameter. This method calculates the partial derivative of quantity

\[ \frac{\partial q(X, p)}{\partial p} \]

with respect to parameter $ p $. This returns the quantity accumulated over all elements.

Implements MAST::OutputAssemblyElemOperations.

Definition at line 253 of file compliance_output.cpp.

◆ output_total()

Real MAST::ComplianceOutput::output_total ( )
virtual
Returns
the output quantity value accumulated over all elements

Implements MAST::OutputAssemblyElemOperations.

Definition at line 240 of file compliance_output.cpp.

◆ set_elem_data()

void MAST::ComplianceOutput::set_elem_data ( unsigned int  dim,
const libMesh::Elem &  ref_elem,
MAST::GeomElem elem 
) const
virtual

sets the structural element y-vector if 1D element is used.

Implements MAST::AssemblyElemOperations.

Definition at line 302 of file compliance_output.cpp.

◆ zero_for_analysis()

void MAST::ComplianceOutput::zero_for_analysis ( )
virtual

zeroes the output quantity values stored inside this object so that assembly process can begin.

This will zero out data so that it is ready for a new evaluation. Before sensitivity analysis, call the other method, since some nonlinear functionals need the forward quantities for sensitivity analysis, eg., stress output.

Implements MAST::OutputAssemblyElemOperations.

Definition at line 55 of file compliance_output.cpp.

◆ zero_for_sensitivity()

void MAST::ComplianceOutput::zero_for_sensitivity ( )
virtual

zeroes the output quantity values stored inside this object so that assembly process can begin.

This will only zero the data to compute new sensitivity analysis.

Implements MAST::OutputAssemblyElemOperations.

Definition at line 64 of file compliance_output.cpp.

Member Data Documentation

◆ _compliance

Real MAST::ComplianceOutput::_compliance
protected

Definition at line 184 of file compliance_output.h.

◆ _dcompliance_dp

Real MAST::ComplianceOutput::_dcompliance_dp
protected

Definition at line 185 of file compliance_output.h.


The documentation for this class was generated from the following files: