3 |
""" |
""" |
4 |
calculation of the stress distribution around a fault from the slip on the fault |
calculation of the stress distribution around a fault from the slip on the fault |
5 |
|
|
6 |
|
e.g. use slip_stress_mesh.py to generate mesh |
7 |
|
|
8 |
@var __author__: name of author |
@var __author__: name of author |
9 |
@var __copyright__: copyrights |
@var __copyright__: copyrights |
10 |
@var __license__: licence agreement |
@var __license__: licence agreement |
13 |
@var __date__: date of the version |
@var __date__: date of the version |
14 |
""" |
""" |
15 |
|
|
16 |
__author__="Lutz Gross, l.gross@uq.edu.au" |
__author__="Lutz Gross, Louise Kettle" |
17 |
__copyright__=""" Copyright (c) 2006 by ACcESS MNRF |
__copyright__=""" Copyright (c) 2006 by ACcESS MNRF |
18 |
http://www.access.edu.au |
http://www.access.edu.au |
19 |
Primary Business: Queensland, Australia""" |
Primary Business: Queensland, Australia""" |
26 |
from esys.escript import * |
from esys.escript import * |
27 |
from esys.escript.pdetools import SaddlePointProblem |
from esys.escript.pdetools import SaddlePointProblem |
28 |
from esys.escript.linearPDEs import LinearPDE |
from esys.escript.linearPDEs import LinearPDE |
29 |
from esys.finley import Rectangle |
from esys.finley import ReadMesh |
30 |
|
|
31 |
|
|
32 |
rho=1. |
rho=0. |
33 |
lam_lmbd=1. |
lam_lmbd=1. |
34 |
lam_mu=1. |
lam_mu=1. |
35 |
g=9.81 |
g=9.81 |
56 |
self.__pde_u.setValue(A=A,q=fixed_u_mask,Y=-kronecker(Function(self.domain))[d-1]*g*density,y=traction) |
self.__pde_u.setValue(A=A,q=fixed_u_mask,Y=-kronecker(Function(self.domain))[d-1]*g*density,y=traction) |
57 |
|
|
58 |
def inner(self,p0,p1): |
def inner(self,p0,p1): |
59 |
return integrate(p0*p1,FunctionOnContactZero(self.__pde_p.getDomain())) |
return integrate(p0*p1,FunctionOnContactZero(self.domain)) |
60 |
|
|
61 |
def solve_f(self,u,p,tol=1.e-8): |
def solve_f(self,u,p,tol=1.e-8): |
62 |
self.__pde_u.setTolerance(tol) |
self.__pde_u.setTolerance(tol) |
63 |
self.__pde_u.setValue(y_contact=p) |
self.__pde_u.setValue(y_contact=-p) |
64 |
return self.__pde_u.getSolution() |
return self.__pde_u.getSolution() |
65 |
|
|
66 |
def solve_g(self,u,tol=1.e-8): |
def solve_g(self,u,tol=1.e-8): |
67 |
dp=self.slip-jump(u) |
dp=-(self.slip-jump(u)) |
68 |
return dp |
return dp |
69 |
|
|
70 |
|
|
71 |
s=numarray.array([0.,1.,1.]) |
s=numarray.array([0.,1.,1.]) |
72 |
NE=3 |
dom=ReadMesh("meshfault3D.fly") |
|
dom=Rectangle(NE,NE,order=2) |
|
73 |
prop=SlippingFault(dom) |
prop=SlippingFault(dom) |
74 |
d=dom.getDim() |
d=dom.getDim() |
75 |
x=dom.getX()[d-1] |
x=dom.getX()[d-1] |
76 |
mask=whereZero(x-inf(x))*numarray.ones((d,)) |
mask=whereZero(x-inf(x))*numarray.ones((d,)) |
77 |
u0=Vector(0.,Solution(dom)) |
u0=Vector(0.,Solution(dom)) |
78 |
p0=Vector(0.,FunctionOnContactZero(dom)) |
p0=Vector(1.,FunctionOnContactZero(dom)) |
79 |
prop.initialize(fixed_u_mask=mask,slip=s, 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) |
80 |
u,p=prop.solve(u0,p0,relaxation=1.,iter_max=50,tolerance=0.01) |
u,p=prop.solve(u0,p0,iter_max=50,tolerance=0.01) |
81 |
saveVTK("dis.xml",u=u) |
saveVTK("dis.xml",u=u) |
82 |
saveVTK("fault.xml",sigma=p,s=jump(u)) |
saveVTK("fault.xml",sigma=p,s=jump(u)) |