コード例 #1
0
ファイル: denseForms.cpp プロジェクト: jrusso360/mc-mini
  void makeBoundaryMatrix (Ref<MatrixXd> boundaryMatrix,
                           const int M,
                           const int N,
                           const double h,
                           const double * viscosityData) {
    #ifdef DEBUG 
      cout << "<Creating " << 3 * M * N - M - N << "x" << 2 * M + 2 * N << " BoundaryMatrix>" << endl;
    #endif
    
    boundaryMatrix = MatrixXd::Zero (3 * M * N - M - N, 2 * M + 2 * N);

    makeBCLaplacianXBlock (boundaryMatrix.block (0,                 0,     M * (N - 1), 2 * M), M, N, h, viscosityData);
    makeBCLaplacianYBlock (boundaryMatrix.block (M * (N - 1),       2 * M, (M - 1) * N, 2 * N), M, N, h, viscosityData);
    makeBCDivXBlock       (boundaryMatrix.block (2 * M * N - M - N, 0,     M * N,       2 * M), M, N, h);
    makeBCDivYBlock       (boundaryMatrix.block (2 * M * N - M - N, 2 * M, M * N,       2 * N), M, N, h);
  }
コード例 #2
0
ファイル: sparseForms.cpp プロジェクト: icherkashin/mc-mini
  void makeBoundaryMatrix (SparseMatrix<double>& boundaryMatrix,
                           const int M,
                           const int N,
                           const double h,
                           const double * viscosityData) {
    #ifdef DEBUG
      cout << "<Creating " << 3 * M * N - M - N << "x" << 2 * M + 2 * N << " BoundaryMatrix>" << endl;
    #endif

    vector<Triplet<double> > tripletList;

    makeBCLaplacianXBlock (tripletList, 0,                 0,     M, N, h, viscosityData);
    makeBCLaplacianYBlock (tripletList, M * (N - 1),       2 * M, M, N, h, viscosityData);
    makeBCDivXBlock       (tripletList, 2 * M * N - M - N, 0,     M, N, h);
    makeBCDivYBlock       (tripletList, 2 * M * N - M - N, 2 * M, M, N, h);

    boundaryMatrix.setFromTriplets (tripletList.begin(), tripletList.end());

    #ifdef DEBUG
      cout << endl;
    #endif
  }