a software platform for nanoscale device simulation and visualization

35
A Software Platform for Nanoscale Device Simulation and Visualization Marek Gayer and Giuseppe Iannaccone ACTEA 2009 - Conference on Advances in Computational Tools for Engineering Applications Notre Dame University, Faculty of Engineering, Zouk Mosbeh, Lebanon, July 15 – July 17, 2009 Google: "nanofem platform"

Upload: maxwell-sanders

Post on 02-Jan-2016

43 views

Category:

Documents


1 download

DESCRIPTION

Google: " nanofem platform". A Software Platform for Nanoscale Device Simulation and Visualization. Marek Gayer and Giuseppe Iannaccone ACTEA 2009 - Conference on Advances in Computational Tools for Engineering Applications - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: A Software Platform for  Nanoscale  Device Simulation and Visualization

A Software Platform for Nanoscale Device Simulation

and Visualization

A Software Platform for Nanoscale Device Simulation

and VisualizationMarek Gayer and Giuseppe Iannaccone

ACTEA 2009 - Conference on Advances in Computational Tools for Engineering Applications

Notre Dame University, Faculty of Engineering, Zouk Mosbeh, Lebanon, July 15 – July 17, 2009

Google: "nanofem platform"

Page 2: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

2ACTEA 2009

Goals of NanoFEM platformGoals of NanoFEM platform

Create software platform for Technology CAD device simulation based on FEM

Should be flexible & modifiable (research) Interactive features: Geometry, meshing

and visualization with user interface Separation of IT (software) and physics Ability to run simulations on remote servers Able to run on Windows, Linux, Mac OS X Extendible; users should be able to develop

for the platform writing own modules Performance

Page 3: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

3ACTEA 2009

Finite Element MethodFinite Element Method Finding solution for Partial

Differential equations for evaluation of characteristics (e.g. potential)

Discretizes continuum (i.e. modeled object) into finite number of elements – e.g. triangles, tetrahedron

Characteristics are determined in the nodes of the element

Solving of linear systems Complex to design and

implement, solid mathematical and informatics understanding required for high performance

Page 4: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

4ACTEA 2009

3D Finite Element Mesh3D Finite Element Mesh

Suitable discretization of continuous domain to simple volume cell elements

Partial differential equations (PDE’s) can be replaced by system of non-linear algebraic equations

Very complex to create code to generate FEM mesh on arbitrary structures

Mesh need to be at least Delaunay mesh Tetrahedrons

Page 5: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

5ACTEA 2009

Related solutions / approachesRelated solutions / approaches

Commercial codes (Synopsis, Silvaco, etc.)

Disadvantages: limited extendibility, modifications

Free codes 2D, 3D: – Archimedes, nextnano

Free Meshers - NETGEN, Tetgen Existing simulation frameworks

– Gmsh, Calculix, Salome Platform, Orcan, Finite Element Solvers

– FEniCS/DOLFIN, Libmesh, Getfem++, Rheolef, Tahoe, OOFEM.org, OFELI

Page 6: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

6ACTEA 2009

Transistor modeled in NETGENTransistor modeled in NETGEN

Page 7: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

7ACTEA 2009

Gmsh – Mesh of transistor + Postprocessing (tutorial dataset)

Gmsh – Mesh of transistor + Postprocessing (tutorial dataset)

Page 8: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

8ACTEA 2009

Components of NanoFEM platformComponents of NanoFEM platform

SALOME 3.2.6 supports limited number of OS’s => Developed as a VmWare image with:

– Debian Linux 3.1 (codename Sarge)– SALOME 3.2.6– FEniCS/DOLFIN 0.7.1– MeshAPI – lib. for our FEM module/component– Component and additional codes for SALOME– KDevelop for development– Additional tools (Krusader, …)

Running on VmWare Server 1+ or Workstation 6+ Eventual distribution by providing this VmWare image

Page 9: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

9ACTEA 2009

NanoFEM platform modelling approach

NanoFEM platform modelling approach

MeshAPI with

DOLFIN/FEniCS

Salome Platform

Page 10: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

10ACTEA 2009

SALOME platform (LGPL) www.salome-platform.orgSALOME platform (LGPL) www.salome-platform.org

SALOME(LGPL) is a free software that provides a generic platform for Pre and Post-Processing for numerical simulation.

Interactice geometry modelling, meshing Very good user interface (Qt4) Visualization (2D and 3D graphs) Can use Python scripting to replace or assist GUI:

all functionalities are also accessible through the programmatic integrated Python console

Modular architecture, we can create own modules Components can run on remote servers (CORBA) Exchanging data: MEDMEM API, .HDF, .MED Much more powerful then any other open source finite

element component/software we found

Page 11: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

11ACTEA 2009

SALOME platform modular architectureSALOME platform modular architecture

Page 12: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

13ACTEA 2009

FEniCS/ DOLFIN – (L)GPLwww.fenics.orgFEniCS/ DOLFIN – (L)GPLwww.fenics.org

Free finite element library and solver Supports both direct and iterative solvers

(LU, Krylov solvers) Uses PETSc and uBLAS libraries for

systems of linear/nonlinear equations => high performance linear algebra

Automatic generation of finite elements, evaluation of variational form assembly of matrices for FEM – linear systems

Support for general families of finite elements, (Lagrange, BDM, RT, BDFM Nedelec and Crouzeix-Raviart elements)

No deeper knowledge about FEM method is needed to use and develop

Eigenvalue problems with SLEPSc Simple and intuitive C++ object interface

Page 13: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

15ACTEA 2009

Our SALOME/DOLFIN bridge MeshAPIOur SALOME/DOLFIN bridge MeshAPI

Core – mesh, fields, groups Linear-Nonlinear PDE classes Selection from Krylov solver methods

and preconditioners XML material database (SAX parser) Boundary conditions Inherited MeshAPI based solvers Wrappers for SALOME platform

Page 14: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

16ACTEA 2009

MeshAPI – mesh, fields, groupsMeshAPI – mesh, fields, groups

Reading Salome mesh from files .med files (MEDMEM API)

Processing mesh coordinates and connectivities Processing groups of mesh (can be defined in

SALOME editor) Passing this information to DOLFIN (to build mesh in

memory) Providing core fields (such as Source, Flux, Potential,

some visual debug fields) Additional methods to work with mesh and fields Control of storing of core and custom fields to .MED

files Clean code design in strictly object oriented C++

Page 15: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

17ACTEA 2009

Example of XML material databaseExample of XML material database

<?xml version="1.0" encoding="UTF-8"?>

<materialDatabase xmlns="materials.xsd">   <material name="Si" description="(100)[silicio]">     <parameter name="dielectricConstant"

description="CostanteDielettricarelativa" type="double" value="11.8" />

    <parameter name="longitudeMassForElectrons" description="MassaLongitudinaleelettrone" type="double" value="0.98" />

    <parameter name="transversalMassForElectrons" description="MassaTrasversaleelettrone" type="double" value="0.19" />

  </material>   <material name="SiO2" description="ossidodisilicio">     <parameter name="dielectricConstant" type="double"

value="3.9" />   </material>   <material name="Air" description="Aire">   </material> </materialDatabase>

Page 16: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

18ACTEA 2009

Storing materials and boundary conditions in MEDMEM mesh

Storing materials and boundary conditions in MEDMEM mesh

Implemented by correct naming of groups, which are then read in code to retrieve materials and boundary conditions

Examples: bottomoxide[Si] metalplate1[dirichlet=1.0]

From SALOME mesh, we get ID’s of nodes and assign a group color number to them

From group number, we determine material, Dirichlet boundary conditions etc. These data are stored in numeric arrays [0..n] – n is number of groups

Page 17: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

19ACTEA 2009

MeshAPI/Linear-Nonlinear PDEMeshAPI/Linear-Nonlinear PDE

Classes allowing solving nonlinear and nonlinear PDE, using DOLFIN, allows to set preconditioners and Krylov methods:

Available Krylov methods:– cg - The conjugate gradient method– gmres - The GMRES method (default)– bicgstab - The stabilized biconjugate gradient squared

method Preconditioners:

– none - No preconditioning– jacobi - Simple Jacobi preconditioning– sor - SOR, successive over-relaxation– ilu - Incomplete LU factorization (default)– icc - Incomplete Cholesky factorization– amg - Algebraic multigrid (through Hypre when available)

Page 18: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

20ACTEA 2009

MeshAPI based solversMeshAPI based solvers Using MeshAPI, one can easily, in few lines define

DOLFIN solvers as classes inherited from cl. Dolfin Behaviour that can be generalized and reused is

already defined in Mesh API It can be used in any current and future examples There are 3 example solvers:

– Poisson example from DOLFIN manual, but using Salome mesh

– Poisson equation computed on partitioned group– Poisson equation computed on partitioned group

with permittivity (Eps)– Non-linear Poisson equation computed on

partitioned group with permittivity (not 100% done)

Page 19: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

21ACTEA 2009

Solving linear PDE: Poisson equation:

f(x,y,z) – source function (known), can be 0 ε(x,y,z) – permittivity of material in given point u(x,y,z) – potential, that we are computing

Solving example – linear PoissonSolving example – linear Poisson

fu )(

Page 20: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

22ACTEA 2009

Bi-linear and linear form of Poisson equation:

g(x,y,z) – Neumann boundary condition

Solving example – linear PoissonSolving example – linear Poisson

dsvgvfdxvL

dxuvuva

 )(

 )(),(

Page 21: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

23ACTEA 2009

Converting equation to variational formConverting equation to variational form

# The bilinear form a(v, U) and linear form L(v) for # Poisson's equation. # Compile this form with FFC: ffc -l dolfin PoissonEps.form

element = FiniteElement("Lagrange", "tetrahedron", 1) v = TestFunction(element) u = TrialFunction(element) f = Function(element) g = Function(element) eps = Function(element)

a = dot(grad(v), grad(u))*eps*dx L = v*f*dx + eps*v*g*ds

# This generates 5239 lines, 191.359 characters

Page 22: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

24ACTEA 2009

Main solving routine in C++Main solving routine in C++ #include "PoissonEps.h“ #include "LinearPDE.hxx"

int SC::PoissonEps::solve () {

– Source f (mesh);– Flux g (mesh);– DirichletFunction u0 (mesh);– DirichletBoundary boundary(mesh);– DirichletBC bc (u0, mesh.dolfinMesh, boundary);– Eps eps (mesh);– PoissonEpsBilinearForm a (eps);– PoissonEpsLinearForm L (f, g, eps);– SC::LinearPDE pde (a, L, mesh.dolfinMesh, bc);– pde.setupKrylov (mesh.krylovMethod, mesh.krylovPc);– Function solution;– pde.solve(solution);

– mesh.nodePotential.init (u); mesh.nodeSource.init (f); mesh.nodeFlux.init (g);– mesh.resetFieldsToWrite();– Field<double> *fields[] = {&mesh.nodePotential, &mesh.nodeSource, &mesh.nodeFlux, NULL};– mesh.addFieldsToWrite (fields);

}

Page 23: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

25ACTEA 2009

Dirichlet boundary in C++Dirichlet boundary in C++ class DirichletBoundary : public SubDomain {

– MeshAPI &mesh;public:– DirichletBoundary(MeshAPI & meshInstance) :

mesh(meshInstance)– {– }– bool inside(const dolfin::real* x, bool on_boundary) const– {

int index = mesh.getGroupNumberFromCoordinates(x);MaterialFunction *nodeMaterial = mesh.materialFunctions[index]; return nodeMaterial->materialData == NULL;

}};

Page 24: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

26ACTEA 2009

Dirichlet values in C++Dirichlet values in C++ class DirichletFunction : public Function {

– MeshAPI &mesh;public:– DirichletFunction(MeshAPI& meshInstance) :

mesh(meshInstance), Function(meshInstance.dolfinMesh)– {– }– dolfin::real eval(const dolfin::real* x) const– {– int index = mesh.getGroupNumberFromCoordinates(x);

MaterialFunction *nodeMaterial = mesh.materialFunctions[index];

– return nodeMaterial->dirichlet;– }};

Page 25: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

27ACTEA 2009

Source function in C++Source function in C++ class Source : public Function {

– MeshAPI &mesh;public:

– Source(MeshAPI & meshInstance) : mesh(meshInstance), Function(meshInstance.dolfinMesh)

– {– }– dolfin::real eval(const dolfin::real* x) const– {

return 0;– }};

Page 26: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

28ACTEA 2009

Neumann boundary conditions C++Neumann boundary conditions C++

class Flux : public Function {

– MeshAPI &mesh;public:

– Flux(MeshAPI & meshInstance) : mesh(meshInstance), Function(meshInstance.dolfinMesh)

– {– }– dolfin::real eval(const dolfin::real* x) const– {

return 0;– }};

Page 27: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

29ACTEA 2009

Defining permittivity in C++Defining permittivity in C++

class Eps : public Function {

– MeshAPI &mesh;public:– Eps (MeshAPI& meshInstance) : mesh(meshInstance),

Function(meshInstance.dolfinMesh)– {– }– dolfin::real eval(const dolfin::real* x) const– {– int index = mesh.getGroupNumberFromCoordinates(x);

MaterialFunction *nodeMaterial = mesh.materialFunctions[index];

– return nodeMaterial->permitivity;– }};

Page 28: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

30ACTEA 2009

Geometry modelling of transistorGeometry modelling of transistor

Page 29: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

31ACTEA 2009

Automatically generated meshAutomatically generated mesh

Page 30: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

32ACTEA 2009

Scalar map of the electric potentialScalar map of the electric potential

Page 31: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

33ACTEA 2009

Scalar map of the electric potentialScalar map of the electric potential

Page 32: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

Conclusion - 1/2Conclusion - 1/2

NanoFEM platform is a new research environment for TCAD simulations of nanoscale devices.

Based on free LGPL components SALOME Platform and FEniCS/DOLFIN

We can concentrate only on developing of our MeshAPI and computational modules

Physicist/developers – independent Simple definition of equations instead of

programming

34ACTEA 2009

Page 33: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

Conclusion – 2/2Conclusion – 2/2

Interactive pre- and post-processing Automated meshing Modules can run on remote servers High performance Standard formats - .MED and .HDF .XML material database Good extendibility and modularity

35ACTEA 2009

Page 34: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

36ACTEA 2009

Possible future effort for the NanoFEM PlatformPossible future effort for the NanoFEM Platform

More complex equations (drift, diffusion) Compare performance with commercial More modules with exchange of fields Control of simulation flow and coupling Tests of supervision (with scripting) More complex boundary conditions Run on native Debian and Windows

Page 35: A Software Platform for  Nanoscale  Device Simulation and Visualization

Google: "nanofem plaform"

37ACTEA 2009

Thank you for your attention.Thank you for your attention.

???Do you have any questions ?