202 |
|
|
203 |
class ScalarDistributionFromTags(ParameterSet): |
class ScalarDistributionFromTags(ParameterSet): |
204 |
""" |
""" |
205 |
creates a scalar distribution on a domain from tags |
creates a scalar distribution on a domain from tags, If tag_map is given |
206 |
|
the tags can be given a names and tag_map is used to map it into domain tags. |
207 |
|
|
208 |
@ivar domain: domain |
@ivar domain: domain |
209 |
@type domain: L{esys.escript.Domain} |
@type domain: L{esys.escript.Domain} |
210 |
|
@ivar tag_map: maping from names to tags |
211 |
|
@type tag_map: L{esys.pycad.TagMap} |
212 |
@ivar default: default value |
@ivar default: default value |
213 |
@ivar tag0: tag 0 |
@ivar tag0: tag 0 |
214 |
@type tag0: C{int} |
@type tag0: C{int} |
254 |
def __init__(self,**kwargs): |
def __init__(self,**kwargs): |
255 |
super(ScalarDistributionFromTags, self).__init__(**kwargs) |
super(ScalarDistributionFromTags, self).__init__(**kwargs) |
256 |
self.declareParameter(domain=None, |
self.declareParameter(domain=None, |
257 |
|
tag_map=None, |
258 |
default=0., |
default=0., |
259 |
tag0=None, |
tag0=None, |
260 |
value0=0., |
value0=0., |
284 |
Link against this method to get the output of this model. |
Link against this method to get the output of this model. |
285 |
""" |
""" |
286 |
d=Scalar(self.default,Function(self.domain)) |
d=Scalar(self.default,Function(self.domain)) |
287 |
if not self.tag0 == None: d.setTaggedValue(self.tag0,self.value0) |
if self.tag_map == None: |
288 |
if not self.tag1 == None: d.setTaggedValue(self.tag1,self.value1) |
if not self.tag0 == None: d.setTaggedValue(self.tag0,self.value0) |
289 |
if not self.tag2 == None: d.setTaggedValue(self.tag2,self.value2) |
if not self.tag1 == None: d.setTaggedValue(self.tag1,self.value1) |
290 |
if not self.tag3 == None: d.setTaggedValue(self.tag3,self.value3) |
if not self.tag2 == None: d.setTaggedValue(self.tag2,self.value2) |
291 |
if not self.tag4 == None: d.setTaggedValue(self.tag4,self.value4) |
if not self.tag3 == None: d.setTaggedValue(self.tag3,self.value3) |
292 |
if not self.tag5 == None: d.setTaggedValue(self.tag5,self.value5) |
if not self.tag4 == None: d.setTaggedValue(self.tag4,self.value4) |
293 |
if not self.tag6 == None: d.setTaggedValue(self.tag6,self.value6) |
if not self.tag5 == None: d.setTaggedValue(self.tag5,self.value5) |
294 |
if not self.tag7 == None: d.setTaggedValue(self.tag7,self.value7) |
if not self.tag6 == None: d.setTaggedValue(self.tag6,self.value6) |
295 |
if not self.tag8 == None: d.setTaggedValue(self.tag8,self.value8) |
if not self.tag7 == None: d.setTaggedValue(self.tag7,self.value7) |
296 |
if not self.tag9 == None: d.setTaggedValue(self.tag9,self.value9) |
if not self.tag8 == None: d.setTaggedValue(self.tag8,self.value8) |
297 |
print d |
if not self.tag9 == None: d.setTaggedValue(self.tag9,self.value9) |
298 |
|
else: |
299 |
|
args={} |
300 |
|
if not self.tag0 == None: args[self.tag0]=self.value0 |
301 |
|
if not self.tag1 == None: args[self.tag1]=self.value1 |
302 |
|
if not self.tag2 == None: args[self.tag2]=self.value2 |
303 |
|
if not self.tag3 == None: args[self.tag3]=self.value3 |
304 |
|
if not self.tag4 == None: args[self.tag4]=self.value4 |
305 |
|
if not self.tag5 == None: args[self.tag5]=self.value5 |
306 |
|
if not self.tag6 == None: args[self.tag6]=self.value6 |
307 |
|
if not self.tag7 == None: args[self.tag7]=self.value7 |
308 |
|
if not self.tag8 == None: args[self.tag8]=self.value8 |
309 |
|
if not self.tag9 == None: args[self.tag9]=self.value9 |
310 |
|
self.tag_map.insert(d,**args) |
311 |
return d |
return d |
312 |
|
|
313 |
class SmoothScalarDistributionFromTags(ParameterSet): |
class SmoothScalarDistributionFromTags(ParameterSet): |
316 |
|
|
317 |
@ivar domain: domain |
@ivar domain: domain |
318 |
@type domain: L{esys.escript.Domain} |
@type domain: L{esys.escript.Domain} |
319 |
|
@ivar tag_map: maping from names to tags |
320 |
|
@type tag_map: L{esys.pycad.TagMap} |
321 |
@ivar default: default value |
@ivar default: default value |
322 |
@ivar tag0: tag 0 |
@ivar tag0: tag 0 |
323 |
@type tag0: C{int} |
@type tag0: C{int} |
390 |
if self.__pde==None: |
if self.__pde==None: |
391 |
self.__pde=LinearPDE(self.domain,numSolutions=1) |
self.__pde=LinearPDE(self.domain,numSolutions=1) |
392 |
mask=Scalar(0.,Function(self.domain)) |
mask=Scalar(0.,Function(self.domain)) |
393 |
mask.setTaggedValue(tag,1.) |
if self.tag_map == None: |
394 |
|
mask.setTaggedValue(tag,1.) |
395 |
|
else: |
396 |
|
self.tag_map.insert(mask,**{tag:tag_value}) |
397 |
self.__pde.setValue(Y=mask) |
self.__pde.setValue(Y=mask) |
398 |
mask=wherePositive(abs(self.__pde.getRightHandSide())) |
mask=wherePositive(abs(self.__pde.getRightHandSide())) |
399 |
value*=(1.-mask) |
value*=(1.-mask) |