113 assert(HasAveragedSourcePde());
116 boost::static_pointer_cast<AveragedSourceEllipticPde<DIM> >(mpPde)->SetupSourceTerms(*pMesh, pCellPdeElementMap);
120 boost::static_pointer_cast<AveragedSourceParabolicPde<DIM> >(mpPde)->SetupSourceTerms(*pMesh, pCellPdeElementMap);
168 if (mOutputSolutionAtPdeNodes)
174 assert(mpFeMesh !=
nullptr);
175 assert(!mDependentVariableName.empty());
177 for (
unsigned i=0; i<mpFeMesh->GetNumNodes(); i++)
179 (*mpVizPdeSolutionResultsFile) << i <<
" ";
180 const c_vector<double,DIM>& r_location = mpFeMesh->GetNode(i)->rGetLocation();
181 for (
unsigned k=0; k<DIM; k++)
183 (*mpVizPdeSolutionResultsFile) << r_location[k] <<
" ";
186 assert(mSolution !=
nullptr);
188 (*mpVizPdeSolutionResultsFile) << solution_repl[i] <<
" ";
191 (*mpVizPdeSolutionResultsFile) <<
"\n";
197 std::ostringstream time_string;
199 std::string results_file =
"pde_results_" + mDependentVariableName +
"_" + time_string.str();
203 std::vector<double> pde_solution;
204 for (
unsigned i=0; i<mpFeMesh->GetNumNodes(); i++)
206 pde_solution.push_back(solution_repl[i]);
209 p_vtk_mesh_writer->AddPointData(mDependentVariableName, pde_solution);
210 p_vtk_mesh_writer->AddPointData(
"IsDirichletBoundaryNode", mIsDirichletBoundaryNode);
212 p_vtk_mesh_writer->WriteFilesUsingMesh(*mpFeMesh);
213 delete p_vtk_mesh_writer;
AbstractPdeModifier(boost::shared_ptr< AbstractLinearPde< DIM, DIM > > pPde=NULL, boost::shared_ptr< AbstractBoundaryCondition< DIM > > pBoundaryCondition=boost::shared_ptr< AbstractBoundaryCondition< DIM > >(), bool isNeumannBoundaryCondition=true, Vec solution=nullptr)