DiskShockWaveProblem< ELEMENT, TIMESTEPPER > Class Template Reference
+ Inheritance diagram for DiskShockWaveProblem< ELEMENT, TIMESTEPPER >:

Public Member Functions

 DiskShockWaveProblem ()
 Constructor: More...
 
void run (const unsigned &case_number)
 Run the problem; specify case_number to label output directory. More...
 
ElasticRefineableQuarterCircleSectorMesh< ELEMENT > *& solid_mesh_pt ()
 Access function for the solid mesh. More...
 
SolidMesh *& traction_mesh_pt ()
 Access function for the mesh of surface traction elements. More...
 
void doc_solution ()
 Doc the solution. More...
 
void actions_after_newton_solve ()
 Update function (empty) More...
 
void actions_before_newton_solve ()
 Update function (empty) More...
 
void actions_after_adapt ()
 
void doc_displ_and_veloc (const int &stage=0)
 Doc displacement and velocity: label file with before and after. More...
 
void dump_it (ofstream &dump_file)
 Dump the solution. More...
 
void restart (ifstream &restart_file)
 Read solution from disk. More...
 
- Public Member Functions inherited from oomph::Problem
virtual void debug_hook_fct (const unsigned &i)
 
void set_analytic_dparameter (double *const &parameter_pt)
 
void unset_analytic_dparameter (double *const &parameter_pt)
 
bool is_dparameter_calculated_analytically (double *const &parameter_pt)
 
void set_analytic_hessian_products ()
 
void unset_analytic_hessian_products ()
 
bool are_hessian_products_calculated_analytically ()
 
void set_pinned_values_to_zero ()
 
bool distributed () const
 
virtual void actions_before_adapt ()
 
OomphCommunicatorcommunicator_pt ()
 access function to the oomph-lib communicator More...
 
const OomphCommunicatorcommunicator_pt () const
 access function to the oomph-lib communicator, const version More...
 
 Problem ()
 
 Problem (const Problem &dummy)=delete
 Broken copy constructor. More...
 
void operator= (const Problem &)=delete
 Broken assignment operator. More...
 
virtual ~Problem ()
 Virtual destructor to clean up memory. More...
 
Mesh *& mesh_pt ()
 Return a pointer to the global mesh. More...
 
Mesh *const & mesh_pt () const
 Return a pointer to the global mesh (const version) More...
 
Mesh *& mesh_pt (const unsigned &imesh)
 
Mesh *const & mesh_pt (const unsigned &imesh) const
 Return a pointer to the i-th submesh (const version) More...
 
unsigned nsub_mesh () const
 Return number of submeshes. More...
 
unsigned add_sub_mesh (Mesh *const &mesh_pt)
 
void flush_sub_meshes ()
 
void build_global_mesh ()
 
void rebuild_global_mesh ()
 
LinearSolver *& linear_solver_pt ()
 Return a pointer to the linear solver object. More...
 
LinearSolver *const & linear_solver_pt () const
 Return a pointer to the linear solver object (const version) More...
 
LinearSolver *& mass_matrix_solver_for_explicit_timestepper_pt ()
 
LinearSolvermass_matrix_solver_for_explicit_timestepper_pt () const
 
EigenSolver *& eigen_solver_pt ()
 Return a pointer to the eigen solver object. More...
 
EigenSolver *const & eigen_solver_pt () const
 Return a pointer to the eigen solver object (const version) More...
 
Time *& time_pt ()
 Return a pointer to the global time object. More...
 
Timetime_pt () const
 Return a pointer to the global time object (const version). More...
 
doubletime ()
 Return the current value of continuous time. More...
 
double time () const
 Return the current value of continuous time (const version) More...
 
TimeStepper *& time_stepper_pt ()
 
const TimeSteppertime_stepper_pt () const
 
TimeStepper *& time_stepper_pt (const unsigned &i)
 Return a pointer to the i-th timestepper. More...
 
ExplicitTimeStepper *& explicit_time_stepper_pt ()
 Return a pointer to the explicit timestepper. More...
 
unsigned long set_timestepper_for_all_data (TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data=false)
 
virtual void shift_time_values ()
 Shift all values along to prepare for next timestep. More...
 
AssemblyHandler *& assembly_handler_pt ()
 Return a pointer to the assembly handler object. More...
 
AssemblyHandler *const & assembly_handler_pt () const
 Return a pointer to the assembly handler object (const version) More...
 
doubleminimum_dt ()
 Access function to min timestep in adaptive timestepping. More...
 
doublemaximum_dt ()
 Access function to max timestep in adaptive timestepping. More...
 
unsignedmax_newton_iterations ()
 Access function to max Newton iterations before giving up. More...
 
void problem_is_nonlinear (const bool &prob_lin)
 Access function to Problem_is_nonlinear. More...
 
doublemax_residuals ()
 
booltime_adaptive_newton_crash_on_solve_fail ()
 Access function for Time_adaptive_newton_crash_on_solve_fail. More...
 
doublenewton_solver_tolerance ()
 
void add_time_stepper_pt (TimeStepper *const &time_stepper_pt)
 
void set_explicit_time_stepper_pt (ExplicitTimeStepper *const &explicit_time_stepper_pt)
 
void initialise_dt (const double &dt)
 
void initialise_dt (const Vector< double > &dt)
 
Data *& global_data_pt (const unsigned &i)
 Return a pointer to the the i-th global data object. More...
 
void add_global_data (Data *const &global_data_pt)
 
void flush_global_data ()
 
LinearAlgebraDistribution *const & dof_distribution_pt () const
 Return the pointer to the dof distribution (read-only) More...
 
unsigned long ndof () const
 Return the number of dofs. More...
 
unsigned ntime_stepper () const
 Return the number of time steppers. More...
 
unsigned nglobal_data () const
 Return the number of global data values. More...
 
unsigned self_test ()
 Self-test: Check meshes and global data. Return 0 for OK. More...
 
void enable_store_local_dof_pt_in_elements ()
 
void disable_store_local_dof_pt_in_elements ()
 
unsigned long assign_eqn_numbers (const bool &assign_local_eqn_numbers=true)
 
void describe_dofs (std::ostream &out= *(oomph_info.stream_pt())) const
 
void enable_discontinuous_formulation ()
 
void disable_discontinuous_formulation ()
 
void get_dofs (DoubleVector &dofs) const
 
void get_dofs (const unsigned &t, DoubleVector &dofs) const
 Return vector of the t'th history value of all dofs. More...
 
void set_dofs (const DoubleVector &dofs)
 Set the values of the dofs. More...
 
void set_dofs (const unsigned &t, DoubleVector &dofs)
 Set the history values of the dofs. More...
 
void set_dofs (const unsigned &t, Vector< double * > &dof_pt)
 
void add_to_dofs (const double &lambda, const DoubleVector &increment_dofs)
 Add lambda x incremenet_dofs[l] to the l-th dof. More...
 
doubleglobal_dof_pt (const unsigned &i)
 
doubledof (const unsigned &i)
 i-th dof in the problem More...
 
double dof (const unsigned &i) const
 i-th dof in the problem (const version) More...
 
double *& dof_pt (const unsigned &i)
 Pointer to i-th dof in the problem. More...
 
doubledof_pt (const unsigned &i) const
 Pointer to i-th dof in the problem (const version) More...
 
virtual void get_inverse_mass_matrix_times_residuals (DoubleVector &Mres)
 
virtual void get_dvaluesdt (DoubleVector &f)
 
virtual void get_residuals (DoubleVector &residuals)
 Get the total residuals Vector for the problem. More...
 
virtual void get_jacobian (DoubleVector &residuals, DenseDoubleMatrix &jacobian)
 
virtual void get_jacobian (DoubleVector &residuals, CRDoubleMatrix &jacobian)
 
virtual void get_jacobian (DoubleVector &residuals, CCDoubleMatrix &jacobian)
 
virtual void get_jacobian (DoubleVector &residuals, SumOfMatrices &jacobian)
 
void get_fd_jacobian (DoubleVector &residuals, DenseMatrix< double > &jacobian)
 Get the full Jacobian by finite differencing. More...
 
void get_derivative_wrt_global_parameter (double *const &parameter_pt, DoubleVector &result)
 
void get_hessian_vector_products (DoubleVectorWithHaloEntries const &Y, Vector< DoubleVectorWithHaloEntries > const &C, Vector< DoubleVectorWithHaloEntries > &product)
 
void solve_eigenproblem (const unsigned &n_eval, Vector< std::complex< double >> &eigenvalue, Vector< DoubleVector > &eigenvector, const bool &steady=true)
 Solve the eigenproblem. More...
 
void solve_eigenproblem (const unsigned &n_eval, Vector< std::complex< double >> &eigenvalue, const bool &steady=true)
 
virtual void get_eigenproblem_matrices (CRDoubleMatrix &mass_matrix, CRDoubleMatrix &main_matrix, const double &shift=0.0)
 
void assign_eigenvector_to_dofs (DoubleVector &eigenvector)
 Assign the eigenvector passed to the function to the dofs. More...
 
void add_eigenvector_to_dofs (const double &epsilon, const DoubleVector &eigenvector)
 
void store_current_dof_values ()
 Store the current values of the degrees of freedom. More...
 
void restore_dof_values ()
 Restore the stored values of the degrees of freedom. More...
 
void enable_jacobian_reuse ()
 
void disable_jacobian_reuse ()
 Disable recycling of Jacobian in Newton iteration. More...
 
bool jacobian_reuse_is_enabled ()
 Is recycling of Jacobian in Newton iteration enabled? More...
 
booluse_predictor_values_as_initial_guess ()
 
void newton_solve ()
 Use Newton method to solve the problem. More...
 
void enable_globally_convergent_newton_method ()
 enable globally convergent Newton method More...
 
void disable_globally_convergent_newton_method ()
 disable globally convergent Newton method More...
 
void newton_solve (unsigned const &max_adapt)
 
void steady_newton_solve (unsigned const &max_adapt=0)
 
void copy (Problem *orig_problem_pt)
 
virtual Problemmake_copy ()
 
virtual void read (std::ifstream &restart_file, bool &unsteady_restart)
 
virtual void read (std::ifstream &restart_file)
 
virtual void dump (std::ofstream &dump_file) const
 
void dump (const std::string &dump_file_name) const
 
void delete_all_external_storage ()
 
virtual void symmetrise_eigenfunction_for_adaptive_pitchfork_tracking ()
 
doublebifurcation_parameter_pt () const
 
void get_bifurcation_eigenfunction (Vector< DoubleVector > &eigenfunction)
 
void activate_fold_tracking (double *const &parameter_pt, const bool &block_solve=true)
 
void activate_bifurcation_tracking (double *const &parameter_pt, const DoubleVector &eigenvector, const bool &block_solve=true)
 
void activate_bifurcation_tracking (double *const &parameter_pt, const DoubleVector &eigenvector, const DoubleVector &normalisation, const bool &block_solve=true)
 
void activate_pitchfork_tracking (double *const &parameter_pt, const DoubleVector &symmetry_vector, const bool &block_solve=true)
 
void activate_hopf_tracking (double *const &parameter_pt, const bool &block_solve=true)
 
void activate_hopf_tracking (double *const &parameter_pt, const double &omega, const DoubleVector &null_real, const DoubleVector &null_imag, const bool &block_solve=true)
 
void deactivate_bifurcation_tracking ()
 
void reset_assembly_handler_to_default ()
 Reset the system to the standard non-augemented state. More...
 
double arc_length_step_solve (double *const &parameter_pt, const double &ds, const unsigned &max_adapt=0)
 
double arc_length_step_solve (Data *const &data_pt, const unsigned &data_index, const double &ds, const unsigned &max_adapt=0)
 
void reset_arc_length_parameters ()
 
intsign_of_jacobian ()
 
void explicit_timestep (const double &dt, const bool &shift_values=true)
 Take an explicit timestep of size dt. More...
 
void unsteady_newton_solve (const double &dt)
 
void unsteady_newton_solve (const double &dt, const bool &shift_values)
 
void unsteady_newton_solve (const double &dt, const unsigned &max_adapt, const bool &first, const bool &shift=true)
 
double doubly_adaptive_unsteady_newton_solve (const double &dt, const double &epsilon, const unsigned &max_adapt, const bool &first, const bool &shift=true)
 
double doubly_adaptive_unsteady_newton_solve (const double &dt, const double &epsilon, const unsigned &max_adapt, const unsigned &suppress_resolve_after_spatial_adapt_flag, const bool &first, const bool &shift=true)
 
double adaptive_unsteady_newton_solve (const double &dt_desired, const double &epsilon)
 
double adaptive_unsteady_newton_solve (const double &dt_desired, const double &epsilon, const bool &shift_values)
 
void assign_initial_values_impulsive ()
 
void assign_initial_values_impulsive (const double &dt)
 
void calculate_predictions ()
 Calculate predictions. More...
 
void enable_mass_matrix_reuse ()
 
void disable_mass_matrix_reuse ()
 
bool mass_matrix_reuse_is_enabled ()
 Return whether the mass matrix is being reused. More...
 
void refine_uniformly (const Vector< unsigned > &nrefine_for_mesh)
 
void refine_uniformly (const Vector< unsigned > &nrefine_for_mesh, DocInfo &doc_info)
 
void refine_uniformly_and_prune (const Vector< unsigned > &nrefine_for_mesh)
 
void refine_uniformly_and_prune (const Vector< unsigned > &nrefine_for_mesh, DocInfo &doc_info)
 
void refine_uniformly (DocInfo &doc_info)
 
void refine_uniformly_and_prune (DocInfo &doc_info)
 
void refine_uniformly ()
 
void refine_uniformly (const unsigned &i_mesh, DocInfo &doc_info)
 Do uniform refinement for submesh i_mesh with documentation. More...
 
void refine_uniformly (const unsigned &i_mesh)
 Do uniform refinement for submesh i_mesh without documentation. More...
 
void p_refine_uniformly (const Vector< unsigned > &nrefine_for_mesh)
 
void p_refine_uniformly (const Vector< unsigned > &nrefine_for_mesh, DocInfo &doc_info)
 
void p_refine_uniformly_and_prune (const Vector< unsigned > &nrefine_for_mesh)
 
void p_refine_uniformly_and_prune (const Vector< unsigned > &nrefine_for_mesh, DocInfo &doc_info)
 
void p_refine_uniformly (DocInfo &doc_info)
 
void p_refine_uniformly_and_prune (DocInfo &doc_info)
 
void p_refine_uniformly ()
 
void p_refine_uniformly (const unsigned &i_mesh, DocInfo &doc_info)
 Do uniform p-refinement for submesh i_mesh with documentation. More...
 
void p_refine_uniformly (const unsigned &i_mesh)
 Do uniform p-refinement for submesh i_mesh without documentation. More...
 
void refine_selected_elements (const Vector< unsigned > &elements_to_be_refined)
 
void refine_selected_elements (const Vector< RefineableElement * > &elements_to_be_refined_pt)
 
void refine_selected_elements (const unsigned &i_mesh, const Vector< unsigned > &elements_to_be_refined)
 
void refine_selected_elements (const unsigned &i_mesh, const Vector< RefineableElement * > &elements_to_be_refined_pt)
 
void refine_selected_elements (const Vector< Vector< unsigned >> &elements_to_be_refined)
 
void refine_selected_elements (const Vector< Vector< RefineableElement * >> &elements_to_be_refined_pt)
 
void p_refine_selected_elements (const Vector< unsigned > &elements_to_be_refined)
 
void p_refine_selected_elements (const Vector< PRefineableElement * > &elements_to_be_refined_pt)
 
void p_refine_selected_elements (const unsigned &i_mesh, const Vector< unsigned > &elements_to_be_refined)
 
void p_refine_selected_elements (const unsigned &i_mesh, const Vector< PRefineableElement * > &elements_to_be_refined_pt)
 
void p_refine_selected_elements (const Vector< Vector< unsigned >> &elements_to_be_refined)
 
void p_refine_selected_elements (const Vector< Vector< PRefineableElement * >> &elements_to_be_refined_pt)
 
unsigned unrefine_uniformly ()
 
unsigned unrefine_uniformly (const unsigned &i_mesh)
 
void p_unrefine_uniformly (DocInfo &doc_info)
 
void p_unrefine_uniformly (const unsigned &i_mesh, DocInfo &doc_info)
 Do uniform p-unrefinement for submesh i_mesh without documentation. More...
 
void adapt (unsigned &n_refined, unsigned &n_unrefined)
 
void adapt ()
 
void p_adapt (unsigned &n_refined, unsigned &n_unrefined)
 
void p_adapt ()
 
void adapt_based_on_error_estimates (unsigned &n_refined, unsigned &n_unrefined, Vector< Vector< double >> &elemental_error)
 
void adapt_based_on_error_estimates (Vector< Vector< double >> &elemental_error)
 
void get_all_error_estimates (Vector< Vector< double >> &elemental_error)
 
void doc_errors (DocInfo &doc_info)
 Get max and min error for all elements in submeshes. More...
 
void doc_errors ()
 Get max and min error for all elements in submeshes. More...
 
void enable_info_in_newton_solve ()
 
void disable_info_in_newton_solve ()
 Disable the output of information when in the newton solver. More...
 
- Public Member Functions inherited from oomph::ExplicitTimeSteppableObject
 ExplicitTimeSteppableObject ()
 Empty constructor. More...
 
 ExplicitTimeSteppableObject (const ExplicitTimeSteppableObject &)=delete
 Broken copy constructor. More...
 
void operator= (const ExplicitTimeSteppableObject &)=delete
 Broken assignment operator. More...
 
virtual ~ExplicitTimeSteppableObject ()
 Empty destructor. More...
 
virtual void actions_before_explicit_stage ()
 
virtual void actions_after_explicit_stage ()
 

Private Attributes

DocInfo Doc_info
 
ofstream Trace_file
 Trace file. More...
 
Vector< Node * > Trace_node_pt
 Vector of pointers to nodes whose position we're tracing. More...
 
ElasticRefineableQuarterCircleSectorMesh< ELEMENT > * Solid_mesh_pt
 Pointer to solid mesh. More...
 
SolidMeshTraction_mesh_pt
 Pointer to mesh of traction elements. More...
 

Additional Inherited Members

- Public Types inherited from oomph::Problem
typedef void(* SpatialErrorEstimatorFctPt) (Mesh *&mesh_pt, Vector< double > &elemental_error)
 Function pointer for spatial error estimator. More...
 
typedef void(* SpatialErrorEstimatorWithDocFctPt) (Mesh *&mesh_pt, Vector< double > &elemental_error, DocInfo &doc_info)
 Function pointer for spatial error estimator with doc. More...
 
- Public Attributes inherited from oomph::Problem
bool Shut_up_in_newton_solve
 
- Static Public Attributes inherited from oomph::Problem
static bool Suppress_warning_about_actions_before_read_unstructured_meshes
 
- Protected Types inherited from oomph::Problem
enum  Assembly_method {
  Perform_assembly_using_vectors_of_pairs , Perform_assembly_using_two_vectors , Perform_assembly_using_maps , Perform_assembly_using_lists ,
  Perform_assembly_using_two_arrays
}
 Enumerated flags to determine which sparse assembly method is used. More...
 
- Protected Member Functions inherited from oomph::Problem
unsigned setup_element_count_per_dof ()
 
virtual void sparse_assemble_row_or_column_compressed (Vector< int * > &column_or_row_index, Vector< int * > &row_or_column_start, Vector< double * > &value, Vector< unsigned > &nnz, Vector< double * > &residual, bool compressed_row_flag)
 
virtual void actions_before_newton_convergence_check ()
 
virtual void actions_before_newton_step ()
 
virtual void actions_after_newton_step ()
 
virtual void actions_before_implicit_timestep ()
 
virtual void actions_after_implicit_timestep ()
 
virtual void actions_after_implicit_timestep_and_error_estimation ()
 
virtual void actions_before_explicit_timestep ()
 Actions that should be performed before each explicit time step. More...
 
virtual void actions_after_explicit_timestep ()
 Actions that should be performed after each explicit time step. More...
 
virtual void actions_before_read_unstructured_meshes ()
 
virtual void actions_after_read_unstructured_meshes ()
 
virtual void actions_after_change_in_global_parameter (double *const &parameter_pt)
 
virtual void actions_after_change_in_bifurcation_parameter ()
 
virtual void actions_after_parameter_increase (double *const &parameter_pt)
 
doubledof_derivative (const unsigned &i)
 
doubledof_current (const unsigned &i)
 
virtual void set_initial_condition ()
 
virtual double global_temporal_error_norm ()
 
unsigned newton_solve_continuation (double *const &parameter_pt)
 
unsigned newton_solve_continuation (double *const &parameter_pt, DoubleVector &z)
 
void calculate_continuation_derivatives (double *const &parameter_pt)
 
void calculate_continuation_derivatives (const DoubleVector &z)
 
void calculate_continuation_derivatives_fd (double *const &parameter_pt)
 
bool does_pointer_correspond_to_problem_data (double *const &parameter_pt)
 
void set_consistent_pinned_values_for_continuation ()
 
- Protected Attributes inherited from oomph::Problem
Vector< Problem * > Copy_of_problem_pt
 
std::map< double *, boolCalculate_dparameter_analytic
 
bool Calculate_hessian_products_analytic
 
LinearAlgebraDistributionDof_distribution_pt
 
Vector< double * > Dof_pt
 Vector of pointers to dofs. More...
 
DoubleVectorWithHaloEntries Element_count_per_dof
 
double Relaxation_factor
 
double Newton_solver_tolerance
 
unsigned Max_newton_iterations
 Maximum number of Newton iterations. More...
 
unsigned Nnewton_iter_taken
 
Vector< doubleMax_res
 Maximum residuals at start and after each newton iteration. More...
 
double Max_residuals
 
bool Time_adaptive_newton_crash_on_solve_fail
 
bool Jacobian_reuse_is_enabled
 Is re-use of Jacobian in Newton iteration enabled? Default: false. More...
 
bool Jacobian_has_been_computed
 
bool Problem_is_nonlinear
 
bool Pause_at_end_of_sparse_assembly
 
bool Doc_time_in_distribute
 
unsigned Sparse_assembly_method
 
unsigned Sparse_assemble_with_arrays_initial_allocation
 
unsigned Sparse_assemble_with_arrays_allocation_increment
 
Vector< Vector< unsigned > > Sparse_assemble_with_arrays_previous_allocation
 
double Numerical_zero_for_sparse_assembly
 
double FD_step_used_in_get_hessian_vector_products
 
bool Mass_matrix_reuse_is_enabled
 
bool Mass_matrix_has_been_computed
 
bool Discontinuous_element_formulation
 
double Minimum_dt
 Minimum desired dt: if dt falls below this value, exit. More...
 
double Maximum_dt
 Maximum desired dt. More...
 
double DTSF_max_increase
 
double DTSF_min_decrease
 
double Minimum_dt_but_still_proceed
 
bool Scale_arc_length
 Boolean to control whether arc-length should be scaled. More...
 
double Desired_proportion_of_arc_length
 Proportion of the arc-length to taken by the parameter. More...
 
double Theta_squared
 
int Sign_of_jacobian
 Storage for the sign of the global Jacobian. More...
 
double Continuation_direction
 
double Parameter_derivative
 Storage for the derivative of the global parameter wrt arc-length. More...
 
double Parameter_current
 Storage for the present value of the global parameter. More...
 
bool Use_continuation_timestepper
 Boolean to control original or new storage of dof stuff. More...
 
unsigned Dof_derivative_offset
 
unsigned Dof_current_offset
 
Vector< doubleDof_derivative
 Storage for the derivative of the problem variables wrt arc-length. More...
 
Vector< doubleDof_current
 Storage for the present values of the variables. More...
 
double Ds_current
 Storage for the current step value. More...
 
unsigned Desired_newton_iterations_ds
 
double Minimum_ds
 Minimum desired value of arc-length. More...
 
bool Bifurcation_detection
 Boolean to control bifurcation detection via determinant of Jacobian. More...
 
bool Bisect_to_find_bifurcation
 Boolean to control wheter bisection is used to located bifurcation. More...
 
bool First_jacobian_sign_change
 Boolean to indicate whether a sign change has occured in the Jacobian. More...
 
bool Arc_length_step_taken
 Boolean to indicate whether an arc-length step has been taken. More...
 
bool Use_finite_differences_for_continuation_derivatives
 
OomphCommunicatorCommunicator_pt
 The communicator for this problem. More...
 
bool Always_take_one_newton_step
 
double Timestep_reduction_factor_after_nonconvergence
 
bool Keep_temporal_error_below_tolerance
 
- Static Protected Attributes inherited from oomph::Problem
static ContinuationStorageScheme Continuation_time_stepper
 Storage for the single static continuation timestorage object. More...
 

Detailed Description

template<class ELEMENT, class TIMESTEPPER>
class DiskShockWaveProblem< ELEMENT, TIMESTEPPER >

////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// "Shock" wave propagates through an impulsively loaded circular disk.

Constructor & Destructor Documentation

◆ DiskShockWaveProblem()

template<class ELEMENT , class TIMESTEPPER >
DiskShockWaveProblem< ELEMENT, TIMESTEPPER >::DiskShockWaveProblem

Constructor:

Constructor.

283 {
284 
285 
286  //Allocate the timestepper
287  add_time_stepper_pt(new TIMESTEPPER);
288 
289  // Set coordinates and radius for the circle that defines
290  // the outer curvilinear boundary of the domain
291  double x_c=0.0;
292  double y_c=0.0;
293  double r=1.0;
294 
295  // Build geometric object that specifies the fish back in the
296  // undeformed configuration (basically a deep copy of the previous one)
297  GeomObject* curved_boundary_pt=new Circle(x_c,y_c,r,time_stepper_pt());
298 
299  // The curved boundary of the mesh is defined by the geometric object
300  // What follows are the start and end coordinates on the geometric object:
301  double xi_lo=0.0;
302  double xi_hi=2.0*atan(1.0);
303 
304  // Fraction along geometric object at which the radial dividing line
305  // is placed
306  double fract_mid=0.5;
307 
308  //Now create the mesh
310  curved_boundary_pt,xi_lo,fract_mid,xi_hi,time_stepper_pt());
311 
312  // Set up trace nodes as the nodes on boundary 1 (=curved boundary) in
313  // the original mesh (they exist under any refinement!)
314  unsigned nnod0=solid_mesh_pt()->nboundary_node(0);
315  unsigned nnod1=solid_mesh_pt()->nboundary_node(1);
316  Trace_node_pt.resize(nnod0+nnod1);
317  for (unsigned j=0;j<nnod0;j++)
318  {
319  Trace_node_pt[j]=solid_mesh_pt()->boundary_node_pt(0,j);
320  }
321  for (unsigned j=0;j<nnod1;j++)
322  {
323  Trace_node_pt[j+nnod0]=solid_mesh_pt()->boundary_node_pt(1,j);
324  }
325 
326  // Build traction element mesh
327  solid_mesh_pt()->make_traction_element_mesh(traction_mesh_pt());
328 
329  // Solid mesh is first sub-mesh
331 
332  // Traction mesh is first sub-mesh
334 
335  // Build combined "global" mesh
337 
338 
339  // Create/set error estimator
340  solid_mesh_pt()->spatial_error_estimator_pt()=new Z2ErrorEstimator;
341 
342  // Fiddle with adaptivity targets and doc
343  solid_mesh_pt()->max_permitted_error()=0.006; //0.03;
344  solid_mesh_pt()->min_permitted_error()=0.0006;// 0.0006; //0.003;
345  solid_mesh_pt()->doc_adaptivity_targets(cout);
346 
347  // Pin the bottom in the vertical direction
348  unsigned n_bottom = solid_mesh_pt()->nboundary_node(0);
349 
350  //Loop over the node
351  for(unsigned i=0;i<n_bottom;i++)
352  {
353  solid_mesh_pt()->boundary_node_pt(0,i)->pin_position(1);
354  }
355 
356  // Pin the left edge in the horizontal direction
357  unsigned n_side = solid_mesh_pt()->nboundary_node(2);
358  //Loop over the node
359  for(unsigned i=0;i<n_side;i++)
360  {
361  solid_mesh_pt()->boundary_node_pt(2,i)->pin_position(0);
362  }
363 
364  //Find number of elements in solid mesh
365  unsigned n_element =solid_mesh_pt()->nelement();
366 
367  //Set parameters and function pointers for solid elements
368  for(unsigned i=0;i<n_element;i++)
369  {
370  //Cast to a solid element
371  ELEMENT *el_pt = dynamic_cast<ELEMENT*>(mesh_pt()->element_pt(i));
372 
373  //Set the constitutive law
374  el_pt->constitutive_law_pt() =
376 
377  // Switch on inertia
378  el_pt->enable_inertia();
379  }
380 
381  // Pin the redundant solid pressures
383  solid_mesh_pt()->element_pt());
384 
385  //Find number of elements in traction mesh
386  n_element=traction_mesh_pt()->nelement();
387 
388  //Set function pointers for traction elements
389  for(unsigned i=0;i<n_element;i++)
390  {
391  //Cast to a solid traction element
393  dynamic_cast<SolidTractionElement<ELEMENT>*>
395 
396  //Set the traction function
398  }
399 
400  //Attach the boundary conditions to the mesh
401  cout << assign_eqn_numbers() << std::endl;
402 
403  // Refine uniformly
407 
408 
409  // Now the non-pinned positions of the SolidNodes will have been
410  // determined by interpolation. This is appropriate for uniform
411  // refinements once the code is up and running since we can't place
412  // new SolidNodes at the positions determined by the MacroElement.
413  // However, here we want to update the nodes to fit the exact
414  // intitial configuration.
415 
416  // Update all solid nodes based on the Mesh's Domain/MacroElement
417  // representation
418  bool update_all_solid_nodes=true;
419  solid_mesh_pt()->node_update(update_all_solid_nodes);
420 
421  // Now set the Eulerian equal to the Lagrangian coordinates
422  solid_mesh_pt()->set_lagrangian_nodal_coordinates();
423 
424 }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
ElasticRefineableQuarterCircleSectorMesh< ELEMENT > *& solid_mesh_pt()
Access function for the solid mesh.
Definition: shock_disk.cc:220
Vector< Node * > Trace_node_pt
Vector of pointers to nodes whose position we're tracing.
Definition: shock_disk.cc:264
SolidMesh *& traction_mesh_pt()
Access function for the mesh of surface traction elements.
Definition: shock_disk.cc:226
Definition: c_style_output.cc:76
Definition: geom_objects.h:873
Definition: geom_objects.h:101
GeneralisedElement *& element_pt(const unsigned long &e)
Return pointer to element e.
Definition: mesh.h:448
unsigned long nelement() const
Return number of elements in the mesh.
Definition: mesh.h:590
Definition: solid_elements.h:58
void add_time_stepper_pt(TimeStepper *const &time_stepper_pt)
Definition: problem.cc:1545
unsigned add_sub_mesh(Mesh *const &mesh_pt)
Definition: problem.h:1330
void build_global_mesh()
Definition: problem.cc:1493
Mesh *& mesh_pt()
Return a pointer to the global mesh.
Definition: problem.h:1280
unsigned long assign_eqn_numbers(const bool &assign_local_eqn_numbers=true)
Definition: problem.cc:1989
TimeStepper *& time_stepper_pt()
Definition: problem.h:1524
void refine_uniformly()
Definition: problem.h:2640
Definition: solid_traction_elements.h:78
void(*&)(const Vector< double > &xi, const Vector< double > &x, const Vector< double > &n, Vector< double > &traction) traction_fct_pt()
Reference to the traction function pointer.
Definition: solid_traction_elements.h:159
Definition: error_estimator.h:266
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 atan(const bfloat16 &a)
Definition: BFloat16.h:636
void constant_pressure(const Vector< double > &xi, const Vector< double > &x, const Vector< double > &n, Vector< double > &traction)
Constant pressure load.
Definition: TwenteMeshGluing.cpp:80
ConstitutiveLaw * Constitutive_law_pt
Pointer to constitutive law.
Definition: TwenteMeshGluing.cpp:65
r
Definition: UniformPSDSelfTest.py:20
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References Eigen::bfloat16_impl::atan(), Global_Physical_Variables::constant_pressure(), Global_Physical_Variables::Constitutive_law_pt, i, j, UniformPSDSelfTest::r, and oomph::SolidTractionElement< ELEMENT >::traction_fct_pt.

Member Function Documentation

◆ actions_after_adapt()

template<class ELEMENT , class TIMESTEPPER >
void DiskShockWaveProblem< ELEMENT, TIMESTEPPER >::actions_after_adapt
virtual

Actions after adaption: Kill and then re-build the traction elements on boundary 1 and re-assign the equation numbers

Kill and then re-build the traction elements on boundary 1, pin redundant pressure dofs and re-assign the equation numbers.

Reimplemented from oomph::Problem.

437 {
438  // Wipe and re-build traction element mesh
439  solid_mesh_pt()->remake_traction_element_mesh(traction_mesh_pt());
440 
441  // Re-build combined "global" mesh
443 
444  //Find number of elements in traction mesh
445  unsigned n_element=traction_mesh_pt()->nelement();
446 
447  //Loop over the elements in the traction element mesh
448  for(unsigned i=0;i<n_element;i++)
449  {
450  //Cast to a solid traction element
452  dynamic_cast<SolidTractionElement<ELEMENT>*>
454 
455  //Set the traction function
457  }
458 
459  // Pin the redundant solid pressures
461  solid_mesh_pt()->element_pt());
462 
463 
464  //Do equation numbering
465  cout << assign_eqn_numbers() << std::endl;
466 
467 }
void rebuild_global_mesh()
Definition: problem.cc:1533

References Global_Physical_Variables::constant_pressure(), i, and oomph::SolidTractionElement< ELEMENT >::traction_fct_pt.

◆ actions_after_newton_solve()

template<class ELEMENT , class TIMESTEPPER >
void DiskShockWaveProblem< ELEMENT, TIMESTEPPER >::actions_after_newton_solve ( )
inlinevirtual

Update function (empty)

Reimplemented from oomph::Problem.

235 {}

◆ actions_before_newton_solve()

template<class ELEMENT , class TIMESTEPPER >
void DiskShockWaveProblem< ELEMENT, TIMESTEPPER >::actions_before_newton_solve ( )
inlinevirtual

Update function (empty)

Reimplemented from oomph::Problem.

238 {}

◆ doc_displ_and_veloc()

template<class ELEMENT , class TIMESTEPPER >
void DiskShockWaveProblem< ELEMENT, TIMESTEPPER >::doc_displ_and_veloc ( const int stage = 0)

Doc displacement and velocity: label file with before and after.

Doc displacement and veloc in displ_and_veloc*.dat. The int stage defaults to 0, in which case the '*' in the filename is simply the step number specified by the Problem's DocInfo object. If it's +/-1, the word "before" and "after" get inserted. This allows checking of the veloc/displacment interpolation during adaptive mesh refinement.

615 {
616 
617  ofstream some_file;
618  char filename[100];
619 
620  // Number of plot points
621  unsigned npts;
622  npts=5;
623 
624  // Open file
625  if (stage==-1)
626  {
627  sprintf(filename,"%s/displ_and_veloc_before%i.dat",
628  Doc_info.directory().c_str(),Doc_info.number());
629  }
630  else if (stage==1)
631  {
632  sprintf(filename,"%s/displ_and_veloc_after%i.dat",
633  Doc_info.directory().c_str(),Doc_info.number());
634  }
635  else
636  {
637  sprintf(filename,"%s/displ_and_veloc%i.dat",
638  Doc_info.directory().c_str(),Doc_info.number());
639  }
640  some_file.open(filename);
641 
642  Vector<double> s(2),x(2),dxdt(2),xi(2),displ(2);
643 
644  //Loop over solid elements
645  unsigned nel=solid_mesh_pt()->nelement();
646  for (unsigned e=0;e<nel;e++)
647  {
648  some_file << "ZONE I=" << npts << ", J=" << npts << std::endl;
649  for (unsigned i=0;i<npts;i++)
650  {
651  s[0]=-1.0+2.0*double(i)/double(npts-1);
652  for (unsigned j=0;j<npts;j++)
653  {
654  s[1]=-1.0+2.0*double(j)/double(npts-1);
655 
656  // Cast to full element type
657  ELEMENT* el_pt=dynamic_cast<ELEMENT*>(solid_mesh_pt()->
658  finite_element_pt(e));
659 
660  // Eulerian coordinate
661  el_pt->interpolated_x(s,x);
662 
663  // Lagrangian coordinate
664  el_pt->interpolated_xi(s,xi);
665 
666  // Displacement
667  displ[0]=x[0]-xi[0];
668  displ[1]=x[1]-xi[1];
669 
670  // Velocity (1st deriv)
671  el_pt->interpolated_dxdt(s,1,dxdt);
672 
673  some_file << x[0] << " " << x[1] << " "
674  << displ[0] << " " << displ[1] << " "
675  << dxdt[0] << " " << dxdt[1] << " "
676  << std::endl;
677  }
678  }
679  }
680  some_file.close();
681 
682 }
Array< double, 1, 3 > e(1./3., 0.5, 2.)
DocInfo Doc_info
Definition: shock_disk.cc:258
std::string directory() const
Output directory.
Definition: oomph_utilities.h:524
unsigned & number()
Number used (e.g.) for labeling output files.
Definition: oomph_utilities.h:554
RealScalar s
Definition: level1_cplx_impl.h:130
string filename
Definition: MergeRestartFiles.py:39
list x
Definition: plotDoE.py:28

References oomph::DocInfo::directory(), GlobalParameters::Doc_info, e(), MergeRestartFiles::filename, i, j, oomph::DocInfo::number(), s, and plotDoE::x.

◆ doc_solution()

template<class ELEMENT , class TIMESTEPPER >
void DiskShockWaveProblem< ELEMENT, TIMESTEPPER >::doc_solution

Doc the solution.

475 {
476  // Number of plot points
477  unsigned npts;
478  npts=5;
479 
480  // Output shape of deformed body
481  ofstream some_file;
482  char filename[100];
483  sprintf(filename,"%s/soln%i.dat",Doc_info.directory().c_str(),
484  Doc_info.number());
485  some_file.open(filename);
486  solid_mesh_pt()->output(some_file,npts);
487  some_file.close();
488 
489 
490  // Output traction
491  unsigned nel=traction_mesh_pt()->nelement();
492  sprintf(filename,"%s/traction%i.dat",Doc_info.directory().c_str(),
493  Doc_info.number());
494  some_file.open(filename);
495  Vector<double> unit_normal(2);
496  Vector<double> traction(2);
497  Vector<double> x_dummy(2);
498  Vector<double> s_dummy(1);
499  for (unsigned e=0;e<nel;e++)
500  {
501  some_file << "ZONE " << std::endl;
502  for (unsigned i=0;i<npts;i++)
503  {
504  s_dummy[0]=-1.0+2.0*double(i)/double(npts-1);
506  dynamic_cast<SolidTractionElement<ELEMENT>*>(
508  el_pt->outer_unit_normal(s_dummy,unit_normal);
509  el_pt->traction(s_dummy,traction);
510  el_pt->interpolated_x(s_dummy,x_dummy);
511  some_file << x_dummy[0] << " " << x_dummy[1] << " "
512  << traction[0] << " " << traction[1] << " "
513  << std::endl;
514  }
515  }
516  some_file.close();
517 
518  // Doc displacement and velocity
520 
521  // Get displacement as a function of the radial coordinate
522  // along boundary 0
523  {
524 
525  // Number of elements along boundary 0:
526  unsigned nelem=solid_mesh_pt()->nboundary_element(0);
527 
528  // Open files
529  sprintf(filename,"%s/displ%i.dat",Doc_info.directory().c_str(),
530  Doc_info.number());
531  some_file.open(filename);
532 
533  Vector<double> s(2);
534  Vector<double> x(2);
535  Vector<double> dxdt(2);
536  Vector<double> xi(2);
537  Vector<double> r_exact(2);
538  Vector<double> v_exact(2);
539 
540  for (unsigned e=0;e<nelem;e++)
541  {
542  some_file << "ZONE " << std::endl;
543  for (unsigned i=0;i<npts;i++)
544  {
545  // Move along bottom edge of element
546  s[0]=-1.0+2.0*double(i)/double(npts-1);
547  s[1]=-1.0;
548 
549  // Get pointer to element
550  SolidFiniteElement* el_pt=dynamic_cast<SolidFiniteElement*>
551  (solid_mesh_pt()->boundary_element_pt(0,e));
552 
553  // Get Lagrangian coordinate
554  el_pt->interpolated_xi(s,xi);
555 
556  // Get Eulerian coordinate
557  el_pt->interpolated_x(s,x);
558 
559  // Get velocity
560  el_pt->interpolated_dxdt(s,1,dxdt);
561 
562  // Plot radial distance and displacement
563  some_file << xi[0] << " " << x[0]-xi[0] << " "
564  << dxdt[0] << std::endl;
565  }
566  }
567  some_file.close();
568  }
569 
570 
571  // Write trace file
572  Trace_file << time_pt()->time() << " ";
573  unsigned ntrace_node=Trace_node_pt.size();
574  for (unsigned j=0;j<ntrace_node;j++)
575  {
576  Trace_file << sqrt(pow(Trace_node_pt[j]->x(0),2)+
577  pow(Trace_node_pt[j]->x(1),2)) << " ";
578  }
579  Trace_file << std::endl;
580 
581 
582  // removed until Jacobi eigensolver is re-instated
583  // // Output principal stress vectors at the centre of all elements
584  // SolidHelpers::doc_2D_principal_stress<ELEMENT>(Doc_info,solid_mesh_pt());
585 
586 // // Write restart file
587 // sprintf(filename,"%s/restart%i.dat",Doc_info.directory().c_str(),
588 // Doc_info.number());
589 // some_file.open(filename);
590 // dump_it(some_file);
591 // some_file.close();
592 
593 
594  cout << "Doced solution for step "
595  << Doc_info.number()
596  << std::endl << std::endl << std::endl;
597 }
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
void doc_displ_and_veloc(const int &stage=0)
Doc displacement and velocity: label file with before and after.
Definition: shock_disk.cc:613
ofstream Trace_file
Trace file.
Definition: shock_disk.cc:261
void outer_unit_normal(const Vector< double > &s, Vector< double > &unit_normal) const
Compute outer unit normal at the specified local coordinate.
Definition: elements.cc:6006
double interpolated_x(const Vector< double > &s, const unsigned &i) const
Definition: elements.h:4528
virtual double interpolated_x(const Vector< double > &s, const unsigned &i) const
Return FE interpolated coordinate x[i] at local coordinate s.
Definition: elements.cc:3962
virtual double interpolated_dxdt(const Vector< double > &s, const unsigned &i, const unsigned &t)
Definition: elements.cc:4596
FiniteElement * finite_element_pt(const unsigned &e) const
Definition: mesh.h:473
Time *& time_pt()
Return a pointer to the global time object.
Definition: problem.h:1504
Definition: elements.h:3561
virtual double interpolated_xi(const Vector< double > &s, const unsigned &i) const
Definition: elements.cc:7104
void traction(const Vector< double > &s, Vector< double > &traction)
Definition: solid_traction_elements.h:286
double & time()
Return the current value of the continuous time.
Definition: timesteppers.h:123
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 pow(const bfloat16 &a, const bfloat16 &b)
Definition: BFloat16.h:625

References oomph::DocInfo::directory(), GlobalParameters::Doc_info, e(), MergeRestartFiles::filename, i, oomph::FiniteElement::interpolated_dxdt(), oomph::FiniteElement::interpolated_x(), oomph::FaceElement::interpolated_x(), oomph::SolidFiniteElement::interpolated_xi(), j, oomph::DocInfo::number(), oomph::FaceElement::outer_unit_normal(), Eigen::bfloat16_impl::pow(), s, sqrt(), oomph::Problem_Parameter::Trace_file, oomph::SolidTractionElement< ELEMENT >::traction(), and plotDoE::x.

◆ dump_it()

template<class ELEMENT , class TIMESTEPPER >
void DiskShockWaveProblem< ELEMENT, TIMESTEPPER >::dump_it ( ofstream &  dump_file)

Dump the solution.

Dump problem-specific parameters values, then dump generic problem data.

691 {
692  // Call generic dump()
693  Problem::dump(dump_file);
694 }

◆ restart()

template<class ELEMENT , class TIMESTEPPER >
void DiskShockWaveProblem< ELEMENT, TIMESTEPPER >::restart ( ifstream &  restart_file)

Read solution from disk.

Read problem-specific parameter values, then recover generic problem data.

703 {
704  // Read generic problem data
705  Problem::read(restart_file);
706 }
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::enable_if_t< PacketLoad, PacketType > read(const TensorMapper &tensorMapper, const StorageIndex &NCIndex, const StorageIndex &CIndex, const StorageIndex &ld)
read, a template function used for loading the data from global memory. This function is used to guar...
Definition: TensorContractionSycl.h:162

References Eigen::TensorSycl::internal::read().

◆ run()

template<class ELEMENT , class TIMESTEPPER >
void DiskShockWaveProblem< ELEMENT, TIMESTEPPER >::run ( const unsigned case_number)

Run the problem; specify case_number to label output directory.

Run the problem; specify case_number to label output directory

716 {
717 
718  // If there's a command line argument, run the validation (i.e. do only
719  // 3 timesteps; otherwise do a few cycles
720  unsigned nstep=400;
721  if (CommandLineArgs::Argc!=1)
722  {
723  nstep=3;
724  }
725 
726  // Define output directory
727  char dirname[100];
728  sprintf(dirname,"RESLT%i",case_number);
729  Doc_info.set_directory(dirname);
730 
731  // Step number
732  Doc_info.number()=0;
733 
734  // Open trace file
735  char filename[100];
736  sprintf(filename,"%s/trace.dat",Doc_info.directory().c_str());
737  Trace_file.open(filename);
738 
739  // Set up trace nodes as the nodes on boundary 1 (=curved boundary) in
740  // the original mesh (they exist under any refinement!)
741  unsigned nnod0=solid_mesh_pt()->nboundary_node(0);
742  unsigned nnod1=solid_mesh_pt()->nboundary_node(1);
743  Trace_file << "VARIABLES=\"time\"";
744  for (unsigned j=0;j<nnod0;j++)
745  {
746  Trace_file << ", \"radial node " << j << "\" ";
747  }
748  for (unsigned j=0;j<nnod1;j++)
749  {
750  Trace_file << ", \"azimuthal node " << j << "\" ";
751  }
752  Trace_file << std::endl;
753 
754 
755 
756 // // Restart?
757 // //---------
758 
759 // // Pointer to restart file
760 // ifstream* restart_file_pt=0;
761 
762 // // No restart
763 // //-----------
764 // if (CommandLineArgs::Argc==1)
765 // {
766 // cout << "No restart" << std::endl;
767 // }
768 // // Restart
769 // //--------
770 // else if (CommandLineArgs::Argc==2)
771 // {
772 // // Open restart file
773 // restart_file_pt=new ifstream(CommandLineArgs::Argv[1],ios_base::in);
774 // if (restart_file_pt!=0)
775 // {
776 // cout << "Have opened " << CommandLineArgs::Argv[1] <<
777 // " for restart. " << std::endl;
778 // }
779 // else
780 // {
781 // cout << "ERROR while trying to open " << CommandLineArgs::Argv[1] <<
782 // " for restart." << std::endl;
783 // }
784 // // Do the actual restart
785 // pause("need to do the actual restart");
786 // //problem.restart(*restart_file_pt);
787 // }
788 // // More than one restart file specified?
789 // else
790 // {
791 // cout << "Can only specify one input file " << std::endl;
792 // cout << "You specified the following command line arguments: " << std::endl;
793 // CommandLineArgs::output();
794 // //assert(false);
795 // }
796 
797 
798  // Initial parameter values
800 
801  // Initialise time
802  double time0=0.0;
803  time_pt()->time()=time0;
804 
805  // Set initial timestep
806  double dt=0.01;
807 
808  // Impulsive start
810 
811  // Doc initial state
812  doc_solution();
813  Doc_info.number()++;
814 
815  // First step without adaptivity
817  doc_solution();
818  Doc_info.number()++;
819 
820  //Timestepping loop for subsequent steps with adaptivity
821  unsigned max_adapt=1;
822  for(unsigned i=1;i<nstep;i++)
823  {
824  unsteady_newton_solve(dt,max_adapt,false);
825  doc_solution();
826  Doc_info.number()++;
827  }
828 
829 }
void doc_solution()
Doc the solution.
Definition: shock_disk.cc:474
void set_directory(const std::string &directory)
Definition: oomph_utilities.cc:298
void assign_initial_values_impulsive()
Definition: problem.cc:11499
void unsteady_newton_solve(const double &dt)
Definition: problem.cc:10953
double P
Uniform pressure.
Definition: TwenteMeshGluing.cpp:77
int Argc
Number of arguments + 1.
Definition: oomph_utilities.cc:407

References oomph::CommandLineArgs::Argc, oomph::DocInfo::directory(), GlobalParameters::Doc_info, MergeRestartFiles::filename, i, j, oomph::DocInfo::number(), Global_Physical_Variables::P, oomph::DocInfo::set_directory(), and oomph::Problem_Parameter::Trace_file.

◆ solid_mesh_pt()

template<class ELEMENT , class TIMESTEPPER >
ElasticRefineableQuarterCircleSectorMesh<ELEMENT>*& DiskShockWaveProblem< ELEMENT, TIMESTEPPER >::solid_mesh_pt ( )
inline

Access function for the solid mesh.

221  {
222  return Solid_mesh_pt;
223  }
ElasticRefineableQuarterCircleSectorMesh< ELEMENT > * Solid_mesh_pt
Pointer to solid mesh.
Definition: shock_disk.cc:267

◆ traction_mesh_pt()

template<class ELEMENT , class TIMESTEPPER >
SolidMesh*& DiskShockWaveProblem< ELEMENT, TIMESTEPPER >::traction_mesh_pt ( )
inline

Access function for the mesh of surface traction elements.

227  {
228  return Traction_mesh_pt;
229  }
SolidMesh * Traction_mesh_pt
Pointer to mesh of traction elements.
Definition: shock_disk.cc:270

Member Data Documentation

◆ Doc_info

template<class ELEMENT , class TIMESTEPPER >
DocInfo DiskShockWaveProblem< ELEMENT, TIMESTEPPER >::Doc_info
private

◆ Solid_mesh_pt

template<class ELEMENT , class TIMESTEPPER >
ElasticRefineableQuarterCircleSectorMesh<ELEMENT>* DiskShockWaveProblem< ELEMENT, TIMESTEPPER >::Solid_mesh_pt
private

Pointer to solid mesh.

◆ Trace_file

template<class ELEMENT , class TIMESTEPPER >
ofstream DiskShockWaveProblem< ELEMENT, TIMESTEPPER >::Trace_file
private

Trace file.

◆ Trace_node_pt

template<class ELEMENT , class TIMESTEPPER >
Vector<Node*> DiskShockWaveProblem< ELEMENT, TIMESTEPPER >::Trace_node_pt
private

Vector of pointers to nodes whose position we're tracing.

◆ Traction_mesh_pt

template<class ELEMENT , class TIMESTEPPER >
SolidMesh* DiskShockWaveProblem< ELEMENT, TIMESTEPPER >::Traction_mesh_pt
private

Pointer to mesh of traction elements.


The documentation for this class was generated from the following file: