ViennaSHE 1.3.0
Free open-source semiconductor device simulator using spherical harmonics expansions techniques.
device.h
Go to the documentation of this file.
1/* ============================================================================
2 Copyright (c) 2011-2022, Institute for Microelectronics,
3 Institute for Analysis and Scientific Computing,
4 TU Wien.
5
6 -----------------
7 ViennaSHE - The Vienna Spherical Harmonics Expansion Boltzmann Solver
8 -----------------
9
10 http://viennashe.sourceforge.net/
11
12 License: MIT (X11), see file LICENSE in the base directory
13=============================================================================== */
14
18
19#ifndef LIBVIENNASHE_DEVICE_H
20#define LIBVIENNASHE_DEVICE_H
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26/*
27// Types
28*/
29
31typedef enum { viennashe_line_1d,
35
36
39/*
40// Functions
41*/
42
44
49
52
53
54/* *************** */
55/* Device creators */
56/* *************** */
57
59
61 double ** vertices, viennashe_index_type num_vertices,
63 viennashe_index_type * segmentation);
64
66 double * vertices, viennashe_index_type num_vertices,
68 viennashe_index_type * segmentation);
69
71
72
73/* *************** */
74/* Mesh getter */
75/* *************** */
76
80
83
86
89
90/* ****************** */
91/* Mesh iterators */
92/* ****************** */
93
96
97
98#ifdef __cplusplus
99}
100#endif
101
102#endif /* LIBVIENNASHE_DEVICE_H */
103
viennashe_device_impl * viennashe_device
Definition: device.h:37
VIENNASHE_EXPORT viennasheErrorCode viennashe_get_num_vertices(viennashe_device dev, viennashe_index_type *num)
VIENNASHE_EXPORT viennasheErrorCode viennashe_get_num_segments(viennashe_device dev, viennashe_index_type *num)
VIENNASHE_EXPORT viennasheErrorCode viennashe_create_device_flat(viennashe_device *dev, viennashe_topology_type_id topology_id, double *vertices, viennashe_index_type num_vertices, viennashe_index_type *cells, viennashe_index_type num_cells, viennashe_index_type *segmentation)
VIENNASHE_EXPORT viennasheErrorCode viennashe_free_device(viennashe_device dev)
VIENNASHE_EXPORT viennasheErrorCode viennashe_set_contact_potential_cells(viennashe_device dev, viennashe_index_type *cell_ids, double *values, viennashe_index_type len)
VIENNASHE_EXPORT viennasheErrorCode viennashe_create_1d_device(viennashe_device *dev, double len_x, size_t points_x)
VIENNASHE_EXPORT viennasheErrorCode viennashe_get_nth_cell(viennashe_device dev, viennashe_index_type cid, viennashe_index_type *vertex_id_list)
VIENNASHE_EXPORT viennasheErrorCode viennashe_get_grid(viennashe_device dev, double **vertices, viennashe_index_type *num_vertices, viennashe_index_type **cells, viennashe_index_type *num_cells)
viennashe_topology_type_id
Enum of available toplogical mesh configurations.
Definition: device.h:31
@ viennashe_quadrilateral_2d
Definition: device.h:32
@ viennashe_line_1d
Definition: device.h:31
@ viennashe_hexahedral_3d
Definition: device.h:33
@ viennashe_tetrahedral_3d
Definition: device.h:33
@ viennashe_triangular_2d
Definition: device.h:32
VIENNASHE_EXPORT viennasheErrorCode viennashe_set_contact_potential_segment(viennashe_device dev, double value, viennashe_index_type segment_id)
VIENNASHE_EXPORT viennasheErrorCode viennashe_get_num_cells(viennashe_device dev, viennashe_index_type *num)
VIENNASHE_EXPORT viennasheErrorCode viennashe_set_doping_p_on_segment(viennashe_device dev, double doping_p, viennashe_index_type segment_id)
VIENNASHE_EXPORT viennasheErrorCode viennashe_get_num_vertices_on_segment(viennashe_device dev, viennashe_index_type segment_id, viennashe_index_type *num)
VIENNASHE_EXPORT viennasheErrorCode viennashe_set_doping_n_on_segment(viennashe_device dev, double doping_n, viennashe_index_type segment_id)
VIENNASHE_EXPORT viennasheErrorCode viennashe_get_dimension(viennashe_device dev, viennashe_index_type *dim)
VIENNASHE_EXPORT viennasheErrorCode viennashe_initalize_device(viennashe_device dev, viennashe_material_id *material_ids, double *doping_n, double *doping_p)
VIENNASHE_EXPORT viennasheErrorCode viennashe_get_num_vertices_per_cell(viennashe_device dev, viennashe_index_type *num)
VIENNASHE_EXPORT viennasheErrorCode viennashe_get_nth_vertex(viennashe_device dev, viennashe_index_type vid, double *x, double *y, double *z)
VIENNASHE_EXPORT viennasheErrorCode viennashe_create_device(viennashe_device *dev, viennashe_topology_type_id topology_id, double **vertices, viennashe_index_type num_vertices, viennashe_index_type **cells, viennashe_index_type num_cells, viennashe_index_type *segmentation)
VIENNASHE_EXPORT viennasheErrorCode viennashe_set_material_on_segment(viennashe_device dev, viennashe_material_id material_id, viennashe_index_type segment_id)
VIENNASHE_EXPORT viennasheErrorCode viennashe_create_device_from_file(viennashe_device *dev, viennashe_topology_type_id topology_id, char const *filename)
VIENNASHE_EXPORT viennasheErrorCode viennashe_get_num_cells_on_segment(viennashe_device dev, viennashe_index_type segment_id, viennashe_index_type *num)
int viennasheErrorCode
Definition: error.h:25
long viennashe_material_id
Definition: material.h:26
int points_x
Definition: resistor.py:39
int len_x
Definition: resistor.py:38
Internal C++ to C wrapper for the device. Has typedefs and destructor.
unsigned long viennashe_index_type
Definition: sys.h:42
#define VIENNASHE_EXPORT
Definition: sys.h:19