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

Method postprocessIntegrateData

src/IB/IBMethod.cpp:416–483  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

414} // preprocessIntegrateData
415
416void
417IBMethod::postprocessIntegrateData(double current_time, double new_time, int /*num_cycles*/)
418{
419 int ierr;
420 const int coarsest_ln = 0;
421 const int finest_ln = d_hierarchy->getFinestLevelNumber();
422 const double dt = new_time - current_time;
423 const int integrator_step = d_ib_solver->getIntegratorStep();
424
425 // Update the instrumentation data.
426 updateIBInstrumentationData(integrator_step + 1, new_time);
427 if (d_instrument_panel->isInstrumented())
428 {
429 const std::vector<std::string>& instrument_name = d_instrument_panel->getInstrumentNames();
430 const std::vector<double>& flow_data = d_instrument_panel->getFlowValues();
431 for (unsigned int m = 0; m < flow_data.size(); ++m)
432 {
433 // NOTE: Flow volume is calculated in default units.
434 d_total_flow_volume[m] += flow_data[m] * dt;
435 if (d_do_log)
436 plog << "flow volume through " << instrument_name[m] << ":\t " << d_total_flow_volume[m] << "\n";
437 }
438 }
439
440 // Reset time-dependent Lagrangian data.
441 for (int ln = coarsest_ln; ln <= finest_ln; ++ln)
442 {
443 if (!d_l_data_manager->levelContainsLagrangianData(ln)) continue;
444 ierr = VecSwap(d_X_current_data[ln]->getVec(), d_X_new_data[ln]->getVec());
445 IBTK_CHKERRQ(ierr);
446 ierr = VecSwap(d_U_current_data[ln]->getVec(), d_U_new_data[ln]->getVec());
447 IBTK_CHKERRQ(ierr);
448 if (d_F_new_data[ln])
449 {
450 ierr = VecSwap(d_F_current_data[ln]->getVec(), d_F_new_data[ln]->getVec());
451 IBTK_CHKERRQ(ierr);
452 }
453 else if (d_F_half_data[ln])
454 {
455 ierr = VecSwap(d_F_current_data[ln]->getVec(), d_F_half_data[ln]->getVec());
456 IBTK_CHKERRQ(ierr);
457 }
458 }
459 d_X_current_needs_ghost_fill = true;
460 d_F_current_needs_ghost_fill = true;
461
462 // Deallocate Lagrangian scratch data.
463 d_X_current_data.clear();
464 d_X_new_data.clear();
465 d_X_half_data.clear();
466 d_X_jac_data.clear();
467 d_X_LE_new_data.clear();
468 d_X_LE_half_data.clear();
469 d_U_current_data.clear();
470 d_U_new_data.clear();
471 d_U_half_data.clear();
472 d_U_jac_data.clear();
473 d_F_current_data.clear();

Callers 13

mainFunction · 0.45
mainFunction · 0.45
mainFunction · 0.45
mainFunction · 0.45
mainFunction · 0.45
mainFunction · 0.45
mainFunction · 0.45
mainFunction · 0.45
mainFunction · 0.45
mainFunction · 0.45
mainFunction · 0.45

Calls 7

getIntegratorStepMethod · 0.80
isInstrumentedMethod · 0.80
getVecMethod · 0.80
getFinestLevelNumberMethod · 0.45
sizeMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected