I have a 2D own array, where each element in the array is a 3-element eigenvector (for example, a velocity field above the surface).
I want to multiply each each element of a 2D array by a 3-element Eigen RowVector, effectively using a dot product.
Eigen::Array<Eigen::Vector3d, Eigen::Dynamic, Eigen::Dynamic> velField(5, 5);
Eigen::Vector3d n;
// ... initialisation of n and velField not shown
Eigen::Array<double, Eigen::Dynamic, Eigen::Dynamic> result(5, 5);
result = n.transpose() * velField;
This gives a compilation error YOU ARE MIXED DIFFERENT NUMBER TYPES. However, if I do not assign a result, we simply calculate it:
n.transpose() * velField;
it compiles. What is the correct return type for the "result" - or how else can I fix it?
EDIT
The same problem can be observed in this simpler case (double multiplication):
Eigen::Array<Eigen::Vector3d, Eigen::Dynamic, Eigen::Dynamic> velField(5, 5);
// ... initialisation of velField not shown
Eigen::Array<Eigen::Vector3d, Eigen::Dynamic, Eigen::Dynamic> result(5, 5);
result = 3.0 * velField;
However, the same code works when used std::complex<double>instead Eigen::Vector3d:
Eigen::Array<std::complex<double>, Eigen::Dynamic, Eigen::Dynamic> velField(5, 5);
Eigen::Array<std::complex<double>, Eigen::Dynamic, Eigen::Dynamic> result(5, 5);
result = 3.0 * velField;
, std::complex, Eigen::Vector3d. * double.