/[escript]/trunk/escript/py_src/linearPDEs.py
ViewVC logotype

Diff of /trunk/escript/py_src/linearPDEs.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1417 by gross, Mon Feb 25 04:45:48 2008 UTC revision 1639 by gross, Mon Jul 14 08:55:25 2008 UTC
# Line 490  class LinearPDE(object): Line 490  class LinearPDE(object):
490     AMG= 22     AMG= 22
491     RILU = 23     RILU = 23
492     TRILINOS = 24     TRILINOS = 24
493       NONLINEAR_GMRES = 25
494    
495     SMALL_TOLERANCE=1.e-13     SMALL_TOLERANCE=1.e-13
496     __PACKAGE_KEY="package"     __PACKAGE_KEY="package"
# Line 2241  class TransportPDE(object): Line 2242  class TransportPDE(object):
2242          self.__trace=trace          self.__trace=trace
2243          self.__theta=theta          self.__theta=theta
2244          self.__matrix_type=0          self.__matrix_type=0
2245          self.__reduced=False          self.__reduced=True
2246          self.__reassemble=True          self.__reassemble=True
2247          if self.__useSUPG:          if self.__useSUPG:
2248             self.__pde=LinearPDE(domain,numEquations=num_equations,numSolutions=num_equations,debug=trace)             self.__pde=LinearPDE(domain,numEquations=num_equations,numSolutions=num_equations,debug=trace)
2249             self.__pde.setSymmetryOn()             self.__pde.setSymmetryOn()
2250               self.__pde.setReducedOrderOn()
2251          else:          else:
2252             self.__transport_problem=self.__getNewTransportProblem()             self.__transport_problem=self.__getNewTransportProblem()
2253          self.setTolerance()          self.setTolerance()
         self.setReducedOn()  
2254          self.__M=escript.Data()          self.__M=escript.Data()
2255          self.__A=escript.Data()          self.__A=escript.Data()
2256          self.__B=escript.Data()          self.__B=escript.Data()
# Line 2415  class TransportPDE(object): Line 2416  class TransportPDE(object):
2416    
2417       def setInitialSolution(self,u):       def setInitialSolution(self,u):
2418               if self.__useSUPG:               if self.__useSUPG:
2419                   self.__u=u                   self.__u=util.interpolate(u,self.getFunctionSpace())
2420               else:               else:
2421                   self.__transport_problem.setInitialValue(util.interpolate(u,self.getFunctionSpace()))                   self.__transport_problem.setInitialValue(util.interpolate(u,self.getFunctionSpace()))
2422    
2423       def solve(self,dt,**kwarg):       def solve(self,dt,**kwarg):
2424             if self.__useSUPG:             if self.__useSUPG:
2425                  if self.__reassemble:                  if self.__reassemble:
2426                      self.__pde.setValue(D=self.__M,d=self.__d,d_contact=self.__d_contact,q=self.__q,r=self.__r)                      self.__pde.setValue(D=self.__M,d=self.__d,d_contact=self.__d_contact,q=self.__q) # ,r=self.__r)
2427                      self.__reassemble=False                      self.__reassemble=False
2428                  dt2=self.getSafeTimeStepSize()                  dt2=self.getSafeTimeStepSize()
2429                  nn=max(math.ceil(dt/self.getSafeTimeStepSize()),1.)                  nn=max(math.ceil(dt/self.getSafeTimeStepSize()),1.)
# Line 2447  class TransportPDE(object): Line 2448  class TransportPDE(object):
2448              X=0              X=0
2449              Y=self.__M*u0              Y=self.__M*u0
2450              X=0              X=0
2451                self.__pde.setValue(r=u0)
2452              if not self.__A.isEmpty():              if not self.__A.isEmpty():
2453                 X=X+dt*util.matrixmult(self.__A,g)                 X=X+dt*util.matrixmult(self.__A,g)
2454              if not self.__B.isEmpty():              if not self.__B.isEmpty():
# Line 2464  class TransportPDE(object): Line 2466  class TransportPDE(object):
2466                 self.__pde.setValue(y=dt*self.__y)                 self.__pde.setValue(y=dt*self.__y)
2467              if not self.__y_contact.isEmpty():              if not self.__y_contact.isEmpty():
2468                 self.__pde.setValue(y=dt*self.__y_contact)                 self.__pde.setValue(y=dt*self.__y_contact)
2469                  self.__pde.setValue(r=u0)

Legend:
Removed from v.1417  
changed lines
  Added in v.1639

  ViewVC Help
Powered by ViewVC 1.1.26