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

Method postprocessIntegrateData

src/IB/CIBMethod.cpp:369–464  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

367} // preprocessIntegrateData
368
369void
370CIBMethod::postprocessIntegrateData(double current_time, double new_time, int num_cycles)
371{
372 // Compute net rigid generalized force for structures.
373 const int finest_ln = d_hierarchy->getFinestLevelNumber();
374 Pointer<LData> ptr_lagmultpr = d_l_data_manager->getLData("lambda", finest_ln);
375 Vec L_vec = ptr_lagmultpr->getVec();
376 for (unsigned int part = 0; part < d_num_rigid_parts; ++part)
377 {
378 computeNetRigidGeneralizedForce(part, L_vec, d_net_rigid_generalized_force[part]);
379 }
380
381 // Destroy the free DOFs.
382 VecDestroy(&d_U);
383 VecDestroy(&d_F);
384
385 // Dump Lagrange multiplier data.
386 if (d_lambda_dump_interval && ((d_ib_solver->getIntegratorStep() + 1) % d_lambda_dump_interval == 0))
387 {
388 Vec lambda_petsc_vec_parallel = ptr_lagmultpr->getVec();
389 Vec lambda_lag_vec_parallel = nullptr;
390 Vec lambda_lag_vec_seq = nullptr;
391
392 VecDuplicate(lambda_petsc_vec_parallel, &lambda_lag_vec_parallel);
393 d_l_data_manager->scatterPETScToLagrangian(lambda_petsc_vec_parallel, lambda_lag_vec_parallel, finest_ln);
394 d_l_data_manager->scatterToZero(lambda_lag_vec_parallel, lambda_lag_vec_seq);
395
396 if (IBTK_MPI::getRank() == 0)
397 {
398 const PetscScalar* L;
399 VecGetArrayRead(lambda_lag_vec_seq, &L);
400 int counter_L = -1;
401 Eigen::Vector3d total_lambda = Eigen::Vector3d::Zero();
402
403 d_lambda_stream << new_time << std::endl << std::endl;
404 for (unsigned int struct_no = 0; struct_no < d_num_rigid_parts; ++struct_no)
405 {
406 const int no_ib_pts = getNumberOfNodes(struct_no);
407 d_lambda_stream << "structure: " << struct_no << " ib_pts: " << no_ib_pts << std::endl;
408
409 for (int i = 0; i < no_ib_pts; ++i)
410 {
411 for (int d = 0; d < NDIM; ++d)
412 {
413 d_lambda_stream << L[++counter_L] << "\t";
414 total_lambda[d] += L[counter_L];
415 }
416 d_lambda_stream << std::endl;
417 }
418 d_lambda_stream << "Net resultant lambda for structure: " << struct_no << " ";
419
420 for (int d = 0; d < NDIM; ++d) d_lambda_stream << total_lambda[d] << "\t";
421 d_lambda_stream << std::endl;
422 total_lambda.setZero();
423 }
424 VecRestoreArrayRead(lambda_lag_vec_seq, &L);
425 }
426 VecDestroy(&lambda_lag_vec_parallel);

Callers

nothing calls this directly

Calls 9

getLDataMethod · 0.80
getVecMethod · 0.80
getIntegratorStepMethod · 0.80
scatterToZeroMethod · 0.80
getPatchLevelMethod · 0.80
getFinestLevelNumberMethod · 0.45
setZeroMethod · 0.45
spreadMethod · 0.45

Tested by

no test coverage detected