MCPcopy Create free account
hub / github.com/IBAMR/IBAMR / reconstructVariables

Method reconstructVariables

src/IB/IBFECentroidPostProcessor.cpp:148–327  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

146/////////////////////////////// PROTECTED ////////////////////////////////////
147
148void
149IBFECentroidPostProcessor::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();

Callers

nothing calls this directly

Calls 15

copy_and_synchFunction · 0.85
getFEDataMethod · 0.80
attachQuadratureRuleMethod · 0.80
evalQuadraturePointsMethod · 0.80
dof_indicesMethod · 0.80
get_x_and_FFFunction · 0.70
getEquationSystemsMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected