26 #ifndef OOMPH_ODE_PROBLEM_H
27 #define OOMPH_ODE_PROBLEM_H
39 namespace VectorHelpers
49 unsigned ni =
a.size();
51 for(
unsigned i=0;
i<ni;
i++) {diff[
i] =
a[
i] -
b[
i];}
90 for(
unsigned t=0;
t<nprev_values+1;
t++)
94 std::cout <<
"setting IC at time =" <<
time << std::endl;
100 for(
unsigned j=0, nj=
nvalue();
j<nj;
j++)
116 std::ofstream& trace_file)
const
123 if (output_vector_length==0)
130 if (output_vector_length>1)
132 for (
unsigned i=1;
i<output_vector_length;
i++)
151 ODEElement* el_pt = checked_dynamic_cast<ODEElement*>
161 return std::abs(
ts_pt()->temporal_error_in_value(dat_pt, 0));
187 const unsigned& npoints=2)
const
196 if (output_vector_length==0)
203 if (output_vector_length>1)
205 for (
unsigned i=1;
i<output_vector_length;
i++)
214 if (output_vector_length==0)
221 if (output_vector_length>1)
223 for (
unsigned i=1;
i<output_vector_length;
i++)
255 bool adaptive_flag =
true;
257 if(ts_name ==
"bdf1")
259 return new BDF<1>(adaptive_flag);
261 else if(ts_name ==
"bdf2")
263 return new BDF<2>(adaptive_flag);
265 else if(ts_name ==
"real-imr")
267 IMR* mp_pt =
new IMR(adaptive_flag);
272 else if(ts_name ==
"imr")
279 else if(ts_name ==
"steady")
285 else if(ts_name ==
"tr")
289 return new TR(adaptive_flag);
293 std::string err =
"Unrecognised time stepper name";
AnnoyingScalar abs(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:135
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Scalar * b
Definition: benchVecAdd.cpp:17
Definition: timesteppers.h:1165
TimeStepper *& time_stepper_pt()
Return the pointer to the timestepper.
Definition: nodes.h:238
void set_value(const unsigned &i, const double &value_)
Definition: nodes.h:271
double value(const unsigned &i) const
Definition: nodes.h:293
Definition: explicit_timesteppers.h:240
A Base class for explicit timesteppers.
Definition: explicit_timesteppers.h:132
Data *& internal_data_pt(const unsigned &i)
Return a pointer to i-th internal data object.
Definition: elements.h:622
Definition: implicit_midpoint_rule.h:220
Definition: implicit_midpoint_rule.h:167
GeneralisedElement *& element_pt(const unsigned long &e)
Return pointer to element e.
Definition: mesh.h:448
Definition: my_problem.h:131
virtual void build(Vector< Mesh * > &bulk_mesh_pt)
Perform set up of problem.
Definition: my_problem.h:967
virtual void actions_after_set_initial_condition()
Definition: my_problem.h:1113
const std::string Trace_seperator
Definition: my_problem.h:926
bool Always_write_trace
Should we output to trace file every step?
Definition: my_problem.h:885
Element for integrating an initial value ODE.
Definition: ode_elements.h:41
bool Use_fd_jacobian
Definition: ode_elements.h:182
Vector< double > exact_solution(const double &t) const
Exact solution.
Definition: ode_elements.h:151
unsigned nvalue() const
Definition: ode_elements.h:76
Definition: ode_problem.h:57
Vector< double > trace_values(const unsigned &t_hist=0) const
Definition: ode_problem.h:164
virtual double get_error_norm(const unsigned &t_hist=0) const
Error norm calculator.
Definition: ode_problem.h:141
const ODEElement * element_pt() const
Definition: ode_problem.h:172
double global_temporal_error_norm()
Error norm: use abs(error in data).
Definition: ode_problem.h:157
bool Use_fd_jacobian
Definition: ode_problem.h:242
ODEProblem()
constructor
Definition: ode_problem.h:61
Vector< double > exact_solution(const double &time) const
Definition: ode_problem.h:149
Vector< double > solution(const unsigned ×tep=0) const
Definition: ode_problem.h:234
virtual void build(Vector< Mesh * > &bulk_mesh_pt)
Perform set up of problem.
Definition: ode_problem.h:71
ODEElement * element_pt()
Definition: ode_problem.h:169
virtual void write_additional_trace_data(const unsigned &t_hist, std::ofstream &trace_file) const
Definition: ode_problem.h:115
void my_set_initial_condition(const SolutionFunctorBase &ic)
Assign initial conditions from function pointer.
Definition: ode_problem.h:86
virtual void write_additional_trace_headers(std::ofstream &trace_file) const
Definition: ode_problem.h:110
unsigned nvalue() const
Definition: ode_problem.h:180
virtual ~ODEProblem()
Definition: ode_problem.h:69
void output_solution(const unsigned &t, std::ostream &outstream, const unsigned &npoints=2) const
Definition: ode_problem.h:186
TimeStepper * ts_pt() const
Definition: ode_problem.h:175
Definition: oomph_definitions.h:222
unsigned long ndof() const
Return the number of dofs.
Definition: problem.h:1674
Time *& time_pt()
Return a pointer to the global time object.
Definition: problem.h:1504
void build_global_mesh()
Definition: problem.cc:1493
Mesh *& mesh_pt()
Return a pointer to the global mesh.
Definition: problem.h:1280
unsigned long assign_eqn_numbers(const bool &assign_local_eqn_numbers=true)
Definition: problem.cc:1989
TimeStepper *& time_stepper_pt()
Definition: problem.h:1524
double & time()
Return the current value of continuous time.
Definition: problem.cc:11531
Definition: oomph_utilities.h:1109
Definition: timesteppers.h:681
Definition: timesteppers.h:231
virtual unsigned nprev_values() const =0
Number of previous values available: 0 for static, 1 for BDF<1>,...
void set_predictor_pt(ExplicitTimeStepper *_pred_pt)
Definition: timesteppers.h:410
double & time()
Return the current value of the continuous time.
Definition: timesteppers.h:123
#define TR
Definition: common.h:40
void output_vector(const Vector< myType > &given_vector)
Definition: crdoublematrix_copy_constructor.cc:49
const Scalar * a
Definition: level2_cplx_impl.h:32
val
Definition: calibrate.py:119
TimeStepper * time_stepper_factory(const std::string &ts_name)
Definition: ode_problem.h:250
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286
double two_norm(const Vector< double > &a)
Definition: ode_problem.h:41
double dot(const Vector< double > &a, const Vector< double > &b)
Definition: oomph-lib/src/generic/Vector.h:291
Vector< double > vector_diff(const Vector< double > &a, const Vector< double > &b)
Definition: ode_problem.h:46
void check_lengths_match(const Vector< double > &a, const Vector< double > &b)
Check the lengths if two Vectors are the same length.
Definition: oomph-lib/src/generic/Vector.h:271
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
OomphInfo oomph_info
Definition: oomph_definitions.cc:319
t
Definition: plotPSD.py:36
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2