| 22 | } |
| 23 | |
| 24 | Float LinearTriangleIntegrator::integrate_grad(size_t elem_idx, |
| 25 | size_t local_func_i, size_t local_func_j) { |
| 26 | const Vector3F coord(1.0/3.0, 1.0/3.0, 1.0/3.0); |
| 27 | const VectorF grad_i = m_shape_func->evaluate_grad( |
| 28 | elem_idx, local_func_i, coord); |
| 29 | const VectorF grad_j = m_shape_func->evaluate_grad( |
| 30 | elem_idx, local_func_j, coord); |
| 31 | const Float vol = m_mesh->getElementVolume(elem_idx); |
| 32 | return grad_i.dot(grad_j) * vol; |
| 33 | } |
| 34 | |
| 35 | Float LinearTriangleIntegrator::integrate_grad_C(size_t elem_idx, |
| 36 | size_t local_func_i, size_t local_func_j, const MatrixF& C) { |