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

Method initializePatchHierarchy

src/IB/IBMethod.cpp:1395–1469  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1393} // postprocessData
1394
1395void
1396IBMethod::initializePatchHierarchy(Pointer<PatchHierarchy<NDIM>> hierarchy,
1397 Pointer<GriddingAlgorithm<NDIM>> gridding_alg,
1398 int u_data_idx,
1399 const std::vector<Pointer<CoarsenSchedule<NDIM>>>& u_synch_scheds,
1400 const std::vector<Pointer<RefineSchedule<NDIM>>>& u_ghost_fill_scheds,
1401 int integrator_step,
1402 double init_data_time,
1403 bool initial_time)
1404{
1405 // Cache pointers to the patch hierarchy and gridding algorithm.
1406 d_hierarchy = hierarchy;
1407 d_gridding_alg = gridding_alg;
1408
1409 // Lookup the range of hierarchy levels.
1410 const int coarsest_ln = 0;
1411 const int finest_ln = d_hierarchy->getFinestLevelNumber();
1412
1413 // Initialize various Lagrangian data objects.
1414 if (initial_time)
1415 {
1416 // Initialize the interpolated velocity field.
1417 std::vector<Pointer<LData>> X_data(finest_ln + 1);
1418 std::vector<Pointer<LData>> U_data(finest_ln + 1);
1419 for (int ln = coarsest_ln; ln <= finest_ln; ++ln)
1420 {
1421 if (!d_l_data_manager->levelContainsLagrangianData(ln)) continue;
1422 X_data[ln] = d_l_data_manager->getLData(LDataManager::POSN_DATA_NAME, ln);
1423 U_data[ln] = d_l_data_manager->getLData(LDataManager::VEL_DATA_NAME, ln);
1424 }
1425 d_l_data_manager->interp(u_data_idx, U_data, X_data, u_synch_scheds, u_ghost_fill_scheds, init_data_time);
1426 resetAnchorPointValues(U_data, coarsest_ln, finest_ln);
1427
1428 // Initialize source/sink data.
1429 for (int ln = coarsest_ln; ln <= finest_ln; ++ln)
1430 {
1431 if (d_ib_source_fcn)
1432 {
1433 d_ib_source_fcn->initializeLevelData(d_hierarchy, ln, init_data_time, initial_time, d_l_data_manager);
1434 d_n_src[ln] = d_ib_source_fcn->getNumSources(d_hierarchy, ln, init_data_time, d_l_data_manager);
1435 d_X_src[ln].resize(d_n_src[ln], Point::Constant(std::numeric_limits<double>::quiet_NaN()));
1436 d_r_src[ln].resize(d_n_src[ln], std::numeric_limits<double>::quiet_NaN());
1437 d_P_src[ln].resize(d_n_src[ln], std::numeric_limits<double>::quiet_NaN());
1438 d_Q_src[ln].resize(d_n_src[ln], std::numeric_limits<double>::quiet_NaN());
1439 d_ib_source_fcn->getSourceLocations(
1440 d_X_src[ln], d_r_src[ln], X_data[ln], d_hierarchy, ln, init_data_time, d_l_data_manager);
1441 }
1442 }
1443 }
1444
1445 // Initialize the instrumentation data.
1446 d_instrument_panel->initializeHierarchyIndependentData(d_hierarchy, d_l_data_manager);
1447 if (d_instrument_panel->isInstrumented())
1448 {
1449 d_instrument_panel->initializeHierarchyDependentData(
1450 d_hierarchy, d_l_data_manager, integrator_step, init_data_time);
1451 if (d_total_flow_volume.empty())
1452 {

Callers 15

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
mainFunction · 0.45

Calls 13

getLDataMethod · 0.80
getNumSourcesMethod · 0.80
getSourceLocationsMethod · 0.80
isInstrumentedMethod · 0.80
getFinestLevelNumberMethod · 0.45
interpMethod · 0.45
initializeLevelDataMethod · 0.45
resizeMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected