26 #ifndef OOMPH_MY_TAYLOR_HOOD_ELEMENTS
27 #define OOMPH_MY_TAYLOR_HOOD_ELEMENTS
36 public virtual PseudoSolidNodeUpdateElement<TTaylorHoodElement<2>,
59 std::string txt=
"VARIABLES=";
86 const unsigned &nplot)
93 Vector<double> s(el_dim);
96 Vector<double> dudt(el_dim);
99 Vector<double> mesh_veloc(el_dim,0.0);
102 outfile << tecplot_zone_string(nplot);
105 unsigned n_node = nnode();
109 DShape dpsifdx(n_node,el_dim);
112 unsigned num_plot_points=nplot_points(nplot);
113 for (
unsigned iplot=0;iplot<num_plot_points;iplot++)
117 get_s_plot(iplot,nplot,s);
120 dshape_eulerian(s,psif,dpsifdx);
123 Vector<double> mesh_veloc(el_dim);
124 Vector<double> dudt(el_dim);
125 Vector<double> dudt_ALE(el_dim);
126 DenseMatrix<double> interpolated_dudx(el_dim,el_dim);
129 for(
unsigned i=0;i<el_dim;i++)
134 for(
unsigned j=0;j<el_dim;j++)
136 interpolated_dudx(i,j) = 0.0;
143 for(
unsigned i=0;i<el_dim;i++)
146 unsigned u_nodal_index = u_index_nst(i);
148 for(
unsigned l=0;l<n_node;l++)
150 dudt[i]+=du_dt_nst(l,u_nodal_index)*psif[l];
151 mesh_veloc[i]+=dnodal_position_dt(l,i)*psif[l];
154 for(
unsigned j=0;j<el_dim;j++)
156 interpolated_dudx(i,j) += nodal_value(l,u_nodal_index)*
164 for(
unsigned i=0;i<el_dim;i++)
167 for (
unsigned k=0;k<el_dim;k++)
169 dudt_ALE[i]-=mesh_veloc[k]*interpolated_dudx(i,k);
175 for(
unsigned i=0;i<el_dim;i++)
177 outfile << interpolated_x(s,i) <<
" ";
181 for(
unsigned i=0;i<el_dim;i++)
183 outfile << interpolated_u_nst(s,i) <<
" ";
187 outfile << interpolated_p_nst(s) <<
" ";
190 for(
unsigned i=0;i<el_dim;i++)
192 outfile << dudt_ALE[i] <<
" ";
196 for(
unsigned i=0;i<el_dim;i++)
198 outfile << mesh_veloc[i] <<
" ";
202 unsigned n_prev=node_pt(0)->position_time_stepper_pt()->ntstorage();
203 for (
unsigned t=1;t<n_prev;t++)
205 for(
unsigned i=0;i<el_dim;i++)
207 outfile << interpolated_x(t,s,i) <<
" ";
212 n_prev=node_pt(0)->time_stepper_pt()->ntstorage();
213 for (
unsigned t=1;t<n_prev;t++)
215 for(
unsigned i=0;i<el_dim;i++)
217 outfile << interpolated_u_nst(t,s,i) <<
" ";
221 outfile <<
Error <<
" "
222 << size() << std::endl;
226 write_tecplot_zone_footer(outfile,nplot);
240 unsigned n_node = nnode();
243 unsigned u_nodal_index[el_dim];
244 for(
unsigned i=0;i<el_dim;i++) {u_nodal_index[i] = u_index_nst(i);}
248 DShape dpsidx(n_node,el_dim);
251 unsigned n_intpt = integral_pt()->nweight();
254 Vector<double> s(el_dim);
257 for(
unsigned ipt=0;ipt<n_intpt;ipt++)
260 for(
unsigned i=0;i<el_dim;i++) s[i] = integral_pt()->knot(ipt,i);
263 double w = integral_pt()->weight(ipt);
267 double J = this->dshape_eulerian_at_knot(ipt,psif,dpsidx);
273 Vector<double> interpolated_u(el_dim,0.0);
276 for(
unsigned l=0;l<n_node;l++)
279 for(
unsigned i=0;i<el_dim;i++)
282 double u_value = raw_nodal_value(l,u_nodal_index[i]);
283 interpolated_u[i] += u_value*psif[l];
288 for(
unsigned i=0;i<el_dim;i++)
290 sum+=interpolated_u[i]*interpolated_u[i]*W;
310 :
public virtual SolidTElement<1,3>
322 :
public virtual PointElement
Overload TaylorHood element to modify output.
double Error
Storage for elemental error estimate – used for post-processing.
std::string variable_identifier()
Return variable identifier.
void output(std::ostream &outfile, const unsigned &nplot)
Overload output function.
MyTaylorHoodElement()
Constructor initialise error.
double square_of_l2_norm()
Get square of L2 norm of velocity.
void set_error(const double &error)
Set error value for post-processing.