an efficient C++ finite element environment
|
|
Go to the documentation of this file.
28 size_t& max_iter,
Float& tol, odiststream *p_derr=0) {
29 const space& Xh = uh.get_space();
30 const space& Qh = ph.get_space();
31 string label =
"navier-stokes-" + Xh.get_geo().name();
32 integrate_option iopt;
33 iopt.set_family(integrate_option::gauss_lobatto);
34 iopt.set_order(Xh.degree());
41 if (p_derr != 0) *p_derr <<
"[" << label <<
"] #n |du/dt|" << endl;
43 for (
size_t n = 0;
true;
n++) {
46 field uh_star = 2.0*uh1 - uh2;
51 field lh = l0h + (Re/delta_t)*(2*l1h - 0.5*l2h);
52 stokes.solve (
lh,
field(Qh,0), uh, ph);
53 field duh_dt = (3*uh - 4*uh1 + uh2)/(2*delta_t);
54 Float residual = sqrt(
m(duh_dt,duh_dt));
55 if (p_derr != 0) *p_derr <<
"[" << label <<
"] "<<
n <<
" " << residual << endl;
61 if (
n == max_iter-1) {
std::enable_if< details::is_field_convertible< Expr >::value,details::field_expr_v2_nonlinear_terminal_field< typename Expr::scalar_type,typename Expr::memory_type,details::differentiate_option::divergence >>::type div(const Expr &expr)
div(uh): see the expression page for the full documentation
see the field page for the full documentation
std::enable_if< details::is_field_expr_v2_nonlinear_arg< Expr >::value &&! is_undeterminated< Result >::value, Result >::type integrate(const geo_basic< T, M > &omega, const Expr &expr, const integrate_option &iopt, Result dummy=Result())
see the integrate page for the full documentation
see the problem_mixed page for the full documentation
see the space page for the full documentation
class rheolef::details::field_expr_v2_nonlinear_node_unary compose
int navier_stokes_solve(Float Re, Float delta_t, field l0h, field &uh, field &ph, size_t &max_iter, Float &tol, odiststream *p_derr=0)
T ddot(const tensor_basic< T > &a, const tensor_basic< T > &b)
ddot(x,y): see the expression page for the full documentation
rheolef::details::is_vec dot
field lh(Float epsilon, Float t, const test &v)
see the characteristic page for the full documentation
see the test page for the full documentation
see the Float page for the full documentation
std::enable_if< details::is_field_convertible< Expr >::value,details::field_expr_v2_nonlinear_terminal_field< typename Expr::scalar_type,typename Expr::memory_type,details::differentiate_option::gradient >>::type D(const Expr &expr)
D(uh): see the expression page for the full documentation.
see the test page for the full documentation