38 template<
unsigned SPATIAL_DIM,
unsigned NNODE_1D>
41 std::list<std::pair<unsigned long, unsigned>>& dof_lookup_list)
const
44 unsigned n_node = this->nnode();
47 std::pair<unsigned, unsigned> dof_lookup;
53 for (
unsigned i = NNODE_1D * NNODE_1D;
i < n_node;
i++)
56 unsigned i_temporal = 0;
59 unsigned i_spatial =
i % (NNODE_1D * NNODE_1D);
62 i_temporal = (
i - i_spatial) / (NNODE_1D * NNODE_1D);
65 unsigned u_nodal_index = this->u_index_ust_heat();
68 int local_eqn_number = this->nodal_local_eqn(
i, u_nodal_index);
73 if (local_eqn_number >= 0)
77 if (i_temporal != NNODE_1D - 1)
80 std::ostringstream error_message_stream;
83 error_message_stream <<
"All nodes strictly on the interior of the "
84 <<
"elements temporal boundaries\nshould be "
85 <<
"pinned in the mixed order element!"
90 OOMPH_CURRENT_FUNCTION,
91 OOMPH_EXCEPTION_LOCATION);
96 dof_lookup.first = this->eqn_number(local_eqn_number);
99 dof_lookup.second = (this->Time_slab_id);
102 dof_lookup_list.push_front(dof_lookup);
111 template<
unsigned SPATIAL_DIM,
unsigned NNODE_1D>
114 get_dof_numbers_for_unknowns(
115 std::list<std::pair<unsigned long, unsigned>>& dof_lookup_list)
const
118 unsigned n_node = this->nnode();
121 std::pair<unsigned, unsigned> dof_lookup;
127 for (
unsigned i = NNODE_1D * NNODE_1D;
i < n_node;
i++)
130 unsigned i_temporal = 0;
133 unsigned i_spatial =
i % (NNODE_1D * NNODE_1D);
136 i_temporal = (
i - i_spatial) / (NNODE_1D * NNODE_1D);
139 unsigned u_nodal_index = this->u_index_ust_heat();
142 int local_eqn_number = this->nodal_local_eqn(
i, u_nodal_index);
147 if (local_eqn_number >= 0)
151 if (i_temporal != NNODE_1D - 1)
154 std::ostringstream error_message_stream;
157 error_message_stream <<
"All nodes strictly on the interior of the "
158 <<
"elements temporal boundaries\nshould be "
159 <<
"pinned in the mixed order element!"
164 OOMPH_CURRENT_FUNCTION,
165 OOMPH_EXCEPTION_LOCATION);
170 dof_lookup.first = this->eqn_number(local_eqn_number);
173 dof_lookup.second = (this->Time_slab_id);
176 dof_lookup_list.push_front(dof_lookup);
Block preconditionable version of UnsteadyHeatMixedOrderSpaceTimeElement.
void get_dof_numbers_for_unknowns(std::list< std::pair< unsigned long, unsigned >> &dof_lookup_list) const
Overload the pure virtual base class implementation. Create a list of pairs for all unknowns in this ...
Block preconditionable version of UnsteadyHeatSpaceTimeElement.
An OomphLibError object which should be thrown when an run-time error is encountered....
//////////////////////////////////////////////////////////////////// ////////////////////////////////...