/[escript]/trunk/esys2/escript/py_src/util.py
ViewVC logotype

Diff of /trunk/esys2/escript/py_src/util.py

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

revision 100 by jgs, Wed Dec 15 03:48:48 2004 UTC revision 102 by jgs, Wed Dec 15 07:08:39 2004 UTC
# Line 7  Line 7 
7  """  """
8    
9  import numarray  import numarray
10    import escript
11  #  #
12  #   escript constants:  #   escript constants (have to be consistent witj utilC.h
13  #  #
 FALSE=0  
 TRUE=1  
14  UNKNOWN=-1  UNKNOWN=-1
15  EPSILON=1.e-15  EPSILON=1.e-15
16  Pi=3.1415926535897931  Pi=numarray.pi
 # matrix types  
 CSC=0    
 CSR=1  
 LUMPED=10  
17  # some solver options:  # some solver options:
18  NO_REORDERING=0  NO_REORDERING=0
19  MINIMUM_FILL_IN=1  MINIMUM_FILL_IN=1
20  NESTED_DISSECTION=2  NESTED_DISSECTION=2
21    # solver methods
22  DEFAULT_METHOD=0  DEFAULT_METHOD=0
23  PCG=1  DIRECT=1
24  CR=2  CHOLEVSKY=2
25  CGS=3  PCG=3
26  BICGSTAB=4  CR=4
27  SSOR=5  CGS=5
28  ILU0=6  BICGSTAB=6
29  ILUT=7  SSOR=7
30  JACOBI=8  ILU0=8
31    ILUT=9
32    JACOBI=10
33    GMRES=11
34    PRES20=12
35    
36    METHOD_KEY="method"
37    SYMMETRY_KEY="symmetric"
38    TOLERANCE_KEY="tolerance"
39    
40  # supported file formats:  # supported file formats:
41  VRML=1  VRML=1
42  PNG=2  PNG=2
# Line 49  PNM=10 Line 54  PNM=10
54  # as an argument it calls the correspong methods. Otherwise the coresponsing numarray  # as an argument it calls the correspong methods. Otherwise the coresponsing numarray
55  # function is called.  # function is called.
56  #  #
57  def L2(arg):  # functions involving the underlying Domain:
58      """  #
     @brief  
   
     @param arg  
     """  
     return arg.L2()  
   
59  def grad(arg,where=None):  def grad(arg,where=None):
60      """      """
61      @brief      @brief returns the spatial gradient of the Data object arg
62    
63      @param arg      @param arg: Data object representing the function which gradient to be calculated.
64      @param where      @param where: FunctionSpace in which the gradient will be. If None Function(dom) where dom is the
65                      domain of the Data object arg.
66      """      """
67      if where==None:      if where==None:
68         return arg.grad()         return arg.grad()
# Line 71  def grad(arg,where=None): Line 71  def grad(arg,where=None):
71    
72  def integrate(arg):  def integrate(arg):
73      """      """
74      @brief      @brief return the integral if the function represented by Data object arg over its domain.
75    
76      @param arg      @param arg
77      """      """
# Line 79  def integrate(arg): Line 79  def integrate(arg):
79    
80  def interpolate(arg,where):  def interpolate(arg,where):
81      """      """
82      @brief      @brief interpolates the function represented by Data object arg into the FunctionSpace where.
83    
84      @param arg      @param arg
85      @param where      @param where
86      """      """
87      return arg.interpolate(where)      return arg.interpolate(where)
88    
89  def transpose(arg):  # functions returning Data objects:
90    
91    def transpose(arg,axis=None):
92      """      """
93      @brief      @brief returns the transpose of the Data object arg.
94    
95      @param arg      @param arg
96      """      """
97      if hasattr(arg,"transpose"):      if isinstance(arg,escript.Data):
98         return arg.transpose()         if axis==None: axis=arg.getRank()/2
99           return arg.transpose(axis)
100      else:      else:
101         return numarray.transpose(arg,axis=None)         if axis==None: axis=arg.rank/2
102           return numarray.transpose(arg,axis=axis)
103    
104  def trace(arg):  def trace(arg):
105      """      """
# Line 103  def trace(arg): Line 107  def trace(arg):
107    
108      @param arg      @param arg
109      """      """
110      if hasattr(arg,"trace"):      if isinstance(arg,escript.Data):
111         return arg.trace()         return arg.trace()
112      else:      else:
113         return numarray.trace(arg,k=0)         return numarray.trace(arg)
114    
115  def exp(arg):  def exp(arg):
116      """      """
# Line 114  def exp(arg): Line 118  def exp(arg):
118    
119      @param arg      @param arg
120      """      """
121      if hasattr(arg,"exp"):      if isinstance(arg,escript.Data):
122         return arg.exp()         return arg.exp()
123      else:      else:
124         return numarray.exp(arg)         return numarray.exp(arg)
# Line 125  def sqrt(arg): Line 129  def sqrt(arg):
129    
130      @param arg      @param arg
131      """      """
132      if hasattr(arg,"sqrt"):      if isinstance(arg,escript.Data):
133         return arg.sqrt()         return arg.sqrt()
134      else:      else:
135         return numarray.sqrt(arg)         return numarray.sqrt(arg)
# Line 136  def sin(arg): Line 140  def sin(arg):
140    
141      @param arg      @param arg
142      """      """
143      if hasattr(arg,"sin"):      if isinstance(arg,escript.Data):
144         return arg.sin()         return arg.sin()
145      else:      else:
146         return numarray.sin(arg)         return numarray.sin(arg)
147    
148    def tan(arg):
149        """
150        @brief
151    
152        @param arg
153        """
154        if isinstance(arg,escript.Data):
155           return arg.tan()
156        else:
157           return numarray.tan(arg)
158    
159  def cos(arg):  def cos(arg):
160      """      """
161      @brief      @brief
162    
163      @param arg      @param arg
164      """      """
165      if hasattr(arg,"cos"):      if isinstance(arg,escript.Data):
166         return arg.cos()         return arg.cos()
167      else:      else:
168         return numarray.cos(arg)         return numarray.cos(arg)
# Line 158  def maxval(arg): Line 173  def maxval(arg):
173    
174      @param arg      @param arg
175      """      """
176      return arg.maxval()      if isinstance(arg,escript.Data):
177           return arg.maxval()
178        else:
179           return arg.max()
180    
181  def minval(arg):  def minval(arg):
182      """      """
# Line 166  def minval(arg): Line 184  def minval(arg):
184    
185      @param arg      @param arg
186      """      """
187      return arg.minval()      if isinstance(arg,escript.Data):
188           return arg.minval()
189        else:
190           return arg.max()
191    
192    def length(arg):
193        """
194        @brief
195    
196        @param arg
197        """
198        if isinstance(arg,escript.Data):
199           return arg.length()
200        else:
201           return sqrt((arg**2).sum())
202    
203    def sign(arg):
204        """
205        @brief
206    
207        @param arg
208        """
209        if isinstance(arg,escript.Data):
210           return arg.sign()
211        else:
212           return numarray.greater(arg,numarray.zeros(arg.shape))-numarray.less(arg,numarray.zeros(arg.shape))
213    
214    # reduction operations:
215    
216    def sum(arg):
217        """
218        @brief
219    
220        @param arg
221        """
222        return arg.sum()
223    
224  def sup(arg):  def sup(arg):
225      """      """
# Line 174  def sup(arg): Line 227  def sup(arg):
227    
228      @param arg      @param arg
229      """      """
230      return arg.sup()      if isinstance(arg,escript.Data):
231           return arg.sup()
232        else:
233           return arg.max()
234    
235  def inf(arg):  def inf(arg):
236      """      """
# Line 182  def inf(arg): Line 238  def inf(arg):
238    
239      @param arg      @param arg
240      """      """
241      return arg.inf()      if isinstance(arg,escript.Data):
242           return arg.inf()
243        else:
244           return arg.min()
245    
246  def Lsup(arg):  def L2(arg):
247      """      """
248      @brief      @brief returns the L2-norm of the
249    
250      @param arg      @param arg
251      """      """
252      return arg.Lsup()      return arg.L2()
253    
254  def length(arg):  def Lsup(arg):
255      """      """
256      @brief      @brief
257    
258      @param arg      @param arg
259      """      """
260      return arg.length()      if isinstance(arg,escript.Data):
261           return arg.Lsup()
262        else:
263           return arg.max(numarray.abs(arg))
264    
265  def sign(arg):  def dot(arg1,arg2):
266      """      """
267      @brief      @brief
268    
269      @param arg      @param arg
270      """      """
271      return arg.sign()      if isinstance(arg1,escript.Data):
272  #         return arg1.dot(arg2)
273  # $Log$      elif isinstance(arg1,escript.Data):
274  # Revision 1.4  2004/12/15 03:48:42  jgs         return arg2.dot(arg1)
275  # *** empty log message ***      else:
276  #         return numarray.dot(arg1,arg2)
 # Revision 1.2  2004/10/27 00:23:36  jgs  
 # fixed minor syntax error  
 #  
 # Revision 1.1.1.1  2004/10/26 06:53:56  jgs  
 # initial import of project esys2  
 #  
 # Revision 1.1.2.3  2004/10/26 06:43:48  jgs  
 # committing Lutz's and Paul's changes to brach jgs  
 #  
 # Revision 1.1.4.1  2004/10/20 05:32:51  cochrane  
 # Added incomplete Doxygen comments to files, or merely put the docstrings that already exist into Doxygen form.  
 #  
 # Revision 1.1  2004/08/05 03:58:27  gross  
 # Bug in Assemble_NodeCoordinates fixed  
 #  
 #  

Legend:
Removed from v.100  
changed lines
  Added in v.102

  ViewVC Help
Powered by ViewVC 1.1.26