57
EChem++ An Open Source Project for Computational Electrochemistry Kai Ludwig, Bernd Speiser Universit ¨ at T ¨ ubingen Institut f ¨ ur Organische Chemie, T ¨ ubingen, Germany EChem++ – p.1

An Open Source Project for Computational Electrochemistry

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: An Open Source Project for Computational Electrochemistry

EChem++An Open Source Project for Computational

Electrochemistry

Kai Ludwig, Bernd Speiser

Universitat Tubingen

Institut fur Organische Chemie, Tubingen, Germany

EChem++ – p.1

Page 2: An Open Source Project for Computational Electrochemistry

Presentation Contents

Project Description & Profile

Technical Concepts

State of Development:Object Oriented Analysis & DesignExamples

Project Organization

EChem++ – p.2

Page 3: An Open Source Project for Computational Electrochemistry

Presentation Contents

Project Description & Profile

Technical Concepts

State of Development:Object Oriented Analysis & DesignExamples

Project Organization

EChem++ – p.2

Page 4: An Open Source Project for Computational Electrochemistry

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

Page 5: An Open Source Project for Computational Electrochemistry

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

Page 6: An Open Source Project for Computational Electrochemistry

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

Page 7: An Open Source Project for Computational Electrochemistry

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

Page 8: An Open Source Project for Computational Electrochemistry

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

Page 9: An Open Source Project for Computational Electrochemistry

Presentation Contents

Project Description & Profile

Technical Concepts

State of Development:Object Oriented Analysis & DesignExamples

Project Organization

EChem++ – p.5

Page 10: An Open Source Project for Computational Electrochemistry

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

Page 11: An Open Source Project for Computational Electrochemistry

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

Page 12: An Open Source Project for Computational Electrochemistry

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

Page 13: An Open Source Project for Computational Electrochemistry

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

Page 14: An Open Source Project for Computational Electrochemistry

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

Page 15: An Open Source Project for Computational Electrochemistry

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

Page 16: An Open Source Project for Computational Electrochemistry

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

Page 17: An Open Source Project for Computational Electrochemistry

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

Page 18: An Open Source Project for Computational Electrochemistry

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

Page 19: An Open Source Project for Computational Electrochemistry

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

Page 20: An Open Source Project for Computational Electrochemistry

Technical ConceptsC++

reuse of C++ libraries

generic programming

numerical efficiencyFactory< Product >

Product produce() {return new Product;}

typedef Factory<CoffeeCup>CoffeeCupFactory;

EChem++ – p.8

Page 21: An Open Source Project for Computational Electrochemistry

Technical ConceptsC++

reuse of C++ libraries

generic programming

numerical efficiency

Factory< Product >

Product produce() {return new Product;}

typedef Factory<CoffeeCup>CoffeeCupFactory;

EChem++ – p.8

Page 22: An Open Source Project for Computational Electrochemistry

Technical ConceptsC++

reuse of C++ libraries

generic programming

numerical efficiency

Factory< Product >

Product produce() {return new Product;}

typedef Factory<CoffeeCup>CoffeeCupFactory;

EChem++ – p.8

Page 23: An Open Source Project for Computational Electrochemistry

Technical ConceptsPlatform Independence

portability is intended ( C++ standard )

control of experiment hardware dependson RTLinux OS

development under Linux OS

EChem++ – p.9

Page 24: An Open Source Project for Computational Electrochemistry

Presentation Contents

Project Description & Profile

Technical Concepts

State of Development:Object Oriented Analysis & DesignExamples

Project Organization

EChem++ – p.10

Page 25: An Open Source Project for Computational Electrochemistry

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

Page 26: An Open Source Project for Computational Electrochemistry

Object Oriented Analysis & DesignHigh-level DesignRequirements:

control of experiments

modelling & simulation

data analysis

system analysisHardwareControl

Model

Analysis

DataExperiment

type of experiment

EChem++ – p.11

Page 27: An Open Source Project for Computational Electrochemistry

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

Page 28: An Open Source Project for Computational Electrochemistry

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

Page 29: An Open Source Project for Computational Electrochemistry

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

Page 30: An Open Source Project for Computational Electrochemistry

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

Page 31: An Open Source Project for Computational Electrochemistry

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

Page 32: An Open Source Project for Computational Electrochemistry

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

Page 33: An Open Source Project for Computational Electrochemistry

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

Page 34: An Open Source Project for Computational Electrochemistry

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

Page 35: An Open Source Project for Computational Electrochemistry

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

Page 36: An Open Source Project for Computational Electrochemistry

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

Page 37: An Open Source Project for Computational Electrochemistry

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

Page 38: An Open Source Project for Computational Electrochemistry

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

Page 39: An Open Source Project for Computational Electrochemistry

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

Page 40: An Open Source Project for Computational Electrochemistry

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

Page 41: An Open Source Project for Computational Electrochemistry

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

Page 42: An Open Source Project for Computational Electrochemistry

Object Oriented Analysis & DesignHigh-level Design

HardwareControl

Model

Analysis

DataExperiment

excitation function

potentiostat

EChem++ – p.15

Page 43: An Open Source Project for Computational Electrochemistry

Object Oriented Analysis & DesignHigh-level Design

HardwareControl

Model

Analysis

DataExperiment

excitation function

potentiostat

EChem++ – p.15

Page 44: An Open Source Project for Computational Electrochemistry

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

Page 45: An Open Source Project for Computational Electrochemistry

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

Page 46: An Open Source Project for Computational Electrochemistry

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

Page 47: An Open Source Project for Computational Electrochemistry

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

Page 48: An Open Source Project for Computational Electrochemistry

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

Page 49: An Open Source Project for Computational Electrochemistry

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

Page 50: An Open Source Project for Computational Electrochemistry

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

Page 51: An Open Source Project for Computational Electrochemistry

Object Oriented Analysis & DesignHigh-level Design

HardwareControl

Model

Analysis

DataExperiment

modelling & simulation

data analysissystem analysis

EChem++ – p.18

Page 52: An Open Source Project for Computational Electrochemistry

Object Oriented Analysis & DesignHigh-level Design

HardwareControl

Model

Analysis

DataExperiment

modelling & simulation

data analysissystem analysis

EChem++ – p.18

Page 53: An Open Source Project for Computational Electrochemistry

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

Page 54: An Open Source Project for Computational Electrochemistry

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

Page 55: An Open Source Project for Computational Electrochemistry

Presentation Contents

Project Description & Profile

Technical Concepts

State of Development:Object Oriented Analysis & DesignExamples

Project Organization

EChem++ – p.20

Page 56: An Open Source Project for Computational Electrochemistry

Project Organization

http://echempp.sourceforge.net

EChem++ – p.21

Page 57: An Open Source Project for Computational Electrochemistry

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