BELFEM
0.9.0
Berkeley Lab Finite Element Framework
Toggle main menu visibility
Loading...
Searching...
No Matches
fn_TR_contract42_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_TR_CONTRACT42_BLAZE_HPP
13
#define BELFEM_TR_CONTRACT42_BLAZE_HPP
14
15
#include "
cl_Matrix.hpp
"
16
namespace
belfem
17
{
18
namespace
tensor
19
{
20
//----------------------------------------------------------------------------
21
25
template
<
typename
T >
26
inline
void
27
contract42
(
const
T * A,
const
Matrix< T > & B, Matrix< T > & C )
28
{
29
C
( 0, 0 ) = A[ 0 ] *
B
( 0, 0 )
30
+ A[ 9 ] *
B
( 1, 0 )
31
+ A[ 18 ] *
B
( 2, 0 )
32
+ A[ 27 ] *
B
( 0, 1 )
33
+ A[ 36 ] *
B
( 1, 1 )
34
+ A[ 45 ] *
B
( 2, 1 )
35
+ A[ 54 ] *
B
( 0, 2 )
36
+ A[ 63 ] *
B
( 1, 2 )
37
+ A[ 72 ] *
B
( 2, 2 );
38
39
C
( 1, 0 ) = A[ 1 ] *
B
( 0, 0 )
40
+ A[ 10 ] *
B
( 1, 0 )
41
+ A[ 19 ] *
B
( 2, 0 )
42
+ A[ 28 ] *
B
( 0, 1 )
43
+ A[ 37 ] *
B
( 1, 1 )
44
+ A[ 46 ] *
B
( 2, 1 )
45
+ A[ 55 ] *
B
( 0, 2 )
46
+ A[ 64 ] *
B
( 1, 2 )
47
+ A[ 73 ] *
B
( 2, 2 );
48
49
C
( 2, 0 ) = A[ 2 ] *
B
( 0, 0 )
50
+ A[ 11 ] *
B
( 1, 0 )
51
+ A[ 20 ] *
B
( 2, 0 )
52
+ A[ 29 ] *
B
( 0, 1 )
53
+ A[ 38 ] *
B
( 1, 1 )
54
+ A[ 47 ] *
B
( 2, 1 )
55
+ A[ 56 ] *
B
( 0, 2 )
56
+ A[ 65 ] *
B
( 1, 2 )
57
+ A[ 74 ] *
B
( 2, 2 );
58
59
C
( 0, 1 ) = A[ 3 ] *
B
( 0, 0 )
60
+ A[ 12 ] *
B
( 1, 0 )
61
+ A[ 21 ] *
B
( 2, 0 )
62
+ A[ 30 ] *
B
( 0, 1 )
63
+ A[ 39 ] *
B
( 1, 1 )
64
+ A[ 48 ] *
B
( 2, 1 )
65
+ A[ 57 ] *
B
( 0, 2 )
66
+ A[ 66 ] *
B
( 1, 2 )
67
+ A[ 75 ] *
B
( 2, 2 );
68
69
C
( 1, 1 ) = A[ 4 ] *
B
( 0, 0 )
70
+ A[ 13 ] *
B
( 1, 0 )
71
+ A[ 22 ] *
B
( 2, 0 )
72
+ A[ 31 ] *
B
( 0, 1 )
73
+ A[ 40 ] *
B
( 1, 1 )
74
+ A[ 49 ] *
B
( 2, 1 )
75
+ A[ 58 ] *
B
( 0, 2 )
76
+ A[ 67 ] *
B
( 1, 2 )
77
+ A[ 76 ] *
B
( 2, 2 );
78
79
C
( 2, 1 )= A[ 5 ] *
B
( 0, 0 )
80
+ A[ 14 ] *
B
( 1, 0 )
81
+ A[ 23 ] *
B
( 2, 0 )
82
+ A[ 32 ] *
B
( 0, 1 )
83
+ A[ 41 ] *
B
( 1, 1 )
84
+ A[ 50 ] *
B
( 2, 1 )
85
+ A[ 59 ] *
B
( 0, 2 )
86
+ A[ 68 ] *
B
( 1, 2 )
87
+ A[ 77 ] *
B
( 2, 2 );
88
89
C
( 0, 2 ) = A[ 6 ] *
B
( 0, 0 )
90
+ A[ 15 ] *
B
( 1, 0 )
91
+ A[ 24 ] *
B
( 2, 0 )
92
+ A[ 33 ] *
B
( 0, 1 )
93
+ A[ 42 ] *
B
( 1, 1 )
94
+ A[ 51 ] *
B
( 2, 1 )
95
+ A[ 60 ] *
B
( 0, 2 )
96
+ A[ 69 ] *
B
( 1, 2 )
97
+ A[ 78 ] *
B
( 2, 2 );
98
99
C
( 1, 2 ) = A[ 7 ] *
B
( 0, 0 )
100
+ A[ 16 ] *
B
( 1, 0 )
101
+ A[ 25 ] *
B
( 2, 0 )
102
+ A[ 34 ] *
B
( 0, 1 )
103
+ A[ 43 ] *
B
( 1, 1 )
104
+ A[ 52 ] *
B
( 2, 1 )
105
+ A[ 61 ] *
B
( 0, 2 )
106
+ A[ 70 ] *
B
( 1, 2 )
107
+ A[ 79 ] *
B
( 2, 2 );
108
109
C
( 2, 2 ) = A[ 8 ] *
B
( 0, 0 )
110
+ A[ 17 ] *
B
( 1, 0 )
111
+ A[ 26 ] *
B
( 2, 0 )
112
+ A[ 35 ] *
B
( 0, 1 )
113
+ A[ 44 ] *
B
( 1, 1 )
114
+ A[ 53 ] *
B
( 2, 1 )
115
+ A[ 62 ] *
B
( 0, 2 )
116
+ A[ 71 ] *
B
( 1, 2 )
117
+ A[ 80 ] *
B
( 2, 2 );
118
}
119
//----------------------------------------------------------------------------
120
}
/* namespace tensor */
121
}
/* namespace belfem */
122
#endif
//BELFEM_FN_TR_CONTRACT42_BLAZE_HPP
cl_Matrix.hpp
belfem::tensor
Definition
fn_TR_contract42_arma.hpp:21
belfem::tensor::contract42
void contract42(const T *A, const T *B, T *C)
tensor contraction A_ijkl * B_kl = C_ij
Definition
fn_TR_contract42_arma.hpp:28
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_contract42_blaze.hpp
Generated by
1.18.0