https://github.com/HTDerekLiu/surface_multigrid_code
Revision 2a5ce10bcc87d1ae648b298a39eec2f368b24b24 authored by HTDerekLiu on 24 May 2021, 13:03:36 UTC, committed by HTDerekLiu on 24 May 2021, 13:03:36 UTC
1 parent 5d998ed
Tip revision: 2a5ce10bcc87d1ae648b298a39eec2f368b24b24 authored by HTDerekLiu on 24 May 2021, 13:03:36 UTC
add balloon
add balloon
Tip revision: 2a5ce10
mg_data.h
#ifndef MG_DATA_H
#define MG_DATA_H
#include <vector>
#include <iostream>
#include <Eigen/Core>
#include <Eigen/Sparse>
#include <Eigen/Dense>
struct mg_data
{
Eigen::MatrixXd V; // vertices
Eigen::MatrixXi F; // faces
Eigen::SparseMatrix<double> P_full; // full prolongation
Eigen::SparseMatrix<double> A; // LHS for only unknown parts
Eigen::VectorXd A_diag; // diagonal entries of A
Eigen::SparseMatrix<double> P; // prolongation for only unknown parts
Eigen::SparseMatrix<double> PT; // prolongation transpose for only unknown parts
// Gauss Seidel relaxation precomputation
std::vector<std::vector<int>> S;
Eigen::VectorXi SV;
Eigen::VectorXi SVI;
Eigen::VectorXi SC;
Eigen::VectorXi SCS;
void reset()
{
V = Eigen::MatrixXd();
P_full = Eigen::SparseMatrix<double>();
A = Eigen::SparseMatrix<double>();
A_diag = Eigen::VectorXd();
// Ar = Eigen::SparseMatrix<double, Eigen::RowMajor>();
P = Eigen::SparseMatrix<double>();
PT = Eigen::SparseMatrix<double>();
F = Eigen::MatrixXi();
S.clear(); // reset the 2d array
SV = Eigen::VectorXi();
SVI = Eigen::VectorXi();
SC = Eigen::VectorXi();
SCS = Eigen::VectorXi();
}
};
#endif
Computing file changes ...