time_harmonic_linear_elasticity_elements.h
Go to the documentation of this file.
1 // LIC// ====================================================================
2 // LIC// This file forms part of oomph-lib, the object-oriented,
3 // LIC// multi-physics finite-element library, available
4 // LIC// at http://www.oomph-lib.org.
5 // LIC//
6 // LIC// Copyright (C) 2006-2022 Matthias Heil and Andrew Hazel
7 // LIC//
8 // LIC// This library is free software; you can redistribute it and/or
9 // LIC// modify it under the terms of the GNU Lesser General Public
10 // LIC// License as published by the Free Software Foundation; either
11 // LIC// version 2.1 of the License, or (at your option) any later version.
12 // LIC//
13 // LIC// This library is distributed in the hope that it will be useful,
14 // LIC// but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // LIC// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // LIC// Lesser General Public License for more details.
17 // LIC//
18 // LIC// You should have received a copy of the GNU Lesser General Public
19 // LIC// License along with this library; if not, write to the Free Software
20 // LIC// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21 // LIC// 02110-1301 USA.
22 // LIC//
23 // LIC// The authors may be contacted at oomph-lib@maths.man.ac.uk.
24 // LIC//
25 // LIC//====================================================================
26 // Header file for general linear elasticity elements
27 
28 // Include guards to prevent multiple inclusion of the header
29 #ifndef OOMPH_TIME_HARMONIC_LINEAR_ELASTICITY_ELEMENTS_HEADER
30 #define OOMPH_TIME_HARMONIC_LINEAR_ELASTICITY_ELEMENTS_HEADER
31 
32 // Config header generated by autoconfig
33 #ifdef HAVE_CONFIG_H
34 #include <oomph-lib-config.h>
35 #endif
36 
37 
38 #ifdef OOMPH_HAS_MPI
39 #include "mpi.h"
40 #endif
41 
42 #include <complex>
43 
44 
45 // OOMPH-LIB headers
46 #include "../generic/Qelements.h"
47 #include "../generic/mesh.h"
48 #include "../generic/hermite_elements.h"
50 #include "../generic/projection.h"
51 
52 namespace oomph
53 {
54  //=======================================================================
61  //=======================================================================
62  template<unsigned DIM>
64  {
65  public:
69  virtual inline std::complex<unsigned> u_index_time_harmonic_linear_elasticity(
70  const unsigned i) const
71  {
72  return std::complex<unsigned>(i, i + DIM);
73  }
74 
77  const Vector<double>& s, Vector<std::complex<double>>& disp) const
78  {
79  // Find number of nodes
80  unsigned n_node = nnode();
81 
82  // Local shape function
83  Shape psi(n_node);
84 
85  // Find values of shape function
86  shape(s, psi);
87 
88  for (unsigned i = 0; i < DIM; i++)
89  {
90  // Index at which the nodal value is stored
91  std::complex<unsigned> u_nodal_index =
93 
94  // Initialise value of u
95  disp[i] = std::complex<double>(0.0, 0.0);
96 
97  // Loop over the local nodes and sum
98  for (unsigned l = 0; l < n_node; l++)
99  {
100  const std::complex<double> u_value(
101  nodal_value(l, u_nodal_index.real()),
102  nodal_value(l, u_nodal_index.imag()));
103 
104  disp[i] += u_value * psi[l];
105  }
106  }
107  }
108 
111  const Vector<double>& s, const unsigned& i) const
112  {
113  // Find number of nodes
114  unsigned n_node = nnode();
115 
116  // Local shape function
117  Shape psi(n_node);
118 
119  // Find values of shape function
120  shape(s, psi);
121 
122  // Get nodal index at which i-th velocity is stored
123  std::complex<unsigned> u_nodal_index =
125 
126  // Initialise value of u
127  std::complex<double> interpolated_u(0.0, 0.0);
128 
129  // Loop over the local nodes and sum
130  for (unsigned l = 0; l < n_node; l++)
131  {
132  const std::complex<double> u_value(
133  nodal_value(l, u_nodal_index.real()),
134  nodal_value(l, u_nodal_index.imag()));
135 
136  interpolated_u += u_value * psi[l];
137  }
138 
139  return (interpolated_u);
140  }
141 
142 
146  typedef void (*BodyForceFctPt)(const double& t,
147  const Vector<double>& x,
149 
157  {
158  }
159 
162  {
163  return Elasticity_tensor_pt;
164  }
165 
167  inline double E(const unsigned& i,
168  const unsigned& j,
169  const unsigned& k,
170  const unsigned& l) const
171  {
172  return (*Elasticity_tensor_pt)(i, j, k, l);
173  }
174 
176  const double& omega_sq() const
177  {
178  return *Omega_sq_pt;
179  }
180 
182  double*& omega_sq_pt()
183  {
184  return Omega_sq_pt;
185  }
186 
189  {
190  return Body_force_fct_pt;
191  }
192 
195  {
196  return Body_force_fct_pt;
197  }
198 
203  virtual void get_stress(const Vector<double>& s,
204  DenseMatrix<std::complex<double>>& sigma) const = 0;
205 
207  void get_strain(const Vector<double>& s,
208  DenseMatrix<std::complex<double>>& strain) const;
209 
212  inline void body_force(const Vector<double>& x,
213  Vector<std::complex<double>>& b) const
214  {
215  // If no function has been set, return zero vector
216  if (Body_force_fct_pt == 0)
217  {
218  // Get spatial dimension of element
219  unsigned n = dim();
220  for (unsigned i = 0; i < n; i++)
221  {
222  b[i] = std::complex<double>(0.0, 0.0);
223  }
224  }
225  else
226  {
227  // Get time from timestepper of first node (note that this must
228  // work -- body force only makes sense for elements that can be
229  // deformed and thefore store displacements (at their nodes)
230  double time = node_pt(0)->time_stepper_pt()->time_pt()->time();
231 
232  // Get body force
233  (*Body_force_fct_pt)(time, x, b);
234  }
235  }
236 
240  unsigned ndof_types() const
241  {
242  return 1;
243  }
244 
252  std::list<std::pair<unsigned long, unsigned>>& dof_lookup_list) const
253  {
254  // temporary pair (used to store DOF lookup prior to being added
255  // to list)
256  std::pair<unsigned long, unsigned> dof_lookup;
257 
258  // number of nodes
259  const unsigned n_node = this->nnode();
260 
261  // Integer storage for local unknown
262  int local_unknown = 0;
263 
264  // Loop over the nodes
265  for (unsigned n = 0; n < n_node; n++)
266  {
267  // Loop over dimension (real and imag)
268  for (unsigned i = 0; i < 2 * DIM; i++)
269  {
270  // If the variable is free
271  local_unknown = nodal_local_eqn(n, i);
272 
273  // ignore pinned values
274  if (local_unknown >= 0)
275  {
276  // store DOF lookup in temporary pair: First entry in pair
277  // is global equation number; second entry is DOF type
278  dof_lookup.first = this->eqn_number(local_unknown);
279  dof_lookup.second = 0;
280 
281  // add to list
282  dof_lookup_list.push_front(dof_lookup);
283  }
284  }
285  }
286  }
287 
288 
289  protected:
292 
294  double* Omega_sq_pt;
295 
298 
300  static double Default_omega_sq_value;
301  };
302 
303 
307 
308 
309  //=======================================================================
312  //=======================================================================
313  template<unsigned DIM>
316  {
317  public:
320 
322  unsigned required_nvalue(const unsigned& n) const
323  {
324  return 2 * DIM;
325  }
326 
330  {
332  residuals, GeneralisedElement::Dummy_matrix, 0);
333  }
334 
335 
340  DenseMatrix<double>& jacobian)
341  {
342  // Add the contribution to the residuals
343  this
344  ->fill_in_generic_contribution_to_residuals_time_harmonic_linear_elasticity(
345  residuals, jacobian, 1);
346  }
347 
350  void get_stress(const Vector<double>& s,
351  DenseMatrix<std::complex<double>>& sigma) const;
352 
354  void output_fct(std::ostream& outfile,
355  const unsigned& nplot,
357 
359  void output(std::ostream& outfile)
360  {
361  unsigned n_plot = 5;
362  output(outfile, n_plot);
363  }
364 
366  void output(std::ostream& outfile, const unsigned& n_plot);
367 
368 
370  void output(FILE* file_pt)
371  {
372  unsigned n_plot = 5;
373  output(file_pt, n_plot);
374  }
375 
377  void output(FILE* file_pt, const unsigned& n_plot);
378 
379 
381  void compute_norm(double& norm);
382 
383  private:
387  Vector<double>& residuals, DenseMatrix<double>& jacobian, unsigned flag);
388  };
389 
390 
394 
395 
396  //===========================================================================
399  //============================================================================
400  template<unsigned DIM, unsigned NNODE_1D>
402  : public virtual QElement<DIM, NNODE_1D>,
403  public virtual TimeHarmonicLinearElasticityEquations<DIM>
404  {
405  public:
409  {
410  }
411 
413  void output(std::ostream& outfile)
414  {
416  }
417 
419  void output(std::ostream& outfile, const unsigned& n_plot)
420  {
422  }
423 
424 
426  void output(FILE* file_pt)
427  {
429  }
430 
432  void output(FILE* file_pt, const unsigned& n_plot)
433  {
435  }
436  };
437 
438 
439  //============================================================================
441  //============================================================================
442  template<>
444  : public virtual QElement<1, 2>
445  {
446  public:
448  FaceGeometry() : QElement<1, 2>() {}
449  };
450 
451 
452  //============================================================================
455  //============================================================================
456  template<>
458  : public virtual QElement<1, 3>
459  {
460  public:
462  FaceGeometry() : QElement<1, 3>() {}
463  };
464 
465 
466  //============================================================================
468  //============================================================================
469  template<>
471  : public virtual QElement<1, 4>
472  {
473  public:
475  FaceGeometry() : QElement<1, 4>() {}
476  };
477 
478 
479  //============================================================================
481  //============================================================================
482  template<>
484  : public virtual QElement<2, 2>
485  {
486  public:
488  FaceGeometry() : QElement<2, 2>() {}
489  };
490 
491  //============================================================================
494  //============================================================================
495  template<>
497  : public virtual QElement<2, 3>
498  {
499  public:
501  FaceGeometry() : QElement<2, 3>() {}
502  };
503 
504 
505  //============================================================================
507  //============================================================================
508  template<>
510  : public virtual QElement<2, 4>
511  {
512  public:
514  FaceGeometry() : QElement<2, 4>() {}
515  };
516 
520 
521 
522  //==========================================================
524  //==========================================================
525  template<class TIME_HARMONIC_LINEAR_ELAST_ELEMENT>
527  : public virtual ProjectableElement<TIME_HARMONIC_LINEAR_ELAST_ELEMENT>
528  {
529  public:
533 
534 
542  {
543  // Create the vector
545 
546  // Loop over all nodes and extract the fld-th nodal value
547  unsigned nnod = this->nnode();
548  for (unsigned j = 0; j < nnod; j++)
549  {
550  // Add the data value associated with the displacement components
551  data_values.push_back(std::make_pair(this->node_pt(j), fld));
552  }
553 
554  // Return the vector
555  return data_values;
556  }
557 
561  {
562  return 2 * this->dim();
563  }
564 
567  unsigned nhistory_values_for_projection(const unsigned& fld)
568  {
569 #ifdef PARANOID
570  if (fld > 3)
571  {
572  std::stringstream error_stream;
573  error_stream << "Elements only store four fields so fld can't be"
574  << " " << fld << std::endl;
575  throw OomphLibError(
576  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
577  }
578 #endif
579  return this->node_pt(0)->ntstorage();
580  }
581 
586  {
587  return this->node_pt(0)->position_time_stepper_pt()->ntstorage();
588  }
589 
592  double jacobian_and_shape_of_field(const unsigned& fld,
593  const Vector<double>& s,
594  Shape& psi)
595  {
596  unsigned n_dim = this->dim();
597  unsigned n_node = this->nnode();
598  DShape dpsidx(n_node, n_dim);
599 
600  // Call the derivatives of the shape functions and return
601  // the Jacobian
602  return this->dshape_eulerian(s, psi, dpsidx);
603  }
604 
605 
608  double get_field(const unsigned& t,
609  const unsigned& fld,
610  const Vector<double>& s)
611  {
612  unsigned n_node = this->nnode();
613 
614 #ifdef PARANOID
615  unsigned n_dim = this->node_pt(0)->ndim();
616 #endif
617 
618  // Local shape function
619  Shape psi(n_node);
620 
621  // Find values of shape function
622  this->shape(s, psi);
623 
624  // Initialise value of u
625  double interpolated_u = 0.0;
626 
627  // Sum over the local nodes at that time
628  for (unsigned l = 0; l < n_node; l++)
629  {
630 #ifdef PARANOID
631  unsigned nvalue = this->node_pt(l)->nvalue();
632  if (nvalue != 2 * n_dim)
633  {
634  std::stringstream error_stream;
635  error_stream
636  << "Current implementation only works for non-resized nodes\n"
637  << "but nvalue= " << nvalue << "!= 2 dim = " << 2 * n_dim
638  << std::endl;
639  throw OomphLibError(error_stream.str(),
642  }
643 #endif
644  interpolated_u += this->nodal_value(t, l, fld) * psi[l];
645  }
646  return interpolated_u;
647  }
648 
649 
651  unsigned nvalue_of_field(const unsigned& fld)
652  {
653  return this->nnode();
654  }
655 
656 
658  int local_equation(const unsigned& fld, const unsigned& j)
659  {
660 #ifdef PARANOID
661  unsigned n_dim = this->node_pt(0)->ndim();
662  unsigned nvalue = this->node_pt(j)->nvalue();
663  if (nvalue != 2 * n_dim)
664  {
665  std::stringstream error_stream;
666  error_stream
667  << "Current implementation only works for non-resized nodes\n"
668  << "but nvalue= " << nvalue << "!= 2 dim = " << 2 * n_dim
669  << std::endl;
670  throw OomphLibError(
671  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
672  }
673 #endif
674  return this->nodal_local_eqn(j, fld);
675  }
676  };
677 
678 
679  //=======================================================================
682  //=======================================================================
683  template<class ELEMENT>
685  : public virtual FaceGeometry<ELEMENT>
686  {
687  public:
688  FaceGeometry() : FaceGeometry<ELEMENT>() {}
689  };
690 
691 
692  //=======================================================================
695  //=======================================================================
696  template<class ELEMENT>
699  : public virtual FaceGeometry<FaceGeometry<ELEMENT>>
700  {
701  public:
703  };
704 
705 
706 } // namespace oomph
707 
708 #endif
int i
Definition: BiCGSTAB_step_by_step.cpp:9
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
Scalar * b
Definition: benchVecAdd.cpp:17
Definition: shape.h:278
TimeStepper *& time_stepper_pt()
Return the pointer to the timestepper.
Definition: nodes.h:238
unsigned nvalue() const
Return number of values stored in data object (incl pinned ones).
Definition: nodes.h:483
unsigned ntstorage() const
Definition: nodes.cc:879
Definition: matrices.h:386
FaceGeometry()
Definition: time_harmonic_linear_elasticity_elements.h:688
FaceGeometry()
Constructor must call the constructor of the underlying solid element.
Definition: time_harmonic_linear_elasticity_elements.h:448
FaceGeometry()
Constructor must call the constructor of the underlying element.
Definition: time_harmonic_linear_elasticity_elements.h:462
FaceGeometry()
Constructor must call the constructor of the underlying element.
Definition: time_harmonic_linear_elasticity_elements.h:475
FaceGeometry()
Constructor must call the constructor of the underlying element.
Definition: time_harmonic_linear_elasticity_elements.h:488
FaceGeometry()
Constructor must call the constructor of the underlying element.
Definition: time_harmonic_linear_elasticity_elements.h:501
FaceGeometry()
Constructor must call the constructor of the underlying element.
Definition: time_harmonic_linear_elasticity_elements.h:514
Definition: elements.h:4998
Definition: elements.h:1313
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
Definition: elements.h:2175
double nodal_value(const unsigned &n, const unsigned &i) const
Definition: elements.h:2593
virtual void shape(const Vector< double > &s, Shape &psi) const =0
int nodal_local_eqn(const unsigned &n, const unsigned &i) const
Definition: elements.h:1432
unsigned dim() const
Definition: elements.h:2611
unsigned nnode() const
Return the number of nodes.
Definition: elements.h:2210
void(* SteadyExactSolutionFctPt)(const Vector< double > &, Vector< double > &)
Definition: elements.h:1759
double dshape_eulerian(const Vector< double > &s, Shape &psi, DShape &dpsidx) const
Definition: elements.cc:3298
unsigned long eqn_number(const unsigned &ieqn_local) const
Definition: elements.h:704
static DenseMatrix< double > Dummy_matrix
Definition: elements.h:227
unsigned ndim() const
Return (Eulerian) spatial dimension of the node.
Definition: nodes.h:1054
TimeStepper *& position_time_stepper_pt()
Return a pointer to the position timestepper.
Definition: nodes.h:1022
Definition: oomph_definitions.h:222
Definition: projection.h:183
Time-harmonic linear elasticity upgraded to become projectable.
Definition: time_harmonic_linear_elasticity_elements.h:528
unsigned nfields_for_projection()
Definition: time_harmonic_linear_elasticity_elements.h:560
unsigned nhistory_values_for_projection(const unsigned &fld)
Definition: time_harmonic_linear_elasticity_elements.h:567
unsigned nhistory_values_for_coordinate_projection()
Definition: time_harmonic_linear_elasticity_elements.h:585
ProjectableTimeHarmonicLinearElasticityElement()
Definition: time_harmonic_linear_elasticity_elements.h:532
int local_equation(const unsigned &fld, const unsigned &j)
Return local equation number of value j in field fld.
Definition: time_harmonic_linear_elasticity_elements.h:658
double get_field(const unsigned &t, const unsigned &fld, const Vector< double > &s)
Definition: time_harmonic_linear_elasticity_elements.h:608
unsigned nvalue_of_field(const unsigned &fld)
Return number of values in field fld.
Definition: time_harmonic_linear_elasticity_elements.h:651
Vector< std::pair< Data *, unsigned > > data_values_of_field(const unsigned &fld)
Definition: time_harmonic_linear_elasticity_elements.h:541
double jacobian_and_shape_of_field(const unsigned &fld, const Vector< double > &s, Shape &psi)
Definition: time_harmonic_linear_elasticity_elements.h:592
Definition: Qelements.h:459
Definition: time_harmonic_linear_elasticity_elements.h:404
void output(FILE *file_pt)
C-style output function.
Definition: time_harmonic_linear_elasticity_elements.h:426
void output(std::ostream &outfile)
Output function.
Definition: time_harmonic_linear_elasticity_elements.h:413
void output(FILE *file_pt, const unsigned &n_plot)
C-style output function.
Definition: time_harmonic_linear_elasticity_elements.h:432
void output(std::ostream &outfile, const unsigned &n_plot)
Output function.
Definition: time_harmonic_linear_elasticity_elements.h:419
QTimeHarmonicLinearElasticityElement()
Constructor.
Definition: time_harmonic_linear_elasticity_elements.h:407
Definition: shape.h:76
Definition: time_harmonic_elasticity_tensor.h:55
Definition: time_harmonic_linear_elasticity_elements.h:64
TimeHarmonicElasticityTensor *& elasticity_tensor_pt()
Return the pointer to the elasticity_tensor.
Definition: time_harmonic_linear_elasticity_elements.h:161
virtual void get_stress(const Vector< double > &s, DenseMatrix< std::complex< double >> &sigma) const =0
double * Omega_sq_pt
Square of nondim frequency.
Definition: time_harmonic_linear_elasticity_elements.h:294
void get_dof_numbers_for_unknowns(std::list< std::pair< unsigned long, unsigned >> &dof_lookup_list) const
Definition: time_harmonic_linear_elasticity_elements.h:251
TimeHarmonicElasticityTensor * Elasticity_tensor_pt
Pointer to the elasticity tensor.
Definition: time_harmonic_linear_elasticity_elements.h:291
BodyForceFctPt & body_force_fct_pt()
Access function: Pointer to body force function.
Definition: time_harmonic_linear_elasticity_elements.h:188
static double Default_omega_sq_value
Static default value for square of frequency.
Definition: time_harmonic_linear_elasticity_elements.h:300
unsigned ndof_types() const
Definition: time_harmonic_linear_elasticity_elements.h:240
virtual std::complex< unsigned > u_index_time_harmonic_linear_elasticity(const unsigned i) const
Definition: time_harmonic_linear_elasticity_elements.h:69
double *& omega_sq_pt()
Access function for square of non-dim frequency.
Definition: time_harmonic_linear_elasticity_elements.h:182
TimeHarmonicLinearElasticityEquationsBase()
Definition: time_harmonic_linear_elasticity_elements.h:153
BodyForceFctPt Body_force_fct_pt
Pointer to body force function.
Definition: time_harmonic_linear_elasticity_elements.h:297
const double & omega_sq() const
Access function for square of non-dim frequency.
Definition: time_harmonic_linear_elasticity_elements.h:176
std::complex< double > interpolated_u_time_harmonic_linear_elasticity(const Vector< double > &s, const unsigned &i) const
Return FE interpolated displacement u[i] at local coordinate s.
Definition: time_harmonic_linear_elasticity_elements.h:110
double E(const unsigned &i, const unsigned &j, const unsigned &k, const unsigned &l) const
Access function to the entries in the elasticity tensor.
Definition: time_harmonic_linear_elasticity_elements.h:167
BodyForceFctPt body_force_fct_pt() const
Access function: Pointer to body force function (const version)
Definition: time_harmonic_linear_elasticity_elements.h:194
void body_force(const Vector< double > &x, Vector< std::complex< double >> &b) const
Definition: time_harmonic_linear_elasticity_elements.h:212
void get_strain(const Vector< double > &s, DenseMatrix< std::complex< double >> &strain) const
Return the strain tensor.
Definition: time_harmonic_linear_elasticity_elements.cc:49
void interpolated_u_time_harmonic_linear_elasticity(const Vector< double > &s, Vector< std::complex< double >> &disp) const
Compute vector of FE interpolated displacement u at local coordinate s.
Definition: time_harmonic_linear_elasticity_elements.h:76
void(* BodyForceFctPt)(const double &t, const Vector< double > &x, Vector< std::complex< double >> &b)
Definition: time_harmonic_linear_elasticity_elements.h:146
Definition: time_harmonic_linear_elasticity_elements.h:316
virtual void fill_in_generic_contribution_to_residuals_time_harmonic_linear_elasticity(Vector< double > &residuals, DenseMatrix< double > &jacobian, unsigned flag)
Definition: time_harmonic_linear_elasticity_elements.cc:195
void compute_norm(double &norm)
Compute norm of solution: square of the L2 norm.
Definition: time_harmonic_linear_elasticity_elements.cc:605
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Definition: time_harmonic_linear_elasticity_elements.h:339
unsigned required_nvalue(const unsigned &n) const
Number of values required at node n.
Definition: time_harmonic_linear_elasticity_elements.h:322
void output_fct(std::ostream &outfile, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt)
Output exact solution x,y,[z],u_r,v_r,[w_r],u_i,v_i,[w_i].
Definition: time_harmonic_linear_elasticity_elements.cc:453
void output(FILE *file_pt)
C-style output: x,y,[z],u_r,v_r,[w_r],u_i,v_i,[w_i].
Definition: time_harmonic_linear_elasticity_elements.h:370
void output(std::ostream &outfile)
Output: x,y,[z],u_r,v_r,[w_r],u_i,v_i,[w_i].
Definition: time_harmonic_linear_elasticity_elements.h:359
void get_stress(const Vector< double > &s, DenseMatrix< std::complex< double >> &sigma) const
Definition: time_harmonic_linear_elasticity_elements.cc:150
TimeHarmonicLinearElasticityEquations()
Constructor.
Definition: time_harmonic_linear_elasticity_elements.h:319
void fill_in_contribution_to_residuals(Vector< double > &residuals)
Definition: time_harmonic_linear_elasticity_elements.h:329
unsigned ntstorage() const
Definition: timesteppers.h:601
Time *const & time_pt() const
Access function for the pointer to time (const version)
Definition: timesteppers.h:572
double & time()
Return the current value of the continuous time.
Definition: timesteppers.h:123
RealScalar s
Definition: level1_cplx_impl.h:130
char char char int int * k
Definition: level2_impl.h:374
#define DIM
Definition: linearised_navier_stokes_elements.h:44
int sigma
Definition: calibrate.py:179
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
list x
Definition: plotDoE.py:28
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