67 |
def solve_f(self,u,p,tol=1.e-8): |
def solve_f(self,u,p,tol=1.e-8): |
68 |
self.__pde_u.setTolerance(tol) |
self.__pde_u.setTolerance(tol) |
69 |
self.__pde_u.setValue(y_contact=p) |
self.__pde_u.setValue(y_contact=p) |
70 |
|
print "p:",inf(p),sup(p) |
71 |
|
print "u:",inf(u),sup(u) |
72 |
|
self.__pde_u.setValue(y_contact=p) |
73 |
return self.__pde_u.getSolution() |
return self.__pde_u.getSolution() |
74 |
|
|
75 |
def solve_g(self,u,tol=1.e-8): |
def solve_g(self,u,tol=1.e-8): |
76 |
dp=(self.slip-jump(u))*lam_lmbd/FunctionOnContactZero(self.domain).getX() |
dp= (self.slip-jump(u))*lam_lmbd/FunctionOnContactZero(self.domain).getSize()**2 |
77 |
return dp |
return dp |
78 |
|
|
79 |
|
|
80 |
dom=ReadMesh("meshfault3D.fly") |
dom=ReadMesh("meshfault3D.fly",integrationOrder=-1) |
81 |
prop=SlippingFault(dom) |
prop=SlippingFault(dom) |
82 |
d=dom.getDim() |
d=dom.getDim() |
83 |
x=dom.getX()[d-1] |
x=dom.getX()[0] |
84 |
|
# x=dom.getX()[d-1] |
85 |
mask=whereZero(x-inf(x))*numarray.ones((d,)) |
mask=whereZero(x-inf(x))*numarray.ones((d,)) |
86 |
s=numarray.array([0.,1.,1.]) |
s=numarray.array([0.,1.,1.]) |
87 |
x=FunctionOnContactZero(dom).getX() |
x=FunctionOnContactZero(dom).getX() |
97 |
u0=Vector(0.,Solution(dom)) |
u0=Vector(0.,Solution(dom)) |
98 |
p0=Vector(1.,FunctionOnContactZero(dom)) |
p0=Vector(1.,FunctionOnContactZero(dom)) |
99 |
prop.initialize(fixed_u_mask=mask,slip=Data(s,FunctionOnContactZero(dom)), density=rho,lmbd=lam_lmbd, mu=lam_mu) |
prop.initialize(fixed_u_mask=mask,slip=Data(s,FunctionOnContactZero(dom)), density=rho,lmbd=lam_lmbd, mu=lam_mu) |
100 |
u,p=prop.solve(u0,p0,iter_max=100,tolerance=0.5,accepted_reduction=1.1 ) |
u,p=prop.solve(u0,p0,iter_max=50,tolerance=0.1,accepted_reduction=10.) |
101 |
saveVTK("dis.xml",u=u) |
saveVTK("dis.xml",u=u) |
102 |
saveVTK("fault.xml",sigma=p,s=jump(u)) |
saveVTK("fault.xml",sigma=p,s=jump(u)) |