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