https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
ParameterMeshOptimization Class Reference

Mesh-based parameter optimization. More...

#include <ParameterMeshOptimization.h>

Inheritance diagram for ParameterMeshOptimization:
[legend]

Public Types

typedef DataFileName DataFileParameterType
 

Public Member Functions

 ParameterMeshOptimization (const InputParameters &parameters)
 
virtual Real computeObjective () override
 Function to compute objective.
 
virtual void computeGradient (libMesh::PetscVector< Number > &gradient) const override
 Function to compute gradient.
 
virtual void initialize () override
 
virtual void execute () override
 
virtual void finalize () override
 
void setInitialCondition (libMesh::PetscVector< Number > &param)
 Function to initialize petsc vectors from vpp data.
 
Real getUpperBound (dof_id_type i) const
 Upper and lower bounds for each parameter being controlled.
 
Real getLowerBound (dof_id_type i) const
 
virtual void computeEqualityConstraints (libMesh::PetscVector< Number > &eqs_constraints) const
 Function to compute the equality constraints.
 
virtual void computeInequalityConstraints (libMesh::PetscVector< Number > &ineqs_constraints) const
 Function to compute the inequality constraints.
 
virtual void computeEqualityGradient (libMesh::PetscMatrix< Number > &gradient) const
 Function to compute the gradient of the equality constraints/ This is the last call of the equality constraint gradient routine.
 
virtual void computeInequalityGradient (libMesh::PetscMatrix< Number > &gradient) const
 Function to compute the gradient of the inequality constraints/ This is the last call of the inequality constraint gradient routine.
 
dof_id_type getNumEqCons () const
 Function to get the total number of equalities.
 
dof_id_type getNumInEqCons () const
 Function to get the total number of inequalities.
 
void threadJoin (const UserObject &) final
 
bool shouldStore () const override final
 
virtual Real spatialValue (const Point &) const
 
virtual const std::vector< Point > spatialPoints () const
 
void setPrimaryThreadCopy (UserObject *primary)
 
UserObject * primaryThreadCopy ()
 
SubProblem & getSubProblem () const
 
bool shouldDuplicateInitialExecution () const
 
void gatherSum (T &value)
 
void gatherMax (T &value)
 
void gatherMin (T &value)
 
void gatherProxyValueMax (T1 &proxy, T2 &value)
 
void gatherProxyValueMin (T1 &proxy, T2 &value)
 
std::set< UserObjectName > getDependObjects () const
 
const std::set< std::string > & getRequestedItems () override
 
const std::set< std::string > & getSuppliedItems () override
 
unsigned int systemNumber () const
 
virtual bool needThreadedCopy () const
 
virtual bool enabled () const
 
std::shared_ptr< MooseObject > getSharedPtr ()
 
std::shared_ptr< const MooseObject > getSharedPtr () const
 
bool isKokkosObject () const
 
MooseApp & getMooseApp () const
 
const std::string & type () const
 
const std::string & name () const
 
std::string typeAndName () const
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
MooseObjectName uniqueName () const
 
const InputParameters & parameters () const
 
const hit::Node * getHitNode () const
 
bool hasBase () const
 
const std::string & getBase () const
 
const T & getParam (const std::string &name) const
 
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 
const T * queryParam (const std::string &name) const
 
const T & getRenamedParam (const std::string &old_name, const std::string &new_name) const
 
T getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 
bool isParamValid (const std::string &name) const
 
bool isParamSetByUser (const std::string &name) const
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 
void paramError (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramInfo (const std::string &param, Args... args) const
 
std::string messagePrefix (const bool hit_prefix=true) const
 
std::string errorPrefix (const std::string &) const
 
void mooseError (Args &&... args) const
 
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
void mooseErrorNonPrefixed (Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseDeprecatedNoTrace (Args &&... args) const
 
void mooseInfo (Args &&... args) const
 
void callMooseError (std::string msg, const bool with_prefix, const hit::Node *node=nullptr, const bool show_trace=true) const
 
std::string getDataFileName (const std::string &param) const
 
std::string getDataFileNameByName (const std::string &relative_path) const
 
std::string getDataFilePath (const std::string &relative_path) const
 
virtual void initialSetup ()
 
virtual void timestepSetup ()
 
virtual void jacobianSetup ()
 
virtual void residualSetup ()
 
virtual void customSetup (const ExecFlagType &)
 
const ExecFlagEnum & getExecuteOnEnum () const
 
UserObjectName getUserObjectName (const std::string &param_name) const
 
const T & getUserObject (const std::string &param_name, bool is_dependency=true) const
 
const T & getUserObjectByName (const UserObjectName &object_name, bool is_dependency=true) const
 
const UserObjectBase & getUserObjectBase (const std::string &param_name, bool is_dependency=true) const
 
const UserObjectBase & getUserObjectBaseByName (const UserObjectName &object_name, bool is_dependency=true) const
 
const std::vector< MooseVariableScalar * > & getCoupledMooseScalarVars ()
 
const std::set< TagID > & getScalarVariableCoupleableVectorTags () const
 
const std::set< TagID > & getScalarVariableCoupleableMatrixTags () const
 
const GenericMaterialProperty< T, is_ad > & getGenericMaterialProperty (const std::string &name, MaterialData &material_data, const unsigned int state=0)
 
const GenericMaterialProperty< T, is_ad > & getGenericMaterialProperty (const std::string &name, const unsigned int state=0)
 
const GenericMaterialProperty< T, is_ad > & getGenericMaterialProperty (const std::string &name, const unsigned int state=0)
 
const MaterialProperty< T > & getMaterialProperty (const std::string &name, MaterialData &material_data, const unsigned int state=0)
 
const MaterialProperty< T > & getMaterialProperty (const std::string &name, const unsigned int state=0)
 
const MaterialProperty< T > & getMaterialProperty (const std::string &name, const unsigned int state=0)
 
const ADMaterialProperty< T > & getADMaterialProperty (const std::string &name, MaterialData &material_data)
 
const ADMaterialProperty< T > & getADMaterialProperty (const std::string &name)
 
const ADMaterialProperty< T > & getADMaterialProperty (const std::string &name)
 
const MaterialProperty< T > & getMaterialPropertyOld (const std::string &name, MaterialData &material_data)
 
const MaterialProperty< T > & getMaterialPropertyOld (const std::string &name)
 
const MaterialProperty< T > & getMaterialPropertyOld (const std::string &name)
 
const MaterialProperty< T > & getMaterialPropertyOlder (const std::string &name, MaterialData &material_data)
 
const MaterialProperty< T > & getMaterialPropertyOlder (const std::string &name)
 
const MaterialProperty< T > & getMaterialPropertyOlder (const std::string &name)
 
const GenericMaterialProperty< T, is_ad > & getGenericMaterialPropertyByName (const MaterialPropertyName &name, MaterialData &material_data, const unsigned int state)
 
const GenericMaterialProperty< T, is_ad > & getGenericMaterialPropertyByName (const MaterialPropertyName &name, const unsigned int state=0)
 
const GenericMaterialProperty< T, is_ad > & getGenericMaterialPropertyByName (const MaterialPropertyName &name, const unsigned int state=0)
 
const MaterialProperty< T > & getMaterialPropertyByName (const MaterialPropertyName &name, MaterialData &material_data, const unsigned int state=0)
 
const MaterialProperty< T > & getMaterialPropertyByName (const MaterialPropertyName &name, const unsigned int state=0)
 
const MaterialProperty< T > & getMaterialPropertyByName (const MaterialPropertyName &name, const unsigned int state=0)
 
const ADMaterialProperty< T > & getADMaterialPropertyByName (const MaterialPropertyName &name, MaterialData &material_data)
 
const ADMaterialProperty< T > & getADMaterialPropertyByName (const MaterialPropertyName &name)
 
const ADMaterialProperty< T > & getADMaterialPropertyByName (const MaterialPropertyName &name)
 
const MaterialProperty< T > & getMaterialPropertyOldByName (const MaterialPropertyName &name, MaterialData &material_data)
 
const MaterialProperty< T > & getMaterialPropertyOldByName (const MaterialPropertyName &name)
 
const MaterialProperty< T > & getMaterialPropertyOldByName (const MaterialPropertyName &name)
 
const MaterialProperty< T > & getMaterialPropertyOlderByName (const MaterialPropertyName &name, MaterialData &material_data)
 
const MaterialProperty< T > & getMaterialPropertyOlderByName (const MaterialPropertyName &name)
 
const MaterialProperty< T > & getMaterialPropertyOlderByName (const MaterialPropertyName &name)
 
Moose::Kokkos::MaterialProperty< T, dimension > getKokkosMaterialPropertyByName (const std::string &prop_name_in)
 
Moose::Kokkos::MaterialProperty< T, dimension > getKokkosMaterialPropertyOldByName (const std::string &prop_name)
 
Moose::Kokkos::MaterialProperty< T, dimension > getKokkosMaterialPropertyOlderByName (const std::string &prop_name)
 
Moose::Kokkos::MaterialProperty< T, dimension > getKokkosMaterialProperty (const std::string &name)
 
Moose::Kokkos::MaterialProperty< T, dimension > getKokkosMaterialPropertyOld (const std::string &name)
 
Moose::Kokkos::MaterialProperty< T, dimension > getKokkosMaterialPropertyOlder (const std::string &name)
 
std::pair< const MaterialProperty< T > *, std::set< SubdomainID > > getBlockMaterialProperty (const MaterialPropertyName &name)
 
std::pair< Moose::Kokkos::MaterialProperty< T, dimension >, std::set< SubdomainID > > getKokkosBlockMaterialProperty (const MaterialPropertyName &name)
 
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialProperty (const std::string &name)
 
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialProperty ()
 
const GenericMaterialProperty< T, is_ad > & getGenericZeroMaterialPropertyByName (const std::string &prop_name)
 
const MaterialProperty< T > & getZeroMaterialProperty (Ts... args)
 
std::set< SubdomainID > getMaterialPropertyBlocks (const std::string &name)
 
std::vector< SubdomainName > getMaterialPropertyBlockNames (const std::string &name)
 
std::set< BoundaryID > getMaterialPropertyBoundaryIDs (const std::string &name)
 
std::vector< BoundaryName > getMaterialPropertyBoundaryNames (const std::string &name)
 
void checkBlockAndBoundaryCompatibility (std::shared_ptr< MaterialBase > discrete)
 
std::unordered_map< SubdomainID, std::vector< MaterialBase * > > buildRequiredMaterials (bool allow_stateful=true)
 
void statefulPropertiesAllowed (bool)
 
virtual bool getMaterialPropertyCalled () const
 
virtual const std::unordered_set< unsigned int > & getMatPropDependencies () const
 
virtual void resolveOptionalProperties ()
 
const GenericMaterialProperty< T, is_ad > & getPossiblyConstantGenericMaterialPropertyByName (const MaterialPropertyName &prop_name, MaterialData &material_data, const unsigned int state)
 
bool isImplicit ()
 
Moose::StateArg determineState () const
 
virtual void store (nlohmann::json &json) const
 
virtual void declareLateValues ()
 
void buildOutputHideVariableList (std::set< std::string > variable_names)
 
const std::set< OutputName > & getOutputs ()
 
virtual void subdomainSetup () override
 
virtual void subdomainSetup () override
 
bool hasUserObject (const std::string &param_name) const
 
bool hasUserObject (const std::string &param_name) const
 
bool hasUserObject (const std::string &param_name) const
 
bool hasUserObject (const std::string &param_name) const
 
bool hasUserObjectByName (const UserObjectName &object_name) const
 
bool hasUserObjectByName (const UserObjectName &object_name) const
 
bool hasUserObjectByName (const UserObjectName &object_name) const
 
bool hasUserObjectByName (const UserObjectName &object_name) const
 
const GenericOptionalMaterialProperty< T, is_ad > & getGenericOptionalMaterialProperty (const std::string &name, const unsigned int state=0)
 
const GenericOptionalMaterialProperty< T, is_ad > & getGenericOptionalMaterialProperty (const std::string &name, const unsigned int state=0)
 
const OptionalMaterialProperty< T > & getOptionalMaterialProperty (const std::string &name, const unsigned int state=0)
 
const OptionalMaterialProperty< T > & getOptionalMaterialProperty (const std::string &name, const unsigned int state=0)
 
const OptionalADMaterialProperty< T > & getOptionalADMaterialProperty (const std::string &name)
 
const OptionalADMaterialProperty< T > & getOptionalADMaterialProperty (const std::string &name)
 
const OptionalMaterialProperty< T > & getOptionalMaterialPropertyOld (const std::string &name)
 
const OptionalMaterialProperty< T > & getOptionalMaterialPropertyOld (const std::string &name)
 
const OptionalMaterialProperty< T > & getOptionalMaterialPropertyOlder (const std::string &name)
 
const OptionalMaterialProperty< T > & getOptionalMaterialPropertyOlder (const std::string &name)
 
MaterialBase & getMaterial (const std::string &name)
 
MaterialBase & getMaterial (const std::string &name)
 
MaterialBase & getMaterialByName (const std::string &name, bool no_warn=false)
 
MaterialBase & getMaterialByName (const std::string &name, bool no_warn=false)
 
bool hasMaterialProperty (const std::string &name)
 
bool hasMaterialProperty (const std::string &name)
 
bool hasMaterialPropertyByName (const std::string &name)
 
bool hasMaterialPropertyByName (const std::string &name)
 
bool hasADMaterialProperty (const std::string &name)
 
bool hasADMaterialProperty (const std::string &name)
 
bool hasADMaterialPropertyByName (const std::string &name)
 
bool hasADMaterialPropertyByName (const std::string &name)
 
bool hasKokkosMaterialProperty (const std::string &name)
 
bool hasKokkosMaterialProperty (const std::string &name)
 
bool hasKokkosMaterialPropertyByName (const std::string &name)
 
bool hasKokkosMaterialPropertyByName (const std::string &name)
 
bool hasGenericMaterialProperty (const std::string &name)
 
bool hasGenericMaterialProperty (const std::string &name)
 
bool hasGenericMaterialPropertyByName (const std::string &name)
 
bool hasGenericMaterialPropertyByName (const std::string &name)
 
const Function & getFunction (const std::string &name) const
 
const Function & getFunctionByName (const FunctionName &name) const
 
bool hasFunction (const std::string &param_name) const
 
bool hasFunctionByName (const FunctionName &name) const
 
Moose::Kokkos::Function getKokkosFunction (const std::string &name) const
 
const T & getKokkosFunction (const std::string &name) const
 
Moose::Kokkos::Function getKokkosFunctionByName (const FunctionName &name) const
 
const T & getKokkosFunctionByName (const FunctionName &name) const
 
bool hasKokkosFunction (const std::string &param_name) const
 
bool hasKokkosFunctionByName (const FunctionName &name) const
 
bool isDefaultPostprocessorValue (const std::string &param_name, const unsigned int index=0) const
 
bool hasPostprocessor (const std::string &param_name, const unsigned int index=0) const
 
bool hasPostprocessorByName (const PostprocessorName &name) const
 
std::size_t coupledPostprocessors (const std::string &param_name) const
 
const PostprocessorName & getPostprocessorName (const std::string &param_name, const unsigned int index=0) const
 
const VectorPostprocessorValue & getVectorPostprocessorValue (const std::string &param_name, const std::string &vector_name) const
 
const VectorPostprocessorValue & getVectorPostprocessorValue (const std::string &param_name, const std::string &vector_name, bool needs_broadcast) const
 
const VectorPostprocessorValue & getVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
const VectorPostprocessorValue & getVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name, bool needs_broadcast) const
 
const VectorPostprocessorValue & getVectorPostprocessorValueOld (const std::string &param_name, const std::string &vector_name) const
 
const VectorPostprocessorValue & getVectorPostprocessorValueOld (const std::string &param_name, const std::string &vector_name, bool needs_broadcast) const
 
const VectorPostprocessorValue & getVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
const VectorPostprocessorValue & getVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name, bool needs_broadcast) const
 
const ScatterVectorPostprocessorValue & getScatterVectorPostprocessorValue (const std::string &param_name, const std::string &vector_name) const
 
const ScatterVectorPostprocessorValue & getScatterVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
const ScatterVectorPostprocessorValue & getScatterVectorPostprocessorValueOld (const std::string &param_name, const std::string &vector_name) const
 
const ScatterVectorPostprocessorValue & getScatterVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
bool hasVectorPostprocessor (const std::string &param_name, const std::string &vector_name) const
 
bool hasVectorPostprocessor (const std::string &param_name) const
 
bool hasVectorPostprocessorByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
bool hasVectorPostprocessorByName (const VectorPostprocessorName &name) const
 
const VectorPostprocessorName & getVectorPostprocessorName (const std::string &param_name) const
 
T & getSampler (const std::string &name)
 
Sampler & getSampler (const std::string &name)
 
T & getSamplerByName (const SamplerName &name)
 
Sampler & getSamplerByName (const SamplerName &name)
 
virtual void meshChanged ()
 
virtual void meshDisplaced ()
 
PerfGraph & perfGraph ()
 
const PostprocessorValue & getPostprocessorValue (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValue & getPostprocessorValue (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValue & getPostprocessorValueOld (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValue & getPostprocessorValueOld (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValue & getPostprocessorValueOlder (const std::string &param_name, const unsigned int index=0) const
 
const PostprocessorValue & getPostprocessorValueOlder (const std::string &param_name, const unsigned int index=0) const
 
virtual const PostprocessorValue & getPostprocessorValueByName (const PostprocessorName &name) const
 
virtual const PostprocessorValue & getPostprocessorValueByName (const PostprocessorName &name) const
 
const PostprocessorValue & getPostprocessorValueOldByName (const PostprocessorName &name) const
 
const PostprocessorValue & getPostprocessorValueOldByName (const PostprocessorName &name) const
 
const PostprocessorValue & getPostprocessorValueOlderByName (const PostprocessorName &name) const
 
const PostprocessorValue & getPostprocessorValueOlderByName (const PostprocessorName &name) const
 
bool isVectorPostprocessorDistributed (const std::string &param_name) const
 
bool isVectorPostprocessorDistributed (const std::string &param_name) const
 
bool isVectorPostprocessorDistributedByName (const VectorPostprocessorName &name) const
 
bool isVectorPostprocessorDistributedByName (const VectorPostprocessorName &name) const
 
const Distribution & getDistribution (const std::string &name) const
 
const T & getDistribution (const std::string &name) const
 
const Distribution & getDistribution (const std::string &name) const
 
const T & getDistribution (const std::string &name) const
 
const Distribution & getDistributionByName (const DistributionName &name) const
 
const T & getDistributionByName (const std::string &name) const
 
const Distribution & getDistributionByName (const DistributionName &name) const
 
const T & getDistributionByName (const std::string &name) const
 
const Parallel::Communicator & comm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 

Static Public Member Functions

static InputParameters validParams ()
 
static void callMooseError (MooseApp *const app, const InputParameters &params, std::string msg, const bool with_prefix, const hit::Node *node, const bool show_trace=true)
 
static void sort (typename std::vector< T > &vector)
 
static void sortDFS (typename std::vector< T > &vector)
 
static void cyclicDependencyError (CyclicDependencyException< T2 > &e, const std::string &header, NameFunc &&name_func)
 
static void cyclicDependencyError (CyclicDependencyException< T2 > &e, const std::string &header)
 

Public Attributes

 usingCombinedWarningSolutionWarnings
 
const ConsoleStream _console
 

Static Public Attributes

static const std::string type_param
 
static const std::string name_param
 
static const std::string unique_name_param
 
static const std::string app_param
 
static const std::string moose_base_param
 
static const std::string kokkos_object_param
 
static constexpr PropertyValue::id_type default_property_id
 
static constexpr PropertyValue::id_type zero_property_id
 
static constexpr auto SYSTEM
 
static constexpr auto NAME
 

Protected Member Functions

virtual void setICsandBounds () override
 Sets the initial conditions and bounds right before it is needed.
 
virtual dof_id_type getNumParams () const override
 Function to get the total number of parameters.
 
virtual void updateParameters (const libMesh::PetscVector< Number > &x)
 Function to set parameters.
 
std::vector< Real > parseInputData (std::string type, Real default_value, unsigned int param_id) const
 Function to to parse bounds and initial conditions from input file.
 
virtual void addPostprocessorDependencyHelper (const PostprocessorName &name) const override
 
virtual void addVectorPostprocessorDependencyHelper (const VectorPostprocessorName &name) const override
 
virtual void addUserObjectDependencyHelper (const UserObjectBase &uo) const override
 
void addReporterDependencyHelper (const ReporterName &reporter_name) override
 
void flagInvalidSolutionInternal (const InvalidSolutionID invalid_solution_id) const
 
InvalidSolutionID registerInvalidSolutionInternal (const std::string &message, const bool warning) const
 
const ReporterContextBase & getReporterContextBaseByName (const ReporterName &reporter_name) const
 
const ReporterName & getReporterName (const std::string &param_name) const
 
T & declareRestartableData (const std::string &data_name, Args &&... args)
 
ManagedValue< T > declareManagedRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args)
 
const T & getRestartableData (const std::string &data_name) const
 
T & declareRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args)
 
T & declareRecoverableData (const std::string &data_name, Args &&... args)
 
T & declareRestartableDataWithObjectName (const std::string &data_name, const std::string &object_name, Args &&... args)
 
T & declareRestartableDataWithObjectNameWithContext (const std::string &data_name, const std::string &object_name, void *context, Args &&... args)
 
std::string restartableName (const std::string &data_name) const
 
const T & getMeshProperty (const std::string &data_name, const std::string &prefix)
 
const T & getMeshProperty (const std::string &data_name)
 
bool hasMeshProperty (const std::string &data_name, const std::string &prefix) const
 
bool hasMeshProperty (const std::string &data_name, const std::string &prefix) const
 
bool hasMeshProperty (const std::string &data_name) const
 
bool hasMeshProperty (const std::string &data_name) const
 
std::string meshPropertyName (const std::string &data_name) const
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level) const
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level, const std::string &live_message, const bool print_dots=true) const
 
std::string timedSectionName (const std::string &section_name) const
 
bool isCoupledScalar (const std::string &var_name, unsigned int i=0) const
 
unsigned int coupledScalarComponents (const std::string &var_name) const
 
unsigned int coupledScalar (const std::string &var_name, unsigned int comp=0) const
 
libMesh::Order coupledScalarOrder (const std::string &var_name, unsigned int comp=0) const
 
const VariableValue & coupledScalarValue (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableValue & adCoupledScalarValue (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableValue< is_ad > & coupledGenericScalarValue (const std::string &var_name, unsigned int comp=0) const
 
const GenericVariableValue< false > & coupledGenericScalarValue (const std::string &var_name, const unsigned int comp) const
 
const GenericVariableValue< true > & coupledGenericScalarValue (const std::string &var_name, const unsigned int comp) const
 
const VariableValue & coupledVectorTagScalarValue (const std::string &var_name, const std::string &tag_param_name, unsigned int comp=0) const
 
const VariableValue & coupledMatrixTagScalarValue (const std::string &var_name, const std::string &tag_param_name, unsigned int comp=0) const
 
const VariableValue & coupledScalarValueOld (const std::string &var_name, unsigned int comp=0) const
 
const VariableValue & coupledScalarValueOlder (const std::string &var_name, unsigned int comp=0) const
 
const VariableValue & coupledScalarDot (const std::string &var_name, unsigned int comp=0) const
 
const ADVariableValue & adCoupledScalarDot (const std::string &var_name, unsigned int comp=0) const
 
const VariableValue & coupledScalarDotDot (const std::string &var_name, unsigned int comp=0) const
 
const VariableValue & coupledScalarDotOld (const std::string &var_name, unsigned int comp=0) const
 
const VariableValue & coupledScalarDotDotOld (const std::string &var_name, unsigned int comp=0) const
 
const VariableValue & coupledScalarDotDu (const std::string &var_name, unsigned int comp=0) const
 
const VariableValue & coupledScalarDotDotDu (const std::string &var_name, unsigned int comp=0) const
 
Moose::Kokkos::VariableValue kokkosCoupledVectorTagScalarValueByName (const std::string &var_name, const std::string &tag_name, unsigned int comp=0) const
 
Moose::Kokkos::VariableValue kokkosCoupledVectorTagScalarValue (const std::string &var_name, const std::string &tag_param_name, unsigned int comp=0) const
 
Moose::Kokkos::VariableValue kokkosCoupledScalarValue (const std::string &var_name, unsigned int comp=0) const
 
Moose::Kokkos::VariableValue kokkosCoupledScalarValueOld (const std::string &var_name, unsigned int comp=0) const
 
Moose::Kokkos::VariableValue kokkosCoupledScalarValueOlder (const std::string &var_name, unsigned int comp=0) const
 
Moose::Kokkos::VariableValue kokkosCoupledScalarDot (const std::string &var_name, unsigned int comp=0) const
 
Moose::Kokkos::Scalar< const Real > kokkosCoupledScalarDotDu (const std::string &var_name, unsigned int comp=0) const
 
const MooseVariableScalar * getScalarVar (const std::string &var_name, unsigned int comp) const
 
virtual void checkMaterialProperty (const std::string &name, const unsigned int state)
 
virtual void getKokkosMaterialPropertyHook (const std::string &, const unsigned int)
 
void markMatPropRequested (const std::string &)
 
MaterialPropertyName getMaterialPropertyName (const std::string &name) const
 
void checkExecutionStage ()
 
T & declareUnusedValue (Args &&... args)
 
const T & getReporterValue (const std::string &param_name, const std::size_t time_index=0)
 
const T & getReporterValue (const std::string &param_name, ReporterMode mode, const std::size_t time_index=0)
 
const T & getReporterValue (const std::string &param_name, const std::size_t time_index=0)
 
const T & getReporterValue (const std::string &param_name, ReporterMode mode, const std::size_t time_index=0)
 
const T & getReporterValueByName (const ReporterName &reporter_name, const std::size_t time_index=0)
 
const T & getReporterValueByName (const ReporterName &reporter_name, ReporterMode mode, const std::size_t time_index=0)
 
const T & getReporterValueByName (const ReporterName &reporter_name, const std::size_t time_index=0)
 
const T & getReporterValueByName (const ReporterName &reporter_name, ReporterMode mode, const std::size_t time_index=0)
 
bool hasReporterValue (const std::string &param_name) const
 
bool hasReporterValue (const std::string &param_name) const
 
bool hasReporterValue (const std::string &param_name) const
 
bool hasReporterValue (const std::string &param_name) const
 
bool hasReporterValueByName (const ReporterName &reporter_name) const
 
bool hasReporterValueByName (const ReporterName &reporter_name) const
 
bool hasReporterValueByName (const ReporterName &reporter_name) const
 
bool hasReporterValueByName (const ReporterName &reporter_name) const
 
const GenericMaterialProperty< T, is_ad > * defaultGenericMaterialProperty (const std::string &name)
 
const GenericMaterialProperty< T, is_ad > * defaultGenericMaterialProperty (const std::string &name)
 
const MaterialProperty< T > * defaultMaterialProperty (const std::string &name)
 
const MaterialProperty< T > * defaultMaterialProperty (const std::string &name)
 
const ADMaterialProperty< T > * defaultADMaterialProperty (const std::string &name)
 
const ADMaterialProperty< T > * defaultADMaterialProperty (const std::string &name)
 
T & declareValue (const std::string &param_name, Args &&... args)
 
T & declareValue (const std::string &param_name, ReporterMode mode, Args &&... args)
 
T & declareValue (const std::string &param_name, Args &&... args)
 
T & declareValue (const std::string &param_name, ReporterMode mode, Args &&... args)
 
T & declareValue (const std::string &param_name, Args &&... args)
 
T & declareValue (const std::string &param_name, ReporterMode mode, Args &&... args)
 
T & declareValue (const std::string &param_name, Args &&... args)
 
T & declareValue (const std::string &param_name, ReporterMode mode, Args &&... args)
 
T & declareValueByName (const ReporterValueName &value_name, Args &&... args)
 
T & declareValueByName (const ReporterValueName &value_name, ReporterMode mode, Args &&... args)
 
T & declareValueByName (const ReporterValueName &value_name, Args &&... args)
 
T & declareValueByName (const ReporterValueName &value_name, ReporterMode mode, Args &&... args)
 
T & declareValueByName (const ReporterValueName &value_name, Args &&... args)
 
T & declareValueByName (const ReporterValueName &value_name, ReporterMode mode, Args &&... args)
 
T & declareValueByName (const ReporterValueName &value_name, Args &&... args)
 
T & declareValueByName (const ReporterValueName &value_name, ReporterMode mode, Args &&... args)
 

Static Protected Member Functions

static std::string meshPropertyName (const std::string &data_name, const std::string &prefix)
 

Protected Attributes

Real & _objective_val
 Reporter that will hold the objective value.
 
std::vector< dof_id_type > * _num_values_reporter
 
const std::vector< ReporterValueName > & _parameter_names
 Parameter names.
 
const unsigned int _nparams
 Number of parameter vectors.
 
std::vector< std::vector< Real > * > _parameters
 Parameter values declared as reporter data.
 
std::vector< std::vector< Real > * > _gradients
 Gradient values declared as reporter data.
 
const Real _tikhonov_coeff
 Tikhonov Coefficient for regularization.
 
const std::vector< ReporterValueName > * _equality_names
 Equality constraint names.
 
const unsigned int _n_eq_cons
 Number of equality constraint names.
 
std::vector< std::vector< Real > * > _eq_constraints
 Equality values declared as reporter data.
 
std::vector< std::vector< Real > * > _eq_gradients
 Gradient values declared as reporter data.
 
const std::vector< ReporterValueName > * _inequality_names
 Inequality constraint names.
 
const unsigned int _n_ineq_cons
 Number of inequality constraint names.
 
std::vector< std::vector< Real > * > _ineq_constraints
 Inequality values declared as reporter data.
 
std::vector< std::vector< Real > * > _ineq_gradients
 Gradient values declared as reporter data.
 
std::vector< Real > _lower_bounds
 Bounds of the parameters.
 
std::vector< Real > _upper_bounds
 
std::vector< dof_id_type > _nvalues
 Number of values for each parameter.
 
dof_id_type _ndof
 Total number of parameters.
 
const Moose::CoordinateSystemType & _coord_sys
 
const THREAD_ID _tid
 
SubProblem & _subproblem
 
FEProblemBase & _fe_problem
 
SystemBase & _sys
 
Assembly & _assembly
 
const bool _duplicate_initial_execution
 
std::set< std::string > _depend_uo
 
const bool & _enabled
 
MooseApp & _app
 
Factory & _factory
 
ActionFactory & _action_factory
 
const std::string & _type
 
const std::string & _name
 
const InputParameters & _pars
 
const ExecFlagEnum & _execute_enum
 
const ExecFlagType & _current_execute_flag
 
MooseApp & _restartable_app
 
const std::string _restartable_system_name
 
const THREAD_ID _restartable_tid
 
const bool _restartable_read_only
 
FEProblemBase & _mci_feproblem
 
FEProblemBase & _mdi_feproblem
 
MooseApp & _pg_moose_app
 
const std::string _prefix
 
FEProblemBase & _sc_fe_problem
 
const THREAD_ID _sc_tid
 
const Real & _real_zero
 
const VariableValue & _scalar_zero
 
const Point & _point_zero
 
const InputParameters & _mi_params
 
const std::string _mi_name
 
const MooseObjectName _mi_moose_object_name
 
FEProblemBase & _mi_feproblem
 
SubProblem & _mi_subproblem
 
const THREAD_ID _mi_tid
 
const bool _is_kokkos_object
 
const Moose::MaterialDataType _material_data_type
 
MaterialData & _material_data
 
bool _stateful_allowed
 
bool _get_material_property_called
 
std::vector< std::unique_ptr< PropertyValue > > _default_properties
 
std::unordered_set< unsigned int > _material_property_dependencies
 
const MaterialPropertyName _get_suffix
 
const bool _use_interpolated_state
 
const InputParameters & _ti_params
 
FEProblemBase & _ti_feproblem
 
bool _is_implicit
 
Real & _t
 
const Real & _t_old
 
int & _t_step
 
Real & _dt
 
Real & _dt_old
 
bool _is_transient
 
const Parallel::Communicator & _communicator
 

Static Protected Attributes

static const std::string _interpolated_old
 
static const std::string _interpolated_older
 

Private Member Functions

std::vector< Real > parseExodusData (const FEType fetype, const FileName mesh_file_name, const std::vector< unsigned int > &exodus_timestep, const std::string &mesh_var_name) const
 Read initialization data off of parameter mesh and error check.
 
const Moose::FunctionBase * getKokkosFunctionByNameHelper (const FunctionName &name) const
 
const UserObjectBase & getUserObjectFromFEProblem (const UserObjectName &object_name, const THREAD_ID tid=0) const
 
const T & castUserObject (const UserObjectBase &uo_base, const std::string &param_name="") const
 
void mooseObjectError (const std::string &param_name, std::stringstream &oss) const
 
const std::string & userObjectType (const UserObjectBase &uo) const
 
const std::string & userObjectName (const UserObjectBase &uo) const
 
const PostprocessorName & getPostprocessorNameInternal (const std::string &param_name, const unsigned int index, const bool allow_default_value=true) const
 
bool isDefaultPostprocessorValueByName (const PostprocessorName &name) const
 
PostprocessorValue getDefaultPostprocessorValueByName (const PostprocessorName &name) const
 
void checkParam (const std::string &param_name, const unsigned int index=std::numeric_limits< unsigned int >::max()) const
 
bool postprocessorsAdded () const
 
const VectorPostprocessorValue & getVectorPostprocessorByNameHelper (const VectorPostprocessorName &name, const std::string &vector_name, bool broadcast, std::size_t t_index) const
 
const VectorPostprocessorContext< VectorPostprocessorValue > & getVectorPostprocessorContextByNameHelper (const VectorPostprocessorName &name, const std::string &vector_name) const
 
bool vectorPostprocessorsAdded () const
 
bool reportersAdded () const
 
void possiblyCheckHasReporter (const ReporterName &reporter_name, const std::string &param_name="") const
 
RestartableDataValue & registerRestartableDataOnApp (std::unique_ptr< RestartableDataValue > data, THREAD_ID tid) const
 
void registerRestartableNameWithFilterOnApp (const std::string &name, Moose::RESTARTABLE_FILTER filter)
 
RestartableData< T > & declareRestartableDataHelper (const std::string &data_name, void *context, Args &&... args) const
 
virtual std::string meshPropertyPrefix (const std::string &data_name) const
 
const RestartableDataValue & getMeshPropertyInternal (const std::string &data_name, const std::string &prefix) const
 
void mooseErrorInternal (Args &&... args) const
 
const VariableValue * getDefaultValue (const std::string &var_name) const
 
const ADVariableValue * getADDefaultValue (const std::string &var_name) const
 
void checkVar (const std::string &var_name) const
 
void validateExecutionerType (const std::string &name, const std::string &fn_name) const
 
Moose::Kokkos::Variable kokkosCoupledVectorTagScalarVariable (const std::string &var_name, const std::string &tag_name, unsigned int comp) const
 
Moose::MaterialDataType getMaterialDataType (const std::set< BoundaryID > &boundary_ids) const
 
unsigned int getMaxQps () const
 
void addConsumedPropertyName (const MooseObjectName &obj_name, const std::string &prop_name)
 
const ReporterValueName & getReporterValueName (const std::string &param_name) const
 
const PostprocessorValue & getPostprocessorValueInternal (const std::string &param_name, unsigned int index, std::size_t t_index) const
 
const PostprocessorValue & getPostprocessorValueInternal (const std::string &param_name, unsigned int index, std::size_t t_index) const
 
const PostprocessorValue & getPostprocessorValueByNameInternal (const PostprocessorName &name, std::size_t t_index) const
 
const PostprocessorValue & getPostprocessorValueByNameInternal (const PostprocessorName &name, std::size_t t_index) const
 
void possiblyCheckHasVectorPostprocessor (const std::string &param_name, const std::string &vector_name) const
 
void possiblyCheckHasVectorPostprocessor (const std::string &param_name, const std::string &vector_name) const
 
void possiblyCheckHasVectorPostprocessorByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 
void possiblyCheckHasVectorPostprocessorByName (const VectorPostprocessorName &name, const std::string &vector_name) const
 

Static Private Member Functions

static const hit::Node * getHitNode (const InputParameters &params)
 
static std::string messagePrefix (const InputParameters &params, const bool hit_prefix)
 

Private Attributes

std::vector< std::unique_ptr< ParameterMesh > > _parameter_meshes
 Store parameter meshes for regularization computation.
 
const std::vector< Real > _regularization_coeffs
 Vector of regularization coefficients corresponding to each type.
 
const std::vector< ParameterMesh::RegularizationType > _regularization_types
 Regularization types to apply.
 
const bool _always_store
 
UserObject * _primary_thread_copy
 
std::set< std::string > _supplied_uo
 
const ParallelParamObject & _parent
 
const MooseBase & _si_moose_base
 
const FEProblemBase * _si_problem
 
ExecFlagEnum _empty_execute_enum
 
const MooseObject & _fni_object
 
const InputParameters & _fni_params
 
FEProblemBase & _fni_feproblem
 
const THREAD_ID _fni_tid
 
const MooseObject & _uoi_moose_object
 
const FEProblemBase & _uoi_feproblem
 
const THREAD_ID _uoi_tid
 
const MooseObject & _ppi_moose_object
 
const InputParameters & _ppi_params
 
const FEProblemBase & _ppi_feproblem
 
std::map< PostprocessorName, std::unique_ptr< PostprocessorValue > > _default_values
 
const bool _broadcast_by_default
 
const MooseObject & _vpi_moose_object
 
const FEProblemBase & _vpi_feproblem
 
const THREAD_ID _vpi_tid
 
const InputParameters & _ri_params
 
FEProblemBase & _ri_fe_problem_base
 
const ReporterData & _ri_reporter_data
 
const MooseObject & _ri_moose_object
 
const InputParameters & _dni_params
 
FEProblemBase & _dni_feproblem
 
const MooseObject *const _dni_moose_object_ptr
 
const InputParameters & _si_params
 
FEProblemBase & _si_feproblem
 
THREAD_ID _si_tid
 
const RestartableDataMapName _metaname
 
std::string _restartable_name
 
MooseApp & _meta_data_app
 
const MooseObject *const _meta_data_object
 
const InputParameters & _sc_parameters
 
const std::string & _sc_name
 
const bool _sc_is_implicit
 
std::unordered_map< std::string, std::vector< MooseVariableScalar * > > _coupled_scalar_vars
 
std::unordered_map< std::string, std::unique_ptr< VariableValue > > _default_value
 
std::unordered_map< std::string, std::unique_ptr< ADVariableValue > > _dual_default_value
 
std::vector< MooseVariableScalar * > _coupled_moose_scalar_vars
 
std::unordered_map< std::string, std::vector< MooseVariableFieldBase * > > _sc_coupled_vars
 
std::set< TagID > _sc_coupleable_vector_tags
 
std::set< TagID > _sc_coupleable_matrix_tags
 
const MooseObject & _mi_moose_object
 
const bool _mi_boundary_restricted
 
const std::set< SubdomainID > & _mi_block_ids
 
const std::set< BoundaryID > & _mi_boundary_ids
 
std::vector< std::unique_ptr< OptionalMaterialPropertyProxyBase< MaterialPropertyInterface > > > _optional_property_proxies
 
const std::string _ti_name
 
const MooseObject & _reporter_moose_object
 
const InputParameters & _reporter_params
 
const std::string & _reporter_name
 
FEProblemBase & _reporter_fe_problem
 
ReporterData & _reporter_data
 
std::vector< std::unique_ptr< UnusedWrapperBase > > _unused_values
 
MooseApp & _oi_moose_app
 
OutputWarehouse & _oi_output_warehouse
 
std::set< OutputName > _oi_outputs
 

Detailed Description

Mesh-based parameter optimization.

Definition at line 18 of file ParameterMeshOptimization.h.

Constructor & Destructor Documentation

◆ ParameterMeshOptimization()

ParameterMeshOptimization::ParameterMeshOptimization ( const InputParameters &  parameters)

Definition at line 88 of file ParameterMeshOptimization.C.

90 _regularization_coeffs(getParam<std::vector<Real>>("regularization_coeffs")),
91 _regularization_types(getParam<MultiMooseEnum>("regularization_types")
92 .getSetValueIDs<ParameterMesh::RegularizationType>())
93{
94 // Validate that regularization coefficients match types
96 paramError("regularization_coeffs",
97 "Number of regularization coefficients (",
99 ") must match number of regularization types (",
101 ")");
102}
Optimization reporter that interfaces with TAO.
const InputParameters & parameters() const
void paramError(const std::string &param, Args... args) const
const T & getParam(const std::string &name) const
const std::vector< Real > _regularization_coeffs
Vector of regularization coefficients corresponding to each type.
const std::vector< ParameterMesh::RegularizationType > _regularization_types
Regularization types to apply.

Member Function Documentation

◆ computeEqualityConstraints()

void OptimizationReporterBase::computeEqualityConstraints ( libMesh::PetscVector< Number > &  eqs_constraints) const
virtualinherited

Function to compute the equality constraints.

This is the last call of the equality function routine.

Reimplemented in QuadraticMinimizeConstrained.

Definition at line 159 of file OptimizationReporterBase.C.

161{
163}
std::vector< std::vector< Real > * > _eq_constraints
Equality values declared as reporter data.
void copyReporterIntoPetscVector(const std::vector< std::vector< Real > * > reporterVectors, libMesh::PetscVector< Number > &x)
Definition OptUtils.C:21

Referenced by OptimizeSolve::equalityFunctionWrapper().

◆ computeEqualityGradient()

void OptimizationReporterBase::computeEqualityGradient ( libMesh::PetscMatrix< Number > &  gradient) const
virtualinherited

Function to compute the gradient of the equality constraints/ This is the last call of the equality constraint gradient routine.

Reimplemented in QuadraticMinimizeConstrained.

Definition at line 173 of file OptimizationReporterBase.C.

174{
175 for (const auto & p : make_range(_n_eq_cons))
176 if (_eq_gradients[p]->size() != _ndof)
177 mooseError("The equality jacobian for parameter ",
179 " has changed, expected ",
180 _ndof,
181 " versus ",
182 _eq_gradients[p]->size(),
183 ".");
185}
const Real p
void mooseError(Args &&... args) const
dof_id_type _ndof
Total number of parameters.
const std::vector< ReporterValueName > & _parameter_names
Parameter names.
std::vector< std::vector< Real > * > _eq_gradients
Gradient values declared as reporter data.
const unsigned int _n_eq_cons
Number of equality constraint names.
void copyReporterIntoPetscMatrix(const std::vector< std::vector< Real > * > reporterVectors, libMesh::PetscMatrix< Number > &x)
Definition OptUtils.C:42
if(subdm)
IntRange< T > make_range(T beg, T end)

Referenced by OptimizeSolve::equalityGradientFunctionWrapper().

◆ computeGradient()

void ParameterMeshOptimization::computeGradient ( libMesh::PetscVector< Number > &  gradient) const
overridevirtual

Function to compute gradient.

This is the last call of the gradient routine.

Reimplemented from OptimizationReporterBase.

Definition at line 286 of file ParameterMeshOptimization.C.

287{
288 // Add regularization gradient contributions to the reporter gradients before base computation
289 for (const auto reg_idx : index_range(_regularization_types))
290 {
291 if (_regularization_coeffs[reg_idx] > 0.0)
292 {
293 // Convert MultiMooseEnum to RegularizationType using get() method
295
296 for (const auto & param_id : make_range(_nparams))
297 {
298 // Get current parameter values for this group
299 const auto & param_values = *_parameters[param_id];
300 auto grad_values = _gradients[param_id];
301
302 // Compute regularization gradient for this type
303 std::vector<Real> reg_grad =
304 _parameter_meshes[param_id]->computeRegularizationGradient(param_values, reg_type);
305
306 // Add to gradient with coefficient
307 for (unsigned int i = 0; i < param_values.size(); ++i)
308 (*grad_values)[i] += _regularization_coeffs[reg_idx] * reg_grad[i];
309 }
310 }
311 }
312
313 // Now call base class method which includes Tikhonov and copies to PETSc vector
315}
const unsigned int _nparams
Number of parameter vectors.
std::vector< std::vector< Real > * > _gradients
Gradient values declared as reporter data.
virtual void computeGradient(libMesh::PetscVector< Number > &gradient) const
Function to compute gradient.
std::vector< std::vector< Real > * > _parameters
Parameter values declared as reporter data.
std::vector< std::unique_ptr< ParameterMesh > > _parameter_meshes
Store parameter meshes for regularization computation.
RegularizationType
Enumerations for regularization computations.
auto index_range(const T &sizable)

◆ computeInequalityConstraints()

void OptimizationReporterBase::computeInequalityConstraints ( libMesh::PetscVector< Number > &  ineqs_constraints) const
virtualinherited

Function to compute the inequality constraints.

This is the last call of the inequality function routine.

Definition at line 166 of file OptimizationReporterBase.C.

168{
170}
std::vector< std::vector< Real > * > _ineq_constraints
Inequality values declared as reporter data.

Referenced by OptimizeSolve::inequalityFunctionWrapper().

◆ computeInequalityGradient()

void OptimizationReporterBase::computeInequalityGradient ( libMesh::PetscMatrix< Number > &  gradient) const
virtualinherited

Function to compute the gradient of the inequality constraints/ This is the last call of the inequality constraint gradient routine.

Definition at line 188 of file OptimizationReporterBase.C.

189{
190 for (const auto & p : make_range(_n_ineq_cons))
191 if (_ineq_gradients[p]->size() != _ndof)
192 mooseError("The inequality jacobian for parameter ",
194 " has changed, expected ",
195 _ndof,
196 " versus ",
197 _ineq_gradients[p]->size(),
198 ".");
200}
std::vector< std::vector< Real > * > _ineq_gradients
Gradient values declared as reporter data.
const unsigned int _n_ineq_cons
Number of inequality constraint names.

Referenced by OptimizeSolve::inequalityGradientFunctionWrapper().

◆ computeObjective()

Real ParameterMeshOptimization::computeObjective ( )
overridevirtual

Function to compute objective.

This is the last function called in objective routine

Reimplemented from GeneralOptimization.

Definition at line 254 of file ParameterMeshOptimization.C.

255{
257
258 // Apply each regularization type with its coefficient
259 for (const auto reg_idx : index_range(_regularization_types))
260 {
261 if (_regularization_coeffs[reg_idx] > 0.0)
262 {
263 Real regularization_value = 0.0;
264
265 // Convert MultiMooseEnum to RegularizationType using get() method
267
268 for (const auto & param_id : make_range(_nparams))
269 {
270 // Get current parameter values for this group
271 const auto & param_values = *_parameters[param_id];
272
273 // Compute regularization objective for this type
274 regularization_value +=
275 _parameter_meshes[param_id]->computeRegularizationObjective(param_values, reg_type);
276 }
277
278 val += _regularization_coeffs[reg_idx] * regularization_value;
279 }
280 }
281
282 return val;
283}
virtual Real computeObjective() override
Function to compute objective.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

◆ execute()

virtual void OptimizationReporterBase::execute ( )
inlineoverridevirtualinherited

Implements GeneralReporter.

Definition at line 32 of file OptimizationReporterBase.h.

32{}

◆ finalize()

virtual void OptimizationReporterBase::finalize ( )
inlineoverridevirtualinherited

Implements GeneralReporter.

Definition at line 33 of file OptimizationReporterBase.h.

33{}

◆ getLowerBound()

Real OptimizationReporterBase::getLowerBound ( dof_id_type  i) const
inherited

Definition at line 112 of file OptimizationReporterBase.C.

113{
114 return _lower_bounds[i];
115}
std::vector< Real > _lower_bounds
Bounds of the parameters.

Referenced by OptimizationReporterTest::initialSetup(), and OptimizeSolve::variableBounds().

◆ getNumEqCons()

dof_id_type OptimizationReporterBase::getNumEqCons ( ) const
inlineinherited

Function to get the total number of equalities.

Returns
total number of equality constraints

Definition at line 94 of file OptimizationReporterBase.h.

94{ return _n_eq_cons; }

Referenced by OptimizeSolve::taoALCreate(), and OptimizeSolve::taoALDestroy().

◆ getNumInEqCons()

dof_id_type OptimizationReporterBase::getNumInEqCons ( ) const
inlineinherited

Function to get the total number of inequalities.

Returns
total number of inequalities constraints

Definition at line 100 of file OptimizationReporterBase.h.

100{ return _n_ineq_cons; }

Referenced by OptimizeSolve::taoALCreate(), and OptimizeSolve::taoALDestroy().

◆ getNumParams()

dof_id_type GeneralOptimization::getNumParams ( ) const
overrideprotectedvirtualinherited

Function to get the total number of parameters.

Returns
total number of parameters

Reimplemented from OptimizationReporterBase.

Definition at line 82 of file GeneralOptimization.C.

83{
84 if (_ndof == 0)
86 "The number of parameters you have is zero and this shouldn't happen. Make sure you are "
87 "running your forward problem on \'INITIAL\' if you are using a reporter transfer to "
88 "supply "
89 "that information.");
90
91 return _ndof;
92}

◆ getUpperBound()

Real OptimizationReporterBase::getUpperBound ( dof_id_type  i) const
inherited

Upper and lower bounds for each parameter being controlled.

Parameters
iParameter index
Returns
The upper/lower bound for parameter i

Definition at line 118 of file OptimizationReporterBase.C.

119{
120 return _upper_bounds[i];
121}

Referenced by OptimizationReporterTest::initialSetup(), and OptimizeSolve::variableBounds().

◆ initialize()

virtual void OptimizationReporterBase::initialize ( )
inlineoverridevirtualinherited

Implements GeneralReporter.

Definition at line 31 of file OptimizationReporterBase.h.

31{}

◆ parseExodusData()

std::vector< Real > ParameterMeshOptimization::parseExodusData ( const FEType  fetype,
const FileName  mesh_file_name,
const std::vector< unsigned int > &  exodus_timestep,
const std::string &  mesh_var_name 
) const
private

Read initialization data off of parameter mesh and error check.

Returns
values read from mesh

Definition at line 105 of file ParameterMeshOptimization.C.

109{
110 // read data off Exodus mesh
111 ReadExodusMeshVars data_mesh(fetype, mesh_file_name, mesh_var_name);
112 std::vector<Real> parsed_data;
113 // read from mesh
114 for (auto const & step : exodus_timestep)
115 {
116 std::vector<Real> data = data_mesh.getParameterValues(step);
117 parsed_data.insert(parsed_data.end(), data.begin(), data.end());
118 }
119
120 return parsed_data;
121}
Utility function to read a single variable off an Exodus mesh for optimization problem This class wil...

Referenced by setICsandBounds().

◆ parseInputData()

std::vector< Real > OptimizationReporterBase::parseInputData ( std::string  type,
Real  default_value,
unsigned int  param_id 
) const
protectedinherited

Function to to parse bounds and initial conditions from input file.

Definition at line 124 of file OptimizationReporterBase.C.

127{
128 // fill with default values
129 std::vector<Real> parsed_data_id(_nvalues[param_id], default_value);
130 if (isParamValid(type))
131 {
132 std::vector<std::vector<Real>> parsed_data(getParam<std::vector<std::vector<Real>>>(type));
133 parsed_data_id.assign(parsed_data[param_id].begin(), parsed_data[param_id].end());
134 if (parsed_data.size() != _nvalues.size())
136 "There must be a vector of ",
137 type,
138 " per parameter group. The ",
139 type,
140 " input format is std::vector<std::vector<Real>> so each vector should be "
141 "seperated by \";\" even if it is a single value per group for a constant ",
142 type,
143 ".");
144 // The case when the initial condition is constant for each parameter group
145 if (parsed_data[param_id].size() == 1)
146 parsed_data_id.assign(_nvalues[param_id], parsed_data[param_id][0]);
147 else if (parsed_data[param_id].size() != _nvalues[param_id])
149 "When ",
150 type,
151 " are given in input file, there must either be a single value per parameter "
152 "group or a value for every parameter in the group.");
153 }
154
155 return parsed_data_id;
156}
const std::string & type() const
bool isParamValid(const std::string &name) const
std::vector< dof_id_type > _nvalues
Number of values for each parameter.

Referenced by GeneralOptimization::setICsandBounds(), and setICsandBounds().

◆ setICsandBounds()

void ParameterMeshOptimization::setICsandBounds ( )
overrideprotectedvirtual

Sets the initial conditions and bounds right before it is needed.

Reimplemented from GeneralOptimization.

Definition at line 124 of file ParameterMeshOptimization.C.

125{
126 if ((isParamValid("num_values_name") || isParamValid("num_values")))
127 paramError("num_values_name or num_values should not be used with ParameterMeshOptimization. "
128 "Instead the number of dofs is set by the parameter meshes.");
129
130 _nvalues.resize(_nparams, 0);
131 // Fill the mesh information
132 const auto & meshes = getParam<std::vector<FileName>>("parameter_meshes");
133 const auto & families = getParam<MultiMooseEnum>("parameter_families");
134 const auto & orders = getParam<MultiMooseEnum>("parameter_orders");
135 const auto & ntimes = getParam<unsigned int>("num_parameter_times");
136
137 // Fill exodus parameter bounds and IC information
138 std::vector<std::string> initial_condition_mesh_variable;
139 std::vector<std::string> lower_bound_mesh_variable;
140 std::vector<std::string> upper_bound_mesh_variable;
141 if (isParamValid("initial_condition_mesh_variable"))
142 initial_condition_mesh_variable =
143 getParam<std::vector<std::string>>("initial_condition_mesh_variable");
144 if (isParamValid("lower_bound_mesh_variable"))
145 lower_bound_mesh_variable = getParam<std::vector<std::string>>("lower_bound_mesh_variable");
146 if (isParamValid("upper_bound_mesh_variable"))
147 upper_bound_mesh_variable = getParam<std::vector<std::string>>("upper_bound_mesh_variable");
148
149 std::vector<unsigned int> exodus_timestep;
150 if (isParamValid("exodus_timesteps_for_parameter_mesh_variable"))
151 exodus_timestep =
152 getParam<std::vector<unsigned int>>("exodus_timesteps_for_parameter_mesh_variable");
153 else // get last timestep in file
154 exodus_timestep = {std::numeric_limits<unsigned int>::max()};
155
156 // now do a bunch of error checking
157 // Size checks for data
158 if (meshes.size() != _nparams)
159 paramError("parameter_meshes",
160 "There must be a mesh associated with each group of parameters.");
161 if (families.size() > 1 && families.size() != _nparams)
162 paramError("parameter_families",
163 "There must be a family associated with each group of parameters.");
164 if (orders.size() > 1 && orders.size() != _nparams)
165 paramError("parameter_orders",
166 "There must be an order associated with each group of parameters.");
167
168 // error checking that initial conditions and bounds are only read from a single location
169 if (isParamValid("initial_condition_mesh_variable") && isParamValid("initial_condition"))
170 paramError("initial_condition_mesh_variable",
171 "Initial conditions for all parameter groups can only be defined by "
172 "initial_condition_mesh_variable or "
173 "initial_condition but not both.");
174 else if (isParamValid("lower_bound_mesh_variable") && isParamValid("lower_bounds"))
176 "lower_bound_mesh_variable",
177 "Lower bounds for all parameter groups can only be defined by lower_bound_mesh_variable or "
178 "lower_bounds but not both.");
179 else if (isParamValid("upper_bound_mesh_variable") && isParamValid("upper_bounds"))
181 "upper_bound_mesh_variable",
182 "Upper bounds for all parameter groups can only be defined by upper_bound_mesh_variable or "
183 "upper_bounds but not both.");
184
185 // Make sure they did not specify too many timesteps
186 if (isParamValid("exodus_timesteps_for_parameter_mesh_variable") &&
187 (!isParamValid("lower_bound_mesh_variable") + !isParamValid("upper_bound_mesh_variable") +
188 !isParamValid("initial_condition_mesh_variable") ==
189 3))
190 paramError("\"exodus_timesteps_for_parameter_mesh_variable\" should only be specified if "
191 "reading values from a mesh.");
192 else if (exodus_timestep.size() != ntimes && exodus_timestep.size() != 1)
193 paramError("exodus_timesteps_for_parameter_mesh_variable",
194 "Number of timesteps to read mesh data specified by "
195 "\"exodus_timesteps_for_parameter_mesh_variable\" incorrect. "
196 "\"exodus_timesteps_for_parameter_mesh_variable\" can specify a single timestep or "
197 "\"num_parameter_times\" timesteps.");
198
199 _ndof = 0;
201 for (const auto & param_id : make_range(_nparams))
202 {
203 const std::string family = families.size() > 1 ? families[param_id] : families[0];
204 const std::string order = orders.size() > 1 ? orders[param_id] : orders[0];
205 const FEType fetype(Utility::string_to_enum<Order>(order),
206 Utility::string_to_enum<FEFamily>(family));
207
208 _parameter_meshes[param_id] = std::make_unique<ParameterMesh>(fetype, meshes[param_id]);
209 _nvalues[param_id] = _parameter_meshes[param_id]->size() * ntimes;
210 _ndof += _nvalues[param_id];
211
212 // read and assign initial conditions
213 {
214 std::vector<Real> initial_condition;
215 if (isParamValid("initial_condition_mesh_variable"))
217 fetype, meshes[param_id], exodus_timestep, initial_condition_mesh_variable[param_id]);
218 else
219 initial_condition = parseInputData("initial_condition", 0, param_id);
220
221 _parameters[param_id]->assign(initial_condition.begin(), initial_condition.end());
222 }
223
224 // read and assign lower bound
225 {
226 std::vector<Real> lower_bound;
227 if (isParamValid("lower_bound_mesh_variable"))
228 lower_bound = parseExodusData(
229 fetype, meshes[param_id], exodus_timestep, lower_bound_mesh_variable[param_id]);
230 else
231 lower_bound = parseInputData("lower_bounds", std::numeric_limits<Real>::lowest(), param_id);
232
233 _lower_bounds.insert(_lower_bounds.end(), lower_bound.begin(), lower_bound.end());
234 }
235
236 // read and assign upper bound
237 {
238 std::vector<Real> upper_bound;
239 if (isParamValid("upper_bound_mesh_variable"))
240 upper_bound = parseExodusData(
241 fetype, meshes[param_id], exodus_timestep, upper_bound_mesh_variable[param_id]);
242 else
243 upper_bound = parseInputData("upper_bounds", std::numeric_limits<Real>::max(), param_id);
244
245 _upper_bounds.insert(_upper_bounds.end(), upper_bound.begin(), upper_bound.end());
246 }
247
248 // resize gradient vector to be filled later
249 _gradients[param_id]->resize(_nvalues[param_id]);
250 }
251}
std::vector< Real > parseInputData(std::string type, Real default_value, unsigned int param_id) const
Function to to parse bounds and initial conditions from input file.
std::vector< Real > parseExodusData(const FEType fetype, const FileName mesh_file_name, const std::vector< unsigned int > &exodus_timestep, const std::string &mesh_var_name) const
Read initialization data off of parameter mesh and error check.
Number initial_condition(const Point &p, const Parameters &parameters, const std::string &, const std::string &)

◆ setInitialCondition()

void OptimizationReporterBase::setInitialCondition ( libMesh::PetscVector< Number > &  param)
inherited

Function to initialize petsc vectors from vpp data.

Definition at line 98 of file OptimizationReporterBase.C.

99{
101 x.init(getNumParams());
103}
const std::vector< double > x
virtual void setICsandBounds()
Sets the initial conditions and bounds right before it is needed.
virtual dof_id_type getNumParams() const
Function to get the total number of parameters.

Referenced by OptimizationReporterTest::initialSetup(), and OptimizeSolve::solve().

◆ updateParameters()

void OptimizationReporterBase::updateParameters ( const libMesh::PetscVector< Number > &  x)
protectedvirtualinherited

Function to set parameters.

This is the first function called in objective/gradient/hessian routine

Definition at line 106 of file OptimizationReporterBase.C.

107{
109}
void copyPetscVectorIntoReporter(const libMesh::PetscVector< Number > &x, std::vector< std::vector< Real > * > reporterVectors)
Definition OptUtils.C:33

Referenced by OptimizeSolve::applyHessian(), OptimizationReporterTest::execute(), OptimizeSolve::gradientFunction(), and OptimizeSolve::objectiveFunction().

◆ validParams()

InputParameters ParameterMeshOptimization::validParams ( )
static

Definition at line 22 of file ParameterMeshOptimization.C.

23{
25
27 "Computes objective function, gradient and contains reporters for communicating between "
28 "optimizeSolve and subapps using mesh-based parameter definition.");
29
30 params.addRequiredParam<std::vector<FileName>>(
31 "parameter_meshes", "Exodus file containing meshes describing parameters.");
32
34 MultiMooseEnum families(family.getRawNames(), "LAGRANGE");
36 "parameter_families",
37 families,
38 "Specifies the family of FE shape functions for each group of parameters. If a single value "
39 "is "
40 "specified, then that value is used for all groups of parameters.");
42 MultiMooseEnum orders(order.getRawNames(), "FIRST");
44 "parameter_orders",
45 orders,
46 "Specifies the order of FE shape functions for each group of parameters. If a single value "
47 "is "
48 "specified, then that value is used for all groups of parameters.");
49
50 params.addParam<unsigned int>(
51 "num_parameter_times", 1, "The number of time points the parameters represent.");
52
53 params.addParam<std::vector<std::string>>(
54 "initial_condition_mesh_variable",
55 "Name of variable on parameter mesh to use as initial condition.");
56 params.addParam<std::vector<std::string>>(
57 "lower_bound_mesh_variable", "Name of variable on parameter mesh to use as lower bound.");
58 params.addParam<std::vector<std::string>>(
59 "upper_bound_mesh_variable", "Name of variable on parameter mesh to use as upper bound.");
60 params.addParam<std::vector<unsigned int>>(
61 "exodus_timesteps_for_parameter_mesh_variable",
62 "Timesteps to read all parameter group bounds and initial conditions from Exodus mesh. The "
63 "options are to give no timestep, a single timestep or \"num_parameter_times\" timesteps. "
64 "No timestep results in the final timestep from the mesh being used. A single timestep "
65 "results in values at that timestep being used for all timesteps. \"num_parameter_times\" "
66 "timesteps results in values from the mesh at those steps being used. The same timesteps "
67 "are used for all parameter groups and all meshes, the capability to define different "
68 "timesteps for different meshes is not supported.");
69
70 // New parameters for multiple regularization types
71 MultiMooseEnum reg_types("L2_GRADIENT");
73 "regularization_types",
74 reg_types,
75 "Types of regularization to apply. Multiple types can be specified.");
76
77 params.addParam<std::vector<Real>>("regularization_coeffs",
78 {},
79 "Coefficients for each regularization type. Must match the "
80 "number of regularization_types specified.");
81
82 params.addParamNamesToGroup("tikhonov_coeff regularization_types regularization_coeffs",
83 "Regularization");
84
85 return params;
86}
static MooseEnum getNonlinearVariableFamilies()
static MooseEnum getNonlinearVariableOrders()
static InputParameters validParams()
void addParamNamesToGroup(const std::string &space_delim_names, const std::string group_name)
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
std::string getRawNames() const

Member Data Documentation

◆ _eq_constraints

std::vector<std::vector<Real> *> OptimizationReporterBase::_eq_constraints
protectedinherited

Equality values declared as reporter data.

Definition at line 136 of file OptimizationReporterBase.h.

Referenced by OptimizationReporterBase::computeEqualityConstraints(), and OptimizationReporterBase::OptimizationReporterBase().

◆ _eq_gradients

std::vector<std::vector<Real> *> OptimizationReporterBase::_eq_gradients
protectedinherited

Gradient values declared as reporter data.

Definition at line 138 of file OptimizationReporterBase.h.

Referenced by OptimizationReporterBase::computeEqualityGradient(), and OptimizationReporterBase::OptimizationReporterBase().

◆ _equality_names

const std::vector<ReporterValueName>* OptimizationReporterBase::_equality_names
protectedinherited

Equality constraint names.

Definition at line 132 of file OptimizationReporterBase.h.

Referenced by OptimizationReporterBase::OptimizationReporterBase().

◆ _gradients

std::vector<std::vector<Real> *> OptimizationReporterBase::_gradients
protectedinherited

◆ _ineq_constraints

std::vector<std::vector<Real> *> OptimizationReporterBase::_ineq_constraints
protectedinherited

Inequality values declared as reporter data.

Definition at line 145 of file OptimizationReporterBase.h.

Referenced by OptimizationReporterBase::computeInequalityConstraints(), and OptimizationReporterBase::OptimizationReporterBase().

◆ _ineq_gradients

std::vector<std::vector<Real> *> OptimizationReporterBase::_ineq_gradients
protectedinherited

Gradient values declared as reporter data.

Definition at line 147 of file OptimizationReporterBase.h.

Referenced by OptimizationReporterBase::computeInequalityGradient(), and OptimizationReporterBase::OptimizationReporterBase().

◆ _inequality_names

const std::vector<ReporterValueName>* OptimizationReporterBase::_inequality_names
protectedinherited

Inequality constraint names.

Definition at line 141 of file OptimizationReporterBase.h.

Referenced by OptimizationReporterBase::OptimizationReporterBase().

◆ _lower_bounds

std::vector<Real> OptimizationReporterBase::_lower_bounds
protectedinherited

◆ _n_eq_cons

const unsigned int OptimizationReporterBase::_n_eq_cons
protectedinherited

◆ _n_ineq_cons

const unsigned int OptimizationReporterBase::_n_ineq_cons
protectedinherited

◆ _ndof

dof_id_type OptimizationReporterBase::_ndof
protectedinherited

◆ _nparams

const unsigned int OptimizationReporterBase::_nparams
protectedinherited

◆ _num_values_reporter

std::vector<dof_id_type>* GeneralOptimization::_num_values_reporter
protectedinherited

Definition at line 32 of file GeneralOptimization.h.

Referenced by GeneralOptimization::setICsandBounds().

◆ _nvalues

std::vector<dof_id_type> OptimizationReporterBase::_nvalues
protectedinherited

◆ _objective_val

Real& GeneralOptimization::_objective_val
protectedinherited

Reporter that will hold the objective value.

Definition at line 30 of file GeneralOptimization.h.

Referenced by GeneralOptimization::computeObjective().

◆ _parameter_meshes

std::vector<std::unique_ptr<ParameterMesh> > ParameterMeshOptimization::_parameter_meshes
private

Store parameter meshes for regularization computation.

Definition at line 42 of file ParameterMeshOptimization.h.

Referenced by computeGradient(), computeObjective(), and setICsandBounds().

◆ _parameter_names

const std::vector<ReporterValueName>& OptimizationReporterBase::_parameter_names
protectedinherited

◆ _parameters

std::vector<std::vector<Real> *> OptimizationReporterBase::_parameters
protectedinherited

◆ _regularization_coeffs

const std::vector<Real> ParameterMeshOptimization::_regularization_coeffs
private

Vector of regularization coefficients corresponding to each type.

Definition at line 45 of file ParameterMeshOptimization.h.

Referenced by computeGradient(), computeObjective(), and ParameterMeshOptimization().

◆ _regularization_types

const std::vector<ParameterMesh::RegularizationType> ParameterMeshOptimization::_regularization_types
private

Regularization types to apply.

Definition at line 48 of file ParameterMeshOptimization.h.

Referenced by computeGradient(), computeObjective(), and ParameterMeshOptimization().

◆ _tikhonov_coeff

const Real OptimizationReporterBase::_tikhonov_coeff
protectedinherited

Tikhonov Coefficient for regularization.

Definition at line 129 of file OptimizationReporterBase.h.

Referenced by OptimizationReporterBase::computeGradient(), and GeneralOptimization::computeObjective().

◆ _upper_bounds

std::vector<Real> OptimizationReporterBase::_upper_bounds
protectedinherited

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