Я работаю над некоторым кодом CFD и для некоторых констант (таких как шероховатость поверхности), я хотел бы предоставить возможность либо установить его на единое значение для всего поля, либо на неоднородные значения. Я бы предпочел, чтобы оба варианта были представлены как производные Eigen::DenseBase
, чтобы я мог просто использовать шаблоны функций для обоих вариантов.
Неоднородные значения в настоящее время представлены как ArrayXXd
s , где каждый столбец представляет собой ячейку. Однако использование этого типа для полей uniform было бы огромной тратой места: эти значения никогда не меняются, поэтому они не нуждаются в индивидуальном представлении.
Итак, я хочу просто сохранить один вектор-столбец, который затем ведет себя так, как если бы он имел такое же количество столбцов, что и неоднородная версия (например, разрешает доступ через operator()
или .col(Index)
). Я, вероятно, мог бы сделать это с классом-оболочкой, но тогда я бы, вероятно, заново изобрел квадратное колесо .
Я попытался создать обычное нулевое выражение , но я не думаю, что это правильный путь, потому что AFAICT по-прежнему использует тот же объем памяти.
Если то, что я ищу, невозможно с типом Eigen, я также приму это как ответ и будет просто использовать обертку.