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

Contents of /trunk/escript/py_src/heat.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2158 - (show annotations)
Mon Dec 15 07:17:47 2008 UTC (10 years, 10 months ago) by caltinay
File MIME type: text/x-python
File size: 3404 byte(s)
Assorted spelling, grammar, whitespace and copy/paste error fixes (Part 1).
This commit should be a no-op.

1
2 ########################################################
3 #
4 # Copyright (c) 2003-2008 by University of Queensland
5 # Earth Systems Science Computational Center (ESSCC)
6 # http://www.uq.edu.au/esscc
7 #
8 # Primary Business: Queensland, Australia
9 # Licensed under the Open Software License version 3.0
10 # http://www.opensource.org/licenses/osl-3.0.php
11 #
12 ########################################################
13
14 __copyright__="""Copyright (c) 2003-2008 by University of Queensland
15 Earth Systems Science Computational Center (ESSCC)
16 http://www.uq.edu.au/esscc
17 Primary Business: Queensland, Australia"""
18 __license__="""Licensed under the Open Software License version 3.0
19 http://www.opensource.org/licenses/osl-3.0.php"""
20 __url__="http://www.uq.edu.au/esscc/escript-finley"
21
22 """
23 Some models for heat advection-diffusion
24
25 @var __author__: name of author
26 @var __copyright__: copyrights
27 @var __license__: licence agreement
28 @var __url__: url entry point on documentation
29 @var __version__: version
30 @var __date__: date of the version
31 """
32
33 __author__="Lutz Gross, l.gross@uq.edu.au"
34
35 # from escript import *
36 import util
37 from linearPDEs import TransportPDE
38
39 class TemperatureCartesian(TransportPDE):
40 """
41 solves
42
43 rhocp(T_{,t} + v_i T_{,i} - ( k T_{,i})_i = Q
44
45 k T_{,i}*n_i=surface_flux
46
47 T_{,t} = 0 where given_T_mask>0
48
49 if surface_flux is not given 0 is assumed.
50
51 typical usage:
52
53 sp=TemperatureCartesian(domain)
54 sp.setTolerance(1.e-4)
55 t=0
56 T=...
57 sp.setValues(rhocp = .., v=.., k=.., given_T_mask=..)
58 sp.setInitialTemperature(T)
59 while t < t_end:
60 sp.setValue(Q= ...)
61 T=sp.getTemperature(dt)
62 t+=dt
63 """
64 def __init__(self,domain,theta=0.5,**kwargs):
65 """
66 initializes temperature advection-diffuision problem
67
68 @param domain: domain of the problem
69 @param theta: method control: theta=1. backward Euler
70 theta=0.5: Crank-Nicholson scheme
71 theta=0.: forward Euler (not recommendable)
72 """
73 TransportPDE.__init__(self,domain,numEquations=1,theta=theta,**kwargs)
74 self.setReducedOrderOn()
75 self.__rhocp=None
76 self.__v=None
77
78 def setInitialTemperature(self,T):
79 self.setInitialSolution(T)
80
81 def setValue(self,rhocp=None,v=None,k=None,Q=None,surface_flux=None,given_T_mask=None):
82 if rhocp!=None:
83 self.__rhocp=rhocp
84 if v!=None:
85 self.__v=v
86 if rhocp!=None:
87 super(TemperatureCartesian,self).setValue(M=self.__rhocp)
88 if (rhocp!=None or v!=None) and self.__rhocp!=None and self.__v!=None:
89 super(TemperatureCartesian,self).setValue(C=-self.__rhocp*self.__v)
90 if k!=None:
91 super(TemperatureCartesian,self).setValue(A=-k*util.kronecker(self.getDomain()))
92 if Q!=None:
93 super(TemperatureCartesian,self).setValue(Y=Q)
94 if surface_flux!=None:
95 super(TemperatureCartesian,self).setValue(y=surface_flux)
96 if given_T_mask!=None:
97 super(TemperatureCartesian,self).setValue(q=given_T_mask)
98
99 def getTemperature(self,dt,**kwargs):
100 return self.getSolution(dt,**kwargs)
101

  ViewVC Help
Powered by ViewVC 1.1.26