overloaded_cartesian_element_body.h File Reference

Go to the source code of this file.

Functions

 MyTaylorHoodElement ()
 
unsignednprev_for_extrapolation_of_strain_rate ()
 
void enable_fixed_point_iteration_for_strain_rate ()
 
void disable_fixed_point_iteration_for_strain_rate ()
 Disable use of fixed point iteration. More...
 
void enable_aitken_extrapolation ()
 Enable use of Aitken extrapolation. More...
 
void disable_aitken_extrapolation ()
 Disable use of Aitken extrapolation. More...
 
void latest_fixed_point_iteration_guess_for_strain_rate (const unsigned &ipt, DenseMatrix< double > &strainrate) const
 
void update_latest_fixed_point_iteration_guess_for_strain_rate ()
 
void extrapolated_strain_rate (const unsigned &ipt, DenseMatrix< double > &strainrate) const
 
void extrapolated_strain_rate (const Vector< double > &s, DenseMatrix< double > &strainrate) const
 
void set_error (const double &error)
 Set error value for post-processing. More...
 
std::string variable_identifier ()
 Return variable identifier. More...
 
void output (std::ostream &outfile, const unsigned &nplot)
 Overload output function. More...
 
void get_Z2_flux (const Vector< double > &s, Vector< double > &flux)
 Get 'flux' for Z2 error recovery. More...
 
double square_of_norm_of_strain_invariant (double &norm_squared, double &extrapolated_norm_squared, double &error_norm_squared)
 
double square_of_norm_of_viscosity (double &norm_squared, double &extrapolated_norm_squared, double &error_norm_squared)
 
double square_of_norm_of_fixed_point (double &norm_squared, double &latest_guess_norm_squared, double &error_norm_squared)
 
double square_of_l2_norm ()
 Get square of L2 norm of velocity. More...
 

Variables

unsigned el_dim
 dimension More...
 
double Error
 Storage for elemental error estimate – used for post-processing. More...
 
unsigned Nprev_for_extrapolation_of_strain_rate
 
bool Use_fixed_point_for_strain_rate
 
bool Use_aitken_extrapolation
 
Vector< Vector< DenseMatrix< double > > > Fixed_point_iteration_guess_for_strain_rate
 Current best guess for strain rate tensor (fixed point iteration) More...
 
unsigned Aitken_index
 

Function Documentation

◆ disable_aitken_extrapolation()

void disable_aitken_extrapolation ( )

Disable use of Aitken extrapolation.

112  {
114  }
bool Use_aitken_extrapolation
Definition: overloaded_cartesian_element_body.h:45

References Use_aitken_extrapolation.

◆ disable_fixed_point_iteration_for_strain_rate()

void disable_fixed_point_iteration_for_strain_rate ( )

Disable use of fixed point iteration.

99  {
102  }
bool Use_fixed_point_for_strain_rate
Definition: overloaded_cartesian_element_body.h:41

References Use_aitken_extrapolation, and Use_fixed_point_for_strain_rate.

◆ enable_aitken_extrapolation()

void enable_aitken_extrapolation ( )

Enable use of Aitken extrapolation.

106  {
108  }

References Use_aitken_extrapolation.

◆ enable_fixed_point_iteration_for_strain_rate()

void enable_fixed_point_iteration_for_strain_rate ( )

Enable use of fixed point iteration (sets current best guess based on extrapolation)

91  {
92  Aitken_index=0;
95  }
unsigned Aitken_index
Definition: overloaded_cartesian_element_body.h:1166
void update_latest_fixed_point_iteration_guess_for_strain_rate()
Definition: overloaded_cartesian_element_body.h:134

References Aitken_index, update_latest_fixed_point_iteration_guess_for_strain_rate(), and Use_fixed_point_for_strain_rate.

◆ extrapolated_strain_rate() [1/2]

void extrapolated_strain_rate ( const unsigned ipt,
DenseMatrix< double > &  strainrate 
) const

Get strain-rate tensor: \( e_{ij} \) where \( i,j = r,z,\theta \) (in that order). Extrapolated from history values evaluated at integration point ipt. Overloaded version from base class.

199  {
201  {
203  }
204  else
205  {
206  Vector<double> s(el_dim);
207  for(unsigned i=0;i<el_dim;i++) s[i] = integral_pt()->knot(ipt,i);
208  extrapolated_strain_rate(s,strainrate);
209  }
210  }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
RealScalar s
Definition: level1_cplx_impl.h:130
unsigned el_dim
dimension
Definition: overloaded_cartesian_element_body.h:30
void extrapolated_strain_rate(const unsigned &ipt, DenseMatrix< double > &strainrate) const
Definition: overloaded_cartesian_element_body.h:197
void latest_fixed_point_iteration_guess_for_strain_rate(const unsigned &ipt, DenseMatrix< double > &strainrate) const
Definition: overloaded_cartesian_element_body.h:118

References el_dim, i, latest_fixed_point_iteration_guess_for_strain_rate(), s, and Use_fixed_point_for_strain_rate.

Referenced by output(), square_of_norm_of_strain_invariant(), and square_of_norm_of_viscosity().

◆ extrapolated_strain_rate() [2/2]

void extrapolated_strain_rate ( const Vector< double > &  s,
DenseMatrix< double > &  strainrate 
) const

Get strain-rate tensor: \( e_{ij} \) where \( i,j = r,z,\theta \) (in that order). Extrapolated from history values evaluated at local coordinate s. Overloaded version from base class.

219  {
220 
221 #ifdef PARANOID
222  if ((strainrate.ncol()!=2)||(strainrate.nrow()!=2))
223  {
224  std::ostringstream error_message;
225  error_message << "The strain rate has incorrect dimensions "
226  << strainrate.ncol() << " x "
227  << strainrate.nrow() << " Not 2" << std::endl;
228 
229  throw OomphLibError(error_message.str(),
232  }
233 #endif
234 
235 
236  // Get required previous strain rates
237  Vector<DenseMatrix<double> >
238  previous_strain_rate(Nprev_for_extrapolation_of_strain_rate);
239  for (unsigned it=0;it<Nprev_for_extrapolation_of_strain_rate;it++)
240  {
241  previous_strain_rate[it].resize(el_dim,el_dim);
242  strain_rate(it+1,s,previous_strain_rate[it]);
243  }
244 
245  // Get timestepper from first node
246  TimeStepper* time_stepper_pt=node_pt(0)->time_stepper_pt();
247 
248 // hierher #ifdef PARANOID
249  if (time_stepper_pt->nprev_values()<
251  {
252  oomph_info << "Won't work: " << time_stepper_pt->nprev_values()
253  << " < "
255  abort();
256  }
257 // hierher #endif
258 
259 
260  // Which extrapolation are we doing?
262  {
263 
264  // Zero-th order extrapolation; use one previous value
265  case 1:
266  {
267  strainrate=previous_strain_rate[0];
268  }
269  break;
270 
271 
272  // First order extrapolation -- two history values
273  case 2:
274  {
275  // Current and previous timesteps
276  double dt=time_stepper_pt->time_pt()->dt(0);
277  double dt_minus_1=time_stepper_pt->time_pt()->dt(1);
278 
279  // Extrapolate
280  for (unsigned i=0;i<el_dim;i++)
281  {
282  for (unsigned j=0;j<el_dim;j++)
283  {
284  double u_minus_one=previous_strain_rate[0](i,j);
285  double u_minus_two=previous_strain_rate[1](i,j);
286 
287  // Rate of changed based on previous two solutions
288  double slope=(u_minus_one-u_minus_two)/dt_minus_1;
289 
290  // Extrapolated value from previous computed one to current one
291  strainrate(i,j)=u_minus_one+slope*dt;
292  }
293  }
294  }
295  break;
296 
297 
298  // Four history values
299  case 4:
300  {
301  // Extrapolate
302  for (unsigned i=0;i<el_dim;i++)
303  {
304  for (unsigned j=0;j<el_dim;j++)
305  {
306  double u_minus_one =previous_strain_rate[0](i,j);
307  double u_minus_two =previous_strain_rate[1](i,j);
308  double u_minus_three=previous_strain_rate[2](i,j);
309  double u_minus_four =previous_strain_rate[3](i,j);
310 
311  // Current and previous timesteps
312  double dt=time_stepper_pt->time_pt()->dt(0);
313  double dt_minus_1=time_stepper_pt->time_pt()->dt(1);
314  double dt_minus_2=time_stepper_pt->time_pt()->dt(2);
315  double dt_minus_3=time_stepper_pt->time_pt()->dt(3);
316 
317 
318  double MapleGenVar1=0.0;
319  double MapleGenVar2=0.0;
320  double MapleGenVar3=0.0;
321  double MapleGenVar4=0.0;
322  double MapleGenVar5=0.0;
323  double MapleGenVar6=0.0;
324  double MapleGenVar7=0.0;
325  double t0=0.0;
326 
327  MapleGenVar2 = -1.0;
328  MapleGenVar7 = dt*dt*dt*dt_minus_1*dt_minus_1*dt_minus_2*u_minus_four-dt*
329 dt*dt*dt_minus_1*dt_minus_1*dt_minus_2*u_minus_three-dt*dt*dt*dt_minus_1*
330 dt_minus_1*dt_minus_3*u_minus_three+dt*dt*dt*dt_minus_1*dt_minus_1*dt_minus_3*
331 u_minus_two+dt*dt*dt*dt_minus_1*dt_minus_2*dt_minus_2*u_minus_four-dt*dt*dt*
332 dt_minus_1*dt_minus_2*dt_minus_2*u_minus_three-2.0*dt*dt*dt*dt_minus_1*
333 dt_minus_2*dt_minus_3*u_minus_three+2.0*dt*dt*dt*dt_minus_1*dt_minus_2*
334 dt_minus_3*u_minus_two-dt*dt*dt*dt_minus_1*dt_minus_3*dt_minus_3*u_minus_three+
335 dt*dt*dt*dt_minus_1*dt_minus_3*dt_minus_3*u_minus_two;
336  MapleGenVar6 = -dt*dt*dt*dt_minus_2*dt_minus_2*dt_minus_3*u_minus_one+dt*
337 dt*dt*dt_minus_2*dt_minus_2*dt_minus_3*u_minus_two-dt*dt*dt*dt_minus_2*
338 dt_minus_3*dt_minus_3*u_minus_one+dt*dt*dt*dt_minus_2*dt_minus_3*dt_minus_3*
339 u_minus_two+2.0*dt*dt*dt_minus_1*dt_minus_1*dt_minus_1*dt_minus_2*u_minus_four
340 -2.0*dt*dt*dt_minus_1*dt_minus_1*dt_minus_1*dt_minus_2*u_minus_three-2.0*dt*dt*
341 dt_minus_1*dt_minus_1*dt_minus_1*dt_minus_3*u_minus_three+2.0*dt*dt*dt_minus_1*
342 dt_minus_1*dt_minus_1*dt_minus_3*u_minus_two+3.0*dt*dt*dt_minus_1*dt_minus_1*
343 dt_minus_2*dt_minus_2*u_minus_four-3.0*dt*dt*dt_minus_1*dt_minus_1*dt_minus_2*
344 dt_minus_2*u_minus_three+MapleGenVar7;
345  MapleGenVar7 = -6.0*dt*dt*dt_minus_1*dt_minus_1*dt_minus_2*dt_minus_3*
346 u_minus_three+6.0*dt*dt*dt_minus_1*dt_minus_1*dt_minus_2*dt_minus_3*u_minus_two
347 -3.0*dt*dt*dt_minus_1*dt_minus_1*dt_minus_3*dt_minus_3*u_minus_three+3.0*dt*dt*
348 dt_minus_1*dt_minus_1*dt_minus_3*dt_minus_3*u_minus_two+dt*dt*dt_minus_1*
349 dt_minus_2*dt_minus_2*dt_minus_2*u_minus_four-dt*dt*dt_minus_1*dt_minus_2*
350 dt_minus_2*dt_minus_2*u_minus_three-3.0*dt*dt*dt_minus_1*dt_minus_2*dt_minus_2*
351 dt_minus_3*u_minus_one-3.0*dt*dt*dt_minus_1*dt_minus_2*dt_minus_2*dt_minus_3*
352 u_minus_three+6.0*dt*dt*dt_minus_1*dt_minus_2*dt_minus_2*dt_minus_3*u_minus_two
353 -3.0*dt*dt*dt_minus_1*dt_minus_2*dt_minus_3*dt_minus_3*u_minus_one;
354  MapleGenVar5 = -3.0*dt*dt*dt_minus_1*dt_minus_2*dt_minus_3*dt_minus_3*
355 u_minus_three+6.0*dt*dt*dt_minus_1*dt_minus_2*dt_minus_3*dt_minus_3*u_minus_two
356 -dt*dt*dt_minus_1*dt_minus_3*dt_minus_3*dt_minus_3*u_minus_three+dt*dt*
357 dt_minus_1*dt_minus_3*dt_minus_3*dt_minus_3*u_minus_two-2.0*dt*dt*dt_minus_2*
358 dt_minus_2*dt_minus_2*dt_minus_3*u_minus_one+2.0*dt*dt*dt_minus_2*dt_minus_2*
359 dt_minus_2*dt_minus_3*u_minus_two-3.0*dt*dt*dt_minus_2*dt_minus_2*dt_minus_3*
360 dt_minus_3*u_minus_one+3.0*dt*dt*dt_minus_2*dt_minus_2*dt_minus_3*dt_minus_3*
361 u_minus_two-dt*dt*dt_minus_2*dt_minus_3*dt_minus_3*dt_minus_3*u_minus_one+dt*dt
362 *dt_minus_2*dt_minus_3*dt_minus_3*dt_minus_3*u_minus_two+MapleGenVar6+
363 MapleGenVar7;
364  MapleGenVar7 = dt*dt_minus_1*dt_minus_1*dt_minus_1*dt_minus_1*dt_minus_2*
365 u_minus_four-dt*dt_minus_1*dt_minus_1*dt_minus_1*dt_minus_1*dt_minus_2*
366 u_minus_three-dt*dt_minus_1*dt_minus_1*dt_minus_1*dt_minus_1*dt_minus_3*
367 u_minus_three+dt*dt_minus_1*dt_minus_1*dt_minus_1*dt_minus_1*dt_minus_3*
368 u_minus_two+2.0*dt*dt_minus_1*dt_minus_1*dt_minus_1*dt_minus_2*dt_minus_2*
369 u_minus_four-2.0*dt*dt_minus_1*dt_minus_1*dt_minus_1*dt_minus_2*dt_minus_2*
370 u_minus_three-4.0*dt*dt_minus_1*dt_minus_1*dt_minus_1*dt_minus_2*dt_minus_3*
371 u_minus_three+4.0*dt*dt_minus_1*dt_minus_1*dt_minus_1*dt_minus_2*dt_minus_3*
372 u_minus_two-2.0*dt*dt_minus_1*dt_minus_1*dt_minus_1*dt_minus_3*dt_minus_3*
373 u_minus_three+2.0*dt*dt_minus_1*dt_minus_1*dt_minus_1*dt_minus_3*dt_minus_3*
374 u_minus_two;
375  MapleGenVar6 = dt*dt_minus_1*dt_minus_1*dt_minus_2*dt_minus_2*dt_minus_2*
376 u_minus_four-dt*dt_minus_1*dt_minus_1*dt_minus_2*dt_minus_2*dt_minus_2*
377 u_minus_three-3.0*dt*dt_minus_1*dt_minus_1*dt_minus_2*dt_minus_2*dt_minus_3*
378 u_minus_one-3.0*dt*dt_minus_1*dt_minus_1*dt_minus_2*dt_minus_2*dt_minus_3*
379 u_minus_three+6.0*dt*dt_minus_1*dt_minus_1*dt_minus_2*dt_minus_2*dt_minus_3*
380 u_minus_two-3.0*dt*dt_minus_1*dt_minus_1*dt_minus_2*dt_minus_3*dt_minus_3*
381 u_minus_one-3.0*dt*dt_minus_1*dt_minus_1*dt_minus_2*dt_minus_3*dt_minus_3*
382 u_minus_three+6.0*dt*dt_minus_1*dt_minus_1*dt_minus_2*dt_minus_3*dt_minus_3*
383 u_minus_two-dt*dt_minus_1*dt_minus_1*dt_minus_3*dt_minus_3*dt_minus_3*
384 u_minus_three+dt*dt_minus_1*dt_minus_1*dt_minus_3*dt_minus_3*dt_minus_3*
385 u_minus_two+MapleGenVar7;
386  MapleGenVar7 = -4.0*dt*dt_minus_1*dt_minus_2*dt_minus_2*dt_minus_2*
387 dt_minus_3*u_minus_one+4.0*dt*dt_minus_1*dt_minus_2*dt_minus_2*dt_minus_2*
388 dt_minus_3*u_minus_two-6.0*dt*dt_minus_1*dt_minus_2*dt_minus_2*dt_minus_3*
389 dt_minus_3*u_minus_one+6.0*dt*dt_minus_1*dt_minus_2*dt_minus_2*dt_minus_3*
390 dt_minus_3*u_minus_two-2.0*dt*dt_minus_1*dt_minus_2*dt_minus_3*dt_minus_3*
391 dt_minus_3*u_minus_one+2.0*dt*dt_minus_1*dt_minus_2*dt_minus_3*dt_minus_3*
392 dt_minus_3*u_minus_two-dt*dt_minus_2*dt_minus_2*dt_minus_2*dt_minus_2*
393 dt_minus_3*u_minus_one+dt*dt_minus_2*dt_minus_2*dt_minus_2*dt_minus_2*
394 dt_minus_3*u_minus_two-2.0*dt*dt_minus_2*dt_minus_2*dt_minus_2*dt_minus_3*
395 dt_minus_3*u_minus_one+2.0*dt*dt_minus_2*dt_minus_2*dt_minus_2*dt_minus_3*
396 dt_minus_3*u_minus_two-dt*dt_minus_2*dt_minus_2*dt_minus_3*dt_minus_3*
397 dt_minus_3*u_minus_one;
398  MapleGenVar4 = dt*dt_minus_2*dt_minus_2*dt_minus_3*dt_minus_3*dt_minus_3*
399 u_minus_two-dt_minus_1*dt_minus_1*dt_minus_1*dt_minus_2*dt_minus_2*dt_minus_3*
400 u_minus_one-dt_minus_1*dt_minus_1*dt_minus_1*dt_minus_2*dt_minus_3*dt_minus_3*
401 u_minus_one-2.0*dt_minus_1*dt_minus_1*dt_minus_2*dt_minus_2*dt_minus_2*
402 dt_minus_3*u_minus_one-3.0*dt_minus_1*dt_minus_1*dt_minus_2*dt_minus_2*
403 dt_minus_3*dt_minus_3*u_minus_one-dt_minus_1*dt_minus_1*dt_minus_2*dt_minus_3*
404 dt_minus_3*dt_minus_3*u_minus_one-dt_minus_1*dt_minus_2*dt_minus_2*dt_minus_2*
405 dt_minus_2*dt_minus_3*u_minus_one-2.0*dt_minus_1*dt_minus_2*dt_minus_2*
406 dt_minus_2*dt_minus_3*dt_minus_3*u_minus_one-dt_minus_1*dt_minus_2*dt_minus_2*
407 dt_minus_3*dt_minus_3*dt_minus_3*u_minus_one+MapleGenVar5+MapleGenVar6+
408 MapleGenVar7;
409  MapleGenVar5 = 1/dt_minus_1;
410  MapleGenVar3 = MapleGenVar4*MapleGenVar5;
411  MapleGenVar1 = MapleGenVar2*MapleGenVar3;
412  MapleGenVar2 = 1/dt_minus_2/dt_minus_3/(dt_minus_1*dt_minus_1*dt_minus_2+
413 dt_minus_1*dt_minus_1*dt_minus_3+2.0*dt_minus_1*dt_minus_2*dt_minus_2+3.0*
414 dt_minus_1*dt_minus_2*dt_minus_3+dt_minus_1*dt_minus_3*dt_minus_3+dt_minus_2*
415 dt_minus_2*dt_minus_2+2.0*dt_minus_2*dt_minus_2*dt_minus_3+dt_minus_2*
416 dt_minus_3*dt_minus_3);
417  t0 = MapleGenVar1*MapleGenVar2;
418 
419  // Extrapolated value from previous computed ones to current one
420  strainrate(i,j)=t0;
421 
422  }
423  }
424  }
425  break;
426 
427  default:
428  {
429  oomph_info << "Never get here\n";
430  abort();
431  }
432  break;
433 
434  }
435  }
unsigned long nrow() const
Return the number of rows of the matrix.
Definition: matrices.h:485
unsigned long ncol() const
Return the number of columns of the matrix.
Definition: matrices.h:491
OomphInfo oomph_info
Definition: oomph_definitions.cc:319
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86
unsigned Nprev_for_extrapolation_of_strain_rate
Definition: overloaded_cartesian_element_body.h:37
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References el_dim, i, j, Nprev_for_extrapolation_of_strain_rate, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::oomph_info, and s.

◆ get_Z2_flux()

void get_Z2_flux ( const Vector< double > &  s,
Vector< double > &  flux 
)

Get 'flux' for Z2 error recovery.

743  {
744 #ifdef PARANOID
745  unsigned num_entries=el_dim+(el_dim*(el_dim-1))/2;
746  if (flux.size() < num_entries)
747  {
748  std::ostringstream error_message;
749  error_message << "The flux vector has the wrong number of entries, "
750  << flux.size() << ", whereas it should be at least "
751  << num_entries << std::endl;
752  throw OomphLibError(error_message.str(),
753  "RefineableNavierStokesEquations::get_Z2_flux()",
755  }
756 #endif
757 
758  // Get strain rate matrix
759  DenseMatrix<double> strainrate(el_dim);
760  DenseMatrix<double> stress(el_dim,el_dim,0.0);
761 
762  // get strainrate
763  this->strain_rate(s,strainrate);
764  double second_invariant_strain=
766 
767  // get viscosity
768  double viscosity=this->Constitutive_eqn_pt
769  ->viscosity(second_invariant_strain);
770 
771  // Calculate the stress
772  for(unsigned i=0;i<el_dim;i++)
773  {
774  for(unsigned j=0;j<el_dim;j++)
775  {
776  stress(i,j)=viscosity*strainrate(i,j);
777  }
778  }
779 
780  // get the second invariant of the stress tensor
781  //double second_invariant_stress=
782  // SecondInvariantHelper::second_invariant(stress);
783 
784  // Pack into flux Vector
785  unsigned icount=0;
786 
787  // identify whether material is yielded (0) or not (1)
788  double yield=0.0;
789  //if(sqrt(std::fabs(second_invariant_stress))
790  // >= Problem_Parameter::Yield_stress)
791  // obacht
792  if(std::fabs(second_invariant_strain) >
794  {
795  yield=1.0;
796  }
797 
798 
799  // Add bias to create lots of refinement near yield surface
800  // by creating a jump in the z2 flux (Note: only makes sense if
801  // refinement happens at every timestep, otherwise really fine
802  // region gets immediately left behind by rapidly moving
803  // yield surface
804  bool add_yield_bias=false;
805  if (!add_yield_bias) yield=0.0;
806 
807  // Start with diagonal terms
808  for(unsigned i=0;i<el_dim;i++)
809  {
810  // Force more refinement at yield surface by adding yield value
811  // hierher: This does the right thing but triangle can't handle the refinement
812  // properly. Mesh seems ok though. MH will investigate triangle mesh adaptation
813  // separately.
814  flux[icount]=strainrate(i,i)+yield;
815  icount++;
816  }
817 
818  //Off diagonals row by row
819  for(unsigned i=0;i<el_dim;i++)
820  {
821  for(unsigned j=i+1;j<el_dim;j++)
822  {
823  // force more refinement at yield surface by adding yield value
824  flux[icount]=strainrate(i,j)+yield;
825  icount++;
826  }
827  }
828  }
void flux(const double &time, const Vector< double > &x, double &flux)
Get flux applied along boundary x=0.
Definition: pretend_melt.cc:59
Real fabs(const Real &a)
Definition: boostmultiprec.cpp:117
double Critical_strain_rate
Critical strain rate.
Definition: axisym_vibrating_shell_non_newtonian.cc:210
double second_invariant(const DenseMatrix< double > &tensor)
Compute second invariant of tensor.
Definition: oomph_utilities.cc:163

References oomph::Problem_Parameter::Critical_strain_rate, el_dim, boost::multiprecision::fabs(), ProblemParameters::flux(), i, j, OOMPH_EXCEPTION_LOCATION, s, and oomph::SecondInvariantHelper::second_invariant().

◆ latest_fixed_point_iteration_guess_for_strain_rate()

void latest_fixed_point_iteration_guess_for_strain_rate ( const unsigned ipt,
DenseMatrix< double > &  strainrate 
) const

Return latest guess (obtained via fixed point iteration) for strain rate at integration point ipt

120  {
121  for (unsigned i=0;i<el_dim;i++)
122  {
123  for (unsigned j=0;j<el_dim;j++)
124  {
125  strainrate(i,j)=
127  }
128  }
129  }
Vector< Vector< DenseMatrix< double > > > Fixed_point_iteration_guess_for_strain_rate
Current best guess for strain rate tensor (fixed point iteration)
Definition: overloaded_cartesian_element_body.h:1163

References Aitken_index, el_dim, Fixed_point_iteration_guess_for_strain_rate, i, and j.

Referenced by extrapolated_strain_rate(), and square_of_norm_of_fixed_point().

◆ MyTaylorHoodElement()

Constructor initialise error and set default for number of previous history values to be used for extrapolation of strain rate

54  {
55  el_dim=2;
56  Error=0.0;
60 
61  // Make space for fixed point iteration on strain rate
62  unsigned fp_n_val = 3;
64  unsigned n_intpt = integral_pt()->nweight();
65  for (unsigned val=0;val<fp_n_val;val++)
66  {
68  for (unsigned ipt=0;ipt<n_intpt;ipt++)
69  {
71  el_dim,
72  0.0);
73  }
74  }
75 
76  Aitken_index=0;
77  }
val
Definition: calibrate.py:119
double Error
Storage for elemental error estimate – used for post-processing.
Definition: overloaded_cartesian_element_body.h:33

References Aitken_index, el_dim, Error, Fixed_point_iteration_guess_for_strain_rate, Nprev_for_extrapolation_of_strain_rate, Use_aitken_extrapolation, Use_fixed_point_for_strain_rate, and calibrate::val.

◆ nprev_for_extrapolation_of_strain_rate()

unsigned& nprev_for_extrapolation_of_strain_rate ( )

Number of previous history values to be used for extrapolation of strain rate

83  {
85  }

References Nprev_for_extrapolation_of_strain_rate.

◆ output()

void output ( std::ostream &  outfile,
const unsigned nplot 
)

Overload output function.

494  {
495 
496  // Vector of local coordinates
497  Vector<double> s(el_dim);
498 
499  // Acceleration
500  Vector<double> dudt(el_dim);
501 
502  // Mesh velocity
503  Vector<double> mesh_veloc(el_dim,0.0);
504 
505  // Tecplot header info
506  outfile << tecplot_zone_string(nplot);
507 
508  // Find out how many nodes there are
509  unsigned n_node = nnode();
510 
511  // Get continuous time from timestepper of first node
512  //double time=node_pt(0)->time_stepper_pt()->time_pt()->time();
513 
514  //Set up memory for the shape functions
515  Shape psif(n_node);
516  DShape dpsifdx(n_node,el_dim);
517 
518  // Loop over plot points
519  unsigned num_plot_points=nplot_points(nplot);
520  for (unsigned iplot=0;iplot<num_plot_points;iplot++)
521  {
522 
523  // Get local coordinates of plot point
524  get_s_plot(iplot,nplot,s);
525 
526  //Call the derivatives of the shape and test functions
527  dshape_eulerian(s,psif,dpsifdx);
528 
529  //Allocate storage
530  Vector<double> mesh_veloc(el_dim,0.0);
531  Vector<double> int_x(el_dim,0.0);
532  Vector<double> dudt(el_dim,0.0);
533  Vector<double> dudt_ALE(el_dim,0.0);
534  DenseMatrix<double> interpolated_dudx(el_dim,el_dim,0.0);
535 
536  // //Initialise everything to zero
537  // for(unsigned i=0;i<el_dim;i++)
538  // {
539  // mesh_veloc[i]=0.0;
540  // dudt[i]=0.0;
541  // dudt_ALE[i]=0.0;
542  // for(unsigned j=0;j<el_dim;j++)
543  // {
544  // interpolated_dudx(i,j) = 0.0;
545  // }
546 
547  // int_x[i] = interpolated_x(s,i);
548  // }
549 
550  //Calculate velocities and derivatives
551 
552  //Loop over directions
553  for(unsigned i=0;i<el_dim;i++)
554  {
555  //Get the index at which velocity i is stored
556  unsigned u_nodal_index = u_index_nst(i);
557  // Loop over nodes
558  for(unsigned l=0;l<n_node;l++)
559  {
560  dudt[i]+=du_dt_nst(l,u_nodal_index)*psif[l];
561  mesh_veloc[i]+=dnodal_position_dt(l,i)*psif[l];
562  }
563  }
564 
565  //Loop over directions
566  for(unsigned i=0;i<el_dim;i++)
567  {
568  //Get the index at which velocity i is stored
569  unsigned u_nodal_index = u_index_nst(i);
570  // Loop over nodes
571  for(unsigned l=0;l<n_node;l++)
572  {
573  //Loop over derivative directions for velocity gradients
574  for(unsigned j=0;j<el_dim;j++)
575  {
576  interpolated_dudx(i,j) += nodal_value(l,u_nodal_index)*
577  dpsifdx(l,j);
578  }
579  }
580  }
581 
582  // Get dudt in ALE form (incl mesh veloc)
583  for(unsigned i=0;i<el_dim;i++)
584  {
585  dudt_ALE[i]=dudt[i];
586  for (unsigned k=0;k<el_dim;k++)
587  {
588  dudt_ALE[i]-=mesh_veloc[k]*interpolated_dudx(i,k);
589  }
590  }
591 
592 
593  // Actual rate of strain
594  DenseMatrix<double> rate_of_strain(el_dim,el_dim,0.0);
595  this->strain_rate(s,rate_of_strain);
596 
597  // Extrapolated (or recycle actual one if there's no extrapol)
598  DenseMatrix<double> rate_of_strain_extrapol(rate_of_strain);
599  if (Use_extrapolated_strainrate_to_compute_second_invariant)
600  {
601  this->extrapolated_strain_rate(s,rate_of_strain_extrapol);
602  }
603 
604 
605  // Get associated invariants
606  double second_invariant_strain=
608  double second_invariant_strain_extrapol=
609  SecondInvariantHelper::second_invariant(rate_of_strain_extrapol);
610 
611  // Get viscosity hierher see above; compute this through the
612  // equation/element (not directly via the constitutive equation)
613  double viscosity=this->Constitutive_eqn_pt
614  ->viscosity(second_invariant_strain_extrapol);
615 
616  // Stress
617  DenseMatrix<double> stress(el_dim,el_dim,0.0);
618 
619  // Calculate the stress
620  for(unsigned i=0;i<el_dim;i++)
621  {
622  for(unsigned j=0;j<el_dim;j++)
623  {
624  stress(i,j)=viscosity*rate_of_strain(i,j);
625  }
626  }
627 
628  double second_invariant_stress=
630 
631  // Flag indicating if material has yielded (1.0) or not (0.0)
632  double yield=0.0;
633 
634  // identify whether material is yielded (1) or not (0)
635  if (sqrt(std::fabs(second_invariant_stress))
637  {
638  yield=1.0;
639  }
640 
641  // Coordinates
642  for(unsigned i=0;i<el_dim;i++)
643  {
644  outfile << interpolated_x(s,i) << " ";
645  }
646 
647  // Velocities
648  for(unsigned i=0;i<el_dim;i++)
649  {
650  outfile << interpolated_u_nst(s,i) << " ";
651  }
652 
653  // Pressure
654  outfile << interpolated_p_nst(s) << " ";
655 
656  // Accelerations
657  for(unsigned i=0;i<el_dim;i++)
658  {
659  outfile << dudt_ALE[i] << " ";
660  }
661 
662  // Mesh velocity
663  //for(unsigned i=0;i<el_dim;i++)
664  // {
665  // outfile << mesh_veloc[i] << " ";
666  // }
667 
668  // History values of coordinates
669  //unsigned n_prev=node_pt(0)->position_time_stepper_pt()->ntstorage();
670  //for (unsigned t=1;t<n_prev-2;t++)
671  // {
672  // for(unsigned i=0;i<el_dim;i++)
673  // {
674  // outfile << interpolated_x(t,s,i) << " ";
675  // }
676  // }
677 
678  // History values of velocities
679  //n_prev=node_pt(0)->time_stepper_pt()->ntstorage();
680  //for (unsigned t=1;t<n_prev-2;t++)
681  // {
682  // for(unsigned i=0;i<el_dim;i++)
683  // {
684  // outfile << interpolated_u_nst(t,s,i) << " ";
685  // }
686  // }
687 
688  //outfile << rate_of_strain(0,0) << " ";
689 
690  //outfile << rate_of_strain(1,1) << " ";
691 
692  //outfile << rate_of_strain(0,1) << " ";
693 
694  //outfile << stress(0,0) << " ";
695 
696  //outfile << stress(1,1) << " ";
697 
698  //outfile << stress(0,1) << " ";
699 
700  outfile << second_invariant_strain << " ";
701  outfile << second_invariant_strain_extrapol << " ";
702  outfile << second_invariant_stress << " ";
703 
704  outfile << viscosity << " ";
705 
706  outfile << yield << " ";
707 
708  outfile << Error << " ";
709 
710  outfile << size() << " ";
711 
712  // Rate of strain at previous timestep
713  //this->strain_rate(1,s,rate_of_strain);
714  //outfile << rate_of_strain(0,0) << " ";
715  //outfile << rate_of_strain(1,1) << " ";
716  //outfile << rate_of_strain(0,1) << " ";
717 
718 
719  // Rate of strain at second previous timestep
720  //this->strain_rate(2,s,rate_of_strain);
721  //outfile << rate_of_strain(0,0) << " ";
722  //outfile << rate_of_strain(1,1) << " ";
723  //outfile << rate_of_strain(0,1) << " ";
724 
725  // Extrapolated rate of strain
726  //outfile << rate_of_strain_extrapol(0,0) << " ";
727  //outfile << rate_of_strain_extrapol(1,1) << " ";
728  //outfile << rate_of_strain_extrapol(0,1) << " ";
729 
730  outfile << std::endl;
731 
732  }
733 
734  // Write tecplot footer (e.g. FE connectivity lists)
735  write_tecplot_zone_footer(outfile,nplot);
736  }
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
char char char int int * k
Definition: level2_impl.h:374
double Yield_stress
have a generic yield stress, required for the output function
Definition: axisym_vibrating_shell_non_newtonian.cc:149

References el_dim, Error, extrapolated_strain_rate(), boost::multiprecision::fabs(), i, j, k, s, oomph::SecondInvariantHelper::second_invariant(), size, sqrt(), and oomph::Problem_Parameter::Yield_stress.

◆ set_error()

void set_error ( const double error)

Set error value for post-processing.

440 {Error=error;}
int error
Definition: calibrate.py:297

References calibrate::error, and Error.

◆ square_of_l2_norm()

double square_of_l2_norm ( )

Get square of L2 norm of velocity.

1031  {
1032 
1033  // Initalise
1034  double sum=0.0;
1035 
1036  //Find out how many nodes there are
1037  unsigned n_node = nnode();
1038 
1039  //Find the indices at which the local velocities are stored
1040  unsigned u_nodal_index[el_dim+1];
1041  for(unsigned i=0;i<el_dim;i++) {u_nodal_index[i] = u_index_nst(i);}
1042 
1043  //Set up memory for the velocity shape fcts
1044  Shape psif(n_node);
1045  DShape dpsidx(n_node,el_dim);
1046 
1047  //Number of integration points
1048  unsigned n_intpt = integral_pt()->nweight();
1049 
1050  //Set the Vector to hold local coordinates
1051  Vector<double> s(el_dim);
1052 
1053  //Loop over the integration points
1054  for(unsigned ipt=0;ipt<n_intpt;ipt++)
1055  {
1056  //Assign values of s
1057  for(unsigned i=0;i<el_dim;i++) s[i] = integral_pt()->knot(ipt,i);
1058 
1059  //Get the integral weight
1060  double w = integral_pt()->weight(ipt);
1061 
1062  // Call the derivatives of the veloc shape functions
1063  // (Derivs not needed but they are free)
1064  double J = this->dshape_eulerian_at_knot(ipt,psif,dpsidx);
1065 
1066  //Premultiply the weights and the Jacobian
1067  double W = w*J;
1068 
1069  //Calculate velocities
1070  Vector<double> interpolated_u(el_dim,0.0);
1071 
1072  // Loop over nodes
1073  for(unsigned l=0;l<n_node;l++)
1074  {
1075  //Loop over directions
1076  for(unsigned i=0;i<el_dim;i++)
1077  {
1078  //Get the nodal value
1079  double u_value = raw_nodal_value(l,u_nodal_index[i]);
1080  interpolated_u[i] += u_value*psif[l];
1081  }
1082  }
1083 
1084  //Assemble square of L2 norm
1085  for(unsigned i=0;i<el_dim;i++)
1086  {
1087  sum+=interpolated_u[i]*interpolated_u[i]*W;
1088  }
1089  }
1090 
1091  return sum;
1092 
1093  }
JacobiRotation< float > J
Definition: Jacobi_makeJacobi.cpp:3
RowVector3d w
Definition: Matrix_resize_int.cpp:3
@ W
Definition: quadtree.h:63

References el_dim, i, J, s, w, and oomph::QuadTreeNames::W.

◆ square_of_norm_of_fixed_point()

double square_of_norm_of_fixed_point ( double norm_squared,
double latest_guess_norm_squared,
double error_norm_squared 
)

Get square of L2 norms of (i) current strainrate, (ii) its latest guess from fixed point iteration, (iii) difference between the two. Returns area as a check

971  {
972  // Initialise
973  norm_squared=0.0;
974  latest_guess_norm_squared=0.0;
975  error_norm_squared=0.0;
976  double area=0.0;
977 
978  //Number of integration points
979  unsigned n_intpt = integral_pt()->nweight();
980 
981  //Set the Vector to hold local coordinates
982  Vector<double> s(2);
983 
984  //Loop over the integration points
985  for(unsigned ipt=0;ipt<n_intpt;ipt++)
986  {
987  //Assign values of s
988  for(unsigned i=0;i<2;i++) s[i] = integral_pt()->knot(ipt,i);
989 
990  //Get the integral weight
991  double w = integral_pt()->weight(ipt);
992 
993  // Get Jacobain of mapping between local and Eulerian coords
994  double J = this->J_eulerian(s);
995 
996  //Premultiply the weights and the Jacobian
997  double W = w*J;
998 
999  // Invariant of actual strain rate tensor
1000  DenseMatrix<double> current_strainrate(el_dim,el_dim,0.0);
1001  this->strain_rate(s,current_strainrate);
1002  double invariant=
1003  SecondInvariantHelper::second_invariant(current_strainrate);
1004 
1005  // Invariant of extrapolated strain rate tensor
1006  // (or recycle actual one if there's no extrapol)
1007  DenseMatrix<double> latest_guess_strainrate(el_dim,el_dim,0.0);
1009  ipt, latest_guess_strainrate);
1010 
1011  double latest_guess_invariant=
1012  SecondInvariantHelper::second_invariant(latest_guess_strainrate);
1013 
1014  //Assemble norms
1015  norm_squared+=
1016  invariant*invariant*W;
1017  latest_guess_norm_squared+=
1018  latest_guess_invariant*latest_guess_invariant*W;
1019  error_norm_squared+=
1020  (latest_guess_invariant-invariant)*
1021  (latest_guess_invariant-invariant)*W;
1022  area+=W;
1023  }
1024 
1025  return area;
1026 
1027  }

References el_dim, i, J, latest_fixed_point_iteration_guess_for_strain_rate(), s, oomph::SecondInvariantHelper::second_invariant(), w, and oomph::QuadTreeNames::W.

◆ square_of_norm_of_strain_invariant()

double square_of_norm_of_strain_invariant ( double norm_squared,
double extrapolated_norm_squared,
double error_norm_squared 
)

Get square of L2 norms of (i) strain invariant, (ii) its extrapolated value, (iii) difference between the two. Returns area as a check

838  {
839  // Initialise
840  norm_squared=0.0;
841  extrapolated_norm_squared=0.0;
842  error_norm_squared=0.0;
843  double area=0.0;
844 
845  //Number of integration points
846  unsigned n_intpt = integral_pt()->nweight();
847 
848  //Set the Vector to hold local coordinates
849  Vector<double> s(el_dim);
850 
851  //Loop over the integration points
852  for(unsigned ipt=0;ipt<n_intpt;ipt++)
853  {
854  //Assign values of s
855  for(unsigned i=0;i<el_dim;i++) s[i] = integral_pt()->knot(ipt,i);
856 
857  //Get the integral weight
858  double w = integral_pt()->weight(ipt);
859 
860  // Get Jacobain of mapping between local and Eulerian coords
861  double J = this->J_eulerian(s);
862 
863  //Premultiply the weights and the Jacobian
864  double W = w*J;
865 
866  // Invariant of actual strain rate tensor
867  DenseMatrix<double> strainrate(el_dim,el_dim,0.0);
868  this->strain_rate(s,strainrate);
869  double invariant=SecondInvariantHelper::second_invariant(strainrate);
870 
871  // Invariant of extrapolated strain rate tensor
872  // (or recycle actual one if there's no extrapol)
873  DenseMatrix<double> extrapolated_strainrate(strainrate);
874  if (Use_extrapolated_strainrate_to_compute_second_invariant)
875  {
876  this->extrapolated_strain_rate(s,extrapolated_strainrate);
877  }
878  double extrapolated_invariant=
879  SecondInvariantHelper::second_invariant(extrapolated_strainrate);
880 
881  //Assemble norms
882  norm_squared+=
883  invariant*invariant*W;
884  extrapolated_norm_squared+=
885  extrapolated_invariant*extrapolated_invariant*W;
886  error_norm_squared+=
887  (extrapolated_invariant-invariant)*
888  (extrapolated_invariant-invariant)*W;
889  area+=W;
890  }
891 
892  return area;
893 
894  }

References el_dim, extrapolated_strain_rate(), i, J, s, oomph::SecondInvariantHelper::second_invariant(), w, and oomph::QuadTreeNames::W.

◆ square_of_norm_of_viscosity()

double square_of_norm_of_viscosity ( double norm_squared,
double extrapolated_norm_squared,
double error_norm_squared 
)

Get square of L2 norms of (i) viscosity, (ii) its extrapolated value, (iii) difference between the two. Returns area as a check

902  {
903  // Initialise
904  norm_squared=0.0;
905  extrapolated_norm_squared=0.0;
906  error_norm_squared=0.0;
907  double area=0.0;
908 
909  //Number of integration points
910  unsigned n_intpt = integral_pt()->nweight();
911 
912  //Set the Vector to hold local coordinates
913  Vector<double> s(el_dim);
914 
915  //Loop over the integration points
916  for(unsigned ipt=0;ipt<n_intpt;ipt++)
917  {
918  //Assign values of s
919  for(unsigned i=0;i<el_dim;i++) s[i] = integral_pt()->knot(ipt,i);
920 
921  //Get the integral weight
922  double w = integral_pt()->weight(ipt);
923 
924  // Get Jacobain of mapping between local and Eulerian coords
925  double J = this->J_eulerian(s);
926 
927  //Premultiply the weights and the Jacobian
928  double W = w*J;
929 
930  // Invariant of actual strain rate tensor
931  DenseMatrix<double> strainrate(el_dim,el_dim,0.0);
932  this->strain_rate(s,strainrate);
933  double invariant=SecondInvariantHelper::second_invariant(strainrate);
934 
935  double viscosity=this->Constitutive_eqn_pt->viscosity(invariant);
936 
937  // Invariant of extrapolated strain rate tensor
938  // (or recycle actual one if there's no extrapol)
939  DenseMatrix<double> extrapolated_strainrate(strainrate);
940  if (Use_extrapolated_strainrate_to_compute_second_invariant)
941  {
942  this->extrapolated_strain_rate(s,extrapolated_strainrate);
943  }
944  double extrapolated_invariant=
945  SecondInvariantHelper::second_invariant(extrapolated_strainrate);
946 
947  double extrapolated_viscosity=
948  this->Constitutive_eqn_pt->viscosity(extrapolated_invariant);
949 
950  //Assemble norms
951  norm_squared+=
952  viscosity*viscosity*W;
953  extrapolated_norm_squared+=
954  extrapolated_viscosity*extrapolated_viscosity*W;
955  error_norm_squared+=
956  (extrapolated_viscosity-viscosity)*
957  (extrapolated_viscosity-viscosity)*W;
958  area+=W;
959  }
960 
961  return area;
962 
963  }

References el_dim, extrapolated_strain_rate(), i, J, s, oomph::SecondInvariantHelper::second_invariant(), w, and oomph::QuadTreeNames::W.

◆ update_latest_fixed_point_iteration_guess_for_strain_rate()

void update_latest_fixed_point_iteration_guess_for_strain_rate ( )

Update latest guess (obtained via fixed point iteration) for strain rate from current actual strain rate

135  {
136  Vector<double> s(el_dim);
137  DenseMatrix<double> strain_rate(el_dim,el_dim,0.0);
138  unsigned n_intpt = integral_pt()->nweight();
139  for (unsigned ipt=0;ipt<n_intpt;ipt++)
140  {
141  for(unsigned i=0;i<el_dim;i++) s[i] = integral_pt()->knot(ipt,i);
142  this->strain_rate(s,strain_rate);
143  for (unsigned i=0;i<el_dim;i++)
144  {
145  for (unsigned j=0;j<el_dim;j++)
146  {
148  =strain_rate(i,j);
149  }
150  }
151  }
152 
153  if(Aitken_index == 2)
154  {
155  Aitken_index = 0;
156  for (unsigned ipt=0;ipt<n_intpt;ipt++)
157  {
158  for (unsigned i=0;i<el_dim;i++)
159  {
160  for (unsigned j=0;j<el_dim;j++)
161  {
162  double v0 =
164  double v1 =
166  double v2 =
168 
169  double new_value=v2;
170 
172  {
173  double max_diff=std::max(std::fabs(v1-v0),std::fabs(v2-v1));
174 
175  if(max_diff > 1.0e-16)
176  {
177  new_value=v2-std::pow(v2-v1,2.0)/(v2-2.0*v1+v0);
178  }
179  }
180 
182  new_value;
183 
184  }
185  }
186  }
187  }
188 
189  Aitken_index++;
190  }
Map< RowVectorXf > v2(M2.data(), M2.size())
M1<< 1, 2, 3, 4, 5, 6, 7, 8, 9;Map< RowVectorXf > v1(M1.data(), M1.size())
#define max(a, b)
Definition: datatypes.h:23
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 pow(const bfloat16 &a, const bfloat16 &b)
Definition: BFloat16.h:625

References Aitken_index, el_dim, boost::multiprecision::fabs(), Fixed_point_iteration_guess_for_strain_rate, i, j, max, Eigen::bfloat16_impl::pow(), s, Use_aitken_extrapolation, v1(), and v2().

Referenced by enable_fixed_point_iteration_for_strain_rate().

◆ variable_identifier()

std::string variable_identifier ( )

Return variable identifier.

444  {
445  std::string txt="VARIABLES=";
446  txt+="\"x\","; // 1
447  txt+="\"y\","; // 2
448  txt+="\"u\","; // 3
449  txt+="\"v\","; // 4
450  txt+="\"p\","; // 5
451  txt+="\"du/dt\","; // 6
452  txt+="\"dv/dt\","; // 7
453  //txt+="\"u_m\","; // 8
454  //txt+="\"v_m\","; // 9
455  //txt+="\"x_h1\","; // 10
456  //txt+="\"y_h1\","; // 11
457  //txt+="\"x_h2\","; // 12
458  //txt+="\"y_h2\","; // 13
459  //txt+="\"u_h1\","; // 14
460  //txt+="\"v_h1\","; // 15
461  //txt+="\"u_h2\","; // 16
462  //txt+="\"v_h2\","; // 17
463  //txt+="\"strain_rate(0,0)\","; // 18
464  //txt+="\"strain_rate(1,1)\","; // 19
465  //txt+="\"strain_rate(0,1)\","; // 20
466  //txt+="\"stress(0,0)\","; // 21
467  //txt+="\"stress(1,1)\","; // 22
468  //txt+="\"stress(0,1)\","; // 23
469  txt+="\"invariant_of_strain_rate\","; // 24
470  txt+="\"invariant_of_strain_rate_extrapol\","; // 25
471  txt+="\"invariant_of_stress\","; // 26
472  txt+="\"viscosity\","; // 27
473  txt+="\"yield\","; // 28
474  txt+="\"error\","; // 29
475  txt+="\"size\","; // 30
476  //txt+="\"strain_rate_m1(0,0)\","; //31
477  //txt+="\"strain_rate_m1(1,1)\","; //32
478  //txt+="\"strain_rate_m1(0,1)\","; //33
479  //txt+="\"strain_rate_m2(0,0)\","; //v34
480  //txt+="\"strain_rate_m2(1,1)\","; //v35
481  //txt+="\"strain_rate_m2(0,1)\","; //v36
482  //txt+="\"strain_rate_extrapol(0,0)\","; //v37
483  //txt+="\"strain_rate_extrapol(1,1)\","; //v38
484  //txt+="\"strain_rate_extrapol(0,1)\","; //v39
485 
486  txt+="\n";
487  return txt;
488  }
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286

References oomph::Global_string_for_annotation::string().

Variable Documentation

◆ Aitken_index

unsigned Aitken_index
private

◆ el_dim

unsigned el_dim
private

dimension

Referenced by oomph::DGFaceElement::add_flux_contributions(), oomph::FiniteElement::assemble_local_to_eulerian_jacobian(), oomph::RefineableElement::assemble_local_to_eulerian_jacobian(), oomph::FiniteElement::assemble_local_to_eulerian_jacobian2(), oomph::RefineableElement::assemble_local_to_eulerian_jacobian2(), oomph::SolidFiniteElement::assemble_local_to_lagrangian_jacobian(), oomph::RefineableSolidElement::assemble_local_to_lagrangian_jacobian(), oomph::SolidFiniteElement::assemble_local_to_lagrangian_jacobian2(), oomph::RefineableSolidElement::assemble_local_to_lagrangian_jacobian2(), AirwayReopeningProblem< ELEMENT >::connect_walls(), oomph::FiniteElement::d2shape_eulerian(), oomph::FiniteElement::d2shape_eulerian_at_knot(), oomph::SolidFiniteElement::d2shape_lagrangian(), oomph::SolidFiniteElement::d2shape_lagrangian_at_knot(), oomph::FiniteElement::d2shape_local_at_knot(), oomph::FiniteElement::d_dshape_eulerian_dnodal_coordinates(), ModalPRefineableQPoissonElement< DIM >::dbasis_eulerian(), ModalPRefineableQPoissonElement< DIM >::dbasis_eulerian_at_knot(), ModalPRefineableQPoissonElement< DIM >::dbasis_local_at_knot(), oomph::TPVDElement< DIM, NNODE_1D >::describe_local_dofs(), oomph::FiniteElement::dJ_eulerian_at_knot(), oomph::FiniteElement::dJ_eulerian_dnodal_coordinates(), CantileverProblem< ELEMENT >::doc_solution(), oomph::QTaylorHoodSpaceTimeElement< DIM >::dshape_and_dtest_eulerian_at_knot_nst(), oomph::QTaylorHoodMixedOrderSpaceTimeElement< DIM >::dshape_and_dtest_eulerian_at_knot_nst(), oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >::dshape_and_dtest_eulerian_at_knot_ust_heat(), oomph::QUnsteadyHeatMixedOrderSpaceTimeElement< SPATIAL_DIM, NNODE_1D >::dshape_and_dtest_eulerian_at_knot_ust_heat(), oomph::QTaylorHoodSpaceTimeElement< DIM >::dshape_and_dtest_eulerian_nst(), oomph::QTaylorHoodMixedOrderSpaceTimeElement< DIM >::dshape_and_dtest_eulerian_nst(), oomph::QUnsteadyHeatMixedOrderSpaceTimeElement< SPATIAL_DIM, NNODE_1D >::dshape_and_dtest_eulerian_ust_heat(), oomph::FiniteElement::dshape_eulerian(), oomph::FiniteElement::dshape_eulerian_at_knot(), oomph::SolidFiniteElement::dshape_lagrangian(), oomph::SolidFiniteElement::dshape_lagrangian_at_knot(), oomph::FiniteElement::dshape_local_at_knot(), extrapolated_strain_rate(), oomph::FluidInterfaceElement::fill_in_generic_residual_contribution_interface(), oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::get_flux(), oomph::QSolidElementBase::get_x_and_xi(), oomph::QElementBase::get_x_from_macro_element(), get_Z2_flux(), oomph::SurfactantTransportInterfaceElement::integrate_c(), oomph::SolubleSurfactantTransportInterfaceElement::integrated_C(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::interpolated_du_dt_nst(), oomph::SpaceTimeUnsteadyHeatMixedOrderEquations< SPATIAL_DIM >::interpolated_du_dt_ust_heat(), oomph::SolidFiniteElement::interpolated_dxids(), oomph::FiniteElement::invert_jacobian_mapping(), oomph::SolubleSurfactantTransportInterfaceElement::l2_norm_of_height(), latest_fixed_point_iteration_guess_for_strain_rate(), oomph::FiniteElement::local_to_eulerian_mapping(), oomph::FiniteElement::local_to_eulerian_mapping_diagonal(), oomph::RefineableElement::local_to_eulerian_mapping_diagonal(), oomph::SolidFiniteElement::local_to_lagrangian_mapping(), oomph::SolidFiniteElement::local_to_lagrangian_mapping_diagonal(), oomph::RefineableSolidElement::local_to_lagrangian_mapping_diagonal(), oomph::Multi_domain_functions::locate_zeta_for_local_coordinates(), MyTaylorHoodElement(), oomph::MySolidElement< ELEMENT >::output(), oomph::FluidInterfaceElement::output(), oomph::SurfactantTransportInterfaceElement::output(), oomph::FSISolidTractionElement< ELEMENT, DIM >::output(), output(), oomph::MyTaylorHoodElement< DIM >::output(), oomph::MyCrouzeixRaviartElement::output(), oomph::PoissonFluxElement< ELEMENT >::output(), oomph::ProjectableUnsteadyHeatSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::ProjectableUnsteadyHeatMixedOrderSpaceTimeElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::ProjectableUnsteadyHeatElement< UNSTEADY_HEAT_ELEMENT >::output(), oomph::DGFaceElement::report_info(), oomph::DGFaceElement::setup_neighbour_info(), oomph::NavierStokesSpaceTimeTractionElement< ELEMENT >::shape_and_test_at_knot(), oomph::NavierStokesMixedOrderSpaceTimeTractionElement< ELEMENT >::shape_and_test_at_knot(), oomph::FiniteElement::shape_at_knot(), square_of_l2_norm(), oomph::MyTaylorHoodElement< DIM >::square_of_l2_norm(), oomph::MyCrouzeixRaviartElement::square_of_l2_norm(), square_of_norm_of_fixed_point(), square_of_norm_of_strain_invariant(), square_of_norm_of_viscosity(), oomph::FiniteElement::transform_second_derivatives(), and update_latest_fixed_point_iteration_guess_for_strain_rate().

◆ Error

double Error
private

Storage for elemental error estimate – used for post-processing.

Referenced by MyTaylorHoodElement(), output(), and set_error().

◆ Fixed_point_iteration_guess_for_strain_rate

Vector<Vector<DenseMatrix<double> > > Fixed_point_iteration_guess_for_strain_rate
private

Current best guess for strain rate tensor (fixed point iteration)

Referenced by latest_fixed_point_iteration_guess_for_strain_rate(), MyTaylorHoodElement(), and update_latest_fixed_point_iteration_guess_for_strain_rate().

◆ Nprev_for_extrapolation_of_strain_rate

unsigned Nprev_for_extrapolation_of_strain_rate
private

Number of previous history values to be used for extrapolation of strain rate

Referenced by extrapolated_strain_rate(), MyTaylorHoodElement(), and nprev_for_extrapolation_of_strain_rate().

◆ Use_aitken_extrapolation

bool Use_aitken_extrapolation
private

◆ Use_fixed_point_for_strain_rate

bool Use_fixed_point_for_strain_rate
private

Boolean to indicate if we're using a fixed point iteration for the strain rate that forms the basis for the invariant

Referenced by disable_fixed_point_iteration_for_strain_rate(), enable_fixed_point_iteration_for_strain_rate(), extrapolated_strain_rate(), and MyTaylorHoodElement().