From 1636d498fec3de7c085d748bb649753d7a041710 Mon Sep 17 00:00:00 2001 From: PeculiarOvertones Date: Thu, 14 Nov 2024 17:53:48 -0800 Subject: [PATCH 1/2] added negf input for all scripts described in the paper --- input/negf/cnt_free | 69 ---- .../longCNTs}/anglesVaried | 14 +- .../longCNTs}/periodic | 13 +- .../longCNTs}/spacingVaried | 14 +- .../1x_spacing/nonparallel_20CNTs_largeAngles | 15 +- .../1x_spacing/nonparallel_5CNTs_largeAngles | 14 +- .../1x_spacing/nonparallel_5CNTs_smallAngles | 15 +- .../shortCNTs/1x_spacing/parallel_5CNTs | 14 +- .../shortCNTs/1x_spacing/periodic | 21 +- .../nonparallel_20CNTs_largeAngles} | 15 +- .../4x_spacing/nonparallel_5CNTs_largeAngles | 0 .../shortCNTs/4x_spacing/parallel_5CNTs} | 12 +- .../shortCNTs/4x_spacing/periodic | 14 +- .../negf/point_charges/planar_CNTFET_Francois | 331 ++++++++++++++++ .../planar_CNTFET_Francois_test} | 100 +++-- input/negf/point_charges/topgate_CNTFET_2D | 357 +++++++++++++++++ input/negf/point_charges/topgate_CNTFET_Efm1 | 354 +++++++++++++++++ .../negf/scaling_studies/all_around_metal_eql | 221 +++++++++++ .../gate_all_around_noneql/VdsVary_N512 | 324 +++++++++++++++ .../gate_all_around_noneql/VgsVary_N512} | 20 +- .../4x_spacing/nonparallel_20CNTs_largeAngles | 370 ------------------ .../all_around_metal | 23 +- .../gate_all_around_VdsVary} | 39 +- .../gate_all_around_VgsVary | 326 +++++++++++++++ input/negf/validation_studies/planar_periodic | 300 ++++++++++++++ input/negf_scaling/cnt_free | 37 -- input/negf_scaling/weak/ppc_1024GPUs | 38 -- input/negf_scaling/weak/ppc_1GPU | 38 -- input/negf_scaling/weak/ppc_256GPUs | 38 -- input/negf_scaling/weak/ppc_512GPUs | 38 -- input/negf_scaling/weak/ppc_64GPUs | 38 -- input/negf_scaling/weak/ppc_8GPUs | 38 -- 32 files changed, 2426 insertions(+), 834 deletions(-) delete mode 100644 input/negf/cnt_free rename input/negf/{long20CNTs => planarCNTFETs_nonidealities/longCNTs}/anglesVaried (96%) rename input/negf/{long20CNTs => planarCNTFETs_nonidealities/longCNTs}/periodic (95%) rename input/negf/{long20CNTs => planarCNTFETs_nonidealities/longCNTs}/spacingVaried (95%) rename input/negf/{ => planarCNTFETs_nonidealities}/shortCNTs/1x_spacing/nonparallel_20CNTs_largeAngles (96%) rename input/negf/{ => planarCNTFETs_nonidealities}/shortCNTs/1x_spacing/nonparallel_5CNTs_largeAngles (96%) rename input/negf/{ => planarCNTFETs_nonidealities}/shortCNTs/1x_spacing/nonparallel_5CNTs_smallAngles (96%) rename input/negf/{ => planarCNTFETs_nonidealities}/shortCNTs/1x_spacing/parallel_5CNTs (96%) rename input/negf/{ => planarCNTFETs_nonidealities}/shortCNTs/1x_spacing/periodic (93%) rename input/negf/{shortCNTs/4x_spacing/nonparallel_20CNTs_largeAngles_diagnostics => planarCNTFETs_nonidealities/shortCNTs/4x_spacing/nonparallel_20CNTs_largeAngles} (97%) rename input/negf/{ => planarCNTFETs_nonidealities}/shortCNTs/4x_spacing/nonparallel_5CNTs_largeAngles (100%) rename input/negf/{shortCNTs/4x_spacing/parallel_5CNTs_diag => planarCNTFETs_nonidealities/shortCNTs/4x_spacing/parallel_5CNTs} (96%) rename input/negf/{ => planarCNTFETs_nonidealities}/shortCNTs/4x_spacing/periodic (96%) create mode 100644 input/negf/point_charges/planar_CNTFET_Francois rename input/negf/{shortCNTs/4x_spacing/parallel_5CNTs => point_charges/planar_CNTFET_Francois_test} (82%) create mode 100644 input/negf/point_charges/topgate_CNTFET_2D create mode 100644 input/negf/point_charges/topgate_CNTFET_Efm1 create mode 100644 input/negf/scaling_studies/all_around_metal_eql create mode 100644 input/negf/scaling_studies/gate_all_around_noneql/VdsVary_N512 rename input/negf/{StewartFrancois2006/GAA_VgsVary => scaling_studies/gate_all_around_noneql/VgsVary_N512} (92%) delete mode 100644 input/negf/shortCNTs/4x_spacing/nonparallel_20CNTs_largeAngles rename input/negf/{StewartFrancois2006 => validation_studies}/all_around_metal (90%) rename input/negf/{StewartFrancois2006/GAA_VdsVary => validation_studies/gate_all_around_VdsVary} (90%) create mode 100644 input/negf/validation_studies/gate_all_around_VgsVary create mode 100644 input/negf/validation_studies/planar_periodic delete mode 100644 input/negf_scaling/cnt_free delete mode 100644 input/negf_scaling/weak/ppc_1024GPUs delete mode 100644 input/negf_scaling/weak/ppc_1GPU delete mode 100644 input/negf_scaling/weak/ppc_256GPUs delete mode 100644 input/negf_scaling/weak/ppc_512GPUs delete mode 100644 input/negf_scaling/weak/ppc_64GPUs delete mode 100644 input/negf_scaling/weak/ppc_8GPUs diff --git a/input/negf/cnt_free b/input/negf/cnt_free deleted file mode 100644 index 44166df..0000000 --- a/input/negf/cnt_free +++ /dev/null @@ -1,69 +0,0 @@ -use_electrostatic = 0 -use_transport = 1 -amrex.the_arena_is_managed=1 - -################################## -##### USER DEFINED CONSTANTS ##### -################################## - -### Physical and Other Constants -my_constants.q = 1.602e-19 -my_constants.epsilon_0 = 8.8541878128e-12 -my_constants.tiny = 1e-12 - -### Carbon nanotube -my_constants.m_index = 17 -my_constants.n_index = 0 -my_constants.bond_length = 0.142e-9 -my_constants.N_unitcells = 1000 -my_constants.L_unitcell = 3*bond_length #0.426e-9 - -my_constants.R_CN = bond_length*sqrt(3.*(m_index*m_index + n_index*n_index + m_index*n_index))/(2*pi) #radius - -my_constants.CN_z = R_CN + 2e-9 -my_constants.CN_x = 0. -my_constants.CN_y = 0. - -my_constants.Ef = -1. #Palladium Contact Fermi level [eV] - -###################################### - -#################### -###### OUTPUT ###### -#################### - -plot.folder_name = free_cnt - -################# -###### NEGF ##### -################# - -#nanostructure names -transport.NS_names = cnt -transport.use_negf = 1 - -cnt.type = CNT -cnt.type_id = m_index n_index #m n -cnt.acc = bond_length -cnt.gamma = 2.5 #coupling strength (eV) -cnt.num_unitcells = N_unitcells -cnt.offset = CN_x CN_y CN_z - -cnt.contact_mu_specified = 0 -cnt.contact_mu = Ef Ef+0.1 -cnt.contact_T = 298. 298. - -cnt.impose_potential = 1 -#cnt.potential_profile_type = constant -#cnt.applied_voltage = 0. -cnt.potential_profile_type = linear -cnt.applied_voltage_limits = 0. -0.1 - -cnt.contact_Fermi_level = Ef -cnt.E_valence_min = -10 -cnt.E_pole_max = 3 -cnt.eq_integration_pts = 30 30 30 -cnt.noneq_integration_pts = 100 - -#graphene.type = Graphene -###################################### diff --git a/input/negf/long20CNTs/anglesVaried b/input/negf/planarCNTFETs_nonidealities/longCNTs/anglesVaried similarity index 96% rename from input/negf/long20CNTs/anglesVaried rename to input/negf/planarCNTFETs_nonidealities/longCNTs/anglesVaried index f52cb0d..f04e424 100644 --- a/input/negf/long20CNTs/anglesVaried +++ b/input/negf/planarCNTFETs_nonidealities/longCNTs/anglesVaried @@ -1,10 +1,10 @@ -################ -# Test case for validation of periodic boundary conditions -- infinite array of nanotubes. -# The output of conductance can be compared with the result from the following reference, -# Fig. 2), periodicity distance, d=3.195 nm == 3.2 nm. (see width_factor defined below). -# Léonard, F. (2006). Crosstalk between nanotube devices: contact and channel effects. -# Nanotechnology, 17(9), 2381. -################ +############### +# Description: +# This test case models planar CNTFET simulation with 20 CNTs (100 nm long) +# and with variations in the spacing between adjacent CNTs. +# +# It can be used to produce Fig 5a,5b,5c in the ELEQTRONeX paper. +################ ################ ##### FLAGS #### diff --git a/input/negf/long20CNTs/periodic b/input/negf/planarCNTFETs_nonidealities/longCNTs/periodic similarity index 95% rename from input/negf/long20CNTs/periodic rename to input/negf/planarCNTFETs_nonidealities/longCNTs/periodic index 5210cad..d358c5e 100644 --- a/input/negf/long20CNTs/periodic +++ b/input/negf/planarCNTFETs_nonidealities/longCNTs/periodic @@ -1,10 +1,9 @@ -################ -# Test case for validation of periodic boundary conditions -- infinite array of nanotubes. -# The output of conductance can be compared with the result from the following reference, -# Fig. 2), periodicity distance, d=3.195 nm == 3.2 nm. (see width_factor defined below). -# Léonard, F. (2006). Crosstalk between nanotube devices: contact and channel effects. -# Nanotechnology, 17(9), 2381. -################ +############### +# Description: +# This test case models planar CNTFET simulation with 1 CNT (100 nm long) +# and with periodic boundary conditions. +# It can be used to produce the periodic curve in Fig 5a and 5b. +################ ################ ##### FLAGS #### diff --git a/input/negf/long20CNTs/spacingVaried b/input/negf/planarCNTFETs_nonidealities/longCNTs/spacingVaried similarity index 95% rename from input/negf/long20CNTs/spacingVaried rename to input/negf/planarCNTFETs_nonidealities/longCNTs/spacingVaried index 595a587..f7de7ce 100644 --- a/input/negf/long20CNTs/spacingVaried +++ b/input/negf/planarCNTFETs_nonidealities/longCNTs/spacingVaried @@ -1,10 +1,10 @@ -################ -# Test case for validation of periodic boundary conditions -- infinite array of nanotubes. -# The output of conductance can be compared with the result from the following reference, -# Fig. 2), periodicity distance, d=3.195 nm == 3.2 nm. (see width_factor defined below). -# Léonard, F. (2006). Crosstalk between nanotube devices: contact and channel effects. -# Nanotechnology, 17(9), 2381. -################ +############### +# Description: +# This test case models planar CNTFET simulation with 20 CNTs (100 nm long) +# and with variations in the spacing between adjacent CNTs. +# +# It can be used to produce Fig 5d,5e,5f in the ELEQTRONeX paper. +################ ################ ##### FLAGS #### diff --git a/input/negf/shortCNTs/1x_spacing/nonparallel_20CNTs_largeAngles b/input/negf/planarCNTFETs_nonidealities/shortCNTs/1x_spacing/nonparallel_20CNTs_largeAngles similarity index 96% rename from input/negf/shortCNTs/1x_spacing/nonparallel_20CNTs_largeAngles rename to input/negf/planarCNTFETs_nonidealities/shortCNTs/1x_spacing/nonparallel_20CNTs_largeAngles index f283c7d..167c12a 100644 --- a/input/negf/shortCNTs/1x_spacing/nonparallel_20CNTs_largeAngles +++ b/input/negf/planarCNTFETs_nonidealities/shortCNTs/1x_spacing/nonparallel_20CNTs_largeAngles @@ -1,10 +1,15 @@ -################ -# Test case for validation of periodic boundary conditions -- infinite array of nanotubes. -# The output of conductance can be compared with the result from the following reference, -# Fig. 2), periodicity distance, d=3.195 nm == 3.2 nm. (see width_factor defined below). +############### +# Description: +# This test case models planar CNTFET simulation with 20 CNTs with +# large angular variations. Setup is the same as in the reference +# below with distance between CNTs of ~3.2 nm. +# +# It can be used to verify that it would produce results similar to +# 5 CNTs with angular variations. +# # Léonard, F. (2006). Crosstalk between nanotube devices: contact and channel effects. # Nanotechnology, 17(9), 2381. -################ +################ ################ ##### FLAGS #### diff --git a/input/negf/shortCNTs/1x_spacing/nonparallel_5CNTs_largeAngles b/input/negf/planarCNTFETs_nonidealities/shortCNTs/1x_spacing/nonparallel_5CNTs_largeAngles similarity index 96% rename from input/negf/shortCNTs/1x_spacing/nonparallel_5CNTs_largeAngles rename to input/negf/planarCNTFETs_nonidealities/shortCNTs/1x_spacing/nonparallel_5CNTs_largeAngles index 4ad0ee8..22574c1 100644 --- a/input/negf/shortCNTs/1x_spacing/nonparallel_5CNTs_largeAngles +++ b/input/negf/planarCNTFETs_nonidealities/shortCNTs/1x_spacing/nonparallel_5CNTs_largeAngles @@ -1,10 +1,14 @@ -################ -# Test case for validation of periodic boundary conditions -- infinite array of nanotubes. -# The output of conductance can be compared with the result from the following reference, -# Fig. 2), periodicity distance, d=3.195 nm == 3.2 nm. (see width_factor defined below). +############### +# Description: +# This test case models planar CNTFET simulation with 5 CNTs +# with angular variations. Setup is the same as in the reference +# below with distance between CNTs of ~3.2 nm. +# +# It can be used to produce Fig 4a (5 CNTs with angular variation) in the ELEQTRONeX paper. +# # Léonard, F. (2006). Crosstalk between nanotube devices: contact and channel effects. # Nanotechnology, 17(9), 2381. -################ +################ ################ ##### FLAGS #### diff --git a/input/negf/shortCNTs/1x_spacing/nonparallel_5CNTs_smallAngles b/input/negf/planarCNTFETs_nonidealities/shortCNTs/1x_spacing/nonparallel_5CNTs_smallAngles similarity index 96% rename from input/negf/shortCNTs/1x_spacing/nonparallel_5CNTs_smallAngles rename to input/negf/planarCNTFETs_nonidealities/shortCNTs/1x_spacing/nonparallel_5CNTs_smallAngles index ba731fb..9374e73 100644 --- a/input/negf/shortCNTs/1x_spacing/nonparallel_5CNTs_smallAngles +++ b/input/negf/planarCNTFETs_nonidealities/shortCNTs/1x_spacing/nonparallel_5CNTs_smallAngles @@ -1,10 +1,15 @@ -################ -# Test case for validation of periodic boundary conditions -- infinite array of nanotubes. -# The output of conductance can be compared with the result from the following reference, -# Fig. 2), periodicity distance, d=3.195 nm == 3.2 nm. (see width_factor defined below). +############### +# Description: +# This test case models planar CNTFET simulation with 5 CNTs +# and small variations in angles. Setup is the same as in the +# reference below with distance between CNTs of ~3.2 nm. +# +# It can be used to verify that with small variations in angles +# we obtain the same result as the parallel CNTs case. +# # Léonard, F. (2006). Crosstalk between nanotube devices: contact and channel effects. # Nanotechnology, 17(9), 2381. -################ +################ ################ ##### FLAGS #### diff --git a/input/negf/shortCNTs/1x_spacing/parallel_5CNTs b/input/negf/planarCNTFETs_nonidealities/shortCNTs/1x_spacing/parallel_5CNTs similarity index 96% rename from input/negf/shortCNTs/1x_spacing/parallel_5CNTs rename to input/negf/planarCNTFETs_nonidealities/shortCNTs/1x_spacing/parallel_5CNTs index 41c9f60..ba795d3 100644 --- a/input/negf/shortCNTs/1x_spacing/parallel_5CNTs +++ b/input/negf/planarCNTFETs_nonidealities/shortCNTs/1x_spacing/parallel_5CNTs @@ -1,10 +1,14 @@ -################ -# Test case for validation of periodic boundary conditions -- infinite array of nanotubes. -# The output of conductance can be compared with the result from the following reference, -# Fig. 2), periodicity distance, d=3.195 nm == 3.2 nm. (see width_factor defined below). +############### +# Description: +# This test case models planar CNTFET simulation with 5 parallel CNTs. +# Setup is the same as in the reference below with distance +# between CNTs of ~3.2 nm. +# +# It can be used to produce Fig 4a (5 CNTs parallel) in the ELEQTRONeX paper. +# # Léonard, F. (2006). Crosstalk between nanotube devices: contact and channel effects. # Nanotechnology, 17(9), 2381. -################ +################ ################ ##### FLAGS #### diff --git a/input/negf/shortCNTs/1x_spacing/periodic b/input/negf/planarCNTFETs_nonidealities/shortCNTs/1x_spacing/periodic similarity index 93% rename from input/negf/shortCNTs/1x_spacing/periodic rename to input/negf/planarCNTFETs_nonidealities/shortCNTs/1x_spacing/periodic index b729887..8e3518c 100644 --- a/input/negf/shortCNTs/1x_spacing/periodic +++ b/input/negf/planarCNTFETs_nonidealities/shortCNTs/1x_spacing/periodic @@ -1,10 +1,17 @@ -################ -# Test case for validation of periodic boundary conditions -- infinite array of nanotubes. -# The output of conductance can be compared with the result from the following reference, -# Fig. 2), periodicity distance, d=3.195 nm == 3.2 nm. (see width_factor defined below). -# Léonard, F. (2006). Crosstalk between nanotube devices: contact and channel effects. -# Nanotechnology, 17(9), 2381. -################ +############################################################### +# Description: +# This script models planar CNTFET with periodic boundary +# conditions as described in the Ref. below It can be used +# to reproduce Fig. 2d in the ELEQTRONeX paper. +# The output conductance can be compared with the reference +# below for periodicity distance d = 3.195 nm ≈ 3.2 nm +# (see `width_factor` defined below). +# +# Reference: +# Léonard, F. (2006). Crosstalk between nanotube devices: +# contact and channel effects. Nanotechnology, 17(9), 2381. +# DOI: 10.1088/0957-4484/17/9/029 +############################################################### ################ ##### FLAGS #### diff --git a/input/negf/shortCNTs/4x_spacing/nonparallel_20CNTs_largeAngles_diagnostics b/input/negf/planarCNTFETs_nonidealities/shortCNTs/4x_spacing/nonparallel_20CNTs_largeAngles similarity index 97% rename from input/negf/shortCNTs/4x_spacing/nonparallel_20CNTs_largeAngles_diagnostics rename to input/negf/planarCNTFETs_nonidealities/shortCNTs/4x_spacing/nonparallel_20CNTs_largeAngles index 3629e5d..aee4545 100644 --- a/input/negf/shortCNTs/4x_spacing/nonparallel_20CNTs_largeAngles_diagnostics +++ b/input/negf/planarCNTFETs_nonidealities/shortCNTs/4x_spacing/nonparallel_20CNTs_largeAngles @@ -1,10 +1,15 @@ -################ -# Test case for validation of periodic boundary conditions -- infinite array of nanotubes. -# The output of conductance can be compared with the result from the following reference, -# Fig. 2), periodicity distance, d=3.195 nm == 3.2 nm. (see width_factor defined below). +############### +# Description: +# This test case models planar CNTFET simulation with 20 CNTs. +# Setup is the same as in the reference below with distance +# between CNTs of 12.8 nm. CNTs are misaligned. +# +# It can be used to produce Fig 4c (20CNTs curve) and Fig. 4d +# in the ELEQTRONeX paper. +# # Léonard, F. (2006). Crosstalk between nanotube devices: contact and channel effects. # Nanotechnology, 17(9), 2381. -################ +################ ################ ##### FLAGS #### diff --git a/input/negf/shortCNTs/4x_spacing/nonparallel_5CNTs_largeAngles b/input/negf/planarCNTFETs_nonidealities/shortCNTs/4x_spacing/nonparallel_5CNTs_largeAngles similarity index 100% rename from input/negf/shortCNTs/4x_spacing/nonparallel_5CNTs_largeAngles rename to input/negf/planarCNTFETs_nonidealities/shortCNTs/4x_spacing/nonparallel_5CNTs_largeAngles diff --git a/input/negf/shortCNTs/4x_spacing/parallel_5CNTs_diag b/input/negf/planarCNTFETs_nonidealities/shortCNTs/4x_spacing/parallel_5CNTs similarity index 96% rename from input/negf/shortCNTs/4x_spacing/parallel_5CNTs_diag rename to input/negf/planarCNTFETs_nonidealities/shortCNTs/4x_spacing/parallel_5CNTs index 718f407..cb905e8 100644 --- a/input/negf/shortCNTs/4x_spacing/parallel_5CNTs_diag +++ b/input/negf/planarCNTFETs_nonidealities/shortCNTs/4x_spacing/parallel_5CNTs @@ -1,7 +1,11 @@ -################ -# Test case for validation of periodic boundary conditions -- infinite array of nanotubes. -# The output of conductance can be compared with the result from the following reference, -# Fig. 2), periodicity distance, d=3.195 nm == 3.2 nm. (see width_factor defined below). +############### +# Description: +# This test case models planar CNTFET simulation with 5 CNTs. +# Setup is the same as in the reference below with distance +# between CNTs of 12.8 nm. +# +# It can be used to produce Fig 4c (5 CNT curve) in the ELEQTRONeX paper. +# # Léonard, F. (2006). Crosstalk between nanotube devices: contact and channel effects. # Nanotechnology, 17(9), 2381. ################ diff --git a/input/negf/shortCNTs/4x_spacing/periodic b/input/negf/planarCNTFETs_nonidealities/shortCNTs/4x_spacing/periodic similarity index 96% rename from input/negf/shortCNTs/4x_spacing/periodic rename to input/negf/planarCNTFETs_nonidealities/shortCNTs/4x_spacing/periodic index 6b5e992..d93786d 100644 --- a/input/negf/shortCNTs/4x_spacing/periodic +++ b/input/negf/planarCNTFETs_nonidealities/shortCNTs/4x_spacing/periodic @@ -1,10 +1,14 @@ -################ -# Test case for validation of periodic boundary conditions -- infinite array of nanotubes. -# The output of conductance can be compared with the result from the following reference, -# Fig. 2), periodicity distance, d=3.195 nm == 3.2 nm. (see width_factor defined below). +############### +# Description: +# This test case models planar CNTFET simulation with 5 CNTs. +# Setup is the same as in the reference below with distance +# between CNTs of 12.8 nm. +# +# It can be used to produce Fig 4c (periodic curve) in the ELEQTRONeX paper. +# # Léonard, F. (2006). Crosstalk between nanotube devices: contact and channel effects. # Nanotechnology, 17(9), 2381. -################ +################ ################ ##### FLAGS #### diff --git a/input/negf/point_charges/planar_CNTFET_Francois b/input/negf/point_charges/planar_CNTFET_Francois new file mode 100644 index 0000000..0a688cd --- /dev/null +++ b/input/negf/point_charges/planar_CNTFET_Francois @@ -0,0 +1,331 @@ +################ +# 10 nm cnt with single point charge located above center of CNT +################ + +################ +##### FLAGS #### +################ +use_electrostatic = 1 +use_transport = 1 +amrex.the_arena_is_managed=1 + +################################ +##### Some Important Params #### +################################ +my_constants.gx = 1 +my_constants.gy = 256 +my_constants.gz = 2 + +my_constants.num_CNTs = 1 +my_constants.periodicity_factor = 14.5 #corresponds to 24.7 nm width + +my_constants.Channel_unitcells = 704 +my_constants.Overlap_unitcells = 32 + +my_constants.Vds = 0. #Drain-Source voltage [V] +my_constants.Vgs_min = -10 +my_constants.Vgs_max = 0 +my_constants.Nsteps = 21 +#my_constants.dt = 1 +my_constants.dt = 1./(Nsteps-1) + + +plot.folder_name = /global/cfs/projectdirs/m4540/eXstatic/point_charge/planar_CNTFET_Francois +#plot.folder_name = planar_CNTFET_10nm +plot.write_after_init = 0 +plot.write_interval = 10000 + +transport.flag_compute_DOS = 1 #DOS, Transmission, Conductance +transport.flag_write_LDOS = 1 +transport.flag_write_LDOS_iter = 0 +transport.write_LDOS_iter_period = 10 + +restart = 0 +restart_step = 0 +NS_default.initialize_charge_distribution = 0 +################################## +##### USER DEFINED CONSTANTS ##### +################################## + +### Physical and Other Constants ### +#################################### + +my_constants.q = 1.602e-19 +my_constants.epsilon_0 = 8.8541878128e-12 +my_constants.pi = 3.141592653589793 + +my_constants.epsilon_GO = 3.9*epsilon_0 + +my_constants.SV = 0. #source voltage [V] +my_constants.Ef = -1. #Palladium Contact Fermi level [eV] + +### Total domain dimensions ### +############################### +my_constants.Gap_unitcells = 0 +my_constants.N_unitcells = Channel_unitcells + 2*Overlap_unitcells + 2*Gap_unitcells + +my_constants.Ly_offset_unitcells = 0 + +my_constants.cells_per_unitcell = 16 #cell_size = 0.0355 nm + +my_constants.unitcells_per_D_CN = ceil((R_CN*2)/(L_unitcell)) #unitcells per diameter + +my_constants.periodicity_length = periodicity_factor * unitcells_per_D_CN * L_unitcell + +my_constants.width_factor = (num_CNTs)*periodicity_factor #1.875 corresponds to 3.195 nm (smallest periodicity distance) + +my_constants.height_factor = 3*width_factor + +my_constants.ny = (N_unitcells + Ly_offset_unitcells) * cells_per_unitcell +my_constants.nx = width_factor * unitcells_per_D_CN * cells_per_unitcell +my_constants.nz = height_factor * unitcells_per_D_CN * cells_per_unitcell + +my_constants.Ly = (N_unitcells + Ly_offset_unitcells) * L_unitcell +my_constants.Lx = width_factor * unitcells_per_D_CN * L_unitcell +my_constants.Lz = height_factor * unitcells_per_D_CN * L_unitcell + +my_constants.dx = Lx/nx +my_constants.dy = Ly/ny +my_constants.dz = Lz/nz + +my_constants.Lz_min = -(R_CN + small_gap + GO_total_thickness + G_thickness) +my_constants.Lz_max = Lz + Lz_min + +### Carbon nanotube ### +####################### + +my_constants.m_index = 17 +my_constants.n_index = 0 + + +my_constants.bond_length = 0.142e-9 +my_constants.small_gap = 0.3e-9 #gap between nanotube and the contacts + +my_constants.CN_z = 0. +my_constants.CN_x = 0. +my_constants.CN_y = 0. + +my_constants.L_unitcell = 3*bond_length #0.426e-9 +my_constants.R_CN = bond_length*sqrt(3.*(m_index*m_index + n_index*n_index + m_index*n_index))/(2*pi) #radius +my_constants.CN_co_l = Overlap_unitcells*L_unitcell #total contact overlap length on both sides + +my_constants.CNT_gap = 2.e-9 + +### contact metal ### +##################### +my_constants.CM_length = CN_co_l + MGO_gap +my_constants.CM_height = 5.e-9 + MGO_gap + +### gate oxide ### +################## + +my_constants.GO_total_thickness = 50.e-9 +my_constants.GO_bottom = Lz_min - dz/5. +my_constants.GO_top = GO_bottom + GO_total_thickness + dz/5. +my_constants.GO_middle = GO_top - CM_height + +### gate ### +############ + +my_constants.G_thickness = 0 +################################################## +###### TIME DEPENDENT SIMULATION PROPERTIES ###### +################################################## + +timestep = dt +steps = Nsteps + +#################################### +###### EMBEDDED BOUNDARIES ######### +#################################### + +domain.embedded_boundary = 1 #options: 1=true, 0=false (default) +domain.specify_using_eb2 = 0 #options: 1=true, 0=false (default) + +ebgeom.objects = Source Drain +ebgeom.specify_inhomo_dir = 1 + +my_constants.MGO_gap = -2*dx/5. #gap between metal and gate oxide +my_constants.MB_gap = -2*dx/5. + +Source.geom_type = box +Source.box_lo = (-Lx/2. + MB_gap) (-Ly/2. + MB_gap) ( GO_top - CM_height + MGO_gap) +Source.box_hi = ( Lx/2. - MB_gap) (-Ly/2. + CM_length - MGO_gap ) ( GO_top) +Source.has_fluid_inside = false +Source.surf_soln = SV + +Drain.geom_type = box +Drain.box_lo = (-Lx/2. + MB_gap) ( Ly/2. - CM_length + MGO_gap ) ( GO_top - CM_height + MGO_gap) +Drain.box_hi = ( Lx/2. - MB_gap) ( Ly/2. - MB_gap ) ( GO_top ) +Drain.has_fluid_inside = false +Drain.surf_soln = Vds + SV +################################# +###### GEOMETRY PROPERTIES ###### +################################# +domain.n_cell = nx ny nz +domain.max_grid_size = nx/gx ny/gy nz/gz +domain.blocking_factor = nx/gx ny/gy nz/gz + + +domain.prob_lo = -Lx/2. -Ly/2. Lz_min +domain.prob_hi = Lx/2. Ly/2. Lz_max + +domain.is_periodic = 0 0 0 + +domain.coord_sys = cartesian + +############################## +###### Point Charges ######### +############################## +my_constants.ZOffset = GO_top - dz +# +charge_density_source.type = point_charge +pc.flag_vary_occupation = 1 +pc.mixing_factor = 0.1 +pc.offset = (-Lx/2. + 10*dx) (-Ly/2. + CM_length) (ZOffset) +pc.scaling = (Lx - 20*dx) (Ly - 2*CM_length) (0) +pc.Et = 2 +pc.V0 = 0.5 +pc.default_charge_unit = 1 +pc.default_occupation = 1 + +pc.flag_random_positions = 1 +pc.charge_density=0.04e18 #cubic meter +pc.random_seed = 0 + +#pc.num = 1 +#pc_1.location = CN_x CN_y (CN_z + R_CN + 1e-9) + +################################# +###### BOUNDARY CONDITIONS ###### +################################# +boundary.hi = neu(0.) neu(0.) neu(0.) +boundary.lo = neu(0.) neu(0.) dir(Gate) + +boundary.Gate_function = "SV + Vgs_max - (Vgs_max-Vgs_min) * t" + +#################################### +###### MACROSCOPIC PROPERTIES ###### +#################################### +macroscopic.fields_to_define = alpha epsilon charge_density phi atom_locations +macroscopic.ghostcells_for_fields = alpha.0 epsilon.1 charge_density.1 phi.1 atom_locations.0 + +macroscopic.alpha = 0. +macroscopic.charge_density = 0. +macroscopic.epsilon_function = "epsilon_0 + (epsilon_GO - epsilon_0) * (z < GO_middle) + (epsilon_GO - epsilon_0) * (z >= GO_middle) * (z < GO_top) * (y >= (-Ly/2. + CM_length) ) * (y < (Ly/2. - CM_length) ) " + +macroscopic.phi = 0. +macroscopic.atom_locations = 0. + +############################# +###### POST PROCESSING ###### +############################# + +#post_process.fields_to_process = vecField + +#################### +###### OUTPUT ###### +#################### + +plot.fields_to_plot = epsilon.1 charge_density.1 phi.1 atom_locations #vecField +plot.rawfield_write_interval = 1000000 + +######################## +###### DIAGNOSTICS ##### +######################## +use_diagnostics = 1 + +diag.specify_using_eb = 1 +diag.objects = X Y Z +X.geom_type = plane +X.direction = 0 +X.location = 0.0 +X.fields_to_plot = phi + +Y.geom_type = plane +Y.direction = 1 +Y.location = 0.0 +Y.fields_to_plot = phi + +Z.geom_type = plane +Z.direction = 2 +Z.location = ZOffset +Z.fields_to_plot = charge_density + +#diag.objects = Surf1 +#Surf1.geom_type = cylinder +#Surf1.center = 0 0 CN_z +#Surf1.radius = R_CN +#Surf1.axial_direction = 1 +#Surf1.theta_reference_direction = 0 +#Surf1.has_fluid_inside = 0 +#Surf1.fields_to_plot = phi charge_density atom_locations + +#################################### +###### MLMG SOLVER PROPERTIES ###### +#################################### + +mlmg.ascalar=0 +mlmg.bscalar=1 + +mlmg.soln = phi +mlmg.rhs = charge_density +mlmg.alpha = alpha +mlmg.beta = epsilon + +mlmg.set_verbose=0 +mlmg.max_order=2 +mlmg.absolute_tolerance=0 +mlmg.relative_tolerance=1e-10 + +################# +###### NEGF ##### +################# +transport.use_negf = 1 + +#transport.NS_names = cnt1 cnt2 +transport.NS_num = num_CNTs +transport.NS_type_default = CNT +transport.NS_gather_field = phi +transport.NS_deposit_field = charge_density +transport.NS_initial_deposit_value = 1.e-3 +transport.Broyden_fraction = 0.1 +transport.Broyden_max_norm = 1.e-5 +transport.Broyden_norm_type = relative +transport.selfconsistency_algorithm = broyden_second +transport.reset_with_previous_charge_distribution = 1 +transport.initialize_inverse_jacobian = 0 +transport.gate_terminal_type = Boundary +transport.Broyden_threshold_maxstep = 100 + +NS_default.num_unitcells = N_unitcells +NS_default.rotation_order = Z +NS_default.rotation_angle_type = D +NS_default.rotation_angles = 0 0 0 +NS_default.contact_Fermi_level = Ef +NS_default.contact_mu_specified = 1 +NS_default.contact_mu = Ef (Ef - Vds) +NS_default.contact_T = 298. 298. +NS_default.Fermi_tail_factors = 14 14 +NS_default.eq_integration_pts = 30 30 30 +NS_default.flag_compute_flatband_dos = 0 +NS_default.flatband_dos_integration_pts = 400 +NS_default.flatband_dos_integration_limits = -1. 1. +NS_default.noneq_integration_pts = 400 +NS_default.flag_write_integrand = 0 +NS_default.flag_write_charge_components = 0 +NS_default.num_noneq_paths = 1 +NS_default.num_recursive_parts = 2 +NS_default.write_at_iter = 0 +#NS_default.charge_distribution_filename = +#NS_default.read_step = +#NS_default.read_negf_foldername = +NS_default.E_valence_min = -10 +NS_default.E_pole_max = 3 +NS_default.E_zPlus_imag = 1.e-5 + +CNT_default.type_id = m_index n_index +CNT_default.acc = bond_length +CNT_default.gamma = 2.5 + +NS_1.offset = (CN_x + (0/2.)*periodicity_length) CN_y CN_z diff --git a/input/negf/shortCNTs/4x_spacing/parallel_5CNTs b/input/negf/point_charges/planar_CNTFET_Francois_test similarity index 82% rename from input/negf/shortCNTs/4x_spacing/parallel_5CNTs rename to input/negf/point_charges/planar_CNTFET_Francois_test index c24ca50..beb729d 100644 --- a/input/negf/shortCNTs/4x_spacing/parallel_5CNTs +++ b/input/negf/point_charges/planar_CNTFET_Francois_test @@ -1,9 +1,5 @@ ################ -# Test case for validation of periodic boundary conditions -- infinite array of nanotubes. -# The output of conductance can be compared with the result from the following reference, -# Fig. 2), periodicity distance, d=3.195 nm == 3.2 nm. (see width_factor defined below). -# Léonard, F. (2006). Crosstalk between nanotube devices: contact and channel effects. -# Nanotechnology, 17(9), 2381. +# 10 nm cnt with single point charge located above center of CNT ################ ################ @@ -16,34 +12,37 @@ amrex.the_arena_is_managed=1 ################################ ##### Some Important Params #### ################################ -my_constants.gx = 2 -my_constants.gy = 8 +my_constants.gx = 1 +my_constants.gy = 4 my_constants.gz = 2 -my_constants.num_CNTs = 5 -my_constants.periodicity_factor = 7.5 #1.875 corresponds to 3.195 nm (smallest periodicity distance) +my_constants.num_CNTs = 1 +my_constants.periodicity_factor = 7.5 #corresponds to 24.7 nm width my_constants.Channel_unitcells = 24 my_constants.Overlap_unitcells = 12 my_constants.Vds = 0. #Drain-Source voltage [V] -my_constants.Vgs_min = -4 -my_constants.Vgs_max = 12 -my_constants.Nsteps = 65 +my_constants.Vgs_min = -10 +my_constants.Vgs_max = 0 +my_constants.Nsteps = 21 +#my_constants.dt = 1 my_constants.dt = 1./(Nsteps-1) -plot.folder_name = /global/cfs/projectdirs/m4540/eXstatic/4x_spacing/parallel_5CNTs -plot.write_after_init = 1 -plot.write_interval = 1 + +plot.folder_name = /global/cfs/projectdirs/m4540/eXstatic/point_charge/planar_CNTFET_Francois_test +#plot.folder_name = planar_CNTFET_10nm +plot.write_after_init = 0 +plot.write_interval = 100000 transport.flag_compute_DOS = 1 #DOS, Transmission, Conductance -transport.flag_write_LDOS = 0 +transport.flag_write_LDOS = 1 transport.flag_write_LDOS_iter = 0 transport.write_LDOS_iter_period = 10 -restart = 1 -restart_step = 55 -NS_default.initialize_charge_distribution = 1 +restart = 0 +restart_step = 0 +NS_default.initialize_charge_distribution = 0 ################################## ##### USER DEFINED CONSTANTS ##### ################################## @@ -73,7 +72,7 @@ my_constants.unitcells_per_D_CN = ceil((R_CN*2)/(L_unitcell)) #unitcells per dia my_constants.periodicity_length = periodicity_factor * unitcells_per_D_CN * L_unitcell -my_constants.width_factor = (num_CNTs+2)*periodicity_factor #1.875 corresponds to 3.195 nm (smallest periodicity distance) +my_constants.width_factor = (num_CNTs)*periodicity_factor #1.875 corresponds to 3.195 nm (smallest periodicity distance) my_constants.height_factor = 12 @@ -175,6 +174,28 @@ domain.is_periodic = 0 0 0 domain.coord_sys = cartesian +############################## +###### Point Charges ######### +############################## +my_constants.ZOffset = GO_top - dz + +charge_density_source.type = point_charge +pc.flag_vary_occupation = 1 +pc.mixing_factor = 0.1 +pc.offset = (-Lx/2. + 10*dx) (-Ly/2. + CM_length) (ZOffset) +pc.scaling = (Lx - 20*dx) (Ly - 2*CM_length) (0) +pc.Et = 2 +pc.V0 = 0.5 +pc.default_charge_unit = 1 +pc.default_occupation = 1 + +pc.flag_random_positions = 1 +pc.charge_density=0.7e18 #cubic meter +pc.random_seed = 0 + +#pc.num = 1 +#pc_1.location = CN_x CN_y (CN_z + R_CN + 1e-9) + ################################# ###### BOUNDARY CONDITIONS ###### ################################# @@ -212,9 +233,25 @@ plot.rawfield_write_interval = 1000000 ######################## ###### DIAGNOSTICS ##### ######################## -use_diagnostics = 0 +use_diagnostics = 1 + +diag.specify_using_eb = 1 +diag.objects = X Y Z +X.geom_type = plane +X.direction = 0 +X.location = 0.0 +X.fields_to_plot = phi + +Y.geom_type = plane +Y.direction = 1 +Y.location = 0.0 +Y.fields_to_plot = phi + +Z.geom_type = plane +Z.direction = 2 +Z.location = ZOffset +Z.fields_to_plot = charge_density -#diag.specify_using_eb = 1 #diag.objects = Surf1 #Surf1.geom_type = cylinder #Surf1.center = 0 0 CN_z @@ -222,7 +259,7 @@ use_diagnostics = 0 #Surf1.axial_direction = 1 #Surf1.theta_reference_direction = 0 #Surf1.has_fluid_inside = 0 -#Surf1.fields_to_plot = phi charge_density +#Surf1.fields_to_plot = phi charge_density atom_locations #################################### ###### MLMG SOLVER PROPERTIES ###### @@ -271,7 +308,7 @@ NS_default.contact_mu = Ef (Ef - Vds) NS_default.contact_T = 298. 298. NS_default.Fermi_tail_factors = 14 14 NS_default.eq_integration_pts = 30 30 30 -NS_default.flag_compute_flatband_dos = 1 +NS_default.flag_compute_flatband_dos = 0 NS_default.flatband_dos_integration_pts = 400 NS_default.flatband_dos_integration_limits = -1. 1. NS_default.noneq_integration_pts = 400 @@ -291,17 +328,4 @@ CNT_default.type_id = m_index n_index CNT_default.acc = bond_length CNT_default.gamma = 2.5 - -NS_1.offset = (CN_x + (-4/2.)*periodicity_length) CN_y CN_z - - -NS_2.offset = (CN_x + (-2/2.)*periodicity_length) CN_y CN_z - - -NS_3.offset = (CN_x + (0/2.)*periodicity_length) CN_y CN_z - - -NS_4.offset = (CN_x + (2/2.)*periodicity_length) CN_y CN_z - - -NS_5.offset = (CN_x + (4/2.)*periodicity_length) CN_y CN_z +NS_1.offset = (CN_x + (0/2.)*periodicity_length) CN_y CN_z diff --git a/input/negf/point_charges/topgate_CNTFET_2D b/input/negf/point_charges/topgate_CNTFET_2D new file mode 100644 index 0000000..dda51a0 --- /dev/null +++ b/input/negf/point_charges/topgate_CNTFET_2D @@ -0,0 +1,357 @@ +################ +# Topgate Configuration, CONTROL, no point charge +################ + +################ +##### FLAGS #### +################ +use_electrostatic = 1 +use_transport = 1 +amrex.the_arena_is_managed=1 + +################################ +##### Some Important Params #### +################################ +my_constants.gx = 2 +my_constants.gy = 16 +my_constants.gz = 2 + +my_constants.num_CNTs = 1 +#my_constants.periodicity_factor = 2 #corresponds to ~294 CNTs/micron, 3.408 nm spacing +my_constants.periodicity_factor = 1.5 #corresponds to ~400 CNTs/micron, 2.5 nm spacing +my_constants.periodicity_length = periodicity_factor * unitcells_per_D_CN * L_unitcell + + +my_constants.Vds = 0. #Drain-Source voltage [V] +my_constants.Vgs_min = -1 +my_constants.Vgs_max = 0.6 +my_constants.Nsteps = 13 +my_constants.dt = 1./(Nsteps-1) + + +plot.folder_name = /global/cfs/projectdirs/m4540/eXstatic/point_charge/topgate_CNTFET/dummy +plot.write_after_init = 0 +plot.write_interval = 10000 + +transport.flag_compute_DOS = 1 #DOS, Transmission, Conductance +transport.flag_write_LDOS = 0 +transport.flag_write_LDOS_iter = 0 +transport.write_LDOS_iter_period = 10 + +restart = 0 +restart_step = 0 +NS_default.initialize_charge_distribution = 0 +NS_default.write_at_iter = 0 +################################## +##### USER DEFINED CONSTANTS ##### +################################## + +### Physical and Other Constants ### +#################################### + +my_constants.q = 1.602e-19 +my_constants.epsilon_0 = 8.8541878128e-12 +my_constants.pi = 3.141592653589793 + +my_constants.epsilon_GO = 25*epsilon_0 #HfO2 +my_constants.epsilon_S = 3.9*epsilon_0 #SiO2 + +my_constants.SV = 0. #source voltage [V] +my_constants.Ef = -0.2 #Palladium Contact Fermi level [eV] + +my_constants.MGO_gap = 5*dx + dx/5. #gap between metal and gate oxide +my_constants.MB_gap = dx #2*dx/5. + +### Total domain dimensions ### +############################### +my_constants.N_unitcells = Channel_unitcells + 2*Overlap_unitcells + +my_constants.length_unitcells = ceil((FET_length*1e9/0.426) / 8) * 8 +my_constants.height_unitcells = ceil(((FET_height*1e9/0.426)+4) / 16) * 16 + +my_constants.width_factor = num_CNTs*periodicity_factor #1.875 corresponds to 3.195 nm (smallest periodicity distance) + +my_constants.cells_per_unitcell = 16 #cell_size = 0.0355 nm +my_constants.unitcells_per_D_CN = ceil((R_CN*2)/(L_unitcell)) #unitcells per diameter + +my_constants.nx = width_factor * unitcells_per_D_CN * cells_per_unitcell +my_constants.ny = length_unitcells * cells_per_unitcell +my_constants.nz = height_unitcells * cells_per_unitcell + +my_constants.Lx = width_factor * unitcells_per_D_CN * L_unitcell +my_constants.Ly = length_unitcells * L_unitcell +my_constants.Lz = height_unitcells * L_unitcell + +my_constants.Lz_min = -(R_CN + small_gap + S_thickness) +my_constants.Lz_max = Lz + Lz_min + +my_constants.dx = Lx/nx +my_constants.dy = Ly/ny +my_constants.dz = Lz/nz + +### Carbon nanotube ### +####################### + +my_constants.m_index = 20 +my_constants.n_index = 0 + +my_constants.bond_length = 0.142e-9 +my_constants.small_gap = 0.3e-9 #gap between nanotube and the contacts +my_constants.L_unitcell = 3*bond_length #0.426e-9 + +#cnt center +my_constants.CN_z = 0. +my_constants.CN_x = 0. +my_constants.CN_y = 0. + +my_constants.Channel_unitcells = ((G_length + 2*GO_thickness)*1e9/0.426) +my_constants.Channel_length = (G_length + 2*GO_thickness) + +#my_constants.Overlap_unitcells = ((CM_length - CM_y_thickness)*1e9/0.426) - 5 +my_constants.Overlap_unitcells = ((Ly - G_length - 2*GO_thickness)*1e9/0.426/2) + +my_constants.R_CN = bond_length*sqrt(3.*(m_index*m_index + n_index*n_index + m_index*n_index))/(2*pi) #radius + +### substrate ### +################# + +my_constants.S_thickness = 10.e-9 #10e-9 +my_constants.S_bottom = Lz_min - dz/5. +my_constants.S_top = S_bottom + S_thickness + dz/5. + +### contact metal ### +##################### + +my_constants.CM_length = 40e-9 #40e-9 #defined as Lcon/2 +my_constants.CM_z_thickness = 20e-9 #20e-9 +my_constants.CM_y_thickness = 0.0 #5e-9 + +my_constants.CM_bottom = S_top + MGO_gap +my_constants.CM_edgetop = S_top + R_CN*2 + 2*small_gap +my_constants.CM_top = CM_edgetop + CM_z_thickness + +my_constants.CM_width = Lx + +### gate oxide ### +################## + +my_constants.GO_thickness = 5e-9 #5e-9 #defined as Lsp +my_constants.GO_bottom = CM_edgetop + MGO_gap +my_constants.GO_top = CM_top + GO_thickness +my_constants.GO_width = CM_width +my_constants.GO_length = G_length + 2*GO_thickness + CM_length + +### gate ### +############ +my_constants.G_length = 85e-9 #85e-9 #defined as Lg +my_constants.G_height = 30e-9 #30e-9 #defined +my_constants.G_width = CM_width + +my_constants.G_bottom = CM_edgetop + GO_thickness +my_constants.G_top = G_bottom + G_height + +### FET ### +########### +my_constants.FET_length = G_length + 2*GO_thickness + 2*CM_length #FET length +my_constants.FET_height = S_thickness + GO_thickness + G_height + 2*(R_CN+small_gap) +my_constants.FET_width = CM_width + +############################## +###### Point Charges ######### +############################## +#my_constants.ZOffset = S_top + R_CN*2 + small_gap + 4*dz # 4dz above CNTedgetop +my_constants.ZOffset = GO_bottom + GO_thickness/2. # 4dz above CNTedgetop +#my_constants.ZOffset = GO_bottom - 4*dz # 4dz above CNTedgetop + +charge_density_source.type = point_charge +pc.flag_vary_occupation = 1 +pc.mixing_factor = 0.1 +pc.offset = (-GO_width/2. + 10*dx) (-G_length/2.) (ZOffset) +pc.scaling = (GO_width - 20*dx) (G_length) (0) +pc.Et = 2 +pc.V0 = 0.5 +pc.default_charge_unit = 1 +pc.default_occupation = 1 + +pc.flag_random_positions = 1 +pc.charge_density=0.7e18 #cubic meter +pc.random_seed = 0 + +#pc.num = 1 +#pc_1.location = CN_x CN_y (CN_z + R_CN + 1e-9) + +################################################## +###### TIME DEPENDENT SIMULATION PROPERTIES ###### +################################################## + +timestep = dt +steps = Nsteps + +#################################### +###### EMBEDDED BOUNDARIES ######### +#################################### + +domain.embedded_boundary = 1 #options: 1=true, 0=false (default) +domain.specify_using_eb2 = 0 #options: 1=true, 0=false (default) + +ebgeom.objects = Source Drain Gate +ebgeom.specify_inhomo_dir = 1 + +Source.geom_type = cntfet_contact_rect +Source.outer_box_lo = (-CM_width/2. - MB_gap) (-Ly/2. - MB_gap) (CM_bottom) +Source.outer_box_hi = ( CM_width/2. + MB_gap) (-FET_length/2. + CM_length) (CM_top) + +Source.inner_box_lo = (-CM_width/2. - MB_gap) (-Ly/2. - MB_gap + CM_y_thickness) (CM_bottom) +Source.inner_box_hi = ( CM_width/2. + MB_gap) (-FET_length/2. + CM_length) (CM_edgetop) +Source.surf_soln = SV + +Drain.geom_type = cntfet_contact_rect +Drain.outer_box_lo = (-CM_width/2. - MB_gap) (FET_length/2. - CM_length) (CM_bottom) +Drain.outer_box_hi = ( CM_width/2. + MB_gap) (Ly/2. + MB_gap) (CM_top) + +Drain.inner_box_lo = (-CM_width/2. - MB_gap) (FET_length/2. - CM_length) (CM_bottom) +Drain.inner_box_hi = ( CM_width/2. + MB_gap) (Ly/2. + MB_gap - CM_y_thickness) (CM_edgetop) +Drain.surf_soln = SV + Vds + +Gate.geom_type = box +Gate.box_lo = (-G_width/2. - MB_gap) (-G_length/2.) (G_bottom) +Gate.box_hi = ( G_width/2. + MB_gap) (G_length/2.) (G_top) +Gate.has_fluid_inside = 0 +Gate.direction = 1 +Gate.surf_soln_parser = 1 +Gate.surf_soln_function = "SV + Vgs_max - (Vgs_max-Vgs_min) * t" + +################################# +###### GEOMETRY PROPERTIES ###### +################################# +domain.n_cell = nx ny nz +domain.max_grid_size = nx/gx ny/gy nz/gz +domain.blocking_factor = nx/gx ny/gy nz/gz + +domain.prob_lo = -Lx/2. -Ly/2. Lz_min +domain.prob_hi = Lx/2. Ly/2. Lz_max + +domain.is_periodic = 1 0 0 + +domain.coord_sys = cartesian + +################################# +###### BOUNDARY CONDITIONS ###### +################################# +boundary.hi = per(0.) neu(0.) neu(0.) +boundary.lo = per(0.) neu(0.) neu(0.) + +#################################### +###### MACROSCOPIC PROPERTIES ###### +#################################### +macroscopic.fields_to_define = alpha epsilon charge_density phi atom_locations +macroscopic.ghostcells_for_fields = alpha.0 epsilon.1 charge_density.1 phi.1 atom_locations.0 + +macroscopic.alpha = 0. +macroscopic.charge_density = 0. +macroscopic.epsilon_function = "epsilon_0 + (epsilon_S - epsilon_0) * (z < S_top) + (epsilon_GO - epsilon_0) * (y > -GO_length/2.) * (y < GO_length/2.) * (z > GO_bottom) * (z < GO_top)" + +macroscopic.phi = 0. +macroscopic.atom_locations = 0. + +############################# +###### POST PROCESSING ###### +############################# + +#post_process.fields_to_process = vecField + +#################### +###### OUTPUT ###### +#################### + +plot.fields_to_plot = epsilon.1 charge_density.1 phi.1 atom_locations #vecField +plot.rawfield_write_interval = 1000000 + +######################## +###### DIAGNOSTICS ##### +######################## +use_diagnostics = 1 + +diag.specify_using_eb = 1 +diag.objects = X_phi Z_rho Z_phi +X_phi.geom_type = plane +X_phi.direction = 0 +X_phi.location = 0.0 +X_phi.fields_to_plot = phi + +Z_rho.geom_type = plane +Z_rho.direction = 2 +Z_rho.location = ZOffset +Z_rho.fields_to_plot = charge_density + +Z_phi.geom_type = plane +Z_phi.direction = 2 +Z_phi.location = ZOffset +Z_phi.fields_to_plot = phi +#################################### +###### MLMG SOLVER PROPERTIES ###### +#################################### + +mlmg.ascalar=0 +mlmg.bscalar=1 + +mlmg.soln = phi +mlmg.rhs = charge_density +mlmg.alpha = alpha +mlmg.beta = epsilon + +mlmg.set_verbose=0 +mlmg.max_order=2 +mlmg.absolute_tolerance=0 +mlmg.relative_tolerance=1e-10 + +################# +###### NEGF ##### +################# +transport.use_negf = 1 + +transport.NS_num = num_CNTs +transport.NS_type_default = CNT +transport.NS_gather_field = phi +transport.NS_deposit_field = charge_density +transport.NS_initial_deposit_value = 1.e-3 +transport.Broyden_fraction = 0.1 +transport.Broyden_max_norm = 1.e-5 +transport.Broyden_norm_type = relative +transport.selfconsistency_algorithm = broyden_second +transport.reset_with_previous_charge_distribution = 1 +transport.initialize_inverse_jacobian = 0 +transport.gate_terminal_type = Boundary +transport.Broyden_threshold_maxstep = 400 +transport.gate_terminal_type = EB + +NS_default.num_unitcells = N_unitcells +NS_default.rotation_order = Z +NS_default.rotation_angle_type = D +NS_default.rotation_angles = 0 0 0. +NS_default.contact_Fermi_level = Ef +NS_default.contact_mu_specified = 1 +NS_default.contact_mu = Ef (Ef - Vds) +NS_default.contact_T = 298. 298. +NS_default.Fermi_tail_factors = 15 15 +NS_default.eq_integration_pts = 60 60 60 +NS_default.flag_compute_flatband_dos = 1 +NS_default.flatband_dos_integration_pts = 1600 +NS_default.flatband_dos_integration_limits = -2. 2. +NS_default.noneq_integration_pts = 400 +NS_default.flag_write_integrand = 0 +NS_default.flag_write_charge_components = 1 +NS_default.num_noneq_paths = 1 +NS_default.num_recursive_parts = 2 +#NS_default.charge_distribution_filename = +#NS_default.read_step = +#NS_default.read_negf_foldername = +NS_default.E_valence_min = -10 +NS_default.E_pole_max = 3 +NS_default.E_zPlus_imag = 1.e-6 + +CNT_default.type_id = m_index n_index +CNT_default.acc = bond_length +CNT_default.gamma = 2.5 + +NS_1.offset = (CN_x + (0/2.)*periodicity_length) CN_y CN_z diff --git a/input/negf/point_charges/topgate_CNTFET_Efm1 b/input/negf/point_charges/topgate_CNTFET_Efm1 new file mode 100644 index 0000000..39fe6b0 --- /dev/null +++ b/input/negf/point_charges/topgate_CNTFET_Efm1 @@ -0,0 +1,354 @@ +################ +# Topgate Configuration, CONTROL, no point charge +################ + +################ +##### FLAGS #### +################ +use_electrostatic = 1 +use_transport = 1 +amrex.the_arena_is_managed=1 + +################################ +##### Some Important Params #### +################################ +my_constants.gx = 2 +my_constants.gy = 16 +my_constants.gz = 2 + +my_constants.num_CNTs = 1 +#my_constants.periodicity_factor = 2 #corresponds to ~294 CNTs/micron, 3.408 nm spacing +my_constants.periodicity_factor = 1.5 #corresponds to ~400 CNTs/micron, 2.5 nm spacing +my_constants.periodicity_length = periodicity_factor * unitcells_per_D_CN * L_unitcell + + +my_constants.Vds = 0. #Drain-Source voltage [V] +my_constants.Vgs_min = -2 +my_constants.Vgs_max = 0.4 +my_constants.Nsteps = 13 +my_constants.dt = 1./(Nsteps-1) + + +plot.folder_name = /global/cfs/projectdirs/m4540/eXstatic/point_charge/topgate_CNTFET/dummy +plot.write_after_init = 0 +plot.write_interval = 10000 + +transport.flag_compute_DOS = 1 #DOS, Transmission, Conductance +transport.flag_write_LDOS = 0 +transport.flag_write_LDOS_iter = 0 +transport.write_LDOS_iter_period = 10 + +restart = 0 +restart_step = 0 +NS_default.initialize_charge_distribution = 0 +NS_default.write_at_iter = 1 +################################## +##### USER DEFINED CONSTANTS ##### +################################## + +### Physical and Other Constants ### +#################################### + +my_constants.q = 1.602e-19 +my_constants.epsilon_0 = 8.8541878128e-12 +my_constants.pi = 3.141592653589793 + +my_constants.epsilon_GO = 25*epsilon_0 #HfO2 +my_constants.epsilon_S = 3.9*epsilon_0 #SiO2 + +my_constants.SV = 0. #source voltage [V] +my_constants.Ef = -1 #Palladium Contact Fermi level [eV] + +my_constants.MGO_gap = 5*dx + dx/5. #gap between metal and gate oxide +my_constants.MB_gap = dx #2*dx/5. + +### Total domain dimensions ### +############################### +my_constants.N_unitcells = Channel_unitcells + 2*Overlap_unitcells + +my_constants.length_unitcells = ceil((FET_length*1e9/0.426) / 8) * 8 +my_constants.height_unitcells = ceil(((FET_height*1e9/0.426)+4) / 16) * 16 + +my_constants.width_factor = num_CNTs*periodicity_factor #1.875 corresponds to 3.195 nm (smallest periodicity distance) + +my_constants.cells_per_unitcell = 16 #cell_size = 0.0355 nm +my_constants.unitcells_per_D_CN = ceil((R_CN*2)/(L_unitcell)) #unitcells per diameter + +my_constants.nx = width_factor * unitcells_per_D_CN * cells_per_unitcell +my_constants.ny = length_unitcells * cells_per_unitcell +my_constants.nz = height_unitcells * cells_per_unitcell + +my_constants.Lx = width_factor * unitcells_per_D_CN * L_unitcell +my_constants.Ly = length_unitcells * L_unitcell +my_constants.Lz = height_unitcells * L_unitcell + +my_constants.Lz_min = -(R_CN + small_gap + S_thickness) +my_constants.Lz_max = Lz + Lz_min + +my_constants.dx = Lx/nx +my_constants.dy = Ly/ny +my_constants.dz = Lz/nz + +### Carbon nanotube ### +####################### + +my_constants.m_index = 20 +my_constants.n_index = 0 + +my_constants.bond_length = 0.142e-9 +my_constants.small_gap = 0.3e-9 #gap between nanotube and the contacts +my_constants.L_unitcell = 3*bond_length #0.426e-9 + +#cnt center +my_constants.CN_z = 0. +my_constants.CN_x = 0. +my_constants.CN_y = 0. + +my_constants.Channel_unitcells = ((G_length + 2*GO_thickness)*1e9/0.426) +my_constants.Channel_length = (G_length + 2*GO_thickness) + +#my_constants.Overlap_unitcells = ((CM_length - CM_y_thickness)*1e9/0.426) - 5 +my_constants.Overlap_unitcells = ((Ly - G_length - 2*GO_thickness)*1e9/0.426/2) + +my_constants.R_CN = bond_length*sqrt(3.*(m_index*m_index + n_index*n_index + m_index*n_index))/(2*pi) #radius + +### substrate ### +################# + +my_constants.S_thickness = 10.e-9 #10e-9 +my_constants.S_bottom = Lz_min - dz/5. +my_constants.S_top = S_bottom + S_thickness + dz/5. + +### contact metal ### +##################### + +my_constants.CM_length = 40e-9 #40e-9 #defined as Lcon/2 +my_constants.CM_z_thickness = 20e-9 #20e-9 +my_constants.CM_y_thickness = 0.0 #5e-9 + +my_constants.CM_bottom = S_top + MGO_gap +my_constants.CM_edgetop = S_top + R_CN*2 + 2*small_gap +my_constants.CM_top = CM_edgetop + CM_z_thickness + +my_constants.CM_width = Lx + +### gate oxide ### +################## + +my_constants.GO_thickness = 5e-9 #5e-9 #defined as Lsp +my_constants.GO_bottom = CM_edgetop + MGO_gap +my_constants.GO_top = CM_top + GO_thickness +my_constants.GO_width = CM_width +my_constants.GO_length = G_length + 2*GO_thickness + CM_length + +### gate ### +############ +my_constants.G_length = 85e-9 #85e-9 #defined as Lg +my_constants.G_height = 30e-9 #30e-9 #defined +my_constants.G_width = CM_width + +my_constants.G_bottom = CM_edgetop + GO_thickness +my_constants.G_top = G_bottom + G_height + +### FET ### +########### +my_constants.FET_length = G_length + 2*GO_thickness + 2*CM_length #FET length +my_constants.FET_height = S_thickness + GO_thickness + G_height + 2*(R_CN+small_gap) +my_constants.FET_width = CM_width + +############################## +###### Point Charges ######### +############################## + +charge_density_source.type = point_charge +pc.flag_vary_occupation = 1 +pc.mixing_factor = 0.1 +pc.offset = (-GO_width/2. + 10*dx) (-G_length/2.) (GO_bottom + 4*dz) +pc.scaling = (GO_width - 20*dx) (G_length) (GO_thickness - 8*dz) +pc.Et = 2 +pc.V0 = 0.5 +pc.default_charge_unit = 1 +pc.default_occupation = 1 + +pc.flag_random_positions = 1 +pc.charge_density=0.04e27 #cubic meter +pc.random_seed = 0 + +#pc.num = 1 +#pc_1.location = CN_x CN_y (CN_z + R_CN + 1e-9) + +################################################## +###### TIME DEPENDENT SIMULATION PROPERTIES ###### +################################################## + +timestep = dt +steps = Nsteps + +#################################### +###### EMBEDDED BOUNDARIES ######### +#################################### + +domain.embedded_boundary = 1 #options: 1=true, 0=false (default) +domain.specify_using_eb2 = 0 #options: 1=true, 0=false (default) + +ebgeom.objects = Source Drain Gate +ebgeom.specify_inhomo_dir = 1 + +Source.geom_type = cntfet_contact_rect +Source.outer_box_lo = (-CM_width/2. - MB_gap) (-Ly/2. - MB_gap) (CM_bottom) +Source.outer_box_hi = ( CM_width/2. + MB_gap) (-FET_length/2. + CM_length) (CM_top) + +Source.inner_box_lo = (-CM_width/2. - MB_gap) (-Ly/2. - MB_gap + CM_y_thickness) (CM_bottom) +Source.inner_box_hi = ( CM_width/2. + MB_gap) (-FET_length/2. + CM_length) (CM_edgetop) +Source.surf_soln = SV + +Drain.geom_type = cntfet_contact_rect +Drain.outer_box_lo = (-CM_width/2. - MB_gap) (FET_length/2. - CM_length) (CM_bottom) +Drain.outer_box_hi = ( CM_width/2. + MB_gap) (Ly/2. + MB_gap) (CM_top) + +Drain.inner_box_lo = (-CM_width/2. - MB_gap) (FET_length/2. - CM_length) (CM_bottom) +Drain.inner_box_hi = ( CM_width/2. + MB_gap) (Ly/2. + MB_gap - CM_y_thickness) (CM_edgetop) +Drain.surf_soln = SV + Vds + +Gate.geom_type = box +Gate.box_lo = (-G_width/2. - MB_gap) (-G_length/2.) (G_bottom) +Gate.box_hi = ( G_width/2. + MB_gap) (G_length/2.) (G_top) +Gate.has_fluid_inside = 0 +Gate.direction = 1 +Gate.surf_soln_parser = 1 +Gate.surf_soln_function = "SV + Vgs_max - (Vgs_max-Vgs_min) * t" + +################################# +###### GEOMETRY PROPERTIES ###### +################################# +domain.n_cell = nx ny nz +domain.max_grid_size = nx/gx ny/gy nz/gz +domain.blocking_factor = nx/gx ny/gy nz/gz + +domain.prob_lo = -Lx/2. -Ly/2. Lz_min +domain.prob_hi = Lx/2. Ly/2. Lz_max + +domain.is_periodic = 1 0 0 + +domain.coord_sys = cartesian + +################################# +###### BOUNDARY CONDITIONS ###### +################################# +boundary.hi = per(0.) neu(0.) neu(0.) +boundary.lo = per(0.) neu(0.) neu(0.) + +#################################### +###### MACROSCOPIC PROPERTIES ###### +#################################### +macroscopic.fields_to_define = alpha epsilon charge_density phi atom_locations +macroscopic.ghostcells_for_fields = alpha.0 epsilon.1 charge_density.1 phi.1 atom_locations.0 + +macroscopic.alpha = 0. +macroscopic.charge_density = 0. +macroscopic.epsilon_function = "epsilon_0 + (epsilon_S - epsilon_0) * (z < S_top) + (epsilon_GO - epsilon_0) * (y > -GO_length/2.) * (y < GO_length/2.) * (z > GO_bottom) * (z < GO_top)" + +macroscopic.phi = 0. +macroscopic.atom_locations = 0. + +############################# +###### POST PROCESSING ###### +############################# + +#post_process.fields_to_process = vecField + +#################### +###### OUTPUT ###### +#################### + +plot.fields_to_plot = epsilon.1 charge_density.1 phi.1 atom_locations #vecField +plot.rawfield_write_interval = 1000000 + +######################## +###### DIAGNOSTICS ##### +######################## +use_diagnostics = 1 + +diag.specify_using_eb = 1 +diag.objects = X_0 +X_0.geom_type = plane +X_0.direction = 0 +X_0.location = 0.0 +X_0.fields_to_plot = phi + +#Y_0.geom_type = plane +#Y_0.direction = 1 +#Y_0.location = 0.0 +#Y_0.fields_to_plot = phi +# +#Z_0.geom_type = plane +#Z_0.direction = 2 +#Z_0.location = 0.0 +#Z_0.fields_to_plot = phi +#################################### +###### MLMG SOLVER PROPERTIES ###### +#################################### + +mlmg.ascalar=0 +mlmg.bscalar=1 + +mlmg.soln = phi +mlmg.rhs = charge_density +mlmg.alpha = alpha +mlmg.beta = epsilon + +mlmg.set_verbose=0 +mlmg.max_order=2 +mlmg.absolute_tolerance=0 +mlmg.relative_tolerance=1e-10 + +################# +###### NEGF ##### +################# +transport.use_negf = 1 + +transport.NS_num = num_CNTs +transport.NS_type_default = CNT +transport.NS_gather_field = phi +transport.NS_deposit_field = charge_density +transport.NS_initial_deposit_value = 1.e-3 +transport.Broyden_fraction = 0.1 +transport.Broyden_max_norm = 1.e-5 +transport.Broyden_norm_type = relative +transport.selfconsistency_algorithm = broyden_second +transport.reset_with_previous_charge_distribution = 1 +transport.initialize_inverse_jacobian = 0 +transport.gate_terminal_type = Boundary +transport.Broyden_threshold_maxstep = 400 +transport.gate_terminal_type = EB + +NS_default.num_unitcells = N_unitcells +NS_default.rotation_order = Z +NS_default.rotation_angle_type = D +NS_default.rotation_angles = 0 0 0. +NS_default.contact_Fermi_level = Ef +NS_default.contact_mu_specified = 1 +NS_default.contact_mu = Ef (Ef - Vds) +NS_default.contact_T = 298. 298. +NS_default.Fermi_tail_factors = 15 15 +NS_default.eq_integration_pts = 60 60 60 +NS_default.flag_compute_flatband_dos = 1 +NS_default.flatband_dos_integration_pts = 1600 +NS_default.flatband_dos_integration_limits = -2. 2. +NS_default.noneq_integration_pts = 400 +NS_default.flag_write_integrand = 0 +NS_default.flag_write_charge_components = 1 +NS_default.num_noneq_paths = 1 +NS_default.num_recursive_parts = 2 +#NS_default.charge_distribution_filename = +#NS_default.read_step = +#NS_default.read_negf_foldername = +NS_default.E_valence_min = -10 +NS_default.E_pole_max = 3 +NS_default.E_zPlus_imag = 1.e-6 + +CNT_default.type_id = m_index n_index +CNT_default.acc = bond_length +CNT_default.gamma = 2.5 + +NS_1.offset = (CN_x + (0/2.)*periodicity_length) CN_y CN_z diff --git a/input/negf/scaling_studies/all_around_metal_eql b/input/negf/scaling_studies/all_around_metal_eql new file mode 100644 index 0000000..3fc7827 --- /dev/null +++ b/input/negf/scaling_studies/all_around_metal_eql @@ -0,0 +1,221 @@ +################################################################## +# Description: +# This test is chosen from the following reference +# [see Fig. 4 (top, 1.3 diameter CNT)]. +# +# It is also used for performing equilibrium scaling studies +# presented in table 3 of the ELEQTRONeX paper. +# This script corresponds to the baseline case with 64 GPUs. +# Other scripts can be generated by scaling `gy` and `N_unitcells`. +# +# Reference: Leonard, F., & Stewart, D. A. (2006). +# Properties of short channel ballistic carbon nanotube transistors +# with ohmic contacts. Nanotechnology, 17(18), 4699. +################################################################### + +################ +##### FLAGS #### +################ +use_electrostatic = 1 +use_transport = 1 +amrex.the_arena_is_managed=1 + +############################ +##### Scaling Variables #### +############################ +my_constants.gx = 1 +my_constants.gy = 64 +my_constants.gz = 1 + +my_constants.N_unitcells = 4096*8 +### specify this +plot.folder_name = +NS_default.num_recursive_parts = 8 +################################## +##### USER DEFINED CONSTANTS ##### +################################## + +### Physical and Other Constants +my_constants.epsilon_0 = 8.8541878128e-12 +my_constants.pi = 3.141592653589793 + +my_constants.GV = 0. +my_constants.Nsteps = 1 +my_constants.dt = 1. + +my_constants.Ef = -1. #Palladium Contact Fermi level [eV] + +### Carbon nanotube +my_constants.m_index = 17 +my_constants.n_index = 0 +my_constants.bond_length = 0.142e-9 + +my_constants.CN_z = Lz/2. +my_constants.CN_x = 0. +my_constants.CN_y = 0. + +my_constants.L_unitcell = 3*bond_length #0.426 nm + +my_constants.R_CN = bond_length*sqrt(3.*(m_index*m_index + n_index*n_index + m_index*n_index))/(2*pi) #radius + +my_constants.small_gap = 0.3e-9 #gap between nanotube and the contacts + +### Total domain dimensions +my_constants.Ly_offset_unitcells = 0 +my_constants.cells_per_unitcell = 12 +my_constants.unitcells_per_D_CN = floor((R_CN*2)/(L_unitcell)) #ceil(3.1241970) = 4, for R_CN=0.66545nm +my_constants.width_factor = 2 + +my_constants.Lx = width_factor * unitcells_per_D_CN * L_unitcell +my_constants.Ly = (N_unitcells + Ly_offset_unitcells) * L_unitcell +my_constants.Lz = width_factor * unitcells_per_D_CN *L_unitcell + +my_constants.nx = width_factor * unitcells_per_D_CN * cells_per_unitcell +my_constants.ny = (N_unitcells + Ly_offset_unitcells) * cells_per_unitcell +my_constants.nz = width_factor * unitcells_per_D_CN * cells_per_unitcell + +my_constants.dy = Ly/ny +my_constants.dz = Lz/nz + +################################################## +###### TIME DEPENDENT SIMULATION PROPERTIES ###### +################################################## +timestep = dt +steps = Nsteps +restart = 0 +restart_step = 0 + +#################################### +###### EMBEDDED BOUNDARIES ###### +#################################### + +domain.embedded_boundary = 1 #options: 1=true, 0=false (default) +domain.specify_using_eb2 = 0 #options: 1=true, 0=false (default) + +ebgeom.objects = Gate +ebgeom.specify_inhomo_dir = 1 + +Gate.geom_type = cntfet_contact_cyl +Gate.inner_radius = R_CN + small_gap +Gate.thickness = 5*dz +Gate.center = CN_x CN_y CN_z +Gate.height = Ly + 2*dy/5 +Gate.direction = 1 +Gate.surf_soln = GV + +################################# +###### GEOMETRY PROPERTIES ###### +################################# +domain.n_cell = nx ny nz +domain.max_grid_size = nx/gx ny/gy nz/gz +domain.blocking_factor = nx/gx ny/gy nz/gz + +domain.prob_lo = -Lx/2. -Ly/2. 0. +domain.prob_hi = Lx/2. Ly/2. Lz + +domain.is_periodic = 0 0 0 + +domain.coord_sys = cartesian + +################################# +###### BOUNDARY CONDITIONS ###### +################################# +boundary.hi = neu(0.) neu neu(0.) +boundary.lo = neu(0.) neu neu(0.) + +#################################### +###### MACROSCOPIC PROPERTIES ###### +#################################### +macroscopic.fields_to_define = alpha epsilon charge_density phi atom_locations +macroscopic.ghostcells_for_fields = alpha.0 epsilon.1 charge_density.1 phi.1 atom_locations.0 + +macroscopic.alpha = 0. +macroscopic.charge_density = 0. +macroscopic.epsilon_function = "epsilon_0" +macroscopic.phi = 0. +macroscopic.atom_locations = 0. + +############################# +###### POST PROCESSING ###### +############################# + +# post_process.fields_to_process = vecField + +#################### +###### OUTPUT ###### +#################### + +plot.fields_to_plot = epsilon.1 charge_density.1 phi.1 atom_locations +plot.write_after_init = 0 +plot.write_interval = 1000 +plot.rawfield_write_interval = 1000000 + +######################## +###### DIAGNOSTICS ##### +######################## +use_diagnostics = 0 + +#################################### +###### MLMG SOLVER PROPERTIES ###### +#################################### + +mlmg.ascalar=0 +mlmg.bscalar=1 + +mlmg.soln = phi +mlmg.rhs = charge_density +mlmg.alpha = alpha +mlmg.beta = epsilon + +mlmg.set_verbose=0 +mlmg.max_order=2 +mlmg.absolute_tolerance=0 +mlmg.relative_tolerance=1e-10 + +################# +###### NEGF ##### +################# +transport.use_negf = 1 +transport.NS_num = 1 +transport.NS_type_default = CNT +transport.NS_gather_field = phi +transport.NS_deposit_field = charge_density +transport.NS_initial_deposit_value = 1.e-3 +transport.Broyden_fraction = 0.1 +transport.Broyden_max_norm = 1.e-5 +transport.Broyden_norm_type = relative +transport.selfconsistency_algorithm = broyden_second +transport.reset_with_previous_charge_distribution = 1 +transport.initialize_inverse_jacobian = 0 +transport.gate_terminal_type = EB +transport.Broyden_threshold_maxstep = 100 + +NS_default.num_unitcells = N_unitcells +NS_default.offset = CN_x CN_y CN_z + +NS_default.contact_Fermi_level = Ef +NS_default.contact_mu_specified = 1 +NS_default.contact_mu = Ef Ef +NS_default.contact_T = 298. 298. +NS_default.Fermi_tail_factors = 14 14 +NS_default.eq_integration_pts = 30 30 30 +NS_default.flag_compute_flatband_dos = 0 +#NS_default.flatband_dos_integration_pts = 400 +#NS_default.flatband_dos_integration_limits = -1. 1. +NS_default.noneq_integration_pts = 0 +NS_default.flag_write_integrand = 0 +NS_default.flag_write_charge_components = 0 +NS_default.num_noneq_paths = 0 +NS_default.write_at_iter = 0 +NS_default.initialize_charge_distribution = 0 +#NS_default.charge_distribution_filename = +#NS_default.read_step = +#NS_default.read_negf_foldername = +NS_default.E_valence_min = -10 +NS_default.E_pole_max = 3 +NS_default.E_zPlus_imag = 1.e-5 + +CNT_default.type_id = m_index n_index +CNT_default.acc = bond_length +CNT_default.gamma = 2.5 +##################################### diff --git a/input/negf/scaling_studies/gate_all_around_noneql/VdsVary_N512 b/input/negf/scaling_studies/gate_all_around_noneql/VdsVary_N512 new file mode 100644 index 0000000..00d367d --- /dev/null +++ b/input/negf/scaling_studies/gate_all_around_noneql/VdsVary_N512 @@ -0,0 +1,324 @@ +################################################################## +# Description: +# This test is for modeling gate-all-around CNTFET where Vds is +# varied. It is used for carrying out nonequilibrium performance +# studies (Table 1, 2 and Fig. 3a) in the ELEQTRONeX paper. +# +# This script corresponds to the baseline case with 23.9 nm nanotube +# simulated with 64 GPUs. Script for longer nanotubes can be generated +# by scaling `gy` and `N_unitcells`. +################################################################### + +################ +##### FLAGS #### +################ +use_electrostatic = 1 +use_transport = 1 +amrex.the_arena_is_managed=1 + +############################ +##### Scaling Variables #### +############################ + +my_constants.gx = 2 +my_constants.gy = 16 +my_constants.gz = 2 + +my_constants.Channel_unitcells = 56 +my_constants.Overlap_unitcells = 36 +my_constants.Gap_unitcells = 0 +my_constants.N_unitcells = Channel_unitcells + 2*Overlap_unitcells + 2*Gap_unitcells #64 +transport.Broyden_threshold_maxstep = 100 +transport.flag_write_LDOS = 0 +transport.flag_write_LDOS_iter = 0 +transport.write_LDOS_iter_period = 1 +cnt.Fermi_tail_factors = 14 14 + +my_constants.Vgs = 0.8 #Drain-Source voltage [V] +my_constants.Vds_min = -0.3 +my_constants.Vds_max = 0. +my_constants.Nsteps = 16 +my_constants.dt = 1./(Nsteps-1) + +cnt.eq_integration_pts = 50 50 50 +cnt.flag_compute_flatband_dos = 0 +cnt.flatband_dos_integration_pts = 400 +cnt.flatband_dos_integration_limits = -1. 1. + +cnt.num_noneq_paths = 3 +cnt.noneq_percent_intercuts = 20 50 +cnt.noneq_integration_pts = 500 20000 800 +cnt.noneq_integration_pts_density = 500 1600 50 +cnt.flag_adaptive_integration_limits = 1 +cnt.integrand_correction_interval = 50 +cnt.flag_write_integrand = 0 +#cnt.write_integrand_interval = 1 +cnt.kT_window_around_singularity = 3 2 +cnt.num_recursive_parts = 1 + +restart = 0 +restart_step = 0 + +cnt.initialize_charge_distribution = 0 +#cnt.charge_distribution_filename = /global/cfs/projectdirs/m3766/SaurabhTests/weak_scaling/negf_gaa_final/gpu64/zPlus1em6/VdsSweep_0_to_mDot1/negf/cnt/step0000_Qout.dat + +### specify output folder +#plot.folder_name = + +plot.write_interval = 1000 +cnt.write_at_iter = 0 +################################## +##### USER DEFINED CONSTANTS ##### +################################## + +### Physical and Other Constants ### +#################################### + +my_constants.q = 1.602e-19 +my_constants.epsilon_0 = 8.8541878128e-12 +my_constants.tiny = 1e-12 +my_constants.pi = 3.141592653589793 + +my_constants.epsilon_CN = epsilon_0 #vacuum +#my_constants.epsilon_GO = epsilon_0 +my_constants.epsilon_GO = 3.9*epsilon_0 +my_constants.epsilon_domain = epsilon_0 #air +my_constants.epsilon_CM = epsilon_0 #Palladium + +my_constants.SV = 0. #source voltage [V] + +my_constants.Ef = -1. #Palladium Contact Fermi level [eV] + +### Total domain dimensions ### +############################### +my_constants.Ly_offset_unitcells = 0 + +my_constants.cells_per_unitcell = 12 #cell_size = 0.0355 nm + +my_constants.unitcells_per_D_CN = ceil((R_CN*2)/(L_unitcell)) #unitcells per diameter + +my_constants.width_factor = 4 +my_constants.height_factor = 4 + +my_constants.ny = (N_unitcells + Ly_offset_unitcells) * cells_per_unitcell +my_constants.nx = width_factor * unitcells_per_D_CN * cells_per_unitcell +my_constants.nz = height_factor * unitcells_per_D_CN * cells_per_unitcell + +my_constants.Ly = (N_unitcells + Ly_offset_unitcells) * L_unitcell +my_constants.Lx = width_factor * unitcells_per_D_CN * L_unitcell +my_constants.Lz = height_factor * unitcells_per_D_CN * L_unitcell + + +my_constants.dx = Lx/nx +my_constants.dy = Ly/ny +my_constants.dz = Lz/nz + +### Carbon nanotube ### +####################### + +my_constants.m_index = 17 +my_constants.n_index = 0 + + +my_constants.bond_length = 0.142e-9 +my_constants.small_gap = 0.3e-9 #gap between nanotube and the contacts + +my_constants.CN_z = 0. +my_constants.CN_x = 0. +my_constants.CN_y = 0. + +my_constants.L_unitcell = 3*bond_length #0.426e-9 +my_constants.R_CN = bond_length*sqrt(3.*(m_index*m_index + n_index*n_index + m_index*n_index))/(2*pi) #radius +my_constants.CN_co_l = Overlap_unitcells*L_unitcell #total contact overlap length on both sides + +### contact metal ### +##################### + +my_constants.source_lo_y = -Ly/2 - dy/5. +my_constants.source_hi_y = source_lo_y + CN_co_l + +my_constants.drain_hi_y = Ly/2 + dy/5. +my_constants.drain_lo_y = drain_hi_y - CN_co_l + +my_constants.gate_length = drain_lo_y - source_hi_y - 2*dy + +my_constants.source_center_y = (source_lo_y + source_hi_y)/2 +my_constants.drain_center_y = (drain_lo_y + drain_hi_y)/2 + +my_constants.CM_thickness = 30*dz + +### gate ### +############ + +my_constants.G_inner_rad = 3.e-9 #Gate_InnerRadius +my_constants.G_thickness = 10*dz + +### gate oxide ### +################## + +my_constants.GO_thickness = G_inner_rad - (R_CN + small_gap) + +### oxide-nanotube gap ### +########################## + +#my_constants.length_scale_lattice_const = 8.5e-12 + +################################################## +###### TIME DEPENDENT SIMULATION PROPERTIES ###### +################################################## + +timestep = dt +steps = Nsteps + +#################################### +###### EMBEDDED BOUNDARIES ######### +#################################### + +domain.embedded_boundary = 1 #options: 1=true, 0=false (default) +domain.specify_using_eb2 = 0 #options: 1=true, 0=false (default) + +ebgeom.objects = Source Drain Gate +ebgeom.specify_inhomo_dir = 1 + +Source.geom_type = cntfet_contact_cyl +Source.inner_radius = R_CN + small_gap +Source.thickness = CM_thickness +Source.center = CN_x source_center_y CN_z +Source.height = source_hi_y - source_lo_y +Source.direction = 1 +Source.surf_soln = SV + +Drain.geom_type = cntfet_contact_cyl +Drain.inner_radius = R_CN + small_gap +Drain.thickness = CM_thickness +Drain.center = CN_x drain_center_y CN_z +Drain.height = drain_hi_y - drain_lo_y +Drain.direction = 1 +Drain.surf_soln_parser = 1 +Drain.surf_soln_function = "SV + Vds_max - (Vds_max-Vds_min) * t" + +Gate.geom_type = cntfet_contact_cyl +Gate.inner_radius = G_inner_rad +Gate.thickness = G_thickness +Gate.center = CN_x CN_y CN_z +Gate.height = gate_length +Gate.direction = 1 +Gate.surf_soln = Vgs + SV +#Gate.surf_soln_parser = 1 +#Gate.surf_soln_function = "SV + Vgs_max - (Vgs_max-Vgs_min) * t" + +################################# +###### GEOMETRY PROPERTIES ###### +################################# +domain.n_cell = nx ny nz +domain.max_grid_size = nx/gx ny/gy nz/gz +domain.blocking_factor = nx/gx ny/gy nz/gz + + +domain.prob_lo = -Lx/2. -Ly/2. -Lz/2. +domain.prob_hi = Lx/2. Ly/2. Lz/2. + +domain.is_periodic = 0 0 0 + +domain.coord_sys = cartesian + +################################# +###### BOUNDARY CONDITIONS ###### +################################# +boundary.hi = neu(0.) neu(0) neu(0.) +boundary.lo = neu(0.) neu(0) neu(0.) + +#################################### +###### MACROSCOPIC PROPERTIES ###### +#################################### +macroscopic.fields_to_define = alpha epsilon charge_density phi atom_locations +macroscopic.ghostcells_for_fields = alpha.0 epsilon.1 charge_density.1 phi.1 atom_locations.0 + +macroscopic.alpha = 0. +macroscopic.charge_density = 0. + +macroscopic.epsilon_function = "epsilon_0 + (epsilon_GO - epsilon_0) * (sqrt( (x-CN_x)**2 + (z-CN_z)**2 ) < (G_inner_rad + dz)) * (sqrt( (x-CN_x)**2 + (z-CN_z)**2 ) >= (R_CN + small_gap)) * (y > (source_hi_y+dy)) * (y < (drain_lo_y-dy))" + +macroscopic.phi = 0. +macroscopic.atom_locations = 0. + +############################# +###### POST PROCESSING ###### +############################# + +#post_process.fields_to_process = vecField + +#################### +###### OUTPUT ###### +#################### + +plot.fields_to_plot = epsilon.1 charge_density.1 phi.1 atom_locations #vecField +plot.write_after_init = 0 +plot.rawfield_write_interval = 1000000 + +######################## +###### DIAGNOSTICS ##### +######################## +use_diagnostics = 0 + +#diag.specify_using_eb = 1 +#diag.objects = Surf1 +#Surf1.geom_type = cylinder +#Surf1.center = 0 0 CN_z +#Surf1.radius = R_CN +#Surf1.axial_direction = 1 +#Surf1.theta_reference_direction = 0 +#Surf1.has_fluid_inside = 0 +#Surf1.fields_to_plot = phi charge_density + +#################################### +###### MLMG SOLVER PROPERTIES ###### +#################################### + +mlmg.ascalar=0 +mlmg.bscalar=1 + +mlmg.soln = phi +mlmg.rhs = charge_density +mlmg.alpha = alpha +mlmg.beta = epsilon + +mlmg.set_verbose=0 +mlmg.max_order=2 +mlmg.absolute_tolerance=0 +mlmg.relative_tolerance=1e-10 + +################# +###### NEGF ##### +################# + +#NS stands for nanostructure +transport.NS_names = cnt +transport.use_negf = 1 +transport.NS_gather_field = phi +transport.NS_deposit_field = charge_density +transport.NS_initial_deposit_value = 1e-3 +transport.Broyden_fraction = 0.1 +transport.Broyden_max_norm = 1.e-4 +transport.Broyden_norm_type = relative +transport.selfconsistency_algorithm = broyden_second +transport.reset_with_previous_charge_distribution = 1 +transport.initialize_inverse_jacobian = 0 + +cnt.type = CNT +cnt.type_id = m_index n_index #m n +cnt.acc = bond_length +cnt.gamma = 2.5 #coupling strength (eV) +cnt.num_unitcells = N_unitcells +cnt.offset = CN_x CN_y CN_z +cnt.contact_mu_specified = 0 +cnt.contact_parser_string = Source Drain +#cnt.contact_mu_specified = 1 +#cnt.contact_mu = Ef (Ef - Vds) +cnt.contact_T = 298. 298. + +cnt.contact_Fermi_level = Ef +cnt.E_valence_min = -10 +cnt.E_pole_max = 3 +cnt.E_zPlus_imag = 1.e-5 +##################################### diff --git a/input/negf/StewartFrancois2006/GAA_VgsVary b/input/negf/scaling_studies/gate_all_around_noneql/VgsVary_N512 similarity index 92% rename from input/negf/StewartFrancois2006/GAA_VgsVary rename to input/negf/scaling_studies/gate_all_around_noneql/VgsVary_N512 index 068dc56..7482451 100644 --- a/input/negf/StewartFrancois2006/GAA_VgsVary +++ b/input/negf/scaling_studies/gate_all_around_noneql/VgsVary_N512 @@ -1,3 +1,15 @@ +################################################################## +# Description: +# This test is for modeling gate-all-around CNTFET where Vgs is +# varied by keeping Vds=-0.1 V. It is used for carrying out +# nonequilibrium performance studies (Table 1 and Fig. 3b, 3c, 3d) +# in the ELEQTRONeX paper. +# +# This script corresponds to the baseline case with 23.9 nm nanotube +# simulated with 64 GPUs. Script for longer nanotubes can be generated +# by scaling `gy` and `N_unitcells`. +################################################################### + ################ ##### FLAGS #### ################ @@ -48,10 +60,12 @@ cnt.num_recursive_parts = 2 restart = 0 restart_step = 0 -cnt.initialize_charge_distribution = 1 -cnt.charge_distribution_filename = /global/cfs/projectdirs/m3766/SaurabhTests/weak_scaling/negf_gaa_final/gpu64/N128_Mode1/Run1/negf/cnt/step0005_Qout.dat +### specify this +#cnt.initialize_charge_distribution = 1 +#cnt.charge_distribution_filename = -plot.folder_name = /global/cfs/projectdirs/m3766/SaurabhTests/weak_scaling/negf_gaa_final/gpu64/N128_Mode1/VgsSweep_Run1 +### specify this +#plot.folder_name = plot.write_interval = 1000 cnt.write_at_iter = 0 diff --git a/input/negf/shortCNTs/4x_spacing/nonparallel_20CNTs_largeAngles b/input/negf/shortCNTs/4x_spacing/nonparallel_20CNTs_largeAngles deleted file mode 100644 index be490c9..0000000 --- a/input/negf/shortCNTs/4x_spacing/nonparallel_20CNTs_largeAngles +++ /dev/null @@ -1,370 +0,0 @@ -################ -# Test case for validation of periodic boundary conditions -- infinite array of nanotubes. -# The output of conductance can be compared with the result from the following reference, -# Fig. 2), periodicity distance, d=3.195 nm == 3.2 nm. (see width_factor defined below). -# Léonard, F. (2006). Crosstalk between nanotube devices: contact and channel effects. -# Nanotechnology, 17(9), 2381. -################ - -################ -##### FLAGS #### -################ -use_electrostatic = 1 -use_transport = 1 -amrex.the_arena_is_managed=1 - -################################ -##### Some Important Params #### -################################ -my_constants.gx = 2 -my_constants.gy = 16 -my_constants.gz = 2 - -my_constants.num_CNTs = 20 -my_constants.periodicity_factor = 7.5 #1.875 corresponds to 3.195 nm (smallest periodicity distance) - -my_constants.Channel_unitcells = 24 -my_constants.Overlap_unitcells = 12 - -my_constants.Vds = 0. #Drain-Source voltage [V] -my_constants.Vgs_min = -4 -my_constants.Vgs_max = 12 -my_constants.Nsteps = 65 -my_constants.dt = 1./(Nsteps-1) - -plot.folder_name = /global/cfs/projectdirs/m4540/eXstatic/4x_spacing/nonpll_20CNTs_largeAngles -plot.write_after_init = 0 -plot.write_interval = 1000 - -transport.flag_compute_DOS = 1 #DOS, Transmission, Conductance -transport.flag_write_LDOS = 0 -transport.flag_write_LDOS_iter = 0 -transport.write_LDOS_iter_period = 10 - -restart = 1 -restart_step = 11 -NS_default.initialize_charge_distribution = 1 -################################## -##### USER DEFINED CONSTANTS ##### -################################## - -### Physical and Other Constants ### -#################################### - -my_constants.q = 1.602e-19 -my_constants.epsilon_0 = 8.8541878128e-12 -my_constants.pi = 3.141592653589793 - -my_constants.epsilon_GO = 3.9*epsilon_0 - -my_constants.SV = 0. #source voltage [V] -my_constants.Ef = -1. #Palladium Contact Fermi level [eV] - -### Total domain dimensions ### -############################### -my_constants.Gap_unitcells = 0 -my_constants.N_unitcells = Channel_unitcells + 2*Overlap_unitcells + 2*Gap_unitcells - -my_constants.Ly_offset_unitcells = 0 - -my_constants.cells_per_unitcell = 16 #cell_size = 0.0355 nm - -my_constants.unitcells_per_D_CN = ceil((R_CN*2)/(L_unitcell)) #unitcells per diameter - -my_constants.periodicity_length = periodicity_factor * unitcells_per_D_CN * L_unitcell - -my_constants.width_factor = (num_CNTs+2)*periodicity_factor #1.875 corresponds to 3.195 nm (smallest periodicity distance) - -my_constants.height_factor = 12 - -my_constants.ny = (N_unitcells + Ly_offset_unitcells) * cells_per_unitcell -my_constants.nx = width_factor * unitcells_per_D_CN * cells_per_unitcell -my_constants.nz = height_factor * unitcells_per_D_CN * cells_per_unitcell - -my_constants.Ly = (N_unitcells + Ly_offset_unitcells) * L_unitcell -my_constants.Lx = width_factor * unitcells_per_D_CN * L_unitcell -my_constants.Lz = height_factor * unitcells_per_D_CN * L_unitcell - -my_constants.dx = Lx/nx -my_constants.dy = Ly/ny -my_constants.dz = Lz/nz - -my_constants.Lz_min = -(R_CN + small_gap + GO_total_thickness + G_thickness) -my_constants.Lz_max = Lz + Lz_min - -### Carbon nanotube ### -####################### - -my_constants.m_index = 17 -my_constants.n_index = 0 - - -my_constants.bond_length = 0.142e-9 -my_constants.small_gap = 0.3e-9 #gap between nanotube and the contacts - -my_constants.CN_z = 0. -my_constants.CN_x = 0. -my_constants.CN_y = 0. - -my_constants.L_unitcell = 3*bond_length #0.426e-9 -my_constants.R_CN = bond_length*sqrt(3.*(m_index*m_index + n_index*n_index + m_index*n_index))/(2*pi) #radius -my_constants.CN_co_l = Overlap_unitcells*L_unitcell #total contact overlap length on both sides - -my_constants.CNT_gap = 2.e-9 - -### contact metal ### -##################### -my_constants.CM_length = CN_co_l + MGO_gap -my_constants.CM_height = 5.e-9 + MGO_gap - -### gate oxide ### -################## - -my_constants.GO_total_thickness = 10.e-9 -my_constants.GO_bottom = Lz_min - dz/5. -my_constants.GO_top = GO_bottom + GO_total_thickness + dz/5. -my_constants.GO_middle = GO_top - CM_height - -### gate ### -############ - -my_constants.G_thickness = 0 -################################################## -###### TIME DEPENDENT SIMULATION PROPERTIES ###### -################################################## - -timestep = dt -steps = Nsteps - -#################################### -###### EMBEDDED BOUNDARIES ######### -#################################### - -domain.embedded_boundary = 1 #options: 1=true, 0=false (default) -domain.specify_using_eb2 = 0 #options: 1=true, 0=false (default) - -ebgeom.objects = Source Drain -ebgeom.specify_inhomo_dir = 1 - -my_constants.MGO_gap = -2*dx/5. #gap between metal and gate oxide -my_constants.MB_gap = -2*dx/5. - -Source.geom_type = box -Source.box_lo = (-Lx/2. + MB_gap) (-Ly/2. + MB_gap) ( GO_top - CM_height + MGO_gap) -Source.box_hi = ( Lx/2. - MB_gap) (-Ly/2. + CM_length - MGO_gap ) ( GO_top) -Source.has_fluid_inside = false -Source.surf_soln = SV - -Drain.geom_type = box -Drain.box_lo = (-Lx/2. + MB_gap) ( Ly/2. - CM_length + MGO_gap ) ( GO_top - CM_height + MGO_gap) -Drain.box_hi = ( Lx/2. - MB_gap) ( Ly/2. - MB_gap ) ( GO_top ) -Drain.has_fluid_inside = false -Drain.surf_soln = Vds + SV -################################# -###### GEOMETRY PROPERTIES ###### -################################# -domain.n_cell = nx ny nz -domain.max_grid_size = nx/gx ny/gy nz/gz -domain.blocking_factor = nx/gx ny/gy nz/gz - - -domain.prob_lo = -Lx/2. -Ly/2. Lz_min -domain.prob_hi = Lx/2. Ly/2. Lz_max - -domain.is_periodic = 0 0 0 - -domain.coord_sys = cartesian - -################################# -###### BOUNDARY CONDITIONS ###### -################################# -boundary.hi = neu(0.) neu(0.) neu(0.) -boundary.lo = neu(0.) neu(0.) dir(Gate) - -boundary.Gate_function = "SV + Vgs_max - (Vgs_max-Vgs_min) * t" - -#################################### -###### MACROSCOPIC PROPERTIES ###### -#################################### -macroscopic.fields_to_define = alpha epsilon charge_density phi atom_locations -macroscopic.ghostcells_for_fields = alpha.0 epsilon.1 charge_density.1 phi.1 atom_locations.0 - -macroscopic.alpha = 0. -macroscopic.charge_density = 0. -macroscopic.epsilon_function = "epsilon_0 + (epsilon_GO - epsilon_0) * (z < GO_middle) + (epsilon_GO - epsilon_0) * (z >= GO_middle) * (z < GO_top) * (y >= (-Ly/2. + CM_length) ) * (y < (Ly/2. - CM_length) ) " - -macroscopic.phi = 0. -macroscopic.atom_locations = 0. - -############################# -###### POST PROCESSING ###### -############################# - -#post_process.fields_to_process = vecField - -#################### -###### OUTPUT ###### -#################### - -plot.fields_to_plot = phi.1 atom_locations #vecField -plot.rawfield_write_interval = 1000000 - -######################## -###### DIAGNOSTICS ##### -######################## -use_diagnostics = 0 - -#diag.specify_using_eb = 1 -#diag.objects = Surf1 -#Surf1.geom_type = cylinder -#Surf1.center = 0 0 CN_z -#Surf1.radius = R_CN -#Surf1.axial_direction = 1 -#Surf1.theta_reference_direction = 0 -#Surf1.has_fluid_inside = 0 -#Surf1.fields_to_plot = phi charge_density - -#################################### -###### MLMG SOLVER PROPERTIES ###### -#################################### - -mlmg.ascalar=0 -mlmg.bscalar=1 - -mlmg.soln = phi -mlmg.rhs = charge_density -mlmg.alpha = alpha -mlmg.beta = epsilon - -mlmg.set_verbose=0 -mlmg.max_order=2 -mlmg.absolute_tolerance=0 -mlmg.relative_tolerance=1e-10 - -################# -###### NEGF ##### -################# -transport.use_negf = 1 - -#transport.NS_names = cnt1 cnt2 -transport.NS_num = num_CNTs -transport.NS_type_default = CNT -transport.NS_gather_field = phi -transport.NS_deposit_field = charge_density -transport.NS_initial_deposit_value = 1.e-3 -transport.Broyden_fraction = 0.1 -transport.Broyden_max_norm = 1.e-5 -transport.Broyden_norm_type = relative -transport.selfconsistency_algorithm = broyden_second -transport.reset_with_previous_charge_distribution = 1 -transport.initialize_inverse_jacobian = 0 -transport.gate_terminal_type = Boundary -transport.Broyden_threshold_maxstep = 100 - -NS_default.num_unitcells = N_unitcells -NS_default.rotation_order = Z -NS_default.rotation_angle_type = D -NS_default.contact_Fermi_level = Ef -NS_default.contact_mu_specified = 1 -NS_default.contact_mu = Ef (Ef - Vds) -NS_default.contact_T = 298. 298. -NS_default.Fermi_tail_factors = 14 14 -NS_default.eq_integration_pts = 30 30 30 -NS_default.flag_compute_flatband_dos = 1 -NS_default.flatband_dos_integration_pts = 400 -NS_default.flatband_dos_integration_limits = -1. 1. -NS_default.noneq_integration_pts = 400 -NS_default.flag_write_integrand = 0 -NS_default.flag_write_charge_components = 0 -NS_default.num_noneq_paths = 1 -NS_default.num_recursive_parts = 2 -NS_default.write_at_iter = 0 -#NS_default.charge_distribution_filename = -#NS_default.read_step = -#NS_default.read_negf_foldername = -NS_default.E_valence_min = -10 -NS_default.E_pole_max = 3 -NS_default.E_zPlus_imag = 1.e-5 - -CNT_default.type_id = m_index n_index -CNT_default.acc = bond_length -CNT_default.gamma = 2.5 - -NS_1.offset = (CN_x + (-19/2.)*periodicity_length) CN_y CN_z -NS_1.rotation_angles = 0 0 25.02 - - -NS_2.offset = (CN_x + (-17/2.)*periodicity_length) CN_y CN_z -NS_2.rotation_angles = 0 0 -23.15 - - -NS_3.offset = (CN_x + (-15/2.)*periodicity_length) CN_y CN_z -NS_3.rotation_angles = 0 0 23.67 - - -NS_4.offset = (CN_x + (-13/2.)*periodicity_length) CN_y CN_z -NS_4.rotation_angles = 0 0 21.19 - - -NS_5.offset = (CN_x + (-11/2.)*periodicity_length) CN_y CN_z -NS_5.rotation_angles = 0 0 7.28 - - -NS_6.offset = (CN_x + (-9/2.)*periodicity_length) CN_y CN_z -NS_6.rotation_angles = 0 0 -13.70 - - -NS_7.offset = (CN_x + (-7/2.)*periodicity_length) CN_y CN_z -NS_7.rotation_angles = 0 0 -6.42 - - -NS_8.offset = (CN_x + (-5/2.)*periodicity_length) CN_y CN_z -NS_8.rotation_angles = 0 0 -10.10 - - -NS_9.offset = (CN_x + (-3/2.)*periodicity_length) CN_y CN_z -NS_9.rotation_angles = 0 0 -1.00 - - -NS_10.offset = (CN_x + (-1/2.)*periodicity_length) CN_y CN_z -NS_10.rotation_angles = 0 0 18.43 - - -NS_11.offset = (CN_x + (1/2.)*periodicity_length) CN_y CN_z -NS_11.rotation_angles = 0 0 -13.37 - - -NS_12.offset = (CN_x + (3/2.)*periodicity_length) CN_y CN_z -NS_12.rotation_angles = 0 0 3.53 - - -NS_13.offset = (CN_x + (5/2.)*periodicity_length) CN_y CN_z -NS_13.rotation_angles = 0 0 18.60 - - -NS_14.offset = (CN_x + (7/2.)*periodicity_length) CN_y CN_z -NS_14.rotation_angles = 0 0 24.84 - - -NS_15.offset = (CN_x + (9/2.)*periodicity_length) CN_y CN_z -NS_15.rotation_angles = 0 0 -20.49 - - -NS_16.offset = (CN_x + (11/2.)*periodicity_length) CN_y CN_z -NS_16.rotation_angles = 0 0 19.32 - - -NS_17.offset = (CN_x + (13/2.)*periodicity_length) CN_y CN_z -NS_17.rotation_angles = 0 0 -14.24 - - -NS_18.offset = (CN_x + (15/2.)*periodicity_length) CN_y CN_z -NS_18.rotation_angles = 0 0 -27.56 - - -NS_19.offset = (CN_x + (17/2.)*periodicity_length) CN_y CN_z -NS_19.rotation_angles = 0 0 4.62 - - -NS_20.offset = (CN_x + (19/2.)*periodicity_length) CN_y CN_z -NS_20.rotation_angles = 0 0 11.42 diff --git a/input/negf/StewartFrancois2006/all_around_metal b/input/negf/validation_studies/all_around_metal similarity index 90% rename from input/negf/StewartFrancois2006/all_around_metal rename to input/negf/validation_studies/all_around_metal index 605c8bb..55e6959 100644 --- a/input/negf/StewartFrancois2006/all_around_metal +++ b/input/negf/validation_studies/all_around_metal @@ -1,13 +1,16 @@ -############################################################## -# Description : Test models a(17, 0) carbon nanotube surrounded -# by a palladium contact.Electrostatic potential is imposed -# on the metal as "Gate.surf_soln_function" from 0 to 1 V in -# 6 steps. At each step the charge density on the nanotube -# varies until self consistency is achieved with respect to -# the potential.Potential at 1 V in the domain is compared. -# -# Ref : Stewart and Léonard (2006), Nanotechnology 17 : 4699. -# doi : 10.1088/0957-4484/17/18/029 +############################################################### +# Description: +# This script models a (17, 0) carbon nanotube surrounded by a +# contant metal (Pd). Electrostatic potential is imposed +# on the metal as "Gate.surf_soln_function" from GV_min=0V +# to GV_max=1V. At each step, charge density on the nanotube +# varies until self-consistency is achieved with respect to the +# potential. This script can be used to reproduce Supplementary +# Fig. 3 in the ELEQTRONeX paper. +# +# Reference: +# Stewart and Léonard (2006), Nanotechnology 17:4699. +# DOI: 10.1088/0957-4484/17/18/029 ############################################################### use_electrostatic = 1 diff --git a/input/negf/StewartFrancois2006/GAA_VdsVary b/input/negf/validation_studies/gate_all_around_VdsVary similarity index 90% rename from input/negf/StewartFrancois2006/GAA_VdsVary rename to input/negf/validation_studies/gate_all_around_VdsVary index 88a0e8b..10c7a4d 100644 --- a/input/negf/StewartFrancois2006/GAA_VdsVary +++ b/input/negf/validation_studies/gate_all_around_VdsVary @@ -1,3 +1,17 @@ +############################################################### +# Description: +# This script validates ELEQTRONeX using the reference below +# and reproduces Fig. 2a in the ELEQTRONeX paper. It models a +# (17, 0) carbon nanotube field effect transistor with a +# gate-all-around setup, as described in the reference. +# +# Vds is varied from Vds_max to Vds_min in `Nsteps` steps. +# +# Reference: +# Stewart and Léonard (2006), Nanotechnology 17:4699. +# DOI: 10.1088/0957-4484/17/18/029 +############################################################### + ################ ##### FLAGS #### ################ @@ -10,10 +24,10 @@ amrex.the_arena_is_managed=1 ############################ my_constants.gx = 2 -my_constants.gy = 16*2 +my_constants.gy = 2 my_constants.gz = 2 -my_constants.Channel_unitcells = 184 +my_constants.Channel_unitcells = 48 my_constants.Overlap_unitcells = 36 my_constants.Gap_unitcells = 0 my_constants.N_unitcells = Channel_unitcells + 2*Overlap_unitcells + 2*Gap_unitcells #64 @@ -25,34 +39,29 @@ cnt.Fermi_tail_factors = 14 14 my_constants.Vgs = 0.8 #Drain-Source voltage [V] my_constants.Vds_min = -0.3 -my_constants.Vds_max = -0.02 -my_constants.Nsteps = 15 +my_constants.Vds_max = 0 +my_constants.Nsteps = 16 my_constants.dt = 1./(Nsteps-1) -cnt.eq_integration_pts = 50 50 50 +cnt.eq_integration_pts = 30 30 30 cnt.flag_compute_flatband_dos = 0 cnt.flatband_dos_integration_pts = 400 cnt.flatband_dos_integration_limits = -1. 1. cnt.num_noneq_paths = 1 -#cnt.noneq_percent_intercuts = 20 50 -#cnt.noneq_integration_pts = 500 20000 800 -#cnt.noneq_integration_pts_density = 500 1600 50 cnt.flag_adaptive_integration_limits = 0 cnt.noneq_integration_pts = 400 -#cnt.integrand_correction_interval = 50 cnt.flag_write_integrand = 0 -#cnt.write_integrand_interval = 1 -cnt.kT_window_around_singularity = 3 2 cnt.num_recursive_parts = 1 restart = 0 restart_step = 0 cnt.initialize_charge_distribution = 0 -#cnt.charge_distribution_filename = /global/cfs/projectdirs/m3766/SaurabhTests/weak_scaling/negf_gaa_final/gpu64/zPlus1em6/VdsSweep_0_to_mDot1/negf/cnt/step0000_Qout.dat +#cnt.charge_distribution_filename = -plot.folder_name = /global/cfs/projectdirs/m3766/SaurabhTests/weak_scaling/negf_gaa_final/gpu64/N128_Mode1/Run1 +### specify this +#plot.folder_name = plot.write_interval = 1000 cnt.write_at_iter = 0 @@ -193,8 +202,6 @@ Gate.center = CN_x CN_y CN_z Gate.height = gate_length Gate.direction = 1 Gate.surf_soln = Vgs + SV -#Gate.surf_soln_parser = 1 -#Gate.surf_soln_function = "SV + Vgs_max - (Vgs_max-Vgs_min) * t" ################################# ###### GEOMETRY PROPERTIES ###### @@ -303,8 +310,6 @@ cnt.offset = CN_x CN_y CN_z cnt.rotation_angles = 0 0 0 cnt.contact_mu_specified = 0 cnt.contact_parser_string = Source Drain -#cnt.contact_mu_specified = 1 -#cnt.contact_mu = Ef (Ef - Vds) cnt.contact_T = 298. 298. cnt.contact_Fermi_level = Ef diff --git a/input/negf/validation_studies/gate_all_around_VgsVary b/input/negf/validation_studies/gate_all_around_VgsVary new file mode 100644 index 0000000..06a6ec7 --- /dev/null +++ b/input/negf/validation_studies/gate_all_around_VgsVary @@ -0,0 +1,326 @@ +############################################################### +# Description: +# This script models a (17, 0) carbon nanotube field effect +# transistor with a gate-all-around setup, as described in the +# reference below. It can be used to reproduce Fig. 2b in the +# ELEQTRONeX paper. +# +# Vgs is varied from Vgs_max to Vgs_min in `Nsteps` steps. +# +# Reference: +# Stewart and Léonard (2006), Nanotechnology 17:4699. +# DOI: 10.1088/0957-4484/17/18/029 +############################################################### + +################ +##### FLAGS #### +################ +use_electrostatic = 1 +use_transport = 1 +amrex.the_arena_is_managed=1 + +############################ +##### Scaling Variables #### +############################ + +my_constants.gx = 2 +my_constants.gy = 2 +my_constants.gz = 2 + +my_constants.Channel_unitcells = 48 +my_constants.Overlap_unitcells = 36 +my_constants.Gap_unitcells = 0 +my_constants.N_unitcells = Channel_unitcells + 2*Overlap_unitcells + 2*Gap_unitcells #64 +transport.Broyden_threshold_maxstep = 100 +transport.flag_write_LDOS = 0 +transport.flag_write_LDOS_iter = 0 +transport.write_LDOS_iter_period = 1 +cnt.Fermi_tail_factors = 14 14 + +my_constants.Vds = -0.1 +my_constants.Vgs_min = -0.3 +my_constants.Vgs_max = 0.8 +my_constants.Nsteps = 23 +my_constants.dt = 1./(Nsteps-1) + +cnt.eq_integration_pts = 30 30 30 +cnt.flag_compute_flatband_dos = 0 +cnt.flatband_dos_integration_pts = 400 +cnt.flatband_dos_integration_limits = -1. 1. + +cnt.num_noneq_paths = 1 +#cnt.noneq_percent_intercuts = 20 50 +#cnt.noneq_integration_pts = 500 20000 800 +#cnt.noneq_integration_pts_density = 500 1600 50 +#cnt.flag_adaptive_integration_limits = 1 +#cnt.integrand_correction_interval = 50 +#cnt.kT_window_around_singularity = 3 2 +cnt.flag_adaptive_integration_limits = 0 +cnt.noneq_integration_pts = 400 +cnt.flag_write_integrand = 0 +cnt.num_recursive_parts = 1 + +restart = 0 +restart_step = 0 + +### specify this if input (guess) charge density on the nanotube is read from a file +#cnt.initialize_charge_distribution = 1 +#cnt.charge_distribution_filename = /global/cfs/projectdirs/m3766/SaurabhTests/weak_scaling/negf_gaa_final/gpu64/N128_Mode1/Run1/negf/cnt/step0005_Qout.dat + +#### specify this for output location +#plot.folder_name = /global/cfs/projectdirs/m3766/SaurabhTests/weak_scaling/negf_gaa_final/gpu64/N128_Mode1/VgsSweep_Run1 + +plot.write_interval = 1000 +cnt.write_at_iter = 0 +################################## +##### USER DEFINED CONSTANTS ##### +################################## + +### Physical and Other Constants ### +#################################### + +my_constants.q = 1.602e-19 +my_constants.epsilon_0 = 8.8541878128e-12 +my_constants.tiny = 1e-12 +my_constants.pi = 3.141592653589793 + +my_constants.epsilon_CN = epsilon_0 #vacuum +my_constants.epsilon_GO = 3.9*epsilon_0 +my_constants.epsilon_domain = epsilon_0 #air +my_constants.epsilon_CM = epsilon_0 #Palladium + +my_constants.SV = 0. #source voltage [V] + +my_constants.Ef = -1. #Palladium Contact Fermi level [eV] + +### Total domain dimensions ### +############################### +my_constants.Ly_offset_unitcells = 0 + +my_constants.cells_per_unitcell = 12 #cell_size = 0.0355 nm + +my_constants.unitcells_per_D_CN = ceil((R_CN*2)/(L_unitcell)) #unitcells per diameter + +my_constants.width_factor = 4 +my_constants.height_factor = 4 + +my_constants.ny = (N_unitcells + Ly_offset_unitcells) * cells_per_unitcell +my_constants.nx = width_factor * unitcells_per_D_CN * cells_per_unitcell +my_constants.nz = height_factor * unitcells_per_D_CN * cells_per_unitcell + +my_constants.Ly = (N_unitcells + Ly_offset_unitcells) * L_unitcell +my_constants.Lx = width_factor * unitcells_per_D_CN * L_unitcell +my_constants.Lz = height_factor * unitcells_per_D_CN * L_unitcell + + +my_constants.dx = Lx/nx +my_constants.dy = Ly/ny +my_constants.dz = Lz/nz + +### Carbon nanotube ### +####################### + +my_constants.m_index = 17 +my_constants.n_index = 0 + + +my_constants.bond_length = 0.142e-9 +my_constants.small_gap = 0.3e-9 #gap between nanotube and the contacts + +my_constants.CN_z = 0. +my_constants.CN_x = 0. +my_constants.CN_y = 0. + +my_constants.L_unitcell = 3*bond_length #0.426e-9 +my_constants.R_CN = bond_length*sqrt(3.*(m_index*m_index + n_index*n_index + m_index*n_index))/(2*pi) #radius +my_constants.CN_co_l = Overlap_unitcells*L_unitcell #total contact overlap length on both sides + +### contact metal ### +##################### + +my_constants.source_lo_y = -Ly/2 - dy/5. +my_constants.source_hi_y = source_lo_y + CN_co_l + +my_constants.drain_hi_y = Ly/2 + dy/5. +my_constants.drain_lo_y = drain_hi_y - CN_co_l + +my_constants.gate_length = drain_lo_y - source_hi_y - 2*dy + +my_constants.source_center_y = (source_lo_y + source_hi_y)/2 +my_constants.drain_center_y = (drain_lo_y + drain_hi_y)/2 + +my_constants.CM_thickness = 30*dz + +### gate ### +############ + +my_constants.G_inner_rad = 3.e-9 #Gate_InnerRadius +my_constants.G_thickness = 10*dz + +### gate oxide ### +################## + +my_constants.GO_thickness = G_inner_rad - (R_CN + small_gap) + +### oxide-nanotube gap ### +########################## + +#my_constants.length_scale_lattice_const = 8.5e-12 + +################################################## +###### TIME DEPENDENT SIMULATION PROPERTIES ###### +################################################## + +timestep = dt +steps = Nsteps + +#################################### +###### EMBEDDED BOUNDARIES ######### +#################################### + +domain.embedded_boundary = 1 #options: 1=true, 0=false (default) +domain.specify_using_eb2 = 0 #options: 1=true, 0=false (default) + +ebgeom.objects = Source Drain Gate +ebgeom.specify_inhomo_dir = 1 + +Source.geom_type = cntfet_contact_cyl +Source.inner_radius = R_CN + small_gap +Source.thickness = CM_thickness +Source.center = CN_x source_center_y CN_z +Source.height = source_hi_y - source_lo_y +Source.direction = 1 +Source.surf_soln = SV + +Drain.geom_type = cntfet_contact_cyl +Drain.inner_radius = R_CN + small_gap +Drain.thickness = CM_thickness +Drain.center = CN_x drain_center_y CN_z +Drain.height = drain_hi_y - drain_lo_y +Drain.direction = 1 +Drain.surf_soln = Vds + SV + +Gate.geom_type = cntfet_contact_cyl +Gate.inner_radius = G_inner_rad +Gate.thickness = G_thickness +Gate.center = CN_x CN_y CN_z +Gate.height = gate_length +Gate.direction = 1 +Gate.surf_soln_parser = 1 +Gate.surf_soln_function = "SV + Vgs_max - (Vgs_max-Vgs_min) * t" + +################################# +###### GEOMETRY PROPERTIES ###### +################################# +domain.n_cell = nx ny nz +domain.max_grid_size = nx/gx ny/gy nz/gz +domain.blocking_factor = nx/gx ny/gy nz/gz + + +domain.prob_lo = -Lx/2. -Ly/2. -Lz/2. +domain.prob_hi = Lx/2. Ly/2. Lz/2. + +domain.is_periodic = 0 0 0 + +domain.coord_sys = cartesian + +################################# +###### BOUNDARY CONDITIONS ###### +################################# +boundary.hi = neu(0.) neu(0) neu(0.) +boundary.lo = neu(0.) neu(0) neu(0.) + +#################################### +###### MACROSCOPIC PROPERTIES ###### +#################################### +macroscopic.fields_to_define = alpha epsilon charge_density phi atom_locations +macroscopic.ghostcells_for_fields = alpha.0 epsilon.1 charge_density.1 phi.1 atom_locations.0 + +macroscopic.alpha = 0. +macroscopic.charge_density = 0. + +macroscopic.epsilon_function = "epsilon_0 + (epsilon_GO - epsilon_0) * (sqrt( (x-CN_x)**2 + (z-CN_z)**2 ) < (G_inner_rad + dz)) * (sqrt( (x-CN_x)**2 + (z-CN_z)**2 ) >= (R_CN + small_gap)) * (y > (source_hi_y+dy)) * (y < (drain_lo_y-dy))" + +macroscopic.phi = 0. +macroscopic.atom_locations = 0. + +############################# +###### POST PROCESSING ###### +############################# + +#post_process.fields_to_process = vecField + +#################### +###### OUTPUT ###### +#################### + +plot.fields_to_plot = epsilon.1 charge_density.1 phi.1 atom_locations #vecField +plot.write_after_init = 0 +plot.rawfield_write_interval = 1000000 + +######################## +###### DIAGNOSTICS ##### +######################## +use_diagnostics = 0 + +#diag.specify_using_eb = 1 +#diag.objects = Surf1 +#Surf1.geom_type = cylinder +#Surf1.center = 0 0 CN_z +#Surf1.radius = R_CN +#Surf1.axial_direction = 1 +#Surf1.theta_reference_direction = 0 +#Surf1.has_fluid_inside = 0 +#Surf1.fields_to_plot = phi charge_density + +#################################### +###### MLMG SOLVER PROPERTIES ###### +#################################### + +mlmg.ascalar=0 +mlmg.bscalar=1 + +mlmg.soln = phi +mlmg.rhs = charge_density +mlmg.alpha = alpha +mlmg.beta = epsilon + +mlmg.set_verbose=0 +mlmg.max_order=2 +mlmg.absolute_tolerance=0 +mlmg.relative_tolerance=1e-10 + +################# +###### NEGF ##### +################# + +#NS stands for nanostructure +transport.NS_names = cnt +transport.use_negf = 1 +transport.NS_gather_field = phi +transport.NS_deposit_field = charge_density +transport.NS_initial_deposit_value = 1e-3 +transport.Broyden_fraction = 0.1 +transport.Broyden_max_norm = 1.e-4 +transport.Broyden_norm_type = relative +transport.selfconsistency_algorithm = broyden_second +transport.reset_with_previous_charge_distribution = 1 +transport.initialize_inverse_jacobian = 0 + +cnt.type = CNT +cnt.type_id = m_index n_index #m n +cnt.acc = bond_length +cnt.gamma = 2.5 #coupling strength (eV) +cnt.num_unitcells = N_unitcells +cnt.offset = CN_x CN_y CN_z +cnt.contact_mu_specified = 0 +cnt.contact_parser_string = Source Drain +cnt.contact_mu_specified = 1 +cnt.contact_mu = Ef (Ef - Vds) +cnt.contact_T = 298. 298. + +cnt.contact_Fermi_level = Ef +cnt.E_valence_min = -10 +cnt.E_pole_max = 3 +cnt.E_zPlus_imag = 1.e-5 +##################################### diff --git a/input/negf/validation_studies/planar_periodic b/input/negf/validation_studies/planar_periodic new file mode 100644 index 0000000..8e3518c --- /dev/null +++ b/input/negf/validation_studies/planar_periodic @@ -0,0 +1,300 @@ +############################################################### +# Description: +# This script models planar CNTFET with periodic boundary +# conditions as described in the Ref. below It can be used +# to reproduce Fig. 2d in the ELEQTRONeX paper. +# The output conductance can be compared with the reference +# below for periodicity distance d = 3.195 nm ≈ 3.2 nm +# (see `width_factor` defined below). +# +# Reference: +# Léonard, F. (2006). Crosstalk between nanotube devices: +# contact and channel effects. Nanotechnology, 17(9), 2381. +# DOI: 10.1088/0957-4484/17/9/029 +############################################################### + +################ +##### FLAGS #### +################ +use_electrostatic = 1 +use_transport = 1 +amrex.the_arena_is_managed=1 + +################################ +##### Some Important Params #### +################################ +my_constants.gx = 1 +my_constants.gy = 4 +my_constants.gz = 2 + +my_constants.num_CNTs = 1 +my_constants.periodicity_factor = 1.875 #1.875 corresponds to 3.195 nm (smallest periodicity distance) + +my_constants.Channel_unitcells = 24 +my_constants.Overlap_unitcells = 12 + +my_constants.Vds = 0. #Drain-Source voltage [V] +my_constants.Vgs_min = -4 +my_constants.Vgs_max = 12 +my_constants.Nsteps = 65 +my_constants.dt = 1./(Nsteps-1) + +plot.folder_name = /global/cfs/projectdirs/m4540/eXstatic/1x_spacing/periodic +plot.write_after_init = 0 +plot.write_interval = 100 + +transport.flag_compute_DOS = 1 #DOS, Transmission, Conductance +transport.flag_write_LDOS = 0 +transport.flag_write_LDOS_iter = 0 +transport.write_LDOS_iter_period = 100 + +restart = 0 +restart_step = 0 +NS_default.initialize_charge_distribution = 0 +################################## +##### USER DEFINED CONSTANTS ##### +################################## + +### Physical and Other Constants ### +#################################### + +my_constants.q = 1.602e-19 +my_constants.epsilon_0 = 8.8541878128e-12 +my_constants.pi = 3.141592653589793 + +my_constants.epsilon_GO = 3.9*epsilon_0 + +my_constants.SV = 0. #source voltage [V] +my_constants.Ef = -1. #Palladium Contact Fermi level [eV] + +### Total domain dimensions ### +############################### +my_constants.Gap_unitcells = 0 +my_constants.N_unitcells = Channel_unitcells + 2*Overlap_unitcells + 2*Gap_unitcells + +my_constants.Ly_offset_unitcells = 0 + +my_constants.cells_per_unitcell = 16 #cell_size = 0.0355 nm + +my_constants.unitcells_per_D_CN = ceil((R_CN*2)/(L_unitcell)) #unitcells per diameter + +my_constants.periodicity_length = periodicity_factor * unitcells_per_D_CN * L_unitcell + +my_constants.width_factor = (num_CNTs)*periodicity_factor #1.875 corresponds to 3.195 nm (smallest periodicity distance) + +my_constants.height_factor = 12 + +my_constants.ny = (N_unitcells + Ly_offset_unitcells) * cells_per_unitcell +my_constants.nx = width_factor * unitcells_per_D_CN * cells_per_unitcell +my_constants.nz = height_factor * unitcells_per_D_CN * cells_per_unitcell + +my_constants.Ly = (N_unitcells + Ly_offset_unitcells) * L_unitcell +my_constants.Lx = width_factor * unitcells_per_D_CN * L_unitcell +my_constants.Lz = height_factor * unitcells_per_D_CN * L_unitcell + +my_constants.dx = Lx/nx +my_constants.dy = Ly/ny +my_constants.dz = Lz/nz + +my_constants.Lz_min = -(R_CN + small_gap + GO_total_thickness + G_thickness) +my_constants.Lz_max = Lz + Lz_min + +### Carbon nanotube ### +####################### + +my_constants.m_index = 17 +my_constants.n_index = 0 + + +my_constants.bond_length = 0.142e-9 +my_constants.small_gap = 0.3e-9 #gap between nanotube and the contacts + +my_constants.CN_z = 0. +my_constants.CN_x = 0. +my_constants.CN_y = 0. + +my_constants.L_unitcell = 3*bond_length #0.426e-9 +my_constants.R_CN = bond_length*sqrt(3.*(m_index*m_index + n_index*n_index + m_index*n_index))/(2*pi) #radius +my_constants.CN_co_l = Overlap_unitcells*L_unitcell #total contact overlap length on both sides + +my_constants.CNT_gap = 2.e-9 + +### contact metal ### +##################### +my_constants.CM_length = CN_co_l + MGO_gap +my_constants.CM_height = 5.e-9 + MGO_gap + +### gate oxide ### +################## + +my_constants.GO_total_thickness = 10.e-9 +my_constants.GO_bottom = Lz_min - dz/5. +my_constants.GO_top = GO_bottom + GO_total_thickness + dz/5. +my_constants.GO_middle = GO_top - CM_height + +### gate ### +############ + +my_constants.G_thickness = 0 +################################################## +###### TIME DEPENDENT SIMULATION PROPERTIES ###### +################################################## + +timestep = dt +steps = Nsteps + +#################################### +###### EMBEDDED BOUNDARIES ######### +#################################### + +domain.embedded_boundary = 1 #options: 1=true, 0=false (default) +domain.specify_using_eb2 = 0 #options: 1=true, 0=false (default) + +ebgeom.objects = Source Drain +ebgeom.specify_inhomo_dir = 1 + +my_constants.MGO_gap = -2*dx/5. #gap between metal and gate oxide +my_constants.MB_gap = -2*dx/5. + +Source.geom_type = box +Source.box_lo = (-Lx/2. + MB_gap) (-Ly/2. + MB_gap) ( GO_top - CM_height + MGO_gap) +Source.box_hi = ( Lx/2. - MB_gap) (-Ly/2. + CM_length - MGO_gap ) ( GO_top) +Source.has_fluid_inside = false +Source.surf_soln = SV + +Drain.geom_type = box +Drain.box_lo = (-Lx/2. + MB_gap) ( Ly/2. - CM_length + MGO_gap ) ( GO_top - CM_height + MGO_gap) +Drain.box_hi = ( Lx/2. - MB_gap) ( Ly/2. - MB_gap ) ( GO_top ) +Drain.has_fluid_inside = false +Drain.surf_soln = Vds + SV +################################# +###### GEOMETRY PROPERTIES ###### +################################# +domain.n_cell = nx ny nz +domain.max_grid_size = nx/gx ny/gy nz/gz +domain.blocking_factor = nx/gx ny/gy nz/gz + + +domain.prob_lo = -Lx/2. -Ly/2. Lz_min +domain.prob_hi = Lx/2. Ly/2. Lz_max + +domain.is_periodic = 1 0 0 + +domain.coord_sys = cartesian + +################################# +###### BOUNDARY CONDITIONS ###### +################################# +boundary.hi = per neu(0.) neu(0.) +boundary.lo = per neu(0.) dir(Gate) + +boundary.Gate_function = "SV + Vgs_max - (Vgs_max-Vgs_min) * t" + +#################################### +###### MACROSCOPIC PROPERTIES ###### +#################################### +macroscopic.fields_to_define = alpha epsilon charge_density phi atom_locations +macroscopic.ghostcells_for_fields = alpha.0 epsilon.1 charge_density.1 phi.1 atom_locations.0 + +macroscopic.alpha = 0. +macroscopic.charge_density = 0. +macroscopic.epsilon_function = "epsilon_0 + (epsilon_GO - epsilon_0) * (z < GO_middle) + (epsilon_GO - epsilon_0) * (z >= GO_middle) * (z < GO_top) * (y >= (-Ly/2. + CM_length) ) * (y < (Ly/2. - CM_length) ) " + +macroscopic.phi = 0. +macroscopic.atom_locations = 0. + +############################# +###### POST PROCESSING ###### +############################# + +#post_process.fields_to_process = vecField + +#################### +###### OUTPUT ###### +#################### + +plot.fields_to_plot = epsilon.1 charge_density.1 phi.1 atom_locations #vecField +plot.rawfield_write_interval = 1000000 + +######################## +###### DIAGNOSTICS ##### +######################## +use_diagnostics = 0 + +#diag.specify_using_eb = 1 +#diag.objects = Surf1 +#Surf1.geom_type = cylinder +#Surf1.center = 0 0 CN_z +#Surf1.radius = R_CN +#Surf1.axial_direction = 1 +#Surf1.theta_reference_direction = 0 +#Surf1.has_fluid_inside = 0 +#Surf1.fields_to_plot = phi charge_density + +#################################### +###### MLMG SOLVER PROPERTIES ###### +#################################### + +mlmg.ascalar=0 +mlmg.bscalar=1 + +mlmg.soln = phi +mlmg.rhs = charge_density +mlmg.alpha = alpha +mlmg.beta = epsilon + +mlmg.set_verbose=0 +mlmg.max_order=2 +mlmg.absolute_tolerance=0 +mlmg.relative_tolerance=1e-10 + +################# +###### NEGF ##### +################# +transport.use_negf = 1 + +#transport.NS_names = cnt1 cnt2 +transport.NS_num = num_CNTs +transport.NS_type_default = CNT +transport.NS_gather_field = phi +transport.NS_deposit_field = charge_density +transport.NS_initial_deposit_value = 1.e-3 +transport.Broyden_fraction = 0.1 +transport.Broyden_max_norm = 1.e-5 +transport.Broyden_norm_type = relative +transport.selfconsistency_algorithm = broyden_second +transport.reset_with_previous_charge_distribution = 1 +transport.initialize_inverse_jacobian = 0 +transport.gate_terminal_type = Boundary +transport.Broyden_threshold_maxstep = 100 + +NS_default.num_unitcells = N_unitcells +NS_default.rotation_order = Z +NS_default.rotation_angle_type = D +NS_default.contact_Fermi_level = Ef +NS_default.contact_mu_specified = 1 +NS_default.contact_mu = Ef (Ef - Vds) +NS_default.contact_T = 298. 298. +NS_default.Fermi_tail_factors = 14 14 +NS_default.eq_integration_pts = 30 30 30 +NS_default.flag_compute_flatband_dos = 1 +NS_default.flatband_dos_integration_pts = 400 +NS_default.flatband_dos_integration_limits = -1. 1. +NS_default.noneq_integration_pts = 400 +NS_default.flag_write_integrand = 0 +NS_default.flag_write_charge_components = 0 +NS_default.num_noneq_paths = 1 +NS_default.num_recursive_parts = 2 +NS_default.write_at_iter = 0 +#NS_default.charge_distribution_filename = +#NS_default.read_step = +#NS_default.read_negf_foldername = +NS_default.E_valence_min = -10 +NS_default.E_pole_max = 3 +NS_default.E_zPlus_imag = 1.e-5 + +CNT_default.type_id = m_index n_index +CNT_default.acc = bond_length +CNT_default.gamma = 2.5 +NS_1.offset = (CN_x + (0/2.)*periodicity_length) CN_y CN_z +NS_1.rotation_angles = 0 0 0.0 diff --git a/input/negf_scaling/cnt_free b/input/negf_scaling/cnt_free deleted file mode 100644 index 2f220f8..0000000 --- a/input/negf_scaling/cnt_free +++ /dev/null @@ -1,37 +0,0 @@ -use_electrostatic = 0 -use_transport = 1 - -################################## -##### USER DEFINED CONSTANTS ##### -################################## - -### Carbon nanotube -my_constants.m_index = 17 -my_constants.n_index = 0 -my_constants.bond_length = 0.142e-9 -my_constants.N_unitcells = 1 -###################################### - -################# -###### NEGF ##### -################# - -#nanostructure names -transport.NS_names = cnt -transport.use_negf = 1 - -cnt.type = CNT -cnt.type_id = m_index n_index -cnt.acc = bond_length -cnt.gamma = 2.5 -cnt.num_unitcells = N_unitcells -cnt.offset = 0 0 0 - -cnt.contact_potential = 0 1 -cnt.impose_potential = 1 -cnt.potential_profile_type = constant - -cnt.E_f = -1 -cnt.E_valence_min = -10 -cnt.E_pole_max = 3 -###################################### diff --git a/input/negf_scaling/weak/ppc_1024GPUs b/input/negf_scaling/weak/ppc_1024GPUs deleted file mode 100644 index 327f7ee..0000000 --- a/input/negf_scaling/weak/ppc_1024GPUs +++ /dev/null @@ -1,38 +0,0 @@ -use_electrostatic = 0 -use_transport = 1 - -################################## -##### USER DEFINED CONSTANTS ##### -################################## - -### Carbon nanotube -my_constants.N_unitcells = 256000 - -my_constants.m_index = 17 -my_constants.n_index = 0 -my_constants.bond_length = 0.142e-9 -###################################### - -################# -###### NEGF ##### -################# - -#nanostructure names -transport.NS_names = cnt -transport.use_negf = 1 - -cnt.type = CNT -cnt.type_id = m_index n_index -cnt.acc = bond_length -cnt.gamma = 2.5 -cnt.num_unitcells = N_unitcells -cnt.offset = 0 0 0 - -cnt.contact_potential = 0 1 -cnt.impose_potential = 1 -cnt.potential_profile_type = constant - -cnt.E_f = -1 -cnt.E_valence_min = -10 -cnt.E_pole_max = 3 -###################################### diff --git a/input/negf_scaling/weak/ppc_1GPU b/input/negf_scaling/weak/ppc_1GPU deleted file mode 100644 index 85ebda1..0000000 --- a/input/negf_scaling/weak/ppc_1GPU +++ /dev/null @@ -1,38 +0,0 @@ -use_electrostatic = 0 -use_transport = 1 - -################################## -##### USER DEFINED CONSTANTS ##### -################################## - -### Carbon nanotube -my_constants.N_unitcells = 250 - -my_constants.m_index = 17 -my_constants.n_index = 0 -my_constants.bond_length = 0.142e-9 -###################################### - -################# -###### NEGF ##### -################# - -#nanostructure names -transport.NS_names = cnt -transport.use_negf = 1 - -cnt.type = CNT -cnt.type_id = m_index n_index -cnt.acc = bond_length -cnt.gamma = 2.5 -cnt.num_unitcells = N_unitcells -cnt.offset = 0 0 0 - -cnt.contact_potential = 0 1 -cnt.impose_potential = 1 -cnt.potential_profile_type = constant - -cnt.E_f = 0 -cnt.E_valence_min = -10 -cnt.E_pole_max = 3 -###################################### diff --git a/input/negf_scaling/weak/ppc_256GPUs b/input/negf_scaling/weak/ppc_256GPUs deleted file mode 100644 index a7bc3d0..0000000 --- a/input/negf_scaling/weak/ppc_256GPUs +++ /dev/null @@ -1,38 +0,0 @@ -use_electrostatic = 0 -use_transport = 1 - -################################## -##### USER DEFINED CONSTANTS ##### -################################## - -### Carbon nanotube -my_constants.N_unitcells = 64000 - -my_constants.m_index = 17 -my_constants.n_index = 0 -my_constants.bond_length = 0.142e-9 -###################################### - -################# -###### NEGF ##### -################# - -#nanostructure names -transport.NS_names = cnt -transport.use_negf = 1 - -cnt.type = CNT -cnt.type_id = m_index n_index -cnt.acc = bond_length -cnt.gamma = 2.5 -cnt.num_unitcells = N_unitcells -cnt.offset = 0 0 0 - -cnt.contact_potential = 0 1 -cnt.impose_potential = 1 -cnt.potential_profile_type = constant - -cnt.E_f = -1 -cnt.E_valence_min = -10 -cnt.E_pole_max = 3 -###################################### diff --git a/input/negf_scaling/weak/ppc_512GPUs b/input/negf_scaling/weak/ppc_512GPUs deleted file mode 100644 index e2fac5f..0000000 --- a/input/negf_scaling/weak/ppc_512GPUs +++ /dev/null @@ -1,38 +0,0 @@ -use_electrostatic = 0 -use_transport = 1 - -################################## -##### USER DEFINED CONSTANTS ##### -################################## - -### Carbon nanotube -my_constants.N_unitcells = 128000 - -my_constants.m_index = 17 -my_constants.n_index = 0 -my_constants.bond_length = 0.142e-9 -###################################### - -################# -###### NEGF ##### -################# - -#nanostructure names -transport.NS_names = cnt -transport.use_negf = 1 - -cnt.type = CNT -cnt.type_id = m_index n_index -cnt.acc = bond_length -cnt.gamma = 2.5 -cnt.num_unitcells = N_unitcells -cnt.offset = 0 0 0 - -cnt.contact_potential = 0 1 -cnt.impose_potential = 1 -cnt.potential_profile_type = constant - -cnt.E_f = -1 -cnt.E_valence_min = -10 -cnt.E_pole_max = 3 -###################################### diff --git a/input/negf_scaling/weak/ppc_64GPUs b/input/negf_scaling/weak/ppc_64GPUs deleted file mode 100644 index e7d7579..0000000 --- a/input/negf_scaling/weak/ppc_64GPUs +++ /dev/null @@ -1,38 +0,0 @@ -use_electrostatic = 0 -use_transport = 1 - -################################## -##### USER DEFINED CONSTANTS ##### -################################## - -### Carbon nanotube -my_constants.N_unitcells = 16000 - -my_constants.m_index = 17 -my_constants.n_index = 0 -my_constants.bond_length = 0.142e-9 -###################################### - -################# -###### NEGF ##### -################# - -#nanostructure names -transport.NS_names = cnt -transport.use_negf = 1 - -cnt.type = CNT -cnt.type_id = m_index n_index -cnt.acc = bond_length -cnt.gamma = 2.5 -cnt.num_unitcells = N_unitcells -cnt.offset = 0 0 0 - -cnt.contact_potential = 0 1 -cnt.impose_potential = 1 -cnt.potential_profile_type = constant - -cnt.E_f = -1 -cnt.E_valence_min = -10 -cnt.E_pole_max = 3 -###################################### diff --git a/input/negf_scaling/weak/ppc_8GPUs b/input/negf_scaling/weak/ppc_8GPUs deleted file mode 100644 index e1ce36d..0000000 --- a/input/negf_scaling/weak/ppc_8GPUs +++ /dev/null @@ -1,38 +0,0 @@ -use_electrostatic = 0 -use_transport = 1 - -################################## -##### USER DEFINED CONSTANTS ##### -################################## - -### Carbon nanotube -my_constants.N_unitcells = 2000 - -my_constants.m_index = 17 -my_constants.n_index = 0 -my_constants.bond_length = 0.142e-9 -###################################### - -################# -###### NEGF ##### -################# - -#nanostructure names -transport.NS_names = cnt -transport.use_negf = 1 - -cnt.type = CNT -cnt.type_id = m_index n_index -cnt.acc = bond_length -cnt.gamma = 2.5 -cnt.num_unitcells = N_unitcells -cnt.offset = 0 0 0 - -cnt.contact_potential = 0 1 -cnt.impose_potential = 1 -cnt.potential_profile_type = constant - -cnt.E_f = -1 -cnt.E_valence_min = -10 -cnt.E_pole_max = 3 -###################################### From 8483b6549e3b651799190fed0bdff804580879f1 Mon Sep 17 00:00:00 2001 From: PeculiarOvertones Date: Thu, 14 Nov 2024 17:59:09 -0800 Subject: [PATCH 2/2] spell correction --- input/negf/validation_studies/all_around_metal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/input/negf/validation_studies/all_around_metal b/input/negf/validation_studies/all_around_metal index 55e6959..f059bed 100644 --- a/input/negf/validation_studies/all_around_metal +++ b/input/negf/validation_studies/all_around_metal @@ -1,7 +1,7 @@ ############################################################### # Description: # This script models a (17, 0) carbon nanotube surrounded by a -# contant metal (Pd). Electrostatic potential is imposed +# constant metal (Pd). Electrostatic potential is imposed # on the metal as "Gate.surf_soln_function" from GV_min=0V # to GV_max=1V. At each step, charge density on the nanotube # varies until self-consistency is achieved with respect to the