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 ---