BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
fn_TR_mat_to_ten.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_MAT_TO_TEN_HPP
13#define BELFEM_FN_TR_MAT_TO_TEN_HPP
14
15#include "cl_Matrix.hpp"
16namespace belfem
17{
18 namespace tensor
19 {
20//----------------------------------------------------------------------------
21
26 template < typename T > void
27 mat_to_ten( const T * C, T * A )
28 {
29 A[ 0 ] = C[ 0 ];
30 A[ 1 ] = C[ 5 ];
31 A[ 2 ] = C[ 4 ];
32 A[ 3 ] = C[ 5 ];
33 A[ 4 ] = C[ 1 ];
34 A[ 5 ] = C[ 3 ];
35 A[ 6 ] = C[ 4 ];
36 A[ 7 ] = C[ 3 ];
37 A[ 8 ] = C[ 2 ];
38 A[ 9 ] = C[ 30 ];
39 A[ 10 ] = C[ 35 ];
40 A[ 11 ] = C[ 34 ];
41 A[ 12 ] = C[ 35 ];
42 A[ 13 ] = C[ 31 ];
43 A[ 14 ] = C[ 33 ];
44 A[ 15 ] = C[ 34 ];
45 A[ 16 ] = C[ 33 ];
46 A[ 17 ] = C[ 32 ];
47 A[ 18 ] = C[ 24 ];
48 A[ 19 ] = C[ 29 ];
49 A[ 20 ] = C[ 28 ];
50 A[ 21 ] = C[ 29 ];
51 A[ 22 ] = C[ 25 ];
52 A[ 23 ] = C[ 27 ];
53 A[ 24 ] = C[ 28 ];
54 A[ 25 ] = C[ 27 ];
55 A[ 26 ] = C[ 26 ];
56 A[ 27 ] = C[ 30 ];
57 A[ 28 ] = C[ 35 ];
58 A[ 29 ] = C[ 34 ];
59 A[ 30 ] = C[ 35 ];
60 A[ 31 ] = C[ 31 ];
61 A[ 32 ] = C[ 33 ];
62 A[ 33 ] = C[ 34 ];
63 A[ 34 ] = C[ 33 ];
64 A[ 35 ] = C[ 32 ];
65 A[ 36 ] = C[ 6 ];
66 A[ 37 ] = C[ 11 ];
67 A[ 38 ] = C[ 10 ];
68 A[ 39 ] = C[ 11 ];
69 A[ 40 ] = C[ 7 ];
70 A[ 41 ] = C[ 9 ];
71 A[ 42 ] = C[ 10 ];
72 A[ 43 ] = C[ 9 ];
73 A[ 44 ] = C[ 8 ];
74 A[ 45 ] = C[ 18 ];
75 A[ 46 ] = C[ 23 ];
76 A[ 47 ] = C[ 22 ];
77 A[ 48 ] = C[ 23 ];
78 A[ 49 ] = C[ 19 ];
79 A[ 50 ] = C[ 21 ];
80 A[ 51 ] = C[ 22 ];
81 A[ 52 ] = C[ 21 ];
82 A[ 53 ] = C[ 20 ];
83 A[ 54 ] = C[ 24 ];
84 A[ 55 ] = C[ 29 ];
85 A[ 56 ] = C[ 28 ];
86 A[ 57 ] = C[ 29 ];
87 A[ 58 ] = C[ 25 ];
88 A[ 59 ] = C[ 27 ];
89 A[ 60 ] = C[ 28 ];
90 A[ 61 ] = C[ 27 ];
91 A[ 62 ] = C[ 26 ];
92 A[ 63 ] = C[ 18 ];
93 A[ 64 ] = C[ 23 ];
94 A[ 65 ] = C[ 22 ];
95 A[ 66 ] = C[ 23 ];
96 A[ 67 ] = C[ 19 ];
97 A[ 68 ] = C[ 21 ];
98 A[ 69 ] = C[ 22 ];
99 A[ 70 ] = C[ 21 ];
100 A[ 71 ] = C[ 20 ];
101 A[ 72 ] = C[ 12 ];
102 A[ 73 ] = C[ 17 ];
103 A[ 74 ] = C[ 16 ];
104 A[ 75 ] = C[ 17 ];
105 A[ 76 ] = C[ 13 ];
106 A[ 77 ] = C[ 15 ];
107 A[ 78 ] = C[ 16 ];
108 A[ 79 ] = C[ 15 ];
109 A[ 80 ] = C[ 14 ];
110 }
111
112//----------------------------------------------------------------------------
113
114 template < typename T > void
115 mat_to_ten( const Matrix< T > & C , T * A )
116 {
117#ifdef BELFEM_ARMADILLO
118 mat_to_ten( C.data(), A );
119#else
120 A[ 0 ] = C( 0, 0 );
121 A[ 1 ] = C( 5, 0 );
122 A[ 2 ] = C( 4, 0 );
123 A[ 3 ] = C( 5, 0 );
124 A[ 4 ] = C( 1, 0 );
125 A[ 5 ] = C( 3, 0 );
126 A[ 6 ] = C( 4, 0 );
127 A[ 7 ] = C( 3, 0 );
128 A[ 8 ] = C( 2, 0 );
129 A[ 9 ] = C( 0, 5 );
130 A[ 10 ] = C( 5, 5 );
131 A[ 11 ] = C( 4, 5 );
132 A[ 12 ] = C( 5, 5 );
133 A[ 13 ] = C( 1, 5 );
134 A[ 14 ] = C( 3, 5 );
135 A[ 15 ] = C( 4, 5 );
136 A[ 16 ] = C( 3, 5 );
137 A[ 17 ] = C( 2, 5 );
138 A[ 18 ] = C( 0, 4 );
139 A[ 19 ] = C( 5, 4 );
140 A[ 20 ] = C( 4, 4 );
141 A[ 21 ] = C( 5, 4 );
142 A[ 22 ] = C( 1, 4 );
143 A[ 23 ] = C( 3, 4 );
144 A[ 24 ] = C( 4, 4 );
145 A[ 25 ] = C( 3, 4 );
146 A[ 26 ] = C( 2, 4 );
147 A[ 27 ] = C( 0, 5 );
148 A[ 28 ] = C( 5, 5 );
149 A[ 29 ] = C( 4, 5 );
150 A[ 30 ] = C( 5, 5 );
151 A[ 31 ] = C( 1, 5 );
152 A[ 32 ] = C( 3, 5 );
153 A[ 33 ] = C( 4, 5 );
154 A[ 34 ] = C( 3, 5 );
155 A[ 35 ] = C( 2, 5 );
156 A[ 36 ] = C( 0, 1 );
157 A[ 37 ] = C( 5, 1 );
158 A[ 38 ] = C( 4, 1 );
159 A[ 39 ] = C( 5, 1 );
160 A[ 40 ] = C( 1, 1 );
161 A[ 41 ] = C( 3, 1 );
162 A[ 42 ] = C( 4, 1 );
163 A[ 43 ] = C( 3, 1 );
164 A[ 44 ] = C( 2, 1 );
165 A[ 45 ] = C( 0, 3 );
166 A[ 46 ] = C( 5, 3 );
167 A[ 47 ] = C( 4, 3 );
168 A[ 48 ] = C( 5, 3 );
169 A[ 49 ] = C( 1, 3 );
170 A[ 50 ] = C( 3, 3 );
171 A[ 51 ] = C( 4, 3 );
172 A[ 52 ] = C( 3, 3 );
173 A[ 53 ] = C( 2, 3 );
174 A[ 54 ] = C( 0, 4 );
175 A[ 55 ] = C( 5, 4 );
176 A[ 56 ] = C( 4, 4 );
177 A[ 57 ] = C( 5, 4 );
178 A[ 58 ] = C( 1, 4 );
179 A[ 59 ] = C( 3, 4 );
180 A[ 60 ] = C( 4, 4 );
181 A[ 61 ] = C( 3, 4 );
182 A[ 62 ] = C( 2, 4 );
183 A[ 63 ] = C( 0, 3 );
184 A[ 64 ] = C( 5, 3 );
185 A[ 65 ] = C( 4, 3 );
186 A[ 66 ] = C( 5, 3 );
187 A[ 67 ] = C( 1, 3 );
188 A[ 68 ] = C( 3, 3 );
189 A[ 69 ] = C( 4, 3 );
190 A[ 70 ] = C( 3, 3 );
191 A[ 71 ] = C( 2, 3 );
192 A[ 72 ] = C( 0, 2 );
193 A[ 73 ] = C( 5, 2 );
194 A[ 74 ] = C( 4, 2 );
195 A[ 75 ] = C( 5, 2 );
196 A[ 76 ] = C( 1, 2 );
197 A[ 77 ] = C( 3, 2 );
198 A[ 78 ] = C( 4, 2 );
199 A[ 79 ] = C( 3, 2 );
200 A[ 80 ] = C( 2, 2 );
201#endif
202 }
203 } /* namespace tensor */
204} /* namespace belfem */
205
206#endif //BELFEM_FN_TR_MAT_TO_TEN_HPP
Dense column-major matrix.
Definition cl_BZ_Matrix.hpp:28
Definition fn_TR_contract42_arma.hpp:21
void mat_to_ten(const T *C, T *A)
elasticity matrix conversion elasticity matrix C => tensor A
Definition fn_TR_mat_to_ten.hpp:27
USER GUIDES:
Definition cl_Capacitor.cpp:16