Loading [MathJax]/extensions/tex2jax.js

dune-composites (unstable)

Cijkl.hh
1#ifndef Cal_Cijkl_hh
2#define Cal_Cijkl_hh
3
4#include "../MathFunctions/transpose.hh"
5#include "Material.hh"
6
7namespace Dune{
8 namespace Composites{
9
11 Dune::FieldMatrix<double,6,6> Cijkl(Dune::Composites::Material& material){
12 Dune::FieldMatrix<double,6,6> C(0.0); // Initialise Tensor as Zeros
13 int type = material.Type;
14
15 if (type == 0){ // Isotropic
16
17 double E = material.matprop[0];
18 double nu = material.matprop[1];
19
20 double tmp = E / ( (1.0 + nu) * ( 1.0 - 2.0 * nu ) );
21 double G = E / (2.0 * (1 + nu));
22
23 C[0][0] = ( 1.0 - nu ) * tmp; C[0][1] = nu * tmp; C[0][2] = nu * tmp;
24 C[1][0] = nu * tmp; C[1][1] = ( 1.0 - nu ) * tmp; C[1][2] = nu * tmp;
25 C[2][0] = nu * tmp; C[2][1] = nu * tmp; C[2][2] = ( 1.0 - nu ) * tmp;
26 C[3][3] = G;
27 C[4][4] = G;
28 C[5][5] = G;
29 }
30
31 if (type == 1){ // Composite
32
33 double E1 = material.matprop[0];
34 double E2 = material.matprop[1];
35 double E3 = material.matprop[2];
36 double nu12 = material.matprop[3];
37 double nu21 = nu12 * (E2 / E1);
38 double nu13 = material.matprop[4];
39 double nu31 = nu13 * (E3 / E1);
40 double nu23 = material.matprop[5];
41 double nu32 = nu23 * (E3 / E2);
42 double G12 = material.matprop[6];
43 double G13 = material.matprop[7];
44 double G23 = material.matprop[8];
45
46 Dune::FieldMatrix<double,3,3> Sinv = {{1./E1,-nu21/E2,-nu31/E3},{-nu12/E1,1./E2,-nu32/E3},{-nu13/E1,-nu23/E2,1./E3}};
47 Sinv.invert();
48
49 C[0][0] = Sinv[0][0];
50 C[1][1] = Sinv[1][1];
51 C[2][2] = Sinv[2][2];
52 C[0][1] = Sinv[0][1]; C[1][0] = Sinv[1][0];
53 C[0][2] = Sinv[0][2]; C[2][0] = Sinv[2][0];
54 C[1][2] = Sinv[1][2]; C[2][1] = Sinv[2][1];
55 C[3][3] = G23;
56 C[4][4] = G13;
57 C[5][5] = G12;
58 }
59 return C;
60 }
61 }
62}
63
64
65#endif
Material class.
Definition: Material.hh:14
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden & Uni Heidelberg  |  generated with Hugo v0.111.3 (Apr 3, 22:46, 2025)