11#if defined(__GNUC__) && !defined(__clang__)
12# pragma GCC diagnostic push
14# pragma GCC diagnostic ignored "-Wlogical-op"
17#include <Eigen/Sparse>
18#include <Eigen/src/Core/util/DisableStupidWarnings.h>
21# pragma GCC diagnostic pop
39 for (
int k = 0; k < 3; k++) {
46 for (
int k = 0; k < 3; k++) {
69 for (
int k = 0; k < 3; k++) {
70 for (
int l = 0;
l < 3;
l++) {
71 coeffRef(
l, k) =
v[k][
l];
78 for (
int k = 0; k < 3; k++) {
79 for (
int l = 0;
l < 3;
l++) {
80 coeffRef(
l, k) =
v[k][
l];
105 base_t::operator=(
rhs);
109 float *
v3(
int vertex)
111 return &coeffRef(3 * vertex);
114 const float *
v3(
int vertex)
const
116 return &coeffRef(3 * vertex);
142 m_trips.reserve(numverts * 9);
149 for (
int k = 0; k < 3; k++) {
150 for (
int l = 0;
l < 3;
l++) {
151 m_trips.emplace_back(
i + k, j +
l, m.coeff(
l, k));
160 for (
int k = 0; k < 3; k++) {
161 for (
int l = 0;
l < 3;
l++) {
162 m_trips.emplace_back(
i + k, j +
l, -m.coeff(
l, k));
169 m.setFromTriplets(m_trips.begin(), m_trips.end());
178 Eigen::ConjugateGradient<lMatrix, Eigen::Lower, Eigen::DiagonalPreconditioner<Scalar>>;
180using Eigen::ComputationInfo;
184 for (
int i = 0;
i <
v.rows();
i++) {
185 if (
i > 0 &&
i % 3 == 0) {
195 for (
int j = 0; j < m.rows(); j++) {
196 if (j > 0 && j % 3 == 0) {
200 for (
int i = 0;
i < m.cols();
i++) {
201 if (
i > 0 &&
i % 3 == 0) {
BMesh const char void * data
ATTR_WARN_UNUSED_RESULT const BMLoop * l
ATTR_WARN_UNUSED_RESULT const BMVert * v
Matrix3 & operator=(const ctype &v)
Vector3 & operator=(const ctype &v)
lVector3f & operator=(T rhs)
const float * v3(int vertex) const
std::vector< Triplet > TripletList
Eigen::ConjugateGradient< lMatrix, Eigen::Lower, Eigen::DiagonalPreconditioner< Scalar > > ConjugateGradient
BLI_INLINE void print_lmatrix(const lMatrix &m)
Eigen::Triplet< Scalar > Triplet
Eigen::SparseMatrix< Scalar > lMatrix
BLI_INLINE void print_lvector(const lVector3f &v)
BLI_INLINE void implicit_print_matrix_elem(float v)
void construct(lMatrix &m)
void add(int i, int j, const Matrix3 &m)
void sub(int i, int j, const Matrix3 &m)
void reserve(int numverts)