DIP = 30 * U.DEG N = 1 # boudary layer control g = 9.81 * U.m / U.sec**2 # # derived values # dom = ReadMesh(MESHFILE) DIM = dom.getDim() bb = boundingBox(dom) LX = bb[0][1] - bb[0][0] if DIM == 3: LY = bb[1][1] - bb[1][0] DEPTH = bb[DIM - 1][1] - bb[DIM - 1][0] sc = StokesProblemCartesian(dom) x = dom.getX() # v = Vector(0., Solution(dom)) mask = Vector(0., Solution(dom)) # # in subduction zone: # if DIM == 2: S = numpy.array([0., 0.]) X0 = [bb[0][0], bb[1][1]] dd = [-cos(ALPHA), -sin(ALPHA)] else: S = numpy.array([sin(STRIKE), cos(STRIKE), 0.]) X0 = [bb[0][0], bb[1][0], bb[2][1]] dd = [-cos(ALPHA), 0., -sin(ALPHA)]
return self.__pde_u.getSolution() def solve_g(self, u, tol=1.e-8): dp = Vector(0., FunctionOnContactZero(self.domain)) h = FunctionOnContactZero(self.domain).getSize() # print jump(u)-self.slip dp[0] = (self.slip[0] - jump(u[0])) * lam_mu / h dp[1] = (self.slip[1] - jump(u[1])) * lam_mu / h dp[2] = (self.slip[2] - jump(u[2])) * lam_mu / h return dp dom = ReadMesh("meshfault3D.fly", integrationOrder=-1) prop = SlippingFault(dom) d = dom.getDim() x = dom.getX()[0] # x=dom.getX()[d-1] mask = whereZero(x - inf(x)) * numpy.ones((d, )) x = FunctionOnContactZero(dom).getX() s = numpy.array([-100000., 1., 1.]) for i in range(3): d = fend[i] - fstart[i] if d > 0: q = (x[i] - fstart[i]) / d s = q * (1 - q) * 4 * s elif d < 0: q = (x[i] - fend[i]) / d s = q * (1 - q) * 4 * s u0 = Vector(0., Solution(dom)) p0 = Vector(1., FunctionOnContactZero(dom)) prop.initialize(fixed_u_mask=mask,
g = 9.81 * U.m / U.sec ** 2 # # derived values # dom = ReadMesh(MESHFILE) DIM = dom.getDim() bb = boundingBox(dom) LX = bb[0][1] - bb[0][0] if DIM == 3: LY = bb[1][1] - bb[1][0] DEPTH = bb[DIM - 1][1] - bb[DIM - 1][0] sc = StokesProblemCartesian(dom) x = dom.getX() # v = Vector(0.0, Solution(dom)) mask = Vector(0.0, Solution(dom)) # # in subduction zone: # if DIM == 2: S = numpy.array([0.0, 0.0]) X0 = [bb[0][0], bb[1][1]] dd = [-cos(ALPHA), -sin(ALPHA)] else: S = numpy.array([sin(STRIKE), cos(STRIKE), 0.0]) X0 = [bb[0][0], bb[1][0], bb[2][1]] dd = [-cos(ALPHA), 0.0, -sin(ALPHA)]
return self.__pde_u.getSolution() def solve_g(self,u,tol=1.e-8): dp=Vector(0.,FunctionOnContactZero(self.domain)) h=FunctionOnContactZero(self.domain).getSize() # print jump(u)-self.slip dp[0]=(self.slip[0]-jump(u[0]))*lam_mu/h dp[1]=(self.slip[1]-jump(u[1]))*lam_mu/h dp[2]=(self.slip[2]-jump(u[2]))*lam_mu/h return dp dom=ReadMesh("meshfault3D.fly",integrationOrder=-1) prop=SlippingFault(dom) d=dom.getDim() x=dom.getX()[0] # x=dom.getX()[d-1] mask=whereZero(x-inf(x))*numpy.ones((d,)) x=FunctionOnContactZero(dom).getX() s=numpy.array([-100000.,1.,1.]) for i in range(3): d=fend[i]-fstart[i] if d>0: q=(x[i]-fstart[i])/d s=q*(1-q)*4*s elif d<0: q=(x[i]-fend[i])/d s=q*(1-q)*4*s u0=Vector(0.,Solution(dom)) p0=Vector(1.,FunctionOnContactZero(dom)) prop.initialize(fixed_u_mask=mask,slip=Data(s,FunctionOnContactZero(dom)), density=rho,lmbd=lam_lmbd, mu=lam_mu)