Skip to content
Snippets Groups Projects
Commit 9e07ba74 authored by Christoph Lehmann's avatar Christoph Lehmann
Browse files

[PL] pass further extrapolator args

parent b52945a6
No related branches found
No related tags found
No related merge requests found
...@@ -32,11 +32,11 @@ SecondaryVariableFunctions CachedSecondaryVariable::getExtrapolator() ...@@ -32,11 +32,11 @@ SecondaryVariableFunctions CachedSecondaryVariable::getExtrapolator()
{ {
// TODO copied from makeExtrapolator() // TODO copied from makeExtrapolator()
auto const eval_residuals = [this]( auto const eval_residuals = [this](
GlobalVector const& /*x*/, GlobalVector const& x,
NumLib::LocalToGlobalIndexMap const& /*dof_table*/, NumLib::LocalToGlobalIndexMap const& dof_table,
std::unique_ptr<GlobalVector> & /*result_cache*/ std::unique_ptr<GlobalVector> & /*result_cache*/
) -> GlobalVector const& { ) -> GlobalVector const& {
_extrapolator.calculateResiduals(*_extrapolatables); _extrapolator.calculateResiduals(*_extrapolatables, x, dof_table);
return _extrapolator.getElementResiduals(); return _extrapolator.getElementResiduals();
}; };
return {BaseLib::easyBind(&CachedSecondaryVariable::evalField, this), return {BaseLib::easyBind(&CachedSecondaryVariable::evalField, this),
...@@ -44,11 +44,13 @@ SecondaryVariableFunctions CachedSecondaryVariable::getExtrapolator() ...@@ -44,11 +44,13 @@ SecondaryVariableFunctions CachedSecondaryVariable::getExtrapolator()
} }
GlobalVector const& CachedSecondaryVariable::evalField( GlobalVector const& CachedSecondaryVariable::evalField(
GlobalVector const& /*x*/, GlobalVector const& x,
NumLib::LocalToGlobalIndexMap const& /*dof_table*/, NumLib::LocalToGlobalIndexMap const& dof_table,
std::unique_ptr<GlobalVector>& /*result_cache*/ std::unique_ptr<GlobalVector>& /*result_cache*/
) const ) const
{ {
// _current_solution = &x;
// _dof_table = &dof_table;
return evalFieldNoArgs(); return evalFieldNoArgs();
} }
...@@ -60,7 +62,8 @@ GlobalVector const& CachedSecondaryVariable::evalFieldNoArgs() const ...@@ -60,7 +62,8 @@ GlobalVector const& CachedSecondaryVariable::evalFieldNoArgs() const
return _cached_nodal_values; return _cached_nodal_values;
} }
DBUG("Recomputing %s.", _internal_variable_name.c_str()); DBUG("Recomputing %s.", _internal_variable_name.c_str());
_extrapolator.extrapolate(*_extrapolatables); _extrapolator.extrapolate(
*_extrapolatables, *_current_solution, *_dof_table);
auto const& nodal_values = _extrapolator.getNodalValues(); auto const& nodal_values = _extrapolator.getNodalValues();
MathLib::LinAlg::copy(nodal_values, _cached_nodal_values); MathLib::LinAlg::copy(nodal_values, _cached_nodal_values);
_needs_recomputation = false; _needs_recomputation = false;
......
...@@ -69,8 +69,8 @@ private: ...@@ -69,8 +69,8 @@ private:
//! Computes the secondary Variable. //! Computes the secondary Variable.
GlobalVector const& evalField( GlobalVector const& evalField(
GlobalVector const& /*x*/, GlobalVector const& x,
NumLib::LocalToGlobalIndexMap const& /*dof_table*/, NumLib::LocalToGlobalIndexMap const& dof_table,
std::unique_ptr<GlobalVector>& /*result_cache*/ std::unique_ptr<GlobalVector>& /*result_cache*/
) const; ) const;
...@@ -85,6 +85,9 @@ private: ...@@ -85,6 +85,9 @@ private:
std::unique_ptr<NumLib::ExtrapolatableElementCollection> _extrapolatables; std::unique_ptr<NumLib::ExtrapolatableElementCollection> _extrapolatables;
SecondaryVariableContext const& _context; SecondaryVariableContext const& _context;
std::string const _internal_variable_name; std::string const _internal_variable_name;
GlobalVector const* _current_solution = nullptr;
NumLib::LocalToGlobalIndexMap const* _dof_table = nullptr;
}; };
} // namespace ProcessLib } // namespace ProcessLib
...@@ -155,25 +155,25 @@ SecondaryVariableFunctions makeExtrapolator( ...@@ -155,25 +155,25 @@ SecondaryVariableFunctions makeExtrapolator(
{ {
auto const eval_field = [&extrapolator, &local_assemblers, auto const eval_field = [&extrapolator, &local_assemblers,
integration_point_values_method]( integration_point_values_method](
GlobalVector const& /*x*/, GlobalVector const& x,
NumLib::LocalToGlobalIndexMap const& /*dof_table*/, NumLib::LocalToGlobalIndexMap const& dof_table,
std::unique_ptr<GlobalVector> & /*result_cache*/ std::unique_ptr<GlobalVector> & /*result_cache*/
) -> GlobalVector const& { ) -> GlobalVector const& {
auto const extrapolatables = NumLib::makeExtrapolatable( auto const extrapolatables = NumLib::makeExtrapolatable(
local_assemblers, integration_point_values_method); local_assemblers, integration_point_values_method);
extrapolator.extrapolate(extrapolatables); extrapolator.extrapolate(extrapolatables, x, dof_table);
return extrapolator.getNodalValues(); return extrapolator.getNodalValues();
}; };
auto const eval_residuals = [&extrapolator, &local_assemblers, auto const eval_residuals = [&extrapolator, &local_assemblers,
integration_point_values_method]( integration_point_values_method](
GlobalVector const& /*x*/, GlobalVector const& x,
NumLib::LocalToGlobalIndexMap const& /*dof_table*/, NumLib::LocalToGlobalIndexMap const& dof_table,
std::unique_ptr<GlobalVector> & /*result_cache*/ std::unique_ptr<GlobalVector> & /*result_cache*/
) -> GlobalVector const& { ) -> GlobalVector const& {
auto const extrapolatables = NumLib::makeExtrapolatable( auto const extrapolatables = NumLib::makeExtrapolatable(
local_assemblers, integration_point_values_method); local_assemblers, integration_point_values_method);
extrapolator.calculateResiduals(extrapolatables); extrapolator.calculateResiduals(extrapolatables, x, dof_table);
return extrapolator.getElementResiduals(); return extrapolator.getElementResiduals();
}; };
return {eval_field, eval_residuals}; return {eval_field, eval_residuals};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment