12 #include "ColumnMajorMatrix.h"
13 #include "MaterialProperty.h"
15 #include "MooseRandom.h"
18 #include "libmesh/libmesh.h"
19 #include "libmesh/point.h"
33 :
_xx(cmm.numEntries() == 9 ? cmm.rawData()[0] : 0),
34 _yy(cmm.numEntries() == 9 ? cmm.rawData()[4] : 0),
35 _zz(cmm.numEntries() == 9 ? cmm.rawData()[8] : 0),
36 _xy(cmm.numEntries() == 9 ? cmm.rawData()[1] : 0),
37 _yz(cmm.numEntries() == 9 ? cmm.rawData()[5] : 0),
38 _zx(cmm.numEntries() == 9 ? cmm.rawData()[2] : 0)
40 if (cmm.numEntries() != 9)
42 mooseError(
"Cannot create SymmTensor from ColumnMajorMatrix. Wrong number of entries.");
55 if (init_list.size() != 6)
57 mooseError(
"SymmTensor initialization error: please enter a vector with 6 entries.");
63 if (input.size() != 6)
65 mooseError(
"SymmTensor error. Input vector must have six entries.");
75 Real
rowDot(
const unsigned int r,
const libMesh::TypeVector<Real> & v)
const
77 mooseAssert(LIBMESH_DIM == 3,
"Incompatible sizes");
80 return _xx * v(0) +
_xy * v(1) +
_zx * v(2);
84 return _xy * v(0) +
_yy * v(1) +
_yz * v(2);
88 return _zx * v(0) +
_yz * v(1) +
_zz * v(2);
92 mooseError(
"Incorrect row");
127 mooseError(
"Invalid entry requested for SymmTensor");
199 mooseError(
"Index must be 0, 1, or 2");
206 const Real * rVal(NULL);
254 mooseError(
"Index must be 0, 1, or 2");
343 return Point(
_xx * p(0) +
_xy * p(1) +
_zx * p(2),
362 mooseAssert(cmm.numEntries() == 9,
363 "Cannot add ColumnMajorMatrix to SymmTensor. Wrong number of entries.");
364 const Real * data = cmm.rawData();
376 mooseAssert(cmm.numEntries() == 9,
377 "Cannot add ColumnMajorMatrix to SymmTensor. Wrong number of entries.");
378 const Real * data = cmm.rawData();
391 mooseAssert(cmm.numEntries() == 9,
392 "Cannot set SymmTensor to ColumnMajorMatrix. Wrong number of entries.");
393 const Real * data = cmm.rawData();
427 ColumnMajorMatrix cmm(3, 3);
445 unsigned int randinit = 2000;
446 MooseRandom::seed(randinit);
454 tensor.
xx() = (MooseRandom::rand() + 1.0) * scalefactor;
455 tensor.
yy() = (MooseRandom::rand() + 1.0) * scalefactor;
456 tensor.
zz() = (MooseRandom::rand() + 1.0) * scalefactor;
457 tensor.
xy() = (MooseRandom::rand() + 1.0) * scalefactor;
458 tensor.
yz() = (MooseRandom::rand() + 1.0) * scalefactor;
459 tensor.
zx() = (MooseRandom::rand() + 1.0) * scalefactor;
474 PropertyValue * MaterialProperty<SymmTensor>::init(
int size);