Beruflich Dokumente
Kultur Dokumente
0
Manual bsico v1.0
Revisin A
Febrero 2012
Ir al ndice
ndice
1 BEGINNING....................................................................................................................3
2 GUI (Graphical User Interface)..........................................................................................5
3 USE...............................................................................................................................8
3.1 Insertion of a block...................................................................................................9
3.1.1 Ports...............................................................................................................12
3.2 Block connections...................................................................................................12
3.3 Multiple selecting and editing...................................................................................13
4 PROGRAMMABLE CODE...................................................................................................15
4.1 Model initialization..................................................................................................17
4.2 Running the simulation............................................................................................18
4.3 Result presentation.................................................................................................19
4.4 Useful Paths...........................................................................................................20
5 EXAMPLES....................................................................................................................22
5.1 Make a first order system using blocks.......................................................................22
5.2 Make a subsystem...................................................................................................24
5.3 Automatic Voltage Regulator....................................................................................27
6 MAKING A LIBRARY BLOCK.............................................................................................30
7 LICENCES.....................................................................................................................34
7.1 Python...................................................................................................................34
7.1.1 History of the software......................................................................................34
7.1.2 Terms and conditions for accessing or otherwise using Python...............................35
7.2 wxPython...............................................................................................................38
7.3 Numpy..................................................................................................................38
7.4 Matplotlib...............................................................................................................39
7.4.1 License...........................................................................................................39
7.4.2 License agreement for matplotlib 1.1.0...............................................................39
7.5 Photon...................................................................................................................40
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
2/41
Ir al ndice
1 BEGINNING
_______________________________________________________
Photon is a tool for the simulation of general purpose dynamic systems to analyze
phenomena in different engineering fields, such as power systems, fluid dynamics, chemical
systems, electrical and electronic circuits, etc. It is designed to address some complex issues in a
simple way and whose analytical solution is hard to find or may not exist. Any system that can be
represented mathematically by differential, algebraic, linear or nonlinear equations, can be
simulated with this tool.
Photon is a simple, fast and effective way to build and simulate tailor-made dynamic
systems using block diagrams.
It presents the distinctive feature of using the powerful simulation engine FreeSim 3.0
developed by Estudios Elctricos. This calculation core is highly optimized with the goal of
maximizing the speed for the calculation process. FreeSim uses different methods and algorithms
to run a simulation in different threads and thus optimizes the use of the computing power
available on multicore PCs.
Photon can build block diagrams, as one would do with a pencil on a sheet of paper, from a
library of build-in blocks that perform almost all necessary operations. If a particular operation
was needed, it is feasible to create it by combining simple blocks from the library. If that was not
enough, the user could create a block in which their behavior is defined programmatically (using
programming language Python 2.x). This allows total flexibility when designing a block diagram.
The library has a dozens of blocks that are classified by categories:
Sources
Lineal
Non-Lineal
Input/Output
Filtering
Complex
Integer
Power System
Manual bsico v1.0 rev:A
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
3/41
Ir al ndice
Within each of these categories there is a battery block that can be used in any diagram.
Photon uses internally the programming language Python 2.x to perform the simulation, and
writing portions of code by the user. For more information related to programming language
issues refer to www.python.org.
Photon can be installed on any PC where Python 2.x works. Some additional packages are
needed such as wxPython, numpy, matplotlib, etc. As a result, this software is multi-platform. It
has been successfully tested on various versions of Windows, Linux and Mac OS X.
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
4/41
Ir al ndice
The interface is highly user-friendly and allows to generate a simple block diagram through
a few clicks.
When developing the software, special attention has been paid to the esthetics of the
diagrams. To this end, rounded shapes, shadows, colors and Bezier curves, which are widely used
by major vector drawing softwares, have been used. All these things combined lead to highdefinition and very pleasant graphics.
The main window has a minimalist design and consists of five areas:
1. Men
2. List of systems and subsystems
3. Canvas
4. Output window
5. Tool bar
Most actions can be performed directly on the canvas with the mouse pointer and using the
context menu. These actions are related to some combination of keys. Once familiarized with
them, the user can perform tasks faster.
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
5/41
Ir al ndice
The list in a tree form on the left side allows to navigate the system. The view of the sheet
corresponds to the selected item in the browser.
The output window shows the different kind of messages that arise during the use of the
software.
All blocks that may be required to generate the needed functionality can be added to the
canvas by simply using the context menu. Blocks "talk" to each other through connections linking
an output port (red) with an input port (green).
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
6/41
Ir al ndice
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
7/41
Ir al ndice
3 USE
_______________________________________________________
The manipulation of the sheet is extremely simple. With the mouse wheel the user can
make zoom over the location at which the mouse pointer. The zoom effect is also achieved
through the key Ctrl and + / - but in this case the focus corresponds to the center of the visible
area of the sheet.
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
8/41
Ir al ndice
Holding down the Shift key the mouse pointer changes to the classic "hand" with which is
possible to drag the sheet to desired position.
The creation of an executable system requires a few simple steps.
1. Inserting necessary blocks of the model.
2. Connecting blocks.
3. Model initialization.
4. Running simulation.
5. Viewing results.
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
9/41
Ir al ndice
After inserting a block can be moved or resized. These actions are performed by dragging
the handles that appear at the corners of the block when it is selected.
Pressing the Ctrl key after starting the drag will appear two lines, one horizontal and one
vertical, that intersect at the original site where it was the handle and they are useful as a guide
to a movement in one direction. This feature is extensible to any handle either a block or line.
All blocks have parameters that characterize them. They are displayed when is selected the
Edit block... from context menu of the block (or double-clicking on the block).
In the case of a subsystem, the behavior before the event "double click" on it is different:
if the subsystem has not defined a mask -> "double click" enters the subsystem
if the subsystem has defined a mask -> "double click" open edit mask dialog
if the subsystem has defined a mask -> "Ctrl+doble click" enters the subsystem
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
10/41
Ir al ndice
Within the Mask tab are displayed all editable parameters that are specific of the type of
block being edited.
Within the General tab are displayed the ID of the block (not editable) and the name of the
block. The name must be unique among all blocks belonging to a system. Attempting to use a
name already used, the software automatically adds a number as a suffix.
Within the Description tab is displayed the particular help of each block, indicating what is
the function.
Within the Graphics tab are displayed block parameters related to graphics issues. Both the
position and size of the block are given in pixels.
There are two controls of type "drop-down lists" that allow you to define whether the name
of the block is shown or not and whether the parameter list is shown or not on the sheet.
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
11/41
Ir al ndice
3.1.1 Ports
Ports define the interface of the block (along with its mask). They are define the input and
output signals of blocks.
Input ports are drawn as green circle. The output ports are red circles.
Every port has a unique number for the type that is (input or output type). For example, a
block can not have two input ports numbered with "0", but yes a port "0" as input and a "0" as
output.
Most of library blocks have their ports already defined and therefore can not be modified the
number or type.
Some blocks need to define certain characteristics of their ports. For example a Sum could
have some input ports suming and others subtracting, or more inputs than it has by default.
To add a port, if the block allows, it is used the contextual menu option in the block.
To edit a port is used the context menu on it or double click.
Using the Edit window can be selected the type of port I / O, number, symbol, the side
where it will reside and a name and a description if necessary.
The data type is defined by the block type to which the port belongs.
In the case of subsystems, the type is selectable via a dropdown list.
3.2 Block connections
To create a line, simply by dragging with the mouse from an output port (red) to a free
input (green). When you release the mouse button on a free input port, automatically draws
Bezier type line. Several lines may start in an output port, but only one line can ends to a
input port.
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
12/41
Ir al ndice
Handles can be selected and moved to change the look of the line. New handles can be
added by double-click on the line to generate different curvatures. As a recommendation, take a
few seconds "decorating" the block diagram and see how attractive it results.
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
13/41
Ir al ndice
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
14/41
Ir al ndice
4 PROGRAMMABLE CODE
_______________________________________________________
To achieve a simulation, the software builds intermediately and transparent for the user a
script written in pure Python 2.x.
In this script there are parts which are customizable by the user. These customizable pieces
of code are identified as:
Execution code,
Post script,
Initial conditions,
module import,
Initial code,
class functions.
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
15/41
Ir al ndice
Each of these six items mentioned above are represented by a tab in the window "Edit
Python Code" and the portion of code that is written there will be transcribed to the appropriate
place in the script generated by the software at the time of execution.
Below is shown the script template and places on it where every piece of code written by the
user will be transcribed. It is important to note that each of these parts have different scopes for
its variables.
Esqueleto de script
...
...
# Importacin de mdulos
class MainSystem(freesim.System):
def __init__(self, ....):
# Codigo inicial
(creacin de los objetos)
...
def calcInit(self):
# Condiciones iniciales
...
# Funciones de clase del usuario
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
16/41
The code in class functions tab must be defined with the following structure:
Ir al ndice
def NombreDeFuncion1(self,...):
...
def NombreDeFuncion2(self,...):
...
def NombreDeFuncionN(self,...):
...
There is no limitation on the quantity of functions that can be created, depending on the
needs of problem to solve.
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
17/41
Ir al ndice
The most rudimentary form of initialization would be to write the value in the text box on
the mask.
In case It is needed to make some extra calculation can be performed in the Initial
Conditions tab in the edit window python code.
Within the Initial Conditions tab you can write code in Python 2.x. This portion of code is
part of the body of a class function called calcInit that receives a system reference called self.
Internally, the software builds a function as follows:
def calcInit(self):
(cdigo escrito por el usuario en la seccin Condiciones iniciales)
There is no methodical way to calculate initial conditions. The user must inspect the block
diagram and from there decide the methodology to apply in each case.
Typically, blocks with integrators require calculate their initial conditions.
For example, if the MainSystem has an integrator called Int, the initial condition it would be
forced to a value with the following line of code.
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
18/41
Ir al ndice
self.initSim(runstep=0.001)
self.run(10.0)
The above code initializes the simulation, define the integration step in 0.001 seconds and
simulate 10.0 seconds.
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
19/41
Ir al ndice
Within the namespace where the PostScript function is executed are defined the following
aliases:
np for numpy
d = self.getSimuDict()
plt.plot(d.t, d.out,'b')
plt.grid()
plt.show()
The last line of code is required to show the figure in a window.
Post Script section can be run independently of the simulation as many times as desired, if
at least once has been run whole simulation. This allows make changes to present the results
without need of re-simulate. Is important to note that changes in block parameters, connections,
etc. cause need of re-simulate to make valid the observed results.
4.4 Useful Paths
There is a configuration file called "config.txt" which contains some important paths in XML
format and is located in the same folder as the application.
If Photon is run and this file is not found, it will be automatically created with some default
values. Then the user could edit the file with any text editor and change it.
The path section might look as follows:
<PATHS>
<PATH key="$APPPATH$" value="C:\Python27\Lib\site-packages\Photon"/>
<PATH key="$LIBPATH$" value="C:\Python27\Lib\site-packages\Photon\Libreria"/>
<PATH key="$UTILSPATH$" value="C:\Python27\Lib\site-packages\Photon\utils"/>
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
20/41
Ir al ndice
</PATHS>
The keys $LIBPATH$, $APPPATH$ y $UTILSPATH$ could be used to create paths relative to
them.
For example if it is wanted to open a file called ejemplo.ph3, inside a subsystem block,
that is located in the folder defined as Libreria, it could be use for the property file on the
General tab of the subsystem:
C:\Python27\Lib\site-packages\Photon\Libreria\ejemplo.ph3
or
$LIBPATH$\ejemplo.ph3
import misFunciones
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
21/41
Ir al ndice
5 EXAMPLES
_______________________________________________________
The initial condition of the integrator called Int is defined equal to zero. This value can be
directly loaded in the block mask.
The execution code could be as follows:
self.initSim(0.001)
self.run(10.0)
d = self.getSimuDict()
plt.plot(d.t, d.inp,'g', d.t, d.output,'b')
plt.grid()
plt.xlabel('t [seg]')
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
22/41
Ir al ndice
To automate the calculation of the initial condition of the integrator, following line could be
added in the initial conditions section.
self.Int.x0 = self.Step.value1
In this way the initial condition of Int always be the initial value of Step.
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
23/41
Ir al ndice
In the figure 5.4 is shown the content of subsystem. The green block represents an input
and red one is an output.
When a block type System is added to MainSystem, it does not have any ports. They should
be added using the context menu.
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
24/41
Ir al ndice
recorded by the Scope of Figure 5.3 called output. Graphically, one might think that linking occurs
as follows:
The Spy out option in context menu automatically builds the external interface of
subsystem from its content. This means that for every Input block and Output block inside the
subsystem will be created a corresponding external port.
Obviously the result of the simulation is exactly the same as in the example of point 5.1 .
Script tabs would be as follows.
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
25/41
Ir al ndice
The concept of subsystems allows to create libraries. All subsystems that share the interface
(or part of it depending on the case) may be interchangeable.
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
26/41
Ir al ndice
It begins with the design of the block diagram on a blank sheet inside of a subsystem. After
adding necessary blocks should looks like Figure 5.10.
To construct the mask of Figure 5.9 the Edit Mask window should look like this:
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
27/41
Ir al ndice
The text box "Description" contains the text that will appears as help on Description tab
when editing the model.
The next step is to define how initial conditions are calculated
In this case it is considered that the output "0" (Efd) and the entries "0" (Ug), "2" (Ifd) and
"3" (Vuel) are fixed values from the outside and they are considered as boundary conditions of
Manual bsico v1.0 rev:A
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
28/41
Ir al ndice
the block. From these are calculated the appropriate values for the system state variables and the
input value "1" (Vref).
After that it is necessary to make ports visible from outside of block. One way to do that is
manually one by one, or using the "Spy out" option.
self.AC4A.calcInit()
The appropriate order is which ensure that the values of the output "0" (Efd) and the inputs
"0" (Ug), "2" (Ifd) and "3" (Vuel) have been calculated previously.
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
29/41
Ir al ndice
Library blocks are useful to reuse models already made and saved into a file. A library block
could be any System which has defined a mask and an automated way to calculate the initial
conditions of all the internal states, and those of the required inputs and outputs.
It is possible to reuse existing block diagrams by including a System block which get its
contents from a previously saved file.
To create a subsystem that works as a library block, it should works correctly regardless of
where it is located. For that, it is necessary make the mask and calculate correctly the initial
conditions in terms of boundary conditions.
Steps:
1. Make the subsystem: as example is used the subsistem shown in figure 5.3.
2. Make the mask: it is considered that time constant is configurable.
Add an item with the '+' button and edit it to make it as shown in following figure
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
30/41
Ir al ndice
3. Now, variable "T" can be used inside the subsystem and take the value that is
entered in the mask. Then modify Cond block and replace the value 0.5 with the
variable name "T".
Masks variables are passed as arguments to the constructor of the object at run
time. If the value of "T" is needed at runtime, for example in the initialization code,
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
31/41
Ir al ndice
one should use the following expression: self.Cond.gain. This is because the value
"0.5" assigned to "T" is redirected to the parameter "gain" of "Cond" block.
4. The next step is to initialize the subsystem. Assume that the input is fixed by the
host and then it is a known value. It could have happened that the output value is
known, but that case was not referred to in this example.
It is important to note that the line of code forces the initial condition of the
integrator to take the value of the input 0 of the subsystem.
There are some useful functions:
- self.GetInput(n port) : gets the value of the given input port
- self.GetOutput(n port) : gets the value of the given output port
- self.SetInput(n port, value) : sets the value of the given input port
- self.SetOutput(n port, value) : sets the value of the given output port
5. From MainSystem (who is the father of subsystem) is necessary to call calcInit()
function of subsystem after ensuring that the value of its input is fixed.
self.subsystem.SetInput(0, self.Step.value1)
self.subsystem.calcInit()
The first line set the correct value of the input subsystem. The second line asks for
calculate the initial conditions of the subsystem shown in figure 6.6.
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
32/41
Ir al ndice
6. To create a library block from this subsystem must save the system from the context
menu.
Assuming that the file was saved with the name sub_PT1.ph3, this file becomes in
a library block because it can be used anywhere, simply adding a subsystem block
and indicating that the content comes from sub_PT1.ph3 file.
The content of any subsystem that is linked to a file is read only and the only
way to be modified is by opening itself as main system.
7. From this moment "file" property of the subsystem and its content is linked to the
selected file. Empty file property to unlink.
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
33/41
Ir al ndice
7 LICENCES
_______________________________________________________
7.1 Python
Derived from
Year
Owner
GPL compatible?
n/a
1991-1995
CWI
yes
1.2
1995-1999
CNRI
yes
1.6
1.5.2
2000
CNRI
no
2.0
1.6
2000
BeOpen.com no
1.6.1
1.6
2001
CNRI
no
2.1
2.0+1.6.1
2001
PSF
no
2.0.1
2.0+1.6.1
2001
PSF
yes
2.1.1
2.1+2.0.1
2001
PSF
yes
2.2
2.1.1
2001
PSF
yes
2.1.2
2.1.1
2002
PSF
yes
2.1.3
2.1.2
2002
PSF
yes
2.2.1
2.2
2002
PSF
yes
2.2.2
2.2.1
2002
PSF
yes
2.2.3
2.2.2
2002-2003
PSF
yes
2.3
2.2.2
2002-2003
PSF
yes
2.3.1
2.3
2002-2003
PSF
yes
2.3.2
2.3.1
2003
PSF
yes
2.3.3
2.3.2
2003
PSF
yes
2.3.4
2.3.3
2004
PSF
yes
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
34/41
Ir al ndice
Release
Derived from
Year
Owner
GPL compatible?
2.3.5
2.3.4
2005
PSF
yes
2.4
2.3
2004
PSF
yes
2.4.1
2.4
2005
PSF
yes
2.4.2
2.4.1
2005
PSF
yes
2.4.3
2.4.2
2006
PSF
yes
2.4.4
2.4.3
2006
PSF
yes
2.5
2.4
2006
PSF
yes
2.5.1
2.5
2007
PSF
yes
2.5.2
2.5.1
2008
PSF
yes
2.5.3
2.5.2
2008
PSF
yes
2.6
2.5
2008
PSF
yes
2.6.1
2.6
2008
PSF
yes
2.6.2
2.6.1
2009
PSF
yes
2.6.3
2.6.2
2009
PSF
yes
2.6.4
2.6.3
2010
PSF
yes
2.7
2.6
2010
PSF
yes
Note
GPL-compatible doesnt mean that were distributing Python under the GPL. All Python licenses, unlike the GPL,
let you distribute a modified version without making your changes open source. The GPL-compatible licenses
make it possible to combine Python with other software that is released under the GPL; the others dont.
Thanks to the many outside volunteers who have worked under Guidos direction to make these releases
possible.
7.1.2 Terms and conditions for accessing or otherwise using Python
PSF LICENSE AGREEMENT FOR PYTHON 2.7.2
1. This LICENSE AGREEMENT is between the Python Software Foundation (PSF), and the Individual or
Organization (Licensee) accessing and otherwise using Python 2.7.2 software in source or binary form
and its associated documentation.
2. Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a
nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display
publicly, prepare derivative works, distribute, and otherwise use Python 2.7.2 alone or in any derivative
version, provided, however, that PSFs License Agreement and PSFs notice of copyright, i.e., Copyright
2001-2010 Python Software Foundation; All Rights Reserved are retained in Python 2.7.2 alone or in
any derivative version prepared by Licensee.
3. In the event Licensee prepares a derivative work that is based on or incorporates Python 2.7.2 or any
part thereof, and wants to make the derivative work available to others as provided herein, then
Licensee hereby agrees to include in any such work a brief summary of the changes made to Python
2.7.2.
4. PSF is making Python 2.7.2 available to Licensee on an AS IS basis. PSF MAKES NO
REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT
LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
35/41
Ir al ndice
5.
6.
7.
8.
1. This LICENSE AGREEMENT is between BeOpen.com (BeOpen), having an office at 160 Saratoga
Avenue, Santa Clara, CA 95051, and the Individual or Organization (Licensee) accessing and
otherwise using this software in source or binary form and its associated documentation (the Software).
2. Subject to the terms and conditions of this BeOpen Python License Agreement, BeOpen hereby grants
Licensee a non-exclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or
display publicly, prepare derivative works, distribute, and otherwise use the Software alone or in any
derivative version, provided, however, that the BeOpen Python License is retained in the Software, alone
or in any derivative version prepared by Licensee.
3. BeOpen is making the Software available to Licensee on an AS IS basis. BEOPEN MAKES NO
REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT
LIMITATION, BEOPEN MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF
MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE
SOFTWARE WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE SOFTWARE FOR
ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF USING,
MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY DERIVATIVE THEREOF, EVEN IF
ADVISED OF THE POSSIBILITY THEREOF.
5. This License Agreement will automatically terminate upon a material breach of its terms and conditions.
6. This License Agreement shall be governed by and interpreted in all respects by the law of the State of
California, excluding conflict of law provisions. Nothing in this License Agreement shall be deemed to
create any relationship of agency, partnership, or joint venture between BeOpen and Licensee. This
License Agreement does not grant permission to use BeOpen trademarks or trade names in a
trademark sense to endorse or promote products or services of Licensee, or any third party. As an
exception, the BeOpen Python logos available at http://www.pythonlabs.com/logos.html may be used
according to the permissions granted on that web page.
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
36/41
Ir al ndice
7. By copying, installing or otherwise using the software, Licensee agrees to be bound by the terms and
conditions of this License Agreement.
CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1
1. This LICENSE AGREEMENT is between the Corporation for National Research Initiatives, having an
office at 1895 Preston White Drive, Reston, VA 20191 (CNRI), and the Individual or Organization
(Licensee) accessing and otherwise using Python 1.6.1 software in source or binary form and its
associated documentation.
2. Subject to the terms and conditions of this License Agreement, CNRI hereby grants Licensee a
nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display
publicly, prepare derivative works, distribute, and otherwise use Python 1.6.1 alone or in any derivative
version, provided, however, that CNRIs License Agreement and CNRIs notice of copyright, i.e.,
Copyright 1995-2001 Corporation for National Research Initiatives; All Rights Reserved are retained
in Python 1.6.1 alone or in any derivative version prepared by Licensee. Alternately, in lieu of CNRIs
License Agreement, Licensee may substitute the following text (omitting the quotes): Python 1.6.1 is
made available subject to the terms and conditions in CNRIs License Agreement. This Agreement
together with Python 1.6.1 may be located on the Internet using the following unique, persistent identifier
(known as a handle): 1895.22/1013. This Agreement may also be obtained from a proxy server on the
Internet using the following URL: http://hdl.handle.net/1895.22/1013.
3. In the event Licensee prepares a derivative work that is based on or incorporates Python 1.6.1 or any
part thereof, and wants to make the derivative work available to others as provided herein, then
Licensee hereby agrees to include in any such work a brief summary of the changes made to Python
1.6.1.
4. CNRI is making Python 1.6.1 available to Licensee on an AS IS basis. CNRI MAKES NO
REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT
LIMITATION, CNRI MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF
MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF
PYTHON 1.6.1 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON 1.6.1 FOR ANY
INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING,
DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1, OR ANY DERIVATIVE THEREOF, EVEN IF
ADVISED OF THE POSSIBILITY THEREOF.
6. This License Agreement will automatically terminate upon a material breach of its terms and conditions.
7. This License Agreement shall be governed by the federal intellectual property law of the United States,
including without limitation the federal copyright law, and, to the extent such U.S. federal law does not
apply, by the law of the Commonwealth of Virginia, excluding Virginias conflict of law provisions.
Notwithstanding the foregoing, with regard to derivative works based on Python 1.6.1 that incorporate
non-separable material that was previously distributed under the GNU General Public License (GPL), the
law of the Commonwealth of Virginia shall govern this License Agreement only as to issues arising
under or with respect to Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this License
Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between
CNRI and Licensee. This License Agreement does not grant permission to use CNRI trademarks or
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
37/41
Ir al ndice
trade name in a trademark sense to endorse or promote products or services of Licensee, or any third
party.
8. By clicking on the ACCEPT button where indicated, or by copying, installing or otherwise using Python
1.6.1, Licensee agrees to be bound by the terms and conditions of this License Agreement.
ACCEPT
CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2
Copyright 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, The Netherlands. All rights reserved.
Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without
fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright
notice and this permission notice appear in supporting documentation, and that the name of Stichting
Mathematisch Centrum or CWI not be used in advertising or publicity pertaining to distribution of the software
without specific, written prior permission.
STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE
7.2 wxPython
7.3 Numpy
Copyright (c) 2005, NumPy Developers
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided
that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the
following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of the NumPy Developers nor the names of any contributors may be used to endorse
or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
Manual bsico v1.0 rev:A
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
38/41
Ir al ndice
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
OF SUCH DAMAGE.
7.4 Matplotlib
7.4.1 License
Matplotlib only uses BSD compatible code, and its license is based on the PSF license. See the Open
Source Initiative licenses page for details on individual licenses. Non-BSD compatible licenses (eg LGPL) are
acceptable in matplotlib Toolkits. For a discussion of the motivations behind the licencing choice, see Licenses.
7.4.2 License agreement for matplotlib 1.1.0
1. This LICENSE AGREEMENT is between John D. Hunter (JDH), and the Individual or Organization
(Licensee) accessing and otherwise using matplotlib software in source or binary form and its associated
documentation.
2. Subject to the terms and conditions of this License Agreement, JDH hereby grants Licensee a
nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly,
prepare derivative works, distribute, and otherwise use matplotlib 1.1.0 alone or in any derivative version,
provided, however, that JDHs License Agreement and JDHs notice of copyright, i.e., Copyright (c) 2002-2009
John D. Hunter; All Rights Reserved are retained in matplotlib 1.1.0 alone or in any derivative version prepared
by Licensee.
3. In the event Licensee prepares a derivative work that is based on or incorporates matplotlib 1.1.0 or any
part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby
agrees to include in any such work a brief summary of the changes made to matplotlib 1.1.0.
4. JDH is making matplotlib 1.1.0 available to Licensee on an AS IS basis. JDH MAKES NO
REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT
LIMITATION, JDH MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF
MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF MATPLOTLIB
1.1.0 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
5. JDH SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF MATPLOTLIB 1.1.0 FOR
ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING,
DISTRIBUTING, OR OTHERWISE USING MATPLOTLIB 1.1.0, OR ANY DERIVATIVE THEREOF, EVEN IF
ADVISED OF THE POSSIBILITY THEREOF.
6. This License Agreement will automatically terminate upon a material breach of its terms and conditions.
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
39/41
Ir al ndice
7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or
joint venture between JDH and Licensee. This License Agreement does not grant permission to use JDH
trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any
third party.
8. By copying, installing or otherwise using matplotlib 1.1.0, Licensee agrees to be bound by the terms and
conditions of this License Agreement.
7.5 Photon
El programa se distribuye bajo licencia de Estudios Elctricos S.R.L. de Argentina (EE). No est permitido
revender el programa ni redistribuirlo sin el previo consentimiento de EE. El cdigo fuente del programa, los
algoritmos de clculo, etc, estn protegidos por las leyes de propiedad intelectual, si bien el programa est
desarrollado con herramientas de libre distribucin no est permitido el uso de ningn mtodo de ingeniera
inversa para obtener dicho cdigo fuente.
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
40/41
Ir al ndice
Copies of this document are not allowed without prior written authorization by
ESTUDIOS ELECTRICOS SRL
41/41