Rheolef  7.1
an efficient C++ finite element environment
oldroyd_theta_scheme1.h

The Oldroyd problem by the theta-scheme – class body

template<class P>
: We(0), alpha(8./9), a(1), Re(1), delta_t(0.025), tol(1e-6), max_iter(500),
Th(), Xh(), Qh(), b(), c(), d(), mt(), inv_mt(), mu(), mp(), th(), thb(),
theta(), lambda(), eta(), nu(), c1(), c2(), c3(), c4(), c5(), stokes() {}
template<class P>
void oldroyd_theta_scheme<P>::reset(const geo& omega) {
Th = space (omega, "P1d", "tensor");
Xh = P::velocity_space (omega, "P2");
Qh = space (omega, "P1d");
theta = 1-1/sqrt(2.);
lambda = Re/(theta*delta_t);
eta = ((1 - alpha)*We + theta*delta_t)/(We + theta*delta_t);
nu = 1/((1-2*theta)*delta_t);
c1 = We/(We + theta*delta_t);
c2 = - We*theta*delta_t/(We + theta*delta_t);
c3 = alpha*theta*delta_t/(We + theta*delta_t);
c4 = 1/((1-2*theta)*delta_t) - 1/We;
c5 = alpha/We;
trial u (Xh), tau(Th), p (Qh);
test v (Xh), xi (Th), q (Qh);
mt = integrate (ddot(tau,xi));
mu = integrate (dot(u,v));
mp = integrate (p*q);
integrate_option iopt;
iopt.invert = true;
inv_mt = integrate (ddot(tau,xi), iopt);
b = integrate (-ddot(tau,D(v)));
c = integrate (lambda*dot(u,v) + 2*eta*ddot(D(u),D(v)));
d = integrate (-div(u)*q);
stokes = problem_mixed (c, d);
stokes.set_metric (mp);
}
rheolef::div
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
Definition: field_expr_terminal.h:1031
bdf::alpha
Float alpha[pmax+1][pmax+1]
Definition: bdf.icc:28
mkgeo_ball.b
int b
Definition: mkgeo_ball.sh:152
mkgeo_contraction.c2
c2
Definition: mkgeo_contraction.sh:199
nu
Definition: nu.h:26
rheolef::integrate
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
Definition: integrate.h:202
problem_mixed
see the problem_mixed page for the full documentation
eta
Definition: eta.h:25
mkgeo_ball.d
int d
Definition: mkgeo_ball.sh:154
space
see the space page for the full documentation
p
Definition: sphere.icc:25
oldroyd_theta_scheme::reset
void reset(const geo &omega)
Definition: oldroyd_theta_scheme1.h:31
rheolef::ddot
T ddot(const tensor_basic< T > &a, const tensor_basic< T > &b)
ddot(x,y): see the expression page for the full documentation
Definition: tensor.cc:278
a
Definition: diffusion_isotropic.h:25
test
see the test page for the full documentation
u
Definition: leveque.h:25
rheolef::D
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.
Definition: field_expr_terminal.h:969
u
Float u(const point &x)
Definition: transmission_error.cc:26
mkgeo_contraction.mu
mu
Definition: mkgeo_contraction.sh:193
trial
see the test page for the full documentation
geo
see the geo page for the full documentation
rheolef::details::dot
rheolef::details::is_vec dot
mkgeo_ball.c
int c
Definition: mkgeo_ball.sh:153
oldroyd_theta_scheme::oldroyd_theta_scheme
oldroyd_theta_scheme()
Definition: oldroyd_theta_scheme1.h:26
lambda
Definition: yield_slip_circle.h:34