an efficient C++ finite element environment
|
|
The Oldroyd problem by the theta-scheme – class body
template <class P>
{
update_transport_stress (uh0);
field gamma_h = inv_mt*(th*tau_h0 - thb);
+
b*(c1*tau_h0 +
c2*gamma_h);
ph = ph0;
uh.set_u() = uh0.u();
stokes.solve (
lh,
field(Qh,0), uh, ph);
tau_h = c1*tau_h0 +
c2*gamma_h + 2*c3*Duh;
}
template <class P>
{
uh = (1-theta)/theta*uh1 - (1-2*theta)/theta*uh0;
if (We == 0) {
return;
}
update_transport_stress (uh);
typename P::tau_upstream tau_up (Th.get_geo(), We,
alpha);
transport.solve (
lh, tau_h);
}
template <class P>
void
typename P::tau_upstream tau_up (Th.get_geo(), We,
alpha);
auto beta_a = tau*ma +
trans(ma)*tau;
}
Float alpha[pmax+1][pmax+1]
see the field page for the full documentation
details::field_expr_v2_nonlinear_terminal_function< details::normal_pseudo_function< Float > > normal()
normal: see the expression 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
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 grad(const Expr &expr)
grad(uh): see the expression page for the full documentation
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 test page for the full documentation
see the problem 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.
void sub_step2(const field &uh0, const field &tau_h1, const field &uh1, field &tau_h, field &uh) const
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 grad_h(const Expr &expr)
grad_h(uh): see the expression page for the full documentation
see the test page for the full documentation
csr< T, sequential > trans(const csr< T, sequential > &a)
trans(a): see the form page for the full documentation
void sub_step1(const field &tau_h0, const field &uh0, const field &ph0, field &tau_h, field &uh, field &ph) const
void update_transport_stress(const field &uh) const