https://mooseframework.inl.gov
Loading...
Searching...
No Matches
MutableCoefficientsInterface.h
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
3//*
4//* All rights reserved, see COPYRIGHT for full restrictions
5//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6//*
7//* Licensed under LGPL 2.1, please see LICENSE for details
8//* https://www.gnu.org/licenses/lgpl-2.1.html
9
10#pragma once
11
12#include <vector>
13
14#include "InputParameters.h"
15#include "MooseTypes.h"
16#include "Restartable.h"
17
18class ConsoleStream;
19
27{
28public:
30
31 MutableCoefficientsInterface(const MooseObject * moose_object,
32 const InputParameters & parameters);
33
34 // Coefficient access
38 Real operator[](std::size_t index) const;
42 const std::vector<std::size_t> & getCharacteristics() const;
46 const std::vector<Real> & getCoefficients() const;
50 std::vector<Real> & getCoefficients();
54 std::string getCoefficientsTable() const;
55
56 // Current state
60 std::size_t getSize() const;
64 bool isCompatibleWith(const MutableCoefficientsInterface & other) const;
68 bool isSizeEnforced() const;
72 void enforceSize(bool enforce);
73
74 // Mutable aspect
82 void resize(std::size_t size, Real fill = 0.0, bool fill_out_to_size = true);
86 void setCharacteristics(const std::vector<std::size_t> & new_characteristics);
90 void setCoefficients(const std::vector<Real> & new_coefficients);
94 void setCoefficients(std::vector<Real> && dropin_coefficients);
95
99 friend std::ostream & operator<<(std::ostream & stream, const MutableCoefficientsInterface & me);
100
101protected:
105 virtual void coefficientsChanged() {}
106
108 std::vector<std::size_t> & _characteristics;
109
111 std::vector<Real> & _coefficients;
112
115
118
119private:
122};
This class is designed to provide a uniform interface for any class that uses an array of coefficient...
virtual void coefficientsChanged()
Called when the coefficients have been changed.
bool _enforce_size
Boolean that locks or allows resizing of the coefficient array.
Real operator[](std::size_t index) const
Get the value of the coefficient at the corresponding index.
std::vector< std::size_t > & _characteristics
An array of integer characteristics that can be used to check compatibility.
void setCharacteristics(const std::vector< std::size_t > &new_characteristics)
Sets the characteristics array.
void importCoefficients(const MutableCoefficientsInterface &other)
Import the coefficients from another instance.
bool isSizeEnforced() const
Returns true if the size of the coefficient array is fixed and enforced.
std::string getCoefficientsTable() const
Get a formatted string of the coefficients.
void enforceSize(bool enforce)
Toggle whether the size of the coefficient array can be changed.
const bool _print_coefficients
Boolean to flag if the coefficients should be printed when set.
const std::vector< Real > & getCoefficients() const
Get a read-only reference to the vector of coefficients.
void setCoefficients(const std::vector< Real > &new_coefficients)
Set the coefficients using a copy operation.
std::size_t getSize() const
Get the size, aka number of coefficients.
const ConsoleStream & _console
MooseObject instance of this to provide access to _console
bool isCompatibleWith(const MutableCoefficientsInterface &other) const
Checks to see if another instance is compatible.
std::vector< Real > & _coefficients
The coefficient array.
friend std::ostream & operator<<(std::ostream &stream, const MutableCoefficientsInterface &me)
Friend operator to easily print out the array of coefficients.
void resize(std::size_t size, Real fill=0.0, bool fill_out_to_size=true)
Resize the array, using the value for fill if the new size is larger.
const std::vector< std::size_t > & getCharacteristics() const
Get a reference to the characteristics array.