BELFEM
0.9.0
Berkeley Lab Finite Element Framework
Toggle main menu visibility
Loading...
Searching...
No Matches
fn_TR_kelvin_christoffel_blaze.hpp
Go to the documentation of this file.
1
/*
2
* BELFEM -- The Berkeley Lab Finite Element Framework
3
* Copyright (c) 2026, The Regents of the University of California,
4
* through Lawrence Berkeley National Laboratory (subject to receipt of any required
5
* approvals from the U.S. Dept. of Energy). All rights reserved.
6
*
7
* Developers: Christian Messe, Gregory Giard
8
*
9
* See the top-level LICENSE file for the complete license and disclaimer.
10
*/
11
12
#ifndef BELFEM_FN_TR_KELVIN_CHRISTOFFEL_BLAZE_HPP
13
#define BELFEM_FN_TR_KELVIN_CHRISTOFFEL_BLAZE_HPP
14
15
#include "
cl_Vector.hpp
"
16
#include "
cl_Matrix.hpp
"
17
18
namespace
belfem
19
{
20
namespace
tensor
21
{
22
//----------------------------------------------------------------------------
23
24
template
<
typename
T >
25
void
26
kelvin_christoffel
(
const
T * A,
const
Vector< T > & B, Matrix< T > & C )
27
{
28
C
( 0, 0 ) =
B
( 0 ) * (
B
( 0 ) * A[ 0 ] +
B
( 1 ) * A[ 27 ] +
B
( 2 ) * A[ 54 ] )
29
+
B
( 1 ) * (
B
( 0 ) * A[ 3 ] +
B
( 1 ) * A[ 30 ] +
B
( 2 ) * A[ 57 ] )
30
+
B
( 2 ) * (
B
( 0 ) * A[ 6 ] +
B
( 1 ) * A[ 33 ] +
B
( 2 ) * A[ 60 ] );
31
C
( 1, 0 ) =
B
( 0 ) * (
B
( 0 ) * A[ 1 ] +
B
( 1 ) * A[ 28 ] +
B
( 2 ) * A[ 55 ] )
32
+
B
( 1 ) * (
B
( 0 ) * A[ 4 ] +
B
( 1 ) * A[ 31 ] +
B
( 2 ) * A[ 58 ] )
33
+
B
( 2 ) * (
B
( 0 ) * A[ 7 ] +
B
( 1 ) * A[ 34 ] +
B
( 2 ) * A[ 61 ] );
34
C
( 2, 0 ) =
B
( 0 ) * (
B
( 0 ) * A[ 2 ] +
B
( 1 ) * A[ 29 ] +
B
( 2 ) * A[ 56 ] )
35
+
B
( 1 ) * (
B
( 0 ) * A[ 5 ] +
B
( 1 ) * A[ 32 ] +
B
( 2 ) * A[ 59 ] )
36
+
B
( 2 ) * (
B
( 0 ) * A[ 8 ] +
B
( 1 ) * A[ 35 ] +
B
( 2 ) * A[ 62 ] );
37
C
( 0, 1 ) =
B
( 0 ) * (
B
( 0 ) * A[ 9 ] +
B
( 1 ) * A[ 36 ] +
B
( 2 ) * A[ 63 ] )
38
+
B
( 1 ) * (
B
( 0 ) * A[ 12 ] +
B
( 1 ) * A[ 39 ] +
B
( 2 ) * A[ 66 ] )
39
+
B
( 2 ) * (
B
( 0 ) * A[ 15 ] +
B
( 1 ) * A[ 42 ] +
B
( 2 ) * A[ 69 ] );
40
C
( 1, 1 ) =
B
( 0 ) * (
B
( 0 ) * A[ 10 ] +
B
( 1 ) * A[ 37 ] +
B
( 2 ) * A[ 64 ] )
41
+
B
( 1 ) * (
B
( 0 ) * A[ 13 ] +
B
( 1 ) * A[ 40 ] +
B
( 2 ) * A[ 67 ] )
42
+
B
( 2 ) * (
B
( 0 ) * A[ 16 ] +
B
( 1 ) * A[ 43 ] +
B
( 2 ) * A[ 70 ] );
43
C
( 2, 1 ) =
B
( 0 ) * (
B
( 0 ) * A[ 11 ] +
B
( 1 ) * A[ 38 ] +
B
( 2 ) * A[ 65 ] )
44
+
B
( 1 ) * (
B
( 0 ) * A[ 14 ] +
B
( 1 ) * A[ 41 ] +
B
( 2 ) * A[ 68 ] )
45
+
B
( 2 ) * (
B
( 0 ) * A[ 17 ] +
B
( 1 ) * A[ 44 ] +
B
( 2 ) * A[ 71 ] );
46
C
( 0, 2 ) =
B
( 0 ) * (
B
( 0 ) * A[ 18 ] +
B
( 1 ) * A[ 45 ] +
B
( 2 ) * A[ 72 ] )
47
+
B
( 1 ) * (
B
( 0 ) * A[ 21 ] +
B
( 1 ) * A[ 48 ] +
B
( 2 ) * A[ 75 ] )
48
+
B
( 2 ) * (
B
( 0 ) * A[ 24 ] +
B
( 1 ) * A[ 51 ] +
B
( 2 ) * A[ 78 ] );
49
C
( 1, 2 ) =
B
( 0 ) * (
B
( 0 ) * A[ 19 ] +
B
( 1 ) * A[ 46 ] +
B
( 2 ) * A[ 73 ] )
50
+
B
( 1 ) * (
B
( 0 ) * A[ 22 ] +
B
( 1 ) * A[ 49 ] +
B
( 2 ) * A[ 76 ] )
51
+
B
( 2 ) * (
B
( 0 ) * A[ 25 ] +
B
( 1 ) * A[ 52 ] +
B
( 2 ) * A[ 79 ] );
52
C
( 2, 2 ) =
B
( 0 ) * (
B
( 0 ) * A[ 20 ] +
B
( 1 ) * A[ 47 ] +
B
( 2 ) * A[ 74 ] )
53
+
B
( 1 ) * (
B
( 0 ) * A[ 23 ] +
B
( 1 ) * A[ 50 ] +
B
( 2 ) * A[ 77 ] )
54
+
B
( 2 ) * (
B
( 0 ) * A[ 26 ] +
B
( 1 ) * A[ 53 ] +
B
( 2 ) * A[ 80 ] );
55
}
56
57
//----------------------------------------------------------------------------
58
}
59
}
60
#endif
//BELFEM_FN_TR_KELVIN_CHRISTOFFEL_BLAZE_HPP
cl_Matrix.hpp
cl_Vector.hpp
belfem::tensor
Definition
fn_TR_contract42_arma.hpp:21
belfem::tensor::kelvin_christoffel
void kelvin_christoffel(const T *A, const T *B, T *C)
C_ik = A_ijkl * B_j * B_l.
Definition
fn_TR_kelvin_christoffel_arma.hpp:29
belfem
USER GUIDES:
Definition
cl_Capacitor.cpp:16
corc.tests.test_curve_frame.C
C
Definition
test_curve_frame.py:49
corc.tests.test_twist_crosscheck.B
B
Definition
test_twist_crosscheck.py:30
src
math
tensor
blaze
fn_TR_kelvin_christoffel_blaze.hpp
Generated by
1.18.0