29 #ifndef OOMPH_PSEUDO_SOLID_REMESH_ELEMENTS_HEADER
30 #define OOMPH_PSEUDO_SOLID_REMESH_ELEMENTS_HEADER
39 namespace PseudoSolidHelper
54 template<
class BASIC,
class SOLID>
82 BASIC::describe_local_dofs(
out, current_string);
83 SOLID::describe_local_dofs(
out, current_string);
90 BASIC::compute_norm(el_norm);
96 return BASIC::required_nvalue(
n) + SOLID::required_nvalue(
n);
106 if (SOLID::solid_p_nodal_index() >= 0)
108 throw OomphLibError(
"Cannot handle (non-refineable) continuous solid "
109 "pressure interpolation",
114 return SOLID::solid_p_nodal_index();
150 residuals, jacobian, mass_matrix);
153 residuals, jacobian, mass_matrix);
186 const unsigned n_dof = this->ndof();
187 const unsigned n_node = this->nnode();
188 const unsigned nodal_dim = this->nodal_dimension();
191 if ((n_dof == 0) || (n_node == 0))
197 if (this->nnodal_position_type() != 1)
199 throw OomphLibError(
"Shape derivatives do not (yet) allow for "
200 "generalised position dofs\n",
207 n_dof, nodal_dim, n_node, 0.0);
210 BASIC::get_dresidual_dnodal_coordinates(dresidual_dnodal_coordinates);
213 int local_unknown = 0;
218 for (
unsigned l = 0; l < n_dof; l++)
221 for (
unsigned n = 0;
n < n_node;
n++)
226 for (
unsigned i = 0;
i < nodal_dim;
i++)
229 local_unknown = this->position_local_eqn(
n,
k,
i);
232 if (local_unknown >= 0)
234 jacobian(l, local_unknown) +=
235 dresidual_dnodal_coordinates(l,
i,
n);
252 const unsigned n_node = this->nnode();
262 this->update_before_solid_position_fd();
265 const unsigned n_position_type = this->nnodal_position_type();
266 const unsigned nodal_dim = this->nodal_dimension();
269 const unsigned n_dof = this->ndof();
280 for (
unsigned m = 0;
m < n_dof;
m++)
290 std::vector<bool> dof_is_solid(n_dof,
false);
293 for (
unsigned n = 0;
n < n_node;
n++)
295 for (
unsigned k = 0;
k < n_position_type;
k++)
297 for (
unsigned i = 0;
i < nodal_dim;
i++)
299 int local_dof = this->position_local_eqn(
n,
k,
i);
302 dof_is_solid[local_dof] =
true;
310 unsigned n_solid_pres = this->npres_solid();
311 for (
unsigned l = 0; l < n_solid_pres; l++)
313 int local_dof = this->solid_p_local_eqn(l);
316 dof_is_solid[local_dof] =
true;
322 int local_unknown = 0;
325 const double fd_step = this->Default_fd_jacobian_step;
328 for (
unsigned n = 0;
n < n_node;
n++)
331 for (
unsigned k = 0;
k < n_position_type;
k++)
334 for (
unsigned i = 0;
i < nodal_dim;
i++)
337 local_unknown = this->position_local_eqn(
n,
k,
i);
338 if (local_unknown >= 0)
341 double*
const value_pt = &(this->node_pt(
n)->x_gen(
k,
i));
344 const double old_var = *value_pt;
347 *value_pt += fd_step;
350 this->node_pt(
n)->perform_auxiliary_node_update_fct();
356 for (
unsigned m = 0;
m < n_dof;
m++)
365 for (
unsigned m = 0;
m < n_dof;
m++)
369 if (dof_is_solid[
m] ==
false)
371 jacobian(
m, local_unknown) =
372 (newres[
m] - residuals[
m]) / fd_step;
399 this->node_pt(
n)->perform_auxiliary_node_update_fct();
407 this->reset_after_solid_position_fd();
418 const unsigned n_node = this->nnode();
419 for (
unsigned j = 0;
j < n_node;
j++)
421 geometric_data_pt.insert(
422 dynamic_cast<SolidNode*
>(this->node_pt(
j))->variable_position_pt());
435 void output(std::ostream& outfile,
const unsigned& n_p)
447 void output(FILE* file_pt,
const unsigned& n_p)
456 return BASIC::num_Z2_flux_terms();
464 std::ostream& outfile,
469 BASIC::compute_exact_Z2_error(outfile, exact_flux_pt,
error, norm);
482 return BASIC::nvertex_node();
488 return BASIC::vertex_node_pt(
j);
495 return BASIC::nrecovery_order();
503 return BASIC::ndof_types() + SOLID::ndof_types();
510 return BASIC::ndof_types();
517 return SOLID::ndof_types();
529 std::list<std::pair<unsigned long, unsigned>>& dof_lookup_list)
const
532 std::list<std::pair<unsigned long, unsigned>> solid_list;
533 SOLID::get_dof_numbers_for_unknowns(solid_list);
536 BASIC::get_dof_numbers_for_unknowns(dof_lookup_list);
543 typedef std::list<std::pair<unsigned long, unsigned>>::iterator IT;
544 for (IT it = solid_list.begin(); it != solid_list.end(); it++)
546 std::pair<unsigned long, unsigned> new_pair;
547 new_pair.first = it->first;
549 dof_lookup_list.push_front(new_pair);
555 template<
class BASIC,
class SOLID>
566 template<
class BASIC,
class SOLID>
582 template<
class BASIC,
class SOLID>
606 BASIC::describe_local_dofs(
out, current_string);
607 SOLID::describe_local_dofs(
out, current_string);
613 return BASIC::required_nvalue(
n) + SOLID::required_nvalue(
n);
620 return BASIC::ncont_interpolated_values() +
621 SOLID::ncont_interpolated_values();
630 int solid_p_index = SOLID::solid_p_nodal_index();
633 if (solid_p_index >= 0)
635 return BASIC::ncont_interpolated_values() +
636 SOLID::solid_p_nodal_index();
640 return solid_p_index;
678 residuals, jacobian, mass_matrix);
681 residuals, jacobian, mass_matrix);
694 const unsigned n_node = this->nnode();
704 this->update_before_solid_position_fd();
709 const unsigned n_position_type = this->nnodal_position_type();
710 const unsigned nodal_dim = this->nodal_dimension();
713 const unsigned n_dof = this->ndof();
724 for (
unsigned m = 0;
m < n_dof;
m++)
734 std::vector<bool> dof_is_solid(n_dof,
false);
739 for (
unsigned n = 0;
n < n_node;
n++)
742 Node*
const local_node_pt = this->node_pt(
n);
747 for (
unsigned k = 0;
k < n_position_type;
k++)
749 for (
unsigned i = 0;
i < nodal_dim;
i++)
751 int local_dof = this->position_local_eqn(
n,
k,
i);
754 dof_is_solid[local_dof] =
true;
765 const unsigned n_master = hang_info_pt->
nmaster();
766 for (
unsigned m = 0;
m < n_master;
m++)
773 for (
unsigned k = 0;
k < n_position_type;
k++)
776 for (
unsigned i = 0;
i < nodal_dim;
i++)
778 int local_dof = Position_local_eqn_at_node(
k,
i);
781 dof_is_solid[local_dof] =
true;
791 unsigned n_solid_pres = this->npres_solid();
795 std::vector<bool> solid_p_is_hanging(n_solid_pres);
797 if (solid_p_index >= 0)
800 for (
unsigned l = 0; l < n_solid_pres; l++)
802 solid_p_is_hanging[l] =
803 this->solid_pressure_node_pt(l)->is_hanging(solid_p_index);
809 for (
unsigned l = 0; l < n_solid_pres; l++)
811 solid_p_is_hanging[l] =
false;
817 for (
unsigned l = 0; l < n_solid_pres; l++)
821 if (solid_p_is_hanging[l] ==
false)
823 int local_dof = this->solid_p_local_eqn(l);
826 dof_is_solid[local_dof] =
true;
835 this->solid_pressure_node_pt(l)->hanging_pt(solid_p_index);
837 const unsigned n_master = hang_info_pt->
nmaster();
838 for (
unsigned m = 0;
m < n_master;
m++)
841 int local_dof = this->local_hang_eqn(
846 dof_is_solid[local_dof] =
true;
854 const double fd_step = this->Default_fd_jacobian_step;
857 int local_unknown = 0;
860 for (
unsigned l = 0; l < n_node; l++)
863 Node*
const local_node_pt = this->node_pt(l);
869 for (
unsigned k = 0;
k < n_position_type;
k++)
872 for (
unsigned i = 0;
i < nodal_dim;
i++)
874 local_unknown = this->position_local_eqn(l,
k,
i);
876 if (local_unknown >= 0)
879 double*
const value_pt = &(local_node_pt->
x_gen(
k,
i));
883 const double old_var = *value_pt;
886 *value_pt += fd_step;
895 for (
unsigned m = 0;
m < n_dof;
m++)
905 for (
unsigned m = 0;
m < n_dof;
m++)
909 if (dof_is_solid[
m] ==
false)
911 jacobian(
m, local_unknown) =
912 (newres[
m] - residuals[
m]) / fd_step;
950 const unsigned n_master = hang_info_pt->
nmaster();
951 for (
unsigned m = 0;
m < n_master;
m++)
958 this->local_position_hang_eqn(master_node_pt);
961 for (
unsigned k = 0;
k < n_position_type;
k++)
964 for (
unsigned i = 0;
i < nodal_dim;
i++)
966 local_unknown = Position_local_eqn_at_node(
k,
i);
968 if (local_unknown >= 0)
972 double*
const value_pt = &(master_node_pt->
x_gen(
k,
i));
976 const double old_var = *value_pt;
979 *value_pt += fd_step;
988 for (
unsigned m = 0;
m < n_dof;
m++)
997 for (
unsigned m = 0;
m < n_dof;
m++)
1001 if (dof_is_solid[
m] ==
false)
1003 jacobian(
m, local_unknown) =
1004 (newres[
m] - residuals[
m]) / fd_step;
1031 *value_pt = old_var;
1046 this->reset_after_solid_position_fd();
1057 const unsigned n_node = this->nnode();
1058 for (
unsigned j = 0;
j < n_node;
j++)
1061 if (this->node_pt(
j)->is_hanging())
1064 HangInfo* hang_info_pt = this->node_pt(
j)->hanging_pt();
1067 unsigned n_master = hang_info_pt->
nmaster();
1070 for (
unsigned m = 0;
m < n_master;
m++)
1076 geometric_data_pt.insert(
1077 dynamic_cast<SolidNode*
>(Master_node_pt)->variable_position_pt());
1084 geometric_data_pt.insert(
1085 dynamic_cast<SolidNode*
>(this->node_pt(
j))->variable_position_pt());
1095 BASIC::assign_additional_local_eqn_numbers();
1096 SOLID::assign_additional_local_eqn_numbers();
1102 BASIC::rebuild_from_sons(mesh_pt);
1103 SOLID::rebuild_from_sons(mesh_pt);
1113 BASIC::get_interpolated_values(
t,
s, basic_values);
1115 SOLID::get_interpolated_values(
t,
s, solid_values);
1119 it != basic_values.end();
1122 values.push_back(*it);
1126 it != solid_values.end();
1129 values.push_back(*it);
1140 BASIC::get_interpolated_values(
s, basic_values);
1142 SOLID::get_interpolated_values(
s, solid_values);
1146 it != basic_values.end();
1149 values.push_back(*it);
1153 it != solid_values.end();
1156 values.push_back(*it);
1165 int n_basic_values = BASIC::ncont_interpolated_values();
1167 if (value_id < n_basic_values)
1169 return BASIC::interpolating_node_pt(
n, value_id);
1175 return SOLID::interpolating_node_pt(
n, (value_id - n_basic_values));
1183 const int& value_id)
1186 int n_basic_values = BASIC::ncont_interpolated_values();
1188 if (value_id < n_basic_values)
1190 return BASIC::local_one_d_fraction_of_interpolating_node(
1197 return SOLID::local_one_d_fraction_of_interpolating_node(
1198 n1d,
i, (value_id - n_basic_values));
1208 const int& value_id)
1211 int n_basic_values = BASIC::ncont_interpolated_values();
1213 if (value_id < n_basic_values)
1215 return BASIC::get_interpolating_node_at_local_coordinate(
s, value_id);
1221 return SOLID::get_interpolating_node_at_local_coordinate(
1222 s, (value_id - n_basic_values));
1231 int n_basic_values = BASIC::ncont_interpolated_values();
1233 if (value_id < n_basic_values)
1235 return BASIC::ninterpolating_node_1d(value_id);
1241 return SOLID::ninterpolating_node_1d((value_id - n_basic_values));
1250 int n_basic_values = BASIC::ncont_interpolated_values();
1252 if (value_id < n_basic_values)
1254 return BASIC::ninterpolating_node(value_id);
1260 return SOLID::ninterpolating_node((value_id - n_basic_values));
1268 const int& value_id)
const
1271 int n_basic_values = BASIC::ncont_interpolated_values();
1273 if (value_id < n_basic_values)
1275 return BASIC::interpolating_basis(
s, psi, value_id);
1281 return SOLID::interpolating_basis(
s, psi, (value_id - n_basic_values));
1290 return BASIC::num_Z2_flux_terms();
1305 BASIC::further_setup_hanging_nodes();
1306 SOLID::further_setup_hanging_nodes();
1314 bool& was_already_built,
1315 std::ofstream& new_nodes_file)
1317 SOLID::build(mesh_pt, new_node_pt, was_already_built, new_nodes_file);
1325 bool& was_already_built)
1327 SOLID::build(mesh_pt, new_node_pt, was_already_built);
1334 BASIC::further_build();
1335 SOLID::further_build();
1342 return BASIC::nvertex_node();
1348 return BASIC::vertex_node_pt(
j);
1354 BASIC::compute_norm(norm);
1361 std::ostream& outfile,
1366 BASIC::compute_exact_Z2_error(outfile, exact_flux_pt,
error, norm);
1373 return BASIC::nrecovery_order();
1383 void output(std::ostream& outfile,
const unsigned& n_p)
1395 void output(FILE* file_pt,
const unsigned& n_p)
1404 return BASIC::ndof_types() + SOLID::ndof_types();
1411 return BASIC::ndof_types();
1418 return SOLID::ndof_types();
1430 std::list<std::pair<unsigned long, unsigned>>& dof_lookup_list)
const
1433 std::list<std::pair<unsigned long, unsigned>> solid_list;
1434 SOLID::get_dof_numbers_for_unknowns(solid_list);
1437 BASIC::get_dof_numbers_for_unknowns(dof_lookup_list);
1444 typedef std::list<std::pair<unsigned long, unsigned>>::iterator IT;
1445 for (IT it = solid_list.begin(); it != solid_list.end(); it++)
1447 std::pair<unsigned long, unsigned> new_pair;
1448 new_pair.first = it->first;
1450 dof_lookup_list.push_front(new_pair);
1457 template<
class BASIC,
class SOLID>
1470 template<
class BASIC,
class SOLID>
int i
Definition: BiCGSTAB_step_by_step.cpp:9
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
FaceGeometry()
Definition: pseudosolid_node_update_elements.h:573
FaceGeometry()
Definition: pseudosolid_node_update_elements.h:1478
FaceGeometry()
Definition: pseudosolid_node_update_elements.h:562
FaceGeometry()
Definition: pseudosolid_node_update_elements.h:1464
Definition: elements.h:4998
void(* SteadyExactSolutionFctPt)(const Vector< double > &, Vector< double > &)
Definition: elements.h:1759
Node *const & master_node_pt(const unsigned &i) const
Return a pointer to the i-th master node.
Definition: nodes.h:791
unsigned nmaster() const
Return the number of master nodes.
Definition: nodes.h:785
double & x_gen(const unsigned &k, const unsigned &i)
Definition: nodes.h:1126
HangInfo *const & hanging_pt() const
Definition: nodes.h:1228
void perform_auxiliary_node_update_fct()
Definition: nodes.h:1615
bool is_hanging() const
Test whether the node is geometrically hanging.
Definition: nodes.h:1285
Definition: oomph_definitions.h:222
Definition: pseudosolid_node_update_elements.h:58
bool Shape_derivs_by_direct_fd
Boolean flag to indicate shape derivative method.
Definition: pseudosolid_node_update_elements.h:60
void fill_in_contribution_to_residuals(Vector< double > &residuals)
Definition: pseudosolid_node_update_elements.h:119
void describe_local_dofs(std::ostream &out, const std::string ¤t_string) const
Definition: pseudosolid_node_update_elements.h:79
void compute_exact_Z2_error(std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_flux_pt, double &error, double &norm)
Definition: pseudosolid_node_update_elements.h:463
unsigned required_nvalue(const unsigned &n) const
The required number of values is the sum of the two.
Definition: pseudosolid_node_update_elements.h:94
unsigned nsolid_dof_types() const
Definition: pseudosolid_node_update_elements.h:515
void fill_in_shape_derivatives(DenseMatrix< double > &jacobian)
Definition: pseudosolid_node_update_elements.h:175
void output(std::ostream &outfile, const unsigned &n_p)
Definition: pseudosolid_node_update_elements.h:435
void output(std::ostream &outfile)
Overload the output function: Call that of the basic element.
Definition: pseudosolid_node_update_elements.h:428
void compute_norm(double &el_norm)
Definition: pseudosolid_node_update_elements.h:88
unsigned nrecovery_order()
Definition: pseudosolid_node_update_elements.h:493
void get_Z2_flux(const Vector< double > &s, Vector< double > &flux)
Definition: pseudosolid_node_update_elements.h:474
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Definition: pseudosolid_node_update_elements.h:129
Node * vertex_node_pt(const unsigned &j) const
Pointer to the j-th vertex node in the element.
Definition: pseudosolid_node_update_elements.h:486
void fill_in_shape_derivatives_by_fd(DenseMatrix< double > &jacobian)
Definition: pseudosolid_node_update_elements.h:246
unsigned nbasic_dof_types() const
Definition: pseudosolid_node_update_elements.h:508
unsigned nvertex_node() const
Number of vertex nodes in the element.
Definition: pseudosolid_node_update_elements.h:480
void evaluate_shape_derivs_by_chain_rule()
Evaluate shape derivatives by chain rule.
Definition: pseudosolid_node_update_elements.h:167
void fill_in_contribution_to_jacobian_and_mass_matrix(Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
Definition: pseudosolid_node_update_elements.h:143
void output(FILE *file_pt, const unsigned &n_p)
Output function is just the same as the basic equations.
Definition: pseudosolid_node_update_elements.h:447
void evaluate_shape_derivs_by_direct_fd()
Evaluate shape derivatives by direct finite differencing.
Definition: pseudosolid_node_update_elements.h:161
int solid_p_nodal_index() const
Definition: pseudosolid_node_update_elements.h:102
unsigned num_Z2_flux_terms()
Definition: pseudosolid_node_update_elements.h:454
void output(FILE *file_pt)
Overload the output function: Call that of the basic element.
Definition: pseudosolid_node_update_elements.h:441
void identify_geometric_data(std::set< Data * > &geometric_data_pt)
Definition: pseudosolid_node_update_elements.h:415
void get_dof_numbers_for_unknowns(std::list< std::pair< unsigned long, unsigned >> &dof_lookup_list) const
Definition: pseudosolid_node_update_elements.h:528
unsigned ndof_types() const
Definition: pseudosolid_node_update_elements.h:501
PseudoSolidNodeUpdateElement()
Definition: pseudosolid_node_update_elements.h:65
A Rank 3 Tensor class.
Definition: matrices.h:1370
Definition: refineable_elements.h:97
Refineable version of the PseudoSolidNodeUpdateELement.
Definition: pseudosolid_node_update_elements.h:585
unsigned nbasic_dof_types() const
Definition: pseudosolid_node_update_elements.h:1409
void get_interpolated_values(const Vector< double > &s, Vector< double > &values)
Definition: pseudosolid_node_update_elements.h:1136
unsigned ndof_types() const
Definition: pseudosolid_node_update_elements.h:1402
void get_interpolated_values(const unsigned &t, const Vector< double > &s, Vector< double > &values)
Definition: pseudosolid_node_update_elements.h:1108
Node * get_interpolating_node_at_local_coordinate(const Vector< double > &s, const int &value_id)
Definition: pseudosolid_node_update_elements.h:1207
void further_build()
Definition: pseudosolid_node_update_elements.h:1332
Node * interpolating_node_pt(const unsigned &n, const int &value_id)
Definition: pseudosolid_node_update_elements.h:1162
void output(FILE *file_pt)
Overload the output function: Use that of the BASIC element.
Definition: pseudosolid_node_update_elements.h:1389
void compute_norm(double &norm)
Compute norm of solution. Use version in BASIC element.
Definition: pseudosolid_node_update_elements.h:1352
unsigned nvertex_node() const
Number of vertex nodes in the element.
Definition: pseudosolid_node_update_elements.h:1340
void fill_in_contribution_to_residuals(Vector< double > &residuals)
Definition: pseudosolid_node_update_elements.h:646
unsigned nrecovery_order()
Definition: pseudosolid_node_update_elements.h:1371
void output(std::ostream &outfile, const unsigned &n_p)
Output function, plotting at n_p points: Use that of the BASIC element.
Definition: pseudosolid_node_update_elements.h:1383
unsigned ncont_interpolated_values() const
Definition: pseudosolid_node_update_elements.h:618
int solid_p_nodal_index() const
Definition: pseudosolid_node_update_elements.h:627
unsigned nsolid_dof_types() const
Definition: pseudosolid_node_update_elements.h:1416
void interpolating_basis(const Vector< double > &s, Shape &psi, const int &value_id) const
Definition: pseudosolid_node_update_elements.h:1266
void compute_exact_Z2_error(std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_flux_pt, double &error, double &norm)
Definition: pseudosolid_node_update_elements.h:1360
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Definition: pseudosolid_node_update_elements.h:656
unsigned num_Z2_flux_terms()
Definition: pseudosolid_node_update_elements.h:1288
void get_dof_numbers_for_unknowns(std::list< std::pair< unsigned long, unsigned >> &dof_lookup_list) const
Definition: pseudosolid_node_update_elements.h:1429
RefineablePseudoSolidNodeUpdateElement()
Definition: pseudosolid_node_update_elements.h:589
void build(Mesh *&mesh_pt, Vector< Node * > &new_node_pt, bool &was_already_built)
Definition: pseudosolid_node_update_elements.h:1323
unsigned ninterpolating_node_1d(const int &value_id)
Definition: pseudosolid_node_update_elements.h:1228
void fill_in_contribution_to_jacobian_and_mass_matrix(Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
Definition: pseudosolid_node_update_elements.h:671
void further_setup_hanging_nodes()
Definition: pseudosolid_node_update_elements.h:1303
void output(std::ostream &outfile)
Overload the output function: Use that of the BASIC element.
Definition: pseudosolid_node_update_elements.h:1377
double local_one_d_fraction_of_interpolating_node(const unsigned &n1d, const unsigned &i, const int &value_id)
Definition: pseudosolid_node_update_elements.h:1181
void output(FILE *file_pt, const unsigned &n_p)
Output function: Use that of the BASIC element.
Definition: pseudosolid_node_update_elements.h:1395
void build(Mesh *&mesh_pt, Vector< Node * > &new_node_pt, bool &was_already_built, std::ofstream &new_nodes_file)
Definition: pseudosolid_node_update_elements.h:1312
void assign_additional_local_eqn_numbers()
Definition: pseudosolid_node_update_elements.h:1093
unsigned ninterpolating_node(const int &value_id)
Definition: pseudosolid_node_update_elements.h:1247
Node * vertex_node_pt(const unsigned &j) const
Pointer to the j-th vertex node in the element.
Definition: pseudosolid_node_update_elements.h:1346
void rebuild_from_sons(Mesh *&mesh_pt)
Call rebuild_from_sons() for both of the underlying element types.
Definition: pseudosolid_node_update_elements.h:1100
void fill_in_shape_derivatives_by_fd(DenseMatrix< double > &jacobian)
Definition: pseudosolid_node_update_elements.h:691
void get_Z2_flux(const Vector< double > &s, Vector< double > &flux)
Definition: pseudosolid_node_update_elements.h:1295
void describe_local_dofs(std::ostream &out, const std::string ¤t_string) const
Definition: pseudosolid_node_update_elements.h:603
unsigned required_nvalue(const unsigned &n) const
The required number of values is the sum of the two.
Definition: pseudosolid_node_update_elements.h:611
void identify_geometric_data(std::set< Data * > &geometric_data_pt)
Definition: pseudosolid_node_update_elements.h:1054
RealScalar s
Definition: level1_cplx_impl.h:130
int * m
Definition: level2_cplx_impl.h:294
char char char int int * k
Definition: level2_impl.h:374
void flux(const double &time, const Vector< double > &x, double &flux)
Get flux applied along boundary x=0.
Definition: pretend_melt.cc:59
int error
Definition: calibrate.py:297
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286
double Zero
Definition: pseudosolid_node_update_elements.cc:35
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
void fill_in_contribution_to_jacobian_and_mass_matrix(Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
Definition: gen_axisym_advection_diffusion_elements.h:547
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
t
Definition: plotPSD.py:36
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86
void get_Z2_flux(const Vector< double > &s, Vector< double > &flux)
Get 'flux' for Z2 error recovery.
Definition: overloaded_element_body.h:745
void output(std::ostream &outfile, const unsigned &nplot)
Overload output function.
Definition: overloaded_element_body.h:490
std::ofstream out("Result.txt")
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2