Giter Club home page Giter Club logo

febid_py's Introduction

FEBID Simulation package

Author: Alexander Kuprava & Michael Huth
Maintainer:Alexander Kuprava
Contact: [email protected]
URL:https://github.com/mrcheatak/febid_py
Documentation:http://febid-py.readthedocs.io
PyPi:version
ReadTheDocs:Documentation Status

build dependencies contributors

What is FEBID Simulation?

FEBID stands for Focused Electron Beam Induced Deposition – a direct-write nanofabrication process similar to 3D printing. It uses volatile organometallic molecules (precursor) as material and a controlled electron beam to selectively deposit material on a substrate.

Simulation provides capabilities of running the process virtually by providing material properties and deposition conditions. The result is a 3D model of the fabricated structure along with data collected during the simulation.

The package features an separate Monte Carlo electron beam — matter interaction module. By using the same input data, it is possible to inspect electron scattering profile and heat source in-situ.

Installation

The simulation requires Python 3.9 or later.

Package is available via PyPi: pip install febid

Alternatively, it can be installed directly from GitHub via pip, although that will require compilation of some modules:

pip install git+https://github.com/MrCheatak/FEBID_py

Tip: Linux user may need to manually install vtk9(visualisation) and pyqt5(interface) with the system package manager as they may have to be explicitly added to the system for support.

Running the first simulation

In order to run the first simulation, Parameters.yml and Me3PtCpMe.yml parameter files in the Examples folder are needed. As the installation finishes, run python -m febid, which will show the main control panel:

docs/_images/main_panel_febid.png

There are three main setup steps that are essential for the simulation: space, pattern and parameters of the beam and deposition material. Further instructions will configure a simulation on a 200x200 nm substrate with a stationary 5s exposure of a 30keV 0.15nA beam deposition using the Me3PtCpMe precursor.

Space:
Firstly, a simulation volume domain has to be created. The simplest case is a clean substrate. Choose Parameters option and specify 200x200x200 nm dimensions with 5 nm cell size and 10 nm substrate. This will define a cubic simulation domain divided into voxels with 5 nm edge length. Finally, a 20 nm layer of substrate material (Au) is laid at the bottom.
Pattern:
Next, pattern has to be defined for the controlled beam. Choose Simple patterns and select Point from the drop-down menu. This option will fix the beam at a point specified by X and Y parameters, set both of them to 100 to position the beam at the center of the substrate. The time that the beam will spend at that point is defined by dwell time and repeats parameters. Lets set a 5 s exposure by setting them to 1000 and 5000 correspondingly. A beam is configured now to stay at the (100,100) point for 5 s.
Beam and precursor:
Finally, open Parameters.yml for Settings and Me3PtCpMe.yml for Precursor parameters. The first one specifies the beam parameters and precursor flux, the second provides precursor material properties.

Lastly, uncheck all the saving options and enable Show the process to watch the growth in real time and hit Start.

Documentation

Full documentation with interface guide and manual, algorithm explanations and API can be found on readthedocs

Usage

In case of usage of this package for scientific purposes and publication, we kindly ask to cite:

Kuprava A., Huth M. Fast and Efficient Simulation of the FEBID Process with Thermal Effects. Nanomaterials, 2023, 13, 858

febid_py's People

Contributors

mrcheatak avatar deepsource-autofix[bot] avatar

Stargazers

Pavel Kobliha avatar

Watchers

 avatar

Forkers

aghuth

febid_py's Issues

Comment to the run

An additional field at the Control panel for comments, notes or remarks on the current run.
It should be saved as a separate text file together with statistics .

Add resulting patterning speed to the interface

The patterning speed or beam velocity is the main characteristic of the rastering strategy.
Thus patterning speed should be indicated for the given dwell time/pitch values.
Additionally, stream files can be analysed and displayed as a sectioned coloured bar under the file name field. Each section should be labeled and coloured according to the patterning speed. The color gradient should then be mapped onto the pattern speed range (i.e. blue–red).
pattern_scale1

No test script

It would be nice to set up an exemplary test script (pillar deposition), that can be run directly after the installation to see how simulation is running.

Organised save data

As of the current version, the data is saved primitively: .xlsx file contains statistical data and a parameter set used to run the simulation (precursor, beam, dimensions), To that, .xlsx and .vtk files are related, but not connected.
Todo:

  1. Files should be connected in a way that its clear that they represent the same simulation session
  2. Patterning parameters shall be included into the .xlsx file, if a simple pattern is used
  3. If stream-file is used, it should be copied to the folder, if any of the saving options are enabled.

Monte Carlo tab

The Monte Carlo tab represents another mode of the simulation. It allows to statically simulate electron scattering, secondary electron emission and surface electron flux on a given structure and with given beam settings.
It has to be finished.

No documentation

Right now only a brief README file is available, that describes the bare minimum on how to install and use the simulation.
The project is aimed to be extensible, user-friendly and educational and thus requires a broad documentation including:
– The installation and possible caveats
– Interface usage and controls' influence on the simulated process
– Physical meaning of the controls
– Description of the simulation including:

  1. Physical models and assumptions used to describe the process numerically
  2. Approaches and key ideas used to describe various phenomena(ray tracing, ghost cells, surface evolution etc.)
  3. Numerical solutions used (FCTS, Runge-Kutta 4)
  4. The overall design of the simulation: algorithm, data framework, pipelines, I/O, visualisation
    – Physical model of the FEBID process and continuum model overview
    – Precursor file: parameters description, their influence on the process, physical meaning and sources
    – Settings file: beam parameters description, their influence on the process and physical meaning

Export 3D objects

There should be an opportunity to export grown 3D structures from .vtk to more common formats like .obj or .stl. Optionally, export to .html format can be implemented, which can be viewed in a browser without any additional software.
It could be a simple script, that exports just the solid structure or a windowed interface allowing to set things like removal of the substrate, smoothing and texturing based on the selected dataset.

VTK-files data

.vtk files contain purely data arrays with no regard to the simulation setting. Moreover, nevertheless vtk-files are chained and represent a recorded process, they can be only ordered by the file's creation date which may not be reliable.
Todo:

  1. .vtk-files shall contain a record of real and simulation time of the snapshot
  2. they shall contain names of the related files: previous (and maybe next) snapshot and statistics file.
  3. they shall contain info or a link to info about properties of the precursor and deposit.
  4. they shall also contain the position of the beam in order to have a better representation of the state and to be able to recreate the electron scattering picture via Monte Carlo simulation

As a chained feature, scripts for showing results from .vtk-files should be able to order files in a provided folder, read all the misc data and plot/display it.

Create Options panel

Right now, the only settings on the control panel can be manipulated.
An option window is required to setup settings/preferences of the simulation including.
The first settings to implement:

  • Data arrays included into .vtk files. Surface, semi-surface, ghosts can be excluded by default to reduce file size.
  • Temperature re-calculation interval

No resolution setting for stream files

The coordinates in a stream-file do not represent any certain distance, but are points on the view field. Thus the pitch per point changes with magnification, effectively scaling the path when zooming in/out on a SEM.
Such behaviour should also be reflected in the simulation i.e. by specifying magnification or view field dimensions or HFW.

Beam profile configuration

Right now, beam shape is controlled by the two parameters: Gaussian standard deviation and order.
In order to have an idea what is the resulting beam shape, one has to plot the Super-Gaussian distribution profile with the specified parameters.
Such a feature can be included into the simulation as a separate window called from a menu. It should contain a scattered circular plot of the distribution, histograms at the axises that depict the distribution profile and sliders that control standard deviation and order.

Switch on/off physical processes

It may be useful to be able to switch off and on processes like diffusion, temperature dependence of diffusion and residence time.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.