diff --git a/src/rodassembler.cc b/src/rodassembler.cc index c627d6b8f5b67952d943823a644b7b32c57a4f7f..15ed967965faebf3d0cff17c39e1f02d2b2970a8 100644 --- a/src/rodassembler.cc +++ b/src/rodassembler.cc @@ -408,12 +408,11 @@ getLocalMatrix( EntityPointer &entity, double sum = duLocal_dvij[k][l][m] * (duCan_dvij[i][j] * hatq.director(m) + darbouxCan*dd_dvij[m][i][j]); - sum += strain[m+3] * (duCan_dvij_dvkl[i][j][k][l] * hatq.director(m) - + duCan_dvij[i][j] * dd_dvij[m][k][l] - + duCan_dvij[k][l] * dd_dvij[m][i][j] - + darbouxCan * dd_dvij_dvkl[m][i][j][k][l]); + sum += (strain[m+3] - referenceStrain[m+3]) * (duCan_dvij_dvkl[i][j][k][l] * hatq.director(m) + + duCan_dvij[i][j] * dd_dvij[m][k][l] + + duCan_dvij[k][l] * dd_dvij[m][i][j] + + darbouxCan * dd_dvij_dvkl[m][i][j][k][l]); -#warning Reference strain missing here! localMat[i][k][j+3][l+3] += weight *K_[m] * sum; } @@ -593,8 +592,8 @@ assembleGradient(const std::vector<Configuration>& sol, double addend1 = du_dvij * hatq.director(m); double addend2 = darbouxCan * dd_dvij[m][i][j]; -#warning Reference strain missing here! - grad[globalDof][3+j] += weight*K_[m]*strain[m+3] * (addend1 + addend2); + grad[globalDof][3+j] += weight * K_[m] + * (strain[m+3]-referenceStrain[m+3]) * (addend1 + addend2); }