Data structure provides the mechanism to store stress and strain output from a structural analysis.
The user may specify one of three evaluation modes: centroid, element quadrature points, or user specified element local points.
This is, by default, a 3D tensor that should be initialized with 6 components. The first three components of stress are the direct stresses in the directions, , and the next three components are the shear stresses .
The first three components of strain are the direct strains in the directions, , and the next three components are the engineering shear strains .
Definition at line 61 of file stress_output_base.h.
#include <stress_output_base.h>
Classes | |
class | Data |
This class provides a mechanism to store stress/strain values, their derivatives and sensitivity values corresponding to a specific quadrature point on the element. More... | |
Public Member Functions | |
StressStrainOutputBase () | |
default constructor More... | |
virtual | ~StressStrainOutputBase () |
virtual MAST::StressStrainOutputBase::Data & | add_stress_strain_at_boundary_qp_location (const MAST::GeomElem &e, const unsigned int s, const unsigned int qp, const libMesh::Point &quadrature_pt, const libMesh::Point &physical_pt, const RealVectorX &stress, const RealVectorX &strain, Real JxW_Vn) |
add the stress tensor associated with the qp on side s of element e . More... | |
virtual MAST::StressStrainOutputBase::Data & | add_stress_strain_at_qp_location (const MAST::GeomElem &e, const unsigned int qp, const libMesh::Point &quadrature_pt, const libMesh::Point &physical_pt, const RealVectorX &stress, const RealVectorX &strain, Real JxW) |
add the stress tensor associated with the qp. More... | |
void | clear () |
clears the data structure of any stored values so that it can be used for another element. More... | |
virtual void | clear_sensitivity_data () |
clears the data stored for sensitivity analysis. More... | |
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 | functional_boundary_sensitivity_for_all_elems (const MAST::FunctionBase &f, Real &dsigma_vm_val_df) const |
calculates and returns the sensitivity of von Mises p-norm functional for all the elements that this object currently stores data for. More... | |
virtual void | functional_boundary_sensitivity_for_elem (const MAST::FunctionBase &f, const libMesh::dof_id_type e_id, Real &dsigma_vm_val_df) const |
calculates and returns the boundary sensitivity of von Mises p-norm functional for the element e . More... | |
virtual void | functional_for_all_elems () |
calculates and returns the von Mises p-norm functional for all the elements that this object currently stores data for. More... | |
virtual void | functional_sensitivity_for_all_elems (const MAST::FunctionBase &f, Real &dsigma_vm_val_df) const |
calculates and returns the sensitivity of von Mises p-norm functional for all the elements that this object currently stores data for. More... | |
virtual void | functional_sensitivity_for_elem (const MAST::FunctionBase &f, const libMesh::dof_id_type e_id, Real &dsigma_vm_val_df) const |
calculates and returns the sensitivity of von Mises p-norm functional for the element e . More... | |
virtual void | functional_state_derivartive_for_elem (const libMesh::dof_id_type e_id, RealVectorX &dq_dX) const |
calculates and returns the derivative of von Mises p-norm functional wrt state vector for the specified element. More... | |
Real | get_maximum_von_mises_stress () const |
Real | get_p_stress_val () |
virtual const std::map< const libMesh::dof_id_type, std::vector< MAST::StressStrainOutputBase::Data * > > & | get_stress_strain_data () const |
virtual const std::vector< MAST::StressStrainOutputBase::Data * > & | get_stress_strain_data_for_elem (const MAST::GeomElem &e) const |
virtual MAST::StressStrainOutputBase::Data & | get_stress_strain_data_for_elem_at_qp (const MAST::GeomElem &e, const unsigned int qp) |
MAST::BoundaryConditionBase * | get_thermal_load_for_elem (const MAST::GeomElem &elem) |
virtual void | init (const MAST::GeomElem &elem) |
initialize for the element. More... | |
unsigned int | n_boundary_stress_strain_data_for_elem (const GeomElem &e) const |
unsigned int | n_stress_strain_data_for_elem (const MAST::GeomElem &e) const |
virtual void | output_derivative_for_elem (RealVectorX &dq_dX) |
calculates the derivative of p-norm von Mises stress for the 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 () |
bool | primal_data_initialized () const |
void | set_aggregation_coefficients (Real p1, Real p2, Real rho, Real sigma0) |
sets the norm for calculation of stress functional More... | |
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... | |
void | set_stress_plot_mode (bool f) |
tells the object that the calculation is for stress to be output for plotting. More... | |
bool | stress_plot_mode () const |
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::AssemblyBase & | get_assembly () |
MAST::PhysicsDisciplineBase & | get_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::ElementBase & | get_physics_elem () |
MAST::SystemInitialization & | get_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 | |
std::map< const libMesh::dof_id_type, std::vector< MAST::StressStrainOutputBase::Data * > > | _boundary_stress_data |
vector of stress with the associated location details More... | |
Real | _exp_arg_lim |
bool | _if_stress_plot_mode |
identifies the mode in which evaluation is peformed. More... | |
Real | _JxW_val |
Real | _p_norm_stress |
norm to be used for calculation of output stress function. More... | |
Real | _p_norm_weight |
bool | _primal_data_initialized |
primal data, needed for sensitivity and adjoints More... | |
Real | _rho |
exponent used in scaling volume based on stress value. More... | |
Real | _sigma0 |
reference stress value used in scaling volume. More... | |
Real | _sigma_vm_int |
Real | _sigma_vm_p_norm |
std::map< const libMesh::dof_id_type, std::vector< MAST::StressStrainOutputBase::Data * > > | _stress_data |
vector of stress with the associated location details More... | |
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 |
MAST::StressStrainOutputBase::StressStrainOutputBase | ( | ) |
default constructor
Definition at line 275 of file stress_output_base.cpp.
|
virtual |
Definition at line 293 of file stress_output_base.cpp.
|
virtual |
add the stress tensor associated with the qp
on side s
of element e
.
Data
. Reimplemented in MAST::StressTemperatureAdjoint.
Definition at line 660 of file stress_output_base.cpp.
|
virtual |
add the stress tensor associated with the qp.
Data
. Reimplemented in MAST::StressTemperatureAdjoint.
Definition at line 613 of file stress_output_base.cpp.
void MAST::StressStrainOutputBase::clear | ( | ) |
clears the data structure of any stored values so that it can be used for another element.
Definition at line 519 of file stress_output_base.cpp.
|
virtual |
clears the data stored for sensitivity analysis.
Definition at line 572 of file stress_output_base.cpp.
|
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 319 of file stress_output_base.cpp.
|
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 336 of file stress_output_base.cpp.
|
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 326 of file stress_output_base.h.
|
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 357 of file stress_output_base.cpp.
|
virtual |
This evaluates the contribution to the topology sensitivity on the boundary.
Given that the integral is nonlinear due to the norm, the expression is quite involved:
Implements MAST::OutputAssemblyElemOperations.
Definition at line 385 of file stress_output_base.cpp.
|
virtual |
calculates and returns the sensitivity of von Mises p-norm functional for all the elements that this object currently stores data for.
This is defined as
Definition at line 948 of file stress_output_base.cpp.
|
virtual |
calculates and returns the boundary sensitivity of von Mises p-norm functional for the element e
.
Reimplemented in MAST::KSStressStrainOutput, and MAST::SmoothRampStressStrainOutput.
Definition at line 1051 of file stress_output_base.cpp.
|
virtual |
calculates and returns the von Mises p-norm functional for all the elements that this object currently stores data for.
This is defined as
Reimplemented in MAST::KSStressStrainOutput, and MAST::SmoothRampStressStrainOutput.
Definition at line 852 of file stress_output_base.cpp.
|
virtual |
calculates and returns the sensitivity of von Mises p-norm functional for all the elements that this object currently stores data for.
This is defined as
Definition at line 915 of file stress_output_base.cpp.
|
virtual |
calculates and returns the sensitivity of von Mises p-norm functional for the element e
.
Reimplemented in MAST::KSStressStrainOutput, and MAST::SmoothRampStressStrainOutput.
Definition at line 980 of file stress_output_base.cpp.
|
virtual |
calculates and returns the derivative of von Mises p-norm functional wrt state vector for the specified element.
This assumes that the von_Mises_p_norm_functional_for_all_elems()
has been called to calculate the primal data. This is defined as
Reimplemented in MAST::KSStressStrainOutput, and MAST::SmoothRampStressStrainOutput.
Definition at line 1105 of file stress_output_base.cpp.
Real MAST::StressStrainOutputBase::get_maximum_von_mises_stress | ( | ) | const |
Definition at line 716 of file stress_output_base.cpp.
|
inline |
Definition at line 257 of file stress_output_base.h.
|
virtual |
Reimplemented in MAST::StressTemperatureAdjoint.
Definition at line 708 of file stress_output_base.cpp.
|
virtual |
Reimplemented in MAST::StressTemperatureAdjoint.
Definition at line 782 of file stress_output_base.cpp.
|
virtual |
Reimplemented in MAST::StressTemperatureAdjoint.
Definition at line 798 of file stress_output_base.cpp.
MAST::BoundaryConditionBase * MAST::StressStrainOutputBase::get_thermal_load_for_elem | ( | const MAST::GeomElem & | elem | ) |
nullptr
pointer is returned if no load is present. Definition at line 817 of file stress_output_base.cpp.
|
virtual |
initialize for the element.
Implements MAST::AssemblyElemOperations.
Definition at line 503 of file stress_output_base.cpp.
unsigned int MAST::StressStrainOutputBase::n_boundary_stress_strain_data_for_elem | ( | const GeomElem & | e | ) | const |
Definition at line 765 of file stress_output_base.cpp.
unsigned int MAST::StressStrainOutputBase::n_stress_strain_data_for_elem | ( | const MAST::GeomElem & | e | ) | const |
Definition at line 748 of file stress_output_base.cpp.
|
virtual |
calculates the derivative of p-norm von Mises stress for the norm identified using set_p_val()
.
The quantity is evaluated over the current element for which this object is initialized.
Implements MAST::OutputAssemblyElemOperations.
Reimplemented in MAST::StressTemperatureAdjoint.
Definition at line 462 of file stress_output_base.cpp.
|
inlinevirtual |
should not get called for this output.
Use output_total() instead.
Implements MAST::OutputAssemblyElemOperations.
Definition at line 359 of file stress_output_base.h.
|
virtual |
set_p_val()
. The returned quantity is evaluated for the element for which this object is initialized. Implements MAST::OutputAssemblyElemOperations.
Definition at line 428 of file stress_output_base.cpp.
|
virtual |
with respect to parameter . This returns the quantity accumulated over all elements.
Implements MAST::OutputAssemblyElemOperations.
Definition at line 444 of file stress_output_base.cpp.
|
virtual |
Implements MAST::OutputAssemblyElemOperations.
Definition at line 415 of file stress_output_base.cpp.
|
inline |
Definition at line 400 of file stress_output_base.h.
|
inline |
sets the norm for calculation of stress functional
Definition at line 246 of file stress_output_base.h.
|
virtual |
sets the structural element y-vector if 1D element is used.
Implements MAST::AssemblyElemOperations.
Definition at line 486 of file stress_output_base.cpp.
|
inline |
tells the object that the calculation is for stress to be output for plotting.
Definition at line 267 of file stress_output_base.h.
|
inline |
Definition at line 396 of file stress_output_base.h.
|
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 302 of file stress_output_base.cpp.
|
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 312 of file stress_output_base.cpp.
|
protected |
vector of stress with the associated location details
Definition at line 627 of file stress_output_base.h.
|
protected |
Definition at line 600 of file stress_output_base.h.
|
protected |
identifies the mode in which evaluation is peformed.
if p-norm functional is being evaluated then certain requirements are not enforced. This is to be used when stress is being calculated per element for plotting.
Definition at line 614 of file stress_output_base.h.
|
protected |
Definition at line 606 of file stress_output_base.h.
|
protected |
norm to be used for calculation of output stress function.
Default value is 2.0.
Definition at line 588 of file stress_output_base.h.
|
protected |
Definition at line 588 of file stress_output_base.h.
|
protected |
primal data, needed for sensitivity and adjoints
Definition at line 605 of file stress_output_base.h.
|
protected |
exponent used in scaling volume based on stress value.
Definition at line 593 of file stress_output_base.h.
|
protected |
reference stress value used in scaling volume.
Definition at line 598 of file stress_output_base.h.
|
protected |
Definition at line 606 of file stress_output_base.h.
|
protected |
Definition at line 606 of file stress_output_base.h.
|
protected |
vector of stress with the associated location details
Definition at line 620 of file stress_output_base.h.