예제 #1
0
 def test_yDirection(self):
     dim=self.domain.getDim()
     if dim==3:
         return
     u = Symbol('u',(2,), dim=dim)
     q = Symbol('q', (2,2))
     theta = Symbol('theta')
     theta=3.141/6
     q[0,0]=cos(theta)
     q[0,1]=-sin(theta)
     q[1,0]=sin(theta)
     q[1,1]=cos(theta)
     sigma = Symbol('sigma',(2,2))
     p = NonlinearPDE(self.domain, u, debug=0)
     epsilon = symmetric(grad(u))
  #   epsilon = matrixmult(matrixmult(q,epsilon0),q.transpose(1))
     c00=10;c01=8;c05=0
     c01=8;c11=10;c15=0
     c05=0;c15=0;c55=1
     sigma[0,0]=c00*epsilon[0,0]+c01*epsilon[1,1]+c05*2*epsilon[1,0]
     sigma[1,1]=c01*epsilon[0,0]+c11*epsilon[1,1]+c15*2*epsilon[1,0]
     sigma[0,1]=c05*epsilon[0,0]+c15*epsilon[1,1]+c55*2*epsilon[1,0]
     sigma[1,0]=sigma[0,1]
  #   sigma0=matrixmult(matrixmult(q.transpose(1),epsilon),q)
     x = self.domain.getX()
     gammaD=whereZero(x[1])*[1,1]#+whereZero(x[0])*[1,0]+whereZero(x[0]-1)*[1,0]  
     yconstraint = FunctionOnBoundary(self.domain).getX()[1]
     p.setValue(X=sigma,q=gammaD,y=[-50,0]*whereZero(yconstraint-1),r=[1,1])
     v = p.getSolution(u=[0,0])
     x=np.ndarray((2,))
     x[0]=0.5
     x[1]=0.5
     loc=Locator(v.getFunctionSpace(),x)
     valAtX=loc(v)
     self.assertTrue(valAtX[0]>10*valAtX[1])
예제 #2
0
 def test_yDirection(self):
     dim=self.domain.getDim()
     if dim==3:
         return
     u = Symbol('u',(2,), dim=dim)
     q = Symbol('q', (2,2))
     theta = Symbol('theta')
     theta=3.141/6
     q[0,0]=cos(theta)
     q[0,1]=-sin(theta)
     q[1,0]=sin(theta)
     q[1,1]=cos(theta)
     sigma = Symbol('sigma',(2,2))
     p = NonlinearPDE(self.domain, u, debug=0)
     epsilon = symmetric(grad(u))
  #   epsilon = matrixmult(matrixmult(q,epsilon0),q.transpose(1))
     c00=10;c01=8;c05=0
     c01=8;c11=10;c15=0
     c05=0;c15=0;c55=1
     sigma[0,0]=c00*epsilon[0,0]+c01*epsilon[1,1]+c05*2*epsilon[1,0]
     sigma[1,1]=c01*epsilon[0,0]+c11*epsilon[1,1]+c15*2*epsilon[1,0]
     sigma[0,1]=c05*epsilon[0,0]+c15*epsilon[1,1]+c55*2*epsilon[1,0]
     sigma[1,0]=sigma[0,1]
  #   sigma0=matrixmult(matrixmult(q.transpose(1),epsilon),q)
     x = self.domain.getX()
     gammaD=whereZero(x[1])*[1,1]#+whereZero(x[0])*[1,0]+whereZero(x[0]-1)*[1,0]  
     yconstraint = FunctionOnBoundary(self.domain).getX()[1]
     p.setValue(X=sigma,q=gammaD,y=[-50,0]*whereZero(yconstraint-1),r=[1,1])
     v = p.getSolution(u=[0,0])
     x=np.ndarray((2,))
     x[0]=0.5
     x[1]=0.5
     loc=Locator(v.getFunctionSpace(),x)
     valAtX=loc(v)
     self.assertTrue(valAtX[0]>10*valAtX[1])
예제 #3
0
 def test_run(self):
     #test just to confirm nlpde works   
     u=Symbol('u', dim=self.domain.getDim())
     nlpde = NonlinearPDE(self.domain, u)
     x=self.domain.getX()
     gammaD=whereZero(x[0])+whereZero(x[1])
     nlpde.setValue(X=grad(u), Y=5*u, q=gammaD, r=1)
     v=nlpde.getSolution(u=1)
예제 #4
0
 def test_run(self):
     #test just to confirm nlpde works   
     u=Symbol('u', dim=self.domain.getDim())
     nlpde = NonlinearPDE(self.domain, u)
     x=self.domain.getX()
     gammaD=whereZero(x[0])+whereZero(x[1])
     nlpde.setValue(X=grad(u), Y=5*u, q=gammaD, r=1)
     v=nlpde.getSolution(u=1)