167 cartesian.
at(1, 1) = deviatoric.
at(1, 1) * 2.0 / 3.0;
168 cartesian.
at(1, 2) = -deviatoric.
at(1, 1) / 3.0 + deviatoric.
at(1, 2) * sqrt(3.0);
169 cartesian.
at(2, 1) = -deviatoric.
at(1, 1) / 3.0 + deviatoric.
at(1, 2) * sqrt(3.0);
170 cartesian.
at(1, 3) = -deviatoric.
at(1, 1) / 3.0 - deviatoric.
at(1, 2) * sqrt(3.0);
171 cartesian.
at(3, 1) = -deviatoric.
at(1, 1) / 3.0 - deviatoric.
at(1, 2) * sqrt(3.0);
173 cartesian.
at(2, 2) = deviatoric.
at(1, 1) / 6.0 + deviatoric.
at(2, 2) / 2.0 - deviatoric.
at(1, 2) / sqrt(12.0) - deviatoric.
at(2, 1) / sqrt(12.0);
174 cartesian.
at(2, 3) = deviatoric.
at(1, 1) / 6.0 - deviatoric.
at(2, 2) / 2.0 + deviatoric.
at(1, 2) / sqrt(12.0) - deviatoric.
at(2, 1) / sqrt(12.0);
175 cartesian.
at(3, 3) = deviatoric.
at(1, 1) / 6.0 + deviatoric.
at(2, 2) / 2.0 - deviatoric.
at(1, 2) / sqrt(12.0) + deviatoric.
at(2, 1) / sqrt(12.0);
176 cartesian.
at(3, 2) = deviatoric.
at(1, 1) / 6.0 - deviatoric.
at(2, 2) / 2.0 + deviatoric.
at(1, 2) / sqrt(12.0) + deviatoric.
at(2, 1) / sqrt(12.0);
178 cartesian.
at(1, 4) = ( deviatoric.
at(1, 3) + deviatoric.
at(1, 6) ) / sqrt(6.0);
179 cartesian.
at(1, 5) = ( deviatoric.
at(1, 4) + deviatoric.
at(1, 7) ) / sqrt(6.0);
180 cartesian.
at(1, 6) = ( deviatoric.
at(1, 5) + deviatoric.
at(1, 8) ) / sqrt(6.0);
181 cartesian.
at(2, 4) = deviatoric.
at(2, 3) / sqrt(8.0) + deviatoric.
at(2, 6) / sqrt(8.0) - deviatoric.
at(1, 3) / sqrt(24.0) - deviatoric.
at(1, 6) / sqrt(24.0);
182 cartesian.
at(2, 5) = deviatoric.
at(2, 4) / sqrt(8.0) + deviatoric.
at(2, 7) / sqrt(8.0) - deviatoric.
at(1, 4) / sqrt(24.0) - deviatoric.
at(1, 7) / sqrt(24.0);
183 cartesian.
at(2, 6) = deviatoric.
at(2, 5) / sqrt(8.0) + deviatoric.
at(2, 8) / sqrt(8.0) - deviatoric.
at(1, 5) / sqrt(24.0) - deviatoric.
at(1, 8) / sqrt(24.0);
184 cartesian.
at(3, 4) = -deviatoric.
at(2, 3) / sqrt(8.0) - deviatoric.
at(2, 6) / sqrt(8.0) - deviatoric.
at(1, 3) / sqrt(24.0) - deviatoric.
at(1, 6) / sqrt(24.0);
185 cartesian.
at(3, 5) = -deviatoric.
at(2, 4) / sqrt(8.0) - deviatoric.
at(2, 7) / sqrt(8.0) - deviatoric.
at(1, 4) / sqrt(24.0) - deviatoric.
at(1, 7) / sqrt(24.0);
186 cartesian.
at(3, 6) = -deviatoric.
at(2, 5) / sqrt(8.0) - deviatoric.
at(2, 8) / sqrt(8.0) - deviatoric.
at(1, 5) / sqrt(24.0) - deviatoric.
at(1, 8) / sqrt(24.0);
188 cartesian.
at(1, 4) = ( deviatoric.
at(3, 1) + deviatoric.
at(6, 1) ) / sqrt(6.0);
189 cartesian.
at(1, 5) = ( deviatoric.
at(4, 1) + deviatoric.
at(7, 1) ) / sqrt(6.0);
190 cartesian.
at(1, 6) = ( deviatoric.
at(5, 1) + deviatoric.
at(8, 1) ) / sqrt(6.0);
191 cartesian.
at(2, 4) = deviatoric.
at(3, 2) / sqrt(8.0) + deviatoric.
at(6, 2) / sqrt(8.0) - deviatoric.
at(3, 1) / sqrt(24.0) - deviatoric.
at(6, 1) / sqrt(24.0);
192 cartesian.
at(2, 5) = deviatoric.
at(4, 2) / sqrt(8.0) + deviatoric.
at(7, 2) / sqrt(8.0) - deviatoric.
at(4, 1) / sqrt(24.0) - deviatoric.
at(7, 1) / sqrt(24.0);
193 cartesian.
at(2, 6) = deviatoric.
at(5, 2) / sqrt(8.0) + deviatoric.
at(8, 2) / sqrt(8.0) - deviatoric.
at(5, 1) / sqrt(24.0) - deviatoric.
at(8, 1) / sqrt(24.0);
194 cartesian.
at(3, 4) = -deviatoric.
at(3, 2) / sqrt(8.0) - deviatoric.
at(6, 2) / sqrt(8.0) - deviatoric.
at(3, 1) / sqrt(24.0) - deviatoric.
at(6, 1) / sqrt(24.0);
195 cartesian.
at(3, 5) = -deviatoric.
at(4, 2) / sqrt(8.0) - deviatoric.
at(7, 2) / sqrt(8.0) - deviatoric.
at(4, 1) / sqrt(24.0) - deviatoric.
at(7, 1) / sqrt(24.0);
196 cartesian.
at(3, 6) = -deviatoric.
at(5, 2) / sqrt(8.0) - deviatoric.
at(8, 2) / sqrt(8.0) - deviatoric.
at(5, 1) / sqrt(24.0) - deviatoric.
at(8, 1) / sqrt(24.0);
198 cartesian.
at(4, 4) = ( deviatoric.
at(3, 3) + deviatoric.
at(3, 6) + deviatoric.
at(6, 3) + deviatoric.
at(6, 6) ) * 0.25;
199 cartesian.
at(4, 5) = ( deviatoric.
at(3, 4) + deviatoric.
at(3, 7) + deviatoric.
at(6, 4) + deviatoric.
at(6, 7) ) * 0.25;
200 cartesian.
at(4, 6) = ( deviatoric.
at(3, 5) + deviatoric.
at(3, 8) + deviatoric.
at(6, 5) + deviatoric.
at(6, 8) ) * 0.25;
201 cartesian.
at(5, 4) = ( deviatoric.
at(4, 3) + deviatoric.
at(4, 6) + deviatoric.
at(7, 3) + deviatoric.
at(7, 6) ) * 0.25;
202 cartesian.
at(5, 5) = ( deviatoric.
at(4, 4) + deviatoric.
at(4, 7) + deviatoric.
at(7, 4) + deviatoric.
at(7, 7) ) * 0.25;
203 cartesian.
at(5, 6) = ( deviatoric.
at(4, 5) + deviatoric.
at(4, 8) + deviatoric.
at(7, 5) + deviatoric.
at(7, 8) ) * 0.25;
204 cartesian.
at(6, 4) = ( deviatoric.
at(5, 3) + deviatoric.
at(5, 6) + deviatoric.
at(8, 3) + deviatoric.
at(8, 6) ) * 0.25;
205 cartesian.
at(6, 5) = ( deviatoric.
at(5, 4) + deviatoric.
at(5, 7) + deviatoric.
at(8, 4) + deviatoric.
at(8, 7) ) * 0.25;
206 cartesian.
at(6, 6) = ( deviatoric.
at(5, 5) + deviatoric.
at(5, 8) + deviatoric.
at(8, 5) + deviatoric.
at(8, 8) ) * 0.25;
575 std :: unique_ptr< SparseLinearSystemNM > solver(
580 const IntArray &boundaries =
set->giveBoundaryList();
584 std :: unique_ptr< SparseMtrx > Kff(
classFactory.createSparseMtrx(stype) );
586 OOFEM_ERROR(
"Couldn't create sparse matrix of type %d\n", stype);
588 Kff->buildInternalStructure(rve, this->
domain->giveNumber(), fnum);
592 int neq = Kff->giveNumberOfRows();
595 int ndev = this->
sigmaDev->giveNumberOfDofs();
606 for (
int i = 1; i <= ndev; ++i ) {
607 int eqn = this->
sigmaDev->giveDofWithID(
dev_id.at(i))->giveEquationNumber(fnum);
608 ddev_pert.
at(eqn, i) = -1.0 * rve_size;
615 for (
int pos = 1; pos <= boundaries.
giveSize() / 2; ++pos ) {
617 int boundary = boundaries.
at(pos * 2);
627 solver->solve(*Kff, ddev_pert, s_d);
628 solver->solve(*Kff, p_pert, s_p);
633 for (
int i = 1; i <= ndev; ++i ) {
634 int eqn = this->
sigmaDev->giveDofWithID(
dev_id.at(i))->giveEquationNumber(fnum);
635 sigma_p.
at(i) = s_p.
at(eqn);
636 for (
int j = 1; j <= ndev; ++j ) {
637 sigma_d.
at(i, j) = s_d.
at(eqn, j);
645 for (
int pos = 1; pos <= boundaries.
giveSize() / 2; ++pos ) {
647 int boundary = boundaries.
at(pos * 2);
657 for (
int i = 1; i <= fe.
giveSize(); ++i ) {
658 if ( loc.
at(i) > 0 ) {
659 e_p += fe.
at(i) * s_p.
at( loc.
at(i) );
660 for (
int j = 1; j <= ndev; ++j ) {
661 e_d.
at(j) += fe.
at(i) * s_d.
at(loc.
at(i), j);
667 e_d.
times(1. / rve_size);
671 double nsd = this->
giveDomain()->giveNumberOfSpatialDimensions();
676 }
else if ( nsd == 2 ) {
int giveNumberOfSpatialDimensions()
Returns number of spatial dimensions.