| 118 | } |
| 119 | |
| 120 | VectorF Assembler::getDivergence(double* vector_field, int num_vector_field) { |
| 121 | size_t num_node = m_mesh->getNbrNodes(); |
| 122 | size_t num_elem = m_mesh->getNbrElements(); |
| 123 | size_t dim = m_mesh->getDim(); |
| 124 | |
| 125 | assert(num_vector_field == dim*num_node); |
| 126 | |
| 127 | VectorF div(num_elem); |
| 128 | for (size_t i=0; i<num_elem; i++) { |
| 129 | div[i] = 0; |
| 130 | VectorI elem = m_mesh->getElement(i); |
| 131 | const Eigen::MatrixXd& DN = m_DN[i]; |
| 132 | for (size_t j=0; j<elem.size(); j++) { |
| 133 | for (size_t k=0; k<dim; k++) { |
| 134 | div[i] += DN(j,k) * vector_field[elem[j]*dim+k]; |
| 135 | } |
| 136 | } |
| 137 | } |
| 138 | return div; |
| 139 | } |
| 140 | |
| 141 | VectorF Assembler::getCurlNorm(double* vector_field, int num_vector_field) { |
| 142 | size_t num_node = m_mesh->getNbrNodes(); |
nothing calls this directly
no test coverage detected