Как человек, который провел несколько лет, работая с обоими, я считаю, что оба пакета на самом деле не так уж различны. Правда, они используют разные языки, но используют их очень похожими способами (оба являются объектно-ориентированными, Trilinos мало использует C ++ помимо использования классов). Оба поддерживают практически все, что вы когда-либо захотите сделать с помощью линейной алгебры (либо через подпакеты, либо через файлы, которые они загружают на лету, что с точки зрения пользователя не имеет никакого значения). Наконец, оба имеют большое количество более непонятных и, вероятно, не очень широко используемых подпакетов (например, сетчатый интерфейс PETSc 'sieve', автоматическое дифференцирование в трилино и т. Д.).
Для меня привлекательность Трилиноса двояка: - количество малоизвестных подпакетов в Трилино значительно больше; если мне когда-нибудь понадобится что-то в направлении X, я найду это в Трилиносе, и оно будет работать с остальной частью моего кода. - Трилинос гораздо более консервативен в своей стратегии развития. PETSc все время переименовывает, и каждый выпуск требует от пользователей догонять переименованные функции, разные библиотеки и т. Д.