Dispersion tensors
The current implementations of ScheideggersDispersionTensor
and FullDispersionTensor
are not very useful for real applications.
This is because of the following interfaces assumed in the spatialParams
-
problem.spatialParams().dispersionTensor(scvf.center(), phaseIdx, compIdx)
(FullDispersionTensor
) -
std::array<Scalar,2> dispersivity = problem.spatialParams().dispersionAlphas(scvf.center(), phaseIdx, compIdx);
(ScheideggersDispersionTensor
) -
velocity = problem.spatialParams().velocity(scvf);
(ScheideggersDispersionTensor
)
The first two functions assume that the full tensor or the alpha parameters can be determined by the position. However, usually this is not the case but rather by some element marker, etc. Also for the full tensor it is unlikely that the position is suitable for determining the tensor. E.g. for thermal dispersion, one usually multiplies with fluid density...
The velocity call is one needed when assuming a stationary velocity field. However, when using the Box scheme and having a pre-calculated velocity field on scvfs, just passing the scvf as an argument is not enough for directly accessing a container that stores these velocities, because the Box scvf only knows its local index and not a global one.