unsteady_heat/two_d_unsteady_heat/two_d_unsteady_heat.cc File Reference
#include "generic.h"
#include "unsteady_heat.h"
#include "meshes/rectangular_quadmesh.h"

Classes

class  UnsteadyHeatProblem< ELEMENT >
 UnsteadyHeat problem. More...
 

Namespaces

 ExactSolnForUnsteadyHeat
 Namespace for unforced exact solution for UnsteadyHeat equation.
 

Functions

void ExactSolnForUnsteadyHeat::get_exact_u (const double &time, const Vector< double > &x, Vector< double > &u)
 Exact solution as a Vector. More...
 
void ExactSolnForUnsteadyHeat::get_exact_u (const double &time, const Vector< double > &x, double &u)
 Exact solution as a scalar. More...
 
void ExactSolnForUnsteadyHeat::get_source (const double &time, const Vector< double > &x, double &source)
 Source function to make it an exact solution. More...
 
int main ()
 Driver code for unsteady heat equation. More...
 

Function Documentation

◆ main()

int main ( )

Driver code for unsteady heat equation.

///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////

415 {
416 
417  // Build problem
420 
421  // Setup labels for output
422  DocInfo doc_info;
423 
424  // Output directory
425  doc_info.set_directory("RESLT");
426 
427  // Output number
428  doc_info.number()=0;
429 
430  // Open a trace file
431  ofstream trace_file;
432  char filename[100];
433  sprintf(filename,"%s/trace.dat",doc_info.directory().c_str());
434  trace_file.open(filename);
435  trace_file << "VARIABLES=\"time\",\"u<SUB>FE</SUB>\","
436  << "\"u<SUB>exact</SUB>\",\"norm of error\",\"norm of solution\""
437  << std::endl;
438 
439  // Choose simulation interval and timestep
440  double t_max=0.5;
441  double dt=0.01;
442 
443  // Initialise timestep -- also sets the weights for all timesteppers
444  // in the problem.
445  problem.initialise_dt(dt);
446 
447  // Set IC
448  problem.set_initial_condition();
449 
450  //Output initial condition
451  problem.doc_solution(doc_info,trace_file);
452 
453  //Increment counter for solutions
454  doc_info.number()++;
455 
456  // Find number of steps
457  unsigned nstep = unsigned(t_max/dt);
458 
459  // Timestepping loop
460  for (unsigned istep=0;istep<nstep;istep++)
461  {
462  cout << " Timestep " << istep << std::endl;
463 
464  // Take timestep
465  problem.unsteady_newton_solve(dt);
466 
467  //Output solution
468  problem.doc_solution(doc_info,trace_file);
469 
470  //Increment counter for solutions
471  doc_info.number()++;
472  }
473 
474  // Close trace file
475  trace_file.close();
476 
477 
478 }; // end of main
UnsteadyHeat problem.
Definition: pretend_melt.cc:80
Definition: oomph_utilities.h:499
std::string directory() const
Output directory.
Definition: oomph_utilities.h:524
void set_directory(const std::string &directory)
Definition: oomph_utilities.cc:298
unsigned & number()
Number used (e.g.) for labeling output files.
Definition: oomph_utilities.h:554
void get_source(const double &time, const Vector< double > &x, double &source)
Source function to make it an exact solution.
Definition: heat_transfer_and_melting/two_d_unsteady_heat_melt/two_d_unsteady_heat.cc:79
string filename
Definition: MergeRestartFiles.py:39
Constructor for SteadyAxisymAdvectionDiffusion problem
Definition: steady_axisym_advection_diffusion.cc:213

References oomph::DocInfo::directory(), MergeRestartFiles::filename, ExactSolnForUnsteadyHeat::get_source(), oomph::DocInfo::number(), problem, and oomph::DocInfo::set_directory().