Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorover0219 <over0219@umn.edu>2020-06-30 05:28:37 +0300
committerover0219 <over0219@umn.edu>2020-06-30 05:28:37 +0300
commita0310586dfb35cfde3674fb94ac42a9a3ebb6ea1 (patch)
treeabc70b65cb54b950bfeb5bc4cf201fde7613079d /extern/softbody/src/admmpd_types.h
parentfd7bcb209aa7e888a32f980a01d17f79c59b0c51 (diff)
gauss seidel solver
Diffstat (limited to 'extern/softbody/src/admmpd_types.h')
-rw-r--r--extern/softbody/src/admmpd_types.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/extern/softbody/src/admmpd_types.h b/extern/softbody/src/admmpd_types.h
index 13edb93c3da..46765150e1c 100644
--- a/extern/softbody/src/admmpd_types.h
+++ b/extern/softbody/src/admmpd_types.h
@@ -18,6 +18,7 @@ struct Options {
double timestep_s; // TODO: Figure out delta time from blender api
int max_admm_iters;
int max_cg_iters;
+ int max_gs_iters;
double mult_k; // stiffness multiplier for constraints
double min_res; // min residual for CG solver
double youngs; // Young's modulus // TODO variable per-tet
@@ -27,6 +28,7 @@ struct Options {
timestep_s(1.0/24.0),
max_admm_iters(50),
max_cg_iters(10),
+ max_gs_iters(30),
mult_k(1),
min_res(1e-6),
youngs(1000000),
@@ -82,6 +84,12 @@ struct SolverData {
Eigen::MatrixXd p;
Eigen::MatrixXd Ap; // A * p
} cgdata;
+ struct GSData { // Temporaries used in Gauss-Seidel
+ RowSparseMatrix<double> KtK; // k * Kt K, different dim than A!
+ Eigen::MatrixXd last_dx; // last GS iter change in x
+ std::vector<std::vector<int> > A_colors; // colors of just A matrix
+ std::vector<std::vector<int> > A_KtK_colors; // colors of just A+KtK
+ } gsdata;
// Set in append_energies:
std::vector<Eigen::Vector2i> indices; // per-energy index into D (row, num rows)
std::vector<double> rest_volumes; // per-energy rest volume