Skip to content
Snippets Groups Projects
Commit 742629ca authored by Xavier Adriaens's avatar Xavier Adriaens
Browse files

Reduce wave::operator[] cost

parent 3c6c1ead
No related branches found
No related tags found
No related merge requests found
...@@ -17,8 +17,12 @@ void WaveMultiField<T_Physic>::initializeField(const WaveField<T_Physic>& field) ...@@ -17,8 +17,12 @@ void WaveMultiField<T_Physic>::initializeField(const WaveField<T_Physic>& field)
template<Physic T_Physic> template<Physic T_Physic>
const WaveField<T_Physic>& WaveMultiField<T_Physic>::operator[](const unsigned int index) const const WaveField<T_Physic>& WaveMultiField<T_Physic>::operator[](const unsigned int index) const
{
if(index!=_index)
{ {
_field.setAllVector(_dofValues[index], gmshfem::dofs::RawOrder::Hash); _field.setAllVector(_dofValues[index], gmshfem::dofs::RawOrder::Hash);
_index=index;
}
return _field; return _field;
} }
......
...@@ -19,8 +19,9 @@ private: ...@@ -19,8 +19,9 @@ private:
mutable WaveField<T_Physic> _field; mutable WaveField<T_Physic> _field;
bool _isInitialized; bool _isInitialized;
std::vector< gmshfem::algebra::Vector< std::complex< double > > > _dofValues; std::vector< gmshfem::algebra::Vector< std::complex< double > > > _dofValues;
mutable unsigned int _index;
public: public:
WaveMultiField(unsigned int n, const std::string& name = "") : _field(), _isInitialized(false), _dofValues(n) {_field.name(name);}; WaveMultiField(unsigned int n, const std::string& name = "") : _field(), _isInitialized(false), _dofValues(n), _index(n+1) {_field.name(name);};
void initializeField(const WaveField<T_Physic>& field); void initializeField(const WaveField<T_Physic>& field);
bool isInitialized() const {return _isInitialized;}; bool isInitialized() const {return _isInitialized;};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment