Lines Matching +full:- +full:a
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 // ----------------------------------------------------------------------------
31 // ----------------------------------------------------------------------------
32 fn main() -> libceed::Result<()> { in main()
39 fn example_3_vector(options: opt::Opt) -> libceed::Result<()> { in example_3_vector()
70 println!(" Ceed specification [-c] : {}", ceed_spec); in example_3_vector()
71 println!(" Mesh dimension [-d] : {}", dim); in example_3_vector()
72 println!(" Mesh degree [-m] : {}", mesh_degree); in example_3_vector()
73 println!(" Solution degree [-p] : {}", solution_degree); in example_3_vector()
74 println!(" Num. 1D quadr. pts [-q] : {}", num_qpts); in example_3_vector()
75 println!(" Approx. # unknowns [-s] : {}", problem_size); in example_3_vector()
132 // Create a Vector with the mesh coordinates in example_3_vector()
135 // Apply a transformation to the mesh coordinates in example_3_vector()
139 // -- QFunction from user closure in example_3_vector()
161 qdata[i + q * 0] = weights[i] * (j11 * j22 - j21 * j12); in example_3_vector()
163 let qw = weights[i] / (j11 * j22 - j21 * j12); in example_3_vector()
166 qdata[i + q * 3] = -qw * (j11 * j12 + j21 * j22); in example_3_vector()
172 let mut a = [0.0; 9]; in example_3_vector() localVariable
175 a[k * 3 + j] = jacobian[i + q * ((j + 1) % 3 + 3 * ((k + 1) % 3))] in example_3_vector()
177 - jacobian[i + q * ((j + 1) % 3 + 3 * ((k + 2) % 3))] in example_3_vector()
183 * (jacobian[i + q * 0] * a[0 * 3 + 0] in example_3_vector()
184 + jacobian[i + q * 1] * a[0 * 3 + 1] in example_3_vector()
185 + jacobian[i + q * 2] * a[0 * 3 + 2]); in example_3_vector()
187 / (jacobian[i + q * 0] * a[0 * 3 + 0] in example_3_vector()
188 + jacobian[i + q * 1] * a[0 * 3 + 1] in example_3_vector()
189 + jacobian[i + q * 2] * a[0 * 3 + 2]); in example_3_vector()
192 * (a[0 * 3 + 0] * a[0 * 3 + 0] in example_3_vector()
193 + a[0 * 3 + 1] * a[0 * 3 + 1] in example_3_vector()
194 + a[0 * 3 + 2] * a[0 * 3 + 2]); in example_3_vector()
196 * (a[1 * 3 + 0] * a[1 * 3 + 0] in example_3_vector()
197 + a[1 * 3 + 1] * a[1 * 3 + 1] in example_3_vector()
198 + a[1 * 3 + 2] * a[1 * 3 + 2]); in example_3_vector()
200 * (a[2 * 3 + 0] * a[2 * 3 + 0] in example_3_vector()
201 + a[2 * 3 + 1] * a[2 * 3 + 1] in example_3_vector()
202 + a[2 * 3 + 2] * a[2 * 3 + 2]); in example_3_vector()
204 * (a[1 * 3 + 0] * a[2 * 3 + 0] in example_3_vector()
205 + a[1 * 3 + 1] * a[2 * 3 + 1] in example_3_vector()
206 + a[1 * 3 + 2] * a[2 * 3 + 2]); in example_3_vector()
208 * (a[0 * 3 + 0] * a[2 * 3 + 0] in example_3_vector()
209 + a[0 * 3 + 1] * a[2 * 3 + 1] in example_3_vector()
210 + a[0 * 3 + 2] * a[2 * 3 + 2]); in example_3_vector()
212 * (a[0 * 3 + 0] * a[1 * 3 + 0] in example_3_vector()
213 + a[0 * 3 + 1] * a[1 * 3 + 1] in example_3_vector()
214 + a[0 * 3 + 2] * a[1 * 3 + 2]); in example_3_vector()
228 // -- QFunction for use with Operator in example_3_vector()
252 // -- QFunction from user closure in example_3_vector()
325 // -- QFunction for use with Operator in example_3_vector()
365 volume - exact_volume in example_3_vector()
370 _ => 1E-5, in example_3_vector()
372 let error = (volume - exact_volume).abs(); in example_3_vector()
377 "Volume error too large - expected: {:.12e}, actual: {:.12e}", in example_3_vector()
385 // ----------------------------------------------------------------------------
387 // ----------------------------------------------------------------------------
400 problem_size_requested: -1, in example_3_vector_1d()
415 problem_size_requested: -1, in example_3_vector_2d()
430 problem_size_requested: -1, in example_3_vector_vector_3d()
438 // ----------------------------------------------------------------------------