| 272 | } // registerSourceTerm |
| 273 | |
| 274 | void |
| 275 | AdvDiffHierarchyIntegrator::setSourceTermFunction(Pointer<CellVariable<NDIM, double>> F_var, |
| 276 | Pointer<IBTK::CartGridFunction> F_fcn) |
| 277 | { |
| 278 | #if !defined(NDEBUG) |
| 279 | TBOX_ASSERT(std::find(d_F_var.begin(), d_F_var.end(), F_var) != d_F_var.end()); |
| 280 | #endif |
| 281 | if (d_F_fcn[F_var]) |
| 282 | { |
| 283 | const std::string& F_var_name = F_var->getName(); |
| 284 | Pointer<CartGridFunctionSet> p_F_fcn = d_F_fcn[F_var]; |
| 285 | if (!p_F_fcn) |
| 286 | { |
| 287 | pout << d_object_name << "::setSourceTermFunction(): WARNING:\n" |
| 288 | << " source term function for source term variable " << F_var_name << " has already been set.\n" |
| 289 | << " functions will be evaluated in the order in which they were " |
| 290 | "registered with the solver\n" |
| 291 | << " when evaluating the source term value.\n"; |
| 292 | p_F_fcn = new CartGridFunctionSet(d_object_name + "::" + F_var_name + "::source_function_set"); |
| 293 | p_F_fcn->addFunction(d_F_fcn[F_var]); |
| 294 | } |
| 295 | p_F_fcn->addFunction(F_fcn); |
| 296 | } |
| 297 | else |
| 298 | { |
| 299 | d_F_fcn[F_var] = F_fcn; |
| 300 | } |
| 301 | return; |
| 302 | } // setSourceTermFunction |
| 303 | |
| 304 | Pointer<IBTK::CartGridFunction> |
| 305 | AdvDiffHierarchyIntegrator::getSourceTermFunction(Pointer<CellVariable<NDIM, double>> F_var) const |