| 146 | /////////////////////////////// PROTECTED //////////////////////////////////// |
| 147 | |
| 148 | void |
| 149 | IBFECentroidPostProcessor::reconstructVariables(double data_time) |
| 150 | { |
| 151 | EquationSystems* equation_systems = d_fe_data_manager->getEquationSystems(); |
| 152 | MeshBase& mesh = equation_systems->get_mesh(); |
| 153 | const int dim = mesh.mesh_dimension(); |
| 154 | std::unique_ptr<QBase> qrule = QBase::build(QGAUSS, NDIM, CONSTANT); |
| 155 | |
| 156 | // Set up all system data required to evaluate the mesh functions. |
| 157 | FEDataInterpolation fe(dim, d_fe_data_manager->getFEData()); |
| 158 | fe.attachQuadratureRule(qrule.get()); |
| 159 | fe.evalQuadraturePoints(); |
| 160 | |
| 161 | auto& X_system = equation_systems->get_system<System>(d_fe_data_manager->getCurrentCoordinatesSystemName()); |
| 162 | NumericVector<double>& X_data = *(X_system.current_local_solution); |
| 163 | copy_and_synch(*X_system.solution, X_data); |
| 164 | std::vector<int> vars(NDIM); |
| 165 | for (unsigned int d = 0; d < NDIM; ++d) vars[d] = d; |
| 166 | const size_t X_sys_idx = fe.registerInterpolatedSystem(X_system, vars, vars, &X_data); |
| 167 | |
| 168 | const size_t num_scalar_vars = d_scalar_var_systems.size(); |
| 169 | std::vector<const DofMap*> scalar_var_dof_maps(num_scalar_vars); |
| 170 | std::vector<std::vector<unsigned int>> scalar_var_dof_indices(num_scalar_vars); |
| 171 | std::vector<std::vector<size_t>> scalar_var_fcn_system_idxs(num_scalar_vars); |
| 172 | for (unsigned int k = 0; k < num_scalar_vars; ++k) |
| 173 | { |
| 174 | scalar_var_dof_maps[k] = &d_scalar_var_systems[k]->get_dof_map(); |
| 175 | fe.setupInterpolatedSystemDataIndexes( |
| 176 | scalar_var_fcn_system_idxs[k], d_scalar_var_system_data[k], equation_systems); |
| 177 | } |
| 178 | |
| 179 | const size_t num_vector_vars = d_vector_var_systems.size(); |
| 180 | std::vector<const DofMap*> vector_var_dof_maps(num_vector_vars); |
| 181 | std::vector<std::vector<std::vector<unsigned int>>> vector_var_dof_indices(num_vector_vars); |
| 182 | std::vector<std::vector<size_t>> vector_var_fcn_system_idxs(num_vector_vars); |
| 183 | for (unsigned int k = 0; k < num_vector_vars; ++k) |
| 184 | { |
| 185 | vector_var_dof_maps[k] = &d_vector_var_systems[k]->get_dof_map(); |
| 186 | vector_var_dof_indices[k].resize(d_vector_var_dims[k]); |
| 187 | fe.setupInterpolatedSystemDataIndexes( |
| 188 | vector_var_fcn_system_idxs[k], d_vector_var_system_data[k], equation_systems); |
| 189 | } |
| 190 | |
| 191 | const size_t num_tensor_vars = d_tensor_var_systems.size(); |
| 192 | std::vector<const DofMap*> tensor_var_dof_maps(num_tensor_vars); |
| 193 | std::vector<boost::multi_array<std::vector<unsigned int>, 2>> tensor_var_dof_indices(num_tensor_vars); |
| 194 | std::vector<std::vector<size_t>> tensor_var_fcn_system_idxs(num_tensor_vars); |
| 195 | for (unsigned int k = 0; k < num_tensor_vars; ++k) |
| 196 | { |
| 197 | tensor_var_dof_maps[k] = &d_tensor_var_systems[k]->get_dof_map(); |
| 198 | using array_type = boost::multi_array<std::vector<unsigned int>, 2>; |
| 199 | array_type::extent_gen extents; |
| 200 | tensor_var_dof_indices[k].resize(extents[d_tensor_var_dims[k]][d_tensor_var_dims[k]]); |
| 201 | fe.setupInterpolatedSystemDataIndexes( |
| 202 | tensor_var_fcn_system_idxs[k], d_tensor_var_system_data[k], equation_systems); |
| 203 | } |
| 204 | |
| 205 | fe.init(); |
nothing calls this directly
no test coverage detected