54 for (
unsigned n = 0; n < n_node; n++)
63 OOMPH_CURRENT_FUNCTION,
64 OOMPH_EXCEPTION_LOCATION);
69 unsigned ndim = node_pt->
ndim();
78 throw OomphLibError(
"Wasn't able to cast to SolidFiniteElement\n",
79 OOMPH_CURRENT_FUNCTION,
80 OOMPH_EXCEPTION_LOCATION);
87 for (
unsigned i = 0;
i < ndim;
i++)
90 for (
unsigned k = 0; k < ntype; k++)
98 unsigned nval = node_pt->
nvalue();
99 for (
unsigned ival = 0; ival < nval; ival++)
109 for (
unsigned i = 0;
i < Nelement;
i++)
118 throw OomphLibError(
"Wasn't able to cast to SolidFiniteElement\n",
119 OOMPH_CURRENT_FUNCTION,
120 OOMPH_EXCEPTION_LOCATION);
134 fsi_elem_pt->exclude_external_load_data();
141 for (
unsigned j = 0; j < nint; j++)
146 unsigned nval = data_pt->
nvalue();
147 for (
unsigned ival = 0; ival < nval; ival++)
159 "Automatic assignment of initial conditions doesn't work yet\n";
161 "for elasticity elements with internal solid dofs (pressures)\n";
164 error_message, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
204 for (
unsigned n = 0; n < n_node; n++)
213 OOMPH_CURRENT_FUNCTION,
214 OOMPH_EXCEPTION_LOCATION);
219 unsigned ndim = node_pt->
ndim();
228 throw OomphLibError(
"Wasn't able to cast to SolidFiniteElement\n",
229 OOMPH_CURRENT_FUNCTION,
230 OOMPH_EXCEPTION_LOCATION);
238 for (
unsigned i = 0;
i < ndim;
i++)
241 for (
unsigned k = 0; k < ntype; k++)
249 unsigned nval = node_pt->
nvalue();
250 for (
unsigned ival = 0; ival < nval; ival++)
260 for (
unsigned i = 0;
i < Nelement;
i++)
269 throw OomphLibError(
"Wasn't able to cast to SolidFiniteElement\n",
270 OOMPH_CURRENT_FUNCTION,
271 OOMPH_EXCEPTION_LOCATION);
280 for (
unsigned j = 0; j < next; j++)
292 for (
unsigned j = 0; j < nint; j++)
297 unsigned nval = data_pt->
nvalue();
298 for (
unsigned ival = 0; ival < nval; ival++)
311 "Automatic assignment of initial conditions doesn't work yet\n";
313 "for elasticity elements with internal solid dofs (pressures)\n";
316 error_message, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
352 for (
unsigned n = 0; n < n_node; n++)
361 OOMPH_CURRENT_FUNCTION,
362 OOMPH_EXCEPTION_LOCATION);
367 unsigned ndim = node_pt->
ndim();
376 throw OomphLibError(
"Wasn't able to cast to SolidFiniteElement\n",
377 OOMPH_CURRENT_FUNCTION,
378 OOMPH_EXCEPTION_LOCATION);
385 for (
unsigned i = 0;
i < ndim;
i++)
388 for (
unsigned k = 0; k < ntype; k++)
400 unsigned nval = node_pt->
nvalue();
401 for (
unsigned ival = 0; ival < nval; ival++)
406 node_pt->
unpin(ival);
414 for (
unsigned i = 0;
i < Nelement;
i++)
423 throw OomphLibError(
"Wasn't able to cast to SolidFiniteElement\n",
424 OOMPH_CURRENT_FUNCTION,
425 OOMPH_EXCEPTION_LOCATION);
431 ->disable_solve_for_consistent_newmark_accel();
439 fsi_elem_pt->include_external_load_data();
446 for (
unsigned j = 0; j < next; j++)
459 for (
unsigned j = 0; j < nint; j++)
464 unsigned nval = data_pt->
nvalue();
465 for (
unsigned ival = 0; ival < nval; ival++)
470 data_pt->
unpin(ival);
481 "Automatic assignment of initial conditions doesn't work yet\n";
483 "for elasticity elements with internal solid dofs (pressures)\n";
486 error_message, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
542 double backup_time = 0.0;
547 if (timestepper_pt != 0)
584 if (timestepper_pt != 0)
595 oomph_info <<
"Number of equations in big problem: "
A class that represents a collection of data; each Data object may contain many different individual ...
void pin(const unsigned &i)
Pin the i-th stored variable.
void unpin(const unsigned &i)
Unpin the i-th stored variable.
unsigned nvalue() const
Return number of values stored in data object (incl pinned ones).
bool is_pinned(const unsigned &i) const
Test whether the i-th variable is pinned (1: true; 0: false).
///////////////////////////////////////////////////////////////////// ///////////////////////////////...
////////////////////////////////////////////////////////////////////////// //////////////////////////...
unsigned nnodal_position_type() const
Return the number of coordinate types that the element requires to interpolate the geometry between t...
unsigned nexternal_data() const
Return the number of external data objects.
Data *& external_data_pt(const unsigned &i)
Return a pointer to i-th external data object.
Data *& internal_data_pt(const unsigned &i)
Return a pointer to i-th internal data object.
unsigned ninternal_data() const
Return the number of internal data objects.
void flush_external_data()
Flush all external data.
unsigned add_external_data(Data *const &data_pt, const bool &fd=true)
Add a (pointer to an) external data object to the element and return its index (i....
TimeStepper *& time_stepper_pt()
Access function for pointer to time stepper: Null if object is not time-dependent.
GeneralisedElement *& element_pt(const unsigned long &e)
Return pointer to element e.
unsigned long nnode() const
Return number of nodes in the mesh.
Node *& node_pt(const unsigned long &n)
Return pointer to global node n.
unsigned long nelement() const
Return number of elements in the mesh.
unsigned ndim() const
Return (Eulerian) spatial dimension of the node.
An oomph-lib wrapper to the MPI_Comm communicator object. Just contains an MPI_Comm object (which is ...
An OomphLibError object which should be thrown when an run-time error is encountered....
////////////////////////////////////////////////////////////////// //////////////////////////////////...
unsigned long assign_eqn_numbers(const bool &assign_local_eqn_numbers=true)
Assign all equation numbers for problem: Deals with global data (= data that isn't attached to any el...
void assign_initial_values_impulsive()
Initialise data and nodal positions to simulate impulsive start from initial configuration/solution.
bool Problem_has_been_distributed
Has the problem been distributed amongst multiple processors?
OomphCommunicator * communicator_pt()
access function to the oomph-lib communicator
void newton_solve()
Use Newton method to solve the problem.
OomphCommunicator * Communicator_pt
The communicator for this problem.
bool problem_has_been_distributed()
Access to Problem_has_been_distributed flag.
Mesh *& mesh_pt()
Return a pointer to the global mesh.
double & time()
Return the current value of continuous time.
////////////////////////////////////////////////////////////////////// //////////////////////////////...
virtual bool has_internal_solid_data()
Return whether there is internal solid data (e.g. discontinuous solid pressure). At present,...
SolidInitialCondition *& solid_ic_pt()
Pointer to object that describes the initial condition.
void backup_original_state()
Backup original state of all data associated with mesh.
Vector< Vector< Data * > > Backup_ext_data
Vector of Vectors to store pointers to exernal data in the elements.
void setup_problem()
Change pinned status of all data associated with mesh so that the IC problem can be solved.
void set_static_initial_condition(Problem *problem_pt, Mesh *mesh_pt, SolidInitialCondition *ic_pt, const double &time)
Force the elastic structure that is discretised on the specified mesh to deform in the shape of the i...
Vector< int > Backup_pinned
Vector to store pinned status of all data.
void reset_original_state()
Reset original state of all data associated with mesh.
SolidInitialCondition * IC_pt
Pointer to initial condition object.
A class to specify the initial conditions for a solid body. Solid bodies are often discretised with H...
GeomObject *& geom_object_pt()
(Reference to) pointer to geom object that specifies the initial condition
unsigned & ic_time_deriv()
Which time derivative are we currently assigning?
A Class for nodes that deform elastically (i.e. position is an unknown in the problem)....
void pin_position(const unsigned &i)
Pin the nodal position.
void unpin_position(const unsigned &i)
Unpin the nodal position.
bool position_is_pinned(const unsigned &i)
Test whether the i-th coordinate is pinned, 0: false; 1: true.
////////////////////////////////////////////////////////////////////// //////////////////////////////...
Time *const & time_pt() const
Access function for the pointer to time (const version)
double & time()
Return the current value of the continuous time.
std::string string(const unsigned &i)
Return the i-th string or "" if the relevant string hasn't been defined.
//////////////////////////////////////////////////////////////////// ////////////////////////////////...
OomphInfo oomph_info
Single (global) instantiation of the OomphInfo object – this is used throughout the library as a "rep...