Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
EChem++An Open Source Project for Computational
Electrochemistry
Kai Ludwig, Bernd Speiser
Universitat Tubingen
Institut fur Organische Chemie, Tubingen, Germany
EChem++ – p.1
Presentation Contents
Project Description & Profile
Technical Concepts
State of Development:Object Oriented Analysis & DesignExamples
Project Organization
EChem++ – p.2
Presentation Contents
Project Description & Profile
Technical Concepts
State of Development:Object Oriented Analysis & DesignExamples
Project Organization
EChem++ – p.2
Project Description & Profile
Problem Solving Environment (PSE)for Computational Electrochemistry
Bieniasz, 2002 :
“The term PSE denotes a computer program that pro-
vides all the computational facilities necessary to solve
a target class of problems, conveniently and efficiently”
EChem++ – p.3
Project Description & Profile
Problem Solving Environment (PSE)for Computational Electrochemistry
Bieniasz, 2002 :
“The term PSE denotes a computer program that pro-
vides all the computational facilities necessary to solve
a target class of problems, conveniently and efficiently”
EChem++ – p.3
Project Description & ProfileRequirements
control of experiments
modelling & simulation
data analysis
system analysis control of experiments
modelling & simulation
data analysis
system analysis
EChem++
EChem++ – p.4
Project Description & ProfileRequirements
control of experiments
modelling & simulation
data analysis
system analysis
control of experiments
modelling & simulation
data analysis
system analysis
EChem++
EChem++ – p.4
Project Description & ProfileRequirements
control of experiments
modelling & simulation
data analysis
system analysis control of experiments
modelling & simulation
data analysis
system analysis
EChem++
EChem++ – p.4
Presentation Contents
Project Description & Profile
Technical Concepts
State of Development:Object Oriented Analysis & DesignExamples
Project Organization
EChem++ – p.5
Technical ConceptsObject Oriented Programming (OOP)
responsibility-driven design
data hiding Mother Child
clean_the_room()
“... we have a universe of well-behaved objects that courteously
ask each other to carry out their various desires” [Ingalls,1981]
class Mother
public: clean_the_house();
private: Child bart;
class Child
public: clean_the_room();
private: Room room; // cleaning stuff ...
bart.clean the room()
Father
class Father
public: clean_the_house();
private: Child bart;
class Child
public: clean_the_room();
private: Room room; // cleaning stuff ...BLACK BOX
EChem++ – p.6
Technical ConceptsObject Oriented Programming (OOP)
responsibility-driven design
data hiding
Mother Child clean_the_room()
“... we have a universe of well-behaved objects that courteously
ask each other to carry out their various desires” [Ingalls,1981]
class Mother
public: clean_the_house();
private: Child bart;
class Child
public: clean_the_room();
private: Room room; // cleaning stuff ...
bart.clean the room()
Father
class Father
public: clean_the_house();
private: Child bart;
class Child
public: clean_the_room();
private: Room room; // cleaning stuff ...BLACK BOX
EChem++ – p.6
Technical ConceptsObject Oriented Programming (OOP)
responsibility-driven design
data hiding
Mother Child clean_the_room()
“... we have a universe of well-behaved objects that courteously
ask each other to carry out their various desires” [Ingalls,1981]
class Mother
public: clean_the_house();
private: Child bart;
class Child
public: clean_the_room();
private: Room room; // cleaning stuff ...
bart.clean the room()
Father
class Father
public: clean_the_house();
private: Child bart;
class Child
public: clean_the_room();
private: Room room; // cleaning stuff ...BLACK BOX
EChem++ – p.6
Technical ConceptsObject Oriented Programming (OOP)
responsibility-driven design
data hiding
Mother Child clean_the_room()
“... we have a universe of well-behaved objects that courteously
ask each other to carry out their various desires” [Ingalls,1981]
class Mother
public: clean_the_house();
private: Child bart;
class Child
public: clean_the_room();
private: Room room; // cleaning stuff ...
bart.clean the room()
Father
class Father
public: clean_the_house();
private: Child bart;
class Child
public: clean_the_room();
private: Room room; // cleaning stuff ...BLACK BOX
EChem++ – p.6
Technical ConceptsObject Oriented Programming (OOP)
responsibility-driven design
data hiding
Mother Child clean_the_room()
“... we have a universe of well-behaved objects that courteously
ask each other to carry out their various desires” [Ingalls,1981]
class Mother
public: clean_the_house();
private: Child bart;
class Child
public: clean_the_room();
private: Room room; // cleaning stuff ...
bart.clean the room()
Father
class Father
public: clean_the_house();
private: Child bart;
class Child
public: clean_the_room();
private: Room room; // cleaning stuff ...BLACK BOX
EChem++ – p.6
Technical ConceptsObject Oriented Programming (OOP)
responsibility-driven design
data hiding
Mother Child clean_the_room()
“... we have a universe of well-behaved objects that courteously
ask each other to carry out their various desires” [Ingalls,1981]
class Mother
public: clean_the_house();
private: Child bart;
class Child
public: clean_the_room();
private: Room room; // cleaning stuff ...
bart.clean the room()
Father
class Father
public: clean_the_house();
private: Child bart;
class Child
public: clean_the_room();
private: Room room; // cleaning stuff ...BLACK BOX
EChem++ – p.6
Technical ConceptsObject Oriented Programming (OOP)
responsibility-driven design
data hiding
Mother Child clean_the_room()
“... we have a universe of well-behaved objects that courteously
ask each other to carry out their various desires” [Ingalls,1981]
class Mother
public: clean_the_house();
private: Child bart;
class Child
public: clean_the_room();
private: Room room; // cleaning stuff ...
bart.clean the room()
Father
class Father
public: clean_the_house();
private: Child bart;
class Child
public: clean_the_room();
private: Room room; // cleaning stuff ...BLACK BOX
EChem++ – p.6
Technical ConceptsObject Oriented Programming (OOP)
responsibility-driven design
data hiding
inheritance
polymorphism
design patterns
Class Human
Class Adult Class Child
Class Mother
Class Father
reusability & evolution
EChem++ – p.7
Technical ConceptsObject Oriented Programming (OOP)
responsibility-driven design
data hiding
inheritance
polymorphism
design patterns
Class Human
Class Adult Class Child
Class Mother
Class Father
reusability & evolution
EChem++ – p.7
Technical ConceptsObject Oriented Programming (OOP)
responsibility-driven design
data hiding
inheritance
polymorphism
design patterns
Class Human
Class Adult Class Child
Class Mother
Class Father
reusability & evolution
EChem++ – p.7
Technical ConceptsC++
reuse of C++ libraries
generic programming
numerical efficiencyFactory< Product >
Product produce() {return new Product;}
typedef Factory<CoffeeCup>CoffeeCupFactory;
EChem++ – p.8
Technical ConceptsC++
reuse of C++ libraries
generic programming
numerical efficiency
Factory< Product >
Product produce() {return new Product;}
typedef Factory<CoffeeCup>CoffeeCupFactory;
EChem++ – p.8
Technical ConceptsC++
reuse of C++ libraries
generic programming
numerical efficiency
Factory< Product >
Product produce() {return new Product;}
typedef Factory<CoffeeCup>CoffeeCupFactory;
EChem++ – p.8
Technical ConceptsPlatform Independence
portability is intended ( C++ standard )
control of experiment hardware dependson RTLinux OS
development under Linux OS
EChem++ – p.9
Presentation Contents
Project Description & Profile
Technical Concepts
State of Development:Object Oriented Analysis & DesignExamples
Project Organization
EChem++ – p.10
Object Oriented Analysis & DesignHigh-level DesignRequirements:
control of experiments
modelling & simulation
data analysis
system analysis
HardwareControl
Model
Analysis
DataExperiment
type of experiment
EChem++ – p.11
Object Oriented Analysis & DesignHigh-level DesignRequirements:
control of experiments
modelling & simulation
data analysis
system analysisHardwareControl
Model
Analysis
DataExperiment
type of experiment
EChem++ – p.11
Object Oriented Analysis & DesignHigh-level DesignRequirements:
control of experiments
modelling & simulation
data analysis
system analysisHardwareControl
Model
Analysis
Data
Experiment
type of experiment
EChem++ – p.11
Object Oriented Analysis & DesignHigh-level DesignRequirements:
control of experiments
modelling & simulation
data analysis
system analysisHardwareControl
Model
Analysis
Data
Experiment
type of experiment
EChem++ – p.11
Object Oriented Analysis & DesignHigh-level Design
Requirements:
control of experiments
modelling & simulation
data analysis
system analysis
HardwareControl
Model
Analysis
DataExperiment
type of experiment
EChem++ – p.11
Object Oriented Analysis & DesignHigh-level Design
Requirements:
control of experiments
modelling & simulation
data analysis
system analysis
HardwareControl
Model
Analysis
DataExperiment
type of experiment
EChem++ – p.11
Object Oriented Analysis & DesignThe Hardware Control Module
Experiment HardwareControl
type of experiment
excitation function
control of experiments
hardware controlpotentiostat(s), galvanostat(s)spectrometersmotors, pumps, stirrers, ......
Control
Potentiostat
Spectrometer
Motor
. . .
EChem++ – p.12
Object Oriented Analysis & DesignThe Hardware Control Module
Experiment HardwareControl
type of experiment
excitation function
control of experiments
hardware control
potentiostat(s), galvanostat(s)spectrometersmotors, pumps, stirrers, ......
Control
Potentiostat
Spectrometer
Motor
. . .
EChem++ – p.12
Object Oriented Analysis & DesignThe Hardware Control Module
Experiment HardwareControl
type of experiment
excitation function
control of experiments
hardware controlpotentiostat(s), galvanostat(s)spectrometersmotors, pumps, stirrers, ......
Control
Potentiostat
Spectrometer
Motor
. . .
EChem++ – p.12
Object Oriented Analysis & DesignThe Hardware Control Module
Experiment HardwareControl
type of experimentexcitation function
control of experiments
hardware controlpotentiostat(s), galvanostat(s)spectrometersmotors, pumps, stirrers, ......
Control
Potentiostat
Spectrometer
Motor
. . .
EChem++ – p.12
Object Oriented Analysis & DesignThe Experiment Module
Experiment HardwareControlexcitation function
type of experiments
CV, CC, CA, CP
electrolysis
spectroelectrochemistry
combinatorial microelectrochemistry
...
Experiment
ExcitationFunction
. . .
EChem++ – p.13
Object Oriented Analysis & DesignThe Experiment Module
Experiment HardwareControlexcitation function
type of experiments
CV, CC, CA, CP
electrolysis
spectroelectrochemistry
combinatorial microelectrochemistry
...
Experiment
ExcitationFunction
. . .
EChem++ – p.13
Object Oriented Analysis & DesignExcitation Function
ExcitationFunction value()
Potentiostat
potential
time
CV
Galvanostat
current
time
CP
Potentiostat
potential
time
hold ramp
Client
D
I
general case
ExcitationFunction<D,I>
void add( DISegment ) D value( I )
vector< DISegment >
EChem++ – p.14
Object Oriented Analysis & DesignExcitation Function
ExcitationFunction value()
Potentiostat
potential
time
CV
Galvanostat
current
time
CP
Potentiostat
potential
time
hold ramp
Client
D
I
general case
ExcitationFunction<D,I>
void add( DISegment ) D value( I )
vector< DISegment >
EChem++ – p.14
Object Oriented Analysis & DesignExcitation Function
ExcitationFunction value()
Potentiostat
potential
time
CV
Galvanostat
current
time
CP
Potentiostat
potential
time
hold ramp
Client
D
I
general case
ExcitationFunction<D,I>
void add( DISegment ) D value( I )
vector< DISegment >
EChem++ – p.14
Object Oriented Analysis & DesignExcitation Function
ExcitationFunction value()
Potentiostat
potential
time
CV
Galvanostat
current
time
CP
Potentiostat
potential
time
hold ramp
Client
D
I
general case
ExcitationFunction<D,I>
void add( DISegment ) D value( I )
vector< DISegment >
EChem++ – p.14
Object Oriented Analysis & DesignExcitation Function
ExcitationFunction value()
Potentiostat
potential
time
CV
Galvanostat
current
time
CP
Potentiostat
potential
time
hold ramp
Client
D
I
general case
ExcitationFunction<D,I>
void add( DISegment ) D value( I )
vector< DISegment >
EChem++ – p.14
Object Oriented Analysis & DesignHigh-level Design
HardwareControl
Model
Analysis
DataExperiment
excitation function
potentiostat
EChem++ – p.15
Object Oriented Analysis & DesignHigh-level Design
HardwareControl
Model
Analysis
DataExperiment
excitation function
potentiostat
EChem++ – p.15
Object Oriented Analysis & DesignThe Model Module
Experiment Modelexcitation function
modelling & simulation
geometry, transport, reaction mechanism
PDE systems
initial & boundary conditions
numerical solvers
analytical equations
Ecco
EChem++ – p.16
Object Oriented Analysis & DesignThe Model Module
Experiment Modelexcitation function
modelling & simulationgeometry, transport, reaction mechanism
PDE systems
initial & boundary conditions
numerical solvers
analytical equations
Ecco
EChem++ – p.16
Object Oriented Analysis & DesignThe Model Module
Experiment Modelexcitation function
modelling & simulationgeometry, transport, reaction mechanism
PDE systems
initial & boundary conditions
numerical solvers
analytical equations
Ecco
EChem++ – p.16
Object Oriented Analysis & DesignEcco - A Kinetic Compiler for Electrochemistry
requirements
translation of a reaction mechanism into governingequations
intuitive input language
incorporation of electron transfers, kinetic terms,adsorption
consistency checks
reusable & extendable
Ecco Client
Ecco
Subsystem Spirit
compile()
EChem++ – p.17
Object Oriented Analysis & DesignEcco - A Kinetic Compiler for Electrochemistry
requirementstranslation of a reaction mechanism into governingequations
intuitive input language
incorporation of electron transfers, kinetic terms,adsorption
consistency checks
reusable & extendable
Ecco Client
Ecco
Subsystem Spirit
compile()
EChem++ – p.17
Object Oriented Analysis & DesignEcco - A Kinetic Compiler for Electrochemistry
requirementstranslation of a reaction mechanism into governingequations
intuitive input language
incorporation of electron transfers, kinetic terms,adsorption
consistency checks
reusable & extendable
� ��� � � ��� �
� � � ��� � �� �
� � � � ��� �� � �
Ecco � � � � �
�� � �
� � �
���������� � � �
� � � � �
� � �
� � ����������
Client
Ecco
Subsystem Spirit
compile()
EChem++ – p.17
Object Oriented Analysis & DesignEcco - A Kinetic Compiler for Electrochemistry
requirementstranslation of a reaction mechanism into governingequations
intuitive input language
incorporation of electron transfers, kinetic terms,adsorption
consistency checks
reusable & extendable
Ecco
Client
Ecco
Subsystem Spirit
compile()
EChem++ – p.17
Object Oriented Analysis & DesignHigh-level Design
HardwareControl
Model
Analysis
DataExperiment
modelling & simulation
data analysissystem analysis
EChem++ – p.18
Object Oriented Analysis & DesignHigh-level Design
HardwareControl
Model
Analysis
DataExperiment
modelling & simulation
data analysissystem analysis
EChem++ – p.18
Object Oriented Analysis & DesignThe Analysis Module Analysis
Data
data analysis
system analysis
data
smoothing, transformations, error analysis, ...
feature analysis
curve fi
multiparameter estimation
artifi
...
tting
cial neural networks
EChem++ – p.19
Object Oriented Analysis & DesignThe Analysis Module Analysis
Data
data analysissystem analysisdata
smoothing, transformations, error analysis, ...
feature analysis
curve fi
multiparameter estimation
artifi
...
tting
cial neural networks
EChem++ – p.19
Presentation Contents
Project Description & Profile
Technical Concepts
State of Development:Object Oriented Analysis & DesignExamples
Project Organization
EChem++ – p.20
Acknowledgements
Christof Autenrieth
�
, Martin Bogdan
�
, Thilo Ewald
�
Elena Sapozhnikova
�
Lakshmanan Rajendran
Jörg Strutwolf
�
�
Universität Tübingen, Wilhelm-Schickard-Institut für Informatik, Tübingen, Germany
�
Higher Secondary School, Karaikudi 630 001, Tamil Nadu, India
�
Universität Tübingen, Institut für Organische Chemie, Tübingen, Germany
EChem++ – p.22