Definition at line 39 of file complex_assembly_base.h.
#include <complex_assembly_base.h>
Public Member Functions | |
ComplexAssemblyBase () | |
constructor associates this assembly object with the system More... | |
virtual | ~ComplexAssemblyBase () |
destructor resets the association of this assembly object with the system More... | |
const libMesh::NumericVector< Real > & | base_sol (bool if_sens=false) const |
void | clear_base_solution (bool if_sens=false) |
Clears pointer to the solution vector The flag if_sens tells the method to clear pointer of the solution sensitivity. More... | |
bool | if_linearized_about_nonzero_solution () const |
void | residual_and_jacobian_blocked (const libMesh::NumericVector< Real > &X, libMesh::NumericVector< Real > &R, libMesh::SparseMatrix< Real > &J, MAST::Parameter *p=nullptr) |
Assembles the residual and Jacobian of the N complex system of equations split into 2N real system of equations. More... | |
void | residual_and_jacobian_field_split (const libMesh::NumericVector< Real > &X_R, const libMesh::NumericVector< Real > &X_I, libMesh::NumericVector< Real > &R_R, libMesh::NumericVector< Real > &R_I, libMesh::SparseMatrix< Real > &J_R, libMesh::SparseMatrix< Real > &J_I) |
Real | residual_l2_norm (const libMesh::NumericVector< Real > &real, const libMesh::NumericVector< Real > &imag) |
calculates the L2 norm of the residual complex system of equations. More... | |
virtual bool | sensitivity_assemble (const MAST::FunctionBase &f, libMesh::NumericVector< Real > &sensitivity_rhs) |
Assembly function. More... | |
void | set_base_solution (const libMesh::NumericVector< Real > &sol, bool if_sens=false) |
if the problem is defined about a non-zero base solution, then this method provides the object with the base solution. More... | |
Public Member Functions inherited from MAST::AssemblyBase | |
AssemblyBase () | |
constructor takes a reference to the discipline that provides the boundary conditions, volume loads, properties, etc. More... | |
virtual | ~AssemblyBase () |
virtual destructor More... | |
void | attach_elem_parameter_dependence_object (MAST::AssemblyBase::ElemParameterDependence &dep) |
This object, if provided by user, will be used to reduce unnecessary computations in sensitivity analysis assembly operations. More... | |
void | attach_solution_function (MAST::MeshFieldFunction &f) |
tells the assembly object that this function is will need to be initialized before each residual evaluation More... | |
std::unique_ptr< libMesh::NumericVector< Real > > | build_localized_vector (const libMesh::System &sys, const libMesh::NumericVector< Real > &global) const |
localizes the parallel vector so that the local copy stores all values necessary for calculation of the element quantities More... | |
virtual void | calculate_output (const libMesh::NumericVector< Real > &X, bool if_localize_sol, MAST::OutputAssemblyElemOperations &output) |
calculates the value of quantity . More... | |
virtual Real | calculate_output_adjoint_sensitivity (const libMesh::NumericVector< Real > &X, bool if_localize_sol, const libMesh::NumericVector< Real > &adj_sol, const MAST::FunctionBase &p, MAST::AssemblyElemOperations &elem_ops, MAST::OutputAssemblyElemOperations &output, const bool include_partial_sens=true) |
Evaluates the total sensitivity of output wrt p using the adjoint solution provided in adj_sol for a linearization about solution X . More... | |
virtual void | calculate_output_adjoint_sensitivity_multiple_parameters_no_direct (const libMesh::NumericVector< Real > &X, bool if_localize_sol, const libMesh::NumericVector< Real > &adj_sol, const std::vector< const MAST::FunctionBase *> &p_vec, MAST::AssemblyElemOperations &elem_ops, MAST::OutputAssemblyElemOperations &output, std::vector< Real > &sens) |
Evaluates the dot product between adj_sol and sensitivity of residual about X for multiple parameter_vectors p_vec and returns the results in sens . More... | |
virtual void | calculate_output_derivative (const libMesh::NumericVector< Real > &X, bool if_localize_sol, MAST::OutputAssemblyElemOperations &output, libMesh::NumericVector< Real > &dq_dX) |
calculates More... | |
virtual void | calculate_output_direct_sensitivity (const libMesh::NumericVector< Real > &X, bool if_localize_sol, const libMesh::NumericVector< Real > *dXdp, bool if_localize_sol_sens, const MAST::FunctionBase &p, MAST::OutputAssemblyElemOperations &output) |
evaluates the sensitivity of the outputs in the attached discipline with respect to the parametrs in params . More... | |
virtual void | clear_discipline_and_system () |
clears association with a system to this discipline More... | |
virtual void | clear_elem_operation_object () |
clears the association of this object with the assembly element operation object. More... | |
void | clear_elem_parameter_dependence_object () |
void | clear_solver_monitor () |
clears the monitor object More... | |
void | detach_solution_function () |
removes the attachment of the solution function More... | |
const MAST::PhysicsDisciplineBase & | discipline () const |
MAST::PhysicsDisciplineBase & | discipline () |
MAST::AssemblyElemOperations & | get_elem_ops () |
MAST::AssemblyBase::SolverMonitor * | get_solver_monitor () |
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 More... | |
virtual bool | sensitivity_assemble (const libMesh::NumericVector< Real > &X, bool if_localize_sol, const MAST::FunctionBase &f, libMesh::NumericVector< Real > &sensitivity_rhs, bool close_vector=true) |
Assembly function. More... | |
virtual void | set_discipline_and_system (MAST::PhysicsDisciplineBase &discipline, MAST::SystemInitialization &system) |
attaches a system to this discipline More... | |
virtual void | set_elem_operation_object (MAST::AssemblyElemOperations &elem_ops) |
attaches a element operation to this object, and associated this with the element operation object. More... | |
void | set_solver_monitor (MAST::AssemblyBase::SolverMonitor &monitor) |
attaches the solver monitor, which is a user provided routine that is called each time More... | |
const MAST::NonlinearSystem & | system () const |
MAST::NonlinearSystem & | system () |
MAST::SystemInitialization & | system_init () |
Protected Attributes | |
const libMesh::NumericVector< Real > * | _base_sol |
base solution about which this problem is defined. More... | |
const libMesh::NumericVector< Real > * | _base_sol_sensitivity |
sensitivity of base solution may be needed for sensitivity analysis. More... | |
Protected Attributes inherited from MAST::AssemblyBase | |
MAST::PhysicsDisciplineBase * | _discipline |
PhysicsDisciplineBase object for which this class is assembling. More... | |
MAST::AssemblyElemOperations * | _elem_ops |
provides assembly elem operations for use by this class More... | |
MAST::AssemblyBase::ElemParameterDependence * | _param_dependence |
If provided by user, this object is used by sensitiivty analysis to check for whether or the current design parameter influences an element. More... | |
MAST::MeshFieldFunction * | _sol_function |
system solution that will be initialized before each solution More... | |
MAST::AssemblyBase::SolverMonitor * | _solver_monitor |
User provided solver monitor is attached to the linear nonlinear solvers, if provided. More... | |
MAST::SystemInitialization * | _system |
System for which this assembly is performed. More... | |
Additional Inherited Members | |
Public Attributes inherited from MAST::AssemblyBase | |
bool | close_matrix |
flag to control the closing fo the Jacobian after assembly More... | |
std::set< unsigned int > | diagonal_elem_subdomain_id |
subdomain ids for which residuakl and Jacobian contributions will not be computed. More... | |
MAST::ComplexAssemblyBase::ComplexAssemblyBase | ( | ) |
constructor associates this assembly object with the system
Definition at line 44 of file complex_assembly_base.cpp.
|
virtual |
destructor resets the association of this assembly object with the system
Definition at line 53 of file complex_assembly_base.cpp.
const libMesh::NumericVector< Real > & MAST::ComplexAssemblyBase::base_sol | ( | bool | if_sens = false | ) | const |
if_sens
is true) about which the Eigen problem was linearized. Definition at line 97 of file complex_assembly_base.cpp.
void MAST::ComplexAssemblyBase::clear_base_solution | ( | bool | if_sens = false | ) |
Clears pointer to the solution vector The flag if_sens
tells the method to clear pointer of the solution sensitivity.
Definition at line 85 of file complex_assembly_base.cpp.
bool MAST::ComplexAssemblyBase::if_linearized_about_nonzero_solution | ( | ) | const |
void MAST::ComplexAssemblyBase::residual_and_jacobian_blocked | ( | const libMesh::NumericVector< Real > & | X, |
libMesh::NumericVector< Real > & | R, | ||
libMesh::SparseMatrix< Real > & | J, | ||
MAST::Parameter * | p = nullptr |
||
) |
Assembles the residual and Jacobian of the N complex system of equations split into 2N real system of equations.
The solution vector X
is the current complex solution with the real and imaginary parts of each element stored as adjacent entries. Likewise, the Jaacobian matrix has a 2x2 block storage. If p
is provided, then R
will return the sensitivity of the residual vector.
Definition at line 411 of file complex_assembly_base.cpp.
void MAST::ComplexAssemblyBase::residual_and_jacobian_field_split | ( | const libMesh::NumericVector< Real > & | X_R, |
const libMesh::NumericVector< Real > & | X_I, | ||
libMesh::NumericVector< Real > & | R_R, | ||
libMesh::NumericVector< Real > & | R_I, | ||
libMesh::SparseMatrix< Real > & | J_R, | ||
libMesh::SparseMatrix< Real > & | J_I | ||
) |
Definition at line 246 of file complex_assembly_base.cpp.
Real MAST::ComplexAssemblyBase::residual_l2_norm | ( | const libMesh::NumericVector< Real > & | real, |
const libMesh::NumericVector< Real > & | imag | ||
) |
calculates the L2 norm of the residual complex system of equations.
Definition at line 110 of file complex_assembly_base.cpp.
|
virtual |
Assembly function.
This function will be called to assemble the RHS of the sensitivity equations (which is -1 times sensitivity of system residual) prior to a solve and must be provided by the user in a derived class. The method provides dR/dp for f
parameter.
If the routine is not able to provide sensitivity for this parameter, then it should return false, and the system will attempt to use finite differencing.
Definition at line 615 of file complex_assembly_base.cpp.
void MAST::ComplexAssemblyBase::set_base_solution | ( | const libMesh::NumericVector< Real > & | sol, |
bool | if_sens = false |
||
) |
if the problem is defined about a non-zero base solution, then this method provides the object with the base solution.
The flag if_sens
tells the method if sol
is the sensitivity of the base solution for the current parameter being solved for
Definition at line 62 of file complex_assembly_base.cpp.
|
protected |
base solution about which this problem is defined.
This vector stores the localized values necessary to perform element calculations.
Definition at line 141 of file complex_assembly_base.h.
|
protected |
sensitivity of base solution may be needed for sensitivity analysis.
This vector stores the localized values necessary to perform element calculations.
Definition at line 148 of file complex_assembly_base.h.