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

Method initializeSolverState

ibtk/src/solvers/impls/PETScLevelSolver.cpp:247–645  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

245} // solveSystem
246
247void
248PETScLevelSolver::initializeSolverState(const SAMRAIVectorReal<NDIM, double>& x,
249 const SAMRAIVectorReal<NDIM, double>& b)
250{
251 IBTK_TIMER_START(t_initialize_solver_state);
252
253// Rudimentary error checking.
254#if !defined(NDEBUG)
255 if (x.getNumberOfComponents() != b.getNumberOfComponents())
256 {
257 TBOX_ERROR(d_object_name << "::initializeSolverState()\n"
258 << " vectors must have the same number of components" << std::endl);
259 }
260
261 const Pointer<PatchHierarchy<NDIM>>& patch_hierarchy = x.getPatchHierarchy();
262 if (patch_hierarchy != b.getPatchHierarchy())
263 {
264 TBOX_ERROR(d_object_name << "::initializeSolverState()\n"
265 << " vectors must have the same hierarchy" << std::endl);
266 }
267
268 const int coarsest_ln = x.getCoarsestLevelNumber();
269 if (coarsest_ln < 0)
270 {
271 TBOX_ERROR(d_object_name << "::initializeSolverState()\n"
272 << " coarsest level number must not be negative" << std::endl);
273 }
274 if (coarsest_ln != b.getCoarsestLevelNumber())
275 {
276 TBOX_ERROR(d_object_name << "::initializeSolverState()\n"
277 << " vectors must have same coarsest level number" << std::endl);
278 }
279
280 const int finest_ln = x.getFinestLevelNumber();
281 if (finest_ln < coarsest_ln)
282 {
283 TBOX_ERROR(d_object_name << "::initializeSolverState()\n"
284 << " finest level number must be >= coarsest level number" << std::endl);
285 }
286 if (finest_ln != b.getFinestLevelNumber())
287 {
288 TBOX_ERROR(d_object_name << "::initializeSolverState()\n"
289 << " vectors must have same finest level number" << std::endl);
290 }
291
292 for (int ln = coarsest_ln; ln <= finest_ln; ++ln)
293 {
294 if (!patch_hierarchy->getPatchLevel(ln))
295 {
296 TBOX_ERROR(d_object_name << "::initializeSolverState()\n"
297 << " hierarchy level " << ln << " does not exist" << std::endl);
298 }
299 }
300
301 if (coarsest_ln != finest_ln)
302 {
303 TBOX_ERROR(d_object_name << "::initializeSolverState()\n"
304 << " coarsest_ln != finest_ln in PETScLevelSolver" << std::endl);

Callers 7

mainFunction · 0.45
mainFunction · 0.45
mainFunction · 0.45

Calls 15

maxReductionFunction · 0.85
epsilonFunction · 0.85
getPatchLevelMethod · 0.80
findMethod · 0.80
getPatchHierarchyMethod · 0.45
getFinestLevelNumberMethod · 0.45
setPatchHierarchyMethod · 0.45
resetLevelsMethod · 0.45
emptyMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected