Blender
V3.3
|
#include "linear_solver.h"
#include <Eigen/Sparse>
#include <algorithm>
#include <cassert>
#include <cstdlib>
#include <iostream>
#include <vector>
Go to the source code of this file.
Classes | |
struct | LinearSolver |
struct | LinearSolver::Coeff |
struct | LinearSolver::Variable |
Typedefs | |
typedef Eigen::SparseMatrix< double, Eigen::ColMajor > | EigenSparseMatrix |
typedef Eigen::SparseLU< EigenSparseMatrix > | EigenSparseLU |
typedef Eigen::VectorXd | EigenVectorX |
typedef Eigen::Triplet< double > | EigenTriplet |
Sparse linear solver.
Definition in file linear_solver.cc.
typedef Eigen::SparseLU<EigenSparseMatrix> EigenSparseLU |
Definition at line 23 of file linear_solver.cc.
typedef Eigen::SparseMatrix<double, Eigen::ColMajor> EigenSparseMatrix |
Definition at line 22 of file linear_solver.cc.
typedef Eigen::Triplet<double> EigenTriplet |
Definition at line 25 of file linear_solver.cc.
typedef Eigen::VectorXd EigenVectorX |
Definition at line 24 of file linear_solver.cc.
LinearSolver* EIG_linear_least_squares_solver_new | ( | int | num_rows, |
int | num_columns, | ||
int | num_rhs | ||
) |
Definition at line 106 of file linear_solver.cc.
Referenced by adjust_the_cycle_or_chain(), bmo_smooth_laplacian_vert_exec(), laplacian_system_construct_begin(), laplacianDeformPreview(), laplaciansmoothModifier_do(), and p_chart_lscm_begin().
void EIG_linear_solver_delete | ( | LinearSolver * | solver | ) |
Definition at line 111 of file linear_solver.cc.
Referenced by adjust_the_cycle_or_chain(), delete_laplacian_system(), deleteLaplacianSystem(), laplacian_system_delete(), laplaciansmoothModifier_do(), meshdeform_matrix_solve(), p_abf_matrix_invert(), and p_chart_lscm_end().
void EIG_linear_solver_matrix_add | ( | LinearSolver * | solver, |
int | row, | ||
int | col, | ||
double | value | ||
) |
Definition at line 210 of file linear_solver.cc.
References col, LinearSolver::Coeff::index, LinearSolver::least_squares, linear_solver_ensure_matrix_construct(), LinearSolver::Mtriplets, LinearSolver::state, LinearSolver::STATE_MATRIX_SOLVED, LinearSolver::Coeff::value, and LinearSolver::variable.
Referenced by adjust_the_cycle_or_chain(), bmo_smooth_laplacian_vert_exec(), fill_laplacian_matrix(), initLaplacianMatrix(), laplacian_system_construct_end(), laplacian_triangle_weights(), laplacianDeformPreview(), laplaciansmoothModifier_do(), meshdeform_matrix_add_cell(), p_abf_matrix_invert(), and p_chart_lscm_solve().
LinearSolver* EIG_linear_solver_new | ( | int | num_rows, |
int | num_columns, | ||
int | num_rhs | ||
) |
Definition at line 101 of file linear_solver.cc.
Referenced by laplacian_system_construct_begin(), meshdeform_matrix_solve(), and p_abf_matrix_invert().
void EIG_linear_solver_print_matrix | ( | LinearSolver * | solver | ) |
Definition at line 334 of file linear_solver.cc.
References LinearSolver::b, if(), LinearSolver::M, LinearSolver::MtM, and LinearSolver::num_rhs.
Referenced by adjust_the_cycle_or_chain().
void EIG_linear_solver_right_hand_side_add | ( | LinearSolver * | solver, |
int | rhs, | ||
int | index, | ||
double | value | ||
) |
Definition at line 241 of file linear_solver.cc.
References LinearSolver::b, LinearSolver::least_squares, linear_solver_ensure_matrix_construct(), and LinearSolver::variable.
Referenced by adjust_the_cycle_or_chain(), bmo_smooth_laplacian_vert_exec(), laplacian_add_right_hand_side(), laplacianDeformPreview(), laplaciansmoothModifier_do(), meshdeform_matrix_add_rhs(), p_abf_matrix_invert(), and rotateDifferentialCoordinates().
bool EIG_linear_solver_solve | ( | LinearSolver * | solver | ) |
Definition at line 256 of file linear_solver.cc.
References LinearSolver::Variable::a, Freestyle::a, LinearSolver::b, usdtokens::b(), LinearSolver::least_squares, linear_solver_vector_to_variables(), LinearSolver::Variable::locked, LinearSolver::m, LinearSolver::M, M, LinearSolver::MtM, LinearSolver::Mtriplets, LinearSolver::n, LinearSolver::num_rhs, LinearSolver::num_variables, result, LinearSolver::sparseLU, LinearSolver::state, LinearSolver::STATE_MATRIX_CONSTRUCT, LinearSolver::STATE_MATRIX_SOLVED, LinearSolver::STATE_VARIABLES_CONSTRUCT, LinearSolver::Variable::value, LinearSolver::variable, and LinearSolver::x.
Referenced by adjust_the_cycle_or_chain(), bmo_smooth_laplacian_vert_exec(), laplacian_system_solve(), laplacianDeformPreview(), laplaciansmoothModifier_do(), meshdeform_matrix_solve(), p_abf_matrix_invert(), and p_chart_lscm_solve().
double EIG_linear_solver_variable_get | ( | LinearSolver * | solver, |
int | rhs, | ||
int | index | ||
) |
Definition at line 123 of file linear_solver.cc.
References LinearSolver::variable.
Referenced by adjust_the_cycle_or_chain(), laplacian_system_get_solution(), laplacianDeformPreview(), meshdeform_matrix_solve(), p_abf_matrix_invert(), p_chart_lscm_load_solution(), rotateDifferentialCoordinates(), and validate_solution().
void EIG_linear_solver_variable_lock | ( | LinearSolver * | solver, |
int | index | ||
) |
Definition at line 128 of file linear_solver.cc.
References LinearSolver::state, LinearSolver::STATE_VARIABLES_CONSTRUCT, and LinearSolver::variable.
Referenced by bmo_smooth_laplacian_vert_exec(), laplacian_begin_solve(), and p_chart_lscm_solve().
void EIG_linear_solver_variable_set | ( | LinearSolver * | solver, |
int | rhs, | ||
int | index, | ||
double | value | ||
) |
Definition at line 118 of file linear_solver.cc.
References LinearSolver::variable.
Referenced by bmo_smooth_laplacian_vert_exec(), laplacian_begin_solve(), laplacianDeformPreview(), laplaciansmoothModifier_do(), and p_chart_lscm_solve().
void EIG_linear_solver_variable_unlock | ( | LinearSolver * | solver, |
int | index | ||
) |
Definition at line 136 of file linear_solver.cc.
References LinearSolver::state, LinearSolver::STATE_VARIABLES_CONSTRUCT, and LinearSolver::variable.
Referenced by bmo_smooth_laplacian_vert_exec().
|
static |
Definition at line 172 of file linear_solver.cc.
References LinearSolver::b, LinearSolver::least_squares, linear_solver_variables_to_vector(), LinearSolver::m, max, LinearSolver::Mtriplets, LinearSolver::n, LinearSolver::num_rhs, LinearSolver::num_rows, LinearSolver::num_variables, LinearSolver::state, LinearSolver::STATE_MATRIX_CONSTRUCT, LinearSolver::STATE_VARIABLES_CONSTRUCT, LinearSolver::variable, and LinearSolver::x.
Referenced by EIG_linear_solver_matrix_add(), and EIG_linear_solver_right_hand_side_add().
|
static |
Definition at line 144 of file linear_solver.cc.
References LinearSolver::num_rhs, LinearSolver::num_variables, v, LinearSolver::variable, and LinearSolver::x.
Referenced by linear_solver_ensure_matrix_construct().
|
static |
Definition at line 157 of file linear_solver.cc.
References LinearSolver::num_rhs, LinearSolver::num_variables, v, LinearSolver::variable, and LinearSolver::x.
Referenced by EIG_linear_solver_solve().