| /libCEED/examples/fluids/qfunctions/ |
| H A D | utils_eigensolver_jacobi.h | 1 // Copyright (c) 2017-2026, Lawrence Livermore National Security, LLC and other CEED contributors. 2 // All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 4 // SPDX-License-Identifier: BSD-2-Clause 29 ///@brief Find the off-diagonal index in row i whose absolute value is largest 31 /// @param[in] *A matrix 33 /// @returns Index of absolute largest off-diagonal element in row i 34 CEED_QFUNCTION_HELPER CeedInt MaxEntryRow(const CeedScalar *A, CeedInt N, CeedInt i) { in MaxEntryRow() argument 37 if (fabs(A[i * N + j]) > fabs(A[i * N + j_max])) j_max = j; in MaxEntryRow() 45 /// @param[in] *A matrix 48 CEED_QFUNCTION_HELPER void MaxEntry(const CeedScalar *A, CeedInt N, CeedInt *max_idx_row, CeedInt *… in MaxEntry() argument [all …]
|
| H A D | utils.h | 1 // Copyright (c) 2017-2026, Lawrence Livermore National Security, LLC and other CEED contributors. 2 // All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 4 // SPDX-License-Identifier: BSD-2-Clause 18 CEED_QFUNCTION_HELPER CeedScalar Max(CeedScalar a, CeedScalar b) { return a < b ? b : a; } in Max() argument 19 CEED_QFUNCTION_HELPER CeedScalar Min(CeedScalar a, CeedScalar b) { return a < b ? a : b; } in Min() argument 21 CEED_QFUNCTION_HELPER void SwapScalar(CeedScalar *a, CeedScalar *b) { in SwapScalar() argument 22 CeedScalar temp = *a; in SwapScalar() 23 *a = *b; in SwapScalar() 35 // @brief Set vector of length N to a value alpha 43 // @brief Copy 3x3 matrix from A to B [all …]
|
| /libCEED/backends/avx/ |
| H A D | ceed-avx-tensor.c | 1 // Copyright (c) 2017-2026, Lawrence Livermore National Security, LLC and other CEED contributors. 2 // All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 4 // SPDX-License-Identifier: BSD-2-Clause 19 // c += a * b 21 #define fmadd(c, a, b) (c) = _mm256_fmadd_pd((a), (b), (c)) argument 23 #define fmadd(c, a, b) (c) += _mm256_mul_pd((a), (b)) argument 31 // c += a * b 33 #define fmadd(c, a, b) (c) = _mm_fmadd_ps((a), (b), (c)) argument 35 #define fmadd(c, a, b) (c) += _mm_mul_ps((a), (b)) argument 39 //------------------------------------------------------------------------------ [all …]
|
| /libCEED/include/ceed/jit-source/gallery/ |
| H A D | ceed-poisson3dbuild.h | 1 // Copyright (c) 2017-2026, Lawrence Livermore National Security, LLC and other CEED contributors. 2 // All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 4 // SPDX-License-Identifier: BSD-2-Clause 26 CeedScalar A[3][3]; in Poisson3DBuild() local 30 // A[k][j] = J[k+1][j+1]*J[k+2][j+2] - J[k+2][j+1]*J[k+1][j+2] in Poisson3DBuild() 31 A[k][j] = J[(k + 1) % dim][(j + 1) % dim][i] * J[(k + 2) % dim][(j + 2) % dim][i] - in Poisson3DBuild() 35 … const CeedScalar qw = w[i] / (J[0][0][i] * A[0][0] + J[0][1][i] * A[0][1] + J[0][2][i] * A[0][2]); in Poisson3DBuild() 42 q_data[0][i] = qw * (A[0][0] * A[0][0] + A[0][1] * A[0][1] + A[0][2] * A[0][2]); in Poisson3DBuild() 43 q_data[1][i] = qw * (A[1][0] * A[1][0] + A[1][1] * A[1][1] + A[1][2] * A[1][2]); in Poisson3DBuild() 44 q_data[2][i] = qw * (A[2][0] * A[2][0] + A[2][1] * A[2][1] + A[2][2] * A[2][2]); in Poisson3DBuild() [all …]
|
| /libCEED/examples/petsc/qfunctions/bps/ |
| H A D | bp3.h | 1 // Copyright (c) 2017-2026, Lawrence Livermore National Security, LLC and other CEED contributors. 2 // All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 4 // SPDX-License-Identifier: BSD-2-Clause 16 // ----------------------------------------------------------------------------- 32 // Stored: w B^T B detJ = w A^T A / detJ 37 // ----------------------------------------------------------------------------- 49 CeedScalar A[3][3]; in SetupDiffGeo() local 53 // A[k][j] = J[k+1][j+1]*J[k+2][j+2] - J[k+1][j+2]*J[k+2][j+1] in SetupDiffGeo() 54 A[k][j] = J[(k + 1) % dim][(j + 1) % dim][i] * J[(k + 2) % dim][(j + 2) % dim][i] - in SetupDiffGeo() 58 const CeedScalar detJ = J[0][0][i] * A[0][0] + J[0][1][i] * A[0][1] + J[0][2][i] * A[0][2]; in SetupDiffGeo() [all …]
|
| /libCEED/examples/ceed/ |
| H A D | ex3-volume.h | 1 // Copyright (c) 2017-2026, Lawrence Livermore National Security, LLC and other CEED contributors. 2 // All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 4 // SPDX-License-Identifier: BSD-2-Clause 10 /// A structure used to pass additional data to f_build_mass_diff 15 /// libCEED Q-function for building quadrature data for a mass + diffusion operator 26 switch (build_data->dim + 10 * build_data->space_dim) { in build_mass_diff() 42 // J: 0 2 q_data: 0 2 adj(J): J22 -J12 in build_mass_diff() 43 // 1 3 2 1 -J10 J00 in build_mass_diff() 48 const CeedScalar qw = w[i] / (J00 * J11 - J10 * J01); in build_mass_diff() 51 q_data[0][i] = w[i] * (J00 * J11 - J10 * J01); in build_mass_diff() [all …]
|
| H A D | ex2-surface.h | 1 // Copyright (c) 2017-2026, Lawrence Livermore National Security, LLC and other CEED contributors. 2 // All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 4 // SPDX-License-Identifier: BSD-2-Clause 10 /// A structure used to pass additional data to f_build_diff 15 /// libCEED Q-function for building quadrature data for a diffusion operator 26 switch (build_data->dim + 10 * build_data->space_dim) { in build_diff() 36 // J: 0 2 q_data: 0 2 adj(J): J11 -J01 in build_diff() 37 // 1 3 2 1 -J10 J00 in build_diff() 42 const CeedScalar qw = w[i] / (J00 * J11 - J10 * J01); in build_diff() 46 q_data[2][i] = -qw * (J00 * J01 + J10 * J11); in build_diff() [all …]
|
| /libCEED/examples/python/qfunctions/ |
| H A D | ex2-surface.h | 1 // Copyright (c) 2017-2026, Lawrence Livermore National Security, LLC and other CEED contributors. 2 // All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 4 // SPDX-License-Identifier: BSD-2-Clause 10 #include "ex-common.h" 12 /// libCEED Q-function for building quadrature data for a diffusion operator 22 switch (build_data->dim + 10 * build_data->space_dim) { in build_diff() 32 // J: 0 2 q_data: 0 2 adj(J): J11 -J01 in build_diff() 33 // 1 3 2 1 -J10 J00 in build_diff() 38 const CeedScalar qw = w[i] / (J00 * J11 - J10 * J01); in build_diff() 42 q_data[2][i] = -qw * (J00 * J01 + J10 * J11); in build_diff() [all …]
|
| H A D | ex3-volume.h | 1 // Copyright (c) 2017-2026, Lawrence Livermore National Security, LLC and other CEED contributors. 2 // All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 4 // SPDX-License-Identifier: BSD-2-Clause 10 #include "ex-common.h" 12 /// libCEED Q-function for building quadrature data for a mass + diffusion operator 22 switch (build_data->dim + 10 * build_data->space_dim) { in build_mass_diff() 38 // J: 0 2 q_data: 0 2 adj(J): J22 -J12 in build_mass_diff() 39 // 1 3 2 1 -J10 J00 in build_mass_diff() 44 const CeedScalar qw = w[i] / (J00 * J11 - J10 * J01); in build_mass_diff() 47 q_data[0][i] = w[i] * (J00 * J11 - J10 * J01); in build_mass_diff() [all …]
|
| /libCEED/doc/papers/joss/ |
| H A D | paper.md | 1 --- 2 title: 'libCEED: Fast algebra for high-order element-based discretizations' 4 - high-performance computing 5 - high-order methods 6 - finite elements 7 - spectral elements 8 - matrix-free 10 - name: Jed Brown 11 orcid: 0000-0002-9945-0639 13 - name: Ahmad Abdelfattah [all …]
|
| /libCEED/ |
| H A D | Doxyfile | 4 # doxygen (www.doxygen.org) for a project. 6 # All text after a double hash (##) is considered a comment and is placed in 9 # All text after a single hash (#) is considered a comment and will be ignored. 20 # doxygen -x [configFile] 24 # doxygen -x_noenv [configFile] 26 #--------------------------------------------------------------------------- 28 #--------------------------------------------------------------------------- 31 # file that follow. The default is UTF-8 which is also the encoding used for all 35 # The default value is: UTF-8. 37 DOXYFILE_ENCODING = UTF-8 [all …]
|
| H A D | RELEASING.md | 3 *These notes are meant for a maintainer to create official releases.* 5 In preparing a release, create a branch to hold pre-release commits. 11 Some minor bookkeeping updates are needed when releasing a new version of the core library. 21 Use `git log --first-parent v0.7..` to get a sense of the pull requests that have been merged and t… 22 While doing this, gather a couple sentences for key features to highlight on [GitHub releases](http… 25 Use `make doc-latexpdf` to build a PDF users manual and inspect it for missing references or format… 30 1. If making a minor release, check for API and ABI changes that could break [semantic versioning](… 31 …[ABI compliance checker](https://github.com/lvc/abi-compliance-checker) is a useful tool, as is `n… 34 …event release, it's polite to make a PR to support the new release, and it's good for quality to t… 39 The Spack `libceed/package.py` file should be updated immediately after tagging a release. [all …]
|
| H A D | CONTRIBUTING.md | 4 <!--- 5 Please use a pull request to the appropriate branch ('stable' for backward-compatible bug fixes for… 6 --> 7 …e your commits well-organized and [atomic](https://en.wikipedia.org/wiki/Atomic_commit#Atomic_comm… 8 Check that tests (including "examples") pass using `make prove-all`. 9 If adding a new feature, please add or extend a test so that your new feature is tested. 12 …efficiency of reviewing and facilitates use of [`git bisect`](https://git-scm.com/docs/git-bisect). 15 It is useful to create a WIP (work in progress) pull request for any long-running development so th… 17 Write commit messages for a reviewer of your pull request and for a future developer (maybe you) th… 20 …-by: Helpful User <helpful@example.com>` or [`Co-authored-by: Snippet Mentor <code.by@comment.com>… [all …]
|
| /libCEED/doc/sphinx/source/ |
| H A D | libCEEDdev.md | 5 LibCEED has a single user facing API for creating and using the libCEED objects ({ref}`CeedVector`,… 6 … backends are selected by instantiating a different {ref}`Ceed` object to create the other libCEED… 11 The interface should pass any computationally expensive or hardware specific operations to a backen… 12 A new method for the associated libCEED object can be added in `/include/ceed-impl.h`, with a corre… 13 … implementation of the object, typically found in `/backends/[impl]/ceed-[impl]-[object].c`, the d… 17 LibCEED generally follows a "CPU first" implementation strategy when adding new functionality to th… 18 If there are no performance specific considerations, it is generally recommended to include a basic… 24 A Ceed backend is not required to implement all libCeed objects or {ref}`CeedOperator` methods. 25 There are three mechanisms by which a Ceed backend can inherit implementations from another Ceed ba… 27 1. Delegation - Developers may use {c:func}`CeedSetDelegate` to set a general delegate {ref}`Ceed` … [all …]
|
| H A D | intro.md | 3 Historically, conventional high-order finite element methods were rarely used for industrial proble… 4 … point operations (FLOPS) per degree of freedom (DOF)---see {numref}`fig-assembledVsmatrix-free`--… 5 Nowadays, high-order numerical methods, such as the spectral element method (SEM)---a special case … 6 …---are employed, especially with (nearly) affine elements, because linear constant coefficient pro… 7 …-assembledVsmatrix-free` we analyze and compare the theoretical costs, of different configurations… 9 A more relevant performance plot for current state-of-the-art high-performance machines (for which … 10 …-order methods, implemented properly with only partial assembly, require optimal amount of memory … 11 Thus, high-order methods in matrix-free representation not only possess favorable properties, such … 13 (fig-assembledvsmatrix-free)= 16 …resentations of a linear operator for a PDE in 3D with $b$ components and variable coefficients ar… [all …]
|
| H A D | libCEEDapi.md | 3 This page provides a brief description of the theoretical foundations and the practical implementat… 5 (theoretical-framework)= 9 …eak form of a Partial Differential Equation (PDE) is evaluated on a subdomain $\Omega_e$ (element)… 10 In particular, when high-order finite elements or spectral elements are used, the resulting sparse … 11 libCEED provides an interface for matrix-free operator description that enables efficient evaluatio… 15 We first define the $L^2$ inner product between real-valued functions 23 We want to find $u$ in a suitable space $V_D$, such that 30 …$ represents all terms in {eq}`residual` which multiply the (possibly vector-valued) test function… 31 For an n-component problems in $d$ dimensions, $\bm f_0 \in \mathbb{R}^n$ and $\bm f_1 \in \mathbb{… 34 …m f_1$ represents contraction over both fields and spatial dimensions while a single dot represent… [all …]
|
| H A D | CONTRIBUTING.md | 4 <!--- 5 Please use a pull request to the appropriate branch ('stable' for backward-compatible bug fixes for… 6 --> 7 …e your commits well-organized and [atomic](https://en.wikipedia.org/wiki/Atomic_commit#Atomic_comm… 8 Check that tests (including "examples") pass using `make prove-all`. 9 If adding a new feature, please add or extend a test so that your new feature is tested. 12 …efficiency of reviewing and facilitates use of [`git bisect`](https://git-scm.com/docs/git-bisect). 15 It is useful to create a WIP (work in progress) pull request for any long-running development so th… 17 Write commit messages for a reviewer of your pull request and for a future developer (maybe you) th… 20 …-by: Helpful User <helpful@example.com>` or [`Co-authored-by: Snippet Mentor <code.by@comment.com>… [all …]
|
| /libCEED/examples/rust/ex3-volume/src/ |
| H A D | main.rs | 1 // Copyright (c) 2017-2026, Lawrence Livermore National Security, LLC and other CEED contributors. 2 // All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 4 // SPDX-License-Identifier: BSD-2-Clause 10 // This example illustrates a simple usage of libCEED to compute the volume of a 11 // 3D body using matrix-free application of a mass + diff operator. Arbitrary 14 // The example has no dependencies, and is designed to be self-contained. For 18 // All libCEED objects use a Ceed device object constructed based on a command 19 // line argument (-ceed). 28 // ---------------------------------------------------------------------------- 30 // ---------------------------------------------------------------------------- [all …]
|
| /libCEED/examples/rust/ex3-volume-vector/src/ |
| H A D | main.rs | 1 // Copyright (c) 2017-2026, Lawrence Livermore National Security, LLC and other CEED contributors. 2 // All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 4 // SPDX-License-Identifier: BSD-2-Clause 10 // This example illustrates a simple usage of libCEED to compute the volume of a 11 // 3D body using matrix-free application of a mass + diff operator. Arbitrary 13 // This calculation is executed in triplicate with a 3 component vector system. 15 // The example has no dependencies, and is designed to be self-contained. For 19 // All libCEED objects use a Ceed device object constructed based on a command 20 // line argument (-ceed). 29 // ---------------------------------------------------------------------------- [all …]
|
| /libCEED/examples/rust/ex2-surface-vector/src/ |
| H A D | main.rs | 1 // Copyright (c) 2017-2026, Lawrence Livermore National Security, LLC and other CEED contributors. 2 // All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 4 // SPDX-License-Identifier: BSD-2-Clause 10 // This example illustrates a simple usage of libCEED to compute the surface 11 // area of a 3D body using matrix-free application of a diffusion operator. 13 // same code. This calculation is executed in triplicate with a 3 component 16 // The example has no dependencies, and is designed to be self-contained. For 20 // All libCEED objects use a Ceed device object constructed based on a command 21 // line argument (-ceed). 30 // ---------------------------------------------------------------------------- [all …]
|
| /libCEED/examples/rust/ex2-surface/src/ |
| H A D | main.rs | 1 // Copyright (c) 2017-2026, Lawrence Livermore National Security, LLC and other CEED contributors. 2 // All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 4 // SPDX-License-Identifier: BSD-2-Clause 10 // This example illustrates a simple usage of libCEED to compute the surface 11 // area of a 3D body using matrix-free application of a diffusion operator. 15 // The example has no dependencies, and is designed to be self-contained. For 19 // All libCEED objects use a Ceed device object constructed based on a command 20 // line argument (-ceed). 29 // ---------------------------------------------------------------------------- 31 // ---------------------------------------------------------------------------- [all …]
|
| /libCEED/julia/LibCEED.jl/src/ |
| H A D | UserQFunction.jl | 43 i_inout = (i <= n_in) ? i : i - n_in 44 dims = (i <= n_in) ? dims_in[i] : dims_out[i-n_in] 98 "/gpu/cuda/gen is not compatible with user Q-functions defined with ", 99 "libCEED.jl.\nPlease use a different backend, for example: /gpu/cuda/shared ", 121 "User Q-functions with CUDA backends require the CUDA.jl package to be ", 146 for a ∈ args[1:end-1] 147 if Meta.isexpr(a, :(=)) 148 a1 = Meta.quot(a.args[1]) 149 a2 = esc(a.args[2]) 151 elseif Meta.isexpr(a, :tuple) [all …]
|
| /libCEED/examples/fluids/ |
| H A D | index.md | 1 (example-petsc-navier-stokes)= 3 # Compressible Navier-Stokes mini-app 6 …-dependent Navier-Stokes equations of compressible gas dynamics in a static Eulerian three-dimensi… 7 Moreover, the Navier-Stokes example has been developed using PETSc, so that the pointwise physics (… 9 ## Running the mini-app 12 :start-after: <!-- fluids-inclusion --> 14 ## The Navier-Stokes equations 17 The compressible Navier-Stokes equations in conservative form are 22 …abla \cdot \left( \frac{\bm{U} \otimes \bm{U}}{\rho} + P \bm{I}_3 -\bm\sigma \right) - \rho \bm{b}… 23 …t} + \nabla \cdot \left( \frac{(E + P)\bm{U}}{\rho} -\bm{u} \cdot \bm{\sigma} - k \nabla T \right)… [all …]
|
| /libCEED/include/ceed/ |
| H A D | deprecated.h | 1 /// Copyright (c) 2017-2026, Lawrence Livermore National Security, LLC and other CEED contributors. 2 /// All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 4 /// SPDX-License-Identifier: BSD-2-Clause 22 …ic inline int CeedCompositeOperatorCreate(Ceed a, CeedOperator *b) { return CeedOperatorCreateComp… in CeedCompositeOperatorCreate() argument 24 …ne int CeedCompositeOperatorAddSub(CeedOperator a, CeedOperator b) { return CeedOperatorCompositeA… in CeedCompositeOperatorAddSub() argument 26 …int CeedCompositeOperatorGetNumSub(CeedOperator a, CeedInt *b) { return CeedOperatorCompositeGetNu… in CeedCompositeOperatorGetNumSub() argument 28 …CeedCompositeOperatorGetSubList(CeedOperator a, CeedOperator **b) { return CeedOperatorCompositeGe… in CeedCompositeOperatorGetSubList() argument 30 static inline int CeedCompositeOperatorGetSubByName(CeedOperator a, const char *b, CeedOperator *c)… in CeedCompositeOperatorGetSubByName() argument 31 return CeedOperatorCompositeGetSubByName(a, b, c); in CeedCompositeOperatorGetSubByName() 34 static inline int CeedCompositeOperatorGetMultiplicity(CeedOperator a, CeedInt b, CeedInt *c, CeedV… in CeedCompositeOperatorGetMultiplicity() argument [all …]
|
| /libCEED/python/tests/ |
| H A D | test-1-vector.py | 1 # Copyright (c) 2017-2026, Lawrence Livermore National Security, LLC and other CEED contributors 2 # All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 4 # SPDX-License-Identifier: BSD-2-Clause 18 # ------------------------------------------------------------------------------- 20 # ------------------------------------------------------------------------------- 28 # ------------------------------------------------------------------------------- 29 # Test creation, setting, reading, restoring, and destroying of a vector 30 # ------------------------------------------------------------------------------- 39 a = np.arange(10, 10 + n, dtype=ceed.scalar_type()) 40 x.set_array(a, cmode=libceed.USE_POINTER) [all …]
|