#include <free_surface.h>
Public Types | |
typedef DoFHandler< dim-1, dim >::active_cell_iterator | cell_it |
typedef Triangulation< dim-1, dim >::active_cell_iterator | tria_it |
Public Member Functions | |
FreeSurface (NumericalTowingTank &comp_dom, BEMProblem< dim > &bem) | |
virtual unsigned int | n_dofs () const |
Returns the number of degrees of freedom. More... | |
virtual void | output_step (Vector< double > &solution, const unsigned int step_number) |
This function is called at the end of each iteration step for the newton solver. More... | |
virtual void | output_step (Vector< double > &solution, Vector< double > &solution_dot, const double t, const unsigned int step_number, const double h) |
This function is called at the end of each iteration step for the ode solver. More... | |
virtual bool | solution_check (Vector< double > &solution, Vector< double > &solution_dot, const double t, const unsigned int step_number, const double h) |
This function will check the behaviour of the solution. More... | |
virtual int | residual (const double t, Vector< double > &dst, const Vector< double > &src_yy, const Vector< double > &src_yp) |
For dae problems, we need a residual function. More... | |
virtual int | residual (Vector< double > &dst, const Vector< double > &src_yy) |
For newton solver, we need a residual function. More... | |
virtual int | jacobian (const double t, Vector< double > &dst, const Vector< double > &src_yy, const Vector< double > &src_yp, const Vector< double > &src, const double alpha) |
Jacobian vector product for dae. More... | |
virtual int | jacobian (Vector< double > &dst, const Vector< double > &src_yy, const Vector< double > &src) |
Jacobian vector product for newton solver. More... | |
int | residual_and_jacobian (const double t, Vector< double > &dst, const Vector< double > &src_yy, const Vector< double > &src_yp, const Vector< double > &src, const double alpha, const bool is_jacobian) |
This function computes either DAE residual or corrensponding Jacobian matrix vector product with vector src. More... | |
virtual int | setup_jacobian_prec (const Vector< double > &src_yy) |
Setup Jacobian preconditioner for Newton. More... | |
virtual int | setup_jacobian_prec (const double t, const Vector< double > &src_yy, const Vector< double > &src_yp, const double alpha) |
Setup Jacobian preconditioner for DAE. More... | |
void | compute_constraints (ConstraintMatrix &constraints, ConstraintMatrix &vector_constraints) |
virtual int | jacobian_prec (const double t, Vector< double > &dst, const Vector< double > &src_yy, const Vector< double > &src_yp, const Vector< double > &src, const double alpha) |
Jacobian inverse preconditioner vector product for dae. More... | |
virtual int | jacobian_prec (Vector< double > &dst, const Vector< double > &src_yy, const Vector< double > &src) |
Jacobian inverse preconditioner vector product for newton solver. More... | |
virtual int | jacobian_prec_prod (Vector< double > &dst, const Vector< double > &src_yy, const Vector< double > &src) |
Jacobian preconditioner vector product for newton solver. More... | |
virtual Vector< double > & | differential_components () |
And an identification of the differential components. More... | |
void | make_edges_conformal (Vector< double > &solution, Vector< double > &solution_dot, const double t, const unsigned int step_number, const double h) |
Method to enforce mesh conformity at edges at each restart. More... | |
void | remove_transom_hanging_nodes (Vector< double > &solution, Vector< double > &solution_dot, const double t, const unsigned int step_number, const double h) |
void | prepare_restart (const double t, Vector< double > &y, Vector< double > &yp, bool restart_flag=true) |
Method to make sure residual is null at each (re)start of the computation. More... | |
void | declare_parameters (ParameterHandler &prm) |
void | parse_parameters (ParameterHandler &prm) |
void | initial_conditions (Vector< double > &dst) |
void | reinit () |
void | prepare_bem_vectors (double time, Vector< double > &bem_bc, Vector< double > &dphi_dn) const |
void | compute_DXDt_and_DphiDt (double time, const Vector< double > &phi, const Vector< double > &dphi_dn, const Vector< double > &nodes_velocities) |
void | vmult (Vector< double > &dst, const Vector< double > &src) const |
void | compute_potential_gradients (Vector< double > &complete_potential_gradients, const Vector< double > &phi, const Vector< double > &dphi_dn) |
void | compute_keel_smoothing (Vector< double > &smoothing) |
void | compute_pressure (Vector< double > &press, Vector< double > &comp_1, Vector< double > &comp_2, Vector< double > &comp_3, Vector< double > &comp_4, const double t, const Vector< double > &solution, const Vector< double > &solution_dot) |
void | output_results (const std::string, const double t, const Vector< double > &solution, const Vector< double > &pressure) |
void | compute_internal_velocities (const Vector< double > &phi, const Vector< double > &dphi_dn) |
Vector< double > & | get_diameters () |
unsigned int | Rhs_evaluations_counter () |
void | dump_solution (const Vector< double > &y, const Vector< double > &yp, const std::string fname) const |
void | restore_solution (Vector< double > &y, Vector< double > &yp, const std::string fname) |
void | enforce_partial_geometry_constraints (const double blend_factor) |
void | enforce_full_geometry_constraints () |
![]() | |
virtual | ~OdeArgument () |
![]() | |
virtual | ~NewtonArgument () |
Public Attributes | |
bool | initial_condition_from_dump |
std::string | restore_filename |
Vector< double > | sys_comp |
![]() | |
bool | reset_time_integrator |
bool | stop_time_integrator |
Definition at line 104 of file free_surface.h.
typedef DoFHandler<dim-1,dim>::active_cell_iterator FreeSurface< dim >::cell_it |
Definition at line 243 of file free_surface.h.
typedef Triangulation<dim-1,dim>::active_cell_iterator FreeSurface< dim >::tria_it |
Definition at line 244 of file free_surface.h.
|
inline |
Definition at line 109 of file free_surface.h.
void FreeSurface< dim >::compute_constraints | ( | ConstraintMatrix & | constraints, |
ConstraintMatrix & | vector_constraints | ||
) |
Definition at line 10540 of file free_surface.cc.
void FreeSurface< dim >::compute_DXDt_and_DphiDt | ( | double | time, |
const Vector< double > & | phi, | ||
const Vector< double > & | dphi_dn, | ||
const Vector< double > & | nodes_velocities | ||
) |
Definition at line 8892 of file free_surface.cc.
void FreeSurface< dim >::compute_internal_velocities | ( | const Vector< double > & | phi, |
const Vector< double > & | dphi_dn | ||
) |
Definition at line 10426 of file free_surface.cc.
void FreeSurface< dim >::compute_keel_smoothing | ( | Vector< double > & | smoothing | ) |
Definition at line 10661 of file free_surface.cc.
void FreeSurface< dim >::compute_potential_gradients | ( | Vector< double > & | complete_potential_gradients, |
const Vector< double > & | phi, | ||
const Vector< double > & | dphi_dn | ||
) |
Definition at line 9271 of file free_surface.cc.
void FreeSurface< dim >::compute_pressure | ( | Vector< double > & | press, |
Vector< double > & | comp_1, | ||
Vector< double > & | comp_2, | ||
Vector< double > & | comp_3, | ||
Vector< double > & | comp_4, | ||
const double | t, | ||
const Vector< double > & | solution, | ||
const Vector< double > & | solution_dot | ||
) |
Definition at line 9407 of file free_surface.cc.
void FreeSurface< dim >::declare_parameters | ( | ParameterHandler & | prm | ) |
Definition at line 59 of file free_surface.cc.
|
virtual |
And an identification of the differential components.
This has to be 1 if the corresponding variable is a differential component, zero otherwise.
Reimplemented from OdeArgument.
Definition at line 8222 of file free_surface.cc.
void FreeSurface< dim >::dump_solution | ( | const Vector< double > & | y, |
const Vector< double > & | yp, | ||
const std::string | fname | ||
) | const |
Definition at line 10578 of file free_surface.cc.
void FreeSurface< dim >::enforce_full_geometry_constraints | ( | ) |
Definition at line 10615 of file free_surface.cc.
void FreeSurface< dim >::enforce_partial_geometry_constraints | ( | const double | blend_factor | ) |
Definition at line 10637 of file free_surface.cc.
|
virtual |
Reimplemented from OdeArgument.
Definition at line 4750 of file free_surface.cc.
void FreeSurface< dim >::initial_conditions | ( | Vector< double > & | dst | ) |
Definition at line 331 of file free_surface.cc.
|
virtual |
Jacobian vector product for dae.
Reimplemented from OdeArgument.
Definition at line 4918 of file free_surface.cc.
|
virtual |
Jacobian vector product for newton solver.
Reimplemented from NewtonArgument.
Definition at line 4905 of file free_surface.cc.
|
virtual |
Jacobian inverse preconditioner vector product for dae.
Jacobian inverse preconditioner vector product for DAE.
Reimplemented from OdeArgument.
Definition at line 8104 of file free_surface.cc.
|
virtual |
Jacobian inverse preconditioner vector product for newton solver.
Jacobian inverse preconditioner vector product for Newton.
Reimplemented from NewtonArgument.
Definition at line 8087 of file free_surface.cc.
|
virtual |
Jacobian preconditioner vector product for newton solver.
Jacobian preconditioner vector product for Newton.
Reimplemented from NewtonArgument.
Definition at line 8073 of file free_surface.cc.
void FreeSurface< dim >::make_edges_conformal | ( | Vector< double > & | solution, |
Vector< double > & | solution_dot, | ||
const double | t, | ||
const unsigned int | step_number, | ||
const double | h | ||
) |
Method to enforce mesh conformity at edges at each restart.
Definition at line 2274 of file free_surface.cc.
|
virtual |
Returns the number of degrees of freedom.
Pure virtual function.
Implements NewtonArgument.
Definition at line 931 of file free_surface.cc.
void FreeSurface< dim >::output_results | ( | const std::string | filename, |
const double | t, | ||
const Vector< double > & | solution, | ||
const Vector< double > & | pressure | ||
) |
Definition at line 10213 of file free_surface.cc.
|
virtual |
This function is called at the end of each iteration step for the newton solver.
Once again, the conversion between pointers and other forms of vectors need to be done inside the inheriting class.
Implements NewtonArgument.
Definition at line 939 of file free_surface.cc.
|
virtual |
This function is called at the end of each iteration step for the ode solver.
Once again, the conversion between pointers and other forms of vectors need to be done inside the inheriting class.
Implements OdeArgument.
Definition at line 961 of file free_surface.cc.
void FreeSurface< dim >::parse_parameters | ( | ParameterHandler & | prm | ) |
Definition at line 190 of file free_surface.cc.
void FreeSurface< dim >::prepare_bem_vectors | ( | double | time, |
Vector< double > & | bem_bc, | ||
Vector< double > & | dphi_dn | ||
) | const |
Definition at line 8744 of file free_surface.cc.
void FreeSurface< dim >::prepare_restart | ( | const double | t, |
Vector< double > & | y, | ||
Vector< double > & | yp, | ||
bool | restart_flag = true |
||
) |
Method to make sure residual is null at each (re)start of the computation.
Definition at line 3331 of file free_surface.cc.
void FreeSurface< dim >::reinit | ( | ) |
Definition at line 278 of file free_surface.cc.
void FreeSurface< dim >::remove_transom_hanging_nodes | ( | Vector< double > & | solution, |
Vector< double > & | solution_dot, | ||
const double | t, | ||
const unsigned int | step_number, | ||
const double | h | ||
) |
Definition at line 2810 of file free_surface.cc.
|
virtual |
For dae problems, we need a residual function.
This one is computed with sacado to allow computations of derivatives for jacobian
Implements OdeArgument.
Definition at line 4815 of file free_surface.cc.
|
virtual |
For newton solver, we need a residual function.
This one is computed with sacado to allow computations of derivatives for jacobian
Implements NewtonArgument.
Definition at line 4796 of file free_surface.cc.
int FreeSurface< dim >::residual_and_jacobian | ( | const double | t, |
Vector< double > & | dst, | ||
const Vector< double > & | src_yy, | ||
const Vector< double > & | src_yp, | ||
const Vector< double > & | src, | ||
const double | alpha, | ||
const bool | is_jacobian | ||
) |
This function computes either DAE residual or corrensponding Jacobian matrix vector product with vector src.
Boolean is_jacobian determines if this function is used for residual (false) or for Jacobian (true). In residual case, src and alpha values assigned are disregarded.
Definition at line 5063 of file free_surface.cc.
void FreeSurface< dim >::restore_solution | ( | Vector< double > & | y, |
Vector< double > & | yp, | ||
const std::string | fname | ||
) |
Definition at line 10595 of file free_surface.cc.
|
inline |
Definition at line 300 of file free_surface.h.
|
virtual |
Setup Jacobian preconditioner for Newton.
Reimplemented from NewtonArgument.
Definition at line 8142 of file free_surface.cc.
|
virtual |
Setup Jacobian preconditioner for DAE.
Reimplemented from OdeArgument.
Definition at line 8150 of file free_surface.cc.
|
virtual |
This function will check the behaviour of the solution.
If it is converged or if it is becoming unstable the time integrator will be stopped. If the convergence is not achived the calculation will be continued. If necessary, it can also reset the time stepper.
Implements OdeArgument.
Definition at line 993 of file free_surface.cc.
void FreeSurface< dim >::vmult | ( | Vector< double > & | dst, |
const Vector< double > & | src | ||
) | const |
Definition at line 4841 of file free_surface.cc.
|
private |
Definition at line 480 of file free_surface.h.
|
private |
Definition at line 357 of file free_surface.h.
|
private |
Definition at line 455 of file free_surface.h.
|
private |
Definition at line 346 of file free_surface.h.
|
private |
Definition at line 361 of file free_surface.h.
|
private |
Definition at line 360 of file free_surface.h.
|
private |
Definition at line 359 of file free_surface.h.
|
private |
Definition at line 467 of file free_surface.h.
|
private |
Definition at line 425 of file free_surface.h.
|
private |
Definition at line 344 of file free_surface.h.
|
private |
Definition at line 371 of file free_surface.h.
|
private |
Definition at line 457 of file free_surface.h.
|
private |
Definition at line 459 of file free_surface.h.
|
private |
Definition at line 461 of file free_surface.h.
|
private |
Definition at line 453 of file free_surface.h.
|
private |
Definition at line 451 of file free_surface.h.
|
private |
Definition at line 407 of file free_surface.h.
|
private |
Definition at line 356 of file free_surface.h.
|
private |
Definition at line 348 of file free_surface.h.
|
private |
Definition at line 374 of file free_surface.h.
|
private |
Definition at line 375 of file free_surface.h.
|
private |
Definition at line 376 of file free_surface.h.
|
private |
Definition at line 382 of file free_surface.h.
|
private |
Definition at line 383 of file free_surface.h.
|
private |
Definition at line 384 of file free_surface.h.
|
private |
Definition at line 385 of file free_surface.h.
|
private |
Definition at line 378 of file free_surface.h.
|
private |
Definition at line 379 of file free_surface.h.
|
private |
Definition at line 380 of file free_surface.h.
|
private |
Definition at line 325 of file free_surface.h.
|
private |
Definition at line 355 of file free_surface.h.
|
private |
Definition at line 332 of file free_surface.h.
|
private |
Definition at line 333 of file free_surface.h.
|
private |
Definition at line 334 of file free_surface.h.
|
private |
Definition at line 331 of file free_surface.h.
bool FreeSurface< dim >::initial_condition_from_dump |
Definition at line 318 of file free_surface.h.
|
private |
Definition at line 330 of file free_surface.h.
|
private |
Definition at line 365 of file free_surface.h.
|
private |
Definition at line 329 of file free_surface.h.
|
private |
Definition at line 328 of file free_surface.h.
|
private |
Definition at line 336 of file free_surface.h.
|
private |
Definition at line 337 of file free_surface.h.
|
private |
Definition at line 338 of file free_surface.h.
|
private |
Definition at line 400 of file free_surface.h.
|
private |
Definition at line 399 of file free_surface.h.
|
private |
Definition at line 401 of file free_surface.h.
|
private |
Definition at line 398 of file free_surface.h.
|
private |
Definition at line 433 of file free_surface.h.
|
private |
Definition at line 423 of file free_surface.h.
|
private |
Definition at line 413 of file free_surface.h.
|
private |
Definition at line 415 of file free_surface.h.
|
private |
Definition at line 417 of file free_surface.h.
|
private |
Definition at line 421 of file free_surface.h.
|
private |
Definition at line 340 of file free_surface.h.
|
private |
Definition at line 449 of file free_surface.h.
|
private |
Definition at line 446 of file free_surface.h.
|
private |
Definition at line 439 of file free_surface.h.
|
private |
Definition at line 442 of file free_surface.h.
|
private |
Definition at line 323 of file free_surface.h.
|
private |
Definition at line 350 of file free_surface.h.
|
private |
Definition at line 402 of file free_surface.h.
|
private |
Definition at line 465 of file free_surface.h.
|
private |
Definition at line 463 of file free_surface.h.
|
private |
Definition at line 427 of file free_surface.h.
|
private |
Definition at line 352 of file free_surface.h.
|
private |
Definition at line 324 of file free_surface.h.
|
private |
Definition at line 431 of file free_surface.h.
|
private |
Definition at line 483 of file free_surface.h.
|
private |
Definition at line 482 of file free_surface.h.
|
private |
Definition at line 485 of file free_surface.h.
|
private |
Definition at line 484 of file free_surface.h.
|
private |
Definition at line 486 of file free_surface.h.
|
private |
Definition at line 487 of file free_surface.h.
|
private |
Definition at line 489 of file free_surface.h.
|
private |
Definition at line 488 of file free_surface.h.
|
private |
Definition at line 490 of file free_surface.h.
std::string FreeSurface< dim >::restore_filename |
Definition at line 319 of file free_surface.h.
|
private |
Definition at line 419 of file free_surface.h.
|
private |
Definition at line 342 of file free_surface.h.
|
private |
Definition at line 429 of file free_surface.h.
Vector<double> FreeSurface< dim >::sys_comp |
Definition at line 320 of file free_surface.h.
|
private |
Definition at line 358 of file free_surface.h.
|
private |
Definition at line 469 of file free_surface.h.
|
private |
Definition at line 389 of file free_surface.h.
|
private |
Definition at line 372 of file free_surface.h.
|
private |
Definition at line 387 of file free_surface.h.
|
private |
Definition at line 388 of file free_surface.h.
|
private |
Definition at line 394 of file free_surface.h.
|
private |
Definition at line 395 of file free_surface.h.
|
private |
Definition at line 391 of file free_surface.h.
|
private |
Definition at line 392 of file free_surface.h.
|
private |
Definition at line 327 of file free_surface.h.
|
private |
Definition at line 435 of file free_surface.h.
|
private |
Definition at line 437 of file free_surface.h.