39 using namespace oomph;
158 template <
class ELEMENT>
171 const double& gap_fraction,
172 const double& period);
210 unsigned num_nod=bulk_mesh_pt()->nboundary_node(ibound);
211 for (
unsigned inod=0;inod<num_nod;inod++)
214 Node* node_pt=bulk_mesh_pt()->boundary_node_pt(ibound,inod);
230 Bulk_mesh_pt->node_update();
234 void doc_solution(
DocInfo& doc_info,ofstream& trace_file);
238 void set_initial_condition();
284 template <
class ELEMENT>
290 const double& gap_fraction,
291 const double& period)
306 Max_residuals = 1.0e8;
312 add_time_stepper_pt(fluid_time_stepper_pt);
317 add_time_stepper_pt(solid_time_stepper_pt);
325 (
nx,
lx,undeformed_wall_pt,solid_time_stepper_pt);
335 (
nx,
ny,
lx,
ly, gap_fraction, Wall_geom_object_pt,fluid_time_stepper_pt);
339 add_sub_mesh(Bulk_mesh_pt);
340 add_sub_mesh(Wall_mesh_pt);
351 unsigned n_element=Bulk_mesh_pt->nelement();
352 for(
unsigned e=0;
e<n_element;
e++)
355 ELEMENT* el_pt =
dynamic_cast<ELEMENT*
>(Bulk_mesh_pt->element_pt(
e));
372 for (
unsigned ibound=0;ibound<6;ibound++)
374 if ((ibound!=1)&&(ibound!=5))
376 unsigned num_nod= bulk_mesh_pt()->nboundary_node(ibound);
377 for (
unsigned inod=0;inod<num_nod;inod++)
379 for(
unsigned i=0;
i<2;
i++)
381 bulk_mesh_pt()->boundary_node_pt(ibound, inod)->pin(
i);
392 n_element = wall_mesh_pt()->nelement();
393 for(
unsigned e=0;
e<n_element;
e++)
424 for(
unsigned b=0;
b<2;
b++)
427 wall_mesh_pt()->boundary_node_pt(
b,0)->pin_position(0);
428 wall_mesh_pt()->boundary_node_pt(
b,0)->pin_position(1);
439 unsigned num_nod= bulk_mesh_pt()->nboundary_node(ibound);
440 unsigned control_nod=num_nod/2;
441 Left_node_pt= bulk_mesh_pt()->boundary_node_pt(ibound, control_nod);
445 num_nod= bulk_mesh_pt()->nboundary_node(ibound);
446 control_nod=num_nod/2;
447 Right_node_pt= bulk_mesh_pt()->boundary_node_pt(ibound, control_nod);
451 num_nod= wall_mesh_pt()->nnode();
452 Wall_node_pt=wall_mesh_pt()->node_pt(
nx/2);
466 num_nod= bulk_mesh_pt()->nboundary_node(ibound);
467 for (
unsigned inod=0;inod<num_nod;inod++)
470 bulk_mesh_pt()->boundary_node_pt(ibound, inod))->
471 set_auxiliary_node_update_fct_pt(
480 FSI_functions::setup_fluid_load_info_for_solid_elements<ELEMENT,2>
481 (
this,3,Bulk_mesh_pt,Wall_mesh_pt);
484 cout <<
"Number of equations: " << assign_eqn_numbers() << std::endl;
495 template <
class ELEMENT>
497 ofstream& trace_file)
503 FSI_functions::doc_fsi<AlgebraicNode>(Bulk_mesh_pt,Wall_mesh_pt,doc_info);
517 bulk_mesh_pt()->output(some_file,npts);
524 wall_mesh_pt()->output(some_file,npts);
529 trace_file << time_pt()->time() <<
" "
530 << Wall_node_pt->x(1) <<
" "
531 << Left_node_pt->value(0) <<
" "
532 << Right_node_pt->value(0) <<
" "
543 template <
class ELEMENT>
547 wall_mesh_pt()->assign_initial_values_impulsive();
550 bulk_mesh_pt()->node_update();
553 unsigned num_nod = bulk_mesh_pt()->nnode();
554 for (
unsigned n=0;
n<num_nod;
n++)
558 x[0]=bulk_mesh_pt()->node_pt(
n)->x(0);
559 x[1]=bulk_mesh_pt()->node_pt(
n)->x(1);
562 bulk_mesh_pt()->node_pt(
n)->set_value(0,0.0);
563 bulk_mesh_pt()->node_pt(
n)->set_value(1,0.0);
567 bulk_mesh_pt()->assign_initial_values_impulsive();
AnnoyingScalar cos(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:136
int i
Definition: BiCGSTAB_step_by_step.cpp:9
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
Array< double, 1, 3 > e(1./3., 0.5, 2.)
MatrixXf H
Definition: HessenbergDecomposition_matrixH.cpp:4
MatrixXf Q
Definition: HouseholderQR_householderQ.cpp:1
Scalar * b
Definition: benchVecAdd.cpp:17
Problem class.
Definition: fsi_driven_cavity_problem.h:160
MeshAsGeomObject * Wall_geom_object_pt
Definition: fsi_driven_cavity_problem.h:274
OneDLagrangianMesh< FSIHermiteBeamElement > * Wall_mesh_pt
Pointer to the "wall" mesh.
Definition: fsi_driven_cavity_problem.h:261
unsigned Ny
Number of elements in the y direction.
Definition: fsi_driven_cavity_problem.h:246
Node * Wall_node_pt
Pointer to control node on the wall.
Definition: fsi_driven_cavity_problem.h:270
void actions_after_newton_solve()
Update the problem after solve (empty)
Definition: fsi_driven_cavity_problem.h:203
OneDLagrangianMesh< FSIHermiteBeamElement > * wall_mesh_pt()
Access function for the wall mesh.
Definition: fsi_driven_cavity_problem.h:193
double Lx
Width of domain.
Definition: fsi_driven_cavity_problem.h:249
double T
Period of oscillation.
Definition: fsi_driven_cavity_problem.h:255
double Ly
Height of domain.
Definition: fsi_driven_cavity_problem.h:252
~FSIDrivenCavityProblem()
Destructor.
Definition: fsi_driven_cavity_problem.h:175
Node * Left_node_pt
Pointer to the left control node.
Definition: fsi_driven_cavity_problem.h:264
AlgebraicFSIDrivenCavityMesh< ELEMENT > * bulk_mesh_pt()
Access function for the specific bulk (fluid) mesh.
Definition: fsi_driven_cavity_problem.h:182
void doc_solution(DocInfo &doc_info, ofstream &trace_file)
Doc the solution.
Definition: fsi_driven_cavity_problem.h:496
void actions_before_newton_solve()
Update the problem specs before solve (empty)
Definition: fsi_driven_cavity_problem.h:200
Node * Right_node_pt
Pointer to right control node.
Definition: fsi_driven_cavity_problem.h:267
void actions_before_newton_convergence_check()
Definition: fsi_driven_cavity_problem.h:228
void set_initial_condition()
Apply initial conditions.
Definition: fsi_driven_cavity_problem.h:544
FSIDrivenCavityProblem(const unsigned &nx, const unsigned &ny, const double &lx, const double &ly, const double &gap_fraction, const double &period)
Constructor for the collapsible channel problem.
Definition: fsi_driven_cavity_problem.h:285
AlgebraicFSIDrivenCavityMesh< ELEMENT > * Bulk_mesh_pt
Pointer to the "bulk" mesh.
Definition: fsi_driven_cavity_problem.h:258
unsigned Nx
Number of elements in the x direction.
Definition: fsi_driven_cavity_problem.h:243
void actions_before_implicit_timestep()
Update the velocity boundary condition on the moving lid.
Definition: fsi_driven_cavity_problem.h:206
Definition: fsi_driven_cavity_mesh.template.h:161
Definition: algebraic_elements.h:55
void set_value(const unsigned &i, const double &value_)
Definition: nodes.h:271
Definition: oomph_utilities.h:499
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
Definition: beam_elements.h:352
void set_normal_pointing_out_of_fluid()
Definition: beam_elements.h:384
double *& q_pt()
Definition: fsi.h:248
Definition: geom_objects.h:101
double *& h_pt()
Return a pointer to non-dim. wall thickness.
Definition: beam_elements.h:240
double *& lambda_sq_pt()
Return a pointer to timescale ratio (nondim density)
Definition: beam_elements.h:246
GeomObject *& undeformed_beam_pt()
Definition: beam_elements.h:253
Definition: mesh_as_geometric_object.h:93
Definition: problem.h:151
A Rank 3 Tensor class.
Definition: matrices.h:1370
double Pi
Definition: two_d_biharmonic.cc:235
EIGEN_STRONG_INLINE const Eigen::CwiseBinaryOp< Eigen::internal::scalar_zeta_op< typename DerivedX::Scalar >, const DerivedX, const DerivedQ > zeta(const Eigen::ArrayBase< DerivedX > &x, const Eigen::ArrayBase< DerivedQ > &q)
Definition: SpecialFunctionsArrayAPI.h:152
unsigned Nx
Number of elements in each direction (used by SimpleCubicMesh)
Definition: structured_cubic_point_source.cc:114
unsigned Ny
Definition: structured_cubic_point_source.cc:115
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 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
Global variables.
Definition: TwenteMeshGluing.cpp:60
double ReSt
Womersley number.
Definition: rayleigh_instability.cc:56
double Q
Ratio of scales.
Definition: elastic_bretherton.cc:131
double Lambda_sq
Pseudo-solid mass density.
Definition: pressure_driven_torus.cc:62
double Re
Reynolds number.
Definition: fibre.cc:55
double H
Nondim thickness.
Definition: steady_ring.cc:50
Vector< double > x0(2, 0.0)
string filename
Definition: MergeRestartFiles.py:39
const double ly
Definition: ConstraintElementsUnitTest.cpp:34
const double lx
Definition: ConstraintElementsUnitTest.cpp:33
const unsigned nx
Definition: ConstraintElementsUnitTest.cpp:30
const unsigned ny
Definition: ConstraintElementsUnitTest.cpp:31
int Argc
Number of arguments + 1.
Definition: oomph_utilities.cc:407
void apply_no_slip_on_moving_wall(Node *node_pt)
Definition: fsi.cc:48
unsigned Max_newton_iterations
Maximum number of newton iterations.
Definition: elements.cc:1654
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
list x
Definition: plotDoE.py:28
t
Definition: plotPSD.py:36