by
What advantages has it?
The Reasons for Choosing Python
Python is free
It is object

oriented
It is interpreted
It is operating

system independent
It has an excellent optimization
module
It offers modern COM modules for
interfacing with Solids Works
Getting Started with Python
Python(
x,y
)
package from
http://code.google.com/p/pythonxy
The
Python(
x,y
)
package comes with all numerical and scientific
Python
modules
.
Python(
x,y
)
is
a free scientific and engineering development
software
for
numerical computations
, data analysis and data
visualization
based on
Python
programming language.
Spyder
is
excellent integrated
development environment (IDE).
Index for some packages related to python
http
://pypi.python.org/pypi?%
3Aaction=index
SfePy
is a software for solving systems of coupled partial differential
equations
(PDEs) by the finite element method in 2D and
3D
http://stepy.org
http
://
plateformesn

m2p.ensam.eu/SphinxDoc/cnem/index.html
http
://
femhub.org
/
Since Python is an object

oriented language,
e
verything
one creates in Python is an
object
, including integers, float,
s
trings, arrays, etc.
>>>
i
=4
>>> x=3.56
>>> a=
“hello”
Examples
Associated with objects are methods that act on these objects. By
Typing a ‘dot’ after the object variable name, we can access a list
of methods associated with it.
Examples
>>> a=
“hello”
>>>
a.capitalize
()
‘
Hello
’
Basic Objects
For integers and floats, it is interpreted as the usual addition; for
s
trings it is interpreted in Python as a concatenation. We can reassign
t
he variables.
>>> i=1+2
>>>
i
3
>>>a=
“
hello
”
+
“
world
!”
>>>a
“hello world!”
>>>a=
“
hello”
>>>b=a
>>>print a,b
hello hello
>>>b=
“world!”
>>>print a,b
h
ello world!
Examples
Basic Objects
A list is a collection of other Python objects. Lists can contain a variety
o
f objects (integers, strings,
etc
). They can contain other list objects as
in b= [3,a]. Addition of lists leads to a concatenation as in c=
a+a
. There
is an access to individual elements of a list is through the [] operator (as
In a[2]). The indexing of individual elements f a list starts from 0.
>>> a=[1, 2, “
srt
”]
>>> b=[3,a]
>>> c=
a+a
>>> print
a,b,c
[1, 2, “
str
”][3, [1, 2, “
str
”]][1, 2, “str”,1, 2, “
str
”]
>>> b=a
>>>b[2]=3
>>>print a
[1, 2, 3]
>>> range(5)
[0, 1, 2, 3, 4]
Examples
Lists
Simple Python program in the Editor (e.g. within
Spyder
). You can give
a name, e.g. PythonObjects.py, ‘
py
’ extension refers to a Python file.
# Floats and integers
p
rint
2**10
#2 to the power 10
x=0.5
print
2.5*x/3
# Strings
s=
“Hello World!”
print
3*s
# implies concatenation
# Lists
a
=[0,1,2,3]
# list, not an array or vector
b
=range(4)
# list, with the same contents as a
print
a,b
print 3*a
# implies concatenation
Python Scripts
File
Edit Format Run Options Windows Help
PythonObjects.py

…
The following output appears in the Console window after running
the code PythonObjects.py
1024
0.416666666667
Hello
World!Hello
World!Hello
World!
[0, 1, 2, 3] [0, 1, 2, 3]
[0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]
Output
The following example illustrates the use of ‘for’, ‘if’ and ‘while’
c
ommands in Python.
# Flow control in Python
for
i
in
range
(10):
# does not include 10
if
i
<=4:
print
i
,
i
**2
elif
i
<=7:
print
i,i
**2+1
else:
print
i,i
**2+2
s
=
'

'
while
len
(s)<25:
s+=
'

'
print
s
Flow Control
File
Edit Format Run Options Windows Help
FControl.py

…
The following output appears in the Console window
after running the code FControl.py
0 0
1 1
2 4
3 9
4 16
5 26
6 37
7 50
8 66
9 83

Output
Python provides two commands, namely ‘
raw_input
’ and ‘input’ for user.
The first command returns the user input as a string, while the second
Command will interpret and evaluate the input, and return
the interpreted value if the evaluation is meaningful.
>>> a=
raw_input
(“Enter
data:”
)
Enter data
: 3*4

5
>>> a
'3*4

5'
>>>
a=
input
(“Enter
data
:”
)
Enter data
: 3*4

5
>>> a
7
User Input
There are numerical objects (arrays, dot product,
etc
) and methods
that are not part of the core Python language, but are part of the numpy
and
scipy
libraries/modules. They are installed when we install Python.
However, in order to access them in a script file we must import them.
# Using Pylab
i
mport pylab as
py
#(or e.g.
import numpy as
py
)
x=py.array([0,1,2,3])
# creates an array from a list
y=
x+x
# this is now an addition not concatenation
print
y
a=
py.pi
# the number 3.1415926535897931
theta=
py.arange
(

a,a,0.1)
#
sample from

pi to +pi using
arange
z
=
py.sin
(theta)
# compute sin(theta) for all samples
print
sz.max
()
# find the maximum value
Numerical Python
File
Edit Format Run Options Windows Help
UsingPylab.py

…
The resulting output in the Console window is shown
[0 2 4 6]
0.999923257564
Output
Python also supports the use of complex numbers through the use of
symbol “j” that represents
−
1
.
>>> a=3+4j
>>> a**2
‘(

7+24j)'
>>>
sqrt
(a)
# it is needed to import
N
umerical
P
ython
before
‘(2+1j)
Complex Numbers
Examples
There are numerical objects (arrays, dot product,
etc
) and methods
that are not part of the core Python language, but are part of the numpy
and
scipy
libraries/modules. They are installed when we install Python.
However, in order to access them in a script file we must import them.
# Linear Algebra
i
mport pylab as
py
#(or e.g.
import numpy as
py
)
A
=py.array([[2,

1],[

1,2]])
# creates an array from a list
B=py.array([1,1])
x=
py.solve
(
A,b
)
print
“Solution
for 2x2 problem is”
+
str
(x)
Linear Algebra
File
Edit Format Run Options Windows Help
LinearAlgebra.py

…
# Linear Algebra (continuation)
Lambda, V=
py.eig
(A)
print
“Eigenvalues of matrix are”
+
str
(Lambda)
Print
“Eigenvectors of matrix are
\
n”
+
str
(V)
A=
py.rand
(50,50)
xIn
=
py.rand
(50,1)
B=py.dot(
A,xIn
)
xOut
=
py.solve
(
A,b
)
Err=
py.norm
(
xIn

xOut
)
p
rint
“Error for a random matrix solve is “
+
str
(err)
Linear Algebra (cont.)
File
Edit Format Run Options Windows Help
LinearAlgebra.py

…
Pylab supports 2D and 3D plotting via
matlibplot
(
http://matplot.souceforge.net
) package that can be
Accessed through pylab.
Plots
MatLibPlot.py

…
File
Edit Format Run Options Windows Help
# 2

D plots using Python/Pylab
import
pylab
as
py
p
i=
py.pi
x=
py.arrange
(0,2*
pi,pi
/50)
y=
py.sin
(x)
Z=
py.cos
(x)
p
y.plot
(
x,y
)
p
y.plot
(
x,z
)
py.xlabel
(
“x
”
)
p
y.ylabel
(
“sin(x
)&
cos
(x)”
)
py.legend
(
“sin(x
)’
,
’
cos
(x)”
))
py.savefig
(
“
Fig2.png”
)
py.show
()
The resulting output in the Console window is shown
Plots
One can include multiple functions within a single Python file, and
Access each one of them individually
(a distinct advantage over
Matlab
).
Modules
Example: a file containing multiple functions
SampleFunctions.py

…
File
Edit Format Run Options Windows Help
# Module consists of 1

D functions, and derivatives of some of these
funcs
.
i
mport
pylab
as
py
d
ef
f1(x):
f=

x*
py.exp
(

x**2)
# returns

x*
exp
(

x**2)
return f
d
ef
f1_gradient(x):
g=

py.exp
(x**2)+2*x*x*
py.exp
(

x**2)
# returns the derivative of f
return g
d
ef
f2_hessian(x):
h=6*x*
py.exp
(x**2)

4*x**3*
py.exp
(

x**2)
# return the second derivative of f
The resulting output in the Console window is shown below
>>>
import
SimpleFunctions
>>>
SimpleFunctions.f1(2)

0.036631277777468357
Modules
Python offers a rich set language features for passing arguments into
Functions. We consider the function f1 (together with a testing script)
Function Arguments
FunctionsArguments.py

…
File
Edit Format Run Options Windows Help
# Example to illustrate function arguments
def
f1
(x, a=4, s=‘
hello’
):
print
x, a, s
i
f
__name__==
“__main__”
:
f1(0.3)
f1(x=0.4)
f1(x=0.5,a=5)
f1(0.5, a=5)
f1(x=0.6,s=
“
world”
)
f1(0.6,s=
“
world”
)
f1(s=
“
world”
,a
=7,x=0.7)
The resulting output in the Console window is shown below
0.3 4 hello
0.4 4 hello
0.5 5 hello
0.5 5 hello
0.6 4 world
0.6 4 world
0.7 7 world
Function Arguments
There are a few Python ‘quirks’ that one must keep in mind
>>> 5.0/2
2.5
>>> 5/2
2
>>>
from
__future__
import
division
>>> 5/2
2.5
>>> A=array([[2,1],[1,2]]); x=array([1,

1])
>>> b=A*x
>>> b
a
rray([[2,

1],
[1,

2]]])
# the ‘*’operator is interpreted as
𝑏
=
𝐴
𝑥
>>> b=dot(
A,x
)
>>> b
a
rray([1,

1])
#
the
‘dot’ operator
is interpreted as
𝑏
=
𝐴
𝑥
Python Quirks
Examples
An important concept “class”, in object oriented languages such Python,
Is a collection of objects and methods that are closely related.
import
pylab
as
py
class
Polynomial:
def
__
init
__
(
self,aIn
):
self.a
=
py.array
(
aIn
)
Python Class
def
evaluate
(x):
#v=a[0]+a[1]*
x+a
[2]*x**2+...
v,temp
=0.0,1.0
for
coeff
in
a:
v+=
coeff
*temp
temp*=x
return
v
if __name
__==
"__main__"
:
p=Polynomial([1,

1,2])
a=
p.a
print
a
st
=__
str
__();
print
st
p1=
evaluate
(2.0)
print p1
import
PolynomialClass
from
PolynomialClass
import
Polynomial
def
__
str
__
():
string=
str
(a[0])
for
i
,
coeff
in
enumerate
(a[1:]):
if
coeff
== 0.0:
continue
elif
(
coeff
<0):
sign
=
'

'
else:
sign=
'
+ '
string+=
sign+
str
(
abs
(
coeff
))+
’*x^’
+
str
(i+1)
return
string
PolynomialClass.py
SfePy

software for solving PDEs in
Python
SfePy
is a software for solving systems of
coupled partial differential
equations
(PDEs) by
the finite element method in 2D and 3D
SfePy
can use many terms to build systems of
partial differential equations (PDEs) to be solved
SfePy
comes with a number of examples that can
get you started
Sources :
http://sfepy.org ,
http://femhub.org/
http://plateformesn

m2p.ensam.eu/
SphinxDoc
/
cnem
/index.html
Biot
problem

deformable
porous
mediumm
With using modules/lib.:
numpy, sfepy
Biot problem

deformable
porous medium with the no

penetration boundary
condition on boundary
region
With using modules/libraries:
sfepy.linalg
,
sfepy.mechanics.matcoefs
Linear viscoelasticity with pressure
traction load on surface and constrained
to one

dimensional motion.
The fading memory terms require an
unloaded initial configuration, so the
load starts in the second time step.
With using modules/libraries
sfepy.base.base
sfepy.mechanics.matcoefs
sfepy.homogenization.utils
References
Mark Lutz & David
Ascher
, Learning
Python, O’Reilly, 1999 (Help for
Programmers)
Mark Lutz, Programming Python,
O’Reilly, 2001 (Solutions for Python
Programmers)
Documentations from internet sources
Comments 0
Log in to post a comment