/[escript]/trunk/modellib/py_src/geometry.py
ViewVC logotype

Diff of /trunk/modellib/py_src/geometry.py

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

revision 323 by gross, Tue Dec 6 06:18:00 2005 UTC revision 490 by gross, Thu Feb 2 07:07:21 2006 UTC
# Line 5  from esys.escript import * Line 5  from esys.escript import *
5  from esys.escript.modelframe import Model,ParameterSet  from esys.escript.modelframe import Model,ParameterSet
6  from esys import finley  from esys import finley
7    
8  class RectangularDomain(Model):  class FinleyReader(ParameterSet):
9           """
10           Generates a mesh over a rectangular domain finley.
11    
12           @ivar filename:
13           @ivar intergrationOrder
14           @ivar domain:
15           """
16           def __init__(self,debug=False):
17               super(FinleyReader,self).__init__(debug=debug)
18               ParameterSet.__init__(self,debug=debug)
19               self.declareParameter(source="none",\
20                                     integrationOrder=-1)
21               self._domain=None
22    
23           def domain(self):
24              if self._domain==None:
25                  self._domain=finley.ReadMesh(self.source,self.integrationOrder)
26                  self.trace("mesh read from %s"%self.source)          
27              return self._domain
28                          
29    class RectangularDomain(ParameterSet):
30         """         """
31         Generates a mesh over a rectangular domain finley.         Generates a mesh over a rectangular domain finley.
32    
# Line 15  class RectangularDomain(Model): Line 36  class RectangularDomain(Model):
36         @ivar order:         @ivar order:
37         @ivar periodic:         @ivar periodic:
38         @ivar intergration order:         @ivar intergration order:
39         @ivar domain (callable):         @ivar domain:
40         """         """
41         def __init__(self,debug=False):         def __init__(self,debug=False):
42             Model.__init__(self,debug=debug)             super(RectangularDomain,self).__init__(debug=debug)
43             self.declareParameter(dim=2,\             self.declareParameter(dim=2,\
44                                   l=[1.,1.,1.],\                                   l=[1.,1.,1.],\
45                                   n=[10,10,10], \                                   n=[10,10,10], \
# Line 53  class RectangularDomain(Model): Line 74  class RectangularDomain(Model):
74    
75            return self._domain            return self._domain
76    
77    class ConstrainValue(Model):
78           """
79           selects values for a given distribution to be used as a constrain. the location of the
80           constrain are he faces of a rectangular domain. This Model is typically used in
81           time dependend problems to fix the values in a given initial condition.
82           """
83           def __init__(self,debug=False):
84               Model.__init__(self,debug=debug)
85               self.declareParameter(domain=None, \
86                                     value=0,  \
87                                     top=True,  \
88                                     bottom=True,\
89                                     front=False, \
90                                     back=False,\
91                                     left=False,\
92                                     right=False,\
93                                     constrain_value = None,  \
94                                     location_constrained_value=None)
95           def doInitialization(self):
96               """
97               initialize time stepping
98               """
99               tol=1.e-8
100               x=self.domain.getX()
101               d=self.domain.getDim()
102               self.location_constrained_value=0
103               x0=x[0]
104               mx=sup(x0)
105               mn=inf(x0)
106               if self.left:
107                   self.location_constrained_value=self.location_constrained_value+whereZero(x0-mn,tol*(mx-mn))
108               if self.right:
109                   self.location_constrained_value=self.location_constrained_value+whereZero(x0-mx,tol*(mx-mn))
110               x0=x[d-1]
111               mx=sup(x0)
112               mn=inf(x0)
113               if self.bottom:
114                   self.location_constrained_value=self.location_constrained_value+whereZero(x0-mn,tol*(mx-mn))
115               if self.top:
116                   self.location_constrained_value=self.location_constrained_value+whereZero(x0-mx,tol*(mx-mn))
117               if d>2:
118                  x0=x[1]
119                  mx=sup(x0)
120                  mn=inf(x0)
121                  if self.front:
122                     self.location_constrained_value=self.location_constrained_value+whereZero(x0-mn,tol*(mx-mn))
123                  if self.back:
124                     self.location_constrained_value=self.location_constrained_value+whereZero(x0-mx,tol*(mx-mn))          
125               self.constrain_value=self.value*self.location_constrained_value
126              
127  class ScalarConstrainer(ParameterSet):  class ScalarConstrainer(ParameterSet):
128       """       """
129       Creates a characteristic function for the location of constraints       Creates a characteristic function for the location of constraints

Legend:
Removed from v.323  
changed lines
  Added in v.490

  ViewVC Help
Powered by ViewVC 1.1.26