Global_Parameters Namespace Reference

Namespace for global parameters. More...

Enumerations

enum  { Parallel_flow_lagrange_multiplier_id , FSI_interface_displacement_lagrange_multiplier_id }
 
enum  { Parallel_flow_lagrange_multiplier_id , FSI_interface_displacement_lagrange_multiplier_id }
 

Functions

void boundary_traction (const double &time, const Vector< double > &x, const Vector< double > &n, Vector< double > &result)
 The traction function at r=Rmin: (t_r, t_z, t_theta) More...
 
void body_force (const double &time, const Vector< double > &x, Vector< double > &result)
 
void exact_solution_th (const Vector< double > &x, Vector< double > &u)
 
double u_r (const double &time, const Vector< double > &x)
 Calculate the time dependent form of the r-component of displacement. More...
 
double u_z (const double &time, const Vector< double > &x)
 Calculate the time dependent form of the z-component of displacement. More...
 
double u_theta (const double &time, const Vector< double > &x)
 Calculate the time dependent form of the theta-component of displacement. More...
 
double d_u_r_dt (const double &time, const Vector< double > &x)
 Calculate the time dependent form of the r-component of velocity. More...
 
double d_u_z_dt (const double &time, const Vector< double > &x)
 Calculate the time dependent form of the z-component of velocity. More...
 
double d_u_theta_dt (const double &time, const Vector< double > &x)
 Calculate the time dependent form of the theta-component of velocity. More...
 
double d2_u_r_dt2 (const double &time, const Vector< double > &x)
 Calculate the time dependent form of the r-component of acceleration. More...
 
double d2_u_z_dt2 (const double &time, const Vector< double > &x)
 Calculate the time dependent form of the z-component of acceleration. More...
 
double d2_u_theta_dt2 (const double &time, const Vector< double > &x)
 Calculate the time dependent form of the theta-component of acceleration. More...
 
void exact_solution (const double &time, const Vector< double > &x, Vector< double > &u)
 
std::complex< doubleEigenfunction_normalisation (1.0, 0.0)
 
TimeHarmonicIsotropicElasticityTensor E (Nu)
 The elasticity tensor for the solid. More...
 
void update_parameter_values ()
 Function to update dependent parameter values. More...
 
void solid_boundary_displacement (const Vector< double > &x, Vector< std::complex< double > > &u)
 Displacement field on inner boundary of solid. More...
 
std::complex< doubleHankelH1 (const double &k, const double &x)
 Interface to Hankel function in maple style. More...
 
std::complex< doubleaxisym_coefficient ()
 
void exact_axisym_potential (const Vector< double > &x, Vector< double > &soln)
 Exact solution for Helmholtz potential for axisymmetric solution. More...
 
double exact_axisym_radiated_power ()
 Exact radiated power for axisymmetric solution. More...
 
Vector< doubleOmega_sq (2, 0.0)
 Square of non-dim frequency for the two regions – dependent variable! More...
 
Vector< doubleDensity_ratio (2, 0.1)
 Density ratio for the two regions: solid to fluid. More...
 
void pressure_load (const Vector< double > &x, const Vector< double > &n, Vector< std::complex< double > > &traction)
 Pressure load (real and imag part) More...
 
std::complex< doubleNu (std::complex< double >(0.3, 0.0))
 Poisson's ratio Nu. More...
 
std::complex< doubleOmega_sq (std::complex< double >(100.0, 0.0))
 Non-dim square of frequency for solid – dependent variable! More...
 
Vector< std::complex< double > > E (2, std::complex< double >(1.0, 0.0))
 Define the non-dimensional Young's modulus. More...
 
Vector< std::complex< double > > Omega_sq (2, std::complex< double >(100.0, 0.0))
 Non-dim square of frequency for solid – dependent variable! More...
 
Vector< doubleDensity_ratio (2, 1.0)
 Density ratio: solid to fluid. More...
 
void press_load (const Vector< double > &xi, const Vector< double > &x, const Vector< double > &N, Vector< double > &load)
 Load function for wall. More...
 
double flux (const double &t)
 Flux: Pulsatile flow. More...
 
void gravity (const double &time, const Vector< double > &xi, Vector< double > &b)
 Non-dimensional gravity as body force. More...
 
void set_parameters (const string &case_id)
 Set parameters for the various test cases. More...
 
bool is_on_fsi_boundary (Node *nod_pt)
 Boolean to identify if node is on fsi boundary. More...
 
void prescribed_inflow_traction (const double &t, const Vector< double > &x, const Vector< double > &n, Vector< double > &traction)
 Applied traction on fluid at the inflow boundary. More...
 
void prescribed_outflow_traction (const double &t, const Vector< double > &x, const Vector< double > &n, Vector< double > &traction)
 Applied traction on fluid at the inflow boundary. More...
 
void exact_solution (const Vector< double > &x, Vector< double > &u)
 The exact solution for infinite depth case. More...
 
void periodic_traction (const double &time, const Vector< double > &x, const Vector< double > &n, Vector< double > &result)
 The traction function. More...
 
double blend (const Vector< double > &x, const Vector< double > &x_c)
 Blend function, centred at x_c. More...
 
Vector< doublegrad_blend (const Vector< double > &x, const Vector< double > &x_c)
 Gradient of blend function, centred at x_c. More...
 
Vector< doublevelocity_couette (const Vector< double > &x)
 Couette flow. More...
 
double pressure_couette (const Vector< double > &x)
 Couette Pressure. More...
 
void exact_couette (const Vector< double > &x, Vector< double > &soln)
 Combined exact solution (u,v,p) More...
 
Vector< doublevelocity_pseudo_singularity_for_couette (const Vector< double > &x)
 Pseudo_singularity for computation of Couette flow. More...
 
Vector< Vector< double > > grad_velocity_pseudo_singularity_for_couette (const Vector< double > &x)
 Pseudo_singularity for computation of Couette flow: grad[i][j] = du_i/dx_j. More...
 
double pressure_pseudo_singularity_for_couette (const Vector< double > &x)
 Pseudo_singularity for computation of Couette flow. More...
 
Vector< doubleblended_velocity_pseudo_singularity_for_couette (const Vector< double > &x)
 Blended Pseudo_singularity for computation of Couette flow. More...
 
Vector< Vector< double > > blended_grad_velocity_pseudo_singularity_for_couette (const Vector< double > &x)
 
double blended_pressure_pseudo_singularity_for_couette (const Vector< double > &x)
 Blended Pseudo_singularity for computation of Couette flow. More...
 
Vector< doublevelocity_singularity1 (const Vector< double > &x)
 Function that computes the fitting velocity solution near the corner (0,0) More...
 
Vector< doublevelocity_singularity2 (const Vector< double > &x)
 Function that computes the fitting velocity solution near the corner (1,0) More...
 
Vector< Vector< double > > grad_velocity_singularity1 (const Vector< double > &coord)
 
Vector< Vector< double > > grad_velocity_singularity2 (const Vector< double > &coord)
 
double pressure_singularity1 (const Vector< double > &x)
 Function that computes the fitting pressure solution near the corner (0,0) More...
 
double pressure_singularity2 (const Vector< double > &x)
 Function that computes the fitting pressure solution near the corner (1,0) More...
 
Vector< doublegrad_pressure_singularity1 (const Vector< double > &coord)
 
void analytic_solution1 (const Vector< double > &x, Vector< double > &solution)
 Function that computes the fitting solutions near the corner (0,0) More...
 
void analytic_solution2 (const Vector< double > &x, Vector< double > &solution)
 Function that computes the fitting solutions near the corner (1,0) More...
 
Vector< doubleG (3)
 Gravity. More...
 
void compute_dependent_parameters ()
 Function to compute dependent parameters. More...
 
void Hankel_first (const unsigned &n, const double &x, Vector< std::complex< double > > &h, Vector< std::complex< double > > &hp)
 
void exact_u (const Vector< double > &x, Vector< double > &u)
 Exact solution as a Vector: {u_x_real, u_y_real, u_x_imag, u_y_imag}. More...
 
void body_force (const Vector< double > &x, Vector< std::complex< double > > &b)
 Body force. More...
 
void constant_pressure (const Vector< double > &xi, const Vector< double > &x, const Vector< double > &n, Vector< double > &traction)
 
std::complex< doubleNu (0.3, 0.05)
 Define Poisson's ratio Nu. More...
 
std::complex< doubleE (1.0, 0.01)
 Define the non-dimensional Young's modulus. More...
 
std::complex< doubleOmega_sq (10.0, 5.0)
 
const std::complex< doubleI (0.0, 1.0)
 Define the imaginary unit. More...
 
void boundary_traction (const Vector< double > &x, const Vector< double > &n, Vector< std::complex< double > > &result)
 The traction function at r=rmin: (t_r, t_z, t_theta) More...
 
std::complex< doubleOmega_sq (10.0, 0.0)
 
void solid_boundary_displacement (const Vector< double > &x, Vector< double > &u)
 Real-valued, radial displacement field on inner boundary. More...
 
void constant_pressure (const Vector< double > &x, const Vector< double > &n, Vector< std::complex< double > > &traction)
 Constant pressure load (real and imag part) More...
 
double BesselY (const double &n, const double &x)
 Helper function to evaluate Y_n(x) from bloody maple output. More...
 
double BesselJ (const double &n, const double &x)
 Helper function to evaluate J_n(x) from bloody maple output. More...
 

Variables

double Nu = 0.3
 Define Poisson's ratio Nu. More...
 
double E = 1.0
 Define the non-dimensional Young's modulus. More...
 
double Lambda = E*Nu/(1.0+Nu)/(1.0-2.0*Nu)
 Lame parameters. More...
 
double Mu = E/2.0/(1.0+Nu)
 
double Omega_sq = 0.5
 Square of the frequency of the time dependence. More...
 
unsigned Nr = 5
 Number of elements in r-direction. More...
 
unsigned Nz = 10
 Number of elements in z-direction. More...
 
double Lr = 1.0
 Length of domain in r direction. More...
 
double Lz = 2.0
 Length of domain in z-direction. More...
 
double Rmin = 0.1
 Set up min r coordinate. More...
 
double Zmin = 0.3
 Set up min z coordinate. More...
 
double Rmax = Rmin+Lr
 Set up max r coordinate. More...
 
double Zmax = Zmin+Lz
 Set up max z coordinate. More...
 
double Re =75.0
 reynolds number More...
 
double B =0.7
 
double Alpha =0.0
 Peakiness parameter for pressure load. More...
 
bool Read_in_eigenfunction_from_disk = true
 
double K_squared =10.0
 Square of wavenumber for the Helmholtz equation. More...
 
double Outer_radius =4.0
 Radius of outer boundary of Helmholtz domain. More...
 
double Q =0.0
 FSI parameter. More...
 
double H_coating =0.3
 Non-dim thickness of elastic coating. More...
 
double Density_ratio =0.0
 Density ratio: solid to fluid. More...
 
unsigned N =0
 
string Directory ="RESLT"
 Output directory. More...
 
unsigned El_multiplier =1
 Multiplier for number of elements. More...
 
unsigned ABC_order =3
 Order of absorbing/appproximate boundary condition. More...
 
Vector< TimeHarmonicIsotropicElasticityTensor * > E_pt
 The elasticity tensors for the two regions. More...
 
double P = 0.1
 Uniform pressure. More...
 
int Fourier_wavenumber =0
 Define azimuthal Fourier wavenumber. More...
 
unsigned M =4
 
double L =12.0
 tube length More...
 
double Lup =1.5
 upstream length More...
 
double Ldown =3.0
 downstream length More...
 
double H =0.15
 wall thickness More...
 
unsigned N_slice =4
 number of axial slices in fluid mesh More...
 
ConstitutiveLawConstitutive_law_wall_pt =0
 Pointer to constitutive law for the wall. More...
 
ConstitutiveLawConstitutive_law_pseudo_elastic_pt =0
 Pointer to constitutive law for the pseudo elastic node update elements. More...
 
double Nu_wall =0.3
 
double Nu_pseudo_elastic =0.1
 
double Pcos = 2.0e-4
 Perturbation pressure. More...
 
double Lambda_sq =0.0
 Timescale ratio (non-dim density) for solid. More...
 
double T =1.0
 Period of periodic variation in inflow pressure. More...
 
double Dt =0.01
 Timestep. More...
 
unsigned Nstep_per_period =40
 Number of steps per period. More...
 
unsigned Nperiod =5
 Number of periods. More...
 
double Leaflet_x0 = 1.0
 x-position of root of leaflet More...
 
double Leaflet_height =0.5
 height of leaflet More...
 
double Fluid_length_left =1.0
 length of fluid mesh to left of leaflet More...
 
double Fluid_length_right =3.0
 length of fluid mesh to right of leaflet More...
 
double Fluid_height =1.0
 height of fluid mesh More...
 
unsigned Mesh_nleft =4
 Num elements to left of leaflet in coarse mesh. More...
 
unsigned Mesh_nright =12
 Num elements to right of leaflet in coarse mesh. More...
 
unsigned Mesh_ny1 =2
 Num elements in fluid mesh in y dirn adjacent to leaflet. More...
 
unsigned Mesh_ny2 =2
 Num elements in fluid mesh in y dirn above leaflet. More...
 
double ReSt =50.0
 Womersley number: Product of Reynolds and Strouhal numbers. More...
 
double U_base =1.0
 Min. flux. More...
 
double U_perturbation =0.5
 Max. flux. More...
 
double Lambda_sq_beam =0.0
 Beam mass density. More...
 
string Case_ID ="FSI1"
 Default case ID. More...
 
double St =0.5
 Strouhal number (default assignment for FSI1 test case) More...
 
double Centre_x =2.0
 x position of centre of cylinder More...
 
double Centre_y =2.0
 y position of centre of cylinder More...
 
double Radius =0.5
 Radius of cylinder. More...
 
ConstitutiveLawConstitutive_law_pt =0
 Pointer to constitutive law. More...
 
bool Ignore_fluid_loading =false
 Ignore fluid (default assignment for FSI1 test case) More...
 
double Gravity =0.0
 Non-dim gravity (default assignment for FSI1 test case) More...
 
double Ramp_period =2.0
 Period for ramping up in flux. More...
 
double Min_flux =0.0
 Min. flux. More...
 
double Max_flux =1.0
 Max. flux. More...
 
bool Prescribe_pressure =false
 Boolean to choose if inflow pressure (true) or volume flux are prescribed. More...
 
double P_in_max =0.0025
 Max. inflow pressure (during periodic variation) More...
 
double Period =0.1
 Period of periodic variation in inflow pressure. More...
 
double P_in =0.0
 Fluid pressure on inflow boundary. More...
 
double P_out =-0.25
 Fluid pressure on outflow boundary. More...
 
double Peak_prescribed_flow_rate =-1.0
 Peak prescribed flow rate. More...
 
double Prescribed_flow_rate =Peak_prescribed_flow_rate
 Prescribed flow rate. More...
 
DataP_in_data_pt =0
 
double Amplitude = 1.0
 Amplitude of traction applied. More...
 
bool Finite =false
 
double Lx = 1.0
 Length of domain in x direction. More...
 
double Ly = 2.0
 Length of domain in y direction. More...
 
double Box_half_width = 1.5
 (Half-)width of the box More...
 
double Box_half_length = 1.0
 (Half)height of the box More...
 
std::string Gmsh_command_line_invocation ="/home/mheil/gmesh/bin/bin/gmsh"
 Specify how to call gmsh from the command line. More...
 
double Initial_element_volume =1.0
 
double Pr = 0.73
 Prandtl number. More...
 
double Pe = Re*Pr
 Peclet number. More...
 
double Ra = 0.0
 Rayleigh number. More...
 
Vector< doubleG
 Gravity. More...
 
double Sphere_centre_z = 0.0
 Location of the centre of the sphere on the axis. More...
 
unsigned Nnode_1d =2
 The number of nodes in one direction (default=2) More...
 
unsigned Min_refinement_level =2
 The minimum level of uniform refinement. More...
 
unsigned Add_refinement_level =1
 The additional levels of uniform refinement. More...
 
unsigned N_adaptations =1
 The number of adaptations allowed by the Newton solver. More...
 
unsigned Use_adaptation_flag =0
 
unsigned Pre_smoother_flag =0
 
unsigned Post_smoother_flag =0
 
unsigned Linear_solver_flag =1
 
unsigned Output_management_flag =0
 
unsigned Doc_convergence_flag =0
 
DocInfo Doc_info
 DocInfo object used for documentation of the solution. More...
 
unsigned Element_multiplier = 1
 
unsigned N_x =10
 
unsigned N_y =10
 
double L_x =1.0
 
double L_y =1.0
 
unsigned Direction = 1
 
double R_blend_inner =0.2
 Inner blending radius. More...
 
double R_blend_outer =0.8
 Outer blending radius. More...
 
double A_couette =1.0
 Amplitude of linearly varying part. More...
 
double B_couette =1.0
 Amplitude of singular part. More...
 
Vector< doubleX_c_couette (2, 0.0)
 Random center for blended couette pseudo singularity. More...
 
unsigned Long_run_flag =1
 Flag for long/short run: Default = perform long run. More...
 
unsigned Impulsive_start_flag =0
 
double Visc_Ratio = 2.0
 
double Box_width = 3.0
 
double Box_length = 10.0
 
double Ca = 1.0
 Set the Capillary number. More...
 
double Volume = -16.0*atan(1.0)*Radius*Radius*Radius/3.0
 
double ReInvFr = 0.0
 The Reynolds INverse Froude number. More...
 
double Element_area = 0.01
 helper to set target mesh element size More...
 
double T_start = 0.0
 helpers to time the code More...
 
double T_end = 0.0
 
unsigned N_pml_multiplier = 1
 PML width in elements for the right layer. More...
 
double L_pml_multiplier = 1.0
 
unsigned N_x_right_pml = 8
 PML width in elements for the right layer. More...
 
unsigned N_y_top_pml = 8
 PML width in elements for the top layer. More...
 
unsigned N_x_left_pml = 8
 PML width in elements for the left layer. More...
 
unsigned N_y_bottom_pml = 8
 PML width in elements for the left layer. More...
 
double Width_x_right_pml = 2.0
 
double Width_y_top_pml = 2.0
 
double Width_x_left_pml = 2.0
 
double Width_y_bottom_pml = 2.0
 
double H_annulus =0.5
 Thickness of annulus. More...
 
std::complex< doublelambda = E*Nu/(1.0+Nu)/(1.0-2.0*Nu)
 
std::complex< doublemu = E/2.0/(1.0+Nu)
 
double rmin = 0.1
 
double zmin = 0.3
 
double rmax = rmin+Lr
 
double zmax = zmin+Lz
 
double Displacement_amplitude =0.1
 Displacement amplitude on inner radius. More...
 
unsigned Ntheta =20
 Number of elements in azimuthal direction. More...
 
Vector< doubleOmega_sq_region (2, Omega_sq)
 Square of non-dim frequency for the two regions. More...
 

Detailed Description

Namespace for global parameters.

Namepspace for global parameters.

Namespace for problem parameters.

Namespace for physical parameters.

Global variables.

Global parameters.

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

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

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

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

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

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

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

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

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

IDs for the two types of Lagrange multipliers used in this problem

Enumerator
Parallel_flow_lagrange_multiplier_id 
FSI_interface_displacement_lagrange_multiplier_id 
@ Parallel_flow_lagrange_multiplier_id
Definition: unsteady_vmtk_fsi.cc:93
@ FSI_interface_displacement_lagrange_multiplier_id
Definition: unsteady_vmtk_fsi.cc:94

◆ anonymous enum

anonymous enum

IDs for the two types of Lagrange multipliers used in this problem

Enumerator
Parallel_flow_lagrange_multiplier_id 
FSI_interface_displacement_lagrange_multiplier_id 

Function Documentation

◆ analytic_solution1()

void Global_Parameters::analytic_solution1 ( const Vector< double > &  x,
Vector< double > &  solution 
)

Function that computes the fitting solutions near the corner (0,0)

Polar coordinates centered at the point (0,0)

Value of the U component at the angle theta

Value of the V component at the angle theta

Value of P at the angle theta

664  {
665  using namespace MathematicalConstants;
666 
668  double r = sqrt(x[0]*x[0] + x[1]*x[1]);
669  double theta = atan2(x[1],x[0]);
670 
672  solution[0] = -(0.5*Pi*theta*sin(theta) + theta*cos(theta) - 0.25*Pi*Pi*sin(theta))*sin(theta)/(-1.0 + 0.25*Pi*Pi) - 1.0*(-theta*sin(theta) + 0.5*Pi*theta*cos(theta) + 0.5*Pi*sin(theta) - 0.25*Pi*Pi*cos(theta) + cos(theta))*cos(theta)/(-1.0 + 0.25*Pi*Pi);
673 
675  solution[1] = (0.5*Pi*theta*sin(theta) + theta*cos(theta) - 0.25*Pi*Pi*sin(theta))*cos(theta)/(-1.0 + 0.25*Pi*Pi) - 1.0*(-theta*sin(theta) + 0.5*Pi*theta*cos(theta) + 0.5*Pi*sin(theta) - 0.25*Pi*Pi*cos(theta) + cos(theta))*sin(theta)/(-1.0 + 0.25*Pi*Pi);
676 
678  if (x[0]==0.0 && x[1]==0.0)
679  {
680  solution[2] = -200.0;
681  }
682  else
683  {
684  solution[2] = -(-0.25*Pi*Pi*Pi*sin(theta) + 1.0*Pi*sin(theta) - 0.5*Pi*Pi*cos(theta) + 2.0*cos(theta))/(r*(-0.0625*Pi*Pi*Pi*Pi - 1.0 + 0.5*Pi*Pi));
685  }
686  }
AnnoyingScalar cos(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:136
AnnoyingScalar atan2(const AnnoyingScalar &y, const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:139
AnnoyingScalar sin(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:137
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
void solution(const Vector< double > &x, Vector< double > &u)
Definition: two_d_biharmonic.cc:113
double Pi
Definition: two_d_biharmonic.cc:235
double theta
Definition: two_d_biharmonic.cc:236
r
Definition: UniformPSDSelfTest.py:20
list x
Definition: plotDoE.py:28

References atan2(), cos(), BiharmonicTestFunctions2::Pi, UniformPSDSelfTest::r, sin(), BiharmonicTestFunctions1::solution(), sqrt(), BiharmonicTestFunctions2::theta, and plotDoE::x.

◆ analytic_solution2()

void Global_Parameters::analytic_solution2 ( const Vector< double > &  x,
Vector< double > &  solution 
)

Function that computes the fitting solutions near the corner (1,0)

Polar coordinates centered at the point (1,0)

Value of the U component at the angle theta

Value of the V component at the angle theta

Value of P at the angle theta

690  {
691  using namespace MathematicalConstants;
692 
693  // Variable change
694  Vector<double> x1(2);
695  x1[0] = 1.0-x[0];
696  x1[1] = x[1];
697 
699  double r = sqrt(x1[0]*x1[0] + x1[1]*x1[1]);
700  double theta = atan2(x1[1],x1[0]);
701 
703  solution[0] = (0.5*Pi*theta*sin(theta) + theta*cos(theta) - 0.25*Pi*Pi*sin(theta))*sin(theta)/(-1.0 + 0.25*Pi*Pi) + 1.0*(-theta*sin(theta) + 0.5*Pi*theta*cos(theta) + 0.5*Pi*sin(theta) - 0.25*Pi*Pi*cos(theta) + cos(theta))*cos(theta)/(-1.0 + 0.25*Pi*Pi);
704  solution[0] = - solution[0];
705 
707  solution[1] = -(0.5*Pi*theta*sin(theta) + theta*cos(theta) - 0.25*Pi*Pi*sin(theta))*cos(theta)/(-1.0 + 0.25*Pi*Pi) + 1.0*(-theta*sin(theta) + 0.5*Pi*theta*cos(theta) + 0.5*Pi*sin(theta) - 0.25*Pi*Pi*cos(theta) + cos(theta))*sin(theta)/(-1.0 + 0.25*Pi*Pi);
708 
710  if (x1[0]==0.0 && x1[1]==0.0)
711  {
712  solution[2] = 200.0;
713  }
714  else
715  {
716  solution[2] = -(-1.0*Pi*sin(theta) + 0.25*Pi*Pi*Pi*sin(theta) - 2.0*cos(theta) + 0.5*Pi*Pi*cos(theta))/(r*(-0.0625*Pi*Pi*Pi*Pi - 1.0 + 0.5*Pi*Pi));
717  }
718  }
Vector< double > x1(const Vector< double > &coord)
Cartesian coordinates centered at the point (0.5,1)
Definition: poisson/poisson_with_singularity/two_d_poisson.cc:86

References atan2(), cos(), BiharmonicTestFunctions2::Pi, UniformPSDSelfTest::r, sin(), BiharmonicTestFunctions1::solution(), sqrt(), BiharmonicTestFunctions2::theta, plotDoE::x, and Global_parameters::x1().

◆ axisym_coefficient()

std::complex<double> Global_Parameters::axisym_coefficient ( )

Coefficient in front of Hankel function for axisymmetric solution of Helmholtz potential

134  {
135  std::complex<double> MapleGenVar1;
136  std::complex<double> MapleGenVar2;
137  std::complex<double> MapleGenVar3;
138  std::complex<double> MapleGenVar4;
139  std::complex<double> MapleGenVar5;
140  std::complex<double> MapleGenVar6;
141  std::complex<double> MapleGenVar7;
142  std::complex<double> MapleGenVar8;
143  std::complex<double> t0;
144 
145 
146  MapleGenVar3 = (-2.0/(2.0+2.0*Nu)*1.0+2.0/(2.0+2.0*Nu)*1.0*
147 H_coating)/(Nu/(1.0+Nu)/(1.0-2.0*Nu)+2.0/(2.0+2.0*Nu)-2.0/(2.0+2.0*Nu)*
148 H_coating+1/(2.0+2.0*Nu)*H_coating*H_coating)/2.0;
149  MapleGenVar5 = -1/(Nu/(1.0+Nu)/(1.0-2.0*Nu)+2.0/(2.0+2.0*Nu)-2.0/(2.0+2.0
150 *Nu)*H_coating+1/(2.0+2.0*Nu)*H_coating*H_coating)*Q/2.0;
151  MapleGenVar6 = HankelH1(0.0,sqrt(K_squared))*(-(-2.0/(2.0+2.0*Nu)*1.0
152 +2.0/(2.0+2.0*Nu)*1.0*H_coating)/(Nu/(1.0+Nu)/(1.0-2.0*Nu)+2.0/(2.0+2.0*Nu)
153 -2.0/(2.0+2.0*Nu)*H_coating+1/(2.0+2.0*Nu)*H_coating*H_coating)/2.0+(2.0/(2.0+
154 2.0*Nu)*1.0-2.0/(2.0+2.0*Nu)*1.0*H_coating+2.0*1.0*Nu/(1.0+Nu)/(1.0
155 -2.0*Nu)-2.0*1.0*H_coating*Nu/(1.0+Nu)/(1.0-2.0*Nu))/(Nu/(1.0+Nu)/(1.0-2.0*
156 Nu)+2.0/(2.0+2.0*Nu)-2.0/(2.0+2.0*Nu)*H_coating+1/(2.0+2.0*Nu)*H_coating*
158 sqrt(K_squared))/(Nu/(1.0+Nu)/(1.0-2.0*Nu)+2.0/(2.0+2.0*Nu)-2.0/(2.0+2.0*Nu)*
159 H_coating+1/(2.0+2.0*Nu)*H_coating*H_coating)/2.0+Q*HankelH1(0.0,sqrt(K_squared
160 ))*(1.0-2.0*H_coating+H_coating*H_coating)/(Nu/(1.0+Nu)/(1.0-2.0*Nu)+2.0/(2.0+
161 2.0*Nu)-2.0/(2.0+2.0*Nu)*H_coating+1/(2.0+2.0*Nu)*H_coating*H_coating)/2.0);
162  MapleGenVar4 = MapleGenVar5*MapleGenVar6;
163  MapleGenVar2 = MapleGenVar3+MapleGenVar4;
164  MapleGenVar3 = MapleGenVar2;
165  MapleGenVar5 = -(2.0/(2.0+2.0*Nu)*1.0-2.0/(2.0+2.0*Nu)*1.0*
166 H_coating+2.0*1.0*Nu/(1.0+Nu)/(1.0-2.0*Nu)-2.0*1.0*H_coating*Nu/(1.0+Nu
167 )/(1.0-2.0*Nu))/(Nu/(1.0+Nu)/(1.0-2.0*Nu)+2.0/(2.0+2.0*Nu)-2.0/(2.0+2.0*Nu)*
168 H_coating+1/(2.0+2.0*Nu)*H_coating*H_coating)/2.0;
169  MapleGenVar7 = (1.0-2.0*H_coating+H_coating*H_coating)/(Nu/(1.0+Nu)/(1.0
170 -2.0*Nu)+2.0/(2.0+2.0*Nu)-2.0/(2.0+2.0*Nu)*H_coating+1/(2.0+2.0*Nu)*H_coating*
171 H_coating)/2.0;
172  MapleGenVar8 = Q*HankelH1(0.0,sqrt(K_squared))*(-(-2.0/(2.0+2.0*Nu)*
173 1.0+2.0/(2.0+2.0*Nu)*1.0*H_coating)/(Nu/(1.0+Nu)/(1.0-2.0*Nu)+2.0/(2.0+
174 2.0*Nu)-2.0/(2.0+2.0*Nu)*H_coating+1/(2.0+2.0*Nu)*H_coating*H_coating)/2.0+(2.0
175 /(2.0+2.0*Nu)*1.0-2.0/(2.0+2.0*Nu)*1.0*H_coating+2.0*1.0*Nu/(1.0+Nu
176 )/(1.0-2.0*Nu)-2.0*1.0*H_coating*Nu/(1.0+Nu)/(1.0-2.0*Nu))/(Nu/(1.0+Nu)/(
177 1.0-2.0*Nu)+2.0/(2.0+2.0*Nu)-2.0/(2.0+2.0*Nu)*H_coating+1/(2.0+2.0*Nu)*
179 HankelH1(0.0,sqrt(K_squared))/(Nu/(1.0+Nu)/(1.0-2.0*Nu)+2.0/(2.0+2.0*Nu)-2.0/(
180 2.0+2.0*Nu)*H_coating+1/(2.0+2.0*Nu)*H_coating*H_coating)/2.0+Q*HankelH1(0.0,
181 sqrt(K_squared))*(1.0-2.0*H_coating+H_coating*H_coating)/(Nu/(1.0+Nu)/(1.0-2.0*
182 Nu)+2.0/(2.0+2.0*Nu)-2.0/(2.0+2.0*Nu)*H_coating+1/(2.0+2.0*Nu)*H_coating*
183 H_coating)/2.0);
184  MapleGenVar6 = MapleGenVar7*MapleGenVar8;
185  MapleGenVar4 = MapleGenVar5+MapleGenVar6;
186  MapleGenVar1 = MapleGenVar3+MapleGenVar4;
187  MapleGenVar2 = 1.0/HankelH1(1.0,sqrt(K_squared))/sqrt(K_squared);
188  t0 = MapleGenVar1*MapleGenVar2;
189 
190  return t0;
191  }
double Nu
Definition: ConstraintElementsUnitTest.cpp:40
std::complex< double > HankelH1(const double &k, const double &x)
Interface to Hankel function in maple style.
Definition: acoustic_fsi.cc:107
double Q
FSI parameter.
Definition: acoustic_fsi.cc:58
double K_squared
Square of wavenumber for the Helmholtz equation.
Definition: acoustic_fsi.cc:52
double H_coating
Non-dim thickness of elastic coating.
Definition: acoustic_fsi.cc:61

References H_coating, HankelH1(), K_squared, Constitutive_Parameters::Nu, Q, and sqrt().

Referenced by exact_axisym_potential(), and exact_axisym_radiated_power().

◆ BesselJ()

double Global_Parameters::BesselJ ( const double n,
const double x 
)

Helper function to evaluate J_n(x) from bloody maple output.

131  {
132 
133  // Bessel fcts J_0(x), J_1(x), Y_0(x), Y_1(x) and their derivatives
134  double j0,j1,y0,y1,j0p,j1p,y0p,y1p;
135  CRBond_Bessel::bessjy01a(x,j0,j1,y0,y1,j0p,j1p,y0p,y1p);
136 
137  if (n==0.0)
138  {
139  return j0;
140  }
141  else if (n==1.0)
142  {
143  return j1;
144  }
145  else
146  {
147  cout << "Never get here...";
148  abort();
149  }
150  }
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
int bessjy01a(double x, double &j0, double &j1, double &y0, double &y1, double &j0p, double &j1p, double &y0p, double &y1p)
Definition: crbond_bessel.cc:551

References CRBond_Bessel::bessjy01a(), n, and plotDoE::x.

◆ BesselY()

double Global_Parameters::BesselY ( const double n,
const double x 
)

Helper function to evaluate Y_n(x) from bloody maple output.

107  {
108  // Bessel fcts J_0(x), J_1(x), Y_0(x), Y_1(x) and their derivatives
109  double j0,j1,y0,y1,j0p,j1p,y0p,y1p;
110  CRBond_Bessel::bessjy01a(x,j0,j1,y0,y1,j0p,j1p,y0p,y1p);
111 
112  if (n==0.0)
113  {
114  return y0;
115  }
116  else if (n==1.0)
117  {
118  return y1;
119  }
120  else
121  {
122  cout << "Never get here...";
123  abort();
124  }
125 
126  }

References CRBond_Bessel::bessjy01a(), n, and plotDoE::x.

◆ blend()

double Global_Parameters::blend ( const Vector< double > &  x,
const Vector< double > &  x_c 
)

Blend function, centred at x_c.

209  {
210  // shifted origin
211  double dx=x[0]-x_c[0];
212  double dy=x[1]-x_c[1];
213  double r=sqrt(dx*dx+dy*dy);
214  double result=0.0;
215  if (r<=R_blend_inner)
216  {
217  result=1.0;
218  }
219  else if (r<=R_blend_outer)
220  {
221  result=0.5*(1.0+cos(MathematicalConstants::Pi*
223  }
224  return result;
225  }
double R_blend_inner
Inner blending radius.
Definition: navier_stokes/navier_stokes_with_singularity/driven_cavity.cc:202
double R_blend_outer
Outer blending radius.
Definition: navier_stokes/navier_stokes_with_singularity/driven_cavity.cc:205

References cos(), BiharmonicTestFunctions2::Pi, UniformPSDSelfTest::r, R_blend_inner, R_blend_outer, sqrt(), and plotDoE::x.

Referenced by blended_grad_velocity_pseudo_singularity_for_couette(), blended_pressure_pseudo_singularity_for_couette(), blended_velocity_pseudo_singularity_for_couette(), and packetmath().

◆ blended_grad_velocity_pseudo_singularity_for_couette()

Vector<Vector<double> > Global_Parameters::blended_grad_velocity_pseudo_singularity_for_couette ( const Vector< double > &  x)

Blended Pseudo_singularity for computation of Couette flow: grad[i][j] = du_i/dx_j

400  {
401  // unblended velocity
403  Vector<Vector<double> > grad_u=
405 
406  Vector<Vector<double> > blended_grad_u(2);
407  for (unsigned d=0;d<2;d++)
408  {
409  blended_grad_u[d].resize(2);
410  }
411 
412  // Now blend
413  double b=blend(x,X_c_couette);
415  for (unsigned i=0;i<2;i++)
416  {
417  for (unsigned j=0;j<2;j++)
418  {
419  blended_grad_u[i][j]=grad_u[i][j]*b+u[i]*grad_b[j];
420  }
421  }
422 
423  return blended_grad_u;
424  }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Scalar * b
Definition: benchVecAdd.cpp:17
Vector< double > X_c_couette(2, 0.0)
Random center for blended couette pseudo singularity.
double blend(const Vector< double > &x, const Vector< double > &x_c)
Blend function, centred at x_c.
Definition: navier_stokes/navier_stokes_with_singularity/driven_cavity.cc:208
Vector< Vector< double > > grad_velocity_pseudo_singularity_for_couette(const Vector< double > &x)
Pseudo_singularity for computation of Couette flow: grad[i][j] = du_i/dx_j.
Definition: navier_stokes/navier_stokes_with_singularity/driven_cavity.cc:337
Vector< double > grad_blend(const Vector< double > &x, const Vector< double > &x_c)
Gradient of blend function, centred at x_c.
Definition: navier_stokes/navier_stokes_with_singularity/driven_cavity.cc:229
Vector< double > velocity_pseudo_singularity_for_couette(const Vector< double > &x)
Pseudo_singularity for computation of Couette flow.
Definition: navier_stokes/navier_stokes_with_singularity/driven_cavity.cc:322
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References b, blend(), grad_blend(), grad_velocity_pseudo_singularity_for_couette(), i, j, velocity_pseudo_singularity_for_couette(), plotDoE::x, and X_c_couette.

Referenced by main().

◆ blended_pressure_pseudo_singularity_for_couette()

double Global_Parameters::blended_pressure_pseudo_singularity_for_couette ( const Vector< double > &  x)

Blended Pseudo_singularity for computation of Couette flow.

429  {
431 
432  // Now blend
433  double b=blend(x,X_c_couette);
434 
435  return b*p;
436  }
float * p
Definition: Tutorial_Map_using.cpp:9
double pressure_pseudo_singularity_for_couette(const Vector< double > &x)
Pseudo_singularity for computation of Couette flow.
Definition: navier_stokes/navier_stokes_with_singularity/driven_cavity.cc:368

References b, blend(), p, pressure_pseudo_singularity_for_couette(), plotDoE::x, and X_c_couette.

◆ blended_velocity_pseudo_singularity_for_couette()

Vector<double> Global_Parameters::blended_velocity_pseudo_singularity_for_couette ( const Vector< double > &  x)

Blended Pseudo_singularity for computation of Couette flow.

382  {
383  // Initialise velocity vector to return
385 
386  // Now blend
387  double b=blend(x,X_c_couette);
388  for (unsigned i=0;i<2;i++)
389  {
390  u[i]*=b;
391  }
392  return u;
393  }

References b, blend(), i, velocity_pseudo_singularity_for_couette(), plotDoE::x, and X_c_couette.

Referenced by main().

◆ body_force() [1/2]

void Global_Parameters::body_force ( const double time,
const Vector< double > &  x,
Vector< double > &  result 
)

The body force function; returns vector of doubles in the order (b_r, b_z, b_theta)

99  {
100  result[0] = cos(time)*(
101  x[0]*(-cos(x[1])*
102  (Lambda*(8.0+3.0*x[0])-
103  Mu*(-16.0+x[0]*(x[0]-3.0))+pow(x[0],2)*Omega_sq)));
104  result[1] = cos(time)*(
105  x[0]*sin(x[1])*(Mu*(-9.0)+
106  4.0*x[0]*(Lambda+Mu)+pow(x[0],2)*
107  (Lambda+2.0*Mu-Omega_sq)));
108  result[2] = cos(time)*(
109  -x[0]*(8.0*Mu*pow(x[1],3)+pow(x[0],2)*(pow(x[1],3)*Omega_sq+6.0*Mu*x[1])));
110  } // end of body force
EIGEN_DEVICE_FUNC const GlobalUnaryPowReturnType< Derived, ScalarExponent > pow(const Eigen::ArrayBase< Derived > &x, const ScalarExponent &exponent)
Definition: GlobalFunctions.h:137
double Mu
Definition: axisym_linear_elasticity/cylinder/cylinder.cc:53
double Lambda
Lame parameters.
Definition: axisym_linear_elasticity/cylinder/cylinder.cc:52
double Omega_sq
Square of the frequency of the time dependence.
Definition: axisym_linear_elasticity/cylinder/cylinder.cc:56

References cos(), Lambda, Mu, Omega_sq, Eigen::bfloat16_impl::pow(), sin(), and plotDoE::x.

Referenced by AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >::AxisymmetricLinearElasticityProblem(), AxisymmetricVibratingShellProblem< ELEMENT >::doc_solution(), VibratingShellProblem< ELEMENT >::doc_solution(), oomph::LinearElasticityEquations< DIM >::fill_in_generic_contribution_to_residuals_linear_elasticity(), oomph::RefineableLinearElasticityEquations< DIM >::fill_in_generic_contribution_to_residuals_linear_elasticity(), oomph::RefineablePVDEquations< DIM >::fill_in_generic_contribution_to_residuals_pvd(), oomph::PVDEquations< DIM >::fill_in_generic_contribution_to_residuals_pvd(), oomph::ScaleCoupledElement< ELEMENT >::fill_in_generic_contribution_to_residuals_pvd(), oomph::VolumeCoupledElement< ELEMENT >::fill_in_generic_contribution_to_residuals_pvd(), oomph::PMLTimeHarmonicLinearElasticityEquations< DIM >::fill_in_generic_contribution_to_residuals_time_harmonic_linear_elasticity(), oomph::RefineableTimeHarmonicLinearElasticityEquations< DIM >::fill_in_generic_contribution_to_residuals_time_harmonic_linear_elasticity(), oomph::TimeHarmonicLinearElasticityEquations< DIM >::fill_in_generic_contribution_to_residuals_time_harmonic_linear_elasticity(), oomph::AxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::RefineableAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_axi_nst(), oomph::LinearisedAxisymmetricNavierStokesEquations::fill_in_generic_residual_contribution_lin_axi_nst(), oomph::RefineableSpaceTimeNavierStokesEquations< DIM >::fill_in_generic_residual_contribution_nst(), oomph::RefineableSpaceTimeNavierStokesMixedOrderEquations< DIM >::fill_in_generic_residual_contribution_nst(), oomph::SpaceTimeNavierStokesEquations< DIM >::fill_in_generic_residual_contribution_nst(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::fill_in_generic_residual_contribution_nst(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::fill_in_generic_residual_contribution_nst(), oomph::RefineableGeneralisedNewtonianNavierStokesEquations< DIM >::fill_in_generic_residual_contribution_nst(), oomph::NavierStokesEquations< DIM >::fill_in_generic_residual_contribution_nst(), oomph::RefineableNavierStokesEquations< DIM >::fill_in_generic_residual_contribution_nst(), oomph::RefineablePVDEquationsWithPressure< DIM >::fill_in_generic_residual_contribution_pvd_with_pressure(), oomph::PVDEquationsWithPressure< DIM >::fill_in_generic_residual_contribution_pvd_with_pressure(), oomph::RefineableSphericalNavierStokesEquations::fill_in_generic_residual_contribution_spherical_nst(), oomph::SphericalNavierStokesEquations::fill_in_generic_residual_contribution_spherical_nst(), FourierDecomposedTimeHarmonicLinearElasticityProblem< ELEMENT >::FourierDecomposedTimeHarmonicLinearElasticityProblem(), RefineableQAxisymCrouzeixRaviartBoussinesqElement::get_body_force_axi_nst(), oomph::AxisymmetricNavierStokesEquations::get_body_force_gradient_axi_nst(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::get_body_force_gradient_axi_nst(), oomph::LinearisedAxisymmetricNavierStokesEquations::get_body_force_gradient_base_flow(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::get_body_force_gradient_nst(), oomph::NavierStokesEquations< DIM >::get_body_force_gradient_nst(), oomph::SpaceTimeNavierStokesEquations< DIM >::get_body_force_gradient_nst(), oomph::SpaceTimeNavierStokesMixedOrderEquations< DIM >::get_body_force_gradient_nst(), oomph::RefineableNavierStokesBoussinesqElement< NST_ELEMENT, AD_ELEMENT >::get_body_force_nst(), oomph::AxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::RefineableAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::GeneralisedNewtonianAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::RefineableGeneralisedNewtonianAxisymmetricNavierStokesEquations::get_dresidual_dnodal_coordinates(), oomph::GeneralisedNewtonianNavierStokesEquations< DIM >::get_dresidual_dnodal_coordinates(), oomph::RefineableGeneralisedNewtonianNavierStokesEquations< DIM >::get_dresidual_dnodal_coordinates(), oomph::NavierStokesEquations< DIM >::get_dresidual_dnodal_coordinates(), oomph::RefineableNavierStokesEquations< DIM >::get_dresidual_dnodal_coordinates(), oomph::SpaceTimeNavierStokesEquations< DIM >::get_dresidual_dnodal_coordinates(), oomph::RefineableSpaceTimeNavierStokesEquations< DIM >::get_dresidual_dnodal_coordinates(), and SolidProblem< ELEMENT_TYPE >::writeToVTK().

◆ body_force() [2/2]

void Global_Parameters::body_force ( const Vector< double > &  x,
Vector< std::complex< double > > &  result 
)

Body force.

The body force function; returns vector of complex doubles in the order (b_r, b_z, b_theta)

Define the magnitude of the forcing

Define the decay rate

The forcing used is of damped exponential type to generate axisymmetric results after post-processing

Assign the source in each dimension

62  {
64  double magnitude=1.0;
65 
67  double alpha=1.0;
68 
71  double source_fct=magnitude*exp(-alpha*sqrt(x[0]*x[0]+x[1]*x[1]));
72 
74  b[0]=source_fct*x[0]/sqrt(x[0]*x[0]+x[1]*x[1]);
75  b[1]=source_fct*x[1]/sqrt(x[0]*x[0]+x[1]*x[1]);
76  }
RealScalar alpha
Definition: level1_cplx_impl.h:151
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 exp(const bfloat16 &a)
Definition: BFloat16.h:615
double magnitude(const Vector< double > &a)
Get the magnitude of a vector.
Definition: oomph-lib/src/generic/Vector.h:303

References alpha, b, Eigen::bfloat16_impl::exp(), oomph::VectorHelpers::magnitude(), sqrt(), and plotDoE::x.

◆ boundary_traction() [1/2]

void Global_Parameters::boundary_traction ( const double time,
const Vector< double > &  x,
const Vector< double > &  n,
Vector< double > &  result 
)

The traction function at r=Rmin: (t_r, t_z, t_theta)

87  {
88  result[0] = cos(time)*(-6.0*pow(x[0],2)*Mu*cos(x[1])-
89  Lambda*(4.0*pow(x[0],2)+pow(x[0],3))*cos(x[1]));
90  result[1] = cos(time)*(-Mu*(3.0*pow(x[0],2)-pow(x[0],3))*sin(x[1]));
91  result[2] = cos(time)*(-Mu*pow(x[0],2)*(2*pow(x[1],3)));
92  }

References cos(), Lambda, Mu, Eigen::bfloat16_impl::pow(), sin(), and plotDoE::x.

Referenced by AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >::AxisymmetricLinearElasticityProblem(), FourierDecomposedTimeHarmonicLinearElasticityProblem< ELEMENT >::complete_problem_setup(), and FourierDecomposedTimeHarmonicLinearElasticityProblem< ELEMENT >::FourierDecomposedTimeHarmonicLinearElasticityProblem().

◆ boundary_traction() [2/2]

void Global_Parameters::boundary_traction ( const Vector< double > &  x,
const Vector< double > &  n,
Vector< std::complex< double > > &  result 
)

The traction function at r=rmin: (t_r, t_z, t_theta)

80  {
81  result[0] = -6.0*pow(x[0],2)*mu*cos(x[1])-
82  lambda*(I*double(Fourier_wavenumber)*pow(x[0],2)*pow(x[1],3)+
83  (4.0*pow(x[0],2)+pow(x[0],3))*cos(x[1]));
84  result[1] = -mu*(3.0*pow(x[0],2)-pow(x[0],3))*sin(x[1]);
85  result[2] = -mu*pow(x[0],2)*(2*pow(x[1],3)+I*double(Fourier_wavenumber)*
86  cos(x[1]));
87  }
#define I
Definition: main.h:127
std::complex< double > lambda
Definition: time_harmonic_fourier_decomposed_linear_elasticity/cylinder/cylinder.cc:51
std::complex< double > mu
Definition: time_harmonic_fourier_decomposed_linear_elasticity/cylinder/cylinder.cc:52
int Fourier_wavenumber
Define azimuthal Fourier wavenumber.
Definition: fourier_decomposed_acoustic_fsi.cc:76

References cos(), Fourier_wavenumber, I, lambda, mu, Eigen::bfloat16_impl::pow(), sin(), and plotDoE::x.

◆ compute_dependent_parameters()

void Global_Parameters::compute_dependent_parameters ( )

Function to compute dependent parameters.

Adjust number of PML elements, set to be equal for all layers

Adjust physical size of PML layers, set to be equal for all layers

Adjust number of PML elements, set to be equal for all layers

Adjust physical size of PML layers, set to be equal for all layers

Adjust number of PML elements, set to be equal for all layers

Adjust physical size of PML layers, set to be equal for all layers

90  {
96 
102  }
double Width_x_right_pml
Definition: time_harmonic_elasticity_driver.cc:83
double Width_y_top_pml
Definition: time_harmonic_elasticity_driver.cc:84
double Width_x_left_pml
Definition: time_harmonic_elasticity_driver.cc:85
unsigned N_x_right_pml
PML width in elements for the right layer.
Definition: time_harmonic_elasticity_driver.cc:69
double Width_y_bottom_pml
Definition: time_harmonic_elasticity_driver.cc:86
unsigned N_y_bottom_pml
PML width in elements for the left layer.
Definition: time_harmonic_elasticity_driver.cc:78
double L_pml_multiplier
Definition: time_harmonic_elasticity_driver.cc:66
unsigned N_pml_multiplier
PML width in elements for the right layer.
Definition: time_harmonic_elasticity_driver.cc:65
unsigned N_x_left_pml
PML width in elements for the left layer.
Definition: time_harmonic_elasticity_driver.cc:75
unsigned N_y_top_pml
PML width in elements for the top layer.
Definition: time_harmonic_elasticity_driver.cc:72

References L_pml_multiplier, N_pml_multiplier, N_x_left_pml, N_x_right_pml, N_y_bottom_pml, N_y_top_pml, Width_x_left_pml, Width_x_right_pml, Width_y_bottom_pml, and Width_y_top_pml.

Referenced by main().

◆ constant_pressure() [1/2]

void Global_Parameters::constant_pressure ( const Vector< double > &  x,
const Vector< double > &  n,
Vector< std::complex< double > > &  traction 
)

Constant pressure load (real and imag part)

87  {
88  unsigned dim = traction.size();
89  for(unsigned i=0;i<dim;i++)
90  {
91  traction[i] = complex<double>(-P*n[i],P*n[i]);
92  }
93  } // end_of_pressure_load
double P
Uniform pressure.
Definition: TwenteMeshGluing.cpp:77

References i, n, and Global_Physical_Variables::P.

◆ constant_pressure() [2/2]

void Global_Parameters::constant_pressure ( const Vector< double > &  xi,
const Vector< double > &  x,
const Vector< double > &  n,
Vector< double > &  traction 
)

Constant pressure load. The arguments to this function are imposed on us by the SolidTractionElements which allow the traction to depend on the Lagrangian and Eulerian coordinates x and xi, and on the outer unit normal to the surface. Here we only need the outer unit normal.

116  {
117  unsigned dim = traction.size();
118  for(unsigned i=0;i<dim;i++)
119  {
120  traction[i] = -P*n[i];
121  }
122  } // end traction

References i, n, and Global_Physical_Variables::P.

Referenced by UnstructuredSolidProblem< ELEMENT, MESH >::create_traction_elements(), and AnnularDiskProblem< ELASTICITY_ELEMENT >::create_traction_elements().

◆ d2_u_r_dt2()

double Global_Parameters::d2_u_r_dt2 ( const double time,
const Vector< double > &  x 
)

Calculate the time dependent form of the r-component of acceleration.

179  {
180  Vector<double> displ(3);
181  exact_solution_th(x,displ);
182  return -cos(time)*displ[0];
183  }
void exact_solution_th(const Vector< double > &x, Vector< double > &u)
Definition: axisym_linear_elasticity/cylinder/cylinder.cc:116

References cos(), exact_solution_th(), and plotDoE::x.

Referenced by exact_solution(), AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >::set_boundary_conditions(), and AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >::set_initial_conditions().

◆ d2_u_theta_dt2()

double Global_Parameters::d2_u_theta_dt2 ( const double time,
const Vector< double > &  x 
)

Calculate the time dependent form of the theta-component of acceleration.

195  {
196  Vector<double> displ(3);
197  exact_solution_th(x,displ);
198  return -cos(time)*displ[2];
199  }

References cos(), exact_solution_th(), and plotDoE::x.

Referenced by exact_solution(), AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >::set_boundary_conditions(), and AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >::set_initial_conditions().

◆ d2_u_z_dt2()

double Global_Parameters::d2_u_z_dt2 ( const double time,
const Vector< double > &  x 
)

Calculate the time dependent form of the z-component of acceleration.

187  {
188  Vector<double> displ(3);
189  exact_solution_th(x,displ);
190  return -cos(time)*displ[1];
191  }

References cos(), exact_solution_th(), and plotDoE::x.

Referenced by exact_solution(), AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >::set_boundary_conditions(), and AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >::set_initial_conditions().

◆ d_u_r_dt()

double Global_Parameters::d_u_r_dt ( const double time,
const Vector< double > &  x 
)

Calculate the time dependent form of the r-component of velocity.

155  {
156  Vector<double> displ(3);
157  exact_solution_th(x,displ);
158  return -sin(time)*displ[0];
159  }

References exact_solution_th(), sin(), and plotDoE::x.

Referenced by exact_solution(), AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >::set_boundary_conditions(), and AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >::set_initial_conditions().

◆ d_u_theta_dt()

double Global_Parameters::d_u_theta_dt ( const double time,
const Vector< double > &  x 
)

Calculate the time dependent form of the theta-component of velocity.

171  {
172  Vector<double> displ(3);
173  exact_solution_th(x,displ);
174  return -sin(time)*displ[2];
175  }

References exact_solution_th(), sin(), and plotDoE::x.

Referenced by exact_solution(), AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >::set_boundary_conditions(), and AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >::set_initial_conditions().

◆ d_u_z_dt()

double Global_Parameters::d_u_z_dt ( const double time,
const Vector< double > &  x 
)

Calculate the time dependent form of the z-component of velocity.

163  {
164  Vector<double> displ(3);
165  exact_solution_th(x,displ);
166  return -sin(time)*displ[1];
167  }

References exact_solution_th(), sin(), and plotDoE::x.

Referenced by exact_solution(), AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >::set_boundary_conditions(), and AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >::set_initial_conditions().

◆ Density_ratio() [1/2]

Vector<double> Global_Parameters::Density_ratio ( ,
0.  1 
)

Density ratio for the two regions: solid to fluid.

◆ Density_ratio() [2/2]

Vector<double> Global_Parameters::Density_ratio ( ,
1.  0 
)

Density ratio: solid to fluid.

◆ E() [1/3]

std::complex<double> Global_Parameters::E ( 1.  0,
0.  01 
)

Define the non-dimensional Young's modulus.

◆ E() [2/3]

Vector<std::complex<double> > Global_Parameters::E ( ,
std::complex< double 1.0, 0.0 
)

Define the non-dimensional Young's modulus.

◆ E() [3/3]

TimeHarmonicIsotropicElasticityTensor Global_Parameters::E ( Nu  )

The elasticity tensor for the solid.

The elasticity tensor.

◆ Eigenfunction_normalisation()

std::complex<double> Global_Parameters::Eigenfunction_normalisation ( 1.  0,
0.  0 
)

◆ exact_axisym_potential()

void Global_Parameters::exact_axisym_potential ( const Vector< double > &  x,
Vector< double > &  soln 
)

Exact solution for Helmholtz potential for axisymmetric solution.

197  {
198  std::complex<double> C=axisym_coefficient();
199  double r=sqrt(x[0]*x[0]+x[1]*x[1]);
200  soln[0]=real(HankelH1(0,sqrt(K_squared)*r)*C);
201  soln[1]=imag(HankelH1(0,sqrt(K_squared)*r)*C);
202  }
AnnoyingScalar imag(const AnnoyingScalar &)
Definition: AnnoyingScalar.h:132
Definition: matrices.h:74
float real
Definition: datatypes.h:10
std::complex< double > axisym_coefficient()
Definition: acoustic_fsi.cc:133

References axisym_coefficient(), HankelH1(), imag(), K_squared, UniformPSDSelfTest::r, sqrt(), and plotDoE::x.

Referenced by CoatedDiskProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >::doc_solution().

◆ exact_axisym_radiated_power()

double Global_Parameters::exact_axisym_radiated_power ( )

Exact radiated power for axisymmetric solution.

206  {
207  // Solution is independent of where it's evaluated (have checked!)
208  double r=1.0;
209 
210  // Get the coefficient for the axisymmetric potential
211  std::complex<double> C=axisym_coefficient();
212 
213  // Argument for Bessel/Hankel functions
214  double rr=sqrt(K_squared)*r;
215 
216  // Evaluate Hankel functions -- only need zero-th term
217  Vector<std::complex<double> > h(2),hp(2);
219 
220  // Compute time-average radiated power
221  double power=sqrt(K_squared)*0.5*r*2.0*MathematicalConstants::Pi*
222  (imag(C*hp[0])*real(C*h[0])-real(C*hp[0])*imag(C*h[0]));
223 
224  return power;
225  }
void Hankel_first(const unsigned &n, const double &x, Vector< std::complex< double > > &h, Vector< std::complex< double > > &hp)
Definition: time_harmonic_elasticity_driver.cc:122

References axisym_coefficient(), Hankel_first(), imag(), K_squared, BiharmonicTestFunctions2::Pi, UniformPSDSelfTest::r, and sqrt().

Referenced by CoatedDiskProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >::doc_solution().

◆ exact_couette()

void Global_Parameters::exact_couette ( const Vector< double > &  x,
Vector< double > &  soln 
)

Combined exact solution (u,v,p)

314  {
315  soln=velocity_couette(x);
316  soln.resize(3);
317  soln[2]=pressure_couette(x);
318  }
Vector< double > velocity_couette(const Vector< double > &x)
Couette flow.
Definition: navier_stokes/navier_stokes_with_singularity/driven_cavity.cc:271
double pressure_couette(const Vector< double > &x)
Couette Pressure.
Definition: navier_stokes/navier_stokes_with_singularity/driven_cavity.cc:293

References pressure_couette(), velocity_couette(), and plotDoE::x.

◆ exact_solution() [1/2]

void Global_Parameters::exact_solution ( const double time,
const Vector< double > &  x,
Vector< double > &  u 
)

The exact solution in a vector: 0: u_r, 1: u_z, 2: u_theta and their 1st and 2nd derivs

206  {
207  u[0]=u_r(time,x);
208  u[1]=u_z(time,x);
209  u[2]=u_theta(time,x);
210 
211  u[3]=d_u_r_dt(time,x);
212  u[4]=d_u_z_dt(time,x);
213  u[5]=d_u_theta_dt(time,x);
214 
215  u[6]=d2_u_r_dt2(time,x);
216  u[7]=d2_u_z_dt2(time,x);
217  u[8]=d2_u_theta_dt2(time,x);
218  } // end_of_exact_solution
double d2_u_z_dt2(const double &time, const Vector< double > &x)
Calculate the time dependent form of the z-component of acceleration.
Definition: axisym_linear_elasticity/cylinder/cylinder.cc:186
double d2_u_r_dt2(const double &time, const Vector< double > &x)
Calculate the time dependent form of the r-component of acceleration.
Definition: axisym_linear_elasticity/cylinder/cylinder.cc:178
double d_u_theta_dt(const double &time, const Vector< double > &x)
Calculate the time dependent form of the theta-component of velocity.
Definition: axisym_linear_elasticity/cylinder/cylinder.cc:170
double d2_u_theta_dt2(const double &time, const Vector< double > &x)
Calculate the time dependent form of the theta-component of acceleration.
Definition: axisym_linear_elasticity/cylinder/cylinder.cc:194
double d_u_r_dt(const double &time, const Vector< double > &x)
Calculate the time dependent form of the r-component of velocity.
Definition: axisym_linear_elasticity/cylinder/cylinder.cc:154
double d_u_z_dt(const double &time, const Vector< double > &x)
Calculate the time dependent form of the z-component of velocity.
Definition: axisym_linear_elasticity/cylinder/cylinder.cc:162
double u_z(const double &time, const Vector< double > &x)
Calculate the time dependent form of the z-component of displacement.
Definition: axisym_linear_elasticity/cylinder/cylinder.cc:138
double u_r(const double &time, const Vector< double > &x)
Calculate the time dependent form of the r-component of displacement.
Definition: axisym_linear_elasticity/cylinder/cylinder.cc:130
double u_theta(const double &time, const Vector< double > &x)
Calculate the time dependent form of the theta-component of displacement.
Definition: axisym_linear_elasticity/cylinder/cylinder.cc:146

References d2_u_r_dt2(), d2_u_theta_dt2(), d2_u_z_dt2(), d_u_r_dt(), d_u_theta_dt(), d_u_z_dt(), u_r(), u_theta(), u_z(), and plotDoE::x.

Referenced by cod(), cod_fixedsize(), AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >::doc_solution(), PeriodicLoadProblem< ELEMENT >::doc_solution(), RefineablePeriodicLoadProblem< ELEMENT >::doc_solution(), FourierDecomposedTimeHarmonicLinearElasticityProblem< ELEMENT >::doc_solution(), FourierDecomposedTimeHarmonicLinearElasticityProblem< ELEMENT >::FourierDecomposedTimeHarmonicLinearElasticityProblem(), oomph::MyProblem::get_error_norm(), PeriodicLoadProblem< ELEMENT >::PeriodicLoadProblem(), RefineablePeriodicLoadProblem< ELEMENT >::RefineablePeriodicLoadProblem(), and AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >::set_boundary_conditions().

◆ exact_solution() [2/2]

void Global_Parameters::exact_solution ( const Vector< double > &  x,
Vector< double > &  u 
)

The exact solution for infinite depth case.

The exact solution in a flat-packed vector:

66  {
67  u[0] = -Amplitude*cos(2.0*MathematicalConstants::Pi*x[0]/Lx)*
69  (2.0/(1.0+Nu)*MathematicalConstants::Pi);
70  u[1] = -Amplitude*sin(2.0*MathematicalConstants::Pi*x[0]/Lx)*
72  (2.0/(1.0+Nu)*MathematicalConstants::Pi);
73  }
double Amplitude
Amplitude of traction applied.
Definition: periodic_load.cc:45
double Ly
Length of domain in y direction.
Definition: periodic_load.cc:58
double Lx
Length of domain in x direction.
Definition: periodic_load.cc:55

References Amplitude, cos(), Eigen::bfloat16_impl::exp(), Lx, Ly, Constitutive_Parameters::Nu, BiharmonicTestFunctions2::Pi, sin(), and plotDoE::x.

◆ exact_solution_th()

void Global_Parameters::exact_solution_th ( const Vector< double > &  x,
Vector< double > &  u 
)

Helper function - spatial components of the exact solution in a vector. This is necessary because we need to multiply this by different things to obtain the velocity and acceleration 0: u_r, 1: u_z, 2: u_theta

118  {
119  u[0] = pow(x[0],3)*cos(x[1]);
120  u[1] = pow(x[0],3)*sin(x[1]);
121  u[2] = pow(x[0],3)*pow(x[1],3);
122  }

References cos(), Eigen::bfloat16_impl::pow(), sin(), and plotDoE::x.

Referenced by d2_u_r_dt2(), d2_u_theta_dt2(), d2_u_z_dt2(), d_u_r_dt(), d_u_theta_dt(), d_u_z_dt(), u_r(), u_theta(), and u_z().

◆ exact_u()

void Global_Parameters::exact_u ( const Vector< double > &  x,
Vector< double > &  u 
)

Exact solution as a Vector: {u_x_real, u_y_real, u_x_imag, u_y_imag}.

Exact solution as a Vector.

153  {
154  double r=sqrt(x[0]*x[0]+x[1]*x[1]);
155 
156  // Non-dim Lame parameters
157  double lambda=Nu/((1.0+Nu)*(1-2.0*Nu));
158  double mu=1.0/(2.0*(1.0+Nu));
159 
160  // Initialize solutions
161  double u_r_real = 0.0;
162  double u_r_imag = 0.0;
163  double u_phi_real = 0.0;
164  double u_phi_imag = 0.0;
165 
166  // Solution 1: Pressure wave in radial direction
167  {
168  // Effective wavenumber for pressure waves
169  double k=sqrt(Omega_sq/(lambda+2.0*mu));
170 
171  // Argument for hankel function
172  double kr=k*r;
173 
174  // Fourier wavenumber
175  unsigned n_fourier=0;
176 
177  // Storage for Hankel functions
178  Vector<std::complex<double> > h(n_fourier+2);
179 
180  // Storage for derivs of Hankel fcts
181  Vector<std::complex<double> > hp(n_fourier+2);
182 
183  // Get Hankel fcts
184  Hankel_first(n_fourier+2,kr,h,hp);
185 
186  // Radial displacement
187  u_r_real=h[1].real();
188  u_r_imag=h[1].imag();
189  }
190 
191  // Solution 2: shear wave in azimuthal direction
192  {
193  // Effective wavenumber for pressure waves
194  double k=sqrt(Omega_sq/mu);
195 
196  // Argument for hankel function
197  double kr=k*r;
198 
199  // Fourier wavenumber
200  unsigned n_fourier=0;
201 
202  // Storage for Hankel functions
203  Vector<std::complex<double> > h(n_fourier+2);
204 
205  // Storage for derivs of Hankel fcts
206  Vector<std::complex<double> > hp(n_fourier+2);
207 
208  // Get Hankel fcts
209  Hankel_first(n_fourier+2,kr,h,hp);
210 
211  // Radial displacement
212  u_phi_real=h[1].real();
213  u_phi_imag=h[1].imag();
214  }
215 
216  // switch of type 1 solutions
217  double sol1_switch = 1.0;
218 
219  // switch of type 2 solutions
220  double sol2_switch = 1.0;
221 
222  // Real part of x displacement
223  u[0]=sol1_switch*u_r_real*x[0]/r-sol2_switch*u_phi_real*x[1]/r;
224 
225  // Real part of y displacement
226  u[1]=sol1_switch*u_r_real*x[1]/r+sol2_switch*u_phi_real*x[0]/r;
227 
228  // Imag part of x displacement
229  u[2]=sol1_switch*u_r_imag*x[0]/r-sol2_switch*u_phi_imag*x[1]/r;
230 
231  // Imag part of y displacement
232  u[3]=sol1_switch*u_r_imag*x[1]/r+sol2_switch*u_phi_imag*x[0]/r;
233 
234  }
cout<< "The eigenvalues of A are:"<< endl<< ces.eigenvalues()<< endl;cout<< "The matrix of eigenvectors, V, is:"<< endl<< ces.eigenvectors()<< endl<< endl;complex< float > lambda
Definition: ComplexEigenSolver_compute.cpp:9
char char char int int * k
Definition: level2_impl.h:374

References Hankel_first(), k, lambda, mu, Constitutive_Parameters::Nu, Omega_sq, UniformPSDSelfTest::r, sqrt(), and plotDoE::x.

Referenced by ElasticAnnulusProblem< ELASTICITY_ELEMENT >::complete_problem_setup(), AnnularDiskProblem< ELASTICITY_ELEMENT >::doc_solution(), and ElasticAnnulusProblem< ELASTICITY_ELEMENT >::doc_solution().

◆ flux()

double Global_Parameters::flux ( const double t)

Flux: Pulsatile flow.

Flux increases between Min_flux and Max_flux over period Ramp_period

245  {
247  }
double U_base
Min. flux.
Definition: fsi_channel_with_leaflet_precond.cc:238
double U_perturbation
Max. flux.
Definition: fsi_channel_with_leaflet_precond.cc:241
t
Definition: plotPSD.py:36

References cos(), BiharmonicTestFunctions2::Pi, plotPSD::t, U_base, and U_perturbation.

Referenced by FSIChannelWithLeafletProblem< ELEMENT >::actions_before_implicit_timestep(), TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >::actions_before_implicit_timestep(), TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >::build_mesh(), TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >::doc_solution(), and TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >::TurekProblem().

◆ G()

Vector<double> Global_Parameters::G ( )

Gravity.

◆ grad_blend()

Vector<double> Global_Parameters::grad_blend ( const Vector< double > &  x,
const Vector< double > &  x_c 
)

Gradient of blend function, centred at x_c.

230  {
231  // shifted origin
232  double dx=x[0]-x_c[0];
233  double dy=x[1]-x_c[1];
234  double r=sqrt(dx*dx+dy*dy);
235  Vector<double> result(2,0.0);
236  if ((r>R_blend_inner)&&(r<R_blend_outer))
237  {
238  result[0] = -sin(MathematicalConstants::Pi*
239  (sqrt(dx*dx+dy*dy)-R_blend_inner)/(
241  MathematicalConstants::Pi/sqrt(dx*dx+dy*dy)*dx/(
243 
244  result[1] = -sin(MathematicalConstants::Pi*
245  (sqrt(dx*dx+dy*dy)-R_blend_inner)/(
247  MathematicalConstants::Pi/sqrt(dx*dx+dy*dy)*dy/(
249  }
250  return result;
251  }

References BiharmonicTestFunctions2::Pi, UniformPSDSelfTest::r, R_blend_inner, R_blend_outer, sin(), sqrt(), and plotDoE::x.

Referenced by blended_grad_velocity_pseudo_singularity_for_couette().

◆ grad_pressure_singularity1()

Vector<double> Global_Parameters::grad_pressure_singularity1 ( const Vector< double > &  coord)

Function that computes the gradient of the fitting pressure solution near the corner (0,0)

625  {
626  using namespace MathematicalConstants;
627 
628  // Cartesian coordinates
629  double x = coord[0];
630  double y = coord[1];
631 
632  // Initialise the gradient vector
633  Vector<double> grad_p(2,0.0);
634 
635  // Value of \frac{\partial p}{\partial x}
636  grad_p[0] = -x*(-0.5*Pi*Pi*x/sqrt(x*x + y*y) + 2.0*x/sqrt(x*x + y*y)
637  - 0.25*Pi*Pi*Pi*y/sqrt(x*x + y*y) + 1.0*Pi*y/sqrt(x*x + y*y))
638  /((x*x + y*y)*sqrt(x*x + y*y)*(-0.0625*Pi*Pi*Pi*Pi - 1.0 + 0.5*Pi*Pi))
639  + (-2.0*x*x/(x*x + y*y)*sqrt(x*x + y*y) + 0.5*Pi*Pi*x*x/(x*x + y*y)
640  *sqrt(x*x + y*y) - 1.0*Pi*x*y/(x*x + y*y)*sqrt(x*x + y*y) + 0.25*Pi
641  *Pi*Pi*x*y/(x*x + y*y)*sqrt(x*x + y*y) - 0.5*Pi*Pi/sqrt(x*x + y*y)
642  + 2.0/sqrt(x*x + y*y))
643  /(sqrt(x*x + y*y)*(-0.0625*Pi*Pi*Pi*Pi - 1.0 + 0.5*Pi*Pi));
644 
645  // Value of \frac{\partial p}{\partial y}
646  grad_p[1] = -y*(-0.5*Pi*Pi*x/sqrt(x*x + y*y) + 2.0*x/sqrt(x*x + y*y)
647  - 0.25*Pi*Pi*Pi*y/sqrt(x*x + y*y) + 1.0*Pi*y/sqrt(x*x + y*y))
648  /((x*x + y*y)*sqrt(x*x + y*y)*(-0.0625*Pi*Pi*Pi*Pi - 1.0 + 0.5*Pi*Pi))
649  + (-2.0*x*y/(x*x + y*y)*sqrt(x*x + y*y) + 0.5*Pi*Pi*x*y/(x*x + y*y)
650  *sqrt(x*x + y*y) - 1.0*Pi*y*y/(x*x + y*y)*sqrt(x*x + y*y) + 0.25*Pi
651  *Pi*Pi*y*y/(x*x + y*y)*sqrt(x*x + y*y) - 0.25*Pi*Pi*Pi
652  /sqrt(x*x + y*y) + 1.0*Pi/sqrt(x*x + y*y))
653  /(sqrt(x*x + y*y)*(-0.0625*Pi*Pi*Pi*Pi - 1.0 + 0.5*Pi*Pi));
654 
655  return grad_p;
656 
657  } // End of function
Scalar * y
Definition: level1_cplx_impl.h:128

References BiharmonicTestFunctions2::Pi, sqrt(), plotDoE::x, and y.

◆ grad_velocity_pseudo_singularity_for_couette()

Vector<Vector<double> > Global_Parameters::grad_velocity_pseudo_singularity_for_couette ( const Vector< double > &  x)

Pseudo_singularity for computation of Couette flow: grad[i][j] = du_i/dx_j.

339  {
340  // Initialise grad matrix
341  Vector<Vector<double> > grad_u(2);
342  for (unsigned d=0;d<2;d++)
343  {
344  grad_u[d].resize(2);
345  for (unsigned k=0;k<2;k++)
346  {
347  grad_u[d][k] = 0.0;
348  }
349  }
350 
351  // Compute \frac{\partial u}{\partial x}
352  grad_u[0][0] = 0.0;
353 
354  // Compute \frac{\partial u}{\partial y}
355  grad_u[0][1] = 0.0; // 1.0-2.0*x[1];
356 
357  // Compute \frac{\partial v}{\partial x}
358  grad_u[1][0] = 1.0-2.0*x[0]; // 0.0;
359 
360  // Compute \frac{\partial v}{\partial y}
361  grad_u[1][1] = 0.0;
362 
363  return grad_u;
364  }

References k, and plotDoE::x.

Referenced by blended_grad_velocity_pseudo_singularity_for_couette().

◆ grad_velocity_singularity1()

Vector<Vector<double> > Global_Parameters::grad_velocity_singularity1 ( const Vector< double > &  coord)

Function that computes the gradient of the fitting velocity solution near the corner (0,0): grad[i][j] = du_i/dx_j

500  {
501  using namespace MathematicalConstants;
502 
503  // Initialise the gradient matrix to return
504  Vector<Vector<double> > grad_u(2);
505  for (unsigned d=0;d<2;d++)
506  {
507  grad_u[d].resize(2);
508  for (unsigned k=0;k<2;k++)
509  {
510  grad_u[d][k] = 0.0;
511  }
512  }
513 
514  // Cartesian coordinates
515  double x = coord[0];
516  double y = coord[1];
517 
518  // Value of \frac{\partial u}{\partial x}
519  grad_u[0][0] = pow(x, 2)*(0.5*Pi*x*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) - 0.25*pow(Pi, 2)*x/sqrt(pow(x, 2) + pow(y, 2)) + 1.0*x/sqrt(pow(x, 2) + pow(y, 2)) - 1.0*y*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) + 0.5*Pi*y/sqrt(pow(x, 2) + pow(y, 2)))/((-1 + 0.25*pow(Pi, 2))*pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L)) - x*y*(-x*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) - 0.5*Pi*y*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) + 0.25*pow(Pi, 2)*y/sqrt(pow(x, 2) + pow(y, 2)))/((-1 + 0.25*pow(Pi, 2))*pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L)) - x*(-0.5*Pi*pow(x, 2)*atan2(y, x)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) - 1.0*pow(x, 2)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) + 0.25*pow(Pi, 2)*pow(x, 2)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) + 1.0*x*y*atan2(y, x)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) - 1.0*Pi*x*y/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) + 1.0*pow(y, 2)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) + 0.5*Pi*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) - 0.25*pow(Pi, 2)/sqrt(pow(x, 2) + pow(y, 2)) + 1.0/sqrt(pow(x, 2) + pow(y, 2)))/((-1 + 0.25*pow(Pi, 2))*sqrt(pow(x, 2) + pow(y, 2))) + y*(pow(x, 2)*atan2(y, x)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) + 0.5*Pi*x*y*atan2(y, x)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) - 0.25*pow(Pi, 2)*x*y/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) + x*y/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) + 0.5*Pi*pow(y, 2)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) - atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)))/((-1 + 0.25*pow(Pi, 2))*sqrt(pow(x, 2) + pow(y, 2))) - (0.5*Pi*x*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) - 0.25*pow(Pi, 2)*x/sqrt(pow(x, 2) + pow(y, 2)) + 1.0*x/sqrt(pow(x, 2) + pow(y, 2)) - 1.0*y*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) + 0.5*Pi*y/sqrt(pow(x, 2) + pow(y, 2)))/((-1 + 0.25*pow(Pi, 2))*sqrt(pow(x, 2) + pow(y, 2)));
520 
521  // Value of \frac{\partial u}{\partial y}
522  grad_u[0][1] = x*y*(0.5*Pi *x*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) - 0.25*pow(Pi , 2)*x/sqrt(pow(x, 2) + pow(y, 2)) + 1.0*x/sqrt(pow(x, 2) + pow(y, 2)) - 1.0*y*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) + 0.5*Pi *y/sqrt(pow(x, 2) + pow(y, 2)))/((-1 + 0.25*pow(Pi , 2))*pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L)) - x*(0.5*Pi *pow(x, 2)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) - 0.5*Pi *x*y*atan2(y, x)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) - 2.0*x*y/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) + 0.25*pow(Pi , 2)*x*y/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) + 1.0*pow(y, 2)*atan2(y, x)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) - 0.5*Pi *pow(y, 2)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) - 1.0*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) + 0.5*Pi /sqrt(pow(x, 2) + pow(y, 2)))/((-1 + 0.25*pow(Pi , 2))*sqrt(pow(x, 2) + pow(y, 2))) - pow(y, 2)*(-x*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) - 0.5*Pi *y*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) + 0.25*pow(Pi , 2)*y/sqrt(pow(x, 2) + pow(y, 2)))/((-1 + 0.25*pow(Pi , 2))*pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L)) + y*(-pow(x, 2)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) + x*y*atan2(y, x)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) - 0.5*Pi *x*y/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) + 0.5*Pi *pow(y, 2)*atan2(y, x)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) - 0.25*pow(Pi , 2)*pow(y, 2)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) - 0.5*Pi *atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) + 0.25*pow(Pi , 2)/sqrt(pow(x, 2) + pow(y, 2)))/((-1 + 0.25*pow(Pi , 2))*sqrt(pow(x, 2) + pow(y, 2))) + (-x*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) - 0.5*Pi *y*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) + 0.25*pow(Pi , 2)*y/sqrt(pow(x, 2) + pow(y, 2)))/((-1 + 0.25*pow(Pi , 2))*sqrt(pow(x, 2) + pow(y, 2)));
523 
524  // Value of \frac{\partial v}{\partial x}
525  grad_u[1][0] = -pow(x, 2)*(x*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) + 0.5*Pi *y*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) - 0.25*pow(Pi , 2)*y/sqrt(pow(x, 2) + pow(y, 2)))/((-1 + 0.25*pow(Pi , 2))*pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L)) + x*y*(0.5*Pi *x*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) - 0.25*pow(Pi , 2)*x/sqrt(pow(x, 2) + pow(y, 2)) + 1.0*x/sqrt(pow(x, 2) + pow(y, 2)) - 1.0*y*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) + 0.5*Pi *y/sqrt(pow(x, 2) + pow(y, 2)))/((-1 + 0.25*pow(Pi , 2))*pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L)) + x*(-pow(x, 2)*atan2(y, x)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) - 0.5*Pi *x*y*atan2(y, x)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) - x*y/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) + 0.25*pow(Pi , 2)*x*y/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) - 0.5*Pi *pow(y, 2)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) + atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)))/((-1 + 0.25*pow(Pi , 2))*sqrt(pow(x, 2) + pow(y, 2))) - y*(-0.5*Pi *pow(x, 2)*atan2(y, x)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) - 1.0*pow(x, 2)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) + 0.25*pow(Pi , 2)*pow(x, 2)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) + 1.0*x*y*atan2(y, x)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) - 1.0*Pi *x*y/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) + 1.0*pow(y, 2)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) + 0.5*Pi *atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) - 0.25*pow(Pi , 2)/sqrt(pow(x, 2) + pow(y, 2)) + 1.0/sqrt(pow(x, 2) + pow(y, 2)))/((-1 + 0.25*pow(Pi , 2))*sqrt(pow(x, 2) + pow(y, 2))) + (x*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) + 0.5*Pi *y*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) - 0.25*pow(Pi , 2)*y/sqrt(pow(x, 2) + pow(y, 2)))/((-1 + 0.25*pow(Pi , 2))*sqrt(pow(x, 2) + pow(y, 2)));
526 
527  // Value of \frac{\partial v}{\partial y}
528  grad_u[1][1] = -x*y*(x*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) + 0.5*Pi *y*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) - 0.25*pow(Pi , 2)*y/sqrt(pow(x, 2) + pow(y, 2)))/((-1 + 0.25*pow(Pi , 2))*pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L)) + x*(pow(x, 2)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) - x*y*atan2(y, x)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) + 0.5*Pi *x*y/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) - 0.5*Pi *pow(y, 2)*atan2(y, x)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) + 0.25*pow(Pi , 2)*pow(y, 2)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) + 0.5*Pi *atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) - 0.25*pow(Pi , 2)/sqrt(pow(x, 2) + pow(y, 2)))/((-1 + 0.25*pow(Pi , 2))*sqrt(pow(x, 2) + pow(y, 2))) + pow(y, 2)*(0.5*Pi *x*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) - 0.25*pow(Pi , 2)*x/sqrt(pow(x, 2) + pow(y, 2)) + 1.0*x/sqrt(pow(x, 2) + pow(y, 2)) - 1.0*y*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) + 0.5*Pi *y/sqrt(pow(x, 2) + pow(y, 2)))/((-1 + 0.25*pow(Pi , 2))*pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L)) - y*(0.5*Pi *pow(x, 2)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) - 0.5*Pi *x*y*atan2(y, x)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) - 2.0*x*y/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) + 0.25*pow(Pi , 2)*x*y/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) + 1.0*pow(y, 2)*atan2(y, x)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) - 0.5*Pi *pow(y, 2)/pow(pow(x, 2) + pow(y, 2), 3.0L/2.0L) - 1.0*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) + 0.5*Pi /sqrt(pow(x, 2) + pow(y, 2)))/((-1 + 0.25*pow(Pi , 2))*sqrt(pow(x, 2) + pow(y, 2))) - (0.5*Pi *x*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) - 0.25*pow(Pi , 2)*x/sqrt(pow(x, 2) + pow(y, 2)) + 1.0*x/sqrt(pow(x, 2) + pow(y, 2)) - 1.0*y*atan2(y, x)/sqrt(pow(x, 2) + pow(y, 2)) + 0.5*Pi *y/sqrt(pow(x, 2) + pow(y, 2)))/((-1 + 0.25*pow(Pi , 2))*sqrt(pow(x, 2) + pow(y, 2)));
529 
530  return grad_u;
531 
532  } // End of function
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 pow(const bfloat16 &a, const bfloat16 &b)
Definition: BFloat16.h:625

References atan2(), k, BiharmonicTestFunctions2::Pi, Eigen::bfloat16_impl::pow(), sqrt(), plotDoE::x, and y.

◆ grad_velocity_singularity2()

Vector<Vector<double> > Global_Parameters::grad_velocity_singularity2 ( const Vector< double > &  coord)

Function that computes the gradient of the fitting velocity solution near the corner (1,0): grad[i][j] = du_i/dx_j

538  {
539  using namespace MathematicalConstants;
540 
541  // Cartesian coordinates
542  double x = coord[0];
543  double y = coord[1];
544 
545  // Initialise the gradient matrix to return
546  Vector<Vector<double> > grad_u(2);
547  for (unsigned d=0;d<2;d++)
548  {
549  grad_u[d].resize(2);
550  for (unsigned k=0;k<2;k++)
551  {
552  grad_u[d][k] = 0.0;
553  }
554  }
555 
556  // Value of \frac{\partial u}{\partial x}
557  grad_u[0][0] = -y*(-x + 1)*(-0.5*Pi*y*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 0.25*pow(Pi, 2)*y/sqrt(pow(y, 2) + pow(-x + 1, 2)) - (-x + 1)*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)))/((-1 + 0.25*pow(Pi, 2))*pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L)) - y*(-0.5*Pi*pow(y, 2)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - 0.5*Pi*y*(-x + 1)*atan2(y, -x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - y*(-x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) + 0.25*pow(Pi, 2)*y*(-x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - pow(-x + 1, 2)*atan2(y, -x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) + atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)))/((-1 + 0.25*pow(Pi, 2))*sqrt(pow(y, 2) + pow(-x + 1, 2))) + pow(-x + 1, 2)*(-1.0*y*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 0.5*Pi*y/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 0.5*Pi*(-x + 1)*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) - 0.25*pow(Pi, 2)*(-x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 1.0*(-x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)))/((-1 + 0.25*pow(Pi, 2))*pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L)) + (-x + 1)*(-1.0*pow(y, 2)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - 1.0*y*(-x + 1)*atan2(y, -x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) + 1.0*Pi*y*(-x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) + 0.5*Pi*pow(-x + 1, 2)*atan2(y, -x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - 0.25*pow(Pi, 2)*pow(-x + 1, 2)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) + 1.0*pow(-x + 1, 2)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - 0.5*Pi*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) - 1.0/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 0.25*pow(Pi, 2)/sqrt(pow(y, 2) + pow(-x + 1, 2)))/((-1 + 0.25*pow(Pi, 2))*sqrt(pow(y, 2) + pow(-x + 1, 2))) - (-1.0*y*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 0.5*Pi*y/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 0.5*Pi*(-x + 1)*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) - 0.25*pow(Pi, 2)*(-x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 1.0*(-x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)))/((-1 + 0.25*pow(Pi, 2))*sqrt(pow(y, 2) + pow(-x + 1, 2)));
558 
559  // Value of \frac{\partial u}{\partial y}
560  grad_u[0][1] = pow(y, 2)*(-0.5*Pi*y*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 0.25*pow(Pi, 2)*y/sqrt(pow(y, 2) + pow(-x + 1, 2)) - (-x + 1)*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)))/((-1 + 0.25*pow(Pi, 2))*pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L)) - y*(-x + 1)*(-1.0*y*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 0.5*Pi*y/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 0.5*Pi*(-x + 1)*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) - 0.25*pow(Pi, 2)*(-x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 1.0*(-x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)))/((-1 + 0.25*pow(Pi, 2))*pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L)) - y*(0.5*Pi*pow(y, 2)*atan2(y, -x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - 0.25*pow(Pi, 2)*pow(y, 2)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) + y*(-x + 1)*atan2(y, -x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - 0.5*Pi*y*(-x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - pow(-x + 1, 2)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - 0.5*Pi*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 0.25*pow(Pi, 2)/sqrt(pow(y, 2) + pow(-x + 1, 2)))/((-1 + 0.25*pow(Pi, 2))*sqrt(pow(y, 2) + pow(-x + 1, 2))) + (-x + 1)*(1.0*pow(y, 2)*atan2(y, -x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - 0.5*Pi*pow(y, 2)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - 0.5*Pi*y*(-x + 1)*atan2(y, -x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - 2.0*y*(-x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) + 0.25*pow(Pi, 2)*y*(-x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) + 0.5*Pi*pow(-x + 1, 2)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - 1.0*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 0.5*Pi/sqrt(pow(y, 2) + pow(-x + 1, 2)))/((-1 + 0.25*pow(Pi, 2))*sqrt(pow(y, 2) + pow(-x + 1, 2))) - (-0.5*Pi*y*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 0.25*pow(Pi, 2)*y/sqrt(pow(y, 2) + pow(-x + 1, 2)) - (-x + 1)*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)))/((-1 + 0.25*pow(Pi, 2))*sqrt(pow(y, 2) + pow(-x + 1, 2)));
561 
562  // Value of \frac{\partial v}{\partial x}
563  grad_u[1][0] = -y*(-x + 1)*(-1.0*y*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 0.5*Pi*y/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 0.5*Pi*(-x + 1)*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) - 0.25*pow(Pi, 2)*(-x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 1.0*(-x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)))/((-1 + 0.25*pow(Pi, 2))*pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L)) - y*(-1.0*pow(y, 2)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - 1.0*y*(-x + 1)*atan2(y, -x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) + 1.0*Pi*y*(-x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) + 0.5*Pi*pow(-x + 1, 2)*atan2(y, -x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - 0.25*pow(Pi, 2)*pow(-x + 1, 2)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) + 1.0*pow(-x + 1, 2)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - 0.5*Pi*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) - 1.0/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 0.25*pow(Pi, 2)/sqrt(pow(y, 2) + pow(-x + 1, 2)))/((-1 + 0.25*pow(Pi, 2))*sqrt(pow(y, 2) + pow(-x + 1, 2))) + pow(-x + 1, 2)*(0.5*Pi*y*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) - 0.25*pow(Pi, 2)*y/sqrt(pow(y, 2) + pow(-x + 1, 2)) + (-x + 1)*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)))/((-1 + 0.25*pow(Pi, 2))*pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L)) + (-x + 1)*(0.5*Pi*pow(y, 2)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) + 0.5*Pi*y*(-x + 1)*atan2(y, -x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - 0.25*pow(Pi, 2)*y*(-x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) + y*(-x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) + pow(-x + 1, 2)*atan2(y, -x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)))/((-1 + 0.25*pow(Pi, 2))*sqrt(pow(y, 2) + pow(-x + 1, 2))) - (0.5*Pi*y*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) - 0.25*pow(Pi, 2)*y/sqrt(pow(y, 2) + pow(-x + 1, 2)) + (-x + 1)*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)))/((-1 + 0.25*pow(Pi, 2))*sqrt(pow(y, 2) + pow(-x + 1, 2)));
564 
565  // Value of \frac{\partial v}{\partial y}
566  grad_u[1][1] = pow(y, 2)*(-1.0*y*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 0.5*Pi*y/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 0.5*Pi*(-x + 1)*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) - 0.25*pow(Pi, 2)*(-x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 1.0*(-x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)))/((-1 + 0.25*pow(Pi, 2))*pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L)) - y*(-x + 1)*(0.5*Pi*y*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) - 0.25*pow(Pi, 2)*y/sqrt(pow(y, 2) + pow(-x + 1, 2)) + (-x + 1)*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)))/((-1 + 0.25*pow(Pi, 2))*pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L)) - y*(1.0*pow(y, 2)*atan2(y, -x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - 0.5*Pi*pow(y, 2)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - 0.5*Pi*y*(-x + 1)*atan2(y, -x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - 2.0*y*(-x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) + 0.25*pow(Pi, 2)*y*(-x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) + 0.5*Pi*pow(-x + 1, 2)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - 1.0*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 0.5*Pi/sqrt(pow(y, 2) + pow(-x + 1, 2)))/((-1 + 0.25*pow(Pi, 2))*sqrt(pow(y, 2) + pow(-x + 1, 2))) + (-x + 1)*(-0.5*Pi*pow(y, 2)*atan2(y, -x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) + 0.25*pow(Pi, 2)*pow(y, 2)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) - y*(-x + 1)*atan2(y, -x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) + 0.5*Pi*y*(-x + 1)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) + pow(-x + 1, 2)/pow(pow(y, 2) + pow(-x + 1, 2), 3.0L/2.0L) + 0.5*Pi*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) - 0.25*pow(Pi, 2)/sqrt(pow(y, 2) + pow(-x + 1, 2)))/((-1 + 0.25*pow(Pi, 2))*sqrt(pow(y, 2) + pow(-x + 1, 2))) - (-1.0*y*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 0.5*Pi*y/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 0.5*Pi*(-x + 1)*atan2(y, -x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) - 0.25*pow(Pi, 2)*(-x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)) + 1.0*(-x + 1)/sqrt(pow(y, 2) + pow(-x + 1, 2)))/((-1 + 0.25*pow(Pi, 2))*sqrt(pow(y, 2) + pow(-x + 1, 2)));
567 
568 
569  grad_u[0][0]*=-1.0;
570  grad_u[0][1]*=-1.0;
571  grad_u[1][0]*=-1.0;
572  grad_u[1][1]*=-1.0;
573 
574  return grad_u;
575  }

References atan2(), k, BiharmonicTestFunctions2::Pi, Eigen::bfloat16_impl::pow(), sqrt(), plotDoE::x, and y.

◆ gravity()

void Global_Parameters::gravity ( const double time,
const Vector< double > &  xi,
Vector< double > &  b 
)

Non-dimensional gravity as body force.

112  {
113  b[0]=0.0;
114  b[1]=-Gravity;
115  }
double Gravity
Non-dim gravity (default assignment for FSI1 test case)
Definition: interaction/turek_flag/turek_flag.cc:106

References b, and Gravity.

Referenced by TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >::build_mesh(), and TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >::TurekProblem().

◆ Hankel_first()

void Global_Parameters::Hankel_first ( const unsigned n,
const double x,
Vector< std::complex< double > > &  h,
Vector< std::complex< double > > &  hp 
)

Compute Hankel function of the first kind of orders 0...n and its derivates at coordinate x. The function returns the vector then its derivative.

125  {
126  int n_actual = 0;
127  Vector<double> jn(n+1),yn(n+1),jnp(n+1), ynp(n+1);
128  CRBond_Bessel::bessjyna(int(n),x,n_actual,&jn[0],&yn[0],
129  &jnp[0],&ynp[0]);
130 #ifdef PARANOID
131  if (n_actual!=int(n))
132  {
133  std::ostringstream error_stream;
134  error_stream << "CRBond_Bessel::bessjyna() only computed "
135  << n_actual << " rather than " << n
136  << " Bessel functions.\n";
137  throw OomphLibError(error_stream.str(),
140  }
141 #endif
142  for (unsigned i=0;i<n;i++)
143  {
144  h[i] =std::complex<double>(jn[i], yn[i]);
145  hp[i]=std::complex<double>(jnp[i],ynp[i]);
146  }
147  }
Definition: oomph_definitions.h:222
int bessjyna(int n, double x, int &nm, double *jn, double *yn, double *jnp, double *ynp)
Definition: crbond_bessel.cc:852
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86

References CRBond_Bessel::bessjyna(), i, n, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and plotDoE::x.

Referenced by exact_axisym_radiated_power(), exact_u(), and HankelH1().

◆ HankelH1()

std::complex<double> Global_Parameters::HankelH1 ( const double k,
const double x 
)

Interface to Hankel function in maple style.

108  {
112 
113  if (k==0.0)
114  {
115  return h[0];
116  }
117  else if (k==1.0)
118  {
119  return h[1];
120  }
121  else
122  {
123  cout << "Never get here. k=" << k << std::endl;
124  assert(false);
125  // Dummy return
126  return std::complex<double>(1.0,1.0);
127  }
128  }
#define assert(e,...)
Definition: Logger.h:744

References assert, Hankel_first(), k, and plotDoE::x.

Referenced by axisym_coefficient(), and exact_axisym_potential().

◆ I()

const std::complex< double > Global_Parameters::I ( 0.  0,
1.  0 
)

Define the imaginary unit.

◆ is_on_fsi_boundary()

bool Global_Parameters::is_on_fsi_boundary ( Node nod_pt)

Boolean to identify if node is on fsi boundary.

71  {
72  if (
73  (
74  // Is it a boundary node?
75  dynamic_cast<BoundaryNodeBase*>(nod_pt)!=0)&&
76  (
77  // Horizontal extent of main immersed obstacle
78  ( (nod_pt->x(0)>1.6)&&(nod_pt->x(0)<4.75)&&
79  // Vertical extent of main immersed obstacle
80  (nod_pt->x(1)>0.1125)&&(nod_pt->x(1)<2.8) ) ||
81  // Two nodes on the bottom wall are below y=0.3
82  ( (nod_pt->x(1)<0.3)&&
83  // ...and bracketed in these two x-ranges
84  ( ( (nod_pt->x(0)>3.0)&&(nod_pt->x(0)<3.1) ) ||
85  ( (nod_pt->x(0)<4.6)&&(nod_pt->x(0)>4.5) ) )
86  )
87  )
88  )
89  {
90  return true;
91  }
92  else
93  {
94  return false;
95  }
96  }
Definition: nodes.h:1996
double & x(const unsigned &i)
Return the i-th nodal coordinate.
Definition: nodes.h:1060

References oomph::Node::x().

Referenced by FluidTriangleMesh< ELEMENT >::FluidTriangleMesh(), MySolidTriangleMesh< ELEMENT >::MySolidTriangleMesh(), and oomph::ThinLayerBrickOnTetMesh< ELEMENT >::ThinLayerBrickOnTetMesh().

◆ Nu() [1/2]

std::complex<double> Global_Parameters::Nu ( 0.  3,
0.  05 
)

Define Poisson's ratio Nu.

◆ Nu() [2/2]

std::complex<double> Global_Parameters::Nu ( std::complex< double 0.3, 0.0)

Poisson's ratio Nu.

◆ Omega_sq() [1/5]

std::complex<double> Global_Parameters::Omega_sq ( 10.  0,
0.  0 
)

Define the non-dimensional square angular frequency of time-harmonic motion

◆ Omega_sq() [2/5]

std::complex<double> Global_Parameters::Omega_sq ( 10.  0,
5.  0 
)

Define the non-dimensional square angular frequency of time-harmonic motion

◆ Omega_sq() [3/5]

Vector<double> Global_Parameters::Omega_sq ( ,
0.  0 
)

Square of non-dim frequency for the two regions – dependent variable!

◆ Omega_sq() [4/5]

Vector<std::complex<double> > Global_Parameters::Omega_sq ( ,
std::complex< double 100.0, 0.0 
)

Non-dim square of frequency for solid – dependent variable!

◆ Omega_sq() [5/5]

std::complex<double> Global_Parameters::Omega_sq ( std::complex< double 100.0, 0.0)

Non-dim square of frequency for solid – dependent variable!

◆ periodic_traction()

void Global_Parameters::periodic_traction ( const double time,
const Vector< double > &  x,
const Vector< double > &  n,
Vector< double > &  result 
)

◆ prescribed_inflow_traction()

void Global_Parameters::prescribed_inflow_traction ( const double t,
const Vector< double > &  x,
const Vector< double > &  n,
Vector< double > &  traction 
)

Applied traction on fluid at the inflow boundary.

179  {
180  traction[0]=0.0;
181  traction[1]=0.0;
182  traction[2]=P_in;
183  }
double P_in
Fluid pressure on inflow boundary.
Definition: unsteady_vmtk_fsi.cc:76

References P_in.

Referenced by UnstructuredFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >::create_fluid_traction_elements(), and UnstructuredFluidProblem< ELEMENT >::create_fluid_traction_elements().

◆ prescribed_outflow_traction()

void Global_Parameters::prescribed_outflow_traction ( const double t,
const Vector< double > &  x,
const Vector< double > &  n,
Vector< double > &  traction 
)

Applied traction on fluid at the inflow boundary.

194  {
195  traction[0]=0.0;
196  traction[1]=0.0;
197  traction[2]=-P_out;
198  }
double P_out
Fluid pressure on outflow boundary.
Definition: unsteady_vmtk_fsi.cc:79

References P_out.

Referenced by UnstructuredFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >::create_fluid_traction_elements(), and UnstructuredFluidProblem< ELEMENT >::create_fluid_traction_elements().

◆ press_load()

void Global_Parameters::press_load ( const Vector< double > &  xi,
const Vector< double > &  x,
const Vector< double > &  N,
Vector< double > &  load 
)

Load function for wall.

395  {
396  // Get polar angle
397  double phi=atan2(xi[1],xi[0]);
398 
399 // if (xi[0]==0.0) assert(false);
400 
401  // Pressure with pcos perturbation
402  for(unsigned i=0;i<3;i++)
403  {
404  load[i] = (-P - Pcos*cos(2.0*phi))*N[i];
405  }
406  }
void load(Archive &ar, ParticleHandler &handl)
Definition: Particles.h:21
@ N
Definition: constructor.cpp:22
double Pcos
Perturbation pressure.
Definition: interaction/pseudo_solid_collapsible_tube/pseudo_solid_collapsible_tube.cc:382

References atan2(), cos(), i, load(), N, Global_Physical_Variables::P, and Pcos.

Referenced by PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >::create_solid_traction_elements().

◆ pressure_couette()

double Global_Parameters::pressure_couette ( const Vector< double > &  x)

Couette Pressure.

294  {
295  // Shifted origin
296  double x_shifted=1.0+x[0];
297  double y_shifted=1.0+x[1];
298 
299  // Polar coordinates
300  double r=sqrt(x_shifted*x_shifted+y_shifted*y_shifted);
301 
302  // Pressure
303  double press=Global_Physical_Variables::Re*
304  (A_couette*A_couette*r*r/2.0+
305  2.0*A_couette*B_couette*log(r)-
306  B_couette*B_couette/(2.0*r*r));
307 
308  return press;
309  }
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 log(const bfloat16 &a)
Definition: BFloat16.h:618
double A_couette
Amplitude of linearly varying part.
Definition: navier_stokes/navier_stokes_with_singularity/driven_cavity.cc:263
double B_couette
Amplitude of singular part.
Definition: navier_stokes/navier_stokes_with_singularity/driven_cavity.cc:267
double Re
Reynolds number.
Definition: fibre.cc:55

References A_couette, B_couette, Eigen::bfloat16_impl::log(), UniformPSDSelfTest::r, Global_Physical_Variables::Re, sqrt(), and plotDoE::x.

Referenced by exact_couette().

◆ pressure_load()

void Global_Parameters::pressure_load ( const Vector< double > &  x,
const Vector< double > &  n,
Vector< std::complex< double > > &  traction 
)

Pressure load (real and imag part)

Constant pressure load (real and imag part)

154  {
155  double phi=atan2(x[1],x[0]);
156  double magnitude=exp(-Alpha*pow(phi-0.25*MathematicalConstants::Pi,2));
157 
158  unsigned dim = traction.size();
159  for(unsigned i=0;i<dim;i++)
160  {
161  traction[i] = complex<double>(-magnitude*P*n[i],magnitude*P*n[i]);
162  }
163  } // end_of_pressure_load
double P
Uniform pressure.
Definition: unstructured_acoustic_fsi.cc:145
double Alpha
Parameter for steepness of step.
Definition: two_d_adv_diff_adapt.cc:53

References TanhSolnForAdvectionDiffusion::Alpha, atan2(), Eigen::bfloat16_impl::exp(), i, oomph::VectorHelpers::magnitude(), n, P, BiharmonicTestFunctions2::Pi, Eigen::bfloat16_impl::pow(), and plotDoE::x.

Referenced by CoatedDiskProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >::create_solid_traction_elements(), CoatedSphereProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >::create_solid_traction_elements(), and RingWithTRibProblem< ELASTICITY_ELEMENT >::create_traction_elements().

◆ pressure_pseudo_singularity_for_couette()

double Global_Parameters::pressure_pseudo_singularity_for_couette ( const Vector< double > &  x)

Pseudo_singularity for computation of Couette flow.

369  {
370  return -2.0*x[1]; //-2.0*x[0];
371  }

References plotDoE::x.

Referenced by blended_pressure_pseudo_singularity_for_couette().

◆ pressure_singularity1()

double Global_Parameters::pressure_singularity1 ( const Vector< double > &  x)

Function that computes the fitting pressure solution near the corner (0,0)

579  {
580  using namespace MathematicalConstants;
581 
582  // Polar coordinates centered at the point (0,0)
583  double r = sqrt(x[0]*x[0]+x[1]*x[1]);
584  double theta = atan2(x[1],x[0]);
585 
586  double p = -(-0.25*Pi*Pi*Pi*sin(theta) + 1.0*Pi*sin(theta) - 0.5*Pi*Pi*cos(theta) + 2.0*cos(theta))/(r*(-0.0625*Pi*Pi*Pi*Pi - 1.0 + 0.5*Pi*Pi));
587 
588  //hierher
589  if (std::isinf(p))
590  {
591  p=200.0;
592  }
593 
594  return p;
595  }
#define isinf(X)
Definition: main.h:110

References atan2(), cos(), isinf, p, BiharmonicTestFunctions2::Pi, UniformPSDSelfTest::r, sin(), sqrt(), BiharmonicTestFunctions2::theta, and plotDoE::x.

◆ pressure_singularity2()

double Global_Parameters::pressure_singularity2 ( const Vector< double > &  x)

Function that computes the fitting pressure solution near the corner (1,0)

Polar coordinates centered at the point (1,0)

599  {
600  using namespace MathematicalConstants;
601 
602  // Variable change
603  Vector<double> x1(2);
604  x1[0] = 1.0-x[0];
605  x1[1] = x[1];
606 
608  double r = sqrt(x1[0]*x1[0] + x1[1]*x1[1]);
609  double theta = atan2(x1[1],x1[0]);
610 
611  double p = -(-1.0*Pi*sin(theta) + 0.25*Pi*Pi*Pi*sin(theta) - 2.0*cos(theta) + 0.5*Pi*Pi*cos(theta))/(r*(-0.0625*Pi*Pi*Pi*Pi - 1.0 + 0.5*Pi*Pi));
612 
613  // hierher
614  if (std::isinf(p))
615  {
616  p=200.0;
617  }
618 
619  return p;
620  }

References atan2(), cos(), isinf, p, BiharmonicTestFunctions2::Pi, UniformPSDSelfTest::r, sin(), sqrt(), BiharmonicTestFunctions2::theta, plotDoE::x, and Global_parameters::x1().

◆ set_parameters()

void Global_Parameters::set_parameters ( const string &  case_id)

Set parameters for the various test cases.

144  {
145 
146  // Remember which case we're dealing with
147  Case_ID=case_id;
148 
149  // Setup independent parameters depending on test case
150  if (case_id=="FSI1")
151  {
152  // Reynolds number based on diameter of cylinder
153  Re=20.0;
154 
155  // Strouhal number based on timescale of one second
156  St=0.5;
157 
158  // Womersley number
159  ReSt=Re*St;
160 
161  // FSI parameter
162  Q=1.429e-6;
163 
164  // Timestep -- aiming for about 40 steps per period
165  Dt=0.1;
166 
167  // Density ratio
168  Density_ratio=1.0;
169 
170  // Gravity
171  Gravity=0.0;
172 
173  // Max. flux
174  Max_flux=1.0;
175 
176  // Ignore fluid
177  Ignore_fluid_loading=false;
178 
179  // Compute dependent parameters
180 
181  // Timescale ratio for solid
183  }
184  else if (case_id=="FSI2")
185  {
186  // Reynolds number based on diameter of cylinder
187  Re=100.0;
188 
189  // Strouhal number based on timescale of one second
190  St=0.1;
191 
192  // Womersley number
193  ReSt=Re*St;
194 
195  // FSI parameter
196  Q=7.143e-6;
197 
198  // Timestep -- aiming for about 40 steps per period
199  Dt=0.01;
200 
201  // Density ratio
202  Density_ratio=10.0;
203 
204  // Gravity
205  Gravity=0.0;
206 
207  // Max. flux
208  Max_flux=1.0;
209 
210  // Ignore fluid
211  Ignore_fluid_loading=false;
212 
213  // Compute dependent parameters
214 
215  // Timescale ratio for solid
217  }
218  else if (case_id=="FSI3")
219  {
220  // Reynolds number based on diameter of cylinder
221  Re=200.0;
222 
223  // Strouhal number based on timescale of one second
224  St=0.05;
225 
226  // Womersley number
227  ReSt=Re*St;
228 
229  // FSI parameter
230  Q=3.571e-6;
231 
232  // Timestep -- aiming for about 40 steps per period
233  Dt=0.005;
234 
235  // Density ratio
236  Density_ratio=1.0;
237 
238  // Gravity
239  Gravity=0.0;
240 
241  // Max. flux
242  Max_flux=1.0;
243 
244  // Ignore fluid
245  Ignore_fluid_loading=false;
246 
247  // Compute dependent parameters
248 
249  // Timescale ratio for solid
251  }
252  else if (case_id=="CSM1")
253  {
254  // Reynolds number based on diameter of cylinder
255  Re=0.0;
256 
257  // Strouhal number based on timescale of one second
258  // (irrelevant here)
259  St=0.0;
260 
261  // Womersley number
262  ReSt=Re*St;
263 
264  // FSI parameter
265  Q=0.0;
266 
267  // Timestep -- irrelevant here
268  Dt=0.005;
269 
270  // Density ratio (switch off wall inertia)
271  Density_ratio=0.0;
272 
273  // Gravity
274  Gravity=1.429e-4;
275 
276  // Max. flux
277  Max_flux=0.0;
278 
279  // Ignore fluid
281 
282  // Compute dependent parameters
283 
284  // Timescale ratio for solid
285  Lambda_sq=0.0;
286  }
287  else if (case_id=="CSM3")
288  {
289  // Reynolds number based on diameter of cylinder
290  Re=0.0;
291 
292  // Strouhal number based on timescale of one second
293  // (irrelevant here)
294  St=0.0;
295 
296  // Womersley number
297  ReSt=Re*St;
298 
299  // Timestep -- aiming for about 40 steps per period
300  Dt=0.025;
301 
302  // FSI parameter
303  Q=0.0;
304 
305  // Density ratio (not used here)
306  Density_ratio=0.0;
307 
308  // Gravity
309  Gravity=1.429e-4;
310 
311  // Max. flux
312  Max_flux=0.0;
313 
314  // Ignore fluid
316 
317  // Compute dependent parameters
318 
319  // Set timescale ratio for solid based on the
320  // observed period of oscillation of about 1 sec)
321  Lambda_sq=7.143e-6;
322  }
323  else
324  {
325  std::cout << "Wrong case_id: " << case_id << std::endl;
326  exit(0);
327  }
328 
329 
330  // Ramp period (20 timesteps)
331  Ramp_period=Dt*20.0;
332 
333  // "Big G" Linear constitutive equations:
335 
336  // Doc
337  oomph_info << std::endl;
338  oomph_info << "-------------------------------------------"
339  << std::endl;
340  oomph_info << "Case: " << case_id << std::endl;
341  oomph_info << "Re = " << Re << std::endl;
342  oomph_info << "St = " << St << std::endl;
343  oomph_info << "ReSt = " << ReSt << std::endl;
344  oomph_info << "Q = " << Q << std::endl;
345  oomph_info << "Dt = " << Dt << std::endl;
346  oomph_info << "Ramp_period = " << Ramp_period << std::endl;
347  oomph_info << "Max_flux = " << Max_flux << std::endl;
348  oomph_info << "Density_ratio = " << Density_ratio << std::endl;
349  oomph_info << "Lambda_sq = " << Lambda_sq << std::endl;
350  oomph_info << "Gravity = " << Gravity << std::endl;
351  oomph_info << "Ignore fluid = " << Ignore_fluid_loading<< std::endl;
352  oomph_info << "-------------------------------------------"
353  << std::endl << std::endl;
354  }
MatrixXf Q
Definition: HouseholderQR_householderQ.cpp:1
Definition: constitutive_laws.h:699
double Re
Reynolds number.
Definition: axisym_navier_stokes/counter_rotating_disks/counter_rotating_disks.cc:61
double ReSt
Product of Reynolds and Strouhal numbers.
Definition: axisym_navier_stokes/counter_rotating_disks/counter_rotating_disks.cc:64
double Max_flux
Max. flux.
Definition: interaction/turek_flag/turek_flag.cc:124
string Case_ID
Default case ID.
Definition: interaction/turek_flag/turek_flag.cc:55
bool Ignore_fluid_loading
Ignore fluid (default assignment for FSI1 test case)
Definition: interaction/turek_flag/turek_flag.cc:97
ConstitutiveLaw * Constitutive_law_pt
Pointer to constitutive law.
Definition: interaction/turek_flag/turek_flag.cc:87
double St
Strouhal number (default assignment for FSI1 test case)
Definition: interaction/turek_flag/turek_flag.cc:61
double Ramp_period
Period for ramping up in flux.
Definition: interaction/turek_flag/turek_flag.cc:118
double E
Elastic modulus.
Definition: TwenteMeshGluing.cpp:68
double Lambda_sq
Pseudo-solid mass density.
Definition: pressure_driven_torus.cc:62
Definition: ConstraintElementsUnitTest.cpp:19
double Density_ratio
Ratio of pore fluid density to solid matrix density.
Definition: unstructured_two_d_curved.cc:74
double Dt
Timestep.
Definition: unstructured_two_d_curved.cc:51
OomphInfo oomph_info
Definition: oomph_definitions.cc:319

References Case_ID, Constitutive_law_pt, ProblemParameters::Density_ratio, ProblemParameters::Dt, Global_Physical_Variables::E, Ignore_fluid_loading, Global_Physical_Variables::Lambda_sq, Max_flux, Constitutive_Parameters::Nu, oomph::oomph_info, Q, Ramp_period, GlobalPhysicalVariables::Re, GlobalPhysicalVariables::ReSt, and St.

Referenced by main().

◆ solid_boundary_displacement() [1/2]

void Global_Parameters::solid_boundary_displacement ( const Vector< double > &  x,
Vector< double > &  u 
)

Real-valued, radial displacement field on inner boundary.

70  {
72  double norm=sqrt(x[0]*x[0]+x[1]*x[1]);
73  normal[0]=x[0]/norm;
74  normal[1]=x[1]/norm;
75 
78  }
double Displacement_amplitude
Displacement amplitude on inner radius.
Definition: time_harmonic_elastic_annulus.cc:65
void normal(const Vector< double > &x, Vector< double > &normal)
Definition: free_surface_rotation.cc:65

References Displacement_amplitude, WallFunction::normal(), sqrt(), and plotDoE::x.

◆ solid_boundary_displacement() [2/2]

void Global_Parameters::solid_boundary_displacement ( const Vector< double > &  x,
Vector< std::complex< double > > &  u 
)

Displacement field on inner boundary of solid.

88  {
90  double norm=sqrt(x[0]*x[0]+x[1]*x[1]);
91  double phi=atan2(x[1],x[0]);
92  normal[0]=x[0]/norm;
93  normal[1]=x[1]/norm;
94 
95  u[0]=complex<double>(normal[0]*cos(double(N)*phi),0.0);
96  u[1]=complex<double>(normal[1]*cos(double(N)*phi),0.0);
97  }

References atan2(), cos(), N, WallFunction::normal(), sqrt(), and plotDoE::x.

Referenced by AnnularDiskProblem< ELASTICITY_ELEMENT >::AnnularDiskProblem(), CoatedDiskProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >::CoatedDiskProblem(), and CoatedSphereProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >::CoatedSphereProblem().

◆ u_r()

◆ u_theta()

◆ u_z()

double Global_Parameters::u_z ( const double time,
const Vector< double > &  x 
)

Calculate the time dependent form of the z-component of displacement.

139  {
140  Vector<double> displ(3);
141  exact_solution_th(x,displ);
142  return cos(time)*displ[1];
143  }

References cos(), exact_solution_th(), and plotDoE::x.

Referenced by exact_solution(), AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >::set_boundary_conditions(), and AxisymmetricLinearElasticityProblem< ELEMENT, TIMESTEPPER >::set_initial_conditions().

◆ update_parameter_values()

void Global_Parameters::update_parameter_values ( )

Function to update dependent parameter values.

77  {
79  }
double Density_ratio
Density ratio: solid to fluid.
Definition: acoustic_fsi.cc:70

References Density_ratio, Omega_sq, and Q.

Referenced by main().

◆ velocity_couette()

Vector<double> Global_Parameters::velocity_couette ( const Vector< double > &  x)

Couette flow.

272  {
273  // Initialise velocity vector to return
274  Vector<double> u(2,0.0);
275 
276  // Shifted origin
277  double x_shifted=1.0+x[0];
278  double y_shifted=1.0+x[1];
279 
280 
281  // Polar coordinates
282  double theta = atan2(y_shifted,x_shifted);
283  double r=sqrt(x_shifted*x_shifted+y_shifted*y_shifted);
284 
286  u[0]=-magnitude*sin(theta);
287  u[1]= magnitude*cos(theta);
288 
289  return u;
290  }

References A_couette, atan2(), B_couette, cos(), oomph::VectorHelpers::magnitude(), UniformPSDSelfTest::r, sin(), sqrt(), BiharmonicTestFunctions2::theta, and plotDoE::x.

Referenced by exact_couette().

◆ velocity_pseudo_singularity_for_couette()

Vector<double> Global_Parameters::velocity_pseudo_singularity_for_couette ( const Vector< double > &  x)

Pseudo_singularity for computation of Couette flow.

323  {
324  // Initialise velocity vector to return
325  Vector<double> u(2,0.0);
326 
327  // Poiseuille flow
328  u[0]=0.0;
329  u[1]=x[0]*(1.0-x[0]);
330 
331 
332  return u;
333  }

References plotDoE::x.

Referenced by blended_grad_velocity_pseudo_singularity_for_couette(), and blended_velocity_pseudo_singularity_for_couette().

◆ velocity_singularity1()

Vector<double> Global_Parameters::velocity_singularity1 ( const Vector< double > &  x)

Function that computes the fitting velocity solution near the corner (0,0)

452  {
453  using namespace MathematicalConstants;
454 
455  // Initialise velocity vector to return
456  Vector<double> u(2,0.0);
457 
458  // Find angle of polar coordinates centered at the point (0,0)
459  double theta = atan2(x[1],x[0]);
460 
461  u[0] = -(0.5*Pi*theta*sin(theta) + theta*cos(theta) - 0.25*Pi*Pi*sin(theta))*sin(theta)/(-1.0 + 0.25*Pi*Pi) - 1.0*(-theta*sin(theta) + 0.5*Pi*theta*cos(theta) + 0.5*Pi*sin(theta) - 0.25*Pi*Pi*cos(theta) + cos(theta))*cos(theta)/(-1.0 + 0.25*Pi*Pi);
462 
463  u[1] = (0.5*Pi*theta*sin(theta) + theta*cos(theta) - 0.25*Pi*Pi*sin(theta))*cos(theta)/(-1.0 + 0.25*Pi*Pi) - 1.0*(-theta*sin(theta) + 0.5*Pi*theta*cos(theta) + 0.5*Pi*sin(theta) - 0.25*Pi*Pi*cos(theta) + cos(theta))*sin(theta)/(-1.0 + 0.25*Pi*Pi);
464 
465  // return the velocity vector
466  return u;
467  }

References atan2(), cos(), BiharmonicTestFunctions2::Pi, sin(), BiharmonicTestFunctions2::theta, and plotDoE::x.

◆ velocity_singularity2()

Vector<double> Global_Parameters::velocity_singularity2 ( const Vector< double > &  x)

Function that computes the fitting velocity solution near the corner (1,0)

Polar coordinates centered at the point (1,0)

Value of the U component at the angle theta

Value of the V component at the angle theta

471  {
472  using namespace MathematicalConstants;
473 
474  // Variable change
475  Vector<double> x1(2);
476  x1[0] = 1.0-x[0];
477  x1[1] = x[1];
478 
480  //double r = sqrt(x1[0]*x1[0] + x1[1]*x1[1]);
481  double theta = atan2(x1[1],x1[0]);
482 
483  // Initialise the velocity vector
484  Vector<double> u(2,0.0);
485 
487  u[0] = (0.5*Pi*theta*sin(theta) + theta*cos(theta) - 0.25*Pi*Pi*sin(theta))*sin(theta)/(-1.0 + 0.25*Pi*Pi) + 1.0*(-theta*sin(theta) + 0.5*Pi*theta*cos(theta) + 0.5*Pi*sin(theta) - 0.25*Pi*Pi*cos(theta) + cos(theta))*cos(theta)/(-1.0 + 0.25*Pi*Pi);
488  u[0] = - u[0];
489 
491  u[1] = -(0.5*Pi*theta*sin(theta) + theta*cos(theta) - 0.25*Pi*Pi*sin(theta))*cos(theta)/(-1.0 + 0.25*Pi*Pi) + 1.0*(-theta*sin(theta) + 0.5*Pi*theta*cos(theta) + 0.5*Pi*sin(theta) - 0.25*Pi*Pi*cos(theta) + cos(theta))*sin(theta)/(-1.0 + 0.25*Pi*Pi);
492 
493  return u;
494  }

References atan2(), cos(), BiharmonicTestFunctions2::Pi, sin(), BiharmonicTestFunctions2::theta, plotDoE::x, and Global_parameters::x1().

Variable Documentation

◆ A_couette

double Global_Parameters::A_couette =1.0

Amplitude of linearly varying part.

Referenced by pressure_couette(), and velocity_couette().

◆ ABC_order

unsigned Global_Parameters::ABC_order =3

Order of absorbing/appproximate boundary condition.

Referenced by CoatedDiskProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >::create_helmholtz_ABC_elements().

◆ Add_refinement_level

unsigned Global_Parameters::Add_refinement_level =1

The additional levels of uniform refinement.

Referenced by main().

◆ Alpha

double Global_Parameters::Alpha =0.0

Peakiness parameter for pressure load.

Referenced by main(), and FlowAroundCylinderProblem< ELEMENT >::set_boundary_conditions().

◆ Amplitude

double Global_Parameters::Amplitude = 1.0

Amplitude of traction applied.

Referenced by exact_solution(), and periodic_traction().

◆ B

double Global_Parameters::B =0.7

Referenced by GeneralEllipse::b(), and main().

◆ B_couette

double Global_Parameters::B_couette =1.0

Amplitude of singular part.

Referenced by pressure_couette(), and velocity_couette().

◆ Box_half_length

double Global_Parameters::Box_half_length = 1.0

(Half)height of the box

Referenced by TetmeshPoissonProblem< ELEMENT >::TetmeshPoissonProblem().

◆ Box_half_width

double Global_Parameters::Box_half_width = 1.5

(Half-)width of the box

Referenced by TetmeshPoissonProblem< ELEMENT >::TetmeshPoissonProblem().

◆ Box_length

◆ Box_width

◆ Ca

◆ Case_ID

string Global_Parameters::Case_ID ="FSI1"

Default case ID.

Referenced by main(), and set_parameters().

◆ Centre_x

◆ Centre_y

◆ Constitutive_law_pseudo_elastic_pt

ConstitutiveLaw * Global_Parameters::Constitutive_law_pseudo_elastic_pt =0

Pointer to constitutive law for the pseudo elastic node update elements.

Referenced by main(), and PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >::PseudoElasticCollapsibleChannelProblem().

◆ Constitutive_law_pt

◆ Constitutive_law_wall_pt

ConstitutiveLaw * Global_Parameters::Constitutive_law_wall_pt =0

◆ Density_ratio

double Global_Parameters::Density_ratio =0.0

Density ratio: solid to fluid.

Density ratio for the two regions: solid to fluid.

Density ratio (solid to fluid; default assignment for FSI1 test case)

Referenced by CoatedDiskProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >::doc_solution(), CoatedSphereProblem< ELASTICITY_ELEMENT, HELMHOLTZ_ELEMENT >::doc_solution(), main(), and update_parameter_values().

◆ Direction

unsigned Global_Parameters::Direction = 1

◆ Directory

◆ Displacement_amplitude

double Global_Parameters::Displacement_amplitude =0.1

Displacement amplitude on inner radius.

Referenced by solid_boundary_displacement().

◆ Doc_convergence_flag

unsigned Global_Parameters::Doc_convergence_flag =0

Variable used to decide whether or not convergence information is displayed: 0 = Don't display convergence information 1 = Display convergence information

Referenced by main().

◆ Doc_info

DocInfo Global_Parameters::Doc_info

DocInfo object used for documentation of the solution.

Referenced by FluxPoissonMGProblem< ELEMENT, MESH >::doc_solution(), UnitCubePoissonMGProblem< ELEMENT, MESH >::doc_solution(), and main().

◆ Dt

double Global_Parameters::Dt =0.01

Timestep.

Timestep for simulation: 40 steps per period.

Referenced by main(), and PseudoElasticCollapsibleChannelProblem< FLUID_ELEMENT, SOLID_ELEMENT >::unsteady_run().

◆ E

◆ E_pt

◆ El_multiplier

◆ Element_area

double Global_Parameters::Element_area = 0.01

helper to set target mesh element size

Referenced by ElasticAnnulusProblem< ELASTICITY_ELEMENT >::ElasticAnnulusProblem(), and main().

◆ Element_multiplier

unsigned Global_Parameters::Element_multiplier = 1

Referenced by main().

◆ Finite

bool Global_Parameters::Finite =false

Specify problem to be solved (boundary conditons for finite or infinite domain).

Referenced by PeriodicLoadProblem< ELEMENT >::PeriodicLoadProblem(), and RefineablePeriodicLoadProblem< ELEMENT >::RefineablePeriodicLoadProblem().

◆ Fluid_height

◆ Fluid_length_left

double Global_Parameters::Fluid_length_left =1.0

length of fluid mesh to left of leaflet

Referenced by FSIChannelWithLeafletProblem< ELEMENT >::FSIChannelWithLeafletProblem().

◆ Fluid_length_right

double Global_Parameters::Fluid_length_right =3.0

length of fluid mesh to right of leaflet

Referenced by FSIChannelWithLeafletProblem< ELEMENT >::FSIChannelWithLeafletProblem().

◆ Fourier_wavenumber

◆ G

◆ Gmsh_command_line_invocation

std::string Global_Parameters::Gmsh_command_line_invocation ="/home/mheil/gmesh/bin/bin/gmsh"

Specify how to call gmsh from the command line.

Referenced by main(), and TetmeshPoissonProblem< ELEMENT >::TetmeshPoissonProblem().

◆ Gravity

double Global_Parameters::Gravity =0.0

Non-dim gravity (default assignment for FSI1 test case)

Non-dim gravity.

Referenced by Global_Physical_Variables::body_force(), gravity(), and main().

◆ H

◆ H_annulus

◆ H_coating

◆ Ignore_fluid_loading

◆ Impulsive_start_flag

unsigned Global_Parameters::Impulsive_start_flag =0

Flag for impulsive start: Default = start from exact time-periodic solution.

Referenced by main(), RayleighProblem< ELEMENT, TIMESTEPPER >::unsteady_run(), and RayleighTractionProblem< ELEMENT, TIMESTEPPER >::unsteady_run().

◆ Initial_element_volume

double Global_Parameters::Initial_element_volume =1.0

◆ K_squared

◆ L

◆ L_pml_multiplier

double Global_Parameters::L_pml_multiplier = 1.0

◆ L_x

double Global_Parameters::L_x =1.0

Referenced by main().

◆ L_y

double Global_Parameters::L_y =1.0

Referenced by main().

◆ Lambda

◆ lambda

std::complex< double > Global_Parameters::lambda = E*Nu/(1.0+Nu)/(1.0-2.0*Nu)

Referenced by boundary_traction().

◆ Lambda_sq

◆ Lambda_sq_beam

◆ Ldown

◆ Leaflet_height

double Global_Parameters::Leaflet_height =0.5

◆ Leaflet_x0

double Global_Parameters::Leaflet_x0 = 1.0

◆ Linear_solver_flag

unsigned Global_Parameters::Linear_solver_flag =1

The choice of linear solver 0 = SuperLU 1 = Multigrid

Referenced by main(), and UnitCubePoissonMGProblem< ELEMENT, MESH >::~UnitCubePoissonMGProblem().

◆ Long_run_flag

unsigned Global_Parameters::Long_run_flag =1

◆ Lr

◆ Lup

◆ Lx

◆ Ly

◆ Lz

double Global_Parameters::Lz = 2.0

Length of domain in z-direction.

Referenced by SinusoidalWall::d2position(), SinusoidalWall::dposition(), main(), and SinusoidalWall::position().

◆ M

unsigned Global_Parameters::M =4

Wavenumber "zenith"-variation of imposed displacement of coating on inner boundary

Referenced by main().

◆ Max_flux

double Global_Parameters::Max_flux =1.0

Max. flux.

Referenced by set_parameters().

◆ Mesh_nleft

unsigned Global_Parameters::Mesh_nleft =4

Num elements to left of leaflet in coarse mesh.

Referenced by FSIChannelWithLeafletProblem< ELEMENT >::FSIChannelWithLeafletProblem().

◆ Mesh_nright

unsigned Global_Parameters::Mesh_nright =12

Num elements to right of leaflet in coarse mesh.

Referenced by FSIChannelWithLeafletProblem< ELEMENT >::FSIChannelWithLeafletProblem().

◆ Mesh_ny1

unsigned Global_Parameters::Mesh_ny1 =2

Num elements in fluid mesh in y dirn adjacent to leaflet.

Referenced by FSIChannelWithLeafletProblem< ELEMENT >::FSIChannelWithLeafletProblem().

◆ Mesh_ny2

unsigned Global_Parameters::Mesh_ny2 =2

Num elements in fluid mesh in y dirn above leaflet.

Referenced by FSIChannelWithLeafletProblem< ELEMENT >::FSIChannelWithLeafletProblem().

◆ Min_flux

double Global_Parameters::Min_flux =0.0

Min. flux.

◆ Min_refinement_level

unsigned Global_Parameters::Min_refinement_level =2

The minimum level of uniform refinement.

Referenced by main().

◆ Mu

double Global_Parameters::Mu = E/2.0/(1.0+Nu)

◆ mu

std::complex< double > Global_Parameters::mu = E/2.0/(1.0+Nu)

Referenced by PolarNSProblem< ELEMENT >::actions_before_solve(), boundary_traction(), Eigen::internal::MatrixFunctionAtomic< MatrixType >::compute(), exact_u(), Eigen::internal::fdjac1(), oomph::AxisymmetricLinearElasticityEquations::fill_in_generic_contribution_to_residuals_axisymmetric_linear_elasticity(), oomph::TimeHarmonicFourierDecomposedLinearElasticityEquations::fill_in_generic_contribution_to_residuals_fourier_decomp_time_harmonic_linear_elasticity(), GelfandBratuElement< NNODE_1D >::fill_in_generic_dresidual_contribution(), oomph::AxisymmetricPoroelasticityEquations::fill_in_generic_residual_contribution(), PredatorPreyElement::fill_in_generic_residual_contribution(), GelfandBratuElement< NNODE_1D >::fill_in_generic_residual_contribution(), oomph::IsotropicElasticityTensor::IsotropicElasticityTensor(), particleParticleTest(), oomph::PMLTimeHarmonicIsotropicElasticityTensor::PMLTimeHarmonicIsotropicElasticityTensor(), Eigen::BDCSVD< MatrixType_, Options_ >::secularEq(), oomph::IsotropicElasticityTensor::set_lame_coefficients(), oomph::PMLTimeHarmonicIsotropicElasticityTensor::set_lame_coefficients(), oomph::TimeHarmonicIsotropicElasticityTensor::set_lame_coefficients(), SilbertPeriodic::set_study(), my_problem::set_WallFriction(), Binary::setWallFriction(), SilbertPeriodic::SilbertPeriodic(), oomph::TimeHarmonicIsotropicElasticityTensor::TimeHarmonicIsotropicElasticityTensor(), Eigen::internal::tridiagonal_qr_step(), oomph::IsotropicElasticityTensor::update_constitutive_parameters(), oomph::PMLTimeHarmonicIsotropicElasticityTensor::update_constitutive_parameters(), oomph::TimeHarmonicIsotropicElasticityTensor::update_constitutive_parameters(), and wallParticleTest().

◆ N

unsigned Global_Parameters::N =0

Azimuthal wavenumber for imposed displacement of coating on inner boundary

Referenced by main().

◆ N_adaptations

unsigned Global_Parameters::N_adaptations =1

The number of adaptations allowed by the Newton solver.

Referenced by main().

◆ N_pml_multiplier

unsigned Global_Parameters::N_pml_multiplier = 1

PML width in elements for the right layer.

Referenced by compute_dependent_parameters(), and main().

◆ N_slice

unsigned Global_Parameters::N_slice =4

◆ N_x

unsigned Global_Parameters::N_x =10

◆ N_x_left_pml

unsigned Global_Parameters::N_x_left_pml = 8

PML width in elements for the left layer.

Referenced by compute_dependent_parameters(), ElasticAnnulusProblem< ELASTICITY_ELEMENT >::create_pml_meshes(), and main().

◆ N_x_right_pml

unsigned Global_Parameters::N_x_right_pml = 8

PML width in elements for the right layer.

Referenced by compute_dependent_parameters(), ElasticAnnulusProblem< ELASTICITY_ELEMENT >::create_pml_meshes(), and main().

◆ N_y

unsigned Global_Parameters::N_y =10

◆ N_y_bottom_pml

unsigned Global_Parameters::N_y_bottom_pml = 8

PML width in elements for the left layer.

Referenced by compute_dependent_parameters(), ElasticAnnulusProblem< ELASTICITY_ELEMENT >::create_pml_meshes(), and main().

◆ N_y_top_pml

unsigned Global_Parameters::N_y_top_pml = 8

◆ Nnode_1d

unsigned Global_Parameters::Nnode_1d =2

The number of nodes in one direction (default=2)

Referenced by main().

◆ Nperiod

unsigned Global_Parameters::Nperiod =5

◆ Nr

◆ Nstep_per_period

unsigned Global_Parameters::Nstep_per_period =40

◆ Ntheta

unsigned Global_Parameters::Ntheta =20

◆ Nu

◆ Nu_pseudo_elastic

double Global_Parameters::Nu_pseudo_elastic =0.1

Poisson's ratio for generalised Hookean constitutive equation for the pseudo elastic bulk

Referenced by main().

◆ Nu_wall

double Global_Parameters::Nu_wall =0.3

Poisson's ratio for generalised Hookean constitutive equation for the wall

Referenced by main().

◆ Nz

◆ Omega_sq

◆ Omega_sq_region

Vector<double> Global_Parameters::Omega_sq_region(2, Omega_sq) ( ,
Omega_sq   
)

Square of non-dim frequency for the two regions.

Referenced by RingWithTRibProblem< ELASTICITY_ELEMENT >::complete_problem_setup(), and main().

◆ Outer_radius

◆ Output_management_flag

unsigned Global_Parameters::Output_management_flag =0

The MG solver allows for five different levels of output: 0 = Outputs everything 1 = Outputs everything and plots refinement and unrefinement patterns 2 = Outputs everything except the smoother timings 3 = Outputs setup information but no V-cycle timings 4 = Suppresses all output Note: choosing '1' will also keep the coarser problems alive

Referenced by main().

◆ P

◆ P_in

◆ P_in_data_pt

Data* Global_Parameters::P_in_data_pt =0

Pointer to Data object whose one and only value stores the upstream pressure used to enforce flow rate

Referenced by UnstructuredFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >::create_parallel_flow_lagrange_elements().

◆ P_in_max

double Global_Parameters::P_in_max =0.0025

Max. inflow pressure (during periodic variation)

Referenced by UnstructuredFSIProblem< FLUID_ELEMENT, SOLID_ELEMENT >::actions_before_implicit_timestep().

◆ P_out

◆ Pcos

double Global_Parameters::Pcos = 2.0e-4

◆ Pe

◆ Peak_prescribed_flow_rate

double Global_Parameters::Peak_prescribed_flow_rate =-1.0

◆ Period

◆ Post_smoother_flag

unsigned Global_Parameters::Post_smoother_flag =0

The choice of post-smoother: 0 = Damped Jacobi 1 = Gauss-Seidel

Referenced by main().

◆ Pr

double Global_Parameters::Pr = 0.73

Prandtl number.

Referenced by main().

◆ Pre_smoother_flag

unsigned Global_Parameters::Pre_smoother_flag =0

The choice of pre-smoother: 0 = Damped Jacobi 1 = Gauss-Seidel

Referenced by main().

◆ Prescribe_pressure

◆ Prescribed_flow_rate

◆ Q

◆ R_blend_inner

double Global_Parameters::R_blend_inner =0.2

Inner blending radius.

Referenced by blend(), and grad_blend().

◆ R_blend_outer

double Global_Parameters::R_blend_outer =0.8

Outer blending radius.

Referenced by blend(), and grad_blend().

◆ Ra

◆ Radius

◆ Ramp_period

double Global_Parameters::Ramp_period =2.0

Period for ramping up in flux.

Referenced by set_parameters().

◆ Re

◆ Read_in_eigenfunction_from_disk

bool Global_Parameters::Read_in_eigenfunction_from_disk = true

◆ ReInvFr

double Global_Parameters::ReInvFr = 0.0

◆ ReSt

◆ Rmax

◆ rmax

◆ Rmin

double Global_Parameters::Rmin = 0.1

◆ rmin

◆ Sphere_centre_z

double Global_Parameters::Sphere_centre_z = 0.0

Location of the centre of the sphere on the axis.

Referenced by StokesFlowExactWind::get_wind(), and main().

◆ St

double Global_Parameters::St =0.5

Strouhal number (default assignment for FSI1 test case)

Referenced by set_parameters(), and TurekProblem< FLUID_ELEMENT, SOLID_ELEMENT >::TurekProblem().

◆ T

◆ T_end

double Global_Parameters::T_end = 0.0

◆ T_start

double Global_Parameters::T_start = 0.0

helpers to time the code

Referenced by ElasticAnnulusProblem< ELASTICITY_ELEMENT >::doc_solution(), and main().

◆ U_base

double Global_Parameters::U_base =1.0

Min. flux.

Referenced by flux().

◆ U_perturbation

double Global_Parameters::U_perturbation =0.5

Max. flux.

Referenced by flux().

◆ Use_adaptation_flag

unsigned Global_Parameters::Use_adaptation_flag =0

The choice of whether or not to use adaptation 0 = Uniform refinement 1 = Adaptive refinement

Referenced by main().

◆ Visc_Ratio

double Global_Parameters::Visc_Ratio = 2.0

◆ Volume

double Global_Parameters::Volume = -16.0*atan(1.0)*Radius*Radius*Radius/3.0

Volume is negative becuase the volume is enclosed by the bulk fluid

Referenced by main(), and RisingBubbleProblem< ELEMENT >::RisingBubbleProblem().

◆ Width_x_left_pml

◆ Width_x_right_pml

◆ Width_y_bottom_pml

◆ Width_y_top_pml

◆ X_c_couette

Vector<double> Global_Parameters::X_c_couette(2, 0.0) ( ,
0.  0 
)

◆ Zmax

◆ zmax

◆ Zmin

◆ zmin