MCPcopy Create free account
hub / github.com/Cantera/cantera / solve

Method solve

src/oneD/Sim1D.cpp:374–420  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

372}
373
374void Sim1D::solve(int loglevel, bool refine_grid)
375{
376 int new_points = 1;
377 m_attempt_counter = 0;
378 finalize();
379 if (loglevel > 6) {
380 clearDebugFile();
381 }
382
383 while (new_points > 0) {
384 SteadyStateSystem::solve(loglevel);
385 if (loglevel > 0) {
386 writelog("\nNewton steady-state solve succeeded.\n\n");
387 writelog("Problem solved on [");
388 for (size_t mm = 1; mm < nDomains(); mm+=2) {
389 writelog("{}", domain(mm).nPoints());
390 if (mm + 2 < nDomains()) {
391 writelog(", ");
392 }
393 }
394 writelog("] point grid(s).\n");
395 if (loglevel > 3) {
396 show();
397 }
398 }
399 if (m_steady_callback) {
400 m_steady_callback->eval(0);
401 }
402 if (refine_grid) {
403 new_points = refine(loglevel);
404 writeDebugInfo("Regridding", "After regridding", loglevel,
405 m_attempt_counter);
406 } else {
407 debuglog("grid refinement disabled.\n", loglevel);
408 new_points = 0;
409 }
410 }
411 if (new_points < 0) {
412 // If the solver finished after removing grid points, do one final evaluation
413 // of the governing equations to update internal arrays in each domain that may
414 // be used for data saved in output files.
415 for (auto dom : m_dom) {
416 dom->eval(npos, m_state->data() + dom->loc(), m_xnew.data() + dom->loc(),
417 m_mask.data());
418 }
419 }
420}
421
422int Sim1D::refine(int loglevel)
423{

Callers 4

solveAdjointMethod · 0.45
solveSteadyMethod · 0.45
iterateMethod · 0.45
sim1D_solveFunction · 0.45

Calls 6

solveFunction · 0.85
writelogFunction · 0.85
debuglogFunction · 0.85
nPointsMethod · 0.80
evalMethod · 0.45
locMethod · 0.45

Tested by

no test coverage detected