General
This project is focused on establishing a material database for science and engineering applications based on the C++ ViennaMaterials library.
The material data is to be stored in input files, which is processed by ViennaMaterials, in turn providing external applications access to the data. Although the library will be implemented in C++, interfaces to C and Python are planned for ViennaMaterials.
A main goal of this project is to test and evaluate the interfaces with our simulation tools, by setting up automatic test suits as well as gaining first-hand experience with utilizing the tools. This project will require occasional interaction with an external research group, which is eager to work with our tool.
The student will learn the essential role of material parameters for device simulation as well as how to implement a software suite to provide these parameters to external simulation tools.
The student will become skilled in interfacing C++ code with C and Python, in setting up automatic test cases, and in collaborating with external research groups.
Prospective Student
Milestone Tasklist
We envision several milestones, each containing its own list of tasks to be completed to be able to claim the assigned salary.
Milestone 1
Research: Investigate available sources for material parameters
Planning: Devise planning for importing external material data
Structure: Investigate and define XML material layout for material data
Milestone 2 (updated on July 16)
C++ Python Wrapper: Investigate and implement Python Wrapper in C++ (i.e. functions with arguments)
Code Backend Mechanism: Investigate and implement mechanism to switch code execution backends (i.e. prepare for potential future extensions towards supporting Lua and C/C++)
XML/Python/API: Investigate and implement Python code in XML interface, and ViennaMaterials
API (i.e. how can a 'simulator' access/evaluate/execute code stored in XML material files?)
Milestone 3
IPD2XML Converter: Implement an
IPD to XML converter, considering a flexible setup of the XML Layout
Import: Import and verify data from available IPD file
Testing: Implement tests
Milestone 4
C-Interface: Implement a C
API wrapper for the C++ backend
Evaluation: Interface with our simulation tools (e.g.
ViennaMini), identify shortcomings in the
API, and devise fixes or possible new features.
Testing: Implement tests
Milestone 5
Testing: Extend the tests and interface with our institute's testing facilities
Documentation: Write a documentation for ViennaMaterials
Temporarily Deactived Milestones
Milestone
Math Expressions: Interface with the
LUA library for evaluating mathematical expressions
LUA2XML Converter: Implement a
LUA to XML converter, considering a flexible setup of the XML Layout
Testing: Implement tests
Primary Mentor