p_laplacian1.icc
Go to the documentation of this file.
#include "eta.h"
#include "nu.h"
#include "dirichlet.icc"
p_laplacian::p_laplacian (Float p1, const geo& omega, string approx)
: p(p1), Xh(), lh(), m(), pm(), a1(), pa1() {
Xh = space (omega, approx);
Xh.block ("boundary");
trial u (Xh); test v (Xh);
lh = integrate (v);
m = integrate (u*v);
pm = problem (m);
}
field p_laplacian::initial() const {
field uh (Xh, 0);
dirichlet (lh, uh);
return uh;
}
field p_laplacian::residue (const field& uh) const {
trial u (Xh); test v (Xh);
form a = integrate (compose(eta(p), norm2(grad(uh)))*dot(grad(u),grad(v)));
field mrh = a*uh - lh;
mrh.set_b() = 0;
return mrh;
}
void p_laplacian::update_derivative (const field& uh) const {
size_t d = Xh.get_geo().dimension();
trial u (Xh); test v (Xh);
a1 = integrate (dot(compose(nu<eta>(eta(p),d), grad(uh))*grad(u),grad(v)));
pa1 = problem (a1);
}
field p_laplacian::derivative_solve (const field& rh) const {
field delta_uh (Xh,0);
pa1.solve (rh, delta_uh);
return delta_uh;
}
lh
field lh(Float epsilon, Float t, const test &v)
Definition: burgers_diffusion_operators.icc:25
Float
see the Float page for the full documentation
field
see the field page for the full documentation
form
see the form page for the full documentation
geo
see the geo page for the full documentation
p_laplacian::a1
form a1
Definition: p_laplacian.h:42
p_laplacian::Xh
space Xh
Definition: p_laplacian.h:38
p_laplacian::derivative_solve
field derivative_solve(const field &mrh) const
Definition: p_laplacian1.icc:55
p_laplacian::pa1
problem pa1
Definition: p_laplacian.h:43
p_laplacian::p_laplacian
p_laplacian(Float p, const geo &omega, string approx)
Definition: p_laplacian1.icc:28
p_laplacian::lh
field lh
Definition: p_laplacian.h:39
p_laplacian::m
form m
Definition: p_laplacian.h:40
p_laplacian::initial
field initial() const
Definition: p_laplacian1.icc:37
p_laplacian::update_derivative
void update_derivative(const field &uh) const
Definition: p_laplacian1.icc:49
p_laplacian::residue
field residue(const field &uh) const
Definition: p_laplacian1.icc:42
p_laplacian::pm
problem pm
Definition: p_laplacian.h:41
problem
see the problem page for the full documentation
space
see the space page for the full documentation
test
see the test page for the full documentation
trial
see the test page for the full documentation
dirichlet.icc
The Poisson problem with homogeneous Dirichlet boundary condition – solver function.
dirichlet
void dirichlet(const field &lh, field &uh)
Definition: dirichlet.icc:25
eta.h
The p-Laplacian problem – the eta function.
mkgeo_ball.d
int d
Definition: mkgeo_ball.sh:154
mkgeo_sector.m
m
Definition: mkgeo_sector.sh:118
rheolef::details::compose
class rheolef::details::field_expr_v2_nonlinear_node_unary compose
rheolef::details::dot
rheolef::details::is_vec dot
rheolef::grad
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
Definition: field_expr_terminal.h:911
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
rheolef::norm2
T norm2(const vec< T, M > &x)
norm2(x): see the expression page for the full documentation
Definition: vec.h:379
nu.h
The p-Laplacian problem – the nu function.
a
Definition: diffusion_isotropic.h:25
eta
Definition: eta.h:25
nu
Definition: nu.h:26
p
Definition: sphere.icc:25
u
Definition: leveque.h:25
u
Float u(const point &x)
Definition: transmission_error.cc:26