/[escript]/branches/3.4.1/modellib/py_src/input.py
ViewVC logotype

Diff of /branches/3.4.1/modellib/py_src/input.py

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

revision 918 by gross, Wed Jan 3 06:30:00 2007 UTC revision 927 by gross, Fri Jan 12 06:32:08 2007 UTC
# Line 8  __license__="""Licensed under the Open S Line 8  __license__="""Licensed under the Open S
8    
9  from esys.escript import *  from esys.escript import *
10  from esys.escript.modelframe import Model,ParameterSet  from esys.escript.modelframe import Model,ParameterSet
11    from esys.escript.linearPDEs import LinearPDE
12  from math import log  from math import log
13    
14  class Sequencer(Model):  class Sequencer(Model):
# Line 291  class ScalarDistributionFromTags(Paramet Line 292  class ScalarDistributionFromTags(Paramet
292          if not self.tag9 == None: d.setTaggedValue(self.tag9,self.value9)          if not self.tag9 == None: d.setTaggedValue(self.tag9,self.value9)
293          return d          return d
294    
295    class SmoothScalarDistributionFromTags(ParameterSet):
296        """
297        creates a smooth scalar distribution on a domain from region tags
298                
299        @ivar domain: domain
300        @type domain: L{esys.escript.Domain}
301        @ivar default: default value
302        @ivar tag0: tag 0
303        @type tag0: C{int}
304        @ivar value0: value for tag 0
305        @type value0: C{float}
306        @ivar tag1: tag 1
307        @type tag1: C{int}
308        @ivar value1: value for tag 1
309        @type value1: C{float}
310        @ivar tag2: tag 2
311        @type tag2: C{int}
312        @ivar value2: value for tag 2
313        @type value2: C{float}
314        @ivar tag3: tag 3
315        @type tag3: C{int}
316        @ivar value3: value for tag 3
317        @type value3: C{float}
318        @ivar tag4: tag 4
319        @type tag4: C{int}
320        @ivar value4: value for tag 4
321        @type value4: C{float}
322        @ivar tag5: tag 5
323        @type tag5: C{int}
324        @ivar value5: value for tag 5
325        @type value5: C{float}
326        @ivar tag6: tag 6
327        @type tag6: C{int}
328        @ivar value6: value for tag 6
329        @type value6: C{float}
330        @ivar tag7: tag 7
331        @type tag7: C{int}
332        @ivar value7: value for tag 7
333        @type value7: C{float}
334        @ivar tag8: tag 8
335        @type tag8: C{int}
336        @ivar value8: value for tag 8
337        @type value8: C{float}
338        @ivar tag9: tag 9
339        @type tag9: C{int}
340        @ivar value9: value for tag 9
341        @type value9: C{float}
342        """
343        def __init__(self,**kwargs):
344            super(SmoothScalarDistributionFromTags, self).__init__(**kwargs)
345            self.declareParameter(domain=None,
346                                  default=0.,
347                                  tag0=None,
348                                  value0=0.,
349                                  tag1=None,
350                                  value1=0.,
351                                  tag2=None,
352                                  value2=0.,
353                                  tag3=None,
354                                  value3=0.,
355                                  tag4=None,
356                                  value4=0.,
357                                  tag5=None,
358                                  value5=0.,
359                                  tag6=None,
360                                  value6=0.,
361                                  tag7=None,
362                                  value7=0.,
363                                  tag8=None,
364                                  value8=0.,
365                                  tag9=None,
366                                  value9=0.)
367    
368    
369        def __update(self,tag,tag_value,value):
370            if self.__pde==None:
371               self.__pde=LinearPDE(self.domain,numSolutions=1)
372            mask=Scalar(0.,Function(self.domain))
373            mask.setTaggedValue(tag,1.)
374            self.__pde.setValue(Y=mask)
375            mask=wherePositive(abs(self.__pde.getRightHandSide()))
376            value*=(1.-mask)
377            value+=tag_value*mask
378            return value
379    
380        def out(self):
381            """
382            returns a L{esys.escript.Data} object
383            Link against this method to get the output of this model.
384            """
385            d=Scalar(self.default,Solution(self.domain))
386            self.__pde=None
387            if not self.tag0 == None: d=self.__update(self.tag0,self.value0,d)
388            if not self.tag1 == None: d=self.__update(self.tag1,self.value1,d)
389            if not self.tag2 == None: d=self.__update(self.tag2,self.value2,d)
390            if not self.tag3 == None: d=self.__update(self.tag3,self.value3,d)
391            if not self.tag4 == None: d=self.__update(self.tag4,self.value4,d)
392            if not self.tag5 == None: d=self.__update(self.tag5,self.value5,d)
393            if not self.tag6 == None: d=self.__update(self.tag6,self.value6,d)
394            if not self.tag7 == None: d=self.__update(self.tag7,self.value7,d)
395            if not self.tag8 == None: d=self.__update(self.tag8,self.value8,d)
396            if not self.tag9 == None: d=self.__update(self.tag9,self.value9,d)
397            return d
398    
399  class LinearCombination(ParameterSet):  class LinearCombination(ParameterSet):
400      """      """
401      Returns a linear combination of the f0*v0+f1*v1+f2*v2+f3*v3+f4*v4      Returns a linear combination of the f0*v0+f1*v1+f2*v2+f3*v3+f4*v4

Legend:
Removed from v.918  
changed lines
  Added in v.927

  ViewVC Help
Powered by ViewVC 1.1.26