22 for(
int i = 0; i < npts; i++) {
24 const double u = GP[i].
pt[0];
25 const double v = GP[i].
pt[1];
26 const double w = GP[i].
pt[2];
27 const double weight = GP[i].
weight;
29 for(
int j = 0; j < nbSF; j++) {
38 d.
weight.push_back(weight);
50 int npts = d.
u.size();
53 double FACT =
_e / (1 +
_nu);
54 double C11 = FACT * (1 -
_nu) / (1 - 2 *
_nu);
55 double C12 = FACT *
_nu / (1 - 2 *
_nu);
56 double C44 = (C11 - C12) / 2;
57 const double C[6][6] = {{C11, C12, C12, 0, 0, 0}, {C12, C11, C12, 0, 0, 0},
58 {C12, C12, C11, 0, 0, 0}, {0, 0, 0, C44, 0, 0},
59 {0, 0, 0, 0, C44, 0}, {0, 0, 0, 0, 0, C44}};
65 for(
int i = 0; i < 6; i++)
66 for(
int j = 0; j < 6; j++) H(i, j) = C[i][j];
68 double jac[3][3], invjac[3][3], Grads[100][3];
69 for(
int i = 0; i < npts; i++) {
70 const double weight = d.
weight[i];
75 for(
int j = 0; j < nbSF; j++) {
76 Grads[j][0] = invjac[0][0] * grads(j, 0) + invjac[0][1] * grads(j, 1) +
77 invjac[0][2] * grads(j, 2);
78 Grads[j][1] = invjac[1][0] * grads(j, 0) + invjac[1][1] * grads(j, 1) +
79 invjac[1][2] * grads(j, 2);
80 Grads[j][2] = invjac[2][0] * grads(j, 0) + invjac[2][1] * grads(j, 1) +
81 invjac[2][2] * grads(j, 2);
88 for(
int j = 0; j < nbSF; j++) {
89 BT(j, 0) = B(0, j) = Grads[j][0];
90 BT(j, 3) = B(3, j) = Grads[j][1];
91 BT(j, 5) = B(5, j) = Grads[j][2];
93 BT(j + nbSF, 1) = B(1, j + nbSF) = Grads[j][1];
94 BT(j + nbSF, 3) = B(3, j + nbSF) = Grads[j][0];
95 BT(j + nbSF, 4) = B(4, j + nbSF) = Grads[j][2];
97 BT(j + 2 * nbSF, 2) = B(2, j + 2 * nbSF) = Grads[j][2];
98 BT(j + 2 * nbSF, 4) = B(4, j + 2 * nbSF) = Grads[j][1];
99 BT(j + 2 * nbSF, 5) = B(5, j + 2 * nbSF) = Grads[j][0];
123 m.
gemm(BTH, B, weight * detJ, 1.);
140 for(
int i = 0; i < npts; i++) {
141 const double u = GP[i].
pt[0];
142 const double v = GP[i].
pt[1];
143 const double w = GP[i].
pt[2];
144 const double weight = GP[i].
weight;
147 for(
int j = 0; j < nbSF; j++) {
149 m(j + nbSF) +=
_volumeForce.
y() * ff[j] * weight * detJ * .5;
150 m(j + 2 * nbSF) +=
_volumeForce.
z() * ff[j] * weight * detJ * .5;
173 double Grads[100][3];
185 double FACT =
_e / ((1 +
_nu) * (1. - 2 *
_nu));
186 double C11 = FACT * (1 -
_nu);
187 double C12 = FACT *
_nu;
188 double C44 = FACT * (1 - 2. *
_nu) * .5;
196 const double C[6][6] = {{C11, C12, C12, 0, 0, 0}, {C12, C11, C12, 0, 0, 0},
197 {C12, C12, C11, 0, 0, 0}, {0, 0, 0, C44, 0, 0},
198 {0, 0, 0, 0, C44, 0}, {0, 0, 0, 0, 0, C44}};
210 for(
int i = 0; i < 6; i++)
211 for(
int j = 0; j < 6; j++) H(i, j) = C[i][j];
213 double _dimension = 2.0;
215 for(
int i = 0; i < npts; i++) {
216 const double u = GP[i].
pt[0];
217 const double v = GP[i].
pt[1];
218 const double w = GP[i].
pt[2];
219 const double weight = GP[i].
weight;
229 .0000002 * weight * detJ *
230 pow(detJ, 2 / _dimension);
232 for(
int j = 0; j <
_sizeM; j++) {
233 for(
int k = 0; k <
_sizeM; k++) {
234 KPP(j, k) += (Grads[j][0] * Grads[k][0] + Grads[j][1] * Grads[k][1] +
235 Grads[j][2] * Grads[k][2]) *
240 const double K2 = weight * detJ;
242 for(
int j = 0; j <
_sizeN; j++) {
243 for(
int k = 0; k <
_sizeM; k++) {
244 KUP(j + 0 *
_sizeN, k) += Grads[j][0] * SF[k] * K2;
245 KUP(j + 1 *
_sizeN, k) += Grads[j][1] * SF[k] * K2;
246 KUP(j + 2 *
_sizeN, k) += Grads[j][2] * SF[k] * K2;
264 for(
int j = 0; j <
_sizeN; j++) {
267 BDILT(j, 0) = BDIL(0, j) = Grads[j][0] / _dimension;
269 BT(j, 0) = B(0, j) = Grads[j][0];
273 BT(j, 3) = B(3, j) = Grads[j][1];
274 BT(j, 4) = B(4, j) = Grads[j][2];
276 BDILT(j +
_sizeN, 0) = BDIL(0, j +
_sizeN) = Grads[j][1] / _dimension;
287 Grads[j][2] / _dimension;
295 BT(j + 2 *
_sizeN, 4) = B(4, j + 2 *
_sizeN) = Grads[j][1];
296 BT(j + 2 *
_sizeN, 5) = B(5, j + 2 *
_sizeN) = Grads[j][0];
299 for(
int j = 0; j <
_sizeM; j++) {
300 MT(j, 0) = M(0, j) = SF[j];
309 for(
int j = 0; j < 3 *
_sizeN; j++) {
310 trBTH(j, 0) = BTH(j, 0) + BTH(j, 1) + BTH(j, 2);
313 KUU.
gemm(BTH, B, weight * detJ);
328 for(
int i = 0; i < 3 *
_sizeN; i++) {
329 for(
int j = 0; j < 3 *
_sizeN; j++) m(i, j) = KUU(i, j);
331 for(
int j = 0; j <
_sizeM; j++) {
332 m(i, j + 3 *
_sizeN) = KUP(i, j);
333 m(j + 3 *
_sizeN, i) = KUP(i, j);
336 for(
int j = 0; j <
_sizeM; j++) {
341 for(
int i = 0; i <
_sizeM; i++) {
342 for(
int j = 0; j <
_sizeM; j++) {