Loading...
Searching...
No Matches
yield_slip1.icc

The yield slip problem – class body.

The yield slip problem – class body

#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::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::n
Float n
Definition yield_slip.h:40
yield_slip::mkh
field mkh
Definition yield_slip.h:43
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::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::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_contraction.mu
float mu
Definition mkgeo_contraction.sh:193
rheolef::details::compose
class rheolef::details::field_expr_v2_nonlinear_node_unary compose
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:211
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
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