/[escript]/release/5.1/doc/examples/geotutorial/steadystate.py
ViewVC logotype

Contents of /release/5.1/doc/examples/geotutorial/steadystate.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6593 - (show annotations)
Mon Jun 5 03:58:43 2017 UTC (4 years, 3 months ago) by jfenwick
File MIME type: text/x-python
File size: 1895 byte(s)
Branching for release 5.1

1 from __future__ import division
2 ##############################################################################
3 #
4 # Copyright (c) 2003-2017 by The University of Queensland
5 # http://www.uq.edu.au
6 #
7 # Primary Business: Queensland, Australia
8 # Licensed under the Apache License, version 2.0
9 # http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Development until 2012 by Earth Systems Science Computational Center (ESSCC)
12 # Development 2012-2013 by School of Earth Sciences
13 # Development from 2014 by Centre for Geoscience Computing (GeoComp)
14 #
15 ##############################################################################
16
17 __copyright__="""Copyright (c) 2003-2017 by The University of Queensland
18 http://www.uq.edu.au
19 Primary Business: Queensland, Australia"""
20 __license__="""Licensed under the Apache License, version 2.0
21 http://www.apache.org/licenses/LICENSE-2.0"""
22 __url__="https://launchpad.net/escript-finley"
23
24 # import tools
25 from esys.escript import *
26 from esys.escript.linearPDEs import LinearPDE
27 try:
28 from esys.dudley import Rectangle
29 HAVE_DUDLEY = True
30 except ImportError:
31 HAVE_DUDLEY = False
32 from esys.weipa import saveVTK
33
34 if not HAVE_DUDLEY:
35 print("Dudley module not available")
36 else:
37 # set dimensions
38 L0=1.;L1=1.
39 # bottom temperature:
40 T_bot=100
41 # location, size and value of heat source
42 xc=[0.3,0.4]; r=0.1; Qc=3000
43 # create domain
44 mydomain=Rectangle(l0=L0,l1=L1,n0=20,n1=20)
45 x=mydomain.getX()
46 k=1
47 # temperature for boundary condition
48 T_D=T_bot/L1*(L1-x[1])
49 # heat source
50 Q=Qc*whereNegative(length(x-xc)-r)
51 # create PDE:
52 mypde=LinearPDE(mydomain)
53 mypde.setSymmetryOn()
54 # set coefficients:
55 mypde.setValue(A=k*kronecker(mydomain),Y=Q, r=T_D, \
56 q=whereZero(x[1])+whereZero(x[1]-L1))
57 # get temperature:
58 T=mypde.getSolution()
59 # write to file:
60 saveVTK("u.vtu",T=T)
61

  ViewVC Help
Powered by ViewVC 1.1.26