BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
fn_hessian.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, through
4 * 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_HESSIAN_HPP
13#define BELFEM_FN_HESSIAN_HPP
14
15#include "typedefs.hpp"
16#include "cl_Vector.hpp"
17#include "cl_Matrix.hpp"
18
19namespace belfem
20{
21//------------------------------------------------------------------------------
22
59 template < typename T >
60 void
61 hessian( const Matrix< T > & J, const Matrix< T > & K, Matrix< T > & H )
62 {
63 H.set_size( 9,9 );
64
65 H( 0, 0 ) = J( 0, 0 );
66 H( 1, 0 ) = J( 1, 0 );
67 H( 2, 0 ) = J( 2, 0 );
68
69 H( 3, 0 ) = K( 0, 0 );
70 H( 4, 0 ) = K( 1, 0 );
71 H( 5, 0 ) = K( 2, 0 );
72
73 H( 6, 0 ) = K( 3, 0 );
74 H( 7, 0 ) = K( 4, 0 );
75 H( 8, 0 ) = K( 5, 0 );
76
77 H( 0, 1 ) = J( 0, 1 );
78 H( 1, 1 ) = J( 1, 1 );
79 H( 2, 1 ) = J( 2, 1 );
80
81 H( 3, 1 ) = K( 0, 1 );
82 H( 4, 1 ) = K( 1, 1 );
83 H( 5, 1 ) = K( 2, 1 );
84
85 H( 6, 1 ) = K( 3, 1 );
86 H( 7, 1 ) = K( 4, 1 );
87 H( 8, 1 ) = K( 5, 1 );
88
89 H( 0, 2 ) = J( 0, 2 );
90 H( 1, 2 ) = J( 1, 2 );
91 H( 2, 2 ) = J( 2, 2 );
92
93 H( 3, 2 ) = K( 0, 2 );
94 H( 4, 2 ) = K( 1, 2 );
95 H( 5, 2 ) = K( 2, 2 );
96
97 H( 6, 2 ) = K( 3, 2 );
98 H( 7, 2 ) = K( 4, 2 );
99 H( 8, 2 ) = K( 5, 2 );
100
101 H( 0, 3 ) = 0. ;
102 H( 1, 3 ) = 0. ;
103 H( 2, 3 ) = 0. ;
104
105 H( 3, 3 ) = J( 0, 0 ) * J( 0, 0 ) ;
106 H( 4, 3 ) = J( 1, 0 ) * J( 1, 0 ) ;
107 H( 5, 3 ) = J( 2, 0 ) * J( 2, 0 ) ;
108
109 H( 6, 3 ) = J( 1, 0 ) * J( 2, 0 ) ;
110 H( 7, 3 ) = J( 0, 0 ) * J( 2, 0 ) ;
111 H( 8, 3 ) = J( 0, 0 ) * J( 1, 0 ) ;
112
113 H( 0, 4 ) = 0. ;
114 H( 1, 4 ) = 0. ;
115 H( 2, 4 ) = 0. ;
116
117 H( 3, 4 ) = J( 0, 1 ) * J( 0, 1 ) ;
118 H( 4, 4 ) = J( 1, 1 ) * J( 1, 1 ) ;
119 H( 5, 4 ) = J( 2, 1 ) * J( 2, 1 ) ;
120
121 H( 6, 4 ) = J( 1, 1 ) * J( 2, 1 ) ;
122 H( 7, 4 ) = J( 2, 1 ) * J( 0, 1 ) ;
123 H( 8, 4 ) = J( 0, 1 ) * J( 1, 1 ) ;
124
125 H( 0, 5 ) = 0. ;
126 H( 1, 5 ) = 0. ;
127 H( 2, 5 ) = 0. ;
128
129 H( 3, 5 ) = J( 0, 2 ) * J( 0, 2 ) ;
130 H( 4, 5 ) = J( 1, 2 ) * J( 1, 2 ) ;
131 H( 5, 5 ) = J( 2, 2 ) * J( 2, 2 ) ;
132
133 H( 6, 5 ) = J( 1, 2 ) * J( 2, 2 ) ;
134 H( 7, 5 ) = J( 2, 2 ) * J( 0, 2 ) ;
135 H( 8, 5 ) = J( 0, 2 ) * J( 1, 2 ) ;
136
137 H( 0, 6 ) = 0. ;
138 H( 1, 6 ) = 0. ;
139 H( 2, 6 ) = 0. ;
140
141 H( 3, 6 ) = 2. * J(0,1 ) * J ( 0, 2 ) ;
142 H( 4, 6 ) = 2. * J(1,1 ) * J ( 1, 2 ) ;
143 H( 5, 6 ) = 2. * J(2,1 ) * J ( 2, 2 ) ;
144
145 H( 6, 6 ) = J(1,1 ) * J ( 2, 2 ) + J(2,1 ) * J ( 1, 2 );
146 H( 7, 6 ) = J(0,1 ) * J ( 2, 2 ) + J(2,1 ) * J ( 0, 2 );
147 H( 8, 6 ) = J(0,1 ) * J ( 1, 2 ) + J(1,1 ) * J ( 0, 2 );
148
149 H( 0, 7 ) = 0. ;
150 H( 1, 7 ) = 0. ;
151 H( 2, 7 ) = 0. ;
152
153 H( 3, 7 ) = 2. * J(0,0 ) * J ( 0, 2 ) ;
154 H( 4, 7 ) = 2. * J(1,0 ) * J ( 1, 2 ) ;
155 H( 5, 7 ) = 2. * J(2,0 ) * J ( 2, 2 ) ;
156
157 H( 6, 7 ) = J(1,0 ) * J ( 2, 2 ) + J(2,0 ) * J ( 1, 2 );
158 H( 7, 7 ) = J(0,0 ) * J ( 2, 2 ) + J(2,0 ) * J ( 0, 2 );
159 H( 8, 7 ) = J(0,0 ) * J ( 1, 2 ) + J(1,0 ) * J ( 0, 2 );
160
161 H( 0, 8 ) = 0. ;
162 H( 1, 8 ) = 0. ;
163 H( 2, 8 ) = 0. ;
164
165 H( 3, 8 ) = 2. * J(0,0 ) * J ( 0, 1 ) ;
166 H( 4, 8 ) = 2. * J(1,0 ) * J ( 1, 1 ) ;
167 H( 5, 8 ) = 2. * J(2,0 ) * J ( 2, 1 ) ;
168
169 H( 6, 8 ) = J(1,0 ) * J ( 2, 1 ) + J(2,0 ) * J ( 1, 1 );
170 H( 7, 8 ) = J(0,0 ) * J ( 2, 1 ) + J(2,0 ) * J ( 0, 1 );
171 H( 8, 8 ) = J(0,0 ) * J ( 1, 1 ) + J(1,0 ) * J ( 0, 1 );
172
173 }
174}
175#endif //BELFEM_FN_HESSIAN_HPP
Dense column-major matrix.
Definition cl_BZ_Matrix.hpp:28
USER GUIDES:
Definition cl_Capacitor.cpp:16
void hessian(const Matrix< T > &J, const Matrix< T > &K, Matrix< T > &H)
Assemble the 9x9 chain-rule matrix H that maps physical first and second shape-function derivatives o...
Definition fn_hessian.hpp:61