28 #ifndef OOMPH_PROJECTION_HEADER
29 #define OOMPH_PROJECTION_HEADER
40 #ifdef OOMPH_HAS_TRILINOS
133 const unsigned& fld) = 0;
179 template<
class ELEMENT>
213 ELEMENT::describe_local_dofs(
out, current_string);
242 const unsigned& flag)
247 unsigned n_dim =
dim();
256 const unsigned n_node = this->
nnode();
267 for (
unsigned ipt = 0; ipt < n_intpt; ipt++)
285 int local_eqn = 0, local_unknown = 0;
293 if (solid_el_pt == 0)
295 throw OomphLibError(
"Trying to project Lagrangian coordinates in "
296 "non-SolidElement\n",
302 Shape psi(n_node, n_position_type);
317 double interpolated_xi_bar =
322 for (
unsigned l = 0; l < n_node; ++l)
325 for (
unsigned k = 0;
k < n_position_type; ++
k)
335 residuals[local_eqn] +=
336 (interpolated_xi_proj - interpolated_xi_bar) * psi(l,
k) *
342 for (
unsigned l2 = 0; l2 < n_node; l2++)
345 for (
unsigned k2 = 0; k2 < n_position_type; k2++)
349 if (local_unknown >= 0)
351 jacobian(local_eqn, local_unknown) +=
352 psi(l2, k2) * psi(l,
k) *
W;
368 Shape psi(n_node, n_position_type);
379 double interpolated_x_proj = 0.0;
381 if (solid_el_pt != 0)
383 interpolated_x_proj =
389 interpolated_x_proj = this->
get_field(0, fld,
s);
397 for (
unsigned l = 0; l < n_node; ++l)
400 for (
unsigned k = 0;
k < n_position_type; ++
k)
403 if (solid_el_pt != 0)
417 if (n_position_type != 1)
420 "positions not in SolidElement\n",
431 residuals[local_eqn] +=
432 (interpolated_x_proj - interpolated_x_bar) * psi(l,
k) *
W;
437 for (
unsigned l2 = 0; l2 < n_node; l2++)
440 for (
unsigned k2 = 0; k2 < n_position_type; k2++)
443 if (solid_el_pt != 0)
453 if (local_unknown >= 0)
455 jacobian(local_eqn, local_unknown) +=
456 psi(l2, k2) * psi(l,
k) *
W;
482 double interpolated_value_proj = this->
get_field(now, fld,
s);
485 double interpolated_value_bar =
489 for (
unsigned l = 0; l < n_value; l++)
495 residuals[local_eqn] +=
496 (interpolated_value_proj - interpolated_value_bar) * psi[l] *
502 for (
unsigned l2 = 0; l2 < n_value; l2++)
505 if (local_unknown >= 0)
507 jacobian(local_eqn, local_unknown) +=
508 psi[l2] * psi[l] *
W;
518 throw OomphLibError(
"Wrong type specificied in Projection_type. "
519 "This should never happen\n",
533 const unsigned&
i)
const
541 return ELEMENT::zeta_nodal(
n,
k,
i);
665 template<
class ELEMENT>
693 template<
class PROJECTABLE_ELEMENT>
699 template<
class FRIEND_PROJECTABLE_ELEMENT>
701 template<
class FRIEND_PROJECTABLE_ELEMENT>
703 template<
class FRIEND_PROJECTABLE_ELEMENT>
705 template<
class FRIEND_PROJECTABLE_ELEMENT>
748 void project(
Mesh* base_mesh_pt,
const bool& dont_project_positions =
false)
755 #ifdef OOMPH_HAS_TRILINOS
817 bool backed_up_doc_time_enabled =
826 unsigned n_element1 = base_mesh_pt->
nelement();
828 unsigned n_node1 = base_mesh_pt->
nnode();
831 oomph_info <<
"\n=============================\n";
832 oomph_info <<
"Base mesh has " << n_element1 <<
" elements\n";
833 oomph_info <<
"Target mesh has " << n_element <<
" elements\n";
834 oomph_info <<
"Base mesh has " << n_node1 <<
" nodes\n";
835 oomph_info <<
"Target mesh has " << n_node <<
" nodes\n";
836 oomph_info <<
"=============================\n\n";
847 oomph_info <<
"Very odd -- no elements in target mesh; "
848 <<
" not doing anything in ProjectionProblem::project()\n";
856 std::ostringstream error_stream;
858 <<
"Mesh has no nodes! Please populate the Node_pt vector\n"
859 <<
"otherwise projection won't work!\n";
868 ->nfields_for_projection();
874 unsigned n_history_values = 0;
877 for (
unsigned e = 0;
e < n_element;
e++)
879 PROJECTABLE_ELEMENT* el_pt =
883 el_pt->enable_projection();
889 for (
unsigned e = 0;
e < n_element1;
e++)
891 PROJECTABLE_ELEMENT* el_pt =
892 dynamic_cast<PROJECTABLE_ELEMENT*
>(base_mesh_pt->
element_pt(
e));
895 el_pt->enable_projection();
911 <<
"CPU for setup of multi-domain interaction for projection: "
921 if (!dont_project_positions)
941 const unsigned n_lagrangian =
946 for (
unsigned i = 0;
i < n_lagrangian; ++
i)
951 <<
"\n\n=============================================\n";
952 oomph_info <<
"Projecting values for Lagrangian coordinate " <<
i
954 oomph_info <<
"=============================================\n\n";
964 oomph_info <<
"Number of equations for projection of Lagrangian "
966 <<
" : " << ndof_tmp << std::endl
973 std::ostringstream error_stream;
975 <<
"Solid mechanics problems will break if "
976 "Problem_is_nonlinear is\n"
977 <<
"set to true in the projection problem because we're using "
979 <<
"actual nodal positions to store the values of the "
981 <<
"coords. There shouldn't be any need for \n"
982 <<
"Problem_is_nonlinear=true anyway, apart from debugging in "
984 <<
"which case you now know why this case will break!\n";
996 for (
unsigned n = 0;
n < n_node; ++
n)
1002 const unsigned n_position_type = solid_node_pt->
nposition_type();
1004 const unsigned n_lagrangian_type =
1008 if (n_position_type != n_lagrangian_type)
1010 std::ostringstream error_stream;
1012 <<
"The number of generalised position dofs "
1014 <<
"\n not the same as the number of generalised lagrangian "
1016 << n_lagrangian_type <<
".\n"
1017 <<
"Projection cannot be done at the moment, sorry.\n";
1026 for (
unsigned k = 0;
k < n_position_type; ++
k)
1042 n_history_values =
dynamic_cast<PROJECTABLE_ELEMENT*
>(
1044 ->nhistory_values_for_coordinate_projection();
1047 if (n_history_values > 1)
1049 for (
unsigned i = 0;
i < n_dim;
i++)
1054 <<
"\n\n=============================================\n";
1055 oomph_info <<
"Projecting history values for coordinate " <<
i
1058 <<
"=============================================\n\n";
1067 for (
unsigned h_tim = n_history_values; h_tim > 1; h_tim--)
1069 unsigned time_level = h_tim - 1;
1079 <<
"Number of equations for projection of coordinate " <<
i
1080 <<
" at time level " << time_level <<
" : " << ndof_tmp
1090 for (
unsigned n = 0;
n < n_node; ++
n)
1097 for (
unsigned k = 0;
k < n_position_type; ++
k)
1131 for (
unsigned e = 0;
e < n_element;
e++)
1134 unsigned nnod = el_pt->
nnode();
1135 for (
unsigned j = 0;
j < nnod;
j++)
1138 if (nod_pt->
nvalue() == 0)
1140 std::ostringstream error_stream;
1141 error_stream <<
"Node at ";
1142 unsigned n = nod_pt->
ndim();
1143 for (
unsigned i = 0;
i <
n;
i++)
1145 error_stream << nod_pt->
x(
i) <<
" ";
1148 <<
"\nhas no values. Projection (of coordinates) doesn't "
1150 <<
"for such cases (at the moment), sorry! Send us the code\n"
1151 <<
"where the problem arises and we'll try to implement "
1153 <<
"(up to now unnecessary) capability...\n";
1164 n_history_values =
dynamic_cast<PROJECTABLE_ELEMENT*
>(
1166 ->nhistory_values_for_coordinate_projection();
1169 if (n_history_values > 1)
1171 for (
unsigned i = 0;
i < n_dim;
i++)
1176 <<
"\n\n=============================================\n";
1177 oomph_info <<
"Projecting history values for coordinate " <<
i
1180 <<
"=============================================\n\n";
1188 for (
unsigned h_tim = n_history_values; h_tim > 1; h_tim--)
1190 unsigned time_level = h_tim - 1;
1200 <<
"Number of equations for projection of coordinate " <<
i
1201 <<
" at time level " << time_level <<
" : " << ndof_tmp
1211 for (
unsigned e = 0;
e < n_element;
e++)
1213 PROJECTABLE_ELEMENT* new_el_pt =
1214 dynamic_cast<PROJECTABLE_ELEMENT*
>(
1218 new_el_pt->data_values_of_field(0);
1220 unsigned d_size =
data.size();
1221 for (
unsigned d = 0; d < d_size; d++)
1224 double coord =
data[d].first->value(0, 0);
1225 dynamic_cast<Node*
>(
data[d].first)->
x(time_level,
i) =
1242 for (
unsigned e = 0;
e < n_element;
e++)
1244 PROJECTABLE_ELEMENT* el_pt =
1247 el_pt->set_project_values();
1251 for (
unsigned fld = 0; fld < n_fields; fld++)
1264 ->nhistory_values_for_projection(fld);
1268 for (
unsigned h_tim = n_history_values; h_tim > 0; h_tim--)
1270 unsigned time_level = h_tim - 1;
1273 oomph_info <<
"\n=========================================\n";
1274 oomph_info <<
"Projecting field " << fld <<
" at time level "
1275 << time_level << std::endl;
1276 oomph_info <<
"========================================\n";
1286 oomph_info <<
"Number of equations for projection of field " << fld
1287 <<
" at time level " << time_level <<
" : " << ndof_tmp
1298 if (time_level != 0)
1300 for (
unsigned e = 0;
e < n_element;
e++)
1302 PROJECTABLE_ELEMENT* new_el_pt =
1303 dynamic_cast<PROJECTABLE_ELEMENT*
>(
1307 new_el_pt->data_values_of_field(fld);
1309 unsigned d_size =
data.size();
1310 for (
unsigned d = 0; d < d_size; d++)
1313 double c_value =
data[d].first->value(0,
data[d].second);
1314 data[d].first->set_value(time_level,
data[d].second, c_value);
1324 for (
unsigned e = 0;
e < n_element;
e++)
1326 PROJECTABLE_ELEMENT* new_el_pt =
1330 new_el_pt->flush_all_external_element_storage();
1332 new_el_pt->disable_projection();
1335 for (
unsigned e = 0;
e < n_element1;
e++)
1337 PROJECTABLE_ELEMENT* el_pt =
1338 dynamic_cast<PROJECTABLE_ELEMENT*
>(base_mesh_pt->
element_pt(
e));
1341 el_pt->flush_all_external_element_storage();
1344 el_pt->disable_projection();
1376 if (backed_up_doc_time_enabled)
1436 if (solid_el_pt != 0)
1442 const unsigned n_position_type =
1445 for (
unsigned n = 0;
n < n_node;
n++)
1453 for (
unsigned i = 0;
i < n_dim;
i++)
1455 for (
unsigned k = 0;
k < n_position_type;
k++)
1477 if (solid_el_pt != 0)
1482 const unsigned n_position_type =
1485 for (
unsigned n = 0;
n < n_node;
n++)
1491 for (
unsigned i = 0;
i < n_dim;
i++)
1493 for (
unsigned k = 0;
k < n_position_type;
k++)
1511 for (
unsigned e = 0;
e < n_element; ++
e)
1515 for (
unsigned j = 0;
j < nint;
j++)
1518 unsigned nval = int_data_pt->
nvalue();
1519 for (
unsigned i = 0;
i < nval;
i++)
1521 int_data_pt->
pin(
i);
1525 unsigned nnod = el_pt->
nnode();
1526 for (
unsigned j = 0;
j < nnod;
j++)
1529 unsigned nval = nod_pt->
nvalue();
1530 for (
unsigned i = 0;
i < nval;
i++)
1540 if (solid_el_pt != 0)
1552 const unsigned n_position_type =
1556 for (
unsigned n = 0;
n < n_node;
n++)
1560 for (
unsigned i = 0;
i < n_dim;
i++)
1562 for (
unsigned k = 0;
k < n_position_type;
k++)
1581 for (
unsigned e = 0;
e < n_element; ++
e)
1584 PROJECTABLE_ELEMENT* new_el_pt =
1587 unsigned n_fields = new_el_pt->nfields_for_projection();
1590 for (
unsigned f = 0;
f < n_fields;
f++)
1594 new_el_pt->data_values_of_field(
f);
1596 unsigned d_size =
data.size();
1597 for (
unsigned d = 0; d < d_size; d++)
1599 data[d].first->unpin(
data[d].second);
1607 if (solid_el_pt != 0)
1619 const unsigned n_position_type =
1623 for (
unsigned n = 0;
n < n_node;
n++)
1627 for (
unsigned i = 0;
i < n_dim;
i++)
1629 for (
unsigned k = 0;
k < n_position_type;
k++)
1650 const unsigned n_position_type =
1653 for (
unsigned n = 0;
n < n_node; ++
n)
1659 for (
unsigned k = 0;
k < n_position_type; ++
k)
1678 const unsigned n_position_type =
1681 for (
unsigned n = 0;
n < n_node; ++
n)
1687 for (
unsigned k = 0;
k < n_position_type; ++
k)
1699 for (
unsigned e = 0;
e < n_element;
e++)
1701 PROJECTABLE_ELEMENT* new_el_pt =
1705 new_el_pt->data_values_of_field(fld);
1707 unsigned d_size =
data.size();
1708 for (
unsigned d = 0; d < d_size; d++)
1710 data[d].first->unpin(
data[d].second);
1719 for (
unsigned e = 0;
e < n_element;
e++)
1721 PROJECTABLE_ELEMENT* new_el_pt =
1725 new_el_pt->data_values_of_field(fld);
1727 unsigned d_size =
data.size();
1728 for (
unsigned d = 0; d < d_size; d++)
1730 data[d].first->pin(
data[d].second);
1739 for (
unsigned e = 0;
e < n_element;
e++)
1741 PROJECTABLE_ELEMENT* el_pt =
1745 el_pt->time_level_for_projection() = time_level;
1753 for (
unsigned e = 0;
e < n_element;
e++)
1755 PROJECTABLE_ELEMENT* new_el_pt =
1759 new_el_pt->set_project_coordinates();
1762 new_el_pt->projected_coordinate() =
i;
1770 for (
unsigned e = 0;
e < n_element;
e++)
1772 PROJECTABLE_ELEMENT* new_el_pt =
1776 new_el_pt->set_project_lagrangian();
1779 new_el_pt->projected_lagrangian_coordinate() =
i;
1787 for (
unsigned e = 0;
e < n_element;
e++)
1789 PROJECTABLE_ELEMENT* new_el_pt =
1793 new_el_pt->projected_field() = fld;
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.)
JacobiRotation< float > J
Definition: Jacobi_makeJacobi.cpp:3
int data[]
Definition: Map_placement_new.cpp:1
RowVector3d w
Definition: Matrix_resize_int.cpp:3
Definition: face_mesh_project.h:223
The conjugate gradient method.
Definition: iterative_linear_solver.h:284
void pin(const unsigned &i)
Pin the i-th stored variable.
Definition: nodes.h:385
unsigned nvalue() const
Return number of values stored in data object (incl pinned ones).
Definition: nodes.h:483
Definition: element_with_external_element.h:56
Vector< double > & external_element_local_coord(const unsigned &interaction_index, const unsigned &ipt)
Definition: element_with_external_element.h:136
void set_ninteraction(const unsigned &n_interaction)
Definition: element_with_external_element.h:178
void include_external_geometric_data()
Definition: element_with_external_element.h:286
void describe_local_dofs(std::ostream &out, const std::string &curr_string) const
Definition: element_with_external_element.cc:205
FiniteElement *& external_element_pt(const unsigned &interaction_index, const unsigned &ipt)
Definition: element_with_external_element.h:107
bool add_external_geometric_data()
Are we including external geometric data in the element's Jacobian.
Definition: element_with_external_element.h:238
void ignore_external_interaction_data()
Definition: element_with_external_element.h:278
bool add_external_interaction_data()
Are we including external data in the element's Jacobian.
Definition: element_with_external_element.h:244
void include_external_interaction_data()
Definition: element_with_external_element.h:294
void ignore_external_geometric_data()
Definition: element_with_external_element.h:271
unsigned ninteraction() const
Return the number of interactions in the element.
Definition: element_with_external_element.h:184
FaceGeometry()
Definition: projection.h:670
Definition: elements.h:4998
Definition: elements.h:1313
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
Definition: elements.h:2175
unsigned nnodal_position_type() const
Definition: elements.h:2463
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 void shape(const Vector< double > &s, Shape &psi) const =0
unsigned dim() const
Definition: elements.h:2611
double nodal_position_gen(const unsigned &n, const unsigned &k, const unsigned &i) const
Definition: elements.h:2349
unsigned nnode() const
Return the number of nodes.
Definition: elements.h:2210
Integral *const & integral_pt() const
Return the pointer to the integration scheme (const version)
Definition: elements.h:1963
virtual double J_eulerian(const Vector< double > &s) const
Definition: elements.cc:4103
Data *& internal_data_pt(const unsigned &i)
Return a pointer to i-th internal data object.
Definition: elements.h:622
unsigned ninternal_data() const
Return the number of internal data objects.
Definition: elements.h:823
static DenseMatrix< double > Dummy_matrix
Definition: elements.h:227
virtual double knot(const unsigned &i, const unsigned &j) const =0
Return local coordinate s[j] of i-th integration point.
virtual unsigned nweight() const =0
Return the number of integration points of the scheme.
virtual double weight(const unsigned &i) const =0
Return weight of i-th integration point.
Definition: iterative_linear_solver.h:54
Preconditioner *& preconditioner_pt()
Access function to preconditioner.
Definition: iterative_linear_solver.h:95
bool is_doc_time_enabled() const
Is documentation of solve times enabled?
Definition: linear_solver.h:122
void disable_doc_time()
Disable documentation of solve times.
Definition: linear_solver.h:116
void enable_doc_time()
Enable documentation of solve times.
Definition: linear_solver.h:110
static bool mpi_has_been_initialised()
return true if MPI has been initialised
Definition: oomph_utilities.h:851
Matrix-based diagonal preconditioner.
Definition: general_purpose_preconditioners.h:49
FiniteElement * finite_element_pt(const unsigned &e) const
Definition: mesh.h:473
GeneralisedElement *& element_pt(const unsigned long &e)
Return pointer to element e.
Definition: mesh.h:448
unsigned long nnode() const
Return number of nodes in the mesh.
Definition: mesh.h:596
Node *& node_pt(const unsigned long &n)
Return pointer to global node n.
Definition: mesh.h:436
unsigned long nelement() const
Return number of elements in the mesh.
Definition: mesh.h:590
double & x(const unsigned &i)
Return the i-th nodal coordinate.
Definition: nodes.h:1060
double & x_gen(const unsigned &k, const unsigned &i)
Definition: nodes.h:1126
unsigned ndim() const
Return (Eulerian) spatial dimension of the node.
Definition: nodes.h:1054
unsigned nposition_type() const
Definition: nodes.h:1016
Definition: oomph_definitions.h:222
Definition: oomph_definitions.h:267
Definition: preconditioner.h:54
Definition: problem.h:151
LinearSolver *& linear_solver_pt()
Return a pointer to the linear solver object.
Definition: problem.h:1466
Mesh *& mesh_pt()
Return a pointer to the global mesh.
Definition: problem.h:1280
void newton_solve()
Use Newton method to solve the problem.
Definition: problem.cc:8783
bool Shut_up_in_newton_solve
Definition: problem.h:2191
unsigned long assign_eqn_numbers(const bool &assign_local_eqn_numbers=true)
Definition: problem.cc:1989
bool Problem_is_nonlinear
Definition: problem.h:628
void disable_info_in_newton_solve()
Disable the output of information when in the newton solver.
Definition: problem.h:2941
Template-free Base class for projectable elements.
Definition: projection.h:55
bool Backup_external_interaction_data
Definition: projection.h:104
unsigned Projected_lagrangian
Definition: projection.h:78
Projection_Type Projection_type
Definition: projection.h:83
virtual unsigned nvalue_of_field(const unsigned &fld)=0
virtual unsigned nfields_for_projection()=0
unsigned Time_level_for_projection
Time level we are projecting (0=current values; >0: history values)
Definition: projection.h:70
unsigned Backup_ninteraction
Definition: projection.h:93
virtual Vector< std::pair< Data *, unsigned > > data_values_of_field(const unsigned &fld)=0
virtual ~ProjectableElementBase()
Virtual destructor.
Definition: projection.h:123
ProjectableElementBase()
Definition: projection.h:110
bool Do_projection
Definition: projection.h:88
bool Backup_external_geometric_data
Definition: projection.h:98
Projection_Type
Definition: projection.h:60
@ Value
Definition: projection.h:63
@ Lagrangian
Definition: projection.h:62
@ Coordinate
Definition: projection.h:61
unsigned Projected_field
Field that is currently being projected.
Definition: projection.h:67
virtual unsigned nhistory_values_for_coordinate_projection()=0
unsigned Projected_coordinate
Definition: projection.h:74
virtual int local_equation(const unsigned &fld, const unsigned &ivalue)=0
virtual unsigned nhistory_values_for_projection(const unsigned &fld)=0
virtual double jacobian_and_shape_of_field(const unsigned &fld, const Vector< double > &s, Shape &psi)=0
virtual double get_field(const unsigned &time, const unsigned &fld, const Vector< double > &s)=0
Definition: projection.h:183
void enable_projection()
Definition: projection.h:548
ProjectableElement()
Definition: projection.h:235
unsigned & projected_field()
Field that is currently being projected.
Definition: projection.h:632
virtual void residual_for_projection(Vector< double > &residuals, DenseMatrix< double > &jacobian, const unsigned &flag)
Definition: projection.h:240
unsigned & projected_coordinate()
Definition: projection.h:645
void set_project_values()
Project (history values of) values.
Definition: projection.h:619
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Overloaded version of fill_in_contribution_to_jacobian.
Definition: projection.h:217
unsigned & projected_lagrangian_coordinate()
Definition: projection.h:652
void describe_local_dofs(std::ostream &out, const std::string ¤t_string) const
Definition: projection.h:209
void set_project_coordinates()
Project (history values of) coordintes.
Definition: projection.h:613
unsigned & time_level_for_projection()
Which history value are we projecting?
Definition: projection.h:638
void set_project_lagrangian()
Project (current and only values of) lagrangian coordinates.
Definition: projection.h:625
void fill_in_contribution_to_residuals(Vector< double > &residuals)
Overloaded version of fill_in_contribution_to_residuals.
Definition: projection.h:186
double zeta_nodal(const unsigned &n, const unsigned &k, const unsigned &i) const
Definition: projection.h:531
void disable_projection()
Definition: projection.h:583
Definition: projection.h:695
~ProjectionProblem()
Definition: projection.h:1406
void unpin_dofs_of_field(const unsigned &fld)
Helper function to unpin dofs of fld-th field.
Definition: projection.h:1696
void enable_suppress_output_during_projection()
Suppress all output during projection phases.
Definition: projection.h:717
ProjectionProblem()
Definition: projection.h:1387
void unpin_dofs_of_coordinate(const unsigned &coord)
Helper function to unpin the values of coordinate coord.
Definition: projection.h:1639
void store_positions()
Definition: projection.h:1425
bool use_iterative_solver_for_projection()
Definition: projection.h:730
void set_current_field_for_projection(const unsigned &fld)
Set current field for projection.
Definition: projection.h:1784
bool Output_during_projection_suppressed
Flag to suppress output during projection.
Definition: projection.h:1802
IterativeLinearSolver * Iterative_solver_projection_pt
Definition: projection.h:1808
bool Use_iterative_solver_for_projection
Definition: projection.h:1805
void set_time_level_for_projection(const unsigned &time_level)
Helper function to set time level for projection.
Definition: projection.h:1736
void set_lagrangian_coordinate_for_projection(const unsigned &i)
Set the Lagrangian coordinate for projection.
Definition: projection.h:1767
void pin_all()
Pin all the field values and position unknowns (bit inefficient)
Definition: projection.h:1503
void disable_use_iterative_solver_for_projection()
Disbales the use of an iterative solver for projection.
Definition: projection.h:742
void disable_suppress_output_during_projection()
Undo suppression of all output during projection phases.
Definition: projection.h:723
void unpin_all()
Unpin all the field values and position unknowns (bit inefficient)
Definition: projection.h:1573
Preconditioner * Preconditioner_projection_pt
Definition: projection.h:1811
void pin_dofs_of_field(const unsigned &fld)
Helper function to unpin dofs of fld-th field.
Definition: projection.h:1716
void set_coordinate_for_projection(const unsigned &i)
Set the coordinate for projection.
Definition: projection.h:1750
void project(Mesh *base_mesh_pt, const bool &dont_project_positions=false)
Project from base into the problem's own mesh.
Definition: projection.h:748
void pin_dofs_of_coordinate(const unsigned &coord)
Helper function to unpin the values of coordinate coord.
Definition: projection.h:1667
void restore_positions()
Definition: projection.h:1466
void enable_use_iterative_solver_for_projection()
Enables the use of an iterative solver for projection.
Definition: projection.h:736
Vector< DenseMatrix< double > > Solid_backup
Backup for pin status of solid node's position Data.
Definition: projection.h:1799
Definition: gmsh_tet_mesh.template.h:2285
Definition: uns_adapt_3d_fs.cc:86
Unstructured refineable Triangle Mesh.
Definition: triangle_mesh.template.h:2249
Definition: elements.h:3561
int position_local_eqn(const unsigned &n, const unsigned &k, const unsigned &j) const
Definition: elements.h:4137
unsigned nlagrangian_type() const
Definition: nodes.h:1877
double & xi_gen(const unsigned &k, const unsigned &i)
Definition: nodes.h:1902
void pin_position(const unsigned &i)
Pin the nodal position.
Definition: nodes.h:1816
void unpin_position(const unsigned &i)
Unpin the nodal position.
Definition: nodes.h:1829
Definition: trilinos_solver.h:267
@ CG
Definition: trilinos_solver.h:485
Definition: oomph-lib/src/generic/Vector.h:58
static int f(const TensorMap< Tensor< int, 3 > > &tensor)
Definition: cxx11_tensor_map.cpp:237
RealScalar s
Definition: level1_cplx_impl.h:130
char char char int int * k
Definition: level2_impl.h:374
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286
void setup_multi_domain_interaction(Problem *problem_pt, Mesh *const &mesh_pt, Mesh *const &external_mesh_pt, const unsigned &interaction_index=0)
Definition: multi_domain.template.cc:280
@ W
Definition: quadtree.h:63
double timer()
returns the time in seconds after some point in past
Definition: oomph_utilities.cc:1295
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
void fill_in_contribution_to_residuals(Vector< double > &residuals)
Add the element's contribution to its residual vector (wrapper)
Definition: gen_axisym_advection_diffusion_elements.h:522
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Definition: gen_axisym_advection_diffusion_elements.h:536
OomphInfo oomph_info
Definition: oomph_definitions.cc:319
list x
Definition: plotDoE.py:28
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86
std::ofstream out("Result.txt")
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2