| 367 | } // preprocessIntegrateData |
| 368 | |
| 369 | void |
| 370 | CIBMethod::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); |
nothing calls this directly
no test coverage detected