/[escript]/trunk/doc/examples/cookbook/cblib2.py
ViewVC logotype

Contents of /trunk/doc/examples/cookbook/cblib2.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2706 - (show annotations)
Fri Oct 2 02:15:04 2009 UTC (9 years, 10 months ago) by jfenwick
File MIME type: text/x-python
File size: 3163 byte(s)
Perhaps this will stop the cookbook from hating me.


1 ########################################################
2 #
3 # Copyright (c) 2009 by University of Queensland
4 # Earth Systems Science Computational Center (ESSCC)
5 # http://www.uq.edu.au/esscc
6 #
7 # Primary Business: Queensland, Australia
8 # Licensed under the Open Software License version 3.0
9 # http://www.opensource.org/licenses/osl-3.0.php
10 #
11 ########################################################
12
13 __copyright__="""Copyright (c) 2009 by University of Queensland
14 Earth Systems Science Computational Center (ESSCC)
15 http://www.uq.edu.au/esscc
16 Primary Business: Queensland, Australia"""
17 __license__="""Licensed under the Open Software License version 3.0
18 http://www.opensource.org/licenses/osl-3.0.php"""
19 __url__="https://launchpad.net/escript-finley"
20
21 """
22 Additional routines using matplotlib for cookbook examples.
23 Author: Antony Hallam antony.hallam@uqconnect.edu.au
24 """
25
26 #Please ensure that if you need to use the agg back-end that you have chosen it before
27 #calling functions in this file
28
29 import numpy as np
30 # Calculate the location of quivers for a matplotlib plot
31 # quivshape :: [x,y] :: number of quivers in x and y direction
32 # lenxax :: length of model along x
33 # lenyax :: length of model along y
34 # qu :: gradient of escript solution ie grad(T)
35 def toQuivLocs(quivshape,lenxax,lenyax,qu):
36 numquiv = quivshape[0]*quivshape[1] # total number of quivers
37 dx = lenxax/quivshape[0]+1. # quiver x spacing
38 dy = lenyax/quivshape[1]+1. # quiver y spacing
39 qulocs=np.zeros([numquiv,2],float) # memory for quiver locations
40 # fill qulocs
41 for i in range(0,quivshape[0]-1):
42 for j in range(0,quivshape[1]-1):
43 qulocs[i*quivshape[0]+j,:] = [dx+dx*i,dy+dy*j]
44 # retreive values for quivers direction and shape from qu
45 quL = Locator(qu.getFunctionSpace(),qulocs.tolist())
46 qu = quL(qu) #array of dx,dy for quivers
47 qu = np.array(qu) #turn into a numpy array
48 qulocs = quL.getX() #returns actual locations from data
49 qulocs = np.array(qulocs) #turn into a numpy array
50 return qu,qulocs
51
52
53
54
55 # Extract the X and Y coordinates of an array
56 # coords :: escript coordiantes from .getX function
57 def toXYTuple(coords):
58 coords = np.array(coords.toListOfTuples()) #convert to Tuple
59 coordX = coords[:,0]; coordY = coords[:,1] #X and Y components.
60 return coordX,coordY
61
62 def toRegGrid(grid,domain,newx,newy,width,depth):
63 import pylab as pl
64 oldspacecoords=domain.getX()
65 gridT = grid.toListOfTuples(scalarastuple=False)
66 cxy = Data(oldspacecoords, grid.getFunctionSpace())
67 cX, cY = toXYTuple(cxy)
68 xi = np.linspace(0.0,width,newx)
69 yi = np.linspace(depth,0.0,newy)
70 # grid the data.
71 zi = pl.matplotlib.mlab.griddata(cX,cY,gridT,xi,yi)
72 return xi,yi,zi
73
74 def gradtoRegGrid(grid,domain,newx,newy,width,depth,dim):
75 import pylab as pl
76 cxy = grid.getFunctionSpace().getX()
77 gridT = grid.toListOfTuples()#(scalarastuple=False)
78 #cxy = Data(oldspacecoords, grid.getFunctionSpace())
79 cX, cY = toXYTuple(cxy)
80 xi = np.linspace(0.0,width,newx)
81 yi = np.linspace(depth,0.0,newy)
82
83 gridT = np.array(gridT)
84 gridT = gridT[:,dim]
85
86 # grid the data.
87
88 zi = pl.matplotlib.mlab.griddata(cX,cY,gridT,xi,yi)
89 return xi,yi,zi

  ViewVC Help
Powered by ViewVC 1.1.26