## Access to problem quantities (like thermal conductivity) model dependent

I observed that it is problem-/model-dependent how to obtain the thermal conductivity. This make it hard to reuse some of my functions with different problems/models.

- Would it be possible to unify the interface?
- Is there a (smart) way to generalize functions that should work for different problems/models?

## Short description

The interface to obtain model properties is not unique. Obtaining the thermal conductivity `lambda`

looks different for different types of problems used.

- Using
`SolidEnergy`

model:`lambda = ThermalConductivityModel::effectiveThermalConductivity(volVars,problem.spatialParams(),element,fvGeometry,scv)`

- Using
`NavierStokesNI`

model:`lambda = volVars.effectiveThermalConductivity()`

In my case, this makes is hard to reuse an already implemented function. Moreover, it does not feel intuitive that the interface to obtain the conductivity differs (that much) between two physical models.

## Longer description

Kilian and me have been recently worked on a routine that constructs the temperature on a boundary. It basically gets a heat flux `Q`

on the face of an element and the temperature `T_cc`

at the cell center. Together with the thermal conductivity `lambda`

and the distance from the cell center to the face `distance`

obtain the temperature on the face `T_face`

from the following formula:

```
Q = - lambda ( T_face - T_center ) / distance
=> T_face = - Q * distance / lambda + T_center
```

It has been implement once for a heat equation problem that inherits from `SolidEnergy`

. In this case heat conductivity is obtained via `ThermalConductivityModel::effectiveThermalConductivity`

. In my particular case it looks like that:

```
const Scalar lambda = ThermalConductivityModel::effectiveThermalConductivity(volVars,
problem.spatialParams(),
element,
fvGeometry,
scv);
```

Now, I wanted to reuse the function for a Navier-Stokes based problem that inherits `NavierStokesNI`

. I tried reuse the function we had already written, but this fails since the heat conductivity has to be obtained via the `effectiveThermalConductivity`

member function of an object of type `ElementVolumeVariables`

. In my case it looks like:

`const Scalar insideLambda = volVars.effectiveThermalConductivity();`

Due to that I had to implement the same function twice which I would like to avoid