yield_slip1.icc
Go to the documentation of this file.
#include "d_projection_dx.h"
yield_slip::yield_slip (Float S1, Float n1, Float Cf1, Float r1,
const geo& omega, const geo& boundary1, string approx)
: S(S1), n(n1), Cf(Cf1), r(r1), boundary(boundary1), Xh(), Wh(), Yh(),
lh(), mkh(), m(), mb(), a(), b(), c1(), pmb(), pa(), pA()
{
Xh = space (omega, approx);
Wh = space (boundary, approx);
Yh = Xh*Wh;
trial u (Xh), lambda(Wh);
test v (Xh), mu(Wh);
m = integrate(u*v);
mb = integrate(lambda*mu);
a = integrate(dot(grad(u),grad(v))) - r*integrate(boundary, u*v);
b = integrate(boundary, u*mu);
lh = integrate(v);
pmb = problem (mb);
pa = problem (a);
field vh(Xh);
pa.solve (lh, vh);
mkh = b*vh;
}
field yield_slip::residue (const field& beta_h) const {
field vh (Xh);
field rhs = b.trans_mult (beta_h);
pa.solve (rhs, vh);
test mu (Wh);
field c0h = integrate(mu*compose(projection(S,n,Cf,r), beta_h));
field mrh = b*vh + c0h - mkh;
return mrh;
}
void yield_slip::update_derivative (const field& beta_h) const {
trial lambda (Wh); test mu (Wh);
c1 = integrate (lambda*mu*compose(d_projection_dx(S,n,Cf,r), beta_h));
form A = { { a, trans(b) },
{ b, -c1 } };
A.set_symmetry (c1.is_symmetric());
pA = problem(A);
}
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
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
yield_slip::pa
problem pa
Definition: yield_slip.h:46
yield_slip::a
form a
Definition: yield_slip.h:44
yield_slip::S
Float S
Definition: yield_slip.h:40
yield_slip::mb
form mb
Definition: yield_slip.h:44
yield_slip::pA
problem pA
Definition: yield_slip.h:47
yield_slip::Xh
space Xh
Definition: yield_slip.h:42
yield_slip::c1
form c1
Definition: yield_slip.h:45
yield_slip::Wh
space Wh
Definition: yield_slip.h:42
yield_slip::lh
field lh
Definition: yield_slip.h:43
yield_slip::n
Float n
Definition: yield_slip.h:40
yield_slip::mkh
field mkh
Definition: yield_slip.h:43
yield_slip::m
form m
Definition: yield_slip.h:44
yield_slip::pmb
problem pmb
Definition: yield_slip.h:46
yield_slip::update_derivative
void update_derivative(const field &beta_h) const
Definition: yield_slip1.icc:56
yield_slip::r
Float r
Definition: yield_slip.h:40
yield_slip::b
form b
Definition: yield_slip.h:44
yield_slip::Cf
Float Cf
Definition: yield_slip.h:40
yield_slip::Yh
space Yh
Definition: yield_slip.h:42
yield_slip::yield_slip
yield_slip(Float S, Float n, Float Cf, Float r, const geo &omega, const geo &boundary, string approx="P1")
Definition: yield_slip1.icc:26
yield_slip::boundary
geo boundary
Definition: yield_slip.h:41
yield_slip::residue
field residue(const field &beta_h) const
Definition: yield_slip1.icc:47
d_projection_dx.h
The projection for yield-stress rheology – its derivative.
mkgeo_ball.b
int b
Definition: mkgeo_ball.sh:152
mkgeo_ball.n
int n
Definition: mkgeo_ball.sh:150
mkgeo_contraction.mu
mu
Definition: mkgeo_contraction.sh:193
mkgeo_sector.m
m
Definition: mkgeo_sector.sh:118
mkgeo_ugrid.boundary
int boundary
Definition: mkgeo_ugrid.sh:181
rheolef::details::compose
class rheolef::details::field_expr_v2_nonlinear_node_unary compose
rheolef::details::dot
rheolef::details::is_vec dot
rheolef::trans
csr< T, sequential > trans(const csr< T, sequential > &a)
trans(a): see the form page for the full documentation
Definition: csr.h:455
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
a
Definition: diffusion_isotropic.h:25
d_projection_dx
Definition: d_projection_dx.h:26
lambda
Definition: yield_slip_circle.h:34
projection
Definition: projection.h:27
u
Definition: leveque.h:25
u
Float u(const point &x)
Definition: transmission_error.cc:26