| def my_LDOSCalculator(oList): |
| |
| |
| |
| basis_set = [ |
| LDABasis.Carbon_SingleZetaPolarized, |
| LDABasis.Boron_SingleZetaPolarized, |
| LDABasis.Hydrogen_SingleZetaPolarized, |
| LDABasis.Nitrogen_SingleZetaPolarized, |
| ] |
| |
| device_algorithm_parameters = DeviceAlgorithmParameters( |
| initial_density_type=EquivalentBulk(electrode_constraint_length=10.0 * Ang), |
| ) |
| |
| poisson_solver1 = MultigridSolver( |
| boundary_conditions=[NeumannBoundaryCondition, |
| DirichletBoundaryCondition, |
| PeriodicBoundaryCondition] |
| ) |
| |
| poisson_solver2 = MultigridSolver( |
| boundary_conditions=[NeumannBoundaryCondition, |
| DirichletBoundaryCondition, |
| DirichletBoundaryCondition] |
| ) |
| |
| |
| #---------------------------------------- |
| |
| |
| left_electrode_calculator = LCAOCalculator( |
| basis_set=basis_set, |
| numerical_accuracy_parameters=oList["numerical_accuracy_parameters"], |
| iteration_control_parameters=oList["iteration_control_parameters"], |
| poisson_solver=poisson_solver1) |
| |
| right_electrode_calculator = LCAOCalculator( |
| basis_set=basis_set, |
| numerical_accuracy_parameters=oList["numerical_accuracy_parameters"], |
| iteration_control_parameters=oList["iteration_control_parameters"], |
| poisson_solver=poisson_solver1) |
| |
| #---------------------------------------- |
| |
| |
| calculator = DeviceLCAOCalculator( |
| basis_set=basis_set, |
| numerical_accuracy_parameters=oList["numerical_accuracy_parameters"], |
| iteration_control_parameters=oList["iteration_control_parameters"], |
| device_algorithm_parameters=device_algorithm_parameters, |
| electrode_calculators=[left_electrode_calculator, right_electrode_calculator], |
| poisson_solver=poisson_solver2) |
| |
| return calculator |
| |