libMesh
Public Member Functions | Private Attributes | List of all members
libMesh::ParameterVector Class Reference

Data structure for specifying which Parameters should be independent variables in a parameter sensitivity calculation. More...

#include <parameter_vector.h>

Public Member Functions

 ParameterVector ()
 Default constructor: "no parameters". More...
 
 ParameterVector (const std::vector< Number *> &params)
 Constructor-from-vector-of-Number*: each points to a parameter. More...
 
 ~ParameterVector ()
 Destructor - deletes ParameterAccessor objects. More...
 
void deep_copy (ParameterVector &target) const
 Deep copy constructor: the target will now own new copies of all the parameter values I'm pointing to. More...
 
void shallow_copy (ParameterVector &target) const
 Shallow copy constructor: the target will now point to all the parameter values I'm pointing to. More...
 
void value_copy (ParameterVector &target) const
 Value copy method: the target, which should already have as many parameters as I do, will now have those parameters set to my values. More...
 
void clear ()
 Resets to "no parameters". More...
 
std::size_t size () const
 
void resize (std::size_t s)
 Sets the number of parameters to be used. More...
 
void push_back (std::unique_ptr< ParameterAccessor< Number >> new_accessor)
 Adds an additional parameter accessor to the end of the vector. More...
 
void deep_resize (std::size_t s)
 Sets the number of parameters to be used. More...
 
const ParameterAccessor< Number > & operator[] (std::size_t i) const
 
ParameterAccessor< Number > & operator[] (std::size_t i)
 
ParameterVectoroperator*= (const Number a)
 Multiplication operator; acts individually on each parameter. More...
 
ParameterVectoroperator+= (const ParameterVector &a)
 Addition operator. More...
 

Private Attributes

std::vector< ParameterAccessor< Number > * > _params
 Pointers to parameters which may exist elsewhere. More...
 
std::vector< Number_my_data
 Parameters which I own; e.g. More...
 
bool _is_shallow_copy
 Am I a shallow copy? If so then I shouldn't be deleting my ParameterAccessors. More...
 

Detailed Description

Data structure for specifying which Parameters should be independent variables in a parameter sensitivity calculation.

Author
Roy Stogner
Date
2009 Specifies parameters for parameter sensitivity calculations.

Definition at line 45 of file parameter_vector.h.

Constructor & Destructor Documentation

◆ ParameterVector() [1/2]

libMesh::ParameterVector::ParameterVector ( )

Default constructor: "no parameters".

Definition at line 51 of file parameter_vector.h.

51 : _is_shallow_copy(false) {}
bool _is_shallow_copy
Am I a shallow copy? If so then I shouldn&#39;t be deleting my ParameterAccessors.

◆ ParameterVector() [2/2]

libMesh::ParameterVector::ParameterVector ( const std::vector< Number *> &  params)
explicit

Constructor-from-vector-of-Number*: each points to a parameter.

◆ ~ParameterVector()

libMesh::ParameterVector::~ParameterVector ( )

Destructor - deletes ParameterAccessor objects.

Definition at line 163 of file parameter_vector.h.

References clear().

164 {
165  this->clear();
166 }
void clear()
Resets to "no parameters".

Member Function Documentation

◆ clear()

void libMesh::ParameterVector::clear ( )

Resets to "no parameters".

Definition at line 171 of file parameter_vector.h.

References _is_shallow_copy, _my_data, and _params.

Referenced by LaplaceSystem::get_parameter_vector(), and ~ParameterVector().

172 {
173  if (!_is_shallow_copy)
174  for (auto & param : _params)
175  delete param;
176 
177  _params.clear();
178  _my_data.clear();
179 }
std::vector< ParameterAccessor< Number > * > _params
Pointers to parameters which may exist elsewhere.
bool _is_shallow_copy
Am I a shallow copy? If so then I shouldn&#39;t be deleting my ParameterAccessors.
std::vector< Number > _my_data
Parameters which I own; e.g.

◆ deep_copy()

void libMesh::ParameterVector::deep_copy ( ParameterVector target) const

Deep copy constructor: the target will now own new copies of all the parameter values I'm pointing to.

◆ deep_resize()

void libMesh::ParameterVector::deep_resize ( std::size_t  s)

Sets the number of parameters to be used.

This method is for resizing a ParameterVector that owns its own parameter values

◆ operator*=()

ParameterVector& libMesh::ParameterVector::operator*= ( const Number  a)

Multiplication operator; acts individually on each parameter.

◆ operator+=()

ParameterVector& libMesh::ParameterVector::operator+= ( const ParameterVector a)

Addition operator.

The parameter vector to be added in must have the same number of values.

◆ operator[]() [1/2]

const ParameterAccessor< Number > & libMesh::ParameterVector::operator[] ( std::size_t  i) const
Returns
A smart-pointer to a parameter value

Definition at line 195 of file parameter_vector.h.

References _params.

196 {
197  libmesh_assert_greater (_params.size(), i);
198 
199  return *_params[i];
200 }
std::vector< ParameterAccessor< Number > * > _params
Pointers to parameters which may exist elsewhere.

◆ operator[]() [2/2]

ParameterAccessor< Number > & libMesh::ParameterVector::operator[] ( std::size_t  i)
Returns
A reference to a smart-pointer to a parameter value, suitable for repointing it to a different address. This method is deprecated and may not work with more sophisticated ParameterAccessor subclasses.

Definition at line 205 of file parameter_vector.h.

References _params.

206 {
207  libmesh_assert_greater (_params.size(), i);
208 
209  return *_params[i];
210 }
std::vector< ParameterAccessor< Number > * > _params
Pointers to parameters which may exist elsewhere.

◆ push_back()

void libMesh::ParameterVector::push_back ( std::unique_ptr< ParameterAccessor< Number >>  new_accessor)

Adds an additional parameter accessor to the end of the vector.

We will free this accessor when we are finished with it; we request that it be passed to us as a std::unique_ptr to reflect that fact in the API.

Definition at line 184 of file parameter_vector.h.

References _is_shallow_copy, and _params.

Referenced by CoupledSystem::get_parameter_vector(), and HeatSystem::get_parameter_vector().

185 {
186  // Can't append stuff we are responsible for if we're already a shallow copy.
187  libmesh_assert(!_is_shallow_copy);
188  libmesh_assert(new_accessor.get());
189  _params.push_back(new_accessor.release());
190 }
std::vector< ParameterAccessor< Number > * > _params
Pointers to parameters which may exist elsewhere.
bool _is_shallow_copy
Am I a shallow copy? If so then I shouldn&#39;t be deleting my ParameterAccessors.

◆ resize()

void libMesh::ParameterVector::resize ( std::size_t  s)

Sets the number of parameters to be used.

If the new size is larger than the old, empty ParameterPointer accessors fill the new entries.

◆ shallow_copy()

void libMesh::ParameterVector::shallow_copy ( ParameterVector target) const

Shallow copy constructor: the target will now point to all the parameter values I'm pointing to.

◆ size()

std::size_t libMesh::ParameterVector::size ( ) const
Returns
The number of parameters to be used

Definition at line 91 of file parameter_vector.h.

References _params.

Referenced by libMesh::SensitivityData::allocate_data(), and libMesh::SensitivityData::allocate_hessian_data().

91 { return _params.size(); }
std::vector< ParameterAccessor< Number > * > _params
Pointers to parameters which may exist elsewhere.

◆ value_copy()

void libMesh::ParameterVector::value_copy ( ParameterVector target) const

Value copy method: the target, which should already have as many parameters as I do, will now have those parameters set to my values.

Member Data Documentation

◆ _is_shallow_copy

bool libMesh::ParameterVector::_is_shallow_copy
private

Am I a shallow copy? If so then I shouldn't be deleting my ParameterAccessors.

Definition at line 154 of file parameter_vector.h.

Referenced by clear(), and push_back().

◆ _my_data

std::vector<Number> libMesh::ParameterVector::_my_data
private

Parameters which I own; e.g.

as the result of a deep copy

Definition at line 148 of file parameter_vector.h.

Referenced by clear().

◆ _params

std::vector<ParameterAccessor<Number> *> libMesh::ParameterVector::_params
private

Pointers to parameters which may exist elsewhere.

Definition at line 143 of file parameter_vector.h.

Referenced by clear(), operator[](), push_back(), and size().


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