| ceed-preconditioning.c (8687e1d445b8fb5c2aba1a76f10bd56e6cda067d) | ceed-preconditioning.c (8575dcac89db64491b0e0135db70cb2bd8cd0cb4) |
|---|---|
| 1// Copyright (c) 2017-2022, Lawrence Livermore National Security, LLC and other CEED contributors. 2// All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 3// 4// SPDX-License-Identifier: BSD-2-Clause 5// 6// This file is part of CEED: http://github.com/ceed 7 8#include <ceed/ceed.h> --- 1862 unchanged lines hidden (view full) --- 1871 "Bases must both be tensor or non-tensor"); 1872 // LCOV_EXCL_STOP 1873 } 1874 1875 ierr = CeedMalloc(Q*P_f, &interp_f); CeedChk(ierr); 1876 ierr = CeedMalloc(Q*P_c, &interp_c); CeedChk(ierr); 1877 ierr = CeedCalloc(P_c*P_f, &interp_c_to_f); CeedChk(ierr); 1878 ierr = CeedMalloc(Q, &tau); CeedChk(ierr); | 1// Copyright (c) 2017-2022, Lawrence Livermore National Security, LLC and other CEED contributors. 2// All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 3// 4// SPDX-License-Identifier: BSD-2-Clause 5// 6// This file is part of CEED: http://github.com/ceed 7 8#include <ceed/ceed.h> --- 1862 unchanged lines hidden (view full) --- 1871 "Bases must both be tensor or non-tensor"); 1872 // LCOV_EXCL_STOP 1873 } 1874 1875 ierr = CeedMalloc(Q*P_f, &interp_f); CeedChk(ierr); 1876 ierr = CeedMalloc(Q*P_c, &interp_c); CeedChk(ierr); 1877 ierr = CeedCalloc(P_c*P_f, &interp_c_to_f); CeedChk(ierr); 1878 ierr = CeedMalloc(Q, &tau); CeedChk(ierr); |
| 1879 const CeedScalar *interp_f_source = NULL, *interp_c_source = NULL; |
|
| 1879 if (is_tensor_f) { | 1880 if (is_tensor_f) { |
| 1880 memcpy(interp_f, basis_fine->interp_1d, Q*P_f*sizeof basis_fine->interp_1d[0]); 1881 memcpy(interp_c, basis_coarse->interp_1d, 1882 Q*P_c*sizeof basis_coarse->interp_1d[0]); | 1881 ierr = CeedBasisGetInterp1D(basis_fine, &interp_f_source); CeedChk(ierr); 1882 ierr = CeedBasisGetInterp1D(basis_coarse, &interp_c_source); CeedChk(ierr); |
| 1883 } else { | 1883 } else { |
| 1884 memcpy(interp_f, basis_fine->interp, Q*P_f*sizeof basis_fine->interp[0]); 1885 memcpy(interp_c, basis_coarse->interp, Q*P_c*sizeof basis_coarse->interp[0]); | 1884 ierr = CeedBasisGetInterp(basis_fine, &interp_f_source); CeedChk(ierr); 1885 ierr = CeedBasisGetInterp(basis_coarse, &interp_c_source); CeedChk(ierr); |
| 1886 } | 1886 } |
| 1887 memcpy(interp_f, interp_f_source, Q*P_f*sizeof interp_f_source[0]); 1888 memcpy(interp_c, interp_c_source, Q*P_c*sizeof interp_c_source[0]); |
|
| 1887 1888 // -- QR Factorization, interp_f = Q R 1889 ierr = CeedQRFactorization(ceed, interp_f, tau, Q, P_f); CeedChk(ierr); 1890 1891 // -- Apply Qtranspose, interp_c = Qtranspose interp_c 1892 ierr = CeedHouseholderApplyQ(interp_c, interp_f, tau, CEED_TRANSPOSE, 1893 Q, P_c, P_f, P_c, 1); CeedChk(ierr); 1894 --- 447 unchanged lines hidden --- | 1889 1890 // -- QR Factorization, interp_f = Q R 1891 ierr = CeedQRFactorization(ceed, interp_f, tau, Q, P_f); CeedChk(ierr); 1892 1893 // -- Apply Qtranspose, interp_c = Qtranspose interp_c 1894 ierr = CeedHouseholderApplyQ(interp_c, interp_f, tau, CEED_TRANSPOSE, 1895 Q, P_c, P_f, P_c, 1); CeedChk(ierr); 1896 --- 447 unchanged lines hidden --- |