From c0311bb9f5a4fc75a649012751284ace57f787d8 Mon Sep 17 00:00:00 2001 From: dsambit Date: Sat, 20 Apr 2024 16:16:18 +0000 Subject: [PATCH] deploy: e7e9774b64019bdddf2c4649f043fc6fceb095c0 --- .nojekyll | 0 ...m_centered_spherical_function_base_8h.html | 106 + ...red_spherical_function_base_8h_source.html | 188 + ...centered_spherical_function_bessel_8h.html | 109 + ...d_spherical_function_bessel_8h_source.html | 173 + ...tered_spherical_function_container_8h.html | 113 + ...pherical_function_container_8h_source.html | 383 + ...rical_function_core_density_spline_8h.html | 116 + ...unction_core_density_spline_8h_source.html | 161 + ...ntered_spherical_function_gaussian_8h.html | 109 + ...spherical_function_gaussian_8h_source.html | 168 + ...al_function_local_potential_spline_8h.html | 116 + ...tion_local_potential_spline_8h_source.html | 163 + ...pherical_function_projector_spline_8h.html | 116 + ...l_function_projector_spline_8h_source.html | 168 + ...m_centered_spherical_function_sinc_8h.html | 110 + ...red_spherical_function_sinc_8h_source.html | 168 + ...centered_spherical_function_spline_8h.html | 116 + ...d_spherical_function_spline_8h_source.html | 166 + ...al_function_valence_density_spline_8h.html | 116 + ...tion_valence_density_spline_8h_source.html | 161 + ...ntered_spherical_function_z_over_r_8h.html | 111 + ...spherical_function_z_over_r_8h_source.html | 167 + _atom_pseudo_wavefunctions_8h.html | 121 + _atom_pseudo_wavefunctions_8h_source.html | 182 + _atomic_centered_non_local_operator_8h.html | 130 + ...centered_non_local_operator_8h_source.html | 683 + ..._non_local_operator_kernels_device_8h.html | 118 + ...cal_operator_kernels_device_8h_source.html | 179 + _b_f_g_s_non_linear_solver_8h.html | 107 + _b_f_g_s_non_linear_solver_8h_source.html | 365 + _b_l_a_s_wrapper_8h.html | 112 + _b_l_a_s_wrapper_8h_source.html | 1279 ++ _composite_data_8h.html | 108 + _composite_data_8h_source.html | 150 + _data_type_overloads_8h.html | 129 + _data_type_overloads_8h_source.html | 226 + _device_a_p_i_calls_8h.html | 90 + _device_a_p_i_calls_8h_source.html | 275 + _device_blas_wrapper_8h.html | 90 + _device_blas_wrapper_8h_source.html | 422 + _device_data_type_overloads_8cu_8h.html | 321 + ...ice_data_type_overloads_8cu_8h_source.html | 1048 ++ _device_data_type_overloads_8h.html | 90 + _device_data_type_overloads_8h_source.html | 126 + _device_data_type_overloads_8hip_8h.html | 322 + ...ce_data_type_overloads_8hip_8h_source.html | 917 ++ _device_exceptions_8cu_8h.html | 159 + _device_exceptions_8cu_8h_source.html | 147 + _device_exceptions_8hip_8h.html | 159 + _device_exceptions_8hip_8h_source.html | 147 + _device_kernel_launcher_constants_8h.html | 90 + ...e_kernel_launcher_constants_8h_source.html | 146 + _device_type_config_8cu_8h.html | 138 + _device_type_config_8cu_8h_source.html | 158 + _device_type_config_8h.html | 90 + _device_type_config_8h_source.html | 126 + _device_type_config_8hip_8h.html | 115 + _device_type_config_8hip_8h_source.html | 154 + _exceptions_8h.html | 221 + _exceptions_8h_source.html | 254 + _f_e_basis_operations_8h.html | 140 + _f_e_basis_operations_8h_source.html | 1345 ++ ..._basis_operations_kernels_internal_8h.html | 122 + ...operations_kernels_internal_8h_source.html | 196 + _formulas.tex | 123 + _formulas_dark.tex | 125 + _kohn_sham_hamiltonian_operator_8h.html | 112 + ...n_sham_hamiltonian_operator_8h_source.html | 435 + _l_b_f_g_s_non_linear_solver_8h.html | 107 + _l_b_f_g_s_non_linear_solver_8h_source.html | 364 + _m_d_i_engine_8h.html | 90 + _m_d_i_engine_8h_source.html | 244 + _m_p_i_communicator_p2_p_8h.html | 133 + _m_p_i_communicator_p2_p_8h_source.html | 329 + _m_p_i_communicator_p2_p_kernels_8h.html | 110 + ...i_communicator_p2_p_kernels_8h_source.html | 249 + _m_p_i_pattern_p2_p_8h.html | 115 + _m_p_i_pattern_p2_p_8h_source.html | 535 + _m_p_i_requesters_base_8h.html | 110 + _m_p_i_requesters_base_8h_source.html | 167 + _m_p_i_requesters_n_b_x_8h.html | 114 + _m_p_i_requesters_n_b_x_8h_source.html | 389 + _m_p_i_tags_8h.html | 120 + _m_p_i_tags_8h_source.html | 153 + _m_p_i_write_on_file_8h.html | 110 + _m_p_i_write_on_file_8h_source.html | 142 + _memory_manager_8h.html | 111 + _memory_manager_8h_source.html | 189 + _memory_space_type_8h.html | 109 + _memory_space_type_8h_source.html | 141 + _memory_storage_8h.html | 118 + _memory_storage_8h_source.html | 658 + _memory_transfer_8h.html | 111 + _memory_transfer_8h_source.html | 241 + _memory_transfer_kernels_device_8h.html | 90 + ...ory_transfer_kernels_device_8h_source.html | 154 + _multi_vector_8h.html | 121 + _multi_vector_8h_source.html | 698 + _n_n_g_g_a_8h.html | 90 + _n_n_g_g_a_8h_source.html | 138 + _n_n_l_d_a_8h.html | 90 + _n_n_l_d_a_8h_source.html | 133 + _optimized_index_set_8h.html | 110 + _optimized_index_set_8h_source.html | 195 + _periodic_table_8h.html | 118 + _periodic_table_8h_source.html | 198 + _quad_data_composite_write_8h.html | 109 + _quad_data_composite_write_8h_source.html | 138 + _r_e_a_d_m_e_8md.html | 84 + _type_config_8h.html | 106 + _type_config_8h_source.html | 104 + annotated.html | 177 + bc_s.png | Bin 0 -> 676 bytes bc_sd.png | Bin 0 -> 635 bytes cg_p_r_p_non_linear_solver_8h.html | 106 + cg_p_r_p_non_linear_solver_8h_source.html | 429 + ...onalized_subspace_iteration_solver_8h.html | 109 + ...d_subspace_iteration_solver_8h_source.html | 245 + ...d_subspace_iteration_solver_device_8h.html | 90 + ...ace_iteration_solver_device_8h_source.html | 260 + ...tered_spherical_function_base-members.html | 100 + ...atom_centered_spherical_function_base.html | 366 + ..._atom_centered_spherical_function_base.png | Bin 0 -> 5104 bytes ...red_spherical_function_bessel-members.html | 106 + ...om_centered_spherical_function_bessel.html | 365 + ...tom_centered_spherical_function_bessel.png | Bin 0 -> 984 bytes ..._spherical_function_container-members.html | 125 + ...centered_spherical_function_container.html | 955 ++ ..._function_core_density_spline-members.html | 104 + ...pherical_function_core_density_spline.html | 187 + ...spherical_function_core_density_spline.png | Bin 0 -> 1809 bytes ...d_spherical_function_gaussian-members.html | 106 + ..._centered_spherical_function_gaussian.html | 355 + ...m_centered_spherical_function_gaussian.png | Bin 0 -> 1127 bytes ...nction_local_potential_spline-members.html | 104 + ...rical_function_local_potential_spline.html | 193 + ...erical_function_local_potential_spline.png | Bin 0 -> 1796 bytes ...cal_function_projector_spline-members.html | 104 + ...d_spherical_function_projector_spline.html | 211 + ...ed_spherical_function_projector_spline.png | Bin 0 -> 1766 bytes ...tered_spherical_function_sinc-members.html | 106 + ...atom_centered_spherical_function_sinc.html | 355 + ..._atom_centered_spherical_function_sinc.png | Bin 0 -> 970 bytes ...red_spherical_function_spline-members.html | 103 + ...om_centered_spherical_function_spline.html | 284 + ...tom_centered_spherical_function_spline.png | Bin 0 -> 3408 bytes ...nction_valence_density_spline-members.html | 104 + ...rical_function_valence_density_spline.html | 187 + ...erical_function_valence_density_spline.png | Bin 0 -> 1853 bytes ...d_spherical_function_z_over_r-members.html | 104 + ..._centered_spherical_function_z_over_r.html | 311 + ...m_centered_spherical_function_z_over_r.png | Bin 0 -> 1097 bytes ...1_1_atom_pseudo_wavefunctions-members.html | 106 + classdftfe_1_1_atom_pseudo_wavefunctions.html | 343 + classdftfe_1_1_atom_pseudo_wavefunctions.png | Bin 0 -> 915 bytes ...c_centered_non_local_operator-members.html | 170 + ..._1_atomic_centered_non_local_operator.html | 2287 +++ ...1_1_b_f_g_s_non_linear_solver-members.html | 147 + classdftfe_1_1_b_f_g_s_non_linear_solver.html | 1351 ++ classdftfe_1_1_b_f_g_s_non_linear_solver.png | Bin 0 -> 704 bytes ...ohn_sham_hamiltonian_operator-members.html | 150 + ...fe_1_1_kohn_sham_hamiltonian_operator.html | 1870 +++ ...tfe_1_1_kohn_sham_hamiltonian_operator.png | Bin 0 -> 1175 bytes ...1_l_b_f_g_s_non_linear_solver-members.html | 147 + ...dftfe_1_1_l_b_f_g_s_non_linear_solver.html | 1351 ++ ...sdftfe_1_1_l_b_f_g_s_non_linear_solver.png | Bin 0 -> 715 bytes classdftfe_1_1_mixing_scheme-members.html | 121 + classdftfe_1_1_mixing_scheme.html | 904 ++ classdftfe_1_1_process_grid-members.html | 112 + classdftfe_1_1_process_grid.html | 696 + ...fe_1_1_sca_l_a_p_a_c_k_matrix-members.html | 154 + classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html | 2050 +++ ...asis_1_1_f_e_basis_operations-members.html | 232 + ...tfe_1_1basis_1_1_f_e_basis_operations.html | 3643 +++++ ...1_1cg_p_r_p_non_linear_solver-members.html | 149 + classdftfe_1_1cg_p_r_p_non_linear_solver.html | 1475 ++ classdftfe_1_1cg_p_r_p_non_linear_solver.png | Bin 0 -> 734 bytes ...zed_subspace_iteration_solver-members.html | 106 + ...hogonalized_subspace_iteration_solver.html | 542 + ...thogonalized_subspace_iteration_solver.png | Bin 0 -> 1091 bytes ...dftfe_1_1dealii_linear_solver-members.html | 106 + classdftfe_1_1dealii_linear_solver.html | 474 + classdftfe_1_1dealii_linear_solver.png | Bin 0 -> 665 bytes ...1dealii_linear_solver_problem-members.html | 101 + ...dftfe_1_1dealii_linear_solver_problem.html | 444 + ...sdftfe_1_1dealii_linear_solver_problem.png | Bin 0 -> 1582 bytes classdftfe_1_1dft_base-members.html | 121 + classdftfe_1_1dft_base.html | 1078 ++ classdftfe_1_1dft_base.png | Bin 0 -> 1026 bytes classdftfe_1_1dft_class-members.html | 457 + classdftfe_1_1dft_class.html | 11010 +++++++++++++ classdftfe_1_1dft_class.png | Bin 0 -> 1016 bytes classdftfe_1_1dft_parameters-members.html | 279 + classdftfe_1_1dft_parameters.html | 3166 ++++ ...1dft_utils_1_1_composite_data-members.html | 95 + ...dftfe_1_1dft_utils_1_1_composite_data.html | 225 + ...sdftfe_1_1dft_utils_1_1_composite_data.png | Bin 0 -> 888 bytes ...utils_1_1_m_p_i_write_on_file-members.html | 92 + ..._1_1dft_utils_1_1_m_p_i_write_on_file.html | 137 + classdftfe_1_1dft_utils_1_1_pool-members.html | 96 + classdftfe_1_1dft_utils_1_1_pool.html | 229 + ...1_1_quad_data_composite_write-members.html | 98 + ...t_utils_1_1_quad_data_composite_write.html | 273 + ...ft_utils_1_1_quad_data_composite_write.png | Bin 0 -> 883 bytes ...ils_1_1constraint_matrix_info-members.html | 112 + ..._1dft_utils_1_1constraint_matrix_info.html | 646 + classdftfe_1_1dftfe_wrapper-members.html | 127 + classdftfe_1_1dftfe_wrapper.html | 1304 ++ ...ftfe_1_1dispersion_correction-members.html | 110 + classdftfe_1_1dispersion_correction.html | 600 + classdftfe_1_1eigen_solver_class-members.html | 95 + classdftfe_1_1eigen_solver_class.html | 265 + classdftfe_1_1eigen_solver_class.png | Bin 0 -> 1099 bytes classdftfe_1_1elpa_scala_manager-members.html | 109 + classdftfe_1_1elpa_scala_manager.html | 505 + classdftfe_1_1energy_calculator-members.html | 102 + classdftfe_1_1energy_calculator.html | 716 + ...tfe_1_1exc_density_base_class-members.html | 98 + classdftfe_1_1exc_density_base_class.html | 332 + classdftfe_1_1exc_density_base_class.png | Bin 0 -> 1060 bytes ...fe_1_1exc_density_g_g_a_class-members.html | 104 + classdftfe_1_1exc_density_g_g_a_class.html | 440 + classdftfe_1_1exc_density_g_g_a_class.png | Bin 0 -> 784 bytes ...fe_1_1exc_density_l_d_a_class-members.html | 104 + classdftfe_1_1exc_density_l_d_a_class.html | 440 + classdftfe_1_1exc_density_l_d_a_class.png | Bin 0 -> 775 bytes classdftfe_1_1exc_manager-members.html | 105 + classdftfe_1_1exc_manager.html | 431 + ..._1exc_wavefunction_base_class-members.html | 99 + ...sdftfe_1_1exc_wavefunction_base_class.html | 316 + classdftfe_1_1exc_wavefunction_base_class.png | Bin 0 -> 832 bytes ..._1exc_wavefunction_none_class-members.html | 100 + ...sdftfe_1_1exc_wavefunction_none_class.html | 232 + classdftfe_1_1exc_wavefunction_none_class.png | Bin 0 -> 827 bytes classdftfe_1_1force_class-members.html | 176 + classdftfe_1_1force_class.html | 3704 +++++ classdftfe_1_1geo_opt_cell-members.html | 123 + classdftfe_1_1geo_opt_cell.html | 982 ++ classdftfe_1_1geo_opt_cell.png | Bin 0 -> 698 bytes classdftfe_1_1geo_opt_ion-members.html | 123 + classdftfe_1_1geo_opt_ion.html | 983 ++ classdftfe_1_1geo_opt_ion.png | Bin 0 -> 694 bytes ..._1geometry_optimization_class-members.html | 106 + ...sdftfe_1_1geometry_optimization_class.html | 493 + ...ftfe_1_1kerker_solver_problem-members.html | 121 + classdftfe_1_1kerker_solver_problem.html | 1035 ++ classdftfe_1_1kerker_solver_problem.png | Bin 0 -> 1029 bytes ...1_1linear_algebra_1_1_b_l_a_s_wrapper.html | 91 + ...memory_space_1_1_h_o_s_t_01_4-members.html | 137 + ...ils_1_1_memory_space_1_1_h_o_s_t_01_4.html | 2646 ++++ ...near_algebra_1_1_multi_vector-members.html | 152 + ...fe_1_1linear_algebra_1_1_multi_vector.html | 1795 +++ classdftfe_1_1linear_solver-members.html | 93 + classdftfe_1_1linear_solver.html | 199 + classdftfe_1_1linear_solver.png | Bin 0 -> 665 bytes ...esh_movement_affine_transform-members.html | 122 + ...tfe_1_1mesh_movement_affine_transform.html | 350 + ...ftfe_1_1mesh_movement_affine_transform.png | Bin 0 -> 815 bytes ...sdftfe_1_1mesh_movement_class-members.html | 117 + classdftfe_1_1mesh_movement_class.html | 831 + classdftfe_1_1mesh_movement_class.png | Bin 0 -> 1163 bytes ...1mesh_movement_gaussian_class-members.html | 123 + ...dftfe_1_1mesh_movement_gaussian_class.html | 447 + ...sdftfe_1_1mesh_movement_gaussian_class.png | Bin 0 -> 811 bytes ...e_1_1molecular_dynamics_class-members.html | 140 + classdftfe_1_1molecular_dynamics_class.html | 1823 +++ classdftfe_1_1non_linear_solver-members.html | 107 + classdftfe_1_1non_linear_solver.html | 486 + classdftfe_1_1non_linear_solver.png | Bin 0 -> 1258 bytes ...e_1_1nonlinear_solver_problem-members.html | 103 + classdftfe_1_1nonlinear_solver_problem.html | 532 + classdftfe_1_1nonlinear_solver_problem.png | Bin 0 -> 1355 bytes ..._1_1nudged_elastic_band_class-members.html | 157 + classdftfe_1_1nudged_elastic_band_class.html | 1960 +++ classdftfe_1_1nudged_elastic_band_class.png | Bin 0 -> 783 bytes classdftfe_1_1oncv_class-members.html | 153 + classdftfe_1_1oncv_class.html | 1903 +++ ...dftfe_1_1operator_d_f_t_class-members.html | 104 + classdftfe_1_1operator_d_f_t_class.html | 588 + classdftfe_1_1operator_d_f_t_class.png | Bin 0 -> 1182 bytes ...tfe_1_1poisson_solver_problem-members.html | 138 + classdftfe_1_1poisson_solver_problem.html | 1571 ++ classdftfe_1_1poisson_solver_problem.png | Bin 0 -> 1131 bytes ...eudo_utils_1_1_periodic_table-members.html | 101 + ...fe_1_1pseudo_utils_1_1_periodic_table.html | 307 + classdftfe_1_1run_parameters-members.html | 114 + classdftfe_1_1run_parameters.html | 511 + classdftfe_1_1symmetry_class-members.html | 144 + classdftfe_1_1symmetry_class.html | 1504 ++ ...ftfe_1_1triangulation_manager-members.html | 133 + classdftfe_1_1triangulation_manager.html | 1399 ++ ...p_i_communicator_p2_p_kernels-members.html | 95 + ...s_1_1_m_p_i_communicator_p2_p_kernels.html | 316 + ...e_1_1utils_1_1_memory_manager-members.html | 94 + classdftfe_1_1utils_1_1_memory_manager.html | 201 + ...memory_space_1_1_h_o_s_t_01_4-members.html | 94 + ...e_00_01_memory_space_1_1_h_o_s_t_01_4.html | 201 + ...e_1_1utils_1_1_memory_storage-members.html | 131 + classdftfe_1_1utils_1_1_memory_storage.html | 1504 ++ ..._1_1utils_1_1_memory_transfer-members.html | 92 + classdftfe_1_1utils_1_1_memory_transfer.html | 153 + ...memory_space_1_1_h_o_s_t_01_4-members.html | 92 + ...t_00_01_memory_space_1_1_h_o_s_t_01_4.html | 140 + ...utils_1_1_optimized_index_set-members.html | 99 + ...ftfe_1_1utils_1_1_optimized_index_set.html | 332 + ...i_1_1_m_p_i_communicator_p2_p-members.html | 117 + ...ls_1_1mpi_1_1_m_p_i_communicator_p2_p.html | 753 + ...1_1mpi_1_1_m_p_i_pattern_p2_p-members.html | 139 + ..._1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html | 1334 ++ ...mpi_1_1_m_p_i_requesters_base-members.html | 93 + ...tils_1_1mpi_1_1_m_p_i_requesters_base.html | 167 + ...utils_1_1mpi_1_1_m_p_i_requesters_base.png | Bin 0 -> 886 bytes ...pi_1_1_m_p_i_requesters_n_b_x-members.html | 111 + ...ils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html | 616 + ...tils_1_1mpi_1_1_m_p_i_requesters_n_b_x.png | Bin 0 -> 880 bytes classdftfe_1_1vself_bins_manager-members.html | 132 + classdftfe_1_1vself_bins_manager.html | 1476 ++ classes.html | 141 + clipboard.js | 61 + closed.png | Bin 0 -> 132 bytes constants_8h.html | 156 + constants_8h_source.html | 306 + constraint_matrix_info_8h.html | 110 + constraint_matrix_info_8h_source.html | 283 + constraint_matrix_info_device_8h.html | 90 + constraint_matrix_info_device_8h_source.html | 277 + cookie.js | 58 + dealii_linear_solver_8h.html | 127 + dealii_linear_solver_8h_source.html | 202 + dealii_linear_solver_problem_8h.html | 106 + dealii_linear_solver_problem_8h_source.html | 209 + density_calculator_8h.html | 111 + density_calculator_8h_source.html | 213 + ...ty_first_order_response_calculator_8h.html | 112 + ...t_order_response_calculator_8h_source.html | 210 + device_direct_c_c_l_wrapper_8h.html | 90 + device_direct_c_c_l_wrapper_8h_source.html | 299 + device_kernels_generic_8h.html | 90 + device_kernels_generic_8h_source.html | 284 + dft_8h.html | 137 + dft_8h_source.html | 2204 +++ dft_base_8h.html | 109 + dft_base_8h_source.html | 333 + dft_parameters_8h.html | 107 + dft_parameters_8h_source.html | 516 + dft_utils_8h.html | 160 + dft_utils_8h_source.html | 444 + dftd_8h.html | 128 + dftd_8h_source.html | 221 + dftfe_data_types_8h.html | 145 + dftfe_data_types_8h_source.html | 238 + dftfe_wrapper_8h.html | 108 + dftfe_wrapper_8h_source.html | 526 + dir_3e0e28f287a7eabeca6cb1997599e376.html | 94 + dir_7d1659e50fc771a7918f965a6f1404ad.html | 352 + dir_a5be7bbed3ff2f129951759fe96bf5d5.html | 96 + doc.svg | 12 + docd.svg | 12 + doxygen.css | 2225 +++ doxygen.svg | 28 + doxygen_crawl.html | 647 + dynsections.js | 194 + eigen_solver_8h.html | 107 + eigen_solver_8h_source.html | 179 + elpa_scala_manager_8h.html | 110 + elpa_scala_manager_8h_source.html | 277 + energy_calculator_8h.html | 110 + energy_calculator_8h_source.html | 353 + eshelby_tensor_8h.html | 132 + eshelby_tensor_8h_source.html | 242 + eshelby_tensor_spin_polarized_8h.html | 113 + eshelby_tensor_spin_polarized_8h_source.html | 187 + exc_density_base_class_8h.html | 130 + exc_density_base_class_8h_source.html | 224 + exc_density_g_g_a_class_8h.html | 105 + exc_density_g_g_a_class_8h_source.html | 190 + exc_density_l_d_a_class_8h.html | 106 + exc_density_l_d_a_class_8h_source.html | 192 + exc_density_positivity_check_types_8h.html | 107 + ...sity_positivity_check_types_8h_source.html | 112 + exc_manager_8h.html | 107 + exc_manager_8h_source.html | 202 + exc_wavefunction_base_class_8h.html | 113 + exc_wavefunction_base_class_8h_source.html | 165 + exc_wavefunction_none_class_8h.html | 105 + exc_wavefunction_none_class_8h_source.html | 144 + file_readers_8h.html | 138 + file_readers_8h_source.html | 205 + files.html | 221 + folderclosed.svg | 11 + folderclosedd.svg | 11 + folderopen.svg | 17 + folderopend.svg | 12 + force_8h.html | 113 + force_8h_source.html | 1172 ++ force_wfc_contractions_8h.html | 113 + force_wfc_contractions_8h_source.html | 176 + force_wfc_contractions_device_kernels_8h.html | 90 + ...contractions_device_kernels_8h_source.html | 159 + functions.html | 148 + functions_b.html | 94 + functions_c.html | 259 + functions_d.html | 793 + functions_e.html | 107 + functions_enum.html | 85 + functions_eval.html | 90 + functions_f.html | 116 + functions_func.html | 130 + functions_func_b.html | 88 + functions_func_c.html | 233 + functions_func_d.html | 105 + functions_func_e.html | 103 + functions_func_f.html | 100 + functions_func_g.html | 256 + functions_func_h.html | 90 + functions_func_i.html | 148 + functions_func_j.html | 87 + functions_func_k.html | 90 + functions_func_l.html | 112 + functions_func_m.html | 118 + functions_func_n.html | 104 + functions_func_o.html | 93 + functions_func_p.html | 99 + functions_func_q.html | 87 + functions_func_r.html | 111 + functions_func_s.html | 134 + functions_func_t.html | 93 + functions_func_u.html | 100 + functions_func_v.html | 89 + functions_func_w.html | 95 + functions_func_x.html | 95 + functions_func_z.html | 93 + functions_func_~.html | 111 + functions_g.html | 266 + functions_h.html | 94 + functions_i.html | 164 + functions_j.html | 87 + functions_k.html | 97 + functions_l.html | 124 + functions_m.html | 162 + functions_n.html | 136 + functions_o.html | 105 + functions_p.html | 113 + functions_q.html | 87 + functions_r.html | 139 + functions_rela.html | 87 + functions_s.html | 169 + functions_t.html | 116 + functions_type.html | 95 + functions_u.html | 119 + functions_v.html | 93 + functions_vars.html | 103 + functions_vars_b.html | 91 + functions_vars_c.html | 107 + functions_vars_d.html | 771 + functions_vars_e.html | 89 + functions_vars_f.html | 99 + functions_vars_g.html | 93 + functions_vars_h.html | 89 + functions_vars_i.html | 100 + functions_vars_k.html | 92 + functions_vars_l.html | 96 + functions_vars_m.html | 129 + functions_vars_n.html | 117 + functions_vars_o.html | 97 + functions_vars_p.html | 98 + functions_vars_r.html | 110 + functions_vars_s.html | 115 + functions_vars_t.html | 107 + functions_vars_u.html | 104 + functions_vars_v.html | 88 + functions_vars_w.html | 97 + functions_vars_x.html | 88 + functions_vars_z.html | 88 + functions_w.html | 107 + functions_x.html | 98 + functions_z.html | 95 + functions_~.html | 111 + geo_opt_cell_8h.html | 110 + geo_opt_cell_8h_source.html | 301 + geo_opt_ion_8h.html | 110 + geo_opt_ion_8h_source.html | 292 + geometry_optimization_class_8h.html | 110 + geometry_optimization_class_8h_source.html | 200 + globals.html | 91 + globals_defs.html | 91 + headers_8h.html | 108 + headers_8h_source.html | 215 + hierarchy.html | 183 + index.html | 141 + jquery.js | 34 + kerker_solver_problem_8h.html | 108 + kerker_solver_problem_8h_source.html | 335 + kerker_solver_problem_device_8h.html | 90 + kerker_solver_problem_device_8h_source.html | 356 + lapack__support_8h.html | 177 + lapack__support_8h_source.html | 372 + library_m_d_i_8h.html | 90 + library_m_d_i_8h_source.html | 135 + linear_algebra_operations_8h.html | 183 + linear_algebra_operations_8h_source.html | 1056 ++ linear_algebra_operations_device_8h.html | 90 + ...r_algebra_operations_device_8h_source.html | 543 + linear_algebra_operations_internal_8h.html | 168 + ...algebra_operations_internal_8h_source.html | 421 + linear_solver_8h.html | 106 + linear_solver_8h_source.html | 161 + linear_solver_c_g_device_8h.html | 90 + linear_solver_c_g_device_8h_source.html | 221 + linear_solver_device_8h.html | 90 + linear_solver_device_8h_source.html | 157 + linear_solver_problem_device_8h.html | 90 + linear_solver_problem_device_8h_source.html | 192 + menu.js | 134 + menudata.js | 118 + mesh_gen_utils_8h.html | 118 + mesh_gen_utils_8h_source.html | 392 + mesh_movement_8h.html | 108 + mesh_movement_8h_source.html | 269 + mesh_movement_affine_transform_8h.html | 106 + mesh_movement_affine_transform_8h_source.html | 178 + mesh_movement_gaussian_8h.html | 106 + mesh_movement_gaussian_8h_source.html | 213 + minus.svg | 8 + minusd.svg | 8 + mixing_class_8h.html | 119 + mixing_class_8h_source.html | 320 + molecular_dynamics_class_8h.html | 110 + molecular_dynamics_class_8h_source.html | 627 + namespacedftfe.html | 13202 ++++++++++++++++ ...red_non_local_operator_kernels_device.html | 233 + namespacedftfe_1_1_l_a_p_a_c_k_support.html | 625 + namespacedftfe_1_1basis.html | 271 + ...f_e_basis_operations_kernels_internal.html | 285 + namespacedftfe_1_1data_types.html | 466 + namespacedftfe_1_1dft_utils.html | 1018 ++ namespacedftfe_1_1eshelby_tensor.html | 349 + namespacedftfe_1_1eshelby_tensor_s_p.html | 199 + namespacedftfe_1_1force.html | 231 + namespacedftfe_1_1linear_algebra.html | 137 + ...acedftfe_1_1linear_algebra_operations.html | 1171 ++ ...linear_algebra_operations_1_1internal.html | 870 + namespacedftfe_1_1mesh_gen_utils.html | 296 + namespacedftfe_1_1pseudo_utils.html | 631 + ...pacedftfe_1_1spherical_harmonic_utils.html | 218 + namespacedftfe_1_1types.html | 112 + namespacedftfe_1_1utils.html | 4483 ++++++ namespacedftfe_1_1utils_1_1mpi.html | 215 + namespacedftfe_1_1vector_tools.html | 675 + namespacemembers.html | 89 + namespacemembers_b.html | 87 + namespacemembers_c.html | 157 + namespacemembers_d.html | 111 + namespacemembers_e.html | 89 + namespacemembers_enum.html | 98 + namespacemembers_eval.html | 104 + namespacemembers_f.html | 88 + namespacemembers_func.html | 88 + namespacemembers_func_b.html | 86 + namespacemembers_func_c.html | 146 + namespacemembers_func_d.html | 92 + namespacemembers_func_e.html | 87 + namespacemembers_func_f.html | 87 + namespacemembers_func_g.html | 100 + namespacemembers_func_i.html | 92 + namespacemembers_func_l.html | 88 + namespacemembers_func_m.html | 92 + namespacemembers_func_n.html | 86 + namespacemembers_func_o.html | 89 + namespacemembers_func_p.html | 161 + namespacemembers_func_r.html | 98 + namespacemembers_func_s.html | 99 + namespacemembers_func_t.html | 87 + namespacemembers_func_v.html | 86 + namespacemembers_func_w.html | 88 + namespacemembers_func_x.html | 100 + namespacemembers_g.html | 102 + namespacemembers_h.html | 87 + namespacemembers_i.html | 95 + namespacemembers_l.html | 94 + namespacemembers_m.html | 96 + namespacemembers_n.html | 91 + namespacemembers_o.html | 93 + namespacemembers_p.html | 162 + namespacemembers_r.html | 100 + namespacemembers_s.html | 102 + namespacemembers_t.html | 88 + namespacemembers_type.html | 110 + namespacemembers_u.html | 97 + namespacemembers_v.html | 88 + namespacemembers_vars.html | 104 + namespacemembers_w.html | 89 + namespacemembers_x.html | 100 + namespacemembers_z.html | 86 + nav_f.png | Bin 0 -> 153 bytes nav_fd.png | Bin 0 -> 169 bytes nav_g.png | Bin 0 -> 95 bytes nav_h.png | Bin 0 -> 98 bytes nav_hd.png | Bin 0 -> 114 bytes non_linear_solver_8h.html | 106 + non_linear_solver_8h_source.html | 246 + nonlinear_solver_problem_8h.html | 106 + nonlinear_solver_problem_8h_source.html | 244 + nudged_elastic_band_class_8h.html | 120 + nudged_elastic_band_class_8h_source.html | 449 + oncv_class_8h.html | 146 + oncv_class_8h_source.html | 495 + open.png | Bin 0 -> 123 bytes operator_8h.html | 111 + operator_8h_source.html | 239 + plus.svg | 9 + plusd.svg | 9 + poisson_solver_problem_8h.html | 108 + poisson_solver_problem_8h_source.html | 439 + poisson_solver_problem_device_8h.html | 90 + poisson_solver_problem_device_8h_source.html | 449 + process__grid_8h.html | 105 + process__grid_8h_source.html | 382 + pseudo_converter_8h.html | 109 + pseudo_converter_8h_source.html | 146 + pseudo_potential_to_dftfe_converter_8cc.html | 137 + pseudo_utils_8h.html | 120 + pseudo_utils_8h_source.html | 322 + run_parameters_8h.html | 110 + run_parameters_8h_source.html | 196 + scalapack_8templates_8h.html | 427 + scalapack_8templates_8h_source.html | 3153 ++++ scalapack_wrapper_8h.html | 108 + scalapack_wrapper_8h_source.html | 1018 ++ search/all_0.js | 4 + search/all_1.js | 88 + search/all_10.js | 115 + search/all_11.js | 6 + search/all_12.js | 76 + search/all_13.js | 114 + search/all_14.js | 41 + search/all_15.js | 49 + search/all_16.js | 16 + search/all_17.js | 30 + search/all_18.js | 28 + search/all_19.js | 14 + search/all_1a.js | 29 + search/all_2.js | 18 + search/all_3.js | 257 + search/all_4.js | 799 + search/all_5.js | 44 + search/all_6.js | 47 + search/all_7.js | 207 + search/all_8.js | 18 + search/all_9.js | 95 + search/all_a.js | 5 + search/all_b.js | 18 + search/all_c.js | 63 + search/all_d.js | 139 + search/all_e.js | 68 + search/all_f.js | 37 + search/classes_0.js | 16 + search/classes_1.js | 6 + search/classes_10.js | 4 + search/classes_11.js | 4 + search/classes_2.js | 7 + search/classes_3.js | 10 + search/classes_4.js | 13 + search/classes_5.js | 5 + search/classes_6.js | 6 + search/classes_7.js | 5 + search/classes_8.js | 5 + search/classes_9.js | 32 + search/classes_a.js | 6 + search/classes_b.js | 7 + search/classes_c.js | 7 + search/classes_d.js | 4 + search/classes_e.js | 4 + search/classes_f.js | 8 + search/close.svg | 18 + search/defines_0.js | 9 + search/defines_1.js | 4 + search/defines_2.js | 4 + search/enums_0.js | 6 + search/enums_1.js | 4 + search/enums_2.js | 4 + search/enums_3.js | 4 + search/enums_4.js | 6 + search/enums_5.js | 4 + search/enums_6.js | 5 + search/enums_7.js | 5 + search/enums_8.js | 4 + search/enums_9.js | 4 + search/enums_a.js | 4 + search/enumvalues_0.js | 4 + search/enumvalues_1.js | 5 + search/enumvalues_2.js | 12 + search/enumvalues_3.js | 5 + search/enumvalues_4.js | 5 + search/enumvalues_5.js | 8 + search/enumvalues_6.js | 8 + search/enumvalues_7.js | 5 + search/enumvalues_8.js | 7 + search/enumvalues_9.js | 13 + search/enumvalues_a.js | 6 + search/enumvalues_b.js | 5 + search/enumvalues_c.js | 8 + search/enumvalues_d.js | 12 + search/enumvalues_e.js | 4 + search/files_0.js | 17 + search/files_1.js | 5 + search/files_10.js | 8 + search/files_11.js | 5 + search/files_12.js | 5 + search/files_2.js | 10 + search/files_3.js | 28 + search/files_4.js | 16 + search/files_5.js | 9 + search/files_6.js | 6 + search/files_7.js | 4 + search/files_8.js | 6 + search/files_9.js | 13 + search/files_a.js | 23 + search/files_b.js | 8 + search/files_c.js | 6 + search/files_d.js | 10 + search/files_e.js | 4 + search/files_f.js | 5 + search/functions_0.js | 50 + search/functions_1.js | 7 + search/functions_10.js | 5 + search/functions_11.js | 42 + search/functions_12.js | 66 + search/functions_13.js | 13 + search/functions_14.js | 18 + search/functions_15.js | 8 + search/functions_16.js | 16 + search/functions_17.js | 25 + search/functions_18.js | 11 + search/functions_19.js | 29 + search/functions_2.js | 212 + search/functions_3.js | 30 + search/functions_4.js | 23 + search/functions_5.js | 20 + search/functions_6.js | 189 + search/functions_7.js | 8 + search/functions_8.js | 73 + search/functions_9.js | 5 + search/functions_a.js | 8 + search/functions_b.js | 33 + search/functions_c.js | 42 + search/functions_d.js | 23 + search/functions_e.js | 15 + search/functions_f.js | 93 + search/mag.svg | 24 + search/mag_d.svg | 24 + search/mag_sel.svg | 31 + search/mag_seld.svg | 31 + search/namespaces_0.js | 23 + search/pages_0.js | 4 + search/pages_1.js | 5 + search/pages_2.js | 4 + search/pages_3.js | 6 + search/pages_4.js | 4 + search/pages_5.js | 4 + search/related_0.js | 5 + search/related_1.js | 4 + search/related_2.js | 4 + search/search.css | 291 + search/search.js | 694 + search/searchdata.js | 48 + search/typedefs_0.js | 4 + search/typedefs_1.js | 6 + search/typedefs_2.js | 15 + search/typedefs_3.js | 5 + search/typedefs_4.js | 5 + search/typedefs_5.js | 6 + search/typedefs_6.js | 7 + search/typedefs_7.js | 5 + search/typedefs_8.js | 4 + search/typedefs_9.js | 5 + search/typedefs_a.js | 6 + search/typedefs_b.js | 4 + search/typedefs_c.js | 4 + search/typedefs_d.js | 4 + search/variables_0.js | 22 + search/variables_1.js | 9 + search/variables_10.js | 33 + search/variables_11.js | 26 + search/variables_12.js | 23 + search/variables_13.js | 7 + search/variables_14.js | 15 + search/variables_15.js | 6 + search/variables_16.js | 7 + search/variables_2.js | 32 + search/variables_3.js | 693 + search/variables_4.js | 7 + search/variables_5.js | 17 + search/variables_6.js | 11 + search/variables_7.js | 7 + search/variables_8.js | 18 + search/variables_9.js | 10 + search/variables_a.js | 15 + search/variables_b.js | 47 + search/variables_c.js | 36 + search/variables_d.js | 17 + search/variables_e.js | 16 + search/variables_f.js | 28 + solve_vself_in_bins_device_8h.html | 90 + solve_vself_in_bins_device_8h_source.html | 184 + spherical_harmonic_utils_8h.html | 110 + spherical_harmonic_utils_8h_source.html | 196 + splitbar.png | Bin 0 -> 314 bytes splitbard.png | Bin 0 -> 282 bytes ...e_1_1pseudo_utils_1_1_element-members.html | 96 + structdftfe_1_1pseudo_utils_1_1_element.html | 211 + ...ls_1_1mpi_1_1single_prec_type-members.html | 92 + ...e_1_1utils_1_1mpi_1_1single_prec_type.html | 119 + ...gle_prec_type_3_01double_01_4-members.html | 92 + ...i_1_1single_prec_type_3_01double_01_4.html | 117 + ...1complex_3_01double_01_4_01_4-members.html | 92 + ...01std_1_1complex_3_01double_01_4_01_4.html | 117 + symmetry_8h.html | 114 + symmetry_8h_source.html | 308 + sync_off.png | Bin 0 -> 853 bytes sync_on.png | Bin 0 -> 845 bytes tab_a.png | Bin 0 -> 142 bytes tab_ad.png | Bin 0 -> 135 bytes tab_b.png | Bin 0 -> 169 bytes tab_bd.png | Bin 0 -> 173 bytes tab_h.png | Bin 0 -> 177 bytes tab_hd.png | Bin 0 -> 180 bytes tab_s.png | Bin 0 -> 184 bytes tab_sd.png | Bin 0 -> 188 bytes tabs.css | 1 + triangulation_manager_8h.html | 107 + triangulation_manager_8h_source.html | 475 + vector_utilities_8h.html | 141 + vector_utilities_8h_source.html | 550 + vself_bins_manager_8h.html | 109 + vself_bins_manager_8h_source.html | 523 + 837 files changed, 200725 insertions(+) create mode 100644 .nojekyll create mode 100644 _atom_centered_spherical_function_base_8h.html create mode 100644 _atom_centered_spherical_function_base_8h_source.html create mode 100644 _atom_centered_spherical_function_bessel_8h.html create mode 100644 _atom_centered_spherical_function_bessel_8h_source.html create mode 100644 _atom_centered_spherical_function_container_8h.html create mode 100644 _atom_centered_spherical_function_container_8h_source.html create mode 100644 _atom_centered_spherical_function_core_density_spline_8h.html create mode 100644 _atom_centered_spherical_function_core_density_spline_8h_source.html create mode 100644 _atom_centered_spherical_function_gaussian_8h.html create mode 100644 _atom_centered_spherical_function_gaussian_8h_source.html create mode 100644 _atom_centered_spherical_function_local_potential_spline_8h.html create mode 100644 _atom_centered_spherical_function_local_potential_spline_8h_source.html create mode 100644 _atom_centered_spherical_function_projector_spline_8h.html create mode 100644 _atom_centered_spherical_function_projector_spline_8h_source.html create mode 100644 _atom_centered_spherical_function_sinc_8h.html create mode 100644 _atom_centered_spherical_function_sinc_8h_source.html create mode 100644 _atom_centered_spherical_function_spline_8h.html create mode 100644 _atom_centered_spherical_function_spline_8h_source.html create mode 100644 _atom_centered_spherical_function_valence_density_spline_8h.html create mode 100644 _atom_centered_spherical_function_valence_density_spline_8h_source.html create mode 100644 _atom_centered_spherical_function_z_over_r_8h.html create mode 100644 _atom_centered_spherical_function_z_over_r_8h_source.html create mode 100644 _atom_pseudo_wavefunctions_8h.html create mode 100644 _atom_pseudo_wavefunctions_8h_source.html create mode 100644 _atomic_centered_non_local_operator_8h.html create mode 100644 _atomic_centered_non_local_operator_8h_source.html create mode 100644 _atomic_centered_non_local_operator_kernels_device_8h.html create mode 100644 _atomic_centered_non_local_operator_kernels_device_8h_source.html create mode 100644 _b_f_g_s_non_linear_solver_8h.html create mode 100644 _b_f_g_s_non_linear_solver_8h_source.html create mode 100644 _b_l_a_s_wrapper_8h.html create mode 100644 _b_l_a_s_wrapper_8h_source.html create mode 100644 _composite_data_8h.html create mode 100644 _composite_data_8h_source.html create mode 100644 _data_type_overloads_8h.html create mode 100644 _data_type_overloads_8h_source.html create mode 100644 _device_a_p_i_calls_8h.html create mode 100644 _device_a_p_i_calls_8h_source.html create mode 100644 _device_blas_wrapper_8h.html create mode 100644 _device_blas_wrapper_8h_source.html create mode 100644 _device_data_type_overloads_8cu_8h.html create mode 100644 _device_data_type_overloads_8cu_8h_source.html create mode 100644 _device_data_type_overloads_8h.html create mode 100644 _device_data_type_overloads_8h_source.html create mode 100644 _device_data_type_overloads_8hip_8h.html create mode 100644 _device_data_type_overloads_8hip_8h_source.html create mode 100644 _device_exceptions_8cu_8h.html create mode 100644 _device_exceptions_8cu_8h_source.html create mode 100644 _device_exceptions_8hip_8h.html create mode 100644 _device_exceptions_8hip_8h_source.html create mode 100644 _device_kernel_launcher_constants_8h.html create mode 100644 _device_kernel_launcher_constants_8h_source.html create mode 100644 _device_type_config_8cu_8h.html create mode 100644 _device_type_config_8cu_8h_source.html create mode 100644 _device_type_config_8h.html create mode 100644 _device_type_config_8h_source.html create mode 100644 _device_type_config_8hip_8h.html create mode 100644 _device_type_config_8hip_8h_source.html create mode 100644 _exceptions_8h.html create mode 100644 _exceptions_8h_source.html create mode 100644 _f_e_basis_operations_8h.html create mode 100644 _f_e_basis_operations_8h_source.html create mode 100644 _f_e_basis_operations_kernels_internal_8h.html create mode 100644 _f_e_basis_operations_kernels_internal_8h_source.html create mode 100644 _formulas.tex create mode 100644 _formulas_dark.tex create mode 100644 _kohn_sham_hamiltonian_operator_8h.html create mode 100644 _kohn_sham_hamiltonian_operator_8h_source.html create mode 100644 _l_b_f_g_s_non_linear_solver_8h.html create mode 100644 _l_b_f_g_s_non_linear_solver_8h_source.html create mode 100644 _m_d_i_engine_8h.html create mode 100644 _m_d_i_engine_8h_source.html create mode 100644 _m_p_i_communicator_p2_p_8h.html create mode 100644 _m_p_i_communicator_p2_p_8h_source.html create mode 100644 _m_p_i_communicator_p2_p_kernels_8h.html create mode 100644 _m_p_i_communicator_p2_p_kernels_8h_source.html create mode 100644 _m_p_i_pattern_p2_p_8h.html create mode 100644 _m_p_i_pattern_p2_p_8h_source.html create mode 100644 _m_p_i_requesters_base_8h.html create mode 100644 _m_p_i_requesters_base_8h_source.html create mode 100644 _m_p_i_requesters_n_b_x_8h.html create mode 100644 _m_p_i_requesters_n_b_x_8h_source.html create mode 100644 _m_p_i_tags_8h.html create mode 100644 _m_p_i_tags_8h_source.html create mode 100644 _m_p_i_write_on_file_8h.html create mode 100644 _m_p_i_write_on_file_8h_source.html create mode 100644 _memory_manager_8h.html create mode 100644 _memory_manager_8h_source.html create mode 100644 _memory_space_type_8h.html create mode 100644 _memory_space_type_8h_source.html create mode 100644 _memory_storage_8h.html create mode 100644 _memory_storage_8h_source.html create mode 100644 _memory_transfer_8h.html create mode 100644 _memory_transfer_8h_source.html create mode 100644 _memory_transfer_kernels_device_8h.html create mode 100644 _memory_transfer_kernels_device_8h_source.html create mode 100644 _multi_vector_8h.html create mode 100644 _multi_vector_8h_source.html create mode 100644 _n_n_g_g_a_8h.html create mode 100644 _n_n_g_g_a_8h_source.html create mode 100644 _n_n_l_d_a_8h.html create mode 100644 _n_n_l_d_a_8h_source.html create mode 100644 _optimized_index_set_8h.html create mode 100644 _optimized_index_set_8h_source.html create mode 100644 _periodic_table_8h.html create mode 100644 _periodic_table_8h_source.html create mode 100644 _quad_data_composite_write_8h.html create mode 100644 _quad_data_composite_write_8h_source.html create mode 100644 _r_e_a_d_m_e_8md.html create mode 100644 _type_config_8h.html create mode 100644 _type_config_8h_source.html create mode 100644 annotated.html create mode 100644 bc_s.png create mode 100644 bc_sd.png create mode 100644 cg_p_r_p_non_linear_solver_8h.html create mode 100644 cg_p_r_p_non_linear_solver_8h_source.html create mode 100644 chebyshev_orthogonalized_subspace_iteration_solver_8h.html create mode 100644 chebyshev_orthogonalized_subspace_iteration_solver_8h_source.html create mode 100644 chebyshev_orthogonalized_subspace_iteration_solver_device_8h.html create mode 100644 chebyshev_orthogonalized_subspace_iteration_solver_device_8h_source.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_base-members.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_base.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_base.png create mode 100644 classdftfe_1_1_atom_centered_spherical_function_bessel-members.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_bessel.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_bessel.png create mode 100644 classdftfe_1_1_atom_centered_spherical_function_container-members.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_container.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_core_density_spline-members.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_core_density_spline.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_core_density_spline.png create mode 100644 classdftfe_1_1_atom_centered_spherical_function_gaussian-members.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_gaussian.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_gaussian.png create mode 100644 classdftfe_1_1_atom_centered_spherical_function_local_potential_spline-members.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_local_potential_spline.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_local_potential_spline.png create mode 100644 classdftfe_1_1_atom_centered_spherical_function_projector_spline-members.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_projector_spline.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_projector_spline.png create mode 100644 classdftfe_1_1_atom_centered_spherical_function_sinc-members.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_sinc.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_sinc.png create mode 100644 classdftfe_1_1_atom_centered_spherical_function_spline-members.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_spline.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_spline.png create mode 100644 classdftfe_1_1_atom_centered_spherical_function_valence_density_spline-members.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_valence_density_spline.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_valence_density_spline.png create mode 100644 classdftfe_1_1_atom_centered_spherical_function_z_over_r-members.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_z_over_r.html create mode 100644 classdftfe_1_1_atom_centered_spherical_function_z_over_r.png create mode 100644 classdftfe_1_1_atom_pseudo_wavefunctions-members.html create mode 100644 classdftfe_1_1_atom_pseudo_wavefunctions.html create mode 100644 classdftfe_1_1_atom_pseudo_wavefunctions.png create mode 100644 classdftfe_1_1_atomic_centered_non_local_operator-members.html create mode 100644 classdftfe_1_1_atomic_centered_non_local_operator.html create mode 100644 classdftfe_1_1_b_f_g_s_non_linear_solver-members.html create mode 100644 classdftfe_1_1_b_f_g_s_non_linear_solver.html create mode 100644 classdftfe_1_1_b_f_g_s_non_linear_solver.png create mode 100644 classdftfe_1_1_kohn_sham_hamiltonian_operator-members.html create mode 100644 classdftfe_1_1_kohn_sham_hamiltonian_operator.html create mode 100644 classdftfe_1_1_kohn_sham_hamiltonian_operator.png create mode 100644 classdftfe_1_1_l_b_f_g_s_non_linear_solver-members.html create mode 100644 classdftfe_1_1_l_b_f_g_s_non_linear_solver.html create mode 100644 classdftfe_1_1_l_b_f_g_s_non_linear_solver.png create mode 100644 classdftfe_1_1_mixing_scheme-members.html create mode 100644 classdftfe_1_1_mixing_scheme.html create mode 100644 classdftfe_1_1_process_grid-members.html create mode 100644 classdftfe_1_1_process_grid.html create mode 100644 classdftfe_1_1_sca_l_a_p_a_c_k_matrix-members.html create mode 100644 classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html create mode 100644 classdftfe_1_1basis_1_1_f_e_basis_operations-members.html create mode 100644 classdftfe_1_1basis_1_1_f_e_basis_operations.html create mode 100644 classdftfe_1_1cg_p_r_p_non_linear_solver-members.html create mode 100644 classdftfe_1_1cg_p_r_p_non_linear_solver.html create mode 100644 classdftfe_1_1cg_p_r_p_non_linear_solver.png create mode 100644 classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver-members.html create mode 100644 classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html create mode 100644 classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.png create mode 100644 classdftfe_1_1dealii_linear_solver-members.html create mode 100644 classdftfe_1_1dealii_linear_solver.html create mode 100644 classdftfe_1_1dealii_linear_solver.png create mode 100644 classdftfe_1_1dealii_linear_solver_problem-members.html create mode 100644 classdftfe_1_1dealii_linear_solver_problem.html create mode 100644 classdftfe_1_1dealii_linear_solver_problem.png create mode 100644 classdftfe_1_1dft_base-members.html create mode 100644 classdftfe_1_1dft_base.html create mode 100644 classdftfe_1_1dft_base.png create mode 100644 classdftfe_1_1dft_class-members.html create mode 100644 classdftfe_1_1dft_class.html create mode 100644 classdftfe_1_1dft_class.png create mode 100644 classdftfe_1_1dft_parameters-members.html create mode 100644 classdftfe_1_1dft_parameters.html create mode 100644 classdftfe_1_1dft_utils_1_1_composite_data-members.html create mode 100644 classdftfe_1_1dft_utils_1_1_composite_data.html create mode 100644 classdftfe_1_1dft_utils_1_1_composite_data.png create mode 100644 classdftfe_1_1dft_utils_1_1_m_p_i_write_on_file-members.html create mode 100644 classdftfe_1_1dft_utils_1_1_m_p_i_write_on_file.html create mode 100644 classdftfe_1_1dft_utils_1_1_pool-members.html create mode 100644 classdftfe_1_1dft_utils_1_1_pool.html create mode 100644 classdftfe_1_1dft_utils_1_1_quad_data_composite_write-members.html create mode 100644 classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html create mode 100644 classdftfe_1_1dft_utils_1_1_quad_data_composite_write.png create mode 100644 classdftfe_1_1dft_utils_1_1constraint_matrix_info-members.html create mode 100644 classdftfe_1_1dft_utils_1_1constraint_matrix_info.html create mode 100644 classdftfe_1_1dftfe_wrapper-members.html create mode 100644 classdftfe_1_1dftfe_wrapper.html create mode 100644 classdftfe_1_1dispersion_correction-members.html create mode 100644 classdftfe_1_1dispersion_correction.html create mode 100644 classdftfe_1_1eigen_solver_class-members.html create mode 100644 classdftfe_1_1eigen_solver_class.html create mode 100644 classdftfe_1_1eigen_solver_class.png create mode 100644 classdftfe_1_1elpa_scala_manager-members.html create mode 100644 classdftfe_1_1elpa_scala_manager.html create mode 100644 classdftfe_1_1energy_calculator-members.html create mode 100644 classdftfe_1_1energy_calculator.html create mode 100644 classdftfe_1_1exc_density_base_class-members.html create mode 100644 classdftfe_1_1exc_density_base_class.html create mode 100644 classdftfe_1_1exc_density_base_class.png create mode 100644 classdftfe_1_1exc_density_g_g_a_class-members.html create mode 100644 classdftfe_1_1exc_density_g_g_a_class.html create mode 100644 classdftfe_1_1exc_density_g_g_a_class.png create mode 100644 classdftfe_1_1exc_density_l_d_a_class-members.html create mode 100644 classdftfe_1_1exc_density_l_d_a_class.html create mode 100644 classdftfe_1_1exc_density_l_d_a_class.png create mode 100644 classdftfe_1_1exc_manager-members.html create mode 100644 classdftfe_1_1exc_manager.html create mode 100644 classdftfe_1_1exc_wavefunction_base_class-members.html create mode 100644 classdftfe_1_1exc_wavefunction_base_class.html create mode 100644 classdftfe_1_1exc_wavefunction_base_class.png create mode 100644 classdftfe_1_1exc_wavefunction_none_class-members.html create mode 100644 classdftfe_1_1exc_wavefunction_none_class.html create mode 100644 classdftfe_1_1exc_wavefunction_none_class.png create mode 100644 classdftfe_1_1force_class-members.html create mode 100644 classdftfe_1_1force_class.html create mode 100644 classdftfe_1_1geo_opt_cell-members.html create mode 100644 classdftfe_1_1geo_opt_cell.html create mode 100644 classdftfe_1_1geo_opt_cell.png create mode 100644 classdftfe_1_1geo_opt_ion-members.html create mode 100644 classdftfe_1_1geo_opt_ion.html create mode 100644 classdftfe_1_1geo_opt_ion.png create mode 100644 classdftfe_1_1geometry_optimization_class-members.html create mode 100644 classdftfe_1_1geometry_optimization_class.html create mode 100644 classdftfe_1_1kerker_solver_problem-members.html create mode 100644 classdftfe_1_1kerker_solver_problem.html create mode 100644 classdftfe_1_1kerker_solver_problem.png create mode 100644 classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper.html create mode 100644 classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4-members.html create mode 100644 classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html create mode 100644 classdftfe_1_1linear_algebra_1_1_multi_vector-members.html create mode 100644 classdftfe_1_1linear_algebra_1_1_multi_vector.html create mode 100644 classdftfe_1_1linear_solver-members.html create mode 100644 classdftfe_1_1linear_solver.html create mode 100644 classdftfe_1_1linear_solver.png create mode 100644 classdftfe_1_1mesh_movement_affine_transform-members.html create mode 100644 classdftfe_1_1mesh_movement_affine_transform.html create mode 100644 classdftfe_1_1mesh_movement_affine_transform.png create mode 100644 classdftfe_1_1mesh_movement_class-members.html create mode 100644 classdftfe_1_1mesh_movement_class.html create mode 100644 classdftfe_1_1mesh_movement_class.png create mode 100644 classdftfe_1_1mesh_movement_gaussian_class-members.html create mode 100644 classdftfe_1_1mesh_movement_gaussian_class.html create mode 100644 classdftfe_1_1mesh_movement_gaussian_class.png create mode 100644 classdftfe_1_1molecular_dynamics_class-members.html create mode 100644 classdftfe_1_1molecular_dynamics_class.html create mode 100644 classdftfe_1_1non_linear_solver-members.html create mode 100644 classdftfe_1_1non_linear_solver.html create mode 100644 classdftfe_1_1non_linear_solver.png create mode 100644 classdftfe_1_1nonlinear_solver_problem-members.html create mode 100644 classdftfe_1_1nonlinear_solver_problem.html create mode 100644 classdftfe_1_1nonlinear_solver_problem.png create mode 100644 classdftfe_1_1nudged_elastic_band_class-members.html create mode 100644 classdftfe_1_1nudged_elastic_band_class.html create mode 100644 classdftfe_1_1nudged_elastic_band_class.png create mode 100644 classdftfe_1_1oncv_class-members.html create mode 100644 classdftfe_1_1oncv_class.html create mode 100644 classdftfe_1_1operator_d_f_t_class-members.html create mode 100644 classdftfe_1_1operator_d_f_t_class.html create mode 100644 classdftfe_1_1operator_d_f_t_class.png create mode 100644 classdftfe_1_1poisson_solver_problem-members.html create mode 100644 classdftfe_1_1poisson_solver_problem.html create mode 100644 classdftfe_1_1poisson_solver_problem.png create mode 100644 classdftfe_1_1pseudo_utils_1_1_periodic_table-members.html create mode 100644 classdftfe_1_1pseudo_utils_1_1_periodic_table.html create mode 100644 classdftfe_1_1run_parameters-members.html create mode 100644 classdftfe_1_1run_parameters.html create mode 100644 classdftfe_1_1symmetry_class-members.html create mode 100644 classdftfe_1_1symmetry_class.html create mode 100644 classdftfe_1_1triangulation_manager-members.html create mode 100644 classdftfe_1_1triangulation_manager.html create mode 100644 classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels-members.html create mode 100644 classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels.html create mode 100644 classdftfe_1_1utils_1_1_memory_manager-members.html create mode 100644 classdftfe_1_1utils_1_1_memory_manager.html create mode 100644 classdftfe_1_1utils_1_1_memory_manager_3_01_value_type_00_01_memory_space_1_1_h_o_s_t_01_4-members.html create mode 100644 classdftfe_1_1utils_1_1_memory_manager_3_01_value_type_00_01_memory_space_1_1_h_o_s_t_01_4.html create mode 100644 classdftfe_1_1utils_1_1_memory_storage-members.html create mode 100644 classdftfe_1_1utils_1_1_memory_storage.html create mode 100644 classdftfe_1_1utils_1_1_memory_transfer-members.html create mode 100644 classdftfe_1_1utils_1_1_memory_transfer.html create mode 100644 classdftfe_1_1utils_1_1_memory_transfer_3_01_memory_space_1_1_h_o_s_t_00_01_memory_space_1_1_h_o_s_t_01_4-members.html create mode 100644 classdftfe_1_1utils_1_1_memory_transfer_3_01_memory_space_1_1_h_o_s_t_00_01_memory_space_1_1_h_o_s_t_01_4.html create mode 100644 classdftfe_1_1utils_1_1_optimized_index_set-members.html create mode 100644 classdftfe_1_1utils_1_1_optimized_index_set.html create mode 100644 classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p-members.html create mode 100644 classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html create mode 100644 classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p-members.html create mode 100644 classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html create mode 100644 classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base-members.html create mode 100644 classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base.html create mode 100644 classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base.png create mode 100644 classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x-members.html create mode 100644 classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html create mode 100644 classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.png create mode 100644 classdftfe_1_1vself_bins_manager-members.html create mode 100644 classdftfe_1_1vself_bins_manager.html create mode 100644 classes.html create mode 100644 clipboard.js create mode 100644 closed.png create mode 100644 constants_8h.html create mode 100644 constants_8h_source.html create mode 100644 constraint_matrix_info_8h.html create mode 100644 constraint_matrix_info_8h_source.html create mode 100644 constraint_matrix_info_device_8h.html create mode 100644 constraint_matrix_info_device_8h_source.html create mode 100644 cookie.js create mode 100644 dealii_linear_solver_8h.html create mode 100644 dealii_linear_solver_8h_source.html create mode 100644 dealii_linear_solver_problem_8h.html create mode 100644 dealii_linear_solver_problem_8h_source.html create mode 100644 density_calculator_8h.html create mode 100644 density_calculator_8h_source.html create mode 100644 density_first_order_response_calculator_8h.html create mode 100644 density_first_order_response_calculator_8h_source.html create mode 100644 device_direct_c_c_l_wrapper_8h.html create mode 100644 device_direct_c_c_l_wrapper_8h_source.html create mode 100644 device_kernels_generic_8h.html create mode 100644 device_kernels_generic_8h_source.html create mode 100644 dft_8h.html create mode 100644 dft_8h_source.html create mode 100644 dft_base_8h.html create mode 100644 dft_base_8h_source.html create mode 100644 dft_parameters_8h.html create mode 100644 dft_parameters_8h_source.html create mode 100644 dft_utils_8h.html create mode 100644 dft_utils_8h_source.html create mode 100644 dftd_8h.html create mode 100644 dftd_8h_source.html create mode 100644 dftfe_data_types_8h.html create mode 100644 dftfe_data_types_8h_source.html create mode 100644 dftfe_wrapper_8h.html create mode 100644 dftfe_wrapper_8h_source.html create mode 100644 dir_3e0e28f287a7eabeca6cb1997599e376.html create mode 100644 dir_7d1659e50fc771a7918f965a6f1404ad.html create mode 100644 dir_a5be7bbed3ff2f129951759fe96bf5d5.html create mode 100644 doc.svg create mode 100644 docd.svg create mode 100644 doxygen.css create mode 100644 doxygen.svg create mode 100644 doxygen_crawl.html create mode 100644 dynsections.js create mode 100644 eigen_solver_8h.html create mode 100644 eigen_solver_8h_source.html create mode 100644 elpa_scala_manager_8h.html create mode 100644 elpa_scala_manager_8h_source.html create mode 100644 energy_calculator_8h.html create mode 100644 energy_calculator_8h_source.html create mode 100644 eshelby_tensor_8h.html create mode 100644 eshelby_tensor_8h_source.html create mode 100644 eshelby_tensor_spin_polarized_8h.html create mode 100644 eshelby_tensor_spin_polarized_8h_source.html create mode 100644 exc_density_base_class_8h.html create mode 100644 exc_density_base_class_8h_source.html create mode 100644 exc_density_g_g_a_class_8h.html create mode 100644 exc_density_g_g_a_class_8h_source.html create mode 100644 exc_density_l_d_a_class_8h.html create mode 100644 exc_density_l_d_a_class_8h_source.html create mode 100644 exc_density_positivity_check_types_8h.html create mode 100644 exc_density_positivity_check_types_8h_source.html create mode 100644 exc_manager_8h.html create mode 100644 exc_manager_8h_source.html create mode 100644 exc_wavefunction_base_class_8h.html create mode 100644 exc_wavefunction_base_class_8h_source.html create mode 100644 exc_wavefunction_none_class_8h.html create mode 100644 exc_wavefunction_none_class_8h_source.html create mode 100644 file_readers_8h.html create mode 100644 file_readers_8h_source.html create mode 100644 files.html create mode 100644 folderclosed.svg create mode 100644 folderclosedd.svg create mode 100644 folderopen.svg create mode 100644 folderopend.svg create mode 100644 force_8h.html create mode 100644 force_8h_source.html create mode 100644 force_wfc_contractions_8h.html create mode 100644 force_wfc_contractions_8h_source.html create mode 100644 force_wfc_contractions_device_kernels_8h.html create mode 100644 force_wfc_contractions_device_kernels_8h_source.html create mode 100644 functions.html create mode 100644 functions_b.html create mode 100644 functions_c.html create mode 100644 functions_d.html create mode 100644 functions_e.html create mode 100644 functions_enum.html create mode 100644 functions_eval.html create mode 100644 functions_f.html create mode 100644 functions_func.html create mode 100644 functions_func_b.html create mode 100644 functions_func_c.html create mode 100644 functions_func_d.html create mode 100644 functions_func_e.html create mode 100644 functions_func_f.html create mode 100644 functions_func_g.html create mode 100644 functions_func_h.html create mode 100644 functions_func_i.html create mode 100644 functions_func_j.html create mode 100644 functions_func_k.html create mode 100644 functions_func_l.html create mode 100644 functions_func_m.html create mode 100644 functions_func_n.html create mode 100644 functions_func_o.html create mode 100644 functions_func_p.html create mode 100644 functions_func_q.html create mode 100644 functions_func_r.html create mode 100644 functions_func_s.html create mode 100644 functions_func_t.html create mode 100644 functions_func_u.html create mode 100644 functions_func_v.html create mode 100644 functions_func_w.html create mode 100644 functions_func_x.html create mode 100644 functions_func_z.html create mode 100644 functions_func_~.html create mode 100644 functions_g.html create mode 100644 functions_h.html create mode 100644 functions_i.html create mode 100644 functions_j.html create mode 100644 functions_k.html create mode 100644 functions_l.html create mode 100644 functions_m.html create mode 100644 functions_n.html create mode 100644 functions_o.html create mode 100644 functions_p.html create mode 100644 functions_q.html create mode 100644 functions_r.html create mode 100644 functions_rela.html create mode 100644 functions_s.html create mode 100644 functions_t.html create mode 100644 functions_type.html create mode 100644 functions_u.html create mode 100644 functions_v.html create mode 100644 functions_vars.html create mode 100644 functions_vars_b.html create mode 100644 functions_vars_c.html create mode 100644 functions_vars_d.html create mode 100644 functions_vars_e.html create mode 100644 functions_vars_f.html create mode 100644 functions_vars_g.html create mode 100644 functions_vars_h.html create mode 100644 functions_vars_i.html create mode 100644 functions_vars_k.html create mode 100644 functions_vars_l.html create mode 100644 functions_vars_m.html create mode 100644 functions_vars_n.html create mode 100644 functions_vars_o.html create mode 100644 functions_vars_p.html create mode 100644 functions_vars_r.html create mode 100644 functions_vars_s.html create mode 100644 functions_vars_t.html create mode 100644 functions_vars_u.html create mode 100644 functions_vars_v.html create mode 100644 functions_vars_w.html create mode 100644 functions_vars_x.html create mode 100644 functions_vars_z.html create mode 100644 functions_w.html create mode 100644 functions_x.html create mode 100644 functions_z.html create mode 100644 functions_~.html create mode 100644 geo_opt_cell_8h.html create mode 100644 geo_opt_cell_8h_source.html create mode 100644 geo_opt_ion_8h.html create mode 100644 geo_opt_ion_8h_source.html create mode 100644 geometry_optimization_class_8h.html create mode 100644 geometry_optimization_class_8h_source.html create mode 100644 globals.html create mode 100644 globals_defs.html create mode 100644 headers_8h.html create mode 100644 headers_8h_source.html create mode 100644 hierarchy.html create mode 100644 index.html create mode 100644 jquery.js create mode 100644 kerker_solver_problem_8h.html create mode 100644 kerker_solver_problem_8h_source.html create mode 100644 kerker_solver_problem_device_8h.html create mode 100644 kerker_solver_problem_device_8h_source.html create mode 100644 lapack__support_8h.html create mode 100644 lapack__support_8h_source.html create mode 100644 library_m_d_i_8h.html create mode 100644 library_m_d_i_8h_source.html create mode 100644 linear_algebra_operations_8h.html create mode 100644 linear_algebra_operations_8h_source.html create mode 100644 linear_algebra_operations_device_8h.html create mode 100644 linear_algebra_operations_device_8h_source.html create mode 100644 linear_algebra_operations_internal_8h.html create mode 100644 linear_algebra_operations_internal_8h_source.html create mode 100644 linear_solver_8h.html create mode 100644 linear_solver_8h_source.html create mode 100644 linear_solver_c_g_device_8h.html create mode 100644 linear_solver_c_g_device_8h_source.html create mode 100644 linear_solver_device_8h.html create mode 100644 linear_solver_device_8h_source.html create mode 100644 linear_solver_problem_device_8h.html create mode 100644 linear_solver_problem_device_8h_source.html create mode 100644 menu.js create mode 100644 menudata.js create mode 100644 mesh_gen_utils_8h.html create mode 100644 mesh_gen_utils_8h_source.html create mode 100644 mesh_movement_8h.html create mode 100644 mesh_movement_8h_source.html create mode 100644 mesh_movement_affine_transform_8h.html create mode 100644 mesh_movement_affine_transform_8h_source.html create mode 100644 mesh_movement_gaussian_8h.html create mode 100644 mesh_movement_gaussian_8h_source.html create mode 100644 minus.svg create mode 100644 minusd.svg create mode 100644 mixing_class_8h.html create mode 100644 mixing_class_8h_source.html create mode 100644 molecular_dynamics_class_8h.html create mode 100644 molecular_dynamics_class_8h_source.html create mode 100644 namespacedftfe.html create mode 100644 namespacedftfe_1_1_atomic_centered_non_local_operator_kernels_device.html create mode 100644 namespacedftfe_1_1_l_a_p_a_c_k_support.html create mode 100644 namespacedftfe_1_1basis.html create mode 100644 namespacedftfe_1_1basis_1_1_f_e_basis_operations_kernels_internal.html create mode 100644 namespacedftfe_1_1data_types.html create mode 100644 namespacedftfe_1_1dft_utils.html create mode 100644 namespacedftfe_1_1eshelby_tensor.html create mode 100644 namespacedftfe_1_1eshelby_tensor_s_p.html create mode 100644 namespacedftfe_1_1force.html create mode 100644 namespacedftfe_1_1linear_algebra.html create mode 100644 namespacedftfe_1_1linear_algebra_operations.html create mode 100644 namespacedftfe_1_1linear_algebra_operations_1_1internal.html create mode 100644 namespacedftfe_1_1mesh_gen_utils.html create mode 100644 namespacedftfe_1_1pseudo_utils.html create mode 100644 namespacedftfe_1_1spherical_harmonic_utils.html create mode 100644 namespacedftfe_1_1types.html create mode 100644 namespacedftfe_1_1utils.html create mode 100644 namespacedftfe_1_1utils_1_1mpi.html create mode 100644 namespacedftfe_1_1vector_tools.html create mode 100644 namespacemembers.html create mode 100644 namespacemembers_b.html create mode 100644 namespacemembers_c.html create mode 100644 namespacemembers_d.html create mode 100644 namespacemembers_e.html create mode 100644 namespacemembers_enum.html create mode 100644 namespacemembers_eval.html create mode 100644 namespacemembers_f.html create mode 100644 namespacemembers_func.html create mode 100644 namespacemembers_func_b.html create mode 100644 namespacemembers_func_c.html create mode 100644 namespacemembers_func_d.html create mode 100644 namespacemembers_func_e.html create mode 100644 namespacemembers_func_f.html create mode 100644 namespacemembers_func_g.html create mode 100644 namespacemembers_func_i.html create mode 100644 namespacemembers_func_l.html create mode 100644 namespacemembers_func_m.html create mode 100644 namespacemembers_func_n.html create mode 100644 namespacemembers_func_o.html create mode 100644 namespacemembers_func_p.html create mode 100644 namespacemembers_func_r.html create mode 100644 namespacemembers_func_s.html create mode 100644 namespacemembers_func_t.html create mode 100644 namespacemembers_func_v.html create mode 100644 namespacemembers_func_w.html create mode 100644 namespacemembers_func_x.html create mode 100644 namespacemembers_g.html create mode 100644 namespacemembers_h.html create mode 100644 namespacemembers_i.html create mode 100644 namespacemembers_l.html create mode 100644 namespacemembers_m.html create mode 100644 namespacemembers_n.html create mode 100644 namespacemembers_o.html create mode 100644 namespacemembers_p.html create mode 100644 namespacemembers_r.html create mode 100644 namespacemembers_s.html create mode 100644 namespacemembers_t.html create mode 100644 namespacemembers_type.html create mode 100644 namespacemembers_u.html create mode 100644 namespacemembers_v.html create mode 100644 namespacemembers_vars.html create mode 100644 namespacemembers_w.html create mode 100644 namespacemembers_x.html create mode 100644 namespacemembers_z.html create mode 100644 nav_f.png create mode 100644 nav_fd.png create mode 100644 nav_g.png create mode 100644 nav_h.png create mode 100644 nav_hd.png create mode 100644 non_linear_solver_8h.html create mode 100644 non_linear_solver_8h_source.html create mode 100644 nonlinear_solver_problem_8h.html create mode 100644 nonlinear_solver_problem_8h_source.html create mode 100644 nudged_elastic_band_class_8h.html create mode 100644 nudged_elastic_band_class_8h_source.html create mode 100644 oncv_class_8h.html create mode 100644 oncv_class_8h_source.html create mode 100644 open.png create mode 100644 operator_8h.html create mode 100644 operator_8h_source.html create mode 100644 plus.svg create mode 100644 plusd.svg create mode 100644 poisson_solver_problem_8h.html create mode 100644 poisson_solver_problem_8h_source.html create mode 100644 poisson_solver_problem_device_8h.html create mode 100644 poisson_solver_problem_device_8h_source.html create mode 100644 process__grid_8h.html create mode 100644 process__grid_8h_source.html create mode 100644 pseudo_converter_8h.html create mode 100644 pseudo_converter_8h_source.html create mode 100644 pseudo_potential_to_dftfe_converter_8cc.html create mode 100644 pseudo_utils_8h.html create mode 100644 pseudo_utils_8h_source.html create mode 100644 run_parameters_8h.html create mode 100644 run_parameters_8h_source.html create mode 100644 scalapack_8templates_8h.html create mode 100644 scalapack_8templates_8h_source.html create mode 100644 scalapack_wrapper_8h.html create mode 100644 scalapack_wrapper_8h_source.html create mode 100644 search/all_0.js create mode 100644 search/all_1.js create mode 100644 search/all_10.js create mode 100644 search/all_11.js create mode 100644 search/all_12.js create mode 100644 search/all_13.js create mode 100644 search/all_14.js create mode 100644 search/all_15.js create mode 100644 search/all_16.js create mode 100644 search/all_17.js create mode 100644 search/all_18.js create mode 100644 search/all_19.js create mode 100644 search/all_1a.js create mode 100644 search/all_2.js create mode 100644 search/all_3.js create mode 100644 search/all_4.js create mode 100644 search/all_5.js create mode 100644 search/all_6.js create mode 100644 search/all_7.js create mode 100644 search/all_8.js create mode 100644 search/all_9.js create mode 100644 search/all_a.js create mode 100644 search/all_b.js create mode 100644 search/all_c.js create mode 100644 search/all_d.js create mode 100644 search/all_e.js create mode 100644 search/all_f.js create mode 100644 search/classes_0.js create mode 100644 search/classes_1.js create mode 100644 search/classes_10.js create mode 100644 search/classes_11.js create mode 100644 search/classes_2.js create mode 100644 search/classes_3.js create mode 100644 search/classes_4.js create mode 100644 search/classes_5.js create mode 100644 search/classes_6.js create mode 100644 search/classes_7.js create mode 100644 search/classes_8.js create mode 100644 search/classes_9.js create mode 100644 search/classes_a.js create mode 100644 search/classes_b.js create mode 100644 search/classes_c.js create mode 100644 search/classes_d.js create mode 100644 search/classes_e.js create mode 100644 search/classes_f.js create mode 100644 search/close.svg create mode 100644 search/defines_0.js create mode 100644 search/defines_1.js create mode 100644 search/defines_2.js create mode 100644 search/enums_0.js create mode 100644 search/enums_1.js create mode 100644 search/enums_2.js create mode 100644 search/enums_3.js create mode 100644 search/enums_4.js create mode 100644 search/enums_5.js create mode 100644 search/enums_6.js create mode 100644 search/enums_7.js create mode 100644 search/enums_8.js create mode 100644 search/enums_9.js create mode 100644 search/enums_a.js create mode 100644 search/enumvalues_0.js create mode 100644 search/enumvalues_1.js create mode 100644 search/enumvalues_2.js create mode 100644 search/enumvalues_3.js create mode 100644 search/enumvalues_4.js create mode 100644 search/enumvalues_5.js create mode 100644 search/enumvalues_6.js create mode 100644 search/enumvalues_7.js create mode 100644 search/enumvalues_8.js create mode 100644 search/enumvalues_9.js create mode 100644 search/enumvalues_a.js create mode 100644 search/enumvalues_b.js create mode 100644 search/enumvalues_c.js create mode 100644 search/enumvalues_d.js create mode 100644 search/enumvalues_e.js create mode 100644 search/files_0.js create mode 100644 search/files_1.js create mode 100644 search/files_10.js create mode 100644 search/files_11.js create mode 100644 search/files_12.js create mode 100644 search/files_2.js create mode 100644 search/files_3.js create mode 100644 search/files_4.js create mode 100644 search/files_5.js create mode 100644 search/files_6.js create mode 100644 search/files_7.js create mode 100644 search/files_8.js create mode 100644 search/files_9.js create mode 100644 search/files_a.js create mode 100644 search/files_b.js create mode 100644 search/files_c.js create mode 100644 search/files_d.js create mode 100644 search/files_e.js create mode 100644 search/files_f.js create mode 100644 search/functions_0.js create mode 100644 search/functions_1.js create mode 100644 search/functions_10.js create mode 100644 search/functions_11.js create mode 100644 search/functions_12.js create mode 100644 search/functions_13.js create mode 100644 search/functions_14.js create mode 100644 search/functions_15.js create mode 100644 search/functions_16.js create mode 100644 search/functions_17.js create mode 100644 search/functions_18.js create mode 100644 search/functions_19.js create mode 100644 search/functions_2.js create mode 100644 search/functions_3.js create mode 100644 search/functions_4.js create mode 100644 search/functions_5.js create mode 100644 search/functions_6.js create mode 100644 search/functions_7.js create mode 100644 search/functions_8.js create mode 100644 search/functions_9.js create mode 100644 search/functions_a.js create mode 100644 search/functions_b.js create mode 100644 search/functions_c.js create mode 100644 search/functions_d.js create mode 100644 search/functions_e.js create mode 100644 search/functions_f.js create mode 100644 search/mag.svg create mode 100644 search/mag_d.svg create mode 100644 search/mag_sel.svg create mode 100644 search/mag_seld.svg create mode 100644 search/namespaces_0.js create mode 100644 search/pages_0.js create mode 100644 search/pages_1.js create mode 100644 search/pages_2.js create mode 100644 search/pages_3.js create mode 100644 search/pages_4.js create mode 100644 search/pages_5.js create mode 100644 search/related_0.js create mode 100644 search/related_1.js create mode 100644 search/related_2.js create mode 100644 search/search.css create mode 100644 search/search.js create mode 100644 search/searchdata.js create mode 100644 search/typedefs_0.js create mode 100644 search/typedefs_1.js create mode 100644 search/typedefs_2.js create mode 100644 search/typedefs_3.js create mode 100644 search/typedefs_4.js create mode 100644 search/typedefs_5.js create mode 100644 search/typedefs_6.js create mode 100644 search/typedefs_7.js create mode 100644 search/typedefs_8.js create mode 100644 search/typedefs_9.js create mode 100644 search/typedefs_a.js create mode 100644 search/typedefs_b.js create mode 100644 search/typedefs_c.js create mode 100644 search/typedefs_d.js create mode 100644 search/variables_0.js create mode 100644 search/variables_1.js create mode 100644 search/variables_10.js create mode 100644 search/variables_11.js create mode 100644 search/variables_12.js create mode 100644 search/variables_13.js create mode 100644 search/variables_14.js create mode 100644 search/variables_15.js create mode 100644 search/variables_16.js create mode 100644 search/variables_2.js create mode 100644 search/variables_3.js create mode 100644 search/variables_4.js create mode 100644 search/variables_5.js create mode 100644 search/variables_6.js create mode 100644 search/variables_7.js create mode 100644 search/variables_8.js create mode 100644 search/variables_9.js create mode 100644 search/variables_a.js create mode 100644 search/variables_b.js create mode 100644 search/variables_c.js create mode 100644 search/variables_d.js create mode 100644 search/variables_e.js create mode 100644 search/variables_f.js create mode 100644 solve_vself_in_bins_device_8h.html create mode 100644 solve_vself_in_bins_device_8h_source.html create mode 100644 spherical_harmonic_utils_8h.html create mode 100644 spherical_harmonic_utils_8h_source.html create mode 100644 splitbar.png create mode 100644 splitbard.png create mode 100644 structdftfe_1_1pseudo_utils_1_1_element-members.html create mode 100644 structdftfe_1_1pseudo_utils_1_1_element.html create mode 100644 structdftfe_1_1utils_1_1mpi_1_1single_prec_type-members.html create mode 100644 structdftfe_1_1utils_1_1mpi_1_1single_prec_type.html create mode 100644 structdftfe_1_1utils_1_1mpi_1_1single_prec_type_3_01double_01_4-members.html create mode 100644 structdftfe_1_1utils_1_1mpi_1_1single_prec_type_3_01double_01_4.html create mode 100644 structdftfe_1_1utils_1_1mpi_1_1single_prec_type_3_01std_1_1complex_3_01double_01_4_01_4-members.html create mode 100644 structdftfe_1_1utils_1_1mpi_1_1single_prec_type_3_01std_1_1complex_3_01double_01_4_01_4.html create mode 100644 symmetry_8h.html create mode 100644 symmetry_8h_source.html create mode 100644 sync_off.png create mode 100644 sync_on.png create mode 100644 tab_a.png create mode 100644 tab_ad.png create mode 100644 tab_b.png create mode 100644 tab_bd.png create mode 100644 tab_h.png create mode 100644 tab_hd.png create mode 100644 tab_s.png create mode 100644 tab_sd.png create mode 100644 tabs.css create mode 100644 triangulation_manager_8h.html create mode 100644 triangulation_manager_8h_source.html create mode 100644 vector_utilities_8h.html create mode 100644 vector_utilities_8h_source.html create mode 100644 vself_bins_manager_8h.html create mode 100644 vself_bins_manager_8h_source.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/_atom_centered_spherical_function_base_8h.html b/_atom_centered_spherical_function_base_8h.html new file mode 100644 index 000000000..4b380a92c --- /dev/null +++ b/_atom_centered_spherical_function_base_8h.html @@ -0,0 +1,106 @@ + + + + + + + +DFT-FE: workspace/include/AtomCenteredSphericalFunctionBase.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
AtomCenteredSphericalFunctionBase.h File Reference
+
+
+
#include <vector>
+#include <boost/math/quadrature/gauss_kronrod.hpp>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::AtomCenteredSphericalFunctionBase
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/_atom_centered_spherical_function_base_8h_source.html b/_atom_centered_spherical_function_base_8h_source.html new file mode 100644 index 000000000..bf693657c --- /dev/null +++ b/_atom_centered_spherical_function_base_8h_source.html @@ -0,0 +1,188 @@ + + + + + + + +DFT-FE: workspace/include/AtomCenteredSphericalFunctionBase.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
AtomCenteredSphericalFunctionBase.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17// @author Vishal Subramanian, Kartick Ramakrishnan, Sambit Das
+
18//
+
19
+
20#ifndef DFTFE_ATOMCENTEREDSPHERICALFUNCTIONBASE_H
+
21#define DFTFE_ATOMCENTEREDSPHERICALFUNCTIONBASE_H
+
22
+
23#include <vector>
+
24#include <boost/math/quadrature/gauss_kronrod.hpp>
+
25namespace dftfe
+
26{
+
+ +
28 {
+
29 public:
+
30 /**
+
31 * @brief Computes the Radial Value of the Function at distance r
+
32 * @param[in] r radial distance
+
33 * @return function value at distance r
+
34 */
+
35 virtual double
+
36 getRadialValue(double r) const = 0;
+
37
+
38 // The following functions need not be re-defined in the
+
39 // derived classes. So it is being defined in this class
+
40 /**
+
41 * @brief returns the l-quantum number associated with the spherical function
+
42 * @return Quantum number l
+
43 */
+
44 unsigned int
+ +
46
+
47 /**
+
48 * @brief COmputes the Radial-Integral value
+
49 * @return Result of the radial-integration of the spherical function from d_rmin to d_cutOff
+
50 */
+
51 double
+ +
53 /**
+
54 * @brief Returns the maximum radial distance
+
55 * @return Cutoff distance
+
56 */
+
57 double
+ +
59 /**
+
60 * @brief Checks if the data is present
+
61 * @return True if function is present, false if not.
+
62 */
+
63 bool
+ +
65 /**
+
66 * @brief Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance r
+
67 * @param[in] r radial distance
+
68 * @return vector of size 3 comprising of function value, Radial-derivative value and Radial-secon derivative at distance r.
+
69 */
+
70
+
71 virtual std::vector<double>
+
72 getDerivativeValue(double r) const = 0;
+
73
+
74 protected:
+
75 double d_cutOff;
+
76 unsigned int d_lQuantumNumber;
+ +
78
+
79
+
80 }; // end of class AtomCenteredSphericalFunctionBase
+
+
81} // end of namespace dftfe
+
82#endif // DFTFE_ATOMCENTEREDSPHERICALFUNCTIONBASE_H
+
Definition AtomCenteredSphericalFunctionBase.h:28
+
bool d_DataPresent
Definition AtomCenteredSphericalFunctionBase.h:77
+
unsigned int getQuantumNumberl() const
returns the l-quantum number associated with the spherical function
+
virtual double getRadialValue(double r) const =0
Computes the Radial Value of the Function at distance r.
+
double d_cutOff
Definition AtomCenteredSphericalFunctionBase.h:75
+
double getRadialCutOff() const
Returns the maximum radial distance.
+
double getIntegralValue() const
COmputes the Radial-Integral value.
+
virtual std::vector< double > getDerivativeValue(double r) const =0
Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance ...
+
bool isDataPresent() const
Checks if the data is present.
+
unsigned int d_lQuantumNumber
Definition AtomCenteredSphericalFunctionBase.h:76
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_atom_centered_spherical_function_bessel_8h.html b/_atom_centered_spherical_function_bessel_8h.html new file mode 100644 index 000000000..131f280b5 --- /dev/null +++ b/_atom_centered_spherical_function_bessel_8h.html @@ -0,0 +1,109 @@ + + + + + + + +DFT-FE: workspace/include/AtomCenteredSphericalFunctionBessel.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
AtomCenteredSphericalFunctionBessel.h File Reference
+
+
+
#include "AtomCenteredSphericalFunctionBase.h"
+#include <boost/math/quadrature/gauss_kronrod.hpp>
+#include <dftUtils.h>
+#include <vector>
+#include <cmath>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::AtomCenteredSphericalFunctionBessel
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/_atom_centered_spherical_function_bessel_8h_source.html b/_atom_centered_spherical_function_bessel_8h_source.html new file mode 100644 index 000000000..374f958ec --- /dev/null +++ b/_atom_centered_spherical_function_bessel_8h_source.html @@ -0,0 +1,173 @@ + + + + + + + +DFT-FE: workspace/include/AtomCenteredSphericalFunctionBessel.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
AtomCenteredSphericalFunctionBessel.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17// @author Vishal Subramanian, Kartick Ramakrishnan, Sambit Das
+
18//
+
19
+
20#ifndef DFTFE_ATOMCENTEREDSPHERICALFUNCTIONBESSEL_H
+
21#define DFTFE_ATOMCENTEREDSPHERICALFUNCTIONBESSEL_H
+
22
+ +
24
+
25#include <boost/math/quadrature/gauss_kronrod.hpp>
+
26#include <dftUtils.h>
+
27#include <vector>
+
28#include <cmath>
+
29
+
30namespace dftfe
+
31{
+
+ + +
34 {
+
35 public:
+
36 /**
+
37 * @brief Creates the Bessel function based on the 2 parameters
+
38 * @param[in] RcParameter coefficent for the bessel function
+
39 * @param[in] RmaxParameter the maximum R afterwhich the function returns 0.
+
40 */
+ +
42 double RmaxParameter,
+
43 unsigned int lParameter);
+
44
+
45 double
+
46 getRadialValue(double r) const override;
+
47
+
48 unsigned int
+ +
50
+
51 double
+
52 getrMinVal() const;
+
53
+
54 std::vector<double>
+
55 getDerivativeValue(double r) const override;
+
56
+
57 private:
+
58 double d_rMinVal;
+ +
60 double d_Rc;
+
61 };
+
+
62
+
63} // end of namespace dftfe
+
64
+
65#endif // DFTFE_ATOMCENTEREDSPHERICALFUNCTIONBESSEL_H
+ +
Definition AtomCenteredSphericalFunctionBase.h:28
+
Definition AtomCenteredSphericalFunctionBessel.h:34
+
std::vector< double > getDerivativeValue(double r) const override
Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance ...
+
AtomCenteredSphericalFunctionBessel(double RcParameter, double RmaxParameter, unsigned int lParameter)
Creates the Bessel function based on the 2 parameters.
+
double d_Rc
Definition AtomCenteredSphericalFunctionBessel.h:60
+ +
double d_rMinVal
Definition AtomCenteredSphericalFunctionBessel.h:58
+ +
double d_NormalizationConstant
Definition AtomCenteredSphericalFunctionBessel.h:59
+
double getRadialValue(double r) const override
Computes the Radial Value of the Function at distance r.
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_atom_centered_spherical_function_container_8h.html b/_atom_centered_spherical_function_container_8h.html new file mode 100644 index 000000000..a6719ba79 --- /dev/null +++ b/_atom_centered_spherical_function_container_8h.html @@ -0,0 +1,113 @@ + + + + + + + +DFT-FE: workspace/include/AtomCenteredSphericalFunctionContainer.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
AtomCenteredSphericalFunctionContainer.h File Reference
+
+
+
#include "vector"
+#include "map"
+#include "AtomCenteredSphericalFunctionBase.h"
+#include <memory>
+#include <MemorySpaceType.h>
+#include "FEBasisOperations.h"
+#include <headers.h>
+#include <TypeConfig.h>
+#include <dftUtils.h>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::AtomCenteredSphericalFunctionContainer
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/_atom_centered_spherical_function_container_8h_source.html b/_atom_centered_spherical_function_container_8h_source.html new file mode 100644 index 000000000..5df027f02 --- /dev/null +++ b/_atom_centered_spherical_function_container_8h_source.html @@ -0,0 +1,383 @@ + + + + + + + +DFT-FE: workspace/include/AtomCenteredSphericalFunctionContainer.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
AtomCenteredSphericalFunctionContainer.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17// @author Vishal Subramanian, Kartick Ramakrishnan, Sambit Das
+
18//
+
19
+
20#ifndef DFTFE_ATOMCENTEREDSPHERICALFUNCTIONCONTAINERBASE_H
+
21#define DFTFE_ATOMCENTEREDSPHERICALFUNCTIONCONTAINERBASE_H
+
22
+
23#include "vector"
+
24#include "map"
+ +
26#include <memory>
+
27#include <MemorySpaceType.h>
+
28#include "FEBasisOperations.h"
+
29#include <headers.h>
+
30#include <TypeConfig.h>
+
31#include <dftUtils.h>
+
32
+
33
+
34namespace dftfe
+
35{
+
+ +
37 {
+
38 public:
+
39 /**
+
40 * @brief Initialises the class with the atomicNumbers of various atoms and the AtomCenteredSphericalFn of various spherical functions. This function is only called once per run.
+
41 * @param[in] atomicNumbers vector of size Natoms storing the Znumbers of
+
42 * various atoms present
+
43 * @param[in] listOfSphericalFunctions map of std::pain (Znum, l) to the
+
44 * sphericalFUnction class shared pointer.
+
45 */
+
46 void
+
47 init(const std::vector<unsigned int> &atomicNumbers,
+
48 const std::map<std::pair<unsigned int, unsigned int>,
+
49 std::shared_ptr<AtomCenteredSphericalFunctionBase>>
+
50 &listOfSphericalFunctions);
+
51 /**
+
52 * @brief Initialises the position of atoms, the image posisiton and image ids after every update of atom positions.
+
53 * @param[in] atomCoords vector of size 3*Natoms storing the X,Y,Z
+
54 * coordiantes of atom in cell.
+
55 * @param[in] periodicCoords vector of vector storing the image coordinates
+
56 * @param[in] imageIds the image Id of image atoms present in periodicCoords
+
57 * input
+
58 */
+
59 void
+
60 initaliseCoordinates(const std::vector<double> & atomCoords,
+
61 const std::vector<std::vector<double>> &periodicCoords,
+
62 const std::vector<int> & imageIds);
+
63 /**
+
64 * @brief Returns the number of atoms present in domain
+
65 * @return Returns size of atomicNumbers vector
+
66 */
+
67 unsigned int
+ +
69
+
70
+
71 /**
+
72 * @brief Returns the cooridnates of atom present in domain
+
73 * @return Returns atomCoords vector
+
74 */
+
75 const std::vector<double> &
+ +
77 /**
+
78 * @brief Returns the map of atomId vs vector of image coordinates
+
79 * @return Returns d_periodicImageCoord
+
80 */
+
81 const std::map<unsigned int, std::vector<double>> &
+ +
83
+
84 // This functions returns the number of spherical functions associated with
+
85 // an atomic number.
+
86 // If the atomic number does not exist, it returns a zero.
+
87 /**
+
88 * @brief Returns the he number of total spherical functions indexed by {ilm} associated with an atomic number. If the atomic number does not exist, it returns a zero.
+
89 * @return d_numSphericalFunctions.find(atomicNumber)->size()
+
90 */
+
91 unsigned int
+ +
93
+
94 /**
+
95 * @brief Returns the he number of radial spherical functions indexed by {i} associated with an atomic number. If the atomic number does not exist, it returns a zero.
+
96 * @return d_numRadialSphericalFunctions.find(atomicNumber)->size()
+
97 */
+
98 unsigned int
+ +
100 /**
+
101 * @brief Returns the total number of total spherical functions indexed by {ilm} present in the current processor. If the atomic number does not exist, it returns a zero.
+
102 */
+
103 unsigned int
+ +
105 /**
+
106 * @brief Returns the maximum number of total spherical functions indexed by {ilm} across all atom Types present in atomNumbers vector
+
107 */
+
108 unsigned int
+ +
110 /**
+
111 * @brief
+
112 * @param[out] totalAtomsInCurrentProcessor number of atoms in current
+
113 * processor based on compact support
+
114 * @param[out] totalNonLocalElements number of nonLocal elements in current
+
115 * processor
+
116 * @param[out] numberCellsForEachAtom number of cells associated which each
+
117 * atom in the current processor. vecot of size totalAtomsInCurrentProcessor
+
118 * @param[out] numberCellsAccumNonLocalAtoms number of cells accumulated
+
119 * till iatom in current processor. vector of size
+
120 * totalAtomsInCurrentProcessor
+
121 */
+
122 void
+ +
124 unsigned int & totalAtomsInCurrentProcessor,
+
125 unsigned int & totalNonLocalElements,
+
126 std::vector<unsigned int> &numberCellsForEachAtom,
+
127 std::vector<unsigned int> &numberCellsAccumNonLocalAtoms);
+
128
+
129 /**
+
130 * @brief Returns the total number of total radial-spherical functions indexed by {i} present in atomicNumbers list.
+
131 */
+
132 unsigned int
+ +
134
+
135 /**
+
136 * @brief Returns the shared_ptr of AtomCenteredSphericalFunctionBase associated with std::pair(atomic Number and lQuantumNo)
+
137 */
+
138 const std::map<std::pair<unsigned int, unsigned int>,
+
139 std::shared_ptr<AtomCenteredSphericalFunctionBase>> &
+ +
141 /**
+
142 * @brief Returns the vector of size Natoms of all atoms in system
+
143 */
+
144 const std::vector<unsigned int> &
+ +
146 /**
+
147 * @brief Returns the atomIds of atoms present in current processor
+
148 */
+
149 const std::vector<unsigned int> &
+ +
151 /**
+
152 * @brief Returns the startIndex of spherical Function alpha associated with atomic number Znum
+
153 */
+
154 const unsigned int
+
155 getTotalSphericalFunctionIndexStart(unsigned int Znum, unsigned int alpha);
+
156 // COmputes the sparsity Pattern for the compact support Fn
+
157 // cutOffVal the max/min value to consider to be part of copact support
+
158 // cutOffType = 0 based on Fn Value, cutOffType = 1 based on Distance from
+
159 // atom
+
160 template <typename NumberType>
+
161 void
+ +
163 std::shared_ptr<
+ +
165 double,
+ +
167 & basisOperationsPtr,
+
168 const unsigned int quadratureIndex,
+
169 const double cutOffVal = 1.0E-8,
+
170 const unsigned int cutOffType = 0);
+
171
+
172
+
173 std::vector<std::vector<unsigned int>> d_elementIndexesInAtomCompactSupport;
+
174 void
+
175 setImageCoordinates(const std::vector<int> & imageIds,
+
176 const std::vector<std::vector<double>> &periodicCoords);
+
177
+
178
+
179
+
180 const std::vector<int> &
+
181 getAtomIdsInElement(unsigned int iElem);
+
182
+
183 const std::map<unsigned int, std::vector<int>> &
+ +
185
+
186 bool
+
187 atomSupportInElement(unsigned int iElem);
+
188
+
189 void
+ +
191 const std::map<unsigned int, std::vector<int>> &sparsityPattern,
+
192 const std::vector<std::vector<dealii::CellId>>
+
193 &elementIdsInAtomCompactSupport,
+
194 const std::vector<std::vector<unsigned int>>
+
195 & elementIndexesInAtomCompactSupport,
+
196 const std::vector<unsigned int> &atomIdsInCurrentProcess,
+
197 unsigned int numberElements);
+
198
+
199 private:
+
200 // A flattened vector that stores the coordinates of the atoms of interest
+
201 // in the unit cell
+
202 // Coord of atom I is stored at 3*I +0 ( x-coord),3*I+1 ( y-coord),3*I+2 (
+
203 // z-coord)
+
204 std::vector<double> d_atomCoords;
+
205
+
206 // A vector of size = number of atoms of interest
+
207 // the Ith atom in d_atomicNumbers has its coordinates
+
208 // in d_atomCoords[3*I+0], d_atomCoords[3*I+1], d_atomCoords[3*I+2]
+
209 std::vector<unsigned int> d_atomicNumbers;
+
210
+
211 // This maps the atom I in the unit cell to all its image atoms.
+
212 // number of image atoms of Ith atom = d_periodicImageCoord[I].size()/ dim
+
213 // with dim=3 The coordinates are stored as a flattened vector
+
214 std::map<unsigned int, std::vector<double>> d_periodicImageCoord;
+
215
+
216
+
217 // This maps, from std::pair<atomic number, \alpha> to S_{z,\alpha},
+
218 // where \alpha is the index for unique radial function
+
219 std::map<std::pair<unsigned int, unsigned int>,
+
220 std::shared_ptr<AtomCenteredSphericalFunctionBase>>
+ +
222 // Stores the number of distinct Radial Functions for a particular AtomType
+
223 std::map<unsigned int, unsigned int> d_numRadialSphericalFunctions;
+
224 // Stores the number of distinct Functions include m for a particular
+
225 // AtomType
+
226 std::map<unsigned int, unsigned int> d_numSphericalFunctions;
+
227 // This maps is between atomId in unit cell and the sparsity pattern of the
+
228 // atom and its images in the unitcell domain.
+
229 std::map<unsigned int, std::vector<int>> d_sparsityPattern;
+
230 //
+
231 std::vector<std::vector<dealii::CellId>> d_elementIdsInAtomCompactSupport;
+
232 // std::vector<std::vector<unsigned int>>
+
233 // d_elementIndexesInAtomCompactSupport;
+
234 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
+ +
236 std::vector<unsigned int> d_AtomIdsInCurrentProcess;
+
237 std::vector<std::vector<int>> d_AtomIdsInElement;
+
238 std::map<unsigned int, std::vector<unsigned int>>
+ +
240
+
241 }; // end of class AtomCenteredSphericalFunctionContainerBase
+
+
242} // end of namespace dftfe
+
243
+
244#endif // DFTFE_ATOMCENTEREDSPHERICALFUNCTIONCONTAINERBASE_H
+ + + + +
Definition AtomCenteredSphericalFunctionContainer.h:37
+
void getTotalAtomsAndNonLocalElementsInCurrentProcessor(unsigned int &totalAtomsInCurrentProcessor, unsigned int &totalNonLocalElements, std::vector< unsigned int > &numberCellsForEachAtom, std::vector< unsigned int > &numberCellsAccumNonLocalAtoms)
+
void init(const std::vector< unsigned int > &atomicNumbers, const std::map< std::pair< unsigned int, unsigned int >, std::shared_ptr< AtomCenteredSphericalFunctionBase > > &listOfSphericalFunctions)
Initialises the class with the atomicNumbers of various atoms and the AtomCenteredSphericalFn of vari...
+
const unsigned int getTotalSphericalFunctionIndexStart(unsigned int Znum, unsigned int alpha)
Returns the startIndex of spherical Function alpha associated with atomic number Znum.
+
std::vector< std::vector< dealii::CellId > > d_elementIdsInAtomCompactSupport
Definition AtomCenteredSphericalFunctionContainer.h:231
+
bool atomSupportInElement(unsigned int iElem)
+
const std::map< std::pair< unsigned int, unsigned int >, std::shared_ptr< AtomCenteredSphericalFunctionBase > > & getSphericalFunctions() const
Returns the shared_ptr of AtomCenteredSphericalFunctionBase associated with std::pair(atomic Number a...
+
unsigned int getTotalNumberOfRadialSphericalFunctionsPerAtom(unsigned int atomicNumber)
Returns the he number of radial spherical functions indexed by {i} associated with an atomic number....
+
std::map< unsigned int, std::vector< int > > d_sparsityPattern
Definition AtomCenteredSphericalFunctionContainer.h:229
+
std::map< unsigned int, std::vector< double > > d_periodicImageCoord
Definition AtomCenteredSphericalFunctionContainer.h:214
+
unsigned int getMaximumNumberOfSphericalFunctions()
Returns the maximum number of total spherical functions indexed by {ilm} across all atom Types presen...
+
unsigned int getTotalNumberOfRadialSphericalFunctions()
Returns the total number of total radial-spherical functions indexed by {i} present in atomicNumbers ...
+
unsigned int getTotalNumberOfSphericalFunctionsPerAtom(unsigned int atomicNumber)
Returns the he number of total spherical functions indexed by {ilm} associated with an atomic number....
+
unsigned int getNumAtomCentersSize()
Returns the number of atoms present in domain.
+
std::map< unsigned int, unsigned int > d_numSphericalFunctions
Definition AtomCenteredSphericalFunctionContainer.h:226
+
std::vector< unsigned int > d_AtomIdsInCurrentProcess
Definition AtomCenteredSphericalFunctionContainer.h:236
+
const std::vector< unsigned int > & getAtomIdsInCurrentProcess() const
Returns the atomIds of atoms present in current processor.
+
const std::vector< int > & getAtomIdsInElement(unsigned int iElem)
+
std::vector< std::vector< int > > d_AtomIdsInElement
Definition AtomCenteredSphericalFunctionContainer.h:237
+
std::vector< double > d_atomCoords
Definition AtomCenteredSphericalFunctionContainer.h:204
+
const std::vector< double > & getAtomCoordinates() const
Returns the cooridnates of atom present in domain.
+
const std::map< unsigned int, std::vector< double > > & getPeriodicImageCoordinatesList() const
Returns the map of atomId vs vector of image coordinates.
+
unsigned int getTotalNumberOfSphericalFunctionsInCurrentProcessor()
Returns the total number of total spherical functions indexed by {ilm} present in the current process...
+
std::map< unsigned int, unsigned int > d_numRadialSphericalFunctions
Definition AtomCenteredSphericalFunctionContainer.h:223
+
void initaliseCoordinates(const std::vector< double > &atomCoords, const std::vector< std::vector< double > > &periodicCoords, const std::vector< int > &imageIds)
Initialises the position of atoms, the image posisiton and image ids after every update of atom posit...
+
void computeSparseStructure(std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int quadratureIndex, const double cutOffVal=1.0E-8, const unsigned int cutOffType=0)
+
std::map< unsigned int, std::vector< unsigned int > > d_totalSphericalFunctionIndexStart
Definition AtomCenteredSphericalFunctionContainer.h:239
+
const std::vector< unsigned int > & getAtomicNumbers() const
Returns the vector of size Natoms of all atoms in system.
+
const std::map< unsigned int, std::vector< int > > & getSparsityPattern()
+
std::map< std::pair< unsigned int, unsigned int >, std::shared_ptr< AtomCenteredSphericalFunctionBase > > d_sphericalFunctionsContainer
Definition AtomCenteredSphericalFunctionContainer.h:221
+
void setImageCoordinates(const std::vector< int > &imageIds, const std::vector< std::vector< double > > &periodicCoords)
+
std::vector< std::vector< unsigned int > > d_elementIndexesInAtomCompactSupport
Definition AtomCenteredSphericalFunctionContainer.h:173
+
std::vector< unsigned int > d_atomicNumbers
Definition AtomCenteredSphericalFunctionContainer.h:209
+
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_elementOneFieldIteratorsInAtomCompactSupport
Definition AtomCenteredSphericalFunctionContainer.h:235
+
void getDataForSparseStructure(const std::map< unsigned int, std::vector< int > > &sparsityPattern, const std::vector< std::vector< dealii::CellId > > &elementIdsInAtomCompactSupport, const std::vector< std::vector< unsigned int > > &elementIndexesInAtomCompactSupport, const std::vector< unsigned int > &atomIdsInCurrentProcess, unsigned int numberElements)
+
Definition FEBasisOperations.h:85
+ + + +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_atom_centered_spherical_function_core_density_spline_8h.html b/_atom_centered_spherical_function_core_density_spline_8h.html new file mode 100644 index 000000000..89122dc4d --- /dev/null +++ b/_atom_centered_spherical_function_core_density_spline_8h.html @@ -0,0 +1,116 @@ + + + + + + + +DFT-FE: workspace/include/AtomCenteredSphericalFunctionCoreDensitySpline.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
AtomCenteredSphericalFunctionCoreDensitySpline.h File Reference
+
+
+
#include "AtomCenteredSphericalFunctionSpline.h"
+#include "string"
+#include <boost/math/quadrature/gauss_kronrod.hpp>
+#include <vector>
+#include <array>
+#include <cmath>
+#include <fstream>
+#include <iostream>
+#include <sstream>
+#include <fileReaders.h>
+#include <dftUtils.h>
+#include <interpolation.h>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::AtomCenteredSphericalFunctionCoreDensitySpline
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/_atom_centered_spherical_function_core_density_spline_8h_source.html b/_atom_centered_spherical_function_core_density_spline_8h_source.html new file mode 100644 index 000000000..90d69df67 --- /dev/null +++ b/_atom_centered_spherical_function_core_density_spline_8h_source.html @@ -0,0 +1,161 @@ + + + + + + + +DFT-FE: workspace/include/AtomCenteredSphericalFunctionCoreDensitySpline.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
AtomCenteredSphericalFunctionCoreDensitySpline.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17// @author Vishal Subramanian, Kartick Ramakrishnan, Sambit Das
+
18//
+
19
+
20#ifndef DFTFE_ATOMCENTEREDSPHERICALFUNCTIONCOREDENSITYSPLINE_H
+
21#define DFTFE_ATOMCENTEREDSPHERICALFUNCTIONCOREDENSITYSPLINE_H
+
22
+ +
24#include "string"
+
25#include <boost/math/quadrature/gauss_kronrod.hpp>
+
26#include <vector>
+
27#include <array>
+
28#include <cmath>
+
29#include <fstream>
+
30#include <iostream>
+
31#include <sstream>
+
32#include <fileReaders.h>
+
33#include <dftUtils.h>
+
34#include <interpolation.h>
+
35
+
36
+
37namespace dftfe
+
38{
+
+ + +
41 {
+
42 public:
+
43 /**
+
44 * @brief Creates splines for radial-core Density from file by applying suitable BC on spline and determining the cutOff Radius
+
45 * @param[in] filename the location of file containing the data
+
46 * @param[in] truncationTol the minimum function value afterwhich the
+
47 * function is truncated.
+
48 * @param[in] consider0thEntry whether to replace the 0th fn value with the
+
49 * 1st value in the data.
+
50 */
+ +
52 std::string filename,
+
53 double truncationTol = 1E-10,
+
54 bool consider0thEntry = true);
+
55 };
+
+
56
+
57} // end of namespace dftfe
+
58
+
59#endif // DFTFE_ATOMCENTEREDSPHERICALFUNCTIONCOREDENSITYSPLINE_H
+ +
Definition AtomCenteredSphericalFunctionCoreDensitySpline.h:41
+
AtomCenteredSphericalFunctionCoreDensitySpline(std::string filename, double truncationTol=1E-10, bool consider0thEntry=true)
Creates splines for radial-core Density from file by applying suitable BC on spline and determining t...
+
Definition AtomCenteredSphericalFunctionSpline.h:41
+ +
Contains commonly used I/O file utils functions.
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_atom_centered_spherical_function_gaussian_8h.html b/_atom_centered_spherical_function_gaussian_8h.html new file mode 100644 index 000000000..ec051e04f --- /dev/null +++ b/_atom_centered_spherical_function_gaussian_8h.html @@ -0,0 +1,109 @@ + + + + + + + +DFT-FE: workspace/include/AtomCenteredSphericalFunctionGaussian.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
AtomCenteredSphericalFunctionGaussian.h File Reference
+
+
+
#include "AtomCenteredSphericalFunctionBase.h"
+#include <boost/math/quadrature/gauss_kronrod.hpp>
+#include <dftUtils.h>
+#include <vector>
+#include <cmath>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::AtomCenteredSphericalFunctionGaussian
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/_atom_centered_spherical_function_gaussian_8h_source.html b/_atom_centered_spherical_function_gaussian_8h_source.html new file mode 100644 index 000000000..1aeec0c3f --- /dev/null +++ b/_atom_centered_spherical_function_gaussian_8h_source.html @@ -0,0 +1,168 @@ + + + + + + + +DFT-FE: workspace/include/AtomCenteredSphericalFunctionGaussian.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
AtomCenteredSphericalFunctionGaussian.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17// @author Vishal Subramanian, Kartick Ramakrishnan, Sambit Das
+
18//
+
19
+
20#ifndef DFTFE_ATOMCENTEREDSPHERICALFUNCTIONGAUSSIAN_H
+
21#define DFTFE_ATOMCENTEREDSPHERICALFUNCTIONGAUSSIAN_H
+
22
+ +
24
+
25#include <boost/math/quadrature/gauss_kronrod.hpp>
+
26#include <dftUtils.h>
+
27#include <vector>
+
28#include <cmath>
+
29
+
30namespace dftfe
+
31{
+
+ + +
34 {
+
35 public:
+ +
37 double RmaxParameter,
+
38 unsigned int lParameter);
+
39
+
40 double
+
41 getRadialValue(double r) const override;
+
42
+
43 unsigned int
+ +
45
+
46 double
+
47 getrMinVal() const;
+
48
+
49 std::vector<double>
+
50 getDerivativeValue(double r) const override;
+
51
+
52 private:
+
53 double d_rMinVal;
+ +
55 double d_Rc;
+
56 };
+
+
57
+
58} // end of namespace dftfe
+
59
+
60#endif // DFTFE_ATOMCENTEREDSPHERICALFUNCTIONGAUSSIAN_H
+ +
Definition AtomCenteredSphericalFunctionBase.h:28
+
Definition AtomCenteredSphericalFunctionGaussian.h:34
+ +
double d_Rc
Definition AtomCenteredSphericalFunctionGaussian.h:55
+
double d_rMinVal
Definition AtomCenteredSphericalFunctionGaussian.h:53
+
std::vector< double > getDerivativeValue(double r) const override
Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance ...
+ +
double getRadialValue(double r) const override
Computes the Radial Value of the Function at distance r.
+
double d_NormalizationConstant
Definition AtomCenteredSphericalFunctionGaussian.h:54
+
AtomCenteredSphericalFunctionGaussian(double RcParameter, double RmaxParameter, unsigned int lParameter)
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_atom_centered_spherical_function_local_potential_spline_8h.html b/_atom_centered_spherical_function_local_potential_spline_8h.html new file mode 100644 index 000000000..77e8afc2e --- /dev/null +++ b/_atom_centered_spherical_function_local_potential_spline_8h.html @@ -0,0 +1,116 @@ + + + + + + + +DFT-FE: workspace/include/AtomCenteredSphericalFunctionLocalPotentialSpline.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
AtomCenteredSphericalFunctionLocalPotentialSpline.h File Reference
+
+
+
#include "AtomCenteredSphericalFunctionSpline.h"
+#include "string"
+#include <boost/math/quadrature/gauss_kronrod.hpp>
+#include <vector>
+#include <array>
+#include <cmath>
+#include <fstream>
+#include <iostream>
+#include <sstream>
+#include <fileReaders.h>
+#include <dftUtils.h>
+#include <interpolation.h>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::AtomCenteredSphericalFunctionLocalPotentialSpline
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/_atom_centered_spherical_function_local_potential_spline_8h_source.html b/_atom_centered_spherical_function_local_potential_spline_8h_source.html new file mode 100644 index 000000000..b491c435e --- /dev/null +++ b/_atom_centered_spherical_function_local_potential_spline_8h_source.html @@ -0,0 +1,163 @@ + + + + + + + +DFT-FE: workspace/include/AtomCenteredSphericalFunctionLocalPotentialSpline.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
AtomCenteredSphericalFunctionLocalPotentialSpline.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17// @author Vishal Subramanian, Kartick Ramakrishnan, Sambit Das
+
18//
+
19
+
20#ifndef DFTFE_ATOMCENTEREDSPHERICALFUNCTIONLOCALPOTENTIALSPLINE_H
+
21#define DFTFE_ATOMCENTEREDSPHERICALFUNCTIONLOCALPOTENTIALSPLINE_H
+
22
+ +
24#include "string"
+
25#include <boost/math/quadrature/gauss_kronrod.hpp>
+
26#include <vector>
+
27#include <array>
+
28#include <cmath>
+
29#include <fstream>
+
30#include <iostream>
+
31#include <sstream>
+
32#include <fileReaders.h>
+
33#include <dftUtils.h>
+
34#include <interpolation.h>
+
35
+
36
+
37namespace dftfe
+
38{
+
+ + +
41 {
+
42 public:
+
43 /**
+
44 * @brief Creates splines for radial-Local Potential from file by applying suitable BC on spline and determining the cutOff Radius
+
45 * @param[in] filename the location of file containing the data
+
46 * @param[in] atomAttribute the atomic number
+
47 * @param[in] truncationTol the minimum function value afterwhich the
+
48 * function is truncated.
+
49 * @param[in] maxAllowedTail Maximum distance before the function is
+
50 * evaluated as Z/r
+
51 */
+ +
53 std::string filename,
+
54 double atomAttribute,
+
55 double truncationTol = 1E-10,
+
56 double maxAllowedTail = 8.0001);
+
57 };
+
+
58
+
59} // end of namespace dftfe
+
60
+
61#endif // DFTFE_ATOMCENTEREDSPHERICALFUNCTIONLOCALPOTENTIALSPLINE_H
+ +
Definition AtomCenteredSphericalFunctionLocalPotentialSpline.h:41
+
AtomCenteredSphericalFunctionLocalPotentialSpline(std::string filename, double atomAttribute, double truncationTol=1E-10, double maxAllowedTail=8.0001)
Creates splines for radial-Local Potential from file by applying suitable BC on spline and determinin...
+
Definition AtomCenteredSphericalFunctionSpline.h:41
+ +
Contains commonly used I/O file utils functions.
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_atom_centered_spherical_function_projector_spline_8h.html b/_atom_centered_spherical_function_projector_spline_8h.html new file mode 100644 index 000000000..efe664b5e --- /dev/null +++ b/_atom_centered_spherical_function_projector_spline_8h.html @@ -0,0 +1,116 @@ + + + + + + + +DFT-FE: workspace/include/AtomCenteredSphericalFunctionProjectorSpline.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
AtomCenteredSphericalFunctionProjectorSpline.h File Reference
+
+
+
#include "AtomCenteredSphericalFunctionSpline.h"
+#include "string"
+#include <boost/math/quadrature/gauss_kronrod.hpp>
+#include <vector>
+#include <array>
+#include <cmath>
+#include <fstream>
+#include <iostream>
+#include <sstream>
+#include <fileReaders.h>
+#include <dftUtils.h>
+#include <interpolation.h>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::AtomCenteredSphericalFunctionProjectorSpline
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/_atom_centered_spherical_function_projector_spline_8h_source.html b/_atom_centered_spherical_function_projector_spline_8h_source.html new file mode 100644 index 000000000..2b08bcb54 --- /dev/null +++ b/_atom_centered_spherical_function_projector_spline_8h_source.html @@ -0,0 +1,168 @@ + + + + + + + +DFT-FE: workspace/include/AtomCenteredSphericalFunctionProjectorSpline.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
AtomCenteredSphericalFunctionProjectorSpline.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17// @author Vishal Subramanian, Kartick Ramakrishnan, Sambit Das
+
18//
+
19
+
20#ifndef DFTFE_ATOMCENTEREDSPHERICALFUNCTIONPROJECTORSPLINE_H
+
21#define DFTFE_ATOMCENTEREDSPHERICALFUNCTIONPROJECTORSPLINE_H
+
22
+ +
24#include "string"
+
25#include <boost/math/quadrature/gauss_kronrod.hpp>
+
26#include <vector>
+
27#include <array>
+
28#include <cmath>
+
29#include <fstream>
+
30#include <iostream>
+
31#include <sstream>
+
32#include <fileReaders.h>
+
33#include <dftUtils.h>
+
34#include <interpolation.h>
+
35
+
36
+
37namespace dftfe
+
38{
+
+ + +
41 {
+
42 public:
+
43 /**
+
44 * @brief Creates splines for radial-Local Potential from file by applying suitable BC on spline and determining the cutOff Radius
+
45 * @param[in] filename the location of file containing the data
+
46 * @param[in] l quantumNumber-l
+
47 * @param[in] radialPower mulitply the data with pow(r,radialPower)
+
48 * @param[in] colIndex the column Number where the function data is present
+
49 * @param[in] totalColSize the total number oc columns in file
+
50 * @param[in] truncationTol the minimum function value afterwhich the
+
51 * function is truncated.
+
52 * @param[in] consider0thEntry whether to replace the 0th fn value with the
+
53 * 1st value in the data.
+
54 */
+ +
56 unsigned int l,
+
57 int radialPower,
+
58 int colIndex,
+
59 int totalColSize,
+
60 double truncationTol = 1E-10,
+
61 bool consider0thEntry = true);
+
62 };
+
+
63
+
64} // end of namespace dftfe
+
65
+
66#endif // DFTFE_ATOMCENTEREDSPHERICALFUNCTIONPROJECTORSPLINE_H
+ +
Definition AtomCenteredSphericalFunctionProjectorSpline.h:41
+
AtomCenteredSphericalFunctionProjectorSpline(std::string filename, unsigned int l, int radialPower, int colIndex, int totalColSize, double truncationTol=1E-10, bool consider0thEntry=true)
Creates splines for radial-Local Potential from file by applying suitable BC on spline and determinin...
+
Definition AtomCenteredSphericalFunctionSpline.h:41
+ +
Contains commonly used I/O file utils functions.
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_atom_centered_spherical_function_sinc_8h.html b/_atom_centered_spherical_function_sinc_8h.html new file mode 100644 index 000000000..552e4a542 --- /dev/null +++ b/_atom_centered_spherical_function_sinc_8h.html @@ -0,0 +1,110 @@ + + + + + + + +DFT-FE: workspace/include/AtomCenteredSphericalFunctionSinc.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
AtomCenteredSphericalFunctionSinc.h File Reference
+
+
+
#include "AtomCenteredSphericalFunctionBase.h"
+#include "boost/math/special_functions/sinc.hpp"
+#include <boost/math/quadrature/gauss_kronrod.hpp>
+#include <vector>
+#include <cmath>
+#include <dftUtils.h>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::AtomCenteredSphericalFunctionSinc
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/_atom_centered_spherical_function_sinc_8h_source.html b/_atom_centered_spherical_function_sinc_8h_source.html new file mode 100644 index 000000000..f845c4fa1 --- /dev/null +++ b/_atom_centered_spherical_function_sinc_8h_source.html @@ -0,0 +1,168 @@ + + + + + + + +DFT-FE: workspace/include/AtomCenteredSphericalFunctionSinc.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
AtomCenteredSphericalFunctionSinc.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17// @author Vishal Subramanian, Kartick Ramakrishnan, Sambit Das
+
18//
+
19
+
20#ifndef DFTFE_ATOMCENTEREDSPHERICALFUNCTIONSINC_H
+
21#define DFTFE_ATOMCENTEREDSPHERICALFUNCTIONSINC_H
+
22
+ +
24
+
25#include "boost/math/special_functions/sinc.hpp"
+
26#include <boost/math/quadrature/gauss_kronrod.hpp>
+
27#include <vector>
+
28#include <cmath>
+
29#include <dftUtils.h>
+
30namespace dftfe
+
31{
+
+ + +
34 {
+
35 public:
+ +
37 double RmaxParameter,
+
38 unsigned int lParameter);
+
39
+
40 double
+
41 getRadialValue(double r) const override;
+
42
+
43 unsigned int
+ +
45
+
46 double
+
47 getrMinVal() const;
+
48
+
49 std::vector<double>
+
50 getDerivativeValue(double r) const override;
+
51
+
52 private:
+
53 double d_rMinVal;
+ +
55 double d_Rc;
+
56 };
+
+
57
+
58} // end of namespace dftfe
+
59
+
60#endif // DFTFE_ATOMCENTEREDSPHERICALFUNCTIONSINC_H
+ +
Definition AtomCenteredSphericalFunctionBase.h:28
+
Definition AtomCenteredSphericalFunctionSinc.h:34
+ +
double d_Rc
Definition AtomCenteredSphericalFunctionSinc.h:55
+
std::vector< double > getDerivativeValue(double r) const override
Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance ...
+
AtomCenteredSphericalFunctionSinc(double RcParameter, double RmaxParameter, unsigned int lParameter)
+
double d_NormalizationConstant
Definition AtomCenteredSphericalFunctionSinc.h:54
+
double getRadialValue(double r) const override
Computes the Radial Value of the Function at distance r.
+ +
double d_rMinVal
Definition AtomCenteredSphericalFunctionSinc.h:53
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_atom_centered_spherical_function_spline_8h.html b/_atom_centered_spherical_function_spline_8h.html new file mode 100644 index 000000000..d2705ea60 --- /dev/null +++ b/_atom_centered_spherical_function_spline_8h.html @@ -0,0 +1,116 @@ + + + + + + + +DFT-FE: workspace/include/AtomCenteredSphericalFunctionSpline.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
AtomCenteredSphericalFunctionSpline.h File Reference
+
+
+
#include "AtomCenteredSphericalFunctionBase.h"
+#include "string"
+#include <boost/math/quadrature/gauss_kronrod.hpp>
+#include <vector>
+#include <array>
+#include <cmath>
+#include <fstream>
+#include <iostream>
+#include <sstream>
+#include <fileReaders.h>
+#include <dftUtils.h>
+#include <interpolation.h>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::AtomCenteredSphericalFunctionSpline
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/_atom_centered_spherical_function_spline_8h_source.html b/_atom_centered_spherical_function_spline_8h_source.html new file mode 100644 index 000000000..5de66b7c7 --- /dev/null +++ b/_atom_centered_spherical_function_spline_8h_source.html @@ -0,0 +1,166 @@ + + + + + + + +DFT-FE: workspace/include/AtomCenteredSphericalFunctionSpline.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
AtomCenteredSphericalFunctionSpline.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17// @author Vishal Subramanian, Kartick Ramakrishnan, Sambit Das
+
18//
+
19
+
20#ifndef DFTFE_ATOMCENTEREDSPHERICALFUNCTIONSPLINE_H
+
21#define DFTFE_ATOMCENTEREDSPHERICALFUNCTIONSPLINE_H
+
22
+ +
24#include "string"
+
25#include <boost/math/quadrature/gauss_kronrod.hpp>
+
26#include <vector>
+
27#include <array>
+
28#include <cmath>
+
29#include <fstream>
+
30#include <iostream>
+
31#include <sstream>
+
32#include <fileReaders.h>
+
33#include <dftUtils.h>
+
34#include <interpolation.h>
+
35
+
36
+
37namespace dftfe
+
38{
+
+ + +
41 {
+
42 public:
+
43 double
+
44 getRadialValue(double r) const override;
+
45
+
46 std::vector<double>
+
47 getDerivativeValue(double r) const override;
+
48
+
49 double
+
50 getrMinVal() const;
+
51
+
52 protected:
+
53 double d_rMin;
+
54
+
55 alglib::spline1dinterpolant d_radialSplineObject;
+
56 };
+
+
57
+
58} // end of namespace dftfe
+
59
+
60#endif // DFTFE_ATOMCENTEREDSPHERICALFUNCTIONSPLINE_H
+ +
Definition AtomCenteredSphericalFunctionBase.h:28
+
Definition AtomCenteredSphericalFunctionSpline.h:41
+
double getRadialValue(double r) const override
Computes the Radial Value of the Function at distance r.
+
std::vector< double > getDerivativeValue(double r) const override
Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance ...
+ +
alglib::spline1dinterpolant d_radialSplineObject
Definition AtomCenteredSphericalFunctionSpline.h:55
+
double d_rMin
Definition AtomCenteredSphericalFunctionSpline.h:53
+ +
Contains commonly used I/O file utils functions.
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_atom_centered_spherical_function_valence_density_spline_8h.html b/_atom_centered_spherical_function_valence_density_spline_8h.html new file mode 100644 index 000000000..f50641132 --- /dev/null +++ b/_atom_centered_spherical_function_valence_density_spline_8h.html @@ -0,0 +1,116 @@ + + + + + + + +DFT-FE: workspace/include/AtomCenteredSphericalFunctionValenceDensitySpline.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
AtomCenteredSphericalFunctionValenceDensitySpline.h File Reference
+
+
+
#include "AtomCenteredSphericalFunctionSpline.h"
+#include "string"
+#include <boost/math/quadrature/gauss_kronrod.hpp>
+#include <vector>
+#include <array>
+#include <cmath>
+#include <fstream>
+#include <iostream>
+#include <sstream>
+#include <fileReaders.h>
+#include <dftUtils.h>
+#include <interpolation.h>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::AtomCenteredSphericalFunctionValenceDensitySpline
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/_atom_centered_spherical_function_valence_density_spline_8h_source.html b/_atom_centered_spherical_function_valence_density_spline_8h_source.html new file mode 100644 index 000000000..61347c3f3 --- /dev/null +++ b/_atom_centered_spherical_function_valence_density_spline_8h_source.html @@ -0,0 +1,161 @@ + + + + + + + +DFT-FE: workspace/include/AtomCenteredSphericalFunctionValenceDensitySpline.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
AtomCenteredSphericalFunctionValenceDensitySpline.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17// @author Vishal Subramanian, Kartick Ramakrishnan, Sambit Das
+
18//
+
19
+
20#ifndef DFTFE_ATOMCENTEREDSPHERICALFUNCTIONVALENCEDENSITYSPLINE_H
+
21#define DFTFE_ATOMCENTEREDSPHERICALFUNCTIONVALENCEDENSITYSPLINE_H
+
22
+ +
24#include "string"
+
25#include <boost/math/quadrature/gauss_kronrod.hpp>
+
26#include <vector>
+
27#include <array>
+
28#include <cmath>
+
29#include <fstream>
+
30#include <iostream>
+
31#include <sstream>
+
32#include <fileReaders.h>
+
33#include <dftUtils.h>
+
34#include <interpolation.h>
+
35
+
36
+
37namespace dftfe
+
38{
+
+ + +
41 {
+
42 public:
+
43 /**
+
44 * @brief Creates splines for radial-Valence Density from file by applying suitable BC on spline and determining the cutOff Radius
+
45 * @param[in] filename the location of file containing the data
+
46 * @param[in] truncationTol the minimum function value afterwhich the
+
47 * function is truncated.
+
48 * @param[in] consider0thEntry whether to replace the 0th fn value with the
+
49 * 1st value in the data.
+
50 */
+ +
52 std::string filename,
+
53 double truncationTol = 1E-10,
+
54 bool consider0thEntry = true);
+
55 };
+
+
56
+
57} // end of namespace dftfe
+
58
+
59#endif // DFTFE_ATOMCENTEREDSPHERICALFUNCTIONVALENCEDENSITYSPLINE_H
+ +
Definition AtomCenteredSphericalFunctionSpline.h:41
+
Definition AtomCenteredSphericalFunctionValenceDensitySpline.h:41
+
AtomCenteredSphericalFunctionValenceDensitySpline(std::string filename, double truncationTol=1E-10, bool consider0thEntry=true)
Creates splines for radial-Valence Density from file by applying suitable BC on spline and determinin...
+ +
Contains commonly used I/O file utils functions.
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_atom_centered_spherical_function_z_over_r_8h.html b/_atom_centered_spherical_function_z_over_r_8h.html new file mode 100644 index 000000000..9039355bf --- /dev/null +++ b/_atom_centered_spherical_function_z_over_r_8h.html @@ -0,0 +1,111 @@ + + + + + + + +DFT-FE: workspace/include/AtomCenteredSphericalFunctionZOverR.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
AtomCenteredSphericalFunctionZOverR.h File Reference
+
+
+
#include "AtomCenteredSphericalFunctionBase.h"
+#include "string"
+#include <boost/math/quadrature/gauss_kronrod.hpp>
+#include <vector>
+#include <array>
+#include <cmath>
+#include <dftUtils.h>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::AtomCenteredSphericalFunctionZOverR
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/_atom_centered_spherical_function_z_over_r_8h_source.html b/_atom_centered_spherical_function_z_over_r_8h_source.html new file mode 100644 index 000000000..4ef5a20b1 --- /dev/null +++ b/_atom_centered_spherical_function_z_over_r_8h_source.html @@ -0,0 +1,167 @@ + + + + + + + +DFT-FE: workspace/include/AtomCenteredSphericalFunctionZOverR.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
AtomCenteredSphericalFunctionZOverR.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17// @author Vishal Subramanian, Kartick Ramakrishnan, Sambit Das
+
18//
+
19
+
20#ifndef DFTFE_ATOMCENTEREDSPHERICALFUNCTIONZOVERR_H
+
21#define DFTFE_ATOMCENTEREDSPHERICALFUNCTIONZOVERR_H
+
22
+ +
24#include "string"
+
25#include <boost/math/quadrature/gauss_kronrod.hpp>
+
26#include <vector>
+
27#include <array>
+
28#include <cmath>
+
29#include <dftUtils.h>
+
30
+
31
+
32
+
33namespace dftfe
+
34{
+
+ + +
37 {
+
38 public:
+ +
40 double Rtail,
+
41 unsigned int l);
+
42
+
43
+
44
+
45 double
+
46 getRadialValue(double r) const override;
+
47
+
48 std::vector<double>
+
49 getDerivativeValue(double r) const override;
+
50
+
51 double
+
52 getrMinVal() const;
+
53
+
54 private:
+
55 double d_rMin;
+
56 double d_Zval;
+
57 };
+
+
58
+
59} // end of namespace dftfe
+
60
+
61#endif // DFTFE_ATOMCENTEREDSPHERICALFUNCTIONZOVERR_H
+ +
Definition AtomCenteredSphericalFunctionBase.h:28
+
Definition AtomCenteredSphericalFunctionZOverR.h:37
+
double d_rMin
Definition AtomCenteredSphericalFunctionZOverR.h:55
+
std::vector< double > getDerivativeValue(double r) const override
Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance ...
+
double getRadialValue(double r) const override
Computes the Radial Value of the Function at distance r.
+
double d_Zval
Definition AtomCenteredSphericalFunctionZOverR.h:56
+
AtomCenteredSphericalFunctionOneOverR(double Z, double Rtail, unsigned int l)
+ + +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_atom_pseudo_wavefunctions_8h.html b/_atom_pseudo_wavefunctions_8h.html new file mode 100644 index 000000000..b41e437a6 --- /dev/null +++ b/_atom_pseudo_wavefunctions_8h.html @@ -0,0 +1,121 @@ + + + + + + + +DFT-FE: workspace/include/AtomPseudoWavefunctions.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
AtomPseudoWavefunctions.h File Reference
+
+
+
#include "AtomCenteredSphericalFunctionBase.h"
+#include "string"
+#include <boost/math/special_functions/spherical_harmonic.hpp>
+#include <boost/math/special_functions/laguerre.hpp>
+#include <vector>
+#include <array>
+#include <cmath>
+#include <fstream>
+#include <iostream>
+#include <sstream>
+#include <functional>
+#include <fileReaders.h>
+#include <dftParameters.h>
+#include <dftUtils.h>
+#include <interpolation.h>
+#include <headers.h>
+#include <deal.II/grid/tria.h>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::AtomPseudoWavefunctions
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/_atom_pseudo_wavefunctions_8h_source.html b/_atom_pseudo_wavefunctions_8h_source.html new file mode 100644 index 000000000..494660a58 --- /dev/null +++ b/_atom_pseudo_wavefunctions_8h_source.html @@ -0,0 +1,182 @@ + + + + + + + +DFT-FE: workspace/include/AtomPseudoWavefunctions.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
AtomPseudoWavefunctions.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17// @author Vishal Subramanian, Kartick Ramakrishnan, Sambit Das
+
18//
+
19
+
20#ifndef DFTFE_ATOMPSEUDOWAVEFUNCTIONS_H
+
21#define DFTFE_ATOMPSEUDOWAVEFUNCTIONS_H
+
22
+ +
24#include "string"
+
25
+
26#include <boost/math/special_functions/spherical_harmonic.hpp>
+
27#include <boost/math/special_functions/laguerre.hpp>
+
28
+
29#include <vector>
+
30#include <array>
+
31#include <cmath>
+
32#include <fstream>
+
33#include <iostream>
+
34#include <sstream>
+
35#include <functional>
+
36#include <fileReaders.h>
+
37#include <dftParameters.h>
+
38#include <dftUtils.h>
+
39#include <interpolation.h>
+
40#include <headers.h>
+
41#include <deal.II/grid/tria.h>
+
42
+
43namespace dftfe
+
44{
+
+ +
46 {
+
47 public:
+
48 AtomPseudoWavefunctions(std::string filename,
+
49 unsigned int n,
+
50 unsigned int l);
+
51
+
52 double
+
53 getRadialValue(double r) const override;
+
54
+
55 unsigned int
+ +
57
+
58 double
+
59 getrMinVal() const;
+
60
+
61 private:
+
62 unsigned int d_nQuantumNumber;
+
63 unsigned int d_lQuantumNumber;
+
64 double d_rMin;
+
65
+
66 alglib::spline1dinterpolant d_radialSplineObject;
+
67 };
+
+
68
+
69} // end of namespace dftfe
+
70
+
71#endif // DFTFE_ATOMPSEUDOWAVEFUNCTIONS_H
+ +
Definition AtomCenteredSphericalFunctionBase.h:28
+
Definition AtomPseudoWavefunctions.h:46
+
unsigned int d_nQuantumNumber
Definition AtomPseudoWavefunctions.h:62
+
alglib::spline1dinterpolant d_radialSplineObject
Definition AtomPseudoWavefunctions.h:66
+
double d_rMin
Definition AtomPseudoWavefunctions.h:64
+ +
unsigned int getQuantumNumbern() const
+
unsigned int d_lQuantumNumber
Definition AtomPseudoWavefunctions.h:63
+
AtomPseudoWavefunctions(std::string filename, unsigned int n, unsigned int l)
+
double getRadialValue(double r) const override
Computes the Radial Value of the Function at distance r.
+ + +
Contains commonly used I/O file utils functions.
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_atomic_centered_non_local_operator_8h.html b/_atomic_centered_non_local_operator_8h.html new file mode 100644 index 000000000..92e95911b --- /dev/null +++ b/_atomic_centered_non_local_operator_8h.html @@ -0,0 +1,130 @@ + + + + + + + +DFT-FE: workspace/include/AtomicCenteredNonLocalOperator.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
AtomicCenteredNonLocalOperator.h File Reference
+
+
+
#include <MultiVector.h>
+#include <headers.h>
+#include <AtomCenteredSphericalFunctionContainer.h>
+#include <sphericalHarmonicUtils.h>
+#include <BLASWrapper.h>
+#include <memory>
+#include <MemorySpaceType.h>
+#include "FEBasisOperations.h"
+#include <dftUtils.h>
+#include <pseudoUtils.h>
+#include <vectorUtilities.h>
+#include <MPIPatternP2P.h>
+#include <DeviceTypeConfig.h>
+#include <cmath>
+#include <linearAlgebraOperations.h>
+#include "../src/atom/AtomicCenteredNonLocalOperator.t.cc"
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
 
+ + + +

+Namespaces

namespace  dftfe
 
+ + + + +

+Enumerations

enum class  dftfe::CouplingStructure { dftfe::diagonal +, dftfe::dense +, dftfe::blockDiagonal + }
 Enum class that lists used in the non-local Operator. More...
 
+
+ + + + diff --git a/_atomic_centered_non_local_operator_8h_source.html b/_atomic_centered_non_local_operator_8h_source.html new file mode 100644 index 000000000..4325a545b --- /dev/null +++ b/_atomic_centered_non_local_operator_8h_source.html @@ -0,0 +1,683 @@ + + + + + + + +DFT-FE: workspace/include/AtomicCenteredNonLocalOperator.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
AtomicCenteredNonLocalOperator.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17// @author Kartick Ramakrishnan, Vishal Subramanian, Sambit Das
+
18//
+
19
+
20#ifndef DFTFE_ATOMICCENTEREDNONLOCALOPERATOR_H
+
21#define DFTFE_ATOMICCENTEREDNONLOCALOPERATOR_H
+
22#include <MultiVector.h>
+
23#include <headers.h>
+ + +
26#include <BLASWrapper.h>
+
27#include <memory>
+
28#include <MemorySpaceType.h>
+
29#include "FEBasisOperations.h"
+
30#include <headers.h>
+
31#include <dftUtils.h>
+
32#include <pseudoUtils.h>
+
33#include <vectorUtilities.h>
+
34#include <MPIPatternP2P.h>
+
35#include <MultiVector.h>
+
36#include <DeviceTypeConfig.h>
+
37#include <cmath>
+ +
39
+
40namespace dftfe
+
41{
+
42 /**
+
43 * @brief Enum class that lists
+
44 * used in the non-local Operator
+
45 *
+
46 */
+
+ +
48 {
+ +
50 dense,
+ +
52 };
+
+
53
+
54
+
55
+
56 template <typename ValueType, dftfe::utils::MemorySpace memorySpace>
+
+ +
58 {
+
59 public:
+ + +
62 BLASWrapperPtr,
+
63 std::shared_ptr<
+ +
65 basisOperatorPtr,
+
66 std::shared_ptr<AtomCenteredSphericalFunctionContainer>
+
67 atomCenteredSphericalFunctionContainer,
+
68 const MPI_Comm &mpi_comm_parent);
+
69
+
70 /**
+
71 * @brief Resizes various internal data members and selects the kpoint of interest.
+
72 * @param[in] kPointIndex specifies the k-point of interest
+
73 */
+
74 void
+
75 initialiseOperatorActionOnX(unsigned int kPointIndex);
+
76 /**
+
77 * @brief initialises the multivector object, waveFunctionBlockSize and resizes various internal data members.
+
78 * @param[in] waveFunctionBlockSize sets the wavefunction block size for the
+
79 * action of the nonlocal operator.
+
80 * @param[out] sphericalFunctionKetTimesVectorParFlattened, the multivector
+
81 * that is initialised based on blocksize and partitioner.
+
82 */
+
83 void
+ +
85 unsigned int waveFunctionBlockSize,
+ +
87 &sphericalFunctionKetTimesVectorParFlattened);
+
88 /**
+
89 * @brief calls internal function: initialisePartitioner, initialiseKpoint and computeCMatrixEntries
+
90 * @param[in] updateSparsity flag on whether the sparstiy patten was
+
91 * updated, hence the partitioner is updated.
+
92 * @param[in] kPointWeights std::vector<double> of size number of kPoints
+
93 * @param[out] kPointCoordinates std::vector<double> of kPoint coordinates
+
94 * @param[in] basisOperationsPtr HOST FEBasisOperations shared_ptr required
+
95 * to indetify the element ids and quad points
+
96 * @param[in] quadratureIndex quadrature index for sampling the spherical
+
97 * function. Quadrature Index is used to reinit basisOperationsPtr
+
98 */
+
99 void
+ +
101 const bool updateSparsity,
+
102 const std::vector<double> &kPointWeights,
+
103 const std::vector<double> &kPointCoordinates,
+
104 std::shared_ptr<
+ +
106 FEBasisOperations<ValueType, double, dftfe::utils::MemorySpace::HOST>>
+
107 basisOperationsPtr,
+
108 const unsigned int quadratureIndex);
+
109#if defined(DFTFE_WITH_DEVICE)
+
110 // for device specific initialise
+
111 /**
+
112 * @brief
+
113 * @param[in] totalAtomsInCurrentProcessor number of atoms in current
+
114 * processor based on compact support
+
115 * @param[out] totalNonLocalElements number of nonLocal elements in current
+
116 * processor
+
117 * @param[out] numberCellsForEachAtom number of cells associated which each
+
118 * atom in the current processor. vecot of size totalAtomsInCurrentProcessor
+
119 * @param[out] numberCellsAccumNonLocalAtoms number of cells accumulated
+
120 * till iatom in current processor. vector of size
+
121 * totalAtomsInCurrentProcessor
+
122 */
+
123 void
+
124 initialiseCellWaveFunctionPointers(
+ +
126 &cellWaveFunctionMatrix);
+
127
+
128 void
+
129 freeDeviceVectors();
+
130#endif
+
131
+
132 // Getter functions
+
133 // Returns the vector that takes in nonlocalElementIndex and returns the
+
134 // cellID
+
135 const std::vector<unsigned int> &
+ +
137 // Returns the number of atoms in current processor
+
138 unsigned int
+ +
140
+ + +
143
+
144 unsigned int
+ +
146
+
147 unsigned int
+ +
149
+
150 unsigned int
+ +
152
+
153 bool
+
154 atomSupportInElement(unsigned int iElem) const;
+
155
+
156 unsigned int
+
157 getGlobalDofAtomIdSphericalFnPair(const unsigned int atomId,
+
158 const unsigned int alpha) const;
+
159
+
160 unsigned int
+
161 getLocalIdOfDistributedVec(const unsigned int globalId) const;
+
162
+
163 std::vector<unsigned int> &
+ +
165
+
166 std::vector<unsigned int> &
+ +
168
+
169 std::vector<unsigned int> &
+ +
171
+
172 const std::vector<ValueType> &
+ +
174
+
175 const std::vector<ValueType> &
+ +
177
+
178 const std::map<unsigned int, std::vector<unsigned int>> &
+ +
180
+
181 const std::vector<unsigned int> &
+ +
183
+
184 const std::vector<unsigned int> &
+ +
186
+
187 const unsigned int
+ +
189
+
190 const std::vector<unsigned int> &
+ +
192
+
193 const std::map<unsigned int, std::vector<unsigned int>> &
+ +
195
+
196 const std::vector<unsigned int> &
+ +
198
+
199
+
200 // Calls for both device and host
+
201 /**
+
202 * @brief compute sht action of coupling matrix on sphericalFunctionKetTimesVectorParFlattened.
+
203 * @param[in] couplingtype structure of coupling matrix
+
204 * @param[in] couplingMatrix entires of the coupling matrix V in
+
205 * CVCconjtrans
+
206 * @param[out] sphericalFunctionKetTimesVectorParFlattened multivector to
+
207 * store results of CconjtransX which is initiliased using
+
208 * initialiseFlattenedVector call. The results are stored in
+
209 * sphericalFunctionKetTimesVectorParFlattened or internal data member based
+
210 * on flagCopyResultsToMatrix.
+
211 * @param[in] flagCopyResultsToMatrix flag to confirm whether to scal the
+
212 * multivector sphericalFunctionKetTimesVectorParFlattened or store results
+
213 * in internal data member.
+
214 */
+
215 void
+ +
217 const CouplingStructure couplingtype,
+ + +
220 & sphericalFunctionKetTimesVectorParFlattened,
+
221 const bool flagCopyResultsToMatrix = true);
+
222 /**
+
223 * @brief copies the results from internal member to sphericalFunctionKetTimesVectorParFlattened, on which ghost values are called.
+
224 * crucial operation for completion of the full CconjtranX on all cells
+
225 * @param[in] sphericalFunctionKetTimesVectorParFlattened multivector to
+
226 * store results of CconjtransX which is initiliased using
+
227 * initialiseFlattenedVector call
+
228 * @param[in] skip1 flag for compute-communication overlap in ChFSI on GPUs
+
229 * @param[in] skip2 flag for compute-communication overlap in ChFSI on GPUs
+
230 */
+
231 void
+ + +
234 & sphericalFunctionKetTimesVectorParFlattened,
+
235 const bool skipComm = false);
+
236
+
237 /**
+
238 * @brief computes the results of CconjtransX on the cells of interst specied by cellRange
+
239 * @param[in] X inpute cell level vector
+
240 * @param[in] cellRange start and end element id in list of nonlocal
+
241 * elements
+
242 */
+
243 void
+
244 applyCconjtransOnX(const ValueType * X,
+
245 const std::pair<unsigned int, unsigned int> cellRange);
+
246
+
247 /**
+
248 * @brief completes the VCconjX on nodal vector src. The src vector must have all ghost nodes and contraint nodes updated.
+
249 * @param[in] src input nodal vector on which operator acts on.
+
250 * @param[in] kPointIndex kPoint of interst for current operation
+
251 * @param[in] couplingtype structure of coupling matrix
+
252 * @param[in] couplingMatrix entires of the coupling matrix V in
+
253 * CVCconjtrans
+
254 * @param[out] sphericalFunctionKetTimesVectorParFlattened multivector to
+
255 * store results of CconjtransX which is initiliased using
+
256 * initialiseFlattenedVector call
+
257 */
+
258 void
+ + +
261 const unsigned int kPointIndex,
+
262 const CouplingStructure couplingtype,
+ + +
265 & sphericalFunctionKetTimesVectorParFlattened,
+
266 const bool flagScaleInternalMatrix = false);
+
267
+
268 /**
+
269 * @brief completes the action of CVCconjtranspose on nodal vector src. The src vector must have all ghost nodes and contraint nodes updated.
+
270 * @param[in] src input nodal vector on which operator acts on.
+
271 * @param[in] kPointIndex kPoint of interst for current operation
+
272 * @param[in] couplingtype structure of coupling matrix
+
273 * @param[in] couplingMatrix entires of the coupling matrix V in
+
274 * CVCconjtrans
+
275 * @param[in] sphericalFunctionKetTimesVectorParFlattened multivector to
+
276 * store results of CconjtransX which is initiliased using
+
277 * initialiseFlattenedVector call
+
278 * @param[out] dst output nodal vector where the results of the operator is
+
279 * copied into.
+
280 */
+
281 void
+ + +
284 const unsigned int kPointIndex,
+
285 const CouplingStructure couplingtype,
+ + +
288 &sphericalFunctionKetTimesVectorParFlattened,
+ +
290 /**
+
291 * @brief adds the result of CVCtX onto Xout for both CPU and GPU calls
+
292 * @param[out] Xout memoryStorage object of size
+
293 * cells*numberOfNodex*BlockSize. Typical case holds the results of H_{loc}X
+
294 * @param[in] cellRange start and end element id in list of nonlocal
+
295 * elements
+
296 */
+
297 void
+
298 applyCOnVCconjtransX(ValueType * Xout,
+
299 const std::pair<unsigned int, unsigned int> cellRange);
+
300
+
301
+
302 protected:
+ +
304 std::vector<double> d_kPointWeights;
+
305 std::vector<double> d_kPointCoordinates;
+
306 std::shared_ptr<dftfe::linearAlgebra::BLASWrapper<memorySpace>>
+ +
308 std::shared_ptr<AtomCenteredSphericalFunctionContainer>
+ +
310 std::shared_ptr<
+ + +
313 std::vector<unsigned int> d_numberCellsForEachAtom;
+
314
+
315 std::shared_ptr<
+ + +
318
+
319
+
320 // Required by force.cc
+ +
322 // Required for stress compute
+
323 std::vector<ValueType>
+ +
325
+
326 /// map from cell number to set of non local atom ids (local numbering)
+
327 std::map<unsigned int, std::vector<unsigned int>>
+ +
329
+
330 /// vector of size num physical cells
+
331 std::vector<unsigned int> d_nonTrivialSphericalFnPerCell;
+
332
+
333 /// vector of size num physical cell with starting index for each cell for
+
334 /// the above array
+
335 std::vector<unsigned int> d_nonTrivialSphericalFnsCellStartIndex;
+
336
+ +
338
+
339 /// map from local nonlocal atomid to vector over cells
+
340 std::map<unsigned int, std::vector<unsigned int>>
+ +
342
+ +
344
+ +
346
+
347 // The above set of variables are needed in force class
+
348
+
349#ifdef USE_COMPLEX
+
350 std::vector<distributedCPUVec<std::complex<double>>>
+ +
352
+
353#else
+
354 std::vector<distributedCPUVec<double>> d_SphericalFunctionKetTimesVectorPar;
+
355#endif
+
356
+
357 std::map<std::pair<unsigned int, unsigned int>, unsigned int>
+ +
359
+
360
+ + +
363 std::map<std::pair<unsigned int, unsigned int>, unsigned int>
+ +
365 std::vector<std::vector<
+
366 std::vector<dftfe::utils::MemoryStorage<ValueType, memorySpace>>>>
+ +
368 dealii::ConditionalOStream pcout;
+
369 const MPI_Comm d_mpi_communicator;
+
370 const unsigned int d_this_mpi_process;
+
371 const unsigned int d_n_mpi_processes;
+ + +
374
+
375 unsigned int d_totalAtomsInCurrentProc; // number of atoms of interst with
+
376 // compact in current processor
+
377 unsigned int
+
378 d_totalNonlocalElems; // number of nonlocal FE celss having nonlocal
+
379 // contribution in current processor
+
380 unsigned int d_totalNonLocalEntries; // Total number of nonlocal components
+
381 unsigned int
+
382 d_maxSingleAtomContribution; // maximum number of nonlocal indexes across
+
383 // all atoms of interset
+
384 std::vector<unsigned int> d_numberCellsAccumNonLocalAtoms;
+
385 unsigned int d_numberNodesPerElement; // Access from BasisOperator WHile
+
386 // filling CMatrixEntries
+ + +
389 unsigned int d_kPointIndex;
+
390 bool d_isMallocCalled = false;
+
391 // Host CMatrix Entries are stored here
+
392 std::vector<std::vector<std::vector<ValueType>>> d_CMatrixEntriesConjugate,
+ +
394
+
395 private:
+
396 /**
+
397 * @brief stores the d_kpointWeights, d_kpointCoordinates. Other data members regarding are computed from container data object
+
398 * @param[in] kPointWeights std::vector<double> of size number of kPoints
+
399 * @param[out] kPointCoordinates std::vector<double> of kPoint coordinates
+
400 */
+
401 void
+
402 initKpoints(const std::vector<double> &kPointWeights,
+
403 const std::vector<double> &kPointCoordinates);
+
404 /**
+
405 * @brief creates the partitioner for the distributed vector based on sparsity patten from sphericalFn container.
+
406 * @param[in] basisOperationsPtr HOST FEBasisOperations shared_ptr required
+
407 * to indetify the element ids and quad points.
+
408 */
+
409 void
+ +
411 /**
+
412 * @brief computes the entries in C matrix for CPUs and GPUs. On GPUs the entries are copied to a flattened vector on device memory.
+
413 * Further on GPUs, various maps are created crucial for accessing and
+
414 * padding entries in Cmatrix flattened device.
+
415 * @param[in] basisOperationsPtr HOST FEBasisOperations shared_ptr required
+
416 * to indetify the element ids and quad points
+
417 * @param[in] quadratureIndex quadrature index for sampling the spherical
+
418 * function. Quadrature Index is used to reinit basisOperationsPtr
+
419 */
+
420 void
+ +
422 std::shared_ptr<
+ +
424 FEBasisOperations<ValueType, double, dftfe::utils::MemorySpace::HOST>>
+
425 basisOperationsPtr,
+
426 const unsigned int quadratureIndex);
+
427
+
428 std::map<
+
429 unsigned int,
+ + +
432 std::vector<dftfe::global_size_type>
+ + + +
436 std::vector<unsigned int> d_nonlocalElemIdToCellIdVector;
+
437#if defined(DFTFE_WITH_DEVICE)
+ +
439 d_sphericalFnTimesWavefunctionMatrix;
+
440 ValueType **hostPointerCDagger, **hostPointerCDaggeOutTemp,
+
441 **hostWfcPointers;
+
442 ValueType * d_wfcStartPointer;
+
443 ValueType **devicePointerCDagger, **devicePointerCDaggerOutTemp,
+
444 **deviceWfcPointers;
+
445 std::vector<unsigned int> d_nonlocalElemIdToLocalElemIdMap;
+
446
+
447 // Data structures moved from KSOperatorDevice
+
448 std::vector<ValueType> d_cellHamiltonianMatrixNonLocalFlattenedConjugate;
+ +
450 d_cellHamiltonianMatrixNonLocalFlattenedConjugateDevice;
+
451 std::vector<ValueType> d_cellHamiltonianMatrixNonLocalFlattenedTranspose;
+ +
453 d_cellHamiltonianMatrixNonLocalFlattenedTransposeDevice;
+ +
455 d_cellHamMatrixTimesWaveMatrixNonLocalDevice;
+ +
457 d_sphericalFnTimesVectorAllCellsDevice;
+
458
+
459
+
460 std::vector<ValueType> d_sphericalFnTimesVectorAllCellsReduction;
+ +
462 d_sphericalFnTimesVectorAllCellsReductionDevice;
+
463
+
464 std::vector<unsigned int> d_sphericalFnIdsParallelNumberingMap;
+ +
466 d_sphericalFnIdsParallelNumberingMapDevice;
+
467 std::vector<int> d_indexMapFromPaddedNonLocalVecToParallelNonLocalVec;
+ +
469 d_indexMapFromPaddedNonLocalVecToParallelNonLocalVecDevice;
+
470 std::vector<unsigned int> d_cellNodeIdMapNonLocalToLocal;
+
471
+ +
473 d_cellNodeIdMapNonLocalToLocalDevice;
+
474#endif
+
475 };
+
+
476
+
477
+
478
+
479} // namespace dftfe
+
480#include "../src/atom/AtomicCenteredNonLocalOperator.t.cc"
+
481
+
482#endif // DFTFE_ATOMICCENTEREDNONLOCALOPERATOR_H
+ + + + + + + +
Definition AtomicCenteredNonLocalOperator.h:58
+
const std::map< unsigned int, std::vector< unsigned int > > & getAtomIdToNonTrivialSphericalFnCellStartIndex() const
+
void initKpoints(const std::vector< double > &kPointWeights, const std::vector< double > &kPointCoordinates)
stores the d_kpointWeights, d_kpointCoordinates. Other data members regarding are computed from conta...
+
std::vector< ValueType > d_atomCenteredKpointIndexedSphericalFnQuadValues
Definition AtomicCenteredNonLocalOperator.h:321
+
unsigned int getGlobalDofAtomIdSphericalFnPair(const unsigned int atomId, const unsigned int alpha) const
+
void applyCconjtransOnX(const ValueType *X, const std::pair< unsigned int, unsigned int > cellRange)
computes the results of CconjtransX on the cells of interst specied by cellRange
+
unsigned int d_sumNonTrivialSphericalFnOverAllCells
Definition AtomicCenteredNonLocalOperator.h:343
+
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueType, dftfe::utils::MemorySpace::HOST > > d_sphericalFnTimesWavefunMatrix
Definition AtomicCenteredNonLocalOperator.h:431
+
dealii::IndexSet d_locallyOwnedAtomCenteredFnIdsCurrentProcess
Definition AtomicCenteredNonLocalOperator.h:361
+
unsigned int d_totalNonlocalElems
Definition AtomicCenteredNonLocalOperator.h:378
+
std::vector< double > d_kPointWeights
Definition AtomicCenteredNonLocalOperator.h:304
+
bool d_AllReduceCompleted
Definition AtomicCenteredNonLocalOperator.h:303
+
unsigned int d_totalAtomsInCurrentProc
Definition AtomicCenteredNonLocalOperator.h:375
+
const std::vector< ValueType > & getAtomCenteredKpointTimesSphericalFnTimesDistFromAtomQuadValues() const
+
const dftfe::utils::MemoryStorage< dftfe::global_size_type, memorySpace > & getFlattenedNonLocalCellDofIndexToProcessDofIndexMap() const
+
std::vector< unsigned int > & getAtomWiseNumberCellsInCompactSupport() const
+
void applyCVCconjtransOnX(const dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &src, const unsigned int kPointIndex, const CouplingStructure couplingtype, const dftfe::utils::MemoryStorage< ValueType, memorySpace > &couplingMatrix, dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &sphericalFunctionKetTimesVectorParFlattened, dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &dst)
completes the action of CVCconjtranspose on nodal vector src. The src vector must have all ghost node...
+
std::map< std::pair< unsigned int, unsigned int >, unsigned int > d_sphericalFunctionIdsNumberingMapCurrentProcess
Definition AtomicCenteredNonLocalOperator.h:358
+
const MPI_Comm d_mpi_communicator
Definition AtomicCenteredNonLocalOperator.h:369
+
const std::vector< unsigned int > & getNonTrivialSphericalFnsCellStartIndex() const
+
std::vector< unsigned int > d_nonTrivialSphericalFnsCellStartIndex
Definition AtomicCenteredNonLocalOperator.h:335
+
const unsigned int d_n_mpi_processes
Definition AtomicCenteredNonLocalOperator.h:371
+
dftfe::utils::MemoryStorage< dftfe::global_size_type, memorySpace > d_flattenedNonLocalCellDofIndexToProcessDofIndexMap
Definition AtomicCenteredNonLocalOperator.h:435
+
unsigned int getTotalNonLocalElementsInCurrentProcessor() const
+
void applyCOnVCconjtransX(ValueType *Xout, const std::pair< unsigned int, unsigned int > cellRange)
adds the result of CVCtX onto Xout for both CPU and GPU calls
+
unsigned int getTotalNonLocalEntriesCurrentProcessor() const
+
unsigned int d_kPointIndex
Definition AtomicCenteredNonLocalOperator.h:389
+
dealii::IndexSet d_ghostSphericalFunctionIdsCurrentProcess
Definition AtomicCenteredNonLocalOperator.h:373
+
std::vector< std::vector< std::vector< ValueType > > > d_CMatrixEntriesConjugate
Definition AtomicCenteredNonLocalOperator.h:392
+
const unsigned int getTotalNonTrivialSphericalFnsOverAllCells() const
+
unsigned int d_numberWaveFunctions
Definition AtomicCenteredNonLocalOperator.h:388
+
std::vector< std::vector< std::vector< ValueType > > > d_CMatrixEntriesTranspose
Definition AtomicCenteredNonLocalOperator.h:393
+
unsigned int getLocalIdOfDistributedVec(const unsigned int globalId) const
+
std::vector< unsigned int > & getAtomWiseNumberCellsAccumulated() const
+
unsigned int getMaxSingleAtomEntries() const
+
std::vector< distributedCPUVec< double > > d_SphericalFunctionKetTimesVectorPar
Definition AtomicCenteredNonLocalOperator.h:354
+
std::map< std::pair< unsigned int, unsigned int >, unsigned int > d_AtomCenteredFnIdsNumberingMapCurrentProcess
Definition AtomicCenteredNonLocalOperator.h:364
+
const std::vector< unsigned int > & getSphericalFnTimesVectorFlattenedVectorLocalIds() const
+
void initialiseOperatorActionOnX(unsigned int kPointIndex)
Resizes various internal data members and selects the kpoint of interest.
+
void computeCMatrixEntries(std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, dftfe::utils::MemorySpace::HOST > > basisOperationsPtr, const unsigned int quadratureIndex)
computes the entries in C matrix for CPUs and GPUs. On GPUs the entries are copied to a flattened vec...
+
const unsigned int d_this_mpi_process
Definition AtomicCenteredNonLocalOperator.h:370
+
const std::vector< unsigned int > & getNonTrivialSphericalFnsPerCell() const
+
const std::map< unsigned int, std::vector< unsigned int > > & getCellIdToAtomIdsLocalCompactSupportMap() const
+
const std::vector< ValueType > & getAtomCenteredKpointIndexedSphericalFnQuadValues() const
+
unsigned int getTotalAtomInCurrentProcessor() const
+
void applyAllReduceOnCconjtransX(dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &sphericalFunctionKetTimesVectorParFlattened, const bool skipComm=false)
copies the results from internal member to sphericalFunctionKetTimesVectorParFlattened,...
+
std::map< unsigned int, std::vector< unsigned int > > d_atomIdToNonTrivialSphericalFnCellStartIndex
map from local nonlocal atomid to vector over cells
Definition AtomicCenteredNonLocalOperator.h:341
+
std::vector< unsigned int > d_nonTrivialSphericalFnPerCell
vector of size num physical cells
Definition AtomicCenteredNonLocalOperator.h:331
+
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > d_BLASWrapperPtr
Definition AtomicCenteredNonLocalOperator.h:307
+
std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, memorySpace > > d_basisOperatorPtr
Definition AtomicCenteredNonLocalOperator.h:317
+
AtomicCenteredNonLocalOperator(std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > BLASWrapperPtr, std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, memorySpace > > basisOperatorPtr, std::shared_ptr< AtomCenteredSphericalFunctionContainer > atomCenteredSphericalFunctionContainer, const MPI_Comm &mpi_comm_parent)
+
std::shared_ptr< AtomCenteredSphericalFunctionContainer > d_atomCenteredSphericalFunctionContainer
Definition AtomicCenteredNonLocalOperator.h:309
+
void applyVOnCconjtransX(const CouplingStructure couplingtype, const dftfe::utils::MemoryStorage< ValueType, memorySpace > &couplingMatrix, dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &sphericalFunctionKetTimesVectorParFlattened, const bool flagCopyResultsToMatrix=true)
compute sht action of coupling matrix on sphericalFunctionKetTimesVectorParFlattened.
+
void initialisePartitioner()
creates the partitioner for the distributed vector based on sparsity patten from sphericalFn containe...
+
std::vector< unsigned int > d_nonlocalElemIdToCellIdVector
Definition AtomicCenteredNonLocalOperator.h:436
+
const std::vector< unsigned int > & getNonlocalElementToCellIdVector() const
+
bool atomSupportInElement(unsigned int iElem) const
+
std::map< unsigned int, std::vector< unsigned int > > d_cellIdToAtomIdsLocalCompactSupportMap
map from cell number to set of non local atom ids (local numbering)
Definition AtomicCenteredNonLocalOperator.h:328
+
std::vector< std::vector< std::vector< dftfe::utils::MemoryStorage< ValueType, memorySpace > > > > d_CMatrixEntries
Definition AtomicCenteredNonLocalOperator.h:367
+
const std::vector< unsigned int > & getNonTrivialAllCellsSphericalFnAlphaToElemIdMap() const
+
std::vector< unsigned int > d_numberCellsForEachAtom
Definition AtomicCenteredNonLocalOperator.h:313
+
bool d_isMallocCalled
Definition AtomicCenteredNonLocalOperator.h:390
+
std::shared_ptr< const utils::mpi::MPIPatternP2P< dftfe::utils::MemorySpace::HOST > > d_mpiPatternP2P
Definition AtomicCenteredNonLocalOperator.h:312
+
std::vector< unsigned int > d_sphericalFnTimesVectorFlattenedVectorLocalIds
Definition AtomicCenteredNonLocalOperator.h:345
+
dealii::ConditionalOStream pcout
Definition AtomicCenteredNonLocalOperator.h:368
+
unsigned int d_maxSingleAtomContribution
Definition AtomicCenteredNonLocalOperator.h:382
+
std::vector< unsigned int > & getNonLocalElemIdToLocalElemIdMap() const
+
unsigned int d_locallyOwnedCells
Definition AtomicCenteredNonLocalOperator.h:387
+
std::vector< unsigned int > d_numberCellsAccumNonLocalAtoms
Definition AtomicCenteredNonLocalOperator.h:384
+
unsigned int d_totalNonLocalEntries
Definition AtomicCenteredNonLocalOperator.h:380
+
std::vector< dftfe::global_size_type > d_flattenedNonLocalCellDofIndexToProcessDofIndexVector
Definition AtomicCenteredNonLocalOperator.h:433
+
std::vector< double > d_kPointCoordinates
Definition AtomicCenteredNonLocalOperator.h:305
+
unsigned int d_numberNodesPerElement
Definition AtomicCenteredNonLocalOperator.h:385
+
void intitialisePartitionerKPointsAndComputeCMatrixEntries(const bool updateSparsity, const std::vector< double > &kPointWeights, const std::vector< double > &kPointCoordinates, std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, dftfe::utils::MemorySpace::HOST > > basisOperationsPtr, const unsigned int quadratureIndex)
calls internal function: initialisePartitioner, initialiseKpoint and computeCMatrixEntries
+
dealii::IndexSet d_locallyOwnedSphericalFunctionIdsCurrentProcess
Definition AtomicCenteredNonLocalOperator.h:372
+
void applyVCconjtransOnX(const dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &src, const unsigned int kPointIndex, const CouplingStructure couplingtype, const dftfe::utils::MemoryStorage< ValueType, memorySpace > &couplingMatrix, dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &sphericalFunctionKetTimesVectorParFlattened, const bool flagScaleInternalMatrix=false)
completes the VCconjX on nodal vector src. The src vector must have all ghost nodes and contraint nod...
+
std::vector< ValueType > d_atomCenteredKpointTimesSphericalFnTimesDistFromAtomQuadValues
Definition AtomicCenteredNonLocalOperator.h:324
+
void initialiseFlattenedDataStructure(unsigned int waveFunctionBlockSize, dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &sphericalFunctionKetTimesVectorParFlattened)
initialises the multivector object, waveFunctionBlockSize and resizes various internal data members.
+
dealii::IndexSet d_ghostAtomCenteredFnIdsCurrentProcess
Definition AtomicCenteredNonLocalOperator.h:362
+
std::vector< unsigned int > d_nonTrivialAllCellsSphericalFnAlphaToElemIdMap
Definition AtomicCenteredNonLocalOperator.h:337
+
Definition FEBasisOperations.h:85
+
Definition BLASWrapper.h:34
+
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition MultiVector.h:127
+
Definition MemoryStorage.h:33
+
A class template to store the communication pattern (i.e., which entries/nodes to receive from which ...
Definition MPIPatternP2P.h:57
+ + + +
Definition FEBasisOperations.h:31
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
CouplingStructure
Enum class that lists used in the non-local Operator.
Definition AtomicCenteredNonLocalOperator.h:48
+ + + + + + +
+ + + + diff --git a/_atomic_centered_non_local_operator_kernels_device_8h.html b/_atomic_centered_non_local_operator_kernels_device_8h.html new file mode 100644 index 000000000..7eb8e74f5 --- /dev/null +++ b/_atomic_centered_non_local_operator_kernels_device_8h.html @@ -0,0 +1,118 @@ + + + + + + + +DFT-FE: workspace/include/AtomicCenteredNonLocalOperatorKernelsDevice.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
AtomicCenteredNonLocalOperatorKernelsDevice.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::AtomicCenteredNonLocalOperatorKernelsDevice
 
+ + + + + + + + + + +

+Functions

template<typename ValueType >
void dftfe::AtomicCenteredNonLocalOperatorKernelsDevice::copyFromParallelNonLocalVecToAllCellsVec (const unsigned int numWfcs, const unsigned int numNonLocalCells, const unsigned int maxSingleAtomPseudoWfc, const ValueType *sphericalFnTimesWfcParallelVec, ValueType *sphericalFnTimesWfcAllCellsVec, const int *indexMapPaddedToParallelVec)
 
template<typename ValueType >
void dftfe::AtomicCenteredNonLocalOperatorKernelsDevice::copyToDealiiParallelNonLocalVec (const unsigned int numWfcs, const unsigned int totalEntries, const ValueType *sphericalFnTimesWfcParallelVec, ValueType *sphericalFnTimesWfcDealiiParallelVec, const unsigned int *indexMapDealiiParallelNumbering)
 
template<typename ValueType >
void dftfe::AtomicCenteredNonLocalOperatorKernelsDevice::addNonLocalContribution (const unsigned int numberCellsForAtom, const unsigned int numberNodesPerElement, const unsigned int numberWfc, const unsigned int numberCellsTraversed, const dftfe::utils::MemoryStorage< ValueType, dftfe::utils::MemorySpace::DEVICE > &nonLocalContribution, ValueType *TotalContribution, const dftfe::utils::MemoryStorage< unsigned int, dftfe::utils::MemorySpace::DEVICE > &cellNodeIdMapNonLocalToLocal)
 
+
+ + + + diff --git a/_atomic_centered_non_local_operator_kernels_device_8h_source.html b/_atomic_centered_non_local_operator_kernels_device_8h_source.html new file mode 100644 index 000000000..47e2e5d7c --- /dev/null +++ b/_atomic_centered_non_local_operator_kernels_device_8h_source.html @@ -0,0 +1,179 @@ + + + + + + + +DFT-FE: workspace/include/AtomicCenteredNonLocalOperatorKernelsDevice.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
AtomicCenteredNonLocalOperatorKernelsDevice.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17// @author Kartick Ramakrishnan
+
18//
+
19#ifndef DFTFE_ATOMICCENTEREDNONLOCALOPERATORDEVICEKERNELS_H
+
20#define DFTFE_ATOMICCENTEREDNONLOCALOPERATORDEVICEKERNELS_H
+
21
+ +
23#include <DeviceAPICalls.h>
+ +
25#include <DeviceTypeConfig.h>
+ +
27
+
28namespace dftfe
+
29{
+
+
30 namespace AtomicCenteredNonLocalOperatorKernelsDevice
+
31 {
+
32 template <typename ValueType>
+
33 void
+ +
35 const unsigned int numWfcs,
+
36 const unsigned int numNonLocalCells,
+
37 const unsigned int maxSingleAtomPseudoWfc,
+
38 const ValueType * sphericalFnTimesWfcParallelVec,
+
39 ValueType * sphericalFnTimesWfcAllCellsVec,
+
40 const int * indexMapPaddedToParallelVec);
+
41
+
42
+
43 template <typename ValueType>
+
44 void
+ +
46 const unsigned int numWfcs,
+
47 const unsigned int totalEntries,
+
48 const ValueType * sphericalFnTimesWfcParallelVec,
+
49 ValueType * sphericalFnTimesWfcDealiiParallelVec,
+
50 const unsigned int *indexMapDealiiParallelNumbering);
+
51 template <typename ValueType>
+
52 void
+ +
54 const unsigned int numberCellsForAtom,
+
55 const unsigned int numberNodesPerElement,
+
56 const unsigned int numberWfc,
+
57 const unsigned int numberCellsTraversed,
+
58 const dftfe::utils::MemoryStorage<ValueType,
+ +
60 & nonLocalContribution,
+
61 ValueType *TotalContribution,
+
62 const dftfe::utils::MemoryStorage<unsigned int,
+ +
64 &cellNodeIdMapNonLocalToLocal);
+
65
+
66
+
67 } // namespace AtomicCenteredNonLocalOperatorKernelsDevice
+
+
68
+
69
+
70
+
71} // namespace dftfe
+
72
+
73#endif // DFTFE_ATOMICCENTEREDNONLOCALOPERATORDEVICEKERNELS_H
+ + + + +
Definition MemoryStorage.h:33
+ +
void copyFromParallelNonLocalVecToAllCellsVec(const unsigned int numWfcs, const unsigned int numNonLocalCells, const unsigned int maxSingleAtomPseudoWfc, const ValueType *sphericalFnTimesWfcParallelVec, ValueType *sphericalFnTimesWfcAllCellsVec, const int *indexMapPaddedToParallelVec)
+
void copyToDealiiParallelNonLocalVec(const unsigned int numWfcs, const unsigned int totalEntries, const ValueType *sphericalFnTimesWfcParallelVec, ValueType *sphericalFnTimesWfcDealiiParallelVec, const unsigned int *indexMapDealiiParallelNumbering)
+
void addNonLocalContribution(const unsigned int numberCellsForAtom, const unsigned int numberNodesPerElement, const unsigned int numberWfc, const unsigned int numberCellsTraversed, const dftfe::utils::MemoryStorage< ValueType, dftfe::utils::MemorySpace::DEVICE > &nonLocalContribution, ValueType *TotalContribution, const dftfe::utils::MemoryStorage< unsigned int, dftfe::utils::MemorySpace::DEVICE > &cellNodeIdMapNonLocalToLocal)
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_b_f_g_s_non_linear_solver_8h.html b/_b_f_g_s_non_linear_solver_8h.html new file mode 100644 index 000000000..b2b34fffe --- /dev/null +++ b/_b_f_g_s_non_linear_solver_8h.html @@ -0,0 +1,107 @@ + + + + + + + +DFT-FE: workspace/include/BFGSNonLinearSolver.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
BFGSNonLinearSolver.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::BFGSNonLinearSolver
 Class implementing a modified BFGS optimization scheme. More...
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/_b_f_g_s_non_linear_solver_8h_source.html b/_b_f_g_s_non_linear_solver_8h_source.html new file mode 100644 index 000000000..3dfc0f82d --- /dev/null +++ b/_b_f_g_s_non_linear_solver_8h_source.html @@ -0,0 +1,365 @@ + + + + + + + +DFT-FE: workspace/include/BFGSNonLinearSolver.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
BFGSNonLinearSolver.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#ifndef BFGSNonLinearSolver_h
+
19#define BFGSNonLinearSolver_h
+
20
+
21
+
22#include "nonLinearSolver.h"
+ +
24namespace dftfe
+
25{
+
26 /**
+
27 * @brief Class implementing a modified BFGS optimization scheme
+
28 *
+
29 * @author Nikhil Kodali
+
30 */
+
+ +
32 {
+
33 public:
+
34 /**
+
35 * @brief Constructor.
+
36 *
+
37 * @param usePreconditioner Boolean parameter specifying whether or not to use the preconditioner.
+
38 * @param useRFOStep Boolean parameter specifying whether or not the RFO step is used.
+
39 * @param maxNumberIterations Maximum number of iterations.
+
40 * @param debugLevel Debug output level:
+
41 * 0 - no debug output
+
42 * 1 - limited debug output
+
43 * 2 - all debug output.
+
44 * @param mpi_comm_parent The mpi communicator used.
+
45 * @param trustRadius_maximum Maximum trust region radius.
+
46 * @param trustRadius_initial Initial trust region radius.
+
47 * @param trustRadius_minimum mimimum trust region radius (will reset BFGS).
+
48 */
+ +
50 const bool usePreconditioner,
+
51 const bool useRFOStep,
+
52 const unsigned int maxNumberIterations,
+
53 const unsigned int debugLevel,
+
54 const MPI_Comm & mpi_comm_parent,
+
55 const double trustRadius_maximum = 0.5,
+
56 const double trustRadius_initial = 0.02,
+
57 const double trustRadius_minimum = 1.0e-4,
+
58 const bool isCurvatureOnlyLineSearchStoppingCondition = false);
+
59
+
60 /**
+
61 * @brief Destructor.
+
62 */
+ +
64
+
65 /**
+
66 * @brief Solve non-linear problem using a modified BFGS method.
+
67 *
+
68 * @param problem[in] nonlinearSolverProblem object.
+
69 * @param checkpointFileName[in] if string is non-empty, creates checkpoint file
+
70 * named checkpointFileName for every nonlinear iteration. If restart is set
+
71 * to true, checkpointFileName must match the name of the checkpoint file.
+
72 * Empty string will throw an error.
+
73 * @param restart[in] boolean specifying whether this is a restart solve using the checkpoint file
+
74 * specified by checkpointFileName.
+
75 * @return Return value indicating success or failure.
+
76 */
+ + +
79 const std::string checkpointFileName = "",
+
80 const bool restart = false);
+
81
+
82
+
83 /**
+
84 * @brief Create checkpoint file for current state of the BFGS solver.
+
85 *
+
86 */
+
87 void
+
88 save(const std::string &checkpointFileName);
+
89
+
90 private:
+
91 /**
+
92 * @brief initialize hessian, either preconditioner or identity matrix.
+
93 */
+
94 void
+ +
96
+
97 /**
+
98 * @brief Update Hessian according to damped BFGS rule: Procedure 18.2 of Nocedal and Wright.
+
99 */
+
100 void
+ +
102
+
103 /**
+
104 * @brief Scale hessian according to eqn 6.20 of Nocedal and Wright.
+
105 */
+
106 void
+ +
108
+
109 /**
+
110 * @brief Check if the step satifies the Strong Wolfe conditons.
+
111 */
+
112 void
+ +
114
+
115 /**
+
116 * @brief Compute step using the Rational Function Method.
+
117 */
+
118 void
+ +
120
+
121 /**
+
122 * @brief Compute the Quasi-Newton Step.
+
123 */
+
124 void
+ +
126
+
127 /**
+
128 * @brief Compute the final update step using the trust radius and whether or not the previous step was accepted.
+
129 */
+
130 void
+ +
132
+
133 /**
+
134 * @brief Estimate the trust radius for the next step based on the previous step and check for trust radius max/min conditons and reset BFGS if needed.
+
135 */
+
136 void
+ +
138
+
139
+
140 /**
+
141 * @brief Update solution x -> x + step.
+
142 *
+
143 * @param step update step vector.
+
144 * @param problem nonlinearSolverProblem object.
+
145 *
+
146 * @return bool true if valid update and false if increment bound exceeded
+
147 *
+
148 */
+
149 bool
+
150 updateSolution(const std::vector<double> &step,
+
151 nonlinearSolverProblem & problem);
+
152
+
153
+
154 /**
+
155 * @brief Load BFGS solver state from checkpoint file.
+
156 *
+
157 */
+
158 void
+
159 load(const std::string &checkpointFileName);
+
160
+
161 /// storage for the value and gradient of the nonlinear problem in the
+
162 /// current bfgs step.
+
163 std::vector<double> d_gradient, d_value;
+
164
+
165 /// storage for the value and gradient of the nonlinear problem evaluated at
+
166 /// the end of the current bfgs step.
+
167 std::vector<double> d_gradientNew, d_valueNew;
+
168
+
169 /// storage for the step taken in last BFGS step, step computed in the
+
170 /// corrent BFGS step and the update vector computed in the current bfgs
+
171 /// step.
+
172 std::vector<double> d_deltaX, d_deltaXNew, d_updateVector;
+
173
+
174 /// storage for number of unknowns to be solved for in the nonlinear
+
175 /// problem.
+
176 unsigned int d_numberUnknowns;
+
177
+
178 /// storage for current bfgs iteration count
+
179 unsigned int d_iter;
+
180
+
181 /// storage for the S matrix in RFO framework, initialized to starting.
+
182 /// Hessian Guess
+
183 std::vector<double> d_Srfo;
+
184
+
185 /// storage for the hessian in current bfgs step.
+
186 std::vector<double> d_hessian;
+
187
+
188 /// storage for inf norm of the update step.
+ +
190
+
191 /// storage for trust region parameters.
+ + +
194
+
195 /// boolean parameter for step accepteance and Wolfe conditions.
+ + +
198
+
199 ///
+
200 /// flag to check if hessian is scaled.
+
201 ///
+ +
203
+
204 //
+ +
206
+
207 /// Flag to store the reset state, 0 if step is accepted, 1 if reset occured
+
208 /// and no steps are accepted, 2 if two resets occur without step being
+
209 /// accepted (failure of BFGS).
+ +
211
+ + +
214
+
215 // parallel objects
+ +
217 dealii::ConditionalOStream pcout;
+
218 };
+
+
219
+
220} // namespace dftfe
+
221#endif // BFGSNonLinearSolver_h
+
Class implementing a modified BFGS optimization scheme.
Definition BFGSNonLinearSolver.h:32
+
dealii::ConditionalOStream pcout
Definition BFGSNonLinearSolver.h:217
+
~BFGSNonLinearSolver()
Destructor.
+
void checkWolfe()
Check if the step satifies the Strong Wolfe conditons.
+
const bool d_useRFOStep
Definition BFGSNonLinearSolver.h:213
+
bool d_wolfeCurvature
Definition BFGSNonLinearSolver.h:196
+
void scaleHessian()
Scale hessian according to eqn 6.20 of Nocedal and Wright.
+
std::vector< double > d_gradientNew
Definition BFGSNonLinearSolver.h:167
+
std::vector< double > d_valueNew
Definition BFGSNonLinearSolver.h:167
+
std::vector< double > d_deltaXNew
Definition BFGSNonLinearSolver.h:172
+
bool updateSolution(const std::vector< double > &step, nonlinearSolverProblem &problem)
Update solution x -> x + step.
+
bool d_stepAccepted
boolean parameter for step accepteance and Wolfe conditions.
Definition BFGSNonLinearSolver.h:196
+
double d_trustRadiusInitial
storage for trust region parameters.
Definition BFGSNonLinearSolver.h:192
+
nonLinearSolver::ReturnValueType solve(nonlinearSolverProblem &problem, const std::string checkpointFileName="", const bool restart=false)
Solve non-linear problem using a modified BFGS method.
+
void computeNewtonStep()
Compute the Quasi-Newton Step.
+
std::vector< double > d_value
Definition BFGSNonLinearSolver.h:163
+
void load(const std::string &checkpointFileName)
Load BFGS solver state from checkpoint file.
+
const bool d_usePreconditioner
Definition BFGSNonLinearSolver.h:213
+
double d_trustRadius
Definition BFGSNonLinearSolver.h:193
+
double d_trustRadiusMax
Definition BFGSNonLinearSolver.h:192
+
void save(const std::string &checkpointFileName)
Create checkpoint file for current state of the BFGS solver.
+
unsigned int d_iter
storage for current bfgs iteration count
Definition BFGSNonLinearSolver.h:179
+
unsigned int d_numberUnknowns
Definition BFGSNonLinearSolver.h:176
+
BFGSNonLinearSolver(const bool usePreconditioner, const bool useRFOStep, const unsigned int maxNumberIterations, const unsigned int debugLevel, const MPI_Comm &mpi_comm_parent, const double trustRadius_maximum=0.5, const double trustRadius_initial=0.02, const double trustRadius_minimum=1.0e-4, const bool isCurvatureOnlyLineSearchStoppingCondition=false)
Constructor.
+
void computeStep()
Compute the final update step using the trust radius and whether or not the previous step was accepte...
+
void initializeHessian(nonlinearSolverProblem &problem)
initialize hessian, either preconditioner or identity matrix.
+
double d_trustRadiusMin
Definition BFGSNonLinearSolver.h:192
+
void updateHessian()
Update Hessian according to damped BFGS rule: Procedure 18.2 of Nocedal and Wright.
+
std::vector< double > d_updateVector
Definition BFGSNonLinearSolver.h:172
+
int d_isReset
Definition BFGSNonLinearSolver.h:210
+
bool d_wolfeSufficientDec
Definition BFGSNonLinearSolver.h:196
+
bool d_useSingleAtomSolutionsInitialGuess
Definition BFGSNonLinearSolver.h:212
+
bool d_wolfeSatisfied
Definition BFGSNonLinearSolver.h:197
+
std::vector< double > d_Srfo
Definition BFGSNonLinearSolver.h:183
+
bool d_hessianScaled
Definition BFGSNonLinearSolver.h:202
+
void computeTrustRadius(nonlinearSolverProblem &problem)
Estimate the trust radius for the next step based on the previous step and check for trust radius max...
+
double d_normDeltaXnew
storage for inf norm of the update step.
Definition BFGSNonLinearSolver.h:189
+
std::vector< double > d_hessian
storage for the hessian in current bfgs step.
Definition BFGSNonLinearSolver.h:186
+
MPI_Comm mpi_communicator
Definition BFGSNonLinearSolver.h:216
+
std::vector< double > d_gradient
Definition BFGSNonLinearSolver.h:163
+
void computeRFOStep()
Compute step using the Rational Function Method.
+
std::vector< double > d_deltaX
Definition BFGSNonLinearSolver.h:172
+
bool d_isCurvatureOnlyLineSearchStoppingCondition
Definition BFGSNonLinearSolver.h:205
+
Base class for non-linear algebraic solver.
Definition nonLinearSolver.h:39
+
ReturnValueType
Definition nonLinearSolver.h:45
+
Abstract class for solver functions.
Definition nonlinearSolverProblem.h:30
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+ +
+ + + + diff --git a/_b_l_a_s_wrapper_8h.html b/_b_l_a_s_wrapper_8h.html new file mode 100644 index 000000000..d12b5b1d6 --- /dev/null +++ b/_b_l_a_s_wrapper_8h.html @@ -0,0 +1,112 @@ + + + + + + + +DFT-FE: workspace/include/BLASWrapper.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
BLASWrapper.h File Reference
+
+
+
#include <dftfeDataTypes.h>
+#include <MemorySpaceType.h>
+#include <complex>
+#include <TypeConfig.h>
+#include <DeviceTypeConfig.h>
+#include <cmath>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
 
+ + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::linearAlgebra
 
+
+ + + + diff --git a/_b_l_a_s_wrapper_8h_source.html b/_b_l_a_s_wrapper_8h_source.html new file mode 100644 index 000000000..808e0fc12 --- /dev/null +++ b/_b_l_a_s_wrapper_8h_source.html @@ -0,0 +1,1279 @@ + + + + + + + +DFT-FE: workspace/include/BLASWrapper.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
BLASWrapper.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#ifndef BLASWrapper_h
+
19#define BLASWrapper_h
+
20
+
21#include <dftfeDataTypes.h>
+
22#include <MemorySpaceType.h>
+
23#include <complex>
+
24#include <TypeConfig.h>
+
25#include <DeviceTypeConfig.h>
+
26#include <cmath>
+
27
+
28
+
29namespace dftfe
+
30{
+
+
31 namespace linearAlgebra
+
32 {
+
33 template <dftfe::utils::MemorySpace memorySpace>
+ +
35
+
36 template <>
+
+ +
38 {
+
39 public:
+ +
41 // Real-Single Precision GEMM
+
42 void
+
43 xgemm(const char transA,
+
44 const char transB,
+
45 const unsigned int m,
+
46 const unsigned int n,
+
47 const unsigned int k,
+
48 const float * alpha,
+
49 const float * A,
+
50 const unsigned int lda,
+
51 const float * B,
+
52 const unsigned int ldb,
+
53 const float * beta,
+
54 float * C,
+
55 const unsigned int ldc) const;
+
56 // Complex-Single Precision GEMM
+
57 void
+
58 xgemm(const char transA,
+
59 const char transB,
+
60 const unsigned int m,
+
61 const unsigned int n,
+
62 const unsigned int k,
+
63 const std::complex<float> *alpha,
+
64 const std::complex<float> *A,
+
65 const unsigned int lda,
+
66 const std::complex<float> *B,
+
67 const unsigned int ldb,
+
68 const std::complex<float> *beta,
+
69 std::complex<float> * C,
+
70 const unsigned int ldc) const;
+
71
+
72 // Real-double precison GEMM
+
73 void
+
74 xgemm(const char transA,
+
75 const char transB,
+
76 const unsigned int m,
+
77 const unsigned int n,
+
78 const unsigned int k,
+
79 const double * alpha,
+
80 const double * A,
+
81 const unsigned int lda,
+
82 const double * B,
+
83 const unsigned int ldb,
+
84 const double * beta,
+
85 double * C,
+
86 const unsigned int ldc) const;
+
87
+
88
+
89 // Complex-double precision GEMM
+
90 void
+
91 xgemm(const char transA,
+
92 const char transB,
+
93 const unsigned int m,
+
94 const unsigned int n,
+
95 const unsigned int k,
+
96 const std::complex<double> *alpha,
+
97 const std::complex<double> *A,
+
98 const unsigned int lda,
+
99 const std::complex<double> *B,
+
100 const unsigned int ldb,
+
101 const std::complex<double> *beta,
+
102 std::complex<double> * C,
+
103 const unsigned int ldc) const;
+
104
+
105 void
+
106 xgemv(const char transA,
+
107 const unsigned int m,
+
108 const unsigned int n,
+
109 const double * alpha,
+
110 const double * A,
+
111 const unsigned int lda,
+
112 const double * x,
+
113 const unsigned int incx,
+
114 const double * beta,
+
115 double * y,
+
116 const unsigned int incy) const;
+
117
+
118 void
+
119 xgemv(const char transA,
+
120 const unsigned int m,
+
121 const unsigned int n,
+
122 const float * alpha,
+
123 const float * A,
+
124 const unsigned int lda,
+
125 const float * x,
+
126 const unsigned int incx,
+
127 const float * beta,
+
128 float * y,
+
129 const unsigned int incy) const;
+
130
+
131 void
+
132 xgemv(const char transA,
+
133 const unsigned int m,
+
134 const unsigned int n,
+
135 const std::complex<double> *alpha,
+
136 const std::complex<double> *A,
+
137 const unsigned int lda,
+
138 const std::complex<double> *x,
+
139 const unsigned int incx,
+
140 const std::complex<double> *beta,
+
141 std::complex<double> * y,
+
142 const unsigned int incy) const;
+
143
+
144 void
+
145 xgemv(const char transA,
+
146 const unsigned int m,
+
147 const unsigned int n,
+
148 const std::complex<float> *alpha,
+
149 const std::complex<float> *A,
+
150 const unsigned int lda,
+
151 const std::complex<float> *x,
+
152 const unsigned int incx,
+
153 const std::complex<float> *beta,
+
154 std::complex<float> * y,
+
155 const unsigned int incy) const;
+
156
+
157
+
158 template <typename ValueType1, typename ValueType2>
+
159 void
+
160 xscal(ValueType1 * x,
+
161 const ValueType2 alpha,
+
162 const dftfe::size_type n) const;
+
163
+
164 // Real-Float scaling of Real-vector
+
165
+
166
+
167 // Real double Norm2
+
168 void
+
169 xnrm2(const unsigned int n,
+
170 const double * x,
+
171 const unsigned int incx,
+
172 const MPI_Comm & mpi_communicator,
+
173 double * result) const;
+
174
+
175
+
176 // Comples double Norm2
+
177 void
+
178 xnrm2(const unsigned int n,
+
179 const std::complex<double> *x,
+
180 const unsigned int incx,
+
181 const MPI_Comm & mpi_communicator,
+
182 double * result) const;
+
183 // Real dot product
+
184 void
+
185 xdot(const unsigned int N,
+
186 const double * X,
+
187 const unsigned int INCX,
+
188 const double * Y,
+
189 const unsigned int INCY,
+
190 double * result) const;
+
191 // Real dot proeuct with all Reduce call
+
192 void
+
193 xdot(const unsigned int N,
+
194 const double * X,
+
195 const unsigned int INCX,
+
196 const double * Y,
+
197 const unsigned int INCY,
+
198 const MPI_Comm & mpi_communicator,
+
199 double * result) const;
+
200
+
201 // Complex dot product
+
202 void
+
203 xdot(const unsigned int N,
+
204 const std::complex<double> *X,
+
205 const unsigned int INCX,
+
206 const std::complex<double> *Y,
+
207 const unsigned int INCY,
+
208 std::complex<double> * result) const;
+
209
+
210 // Complex dot proeuct with all Reduce call
+
211 void
+
212 xdot(const unsigned int N,
+
213 const std::complex<double> *X,
+
214 const unsigned int INCX,
+
215 const std::complex<double> *Y,
+
216 const unsigned int INCY,
+
217 const MPI_Comm & mpi_communicator,
+
218 std::complex<double> * result) const;
+
219
+
220
+
221 // Real double Ax+y
+
222 void
+
223 xaxpy(const unsigned int n,
+
224 const double * alpha,
+
225 const double * x,
+
226 const unsigned int incx,
+
227 double * y,
+
228 const unsigned int incy) const;
+
229
+
230 // Complex double Ax+y
+
231 void
+
232 xaxpy(const unsigned int n,
+
233 const std::complex<double> *alpha,
+
234 const std::complex<double> *x,
+
235 const unsigned int incx,
+
236 std::complex<double> * y,
+
237 const unsigned int incy) const;
+
238
+
239 // Real copy of double data
+
240 void
+
241 xcopy(const unsigned int n,
+
242 const double * x,
+
243 const unsigned int incx,
+
244 double * y,
+
245 const unsigned int incy) const;
+
246
+
247 // Complex double copy of data
+
248 void
+
249 xcopy(const unsigned int n,
+
250 const std::complex<double> *x,
+
251 const unsigned int incx,
+
252 std::complex<double> * y,
+
253 const unsigned int incy) const;
+
254
+
255 // Real copy of float data
+
256 void
+
257 xcopy(const unsigned int n,
+
258 const float * x,
+
259 const unsigned int incx,
+
260 float * y,
+
261 const unsigned int incy) const;
+
262
+
263 // Complex float copy of data
+
264 void
+
265 xcopy(const unsigned int n,
+
266 const std::complex<float> *x,
+
267 const unsigned int incx,
+
268 std::complex<float> * y,
+
269 const unsigned int incy) const;
+
270
+
271 // Real double symmetric matrix-vector product
+
272 void
+
273 xsymv(const char UPLO,
+
274 const unsigned int N,
+
275 const double * alpha,
+
276 const double * A,
+
277 const unsigned int LDA,
+
278 const double * X,
+
279 const unsigned int INCX,
+
280 const double * beta,
+
281 double * C,
+
282 const unsigned int INCY) const;
+
283
+
284 void
+
285 xgemmBatched(const char transA,
+
286 const char transB,
+
287 const unsigned int m,
+
288 const unsigned int n,
+
289 const unsigned int k,
+
290 const double * alpha,
+
291 const double * A[],
+
292 const unsigned int lda,
+
293 const double * B[],
+
294 const unsigned int ldb,
+
295 const double * beta,
+
296 double * C[],
+
297 const unsigned int ldc,
+
298 const int batchCount) const;
+
299
+
300 void
+
301 xgemmBatched(const char transA,
+
302 const char transB,
+
303 const unsigned int m,
+
304 const unsigned int n,
+
305 const unsigned int k,
+
306 const std::complex<double> *alpha,
+
307 const std::complex<double> *A[],
+
308 const unsigned int lda,
+
309 const std::complex<double> *B[],
+
310 const unsigned int ldb,
+
311 const std::complex<double> *beta,
+
312 std::complex<double> * C[],
+
313 const unsigned int ldc,
+
314 const int batchCount) const;
+
315
+
316
+
317 void
+
318 xgemmBatched(const char transA,
+
319 const char transB,
+
320 const unsigned int m,
+
321 const unsigned int n,
+
322 const unsigned int k,
+
323 const float * alpha,
+
324 const float * A[],
+
325 const unsigned int lda,
+
326 const float * B[],
+
327 const unsigned int ldb,
+
328 const float * beta,
+
329 float * C[],
+
330 const unsigned int ldc,
+
331 const int batchCount) const;
+
332
+
333 void
+
334 xgemmBatched(const char transA,
+
335 const char transB,
+
336 const unsigned int m,
+
337 const unsigned int n,
+
338 const unsigned int k,
+
339 const std::complex<float> *alpha,
+
340 const std::complex<float> *A[],
+
341 const unsigned int lda,
+
342 const std::complex<float> *B[],
+
343 const unsigned int ldb,
+
344 const std::complex<float> *beta,
+
345 std::complex<float> * C[],
+
346 const unsigned int ldc,
+
347 const int batchCount) const;
+
348
+
349
+
350 void
+
351 xgemmStridedBatched(const char transA,
+
352 const char transB,
+
353 const unsigned int m,
+
354 const unsigned int n,
+
355 const unsigned int k,
+
356 const double * alpha,
+
357 const double * A,
+
358 const unsigned int lda,
+
359 long long int strideA,
+
360 const double * B,
+
361 const unsigned int ldb,
+
362 long long int strideB,
+
363 const double * beta,
+
364 double * C,
+
365 const unsigned int ldc,
+
366 long long int strideC,
+
367 const int batchCount) const;
+
368
+
369 void
+
370 xgemmStridedBatched(const char transA,
+
371 const char transB,
+
372 const unsigned int m,
+
373 const unsigned int n,
+
374 const unsigned int k,
+
375 const std::complex<double> *alpha,
+
376 const std::complex<double> *A,
+
377 const unsigned int lda,
+
378 long long int strideA,
+
379 const std::complex<double> *B,
+
380 const unsigned int ldb,
+
381 long long int strideB,
+
382 const std::complex<double> *beta,
+
383 std::complex<double> * C,
+
384 const unsigned int ldc,
+
385 long long int strideC,
+
386 const int batchCount) const;
+
387
+
388 void
+
389 xgemmStridedBatched(const char transA,
+
390 const char transB,
+
391 const unsigned int m,
+
392 const unsigned int n,
+
393 const unsigned int k,
+
394 const std::complex<float> *alpha,
+
395 const std::complex<float> *A,
+
396 const unsigned int lda,
+
397 long long int strideA,
+
398 const std::complex<float> *B,
+
399 const unsigned int ldb,
+
400 long long int strideB,
+
401 const std::complex<float> *beta,
+
402 std::complex<float> * C,
+
403 const unsigned int ldc,
+
404 long long int strideC,
+
405 const int batchCount) const;
+
406
+
407 void
+
408 xgemmStridedBatched(const char transA,
+
409 const char transB,
+
410 const unsigned int m,
+
411 const unsigned int n,
+
412 const unsigned int k,
+
413 const float * alpha,
+
414 const float * A,
+
415 const unsigned int lda,
+
416 long long int strideA,
+
417 const float * B,
+
418 const unsigned int ldb,
+
419 long long int strideB,
+
420 const float * beta,
+
421 float * C,
+
422 const unsigned int ldc,
+
423 long long int strideC,
+
424 const int batchCount) const;
+
425
+
426 template <typename ValueTypeComplex, typename ValueTypeReal>
+
427 void
+ +
429 const ValueTypeComplex *complexArr,
+
430 ValueTypeReal * realArr,
+
431 ValueTypeReal * imagArr);
+
432
+
433
+
434 template <typename ValueTypeComplex, typename ValueTypeReal>
+
435 void
+ +
437 const ValueTypeReal * realArr,
+
438 const ValueTypeReal * imagArr,
+
439 ValueTypeComplex * complexArr);
+
440
+
441 template <typename ValueType1, typename ValueType2>
+
442 void
+ +
444 const ValueType1 * valueType1Arr,
+
445 ValueType2 * valueType2Arr);
+
446
+
447
+
448 template <typename ValueType1, typename ValueType2>
+
449 void
+ +
451 const dftfe::size_type contiguousBlockSize,
+
452 const dftfe::size_type numContiguousBlocks,
+
453 const ValueType1 * copyFromVec,
+
454 ValueType2 * copyToVecBlock,
+
455 const dftfe::global_size_type *copyFromVecStartingContiguousBlockIds);
+
456
+
457
+
458
+
459 template <typename ValueType1, typename ValueType2>
+
460 void
+ +
462 const dftfe::size_type contiguousBlockSize,
+
463 const dftfe::size_type numContiguousBlocks,
+
464 const ValueType1 * copyFromVecBlock,
+
465 ValueType2 * copyToVec,
+
466 const dftfe::global_size_type *copyFromVecStartingContiguousBlockIds);
+
467
+
468 template <typename ValueType1, typename ValueType2>
+
469 void
+ +
471 const dftfe::size_type blockSizeFrom,
+
472 const dftfe::size_type numBlocks,
+
473 const dftfe::size_type startingId,
+
474 const ValueType1 * copyFromVec,
+
475 ValueType2 * copyToVec);
+
476
+
477
+
478 template <typename ValueType1, typename ValueType2>
+
479 void
+ +
481 const dftfe::size_type strideTo,
+
482 const dftfe::size_type strideFrom,
+
483 const dftfe::size_type numBlocks,
+
484 const dftfe::size_type startingToId,
+
485 const dftfe::size_type startingFromId,
+
486 const ValueType1 * copyFromVec,
+
487 ValueType2 * copyToVec);
+
488
+
489
+
490 template <typename ValueType1, typename ValueType2>
+
491 void
+ +
493 const dftfe::size_type blockSizeFrom,
+
494 const dftfe::size_type numBlocks,
+
495 const dftfe::size_type startingId,
+
496 const ValueType1 * copyFromVec,
+
497 ValueType2 * copyToVec);
+
498
+
499 template <typename ValueType1, typename ValueType2>
+
500 void
+
501 axpby(const unsigned int n,
+
502 const ValueType2 alpha,
+
503 const ValueType1 * x,
+
504 const ValueType2 beta,
+
505 ValueType1 * y) const;
+
506
+
507 template <typename ValueType>
+
508 void
+ +
510 const dftfe::size_type numContiguousBlocks,
+
511 const ValueType * addFromVec,
+
512 ValueType * addToVec,
+ +
514 *addToVecStartingContiguousBlockIds) const;
+
515
+
516 template <typename ValueType1, typename ValueType2>
+
517 void
+ +
519 const dftfe::size_type numContiguousBlocks,
+
520 const ValueType1 a,
+
521 const ValueType1 * s,
+
522 const ValueType2 * addFromVec,
+
523 ValueType2 * addToVec,
+ +
525 *addToVecStartingContiguousBlockIds) const;
+
526
+
527 template <typename ValueType1, typename ValueType2>
+
528 void
+
529 stridedBlockScale(const dftfe::size_type contiguousBlockSize,
+
530 const dftfe::size_type numContiguousBlocks,
+
531 const ValueType1 a,
+
532 const ValueType1 * s,
+
533 ValueType2 * x);
+
534
+
535 template <typename ValueType1, typename ValueType2>
+
536 void
+ +
538 const dftfe::size_type contiguousBlockSize,
+
539 const dftfe::size_type numContiguousBlocks,
+
540 const ValueType1 a,
+
541 const ValueType1 * s,
+
542 const ValueType2 * copyFromVec,
+
543 ValueType2 * copyToVecBlock,
+
544 const dftfe::global_size_type *copyFromVecStartingContiguousBlockIds);
+
545
+
546 void
+
547 add(double * y,
+
548 const double * x,
+
549 const double alpha,
+
550 const dftfe::size_type size);
+
551
+
552 template <typename ValueType>
+
553 void
+
554 sadd(ValueType * y,
+
555 ValueType * x,
+
556 const ValueType beta,
+
557 const dftfe::size_type size);
+
558
+
559 private:
+
560 };
+
+
561#if defined(DFTFE_WITH_DEVICE)
+
562 template <>
+ +
564 {
+
565 public:
+
566 BLASWrapper();
+
567 // Real-Single Precision GEMM
+
568 void
+
569 xgemm(const char transA,
+
570 const char transB,
+
571 const unsigned int m,
+
572 const unsigned int n,
+
573 const unsigned int k,
+
574 const float * alpha,
+
575 const float * A,
+
576 const unsigned int lda,
+
577 const float * B,
+
578 const unsigned int ldb,
+
579 const float * beta,
+
580 float * C,
+
581 const unsigned int ldc) const;
+
582 // Complex-Single Precision GEMM
+
583 void
+
584 xgemm(const char transA,
+
585 const char transB,
+
586 const unsigned int m,
+
587 const unsigned int n,
+
588 const unsigned int k,
+
589 const std::complex<float> *alpha,
+
590 const std::complex<float> *A,
+
591 const unsigned int lda,
+
592 const std::complex<float> *B,
+
593 const unsigned int ldb,
+
594 const std::complex<float> *beta,
+
595 std::complex<float> * C,
+
596 const unsigned int ldc) const;
+
597
+
598 // Real-double precison GEMM
+
599 void
+
600 xgemm(const char transA,
+
601 const char transB,
+
602 const unsigned int m,
+
603 const unsigned int n,
+
604 const unsigned int k,
+
605 const double * alpha,
+
606 const double * A,
+
607 const unsigned int lda,
+
608 const double * B,
+
609 const unsigned int ldb,
+
610 const double * beta,
+
611 double * C,
+
612 const unsigned int ldc) const;
+
613
+
614
+
615 // Complex-double precision GEMM
+
616 void
+
617 xgemm(const char transA,
+
618 const char transB,
+
619 const unsigned int m,
+
620 const unsigned int n,
+
621 const unsigned int k,
+
622 const std::complex<double> *alpha,
+
623 const std::complex<double> *A,
+
624 const unsigned int lda,
+
625 const std::complex<double> *B,
+
626 const unsigned int ldb,
+
627 const std::complex<double> *beta,
+
628 std::complex<double> * C,
+
629 const unsigned int ldc) const;
+
630
+
631
+
632 void
+
633 xgemv(const char transA,
+
634 const unsigned int m,
+
635 const unsigned int n,
+
636 const double * alpha,
+
637 const double * A,
+
638 const unsigned int lda,
+
639 const double * x,
+
640 const unsigned int incx,
+
641 const double * beta,
+
642 double * y,
+
643 const unsigned int incy) const;
+
644
+
645 void
+
646 xgemv(const char transA,
+
647 const unsigned int m,
+
648 const unsigned int n,
+
649 const float * alpha,
+
650 const float * A,
+
651 const unsigned int lda,
+
652 const float * x,
+
653 const unsigned int incx,
+
654 const float * beta,
+
655 float * y,
+
656 const unsigned int incy) const;
+
657
+
658 void
+
659 xgemv(const char transA,
+
660 const unsigned int m,
+
661 const unsigned int n,
+
662 const std::complex<double> *alpha,
+
663 const std::complex<double> *A,
+
664 const unsigned int lda,
+
665 const std::complex<double> *x,
+
666 const unsigned int incx,
+
667 const std::complex<double> *beta,
+
668 std::complex<double> * y,
+
669 const unsigned int incy) const;
+
670
+
671 void
+
672 xgemv(const char transA,
+
673 const unsigned int m,
+
674 const unsigned int n,
+
675 const std::complex<float> *alpha,
+
676 const std::complex<float> *A,
+
677 const unsigned int lda,
+
678 const std::complex<float> *x,
+
679 const unsigned int incx,
+
680 const std::complex<float> *beta,
+
681 std::complex<float> * y,
+
682 const unsigned int incy) const;
+
683
+
684
+
685
+
686 template <typename ValueType1, typename ValueType2>
+
687 void
+
688 xscal(ValueType1 * x,
+
689 const ValueType2 alpha,
+
690 const dftfe::size_type n) const;
+
691
+
692
+
693
+
694 // Real double Norm2
+
695 void
+
696 xnrm2(const unsigned int n,
+
697 const double * x,
+
698 const unsigned int incx,
+
699 const MPI_Comm & mpi_communicator,
+
700 double * result) const;
+
701
+
702
+
703 // Complex double Norm2
+
704 void
+
705 xnrm2(const unsigned int n,
+
706 const std::complex<double> *x,
+
707 const unsigned int incx,
+
708 const MPI_Comm & mpi_communicator,
+
709 double * result) const;
+
710
+
711 // Real dot product
+
712 void
+
713 xdot(const unsigned int N,
+
714 const double * X,
+
715 const unsigned int INCX,
+
716 const double * Y,
+
717 const unsigned int INCY,
+
718 double * result) const;
+
719
+
720 //
+
721 // Real dot product
+
722 void
+
723 xdot(const unsigned int N,
+
724 const double * X,
+
725 const unsigned int INCX,
+
726 const double * Y,
+
727 const unsigned int INCY,
+
728 const MPI_Comm & mpi_communicator,
+
729 double * result) const;
+
730
+
731 // Complex dot product
+
732 void
+
733 xdot(const unsigned int N,
+
734 const std::complex<double> *X,
+
735 const unsigned int INCX,
+
736 const std::complex<double> *Y,
+
737 const unsigned int INCY,
+
738 std::complex<double> * result) const;
+
739
+
740 // Complex dot product
+
741 void
+
742 xdot(const unsigned int N,
+
743 const std::complex<double> *X,
+
744 const unsigned int INCX,
+
745 const std::complex<double> *Y,
+
746 const unsigned int INCY,
+
747 const MPI_Comm & mpi_communicator,
+
748 std::complex<double> * result) const;
+
749
+
750 // Real double Ax+y
+
751 void
+
752 xaxpy(const unsigned int n,
+
753 const double * alpha,
+
754 const double * x,
+
755 const unsigned int incx,
+
756 double * y,
+
757 const unsigned int incy) const;
+
758
+
759 // Complex double Ax+y
+
760 void
+
761 xaxpy(const unsigned int n,
+
762 const std::complex<double> *alpha,
+
763 const std::complex<double> *x,
+
764 const unsigned int incx,
+
765 std::complex<double> * y,
+
766 const unsigned int incy) const;
+
767
+
768 // Real copy of double data
+
769 void
+
770 xcopy(const unsigned int n,
+
771 const double * x,
+
772 const unsigned int incx,
+
773 double * y,
+
774 const unsigned int incy) const;
+
775
+
776 // Complex double copy of data
+
777 void
+
778 xcopy(const unsigned int n,
+
779 const std::complex<double> *x,
+
780 const unsigned int incx,
+
781 std::complex<double> * y,
+
782 const unsigned int incy) const;
+
783
+
784 // Real copy of float data
+
785 void
+
786 xcopy(const unsigned int n,
+
787 const float * x,
+
788 const unsigned int incx,
+
789 float * y,
+
790 const unsigned int incy) const;
+
791
+
792 // Complex float copy of data
+
793 void
+
794 xcopy(const unsigned int n,
+
795 const std::complex<float> *x,
+
796 const unsigned int incx,
+
797 std::complex<float> * y,
+
798 const unsigned int incy) const;
+
799
+
800 // Real double symmetric matrix-vector product
+
801 void
+
802 xsymv(const char UPLO,
+
803 const unsigned int N,
+
804 const double * alpha,
+
805 const double * A,
+
806 const unsigned int LDA,
+
807 const double * X,
+
808 const unsigned int INCX,
+
809 const double * beta,
+
810 double * C,
+
811 const unsigned int INCY) const;
+
812
+
813 void
+
814 xgemmBatched(const char transA,
+
815 const char transB,
+
816 const unsigned int m,
+
817 const unsigned int n,
+
818 const unsigned int k,
+
819 const double * alpha,
+
820 const double * A[],
+
821 const unsigned int lda,
+
822 const double * B[],
+
823 const unsigned int ldb,
+
824 const double * beta,
+
825 double * C[],
+
826 const unsigned int ldc,
+
827 const int batchCount) const;
+
828
+
829 void
+
830 xgemmBatched(const char transA,
+
831 const char transB,
+
832 const unsigned int m,
+
833 const unsigned int n,
+
834 const unsigned int k,
+
835 const std::complex<double> *alpha,
+
836 const std::complex<double> *A[],
+
837 const unsigned int lda,
+
838 const std::complex<double> *B[],
+
839 const unsigned int ldb,
+
840 const std::complex<double> *beta,
+
841 std::complex<double> * C[],
+
842 const unsigned int ldc,
+
843 const int batchCount) const;
+
844
+
845 void
+
846 xgemmBatched(const char transA,
+
847 const char transB,
+
848 const unsigned int m,
+
849 const unsigned int n,
+
850 const unsigned int k,
+
851 const float * alpha,
+
852 const float * A[],
+
853 const unsigned int lda,
+
854 const float * B[],
+
855 const unsigned int ldb,
+
856 const float * beta,
+
857 float * C[],
+
858 const unsigned int ldc,
+
859 const int batchCount) const;
+
860
+
861 void
+
862 xgemmBatched(const char transA,
+
863 const char transB,
+
864 const unsigned int m,
+
865 const unsigned int n,
+
866 const unsigned int k,
+
867 const std::complex<float> *alpha,
+
868 const std::complex<float> *A[],
+
869 const unsigned int lda,
+
870 const std::complex<float> *B[],
+
871 const unsigned int ldb,
+
872 const std::complex<float> *beta,
+
873 std::complex<float> * C[],
+
874 const unsigned int ldc,
+
875 const int batchCount) const;
+
876
+
877 void
+
878 xgemmStridedBatched(const char transA,
+
879 const char transB,
+
880 const unsigned int m,
+
881 const unsigned int n,
+
882 const unsigned int k,
+
883 const double * alpha,
+
884 const double * A,
+
885 const unsigned int lda,
+
886 long long int strideA,
+
887 const double * B,
+
888 const unsigned int ldb,
+
889 long long int strideB,
+
890 const double * beta,
+
891 double * C,
+
892 const unsigned int ldc,
+
893 long long int strideC,
+
894 const int batchCount) const;
+
895
+
896 void
+
897 xgemmStridedBatched(const char transA,
+
898 const char transB,
+
899 const unsigned int m,
+
900 const unsigned int n,
+
901 const unsigned int k,
+
902 const std::complex<double> *alpha,
+
903 const std::complex<double> *A,
+
904 const unsigned int lda,
+
905 long long int strideA,
+
906 const std::complex<double> *B,
+
907 const unsigned int ldb,
+
908 long long int strideB,
+
909 const std::complex<double> *beta,
+
910 std::complex<double> * C,
+
911 const unsigned int ldc,
+
912 long long int strideC,
+
913 const int batchCount) const;
+
914
+
915 void
+
916 xgemmStridedBatched(const char transA,
+
917 const char transB,
+
918 const unsigned int m,
+
919 const unsigned int n,
+
920 const unsigned int k,
+
921 const std::complex<float> *alpha,
+
922 const std::complex<float> *A,
+
923 const unsigned int lda,
+
924 long long int strideA,
+
925 const std::complex<float> *B,
+
926 const unsigned int ldb,
+
927 long long int strideB,
+
928 const std::complex<float> *beta,
+
929 std::complex<float> * C,
+
930 const unsigned int ldc,
+
931 long long int strideC,
+
932 const int batchCount) const;
+
933
+
934 void
+
935 xgemmStridedBatched(const char transA,
+
936 const char transB,
+
937 const unsigned int m,
+
938 const unsigned int n,
+
939 const unsigned int k,
+
940 const float * alpha,
+
941 const float * A,
+
942 const unsigned int lda,
+
943 long long int strideA,
+
944 const float * B,
+
945 const unsigned int ldb,
+
946 long long int strideB,
+
947 const float * beta,
+
948 float * C,
+
949 const unsigned int ldc,
+
950 long long int strideC,
+
951 const int batchCount) const;
+
952
+
953 template <typename ValueTypeComplex, typename ValueTypeReal>
+
954 void
+
955 copyComplexArrToRealArrs(const dftfe::size_type size,
+
956 const ValueTypeComplex *complexArr,
+
957 ValueTypeReal * realArr,
+
958 ValueTypeReal * imagArr);
+
959
+
960
+
961 template <typename ValueTypeComplex, typename ValueTypeReal>
+
962 void
+
963 copyRealArrsToComplexArr(const dftfe::size_type size,
+
964 const ValueTypeReal * realArr,
+
965 const ValueTypeReal * imagArr,
+
966 ValueTypeComplex * complexArr);
+
967
+
968 template <typename ValueType1, typename ValueType2>
+
969 void
+
970 copyValueType1ArrToValueType2Arr(const dftfe::size_type size,
+
971 const ValueType1 * valueType1Arr,
+
972 ValueType2 * valueType2Arr);
+
973
+
974
+
975 template <typename ValueType1, typename ValueType2>
+
976 void
+
977 stridedCopyToBlock(
+
978 const dftfe::size_type contiguousBlockSize,
+
979 const dftfe::size_type numContiguousBlocks,
+
980 const ValueType1 * copyFromVec,
+
981 ValueType2 * copyToVecBlock,
+
982 const dftfe::global_size_type *copyFromVecStartingContiguousBlockIds);
+
983
+
984
+
985
+
986 template <typename ValueType1, typename ValueType2>
+
987 void
+
988 stridedCopyFromBlock(
+
989 const dftfe::size_type contiguousBlockSize,
+
990 const dftfe::size_type numContiguousBlocks,
+
991 const ValueType1 * copyFromVecBlock,
+
992 ValueType2 * copyToVec,
+
993 const dftfe::global_size_type *copyFromVecStartingContiguousBlockIds);
+
994
+
995 template <typename ValueType1, typename ValueType2>
+
996 void
+
997 stridedCopyToBlockConstantStride(const dftfe::size_type blockSizeTo,
+
998 const dftfe::size_type blockSizeFrom,
+
999 const dftfe::size_type numBlocks,
+
1000 const dftfe::size_type startingId,
+
1001 const ValueType1 * copyFromVec,
+
1002 ValueType2 * copyToVec);
+
1003
+
1004
+
1005 template <typename ValueType1, typename ValueType2>
+
1006 void
+
1007 stridedCopyConstantStride(const dftfe::size_type blockSize,
+
1008 const dftfe::size_type strideTo,
+
1009 const dftfe::size_type strideFrom,
+
1010 const dftfe::size_type numBlocks,
+
1011 const dftfe::size_type startingToId,
+
1012 const dftfe::size_type startingFromId,
+
1013 const ValueType1 * copyFromVec,
+
1014 ValueType2 * copyToVec);
+
1015
+
1016
+
1017 template <typename ValueType1, typename ValueType2>
+
1018 void
+
1019 stridedCopyFromBlockConstantStride(const dftfe::size_type blockSizeTo,
+
1020 const dftfe::size_type blockSizeFrom,
+
1021 const dftfe::size_type numBlocks,
+
1022 const dftfe::size_type startingId,
+
1023 const ValueType1 * copyFromVec,
+
1024 ValueType2 * copyToVec);
+
1025 template <typename ValueType1, typename ValueType2>
+
1026 void
+
1027 axpby(const unsigned int n,
+
1028 const ValueType2 alpha,
+
1029 const ValueType1 * x,
+
1030 const ValueType2 beta,
+
1031 ValueType1 * y) const;
+
1032
+
1033 template <typename ValueType>
+
1034 void
+
1035 axpyStridedBlockAtomicAdd(const dftfe::size_type contiguousBlockSize,
+
1036 const dftfe::size_type numContiguousBlocks,
+
1037 const ValueType * addFromVec,
+
1038 ValueType * addToVec,
+ +
1040 *addToVecStartingContiguousBlockIds) const;
+
1041
+
1042 template <typename ValueType1, typename ValueType2>
+
1043 void
+
1044 axpyStridedBlockAtomicAdd(const dftfe::size_type contiguousBlockSize,
+
1045 const dftfe::size_type numContiguousBlocks,
+
1046 const ValueType1 a,
+
1047 const ValueType1 * s,
+
1048 const ValueType2 * addFromVec,
+
1049 ValueType2 * addToVec,
+ +
1051 *addToVecStartingContiguousBlockIds) const;
+
1052
+
1053 template <typename ValueType1, typename ValueType2>
+
1054 void
+
1055 stridedBlockScale(const dftfe::size_type contiguousBlockSize,
+
1056 const dftfe::size_type numContiguousBlocks,
+
1057 const ValueType1 a,
+
1058 const ValueType1 * s,
+
1059 ValueType2 * x);
+
1060 template <typename ValueType1, typename ValueType2>
+
1061 void
+
1062 stridedBlockScaleCopy(
+
1063 const dftfe::size_type contiguousBlockSize,
+
1064 const dftfe::size_type numContiguousBlocks,
+
1065 const ValueType1 a,
+
1066 const ValueType1 * s,
+
1067 const ValueType2 * copyFromVec,
+
1068 ValueType2 * copyToVecBlock,
+
1069 const dftfe::global_size_type *copyFromVecStartingContiguousBlockIds);
+
1070
+
1071 void
+
1072 add(double * y,
+
1073 const double * x,
+
1074 const double alpha,
+
1075 const dftfe::size_type size);
+
1076
+
1077 template <typename ValueType>
+
1078 void
+
1079 sadd(ValueType * y,
+
1080 ValueType * x,
+
1081 const ValueType beta,
+
1082 const dftfe::size_type size);
+
1083
+ +
1085 getDeviceBlasHandle();
+
1086
+
1087 private:
+
1088# ifdef DFTFE_WITH_DEVICE_AMD
+
1089 void
+
1090 initialize();
+
1091# endif
+
1092
+
1093 /// storage for deviceblas handle
+
1094 dftfe::utils::deviceBlasHandle_t d_deviceBlasHandle;
+ +
1096
+ +
1098 create();
+
1099
+ +
1101 destroy();
+
1102
+ +
1104 setStream(dftfe::utils::deviceStream_t streamId);
+
1105
+
1106# ifdef DFTFE_WITH_DEVICE_LANG_CUDA
+ +
1108 setMathMode(dftfe::utils::deviceBlasMath_t mathMode);
+
1109# endif
+
1110 };
+
1111#endif
+
1112
+
1113 } // end of namespace linearAlgebra
+
+
1114
+
1115} // end of namespace dftfe
+
1116
+
1117
+
1118#endif // BLASWrapper_h
+ + + +
void axpby(const unsigned int n, const ValueType2 alpha, const ValueType1 *x, const ValueType2 beta, ValueType1 *y) const
+
void xgemv(const char transA, const unsigned int m, const unsigned int n, const float *alpha, const float *A, const unsigned int lda, const float *x, const unsigned int incx, const float *beta, float *y, const unsigned int incy) const
+
void xgemv(const char transA, const unsigned int m, const unsigned int n, const double *alpha, const double *A, const unsigned int lda, const double *x, const unsigned int incx, const double *beta, double *y, const unsigned int incy) const
+
void xdot(const unsigned int N, const std::complex< double > *X, const unsigned int INCX, const std::complex< double > *Y, const unsigned int INCY, const MPI_Comm &mpi_communicator, std::complex< double > *result) const
+
void xgemm(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const double *alpha, const double *A, const unsigned int lda, const double *B, const unsigned int ldb, const double *beta, double *C, const unsigned int ldc) const
+
void xaxpy(const unsigned int n, const std::complex< double > *alpha, const std::complex< double > *x, const unsigned int incx, std::complex< double > *y, const unsigned int incy) const
+
void xgemv(const char transA, const unsigned int m, const unsigned int n, const std::complex< double > *alpha, const std::complex< double > *A, const unsigned int lda, const std::complex< double > *x, const unsigned int incx, const std::complex< double > *beta, std::complex< double > *y, const unsigned int incy) const
+
void xnrm2(const unsigned int n, const std::complex< double > *x, const unsigned int incx, const MPI_Comm &mpi_communicator, double *result) const
+
void xgemmStridedBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const double *alpha, const double *A, const unsigned int lda, long long int strideA, const double *B, const unsigned int ldb, long long int strideB, const double *beta, double *C, const unsigned int ldc, long long int strideC, const int batchCount) const
+
void stridedCopyToBlock(const dftfe::size_type contiguousBlockSize, const dftfe::size_type numContiguousBlocks, const ValueType1 *copyFromVec, ValueType2 *copyToVecBlock, const dftfe::global_size_type *copyFromVecStartingContiguousBlockIds)
+
void xcopy(const unsigned int n, const double *x, const unsigned int incx, double *y, const unsigned int incy) const
+
void xdot(const unsigned int N, const double *X, const unsigned int INCX, const double *Y, const unsigned int INCY, const MPI_Comm &mpi_communicator, double *result) const
+
void xgemmStridedBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< double > *alpha, const std::complex< double > *A, const unsigned int lda, long long int strideA, const std::complex< double > *B, const unsigned int ldb, long long int strideB, const std::complex< double > *beta, std::complex< double > *C, const unsigned int ldc, long long int strideC, const int batchCount) const
+
void xgemm(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< float > *alpha, const std::complex< float > *A, const unsigned int lda, const std::complex< float > *B, const unsigned int ldb, const std::complex< float > *beta, std::complex< float > *C, const unsigned int ldc) const
+
void stridedBlockScale(const dftfe::size_type contiguousBlockSize, const dftfe::size_type numContiguousBlocks, const ValueType1 a, const ValueType1 *s, ValueType2 *x)
+
void xgemmStridedBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const float *alpha, const float *A, const unsigned int lda, long long int strideA, const float *B, const unsigned int ldb, long long int strideB, const float *beta, float *C, const unsigned int ldc, long long int strideC, const int batchCount) const
+
void xdot(const unsigned int N, const std::complex< double > *X, const unsigned int INCX, const std::complex< double > *Y, const unsigned int INCY, std::complex< double > *result) const
+
void add(double *y, const double *x, const double alpha, const dftfe::size_type size)
+
void xcopy(const unsigned int n, const std::complex< double > *x, const unsigned int incx, std::complex< double > *y, const unsigned int incy) const
+
void xgemmBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< float > *alpha, const std::complex< float > *A[], const unsigned int lda, const std::complex< float > *B[], const unsigned int ldb, const std::complex< float > *beta, std::complex< float > *C[], const unsigned int ldc, const int batchCount) const
+
void xgemmBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const double *alpha, const double *A[], const unsigned int lda, const double *B[], const unsigned int ldb, const double *beta, double *C[], const unsigned int ldc, const int batchCount) const
+
void xgemmStridedBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< float > *alpha, const std::complex< float > *A, const unsigned int lda, long long int strideA, const std::complex< float > *B, const unsigned int ldb, long long int strideB, const std::complex< float > *beta, std::complex< float > *C, const unsigned int ldc, long long int strideC, const int batchCount) const
+
void xcopy(const unsigned int n, const std::complex< float > *x, const unsigned int incx, std::complex< float > *y, const unsigned int incy) const
+
void axpyStridedBlockAtomicAdd(const dftfe::size_type contiguousBlockSize, const dftfe::size_type numContiguousBlocks, const ValueType1 a, const ValueType1 *s, const ValueType2 *addFromVec, ValueType2 *addToVec, const dftfe::global_size_type *addToVecStartingContiguousBlockIds) const
+
void stridedCopyFromBlockConstantStride(const dftfe::size_type blockSizeTo, const dftfe::size_type blockSizeFrom, const dftfe::size_type numBlocks, const dftfe::size_type startingId, const ValueType1 *copyFromVec, ValueType2 *copyToVec)
+
void xdot(const unsigned int N, const double *X, const unsigned int INCX, const double *Y, const unsigned int INCY, double *result) const
+
void xaxpy(const unsigned int n, const double *alpha, const double *x, const unsigned int incx, double *y, const unsigned int incy) const
+
void xgemm(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const float *alpha, const float *A, const unsigned int lda, const float *B, const unsigned int ldb, const float *beta, float *C, const unsigned int ldc) const
+
void axpyStridedBlockAtomicAdd(const dftfe::size_type contiguousBlockSize, const dftfe::size_type numContiguousBlocks, const ValueType *addFromVec, ValueType *addToVec, const dftfe::global_size_type *addToVecStartingContiguousBlockIds) const
+
void copyValueType1ArrToValueType2Arr(const dftfe::size_type size, const ValueType1 *valueType1Arr, ValueType2 *valueType2Arr)
+
void xsymv(const char UPLO, const unsigned int N, const double *alpha, const double *A, const unsigned int LDA, const double *X, const unsigned int INCX, const double *beta, double *C, const unsigned int INCY) const
+
void copyComplexArrToRealArrs(const dftfe::size_type size, const ValueTypeComplex *complexArr, ValueTypeReal *realArr, ValueTypeReal *imagArr)
+
void stridedBlockScaleCopy(const dftfe::size_type contiguousBlockSize, const dftfe::size_type numContiguousBlocks, const ValueType1 a, const ValueType1 *s, const ValueType2 *copyFromVec, ValueType2 *copyToVecBlock, const dftfe::global_size_type *copyFromVecStartingContiguousBlockIds)
+ +
void xgemmBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< double > *alpha, const std::complex< double > *A[], const unsigned int lda, const std::complex< double > *B[], const unsigned int ldb, const std::complex< double > *beta, std::complex< double > *C[], const unsigned int ldc, const int batchCount) const
+
void xnrm2(const unsigned int n, const double *x, const unsigned int incx, const MPI_Comm &mpi_communicator, double *result) const
+
void stridedCopyFromBlock(const dftfe::size_type contiguousBlockSize, const dftfe::size_type numContiguousBlocks, const ValueType1 *copyFromVecBlock, ValueType2 *copyToVec, const dftfe::global_size_type *copyFromVecStartingContiguousBlockIds)
+
void xgemm(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< double > *alpha, const std::complex< double > *A, const unsigned int lda, const std::complex< double > *B, const unsigned int ldb, const std::complex< double > *beta, std::complex< double > *C, const unsigned int ldc) const
+
void xgemv(const char transA, const unsigned int m, const unsigned int n, const std::complex< float > *alpha, const std::complex< float > *A, const unsigned int lda, const std::complex< float > *x, const unsigned int incx, const std::complex< float > *beta, std::complex< float > *y, const unsigned int incy) const
+
void xgemmBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const float *alpha, const float *A[], const unsigned int lda, const float *B[], const unsigned int ldb, const float *beta, float *C[], const unsigned int ldc, const int batchCount) const
+
void stridedCopyToBlockConstantStride(const dftfe::size_type blockSizeTo, const dftfe::size_type blockSizeFrom, const dftfe::size_type numBlocks, const dftfe::size_type startingId, const ValueType1 *copyFromVec, ValueType2 *copyToVec)
+
void stridedCopyConstantStride(const dftfe::size_type blockSize, const dftfe::size_type strideTo, const dftfe::size_type strideFrom, const dftfe::size_type numBlocks, const dftfe::size_type startingToId, const dftfe::size_type startingFromId, const ValueType1 *copyFromVec, ValueType2 *copyToVec)
+
void sadd(ValueType *y, ValueType *x, const ValueType beta, const dftfe::size_type size)
+
void xcopy(const unsigned int n, const float *x, const unsigned int incx, float *y, const unsigned int incy) const
+
void xscal(ValueType1 *x, const ValueType2 alpha, const dftfe::size_type n) const
+
void copyRealArrsToComplexArr(const dftfe::size_type size, const ValueTypeReal *realArr, const ValueTypeReal *imagArr, ValueTypeComplex *complexArr)
+
Definition BLASWrapper.h:34
+ +
cudaStream_t deviceStream_t
Definition DeviceTypeConfig.cu.h:27
+
cublasStatus_t deviceBlasStatus_t
Definition DeviceTypeConfig.cu.h:38
+ + +
cublasMath_t deviceBlasMath_t
Definition DeviceTypeConfig.cu.h:39
+
cublasHandle_t deviceBlasHandle_t
Definition DeviceTypeConfig.cu.h:36
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
void xcopy(const unsigned int *n, const double *x, const unsigned int *incx, double *y, const unsigned int *incy)
Definition linearAlgebraOperations.h:549
+
void xscal(const unsigned int *n, const double *alpha, double *x, const unsigned int *inc)
Definition linearAlgebraOperations.h:531
+
unsigned int size_type
Definition TypeConfig.h:6
+
unsigned long int global_size_type
Definition TypeConfig.h:7
+
void xgemm(const char *transA, const char *transB, const unsigned int *m, const unsigned int *n, const unsigned int *k, const double *alpha, const double *A, const unsigned int *lda, const double *B, const unsigned int *ldb, const double *beta, double *C, const unsigned int *ldc)
Definition linearAlgebraOperations.h:458
+ +
+ + + + diff --git a/_composite_data_8h.html b/_composite_data_8h.html new file mode 100644 index 000000000..abda4af62 --- /dev/null +++ b/_composite_data_8h.html @@ -0,0 +1,108 @@ + + + + + + + +DFT-FE: workspace/include/CompositeData.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
CompositeData.h File Reference
+
+
+
#include <mpi.h>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::dftUtils::CompositeData
 
+ + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::dftUtils
 Contains repeatedly used functions in the KSDFT calculations.
 
+
+ + + + diff --git a/_composite_data_8h_source.html b/_composite_data_8h_source.html new file mode 100644 index 000000000..0ab3e0cca --- /dev/null +++ b/_composite_data_8h_source.html @@ -0,0 +1,150 @@ + + + + + + + +DFT-FE: workspace/include/CompositeData.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
CompositeData.h
+
+
+Go to the documentation of this file.
1//
+
2// -------------------------------------------------------------------------------------
+
3//
+
4// Copyright (c) 2017-2023 The Regents of the University of Michigan and DFT-FE
+
5// authors.
+
6//
+
7// This file is part of the DFT-FE code.
+
8//
+
9// The DFT-FE code is free software; you can use it, redistribute
+
10// it, and/or modify it under the terms of the GNU Lesser General
+
11// Public License as published by the Free Software Foundation; either
+
12// version 2.1 of the License, or (at your option) any later version.
+
13// The full text of the license can be found in the file LICENSE at
+
14// the top level of the DFT-FE distribution.
+
15//
+
16// --------------------------------------------------------------------------------------
+
17//
+
18// @author nelrufus, vishal subramanian
+
19//
+
20
+
21#ifndef DFTFE_COMPOSITEDATA_H
+
22#define DFTFE_COMPOSITEDATA_H
+
23
+
24#include <mpi.h>
+
25
+
26namespace dftfe
+
27{
+
+
28 namespace dftUtils
+
29 {
+
+ +
31 {
+
32 public:
+
33 CompositeData() = default;
+
34
+
35 virtual void
+
36 getCharArray(char *data) = 0;
+
37
+
38 virtual void
+ +
40
+
41 virtual int
+ +
43 };
+
+
44 } // namespace dftUtils
+
+
45} // namespace dftfe
+
46#endif // DFTFE_COMPOSITEDATA_H
+
Definition CompositeData.h:31
+
virtual void getCharArray(char *data)=0
+
virtual int getNumberCharsPerCompositeData()=0
+
virtual void getMPIDataType(MPI_Datatype *mpi_datatype)=0
+ +
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_data_type_overloads_8h.html b/_data_type_overloads_8h.html new file mode 100644 index 000000000..35adae614 --- /dev/null +++ b/_data_type_overloads_8h.html @@ -0,0 +1,129 @@ + + + + + + + +DFT-FE: workspace/include/DataTypeOverloads.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
DataTypeOverloads.h File Reference
+
+
+
#include <complex>
+
+

Go to the source code of this file.

+ + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::utils
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

double dftfe::utils::realPart (const double x)
 
float dftfe::utils::realPart (const float x)
 
double dftfe::utils::realPart (const std::complex< double > x)
 
float dftfe::utils::realPart (const std::complex< float > x)
 
double dftfe::utils::imagPart (const double x)
 
float dftfe::utils::imagPart (const float x)
 
double dftfe::utils::imagPart (const std::complex< double > x)
 
float dftfe::utils::imagPart (const std::complex< float > x)
 
double dftfe::utils::complexConj (const double x)
 
float dftfe::utils::complexConj (const float x)
 
std::complex< doubledftfe::utils::complexConj (const std::complex< double > x)
 
std::complex< floatdftfe::utils::complexConj (const std::complex< float > x)
 
+
+ + + + diff --git a/_data_type_overloads_8h_source.html b/_data_type_overloads_8h_source.html new file mode 100644 index 000000000..9f63ba0fc --- /dev/null +++ b/_data_type_overloads_8h_source.html @@ -0,0 +1,226 @@ + + + + + + + +DFT-FE: workspace/include/DataTypeOverloads.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
DataTypeOverloads.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16
+
17
+
18#ifndef dftfeDataTypeOverloads_h
+
19#define dftfeDataTypeOverloads_h
+
20
+
21#include <complex>
+
22
+
23namespace dftfe
+
24{
+
+
25 namespace utils
+
26 {
+
27 inline double
+
+
28 realPart(const double x)
+
29 {
+
30 return x;
+
31 }
+
+
32
+
33 inline float
+
+
34 realPart(const float x)
+
35 {
+
36 return x;
+
37 }
+
+
38
+
39 inline double
+
+
40 realPart(const std::complex<double> x)
+
41 {
+
42 return x.real();
+
43 }
+
+
44
+
45 inline float
+
+
46 realPart(const std::complex<float> x)
+
47 {
+
48 return x.real();
+
49 }
+
+
50
+
51 inline double
+
+
52 imagPart(const double x)
+
53 {
+
54 return 0;
+
55 }
+
+
56
+
57
+
58 inline float
+
+
59 imagPart(const float x)
+
60 {
+
61 return 0;
+
62 }
+
+
63
+
64 inline double
+
+
65 imagPart(const std::complex<double> x)
+
66 {
+
67 return x.imag();
+
68 }
+
+
69
+
70 inline float
+
+
71 imagPart(const std::complex<float> x)
+
72 {
+
73 return x.imag();
+
74 }
+
+
75
+
76 inline double
+
+
77 complexConj(const double x)
+
78 {
+
79 return x;
+
80 }
+
+
81
+
82 inline float
+
+
83 complexConj(const float x)
+
84 {
+
85 return x;
+
86 }
+
+
87
+
88 inline std::complex<double>
+
+
89 complexConj(const std::complex<double> x)
+
90 {
+
91 return std::conj(x);
+
92 }
+
+
93
+
94 inline std::complex<float>
+
+
95 complexConj(const std::complex<float> x)
+
96 {
+
97 return std::conj(x);
+
98 }
+
+
99 } // namespace utils
+
+
100} // namespace dftfe
+
101
+
102#endif
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
double complexConj(const double x)
Definition DataTypeOverloads.h:77
+
double imagPart(const double x)
Definition DataTypeOverloads.h:52
+
double realPart(const double x)
Definition DataTypeOverloads.h:28
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_device_a_p_i_calls_8h.html b/_device_a_p_i_calls_8h.html new file mode 100644 index 000000000..10fe6d96d --- /dev/null +++ b/_device_a_p_i_calls_8h.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: workspace/include/DeviceAPICalls.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
DeviceAPICalls.h File Reference
+
+
+ +

Go to the source code of this file.

+
+ + + + diff --git a/_device_a_p_i_calls_8h_source.html b/_device_a_p_i_calls_8h_source.html new file mode 100644 index 000000000..9b525d0c4 --- /dev/null +++ b/_device_a_p_i_calls_8h_source.html @@ -0,0 +1,275 @@ + + + + + + + +DFT-FE: workspace/include/DeviceAPICalls.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
DeviceAPICalls.h
+
+
+Go to the documentation of this file.
1#ifdef DFTFE_WITH_DEVICE
+
2
+
3# ifndef dftfeDeviceAPICalls_H
+
4# define dftfeDeviceAPICalls_H
+
5
+
6# include <TypeConfig.h>
+
7# include <DeviceTypeConfig.h>
+
8namespace dftfe
+
9{
+
10 namespace utils
+
11 {
+ +
13 deviceReset();
+
14
+ +
16 deviceMemGetInfo(std::size_t *free, std::size_t *total);
+
17
+ +
19 getDeviceCount(int *count);
+
20
+ +
22 getDevice(int *deviceId);
+
23
+ +
25 setDevice(int deviceId);
+
26
+ +
28 deviceMalloc(void **devPtr, std::size_t size);
+
29
+ +
31 deviceMemset(void *devPtr, int value, std::size_t count);
+
32
+
33 /**
+
34 * @brief
+
35 * @param devPtr
+
36 * @param value
+
37 * @param size
+
38 */
+
39 template <typename ValueType>
+
40 void
+
41 deviceSetValue(ValueType *devPtr, ValueType value, std::size_t size);
+
42
+ +
44 deviceFree(void *devPtr);
+
45
+ +
47 deviceHostMalloc(void **hostPtr, std::size_t size);
+
48
+ +
50 deviceHostFree(void *hostPtr);
+
51
+
52 /**
+
53 * @brief Copy array from device to host
+
54 * @param count The memory size in bytes of the array
+
55 */
+ +
57 deviceMemcpyD2H(void *dst, const void *src, std::size_t count);
+
58
+
59 /**
+
60 * @brief Copy array from device to device
+
61 * @param count The memory size in bytes of the array
+
62 */
+ +
64 deviceMemcpyD2D(void *dst, const void *src, std::size_t count);
+
65
+
66 /**
+
67 * @brief Copy array from host to device
+
68 * @param count The memory size in bytes of the array
+
69 */
+ +
71 deviceMemcpyH2D(void *dst, const void *src, std::size_t count);
+
72
+
73 /**
+
74 * @brief Copy 2D array from device to host
+
75 * @param count The memory size in bytes of the array
+
76 */
+ +
78 deviceMemcpyD2H_2D(void * dst,
+
79 std::size_t dpitch,
+
80 const void *src,
+
81 std::size_t spitch,
+
82 std::size_t width,
+
83 std::size_t height);
+
84
+
85 /**
+
86 * @brief Copy 2D array from device to device
+
87 * @param count The memory size in bytes of the array
+
88 */
+ +
90 deviceMemcpyD2D_2D(void * dst,
+
91 std::size_t dpitch,
+
92 const void *src,
+
93 std::size_t spitch,
+
94 std::size_t width,
+
95 std::size_t height);
+
96
+
97 /**
+
98 * @brief Copy 2D array from host to device
+
99 * @param count The memory size in bytes of the array
+
100 */
+ +
102 deviceMemcpyH2D_2D(void * dst,
+
103 std::size_t dpitch,
+
104 const void *src,
+
105 std::size_t spitch,
+
106 std::size_t width,
+
107 std::size_t height);
+
108
+
109 /**
+
110 * @brief HOST-DEVICE synchronization
+
111 */
+ +
113 deviceSynchronize();
+
114
+
115 /**
+
116 * @brief Copy array from device to host
+
117 * @param count The memory size in bytes of the array
+
118 */
+ +
120 deviceMemcpyAsyncD2H(void * dst,
+
121 const void * src,
+
122 std::size_t count,
+
123 deviceStream_t stream = 0);
+
124
+
125 /**
+
126 * @brief Copy array from device to device
+
127 * @param count The memory size in bytes of the array
+
128 */
+ +
130 deviceMemcpyAsyncD2D(void * dst,
+
131 const void * src,
+
132 std::size_t count,
+
133 deviceStream_t stream = 0);
+
134
+
135 /**
+
136 * @brief Copy array from host to device
+
137 * @param count The memory size in bytes of the array
+
138 */
+ +
140 deviceMemcpyAsyncH2D(void * dst,
+
141 const void * src,
+
142 std::size_t count,
+
143 deviceStream_t stream = 0);
+
144
+
145
+ +
147 deviceStreamCreate(deviceStream_t *pStream, const bool nonBlocking = false);
+
148
+ +
150 deviceStreamDestroy(deviceStream_t stream);
+
151
+ +
153 deviceStreamSynchronize(deviceStream_t stream);
+
154
+ +
156 deviceEventCreate(deviceEvent_t *pEvent);
+
157
+ +
159 deviceEventDestroy(deviceEvent_t event);
+
160
+ +
162 deviceEventRecord(deviceEvent_t event, deviceStream_t stream = 0);
+
163
+ +
165 deviceEventSynchronize(deviceEvent_t event);
+
166
+ +
168 deviceStreamWaitEvent(deviceStream_t stream,
+
169 deviceEvent_t event,
+
170 unsigned int flags = 0);
+
171
+
172 } // namespace utils
+
173} // namespace dftfe
+
174
+
175# endif // dftfeDeviceAPICalls_H
+
176#endif // DFTFE_WITH_DEVICE
+ + +
cudaError_t deviceError_t
Definition DeviceTypeConfig.cu.h:26
+
cudaStream_t deviceStream_t
Definition DeviceTypeConfig.cu.h:27
+
cudaEvent_t deviceEvent_t
Definition DeviceTypeConfig.cu.h:28
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_device_blas_wrapper_8h.html b/_device_blas_wrapper_8h.html new file mode 100644 index 000000000..4b747a1f5 --- /dev/null +++ b/_device_blas_wrapper_8h.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: workspace/include/DeviceBlasWrapper.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
DeviceBlasWrapper.h File Reference
+
+
+ +

Go to the source code of this file.

+
+ + + + diff --git a/_device_blas_wrapper_8h_source.html b/_device_blas_wrapper_8h_source.html new file mode 100644 index 000000000..c634ff001 --- /dev/null +++ b/_device_blas_wrapper_8h_source.html @@ -0,0 +1,422 @@ + + + + + + + +DFT-FE: workspace/include/DeviceBlasWrapper.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
DeviceBlasWrapper.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#ifdef DFTFE_WITH_DEVICE
+
19
+
20# ifndef dftfeDeviceBlasWrapper_H
+
21# define dftfeDeviceBlasWrapper_H
+
22
+
23# include <complex>
+
24# include <TypeConfig.h>
+
25# include <DeviceTypeConfig.h>
+
26namespace dftfe
+
27{
+
28 namespace utils
+
29 {
+
30 namespace deviceBlasWrapper
+
31 {
+
32# ifdef DFTFE_WITH_DEVICE_AMD
+
33 void
+
34 initialize();
+
35# endif
+
36
+ +
38 create(deviceBlasHandle_t *pHandle);
+
39
+ +
41 destroy(deviceBlasHandle_t handle);
+
42
+ +
44 setStream(deviceBlasHandle_t handle, deviceStream_t stream);
+
45
+
46# ifdef DFTFE_WITH_DEVICE_LANG_CUDA
+ +
48 setMathMode(deviceBlasHandle_t handle, deviceBlasMath_t mathMode);
+
49# endif
+
50
+ +
52 copy(deviceBlasHandle_t handle,
+
53 int n,
+
54 const double * x,
+
55 int incx,
+
56 double * y,
+
57 int incy);
+
58
+ +
60 nrm2(deviceBlasHandle_t handle,
+
61 int n,
+
62 const double * x,
+
63 int incx,
+
64 double * result);
+
65
+ +
67 dot(deviceBlasHandle_t handle,
+
68 int n,
+
69 const double * x,
+
70 int incx,
+
71 const double * y,
+
72 int incy,
+
73 double * result);
+
74
+ +
76 axpy(deviceBlasHandle_t handle,
+
77 int n,
+
78 const double * alpha,
+
79 const double * x,
+
80 int incx,
+
81 double * y,
+
82 int incy);
+
83
+ +
85 gemm(deviceBlasHandle_t handle,
+
86 deviceBlasOperation_t transa,
+
87 deviceBlasOperation_t transb,
+
88 int m,
+
89 int n,
+
90 int k,
+
91 const double * alpha,
+
92 const double * A,
+
93 int lda,
+
94 const double * B,
+
95 int ldb,
+
96 const double * beta,
+
97 double * C,
+
98 int ldc);
+
99
+ +
101 gemm(deviceBlasHandle_t handle,
+
102 deviceBlasOperation_t transa,
+
103 deviceBlasOperation_t transb,
+
104 int m,
+
105 int n,
+
106 int k,
+
107 const float * alpha,
+
108 const float * A,
+
109 int lda,
+
110 const float * B,
+
111 int ldb,
+
112 const float * beta,
+
113 float * C,
+
114 int ldc);
+
115
+ +
117 gemm(deviceBlasHandle_t handle,
+
118 deviceBlasOperation_t transa,
+
119 deviceBlasOperation_t transb,
+
120 int m,
+
121 int n,
+
122 int k,
+
123 const std::complex<double> *alpha,
+
124 const std::complex<double> *A,
+
125 int lda,
+
126 const std::complex<double> *B,
+
127 int ldb,
+
128 const std::complex<double> *beta,
+
129 std::complex<double> * C,
+
130 int ldc);
+
131
+ +
133 gemm(deviceBlasHandle_t handle,
+
134 deviceBlasOperation_t transa,
+
135 deviceBlasOperation_t transb,
+
136 int m,
+
137 int n,
+
138 int k,
+
139 const std::complex<float> *alpha,
+
140 const std::complex<float> *A,
+
141 int lda,
+
142 const std::complex<float> *B,
+
143 int ldb,
+
144 const std::complex<float> *beta,
+
145 std::complex<float> * C,
+
146 int ldc);
+
147
+ +
149 gemmBatched(deviceBlasHandle_t handle,
+
150 deviceBlasOperation_t transa,
+
151 deviceBlasOperation_t transb,
+
152 int m,
+
153 int n,
+
154 int k,
+
155 const double * alpha,
+
156 const double * Aarray[],
+
157 int lda,
+
158 const double * Barray[],
+
159 int ldb,
+
160 const double * beta,
+
161 double * Carray[],
+
162 int ldc,
+
163 int batchCount);
+
164
+ +
166 gemmBatched(deviceBlasHandle_t handle,
+
167 deviceBlasOperation_t transa,
+
168 deviceBlasOperation_t transb,
+
169 int m,
+
170 int n,
+
171 int k,
+
172 const std::complex<double> *alpha,
+
173 const std::complex<double> *Aarray[],
+
174 int lda,
+
175 const std::complex<double> *Barray[],
+
176 int ldb,
+
177 const std::complex<double> *beta,
+
178 std::complex<double> * Carray[],
+
179 int ldc,
+
180 int batchCount);
+
181
+ +
183 gemmStridedBatched(deviceBlasHandle_t handle,
+
184 deviceBlasOperation_t transa,
+
185 deviceBlasOperation_t transb,
+
186 int m,
+
187 int n,
+
188 int k,
+
189 const double * alpha,
+
190 const double * A,
+
191 int lda,
+
192 long long int strideA,
+
193 const double * B,
+
194 int ldb,
+
195 long long int strideB,
+
196 const double * beta,
+
197 double * C,
+
198 int ldc,
+
199 long long int strideC,
+
200 int batchCount);
+
201
+
202
+ +
204 gemmStridedBatched(deviceBlasHandle_t handle,
+
205 deviceBlasOperation_t transa,
+
206 deviceBlasOperation_t transb,
+
207 int m,
+
208 int n,
+
209 int k,
+
210 const float * alpha,
+
211 const float * A,
+
212 int lda,
+
213 long long int strideA,
+
214 const float * B,
+
215 int ldb,
+
216 long long int strideB,
+
217 const float * beta,
+
218 float * C,
+
219 int ldc,
+
220 long long int strideC,
+
221 int batchCount);
+
222
+ +
224 gemmStridedBatched(deviceBlasHandle_t handle,
+
225 deviceBlasOperation_t transa,
+
226 deviceBlasOperation_t transb,
+
227 int m,
+
228 int n,
+
229 int k,
+
230 const std::complex<double> *alpha,
+
231 const std::complex<double> *A,
+
232 int lda,
+
233 long long int strideA,
+
234 const std::complex<double> *B,
+
235 int ldb,
+
236 long long int strideB,
+
237 const std::complex<double> *beta,
+
238 std::complex<double> * C,
+
239 int ldc,
+
240 long long int strideC,
+
241 int batchCount);
+
242
+ +
244 gemmStridedBatched(deviceBlasHandle_t handle,
+
245 deviceBlasOperation_t transa,
+
246 deviceBlasOperation_t transb,
+
247 int m,
+
248 int n,
+
249 int k,
+
250 const std::complex<float> *alpha,
+
251 const std::complex<float> *A,
+
252 int lda,
+
253 long long int strideA,
+
254 const std::complex<float> *B,
+
255 int ldb,
+
256 long long int strideB,
+
257 const std::complex<float> *beta,
+
258 std::complex<float> * C,
+
259 int ldc,
+
260 long long int strideC,
+
261 int batchCount);
+
262
+ +
264 gemv(deviceBlasHandle_t handle,
+
265 deviceBlasOperation_t trans,
+
266 int m,
+
267 int n,
+
268 const double * alpha,
+
269 const double * A,
+
270 int lda,
+
271 const double * x,
+
272 int incx,
+
273 const double * beta,
+
274 double * y,
+
275 int incy);
+
276
+ +
278 gemv(deviceBlasHandle_t handle,
+
279 deviceBlasOperation_t trans,
+
280 int m,
+
281 int n,
+
282 const float * alpha,
+
283 const float * A,
+
284 int lda,
+
285 const float * x,
+
286 int incx,
+
287 const float * beta,
+
288 float * y,
+
289 int incy);
+
290
+ +
292 gemv(deviceBlasHandle_t handle,
+
293 deviceBlasOperation_t trans,
+
294 int m,
+
295 int n,
+
296 const std::complex<double> *alpha,
+
297 const std::complex<double> *A,
+
298 int lda,
+
299 const std::complex<double> *x,
+
300 int incx,
+
301 const std::complex<double> *beta,
+
302 std::complex<double> * y,
+
303 int incy);
+
304
+ +
306 gemv(deviceBlasHandle_t handle,
+
307 deviceBlasOperation_t trans,
+
308 int m,
+
309 int n,
+
310 const std::complex<float> *alpha,
+
311 const std::complex<float> *A,
+
312 int lda,
+
313 const std::complex<float> *x,
+
314 int incx,
+
315 const std::complex<float> *beta,
+
316 std::complex<float> * y,
+
317 int incy);
+
318
+
319
+
320 } // namespace deviceBlasWrapper
+
321 } // namespace utils
+
322} // namespace dftfe
+
323
+
324# endif // dftfeDeviceBlasWrapper_H
+
325#endif // DFTFE_WITH_DEVICE
+ + +
cublasStatus_t deviceBlasStatus_t
Definition DeviceTypeConfig.cu.h:38
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_device_data_type_overloads_8cu_8h.html b/_device_data_type_overloads_8cu_8h.html new file mode 100644 index 000000000..4f33831a8 --- /dev/null +++ b/_device_data_type_overloads_8cu_8h.html @@ -0,0 +1,321 @@ + + + + + + + +DFT-FE: workspace/include/DeviceDataTypeOverloads.cu.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
DeviceDataTypeOverloads.cu.h File Reference
+
+
+
#include <complex>
+#include <cuComplex.h>
+#include <TypeConfig.h>
+
+

Go to the source code of this file.

+ + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::utils
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

__forceinline__ __device__ cuDoubleComplex dftfe::utils::makeComplex (double realPart, double imagPart)
 
__forceinline__ __device__ cuFloatComplex dftfe::utils::makeComplex (float realPart, float imagPart)
 
__forceinline__ __device__ void dftfe::utils::copyValue (double *a, const double b)
 
__forceinline__ __device__ void dftfe::utils::copyValue (float *a, const float b)
 
__forceinline__ __device__ void dftfe::utils::copyValue (cuDoubleComplex *a, const cuDoubleComplex b)
 
__forceinline__ __device__ void dftfe::utils::copyValue (cuFloatComplex *a, const cuFloatComplex b)
 
__forceinline__ __device__ void dftfe::utils::copyValue (float *a, const double b)
 
__forceinline__ __device__ void dftfe::utils::copyValue (double *a, const float b)
 
__forceinline__ __device__ void dftfe::utils::copyValue (cuDoubleComplex *a, const cuFloatComplex b)
 
__forceinline__ __device__ void dftfe::utils::copyValue (cuFloatComplex *a, const cuDoubleComplex b)
 
__forceinline__ __device__ void dftfe::utils::copyValue (cuDoubleComplex *a, const double b)
 
__forceinline__ __device__ void dftfe::utils::copyValue (cuFloatComplex *a, const float b)
 
__forceinline__ __device__ void dftfe::utils::copyValue (cuDoubleComplex *a, const float b)
 
__forceinline__ __device__ void dftfe::utils::copyValue (cuFloatComplex *a, const double b)
 
__forceinline__ __device__ double dftfe::utils::realPartDevice (double a)
 
__forceinline__ __device__ float dftfe::utils::realPartDevice (float a)
 
__forceinline__ __device__ double dftfe::utils::realPartDevice (cuDoubleComplex a)
 
__forceinline__ __device__ float dftfe::utils::realPartDevice (cuFloatComplex a)
 
__forceinline__ __device__ double dftfe::utils::imagPartDevice (double a)
 
__forceinline__ __device__ float dftfe::utils::imagPartDevice (float a)
 
__forceinline__ __device__ double dftfe::utils::imagPartDevice (cuDoubleComplex a)
 
__forceinline__ __device__ float dftfe::utils::imagPartDevice (cuFloatComplex a)
 
__forceinline__ __device__ double dftfe::utils::abs (double a)
 
__forceinline__ __device__ float dftfe::utils::abs (float a)
 
__forceinline__ __device__ double dftfe::utils::abs (cuDoubleComplex a)
 
__forceinline__ __device__ float dftfe::utils::abs (cuFloatComplex a)
 
__forceinline__ __device__ unsigned int dftfe::utils::conj (unsigned int a)
 
__forceinline__ __device__ unsigned long int dftfe::utils::conj (unsigned long int a)
 
__forceinline__ __device__ int dftfe::utils::conj (int a)
 
__forceinline__ __device__ float dftfe::utils::conj (float a)
 
__forceinline__ __device__ double dftfe::utils::conj (double a)
 
__forceinline__ __device__ cuDoubleComplex dftfe::utils::conj (cuDoubleComplex a)
 
__forceinline__ __device__ cuFloatComplex dftfe::utils::conj (cuFloatComplex a)
 
__forceinline__ __device__ unsigned int dftfe::utils::mult (unsigned int a, unsigned int b)
 
__forceinline__ __device__ unsigned long int dftfe::utils::mult (unsigned long int a, unsigned long int b)
 
__forceinline__ __device__ int dftfe::utils::mult (int a, int b)
 
__forceinline__ __device__ double dftfe::utils::mult (double a, double b)
 
__forceinline__ __device__ float dftfe::utils::mult (float a, float b)
 
__forceinline__ __device__ double dftfe::utils::mult (float a, double b)
 
__forceinline__ __device__ double dftfe::utils::mult (double a, float b)
 
__forceinline__ __device__ cuDoubleComplex dftfe::utils::mult (cuDoubleComplex a, cuDoubleComplex b)
 
__forceinline__ __device__ cuFloatComplex dftfe::utils::mult (cuFloatComplex a, cuFloatComplex b)
 
__forceinline__ __device__ cuDoubleComplex dftfe::utils::mult (cuFloatComplex a, cuDoubleComplex b)
 
__forceinline__ __device__ cuDoubleComplex dftfe::utils::mult (cuDoubleComplex a, cuFloatComplex b)
 
__forceinline__ __device__ cuDoubleComplex dftfe::utils::mult (double a, cuDoubleComplex b)
 
__forceinline__ __device__ cuDoubleComplex dftfe::utils::mult (cuDoubleComplex a, double b)
 
__forceinline__ __device__ cuFloatComplex dftfe::utils::mult (float a, cuFloatComplex b)
 
__forceinline__ __device__ cuFloatComplex dftfe::utils::mult (cuFloatComplex a, float b)
 
__forceinline__ __device__ cuDoubleComplex dftfe::utils::mult (double a, cuFloatComplex b)
 
__forceinline__ __device__ cuDoubleComplex dftfe::utils::mult (cuFloatComplex a, double b)
 
__forceinline__ __device__ unsigned int dftfe::utils::add (unsigned int a, unsigned int b)
 
__forceinline__ __device__ unsigned long int dftfe::utils::add (unsigned long int a, unsigned long int b)
 
__forceinline__ __device__ int dftfe::utils::add (int a, int b)
 
__forceinline__ __device__ double dftfe::utils::add (double a, double b)
 
__forceinline__ __device__ float dftfe::utils::add (float a, float b)
 
__forceinline__ __device__ cuDoubleComplex dftfe::utils::add (cuDoubleComplex a, cuDoubleComplex b)
 
__forceinline__ __device__ cuFloatComplex dftfe::utils::add (cuFloatComplex a, cuFloatComplex b)
 
__forceinline__ __device__ double dftfe::utils::add (double a, float b)
 
__forceinline__ __device__ double dftfe::utils::add (float a, double b)
 
__forceinline__ __device__ cuDoubleComplex dftfe::utils::add (cuDoubleComplex a, cuFloatComplex b)
 
__forceinline__ __device__ cuDoubleComplex dftfe::utils::add (cuFloatComplex a, cuDoubleComplex b)
 
__forceinline__ __device__ unsigned int dftfe::utils::sub (unsigned int a, unsigned int b)
 
__forceinline__ __device__ unsigned long int dftfe::utils::sub (unsigned long int a, unsigned long int b)
 
__forceinline__ __device__ int dftfe::utils::sub (int a, int b)
 
__forceinline__ __device__ double dftfe::utils::sub (double a, double b)
 
__forceinline__ __device__ float dftfe::utils::sub (float a, float b)
 
__forceinline__ __device__ cuDoubleComplex dftfe::utils::sub (cuDoubleComplex a, cuDoubleComplex b)
 
__forceinline__ __device__ cuFloatComplex dftfe::utils::sub (cuFloatComplex a, cuFloatComplex b)
 
__forceinline__ __device__ unsigned int dftfe::utils::div (unsigned int a, unsigned int b)
 
__forceinline__ __device__ unsigned long int dftfe::utils::div (unsigned long int a, unsigned long int b)
 
__forceinline__ __device__ int dftfe::utils::div (int a, int b)
 
__forceinline__ __device__ double dftfe::utils::div (double a, double b)
 
__forceinline__ __device__ float dftfe::utils::div (float a, float b)
 
__forceinline__ __device__ cuDoubleComplex dftfe::utils::div (cuDoubleComplex a, cuDoubleComplex b)
 
__forceinline__ __device__ cuFloatComplex dftfe::utils::div (cuFloatComplex a, cuFloatComplex b)
 
__forceinline__ __device__ cuDoubleComplex dftfe::utils::div (cuFloatComplex a, cuDoubleComplex b)
 
__forceinline__ __device__ cuDoubleComplex dftfe::utils::div (cuDoubleComplex a, cuFloatComplex b)
 
__forceinline__ __device__ cuDoubleComplex dftfe::utils::div (double a, cuDoubleComplex b)
 
__forceinline__ __device__ cuDoubleComplex dftfe::utils::div (cuDoubleComplex a, double b)
 
__forceinline__ __device__ cuFloatComplex dftfe::utils::div (float a, cuFloatComplex b)
 
__forceinline__ __device__ cuFloatComplex dftfe::utils::div (cuFloatComplex a, float b)
 
__forceinline__ __device__ cuDoubleComplex dftfe::utils::div (double a, cuFloatComplex b)
 
__forceinline__ __device__ cuDoubleComplex dftfe::utils::div (cuFloatComplex a, double b)
 
intdftfe::utils::makeDataTypeDeviceCompatible (int *a)
 
const intdftfe::utils::makeDataTypeDeviceCompatible (const int *a)
 
long intdftfe::utils::makeDataTypeDeviceCompatible (long int *a)
 
const long intdftfe::utils::makeDataTypeDeviceCompatible (const long int *a)
 
unsigned intdftfe::utils::makeDataTypeDeviceCompatible (unsigned int *a)
 
const unsigned intdftfe::utils::makeDataTypeDeviceCompatible (const unsigned int *a)
 
unsigned long intdftfe::utils::makeDataTypeDeviceCompatible (unsigned long int *a)
 
const unsigned long intdftfe::utils::makeDataTypeDeviceCompatible (const unsigned long int *a)
 
doubledftfe::utils::makeDataTypeDeviceCompatible (double *a)
 
const doubledftfe::utils::makeDataTypeDeviceCompatible (const double *a)
 
floatdftfe::utils::makeDataTypeDeviceCompatible (float *a)
 
const floatdftfe::utils::makeDataTypeDeviceCompatible (const float *a)
 
cuDoubleComplexdftfe::utils::makeDataTypeDeviceCompatible (std::complex< double > *a)
 
const cuDoubleComplexdftfe::utils::makeDataTypeDeviceCompatible (const std::complex< double > *a)
 
cuFloatComplexdftfe::utils::makeDataTypeDeviceCompatible (std::complex< float > *a)
 
const cuFloatComplexdftfe::utils::makeDataTypeDeviceCompatible (const std::complex< float > *a)
 
int dftfe::utils::makeDataTypeDeviceCompatible (int a)
 
long int dftfe::utils::makeDataTypeDeviceCompatible (long int a)
 
unsigned int dftfe::utils::makeDataTypeDeviceCompatible (unsigned int a)
 
unsigned long int dftfe::utils::makeDataTypeDeviceCompatible (unsigned long int a)
 
double dftfe::utils::makeDataTypeDeviceCompatible (double a)
 
float dftfe::utils::makeDataTypeDeviceCompatible (float a)
 
cuDoubleComplex dftfe::utils::makeDataTypeDeviceCompatible (std::complex< double > a)
 
cuFloatComplex dftfe::utils::makeDataTypeDeviceCompatible (std::complex< float > a)
 
+
+ + + + diff --git a/_device_data_type_overloads_8cu_8h_source.html b/_device_data_type_overloads_8cu_8h_source.html new file mode 100644 index 000000000..e7dfdb03f --- /dev/null +++ b/_device_data_type_overloads_8cu_8h_source.html @@ -0,0 +1,1048 @@ + + + + + + + +DFT-FE: workspace/include/DeviceDataTypeOverloads.cu.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
DeviceDataTypeOverloads.cu.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16
+
17
+
18#ifndef dftfeDeviceDataTypeOverloads_cuh
+
19#define dftfeDeviceDataTypeOverloads_cuh
+
20
+
21#include <complex>
+
22#include <cuComplex.h>
+
23#include <TypeConfig.h>
+
24namespace dftfe
+
25{
+
26 namespace utils
+
27 {
+
28 __forceinline__ __device__ cuDoubleComplex
+
+ +
30 {
+ +
32 }
+
+
33
+ +
+ +
36 {
+ +
38 }
+
+
39
+
40 //
+
41 // copyValue for homogeneous types
+
42 //
+ +
+
44 copyValue(double *a, const double b)
+
45 {
+
46 *a = b;
+
47 }
+
+
48
+ +
+
50 copyValue(float *a, const float b)
+
51 {
+
52 *a = b;
+
53 }
+
+
54
+ +
+ +
57 {
+
58 *a = b;
+
59 }
+
+
60
+ +
+ +
63 {
+
64 *a = b;
+
65 }
+
+
66
+
67 //
+
68 // copyValue for heteregenous types
+
69 //
+ +
+
71 copyValue(float *a, const double b)
+
72 {
+
73 *a = b;
+
74 }
+
+
75
+ +
+
77 copyValue(double *a, const float b)
+
78 {
+
79 *a = b;
+
80 }
+
+
81
+ +
+ +
84 {
+
85 *a = make_cuDoubleComplex(b.x, b.y);
+
86 }
+
+
87
+ +
+ +
90 {
+
91 *a = make_cuFloatComplex(b.x, b.y);
+
92 }
+
+
93
+ +
+
95 copyValue(cuDoubleComplex *a, const double b)
+
96 {
+ +
98 }
+
+
99
+ +
+ +
102 {
+
103 *a = make_cuFloatComplex(b, 0);
+
104 }
+
+
105
+ +
+ +
108 {
+
109 *a = make_cuDoubleComplex(b, 0);
+
110 }
+
+
111
+ +
+
113 copyValue(cuFloatComplex *a, const double b)
+
114 {
+
115 *a = make_cuFloatComplex(b, 0);
+
116 }
+
+
117
+
118 // real part obverloads
+
119
+ +
+ +
122 {
+
123 return a;
+
124 }
+
+
125
+ +
+ +
128 {
+
129 return a;
+
130 }
+
+
131
+ +
+ +
134 {
+
135 return a.x;
+
136 }
+
+
137
+ +
+ +
140 {
+
141 return a.x;
+
142 }
+
+
143
+
144 // imag part obverloads
+
145
+ +
+ +
148 {
+
149 return 0;
+
150 }
+
+
151
+ +
+ +
154 {
+
155 return 0;
+
156 }
+
+
157
+ +
+ +
160 {
+
161 return a.y;
+
162 }
+
+
163
+ +
+ +
166 {
+
167 return a.y;
+
168 }
+
+
169
+
170 // abs obverloads
+
171
+ +
+
173 abs(double a)
+
174 {
+
175 return fabs(a);
+
176 }
+
+
177
+ +
+
179 abs(float a)
+
180 {
+
181 return fabs(a);
+
182 }
+
+
183
+ +
+ +
186 {
+
187 return cuCabs(a);
+
188 }
+
+
189
+ +
+ +
192 {
+
193 return cuCabsf(a);
+
194 }
+
+
195
+
196 //
+
197 // conjugate overloads
+
198 //
+
199
+
200 __forceinline__ __device__ unsigned int
+
+
201 conj(unsigned int a)
+
202 {
+
203 return a;
+
204 }
+
+
205
+
206 __forceinline__ __device__ unsigned long int
+
+
207 conj(unsigned long int a)
+
208 {
+
209 return a;
+
210 }
+
+
211
+ +
+
213 conj(int a)
+
214 {
+
215 return a;
+
216 }
+
+
217
+ +
+
219 conj(float a)
+
220 {
+
221 return a;
+
222 }
+
+ +
+
224 conj(double a)
+
225 {
+
226 return a;
+
227 }
+
+
228
+ +
+ +
231 {
+
232 return cuConj(a);
+
233 }
+
+
234
+ +
+ +
237 {
+
238 return cuConjf(a);
+
239 }
+
+
240
+
241
+
242 //
+
243 // mult for real homogeneous types e.g. (double, double)
+
244 //
+
245 __forceinline__ __device__ unsigned int
+
+
246 mult(unsigned int a, unsigned int b)
+
247 {
+
248 return a * b;
+
249 }
+
+
250
+
251 __forceinline__ __device__ unsigned long int
+
+
252 mult(unsigned long int a, unsigned long int b)
+
253 {
+
254 return a * b;
+
255 }
+
+
256
+ +
+
258 mult(int a, int b)
+
259 {
+
260 return a * b;
+
261 }
+
+
262
+ +
+
264 mult(double a, double b)
+
265 {
+
266 return a * b;
+
267 }
+
+
268
+ +
+
270 mult(float a, float b)
+
271 {
+
272 return a * b;
+
273 }
+
+
274
+ +
+
276 mult(float a, double b)
+
277 {
+
278 return a * b;
+
279 }
+
+
280
+ +
+
282 mult(double a, float b)
+
283 {
+
284 return a * b;
+
285 }
+
+
286
+
287
+
288 //
+
289 // mult for complex homogenous types
+
290 // (e.g., cuDoubleComplex and cuDoubleComplex)
+
291 //
+ +
+ +
294 {
+
295 return cuCmul(a, b);
+
296 }
+
+
297
+ +
+ +
300 {
+
301 return cuCmulf(a, b);
+
302 }
+
+
303
+
304
+
305 //
+
306 // mult for complex heterogeneous types e.g. (cuDoubleComplex,
+
307 // cuFloatComplex)
+
308 //
+ +
+ +
311 {
+
312 return cuCmul(make_cuDoubleComplex(a.x, a.y), b);
+
313 }
+
+
314
+ +
+ +
317 {
+
318 return cuCmul(a, make_cuDoubleComplex(b.x, b.y));
+
319 }
+
+
320
+
321
+
322 //
+
323 // mult for real-complex heterogeneous types e.g. (double, cuFloatComplex)
+
324 //
+ +
+ +
327 {
+
328 return make_cuDoubleComplex(a * b.x, a * b.y);
+
329 }
+
+
330
+ +
+ +
333 {
+
334 return make_cuDoubleComplex(b * a.x, b * a.y);
+
335 }
+
+
336
+ +
+ +
339 {
+
340 return make_cuFloatComplex(a * b.x, a * b.y);
+
341 }
+
+
342
+ +
+ +
345 {
+
346 return make_cuFloatComplex(b * a.x, b * a.y);
+
347 }
+
+
348
+ +
+ +
351 {
+
352 return make_cuDoubleComplex(a * b.x, a * b.y);
+
353 }
+
+
354
+ +
+ +
357 {
+
358 return make_cuDoubleComplex(b * a.x, b * a.y);
+
359 }
+
+
360
+
361
+
362 __forceinline__ __device__ unsigned int
+
+
363 add(unsigned int a, unsigned int b)
+
364 {
+
365 return a + b;
+
366 }
+
+
367
+
368 __forceinline__ __device__ unsigned long int
+
+
369 add(unsigned long int a, unsigned long int b)
+
370 {
+
371 return a + b;
+
372 }
+
+
373
+ +
+
375 add(int a, int b)
+
376 {
+
377 return a + b;
+
378 }
+
+
379
+ +
+
381 add(double a, double b)
+
382 {
+
383 return a + b;
+
384 }
+
+
385
+ +
+
387 add(float a, float b)
+
388 {
+
389 return a + b;
+
390 }
+
+
391
+ +
+ +
394 {
+
395 return cuCadd(a, b);
+
396 }
+
+
397
+
398
+ +
+ +
401 {
+
402 return cuCaddf(a, b);
+
403 }
+
+
404
+ +
+
406 add(double a, float b)
+
407 {
+
408 return a + b;
+
409 }
+
+
410
+ +
+
412 add(float a, double b)
+
413 {
+
414 return a + b;
+
415 }
+
+
416
+ +
+ +
419 {
+
420 return cuCadd(a, make_cuDoubleComplex(b.x, b.y));
+
421 }
+
+
422
+
423
+ +
+ +
426 {
+
427 return cuCadd(make_cuDoubleComplex(a.x, a.y), b);
+
428 }
+
+
429
+
430
+
431 __forceinline__ __device__ unsigned int
+
+
432 sub(unsigned int a, unsigned int b)
+
433 {
+
434 return a - b;
+
435 }
+
+
436
+
437 __forceinline__ __device__ unsigned long int
+
+
438 sub(unsigned long int a, unsigned long int b)
+
439 {
+
440 return a - b;
+
441 }
+
+
442
+ +
+
444 sub(int a, int b)
+
445 {
+
446 return a - b;
+
447 }
+
+
448
+ +
+
450 sub(double a, double b)
+
451 {
+
452 return a - b;
+
453 }
+
+
454
+ +
+
456 sub(float a, float b)
+
457 {
+
458 return a - b;
+
459 }
+
+
460
+ +
+ +
463 {
+
464 return cuCsub(a, b);
+
465 }
+
+
466
+ +
+ +
469 {
+
470 return cuCsubf(a, b);
+
471 }
+
+
472
+
473 __forceinline__ __device__ unsigned int
+
+
474 div(unsigned int a, unsigned int b)
+
475 {
+
476 return a / b;
+
477 }
+
+
478
+
479 __forceinline__ __device__ unsigned long int
+
+
480 div(unsigned long int a, unsigned long int b)
+
481 {
+
482 return a / b;
+
483 }
+
+
484
+ +
+
486 div(int a, int b)
+
487 {
+
488 return a / b;
+
489 }
+
+
490
+ +
+
492 div(double a, double b)
+
493 {
+
494 return a / b;
+
495 }
+
+
496
+ +
+
498 div(float a, float b)
+
499 {
+
500 return a / b;
+
501 }
+
+
502
+ +
+ +
505 {
+
506 return cuCdiv(a, b);
+
507 }
+
+
508
+ +
+ +
511 {
+
512 return cuCdivf(a, b);
+
513 }
+
+
514
+
515 //
+
516 // div for complex heterogeneous types e.g. (cuDoubleComplex,
+
517 // cuFloatComplex)
+
518 //
+ +
+ +
521 {
+
522 return cuCdiv(make_cuDoubleComplex(a.x, a.y), b);
+
523 }
+
+
524
+ +
+ +
527 {
+
528 return cuCdiv(a, make_cuDoubleComplex(b.x, b.y));
+
529 }
+
+
530
+
531
+
532 //
+
533 // div for real-complex heterogeneous types e.g. (double, cuFloatComplex)
+
534 //
+ +
+ +
537 {
+
538 return make_cuDoubleComplex(a / b.x, a / b.y);
+
539 }
+
+
540
+ +
+ +
543 {
+
544 return make_cuDoubleComplex(b / a.x, b / a.y);
+
545 }
+
+
546
+ +
+ +
549 {
+
550 return make_cuFloatComplex(a / b.x, a / b.y);
+
551 }
+
+
552
+ +
+ +
555 {
+
556 return make_cuFloatComplex(b / a.x, b / a.y);
+
557 }
+
+
558
+ +
+ +
561 {
+
562 return make_cuDoubleComplex(a / b.x, a / b.y);
+
563 }
+
+
564
+ +
+ +
567 {
+
568 return make_cuDoubleComplex(b / a.x, b / a.y);
+
569 }
+
+
570
+
571 ////
+
572
+
573
+
574 inline int *
+
+ +
576 {
+
577 return a;
+
578 }
+
+
579
+
580 inline const int *
+
+ +
582 {
+
583 return a;
+
584 }
+
+
585
+
586 inline long int *
+
+ +
588 {
+
589 return a;
+
590 }
+
+
591
+
592 inline const long int *
+
+ +
594 {
+
595 return a;
+
596 }
+
+
597
+
598
+
599 inline unsigned int *
+
+ +
601 {
+
602 return a;
+
603 }
+
+
604
+
605 inline const unsigned int *
+
+
606 makeDataTypeDeviceCompatible(const unsigned int *a)
+
607 {
+
608 return a;
+
609 }
+
+
610
+
611 inline unsigned long int *
+
+
612 makeDataTypeDeviceCompatible(unsigned long int *a)
+
613 {
+
614 return a;
+
615 }
+
+
616
+
617 inline const unsigned long int *
+
+
618 makeDataTypeDeviceCompatible(const unsigned long int *a)
+
619 {
+
620 return a;
+
621 }
+
+
622
+
623 inline double *
+
+ +
625 {
+
626 return a;
+
627 }
+
+
628
+
629 inline const double *
+
+ +
631 {
+
632 return a;
+
633 }
+
+
634
+
635 inline float *
+
+ +
637 {
+
638 return a;
+
639 }
+
+
640
+
641 inline const float *
+
+ +
643 {
+
644 return a;
+
645 }
+
+
646
+
647 inline cuDoubleComplex *
+
+
648 makeDataTypeDeviceCompatible(std::complex<double> *a)
+
649 {
+
650 return reinterpret_cast<cuDoubleComplex *>(a);
+
651 }
+
+
652
+
653 inline const cuDoubleComplex *
+
+
654 makeDataTypeDeviceCompatible(const std::complex<double> *a)
+
655 {
+
656 return reinterpret_cast<const cuDoubleComplex *>(a);
+
657 }
+
+
658
+
659 inline cuFloatComplex *
+
+
660 makeDataTypeDeviceCompatible(std::complex<float> *a)
+
661 {
+
662 return reinterpret_cast<cuFloatComplex *>(a);
+
663 }
+
+
664
+
665 inline const cuFloatComplex *
+
+
666 makeDataTypeDeviceCompatible(const std::complex<float> *a)
+
667 {
+
668 return reinterpret_cast<const cuFloatComplex *>(a);
+
669 }
+
+
670
+
671 inline int
+
+ +
673 {
+
674 return a;
+
675 }
+
+
676
+
677 inline long int
+
+ +
679 {
+
680 return a;
+
681 }
+
+
682
+
683
+
684 inline unsigned int
+
+ +
686 {
+
687 return a;
+
688 }
+
+
689
+
690 inline unsigned long int
+
+ +
692 {
+
693 return a;
+
694 }
+
+
695
+
696 inline double
+
+ +
698 {
+
699 return a;
+
700 }
+
+
701
+
702 inline float
+
+ +
704 {
+
705 return a;
+
706 }
+
+
707
+
708 inline cuDoubleComplex
+
+
709 makeDataTypeDeviceCompatible(std::complex<double> a)
+
710 {
+
711 return make_cuDoubleComplex(a.real(), a.imag());
+
712 }
+
+
713
+
714 inline cuFloatComplex
+
+
715 makeDataTypeDeviceCompatible(std::complex<float> a)
+
716 {
+
717 return make_cuFloatComplex(a.real(), a.imag());
+
718 }
+
+
719
+
720
+
721 } // namespace utils
+
722
+
723} // namespace dftfe
+
724
+
725#endif
+ +
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
__forceinline__ __device__ unsigned int add(unsigned int a, unsigned int b)
Definition DeviceDataTypeOverloads.cu.h:363
+
__forceinline__ __device__ void copyValue(double *a, const double b)
Definition DeviceDataTypeOverloads.cu.h:44
+
__forceinline__ __device__ unsigned int div(unsigned int a, unsigned int b)
Definition DeviceDataTypeOverloads.cu.h:474
+
int * makeDataTypeDeviceCompatible(int *a)
Definition DeviceDataTypeOverloads.cu.h:575
+
__forceinline__ __device__ double realPartDevice(double a)
Definition DeviceDataTypeOverloads.cu.h:121
+
__forceinline__ __device__ cuDoubleComplex makeComplex(double realPart, double imagPart)
Definition DeviceDataTypeOverloads.cu.h:29
+
__forceinline__ __device__ double imagPartDevice(double a)
Definition DeviceDataTypeOverloads.cu.h:147
+
__forceinline__ __device__ unsigned int conj(unsigned int a)
Definition DeviceDataTypeOverloads.cu.h:201
+
__forceinline__ __device__ unsigned int mult(unsigned int a, unsigned int b)
Definition DeviceDataTypeOverloads.cu.h:246
+
__forceinline__ __device__ double abs(double a)
Definition DeviceDataTypeOverloads.cu.h:173
+
double imagPart(const double x)
Definition DataTypeOverloads.h:52
+
__forceinline__ __device__ unsigned int sub(unsigned int a, unsigned int b)
Definition DeviceDataTypeOverloads.cu.h:432
+
double realPart(const double x)
Definition DataTypeOverloads.h:28
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_device_data_type_overloads_8h.html b/_device_data_type_overloads_8h.html new file mode 100644 index 000000000..fa1c4f11a --- /dev/null +++ b/_device_data_type_overloads_8h.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: workspace/include/DeviceDataTypeOverloads.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
DeviceDataTypeOverloads.h File Reference
+
+
+ +

Go to the source code of this file.

+
+ + + + diff --git a/_device_data_type_overloads_8h_source.html b/_device_data_type_overloads_8h_source.html new file mode 100644 index 000000000..9107af916 --- /dev/null +++ b/_device_data_type_overloads_8h_source.html @@ -0,0 +1,126 @@ + + + + + + + +DFT-FE: workspace/include/DeviceDataTypeOverloads.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
DeviceDataTypeOverloads.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16
+
17/*
+
18 * @author Ian C. Lin., Sambit Das
+
19 */
+
20#ifdef DFTFE_WITH_DEVICE
+
21# ifndef dftfeDeviceDataTypeOverloads_h
+
22# define dftfeDeviceDataTypeOverloads_h
+
23
+
24# ifdef DFTFE_WITH_DEVICE_LANG_CUDA
+ +
26# elif DFTFE_WITH_DEVICE_LANG_HIP
+ +
28# endif
+
29
+
30# endif // dftfeDeviceDataTypeOverloads_h
+
31#endif // DFTFE_WITH_DEVICE
+ + +
+ + + + diff --git a/_device_data_type_overloads_8hip_8h.html b/_device_data_type_overloads_8hip_8h.html new file mode 100644 index 000000000..12b962f8c --- /dev/null +++ b/_device_data_type_overloads_8hip_8h.html @@ -0,0 +1,322 @@ + + + + + + + +DFT-FE: workspace/include/DeviceDataTypeOverloads.hip.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
DeviceDataTypeOverloads.hip.h File Reference
+
+
+
#include <complex>
+#include <hip/hip_complex.h>
+#include <hip/hip_runtime.h>
+#include <TypeConfig.h>
+
+

Go to the source code of this file.

+ + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::utils
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

__forceinline__ __device__ cuDoubleComplex dftfe::utils::makeComplex (double realPart, double imagPart)
 
__forceinline__ __device__ cuFloatComplex dftfe::utils::makeComplex (float realPart, float imagPart)
 
__forceinline__ __device__ void dftfe::utils::copyValue (double *a, const double b)
 
__forceinline__ __device__ void dftfe::utils::copyValue (float *a, const float b)
 
__forceinline__ __device__ void dftfe::utils::copyValue (hipDoubleComplex *a, const hipDoubleComplex b)
 
__forceinline__ __device__ void dftfe::utils::copyValue (hipFloatComplex *a, const hipFloatComplex b)
 
__forceinline__ __device__ void dftfe::utils::copyValue (float *a, const double b)
 
__forceinline__ __device__ void dftfe::utils::copyValue (double *a, const float b)
 
__forceinline__ __device__ void dftfe::utils::copyValue (hipDoubleComplex *a, const hipFloatComplex b)
 
__forceinline__ __device__ void dftfe::utils::copyValue (hipFloatComplex *a, const hipDoubleComplex b)
 
__forceinline__ __device__ void dftfe::utils::copyValue (hipDoubleComplex *a, const double b)
 
__forceinline__ __device__ void dftfe::utils::copyValue (hipFloatComplex *a, const float b)
 
__forceinline__ __device__ void dftfe::utils::copyValue (hipDoubleComplex *a, const float b)
 
__forceinline__ __device__ void dftfe::utils::copyValue (hipFloatComplex *a, const double b)
 
__forceinline__ __device__ double dftfe::utils::realPartDevice (double a)
 
__forceinline__ __device__ float dftfe::utils::realPartDevice (float a)
 
__forceinline__ __device__ double dftfe::utils::realPartDevice (hipDoubleComplex a)
 
__forceinline__ __device__ float dftfe::utils::realPartDevice (hipFloatComplex a)
 
__forceinline__ __device__ double dftfe::utils::imagPartDevice (double a)
 
__forceinline__ __device__ float dftfe::utils::imagPartDevice (float a)
 
__forceinline__ __device__ double dftfe::utils::imagPartDevice (hipDoubleComplex a)
 
__forceinline__ __device__ float dftfe::utils::imagPartDevice (hipFloatComplex a)
 
__forceinline__ __device__ double dftfe::utils::abs (double a)
 
__forceinline__ __device__ float dftfe::utils::abs (float a)
 
__forceinline__ __device__ double dftfe::utils::abs (hipDoubleComplex a)
 
__forceinline__ __device__ float dftfe::utils::abs (hipFloatComplex a)
 
__forceinline__ __device__ unsigned int dftfe::utils::conj (unsigned int a)
 
__forceinline__ __device__ unsigned long int dftfe::utils::conj (unsigned long int a)
 
__forceinline__ __device__ int dftfe::utils::conj (int a)
 
__forceinline__ __device__ float dftfe::utils::conj (float a)
 
__forceinline__ __device__ double dftfe::utils::conj (double a)
 
__forceinline__ __device__ hipDoubleComplex dftfe::utils::conj (hipDoubleComplex a)
 
__forceinline__ __device__ hipFloatComplex dftfe::utils::conj (hipFloatComplex a)
 
__forceinline__ __device__ unsigned int dftfe::utils::mult (unsigned int a, unsigned int b)
 
__forceinline__ __device__ unsigned long int dftfe::utils::mult (unsigned long int a, unsigned long int b)
 
__forceinline__ __device__ int dftfe::utils::mult (int a, int b)
 
__forceinline__ __device__ double dftfe::utils::mult (double a, double b)
 
__forceinline__ __device__ float dftfe::utils::mult (float a, float b)
 
__forceinline__ __device__ double dftfe::utils::mult (float a, double b)
 
__forceinline__ __device__ double dftfe::utils::mult (double a, float b)
 
__forceinline__ __device__ hipDoubleComplex dftfe::utils::mult (hipDoubleComplex a, hipDoubleComplex b)
 
__forceinline__ __device__ hipFloatComplex dftfe::utils::mult (hipFloatComplex a, hipFloatComplex b)
 
__forceinline__ __device__ hipDoubleComplex dftfe::utils::mult (hipFloatComplex a, hipDoubleComplex b)
 
__forceinline__ __device__ hipDoubleComplex dftfe::utils::mult (hipDoubleComplex a, hipFloatComplex b)
 
__forceinline__ __device__ hipDoubleComplex dftfe::utils::mult (double a, hipDoubleComplex b)
 
__forceinline__ __device__ hipDoubleComplex dftfe::utils::mult (hipDoubleComplex a, double b)
 
__forceinline__ __device__ hipFloatComplex dftfe::utils::mult (float a, hipFloatComplex b)
 
__forceinline__ __device__ hipFloatComplex dftfe::utils::mult (hipFloatComplex a, float b)
 
__forceinline__ __device__ hipDoubleComplex dftfe::utils::mult (double a, hipFloatComplex b)
 
__forceinline__ __device__ hipDoubleComplex dftfe::utils::mult (hipFloatComplex a, double b)
 
__forceinline__ __device__ unsigned int dftfe::utils::add (unsigned int a, unsigned int b)
 
__forceinline__ __device__ unsigned long int dftfe::utils::add (unsigned long int a, unsigned long int b)
 
__forceinline__ __device__ int dftfe::utils::add (int a, int b)
 
__forceinline__ __device__ double dftfe::utils::add (double a, double b)
 
__forceinline__ __device__ float dftfe::utils::add (float a, float b)
 
__forceinline__ __device__ hipDoubleComplex dftfe::utils::add (hipDoubleComplex a, hipDoubleComplex b)
 
__forceinline__ __device__ hipFloatComplex dftfe::utils::add (hipFloatComplex a, hipFloatComplex b)
 
__forceinline__ __device__ double dftfe::utils::add (double a, float b)
 
__forceinline__ __device__ double dftfe::utils::add (float a, double b)
 
__forceinline__ __device__ hipDoubleComplex dftfe::utils::add (hipDoubleComplex a, hipFloatComplex b)
 
__forceinline__ __device__ hipDoubleComplex dftfe::utils::add (hipFloatComplex a, hipDoubleComplex b)
 
__forceinline__ __device__ unsigned int dftfe::utils::sub (unsigned int a, unsigned int b)
 
__forceinline__ __device__ unsigned long int dftfe::utils::sub (unsigned long int a, unsigned long int b)
 
__forceinline__ __device__ int dftfe::utils::sub (int a, int b)
 
__forceinline__ __device__ double dftfe::utils::sub (double a, double b)
 
__forceinline__ __device__ float dftfe::utils::sub (float a, float b)
 
__forceinline__ __device__ hipDoubleComplex dftfe::utils::sub (hipDoubleComplex a, hipDoubleComplex b)
 
__forceinline__ __device__ hipFloatComplex dftfe::utils::sub (hipFloatComplex a, hipFloatComplex b)
 
__forceinline__ __device__ unsigned int dftfe::utils::div (unsigned int a, unsigned int b)
 
__forceinline__ __device__ unsigned long int dftfe::utils::div (unsigned long int a, unsigned long int b)
 
__forceinline__ __device__ int dftfe::utils::div (int a, int b)
 
__forceinline__ __device__ double dftfe::utils::div (double a, double b)
 
__forceinline__ __device__ float dftfe::utils::div (float a, float b)
 
__forceinline__ __device__ hipDoubleComplex dftfe::utils::div (hipDoubleComplex a, hipDoubleComplex b)
 
__forceinline__ __device__ hipFloatComplex dftfe::utils::div (hipFloatComplex a, hipFloatComplex b)
 
__forceinline__ __device__ hipDoubleComplex dftfe::utils::div (hipFloatComplex a, hipDoubleComplex b)
 
__forceinline__ __device__ hipDoubleComplex dftfe::utils::div (hipDoubleComplex a, hipFloatComplex b)
 
__forceinline__ __device__ hipDoubleComplex dftfe::utils::div (double a, hipDoubleComplex b)
 
__forceinline__ __device__ hipDoubleComplex dftfe::utils::div (hipDoubleComplex a, double b)
 
__forceinline__ __device__ hipFloatComplex dftfe::utils::div (float a, hipFloatComplex b)
 
__forceinline__ __device__ hipFloatComplex dftfe::utils::div (hipFloatComplex a, float b)
 
__forceinline__ __device__ hipDoubleComplex dftfe::utils::div (double a, hipFloatComplex b)
 
__forceinline__ __device__ hipDoubleComplex dftfe::utils::div (hipFloatComplex a, double b)
 
intdftfe::utils::makeDataTypeDeviceCompatible (int *a)
 
const intdftfe::utils::makeDataTypeDeviceCompatible (const int *a)
 
long intdftfe::utils::makeDataTypeDeviceCompatible (long int *a)
 
const long intdftfe::utils::makeDataTypeDeviceCompatible (const long int *a)
 
unsigned intdftfe::utils::makeDataTypeDeviceCompatible (unsigned int *a)
 
const unsigned intdftfe::utils::makeDataTypeDeviceCompatible (const unsigned int *a)
 
unsigned long intdftfe::utils::makeDataTypeDeviceCompatible (unsigned long int *a)
 
const unsigned long intdftfe::utils::makeDataTypeDeviceCompatible (const unsigned long int *a)
 
doubledftfe::utils::makeDataTypeDeviceCompatible (double *a)
 
const doubledftfe::utils::makeDataTypeDeviceCompatible (const double *a)
 
floatdftfe::utils::makeDataTypeDeviceCompatible (float *a)
 
const floatdftfe::utils::makeDataTypeDeviceCompatible (const float *a)
 
cuDoubleComplexdftfe::utils::makeDataTypeDeviceCompatible (std::complex< double > *a)
 
const cuDoubleComplexdftfe::utils::makeDataTypeDeviceCompatible (const std::complex< double > *a)
 
cuFloatComplexdftfe::utils::makeDataTypeDeviceCompatible (std::complex< float > *a)
 
const cuFloatComplexdftfe::utils::makeDataTypeDeviceCompatible (const std::complex< float > *a)
 
int dftfe::utils::makeDataTypeDeviceCompatible (int a)
 
long int dftfe::utils::makeDataTypeDeviceCompatible (long int a)
 
unsigned int dftfe::utils::makeDataTypeDeviceCompatible (unsigned int a)
 
unsigned long int dftfe::utils::makeDataTypeDeviceCompatible (unsigned long int a)
 
double dftfe::utils::makeDataTypeDeviceCompatible (double a)
 
float dftfe::utils::makeDataTypeDeviceCompatible (float a)
 
cuDoubleComplex dftfe::utils::makeDataTypeDeviceCompatible (std::complex< double > a)
 
cuFloatComplex dftfe::utils::makeDataTypeDeviceCompatible (std::complex< float > a)
 
+
+ + + + diff --git a/_device_data_type_overloads_8hip_8h_source.html b/_device_data_type_overloads_8hip_8h_source.html new file mode 100644 index 000000000..bcc9110b4 --- /dev/null +++ b/_device_data_type_overloads_8hip_8h_source.html @@ -0,0 +1,917 @@ + + + + + + + +DFT-FE: workspace/include/DeviceDataTypeOverloads.hip.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
DeviceDataTypeOverloads.hip.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16
+
17
+
18#ifndef dftfeDeviceDataTypeOverloads_hiph
+
19#define dftfeDeviceDataTypeOverloads_hiph
+
20
+
21#include <complex>
+
22#include <hip/hip_complex.h>
+
23#include <hip/hip_runtime.h>
+
24#include <TypeConfig.h>
+
25
+
26namespace dftfe
+
27{
+
28 namespace utils
+
29 {
+
30 __forceinline__ __device__ hipDoubleComplex
+
31 makeComplex(double realPart, double imagPart)
+
32 {
+
33 return make_hipDoubleComplex(realPart, imagPart);
+
34 }
+
35
+
36 __forceinline__ __device__ hipFloatComplex
+
37 makeComplex(float realPart, float imagPart)
+
38 {
+
39 return make_hipFloatComplex(realPart, imagPart);
+
40 }
+
41
+
42 //
+
43 // copyValue for homogeneous types
+
44 //
+
45 __forceinline__ __device__ void
+
46 copyValue(double *a, const double b)
+
47 {
+
48 *a = b;
+
49 }
+
50
+
51 __forceinline__ __device__ void
+
52 copyValue(float *a, const float b)
+
53 {
+
54 *a = b;
+
55 }
+
56
+
57 __forceinline__ __device__ void
+
+ +
59 {
+
60 *a = b;
+
61 }
+
+
62
+ +
+ +
65 {
+
66 *a = b;
+
67 }
+
+
68
+
69 //
+
70 // copyValue for heteregenous types
+
71 //
+ +
73 copyValue(float *a, const double b)
+
74 {
+
75 *a = b;
+
76 }
+
77
+
78 __forceinline__ __device__ void
+
79 copyValue(double *a, const float b)
+
80 {
+
81 *a = b;
+
82 }
+
83
+
84 __forceinline__ __device__ void
+
+ +
86 {
+
87 *a = make_hipDoubleComplex(b.x, b.y);
+
88 }
+
+
89
+ +
+ +
92 {
+
93 *a = make_hipFloatComplex(b.x, b.y);
+
94 }
+
+
95
+ +
+
97 copyValue(hipDoubleComplex *a, const double b)
+
98 {
+ +
100 }
+
+
101
+ +
+ +
104 {
+
105 *a = make_hipFloatComplex(b, 0);
+
106 }
+
+
107
+ +
+ +
110 {
+ +
112 }
+
+
113
+ +
+
115 copyValue(hipFloatComplex *a, const double b)
+
116 {
+
117 *a = make_hipFloatComplex(b, 0);
+
118 }
+
+
119
+
120 // real part obverloads
+
121
+ +
123 realPartDevice(double a)
+
124 {
+
125 return a;
+
126 }
+
127
+
128 __forceinline__ __device__ float
+
129 realPartDevice(float a)
+
130 {
+
131 return a;
+
132 }
+
133
+
134 __forceinline__ __device__ double
+
+ +
136 {
+
137 return a.x;
+
138 }
+
+
139
+ +
+ +
142 {
+
143 return a.x;
+
144 }
+
+
145
+
146 // imag part obverloads
+
147
+ +
149 imagPartDevice(double a)
+
150 {
+
151 return 0;
+
152 }
+
153
+
154 __forceinline__ __device__ float
+
155 imagPartDevice(float a)
+
156 {
+
157 return 0;
+
158 }
+
159
+
160 __forceinline__ __device__ double
+
+ +
162 {
+
163 return a.y;
+
164 }
+
+
165
+ +
+ +
168 {
+
169 return a.y;
+
170 }
+
+
171
+
172 // abs obverloads
+
173
+ +
175 abs(double a)
+
176 {
+
177 return fabs(a);
+
178 }
+
179
+
180 __forceinline__ __device__ float
+
181 abs(float a)
+
182 {
+
183 return fabs(a);
+
184 }
+
185
+
186 __forceinline__ __device__ double
+
+ +
188 {
+
189 return hipCabs(a);
+
190 }
+
+
191
+ +
+ +
194 {
+
195 return hipCabsf(a);
+
196 }
+
+
197
+
198 //
+
199 // conjugate overloads
+
200 //
+
201
+
202 __forceinline__ __device__ unsigned int
+
203 conj(unsigned int a)
+
204 {
+
205 return a;
+
206 }
+
207
+
208 __forceinline__ __device__ unsigned long int
+
209 conj(unsigned long int a)
+
210 {
+
211 return a;
+
212 }
+
213
+
214 __forceinline__ __device__ int
+
215 conj(int a)
+
216 {
+
217 return a;
+
218 }
+
219
+
220 __forceinline__ __device__ float
+
221 conj(float a)
+
222 {
+
223 return a;
+
224 }
+
225 __forceinline__ __device__ double
+
226 conj(double a)
+
227 {
+
228 return a;
+
229 }
+
230
+
231 __forceinline__ __device__ hipDoubleComplex
+
+ +
233 {
+
234 return hipConj(a);
+
235 }
+
+
236
+ +
+ +
239 {
+
240 return hipConjf(a);
+
241 }
+
+
242
+
243
+
244 //
+
245 // mult for real homogeneous types e.g. (double, double)
+
246 //
+
247 __forceinline__ __device__ unsigned int
+
248 mult(unsigned int a, unsigned int b)
+
249 {
+
250 return a * b;
+
251 }
+
252
+
253 __forceinline__ __device__ unsigned long int
+
254 mult(unsigned long int a, unsigned long int b)
+
255 {
+
256 return a * b;
+
257 }
+
258
+
259 __forceinline__ __device__ int
+
260 mult(int a, int b)
+
261 {
+
262 return a * b;
+
263 }
+
264
+
265 __forceinline__ __device__ double
+
266 mult(double a, double b)
+
267 {
+
268 return a * b;
+
269 }
+
270
+
271 __forceinline__ __device__ float
+
272 mult(float a, float b)
+
273 {
+
274 return a * b;
+
275 }
+
276
+
277 __forceinline__ __device__ double
+
278 mult(float a, double b)
+
279 {
+
280 return a * b;
+
281 }
+
282
+
283 __forceinline__ __device__ double
+
284 mult(double a, float b)
+
285 {
+
286 return a * b;
+
287 }
+
288
+
289 //
+
290 // mult for complex homogenous types
+
291 // (e.g., hipDoubleComplex and hipDoubleComplex)
+
292 //
+
293 __forceinline__ __device__ hipDoubleComplex
+
+ +
295 {
+
296 return hipCmul(a, b);
+
297 }
+
+
298
+ +
+ +
301 {
+
302 return hipCmulf(a, b);
+
303 }
+
+
304
+
305
+
306 //
+
307 // mult for complex heterogeneous types e.g. (hipDoubleComplex,
+
308 // hipFloatComplex)
+
309 //
+ +
+ +
312 {
+
313 return hipCmul(make_hipDoubleComplex(a.x, a.y), b);
+
314 }
+
+
315
+ +
+ +
318 {
+
319 return hipCmul(a, make_hipDoubleComplex(b.x, b.y));
+
320 }
+
+
321
+
322
+
323 //
+
324 // mult for real-complex heterogeneous types e.g. (double, hipFloatComplex)
+
325 //
+ +
+ +
328 {
+
329 return make_hipDoubleComplex(a * b.x, a * b.y);
+
330 }
+
+
331
+ +
+ +
334 {
+
335 return make_hipDoubleComplex(b * a.x, b * a.y);
+
336 }
+
+
337
+ +
+ +
340 {
+
341 return make_hipFloatComplex(a * b.x, a * b.y);
+
342 }
+
+
343
+ +
+ +
346 {
+
347 return make_hipFloatComplex(b * a.x, b * a.y);
+
348 }
+
+
349
+ +
+ +
352 {
+
353 return make_hipDoubleComplex(a * b.x, a * b.y);
+
354 }
+
+
355
+ +
+ +
358 {
+
359 return make_hipDoubleComplex(b * a.x, b * a.y);
+
360 }
+
+
361
+
362
+
363 __forceinline__ __device__ unsigned int
+
364 add(unsigned int a, unsigned int b)
+
365 {
+
366 return a + b;
+
367 }
+
368
+
369 __forceinline__ __device__ unsigned long int
+
370 add(unsigned long int a, unsigned long int b)
+
371 {
+
372 return a + b;
+
373 }
+
374
+
375 __forceinline__ __device__ int
+
376 add(int a, int b)
+
377 {
+
378 return a + b;
+
379 }
+
380
+
381 __forceinline__ __device__ double
+
382 add(double a, double b)
+
383 {
+
384 return a + b;
+
385 }
+
386
+
387 __forceinline__ __device__ float
+
388 add(float a, float b)
+
389 {
+
390 return a + b;
+
391 }
+
392
+
393 __forceinline__ __device__ hipDoubleComplex
+
+ +
395 {
+
396 return hipCadd(a, b);
+
397 }
+
+
398
+
399
+ +
+ +
402 {
+
403 return hipCaddf(a, b);
+
404 }
+
+
405
+ +
407 add(double a, float b)
+
408 {
+
409 return a + b;
+
410 }
+
411
+
412 __forceinline__ __device__ double
+
413 add(float a, double b)
+
414 {
+
415 return a + b;
+
416 }
+
417
+
418 __forceinline__ __device__ hipDoubleComplex
+
+ +
420 {
+
421 return hipCadd(a, make_hipDoubleComplex(b.x, b.y));
+
422 }
+
+
423
+
424
+ +
+ +
427 {
+
428 return hipCadd(make_hipDoubleComplex(a.x, a.y), b);
+
429 }
+
+
430
+
431
+
432 __forceinline__ __device__ unsigned int
+
433 sub(unsigned int a, unsigned int b)
+
434 {
+
435 return a - b;
+
436 }
+
437
+
438 __forceinline__ __device__ unsigned long int
+
439 sub(unsigned long int a, unsigned long int b)
+
440 {
+
441 return a - b;
+
442 }
+
443
+
444 __forceinline__ __device__ int
+
445 sub(int a, int b)
+
446 {
+
447 return a - b;
+
448 }
+
449
+
450 __forceinline__ __device__ double
+
451 sub(double a, double b)
+
452 {
+
453 return a - b;
+
454 }
+
455
+
456 __forceinline__ __device__ float
+
457 sub(float a, float b)
+
458 {
+
459 return a - b;
+
460 }
+
461
+
462 __forceinline__ __device__ hipDoubleComplex
+
+ +
464 {
+
465 return hipCsub(a, b);
+
466 }
+
+
467
+ +
+ +
470 {
+
471 return hipCsubf(a, b);
+
472 }
+
+
473
+
474 __forceinline__ __device__ unsigned int
+
475 div(unsigned int a, unsigned int b)
+
476 {
+
477 return a / b;
+
478 }
+
479
+
480 __forceinline__ __device__ unsigned long int
+
481 div(unsigned long int a, unsigned long int b)
+
482 {
+
483 return a / b;
+
484 }
+
485
+
486 __forceinline__ __device__ int
+
487 div(int a, int b)
+
488 {
+
489 return a / b;
+
490 }
+
491
+
492 __forceinline__ __device__ double
+
493 div(double a, double b)
+
494 {
+
495 return a / b;
+
496 }
+
497
+
498 __forceinline__ __device__ float
+
499 div(float a, float b)
+
500 {
+
501 return a / b;
+
502 }
+
503
+
504 __forceinline__ __device__ hipDoubleComplex
+
+ +
506 {
+
507 return hipCdiv(a, b);
+
508 }
+
+
509
+ +
+ +
512 {
+
513 return hipCdivf(a, b);
+
514 }
+
+
515
+
516 //
+
517 // div for complex heterogeneous types e.g. (hipDoubleComplex,
+
518 // hipFloatComplex)
+
519 //
+ +
+ +
522 {
+
523 return hipCdiv(make_hipDoubleComplex(a.x, a.y), b);
+
524 }
+
+
525
+ +
+ +
528 {
+
529 return hipCdiv(a, make_hipDoubleComplex(b.x, b.y));
+
530 }
+
+
531
+
532
+
533 //
+
534 // div for real-complex heterogeneous types e.g. (double, hipFloatComplex)
+
535 //
+ +
+ +
538 {
+
539 return make_hipDoubleComplex(a / b.x, a / b.y);
+
540 }
+
+
541
+ +
+ +
544 {
+
545 return make_hipDoubleComplex(b / a.x, b / a.y);
+
546 }
+
+
547
+ +
+ +
550 {
+
551 return make_hipFloatComplex(a / b.x, a / b.y);
+
552 }
+
+
553
+ +
+ +
556 {
+
557 return make_hipFloatComplex(b / a.x, b / a.y);
+
558 }
+
+
559
+ +
+ +
562 {
+
563 return make_hipDoubleComplex(a / b.x, a / b.y);
+
564 }
+
+
565
+ +
+ +
568 {
+
569 return make_hipDoubleComplex(b / a.x, b / a.y);
+
570 }
+
+
571
+
572 ////
+
573
+
574
+
575 inline int *
+ +
577 {
+
578 return a;
+
579 }
+
580
+
581 inline const int *
+
582 makeDataTypeDeviceCompatible(const int *a)
+
583 {
+
584 return a;
+
585 }
+
586
+
587 inline long int *
+ +
589 {
+
590 return a;
+
591 }
+
592
+
593 inline const long int *
+
594 makeDataTypeDeviceCompatible(const long int *a)
+
595 {
+
596 return a;
+
597 }
+
598
+
599 inline unsigned int *
+
600 makeDataTypeDeviceCompatible(unsigned int *a)
+
601 {
+
602 return a;
+
603 }
+
604
+
605 inline const unsigned int *
+
606 makeDataTypeDeviceCompatible(const unsigned int *a)
+
607 {
+
608 return a;
+
609 }
+
610
+
611 inline unsigned long int *
+
612 makeDataTypeDeviceCompatible(unsigned long int *a)
+
613 {
+
614 return a;
+
615 }
+
616
+
617 inline const unsigned long int *
+
618 makeDataTypeDeviceCompatible(const unsigned long int *a)
+
619 {
+
620 return a;
+
621 }
+
622
+
623 inline double *
+ +
625 {
+
626 return a;
+
627 }
+
628
+
629 inline const double *
+
630 makeDataTypeDeviceCompatible(const double *a)
+
631 {
+
632 return a;
+
633 }
+
634
+
635 inline float *
+ +
637 {
+
638 return a;
+
639 }
+
640
+
641 inline const float *
+
642 makeDataTypeDeviceCompatible(const float *a)
+
643 {
+
644 return a;
+
645 }
+
646
+
647 inline hipDoubleComplex *
+
648 makeDataTypeDeviceCompatible(std::complex<double> *a)
+
649 {
+
650 return reinterpret_cast<hipDoubleComplex *>(a);
+
651 }
+
652
+
653 inline const hipDoubleComplex *
+
654 makeDataTypeDeviceCompatible(const std::complex<double> *a)
+
655 {
+
656 return reinterpret_cast<const hipDoubleComplex *>(a);
+
657 }
+
658
+
659 inline hipFloatComplex *
+
660 makeDataTypeDeviceCompatible(std::complex<float> *a)
+
661 {
+
662 return reinterpret_cast<hipFloatComplex *>(a);
+
663 }
+
664
+
665 inline const hipFloatComplex *
+
666 makeDataTypeDeviceCompatible(const std::complex<float> *a)
+
667 {
+
668 return reinterpret_cast<const hipFloatComplex *>(a);
+
669 }
+
670
+
671 inline int
+ +
673 {
+
674 return a;
+
675 }
+
676
+
677 inline long int
+ +
679 {
+
680 return a;
+
681 }
+
682
+
683 inline unsigned int
+
684 makeDataTypeDeviceCompatible(unsigned int a)
+
685 {
+
686 return a;
+
687 }
+
688
+
689 inline unsigned long int
+
690 makeDataTypeDeviceCompatible(unsigned long int a)
+
691 {
+
692 return a;
+
693 }
+
694
+
695 inline double
+ +
697 {
+
698 return a;
+
699 }
+
700
+
701 inline float
+ +
703 {
+
704 return a;
+
705 }
+
706
+
707 inline hipDoubleComplex
+
708 makeDataTypeDeviceCompatible(std::complex<double> a)
+
709 {
+
710 return make_hipDoubleComplex(a.real(), a.imag());
+
711 }
+
712
+
713 inline hipFloatComplex
+
714 makeDataTypeDeviceCompatible(std::complex<float> a)
+
715 {
+
716 return make_hipFloatComplex(a.real(), a.imag());
+
717 }
+
718
+
719
+
720 } // namespace utils
+
721
+
722} // namespace dftfe
+
723
+
724#endif
+ +
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
__forceinline__ __device__ unsigned int add(unsigned int a, unsigned int b)
Definition DeviceDataTypeOverloads.cu.h:363
+
__forceinline__ __device__ void copyValue(double *a, const double b)
Definition DeviceDataTypeOverloads.cu.h:44
+
__forceinline__ __device__ unsigned int div(unsigned int a, unsigned int b)
Definition DeviceDataTypeOverloads.cu.h:474
+
int * makeDataTypeDeviceCompatible(int *a)
Definition DeviceDataTypeOverloads.cu.h:575
+
__forceinline__ __device__ double realPartDevice(double a)
Definition DeviceDataTypeOverloads.cu.h:121
+
__forceinline__ __device__ cuDoubleComplex makeComplex(double realPart, double imagPart)
Definition DeviceDataTypeOverloads.cu.h:29
+
__forceinline__ __device__ double imagPartDevice(double a)
Definition DeviceDataTypeOverloads.cu.h:147
+
__forceinline__ __device__ unsigned int conj(unsigned int a)
Definition DeviceDataTypeOverloads.cu.h:201
+
__forceinline__ __device__ unsigned int mult(unsigned int a, unsigned int b)
Definition DeviceDataTypeOverloads.cu.h:246
+
__forceinline__ __device__ double abs(double a)
Definition DeviceDataTypeOverloads.cu.h:173
+
double imagPart(const double x)
Definition DataTypeOverloads.h:52
+
__forceinline__ __device__ unsigned int sub(unsigned int a, unsigned int b)
Definition DeviceDataTypeOverloads.cu.h:432
+
double realPart(const double x)
Definition DataTypeOverloads.h:28
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_device_exceptions_8cu_8h.html b/_device_exceptions_8cu_8h.html new file mode 100644 index 000000000..38194de97 --- /dev/null +++ b/_device_exceptions_8cu_8h.html @@ -0,0 +1,159 @@ + + + + + + + +DFT-FE: workspace/include/DeviceExceptions.cu.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
DeviceExceptions.cu.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + +

+Macros

#define DEVICE_API_CHECK(cmd)
 
#define DEVICEBLAS_API_CHECK(expr)
 
+

Macro Definition Documentation

+ +

◆ DEVICE_API_CHECK

+ +
+
+ + + + + + + +
#define DEVICE_API_CHECK( cmd)
+
+Value:
do \
+
{ \
+
cudaError_t e = cmd; \
+
if (e != cudaSuccess) \
+
{ \
+
printf("Failed: Cuda error %s:%d '%s'\n", \
+
__FILE__, \
+
__LINE__, \
+
cudaGetErrorString(e)); \
+
exit(EXIT_FAILURE); \
+
} \
+
} \
+
while (0)
+
+
+
+ +

◆ DEVICEBLAS_API_CHECK

+ +
+
+ + + + + + + +
#define DEVICEBLAS_API_CHECK( expr)
+
+Value:
{ \
+
cublasStatus_t __cublas_error = expr; \
+
if ((__cublas_error) != CUBLAS_STATUS_SUCCESS) \
+
{ \
+
printf( \
+
"cuBLAS error on or before line number %d in file: %s. Error code: %d.\n", \
+
__LINE__, \
+
__FILE__, \
+
__cublas_error); \
+
} \
+
}
+
+
+
+
+ + + + diff --git a/_device_exceptions_8cu_8h_source.html b/_device_exceptions_8cu_8h_source.html new file mode 100644 index 000000000..ef4eaaa8a --- /dev/null +++ b/_device_exceptions_8cu_8h_source.html @@ -0,0 +1,147 @@ + + + + + + + +DFT-FE: workspace/include/DeviceExceptions.cu.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
DeviceExceptions.cu.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17#ifndef dftfeDeviceExceptions_cuh
+
18#define dftfeDeviceExceptions_cuh
+
19
+
20
+
+
21#define DEVICE_API_CHECK(cmd) \
+
22 do \
+
23 { \
+
24 cudaError_t e = cmd; \
+
25 if (e != cudaSuccess) \
+
26 { \
+
27 printf("Failed: Cuda error %s:%d '%s'\n", \
+
28 __FILE__, \
+
29 __LINE__, \
+
30 cudaGetErrorString(e)); \
+
31 exit(EXIT_FAILURE); \
+
32 } \
+
33 } \
+
34 while (0)
+
+
35
+
+
36#define DEVICEBLAS_API_CHECK(expr) \
+
37 { \
+
38 cublasStatus_t __cublas_error = expr; \
+
39 if ((__cublas_error) != CUBLAS_STATUS_SUCCESS) \
+
40 { \
+
41 printf( \
+
42 "cuBLAS error on or before line number %d in file: %s. Error code: %d.\n", \
+
43 __LINE__, \
+
44 __FILE__, \
+
45 __cublas_error); \
+
46 } \
+
47 }
+
+
48
+
49
+
50#endif // dftfeDeviceExceptions_cuh
+
+ + + + diff --git a/_device_exceptions_8hip_8h.html b/_device_exceptions_8hip_8h.html new file mode 100644 index 000000000..b8df1089b --- /dev/null +++ b/_device_exceptions_8hip_8h.html @@ -0,0 +1,159 @@ + + + + + + + +DFT-FE: workspace/include/DeviceExceptions.hip.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
DeviceExceptions.hip.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + +

+Macros

#define DEVICE_API_CHECK(cmd)
 
#define DEVICEBLAS_API_CHECK(expr)
 
+

Macro Definition Documentation

+ +

◆ DEVICE_API_CHECK

+ +
+
+ + + + + + + +
#define DEVICE_API_CHECK( cmd)
+
+Value:
do \
+
{ \
+
hipError_t e = cmd; \
+
if (e != hipSuccess) \
+
{ \
+
printf("Failed: HIP error %s:%d '%s'\n", \
+
__FILE__, \
+
__LINE__, \
+
hipGetErrorString(e)); \
+
exit(EXIT_FAILURE); \
+
} \
+
} \
+
while (0)
+
+
+
+ +

◆ DEVICEBLAS_API_CHECK

+ +
+
+ + + + + + + +
#define DEVICEBLAS_API_CHECK( expr)
+
+Value:
{ \
+
hipblasStatus_t __hipblas_error = expr; \
+
if ((__hipblas_error) != HIPBLAS_STATUS_SUCCESS) \
+
{ \
+
printf( \
+
"hipBLAS error on or before line number %d in file: %s. Error code: %d.\n", \
+
__LINE__, \
+
__FILE__, \
+
__hipblas_error); \
+
} \
+
}
+
+
+
+
+ + + + diff --git a/_device_exceptions_8hip_8h_source.html b/_device_exceptions_8hip_8h_source.html new file mode 100644 index 000000000..73e8130e6 --- /dev/null +++ b/_device_exceptions_8hip_8h_source.html @@ -0,0 +1,147 @@ + + + + + + + +DFT-FE: workspace/include/DeviceExceptions.hip.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
DeviceExceptions.hip.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17#ifndef dftfeDeviceExceptions_hiph
+
18#define dftfeDeviceExceptions_hiph
+
19
+
20
+
+
21#define DEVICE_API_CHECK(cmd) \
+
22 do \
+
23 { \
+
24 hipError_t e = cmd; \
+
25 if (e != hipSuccess) \
+
26 { \
+
27 printf("Failed: HIP error %s:%d '%s'\n", \
+
28 __FILE__, \
+
29 __LINE__, \
+
30 hipGetErrorString(e)); \
+
31 exit(EXIT_FAILURE); \
+
32 } \
+
33 } \
+
34 while (0)
+
+
35
+
+
36#define DEVICEBLAS_API_CHECK(expr) \
+
37 { \
+
38 hipblasStatus_t __hipblas_error = expr; \
+
39 if ((__hipblas_error) != HIPBLAS_STATUS_SUCCESS) \
+
40 { \
+
41 printf( \
+
42 "hipBLAS error on or before line number %d in file: %s. Error code: %d.\n", \
+
43 __LINE__, \
+
44 __FILE__, \
+
45 __hipblas_error); \
+
46 } \
+
47 }
+
+
48
+
49
+
50#endif // dftfeDeviceExceptions_hiph
+
+ + + + diff --git a/_device_kernel_launcher_constants_8h.html b/_device_kernel_launcher_constants_8h.html new file mode 100644 index 000000000..17a1b8aa9 --- /dev/null +++ b/_device_kernel_launcher_constants_8h.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: workspace/include/DeviceKernelLauncherConstants.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
DeviceKernelLauncherConstants.h File Reference
+
+
+ +

Go to the source code of this file.

+
+ + + + diff --git a/_device_kernel_launcher_constants_8h_source.html b/_device_kernel_launcher_constants_8h_source.html new file mode 100644 index 000000000..b7d151aff --- /dev/null +++ b/_device_kernel_launcher_constants_8h_source.html @@ -0,0 +1,146 @@ + + + + + + + +DFT-FE: workspace/include/DeviceKernelLauncherConstants.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
DeviceKernelLauncherConstants.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16
+
17/*
+
18 * @author Ian C. Lin., Sambit Das
+
19 */
+
20#ifdef DFTFE_WITH_DEVICE
+
21# ifndef dftfeDeviceKernelLauncherConstants_h
+
22# define dftfeDeviceKernelLauncherConstants_h
+
23
+
24# ifdef DFTFE_WITH_DEVICE_NVIDIA
+
25namespace dftfe
+
26{
+
27 namespace utils
+
28 {
+
29 static const int DEVICE_WARP_SIZE = 32;
+
30 static const int DEVICE_MAX_BLOCK_SIZE = 1024;
+
31 static const int DEVICE_BLOCK_SIZE = 256;
+
32
+
33 } // namespace utils
+
34} // namespace dftfe
+
35
+
36# elif DFTFE_WITH_DEVICE_AMD
+
37
+
38namespace dftfe
+
39{
+
40 namespace utils
+
41 {
+
42 static const int DEVICE_WARP_SIZE = 64;
+
43 static const int DEVICE_MAX_BLOCK_SIZE = 1024;
+
44 static const int DEVICE_BLOCK_SIZE = 512;
+
45
+
46 } // namespace utils
+
47} // namespace dftfe
+
48
+
49# endif
+
50
+
51# endif // dftfeDeviceKernelLauncherConstants_h
+
52#endif // DFTFE_WITH_DEVICE
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_device_type_config_8cu_8h.html b/_device_type_config_8cu_8h.html new file mode 100644 index 000000000..8c0a03eb1 --- /dev/null +++ b/_device_type_config_8cu_8h.html @@ -0,0 +1,138 @@ + + + + + + + +DFT-FE: workspace/include/DeviceTypeConfig.cu.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
DeviceTypeConfig.cu.h File Reference
+
+
+
#include <cuComplex.h>
+#include <cublas_v2.h>
+
+

Go to the source code of this file.

+ + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::utils
 
+ + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef cudaError_t dftfe::utils::deviceError_t
 
typedef cudaStream_t dftfe::utils::deviceStream_t
 
typedef cudaEvent_t dftfe::utils::deviceEvent_t
 
typedef cuDoubleComplex dftfe::utils::deviceDoubleComplex
 
typedef cuFloatComplex dftfe::utils::deviceFloatComplex
 
typedef cublasHandle_t dftfe::utils::deviceBlasHandle_t
 
typedef cublasOperation_t dftfe::utils::deviceBlasOperation_t
 
typedef cublasStatus_t dftfe::utils::deviceBlasStatus_t
 
typedef cublasMath_t dftfe::utils::deviceBlasMath_t
 
+ + + + + + + + + + + +

+Variables

static const deviceError_t dftfe::utils::deviceSuccess = cudaSuccess
 
static const cublasOperation_t dftfe::utils::DEVICEBLAS_OP_N = CUBLAS_OP_N
 
static const cublasOperation_t dftfe::utils::DEVICEBLAS_OP_T = CUBLAS_OP_T
 
static const cublasOperation_t dftfe::utils::DEVICEBLAS_OP_C = CUBLAS_OP_C
 
static const cublasMath_t dftfe::utils::DEVICEBLAS_TF32_TENSOR_OP_MATH
 
+
+ + + + diff --git a/_device_type_config_8cu_8h_source.html b/_device_type_config_8cu_8h_source.html new file mode 100644 index 000000000..f3dde0b0e --- /dev/null +++ b/_device_type_config_8cu_8h_source.html @@ -0,0 +1,158 @@ + + + + + + + +DFT-FE: workspace/include/DeviceTypeConfig.cu.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
DeviceTypeConfig.cu.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17#ifndef dftfeDeviceTypeConfig_cuh
+
18#define dftfeDeviceTypeConfig_cuh
+
19
+
20#include <cuComplex.h>
+
21#include <cublas_v2.h>
+
22namespace dftfe
+
23{
+
24 namespace utils
+
25 {
+ + + + + +
31
+
32 // static consts
+ +
34
+
35 // vendor blas related typedef and static consts
+ + + + +
40
+ + + + + +
46 } // namespace utils
+
47} // namespace dftfe
+
48
+
49#endif // dftfeDeviceTypeConfig_cuh
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
cudaError_t deviceError_t
Definition DeviceTypeConfig.cu.h:26
+
static const cublasMath_t DEVICEBLAS_TF32_TENSOR_OP_MATH
Definition DeviceTypeConfig.cu.h:44
+
cudaStream_t deviceStream_t
Definition DeviceTypeConfig.cu.h:27
+
cublasStatus_t deviceBlasStatus_t
Definition DeviceTypeConfig.cu.h:38
+
static const deviceError_t deviceSuccess
Definition DeviceTypeConfig.cu.h:33
+
cuDoubleComplex deviceDoubleComplex
Definition DeviceTypeConfig.cu.h:29
+
static const cublasOperation_t DEVICEBLAS_OP_N
Definition DeviceTypeConfig.cu.h:41
+
cublasMath_t deviceBlasMath_t
Definition DeviceTypeConfig.cu.h:39
+
cublasHandle_t deviceBlasHandle_t
Definition DeviceTypeConfig.cu.h:36
+
static const cublasOperation_t DEVICEBLAS_OP_T
Definition DeviceTypeConfig.cu.h:42
+
cuFloatComplex deviceFloatComplex
Definition DeviceTypeConfig.cu.h:30
+
cudaEvent_t deviceEvent_t
Definition DeviceTypeConfig.cu.h:28
+
static const cublasOperation_t DEVICEBLAS_OP_C
Definition DeviceTypeConfig.cu.h:43
+
cublasOperation_t deviceBlasOperation_t
Definition DeviceTypeConfig.cu.h:37
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_device_type_config_8h.html b/_device_type_config_8h.html new file mode 100644 index 000000000..967de09f3 --- /dev/null +++ b/_device_type_config_8h.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: workspace/include/DeviceTypeConfig.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
DeviceTypeConfig.h File Reference
+
+
+ +

Go to the source code of this file.

+
+ + + + diff --git a/_device_type_config_8h_source.html b/_device_type_config_8h_source.html new file mode 100644 index 000000000..019e35dce --- /dev/null +++ b/_device_type_config_8h_source.html @@ -0,0 +1,126 @@ + + + + + + + +DFT-FE: workspace/include/DeviceTypeConfig.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
DeviceTypeConfig.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16
+
17/*
+
18 * @author Ian C. Lin., Sambit Das
+
19 */
+
20#ifdef DFTFE_WITH_DEVICE
+
21# ifndef dftfeDeviceTypeConfig_h
+
22# define dftfeDeviceTypeConfig_h
+
23
+
24# ifdef DFTFE_WITH_DEVICE_LANG_CUDA
+
25# include "DeviceTypeConfig.cu.h"
+
26# elif DFTFE_WITH_DEVICE_LANG_HIP
+
27# include "DeviceTypeConfig.hip.h"
+
28# endif
+
29
+
30# endif // dftfeDeviceTypeConfig_h
+
31#endif // DFTFE_WITH_DEVICE
+ + +
+ + + + diff --git a/_device_type_config_8hip_8h.html b/_device_type_config_8hip_8h.html new file mode 100644 index 000000000..c3d374e60 --- /dev/null +++ b/_device_type_config_8hip_8h.html @@ -0,0 +1,115 @@ + + + + + + + +DFT-FE: workspace/include/DeviceTypeConfig.hip.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
DeviceTypeConfig.hip.h File Reference
+
+
+
#include <hip/hip_runtime.h>
+#include <hip/hip_complex.h>
+#include <hipblas.h>
+
+

Go to the source code of this file.

+ + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::utils
 
+ + + + + + + + + +

+Variables

static const deviceError_t dftfe::utils::deviceSuccess = hipSuccess
 
static const hipblasOperation_t dftfe::utils::DEVICEBLAS_OP_N = HIPBLAS_OP_N
 
static const hipblasOperation_t dftfe::utils::DEVICEBLAS_OP_T = HIPBLAS_OP_T
 
static const hipblasOperation_t dftfe::utils::DEVICEBLAS_OP_C = HIPBLAS_OP_C
 
+
+ + + + diff --git a/_device_type_config_8hip_8h_source.html b/_device_type_config_8hip_8h_source.html new file mode 100644 index 000000000..d36d2f4f6 --- /dev/null +++ b/_device_type_config_8hip_8h_source.html @@ -0,0 +1,154 @@ + + + + + + + +DFT-FE: workspace/include/DeviceTypeConfig.hip.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
DeviceTypeConfig.hip.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17#ifndef dftfeDeviceTypeConfig_hiph
+
18#define dftfeDeviceTypeConfig_hiph
+
19
+
20#include <hip/hip_runtime.h>
+
21#include <hip/hip_complex.h>
+
22#include <hipblas.h>
+
23namespace dftfe
+
24{
+
25 namespace utils
+
26 {
+
27 typedef hipError_t deviceError_t;
+
28 typedef hipStream_t deviceStream_t;
+
29 typedef hipEvent_t deviceEvent_t;
+
30 typedef hipDoubleComplex deviceDoubleComplex;
+
31 typedef hipFloatComplex deviceFloatComplex;
+
32
+
33 // static consts
+ +
35
+
36 // vendor blas related typedef and static consts
+ + + +
40
+ + + +
44 } // namespace utils
+
45} // namespace dftfe
+
46
+
47#endif // dftfeDeviceTypeConfig_hiph
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
cudaError_t deviceError_t
Definition DeviceTypeConfig.cu.h:26
+
cudaStream_t deviceStream_t
Definition DeviceTypeConfig.cu.h:27
+
cublasStatus_t deviceBlasStatus_t
Definition DeviceTypeConfig.cu.h:38
+
static const deviceError_t deviceSuccess
Definition DeviceTypeConfig.cu.h:33
+
cuDoubleComplex deviceDoubleComplex
Definition DeviceTypeConfig.cu.h:29
+
static const cublasOperation_t DEVICEBLAS_OP_N
Definition DeviceTypeConfig.cu.h:41
+
cublasHandle_t deviceBlasHandle_t
Definition DeviceTypeConfig.cu.h:36
+
static const cublasOperation_t DEVICEBLAS_OP_T
Definition DeviceTypeConfig.cu.h:42
+
cuFloatComplex deviceFloatComplex
Definition DeviceTypeConfig.cu.h:30
+
cudaEvent_t deviceEvent_t
Definition DeviceTypeConfig.cu.h:28
+
static const cublasOperation_t DEVICEBLAS_OP_C
Definition DeviceTypeConfig.cu.h:43
+
cublasOperation_t deviceBlasOperation_t
Definition DeviceTypeConfig.cu.h:37
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_exceptions_8h.html b/_exceptions_8h.html new file mode 100644 index 000000000..8dbfb8ef2 --- /dev/null +++ b/_exceptions_8h.html @@ -0,0 +1,221 @@ + + + + + + + +DFT-FE: workspace/include/Exceptions.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
Exceptions.h File Reference
+
+
+
#include <string>
+#include <stdexcept>
+#include <assert.h>
+#include "../utils/Exceptions.t.cc"
+
+

Go to the source code of this file.

+ + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::utils
 
+ + + + + + + + +

+Macros

#define DFTFE_Assert(expr)   assert(expr)
 provides an interface for exception handling. It two overrides on the assert(expr) function in C/C++ and two wrappers on std::exception.
 
#define DFTFE_AssertWithMsg(expr, msg)   assert((expr) && (msg))
 
#define MPICHECK(cmd)
 
+ + + + + + + + + + + + + + + + + +

+Typedefs

typedef std::logic_error dftfe::utils::LogicError
 
typedef std::invalid_argument dftfe::utils::InvalidArgument
 
typedef std::domain_error dftfe::utils::DomainError
 
typedef std::length_error dftfe::utils::LengthError
 
typedef std::out_of_range dftfe::utils::OutOfRangeError
 
typedef std::runtime_error dftfe::utils::RuntimeError
 
typedef std::overflow_error dftfe::utils::OverflowError
 
typedef std::underflow_error dftfe::utils::UnderflowError
 
+ + + + + + +

+Functions

void dftfe::utils::throwException (bool condition, std::string msg="")
 
template<class T >
void dftfe::utils::throwException (bool condition, std::string msg="")
 
+

Macro Definition Documentation

+ +

◆ DFTFE_Assert

+ +
+
+ + + + + + + +
#define DFTFE_Assert( expr)   assert(expr)
+
+ +

provides an interface for exception handling. It two overrides on the assert(expr) function in C/C++ and two wrappers on std::exception.

+

The overrides on assert(expr) are useful for debug mode testing. That is, you want the assert to be executed only in debug mode and not in release mode (i.e., if NDEBUG is defined). The two assert overrides are

    +
  1. DFTFE_Assert(expr): same as std::assert(expr). Throws an assert if expr is false
  2. +
  3. DFTFE_AssertWithMsg(expr,msg): same as above but takes an additional message in the form of string to display if expr is false.
  4. +
+

It also provides two preprocessor flags, DFTFE_DISABLE_ASSERT and DFTFE_ENABLE_ASSERT, that you can set to override the NDEBUG flag in a particular source file. This is provided to allow selective enabling or disabling of Assert and AssertWithMsg without any relation to whether NDEBUG is defined or not (NDEBUG is typically defined globally for all files through compiler options). For example, if in a file you have define DFTFE_DISABLE_ASSERT include "Exceptions.h" then it would disable all calls to Assert or AssertWithMsg in that file, regardless of whether NDEBUG is defined. Also, it has no bearing on std::assert (i.e., any calls to std::assert in that file will still be governed by NDEBUG). Similarly, if in a file you have define DFTFE_ENABLE_ASSERT include "Exceptions.h" then it would enable all calls to Assert or AssertWithMsg in that file, regardless of whether NDEBUG is defined. Also, it has no bearning on std::assert (i.e., any calls to std::assert in that file will still be governed by NDEBUG)

+

It also provides two wrappers on std::exception and its derived classes (e.g., std::runtime_error, std::domain_error, etc.) The two wrappers are:

    +
  1. dftfe::utils::throwException(expr,msg): a generic exception handler which throws an optional message (msg) if expr evaluates to false. It combines std::exception with an additional messgae. (Note: the std::exception has no easy way of taking in a message).
  2. +
  3. dftfe::utils::throwException<T>(expr, msg): similar to the above, but takes a specific derived class of std::exception handler as a template parameter. The derived std::exception must have a constructor that takes in a string. For the ease of the user, we have typedef-ed some commonly used derived classes of std::exception. A user can use the typedefs as the template parameter instead. Available typedefs LogicError - std::logic_error InvalidArgument - std::invalid_argument DomainError - std::domain_error LengthError - std::length_error OutOfRangeError - std::out_of_range FutureError - std::future_error RuntimeError - std::runtime_error OverflowError - std::overflow_error UnderflowError - std::underflow_error
  4. +
+ +
+
+ +

◆ DFTFE_AssertWithMsg

+ +
+
+ + + + + + + + + + + +
#define DFTFE_AssertWithMsg( expr,
msg )   assert((expr) && (msg))
+
+ +
+
+ +

◆ MPICHECK

+ +
+
+ + + + + + + +
#define MPICHECK( cmd)
+
+Value:
do \
+
{ \
+
int e = cmd; \
+
if (e != MPI_SUCCESS) \
+
{ \
+
printf("Failed: MPI error %s:%d '%d'\n", __FILE__, __LINE__, e); \
+
exit(EXIT_FAILURE); \
+
} \
+
} \
+
while (0)
+
+
+
+
+ + + + diff --git a/_exceptions_8h_source.html b/_exceptions_8h_source.html new file mode 100644 index 000000000..63a1e3514 --- /dev/null +++ b/_exceptions_8h_source.html @@ -0,0 +1,254 @@ + + + + + + + +DFT-FE: workspace/include/Exceptions.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
Exceptions.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16
+
17/*
+
18 * @author Bikash Kanungo
+
19 */
+
20#ifndef dftfeExceptions_h
+
21#define dftfeExceptions_h
+
22
+
23#include <string>
+
24#include <stdexcept>
+
25/**
+
26@brief provides an interface for exception handling.
+
27It two overrides on the assert(expr) function in C/C++ and two wrappers on
+
28std::exception.
+
29
+
30The overrides on assert(expr) are useful for debug mode testing. That is,
+
31you want the assert to be executed *only in debug mode* and not in release
+
32mode (i.e., if NDEBUG is defined). The two assert overrides are
+
331. DFTFE_Assert(expr): same as std::assert(expr). Throws an assert
+
34if expr is false
+
352. DFTFE_AssertWithMsg(expr,msg): same as above but takes an
+
36additional message in the form of string to display if expr is false.
+
37
+
38It also provides two preprocessor flags, DFTFE_DISABLE_ASSERT and
+
39DFTFE_ENABLE_ASSERT, that you can set to override the NDEBUG flag in a
+
40particular source file. This is provided to allow selective enabling or
+
41disabling of Assert and AssertWithMsg without any relation to whether NDEBUG
+
42is defined or not (NDEBUG is typically defined globally for all files
+
43through compiler options).
+
44For example, if in a file you have
+
45#define DFTFE_DISABLE_ASSERT
+
46#include "Exceptions.h"
+
47then it would disable all calls to Assert or AssertWithMsg in that file,
+
48regardless of whether NDEBUG is defined. Also, it has no bearing on
+
49std::assert (i.e., any calls to std::assert in that file will still be
+
50governed by NDEBUG). Similarly, if in a file you have
+
51#define
+
52DFTFE_ENABLE_ASSERT
+
53#include "Exceptions.h"
+
54then it would enable all calls to Assert or AssertWithMsg in that file,
+
55regardless of whether NDEBUG is defined.
+
56Also, it has no bearning on std::assert (i.e., any calls
+
57to std::assert in that file will still be governed by NDEBUG)
+
58
+
59It also provides two wrappers on std::exception and its derived classes
+
60(e.g., std::runtime_error, std::domain_error, etc.) The two wrappers are:
+
611. dftfe::utils::throwException(expr,msg): a generic exception handler
+
62which throws an optional message (msg) if expr evaluates to false. It
+
63combines std::exception with an additional messgae. (Note: the
+
64std::exception has no easy way of taking in a message).
+
652. dftfe::utils::throwException<T>(expr, msg): similar to the above, but
+
66takes a specific derived class of std::exception handler as a template
+
67parameter. The derived std::exception must have a constructor that takes in
+
68a string. For the ease of the user, we have typedef-ed some commonly used
+
69derived classes of std::exception. A user can use the typedefs as the
+
70template parameter instead. Available typedefs LogicError - std::logic_error
+
71 InvalidArgument - std::invalid_argument
+
72 DomainError - std::domain_error
+
73 LengthError - std::length_error
+
74 OutOfRangeError - std::out_of_range
+
75 FutureError - std::future_error
+
76 RuntimeError - std::runtime_error
+
77 OverflowError - std::overflow_error
+
78 UnderflowError - std::underflow_error
+
79*/
+
80
+
81#undef DFTFE_Assert
+
82#undef DFTFE_AssertWithMsg
+
83
+
84#if defined(DFTFE_DISABLE_ASSERT) || \
+
85 (!defined(DFTFE_ENABLE_ASSERT) && defined(NDEBUG))
+
86# include <assert.h> // .h to support old libraries w/o <cassert> - effect is the same
+
87# define DFTFE_Assert(expr) ((void)0)
+
88# define DFTFE_AssertWithMsg(expr, msg) ((void)0)
+
89
+
90#elif defined(DFTFE_ENABLE_ASSERT) && defined(NDEBUG)
+
91# undef NDEBUG // disabling NDEBUG to forcibly enable assert for sources that
+
92 // set DFTFE_ENABLE_ASSERT even when in release mode (with
+
93 // NDEBUG)
+
94# include <assert.h> // .h to support old libraries w/o <cassert> - effect is the same
+
95# define DFTFE_Assert(expr) assert(expr)
+
96# define DFTFE_AssertWithMsg(expr, msg) assert((expr) && (msg))
+
97
+
98#else
+
99# include <assert.h> // .h to support old libraries w/o <cassert> - effect is the same
+
100# define DFTFE_Assert(expr) assert(expr)
+
101# define DFTFE_AssertWithMsg(expr, msg) assert((expr) && (msg))
+
102
+
103#endif
+
104
+
105#ifdef DFTFE_WITH_DEVICE_LANG_CUDA
+
106# include <DeviceExceptions.cu.h>
+
107#elif DFTFE_WITH_DEVICE_LANG_HIP
+
108# include <DeviceExceptions.hip.h>
+
109#endif
+
110
+
+
111#define MPICHECK(cmd) \
+
112 do \
+
113 { \
+
114 int e = cmd; \
+
115 if (e != MPI_SUCCESS) \
+
116 { \
+
117 printf("Failed: MPI error %s:%d '%d'\n", __FILE__, __LINE__, e); \
+
118 exit(EXIT_FAILURE); \
+
119 } \
+
120 } \
+
121 while (0)
+
+
122
+
123namespace dftfe
+
124{
+
125 namespace utils
+
126 {
+
127 typedef std::logic_error LogicError;
+
128 typedef std::invalid_argument InvalidArgument;
+
129 typedef std::domain_error DomainError;
+
130 typedef std::length_error LengthError;
+
131 typedef std::out_of_range OutOfRangeError;
+
132 typedef std::runtime_error RuntimeError;
+
133 typedef std::overflow_error OverflowError;
+
134 typedef std::underflow_error UnderflowError;
+
135
+
136 void
+
137 throwException(bool condition, std::string msg = "");
+
138
+
139 template <class T>
+
140 void
+
141 throwException(bool condition, std::string msg = "");
+
142
+
143 } // namespace utils
+
144} // namespace dftfe
+
145#include "../utils/Exceptions.t.cc"
+
146#endif // dftfeExceptions_h
+ + +
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
std::domain_error DomainError
Definition Exceptions.h:129
+
void throwException(bool condition, std::string msg="")
+
std::overflow_error OverflowError
Definition Exceptions.h:133
+
std::underflow_error UnderflowError
Definition Exceptions.h:134
+
std::invalid_argument InvalidArgument
Definition Exceptions.h:128
+
std::length_error LengthError
Definition Exceptions.h:130
+
std::logic_error LogicError
Definition Exceptions.h:127
+
std::runtime_error RuntimeError
Definition Exceptions.h:132
+
std::out_of_range OutOfRangeError
Definition Exceptions.h:131
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_f_e_basis_operations_8h.html b/_f_e_basis_operations_8h.html new file mode 100644 index 000000000..9fb97c2c5 --- /dev/null +++ b/_f_e_basis_operations_8h.html @@ -0,0 +1,140 @@ + + + + + + + +DFT-FE: workspace/include/FEBasisOperations.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
FEBasisOperations.h File Reference
+
+
+
#include <MultiVector.h>
+#include <headers.h>
+#include <constraintMatrixInfo.h>
+#include <constraintMatrixInfoDevice.h>
+#include <DeviceTypeConfig.h>
+#include <BLASWrapper.h>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
 
+ + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::basis
 
+ + + +

+Enumerations

enum  dftfe::basis::UpdateFlags {
+  dftfe::basis::update_default = 0 +, dftfe::basis::update_values = 0x0001 +, dftfe::basis::update_gradients = 0x0002 +, dftfe::basis::update_transpose = 0x0004 +,
+  dftfe::basis::update_quadpoints = 0x0008 +, dftfe::basis::update_inversejacobians = 0x0010 +, dftfe::basis::update_jxw = 0x0020 +
+ }
 
+ + + + + + + + + +

+Functions

UpdateFlags dftfe::basis::operator| (const UpdateFlags f1, const UpdateFlags f2)
 
UpdateFlagsdftfe::basis::operator|= (UpdateFlags &f1, const UpdateFlags f2)
 
UpdateFlags dftfe::basis::operator& (const UpdateFlags f1, const UpdateFlags f2)
 
UpdateFlagsdftfe::basis::operator&= (UpdateFlags &f1, const UpdateFlags f2)
 
+
+ + + + diff --git a/_f_e_basis_operations_8h_source.html b/_f_e_basis_operations_8h_source.html new file mode 100644 index 000000000..ef7a27207 --- /dev/null +++ b/_f_e_basis_operations_8h_source.html @@ -0,0 +1,1345 @@ + + + + + + + +DFT-FE: workspace/include/FEBasisOperations.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
FEBasisOperations.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#ifndef dftfeFEBasisOperations_h
+
19#define dftfeFEBasisOperations_h
+
20
+
21#include <MultiVector.h>
+
22#include <headers.h>
+ + +
25#include <DeviceTypeConfig.h>
+
26#include <BLASWrapper.h>
+
27
+
28namespace dftfe
+
29{
+
+
30 namespace basis
+
31 {
+
+ +
33 {
+ +
35
+
36 update_values = 0x0001,
+
37
+ +
39
+ +
41
+ +
43
+ +
45
+
46 update_jxw = 0x0020,
+
47 };
+
+
48
+
49 inline UpdateFlags
+
+ +
51 {
+
52 return static_cast<UpdateFlags>(static_cast<unsigned int>(f1) |
+
53 static_cast<unsigned int>(f2));
+
54 }
+
+
55
+
56
+
57
+
58 inline UpdateFlags &
+
+ +
60 {
+
61 f1 = f1 | f2;
+
62 return f1;
+
63 }
+
+
64
+
65
+
+ +
67 {
+
68 return static_cast<UpdateFlags>(static_cast<unsigned int>(f1) &
+
69 static_cast<unsigned int>(f2));
+
70 }
+
+
71
+
72
+
73 inline UpdateFlags &
+
+ +
75 {
+
76 f1 = f1 & f2;
+
77 return f1;
+
78 }
+
+
79
+
80
+
81 template <typename ValueTypeBasisCoeff,
+
82 typename ValueTypeBasisData,
+ +
+ +
85 {
+
86 protected:
+ + + + + + + + +
95 std::shared_ptr<dftfe::linearAlgebra::BLASWrapper<memorySpace>>
+ +
97
+
98 public:
+
99 /**
+
100 * @brief Constructor
+
101 */
+ + + +
105
+
106
+
107 /**
+
108 * @brief Default Destructor
+
109 */
+ +
111
+
112 /**
+
113 * @brief Clears the FEBasisOperations internal storage.
+
114 */
+
115 void
+ +
117
+
118 /**
+
119 * @brief fills required data structures for the given dofHandlerID
+
120 * @param[in] matrixFreeData MatrixFree object.
+
121 * @param[in] constraintsVector std::vector of AffineConstraints, should
+
122 * be the same vector which was passed for the construction of the given
+
123 * MatrixFree object.
+
124 * @param[in] dofHandlerID dofHandler index to be used for getting data
+
125 * from the MatrixFree object.
+
126 * @param[in] quadratureID std::vector of quadratureIDs to be used, should
+
127 * be the same IDs which were used during the construction of the given
+
128 * MatrixFree object.
+
129 */
+
130 void
+
131 init(dealii::MatrixFree<3, ValueTypeBasisData> &matrixFreeData,
+
132 std::vector<const dealii::AffineConstraints<ValueTypeBasisData> *>
+ +
134 const unsigned int & dofHandlerID,
+
135 const std::vector<unsigned int> &quadratureID,
+
136 const std::vector<UpdateFlags> updateFlags);
+
137
+
138 /**
+
139 * @brief fills required data structures from another FEBasisOperations object
+
140 * @param[in] basisOperationsSrc Source FEBasisOperations object.
+
141 */
+
142 template <dftfe::utils::MemorySpace memorySpaceSrc>
+
143 void
+ + + +
147
+
148 /**
+
149 * @brief sets internal variables and optionally resizes internal temp storage for interpolation operations
+
150 * @param[in] vecBlockSize block size to used for operations on vectors,
+
151 * this has to be set to the exact value before any such operations are
+
152 * called.
+
153 * @param[in] cellBlockSize block size to used for cells, this has to be
+
154 * set to a value greater than or equal to the required value before any
+
155 * such operations are called
+
156 * @param[in] quadratureID Quadrature index to be used.
+
157 * @param[in] isResizeTempStorage whether to resize internal tempstorage.
+
158 */
+
159 void
+
160 reinit(const unsigned int &vecBlockSize,
+
161 const unsigned int &cellBlockSize,
+
162 const unsigned int &quadratureID,
+
163 const bool isResizeTempStorageForInerpolation = true,
+
164 const bool isResizeTempStorageForCellMatrices = false);
+
165
+
166 // private:
+
167#if defined(DFTFE_WITH_DEVICE)
+
168 using constraintInfoClass =
+
169 typename std::conditional<memorySpace ==
+ +
171 dftUtils::constraintMatrixInfoDevice,
+ +
173#else
+ +
175#endif
+
176
+
177
+
178
+
179 /**
+
180 * @brief Initializes indexset maps from process level indices to cell level indices for a single vector, also initializes cell index to cellid map.
+
181 */
+
182 void
+ +
184
+
185 /**
+
186 * @brief Initializes indexset maps from process level indices to cell level indices for multivectors.
+
187 */
+
188 void
+ +
190
+
191 /**
+
192 * @brief Initializes the constraintMatrixInfo object.
+
193 */
+
194 void
+ +
196
+
197 /**
+
198 * @brief Reinitializes the constraintMatrixInfo object.
+
199 */
+
200 void
+ +
202 std::vector<const dealii::AffineConstraints<ValueTypeBasisData> *>
+ +
204
+
205 /**
+
206 * @brief Constructs the MPIPatternP2P object.
+
207 */
+
208 void
+ +
210
+
211 /**
+
212 * @brief Fill the shape function data and jacobian data in the ValueTypeBasisCoeff datatype.
+
213 */
+
214 void
+ +
216
+
217 /**
+
218 * @brief Fill the shape function data and jacobian data in the ValueTypeBasisData datatype.
+
219 */
+
220 void
+ +
222
+
223
+
224 /**
+
225 * @brief Computes the cell-level stiffness matrix.
+
226 */
+
227 void
+ +
229 const unsigned int cellsBlockSize,
+
230 const bool basisType = false,
+
231 const bool ceoffType = true);
+
232
+
233 void
+ +
235 const unsigned int cellsBlockSize,
+
236 const bool basisType = false,
+
237 const bool ceoffType = true);
+
238
+
239 void
+ +
241 const std::pair<unsigned int, unsigned int> cellRangeTotal,
+ + + +
245
+
246 void
+ +
248 const std::pair<unsigned int, unsigned int> cellRangeTotal,
+ + + +
252
+
253 void
+ +
255 const std::pair<unsigned int, unsigned int> cellRangeTotal,
+ + + +
259
+
260 void
+ +
262 const bool ceoffType = false);
+
263
+
264 /**
+
265 * @brief Resizes the internal temp storage to be sufficient for the vector and cell block sizes provided in reinit.
+
266 */
+
267 void
+ + +
270
+
271 /**
+
272 * @brief Number of quadrature points per cell for the quadratureID set in reinit.
+
273 */
+
274 unsigned int
+ +
276
+
277 /**
+
278 * @brief Number of DoFs per cell for the dofHandlerID set in init.
+
279 */
+
280 unsigned int
+ +
282
+
283 /**
+
284 * @brief Number of locally owned cells on the current processor.
+
285 */
+
286 unsigned int
+
287 nCells() const;
+
288
+
289 /**
+
290 * @brief Number of DoFs on the current processor, locally owned + ghosts.
+
291 */
+
292 unsigned int
+ +
294
+
295 /**
+
296 * @brief Number of locally owned DoFs on the current processor.
+
297 */
+
298 unsigned int
+
299 nOwnedDofs() const;
+
300
+
301 /**
+
302 * @brief Shape function values at quadrature points.
+
303 * @param[in] transpose if false the the data is indexed as [iQuad *
+
304 * d_nDofsPerCell + iNode] and if true it is indexed as [iNode *
+
305 * d_nQuadsPerCell + iQuad].
+
306 */
+ +
308 shapeFunctionData(bool transpose = false) const;
+
309
+
310 /**
+
311 * @brief Shape function gradient values at quadrature points.
+
312 * @param[in] transpose if false the the data is indexed as [iDim *
+
313 * d_nQuadsPerCell * d_nDofsPerCell + iQuad * d_nDofsPerCell + iNode] and
+
314 * if true it is indexed as [iDim * d_nQuadsPerCell * d_nDofsPerCell +
+
315 * iNode * d_nQuadsPerCell + iQuad].
+
316 */
+ + +
319
+
320 /**
+
321 * @brief Inverse Jacobian matrices, for cartesian cells returns the
+
322 * diagonal elements of the inverse Jacobian matrices for each cell, for
+
323 * affine cells returns the 3x3 inverse Jacobians for each cell otherwise
+
324 * returns the 3x3 inverse Jacobians at each quad point for each cell.
+
325 */
+ + +
328
+
329 /**
+
330 * @brief determinant of Jacobian times the quadrature weight at each
+
331 * quad point for each cell.
+
332 */
+ +
334 JxW() const;
+
335
+
336 /**
+
337 * @brief quad point coordinates for each cell.
+
338 */
+ + +
341 quadPoints() const;
+
342
+
343 /**
+
344 * @brief Shape function values at quadrature points in ValueTypeBasisData.
+
345 * @param[in] transpose if false the the data is indexed as [iQuad *
+
346 * d_nDofsPerCell + iNode] and if true it is indexed as [iNode *
+
347 * d_nQuadsPerCell + iQuad].
+
348 */
+
349 const auto &
+
+ +
351 {
+
352 if constexpr (std::is_same<ValueTypeBasisCoeff,
+
353 ValueTypeBasisData>::value)
+
354 {
+
355 return transpose ?
+ + +
358 }
+
359 else
+
360 {
+
361 return transpose ?
+ +
363 ->second :
+ +
365 }
+
366 }
+
+
367 /**
+
368 * @brief Shape function gradient values at quadrature points in ValueTypeBasisData.
+
369 * @param[in] transpose if false the the data is indexed as [iDim *
+
370 * d_nQuadsPerCell * d_nDofsPerCell + iQuad * d_nDofsPerCell + iNode] and
+
371 * if true it is indexed as [iDim * d_nQuadsPerCell * d_nDofsPerCell +
+
372 * iNode * d_nQuadsPerCell + iQuad].
+
373 */
+
374 const auto &
+
+ +
376 {
+
377 if constexpr (std::is_same<ValueTypeBasisCoeff,
+
378 ValueTypeBasisData>::value)
+
379 {
+
380 return transpose ?
+ +
382 ->second :
+ +
384 }
+
385 else
+
386 {
+
387 return transpose ?
+ +
389 .find(d_quadratureID)
+
390 ->second :
+ +
392 ->second;
+
393 }
+
394 }
+
+
395
+
396 /**
+
397 * @brief Inverse Jacobian matrices in ValueTypeBasisData, for cartesian cells returns the
+
398 * diagonal elements of the inverse Jacobian matrices for each cell, for
+
399 * affine cells returns the 3x3 inverse Jacobians for each cell otherwise
+
400 * returns the 3x3 inverse Jacobians at each quad point for each cell.
+
401 */
+
402 const auto &
+
+ +
404 {
+
405 if constexpr (std::is_same<ValueTypeBasisCoeff,
+
406 ValueTypeBasisData>::value)
+
407 {
+ + +
410 ->second;
+
411 }
+
412 else
+
413 {
+ + +
416 ->second;
+
417 }
+
418 }
+
+
419
+
420 /**
+
421 * @brief determinant of Jacobian times the quadrature weight in ValueTypeBasisData at each
+
422 * quad point for each cell.
+
423 */
+
424 const auto &
+
+ +
426 {
+
427 if constexpr (std::is_same<ValueTypeBasisCoeff,
+
428 ValueTypeBasisData>::value)
+
429 {
+
430 return d_JxWData.find(d_quadratureID)->second;
+
431 }
+
432 else
+
433 {
+
434 return d_JxWBasisData.find(d_quadratureID)->second;
+
435 }
+
436 }
+
+
437
+
438 /**
+
439 * @brief Cell level stiffness matrix in ValueTypeBasisCoeff
+
440 */
+
441 const auto &
+
+ +
443 {
+
444 if constexpr (std::is_same<ValueTypeBasisCoeff,
+
445 ValueTypeBasisData>::value)
+
446 {
+ +
448 }
+
449 else
+
450 {
+ +
452 }
+
453 }
+
+
454
+
455
+
456 /**
+
457 * @brief Cell level stiffness matrix in ValueTypeBasisData
+
458 */
+ + +
461
+
462
+
463 /**
+
464 * @brief Cell level mass matrix in ValueTypeBasisCoeff
+
465 */
+
466 const auto &
+
+ +
468 {
+
469 if constexpr (std::is_same<ValueTypeBasisCoeff,
+
470 ValueTypeBasisData>::value)
+
471 {
+ +
473 }
+
474 else
+
475 {
+ +
477 }
+
478 }
+
+
479
+
480
+
481 /**
+
482 * @brief Cell level mass matrix in ValueTypeBasisData
+
483 */
+ + +
486
+
487
+
488 /**
+
489 * @brief Cell level inverse sqrt diagonal mass matrix in ValueTypeBasisCoeff
+
490 */
+
491 const auto &
+
+ +
493 {
+
494 if constexpr (std::is_same<ValueTypeBasisCoeff,
+
495 ValueTypeBasisData>::value)
+
496 {
+ +
498 }
+
499 else
+
500 {
+ +
502 }
+
503 }
+
+
504
+
505 /**
+
506 * @brief Cell level inverse diagonal mass matrix in ValueTypeBasisCoeff
+
507 */
+
508 const auto &
+
+ +
510 {
+
511 if constexpr (std::is_same<ValueTypeBasisCoeff,
+
512 ValueTypeBasisData>::value)
+
513 {
+ +
515 }
+
516 else
+
517 {
+ +
519 }
+
520 }
+
+
521
+
522 /**
+
523 * @brief Cell level sqrt diagonal mass matrix in ValueTypeBasisCoeff
+
524 */
+
525 const auto &
+
+ +
527 {
+
528 if constexpr (std::is_same<ValueTypeBasisCoeff,
+
529 ValueTypeBasisData>::value)
+
530 {
+ +
532 }
+
533 else
+
534 {
+ +
536 }
+
537 }
+
+
538
+
539 /**
+
540 * @brief Cell level diagonal mass matrix in ValueTypeBasisCoeff
+
541 */
+
542 const auto &
+
+ +
544 {
+
545 if constexpr (std::is_same<ValueTypeBasisCoeff,
+
546 ValueTypeBasisData>::value)
+
547 {
+ +
549 }
+
550 else
+
551 {
+ +
553 }
+
554 }
+
+
555
+
556
+
557 /**
+
558 * @brief Inverse sqrt diagonal mass matrix in ValueTypeBasisCoeff
+
559 */
+
560 const auto &
+
+ +
562 {
+
563 if constexpr (std::is_same<ValueTypeBasisCoeff,
+
564 ValueTypeBasisData>::value)
+
565 {
+ +
567 }
+
568 else
+
569 {
+ +
571 }
+
572 }
+
+
573
+
574
+
575
+
576 /**
+
577 * @brief Inverse sqrt diagonal mass matrix in ValueTypeBasisCoeff
+
578 */
+
579 const auto &
+
+ +
581 {
+
582 if constexpr (std::is_same<ValueTypeBasisCoeff,
+
583 ValueTypeBasisData>::value)
+
584 {
+ +
586 }
+
587 else
+
588 {
+ +
590 }
+
591 }
+
+
592
+
593
+
594 /**
+
595 * @brief sqrt diagonal mass matrix in ValueTypeBasisCoeff
+
596 */
+
597 const auto &
+
+ +
599 {
+
600 if constexpr (std::is_same<ValueTypeBasisCoeff,
+
601 ValueTypeBasisData>::value)
+
602 {
+ +
604 }
+
605 else
+
606 {
+ +
608 }
+
609 }
+
+
610
+
611 /**
+
612 * @brief diagonal mass matrix in ValueTypeBasisCoeff
+
613 */
+
614 const auto &
+
+ +
616 {
+
617 if constexpr (std::is_same<ValueTypeBasisCoeff,
+
618 ValueTypeBasisData>::value)
+
619 {
+ +
621 }
+
622 else
+
623 {
+ +
625 }
+
626 }
+
+
627
+
628
+
629 /**
+
630 * @brief Cell level inverse sqrt diagonal mass matrix in ValueTypeBasisData
+
631 */
+ + +
634
+
635
+
636 /**
+
637 * @brief Cell level inverse diagonal mass matrix in ValueTypeBasisData
+
638 */
+ + +
641
+
642
+
643 /**
+
644 * @brief Cell level sqrt diagonal mass matrix in ValueTypeBasisData
+
645 */
+ + +
648
+
649
+
650 /**
+
651 * @brief Cell level diagonal mass matrix in ValueTypeBasisData
+
652 */
+ + +
655
+
656 /**
+
657 * @brief Inverse sqrt diagonal mass matrix in ValueTypeBasisData
+
658 */
+ + +
661
+
662 /**
+
663 * @brief Inverse diagonal mass matrix in ValueTypeBasisData
+
664 */
+ + +
667
+
668 /**
+
669 * @brief sqrt diagonal mass matrix in ValueTypeBasisData
+
670 */
+ + +
673
+
674 /**
+
675 * @brief diagonal mass matrix in ValueTypeBasisData
+
676 */
+ + +
679
+
680 /**
+
681 * @brief returns 2 if all cells on current processor are Cartesian,
+
682 * 1 if all cells on current processor are affine and 0 otherwise.
+
683 */
+
684 unsigned int
+ +
686
+
687 /**
+
688 * @brief returns the deal.ii cellID corresponing to given cell Index.
+
689 * @param[in] iElem cell Index
+
690 */
+
691 dealii::CellId
+
692 cellID(const unsigned int iElem) const;
+
693
+
694 /**
+
695 * @brief returns the cell index corresponding to given deal.ii cellID.
+
696 * @param[in] iElem cell Index
+
697 */
+
698 unsigned int
+
699 cellIndex(const dealii::CellId cellid) const;
+
700
+
701 /**
+
702 * @brief Creates a multivector.
+
703 * @param[in] blocksize Number of vectors in the multivector.
+
704 * @param[out] multiVector the created multivector.
+
705 */
+
706 void
+ +
708 const unsigned int blocksize,
+ +
710 &multiVector) const;
+
711
+
712 /**
+
713 * @brief Creates scratch multivectors.
+
714 * @param[in] vecBlockSize Number of vectors in the multivector.
+
715 * @param[out] numMultiVecs number of scratch multivectors needed with
+
716 * this vecBlockSize.
+
717 */
+
718 void
+ +
720 const unsigned int numMultiVecs = 1) const;
+
721
+
722 /**
+
723 * @brief Clears scratch multivectors.
+
724 */
+
725 void
+ +
727
+
728 /**
+
729 * @brief Gets scratch multivectors.
+
730 * @param[in] vecBlockSize Number of vectors in the multivector.
+
731 * @param[out] numMultiVecs index of the multivector among those with the
+
732 * same vecBlockSize.
+
733 */
+ +
735 getMultiVector(const unsigned int vecBlockSize,
+
736 const unsigned int index = 0) const;
+
737
+
738 /**
+
739 * @brief Apply constraints on given multivector.
+
740 * @param[inout] multiVector the given multivector.
+
741 */
+
742 void
+ + +
745 unsigned int constraintIndex =
+
746 std::numeric_limits<unsigned int>::max()) const;
+
747
+
748
+
749
+
750 /**
+
751 * @brief Return the underlying deal.II matrixfree object.
+
752 */
+
753 const dealii::MatrixFree<3, ValueTypeBasisData> &
+ +
755
+
756 /**
+
757 * @brief Return the underlying deal.II dofhandler object.
+
758 */
+
759 const dealii::DoFHandler<3> &
+ +
761
+
762
+
763
+
764 std::vector<constraintInfoClass> d_constraintInfo;
+
765 unsigned int d_nOMPThreads;
+
766 std::vector<const dealii::AffineConstraints<ValueTypeBasisData> *>
+ +
768 const dealii::MatrixFree<3, ValueTypeBasisData> *d_matrixFreeDataPtr;
+ + + +
772 std::map<unsigned int,
+ + + + + +
778 std::vector<dealii::CellId> d_cellIndexToCellIdMap;
+
779 std::map<dealii::CellId, unsigned int> d_cellIdToCellIndexMap;
+
780 std::map<unsigned int,
+ + +
783 std::map<unsigned int,
+ + +
786 std::map<unsigned int,
+ + +
789 std::map<unsigned int,
+ + +
792 std::map<unsigned int,
+ + +
795 std::map<unsigned int,
+ + +
798 std::map<unsigned int,
+ + +
801
+
802 std::map<unsigned int,
+ + +
805 std::map<unsigned int,
+ + +
808 std::map<unsigned int,
+ + +
811 std::map<unsigned int,
+ + +
814 std::map<unsigned int,
+ + +
817 std::map<unsigned int,
+ + +
820
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
861 mutable std::map<
+
862 unsigned int,
+
863 std::vector<
+ + +
866
+
867 std::vector<unsigned int> d_quadratureIDsVector;
+
868 unsigned int d_quadratureID;
+
869 unsigned int d_quadratureIndex;
+
870 std::vector<unsigned int> d_nQuadsPerCell;
+
871 unsigned int d_dofHandlerID;
+
872 unsigned int d_nVectors;
+
873 unsigned int d_nCells;
+
874 unsigned int d_cellsBlockSize;
+
875 unsigned int d_nDofsPerCell;
+
876 unsigned int d_localSize;
+
877 unsigned int d_locallyOwnedSize;
+ + +
880 std::vector<UpdateFlags> d_updateFlags;
+
881
+
882 std::shared_ptr<const utils::mpi::MPIPatternP2P<memorySpace>>
+ +
884
+
885
+
886 /**
+
887 * @brief Interpolate process level nodal data to cell level quadrature data.
+
888 * @param[in] nodalData process level nodal data, the multivector should
+
889 * already have ghost data and constraints should have been applied.
+
890 * @param[out] quadratureValues Cell level quadrature values, indexed by
+
891 * [iCell * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
892 * @param[out] quadratureGradients Cell level quadrature gradients,
+
893 * indexed by [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim *
+
894 * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
895 */
+
896 void
+ + + + +
901
+
902 // FIXME Untested function
+
903 /**
+
904 * @brief Integrate cell level quadrature data times shape functions to process level nodal data.
+
905 * @param[in] quadratureValues Cell level quadrature values, indexed by
+
906 * [iCell * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
907 * @param[in] quadratureGradients Cell level quadrature gradients,
+
908 * indexed by [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim *
+
909 * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
910 * @param[out] nodalData process level nodal data.
+
911 */
+
912 void
+ + + + +
917 &nodalData) const;
+
918
+
919 /**
+
920 * @brief Get cell level nodal data from process level nodal data.
+
921 * @param[in] nodalData process level nodal data, the multivector should
+
922 * already have ghost data and constraints should have been applied.
+
923 * @param[out] cellNodalDataPtr Cell level nodal values, indexed by
+
924 * [iCell * d_nDofsPerCell * d_nVectors + iDoF * d_nVectors + iVec].
+
925 */
+
926 void
+ + +
929 & nodalData,
+ +
931 // FIXME Untested function
+
932 /**
+
933 * @brief Accumulate cell level nodal data into process level nodal data.
+
934 * @param[in] cellNodalDataPtr Cell level nodal values, indexed by
+
935 * [iCell * d_nDofsPerCell * d_nVectors + iDoF * d_nVectors + iVec].
+
936 * @param[out] nodalData process level nodal data.
+
937 */
+
938 void
+ + + +
942 &nodalData) const;
+
943
+
944 /**
+
945 * @brief Interpolate process level nodal data to cell level quadrature data.
+
946 * @param[in] nodalData process level nodal data, the multivector should
+
947 * already have ghost data and constraints should have been applied.
+
948 * @param[out] quadratureValues Cell level quadrature values, indexed by
+
949 * [iCell * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
950 * @param[out] quadratureGradients Cell level quadrature gradients,
+
951 * indexed by [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim *
+
952 * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
953 * @param[in] cellRange the range of cells for which interpolation has to
+
954 * be done.
+
955 */
+
956 void
+ + + + + +
962 const std::pair<unsigned int, unsigned int> cellRange) const;
+
963
+
964 /**
+
965 * @brief Interpolate cell level nodal data to cell level quadrature data.
+
966 * @param[in] nodalData cell level nodal data, the multivector should
+
967 * already have ghost data and constraints should have been applied.
+
968 * @param[out] quadratureValues Cell level quadrature values, indexed by
+
969 * [iCell * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
970 * @param[out] quadratureGradients Cell level quadrature gradients,
+
971 * indexed by [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim *
+
972 * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
973 * @param[in] cellRange the range of cells for which interpolation has to
+
974 * be done.
+
975 */
+
976 void
+ + + + +
981 const std::pair<unsigned int, unsigned int> cellRange) const;
+
982
+
983 // FIXME Untested function
+
984 /**
+
985 * @brief Integrate cell level quadrature data times shape functions to process level nodal data.
+
986 * @param[in] quadratureValues Cell level quadrature values, indexed by
+
987 * [iCell * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
988 * @param[in] quadratureGradients Cell level quadrature gradients,
+
989 * indexed by [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim *
+
990 * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
991 * @param[out] nodalData process level nodal data.
+
992 * @param[in] cellRange the range of cells for which integration has to be
+
993 * done.
+
994 */
+
995 void
+ + + + +
1000 & nodalData,
+
1001 const std::pair<unsigned int, unsigned int> cellRange) const;
+
1002
+
1003
+
1004 /**
+
1005 * @brief Get cell level nodal data from process level nodal data.
+
1006 * @param[in] nodalData process level nodal data, the multivector should
+
1007 * already have ghost data and constraints should have been applied.
+
1008 * @param[out] cellNodalDataPtr Cell level nodal values, indexed by
+
1009 * [iCell * d_nDofsPerCell * d_nVectors + iDoF * d_nVectors + iVec].
+
1010 * @param[in] cellRange the range of cells for which extraction has to be
+
1011 * done.
+
1012 */
+
1013 void
+ + + + +
1018 const std::pair<unsigned int, unsigned int> cellRange) const;
+
1019
+
1020 // FIXME Untested function
+
1021 /**
+
1022 * @brief Accumulate cell level nodal data into process level nodal data.
+
1023 * @param[in] cellNodalDataPtr Cell level nodal values, indexed by
+
1024 * [iCell * d_nDofsPerCell * d_nVectors + iDoF * d_nVectors + iVec].
+
1025 * @param[out] nodalData process level nodal data.
+
1026 * @param[in] cellRange the range of cells for which extraction has to be
+
1027 * done.
+
1028 */
+
1029 void
+ + + +
1033 & nodalData,
+
1034 const std::pair<unsigned int, unsigned int> cellRange) const;
+
1035 };
+
+
1036 } // end of namespace basis
+
+
1037} // end of namespace dftfe
+
1038// #include "../utils/FEBasisOperations.t.cc"
+
1039// #include "../utils/FEBasisOperationsKernels.t.cc"
+
1040
+
1041#endif // dftfeBasisOperations_h
+ + + +
Definition FEBasisOperations.h:85
+
unsigned int d_quadratureIndex
Definition FEBasisOperations.h:869
+
dftfe::utils::MemoryStorage< dftfe::global_size_type, memorySpace > d_flattenedCellDofIndexToProcessDofIndexMap
Definition FEBasisOperations.h:777
+
const auto & massVector() const
diagonal mass matrix in ValueTypeBasisCoeff
Definition FEBasisOperations.h:615
+
const dftfe::utils::MemoryStorage< ValueTypeBasisData, dftfe::utils::MemorySpace::HOST > & quadPoints() const
quad point coordinates for each cell.
+
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & inverseSqrtMassVectorBasisData() const
Inverse sqrt diagonal mass matrix in ValueTypeBasisData.
+
const auto & cellMassVector() const
Cell level diagonal mass matrix in ValueTypeBasisCoeff.
Definition FEBasisOperations.h:543
+
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > d_inverseMassVectorCoeffType
Definition FEBasisOperations.h:852
+
std::vector< unsigned int > d_quadratureIDsVector
Definition FEBasisOperations.h:867
+
const auto & inverseSqrtMassVector() const
Inverse sqrt diagonal mass matrix in ValueTypeBasisCoeff.
Definition FEBasisOperations.h:561
+
unsigned int nQuadsPerCell() const
Number of quadrature points per cell for the quadratureID set in reinit.
+
void computeCellMassMatrix(const unsigned int quadratureID, const unsigned int cellsBlockSize, const bool basisType=false, const bool ceoffType=true)
+
bool areAllCellsAffine
Definition FEBasisOperations.h:878
+
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > d_inverseSqrtMassVectorCoeffType
Definition FEBasisOperations.h:856
+
dftfe::utils::MemoryStorage< dftfe::global_size_type, dftfe::utils::MemorySpace::HOST > d_cellDofIndexToProcessDofIndexMap
Definition FEBasisOperations.h:771
+
unsigned int cellsTypeFlag() const
returns 2 if all cells on current processor are Cartesian, 1 if all cells on current processor are af...
+
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > d_cellSqrtMassVectorCoeffType
Definition FEBasisOperations.h:844
+
const dealii::MatrixFree< 3, ValueTypeBasisData > * d_matrixFreeDataPtr
Definition FEBasisOperations.h:768
+
const auto & cellInverseMassVector() const
Cell level inverse diagonal mass matrix in ValueTypeBasisCoeff.
Definition FEBasisOperations.h:509
+
unsigned int d_nDofsPerCell
Definition FEBasisOperations.h:875
+
void initializeMPIPattern()
Constructs the MPIPatternP2P object.
+
unsigned int d_nVectors
Definition FEBasisOperations.h:872
+
void interpolate(dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData, ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients=NULL) const
Interpolate process level nodal data to cell level quadrature data.
+
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > tempCellGradientsBlock
Definition FEBasisOperations.h:91
+
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > d_cellInverseMassVectorBasisType
Definition FEBasisOperations.h:830
+
void reinit(const unsigned int &vecBlockSize, const unsigned int &cellBlockSize, const unsigned int &quadratureID, const bool isResizeTempStorageForInerpolation=true, const bool isResizeTempStorageForCellMatrices=false)
sets internal variables and optionally resizes internal temp storage for interpolation operations
+
std::vector< constraintInfoClass > d_constraintInfo
Definition FEBasisOperations.h:764
+
const dealii::DoFHandler< 3 > & getDofHandler() const
Return the underlying deal.II dofhandler object.
+
void integrateWithBasis(ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData) const
Integrate cell level quadrature data times shape functions to process level nodal data.
+
std::map< dealii::CellId, unsigned int > d_cellIdToCellIndexMap
Definition FEBasisOperations.h:779
+
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > d_massVectorCoeffType
Definition FEBasisOperations.h:848
+
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & cellStiffnessMatrixBasisData() const
Cell level stiffness matrix in ValueTypeBasisData.
+
void computeWeightedCellMassMatrix(const std::pair< unsigned int, unsigned int > cellRangeTotal, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > &weights, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > &weightedCellMassMatrix) const
+
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & cellInverseMassVectorBasisData() const
Cell level inverse diagonal mass matrix in ValueTypeBasisData.
+
void initializeConstraints()
Initializes the constraintMatrixInfo object.
+
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_JxWData
Definition FEBasisOperations.h:785
+
~FEBasisOperations()=default
Default Destructor.
+
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionGradientData
Definition FEBasisOperations.h:794
+
const dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > & inverseJacobians() const
Inverse Jacobian matrices, for cartesian cells returns the diagonal elements of the inverse Jacobian ...
+
void extractToCellNodalData(dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData, ValueTypeBasisCoeff *cellNodalDataPtr) const
Get cell level nodal data from process level nodal data.
+
unsigned int d_quadratureID
Definition FEBasisOperations.h:868
+
const auto & inverseJacobiansBasisData() const
Inverse Jacobian matrices in ValueTypeBasisData, for cartesian cells returns the diagonal elements of...
Definition FEBasisOperations.h:403
+
const auto & cellStiffnessMatrix() const
Cell level stiffness matrix in ValueTypeBasisCoeff.
Definition FEBasisOperations.h:442
+
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > d_BLASWrapperPtr
Definition FEBasisOperations.h:96
+
void resizeTempStorage(const bool isResizeTempStorageForInerpolation, const bool isResizeTempStorageForCellMatrices)
Resizes the internal temp storage to be sufficient for the vector and cell block sizes provided in re...
+
const auto & shapeFunctionBasisData(bool transpose=false) const
Shape function values at quadrature points in ValueTypeBasisData.
Definition FEBasisOperations.h:350
+
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > tempCellGradientsBlock2
Definition FEBasisOperations.h:91
+
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > d_inverseSqrtMassVectorBasisType
Definition FEBasisOperations.h:854
+
std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P
Definition FEBasisOperations.h:883
+
void computeInverseSqrtMassVector(const bool basisType=true, const bool ceoffType=false)
+
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > d_sqrtMassVectorCoeffType
Definition FEBasisOperations.h:860
+
void accumulateFromCellNodalData(const ValueTypeBasisCoeff *cellNodalDataPtr, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData) const
Accumulate cell level nodal data into process level nodal data.
+
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & massVectorBasisData() const
diagonal mass matrix in ValueTypeBasisData
+
void reinitializeConstraints(std::vector< const dealii::AffineConstraints< ValueTypeBasisData > * > &constraintsVector)
Reinitializes the constraintMatrixInfo object.
+
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > d_cellMassMatrixCoeffType
Definition FEBasisOperations.h:828
+
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > d_sqrtMassVectorBasisType
Definition FEBasisOperations.h:858
+
const dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > & shapeFunctionGradientData(bool transpose=false) const
Shape function gradient values at quadrature points.
+
std::vector< dealii::CellId > d_cellIndexToCellIdMap
Definition FEBasisOperations.h:778
+
void computeWeightedCellNjGradNiMatrix(const std::pair< unsigned int, unsigned int > cellRangeTotal, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > &weights, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > &weightedCellNjGradNiMatrix) const
+
void clearScratchMultiVectors() const
Clears scratch multivectors.
+
std::vector< UpdateFlags > d_updateFlags
Definition FEBasisOperations.h:880
+
void interpolateKernel(const ValueTypeBasisCoeff *nodalData, ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients, const std::pair< unsigned int, unsigned int > cellRange) const
Interpolate cell level nodal data to cell level quadrature data.
+
const auto & sqrtMassVector() const
sqrt diagonal mass matrix in ValueTypeBasisCoeff
Definition FEBasisOperations.h:598
+
const dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > & JxW() const
determinant of Jacobian times the quadrature weight at each quad point for each cell.
+
unsigned int nCells() const
Number of locally owned cells on the current processor.
+
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > d_cellStiffnessMatrixBasisType
Definition FEBasisOperations.h:822
+
void integrateWithBasisKernel(const ValueTypeBasisCoeff *quadratureValues, const ValueTypeBasisCoeff *quadratureGradients, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData, const std::pair< unsigned int, unsigned int > cellRange) const
Integrate cell level quadrature data times shape functions to process level nodal data.
+
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > d_cellInverseSqrtMassVectorBasisType
Definition FEBasisOperations.h:834
+
unsigned int cellIndex(const dealii::CellId cellid) const
returns the cell index corresponding to given deal.ii cellID.
+
void clear()
Clears the FEBasisOperations internal storage.
+
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionGradientBasisDataTranspose
Definition FEBasisOperations.h:819
+
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisData, dftfe::utils::MemorySpace::HOST > > d_quadPoints
Definition FEBasisOperations.h:775
+
void distribute(dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &multiVector, unsigned int constraintIndex=std::numeric_limits< unsigned int >::max()) const
Apply constraints on given multivector.
+
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & cellSqrtMassVectorBasisData() const
Cell level sqrt diagonal mass matrix in ValueTypeBasisData.
+
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > d_inverseMassVectorBasisType
Definition FEBasisOperations.h:850
+
const auto & cellSqrtMassVector() const
Cell level sqrt diagonal mass matrix in ValueTypeBasisCoeff.
Definition FEBasisOperations.h:526
+
unsigned int d_dofHandlerID
Definition FEBasisOperations.h:871
+
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionGradientBasisData
Definition FEBasisOperations.h:813
+
unsigned int d_locallyOwnedSize
Definition FEBasisOperations.h:877
+
void computeWeightedCellNjGradNiPlusNiGradNjMatrix(const std::pair< unsigned int, unsigned int > cellRangeTotal, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > &weights, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > &weightedCellNjGradNiPlusNiGradNjMatrix) const
+
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > tempQuadratureGradientsData
Definition FEBasisOperations.h:88
+
dftfe::utils::MemoryStorage< dftfe::global_size_type, memorySpace > zeroIndexVec
Definition FEBasisOperations.h:94
+
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionGradientDataInternalLayout
Definition FEBasisOperations.h:791
+
void accumulateFromCellNodalDataKernel(const ValueTypeBasisCoeff *cellNodalDataPtr, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData, const std::pair< unsigned int, unsigned int > cellRange) const
Accumulate cell level nodal data into process level nodal data.
+
unsigned int nRelaventDofs() const
Number of DoFs on the current processor, locally owned + ghosts.
+
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > d_cellStiffnessMatrixCoeffType
Definition FEBasisOperations.h:824
+
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionData
Definition FEBasisOperations.h:788
+
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & cellMassVectorBasisData() const
Cell level diagonal mass matrix in ValueTypeBasisData.
+
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > d_cellInverseSqrtMassVectorCoeffType
Definition FEBasisOperations.h:836
+
std::vector< const dealii::AffineConstraints< ValueTypeBasisData > * > * d_constraintsVector
Definition FEBasisOperations.h:767
+
const auto & inverseMassVector() const
Inverse sqrt diagonal mass matrix in ValueTypeBasisCoeff.
Definition FEBasisOperations.h:580
+
void init(dealii::MatrixFree< 3, ValueTypeBasisData > &matrixFreeData, std::vector< const dealii::AffineConstraints< ValueTypeBasisData > * > &constraintsVector, const unsigned int &dofHandlerID, const std::vector< unsigned int > &quadratureID, const std::vector< UpdateFlags > updateFlags)
fills required data structures for the given dofHandlerID
+
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_JxWBasisData
Definition FEBasisOperations.h:807
+
unsigned int d_cellsBlockSize
Definition FEBasisOperations.h:874
+
void computeCellStiffnessMatrix(const unsigned int quadratureID, const unsigned int cellsBlockSize, const bool basisType=false, const bool ceoffType=true)
Computes the cell-level stiffness matrix.
+
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > tempCellValuesBlock
Definition FEBasisOperations.h:91
+
void initializeShapeFunctionAndJacobianData()
Fill the shape function data and jacobian data in the ValueTypeBasisCoeff datatype.
+
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > d_cellSqrtMassVectorBasisType
Definition FEBasisOperations.h:842
+
void initializeShapeFunctionAndJacobianBasisData()
Fill the shape function data and jacobian data in the ValueTypeBasisData datatype.
+
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > d_cellInverseMassVectorCoeffType
Definition FEBasisOperations.h:832
+
unsigned int nDofsPerCell() const
Number of DoFs per cell for the dofHandlerID set in init.
+
const auto & JxWBasisData() const
determinant of Jacobian times the quadrature weight in ValueTypeBasisData at each quad point for each...
Definition FEBasisOperations.h:425
+
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionBasisData
Definition FEBasisOperations.h:810
+
void init(const FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpaceSrc > &basisOperationsSrc)
fills required data structures from another FEBasisOperations object
+
bool areAllCellsCartesian
Definition FEBasisOperations.h:879
+
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > tempCellNodalData
Definition FEBasisOperations.h:88
+
void createScratchMultiVectors(const unsigned int vecBlockSize, const unsigned int numMultiVecs=1) const
Creates scratch multivectors.
+
unsigned int d_nCells
Definition FEBasisOperations.h:873
+
unsigned int d_localSize
Definition FEBasisOperations.h:876
+
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > d_cellMassVectorBasisType
Definition FEBasisOperations.h:838
+
void initializeFlattenedIndexMaps()
Initializes indexset maps from process level indices to cell level indices for multivectors.
+
const auto & cellInverseSqrtMassVector() const
Cell level inverse sqrt diagonal mass matrix in ValueTypeBasisCoeff.
Definition FEBasisOperations.h:492
+
void initializeIndexMaps()
Initializes indexset maps from process level indices to cell level indices for a single vector,...
+
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionDataTranspose
Definition FEBasisOperations.h:797
+
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_inverseJacobianData
Definition FEBasisOperations.h:782
+
FEBasisOperations(std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > BLASWrapperPtr)
Constructor.
+
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > d_cellMassVectorCoeffType
Definition FEBasisOperations.h:840
+
dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > & getMultiVector(const unsigned int vecBlockSize, const unsigned int index=0) const
Gets scratch multivectors.
+
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & inverseMassVectorBasisData() const
Inverse diagonal mass matrix in ValueTypeBasisData.
+
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > tempCellMatrixBlock
Definition FEBasisOperations.h:92
+
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_inverseJacobianBasisData
Definition FEBasisOperations.h:804
+
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & sqrtMassVectorBasisData() const
sqrt diagonal mass matrix in ValueTypeBasisData
+
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > d_cellMassMatrixBasisType
Definition FEBasisOperations.h:826
+
dealii::CellId cellID(const unsigned int iElem) const
returns the deal.ii cellID corresponing to given cell Index.
+
std::map< unsigned int, std::vector< dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > > > scratchMultiVectors
Definition FEBasisOperations.h:865
+
void createMultiVector(const unsigned int blocksize, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &multiVector) const
Creates a multivector.
+
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > tempQuadratureGradientsDataNonAffine
Definition FEBasisOperations.h:89
+
const dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > & shapeFunctionData(bool transpose=false) const
Shape function values at quadrature points.
+
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionGradientDataTranspose
Definition FEBasisOperations.h:800
+
std::vector< unsigned int > d_nQuadsPerCell
Definition FEBasisOperations.h:870
+
const auto & cellMassMatrix() const
Cell level mass matrix in ValueTypeBasisCoeff.
Definition FEBasisOperations.h:467
+
const auto & shapeFunctionGradientBasisData(bool transpose=false) const
Shape function gradient values at quadrature points in ValueTypeBasisData.
Definition FEBasisOperations.h:375
+
unsigned int d_nOMPThreads
Definition FEBasisOperations.h:765
+
const dealii::MatrixFree< 3, ValueTypeBasisData > & matrixFreeData() const
Return the underlying deal.II matrixfree object.
+
void extractToCellNodalDataKernel(const dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData, ValueTypeBasisCoeff *cellNodalDataPtr, const std::pair< unsigned int, unsigned int > cellRange) const
Get cell level nodal data from process level nodal data.
+
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & cellInverseSqrtMassVectorBasisData() const
Cell level inverse sqrt diagonal mass matrix in ValueTypeBasisData.
+
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & cellMassMatrixBasisData() const
Cell level mass matrix in ValueTypeBasisData.
+
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > d_massVectorBasisType
Definition FEBasisOperations.h:846
+
void interpolateKernel(const dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData, ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients, const std::pair< unsigned int, unsigned int > cellRange) const
Interpolate process level nodal data to cell level quadrature data.
+
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionBasisDataTranspose
Definition FEBasisOperations.h:816
+
unsigned int nOwnedDofs() const
Number of locally owned DoFs on the current processor.
+
Overloads dealii's distribute and distribute_local_to_global functions associated with constraints cl...
Definition constraintMatrixInfo.h:42
+
Definition BLASWrapper.h:34
+
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition MultiVector.h:127
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition MemoryStorage.h:33
+ + + +
UpdateFlags operator|(const UpdateFlags f1, const UpdateFlags f2)
Definition FEBasisOperations.h:50
+
UpdateFlags & operator|=(UpdateFlags &f1, const UpdateFlags f2)
Definition FEBasisOperations.h:59
+
UpdateFlags
Definition FEBasisOperations.h:33
+
@ update_values
Definition FEBasisOperations.h:36
+
@ update_quadpoints
Definition FEBasisOperations.h:42
+
@ update_transpose
Definition FEBasisOperations.h:40
+
@ update_inversejacobians
Definition FEBasisOperations.h:44
+
@ update_jxw
Definition FEBasisOperations.h:46
+
@ update_default
Definition FEBasisOperations.h:34
+
@ update_gradients
Definition FEBasisOperations.h:38
+
UpdateFlags operator&(const UpdateFlags f1, const UpdateFlags f2)
Definition FEBasisOperations.h:66
+
UpdateFlags & operator&=(UpdateFlags &f1, const UpdateFlags f2)
Definition FEBasisOperations.h:74
+
MemorySpace
Definition MemorySpaceType.h:33
+ + +
Definition pseudoPotentialToDftfeConverter.cc:34
+
unsigned long int global_size_type
Definition TypeConfig.h:7
+
+ + + + diff --git a/_f_e_basis_operations_kernels_internal_8h.html b/_f_e_basis_operations_kernels_internal_8h.html new file mode 100644 index 000000000..95c63ba45 --- /dev/null +++ b/_f_e_basis_operations_kernels_internal_8h.html @@ -0,0 +1,122 @@ + + + + + + + +DFT-FE: workspace/include/FEBasisOperationsKernelsInternal.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
FEBasisOperationsKernelsInternal.h File Reference
+
+
+
#include <TypeConfig.h>
+#include <BLASWrapper.h>
+
+

Go to the source code of this file.

+ + + + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::basis
 
namespace  dftfe::basis::FEBasisOperationsKernelsInternal
 
+ + + + + + + + + + + + + + + +

+Functions

template<typename ValueType >
void dftfe::basis::FEBasisOperationsKernelsInternal::reshapeFromNonAffineLayoutDevice (const dftfe::size_type numVecs, const dftfe::size_type numQuads, const dftfe::size_type numCells, const ValueType *copyFromVec, ValueType *copyToVec)
 rehsape gradient data from [iCell * 3 * d_nQuadsPerCell * d_nVectors + iQuad * 3 * d_nVectors + iDim * d_nVectors + iVec] to [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
 
template<typename ValueType >
void dftfe::basis::FEBasisOperationsKernelsInternal::reshapeFromNonAffineLayoutHost (const dftfe::size_type numVecs, const dftfe::size_type numQuads, const dftfe::size_type numCells, const ValueType *copyFromVec, ValueType *copyToVec)
 
template<typename ValueType >
void dftfe::basis::FEBasisOperationsKernelsInternal::reshapeToNonAffineLayoutDevice (const dftfe::size_type numVecs, const dftfe::size_type numQuads, const dftfe::size_type numCells, const ValueType *copyFromVec, ValueType *copyToVec)
 rehsape gradient data to [iCell * 3 * d_nQuadsPerCell * d_nVectors + iQuad * 3 * d_nVectors + iDim * d_nVectors + iVec] from [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
 
template<typename ValueType >
void dftfe::basis::FEBasisOperationsKernelsInternal::reshapeToNonAffineLayoutHost (const dftfe::size_type numVecs, const dftfe::size_type numQuads, const dftfe::size_type numCells, const ValueType *copyFromVec, ValueType *copyToVec)
 
+
+ + + + diff --git a/_f_e_basis_operations_kernels_internal_8h_source.html b/_f_e_basis_operations_kernels_internal_8h_source.html new file mode 100644 index 000000000..288c866c1 --- /dev/null +++ b/_f_e_basis_operations_kernels_internal_8h_source.html @@ -0,0 +1,196 @@ + + + + + + + +DFT-FE: workspace/include/FEBasisOperationsKernelsInternal.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
FEBasisOperationsKernelsInternal.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16
+
17#ifndef dftfeFEBasisOperationsKernelsInternal_h
+
18#define dftfeFEBasisOperationsKernelsInternal_h
+
19
+
20#include <TypeConfig.h>
+
21#include <BLASWrapper.h>
+
22#ifdef DFTFE_WITH_DEVICE
+
23# include <DeviceAPICalls.h>
+
24# include <DeviceTypeConfig.h>
+ + +
27#endif // DFTFE_WITH_DEVICE
+
28
+
29namespace dftfe
+
30{
+
31 namespace basis
+
32 {
+
+
33 namespace FEBasisOperationsKernelsInternal
+
34 {
+
35 /**
+
36 * @brief rehsape gradient data from [iCell * 3 * d_nQuadsPerCell * d_nVectors + iQuad * 3 * d_nVectors + iDim * d_nVectors + iVec] to [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim *
+
37 * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
38 * @param[in] numVecs number of vectors.
+
39 * @param[in] numQuads number of quadrature points per cell.
+
40 * @param[in] numCells number of locally owned cells.
+
41 * @param[in] copyFromVec source data pointer.
+
42 * @param[out] copyToVec destination data pointer.
+
43 */
+
44 template <typename ValueType>
+
45 void
+ + + +
49 const ValueType * copyFromVec,
+ +
51
+
52 template <typename ValueType>
+
53 void
+ + + +
57 const ValueType * copyFromVec,
+ +
59
+
60 /**
+
61 * @brief rehsape gradient data to [iCell * 3 * d_nQuadsPerCell * d_nVectors + iQuad * 3 * d_nVectors + iDim * d_nVectors + iVec] from [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim *
+
62 * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
63 * @param[in] numVecs number of vectors.
+
64 * @param[in] numQuads number of quadrature points per cell.
+
65 * @param[in] numCells number of locally owned cells.
+
66 * @param[in] copyFromVec source data pointer.
+
67 * @param[out] copyToVec destination data pointer.
+
68 */
+
69 template <typename ValueType>
+
70 void
+ + + +
74 const ValueType * copyFromVec,
+ +
76
+
77 template <typename ValueType>
+
78 void
+ + + +
82 const ValueType * copyFromVec,
+ +
84
+
85 } // namespace FEBasisOperationsKernelsInternal
+
+
86 } // namespace basis
+
87} // namespace dftfe
+
88
+
89#endif // dftfeFEBasisOperationsKernelsInternal_h
+ + + + + + +
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
void reshapeFromNonAffineLayoutHost(const dftfe::size_type numVecs, const dftfe::size_type numQuads, const dftfe::size_type numCells, const ValueType *copyFromVec, ValueType *copyToVec)
+
void reshapeToNonAffineLayoutHost(const dftfe::size_type numVecs, const dftfe::size_type numQuads, const dftfe::size_type numCells, const ValueType *copyFromVec, ValueType *copyToVec)
+
void reshapeToNonAffineLayoutDevice(const dftfe::size_type numVecs, const dftfe::size_type numQuads, const dftfe::size_type numCells, const ValueType *copyFromVec, ValueType *copyToVec)
rehsape gradient data to [iCell * 3 * d_nQuadsPerCell * d_nVectors + iQuad * 3 * d_nVectors + iDim * ...
+
void reshapeFromNonAffineLayoutDevice(const dftfe::size_type numVecs, const dftfe::size_type numQuads, const dftfe::size_type numCells, const ValueType *copyFromVec, ValueType *copyToVec)
rehsape gradient data from [iCell * 3 * d_nQuadsPerCell * d_nVectors + iQuad * 3 * d_nVectors + iDim ...
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_formulas.tex b/_formulas.tex new file mode 100644 index 000000000..70292e9f9 --- /dev/null +++ b/_formulas.tex @@ -0,0 +1,123 @@ +\documentclass{article} +\usepackage{ifthen} +\usepackage{epsfig} +\usepackage[utf8]{inputenc} +\usepackage{xcolor} +% Packages requested by user +\usepackage{amsmath} +\usepackage{amsfonts} + +\usepackage{newunicodechar} + \makeatletter + \def\doxynewunicodechar#1#2{% + \@tempswafalse + \edef\nuc@tempa{\detokenize{#1}}% + \if\relax\nuc@tempa\relax + \nuc@emptyargerr + \else + \edef\@tempb{\expandafter\@car\nuc@tempa\@nil}% + \nuc@check + \if@tempswa + \@namedef{u8:\nuc@tempa}{#2}% + \fi + \fi + } + \makeatother + \doxynewunicodechar{⁻}{${}^{-}$}% Superscript minus + \doxynewunicodechar{²}{${}^{2}$}% Superscript two + \doxynewunicodechar{³}{${}^{3}$}% Superscript three + +\pagestyle{empty} +\begin{document} +$(a,b)$ +\pagebreak + +$a$ +\pagebreak + +$b$ +\pagebreak + +$[a_0,b_0,a_1,b_1,\ldots,a_{P-1},b_{P-1}]$ +\pagebreak + +$(a_i,b_i)$ +\pagebreak + +$i-$ +\pagebreak + +$L_i = \{g^{(k_i)}_1,g^{(k_i)}_2,\ldots,g^{(k_i)}_{N_i}\}$ +\pagebreak + +$g$ +\pagebreak + +$k_i$ +\pagebreak + +$i$ +\pagebreak + +$N_i$ +\pagebreak + +$L_i$ +\pagebreak + +$0, 1,\ldots,P-1$ +\pagebreak + +$[N_0,N_1), [N_1, N_2), [N_2, N_3), ..., [N_{P-1},N_P)$ +\pagebreak + +$N_0, N_1,\ldots, N_P$ +\pagebreak + +$L=\{a_1,b_1, a_2, b_2, \ldots, a_G, b_G\}$ +\pagebreak + +$a_i$ +\pagebreak + +$b_i$ +\pagebreak + +$[a_i,b_i)$ +\pagebreak + +$\sum_i$ +\pagebreak + +$L_i = \{o^{(k_i)}_1,o^{(k_i)}_2,\ldots,o^{(k_i)}_{N_i}\}$ +\pagebreak + +$o$ +\pagebreak + +$N$ +\pagebreak + +$M \times N$ +\pagebreak + +$M $ +\pagebreak + +$[a,b)$ +\pagebreak + +$b-a$ +\pagebreak + +\begin{align*} +\mathrm{sub}(C) &\dealcoloneq \alpha +op(\mathrm{sub}(A))op(\mathrm{sub}(B)) + + \beta \mathrm{sub}(C), \\ +\mathrm{sub}(C) &\dealcoloneq \alpha +op(\mathrm{sub}(A))op(\mathrm{sub}(B)) + + beta sub(C), +\end{align*} +\pagebreak + +\end{document} diff --git a/_formulas_dark.tex b/_formulas_dark.tex new file mode 100644 index 000000000..cfb65c9a5 --- /dev/null +++ b/_formulas_dark.tex @@ -0,0 +1,125 @@ +\documentclass{article} +\usepackage{ifthen} +\usepackage{epsfig} +\usepackage[utf8]{inputenc} +\usepackage{xcolor} +\color{white} +\pagecolor{black} +% Packages requested by user +\usepackage{amsmath} +\usepackage{amsfonts} + +\usepackage{newunicodechar} + \makeatletter + \def\doxynewunicodechar#1#2{% + \@tempswafalse + \edef\nuc@tempa{\detokenize{#1}}% + \if\relax\nuc@tempa\relax + \nuc@emptyargerr + \else + \edef\@tempb{\expandafter\@car\nuc@tempa\@nil}% + \nuc@check + \if@tempswa + \@namedef{u8:\nuc@tempa}{#2}% + \fi + \fi + } + \makeatother + \doxynewunicodechar{⁻}{${}^{-}$}% Superscript minus + \doxynewunicodechar{²}{${}^{2}$}% Superscript two + \doxynewunicodechar{³}{${}^{3}$}% Superscript three + +\pagestyle{empty} +\begin{document} +$(a,b)$ +\pagebreak + +$a$ +\pagebreak + +$b$ +\pagebreak + +$[a_0,b_0,a_1,b_1,\ldots,a_{P-1},b_{P-1}]$ +\pagebreak + +$(a_i,b_i)$ +\pagebreak + +$i-$ +\pagebreak + +$L_i = \{g^{(k_i)}_1,g^{(k_i)}_2,\ldots,g^{(k_i)}_{N_i}\}$ +\pagebreak + +$g$ +\pagebreak + +$k_i$ +\pagebreak + +$i$ +\pagebreak + +$N_i$ +\pagebreak + +$L_i$ +\pagebreak + +$0, 1,\ldots,P-1$ +\pagebreak + +$[N_0,N_1), [N_1, N_2), [N_2, N_3), ..., [N_{P-1},N_P)$ +\pagebreak + +$N_0, N_1,\ldots, N_P$ +\pagebreak + +$L=\{a_1,b_1, a_2, b_2, \ldots, a_G, b_G\}$ +\pagebreak + +$a_i$ +\pagebreak + +$b_i$ +\pagebreak + +$[a_i,b_i)$ +\pagebreak + +$\sum_i$ +\pagebreak + +$L_i = \{o^{(k_i)}_1,o^{(k_i)}_2,\ldots,o^{(k_i)}_{N_i}\}$ +\pagebreak + +$o$ +\pagebreak + +$N$ +\pagebreak + +$M \times N$ +\pagebreak + +$M $ +\pagebreak + +$[a,b)$ +\pagebreak + +$b-a$ +\pagebreak + +\begin{align*} +\mathrm{sub}(C) &\dealcoloneq \alpha +op(\mathrm{sub}(A))op(\mathrm{sub}(B)) + + \beta \mathrm{sub}(C), \\ +\mathrm{sub}(C) &\dealcoloneq \alpha +op(\mathrm{sub}(A))op(\mathrm{sub}(B)) + + beta sub(C), +\end{align*} +\pagebreak + +\end{document} diff --git a/_kohn_sham_hamiltonian_operator_8h.html b/_kohn_sham_hamiltonian_operator_8h.html new file mode 100644 index 000000000..ce458af68 --- /dev/null +++ b/_kohn_sham_hamiltonian_operator_8h.html @@ -0,0 +1,112 @@ + + + + + + + +DFT-FE: workspace/include/KohnShamHamiltonianOperator.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
KohnShamHamiltonianOperator.h File Reference
+
+
+
#include <constants.h>
+#include <constraintMatrixInfo.h>
+#include <constraintMatrixInfoDevice.h>
+#include <headers.h>
+#include <operator.h>
+#include <BLASWrapper.h>
+#include <FEBasisOperations.h>
+#include <oncvClass.h>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::KohnShamHamiltonianOperator< memorySpace >
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/_kohn_sham_hamiltonian_operator_8h_source.html b/_kohn_sham_hamiltonian_operator_8h_source.html new file mode 100644 index 000000000..488c13f96 --- /dev/null +++ b/_kohn_sham_hamiltonian_operator_8h_source.html @@ -0,0 +1,435 @@ + + + + + + + +DFT-FE: workspace/include/KohnShamHamiltonianOperator.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
KohnShamHamiltonianOperator.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18
+
19#ifndef kohnShamHamiltonianOperatorClass_H_
+
20#define kohnShamHamiltonianOperatorClass_H_
+
21#include <constants.h>
+ + +
24#include <headers.h>
+
25#include <operator.h>
+
26#include <BLASWrapper.h>
+
27#include <FEBasisOperations.h>
+
28#include <oncvClass.h>
+
29
+
30namespace dftfe
+
31{
+
32 template <dftfe::utils::MemorySpace memorySpace>
+
+ +
34 {
+
35#if defined(DFTFE_WITH_DEVICE)
+ +
37 typename std::conditional<memorySpace ==
+ +
39 dftUtils::constraintMatrixInfoDevice,
+ +
41#else
+ +
43#endif
+
44 public:
+ + + +
48 std::shared_ptr<
+ + +
51 std::shared_ptr<
+ +
53 double,
+ + + + +
58 std::shared_ptr<excManager> excManagerPtr,
+ +
60 const unsigned int densityQuadratureID,
+
61 const unsigned int lpspQuadratureID,
+
62 const unsigned int feOrderPlusOneQuadratureID,
+ + +
65
+
66 void
+
67 init(const std::vector<double> &kPointCoordinates,
+
68 const std::vector<double> &kPointWeights);
+
69
+
70 void
+ +
72
+
73 const MPI_Comm &
+ +
75
+ + +
78
+ +
+ +
81 {
+ +
83 ->d_constraintInfo[d_basisOperationsPtr->d_dofHandlerID]);
+
84 }
+
+
85
+ +
87 getScratchFEMultivector(const unsigned int numVectors,
+
88 const unsigned int index);
+
89
+
90
+
91 /**
+
92 * @brief Computes effective potential involving exchange-correlation functionals
+
93 * @param rhoValues electron-density
+
94 * @param phiValues electrostatic potential arising both from electron-density and nuclear charge
+
95 * @param rhoCoreValues quadrature data of sum{Vext} minus sum{Vnu}
+
96 */
+
97 void
+ +
99 const std::vector<
+ +
101 &rhoValues,
+
102 const std::vector<
+ + + +
106 & phiValues,
+
107 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
108 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
+
109 const unsigned int spinIndex = 0);
+
110
+
111 void
+ +
113 const std::map<dealii::CellId, std::vector<double>>
+ +
115
+
116 void
+ +
118 const std::vector<
+ +
120 &rhoValues,
+
121 const std::vector<
+ + +
124 const std::vector<
+ + +
127 const std::vector<
+ + + + +
132 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
133 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
+
134 const unsigned int spinIndex);
+
135
+
136 /**
+
137 * @brief sets the data member to appropriate kPoint and spin Index
+
138 *
+
139 * @param kPointIndex k-point Index to set
+
140 */
+
141 void
+ +
143 const unsigned int spinIndex);
+
144
+
145 void
+ +
147
+ + +
150
+ + +
153
+
154 void
+ + +
157
+
158 void
+ +
160
+
161 void
+ +
163 const double scalarHX,
+
164 const double scalarY,
+
165 const double scalarX,
+ + +
168
+
169 void
+ + +
172 const double scalarHX,
+
173 const double scalarY,
+
174 const double scalarX,
+ + +
177 const bool skip1 = false,
+
178 const bool skip2 = false,
+
179 const bool skip3 = false);
+
180
+
181 void
+ + + + + +
187
+
188 private:
+
189 std::shared_ptr<
+ + +
192
+
193 std::shared_ptr<dftfe::linearAlgebra::BLASWrapper<memorySpace>>
+ +
195 std::shared_ptr<
+ + +
198 std::shared_ptr<
+ +
200 double,
+ + +
203 std::shared_ptr<dftfe::oncvClass<dataTypes::number, memorySpace>>
+ +
205 std::shared_ptr<excManager> d_excManagerPtr;
+ +
207
+
208 std::vector<dftfe::utils::MemoryStorage<dataTypes::number, memorySpace>>
+ + + +
212
+
213
+ + + + +
218
+ + + + +
223
+ + +
226 std::vector<dftfe::utils::MemoryStorage<double, memorySpace>>
+ +
228 // Constraints scaled with inverse sqrt diagonal Mass Matrix
+
229 std::shared_ptr<constraintInfoClass>
+ +
231 std::shared_ptr<constraintInfoClass>
+ +
233 // kPoint cartesian coordinates
+
234 std::vector<double> d_kPointCoordinates;
+
235 // k point weights
+
236 std::vector<double> d_kPointWeights;
+
237
+ + +
240
+
241 const unsigned int d_densityQuadratureID;
+
242 const unsigned int d_lpspQuadratureID;
+ +
244 unsigned int d_kPointIndex;
+
245 unsigned int d_spinIndex;
+
246 unsigned int d_HamiltonianIndex;
+ + + +
250 const unsigned int n_mpi_processes;
+
251 const unsigned int this_mpi_process;
+ +
253 unsigned int d_cellsBlockSizeHX;
+ +
255 dealii::ConditionalOStream pcout;
+
256
+
257 // compute-time logger
+
258 dealii::TimerOutput computing_timer;
+
259 };
+
+
260} // namespace dftfe
+
261#endif
+ + +
Definition KohnShamHamiltonianOperator.h:34
+
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, memorySpace > > d_basisOperationsPtr
Definition KohnShamHamiltonianOperator.h:197
+
dftfe::utils::MemoryStorage< double, memorySpace > d_invJacderExcWithSigmaTimesGradRhoJxW
Definition KohnShamHamiltonianOperator.h:225
+
dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > d_cellWaveFunctionMatrixSrc
Definition KohnShamHamiltonianOperator.h:215
+
const unsigned int d_densityQuadratureID
Definition KohnShamHamiltonianOperator.h:241
+
std::shared_ptr< dftfe::oncvClass< dataTypes::number, memorySpace > > d_oncvClassPtr
Definition KohnShamHamiltonianOperator.h:204
+
const dftfe::utils::MemoryStorage< double, memorySpace > & getSqrtMassVector()
+
const unsigned int this_mpi_process
Definition KohnShamHamiltonianOperator.h:251
+
void reinitkPointSpinIndex(const unsigned int kPointIndex, const unsigned int spinIndex)
sets the data member to appropriate kPoint and spin Index
+
std::vector< double > d_kPointCoordinates
Definition KohnShamHamiltonianOperator.h:234
+
unsigned int d_HamiltonianIndex
Definition KohnShamHamiltonianOperator.h:246
+
std::shared_ptr< AtomicCenteredNonLocalOperator< dataTypes::number, memorySpace > > d_ONCVnonLocalOperator
Definition KohnShamHamiltonianOperator.h:191
+
unsigned int d_spinIndex
Definition KohnShamHamiltonianOperator.h:245
+
void HXCheby(dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &src, const double scalarHX, const double scalarY, const double scalarX, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dst, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false, const bool skip1=false, const bool skip2=false, const bool skip3=false)
+
KohnShamHamiltonianOperator(std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > BLASWrapperPtr, std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, memorySpace > > basisOperationsPtr, std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > basisOperationsPtrHost, std::shared_ptr< dftfe::oncvClass< dataTypes::number, memorySpace > > oncvClassPtr, std::shared_ptr< excManager > excManagerPtr, dftParameters *dftParamsPtr, const unsigned int densityQuadratureID, const unsigned int lpspQuadratureID, const unsigned int feOrderPlusOneQuadratureID, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain)
+
void HXRR(dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &src, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dstHX, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dstMX, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
+
std::shared_ptr< constraintInfoClass > inverseMassVectorScaledConstraintsNoneDataInfoPtr
Definition KohnShamHamiltonianOperator.h:230
+
dftfe::utils::MemoryStorage< double, memorySpace > tempHamMatrixRealBlock
Definition KohnShamHamiltonianOperator.h:238
+
unsigned int d_numVectorsInternal
Definition KohnShamHamiltonianOperator.h:254
+
const unsigned int n_mpi_processes
Definition KohnShamHamiltonianOperator.h:250
+
dftfe::utils::MemoryStorage< double, memorySpace > tempHamMatrixImagBlock
Definition KohnShamHamiltonianOperator.h:239
+
unsigned int d_cellsBlockSizeHX
Definition KohnShamHamiltonianOperator.h:253
+
dftParameters * d_dftParamsPtr
Definition KohnShamHamiltonianOperator.h:206
+
void init(const std::vector< double > &kPointCoordinates, const std::vector< double > &kPointWeights)
+
dftfe::utils::MemoryStorage< double, memorySpace > d_VeffJxW
Definition KohnShamHamiltonianOperator.h:221
+ +
const MPI_Comm d_mpiCommDomain
Definition KohnShamHamiltonianOperator.h:249
+
void computeCellHamiltonianMatrix(const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
+
unsigned int d_kPointIndex
Definition KohnShamHamiltonianOperator.h:244
+
const unsigned int d_feOrderPlusOneQuadratureID
Definition KohnShamHamiltonianOperator.h:243
+
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > d_BLASWrapperPtr
Definition KohnShamHamiltonianOperator.h:194
+
dftUtils::constraintMatrixInfo * getOverloadedConstraintMatrixHost() const
+
void HX(dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &src, const double scalarHX, const double scalarY, const double scalarX, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dst, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
+
void computeVEffExternalPotCorr(const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues)
+
constraintInfoClass * getOverloadedConstraintMatrix() const
Definition KohnShamHamiltonianOperator.h:80
+
void reinitNumberWavefunctions(const unsigned int numWfc)
+
dealii::ConditionalOStream pcout
Definition KohnShamHamiltonianOperator.h:255
+
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > d_basisOperationsPtrHost
Definition KohnShamHamiltonianOperator.h:202
+
const dftfe::utils::MemoryStorage< double, memorySpace > & getInverseSqrtMassVector()
+
std::shared_ptr< excManager > d_excManagerPtr
Definition KohnShamHamiltonianOperator.h:205
+
void computeVEffPrime(const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoPrimeValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoPrimeValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int spinIndex)
+
const unsigned int d_lpspQuadratureID
Definition KohnShamHamiltonianOperator.h:242
+
dealii::TimerOutput computing_timer
Definition KohnShamHamiltonianOperator.h:258
+
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > d_ONCVNonLocalProjectorTimesVectorBlock
Definition KohnShamHamiltonianOperator.h:220
+
std::shared_ptr< constraintInfoClass > inverseSqrtMassVectorScaledConstraintsNoneDataInfoPtr
Definition KohnShamHamiltonianOperator.h:232
+
std::vector< double > d_kPointWeights
Definition KohnShamHamiltonianOperator.h:236
+
dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > d_cellWaveFunctionMatrixDst
Definition KohnShamHamiltonianOperator.h:217
+
bool d_isExternalPotCorrHamiltonianComputed
Definition KohnShamHamiltonianOperator.h:247
+
const MPI_Comm d_mpiCommParent
Definition KohnShamHamiltonianOperator.h:248
+
void computeVEff(const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &phiValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int spinIndex=0)
Computes effective potential involving exchange-correlation functionals.
+
std::vector< dftfe::utils::MemoryStorage< double, memorySpace > > d_invJacKPointTimesJxW
Definition KohnShamHamiltonianOperator.h:227
+
dftfe::utils::MemoryStorage< double, memorySpace > d_VeffExtPotJxW
Definition KohnShamHamiltonianOperator.h:222
+
std::vector< dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > > d_cellHamiltonianMatrix
Definition KohnShamHamiltonianOperator.h:209
+
dftfe::utils::MemoryStorage< double, memorySpace > d_cellHamiltonianMatrixExtPot
Definition KohnShamHamiltonianOperator.h:211
+
unsigned int d_cellsBlockSizeHamiltonianConstruction
Definition KohnShamHamiltonianOperator.h:252
+
const MPI_Comm & getMPICommunicatorDomain()
+
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & getScratchFEMultivector(const unsigned int numVectors, const unsigned int index)
+ +
Definition FEBasisOperations.h:85
+
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:35
+
Overloads dealii's distribute and distribute_local_to_global functions associated with constraints cl...
Definition constraintMatrixInfo.h:42
+
Definition BLASWrapper.h:34
+
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition MultiVector.h:127
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition MemoryStorage.h:33
+ + + + +
double number
Definition dftfeDataTypes.h:44
+ + +
Definition pseudoPotentialToDftfeConverter.cc:34
+ + +
+ + + + diff --git a/_l_b_f_g_s_non_linear_solver_8h.html b/_l_b_f_g_s_non_linear_solver_8h.html new file mode 100644 index 000000000..6eadbe58b --- /dev/null +++ b/_l_b_f_g_s_non_linear_solver_8h.html @@ -0,0 +1,107 @@ + + + + + + + +DFT-FE: workspace/include/LBFGSNonLinearSolver.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
LBFGSNonLinearSolver.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::LBFGSNonLinearSolver
 Class implementing LBFGS optimzation method. More...
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/_l_b_f_g_s_non_linear_solver_8h_source.html b/_l_b_f_g_s_non_linear_solver_8h_source.html new file mode 100644 index 000000000..fd07acbaa --- /dev/null +++ b/_l_b_f_g_s_non_linear_solver_8h_source.html @@ -0,0 +1,364 @@ + + + + + + + +DFT-FE: workspace/include/LBFGSNonLinearSolver.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
LBFGSNonLinearSolver.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#ifndef LBFGSNonLinearSolver_h
+
19#define LBFGSNonLinearSolver_h
+
20
+
21
+
22#include "nonLinearSolver.h"
+ +
24namespace dftfe
+
25{
+
26 /**
+
27 * @brief Class implementing LBFGS optimzation method.
+
28 *
+
29 * @author Nikhil Kodali
+
30 */
+
+ +
32 {
+
33 public:
+
34 /**
+
35 * @brief Constructor.
+
36 *
+
37 * @param usePreconditioner Boolean parameter specifying whether or not to use the preconditioner.
+
38 * @param maxUpdate Maximum allowed step length in any direction.
+
39 * @param maxNumberIterations Maximum number of iterations.
+
40 * @param maxNumPastSteps Number of previous steps stored by the LBFGS solver.
+
41 * @param debugLevel Debug output level:
+
42 * 0 - no debug output
+
43 * 1 - limited debug output
+
44 * 2 - all debug output.
+
45 * @param mpi_comm_parent The mpi communicator used.
+
46 */
+ +
48 const bool usePreconditioner,
+
49 const double maxUpdate,
+
50 const unsigned int maxNumberIterations,
+
51 const int maxNumPastSteps,
+
52 const unsigned int debugLevel,
+ + +
55
+
56 /**
+
57 * @brief Destructor.
+
58 */
+ +
60
+
61 /**
+
62 * @brief Solve non-linear problem using LBFGS method.
+
63 *
+
64 * @param problem[in] nonlinearSolverProblem object.
+
65 * @param checkpointFileName[in] if string is non-empty, creates checkpoint file
+
66 * named checkpointFileName for every nonlinear iteration. If restart is set
+
67 * to true, checkpointFileName must match the name of the checkpoint file.
+
68 * Empty string will throw an error.
+
69 * @param restart[in] boolean specifying whether this is a restart solve using the checkpoint file
+
70 * specified by checkpointFileName.
+
71 * @return Return value indicating success or failure.
+
72 */
+ + +
75 const std::string checkpointFileName = "",
+
76 const bool restart = false);
+
77
+
78
+
79
+
80 /**
+
81 * @brief Create checkpoint file for current state of the LBFGS solver.
+
82 *
+
83 */
+
84 void
+
85 save(const std::string &checkpointFileName);
+
86
+
87
+
88 private:
+
89 /**
+
90 * @brief Initialize preconditioner.
+
91 */
+
92 void
+ +
94
+
95 /**
+
96 * @brief Scale preconditioner.
+
97 */
+
98 void
+ +
100
+
101 /**
+
102 * @brief Compute Hessian inverse times vector.
+
103 */
+
104 void
+
105 computeHx(std::vector<double> &Hx);
+
106
+
107 /**
+
108 * @brief Compute LBFGS step.
+
109 */
+
110 void
+ +
112
+
113 /**
+
114 * @brief Compute Update Vector.
+
115 */
+
116 void
+ +
118
+
119 /**
+
120 * @brief Update the stored history, damped LBFGS.
+
121 */
+
122 void
+ +
124
+
125 /**
+
126 * @brief Test if the step satisfies strong Wolfe conditions.
+
127 */
+
128 void
+ +
130
+
131 /**
+
132 * @brief Compute scaling factor for the step.
+
133 */
+
134 void
+ +
136
+
137 /**
+
138 * @brief Update solution x -> x + step.
+
139 *
+
140 * @param step update step vector.
+
141 * @param problem nonlinearSolverProblem object.
+
142 *
+
143 * @return bool true if valid update and false if increment bound exceeded
+
144 *
+
145 */
+
146 bool
+
147 updateSolution(const std::vector<double> &step,
+ +
149
+
150 /**
+
151 * @brief Load LBFGS solver state from checkpoint file.
+
152 *
+
153 */
+
154 void
+
155 load(const std::string &checkpointFileName);
+
156
+
157 /// storage for the value and gradient of the nonlinear problem in the
+
158 /// current bfgs step
+
159 std::vector<double> d_gradient, d_value;
+
160
+
161 /// storage for the value and gradient of the nonlinear problem evaluated at
+
162 /// the end of the current bfgs step
+
163 std::vector<double> d_gradientNew, d_valueNew;
+
164
+
165 /// storage for the step taken in last BFGS step, step computed in the
+
166 /// corrent BFGS step and the update vector computed in the current bfgs
+
167 /// step.
+
168 std::vector<double> d_deltaX, d_deltaXNew, d_updateVector;
+
169
+
170 /// storage for the preconditioner.
+
171 std::vector<double> d_preconditioner;
+
172
+
173 /// storage for number of unknowns to be solved for in the nonlinear
+
174 /// problem.
+
175 unsigned int d_numberUnknowns;
+
176
+
177 /// storage for current bfgs iteration count.
+
178 unsigned int d_iter;
+
179
+
180 /// storage for history.
+
181 std::deque<std::vector<double>> d_deltaGq, d_deltaXq;
+
182 std::deque<double> d_rhoq;
+
183
+
184 /// storage for the maximum number of past steps to be stored.
+ +
186
+
187 /// storage for the number of past steps currently stored.
+ +
189
+
190 /// storage for inf norm of the update step.
+ +
192
+
193 /// storage for the maximum allowed step length.
+ +
195
+
196 /// storage for backtracking line search parameter.
+
197 double d_alpha;
+
198
+
199 /// boolean parameter for step accepteance and Wolfe conditions.
+ + +
202
+
203 /// flag for using the preconditioner
+ +
205
+ +
207
+
208 //
+ +
210
+
211
+
212
+
213 // parallel objects
+ +
215 dealii::ConditionalOStream pcout;
+
216 };
+
+
217
+
218} // namespace dftfe
+
219#endif // BFGSNonLinearSolver_h
+
Class implementing LBFGS optimzation method.
Definition LBFGSNonLinearSolver.h:32
+
void computeStepScale(nonlinearSolverProblem &problem)
Compute scaling factor for the step.
+
bool d_wolfeSufficientDec
Definition LBFGSNonLinearSolver.h:200
+
std::vector< double > d_preconditioner
storage for the preconditioner.
Definition LBFGSNonLinearSolver.h:171
+
void updateHistory()
Update the stored history, damped LBFGS.
+
void save(const std::string &checkpointFileName)
Create checkpoint file for current state of the LBFGS solver.
+
void initializePreconditioner(nonlinearSolverProblem &problem)
Initialize preconditioner.
+
void load(const std::string &checkpointFileName)
Load LBFGS solver state from checkpoint file.
+
dealii::ConditionalOStream pcout
Definition LBFGSNonLinearSolver.h:215
+
void computeUpdateStep()
Compute Update Vector.
+
std::vector< double > d_gradientNew
Definition LBFGSNonLinearSolver.h:163
+
bool d_useSingleAtomSolutionsInitialGuess
Definition LBFGSNonLinearSolver.h:206
+
void computeStep()
Compute LBFGS step.
+
std::vector< double > d_updateVector
Definition LBFGSNonLinearSolver.h:168
+
double d_normDeltaXnew
storage for inf norm of the update step.
Definition LBFGSNonLinearSolver.h:191
+
std::vector< double > d_value
Definition LBFGSNonLinearSolver.h:159
+
double d_alpha
storage for backtracking line search parameter.
Definition LBFGSNonLinearSolver.h:197
+
std::vector< double > d_gradient
Definition LBFGSNonLinearSolver.h:159
+
bool d_wolfeSatisfied
Definition LBFGSNonLinearSolver.h:201
+
LBFGSNonLinearSolver(const bool usePreconditioner, const double maxUpdate, const unsigned int maxNumberIterations, const int maxNumPastSteps, const unsigned int debugLevel, const MPI_Comm &mpi_comm_parent, const bool isCurvatureOnlyLineSearchStoppingCondition=false)
Constructor.
+
const bool d_usePreconditioner
flag for using the preconditioner
Definition LBFGSNonLinearSolver.h:204
+
int d_numPastSteps
storage for the number of past steps currently stored.
Definition LBFGSNonLinearSolver.h:188
+
void scalePreconditioner(nonlinearSolverProblem &problem)
Scale preconditioner.
+
unsigned int d_numberUnknowns
Definition LBFGSNonLinearSolver.h:175
+
const int d_maxNumPastSteps
storage for the maximum number of past steps to be stored.
Definition LBFGSNonLinearSolver.h:185
+
std::deque< std::vector< double > > d_deltaGq
storage for history.
Definition LBFGSNonLinearSolver.h:181
+
unsigned int d_iter
storage for current bfgs iteration count.
Definition LBFGSNonLinearSolver.h:178
+
std::vector< double > d_deltaX
Definition LBFGSNonLinearSolver.h:168
+
void computeHx(std::vector< double > &Hx)
Compute Hessian inverse times vector.
+
std::vector< double > d_deltaXNew
Definition LBFGSNonLinearSolver.h:168
+
bool d_stepAccepted
boolean parameter for step accepteance and Wolfe conditions.
Definition LBFGSNonLinearSolver.h:200
+
bool d_isCurvatureOnlyLineSearchStoppingCondition
Definition LBFGSNonLinearSolver.h:209
+
~LBFGSNonLinearSolver()
Destructor.
+
bool updateSolution(const std::vector< double > &step, nonlinearSolverProblem &problem)
Update solution x -> x + step.
+
std::vector< double > d_valueNew
Definition LBFGSNonLinearSolver.h:163
+
void checkWolfe()
Test if the step satisfies strong Wolfe conditions.
+
bool d_noHistory
Definition LBFGSNonLinearSolver.h:206
+
std::deque< std::vector< double > > d_deltaXq
Definition LBFGSNonLinearSolver.h:181
+
bool d_wolfeCurvature
Definition LBFGSNonLinearSolver.h:200
+
std::deque< double > d_rhoq
Definition LBFGSNonLinearSolver.h:182
+
nonLinearSolver::ReturnValueType solve(nonlinearSolverProblem &problem, const std::string checkpointFileName="", const bool restart=false)
Solve non-linear problem using LBFGS method.
+
double d_maxStepLength
storage for the maximum allowed step length.
Definition LBFGSNonLinearSolver.h:194
+
MPI_Comm mpi_communicator
Definition LBFGSNonLinearSolver.h:214
+
Base class for non-linear algebraic solver.
Definition nonLinearSolver.h:39
+
ReturnValueType
Definition nonLinearSolver.h:45
+
Abstract class for solver functions.
Definition nonlinearSolverProblem.h:30
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+ +
+ + + + diff --git a/_m_d_i_engine_8h.html b/_m_d_i_engine_8h.html new file mode 100644 index 000000000..90e8f910e --- /dev/null +++ b/_m_d_i_engine_8h.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: workspace/include/MDIEngine.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MDIEngine.h File Reference
+
+
+ +

Go to the source code of this file.

+
+ + + + diff --git a/_m_d_i_engine_8h_source.html b/_m_d_i_engine_8h_source.html new file mode 100644 index 000000000..6a54faac5 --- /dev/null +++ b/_m_d_i_engine_8h_source.html @@ -0,0 +1,244 @@ + + + + + + + +DFT-FE: workspace/include/MDIEngine.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MDIEngine.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#if defined(DFTFE_WITH_MDI)
+
19# ifndef dftfeMDIEngine_H_
+
20# define dftfeMDIEngine_H_
+
21# include "dftfeWrapper.h"
+
22# include <mdi.h>
+
23# include <mpi.h>
+
24# include <string>
+
25# include <vector>
+
26
+
27namespace dftfe
+
28{
+
29 /**
+
30 * @brief MDIEngine interface class for dftfe
+
31 *
+
32 * @author Sambit Das
+
33 */
+
34 class MDIEngine
+
35 {
+
36 public:
+
37 /**
+
38 * @brief constructor
+
39 */
+
40 MDIEngine(MPI_Comm &dftfeMPIComm, int argc, char *argv[]);
+
41
+
42 int
+
43 execute_command(const char *command, MDI_Comm &mdicomm);
+
44
+
45 void
+
46 engine_node(const char *node);
+
47
+
48
+
49 private:
+
50 /// 1 for proc 0, otherwise 0
+
51 int d_root;
+
52
+
53 /// MDI communicator
+
54 MDI_Comm d_mdicomm;
+
55
+
56 /// MDI communicator
+
57 MPI_Comm d_dftfeMPIComm;
+
58
+
59 /// DFT-FE object
+
60 dftfeWrapper d_dftfeWrapper;
+
61
+
62 // state of MDI engine
+
63
+
64 /// which mode engine is in ()
+
65 int d_mode;
+
66 /// current MDI command being processed
+
67 char *d_mdicmd;
+
68 /// which node engine is at
+
69 char *d_node_engine;
+
70 /// which node driver has requested
+
71 char *d_node_driver;
+
72 /// true if driver and engine node currently match
+
73 bool d_node_match;
+
74 /// true if EXIT command received from driver
+
75 bool d_exit_command;
+
76
+
77 // flags for data received by engine
+
78 // not acted on until a request to send <ENERGY,<FORCES,<PE,<STRESS
+
79 int d_actionflag;
+
80 int d_flag_natoms, d_flag_elements;
+
81 int d_flag_cell, d_flag_dimensions, d_flag_cell_displ;
+
82 int d_flag_charges, d_flag_coords;
+
83 int d_flag_mpGrid, d_flag_mpShift;
+
84 int d_flag_spin;
+
85
+
86 int d_sys_natoms;
+
87 int d_sys_dimensions[3];
+
88 std::vector<int> d_sys_elements;
+
89 std::vector<double> d_sys_coords;
+
90 double d_sys_cell[9], d_sys_cell_displ[3];
+
91 int d_mpGrid[3];
+
92 double d_mpShift[3];
+
93 int d_spinPolarization;
+
94
+
95 // class methods
+
96 void
+
97 mdi_commands();
+
98
+
99 void
+
100 evaluate();
+
101 void
+
102 create_system();
+
103 void
+
104 adjust_box();
+
105 void
+
106 adjust_coords();
+
107
+
108 void
+
109 receive_cell();
+
110 void
+
111 receive_cell_displ();
+
112 void
+
113 receive_coords();
+
114 void
+
115 receive_natoms();
+
116 void
+
117 receive_elements();
+
118 void
+
119 receive_dimensions();
+
120 void
+
121 receive_mpGrid();
+
122 void
+
123 receive_mpShift();
+
124 void
+
125 receive_spinPolarization();
+
126
+
127 void
+
128 send_name();
+
129 void
+
130 send_cell();
+
131 void
+
132 send_coords();
+
133 void
+
134 send_natoms();
+
135 void
+
136 send_elements();
+
137 void
+
138 send_spinPolarization();
+
139
+
140 void
+
141 send_energy();
+
142 void
+
143 send_forces();
+
144 void
+
145 send_stress();
+
146 };
+
147} // namespace dftfe
+
148# endif
+
149#endif
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_m_p_i_communicator_p2_p_8h.html b/_m_p_i_communicator_p2_p_8h.html new file mode 100644 index 000000000..6ad0a5ff8 --- /dev/null +++ b/_m_p_i_communicator_p2_p_8h.html @@ -0,0 +1,133 @@ + + + + + + + +DFT-FE: workspace/include/MPICommunicatorP2P.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
MPICommunicatorP2P.h File Reference
+
+
+
#include <MemorySpaceType.h>
+#include <MPIPatternP2P.h>
+#include <TypeConfig.h>
+#include <MemoryStorage.h>
+#include <DataTypeOverloads.h>
+#include <dftfeDataTypes.h>
+
+

Go to the source code of this file.

+ + + + + + + + + + +

+Classes

struct  dftfe::utils::mpi::singlePrecType< T >
 
struct  dftfe::utils::mpi::singlePrecType< double >
 
struct  dftfe::utils::mpi::singlePrecType< std::complex< double > >
 
class  dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >
 
+ + + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::utils
 
namespace  dftfe::utils::mpi
 
+ + + + + +

+Enumerations

enum class  dftfe::utils::mpi::communicationProtocol { dftfe::utils::mpi::mpiHost +, dftfe::utils::mpi::mpiDevice +, dftfe::utils::mpi::nccl + }
 
enum class  dftfe::utils::mpi::communicationPrecision { dftfe::utils::mpi::single +, dftfe::utils::mpi::full + }
 
+
+ + + + diff --git a/_m_p_i_communicator_p2_p_8h_source.html b/_m_p_i_communicator_p2_p_8h_source.html new file mode 100644 index 000000000..0eabff953 --- /dev/null +++ b/_m_p_i_communicator_p2_p_8h_source.html @@ -0,0 +1,329 @@ + + + + + + + +DFT-FE: workspace/include/MPICommunicatorP2P.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MPICommunicatorP2P.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18/*
+
19 * @author Sambit Das
+
20 */
+
21
+
22#ifndef dftfeMPICommunicatorP2P_h
+
23#define dftfeMPICommunicatorP2P_h
+
24
+
25#include <MemorySpaceType.h>
+
26#include <MPIPatternP2P.h>
+
27#include <TypeConfig.h>
+
28#include <MemoryStorage.h>
+
29#include <DataTypeOverloads.h>
+
30#include <dftfeDataTypes.h>
+
31#ifdef DFTFE_WITH_DEVICE
+
32# include <DeviceTypeConfig.h>
+
33# if defined(DFTFE_WITH_CUDA_NCCL)
+
34# include <nccl.h>
+
35# elif defined(DFTFE_WITH_HIP_RCCL)
+
36# include <rccl.h>
+
37# endif
+
38#endif
+
39
+
40
+
41namespace dftfe
+
42{
+
43 namespace utils
+
44 {
+
+
45 namespace mpi
+
46 {
+
+ +
48 {
+
49 mpiHost,
+ +
51 nccl
+
52 };
+
+
53
+
+ +
55 {
+
56 single,
+
57 full
+
58 };
+
+
59
+
60
+
61 template <typename T>
+
+ +
63 {
+
64 typedef T type;
+
65 };
+
+
66 template <>
+
+ +
68 {
+
69 typedef float type;
+
70 };
+
+
71 template <>
+
+
72 struct singlePrecType<std::complex<double>>
+
73 {
+
74 typedef std::complex<float> type;
+
75 };
+
+
76
+
77 template <typename ValueType, MemorySpace memorySpace>
+
+ +
79 {
+
80 public:
+ +
82 std::shared_ptr<const MPIPatternP2P<memorySpace>> mpiPatternP2P,
+
83 const size_type blockSize);
+
84
+
85 void
+ + +
88
+
89 void
+ + + +
93
+
94
+
95 void
+ + +
98
+
99 void
+ +
101
+
102 void
+ + + +
106
+
107 void
+ + +
110
+
111 std::shared_ptr<const MPIPatternP2P<memorySpace>>
+ +
113
+
114 int
+ +
116
+
117 void
+ +
119
+
120 private:
+
121 std::shared_ptr<const MPIPatternP2P<memorySpace>> d_mpiPatternP2P;
+
122
+ +
124
+ +
126
+ +
128
+ +
130
+ +
132
+ +
134
+ +
136
+ +
138
+ + +
141
+ + +
144
+
145#ifdef DFTFE_WITH_DEVICE
+
146 std::shared_ptr<MemoryStorage<ValueType, MemorySpace::HOST_PINNED>>
+ +
148
+
149 std::shared_ptr<MemoryStorage<ValueType, MemorySpace::HOST_PINNED>>
+ +
151
+
152 std::shared_ptr<MemoryStorage<typename singlePrecType<ValueType>::type,
+ + +
155
+
156 std::shared_ptr<MemoryStorage<typename singlePrecType<ValueType>::type,
+ + +
159#endif // DFTFE_WITH_DEVICE
+
160
+
161 std::vector<MPI_Request> d_requestsUpdateGhostValues;
+
162 std::vector<MPI_Request> d_requestsAccumulateAddLocallyOwned;
+ +
164#ifdef DFTFE_WITH_DEVICE
+ +
166#endif
+ + +
169 };
+
+
170
+
171 } // namespace mpi
+
+
172 } // namespace utils
+
173} // namespace dftfe
+
174#endif // dftfeMPICommunicatorP2P_h
+ + + + + + +
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition MPICommunicatorP2P.h:79
+
MemoryStorage< typename singlePrecType< ValueType >::type, memorySpace > d_ghostDataCopySinglePrec
Definition MPICommunicatorP2P.h:143
+
std::shared_ptr< const MPIPatternP2P< memorySpace > > getMPIPatternP2P() const
+
size_type d_ghostSize
Definition MPICommunicatorP2P.h:127
+
void accumulateAddLocallyOwnedEnd(MemoryStorage< ValueType, memorySpace > &dataArray)
+
MemoryStorage< ValueType, memorySpace > d_sendRecvBuffer
Definition MPICommunicatorP2P.h:129
+
void setCommunicationPrecision(communicationPrecision precision)
+
std::vector< MPI_Request > d_requestsAccumulateAddLocallyOwned
Definition MPICommunicatorP2P.h:162
+
MemoryStorage< double, memorySpace > d_tempDoubleImagArrayForAtomics
Definition MPICommunicatorP2P.h:133
+
MPI_Comm d_mpiCommunicator
Definition MPICommunicatorP2P.h:163
+
MemoryStorage< float, memorySpace > d_tempFloatRealArrayForAtomics
Definition MPICommunicatorP2P.h:135
+
std::shared_ptr< const MPIPatternP2P< memorySpace > > d_mpiPatternP2P
Definition MPICommunicatorP2P.h:121
+
std::vector< MPI_Request > d_requestsUpdateGhostValues
Definition MPICommunicatorP2P.h:161
+
void updateGhostValuesBegin(MemoryStorage< ValueType, memorySpace > &dataArray, const size_type communicationChannel=0)
+
MemoryStorage< double, memorySpace > d_tempDoubleRealArrayForAtomics
Definition MPICommunicatorP2P.h:131
+ +
size_type d_locallyOwnedSize
Definition MPICommunicatorP2P.h:125
+
communicationProtocol d_commProtocol
Definition MPICommunicatorP2P.h:167
+
size_type d_blockSize
Definition MPICommunicatorP2P.h:123
+
MemoryStorage< typename singlePrecType< ValueType >::type, memorySpace > d_sendRecvBufferSinglePrec
Definition MPICommunicatorP2P.h:140
+
MemoryStorage< float, memorySpace > d_tempFloatImagArrayForAtomics
Definition MPICommunicatorP2P.h:137
+
void updateGhostValuesEnd(MemoryStorage< ValueType, memorySpace > &dataArray)
+
MPICommunicatorP2P(std::shared_ptr< const MPIPatternP2P< memorySpace > > mpiPatternP2P, const size_type blockSize)
+
void accumulateAddLocallyOwned(MemoryStorage< ValueType, memorySpace > &dataArray, const size_type communicationChannel=0)
+
communicationPrecision d_commPrecision
Definition MPICommunicatorP2P.h:168
+
void accumulateAddLocallyOwnedBegin(MemoryStorage< ValueType, memorySpace > &dataArray, const size_type communicationChannel=0)
+
void updateGhostValues(MemoryStorage< ValueType, memorySpace > &dataArray, const size_type communicationChannel=0)
+ +
communicationPrecision
Definition MPICommunicatorP2P.h:55
+ + +
communicationProtocol
Definition MPICommunicatorP2P.h:48
+ + + + +
Definition pseudoPotentialToDftfeConverter.cc:34
+
float type
Definition MPICommunicatorP2P.h:69
+
std::complex< float > type
Definition MPICommunicatorP2P.h:74
+
Definition MPICommunicatorP2P.h:63
+
T type
Definition MPICommunicatorP2P.h:64
+
+ + + + diff --git a/_m_p_i_communicator_p2_p_kernels_8h.html b/_m_p_i_communicator_p2_p_kernels_8h.html new file mode 100644 index 000000000..509dc2297 --- /dev/null +++ b/_m_p_i_communicator_p2_p_kernels_8h.html @@ -0,0 +1,110 @@ + + + + + + + +DFT-FE: workspace/include/MPICommunicatorP2PKernels.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
MPICommunicatorP2PKernels.h File Reference
+
+
+
#include <MemorySpaceType.h>
+#include <MemoryStorage.h>
+#include <TypeConfig.h>
+#include <DataTypeOverloads.h>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::utils::MPICommunicatorP2PKernels< ValueType, memorySpace >
 
+ + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::utils
 
+
+ + + + diff --git a/_m_p_i_communicator_p2_p_kernels_8h_source.html b/_m_p_i_communicator_p2_p_kernels_8h_source.html new file mode 100644 index 000000000..7df51f615 --- /dev/null +++ b/_m_p_i_communicator_p2_p_kernels_8h_source.html @@ -0,0 +1,249 @@ + + + + + + + +DFT-FE: workspace/include/MPICommunicatorP2PKernels.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MPICommunicatorP2PKernels.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18/*
+
19 * @author Sambit Das
+
20 */
+
21
+
22#ifndef dftfeMPICommunicatorP2PKernels_h
+
23#define dftfeMPICommunicatorP2PKernels_h
+
24
+
25#include <MemorySpaceType.h>
+
26#include <MemoryStorage.h>
+
27#include <TypeConfig.h>
+
28#include <DataTypeOverloads.h>
+
29#ifdef DFTFE_WITH_DEVICE
+
30# include <DeviceTypeConfig.h>
+
31#endif
+
32namespace dftfe
+
33{
+
34 namespace utils
+
35 {
+
36 template <typename ValueType, dftfe::utils::MemorySpace memorySpace>
+
+ +
38 {
+
39 public:
+ +
41
+
42 /**
+
43 * @brief Function template for architecture adaptable gather kernel to send buffer
+
44 * @tparam ValueType the type of the number
+
45 * @tparam memorySpace
+
46 * @param[in] dataArray data array with locally owned entries
+
47 * @param[in] ownedLocalIndicesForTargetProcs
+
48 * @param[in] blockSize
+
49 * @param[out] sendBuffer
+
50 */
+
51 template <typename ValueTypeComm>
+
52 static void
+ + + +
56 const size_type blockSize,
+ +
58
+
59 /**
+
60 * @brief Function template for architecture adaptable accumlate kernel from recv buffer
+
61 * @tparam ValueType the type of the number
+
62 * @tparam memorySpace
+
63 * @param[in] recvBuffer
+
64 * @param[in] ownedLocalIndicesForTargetProcs
+
65 * @param[in] blockSize
+
66 * @param[out] dataArray
+
67 */
+
68 template <typename ValueTypeComm>
+
69 static void
+ + + +
73 const size_type blockSize,
+
74 const size_type locallyOwnedSize,
+
75 const size_type ghostSize,
+ +
77
+
78 /**
+
79 * @brief Function template for copying type1 to type2
+
80 * @param[in] blockSize
+
81 * @param[in] type1Array
+
82 * @param[out] type2Array
+
83 */
+
84 template <typename ValueType1, typename ValueType2>
+
85 static void
+ + + +
89 };
+
+
90
+
91#ifdef DFTFE_WITH_DEVICE
+
92 template <typename ValueType>
+ + +
95 {
+
96 public:
+
97 template <typename ValueTypeComm>
+
98 static void
+ + +
101 &dataArray,
+ + +
104 const size_type blockSize,
+ +
106 & sendBuffer,
+ +
108
+
109 template <typename ValueTypeComm>
+
110 static void
+ + +
113 &recvBuffer,
+ + +
116 const size_type blockSize,
+
117 const size_type locallyOwnedSize,
+
118 const size_type ghostSize,
+ + +
121
+
122 /**
+
123 * @brief Function template for copying type1 to type2
+
124 * @param[in] blockSize
+
125 * @param[in] type1Array
+
126 * @param[out] type2Array
+
127 */
+
128 template <typename ValueType1, typename ValueType2>
+
129 static void
+ +
131 const size_type blockSize,
+
132 const ValueType1 * type1Array,
+ + +
135 };
+
136#endif
+
137 } // namespace utils
+
138} // namespace dftfe
+
139
+
140
+
141#endif
+ + + + + +
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition MPICommunicatorP2PKernels.h:38
+
static void copyValueType1ArrToValueType2Arr(const size_type blockSize, const ValueType1 *type1Array, ValueType2 *type2Array)
Function template for copying type1 to type2.
+
static void accumAddLocallyOwnedContrRecvBufferFromTargetProcs(const MemoryStorage< ValueTypeComm, memorySpace > &recvBuffer, const SizeTypeVector &ownedLocalIndicesForTargetProcs, const size_type blockSize, const size_type locallyOwnedSize, const size_type ghostSize, MemoryStorage< ValueType, memorySpace > &dataArray)
Function template for architecture adaptable accumlate kernel from recv buffer.
+
static void gatherLocallyOwnedEntriesSendBufferToTargetProcs(const MemoryStorage< ValueType, memorySpace > &dataArray, const SizeTypeVector &ownedLocalIndicesForTargetProcs, const size_type blockSize, MemoryStorage< ValueTypeComm, memorySpace > &sendBuffer)
Function template for architecture adaptable gather kernel to send buffer.
+ + +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_m_p_i_pattern_p2_p_8h.html b/_m_p_i_pattern_p2_p_8h.html new file mode 100644 index 000000000..4a8cfb419 --- /dev/null +++ b/_m_p_i_pattern_p2_p_8h.html @@ -0,0 +1,115 @@ + + + + + + + +DFT-FE: workspace/include/MPIPatternP2P.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
MPIPatternP2P.h File Reference
+
+
+
#include <MemorySpaceType.h>
+#include <MemoryStorage.h>
+#include <OptimizedIndexSet.h>
+#include <vector>
+#include <mpi.h>
+#include "../utils/MPIPatternP2P.t.cc"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::utils::mpi::MPIPatternP2P< memorySpace >
 A class template to store the communication pattern (i.e., which entries/nodes to receive from which processor and which entries/nodes to send to which processor). More...
 
+ + + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::utils
 
namespace  dftfe::utils::mpi
 
+
+ + + + diff --git a/_m_p_i_pattern_p2_p_8h_source.html b/_m_p_i_pattern_p2_p_8h_source.html new file mode 100644 index 000000000..a46b8e9a4 --- /dev/null +++ b/_m_p_i_pattern_p2_p_8h_source.html @@ -0,0 +1,535 @@ + + + + + + + +DFT-FE: workspace/include/MPIPatternP2P.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MPIPatternP2P.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18/*
+
19 * @author Sambit Das, Bikash Kanungo
+
20 */
+
21
+
22#ifndef dftfeMPIPatternP2P_h
+
23#define dftfeMPIPatternP2P_h
+
24
+
25#include <MemorySpaceType.h>
+
26#include <MemoryStorage.h>
+
27#include <OptimizedIndexSet.h>
+
28#include <vector>
+
29#include <mpi.h>
+
30namespace dftfe
+
31{
+
32 namespace utils
+
33 {
+
34 namespace mpi
+
35 {
+
36 /** @brief A class template to store the communication pattern
+
37 * (i.e., which entries/nodes to receive from which processor and
+
38 * which entries/nodes to send to which processor).
+
39 *
+
40 *
+
41 * + <b>Assumptions</b>
+
42 * 1. It assumes that a a sparse communication pattern. That is,
+
43 * a given processor only communicates with a few processors.
+
44 * This object should be avoided if the communication pattern
+
45 * is dense (e.g., all-to-all communication)
+
46 * 2. It assumes that the each processor owns a set of \em continuous
+
47 * integers (indices). Further, the ownership is exclusive (i.e.,
+
48 * no index is owned by more than one processor). In other words,
+
49 * the different sets of owning indices across all the processors
+
50 * are disjoint.
+
51 *
+
52 * @tparam memorySpace Defines the MemorySpace (i.e., HOST or
+
53 * DEVICE) in which the various data members of this object must reside.
+
54 */
+
55 template <dftfe::utils::MemorySpace memorySpace>
+
+ +
57 {
+
58 ///
+
59 /// typedefs
+
60 ///
+
61 public:
+ + + +
65
+
66 public:
+
67 virtual ~MPIPatternP2P() = default;
+
68
+
69 /**
+
70 * @brief Constructor. This constructor is the typical way of
+
71 * creation of an MPI pattern.
+
72 *
+
73 * @param[in] locallyOwnedRange A pair of non-negtive integers
+
74 * \f$(a,b)\f$ which defines a range of indices (continuous)
+
75 * that are owned by the current processor.
+
76 * @note It is an open interval where \f$a\f$ is included,
+
77 * but \f$b\f$ is not included.
+
78 *
+
79 * @param[in] ghostIndices An ordered set of non-negtive indices
+
80 * specifyin the ghost indices for the current processor.
+
81 * @note the vector must be ordered
+
82 * (i.e., ordered in increasing order and non-repeating)
+
83 *
+
84 * @param[in] mpiComm The MPI communicator object which defines the
+
85 * set of processors for which the MPI pattern needs to be created.
+
86 *
+
87 * @throw Throws exception if \p mpiComm is in an invalid state, if
+
88 * the \p locallyOwnedRange across all the processors are not disjoint,
+
89 * if \p ghostIndices are not ordered (if it is not strictly
+
90 * increasing), or if some sanity checks with respect to MPI sends and
+
91 * receives fail.
+
92 *
+
93 * @note Care is taken to create a dummy MPIPatternP2P while not linking
+
94 * to an MPI library. This allows the user code to seamlessly link and
+
95 * delink an MPI library.
+
96 */
+
97 MPIPatternP2P(const std::pair<global_size_type, global_size_type>
+ +
99 const std::vector<dftfe::global_size_type> &ghostIndices,
+
100 const MPI_Comm & mpiComm);
+
101 /**
+
102 * @brief Constructor. This constructor is to create an MPI Pattern for
+
103 * a serial case. This is provided so that one can seamlessly use
+
104 * has to be used even for a serial case. In this case, all the indices
+
105 * are owned by the current processor.
+
106 *
+
107 * @param[in] size Total number of indices.
+
108 * @note This is an explicitly serial construction (i.e., it uses
+
109 * MPI_COMM_SELF), which is different from the dummy MPIPatternP2P
+
110 * created while not linking to an MPI library. For examples,
+
111 * within a parallel run, one might have the need to create a serial
+
112 * MPIPatternP2P. A typical case is creation of a serial vector as a
+
113 * special case of distributed vector.
+
114 * @note Similar to the previous
+
115 * constructor, care is taken to create a dummy MPIPatternP2P while not
+
116 * linking to an MPI library.
+
117 */
+ +
119
+
120
+
121
+
122 // void
+
123 // reinit(){};
+
124
+
125 std::pair<global_size_type, global_size_type>
+ +
127
+ + +
130
+ + +
133
+
134 bool
+ +
136
+
137 bool
+ +
139
+ + +
142
+ + +
145
+
146 const std::vector<global_size_type> &
+ +
148
+
149 const std::vector<size_type> &
+ +
151
+
152 const std::vector<size_type> &
+ +
154
+ + +
157
+ + +
160
+
161 const std::vector<size_type> &
+ +
163
+
164 const std::vector<size_type> &
+ +
166
+
167 const std::vector<size_type> &
+ +
169
+ + +
172
+
173 const SizeTypeVector &
+ +
175
+ + +
178
+ + +
181
+ + +
184
+ + +
187
+
188 const MPI_Comm &
+ +
190
+
191 bool
+ +
193
+
194 private:
+
195 /**
+
196 * A pair \f$(a,b)\f$ which defines a range of indices (continuous)
+
197 * that are owned by the current processor.
+
198 *
+
199 * @note It is an open interval where \f$a\f$ is included,
+
200 * but \f$b\f$ is not included.
+
201 */
+
202 std::pair<global_size_type, global_size_type> d_locallyOwnedRange;
+
203
+
204 /**
+
205 * A vector of size 2 times number of processors to store the
+
206 * locallyOwnedRange of each processor. That is it store the list
+
207 * \f$[a_0,b_0,a_1,b_1,\ldots,a_{P-1},b_{P-1}]\f$, where the pair
+
208 * \f$(a_i,b_i)\f$ defines a range of indices (continuous) that are
+
209 * owned by the \f$i-\f$th processor.
+
210 *
+
211 * @note \f$a\f$ is included but \f$b\f$ is not included.
+
212 */
+
213 std::vector<global_size_type> d_allOwnedRanges;
+
214
+
215 /**
+
216 * Number of locally owned indices in the current processor
+
217 */
+ +
219
+
220 /**
+
221 * Number of ghost indices in the current processor
+
222 */
+ +
224
+
225 /**
+
226 * Vector to store an ordered set of ghost indices
+
227 * (ordered in increasing order and non-repeating)
+
228 */
+
229 std::vector<global_size_type> d_ghostIndices;
+
230
+
231 /**
+
232 * A copy of the above d_ghostIndices stored as an STL set
+
233 */
+
234 std::set<global_size_type> d_ghostIndicesSetSTL;
+
235
+
236 /**
+
237 * An OptimizedIndexSet object to store the ghost indices for
+
238 * efficient operations. The OptimizedIndexSet internally creates
+
239 * contiguous sub-ranges within the set of indices and hence can
+
240 * optimize the finding of an index
+
241 */
+ +
243
+
244 /**
+
245 * Number of ghost processors for the current processor. A ghost
+
246 * processor is one which owns at least one of the ghost indices of this
+
247 * processor.
+
248 */
+ +
250
+
251 /**
+
252 * Vector to store the ghost processor Ids. A ghost processor is
+
253 * one which owns at least one of the ghost indices of this processor.
+
254 */
+
255 std::vector<size_type> d_ghostProcIds;
+
256
+
257 /** Vector of size number of ghost processors to store how many ghost
+
258 * indices
+
259 * of this current processor are owned by a ghost processor.
+
260 */
+
261 std::vector<size_type> d_numGhostIndicesInGhostProcs;
+
262
+
263 /**
+
264 * A flattened vector of size number of ghosts containing the ghost
+
265 * indices ordered as per the list of ghost processor Ids in
+
266 * d_ghostProcIds In other words it stores a concatentaion of the lists
+
267 * \f$L_i = \{g^{(k_i)}_1,g^{(k_i)}_2,\ldots,g^{(k_i)}_{N_i}\}\f$, where
+
268 * \f$g\f$'s are the ghost indices, \f$k_i\f$ is the rank of the
+
269 * \f$i\f$-th ghost processor (i.e., d_ghostProcIds[i]) and \f$N_i\f$
+
270 * is the number of ghost indices owned by the \f$i\f$-th
+
271 * ghost processor (i.e., d_numGhostIndicesInGhostProcs[i]).
+
272
+
273 * @note \f$L_i\f$ has to be an increasing set.
+
274
+
275 * @note We store only the ghost index local to this processor, i.e.,
+
276 * position of the ghost index in d_ghostIndicesSetSTL or
+
277 d_ghostIndices.
+
278 * This is done to use size_type which is unsigned int instead of
+
279 * global_size_type which is long unsigned it. This helps in reducing
+
280 the
+
281 * volume of data transfered during MPI calls.
+
282
+
283 * @note In the case that the locally owned ranges across all the
+
284 * processors are ordered as per the processor Id, this vector is
+
285 * redundant and one can only work with d_ghostIndices and
+
286 * d_numGhostIndicesInGhostProcs. By locally owned range being ordered
+
287 as
+
288 * per the processor Id, means that the ranges for processor
+
289 * \f$0, 1,\ldots,P-1\f$ are
+
290 * \f$[N_0,N_1), [N_1, N_2), [N_2, N_3), ..., [N_{P-1},N_P)\f$ with
+
291 * \f$N_0, N_1,\ldots, N_P\f$ beign non-decreasing. But in a more
+
292 general
+
293 * case, where the locally owned ranges are not ordered as per the
+
294 processor
+
295 * Id, this following array is useful.
+
296 */
+ +
298
+
299 /**
+
300 * @brief A vector of size 2 times the number of ghost processors
+
301 * to store the range of local ghost indices that are owned by the
+
302 * ghost processors. In other words, it stores the list
+
303 * \f$L=\{a_1,b_1, a_2, b_2, \ldots, a_G, b_G\}\f$, where
+
304 * \f$a_i\f$ and \f$b_i\f$is are the start local ghost index
+
305 * and one-past-the-last local ghost index of the current processor
+
306 * that is owned by the \f$i\f$-th ghost processor
+
307 * (i.e., d_ghostProcIds[i]). Put it differently, \f$[a_i,b_i)\f$ form
+
308 * an open interval, where \f$a_i\f$ is included but \f$b_i\f$ is not
+
309 * included.
+
310 *
+
311 * @note Given the fact that the locally owned indices of each processor
+
312 * are contiguous and the global ghost indices (i.e., d_ghostIndices) is
+
313 * ordered, it is sufficient to just store the range of local ghost
+
314 * indices for each ghost procId. The actual global ghost indices
+
315 * belonging to the \f$i\f$-th ghost processor can be fetched from
+
316 * d_ghostIndices (i.e., it is the subset of d_ghostIndices lying
+
317 * bewteen d_ghostIndices[a_i] and d_ghostIndices[b_i].
+
318 */
+
319 std::vector<size_type> d_localGhostIndicesRanges;
+
320
+
321 /**
+
322 * Number of target processors for the current processor. A
+
323 * target processor is one which owns at least one of the locally owned
+
324 * indices of this processor as its ghost index.
+
325 */
+ +
327
+
328 /**
+
329 * Vector to store the target processor Ids. A target processor is
+
330 * one which contains at least one of the locally owned indices of this
+
331 * processor as its ghost index.
+
332 */
+
333 std::vector<size_type> d_targetProcIds;
+
334
+
335 /**
+
336 * Vector of size number of target processors to store how many locally
+
337 * owned indices
+
338 * of this current processor are need ghost in each of the target
+
339 * processors.
+
340 */
+
341 std::vector<size_type> d_numOwnedIndicesForTargetProcs;
+
342
+
343 /** Vector of size \f$\sum_i\f$ d_numOwnedIndicesForTargetProcs[i]
+
344 * to store all thelocally owned indices
+
345 * which other processors need (i.e., which are ghost indices in other
+
346 * processors). It is stored as a concatentation of lists where the
+
347 * \f$i\f$-th list indices
+
348 * \f$L_i = \{o^{(k_i)}_1,o^{(k_i)}_2,\ldots,o^{(k_i)}_{N_i}\}\f$, where
+
349 * where \f$o\f$'s are indices target to other processors,
+
350 * \f$k_i\f$ is the rank of the \f$i\f$-th target processor
+
351 * (i.e., d_targetProcIds[i]) and N_i is the number of
+
352 * indices to be sent to i-th target processor (i.e.,
+
353 * d_numOwnedIndicesForTargetProcs[i]).
+
354 *
+
355 * @note We store only the indices local to this processor, i.e.,
+
356 * the relative position of the index in the locally owned range of this
+
357 * processor This is done to use size_type which is unsigned int instead
+
358 * of global_size_type which is long unsigned it. This helps in reducing
+
359 * the volume of data transfered during MPI calls.
+
360 *
+
361 * @note The list \f$L_i\f$ must be ordered.
+
362 */
+ +
364
+
365 /// Number of processors in the MPI Communicator.
+ +
367
+
368 /// Rank of the current processor.
+ +
370
+
371 /**
+
372 * Total number of unique indices across all processors
+
373 */
+ +
375
+
376 /// MPI Communicator object.
+ +
378 };
+
+
379
+
380 } // end of namespace mpi
+
381 } // end of namespace utils
+
382} // end of namespace dftfe
+
383
+
384#include "../utils/MPIPatternP2P.t.cc"
+
385#endif // dftfeMPIPatternP2P_h
+ + + +
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ +
A class template to store the communication pattern (i.e., which entries/nodes to receive from which ...
Definition MPIPatternP2P.h:57
+
size_type globalToLocal(const global_size_type globalId) const
+
const std::vector< size_type > & getGhostLocalIndicesRanges() const
+
size_type getNumGhostIndicesInProc(const size_type procId) const
+
MPIPatternP2P(const std::pair< global_size_type, global_size_type > &locallyOwnedRange, const std::vector< dftfe::global_size_type > &ghostIndices, const MPI_Comm &mpiComm)
Constructor. This constructor is the typical way of creation of an MPI pattern.
+
global_size_type localToGlobal(const size_type localId) const
+
virtual ~MPIPatternP2P()=default
+
size_type d_numTargetProcs
Definition MPIPatternP2P.h:326
+
size_type getNumOwnedIndicesForTargetProc(const size_type procId) const
+
MPIPatternP2P(const size_type size)
Constructor. This constructor is to create an MPI Pattern for a serial case. This is provided so that...
+ +
const SizeTypeVector & getOwnedLocalIndicesForTargetProcs() const
+
SizeTypeVector d_flattenedLocalTargetIndices
Definition MPIPatternP2P.h:363
+
OptimizedIndexSet< global_size_type > d_ghostIndicesOptimizedIndexSet
Definition MPIPatternP2P.h:242
+
int d_myRank
Rank of the current processor.
Definition MPIPatternP2P.h:369
+
int d_nprocs
Number of processors in the MPI Communicator.
Definition MPIPatternP2P.h:366
+
const std::vector< size_type > & getGhostProcIds() const
+
std::pair< global_size_type, global_size_type > getLocallyOwnedRange() const
+
std::set< global_size_type > d_ghostIndicesSetSTL
Definition MPIPatternP2P.h:234
+
SizeTypeVector getOwnedLocalIndices(const size_type procId) const
+
size_type localOwnedSize() const
+
size_type d_numGhostProcs
Definition MPIPatternP2P.h:249
+
global_size_type d_nGlobalIndices
Definition MPIPatternP2P.h:374
+
const std::vector< size_type > & getTargetProcIds() const
+
const std::vector< size_type > & getNumOwnedIndicesForTargetProcs() const
+
size_type d_numGhostIndices
Definition MPIPatternP2P.h:223
+
bool isCompatible(const MPIPatternP2P< memorySpace > &rhs) const
+
SizeTypeVector d_flattenedLocalGhostIndices
Definition MPIPatternP2P.h:297
+
std::vector< size_type > d_targetProcIds
Definition MPIPatternP2P.h:333
+
std::vector< global_size_type > d_allOwnedRanges
Definition MPIPatternP2P.h:213
+
global_size_type nGlobalIndices() const
+
std::vector< size_type > d_numGhostIndicesInGhostProcs
Definition MPIPatternP2P.h:261
+
std::pair< global_size_type, global_size_type > d_locallyOwnedRange
Definition MPIPatternP2P.h:202
+
const std::vector< size_type > & getNumGhostIndicesInProcs() const
+ +
bool inLocallyOwnedRange(const global_size_type globalId) const
+
bool isGhostEntry(const global_size_type globalId) const
+
size_type localGhostSize() const
+
const MPI_Comm & mpiCommunicator() const
+
std::vector< size_type > d_numOwnedIndicesForTargetProcs
Definition MPIPatternP2P.h:341
+
std::vector< global_size_type > d_ghostIndices
Definition MPIPatternP2P.h:229
+
SizeTypeVector getGhostLocalIndices(const size_type procId) const
+
size_type d_numLocallyOwnedIndices
Definition MPIPatternP2P.h:218
+
std::vector< size_type > d_ghostProcIds
Definition MPIPatternP2P.h:255
+
std::vector< size_type > d_localGhostIndicesRanges
A vector of size 2 times the number of ghost processors to store the range of local ghost indices tha...
Definition MPIPatternP2P.h:319
+
MPI_Comm d_mpiComm
MPI Communicator object.
Definition MPIPatternP2P.h:377
+
const std::vector< global_size_type > & getGhostIndices() const
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
unsigned int size_type
Definition TypeConfig.h:6
+
unsigned long int global_size_type
Definition TypeConfig.h:7
+
+ + + + diff --git a/_m_p_i_requesters_base_8h.html b/_m_p_i_requesters_base_8h.html new file mode 100644 index 000000000..4f935b564 --- /dev/null +++ b/_m_p_i_requesters_base_8h.html @@ -0,0 +1,110 @@ + + + + + + + +DFT-FE: workspace/include/MPIRequestersBase.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
MPIRequestersBase.h File Reference
+
+
+
#include <TypeConfig.h>
+#include <vector>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::utils::mpi::MPIRequestersBase
 
+ + + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::utils
 
namespace  dftfe::utils::mpi
 
+
+ + + + diff --git a/_m_p_i_requesters_base_8h_source.html b/_m_p_i_requesters_base_8h_source.html new file mode 100644 index 000000000..69ff53e12 --- /dev/null +++ b/_m_p_i_requesters_base_8h_source.html @@ -0,0 +1,167 @@ + + + + + + + +DFT-FE: workspace/include/MPIRequestersBase.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MPIRequestersBase.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18/*
+
19 * @author Bikash Kanungo
+
20 */
+
21
+
22#ifndef dftfeMPIRequestersBase_h
+
23#define dftfeMPIRequestersBase_h
+
24#include <TypeConfig.h>
+
25#include <vector>
+
26namespace dftfe
+
27{
+
28 namespace utils
+
29 {
+
30 namespace mpi
+
31 {
+
+ +
33 {
+
34 /*
+
35 *
+
36 * @brief A pure virtual class to evaluate the list of rank Ids that the
+
37 * current processor needs to send data.
+
38 *
+
39 * In a typical case of distributed data (a vector or array), a
+
40 * processor needs to communicate part of its part of the data to a
+
41 * requesting processor. It is useful for the current processor to know
+
42 * apriori which processors it has to send its part of the distributed
+
43 * data. This base class provides an interface to indentify the Ids of
+
44 * the processors (also known as ranks) that it has to send data to. In
+
45 * MPI parlance, the other processors to which this processor needs to
+
46 * send data are termed as requesting processors/ranks.
+
47 *
+
48 * The actual process of identifying the list of requesting processors
+
49 * is implemented in the derived classes. There are various different
+
50 * algorithms with varying computational/communication complexity. Some
+
51 * use cases are trivial, for example, (a) a serial case where
+
52 * there are no requesting processors, (b) an all-to-all communication
+
53 * case where all the other processors are requesting from the
+
54 * current proccesor.
+
55 *
+
56 */
+
57
+
58 public:
+
59 virtual ~MPIRequestersBase() = default;
+
60 virtual std::vector<size_type>
+ +
62 };
+
+
63
+
64 } // end of namespace mpi
+
65 } // end of namespace utils
+
66} // end of namespace dftfe
+
67#endif // dftfeMPIRequestersBase_h
+ +
Definition MPIRequestersBase.h:33
+ +
virtual std::vector< size_type > getRequestingRankIds()=0
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_m_p_i_requesters_n_b_x_8h.html b/_m_p_i_requesters_n_b_x_8h.html new file mode 100644 index 000000000..17a2248c1 --- /dev/null +++ b/_m_p_i_requesters_n_b_x_8h.html @@ -0,0 +1,114 @@ + + + + + + + +DFT-FE: workspace/include/MPIRequestersNBX.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
MPIRequestersNBX.h File Reference
+
+
+
#include <mpi.h>
+#include <TypeConfig.h>
+#include <MPIRequestersBase.h>
+#include <vector>
+#include <set>
+#include <memory>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::utils::mpi::MPIRequestersNBX
 
+ + + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::utils
 
namespace  dftfe::utils::mpi
 
+
+ + + + diff --git a/_m_p_i_requesters_n_b_x_8h_source.html b/_m_p_i_requesters_n_b_x_8h_source.html new file mode 100644 index 000000000..ecf9fe595 --- /dev/null +++ b/_m_p_i_requesters_n_b_x_8h_source.html @@ -0,0 +1,389 @@ + + + + + + + +DFT-FE: workspace/include/MPIRequestersNBX.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MPIRequestersNBX.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18/*
+
19 * @author Bikash Kanungo, Sambit Das
+
20 */
+
21
+
22#ifndef dftfeMPIRequestersNBX_h
+
23#define dftfeMPIRequestersNBX_h
+
24
+
25#include <mpi.h>
+
26#include <TypeConfig.h>
+
27#include <MPIRequestersBase.h>
+
28#include <vector>
+
29#include <set>
+
30#include <memory>
+
31namespace dftfe
+
32{
+
33 namespace utils
+
34 {
+
35 namespace mpi
+
36 {
+
+ +
38 {
+
39 /*
+
40 * @brief Implements the Non-blocking Consensus (NBX) algorithm as
+
41 * described in the following paper to determine the list of requesting
+
42 * processors for the current processors
+
43 * @article{hoefler2010scalable,
+
44 * title={Scalable communication protocols for dynamic sparse data
+
45 * exchange}, author={Hoefler, Torsten and Siebert, Christian and
+
46 * Lumsdaine, Andrew}, journal={ACM Sigplan Notices}, volume={45},
+
47 * number={5},
+
48 * pages={159--168},
+
49 * year={2010},
+
50 * publisher={ACM New York, NY, USA}
+
51 * }
+
52 */
+
53
+
54 /*
+
55 * The following is a brief description of the typical use case
+
56 * situation. Each processor has a list of target processors to which it
+
57 * wants to send a message (think of it as a message to another
+
58 * processor to request some data that is owned by the other processor).
+
59 * Similarly, other processors might be requesting the current processor
+
60 * for some of the data owned by the current processor. However, the
+
61 * current processor has no apriori knowledge of which processors will
+
62 * be requesting data from it. The challenge is to utilize the current
+
63 * processor's list of target processors to determine the current
+
64 * processor's requesting processors. In other words, we have to use a
+
65 * one way communication information to figure out the other way (its
+
66 * dual).
+
67 *
+
68 * Perhaps a more concrete example might help. Let's say, we have a
+
69 * vector/array which is distributed across a set of processors.
+
70 * Each processors own part of the vector. The ownership is exclusive,
+
71 * i.e., a processor is the sole owner of its part of the vector.
+
72 * In practice, it means that the processor owns a set of indices of the
+
73 * vector. Additionally, the different sets of owning indices across all
+
74 * the processors are disjoint. Moreover, the union of the sets across
+
75 * all the processors gives the set of indices of the distributed
+
76 * vector. However, each processor also needs information on a set of
+
77 * non-owned indices (hereafter termed ghost indices) based on the needs
+
78 * of the application. Based on the ghost indices, the current processor
+
79 * can easily determine the processor where it is owned. These
+
80 * processors are termed as target processors to which the current
+
81 * processor has to send a request to access the ghost data. Similarly,
+
82 * the ghost indices in some other processor might be owned by this
+
83 * processor. In that case, the other processor will be sending a
+
84 * request to the current processor to access some of its data (data
+
85 * which is ghost to the other processor but owned by the current
+
86 * processor). But the current processor has no apriori knowledge of
+
87 * which processors will be requesting data from it. A knowledge of it
+
88 * will help the current processor to prepare for the request of data.
+
89 *
+
90 * In cases of sparse communication, that is, where each processor only
+
91 * needs to communicate with a small subset of the total number of
+
92 * processors, the NBX algorithm offers an algorithm of complexity
+
93 * O(log(P)) (where P is the number of processors) to determing the
+
94 * list of requesting processors. The algorithm works as follows:
+
95 *
+
96 * 1. The current processor sends nonblocking synchronous message
+
97 * (i.e., MPI_ISsend) to all its target processors. Remember that
+
98 * the current processor already has information about its target
+
99 * processors. Also, note that the status of the nonblocking
+
100 * synchronous send turns to "completed" only when a when
+
101 * the message has been received by a receiving processor. Let's
+
102 * call this operation as the "local-send", as we are sending
+
103 * requests to target processors that are locally known by the current
+
104 * processor.
+
105 *
+
106 * 2. The current processor keeps on doing nonblocking probe for
+
107 * incoming message (i.e., MPI_IProbe). The MPI_IProbe checks if there
+
108 * is an incoming message matching a given source and tag or not. The
+
109 * source is the index of the source processor sending the message and
+
110 * tag is an MPI_tag associated with exchange. It does not initiate any
+
111 * receive operation , it only verfies whether there is something to be
+
112 * received or not. For our purpose, we will use a wildcards
+
113 * MPI_ANY_SOURCE and MPI_ANY_TAG, as we just want to know if there is
+
114 * an incoming message or not. In the event that there is an incoming
+
115 * message (i.e., the MPI_IProbe's flag is true), we can extract the
+
116 * source processor from the status handle of the MPI_IProbe and append
+
117 * it to a list that stores the requesting processor IDs. Addtionally,
+
118 * in the event that there is an incoming messag, we call a non-blocking
+
119 * receive (i.e., MPI_IRecv) to initiate the actual
+
120 * reception of the incoming. The MPI_Recv, in turn, will complete
+
121 * the status of source processor's MPI_ISsend through which the
+
122 * incoming message was sent to the current processor. Thus, we
+
123 * achieve two things over here: we detected a requesting processor
+
124 * and we also signaled the requesting processor that we have received
+
125 * their message. But this is only job half-done. How do we tell the
+
126 * current processor to stop probing for incoming message? And how do
+
127 * inform all the processors involved that all the incoming messages
+
128 * across all the processors have been received? This kind of problem
+
129 * is what is called a Consensus Problem
+
130 * (https://en.wikipedia.org/wiki/Consensus_(computer_science)).
+
131 * The way to reach the consensus in NBX is a two-step process:
+
132 * (a) the current processor checks if all the "local-send"
+
133 * (see #1 above) has been received or not.
+
134 * That is, if the status handle of all its MPI_ISsend have turned
+
135 * to completed or not. If all the local"local-send" have been
+
136 * completed, we initiate a non-blocking barrier (i.e.,
+
137 * MPI_IBarrier) on the current processor. This informs the network that
+
138 * the current processor has witnessed its part of an event (in this
+
139 * case the event is the completion of all its "local-send"). (b) the
+
140 * above only informs the network that the all "local-send" of the
+
141 * current processor have been received. But the current processor
+
142 * can still have incoming messages to be receieved. Hence, the current
+
143 * processor keeps on probing and receiving incoming messages, until
+
144 * the non-blocking barrier (MPI_IBarrier) (as mentioned
+
145 * above in (a)) has been invoked by all the processors. This can be
+
146 * checked from the status handle of the MPI_IBarrier, which
+
147 * completes only when all processors call it.
+
148 * At a stage when the status of MPI_IBarrier turns to completed,
+
149 * we know for sure that all the "local-send" of all
+
150 * the processors have been received and that there are no more
+
151 * incoming messages in any processor to be received. Thus, we
+
152 * can now safely terminate the nonblocking probe on all processors.
+
153 *
+
154 *
+
155 *
+
156 * @note: Since we are only interested in knowing the requesting
+
157 * processors for the current processor, we only need token
+
158 * MPI sends and receives (e.g., just an integer across) instead
+
159 * of large chunks of data. To that end, we harcode all the send
+
160 * and receive buffers to be of integer type
+
161 */
+
162
+
163 public:
+
164 MPIRequestersNBX(const std::vector<size_type> &targetIDs,
+
165 const MPI_Comm & comm);
+
166 //
+
167 // default Constructor for serial (without MPI) compilation
+
168 //
+
169 MPIRequestersNBX() = default;
+
170
+
171 std::vector<size_type>
+ +
173
+
174 private:
+
175 /**
+
176 * List of processes this processor wants to send requests to.
+
177 */
+
178 std::vector<size_type> d_targetIDs;
+
179
+
180 /**
+
181 * Buffers for sending requests.
+
182 */
+
183 std::vector<int> d_sendBuffers;
+
184
+
185 /**
+
186 * Requests for sending requests.
+
187 */
+
188 std::vector<MPI_Request> d_sendRequests;
+
189
+
190 /**
+
191 * Buffers for receiving requests.
+
192 * We use a vector of pointers because that
+
193 * guarantees that the buffers themselves
+
194 * are never moved around in memory, even if the vector is
+
195 * resized and consequently its elements (the pointers) are moved
+
196 * around.
+
197 */
+
198 std::vector<std::unique_ptr<int>> d_recvBuffers;
+
199
+
200 /**
+
201 * Requests for receiving requests.
+
202 */
+
203 std::vector<std::unique_ptr<MPI_Request>> d_recvRequests;
+
204
+
205 //
+
206 // request for barrier
+
207 //
+ +
209
+
210 //
+
211 // MPI communicator
+
212 //
+ +
214
+
215 /**
+
216 * List of processes who have made a request to this process.
+
217 */
+
218 std::set<size_type> d_requestingProcesses;
+
219
+ + +
222
+
223 /**
+
224 * Check whether all of message sent from the current processor
+
225 * to other processors have been received or not
+
226 */
+
227 bool
+ +
229
+
230 /**
+
231 * Signal to all other processors that for this processor
+
232 * all its message sent to other processors have been received.
+
233 * This is done nonblocking barrier (i.e., MPI_IBarrier).
+
234 */
+
235 void
+ +
237
+
238 /**
+
239 * Check whether all of the incoming messages from other processors to
+
240 * the current processor have been received.
+
241 */
+
242 bool
+ +
244
+
245 /**
+
246 * Probe for an incoming message and if there is one receive it
+
247 */
+
248 void
+ +
250
+
251 /**
+
252 * Start to sending message to all the target processors
+
253 */
+
254 void
+ +
256
+
257 /**
+
258 * After all processors have received all the incoming messages,
+
259 * the MPI data structures can be freed and the received messages
+
260 * can be processed.
+
261 */
+
262 void
+ +
264 };
+
+
265
+
266 } // end of namespace mpi
+
267 } // end of namespace utils
+
268} // end of namespace dftfe
+
269#endif // dftfeMPIRequestersNBX_h
+ + +
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition MPIRequestersBase.h:33
+
Definition MPIRequestersNBX.h:38
+
std::vector< std::unique_ptr< MPI_Request > > d_recvRequests
Definition MPIRequestersNBX.h:203
+
std::set< size_type > d_requestingProcesses
Definition MPIRequestersNBX.h:218
+
MPIRequestersNBX(const std::vector< size_type > &targetIDs, const MPI_Comm &comm)
+ +
std::vector< MPI_Request > d_sendRequests
Definition MPIRequestersNBX.h:188
+
std::vector< size_type > getRequestingRankIds() override
+ +
std::vector< int > d_sendBuffers
Definition MPIRequestersNBX.h:183
+
const MPI_Comm & d_comm
Definition MPIRequestersNBX.h:213
+ +
int d_numProcessors
Definition MPIRequestersNBX.h:220
+
std::vector< size_type > d_targetIDs
Definition MPIRequestersNBX.h:178
+ + + +
std::vector< std::unique_ptr< int > > d_recvBuffers
Definition MPIRequestersNBX.h:198
+
MPI_Request d_barrierRequest
Definition MPIRequestersNBX.h:208
+
int d_myRank
Definition MPIRequestersNBX.h:221
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_m_p_i_tags_8h.html b/_m_p_i_tags_8h.html new file mode 100644 index 000000000..6bbaaa357 --- /dev/null +++ b/_m_p_i_tags_8h.html @@ -0,0 +1,120 @@ + + + + + + + +DFT-FE: workspace/include/MPITags.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
MPITags.h File Reference
+
+
+
#include <TypeConfig.h>
+#include <vector>
+#include <cstdint>
+#include <mpi.h>
+
+

Go to the source code of this file.

+ + + + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::utils
 
namespace  dftfe::utils::mpi
 
+ + + +

+Enumerations

enum class  dftfe::utils::mpi::MPITags : std::uint16_t {
+  dftfe::utils::mpi::DUMMY_MPI_TAG = 100 +, dftfe::utils::mpi::MPI_REQUESTERS_NBX_TAG +, dftfe::utils::mpi::MPI_P2P_PATTERN_TAG +, dftfe::utils::mpi::MPI_P2P_COMMUNICATOR_SCATTER_TAG +,
+  dftfe::utils::mpi::MPI_P2P_COMMUNICATOR_GATHER_TAG = MPI_P2P_COMMUNICATOR_SCATTER_TAG + 200 +
+ }
 
+
+ + + + diff --git a/_m_p_i_tags_8h_source.html b/_m_p_i_tags_8h_source.html new file mode 100644 index 000000000..486285c04 --- /dev/null +++ b/_m_p_i_tags_8h_source.html @@ -0,0 +1,153 @@ + + + + + + + +DFT-FE: workspace/include/MPITags.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MPITags.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18/*
+
19 * @author Bikash Kanungo, Sambit Das
+
20 */
+
21
+
22#ifndef dftfeMPITags_h
+
23#define dftfeMPITags_h
+
24
+
25#include <TypeConfig.h>
+
26#include <vector>
+
27#include <cstdint>
+
28
+
29#include <mpi.h>
+
30
+
31namespace dftfe
+
32{
+
33 namespace utils
+
34 {
+
35 namespace mpi
+
36 {
+
+
37 enum class MPITags : std::uint16_t
+
38 {
+
39 DUMMY_MPI_TAG = 100,
+ + +
42
+ +
44
+ +
46 };
+
+
47 } // end of namespace mpi
+
48 } // end of namespace utils
+
49} // end of namespace dftfe
+
50#endif // dftfeMPITags_h
+ +
MPITags
Definition MPITags.h:38
+ + + + + +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_m_p_i_write_on_file_8h.html b/_m_p_i_write_on_file_8h.html new file mode 100644 index 000000000..272b9e49b --- /dev/null +++ b/_m_p_i_write_on_file_8h.html @@ -0,0 +1,110 @@ + + + + + + + +DFT-FE: workspace/include/MPIWriteOnFile.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
MPIWriteOnFile.h File Reference
+
+
+
#include "CompositeData.h"
+#include <string>
+#include <vector>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::dftUtils::MPIWriteOnFile
 
+ + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::dftUtils
 Contains repeatedly used functions in the KSDFT calculations.
 
+
+ + + + diff --git a/_m_p_i_write_on_file_8h_source.html b/_m_p_i_write_on_file_8h_source.html new file mode 100644 index 000000000..e7bf5b00e --- /dev/null +++ b/_m_p_i_write_on_file_8h_source.html @@ -0,0 +1,142 @@ + + + + + + + +DFT-FE: workspace/include/MPIWriteOnFile.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MPIWriteOnFile.h
+
+
+Go to the documentation of this file.
1//
+
2// -------------------------------------------------------------------------------------
+
3//
+
4// Copyright (c) 2017-2023 The Regents of the University of Michigan and DFT-FE
+
5// authors.
+
6//
+
7// This file is part of the DFT-FE code.
+
8//
+
9// The DFT-FE code is free software; you can use it, redistribute
+
10// it, and/or modify it under the terms of the GNU Lesser General
+
11// Public License as published by the Free Software Foundation; either
+
12// version 2.1 of the License, or (at your option) any later version.
+
13// The full text of the license can be found in the file LICENSE at
+
14// the top level of the DFT-FE distribution.
+
15//
+
16// --------------------------------------------------------------------------------------
+
17//
+
18// @author nelrufus, vishal subramanian
+
19//
+
20
+
21#ifndef DFTFE_MPIWRITEONFILE_H
+
22#define DFTFE_MPIWRITEONFILE_H
+
23
+
24#include "CompositeData.h"
+
25#include <string>
+
26#include <vector>
+
27namespace dftfe
+
28{
+
29 namespace dftUtils
+
30 {
+
+ +
32 {
+
33 public:
+
34 static void
+
35 writeData(const std::vector<CompositeData *> &data,
+
36 const std::string & fileName,
+
37 const MPI_Comm & mpiComm);
+
38 };
+
+
39 } // namespace dftUtils
+
40} // namespace dftfe
+
41
+
42#endif // DFTFE_MPIWRITEONFILE_H
+ +
Definition MPIWriteOnFile.h:32
+
static void writeData(const std::vector< CompositeData * > &data, const std::string &fileName, const MPI_Comm &mpiComm)
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_memory_manager_8h.html b/_memory_manager_8h.html new file mode 100644 index 000000000..aea36441a --- /dev/null +++ b/_memory_manager_8h.html @@ -0,0 +1,111 @@ + + + + + + + +DFT-FE: workspace/include/MemoryManager.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
MemoryManager.h File Reference
+
+
+
#include <TypeConfig.h>
+#include <MemorySpaceType.h>
+#include <vector>
+
+

Go to the source code of this file.

+ + + + + + +

+Classes

class  dftfe::utils::MemoryManager< ValueType, memorySpace >
 
class  dftfe::utils::MemoryManager< ValueType, MemorySpace::HOST >
 
+ + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::utils
 
+
+ + + + diff --git a/_memory_manager_8h_source.html b/_memory_manager_8h_source.html new file mode 100644 index 000000000..c3b750bf0 --- /dev/null +++ b/_memory_manager_8h_source.html @@ -0,0 +1,189 @@ + + + + + + + +DFT-FE: workspace/include/MemoryManager.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MemoryManager.h
+
+
+Go to the documentation of this file.
1#ifndef dftfeMemoryManager_h
+
2#define dftfeMemoryManager_h
+
3
+
4#include <TypeConfig.h>
+
5#include <MemorySpaceType.h>
+
6#include <vector>
+
7
+
8namespace dftfe
+
9{
+
10 namespace utils
+
11 {
+
12 //
+
13 // MemoryManager
+
14 //
+
15 template <typename ValueType, MemorySpace memorySpace>
+
+ +
17 {
+
18 public:
+
19 static void
+
20 allocate(std::size_t size, ValueType **ptr);
+
21
+
22 static void
+ +
24
+
25 static void
+
26 set(std::size_t size, ValueType *ptr, ValueType val);
+
27 };
+
+
28
+
29 template <typename ValueType>
+
+ +
31 {
+
32 public:
+
33 static void
+
34 allocate(std::size_t size, ValueType **ptr);
+
35
+
36 static void
+ +
38
+
39 static void
+
40 set(std::size_t size, ValueType *ptr, ValueType val);
+
41 };
+
+
42
+
43#ifdef DFTFE_WITH_DEVICE
+
44 template <typename ValueType>
+ +
46 {
+
47 public:
+
48 static void
+
49 allocate(std::size_t size, ValueType **ptr);
+
50
+
51 static void
+ +
53
+
54 static void
+
55 set(std::size_t size, ValueType *ptr, ValueType val);
+
56 };
+
57
+
58
+
59 template <typename ValueType>
+
60 class MemoryManager<ValueType, MemorySpace::DEVICE>
+
61 {
+
62 public:
+
63 static void
+
64 allocate(std::size_t size, ValueType **ptr);
+
65
+
66 static void
+ +
68
+
69 static void
+
70 set(std::size_t size, ValueType *ptr, ValueType val);
+
71 };
+
72#endif // DFTFE_WITH_DEVICE
+
73 } // namespace utils
+
74
+
75} // namespace dftfe
+
76
+
77#endif
+ + +
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ +
static void allocate(std::size_t size, ValueType **ptr)
+
static void set(std::size_t size, ValueType *ptr, ValueType val)
+
Definition MemoryManager.h:17
+
static void deallocate(ValueType *ptr)
+
static void allocate(std::size_t size, ValueType **ptr)
+
static void set(std::size_t size, ValueType *ptr, ValueType val)
+
MemorySpace
Definition MemorySpaceType.h:33
+ + + +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_memory_space_type_8h.html b/_memory_space_type_8h.html new file mode 100644 index 000000000..9aadcbf88 --- /dev/null +++ b/_memory_space_type_8h.html @@ -0,0 +1,109 @@ + + + + + + + +DFT-FE: workspace/include/MemorySpaceType.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
MemorySpaceType.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::utils
 
+ + + +

+Enumerations

enum class  dftfe::utils::MemorySpace { dftfe::utils::HOST +, dftfe::utils::HOST_PINNED +, dftfe::utils::DEVICE + }
 
+
+ + + + diff --git a/_memory_space_type_8h_source.html b/_memory_space_type_8h_source.html new file mode 100644 index 000000000..1919db9e0 --- /dev/null +++ b/_memory_space_type_8h_source.html @@ -0,0 +1,141 @@ + + + + + + + +DFT-FE: workspace/include/MemorySpaceType.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MemorySpaceType.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16
+
17
+
18/*
+
19 * @author Ian C. Lin., Sambit Das
+
20 */
+
21
+
22#ifndef dftfeMemorySpaceType_h
+
23#define dftfeMemorySpaceType_h
+
24
+
25namespace dftfe
+
26{
+
27 namespace utils
+
28 {
+
29 //
+
30 // MemorySpace
+
31 //
+
+
32 enum class MemorySpace
+
33 {
+
34 HOST,
+ +
36 DEVICE
+
37 };
+
+
38 } // namespace utils
+
39} // namespace dftfe
+
40
+
41#endif // dftfeMemorySpaceType_h
+
MemorySpace
Definition MemorySpaceType.h:33
+ + + +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_memory_storage_8h.html b/_memory_storage_8h.html new file mode 100644 index 000000000..8bcf830fe --- /dev/null +++ b/_memory_storage_8h.html @@ -0,0 +1,118 @@ + + + + + + + +DFT-FE: workspace/include/MemoryStorage.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
MemoryStorage.h File Reference
+
+
+
#include <MemoryManager.h>
+#include <TypeConfig.h>
+#include <vector>
+#include "../utils/MemoryStorage.t.cc"
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::utils::MemoryStorage< ValueType, memorySpace >
 
+ + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::utils
 
+ + + + + +

+Functions

template<typename ValueType , utils::MemorySpace memorySpaceDst>
MemoryStorage< ValueType, memorySpaceDstdftfe::utils::memoryStorageFromSTL (const std::vector< ValueType > &src)
 Create a MemoryStorage object from an input C++ STL vector.
 
+
+ + + + diff --git a/_memory_storage_8h_source.html b/_memory_storage_8h_source.html new file mode 100644 index 000000000..30d7717fa --- /dev/null +++ b/_memory_storage_8h_source.html @@ -0,0 +1,658 @@ + + + + + + + +DFT-FE: workspace/include/MemoryStorage.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MemoryStorage.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16
+
17/*
+
18 * @author Ian C. Lin, Sambit Das.
+
19 */
+
20
+
21#ifndef dftfeMemoryStorage_h
+
22#define dftfeMemoryStorage_h
+
23
+
24#include <MemoryManager.h>
+
25#include <TypeConfig.h>
+
26#include <vector>
+
27namespace dftfe
+
28{
+
29 namespace utils
+
30 {
+
31 template <typename ValueType, dftfe::utils::MemorySpace memorySpace>
+
+ +
33 {
+
34 /**
+
35 * @brief A class template to provide an interface that can act similar to
+
36 * STL vectors but with different MemorySpace---
+
37 * HOST (cpu) , DEVICE (gpu), etc,.
+
38 *
+
39 * @tparam ValueType The underlying value type for the MemoryStorage
+
40 * (e.g., int, double, complex<double>, etc.)
+
41 * @tparam memorySpace The memory space in which the MemoryStorage needs
+
42 * to reside
+
43 *
+
44 */
+
45
+
46 //
+
47 // typedefs
+
48 //
+
49 public:
+ +
51 typedef ValueType * pointer;
+ +
53 typedef const ValueType &const_reference;
+ +
55 typedef const ValueType *const_iterator;
+
56
+
57 public:
+
58 MemoryStorage() = default;
+
59
+
60 /**
+
61 * @brief Copy constructor for a MemoryStorage
+
62 * @param[in] u MemoryStorage object to copy from
+
63 */
+ +
65
+
66 /**
+
67 * @brief Move constructor for a Vector
+
68 * @param[in] u Vector object to move from
+
69 */
+ +
71
+
72 /**
+
73 * @brief Constructor for Vector with size and initial value arguments
+
74 * @param[in] size size of the Vector
+
75 * @param[in] initVal initial value of elements of the Vector
+
76 */
+
77 explicit MemoryStorage(std::size_t size, ValueType initVal = 0);
+
78
+
79 /**
+
80 * @brief Destructor
+
81 */
+ +
83
+
84 /**
+
85 * @brief clear and set to d_data to nullptr
+
86 */
+
87 void
+ +
89
+
90
+
91 /**
+
92 * @brief Set all the entries to a given value
+
93 * @param[in] val The value to which the entries are to be set
+
94 */
+
95 void
+ +
97
+
98 /**
+
99 * @brief Return iterator pointing to the beginning of point
+
100 * data.
+
101 *
+
102 * @returns Iterator pointing to the beginning of Vector.
+
103 */
+ + +
106
+
107 /**
+
108 * @brief Return iterator pointing to the beginning of Vector
+
109 * data.
+
110 *
+
111 * @returns Constant iterator pointing to the beginning of
+
112 * Vector.
+
113 */
+ +
115 begin() const;
+
116
+
117 /**
+
118 * @brief Return iterator pointing to the end of Vector data.
+
119 *
+
120 * @returns Iterator pointing to the end of Vector.
+
121 */
+ + +
124
+
125 /**
+
126 * @brief Return iterator pointing to the end of Vector data.
+
127 *
+
128 * @returns Constant iterator pointing to the end of
+
129 * Vector.
+
130 */
+ +
132 end() const;
+
133
+
134
+
135 /**
+
136 * @brief Copy assignment operator
+
137 * @param[in] rhs the rhs Vector from which to copy
+
138 * @returns reference to the lhs Vector
+
139 */
+ + +
142
+
143
+
144 /**
+
145 * @brief Move assignment constructor
+
146 * @param[in] rhs the rhs Vector from which to move
+
147 * @returns reference to the lhs Vector
+
148 */
+ + +
151
+
152 /**
+
153 * @brief Operator to get a reference to a element of the Vector
+
154 * @param[in] i is the index to the element of the Vector
+
155 * @returns reference to the element of the Vector
+
156 * @throws exception if i >= size of the Vector
+
157 */
+
158 reference operator[](std::size_t i);
+
159
+
160 /**
+
161 * @brief Operator to get a const reference to a element of the Vector
+
162 * @param[in] i is the index to the element of the Vector
+
163 * @returns const reference to the element of the Vector
+
164 * @throws exception if i >= size of the Vector
+
165 */
+
166 const_reference operator[](std::size_t i) const;
+
167
+
168 void
+ +
170
+
171 /**
+
172 * @brief Deallocates and then resizes Vector with new size
+
173 * and initial value arguments
+
174 * @param[in] size size of the Vector
+
175 * @param[in] initVal initial value of elements of the Vector
+
176 */
+
177 void
+ +
179
+
180 /**
+
181 * @brief Returns the dimension of the Vector
+
182 * @returns size of the Vector
+
183 */
+
184 std::size_t
+
185 size() const;
+
186
+
187 /**
+
188 * @brief Return the raw pointer to the Vector
+
189 * @return pointer to data
+
190 */
+
191 ValueType *
+ +
193
+
194 /**
+
195 * @brief Return the raw pointer to the Vector without modifying the values
+
196 * @return pointer to const data
+
197 */
+ + +
200
+
201 /**
+
202 * @brief Copies the data to a MemoryStorage object in a different memory space.
+
203 * This provides a seamless interface to copy back and forth between
+
204 * memory spaces , including between the same memory spaces.
+
205 *
+
206 * @note The destination MemoryStorage must be pre-allocated appropriately
+
207 *
+
208 * @tparam memorySpaceDst memory space of the destination MemoryStorage
+
209 * @param[in] dstMemoryStorage reference to the destination
+
210 * MemoryStorage. It must be pre-allocated appropriately
+
211 * @param[out] dstMemoryStorage reference to the destination
+
212 * MemoryStorage with the data copied into it
+
213 * @throw utils::LengthError exception if the size of dstMemoryStorage is
+
214 * less than underlying MemoryStorage
+
215 */
+ +
217 void
+ +
219
+
220 /**
+
221 * @brief Copies the data to a MemoryStorage object in a different memory space.
+
222 * This provides a seamless interface to copy back and forth between
+
223 * memory spaces , including between the same memory spaces. This is a
+
224 * more granular version of the above copyTo function as it provides
+
225 * transfer from a specific portion of the source MemoryStorage to a
+
226 * specific portion of the destination MemoryStorage.
+
227 *
+
228 * @note The destination MemoryStorage must be pre-allocated appropriately
+
229 *
+
230 * @tparam memorySpaceDst memory space of the destination MemoryStorage
+
231 * @param[in] dstMemoryStorage reference to the destination
+
232 * MemoryStorage. It must be pre-allocated appropriately
+
233 * @param[in] N number of entries of the source MemoryStorage
+
234 * that needs to be copied to the destination MemoryStorage
+
235 * @param[in] srcOffset offset relative to the start of the source
+
236 * MemoryStorage from which we need to copy data
+
237 * @param[in] dstOffset offset relative to the start of the destination
+
238 * MemoryStorage to which we need to copy data
+
239 * @param[out] dstMemoryStorage reference to the destination
+
240 * MemoryStorage with the data copied into it
+
241 * @throw utils::LengthError exception if the size of dstMemoryStorage is
+
242 * less than N + dstOffset
+
243 * @throw utils::LengthError exception if the size of underlying
+
244 * MemoryStorage is less than N + srcOffset
+
245 */
+ +
247 void
+ +
249 const std::size_t N,
+
250 const std::size_t srcOffset,
+
251 const std::size_t dstOffset) const;
+
252
+
253 /**
+
254 * @brief Copies data from a MemoryStorage object in a different memory space.
+
255 * This provides a seamless interface to copy back and forth between
+
256 * memory spaces, including between the same memory spaces.
+
257 *
+
258 * @note The MemoryStorage must be pre-allocated appropriately
+
259 *
+
260 * @tparam memorySpaceSrc memory space of the source MemoryStorage
+
261 * from which to copy
+
262 * @param[in] srcMemoryStorage reference to the source
+
263 * MemoryStorage
+
264 * @throw utils::LengthError exception if the size of underlying
+
265 * MemoryStorage is less than size of srcMemoryStorage
+
266 */
+ +
268 void
+ + +
271
+
272 /**
+
273 * @brief Copies data from a MemoryStorage object in a different memory space.
+
274 * This provides a seamless interface to copy back and forth between
+
275 * memory spaces, including between the same memory spaces.
+
276 * This is a more granular version of the above copyFrom function as it
+
277 * provides transfer from a specific portion of the source MemoryStorage
+
278 * to a specific portion of the destination MemoryStorage.
+
279 *
+
280 * @note The MemoryStorage must be pre-allocated appropriately
+
281 *
+
282 * @tparam memorySpaceSrc memory space of the source MemoryStorage
+
283 * from which to copy
+
284 * @param[in] srcMemoryStorage reference to the source
+
285 * MemoryStorage
+
286 * @param[in] N number of entries of the source MemoryStorage
+
287 * that needs to be copied to the destination MemoryStorage
+
288 * @param[in] srcOffset offset relative to the start of the source
+
289 * MemoryStorage from which we need to copy data
+
290 * @param[in] dstOffset offset relative to the start of the destination
+
291 * MemoryStorage to which we need to copy data
+
292 * @throw utils::LengthError exception if the size of srcMemoryStorage is
+
293 * less than N + srcOffset
+
294 * @throw utils::LengthError exception if the size of underlying
+
295 * MemoryStorage is less than N + dstOffset
+
296 */
+ +
298 void
+ +
300 const std::size_t N,
+
301 const std::size_t srcOffset,
+
302 const std::size_t dstOffset);
+
303
+
304 /**
+
305 * @brief Copies the data to a memory pointed by a raw pointer
+
306 * This provides a seamless interface to copy back and forth between
+
307 * memory spaces, including between the same memory spaces.
+
308 *
+
309 * @note The destination pointer must be pre-allocated to be
+
310 * at least of the size of the MemoryStorage
+
311 *
+
312 * @tparam memorySpaceDst memory space of the destination pointer
+
313 * @param[in] dst pointer to the destination. It must be pre-allocated
+
314 * appropriately
+
315 * @param[out] dst pointer to the destination with the data copied into it
+
316 */
+ +
318 void
+ +
320
+
321 /**
+
322 * @brief Copies the data to a memory pointer by a raw pointer.
+
323 * This provides a seamless interface to copy back and forth between
+
324 * memory spaces , including between the same memory spaces. This is a
+
325 * more granular version of the above copyTo function as it provides
+
326 * transfer from a specific portion of the source MemoryStorage to a
+
327 * specific portion of the destination pointer.
+
328 *
+
329 * @note The destination pointer must be pre-allocated to be at least
+
330 * of the size N + dstOffset
+
331 *
+
332 * @tparam memorySpaceDst memory space of the destination pointer
+
333 * @param[in] dst pointer to the destination. It must be pre-allocated
+
334 * appropriately
+
335 * @param[in] N number of entries of the source MemoryStorage
+
336 * that needs to be copied to the destination pointer
+
337 * @param[in] srcOffset offset relative to the start of the source
+
338 * MemoryStorage from which we need to copy data
+
339 * @param[in] dstOffset offset relative to the start of the destination
+
340 * pointer to which we need to copy data
+
341 * @param[out] dst pointer to the destination with the data copied into it
+
342 * @throw utils::LengthError exception if the size of the MemoryStorage is
+
343 * less than N + srcOffset
+
344 */
+ +
346 void
+ +
348 const std::size_t N,
+
349 const std::size_t srcOffset,
+
350 const std::size_t dstOffset) const;
+
351
+
352 /**
+
353 * @brief Copies data from a memory pointed by a raw pointer into
+
354 * the MemoryStorage object.
+
355 * This provides a seamless interface to copy back and forth between
+
356 * memory spaces, including between the same memory spaces.
+
357 *
+
358 * @note The src pointer must point to a memory chunk that is at least the
+
359 * size of the MemoryStorage
+
360 *
+
361 * @tparam memorySpaceSrc memory space of the source pointer
+
362 * from which to copy
+
363 * @param[in] src pointer to the source memory
+
364 */
+ +
366 void
+ +
368
+
369 /**
+
370 * @brief Copies data from a memory pointer by a raw pointer into the MemoryStorage object.
+
371 * This provides a seamless interface to copy back and forth between
+
372 * memory spaces, including between the same memory spaces.
+
373 * This is a more granular version of the above copyFrom function as it
+
374 * provides transfer from a specific portion of the source memory
+
375 * to a specific portion of the destination MemoryStorage.
+
376 *
+
377 * @note The src pointer must point to a memory chunk that is at least
+
378 * the size of N + srcOffset
+
379 *
+
380 * @tparam memorySpaceSrc memory space of the source pointer
+
381 * from which to copy
+
382 * @param[in] src pointer to the source memory
+
383 * @param[in] N number of entries of the source pointer
+
384 * that needs to be copied to the destination MemoryStorage
+
385 * @param[in] srcOffset offset relative to the start of the source
+
386 * pointer from which we need to copy data
+
387 * @param[in] dstOffset offset relative to the start of the destination
+
388 * MemoryStorage to which we need to copy data
+
389 * @throw utils::LengthError exception if the size of the MemoryStorage is
+
390 * less than N + dstOffset
+
391 */
+ +
393 void
+ +
395 const std::size_t N,
+
396 const std::size_t srcOffset,
+
397 const std::size_t dstOffset);
+
398
+
399 /**
+
400 * @brief Copies the data to a C++ STL vector, which always resides in
+
401 * the CPU. This provides a seamless interface to copy from any memory
+
402 * space to a C++ STL vector, including the case where source memory space
+
403 * is HOST (i.e., it resides on the CPU)
+
404 *
+
405 * @param[in] dst reference to the destination C++ STL vector to which
+
406 * the data needs to be copied.
+
407 * @param[out] dst reference to the destination C++ STL vector with
+
408 * the data copied into it
+
409 * @note If the size of the dst vector is less than the the size of
+
410 * the underlying MemoryStorage, it will be resized. Thus, for performance
+
411 * reasons, it is recommened that the dst STL vector be pre-allocated
+
412 * appropriately.
+
413 */
+
414 void
+ +
416
+
417 /**
+
418 * @brief Copies the data to a C++ STL vector, which always resides in
+
419 * the CPU. This provides a seamless interface to copy from any memory
+
420 * space to a C++ STL vector, including the case where source memory space
+
421 * is HOST (i.e., it resides on the CPU).
+
422 * This is a more granular version of the above copyToSTL function as it
+
423 * provides transfer from a specific portion of the MemoryStorage
+
424 * to a specific portion of the destination STL vector.
+
425 *
+
426 * @param[in] dst reference to the destination C++ STL vector to which
+
427 * the data needs to be copied.
+
428 * @note If the size of the dst vector is less than the the size of
+
429 * the underlying memory storage, it will be resized. Thus, for
+
430 * performance reasons it is recommened to should be allocated
+
431 * appropriately.
+
432 * @param[in] N number of entries of the source MemoryStorage
+
433 * that needs to be copied to the destination pointer
+
434 * @param[in] srcOffset offset relative to the start of the source
+
435 * MemoryStorage from which we need to copy data
+
436 * @param[in] dstOffset offset relative to the start of the STL vector
+
437 * to which we need to copy data
+
438 * @param[out] dst reference to the destination C++ STL vector with
+
439 * the data copied into it
+
440 * @throw utils::LengthError exception if the size of the MemoryStorage is
+
441 * less than N + srcOffset
+
442 * @note If the size of the dst vector is less N + srcOffset, it will be resized.
+
443 * Thus, for performance reasons, it is recommened that the dst STL
+
444 * vector be allocated appropriately.
+
445 */
+
446 void
+ +
448 const std::size_t N,
+
449 const std::size_t srcOffset,
+
450 const std::size_t dstOffset) const;
+
451
+
452 /**
+
453 * @brief Copies data from a C++ STL vector to the MemoryStorage object,
+
454 * which always resides on a CPU. This provides a seamless interface to
+
455 * copy from any memory space, including the case where the same memory
+
456 * spaces is HOST(i.e., the MemoryStorage is on CPU).
+
457 *
+
458 * @param[in] src const reference to the source C++ STL vector from which
+
459 * the data needs to be copied.
+
460 *
+
461 * @throw utils::LengthError exception if the size of the MemoryStorage is
+
462 * less than the size of the src
+
463 */
+
464 void
+ +
466
+
467 /**
+
468 * @brief Copies data from a C++ STL vector to the MemoryStorage object,
+
469 * which always resides on a CPU. This provides a seamless interface to
+
470 * copy from any memory space, including the case where the same memory
+
471 * spaces is HOST(i.e., the MemoryStorage is on CPU). This is a more
+
472 * granular version of the above copyFromSTL function as it provides
+
473 * transfer from a specific portion of the source STL vector to to a
+
474 * specific portion of the destination MemoryStorage.
+
475 *
+
476 * @param[in] src const reference to the source C++ STL vector from which
+
477 * the data needs to be copied.
+
478 * @param[in] N number of entries of the source pointer
+
479 * that needs to be copied to the destination MemoryStorage
+
480 * @param[in] srcOffset offset relative to the start of the source STL
+
481 * vector from which we need to copy data
+
482 * @param[in] dstOffset offset relative to the start of the destination
+
483 * MemoryStorage to which we need to copy data
+
484 * @throw utils::LengthError exception if the size of src is less than
+
485 * N + srcOffset
+
486 * @throw utils::LengthError exception if the size of the MemoryStorage
+
487 * is less thant N + dstOffset
+
488 *
+
489 */
+
490 void
+ +
492 const std::size_t N,
+
493 const std::size_t srcOffset,
+
494 const std::size_t dstOffset);
+
495
+
496
+
497 private:
+
498 ValueType * d_data = nullptr;
+
499 std::size_t d_size = 0;
+
500 };
+
+
501
+
502 //
+
503 // helper functions
+
504 //
+
505
+
506 /**
+
507 * @brief Create a MemoryStorage object from an input C++ STL vector
+
508 * @param[in] src Input C++ STL vector from which the MemoryStorage
+
509 * object is to be created
+
510 * @return A MemoryStorage object containing the data in the input C++
+
511 * STL vector
+
512 * @tparam ValueType Datatype of the underlying data in MemoryStorage
+
513 * as well as C++ STL vector (e.g., int, double, float, complex<double>,
+
514 * etc)
+
515 * @tparam memorySpaceDst MemorySpace (e.g. HOST, DEVICE, HOST_PINNED, etc)
+
516 * where the output MemoryStorage object should reside
+
517 */
+ + + +
521
+
522 } // namespace utils
+
523} // end of namespace dftfe
+
524
+
525#include "../utils/MemoryStorage.t.cc"
+
526
+
527#endif
+ + +
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition MemoryStorage.h:33
+
const_iterator end() const
Return iterator pointing to the end of Vector data.
+
MemoryStorage & operator=(MemoryStorage &&rhs) noexcept
Move assignment constructor.
+
ValueType * iterator
Definition MemoryStorage.h:54
+
ValueType & reference
Definition MemoryStorage.h:52
+
void resize(std::size_t size, ValueType initVal=ValueType())
Deallocates and then resizes Vector with new size and initial value arguments.
+
const_iterator begin() const
Return iterator pointing to the beginning of Vector data.
+
std::size_t d_size
Definition MemoryStorage.h:499
+ +
void swap(MemoryStorage &rhs)
+
const_reference operator[](std::size_t i) const
Operator to get a const reference to a element of the Vector.
+
MemoryStorage(std::size_t size, ValueType initVal=0)
Constructor for Vector with size and initial value arguments.
+
iterator end()
Return iterator pointing to the end of Vector data.
+ +
std::size_t size() const
Returns the dimension of the Vector.
+
ValueType * d_data
Definition MemoryStorage.h:498
+
ValueType * pointer
Definition MemoryStorage.h:51
+
ValueType value_type
A class template to provide an interface that can act similar to STL vectors but with different Memor...
Definition MemoryStorage.h:50
+
void clear()
clear and set to d_data to nullptr
+
ValueType * data() noexcept
Return the raw pointer to the Vector.
+
const ValueType & const_reference
Definition MemoryStorage.h:53
+
reference operator[](std::size_t i)
Operator to get a reference to a element of the Vector.
+
void setValue(const ValueType val)
Set all the entries to a given value.
+
MemoryStorage(MemoryStorage &&u) noexcept
Move constructor for a Vector.
+
MemoryStorage & operator=(const MemoryStorage &rhs)
Copy assignment operator.
+
const ValueType * const_iterator
Definition MemoryStorage.h:55
+
void copyTo(MemoryStorage< ValueType, memorySpaceDst > &dstMemoryStorage) const
Copies the data to a MemoryStorage object in a different memory space. This provides a seamless inter...
+
iterator begin()
Return iterator pointing to the beginning of point data.
+
MemoryStorage(const MemoryStorage &u)
Copy constructor for a MemoryStorage.
+
void copyFrom(const MemoryStorage< ValueType, memorySpaceSrc > &srcMemoryStorage)
Copies data from a MemoryStorage object in a different memory space. This provides a seamless interfa...
+
MemorySpace
Definition MemorySpaceType.h:33
+
MemoryStorage< ValueType, memorySpaceDst > memoryStorageFromSTL(const std::vector< ValueType > &src)
Create a MemoryStorage object from an input C++ STL vector.
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_memory_transfer_8h.html b/_memory_transfer_8h.html new file mode 100644 index 000000000..bebc5d0d6 --- /dev/null +++ b/_memory_transfer_8h.html @@ -0,0 +1,111 @@ + + + + + + + +DFT-FE: workspace/include/MemoryTransfer.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
MemoryTransfer.h File Reference
+
+
+
#include <MemorySpaceType.h>
+#include <TypeConfig.h>
+#include "../utils/MemoryTransfer.t.cc"
+
+

Go to the source code of this file.

+ + + + + + +

+Classes

class  dftfe::utils::MemoryTransfer< memorySpaceDst, memorySpaceSrc >
 
class  dftfe::utils::MemoryTransfer< MemorySpace::HOST, MemorySpace::HOST >
 
+ + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::utils
 
+
+ + + + diff --git a/_memory_transfer_8h_source.html b/_memory_transfer_8h_source.html new file mode 100644 index 000000000..aedaba0f6 --- /dev/null +++ b/_memory_transfer_8h_source.html @@ -0,0 +1,241 @@ + + + + + + + +DFT-FE: workspace/include/MemoryTransfer.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MemoryTransfer.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16
+
17/*
+
18 * @author Ian C. Lin, Sambit Das
+
19 */
+
20
+
21#ifndef dftfeMemoryTransfer_h
+
22#define dftfeMemoryTransfer_h
+
23
+
24#include <MemorySpaceType.h>
+
25#include <TypeConfig.h>
+
26
+
27namespace dftfe
+
28{
+
29 namespace utils
+
30 {
+
31 template <MemorySpace memorySpaceDst, MemorySpace memorySpaceSrc>
+
+ +
33 {
+
34 public:
+
35 /**
+
36 * @brief Copy array from the memory space of source to the memory space of destination
+
37 * @param size the length of the array
+
38 * @param dst pointer to the destination
+
39 * @param src pointer to the source
+
40 */
+
41 template <typename ValueType>
+
42 static void
+
43 copy(std::size_t size, ValueType *dst, const ValueType *src);
+
44 };
+
+
45
+
46 template <>
+
+ +
48 {
+
49 public:
+
50 template <typename ValueType>
+
51 static void
+
52 copy(std::size_t size, ValueType *dst, const ValueType *src);
+
53 };
+
+
54
+
55#ifdef DFTFE_WITH_DEVICE
+
56 template <>
+ +
58 {
+
59 public:
+
60 template <typename ValueType>
+
61 static void
+
62 copy(std::size_t size, ValueType *dst, const ValueType *src);
+
63 };
+
64
+
65 template <>
+
66 class MemoryTransfer<MemorySpace::HOST, MemorySpace::DEVICE>
+
67 {
+
68 public:
+
69 template <typename ValueType>
+
70 static void
+
71 copy(std::size_t size, ValueType *dst, const ValueType *src);
+
72 };
+
73
+
74 template <>
+
75 class MemoryTransfer<MemorySpace::HOST_PINNED, MemorySpace::HOST>
+
76 {
+
77 public:
+
78 template <typename ValueType>
+
79 static void
+
80 copy(std::size_t size, ValueType *dst, const ValueType *src);
+
81 };
+
82
+
83 template <>
+ +
85 {
+
86 public:
+
87 template <typename ValueType>
+
88 static void
+
89 copy(std::size_t size, ValueType *dst, const ValueType *src);
+
90 };
+
91
+
92 template <>
+
93 class MemoryTransfer<MemorySpace::HOST_PINNED, MemorySpace::DEVICE>
+
94 {
+
95 public:
+
96 template <typename ValueType>
+
97 static void
+
98 copy(std::size_t size, ValueType *dst, const ValueType *src);
+
99 };
+
100
+
101 template <>
+
102 class MemoryTransfer<MemorySpace::DEVICE, MemorySpace::HOST>
+
103 {
+
104 public:
+
105 template <typename ValueType>
+
106 static void
+
107 copy(std::size_t size, ValueType *dst, const ValueType *src);
+
108 };
+
109
+
110 template <>
+
111 class MemoryTransfer<MemorySpace::DEVICE, MemorySpace::HOST_PINNED>
+
112 {
+
113 public:
+
114 template <typename ValueType>
+
115 static void
+
116 copy(std::size_t size, ValueType *dst, const ValueType *src);
+
117 };
+
118
+
119 template <>
+
120 class MemoryTransfer<MemorySpace::DEVICE, MemorySpace::DEVICE>
+
121 {
+
122 public:
+
123 template <typename ValueType>
+
124 static void
+
125 copy(std::size_t size, ValueType *dst, const ValueType *src);
+
126 };
+
127#endif // DFTFE_WITH_DEVICE
+
128 } // namespace utils
+
129} // namespace dftfe
+
130
+
131#include "../utils/MemoryTransfer.t.cc"
+
132
+
133#endif // dftfeMemoryTransfer_h
+ + +
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
static void copy(std::size_t size, ValueType *dst, const ValueType *src)
+
Definition MemoryTransfer.h:33
+
static void copy(std::size_t size, ValueType *dst, const ValueType *src)
Copy array from the memory space of source to the memory space of destination.
+
MemorySpace
Definition MemorySpaceType.h:33
+ + + +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_memory_transfer_kernels_device_8h.html b/_memory_transfer_kernels_device_8h.html new file mode 100644 index 000000000..4d06da2c5 --- /dev/null +++ b/_memory_transfer_kernels_device_8h.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: workspace/include/MemoryTransferKernelsDevice.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MemoryTransferKernelsDevice.h File Reference
+
+
+ +

Go to the source code of this file.

+
+ + + + diff --git a/_memory_transfer_kernels_device_8h_source.html b/_memory_transfer_kernels_device_8h_source.html new file mode 100644 index 000000000..44d2569b1 --- /dev/null +++ b/_memory_transfer_kernels_device_8h_source.html @@ -0,0 +1,154 @@ + + + + + + + +DFT-FE: workspace/include/MemoryTransferKernelsDevice.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MemoryTransferKernelsDevice.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16
+
17/*
+
18 * @author Sambit Das
+
19 */
+
20
+
21#ifndef dftfeMemoryTransferKernelsDevice_h
+
22#define dftfeMemoryTransferKernelsDevice_h
+
23
+
24#ifdef DFTFE_WITH_DEVICE
+
25# include <TypeConfig.h>
+
26
+
27namespace dftfe
+
28{
+
29 namespace utils
+
30 {
+
31 namespace memoryTransferKernelsDevice
+
32 {
+
33 /**
+
34 * @brief Copy array from device to host
+
35 * @param count The memory size in bytes of the array
+
36 */
+
37 void
+
38 deviceMemcpyD2H(void *dst, const void *src, std::size_t count);
+
39
+
40 /**
+
41 * @brief Copy array from device to device
+
42 * @param count The memory size in bytes of the array
+
43 */
+
44 void
+
45 deviceMemcpyD2D(void *dst, const void *src, std::size_t count);
+
46
+
47 /**
+
48 * @brief Copy array from host to device
+
49 * @param count The memory size in bytes of the array
+
50 */
+
51 void
+
52 deviceMemcpyH2D(void *dst, const void *src, std::size_t count);
+
53
+
54 }; // namespace memoryTransferKernelsDevice
+
55 } // namespace utils
+
56} // namespace dftfe
+
57
+
58#endif // DFTFE_WITH_DEVICE
+
59#endif // dftfeMemoryTransferKernels_h
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_multi_vector_8h.html b/_multi_vector_8h.html new file mode 100644 index 000000000..3e52507fd --- /dev/null +++ b/_multi_vector_8h.html @@ -0,0 +1,121 @@ + + + + + + + +DFT-FE: workspace/include/MultiVector.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
MultiVector.h File Reference
+
+
+
#include <TypeConfig.h>
+#include <MemoryStorage.h>
+#include <MPIPatternP2P.h>
+#include <MPICommunicatorP2P.h>
+#include <memory>
+#include <deal.II/lac/la_parallel_vector.h>
+#include "../src/linAlg/MultiVector.t.cc"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
 An class template to encapsulate a MultiVector. A MultiVector is a collection of $N$ vectors belonging to the same finite-dimensional vector space, where usual notion of vector size denotes the dimension of the vector space. Note that this in the mathematical sense and not in the sense of an multi-dimensional array.The MultiVector is stored contiguously with the vector index being the fastest index, or in other words a matrix of size $M \times N$ in row major format with $M $ denoting the dimension of the vector space (size of individual vector). More...
 
+ + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::linearAlgebra
 
+ + + + +

+Functions

template<typename ValueType , utils::MemorySpace memorySpace>
void dftfe::linearAlgebra::createMultiVectorFromDealiiPartitioner (const std::shared_ptr< const dealii::Utilities::MPI::Partitioner > &partitioner, const size_type numVectors, MultiVector< ValueType, memorySpace > &multiVector)
 
+
+ + + + diff --git a/_multi_vector_8h_source.html b/_multi_vector_8h_source.html new file mode 100644 index 000000000..9e0d079a5 --- /dev/null +++ b/_multi_vector_8h_source.html @@ -0,0 +1,698 @@ + + + + + + + +DFT-FE: workspace/include/MultiVector.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MultiVector.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18
+
19/*
+
20 * @author Sambit Das, Bikash Kanungo
+
21 */
+
22
+
23
+
24#ifndef dftfeMultiVector_h
+
25#define dftfeMultiVector_h
+
26
+
27#include <TypeConfig.h>
+
28#include <MemoryStorage.h>
+
29#include <MPIPatternP2P.h>
+
30#include <MPICommunicatorP2P.h>
+
31#include <memory>
+
32#include <deal.II/lac/la_parallel_vector.h>
+
33namespace dftfe
+
34{
+
35 namespace linearAlgebra
+
36 {
+
37 /**
+
38 * @brief An class template to encapsulate a MultiVector.
+
39 * A MultiVector is a collection of \f$N\f$ vectors belonging to the same
+
40 * finite-dimensional vector space, where usual notion of vector size
+
41 * denotes the dimension of the vector space. Note that this in the
+
42 * mathematical sense and not in the sense of an multi-dimensional array.The
+
43 * MultiVector is stored contiguously with the vector index being the
+
44 * fastest index, or in other words a matrix of size \f$M \times N\f$ in row
+
45 * major format with \f$M \f$ denoting the dimension of the vector space
+
46 * (size of individual vector).
+
47 *
+
48 * This class handles both serial and distributed MultiVector
+
49 * in a unfied way. There are different constructors provided for the
+
50 * serial and distributed case.
+
51 *
+
52 * The serial MultiVector, as the name suggests, resides entirely in a
+
53 * processor.
+
54 *
+
55 * The distributed MultiVector, on the other hand, is distributed across a
+
56 * set of processors. The storage of each of the \f$N\f$ vectors in the
+
57 * distributed MultiVector in a processor follows along similar lines to
+
58 * a distributed Vector object and comprises of two parts:
+
59 * 1. <b>locally owned part</b>: A part of the distribute MultiVector,
+
60 * defined through a contiguous range of indices \f$[a,b)\f$ (\f$a\f$ is
+
61 * included, but \f$b\f$ is not), for which the current processor is the
+
62 * sole owner. The size of the locally owned part (i.e., \f$b-a\f$) is
+
63 * termed as \e locallyOwnedSize. Note that the range of indices that
+
64 * comprises the locally owned part (i.e., \f$[a,b)\f$) is same for all the
+
65 * \f$N\f$ vectors in the MultiVector
+
66 * 2. <b>ghost part</b>: Part of the MultiVector, defined
+
67 * through a set of ghost indices, that are owned by other processors.
+
68 * The size of ghost indices for each vector is termed as \e ghostSize. Note
+
69 * that the set of indices that define the ghost indices are same for all
+
70 * the \f$N\f$ vectors in the MultiVector
+
71 *
+
72 * The global size of each vector in the distributed MultiVector
+
73 * (i.e., the number of unique indices across all the processors) is simply
+
74 * termed as \e size. Additionally, we define \e localSize = \e
+
75 * locallyOwnedSize + \e ghostSize.
+
76 *
+
77 * We handle the serial MultiVector as a special case of the distributed
+
78 * MultiVector, wherein \e size = \e locallyOwnedSize and \e ghostSize = 0.
+
79 *
+
80 * @note While typically one would link to an MPI library while compiling this class,
+
81 * care is taken to seamlessly allow usage of this class even while not
+
82 * linking to an MPI library. To do so, we have our own MPI wrappers that
+
83 * redirect to the MPI library's function calls and definitions while
+
84 * linking to an MPI library. While not linking to an MPI library, the MPI
+
85 * wrappers provide equivalent functions and definitions that mimic the MPI
+
86 * functions and definitions, albeit for a single processor. This allows the
+
87 * user of this class to seamlessly switch between linking and de-linking to
+
88 * an MPI library without any change in the code and with the expected
+
89 * behavior.
+
90 *
+
91 * @note Note that the case of not linking to an MPI library and the case of
+
92 * creating a serial mult-Vector are two independent things. One can still
+
93 * create a serial MultiVector while linking to an MPI library and
+
94 * running the code across multipe processors. That is, one can create a
+
95 * serial MultiVector in one or more than one of the set of processors used
+
96 * when running in parallel. Internally, we handle this by using
+
97 * MPI_COMM_SELF as our MPI_Comm for the serial MultiVector (i.e., the
+
98 * processor does self communication). However, while not linking to an MPI
+
99 * library (which by definition means running on a single processor), there
+
100 * is no notion of communication (neither with self nor with other
+
101 * processors). In such case, both serial and distributed mult-Vector mean
+
102 * the same thing and the MPI wrappers ensure the expected behavior (i.e.,
+
103 * the behavior of a MultiVector while using just one processor)
+
104 *
+
105 * @tparam template parameter ValueType defines underlying datatype being stored
+
106 * in the MultiVector (i.e., int, double, complex<double>, etc.)
+
107 * @tparam template parameter memorySpace defines the MemorySpace (i.e., HOST or
+
108 * DEVICE) in which the MultiVector must reside.
+
109 *
+
110 * @note Broadly, there are two ways of constructing a distributed MultiVector.
+
111 * 1. [<b>Prefered and efficient approach</b>] The first approach takes a
+
112 * pointer to an MPIPatternP2P as an input argument (along with other
+
113 * arguments). The MPIPatternP2P, in turn, contains all the information
+
114 * regarding the locally owned and ghost part of the MultiVector as well
+
115 * as the interaction map between processors. This is the most efficient way
+
116 * of constructing a distributed MultiVector as it allows for reusing of an
+
117 * already constructed MPIPatternP2P.
+
118 * 2. [<b> Expensive approach</b>] The second approach takes in the
+
119 * locally owned, ghost indices or the total number of indices
+
120 * across all the processors and internally creates an
+
121 * MPIPatternP2P object. Given that the creation of an MPIPatternP2P is
+
122 * expensive, this route of constructing a distributed MultiVector
+
123 * <b>should</b> be avoided.
+
124 */
+
125 template <typename ValueType, dftfe::utils::MemorySpace memorySpace>
+
+ +
127 {
+
128 public:
+
129 //
+
130 // typedefs
+
131 //
+ + +
134 using pointer = typename Storage::pointer;
+ + +
137 using iterator = typename Storage::iterator;
+ +
139
+
140 public:
+
141 /**
+
142 * @brief Default Constructor
+
143 */
+
144 MultiVector() = default;
+
145
+
146 /**
+
147 * @brief Default Destructor
+
148 */
+
149 ~MultiVector() = default;
+
150
+
151 /**
+
152 * @brief Constructor for \b serial MultiVector with vector size, number of vectors and initial value arguments
+
153 * @param[in] size size of each vector in the MultiVector
+
154 * @param[in] numVectors number of vectors in the MultiVector
+
155 * @param[in] initVal initial value of elements of the MultiVector
+
156 *
+
157 */
+ +
159 const size_type numVectors,
+
160 const ValueType initVal = 0);
+
161
+
162 /**
+
163 * @brief Constructor for a \serial MultiVector with a predefined
+
164 * MultiVector::Storage (i.e., utils::MemoryStorage).
+
165 * This constructor transfers the ownership of the input Storage to the
+
166 * MultiVector. This is useful when one does not want to allocate new
+
167 * memory and instead use memory allocated in the MultiVector::Storage
+
168 * (i.e., utils::MemoryStorage).
+
169 * The \e locallyOwnedSize, \e ghostSize, etc., are automatically set
+
170 * using the size of the input Storage object.
+
171 *
+
172 * @param[in] storage unique_ptr to MultiVector::Storage whose ownership
+
173 * is to be transfered to the MultiVector
+
174 * @param[in] numVectors number of vectors in the MultiVector
+
175 * @note This Constructor transfers the ownership from the input
+
176 * unique_ptr \p storage to the internal data member of the MultiVector.
+
177 * Thus, after the function call \p storage will point to NULL and any
+
178 * access through \p storage will lead to <b>undefined behavior</b>.
+
179 *
+
180 */
+ +
182 std::unique_ptr<typename MultiVector<ValueType, memorySpace>::Storage>
+
183 storage,
+ +
185
+
186 /**
+
187 * @brief Constructor for a \b distributed MultiVector based on an input MPIPatternP2P.
+
188 *
+
189 * @param[in] mpiPatternP2P A shared_ptr to const MPIPatternP2P
+
190 * based on which the distributed MultiVector will be created.
+
191 * @param[in] numVectors number of vectors in the MultiVector
+
192 * @param[in] initVal value with which the MultiVector shoud be
+
193 * initialized
+
194 */
+ +
196 mpiPatternP2P,
+
197 const size_type numVectors,
+
198 const ValueType initVal = 0);
+
199
+
200 /**
+
201 * @brief Constructor for a \b distributed MultiVector with a predefined
+
202 * MultiVector::Storage (i.e., utils::MemoryStorage) and MPIPatternP2P.
+
203 * This constructor transfers the ownership of the input Storage to the
+
204 * MultiVector. This is useful when one does not want to allocate new
+
205 * memory and instead use memory allocated in the input
+
206 * MultiVector::Storage (i.e., utils::MemoryStorage).
+
207 *
+
208 * @param[in] storage unique_ptr to MultiVector::Storage whose ownership
+
209 * is to be transfered to the MultiVector
+
210 * @param[in] mpiPatternP2P A shared_ptr to const MPIPatternP2P
+
211 * based on which the distributed MultiVector will be created.
+
212 * @param[in] numVectors number of vectors in the MultiVector
+
213 *
+
214 * @note This Constructor transfers the ownership from the input
+
215 * unique_ptr \p storage to the internal data member of the MultiVector.
+
216 * Thus, after the function call \p storage will point to NULL and any
+
217 * access through \p storage will lead to <b>undefined behavior</b>.
+
218 *
+
219 */
+ +
221 std::unique_ptr<typename MultiVector<ValueType, memorySpace>::Storage>
+
222 &storage,
+
223 std::shared_ptr<const utils::mpi::MPIPatternP2P<memorySpace>>
+
224 mpiPatternP2P,
+
225 const size_type numVectors);
+
226
+
227 /**
+
228 * @brief Constructor for a \distributed MultiVector based on locally
+
229 * owned and ghost indices.
+
230 * @note This way of construction is expensive. One should use the other
+
231 * constructor based on an input MPIPatternP2P as far as possible.
+
232 *
+
233 * @param[in] locallyOwnedRange a pair \f$(a,b)\f$ which defines a range
+
234 * of indices (continuous) that are owned by the current processor.
+
235 * @param[in] ghostIndices vector containing an ordered set of ghost
+
236 * indices (ordered in increasing order and non-repeating)
+
237 * @param[in] mpiComm MPI_Comm object associated with the group
+
238 * of processors across which the MultiVector is to be distributed
+
239 * @param[in] numVectors number of vectors in the MultiVector
+
240 * @param[in] initVal value with which the MultiVector shoud be
+
241 * initialized
+
242 *
+
243 * @note The locallyOwnedRange should be an open interval where the start
+
244 * index is included, but the end index is not included.
+
245 */
+ +
247 const std::pair<global_size_type, global_size_type> locallyOwnedRange,
+
248 const std::vector<global_size_type> & ghostIndices,
+
249 const MPI_Comm & mpiComm,
+
250 const size_type numVectors,
+
251 ValueType initVal = 0);
+
252
+
253 /**
+
254 * @brief Constructor for a special case of \b distributed MultiVector where none
+
255 * none of the processors have any ghost indices.
+
256 * @note This way of construction is expensive. One should use the other
+
257 * constructor based on an input MPIPatternP2P as far as possible.
+
258 *
+
259 * @param[in] locallyOwnedRange a pair \f$(a,b)\f$ which defines a range
+
260 * of indices (continuous) that are owned by the current processor.
+
261 * @param[in] mpiComm MPI_Comm object associated with the group
+
262 * of processors across which the MultiVector is to be distributed
+
263 * @param[in] numVectors number of vectors in the MultiVector
+
264 * @param[in] initVal value with which the MultiVector shoud be
+
265 * initialized
+
266 *
+
267 * @note The locallyOwnedRange should be an open interval where the start index included,
+
268 * but the end index is not included.
+
269 */
+ +
271 const std::pair<global_size_type, global_size_type> locallyOwnedRange,
+
272 const MPI_Comm & mpiComm,
+
273 const size_type numVectors,
+
274 const ValueType initVal = 0);
+
275
+
276
+
277 /**
+
278 * @brief Constructor for a \b distributed MultiVector based on total number of global indices.
+
279 * The resulting MultiVector will not contain any ghost indices on any of
+
280 * the processors. Internally, the vector is divided to ensure as much
+
281 * equitable distribution across all the processors much as possible.
+
282 * @note This way of construction is expensive. One should use the other
+
283 * constructor based on an input MPIPatternP2P as far as possible.
+
284 * Further, the decomposition is not compatible with other ways of
+
285 * distributed MultiVector construction.
+
286 * @param[in] globalSize Total number of global indices that is
+
287 * distributed over the processors.
+
288 * @param[in] mpiComm MPI_Comm object associated with the group
+
289 * of processors across which the MultiVector is to be distributed
+
290 * @param[in] numVectors number of vectors in the MultiVector
+
291 * @param[in] initVal value with which the MultiVector shoud be
+
292 * initialized
+
293 */
+ +
295 const MPI_Comm & mpiComm,
+
296 const size_type numVectors,
+
297 const ValueType initVal = 0);
+
298
+
299
+
300 /**
+
301 * @brief Copy constructor
+
302 * @param[in] u MultiVector object to copy from
+
303 */
+ +
305
+
306 /**
+
307 * @brief Copy constructor with reinitialisation
+
308 * @param[in] u MultiVector object to copy from
+
309 * @param[in] initVal Initial value of the MultiVector
+
310 */
+ +
312
+
313 /**
+
314 * @brief Move constructor
+
315 * @param[in] u MultiVector object to move from
+
316 */
+ +
318
+
319 /**
+
320 * @brief Copy assignment operator
+
321 * @param[in] u const reference to MultiVector object to copy
+
322 * from
+
323 * @return reference to this object after copying data from u
+
324 */
+ + +
327
+
328 /**
+
329 * @brief Move assignment operator
+
330 * @param[in] u const reference to MultiVector object to move
+
331 * from
+
332 * @return reference to this object after moving data from u
+
333 */
+ + +
336
+
337 /**
+
338 * @brief pointer swap
+
339 *
+
340 */
+
341 void
+ +
343
+
344 /**
+
345 * @brief reinit for a \b distributed MultiVector based on an input MPIPatternP2P.
+
346 *
+
347 * @param[in] mpiPatternP2P A shared_ptr to const MPIPatternP2P
+
348 * based on which the distributed MultiVector will be reinitialized.
+
349 * @param[in] numVectors number of vectors in the MultiVector
+
350 * @param[in] initVal value with which the MultiVector shoud be
+
351 * reinitialized
+
352 */
+
353 void
+ +
355 mpiPatternP2P,
+
356 const size_type numVectors,
+
357 const ValueType initVal = 0);
+
358
+
359 /**
+
360 * @brief reinit based on an input distributed MultiVector.
+
361 *
+
362 */
+
363 void
+ +
365
+
366
+
367 /**
+
368 * @brief Return iterator pointing to the beginning of MultiVector data.
+
369 *
+
370 * @returns Iterator pointing to the beginning of MultiVector.
+
371 */
+ + +
374
+
375 /**
+
376 * @brief Return iterator pointing to the beginning of MultiVector
+
377 * data.
+
378 *
+
379 * @returns Constant iterator pointing to the beginning of
+
380 * MultiVector.
+
381 */
+ +
383 begin() const;
+
384
+
385 /**
+
386 * @brief Return iterator pointing to the end of MultiVector data.
+
387 *
+
388 * @returns Iterator pointing to the end of MultiVector.
+
389 */
+ + +
392
+
393 /**
+
394 * @brief Return iterator pointing to the end of MultiVector data.
+
395 *
+
396 * @returns Constant iterator pointing to the end of
+
397 * MultiVector.
+
398 */
+ +
400 end() const;
+
401
+
402 /**
+
403 * @brief Return the raw pointer to the MultiVector data
+
404 * @return pointer to data
+
405 */
+
406 ValueType *
+ +
408
+
409 /**
+
410 * @brief Return the constant raw pointer to the MultiVector data
+
411 * @return pointer to const data
+
412 */
+
413 const ValueType *
+
414 data() const;
+
415
+
416
+
417 /**
+
418 * @brief Set all entries of the MultiVector to a given value
+
419 *
+
420 * @param[in] val The value to which the entries are to be set
+
421 */
+
422 void
+ +
424
+
425 template <typename ValueBaseType>
+
426 void
+ +
428
+
429 template <typename ValueBaseType>
+
430 void
+ +
432
+
433 template <typename ValueBaseType>
+
434 void
+ +
436
+
437 template <typename ValueBaseType1, typename ValueBaseType2>
+
438 void
+ + +
441 const MultiVector & u);
+
442
+
443 template <typename ValueBaseType1, typename ValueBaseType2>
+
444 void
+ + +
447 const MultiVector & u);
+
448
+
449 void
+ +
451
+
452 void
+ +
454
+
455 void
+ +
457
+
458 void
+ +
460
+
461 void
+ +
463
+
464 void
+ +
466
+
467 void
+ +
469
+
470 void
+ +
472
+
473 bool
+ +
475
+
476 std::shared_ptr<const utils::mpi::MPIPatternP2P<memorySpace>>
+ +
478
+
479 template <typename ValueBaseType>
+
480 void
+ +
482
+
483 void
+ + +
486
+
487
+ +
489 globalSize() const;
+ +
491 localSize() const;
+ + + +
495 ghostSize() const;
+ +
497 numVectors() const;
+
498
+
499 private:
+
500 std::unique_ptr<Storage> d_storage;
+ + + + + +
506 std::unique_ptr<utils::mpi::MPICommunicatorP2P<ValueType, memorySpace>>
+ +
508 std::shared_ptr<const utils::mpi::MPIPatternP2P<memorySpace>>
+ +
510 };
+
+
511
+
512 //
+
513 // helper functions
+
514 //
+
515 template <typename ValueType, utils::MemorySpace memorySpace>
+
516 void
+ +
518 const std::shared_ptr<const dealii::Utilities::MPI::Partitioner>
+
519 & partitioner,
+
520 const size_type numVectors,
+ +
522
+
523 } // end of namespace linearAlgebra
+
524} // end of namespace dftfe
+
525#include "../src/linAlg/MultiVector.t.cc"
+
526#endif // dftfeMultiVector_h
+ + + + +
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition MultiVector.h:127
+
void setValue(const ValueType val)
Set all entries of the MultiVector to a given value.
+
void updateGhostValuesBegin(const size_type communicationChannel=0)
+
std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > d_mpiPatternP2P
Definition MultiVector.h:509
+
MultiVector(const std::pair< global_size_type, global_size_type > locallyOwnedRange, const MPI_Comm &mpiComm, const size_type numVectors, const ValueType initVal=0)
Constructor for a special case of distributed MultiVector where none none of the processors have any ...
+
void setCommunicationPrecision(utils::mpi::communicationPrecision commPrecision)
+
typename Storage::const_reference const_reference
Definition MultiVector.h:136
+
bool isCompatible(const MultiVector< ValueType, memorySpace > &rhs) const
+
size_type d_numVectors
Definition MultiVector.h:505
+
std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > getMPIPatternP2P() const
+
void reinit(const MultiVector &u)
reinit based on an input distributed MultiVector.
+
void scale(const ValueBaseType val)
+
MultiVector(const size_type size, const size_type numVectors, const ValueType initVal=0)
Constructor for serial MultiVector with vector size, number of vectors and initial value arguments.
+
size_type d_ghostSize
Definition MultiVector.h:504
+
const_iterator end() const
Return iterator pointing to the end of MultiVector data.
+
std::unique_ptr< Storage > d_storage
Definition MultiVector.h:500
+
std::unique_ptr< utils::mpi::MPICommunicatorP2P< ValueType, memorySpace > > d_mpiCommunicatorP2P
Definition MultiVector.h:507
+
size_type d_locallyOwnedSize
Definition MultiVector.h:503
+
MultiVector(MultiVector &&u) noexcept
Move constructor.
+
const_iterator begin() const
Return iterator pointing to the beginning of MultiVector data.
+
MultiVector(std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P, const size_type numVectors, const ValueType initVal=0)
Constructor for a distributed MultiVector based on an input MPIPatternP2P.
+
typename Storage::iterator iterator
Definition MultiVector.h:137
+ +
size_type d_localSize
Definition MultiVector.h:501
+
void reinit(std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P, const size_type numVectors, const ValueType initVal=0)
reinit for a distributed MultiVector based on an input MPIPatternP2P.
+
void addAndScale(const ValueBaseType1 valScale, const ValueBaseType2 valAdd, const MultiVector &u)
+
const ValueType * data() const
Return the constant raw pointer to the MultiVector data.
+
MultiVector(const std::pair< global_size_type, global_size_type > locallyOwnedRange, const std::vector< global_size_type > &ghostIndices, const MPI_Comm &mpiComm, const size_type numVectors, ValueType initVal=0)
Constructor for a \distributed MultiVector based on locally owned and ghost indices.
+
~MultiVector()=default
Default Destructor.
+
iterator end()
Return iterator pointing to the end of MultiVector data.
+
global_size_type globalSize() const
+ +
void l2Norm(ValueBaseType *normVec) const
+
void scaleAndAdd(const ValueBaseType1 valScale, const ValueBaseType2 valAdd, const MultiVector &u)
+
MultiVector()=default
Default Constructor.
+ + +
void accumulateAddLocallyOwned(const size_type communicationChannel=0)
+
void updateGhostValues(const size_type communicationChannel=0)
+ +
void add(const ValueBaseType val, const MultiVector &u)
+
size_type locallyOwnedSize() const
+
typename Storage::const_iterator const_iterator
Definition MultiVector.h:138
+
ValueType * data()
Return the raw pointer to the MultiVector data.
+
void swap(MultiVector &u)
pointer swap
+
void add(const ValueBaseType *valVec, const MultiVector &u)
+
void dot(const MultiVector &u, ValueType *dotVec)
+
typename Storage::pointer pointer
Definition MultiVector.h:134
+
global_size_type d_globalSize
Definition MultiVector.h:502
+
void accumulateAddLocallyOwnedBegin(const size_type communicationChannel=0)
+
MultiVector(const global_size_type globalSize, const MPI_Comm &mpiComm, const size_type numVectors, const ValueType initVal=0)
Constructor for a distributed MultiVector based on total number of global indices....
+
MultiVector(std::unique_ptr< typename MultiVector< ValueType, memorySpace >::Storage > storage, size_type numVectors)
Constructor for a \serial MultiVector with a predefined MultiVector::Storage (i.e....
+
MultiVector & operator=(const MultiVector &u)
Copy assignment operator.
+
typename Storage::value_type value_type
Definition MultiVector.h:133
+
MultiVector(const MultiVector &u)
Copy constructor.
+
typename Storage::reference reference
Definition MultiVector.h:135
+
MultiVector(const MultiVector &u, const ValueType initVal=0)
Copy constructor with reinitialisation.
+
MultiVector(std::unique_ptr< typename MultiVector< ValueType, memorySpace >::Storage > &storage, std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P, const size_type numVectors)
Constructor for a distributed MultiVector with a predefined MultiVector::Storage (i....
+ +
MultiVector & operator=(MultiVector &&u)
Move assignment operator.
+
iterator begin()
Return iterator pointing to the beginning of MultiVector data.
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition MemoryStorage.h:33
+
ValueType * iterator
Definition MemoryStorage.h:54
+
ValueType & reference
Definition MemoryStorage.h:52
+
ValueType * pointer
Definition MemoryStorage.h:51
+
ValueType value_type
A class template to provide an interface that can act similar to STL vectors but with different Memor...
Definition MemoryStorage.h:50
+
const ValueType & const_reference
Definition MemoryStorage.h:53
+
const ValueType * const_iterator
Definition MemoryStorage.h:55
+
A class template to store the communication pattern (i.e., which entries/nodes to receive from which ...
Definition MPIPatternP2P.h:57
+
void createMultiVectorFromDealiiPartitioner(const std::shared_ptr< const dealii::Utilities::MPI::Partitioner > &partitioner, const size_type numVectors, MultiVector< ValueType, memorySpace > &multiVector)
+
communicationPrecision
Definition MPICommunicatorP2P.h:55
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_n_n_g_g_a_8h.html b/_n_n_g_g_a_8h.html new file mode 100644 index 000000000..edcc988c8 --- /dev/null +++ b/_n_n_g_g_a_8h.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: workspace/include/NNGGA.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
NNGGA.h File Reference
+
+
+ +

Go to the source code of this file.

+
+ + + + diff --git a/_n_n_g_g_a_8h_source.html b/_n_n_g_g_a_8h_source.html new file mode 100644 index 000000000..1c358d16f --- /dev/null +++ b/_n_n_g_g_a_8h_source.html @@ -0,0 +1,138 @@ + + + + + + + +DFT-FE: workspace/include/NNGGA.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
NNGGA.h
+
+
+Go to the documentation of this file.
1#ifndef NNGGA_H
+
2#define NNGGA_H
+
3#ifdef DFTFE_WITH_TORCH
+
4# include <string>
+
5# include <torch/torch.h>
+ +
7namespace dftfe
+
8{
+
9 class NNGGA
+
10 {
+
11 public:
+
12 NNGGA(std::string modelFileName,
+
13 const bool isSpinPolarized = false,
+
14 const excDensityPositivityCheckTypes densityPositivityCheckType =
+ +
16 ~NNGGA();
+
17 void
+
18 evaluateexc(const double * rho,
+
19 const double * sigma,
+
20 const unsigned int numPoints,
+
21 double * exc);
+
22 void
+
23 evaluatevxc(const double * rho,
+
24 const double * sigma,
+
25 const unsigned int numPoints,
+
26 double * exc,
+
27 double * dexc);
+
28
+
29 private:
+
30 std::string d_modelFilename;
+
31 std::string d_ptcFilename;
+
32 torch::jit::script::Module * d_model;
+
33 const bool d_isSpinPolarized;
+
34 double d_rhoTol;
+
35 double d_sThreshold;
+
36 const excDensityPositivityCheckTypes d_densityPositivityCheckType;
+
37 };
+
38} // namespace dftfe
+
39#endif
+
40#endif // NNGGA_H
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+ +
excDensityPositivityCheckTypes
Definition excDensityPositivityCheckTypes.h:6
+ +
+ + + + diff --git a/_n_n_l_d_a_8h.html b/_n_n_l_d_a_8h.html new file mode 100644 index 000000000..962490d59 --- /dev/null +++ b/_n_n_l_d_a_8h.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: workspace/include/NNLDA.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
NNLDA.h File Reference
+
+
+ +

Go to the source code of this file.

+
+ + + + diff --git a/_n_n_l_d_a_8h_source.html b/_n_n_l_d_a_8h_source.html new file mode 100644 index 000000000..df9ca55d8 --- /dev/null +++ b/_n_n_l_d_a_8h_source.html @@ -0,0 +1,133 @@ + + + + + + + +DFT-FE: workspace/include/NNLDA.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
NNLDA.h
+
+
+Go to the documentation of this file.
1#ifndef NNLDA_H
+
2#define NNLDA_H
+
3#ifdef DFTFE_WITH_TORCH
+
4# include <string>
+
5# include <torch/torch.h>
+ +
7namespace dftfe
+
8{
+
9 class NNLDA
+
10 {
+
11 public:
+
12 NNLDA(std::string modelFileName,
+
13 const bool isSpinPolarized = false,
+
14 const excDensityPositivityCheckTypes densityPositivityCheckType =
+ +
16 const double rhoTol = 1.0e-8);
+
17 ~NNLDA();
+
18 void
+
19 evaluateexc(const double *rho, const unsigned int numPoints, double *exc);
+
20 void
+
21 evaluatevxc(const double * rho,
+
22 const unsigned int numPoints,
+
23 double * exc,
+
24 double * vxc);
+
25
+
26 private:
+
27 std::string d_modelFileName;
+
28 torch::jit::script::Module * d_model;
+
29 const bool d_isSpinPolarized;
+
30 const double d_rhoTol;
+
31 const excDensityPositivityCheckTypes d_densityPositivityCheckType;
+
32 };
+
33} // namespace dftfe
+
34#endif
+
35#endif // NNLDA_H
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+ +
excDensityPositivityCheckTypes
Definition excDensityPositivityCheckTypes.h:6
+ +
+ + + + diff --git a/_optimized_index_set_8h.html b/_optimized_index_set_8h.html new file mode 100644 index 000000000..91418de00 --- /dev/null +++ b/_optimized_index_set_8h.html @@ -0,0 +1,110 @@ + + + + + + + +DFT-FE: workspace/include/OptimizedIndexSet.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
OptimizedIndexSet.h File Reference
+
+
+
#include <TypeConfig.h>
+#include <set>
+#include <vector>
+#include "../utils/OptimizedIndexSet.t.cc"
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::utils::OptimizedIndexSet< T >
 
+ + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::utils
 
+
+ + + + diff --git a/_optimized_index_set_8h_source.html b/_optimized_index_set_8h_source.html new file mode 100644 index 000000000..d9f350ebd --- /dev/null +++ b/_optimized_index_set_8h_source.html @@ -0,0 +1,195 @@ + + + + + + + +DFT-FE: workspace/include/OptimizedIndexSet.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
OptimizedIndexSet.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18/*
+
19 * @author Bikash Kanungo
+
20 */
+
21#ifndef dftfeOptimizedIndexSet_h
+
22#define dftfeOptimizedIndexSet_h
+
23
+
24#include <TypeConfig.h>
+
25#include <set>
+
26#include <vector>
+
27namespace dftfe
+
28{
+
29 namespace utils
+
30 {
+
31 /*
+
32 * @brief Class to create an optimized index set which
+
33 * creates contiguous sub-ranges within an index set for faster
+
34 * search operation. This is useful when the number of contiguous sub-ranges
+
35 * are fewer compared to the size of the index set. If the number of
+
36 * contiguous sub-ranges competes with the size of the index set (i.e., the
+
37 * index set is very random) then it default to the behavior of an std::set.
+
38 *
+
39 * @tparam ValueType The data type of the indices (e.g., unsigned int, unsigned long int)
+
40 */
+
41
+
42 template <typename T>
+
+ +
44 {
+
45 public:
+
46 /**
+
47 * @brief Constructor
+
48 *
+
49 * @param[in] inputSet A set of unsigned int or unsigned long int
+
50 * for which an OptimizedIndexSet is to be created
+
51 */
+
52 OptimizedIndexSet(const std::set<T> &inputSet = std::set<T>());
+
53 ~OptimizedIndexSet() = default;
+
54
+
55 void
+
56 getPosition(const T &index, size_type &pos, bool &found) const;
+
57
+
58 bool
+ +
60
+
61
+
62 private:
+
63 /// Store the number of contiguous ranges in the input set of indices
+ +
65
+
66 /*
+
67 * Vector of size 2*(d_numContiguousRanges in d_set).
+
68 * The entries are arranged as:
+
69 * <contiguous range1 startId> <continguous range1 endId> <contiguous
+
70 * range2 startId> <continguous range2 endId> ... NOTE: The endId is one
+
71 * past the lastId in the continguous range
+
72 */
+
73 std::vector<T> d_contiguousRanges;
+
74
+
75 /// Vector of size d_numContiguousRanges which stores the accumulated
+
76 /// number of elements in d_set prior to the i-th contiguous range
+
77 std::vector<size_type> d_numEntriesBefore;
+
78
+
79 bool
+ +
81 };
+
+
82
+
83 } // end of namespace utils
+
84
+
85} // end of namespace dftfe
+
86#include "../utils/OptimizedIndexSet.t.cc"
+
87#endif // dftfeOptimizedSet_h
+ +
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition OptimizedIndexSet.h:44
+
size_type d_numContiguousRanges
Store the number of contiguous ranges in the input set of indices.
Definition OptimizedIndexSet.h:64
+
std::vector< size_type > d_numEntriesBefore
Definition OptimizedIndexSet.h:77
+
bool getPosition(const OptimizedIndexSet< T > &rhs) const
+
bool operator==(const OptimizedIndexSet< T > &rhs) const
+ +
std::vector< T > d_contiguousRanges
Definition OptimizedIndexSet.h:73
+
void getPosition(const T &index, size_type &pos, bool &found) const
+
OptimizedIndexSet(const std::set< T > &inputSet=std::set< T >())
Constructor.
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
unsigned int size_type
Definition TypeConfig.h:6
+
+ + + + diff --git a/_periodic_table_8h.html b/_periodic_table_8h.html new file mode 100644 index 000000000..e518ef8be --- /dev/null +++ b/_periodic_table_8h.html @@ -0,0 +1,118 @@ + + + + + + + +DFT-FE: workspace/include/PeriodicTable.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
PeriodicTable.h File Reference
+
+
+ +

stores a map between atomic number and atomic symbol and atomic mass +More...

+
#include <map>
+#include <string>
+#include <vector>
+
+

Go to the source code of this file.

+ + + + + + +

+Classes

struct  dftfe::pseudoUtils::Element
 
class  dftfe::pseudoUtils::PeriodicTable
 
+ + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::pseudoUtils
 wrapper to convert pseudopotential file from upf to dftfe format and returns the nonlinear core correction flag
 
+

Detailed Description

+

stores a map between atomic number and atomic symbol and atomic mass

+
Author
Phani Motamarri
+
+ + + + diff --git a/_periodic_table_8h_source.html b/_periodic_table_8h_source.html new file mode 100644 index 000000000..0d8ba407b --- /dev/null +++ b/_periodic_table_8h_source.html @@ -0,0 +1,198 @@ + + + + + + + +DFT-FE: workspace/include/PeriodicTable.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
PeriodicTable.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17// @author Phani Motamarri
+
18//
+
19
+
20#ifndef PERIODICTABLE_H
+
21#define PERIODICTABLE_H
+
22
+
23#include <map>
+
24#include <string>
+
25#include <vector>
+
26
+
27namespace dftfe
+
28{
+
29 //
+
30 // Declare pseudoUtils function
+
31 //
+
32
+
33 /** @file PeriodicTable.h
+
34 * @brief stores a map between atomic number and atomic symbol and atomic mass
+
35 *
+
36 *
+
37 * @author Phani Motamarri
+
38 */
+
39 namespace pseudoUtils
+
40 {
+
+
41 struct Element
+
42 {
+
43 int z;
+
44 std::string symbol;
+
45 std::string config;
+
46 double mass;
+
+
47 Element(int zz, std::string s, std::string c, double m)
+
48 : z(zz)
+
49 , symbol(s)
+
50 , config(c)
+
51 , mass(m)
+
52 {}
+
+
53 };
+
+
54
+
+ +
56 {
+
57 private:
+
58 std::vector<Element> ptable;
+
59 std::map<std::string, int> zmap;
+
60
+
61 public:
+ +
63 int
+
64 z(std::string symbol) const;
+
65 std::string
+
66 symbol(int zval) const;
+
67 std::string
+
68 configuration(int zval) const;
+
69 std::string
+
70 configuration(std::string symbol) const;
+
71 double
+
72 mass(int zval) const;
+
73 double
+
74 mass(std::string symbol) const;
+
75 int
+
76 size(void) const;
+
77 };
+
+
78 } // namespace pseudoUtils
+
79} // namespace dftfe
+
80#endif
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition PeriodicTable.h:56
+
double mass(int zval) const
+
std::vector< Element > ptable
Definition PeriodicTable.h:58
+ +
std::string symbol(int zval) const
+
std::string configuration(int zval) const
+
std::string configuration(std::string symbol) const
+
std::map< std::string, int > zmap
Definition PeriodicTable.h:59
+
int z(std::string symbol) const
+ +
double mass(std::string symbol) const
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
Definition PeriodicTable.h:42
+
int z
Definition PeriodicTable.h:43
+
std::string config
Definition PeriodicTable.h:45
+
double mass
Definition PeriodicTable.h:46
+
std::string symbol
Definition PeriodicTable.h:44
+
Element(int zz, std::string s, std::string c, double m)
Definition PeriodicTable.h:47
+
+ + + + diff --git a/_quad_data_composite_write_8h.html b/_quad_data_composite_write_8h.html new file mode 100644 index 000000000..04b6d21a0 --- /dev/null +++ b/_quad_data_composite_write_8h.html @@ -0,0 +1,109 @@ + + + + + + + +DFT-FE: workspace/include/QuadDataCompositeWrite.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
QuadDataCompositeWrite.h File Reference
+
+
+
#include "CompositeData.h"
+#include <vector>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::dftUtils::QuadDataCompositeWrite
 
+ + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::dftUtils
 Contains repeatedly used functions in the KSDFT calculations.
 
+
+ + + + diff --git a/_quad_data_composite_write_8h_source.html b/_quad_data_composite_write_8h_source.html new file mode 100644 index 000000000..4a56c40bd --- /dev/null +++ b/_quad_data_composite_write_8h_source.html @@ -0,0 +1,138 @@ + + + + + + + +DFT-FE: workspace/include/QuadDataCompositeWrite.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
QuadDataCompositeWrite.h
+
+
+Go to the documentation of this file.
1
+
2#ifndef DFTFE_QuadDataCompositeWrite_H
+
3#define DFTFE_QuadDataCompositeWrite_H
+
4
+
5#include "CompositeData.h"
+
6#include <vector>
+
7
+
8namespace dftfe
+
9{
+
10 namespace dftUtils
+
11 {
+
+ +
13 {
+
14 public:
+
15 QuadDataCompositeWrite(const std::vector<double> &vals);
+
16
+
17 virtual void
+
18 getCharArray(char *data) override;
+
19
+
20 virtual void
+ +
22
+
23 virtual int
+ +
25
+
26 private:
+
27 unsigned int d_charspernum;
+
28 std::vector<double> d_vals;
+
29 };
+
+
30 } // namespace dftUtils
+
31} // namespace dftfe
+
32#endif // DFTFE_QuadDataCompositeWrite_H
+ +
Definition CompositeData.h:31
+
Definition QuadDataCompositeWrite.h:13
+
std::vector< double > d_vals
Definition QuadDataCompositeWrite.h:28
+
virtual void getCharArray(char *data) override
+
unsigned int d_charspernum
Definition QuadDataCompositeWrite.h:27
+
virtual void getMPIDataType(MPI_Datatype *mpi_datatype) override
+
QuadDataCompositeWrite(const std::vector< double > &vals)
+
virtual int getNumberCharsPerCompositeData() override
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/_r_e_a_d_m_e_8md.html b/_r_e_a_d_m_e_8md.html new file mode 100644 index 000000000..63ef01a75 --- /dev/null +++ b/_r_e_a_d_m_e_8md.html @@ -0,0 +1,84 @@ + + + + + + + +DFT-FE: workspace/README.md File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+
workspace/README.md File Reference
+
+
+
+ + + + diff --git a/_type_config_8h.html b/_type_config_8h.html new file mode 100644 index 000000000..3e3a62200 --- /dev/null +++ b/_type_config_8h.html @@ -0,0 +1,106 @@ + + + + + + + +DFT-FE: workspace/include/TypeConfig.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
TypeConfig.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Namespaces

namespace  dftfe
 
+ + + + + +

+Typedefs

using dftfe::size_type = unsigned int
 
using dftfe::global_size_type = unsigned long int
 
+
+ + + + diff --git a/_type_config_8h_source.html b/_type_config_8h_source.html new file mode 100644 index 000000000..5defae1e9 --- /dev/null +++ b/_type_config_8h_source.html @@ -0,0 +1,104 @@ + + + + + + + +DFT-FE: workspace/include/TypeConfig.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
TypeConfig.h
+
+
+Go to the documentation of this file.
1#ifndef dftfeTypeConfig_h
+
2#define dftfeTypeConfig_h
+
3
+
4namespace dftfe
+
5{
+
6 using size_type = unsigned int;
+
7 using global_size_type = unsigned long int;
+
8} // namespace dftfe
+
9#endif
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/annotated.html b/annotated.html new file mode 100644 index 000000000..307deeb94 --- /dev/null +++ b/annotated.html @@ -0,0 +1,177 @@ + + + + + + + +DFT-FE: Class List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Ndftfe
+
+
+ + + + diff --git a/bc_s.png b/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/bc_sd.png b/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/cg_p_r_p_non_linear_solver_8h.html b/cg_p_r_p_non_linear_solver_8h.html new file mode 100644 index 000000000..f31029433 --- /dev/null +++ b/cg_p_r_p_non_linear_solver_8h.html @@ -0,0 +1,106 @@ + + + + + + + +DFT-FE: workspace/include/cgPRPNonLinearSolver.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
cgPRPNonLinearSolver.h File Reference
+
+
+
#include "nonLinearSolver.h"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::cgPRPNonLinearSolver
 Concrete class implementing Polak-Ribiere-Polyak Conjugate Gradient non-linear algebraic solver. More...
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/cg_p_r_p_non_linear_solver_8h_source.html b/cg_p_r_p_non_linear_solver_8h_source.html new file mode 100644 index 000000000..f197cd4e1 --- /dev/null +++ b/cg_p_r_p_non_linear_solver_8h_source.html @@ -0,0 +1,429 @@ + + + + + + + +DFT-FE: workspace/include/cgPRPNonLinearSolver.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
cgPRPNonLinearSolver.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#ifndef CGPRPNonLinearSolver_h
+
19#define CGPRPNonLinearSolver_h
+
20
+
21
+
22#include "nonLinearSolver.h"
+
23
+
24namespace dftfe
+
25{
+
26 /**
+
27 * @brief Concrete class implementing Polak-Ribiere-Polyak Conjugate Gradient non-linear
+
28 * algebraic solver.
+
29 *
+
30 * @author Sambit Das
+
31 */
+
+ +
33 {
+
34 public:
+
35 /**
+
36 * @brief Constructor.
+
37 *
+
38 * @param maxNumberIterations Maximum number of iterations.
+
39 * @param debugLevel Debug output level:
+
40 * 0 - no debug output
+
41 * 1 - limited debug output
+
42 * 2 - all debug output.
+
43 * @param lineSearchTolerance Tolereance required for line search
+
44 * convergence.
+
45 * @param lineSearchMaxIterations Maximum number of iterations for the
+
46 * line search.
+
47 * @param lineSearchDampingParameter scales the initial line search step
+
48 */
+ +
50 const unsigned int maxNumberIterations,
+
51 const unsigned int debugLevel,
+
52 const MPI_Comm & mpi_comm_parent,
+
53 const double lineSearchTolerance = 1.0e-6,
+
54 const unsigned int lineSearchMaxIterations = 10,
+
55 const double lineSeachDampingParameter = 1.0,
+
56 const double maxIncrementSolLinf = 1e+6,
+
57 const bool isCurvatureOnlyLineSearchStoppingCondition = false);
+
58
+
59 /**
+
60 * @brief Destructor.
+
61 */
+ +
63
+
64 /**
+
65 * @brief Solve non-linear problem using Polak-Ribiere-Polyak nonlinar conjugate gradient method.
+
66 *
+
67 * @param problem[in] nonlinearSolverProblem object.
+
68 * @param checkpointFileName[in] if string is non-empty, creates checkpoint file
+
69 * named checkpointFileName for every nonlinear iteration. If restart is set
+
70 * to true, checkpointFileName must match the name of the checkpoint file.
+
71 * Empty string will throw an error.
+
72 * @param restart[in] boolean specifying whether this is a restart solve using the checkpoint file
+
73 * specified by checkpointFileName.
+
74 * @return Return value indicating success or failure.
+
75 */
+ + +
78 const std::string checkpointFileName = "",
+
79 const bool restart = false);
+
80
+
81
+
82 /**
+
83 * @brief Create checkpoint file for current state of the cg solver.
+
84 *
+
85 */
+
86 void
+
87 save(const std::string &checkpointFileName);
+
88
+
89
+
90 private:
+
91 /**
+
92 * @brief Initialize direction.
+
93 */
+
94 void
+ +
96
+
97 /**
+
98 * @brief Perform line search.
+
99 *
+
100 * @param problem nonlinearSolverProblem object (functor) to compute energy and
+
101 * forces.
+
102 * @param tolerance Tolerance (relative) required for convergence.
+
103 * @param maxNumberIterations Maximum number of iterations.
+
104 * @param debugLevel Debug output level:
+
105 * 0 - no debug output
+
106 * 1 - limited debug output
+
107 * 2 - all debug output.
+
108 *
+
109 * @return Return value indicating success or failure.
+
110 */
+ + +
113 const double tolerance,
+
114 const unsigned int maxNumberIterations,
+
115 const unsigned int debugLevel,
+
116 const std::string checkpointFileName = "",
+
117 const int startingIter = -1,
+
118 const bool isCheckpointRestart = false);
+
119
+
120 /**
+
121 * @brief Compute delta_d and eta_p.
+
122 *
+
123 * @return Pair containing delta_d and eta_p.
+
124 */
+
125 std::pair<double, double>
+ +
127
+
128 /**
+
129 * @brief Compute eta.
+
130 *
+
131 * @return Value of eta.
+
132 */
+
133 double
+ +
135
+
136 /**
+
137 * @brief Compute delta new and delta mid.
+
138 */
+
139 void
+ +
141
+
142 /**
+
143 * @brief Update direction.
+
144 */
+
145 void
+ +
147
+
148 /**
+
149 * @brief Compute residual L2-norm.
+
150 *
+
151 * @return Value of the residual L2-norm.
+
152 */
+
153 double
+ +
155
+
156 /**
+
157 * @brief Compute the total number of unknowns in all
+
158 * processors.
+
159 *
+
160 * @return Number of unknowns in all processors.
+
161 */
+
162 unsigned int
+ +
164
+
165 /**
+
166 * @brief Update solution x -> x + \alpha direction.
+
167 *
+
168 * @param alpha Scalar value.
+
169 * @param direction Direction vector.
+
170 * @param problem nonlinearSolverProblem object.
+
171 *
+
172 * @return bool true if valid update and false if increment bound exceeded
+
173 *
+
174 */
+
175 bool
+
176 updateSolution(const double alpha,
+
177 const std::vector<double> &direction,
+
178 nonlinearSolverProblem & problem);
+
179
+
180 /**
+
181 * @brief Load cg solver state from checkpoint file.
+
182 *
+
183 */
+
184 void
+
185 load(const std::string &checkpointFileName);
+
186
+
187 /// storage for conjugate direction
+
188 std::vector<double> d_conjugateDirection;
+
189
+
190 /// storage for the gradient of the nonlinear problem in the current cg step
+
191 std::vector<double> d_gradient;
+
192
+
193 /// storage for the steepest descent direction of the nonlinear problem in
+
194 /// the previous cg step
+
195 std::vector<double> d_steepestDirectionOld;
+
196
+
197 /// intermediate variable for beta computation
+ +
199
+
200 /// intermediate variable for beta computation
+ +
202
+
203 /// intermediate variable for beta computation
+ +
205
+
206 /// storage for beta- the parameter for updating the conjugate direction
+
207 /// d_beta = (d_deltaNew - d_deltaMid)/d_deltaOld
+
208 double d_beta;
+
209
+
210 ///
+
211 double d_gradMax;
+
212
+
213 /// storage for number of unknowns to be solved for in the nonlinear problem
+
214 unsigned int d_numberUnknowns;
+
215
+
216 /// storage for current nonlinear cg iteration count
+
217 unsigned int d_iter;
+
218
+
219 /**
+
220 * Storage for vector of flags (0 or 1) with size equal to the size of the
+
221 * solution vector of the nonlinear problem. If the flag value is 1 for an
+
222 * index in the vector, the corresponding entry in the solution vector is
+
223 * allowed to be updated and vice-versa if flag value is 0 for an index.
+
224 */
+
225 std::vector<unsigned int> d_unknownCountFlag;
+
226
+
227 /// line search stopping tolerance
+ +
229
+
230 /// maximum number of line search iterations
+
231 const unsigned int d_lineSearchMaxIterations;
+
232
+
233 /// damping parameter (0,1] to be multiplied with the steepest descent
+
234 /// direction, which controls the initial guess to the line search
+
235 /// iteration.
+ +
237
+
238 /// flag which restarts the CG if large increment to the solution vector
+
239 /// happens during line search
+ +
241
+
242 /// maximum allowed increment (measured as L_{inf}(delta x)) in solution
+
243 /// vector beyond which CG is restarted
+ +
245
+
246 /// line search data
+ +
248
+
249 /// line search data
+
250 double d_etaPChk;
+
251
+
252 /// line search data
+
253 double d_etaChk;
+
254
+
255 /// line search data
+
256 double d_eta;
+
257
+
258 /// line search data
+ +
260
+
261 /// line search data
+ +
263
+
264 /// line search data
+ +
266
+
267 /// line search iter
+ +
269
+
270 ///
+ +
272
+
273 //
+ +
275
+
276 // parallel objects
+ +
278 const unsigned int n_mpi_processes;
+
279 const unsigned int this_mpi_process;
+
280 dealii::ConditionalOStream pcout;
+
281 };
+
+
282
+
283} // namespace dftfe
+
284#endif // CGPRPNonLinearSolver_h
+
Concrete class implementing Polak-Ribiere-Polyak Conjugate Gradient non-linear algebraic solver.
Definition cgPRPNonLinearSolver.h:33
+
double computeResidualL2Norm() const
Compute residual L2-norm.
+
void save(const std::string &checkpointFileName)
Create checkpoint file for current state of the cg solver.
+
double d_etaAlphaZeroChk
line search data
Definition cgPRPNonLinearSolver.h:259
+
double d_gradMax
Definition cgPRPNonLinearSolver.h:211
+
std::vector< double > d_conjugateDirection
storage for conjugate direction
Definition cgPRPNonLinearSolver.h:188
+
double d_functionValueChk
line search data
Definition cgPRPNonLinearSolver.h:262
+
nonLinearSolver::ReturnValueType lineSearch(nonlinearSolverProblem &problem, const double tolerance, const unsigned int maxNumberIterations, const unsigned int debugLevel, const std::string checkpointFileName="", const int startingIter=-1, const bool isCheckpointRestart=false)
Perform line search.
+
void computeDeltas()
Compute delta new and delta mid.
+
double d_beta
Definition cgPRPNonLinearSolver.h:208
+
~cgPRPNonLinearSolver()
Destructor.
+
double d_deltaOld
intermediate variable for beta computation
Definition cgPRPNonLinearSolver.h:204
+
double d_etaChk
line search data
Definition cgPRPNonLinearSolver.h:253
+
double d_maxSolutionIncrementLinf
Definition cgPRPNonLinearSolver.h:244
+
const double d_lineSearchTolerance
line search stopping tolerance
Definition cgPRPNonLinearSolver.h:228
+
double d_functionalValueAfterAlphUpdateChk
line search data
Definition cgPRPNonLinearSolver.h:265
+
std::vector< double > d_steepestDirectionOld
Definition cgPRPNonLinearSolver.h:195
+
double d_alphaChk
line search data
Definition cgPRPNonLinearSolver.h:247
+
const unsigned int this_mpi_process
Definition cgPRPNonLinearSolver.h:279
+
unsigned int d_iter
storage for current nonlinear cg iteration count
Definition cgPRPNonLinearSolver.h:217
+
const unsigned int n_mpi_processes
Definition cgPRPNonLinearSolver.h:278
+
double d_eta
line search data
Definition cgPRPNonLinearSolver.h:256
+
bool d_useSingleAtomSolutionsInitialGuess
Definition cgPRPNonLinearSolver.h:271
+
unsigned int computeTotalNumberUnknowns() const
Compute the total number of unknowns in all processors.
+
std::pair< double, double > computeDeltaD()
Compute delta_d and eta_p.
+
const unsigned int d_lineSearchMaxIterations
maximum number of line search iterations
Definition cgPRPNonLinearSolver.h:231
+
double d_deltaNew
intermediate variable for beta computation
Definition cgPRPNonLinearSolver.h:198
+
int d_lineSearchRestartIterChk
line search iter
Definition cgPRPNonLinearSolver.h:268
+
bool d_isCurvatureOnlyLineSearchStoppingCondition
Definition cgPRPNonLinearSolver.h:274
+
MPI_Comm mpi_communicator
Definition cgPRPNonLinearSolver.h:277
+
nonLinearSolver::ReturnValueType solve(nonlinearSolverProblem &problem, const std::string checkpointFileName="", const bool restart=false)
Solve non-linear problem using Polak-Ribiere-Polyak nonlinar conjugate gradient method.
+
void initializeDirection()
Initialize direction.
+
dealii::ConditionalOStream pcout
Definition cgPRPNonLinearSolver.h:280
+
double d_deltaMid
intermediate variable for beta computation
Definition cgPRPNonLinearSolver.h:201
+
double d_lineSearchDampingParameter
Definition cgPRPNonLinearSolver.h:236
+
cgPRPNonLinearSolver(const unsigned int maxNumberIterations, const unsigned int debugLevel, const MPI_Comm &mpi_comm_parent, const double lineSearchTolerance=1.0e-6, const unsigned int lineSearchMaxIterations=10, const double lineSeachDampingParameter=1.0, const double maxIncrementSolLinf=1e+6, const bool isCurvatureOnlyLineSearchStoppingCondition=false)
Constructor.
+
void updateDirection()
Update direction.
+
bool d_isCGRestartDueToLargeIncrement
Definition cgPRPNonLinearSolver.h:240
+
bool updateSolution(const double alpha, const std::vector< double > &direction, nonlinearSolverProblem &problem)
Update solution x -> x + \alpha direction.
+
std::vector< unsigned int > d_unknownCountFlag
Definition cgPRPNonLinearSolver.h:225
+
std::vector< double > d_gradient
storage for the gradient of the nonlinear problem in the current cg step
Definition cgPRPNonLinearSolver.h:191
+
void load(const std::string &checkpointFileName)
Load cg solver state from checkpoint file.
+
double d_etaPChk
line search data
Definition cgPRPNonLinearSolver.h:250
+
double computeEta()
Compute eta.
+
unsigned int d_numberUnknowns
storage for number of unknowns to be solved for in the nonlinear problem
Definition cgPRPNonLinearSolver.h:214
+
Base class for non-linear algebraic solver.
Definition nonLinearSolver.h:39
+
ReturnValueType
Definition nonLinearSolver.h:45
+
Abstract class for solver functions.
Definition nonlinearSolverProblem.h:30
+
Definition pseudoPotentialToDftfeConverter.cc:34
+ +
+ + + + diff --git a/chebyshev_orthogonalized_subspace_iteration_solver_8h.html b/chebyshev_orthogonalized_subspace_iteration_solver_8h.html new file mode 100644 index 000000000..39f98fc57 --- /dev/null +++ b/chebyshev_orthogonalized_subspace_iteration_solver_8h.html @@ -0,0 +1,109 @@ + + + + + + + +DFT-FE: workspace/include/chebyshevOrthogonalizedSubspaceIterationSolver.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
chebyshevOrthogonalizedSubspaceIterationSolver.h File Reference
+
+
+
#include "dftParameters.h"
+#include "eigenSolver.h"
+#include "operator.h"
+#include "elpaScalaManager.h"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::chebyshevOrthogonalizedSubspaceIterationSolver
 Concrete class implementing Chebyshev filtered orthogonalized subspace iteration solver. More...
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/chebyshev_orthogonalized_subspace_iteration_solver_8h_source.html b/chebyshev_orthogonalized_subspace_iteration_solver_8h_source.html new file mode 100644 index 000000000..e203eea75 --- /dev/null +++ b/chebyshev_orthogonalized_subspace_iteration_solver_8h_source.html @@ -0,0 +1,245 @@ + + + + + + + +DFT-FE: workspace/include/chebyshevOrthogonalizedSubspaceIterationSolver.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
chebyshevOrthogonalizedSubspaceIterationSolver.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18
+
19#ifndef chebyshevOrthogonalizedSubspaceIterationSolver_h
+
20#define chebyshevOrthogonalizedSubspaceIterationSolver_h
+
21
+
22#include "dftParameters.h"
+
23#include "eigenSolver.h"
+
24#include "operator.h"
+
25#include "elpaScalaManager.h"
+
26#include "dftParameters.h"
+
27
+
28
+
29namespace dftfe
+
30{
+
31 /**
+
32 * @brief Concrete class implementing Chebyshev filtered orthogonalized subspace
+
33 * iteration solver.
+
34 * @author Phani Motamarri, Sambit Das
+
35 */
+
36
+
+ +
38 {
+
39 public:
+
40 /**
+
41 * @brief Constructor.
+
42 *
+
43 * @param mpi_comm_parent parent mpi communicator
+
44 * @param mpi_comm_domain domain decomposition mpi communicator
+
45 * @param lowerBoundWantedSpectrum Lower Bound of the Wanted Spectrum.
+
46 * @param lowerBoundUnWantedSpectrum Lower Bound of the UnWanted Spectrum.
+
47 */
+ +
49 const MPI_Comm & mpi_comm_parent,
+
50 const MPI_Comm & mpi_comm_domain,
+
51 double lowerBoundWantedSpectrum,
+
52 double lowerBoundUnWantedSpectrum,
+
53 double upperBoundUnWantedSpectrum,
+
54 const dftParameters &dftParams);
+
55
+
56
+
57 /**
+
58 * @brief Destructor.
+
59 */
+ +
61
+
62
+
63 /**
+
64 * @brief Solve a generalized eigen problem.
+
65 */
+
66 void
+ +
68 elpaScalaManager & elpaScala,
+
69 dataTypes::number * eigenVectorsFlattened,
+
70 dataTypes::number * eigenVectorsRotFracDensityFlattened,
+
71 const unsigned int totalNumberWaveFunctions,
+
72 const unsigned int localVectorSize,
+
73 std::vector<double> &eigenValues,
+
74 std::vector<double> &residuals,
+
75 const MPI_Comm & interBandGroupComm,
+
76 const MPI_Comm & mpiCommDomain,
+
77 const bool computeResidual,
+
78 const bool useMixedPrec = false,
+
79 const bool isFirstScf = false);
+
80
+
81 /**
+
82 * @brief Solve a generalized eigen problem.
+
83 */
+
84 void
+ +
86 std::vector<distributedCPUVec<double>> & eigenVectors,
+
87 std::vector<double> & eigenValues,
+
88 std::vector<double> & residuals);
+
89
+
90 /**
+
91 * @brief reinit spectrum bounds
+
92 */
+
93 void
+
94 reinitSpectrumBounds(double lowerBoundWantedSpectrum,
+
95 double lowerBoundUnWantedSpectrum,
+
96 double upperBoundUnWantedSpectrum);
+
97
+
98 private:
+
99 const MPI_Comm d_mpiCommParent;
+
100 //
+
101 // stores lower bound of wanted spectrum
+
102 //
+ +
104
+
105 //
+
106 // stores lower bound of unwanted spectrum
+
107 //
+ +
109
+
110
+
111 //
+
112 // stores upper bound of unwanted spectrum
+
113 //
+ +
115
+
116
+ +
118
+
119 //
+
120 // variables for printing out and timing
+
121 //
+
122 dealii::ConditionalOStream pcout;
+
123 dealii::TimerOutput computing_timer;
+
124 };
+
+
125} // namespace dftfe
+
126#endif
+
Concrete class implementing Chebyshev filtered orthogonalized subspace iteration solver.
Definition chebyshevOrthogonalizedSubspaceIterationSolver.h:38
+
void solve(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, elpaScalaManager &elpaScala, dataTypes::number *eigenVectorsFlattened, dataTypes::number *eigenVectorsRotFracDensityFlattened, const unsigned int totalNumberWaveFunctions, const unsigned int localVectorSize, std::vector< double > &eigenValues, std::vector< double > &residuals, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, const bool computeResidual, const bool useMixedPrec=false, const bool isFirstScf=false)
Solve a generalized eigen problem.
+
dealii::TimerOutput computing_timer
Definition chebyshevOrthogonalizedSubspaceIterationSolver.h:123
+
const dftParameters & d_dftParams
Definition chebyshevOrthogonalizedSubspaceIterationSolver.h:117
+
void solve(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, std::vector< distributedCPUVec< double > > &eigenVectors, std::vector< double > &eigenValues, std::vector< double > &residuals)
Solve a generalized eigen problem.
+
void reinitSpectrumBounds(double lowerBoundWantedSpectrum, double lowerBoundUnWantedSpectrum, double upperBoundUnWantedSpectrum)
reinit spectrum bounds
+
chebyshevOrthogonalizedSubspaceIterationSolver(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, double lowerBoundWantedSpectrum, double lowerBoundUnWantedSpectrum, double upperBoundUnWantedSpectrum, const dftParameters &dftParams)
Constructor.
+
const MPI_Comm d_mpiCommParent
Definition chebyshevOrthogonalizedSubspaceIterationSolver.h:99
+
double d_lowerBoundUnWantedSpectrum
Definition chebyshevOrthogonalizedSubspaceIterationSolver.h:108
+
dealii::ConditionalOStream pcout
Definition chebyshevOrthogonalizedSubspaceIterationSolver.h:122
+ +
double d_lowerBoundWantedSpectrum
Definition chebyshevOrthogonalizedSubspaceIterationSolver.h:103
+
double d_upperBoundUnWantedSpectrum
Definition chebyshevOrthogonalizedSubspaceIterationSolver.h:114
+
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:35
+
Base class for non-linear algebraic solver.
Definition eigenSolver.h:34
+
Manager class for ELPA and ScaLAPACK.
Definition elpaScalaManager.h:38
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ + + +
double number
Definition dftfeDataTypes.h:44
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:97
+ +
+ + + + diff --git a/chebyshev_orthogonalized_subspace_iteration_solver_device_8h.html b/chebyshev_orthogonalized_subspace_iteration_solver_device_8h.html new file mode 100644 index 000000000..617f666ad --- /dev/null +++ b/chebyshev_orthogonalized_subspace_iteration_solver_device_8h.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: workspace/include/chebyshevOrthogonalizedSubspaceIterationSolverDevice.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
chebyshevOrthogonalizedSubspaceIterationSolverDevice.h File Reference
+
+ + + + + diff --git a/chebyshev_orthogonalized_subspace_iteration_solver_device_8h_source.html b/chebyshev_orthogonalized_subspace_iteration_solver_device_8h_source.html new file mode 100644 index 000000000..8df0fe742 --- /dev/null +++ b/chebyshev_orthogonalized_subspace_iteration_solver_device_8h_source.html @@ -0,0 +1,260 @@ + + + + + + + +DFT-FE: workspace/include/chebyshevOrthogonalizedSubspaceIterationSolverDevice.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
chebyshevOrthogonalizedSubspaceIterationSolverDevice.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#if defined(DFTFE_WITH_DEVICE)
+
19# ifndef chebyshevOrthogonalizedSubspaceIterationSolverDevice_h
+
20# define chebyshevOrthogonalizedSubspaceIterationSolverDevice_h
+
21
+
22
+ +
24# include "headers.h"
+
25# include "operator.h"
+
26# include "elpaScalaManager.h"
+
27# include "dftParameters.h"
+
28# include <BLASWrapper.h>
+
29
+
30namespace dftfe
+
31{
+
32 /**
+
33 * @brief Concrete class implementing Chebyshev filtered orthogonalized subspace
+
34 * iteration solver.
+
35 * @author Sambit Das, Phani Motamarri
+
36 */
+
37 class chebyshevOrthogonalizedSubspaceIterationSolverDevice
+
38 {
+
39 public:
+
40 /**
+
41 * @brief Constructor.
+
42 *
+
43 * @param mpi_comm_parent parent mpi communicator
+
44 * @param mpi_comm_domain domain decomposition mpi communicator
+
45 * @param lowerBoundWantedSpectrum Lower Bound of the Wanted Spectrum.
+
46 * @param lowerBoundUnWantedSpectrum Lower Bound of the UnWanted Spectrum.
+
47 */
+
48 chebyshevOrthogonalizedSubspaceIterationSolverDevice(
+
49 const MPI_Comm & mpi_comm_parent,
+
50 const MPI_Comm & mpi_comm_domain,
+
51 double lowerBoundWantedSpectrum,
+
52 double lowerBoundUnWantedSpectrum,
+
53 double upperBoundUnWantedSpectrum,
+
54 const dftParameters &dftParams);
+
55
+
56
+
57
+
58 /**
+
59 * @brief Solve a generalized eigen problem.
+
60 */
+
61 double
+
62 solve(operatorDFTClass<dftfe::utils::MemorySpace::DEVICE> &operatorMatrix,
+
63 const std::shared_ptr<dftfe::linearAlgebra::BLASWrapper<
+
64 dftfe::utils::MemorySpace::DEVICE>> & BLASWrapperPtr,
+
65 elpaScalaManager & elpaScala,
+
66 dataTypes::number * eigenVectorsFlattenedDevice,
+
67 dataTypes::number * eigenVectorsRotFracDensityFlattenedDevice,
+
68 const unsigned int flattenedSize,
+
69 const unsigned int totalNumberWaveFunctions,
+
70 std::vector<double> & eigenValues,
+
71 std::vector<double> & residuals,
+
72 utils::DeviceCCLWrapper &devicecclMpiCommDomain,
+
73 const MPI_Comm & interBandGroupComm,
+
74 const bool isFirstFilteringCall,
+
75 const bool computeResidual,
+
76 const bool useMixedPrecOverall = false,
+
77 const bool isFirstScf = false);
+
78
+
79
+
80 /**
+
81 * @brief Used for XL-BOMD.
+
82 */
+
83 void
+
84 solveNoRR(
+
85 operatorDFTClass<dftfe::utils::MemorySpace::DEVICE> &operatorMatrix,
+
86 const std::shared_ptr<
+ +
88 & BLASWrapperPtr,
+
89 elpaScalaManager & elpaScala,
+
90 dataTypes::number * eigenVectorsFlattenedDevice,
+
91 const unsigned int flattenedSize,
+
92 const unsigned int totalNumberWaveFunctions,
+
93 std::vector<double> & eigenValues,
+
94 utils::DeviceCCLWrapper &devicecclMpiCommDomain,
+
95 const MPI_Comm & interBandGroupComm,
+
96 const unsigned int numberPasses,
+
97 const bool useMixedPrecOverall);
+
98
+
99
+
100 /**
+
101 * @brief Used for LRD preconditioner, also required for XL-BOMD
+
102 */
+
103 void
+ +
105 operatorDFTClass<dftfe::utils::MemorySpace::DEVICE> &operatorMatrix,
+
106 const std::shared_ptr<
+ +
108 & BLASWrapperPtr,
+
109 dataTypes::number * eigenVectorsFlattenedDevice,
+
110 const unsigned int flattenedSize,
+
111 const unsigned int totalNumberWaveFunctions,
+
112 const std::vector<double> &eigenValues,
+
113 const double fermiEnergy,
+
114 std::vector<double> & densityMatDerFermiEnergy,
+
115 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
116 const MPI_Comm & interBandGroupComm,
+
117 dftfe::elpaScalaManager & elpaScala);
+
118
+
119
+
120 /**
+
121 * @brief reinit spectrum bounds
+
122 */
+
123 void
+
124 reinitSpectrumBounds(double lowerBoundWantedSpectrum,
+
125 double lowerBoundUnWantedSpectrum,
+
126 double upperBoundUnWantedSpectrum);
+
127
+
128 private:
+
129 const MPI_Comm d_mpiCommParent;
+
130 //
+
131 // stores lower bound of wanted spectrum
+
132 //
+
133 double d_lowerBoundWantedSpectrum;
+
134
+
135 //
+
136 // stores lower bound of unwanted spectrum
+
137 //
+
138 double d_lowerBoundUnWantedSpectrum;
+
139
+
140 //
+
141 // stores upper bound of unwanted spectrum
+
142 //
+
143 double d_upperBoundUnWantedSpectrum;
+
144
+
145 const dftParameters &d_dftParams;
+
146
+
147 //
+
148 // variables for printing out and timing
+
149 //
+
150 dealii::ConditionalOStream pcout;
+
151 dealii::TimerOutput computing_timer;
+
152 };
+
153} // namespace dftfe
+
154# endif
+
155#endif
+ +
Manager class for ELPA and ScaLAPACK.
Definition elpaScalaManager.h:38
+
Definition BLASWrapper.h:34
+ + + + +
double number
Definition dftfeDataTypes.h:44
+
void densityMatrixEigenBasisFirstOrderResponse(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, T *X, const unsigned int N, const unsigned int numberLocalDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const std::vector< double > &eigenValues, const double fermiEnergy, std::vector< double > &densityMatDerFermiEnergy, elpaScalaManager &elpaScala, const dftParameters &dftParams)
Compute first order response in density matrix with respect to perturbation in the Hamiltonian....
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+ +
+ + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_base-members.html b/classdftfe_1_1_atom_centered_spherical_function_base-members.html new file mode 100644 index 000000000..db1f3980f --- /dev/null +++ b/classdftfe_1_1_atom_centered_spherical_function_base-members.html @@ -0,0 +1,100 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::AtomCenteredSphericalFunctionBase Member List
+
+ + + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_base.html b/classdftfe_1_1_atom_centered_spherical_function_base.html new file mode 100644 index 000000000..0c248eceb --- /dev/null +++ b/classdftfe_1_1_atom_centered_spherical_function_base.html @@ -0,0 +1,366 @@ + + + + + + + +DFT-FE: dftfe::AtomCenteredSphericalFunctionBase Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::AtomCenteredSphericalFunctionBase Class Referenceabstract
+
+
+ +

#include <AtomCenteredSphericalFunctionBase.h>

+
+Inheritance diagram for dftfe::AtomCenteredSphericalFunctionBase:
+
+
+ + +dftfe::AtomCenteredSphericalFunctionBessel +dftfe::AtomCenteredSphericalFunctionGaussian +dftfe::AtomCenteredSphericalFunctionSinc +dftfe::AtomCenteredSphericalFunctionSpline +dftfe::AtomCenteredSphericalFunctionZOverR +dftfe::AtomPseudoWavefunctions +dftfe::AtomCenteredSphericalFunctionCoreDensitySpline +dftfe::AtomCenteredSphericalFunctionLocalPotentialSpline +dftfe::AtomCenteredSphericalFunctionProjectorSpline +dftfe::AtomCenteredSphericalFunctionValenceDensitySpline + +
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual double getRadialValue (double r) const =0
 Computes the Radial Value of the Function at distance r.
 
unsigned int getQuantumNumberl () const
 returns the l-quantum number associated with the spherical function
 
double getIntegralValue () const
 COmputes the Radial-Integral value.
 
double getRadialCutOff () const
 Returns the maximum radial distance.
 
bool isDataPresent () const
 Checks if the data is present.
 
virtual std::vector< doublegetDerivativeValue (double r) const =0
 Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance r.
 
+ + + + + + + +

+Protected Attributes

double d_cutOff
 
unsigned int d_lQuantumNumber
 
bool d_DataPresent
 
+

Member Function Documentation

+ +

◆ getDerivativeValue()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::vector< double > dftfe::AtomCenteredSphericalFunctionBase::getDerivativeValue (double r) const
+
+pure virtual
+
+ +

Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance r.

+
Parameters
+ + +
[in]rradial distance
+
+
+
Returns
vector of size 3 comprising of function value, Radial-derivative value and Radial-secon derivative at distance r.
+ +

Implemented in dftfe::AtomCenteredSphericalFunctionBessel, dftfe::AtomCenteredSphericalFunctionGaussian, dftfe::AtomCenteredSphericalFunctionSinc, dftfe::AtomCenteredSphericalFunctionSpline, and dftfe::AtomCenteredSphericalFunctionZOverR.

+ +
+
+ +

◆ getIntegralValue()

+ +
+
+ + + + + + + +
double dftfe::AtomCenteredSphericalFunctionBase::getIntegralValue () const
+
+ +

COmputes the Radial-Integral value.

+
Returns
Result of the radial-integration of the spherical function from d_rmin to d_cutOff
+ +
+
+ +

◆ getQuantumNumberl()

+ +
+
+ + + + + + + +
unsigned int dftfe::AtomCenteredSphericalFunctionBase::getQuantumNumberl () const
+
+ +

returns the l-quantum number associated with the spherical function

+
Returns
Quantum number l
+ +
+
+ +

◆ getRadialCutOff()

+ +
+
+ + + + + + + +
double dftfe::AtomCenteredSphericalFunctionBase::getRadialCutOff () const
+
+ +

Returns the maximum radial distance.

+
Returns
Cutoff distance
+ +
+
+ +

◆ getRadialValue()

+ +
+
+ + + + + +
+ + + + + + + +
virtual double dftfe::AtomCenteredSphericalFunctionBase::getRadialValue (double r) const
+
+pure virtual
+
+ +

Computes the Radial Value of the Function at distance r.

+
Parameters
+ + +
[in]rradial distance
+
+
+
Returns
function value at distance r
+ +

Implemented in dftfe::AtomCenteredSphericalFunctionBessel, dftfe::AtomCenteredSphericalFunctionGaussian, dftfe::AtomCenteredSphericalFunctionSinc, dftfe::AtomCenteredSphericalFunctionSpline, dftfe::AtomCenteredSphericalFunctionZOverR, and dftfe::AtomPseudoWavefunctions.

+ +
+
+ +

◆ isDataPresent()

+ +
+
+ + + + + + + +
bool dftfe::AtomCenteredSphericalFunctionBase::isDataPresent () const
+
+ +

Checks if the data is present.

+
Returns
True if function is present, false if not.
+ +
+
+

Member Data Documentation

+ +

◆ d_cutOff

+ +
+
+ + + + + +
+ + + + +
double dftfe::AtomCenteredSphericalFunctionBase::d_cutOff
+
+protected
+
+ +
+
+ +

◆ d_DataPresent

+ +
+
+ + + + + +
+ + + + +
bool dftfe::AtomCenteredSphericalFunctionBase::d_DataPresent
+
+protected
+
+ +
+
+ +

◆ d_lQuantumNumber

+ +
+
+ + + + + +
+ + + + +
unsigned int dftfe::AtomCenteredSphericalFunctionBase::d_lQuantumNumber
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_base.png b/classdftfe_1_1_atom_centered_spherical_function_base.png new file mode 100644 index 0000000000000000000000000000000000000000..d66c0f10a202914db017805a9028bfc03e3462bb GIT binary patch literal 5104 zcmds5dsvcrzPD+e+Oj;IX~(qGouaJCw6P2olWCi&m_psG95Xd5G&S!jC<@IjYrIf6 zVFh7rldh3sGG0)OElUScuv8RDP!UN%2}u;WyypeW+RmKk>~r?~v-^D>cwc^(@9p=! ze12RE^xwN|iNg{rE30LQeP0~3vRWJkzF%0p5d6NHN05V$)qw{NeF*>n`1(RQl}30} z>a}%K(yF4i7Xt$W;J9b|k)Of2-=96`A7lmowh;6Ka+j6WM_9xcyAEL%jQ1;ue>u?b zyAITU?n(lJS*5l$7oK(Y3H13B%Eny;3x8T8!d#%$U%jW zj*?IrtcBn_NGw)UmFxa3+$vx3f+ZFT7e|JW?vPL+PAV&F3%RQ*UAYIjRjvf|xo<60 zg#Ma@Dg#-yz&_t)riWaZE4S*oynJ*pDJz5|Q_gs$R_mLJ+2ERO`j2$0j`t6@Hrkb% zD44jjsGmEhP$9em)kFjd#q6G!>z>}t&!6qX8Pms%!_^b?h~DB~lh1WJ!mquWiphqH zCw?kIg-j&P>!2#h^fCwuwut~6Xe+DVip!BnrKE`Dyq9b z_8eEeV;U%D=ZY%O7_F~D=LVkA$h=4%@>RUPvG+~@Y%-JJC(^Pf>T8}jlTgC1^BI|V zRBxjx-341-%Dq-z%5vqVkmrL22JNWL*4J6H*;s6U!poNNZ0sQaqUK{cx}pK5H3^6L zIfo0Uj0%D({y|i-pRlts!jUdd5GV#3+CdM~ec>%{ak)5S(31WzilpiR<3*=OO2k3o{bypo*J}^=2FJmy7rpHG$-ih&4D9t z*C(8xOQCPS6}A5sZ|H7ILV+nY9yQOn-)5dI`POT$1L^NG?b*uL9MkynJ>P#ACT|}9 zzImzCGkO)>y9v{7-yFx=8lHMS(!o8ihZ4yev3WanK89tUQeWTp&Qyu|(c4|Gr>_1R zGu#=<>)ehEI7Kaq$#iPZxLy*&8u3MTZVyidM;z$h0iE0Pdnlzb*PFMkN37>a%ZrkU zhlsx6ss2Ru^;9D0xx!Pd5eh_#%!eZOjC#C3>?w!XC&sc69$$eQ->x?;V z_~-h(*G%Sz+r1IZWQRmz-ZK=)`|pP1cnA;i*=SY{G)KCh$dF3gWV-1Fv?_pDPFNs7 zRy@ZhkMS?o?g`%G6Bdw?o`nV^QP&{B{p`F5_kkN_MvuW9Qm&niQDbT-L{|CWiZzNo zhVf?s#MOpR<#y%m&RZVD>3U{~kZ7kvP~s{64N0@aY2@tqj7Hpur5ESi>w@SSMtK-` zX&vK67KNp?>2c3$_z8-{5!)mm7<6qo=I_N8Va^Z=1f3DcoB`_Y77n+7lDK;fmn!jB zG)qYZ4C7f92_~5RZfp-x$<&BuL`{?&(;tw;Gs<+2l9eu;A4aJd+r-f|ViO*~!WmS} zUW`ia=T3iQ8k1`N*P8DyQN+CL1|-=8M3t0>GSn|9Mvh;d4(_mvCl0$f{n;(t=hb*S zA|)qc#4xmiUO$8Cot7JjD~jVwqeG|D|GGN&)jG3gI$7;~Hv*Z+5zV?{Pv zBocNd9MCUFTZhmZw4%D2g*Vn`H?nE&aJOe@yBvt{v;GyTi6BaZMEI4q_WF%sLT(1W zS97L70`_EDdChK|EbHlUBap3=fU>s_Oea@-{G$d?{grRK(T;9E8+%nBtiGLs(_KjY zb+qoJJ>Vzr$)Cym#%uK$Lj=*?TGW*f5o*YZC$Bv9-&-nh2GXmT%zZAL?~v%n*tF@d zvmesF*A`8-?4&6achKp{E-dbyOy#uUF>(PNX7aj!Er9rZ-~r0;XaRm1yJES#d+bCk zV$yC-_|#HFN|8inm|P*h)Op{@6_JpP=FuJ0qeEqbv!iacFCjYGoB~%9rG3Fw%jH`x z61MxT^W#TpkcRc64Wu|?R$To$vBDOcuA8*48H{h}b8T$*!jc77hAXD0o5Eh+v!Oem z0y9WgrYEVFF3Or>R=_*9WWaA8V;Sy>Z7xHg`Y;|n!izVe&#hGPbe`+{;_mkyqaPTr zdF&i$&VY3f@)awnQ)u;wEBWww_`ca9>$Qjqa{$C2)NdXXz0~%|KH)USQo8k~OYUwsm$r=A@Wl34)%jBEQ1nD0Z9f$vW`?on52^tO|k=y1yS8@5j{zLO&keYmS3d zp!PoR#aCm|xr#%s>`#@Sk`FgIZyAAP{1S73g_u0On+ivK=+Kx~I2=j+Y#_SLn=^{3 z=qUD(0~?3-F4vs#hR2O!#PydU{F9kfOmXric((^ma8%tT8)E(m-%0^)UvTzrW5^8m z?npBfdx*Y-(Tt(&<~xQ%+?kNLCqYHI@+HPisV2f&-0)UDNy8u&$jetFCVfkq$&lM; z?ZJX-uAJr)IbWfno??jo9j@1V!VLML7sgyK0h@?JWOW|cG-AQm zbN@p>`Ob_Ef<1l<1PFck^MHYtL7m3|do&{Fc{mb<(_2`W*@XUo0}M0M-#{&<1ge}l zl0l7|f9OKZnkJRWK6s5ZK+FKDs65R)_ZC=ykOp?t?f5+U0BwF)KwA11qJS(aZ~sfO zc!-a?UNU;I4FnPV+wY)-I5Vt}f_8S2i9ZvE)dG|^;!}i^rRSSNG*kuxy@0#2wTKU6 zLf!=phk1d4FMmGjMm%+iBzp}K{)r7^N10wM?==xbilcM18=oy{#Nvr(vTZ68Qe@)X zAiO`zv)<#`XeN;&N_-g>LFTz_XaLUOH*@JlYIMjNy`FnX!q3E?D^9?>ubRE02WH!! z*XIF54b4rakzIwroWge<@!q}bVPX9d5CKazod0&>c<+1 z9$Hj!m>jx6->#j`w8!@hEMj=UlBM_99CML)+5rf3BeRY{`W^D%uvWN}eDDvau7Hu` zTb5guh1qPAQwvA{G5;QZxpSJ-2;Th;-_ZRdIKZu>hRP``p?G>DUohC43maGYa%Ou) zrf?rAqhN>e23(+BAqW$%)Q0mA{w<30xa-OuW?GBrqL`J(=IYi5?QBmZzes=l*&B7@ zLvVns9Cuk!OADY8RO_RRtB;2D?f@@bjE#=8?hNoQL{_^gnzc0yP8hjQYfpzVeE>#G zm_KM|uh1+ww?JSFqcDlnJzRd1*kb=+2fgjMi-H!US9q8<$a@Yggw zuVez*Avj|mUM!KVyQgBWSKgo$QVIb0QoU~<*Qgmm8IU~swJ{OC7&S;Ej6?~i>F}3zGB=n6<75!Dr z*``W#ihqia32;?v3i!p-6|aS;7Xkez`r8b*-Z`*PRS~=aiKq*QYIFbg_no?*s*SGN z)|YVE3!;$5{$PyKW83rGm#V|@*midn5ZMd!2EFO-IQzuLwBsq+;OW0~KdANITv5uQ zo;Qxo+`C6bjw>G)6zxDha7s9gt+9mXm^nN>q$dl=H|ej?2hjS(Edm%rY>Ra_pP}b& zxTqtzh&O`uHmidMVItG3#yhm2CuddQ>s0J>=OQMHbtN_HIlyzF0p}}pj>m%|GdN zwRn5cE#U00qEan?*pRhfSMnxm;0H;-c>Vor{R9_%VmzK7Ovd{t@SDy0vTcnm>*j=% zhPKuoej}v1iUM($I*U!jVbu0Fx1qUcuRaFh{BaBSovvJK3C=^@FNrqKz + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::AtomCenteredSphericalFunctionBessel Member List
+
+ + + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_bessel.html b/classdftfe_1_1_atom_centered_spherical_function_bessel.html new file mode 100644 index 000000000..14f8e6bf7 --- /dev/null +++ b/classdftfe_1_1_atom_centered_spherical_function_bessel.html @@ -0,0 +1,365 @@ + + + + + + + +DFT-FE: dftfe::AtomCenteredSphericalFunctionBessel Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::AtomCenteredSphericalFunctionBessel Class Reference
+
+
+ +

#include <AtomCenteredSphericalFunctionBessel.h>

+
+Inheritance diagram for dftfe::AtomCenteredSphericalFunctionBessel:
+
+
+ + +dftfe::AtomCenteredSphericalFunctionBase + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 AtomCenteredSphericalFunctionBessel (double RcParameter, double RmaxParameter, unsigned int lParameter)
 Creates the Bessel function based on the 2 parameters.
 
double getRadialValue (double r) const override
 Computes the Radial Value of the Function at distance r.
 
unsigned int getQuantumNumbern () const
 
double getrMinVal () const
 
std::vector< doublegetDerivativeValue (double r) const override
 Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance r.
 
- Public Member Functions inherited from dftfe::AtomCenteredSphericalFunctionBase
unsigned int getQuantumNumberl () const
 returns the l-quantum number associated with the spherical function
 
double getIntegralValue () const
 COmputes the Radial-Integral value.
 
double getRadialCutOff () const
 Returns the maximum radial distance.
 
bool isDataPresent () const
 Checks if the data is present.
 
+ + + + + + + +

+Private Attributes

double d_rMinVal
 
double d_NormalizationConstant
 
double d_Rc
 
+ + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from dftfe::AtomCenteredSphericalFunctionBase
double d_cutOff
 
unsigned int d_lQuantumNumber
 
bool d_DataPresent
 
+

Constructor & Destructor Documentation

+ +

◆ AtomCenteredSphericalFunctionBessel()

+ +
+
+ + + + + + + + + + + + + + + + +
dftfe::AtomCenteredSphericalFunctionBessel::AtomCenteredSphericalFunctionBessel (double RcParameter,
double RmaxParameter,
unsigned int lParameter )
+
+ +

Creates the Bessel function based on the 2 parameters.

+
Parameters
+ + + +
[in]RcParametercoefficent for the bessel function
[in]RmaxParameterthe maximum R afterwhich the function returns 0.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getDerivativeValue()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< double > dftfe::AtomCenteredSphericalFunctionBessel::getDerivativeValue (double r) const
+
+overridevirtual
+
+ +

Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance r.

+
Parameters
+ + +
[in]rradial distance
+
+
+
Returns
vector of size 3 comprising of function value, Radial-derivative value and Radial-secon derivative at distance r.
+ +

Implements dftfe::AtomCenteredSphericalFunctionBase.

+ +
+
+ +

◆ getQuantumNumbern()

+ +
+
+ + + + + + + +
unsigned int dftfe::AtomCenteredSphericalFunctionBessel::getQuantumNumbern () const
+
+ +
+
+ +

◆ getRadialValue()

+ +
+
+ + + + + +
+ + + + + + + +
double dftfe::AtomCenteredSphericalFunctionBessel::getRadialValue (double r) const
+
+overridevirtual
+
+ +

Computes the Radial Value of the Function at distance r.

+
Parameters
+ + +
[in]rradial distance
+
+
+
Returns
function value at distance r
+ +

Implements dftfe::AtomCenteredSphericalFunctionBase.

+ +
+
+ +

◆ getrMinVal()

+ +
+
+ + + + + + + +
double dftfe::AtomCenteredSphericalFunctionBessel::getrMinVal () const
+
+ +
+
+

Member Data Documentation

+ +

◆ d_NormalizationConstant

+ +
+
+ + + + + +
+ + + + +
double dftfe::AtomCenteredSphericalFunctionBessel::d_NormalizationConstant
+
+private
+
+ +
+
+ +

◆ d_Rc

+ +
+
+ + + + + +
+ + + + +
double dftfe::AtomCenteredSphericalFunctionBessel::d_Rc
+
+private
+
+ +
+
+ +

◆ d_rMinVal

+ +
+
+ + + + + +
+ + + + +
double dftfe::AtomCenteredSphericalFunctionBessel::d_rMinVal
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_bessel.png b/classdftfe_1_1_atom_centered_spherical_function_bessel.png new file mode 100644 index 0000000000000000000000000000000000000000..7a28bfdc344dd171a2aae7a7405a55c62813d550 GIT binary patch literal 984 zcmeAS@N?(olHy`uVBq!ia0y~yU}Oif12~w0q;jW29*~j_@CkAK|NlRb`Qpvj(*8rs zEetdZB&MHv@!-J&pt$MTuq8k_&XOR%Uv*Be6lcEBtMU3z9Qd9rSk>jkC(ZYC z%BBAyqVuv-WY^z{t_{7aF`YSo(hEK3dUn6XM=s9^53P9jCExOjfO+B7gE?1g9!+yL zsO%|~zP5LN?ulwXQ$fEfW~)VSDvM;jNmSLx6YU_)`~mEUyI!8 zZyxW=Z|K8!`R69XCjsG2H8a+~JN?|}>r?+sKNshSosRFmTs-ocy3=&TTX{; zlL@=7SiE_M5ubH~#1V@PcXX#Y9ybk2)_pW(?rVPM&+(QH{e_BeEMu(xJ&C4r*OhBOI?bLZbEnqO_UN&`S#>-2{aV40|LE)CT0twL zm@wt%e`_26F1)LD{(I}HSL{z-=7op;z3;^LwIVQrTjtG+qAUKIiJ(m&d;^m(J7PF zF?+|Wgl$=Ng{Ku~?D0Hhv!=TK_Jr>;SxR%hu$8#n{QSgfn%#vRzJIQ}glBojta@8} zW9!UJreAtZ`_^pEnxD6?O)hDM%(CL|ubbp$UU^O6|9rLf=bV-M{%D@<%;3;AKQY&C zR>j{3`A-F|Dp<@f3rsy(b3U+M#=zKF ivHjq}DM1?b4DUBwd-OKIBmtNQ89ZJ6T-G@yGywnwjKX99 literal 0 HcmV?d00001 diff --git a/classdftfe_1_1_atom_centered_spherical_function_container-members.html b/classdftfe_1_1_atom_centered_spherical_function_container-members.html new file mode 100644 index 000000000..64320c1a4 --- /dev/null +++ b/classdftfe_1_1_atom_centered_spherical_function_container-members.html @@ -0,0 +1,125 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::AtomCenteredSphericalFunctionContainer Member List
+
+
+ +

This is the complete list of members for dftfe::AtomCenteredSphericalFunctionContainer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
atomSupportInElement(unsigned int iElem)dftfe::AtomCenteredSphericalFunctionContainer
computeSparseStructure(std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int quadratureIndex, const double cutOffVal=1.0E-8, const unsigned int cutOffType=0)dftfe::AtomCenteredSphericalFunctionContainer
d_atomCoordsdftfe::AtomCenteredSphericalFunctionContainerprivate
d_atomicNumbersdftfe::AtomCenteredSphericalFunctionContainerprivate
d_AtomIdsInCurrentProcessdftfe::AtomCenteredSphericalFunctionContainerprivate
d_AtomIdsInElementdftfe::AtomCenteredSphericalFunctionContainerprivate
d_elementIdsInAtomCompactSupportdftfe::AtomCenteredSphericalFunctionContainerprivate
d_elementIndexesInAtomCompactSupportdftfe::AtomCenteredSphericalFunctionContainer
d_elementOneFieldIteratorsInAtomCompactSupportdftfe::AtomCenteredSphericalFunctionContainerprivate
d_numRadialSphericalFunctionsdftfe::AtomCenteredSphericalFunctionContainerprivate
d_numSphericalFunctionsdftfe::AtomCenteredSphericalFunctionContainerprivate
d_periodicImageCoorddftfe::AtomCenteredSphericalFunctionContainerprivate
d_sparsityPatterndftfe::AtomCenteredSphericalFunctionContainerprivate
d_sphericalFunctionsContainerdftfe::AtomCenteredSphericalFunctionContainerprivate
d_totalSphericalFunctionIndexStartdftfe::AtomCenteredSphericalFunctionContainerprivate
getAtomCoordinates() constdftfe::AtomCenteredSphericalFunctionContainer
getAtomicNumbers() constdftfe::AtomCenteredSphericalFunctionContainer
getAtomIdsInCurrentProcess() constdftfe::AtomCenteredSphericalFunctionContainer
getAtomIdsInElement(unsigned int iElem)dftfe::AtomCenteredSphericalFunctionContainer
getDataForSparseStructure(const std::map< unsigned int, std::vector< int > > &sparsityPattern, const std::vector< std::vector< dealii::CellId > > &elementIdsInAtomCompactSupport, const std::vector< std::vector< unsigned int > > &elementIndexesInAtomCompactSupport, const std::vector< unsigned int > &atomIdsInCurrentProcess, unsigned int numberElements)dftfe::AtomCenteredSphericalFunctionContainer
getMaximumNumberOfSphericalFunctions()dftfe::AtomCenteredSphericalFunctionContainer
getNumAtomCentersSize()dftfe::AtomCenteredSphericalFunctionContainer
getPeriodicImageCoordinatesList() constdftfe::AtomCenteredSphericalFunctionContainer
getSparsityPattern()dftfe::AtomCenteredSphericalFunctionContainer
getSphericalFunctions() constdftfe::AtomCenteredSphericalFunctionContainer
getTotalAtomsAndNonLocalElementsInCurrentProcessor(unsigned int &totalAtomsInCurrentProcessor, unsigned int &totalNonLocalElements, std::vector< unsigned int > &numberCellsForEachAtom, std::vector< unsigned int > &numberCellsAccumNonLocalAtoms)dftfe::AtomCenteredSphericalFunctionContainer
getTotalNumberOfRadialSphericalFunctions()dftfe::AtomCenteredSphericalFunctionContainer
getTotalNumberOfRadialSphericalFunctionsPerAtom(unsigned int atomicNumber)dftfe::AtomCenteredSphericalFunctionContainer
getTotalNumberOfSphericalFunctionsInCurrentProcessor()dftfe::AtomCenteredSphericalFunctionContainer
getTotalNumberOfSphericalFunctionsPerAtom(unsigned int atomicNumber)dftfe::AtomCenteredSphericalFunctionContainer
getTotalSphericalFunctionIndexStart(unsigned int Znum, unsigned int alpha)dftfe::AtomCenteredSphericalFunctionContainer
init(const std::vector< unsigned int > &atomicNumbers, const std::map< std::pair< unsigned int, unsigned int >, std::shared_ptr< AtomCenteredSphericalFunctionBase > > &listOfSphericalFunctions)dftfe::AtomCenteredSphericalFunctionContainer
initaliseCoordinates(const std::vector< double > &atomCoords, const std::vector< std::vector< double > > &periodicCoords, const std::vector< int > &imageIds)dftfe::AtomCenteredSphericalFunctionContainer
setImageCoordinates(const std::vector< int > &imageIds, const std::vector< std::vector< double > > &periodicCoords)dftfe::AtomCenteredSphericalFunctionContainer
+ + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_container.html b/classdftfe_1_1_atom_centered_spherical_function_container.html new file mode 100644 index 000000000..e921f7749 --- /dev/null +++ b/classdftfe_1_1_atom_centered_spherical_function_container.html @@ -0,0 +1,955 @@ + + + + + + + +DFT-FE: dftfe::AtomCenteredSphericalFunctionContainer Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::AtomCenteredSphericalFunctionContainer Class Reference
+
+
+ +

#include <AtomCenteredSphericalFunctionContainer.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void init (const std::vector< unsigned int > &atomicNumbers, const std::map< std::pair< unsigned int, unsigned int >, std::shared_ptr< AtomCenteredSphericalFunctionBase > > &listOfSphericalFunctions)
 Initialises the class with the atomicNumbers of various atoms and the AtomCenteredSphericalFn of various spherical functions. This function is only called once per run.
 
void initaliseCoordinates (const std::vector< double > &atomCoords, const std::vector< std::vector< double > > &periodicCoords, const std::vector< int > &imageIds)
 Initialises the position of atoms, the image posisiton and image ids after every update of atom positions.
 
unsigned int getNumAtomCentersSize ()
 Returns the number of atoms present in domain.
 
const std::vector< double > & getAtomCoordinates () const
 Returns the cooridnates of atom present in domain.
 
const std::map< unsigned int, std::vector< double > > & getPeriodicImageCoordinatesList () const
 Returns the map of atomId vs vector of image coordinates.
 
unsigned int getTotalNumberOfSphericalFunctionsPerAtom (unsigned int atomicNumber)
 Returns the he number of total spherical functions indexed by {ilm} associated with an atomic number. If the atomic number does not exist, it returns a zero.
 
unsigned int getTotalNumberOfRadialSphericalFunctionsPerAtom (unsigned int atomicNumber)
 Returns the he number of radial spherical functions indexed by {i} associated with an atomic number. If the atomic number does not exist, it returns a zero.
 
unsigned int getTotalNumberOfSphericalFunctionsInCurrentProcessor ()
 Returns the total number of total spherical functions indexed by {ilm} present in the current processor. If the atomic number does not exist, it returns a zero.
 
unsigned int getMaximumNumberOfSphericalFunctions ()
 Returns the maximum number of total spherical functions indexed by {ilm} across all atom Types present in atomNumbers vector.
 
void getTotalAtomsAndNonLocalElementsInCurrentProcessor (unsigned int &totalAtomsInCurrentProcessor, unsigned int &totalNonLocalElements, std::vector< unsigned int > &numberCellsForEachAtom, std::vector< unsigned int > &numberCellsAccumNonLocalAtoms)
 
unsigned int getTotalNumberOfRadialSphericalFunctions ()
 Returns the total number of total radial-spherical functions indexed by {i} present in atomicNumbers list.
 
const std::map< std::pair< unsigned int, unsigned int >, std::shared_ptr< AtomCenteredSphericalFunctionBase > > & getSphericalFunctions () const
 Returns the shared_ptr of AtomCenteredSphericalFunctionBase associated with std::pair(atomic Number and lQuantumNo)
 
const std::vector< unsigned int > & getAtomicNumbers () const
 Returns the vector of size Natoms of all atoms in system.
 
const std::vector< unsigned int > & getAtomIdsInCurrentProcess () const
 Returns the atomIds of atoms present in current processor.
 
const unsigned int getTotalSphericalFunctionIndexStart (unsigned int Znum, unsigned int alpha)
 Returns the startIndex of spherical Function alpha associated with atomic number Znum.
 
template<typename NumberType >
void computeSparseStructure (std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int quadratureIndex, const double cutOffVal=1.0E-8, const unsigned int cutOffType=0)
 
void setImageCoordinates (const std::vector< int > &imageIds, const std::vector< std::vector< double > > &periodicCoords)
 
const std::vector< int > & getAtomIdsInElement (unsigned int iElem)
 
const std::map< unsigned int, std::vector< int > > & getSparsityPattern ()
 
bool atomSupportInElement (unsigned int iElem)
 
void getDataForSparseStructure (const std::map< unsigned int, std::vector< int > > &sparsityPattern, const std::vector< std::vector< dealii::CellId > > &elementIdsInAtomCompactSupport, const std::vector< std::vector< unsigned int > > &elementIndexesInAtomCompactSupport, const std::vector< unsigned int > &atomIdsInCurrentProcess, unsigned int numberElements)
 
+ + + +

+Public Attributes

std::vector< std::vector< unsigned int > > d_elementIndexesInAtomCompactSupport
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::vector< doubled_atomCoords
 
std::vector< unsigned intd_atomicNumbers
 
std::map< unsigned int, std::vector< double > > d_periodicImageCoord
 
std::map< std::pair< unsigned int, unsigned int >, std::shared_ptr< AtomCenteredSphericalFunctionBase > > d_sphericalFunctionsContainer
 
std::map< unsigned int, unsigned intd_numRadialSphericalFunctions
 
std::map< unsigned int, unsigned intd_numSphericalFunctions
 
std::map< unsigned int, std::vector< int > > d_sparsityPattern
 
std::vector< std::vector< dealii::CellId > > d_elementIdsInAtomCompactSupport
 
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_elementOneFieldIteratorsInAtomCompactSupport
 
std::vector< unsigned intd_AtomIdsInCurrentProcess
 
std::vector< std::vector< int > > d_AtomIdsInElement
 
std::map< unsigned int, std::vector< unsigned int > > d_totalSphericalFunctionIndexStart
 
+

Member Function Documentation

+ +

◆ atomSupportInElement()

+ +
+
+ + + + + + + +
bool dftfe::AtomCenteredSphericalFunctionContainer::atomSupportInElement (unsigned int iElem)
+
+ +
+
+ +

◆ computeSparseStructure()

+ +
+
+
+template<typename NumberType >
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::AtomCenteredSphericalFunctionContainer::computeSparseStructure (std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, dftfe::utils::MemorySpace::HOST > > & basisOperationsPtr,
const unsigned int quadratureIndex,
const double cutOffVal = 1.0E-8,
const unsigned int cutOffType = 0 )
+
+ +
+
+ +

◆ getAtomCoordinates()

+ +
+
+ + + + + + + +
const std::vector< double > & dftfe::AtomCenteredSphericalFunctionContainer::getAtomCoordinates () const
+
+ +

Returns the cooridnates of atom present in domain.

+
Returns
Returns atomCoords vector
+ +
+
+ +

◆ getAtomicNumbers()

+ +
+
+ + + + + + + +
const std::vector< unsigned int > & dftfe::AtomCenteredSphericalFunctionContainer::getAtomicNumbers () const
+
+ +

Returns the vector of size Natoms of all atoms in system.

+ +
+
+ +

◆ getAtomIdsInCurrentProcess()

+ +
+
+ + + + + + + +
const std::vector< unsigned int > & dftfe::AtomCenteredSphericalFunctionContainer::getAtomIdsInCurrentProcess () const
+
+ +

Returns the atomIds of atoms present in current processor.

+ +
+
+ +

◆ getAtomIdsInElement()

+ +
+
+ + + + + + + +
const std::vector< int > & dftfe::AtomCenteredSphericalFunctionContainer::getAtomIdsInElement (unsigned int iElem)
+
+ +
+
+ +

◆ getDataForSparseStructure()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::AtomCenteredSphericalFunctionContainer::getDataForSparseStructure (const std::map< unsigned int, std::vector< int > > & sparsityPattern,
const std::vector< std::vector< dealii::CellId > > & elementIdsInAtomCompactSupport,
const std::vector< std::vector< unsigned int > > & elementIndexesInAtomCompactSupport,
const std::vector< unsigned int > & atomIdsInCurrentProcess,
unsigned int numberElements )
+
+ +
+
+ +

◆ getMaximumNumberOfSphericalFunctions()

+ +
+
+ + + + + + + +
unsigned int dftfe::AtomCenteredSphericalFunctionContainer::getMaximumNumberOfSphericalFunctions ()
+
+ +

Returns the maximum number of total spherical functions indexed by {ilm} across all atom Types present in atomNumbers vector.

+ +
+
+ +

◆ getNumAtomCentersSize()

+ +
+
+ + + + + + + +
unsigned int dftfe::AtomCenteredSphericalFunctionContainer::getNumAtomCentersSize ()
+
+ +

Returns the number of atoms present in domain.

+
Returns
Returns size of atomicNumbers vector
+ +
+
+ +

◆ getPeriodicImageCoordinatesList()

+ +
+
+ + + + + + + +
const std::map< unsigned int, std::vector< double > > & dftfe::AtomCenteredSphericalFunctionContainer::getPeriodicImageCoordinatesList () const
+
+ +

Returns the map of atomId vs vector of image coordinates.

+
Returns
Returns d_periodicImageCoord
+ +
+
+ +

◆ getSparsityPattern()

+ +
+
+ + + + + + + +
const std::map< unsigned int, std::vector< int > > & dftfe::AtomCenteredSphericalFunctionContainer::getSparsityPattern ()
+
+ +
+
+ +

◆ getSphericalFunctions()

+ +
+
+ + + + + + + +
const std::map< std::pair< unsigned int, unsigned int >, std::shared_ptr< AtomCenteredSphericalFunctionBase > > & dftfe::AtomCenteredSphericalFunctionContainer::getSphericalFunctions () const
+
+ +

Returns the shared_ptr of AtomCenteredSphericalFunctionBase associated with std::pair(atomic Number and lQuantumNo)

+ +
+
+ +

◆ getTotalAtomsAndNonLocalElementsInCurrentProcessor()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::AtomCenteredSphericalFunctionContainer::getTotalAtomsAndNonLocalElementsInCurrentProcessor (unsigned int & totalAtomsInCurrentProcessor,
unsigned int & totalNonLocalElements,
std::vector< unsigned int > & numberCellsForEachAtom,
std::vector< unsigned int > & numberCellsAccumNonLocalAtoms )
+
+
Parameters
+ + + + + +
[out]totalAtomsInCurrentProcessornumber of atoms in current processor based on compact support
[out]totalNonLocalElementsnumber of nonLocal elements in current processor
[out]numberCellsForEachAtomnumber of cells associated which each atom in the current processor. vecot of size totalAtomsInCurrentProcessor
[out]numberCellsAccumNonLocalAtomsnumber of cells accumulated till iatom in current processor. vector of size totalAtomsInCurrentProcessor
+
+
+ +
+
+ +

◆ getTotalNumberOfRadialSphericalFunctions()

+ +
+
+ + + + + + + +
unsigned int dftfe::AtomCenteredSphericalFunctionContainer::getTotalNumberOfRadialSphericalFunctions ()
+
+ +

Returns the total number of total radial-spherical functions indexed by {i} present in atomicNumbers list.

+ +
+
+ +

◆ getTotalNumberOfRadialSphericalFunctionsPerAtom()

+ +
+
+ + + + + + + +
unsigned int dftfe::AtomCenteredSphericalFunctionContainer::getTotalNumberOfRadialSphericalFunctionsPerAtom (unsigned int atomicNumber)
+
+ +

Returns the he number of radial spherical functions indexed by {i} associated with an atomic number. If the atomic number does not exist, it returns a zero.

+
Returns
d_numRadialSphericalFunctions.find(atomicNumber)->size()
+ +
+
+ +

◆ getTotalNumberOfSphericalFunctionsInCurrentProcessor()

+ +
+
+ + + + + + + +
unsigned int dftfe::AtomCenteredSphericalFunctionContainer::getTotalNumberOfSphericalFunctionsInCurrentProcessor ()
+
+ +

Returns the total number of total spherical functions indexed by {ilm} present in the current processor. If the atomic number does not exist, it returns a zero.

+ +
+
+ +

◆ getTotalNumberOfSphericalFunctionsPerAtom()

+ +
+
+ + + + + + + +
unsigned int dftfe::AtomCenteredSphericalFunctionContainer::getTotalNumberOfSphericalFunctionsPerAtom (unsigned int atomicNumber)
+
+ +

Returns the he number of total spherical functions indexed by {ilm} associated with an atomic number. If the atomic number does not exist, it returns a zero.

+
Returns
d_numSphericalFunctions.find(atomicNumber)->size()
+ +
+
+ +

◆ getTotalSphericalFunctionIndexStart()

+ +
+
+ + + + + + + + + + + +
const unsigned int dftfe::AtomCenteredSphericalFunctionContainer::getTotalSphericalFunctionIndexStart (unsigned int Znum,
unsigned int alpha )
+
+ +

Returns the startIndex of spherical Function alpha associated with atomic number Znum.

+ +
+
+ +

◆ init()

+ +
+
+ + + + + + + + + + + +
void dftfe::AtomCenteredSphericalFunctionContainer::init (const std::vector< unsigned int > & atomicNumbers,
const std::map< std::pair< unsigned int, unsigned int >, std::shared_ptr< AtomCenteredSphericalFunctionBase > > & listOfSphericalFunctions )
+
+ +

Initialises the class with the atomicNumbers of various atoms and the AtomCenteredSphericalFn of various spherical functions. This function is only called once per run.

+
Parameters
+ + + +
[in]atomicNumbersvector of size Natoms storing the Znumbers of various atoms present
[in]listOfSphericalFunctionsmap of std::pain (Znum, l) to the sphericalFUnction class shared pointer.
+
+
+ +
+
+ +

◆ initaliseCoordinates()

+ +
+
+ + + + + + + + + + + + + + + + +
void dftfe::AtomCenteredSphericalFunctionContainer::initaliseCoordinates (const std::vector< double > & atomCoords,
const std::vector< std::vector< double > > & periodicCoords,
const std::vector< int > & imageIds )
+
+ +

Initialises the position of atoms, the image posisiton and image ids after every update of atom positions.

+
Parameters
+ + + + +
[in]atomCoordsvector of size 3*Natoms storing the X,Y,Z coordiantes of atom in cell.
[in]periodicCoordsvector of vector storing the image coordinates
[in]imageIdsthe image Id of image atoms present in periodicCoords input
+
+
+ +
+
+ +

◆ setImageCoordinates()

+ +
+
+ + + + + + + + + + + +
void dftfe::AtomCenteredSphericalFunctionContainer::setImageCoordinates (const std::vector< int > & imageIds,
const std::vector< std::vector< double > > & periodicCoords )
+
+ +
+
+

Member Data Documentation

+ +

◆ d_atomCoords

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::AtomCenteredSphericalFunctionContainer::d_atomCoords
+
+private
+
+ +
+
+ +

◆ d_atomicNumbers

+ +
+
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::AtomCenteredSphericalFunctionContainer::d_atomicNumbers
+
+private
+
+ +
+
+ +

◆ d_AtomIdsInCurrentProcess

+ +
+
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::AtomCenteredSphericalFunctionContainer::d_AtomIdsInCurrentProcess
+
+private
+
+ +
+
+ +

◆ d_AtomIdsInElement

+ +
+
+ + + + + +
+ + + + +
std::vector<std::vector<int> > dftfe::AtomCenteredSphericalFunctionContainer::d_AtomIdsInElement
+
+private
+
+ +
+
+ +

◆ d_elementIdsInAtomCompactSupport

+ +
+
+ + + + + +
+ + + + +
std::vector<std::vector<dealii::CellId> > dftfe::AtomCenteredSphericalFunctionContainer::d_elementIdsInAtomCompactSupport
+
+private
+
+ +
+
+ +

◆ d_elementIndexesInAtomCompactSupport

+ +
+
+ + + + +
std::vector<std::vector<unsigned int> > dftfe::AtomCenteredSphericalFunctionContainer::d_elementIndexesInAtomCompactSupport
+
+ +
+
+ +

◆ d_elementOneFieldIteratorsInAtomCompactSupport

+ +
+
+ + + + + +
+ + + + +
std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator> > dftfe::AtomCenteredSphericalFunctionContainer::d_elementOneFieldIteratorsInAtomCompactSupport
+
+private
+
+ +
+
+ +

◆ d_numRadialSphericalFunctions

+ +
+
+ + + + + +
+ + + + +
std::map<unsigned int, unsigned int> dftfe::AtomCenteredSphericalFunctionContainer::d_numRadialSphericalFunctions
+
+private
+
+ +
+
+ +

◆ d_numSphericalFunctions

+ +
+
+ + + + + +
+ + + + +
std::map<unsigned int, unsigned int> dftfe::AtomCenteredSphericalFunctionContainer::d_numSphericalFunctions
+
+private
+
+ +
+
+ +

◆ d_periodicImageCoord

+ +
+
+ + + + + +
+ + + + +
std::map<unsigned int, std::vector<double> > dftfe::AtomCenteredSphericalFunctionContainer::d_periodicImageCoord
+
+private
+
+ +
+
+ +

◆ d_sparsityPattern

+ +
+
+ + + + + +
+ + + + +
std::map<unsigned int, std::vector<int> > dftfe::AtomCenteredSphericalFunctionContainer::d_sparsityPattern
+
+private
+
+ +
+
+ +

◆ d_sphericalFunctionsContainer

+ +
+
+ + + + + +
+ + + + +
std::map<std::pair<unsigned int, unsigned int>, std::shared_ptr<AtomCenteredSphericalFunctionBase> > dftfe::AtomCenteredSphericalFunctionContainer::d_sphericalFunctionsContainer
+
+private
+
+ +
+
+ +

◆ d_totalSphericalFunctionIndexStart

+ +
+
+ + + + + +
+ + + + +
std::map<unsigned int, std::vector<unsigned int> > dftfe::AtomCenteredSphericalFunctionContainer::d_totalSphericalFunctionIndexStart
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_core_density_spline-members.html b/classdftfe_1_1_atom_centered_spherical_function_core_density_spline-members.html new file mode 100644 index 000000000..23d0e493c --- /dev/null +++ b/classdftfe_1_1_atom_centered_spherical_function_core_density_spline-members.html @@ -0,0 +1,104 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::AtomCenteredSphericalFunctionCoreDensitySpline Member List
+
+ + + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_core_density_spline.html b/classdftfe_1_1_atom_centered_spherical_function_core_density_spline.html new file mode 100644 index 000000000..4c9e680db --- /dev/null +++ b/classdftfe_1_1_atom_centered_spherical_function_core_density_spline.html @@ -0,0 +1,187 @@ + + + + + + + +DFT-FE: dftfe::AtomCenteredSphericalFunctionCoreDensitySpline Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::AtomCenteredSphericalFunctionCoreDensitySpline Class Reference
+
+
+ +

#include <AtomCenteredSphericalFunctionCoreDensitySpline.h>

+
+Inheritance diagram for dftfe::AtomCenteredSphericalFunctionCoreDensitySpline:
+
+
+ + +dftfe::AtomCenteredSphericalFunctionSpline +dftfe::AtomCenteredSphericalFunctionBase + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 AtomCenteredSphericalFunctionCoreDensitySpline (std::string filename, double truncationTol=1E-10, bool consider0thEntry=true)
 Creates splines for radial-core Density from file by applying suitable BC on spline and determining the cutOff Radius.
 
- Public Member Functions inherited from dftfe::AtomCenteredSphericalFunctionSpline
double getRadialValue (double r) const override
 Computes the Radial Value of the Function at distance r.
 
std::vector< doublegetDerivativeValue (double r) const override
 Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance r.
 
double getrMinVal () const
 
- Public Member Functions inherited from dftfe::AtomCenteredSphericalFunctionBase
unsigned int getQuantumNumberl () const
 returns the l-quantum number associated with the spherical function
 
double getIntegralValue () const
 COmputes the Radial-Integral value.
 
double getRadialCutOff () const
 Returns the maximum radial distance.
 
bool isDataPresent () const
 Checks if the data is present.
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from dftfe::AtomCenteredSphericalFunctionSpline
double d_rMin
 
alglib::spline1dinterpolant d_radialSplineObject
 
- Protected Attributes inherited from dftfe::AtomCenteredSphericalFunctionBase
double d_cutOff
 
unsigned int d_lQuantumNumber
 
bool d_DataPresent
 
+

Constructor & Destructor Documentation

+ +

◆ AtomCenteredSphericalFunctionCoreDensitySpline()

+ +
+
+ + + + + + + + + + + + + + + + +
dftfe::AtomCenteredSphericalFunctionCoreDensitySpline::AtomCenteredSphericalFunctionCoreDensitySpline (std::string filename,
double truncationTol = 1E-10,
bool consider0thEntry = true )
+
+ +

Creates splines for radial-core Density from file by applying suitable BC on spline and determining the cutOff Radius.

+
Parameters
+ + + + +
[in]filenamethe location of file containing the data
[in]truncationTolthe minimum function value afterwhich the function is truncated.
[in]consider0thEntrywhether to replace the 0th fn value with the 1st value in the data.
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_core_density_spline.png b/classdftfe_1_1_atom_centered_spherical_function_core_density_spline.png new file mode 100644 index 0000000000000000000000000000000000000000..50bcbe456a582b6c691168ec06e8904cb69a1ecc GIT binary patch literal 1809 zcmcK5eN@*~sAFAQbnP?-M||6%2f23=EntJ%RS;yJ0ZL3&76pd(!R3%MC|2`K)xT#@ab* zY^PF$72j_C#xT(0F_=RMt14S|v-K7w!{-<`M{?`*_#4?Vl7 zqa~u*01bN}T+>>3u@DrLP;y!A@ySX?QbQDCj4>Tf!xr5OR}^IFX(9UIj#*+6$*z)1*{3KY&n@VbiAG_A zd9Q<{wx?!6Q^j#m?n|Aw~xmB5kAmvJrUe`iH|Qz znHeSCxD!WZ&K2e16a~!_wXe1{9&eV0oQIJ)>`}IWeOzWM#xVekb1AZ}f~X zJ(HrURg=K``7CdK(}e=UCjUKFXMVH!Gey%_ZuTvmcMG`Jwa@9w7CtDgDkMF)u}oQ1 z18&=gO`(TWx@o%2!gk`VgQ~e;lSbOoZi{pU1=yQbO9YpF{zd7BG*l$O!7dgb2XbEz z74rn^6qTEPrqT(2w94tGrt{Sg?I-<>t2chd=kr#)wq5M7d`S2K+1}v{%I*s8EDY-5 zm+KUsA38%z@)#>#3l%$@bSK*1h0@SZ|7&{Q0~L<+L{{>yUB=2jZH#Ec*q0y@TpnURU za~IiHR}9C%%{vbB^Rtw?vNM)z>Fg}N{jS!d##FyC(>1S0!G+tct5sbK6Lhtj9+9f8 zUS3G9CRp3{+7K*wXj?>J1oz;OE12Ym@*b6|O0pX)_VhixIC!ks&H+M6g&YYM*iSQjAdxcOvEM4!YI5sAwVGbAMH>_(=haady@ zlkW0$WJ^#tFmMDx)E@1s*!H}e+$O&>_Z|S>p_Up@hC^!rmmbWW%_;Nercl=S4dOV# zoS`jKQXO2oc4sWc8}ie3h2kXIK=4khVXO75-65^tX(Ni8a$0UoGv`?Z$j&|x+O!VO zW%DhlvQ61{Eh>Q&s{ar3qz0aVlk>M$EIMjv^s3|uc=*<3gA<0AH`+ZbgG}7+jB0l{ zxsho96*Z>x13P=j#m55Re`K?0^7$%ITI=;ot(R1J{amSMLIQ+GE`v-aBtT|;>mcc+ z1m_OjLMIu`E-kh8?azBM5hjz#d~7(C<23KqBayN9dNH)p&cgQf?aaDe@l)B);&{m# z1UTxmIq|^yUDciEJ|jU-A8WeAh03tm<|D1@-s4TPY2{iHoP?;lPIRUmF~u9kr(!zp z^jssulj|GPK2Mmj&i4(-Wp2LdBQjauV%LzEW(E{@k6>^bp{ebSr7jv3GOs)+z9v-c n=UXtOrx8j#2_@v&5*w`LX=E-peTy8rykJ0B + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::AtomCenteredSphericalFunctionGaussian Member List
+
+ + + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_gaussian.html b/classdftfe_1_1_atom_centered_spherical_function_gaussian.html new file mode 100644 index 000000000..e525b6090 --- /dev/null +++ b/classdftfe_1_1_atom_centered_spherical_function_gaussian.html @@ -0,0 +1,355 @@ + + + + + + + +DFT-FE: dftfe::AtomCenteredSphericalFunctionGaussian Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::AtomCenteredSphericalFunctionGaussian Class Reference
+
+
+ +

#include <AtomCenteredSphericalFunctionGaussian.h>

+
+Inheritance diagram for dftfe::AtomCenteredSphericalFunctionGaussian:
+
+
+ + +dftfe::AtomCenteredSphericalFunctionBase + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 AtomCenteredSphericalFunctionGaussian (double RcParameter, double RmaxParameter, unsigned int lParameter)
 
double getRadialValue (double r) const override
 Computes the Radial Value of the Function at distance r.
 
unsigned int getQuantumNumbern () const
 
double getrMinVal () const
 
std::vector< doublegetDerivativeValue (double r) const override
 Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance r.
 
- Public Member Functions inherited from dftfe::AtomCenteredSphericalFunctionBase
unsigned int getQuantumNumberl () const
 returns the l-quantum number associated with the spherical function
 
double getIntegralValue () const
 COmputes the Radial-Integral value.
 
double getRadialCutOff () const
 Returns the maximum radial distance.
 
bool isDataPresent () const
 Checks if the data is present.
 
+ + + + + + + +

+Private Attributes

double d_rMinVal
 
double d_NormalizationConstant
 
double d_Rc
 
+ + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from dftfe::AtomCenteredSphericalFunctionBase
double d_cutOff
 
unsigned int d_lQuantumNumber
 
bool d_DataPresent
 
+

Constructor & Destructor Documentation

+ +

◆ AtomCenteredSphericalFunctionGaussian()

+ +
+
+ + + + + + + + + + + + + + + + +
dftfe::AtomCenteredSphericalFunctionGaussian::AtomCenteredSphericalFunctionGaussian (double RcParameter,
double RmaxParameter,
unsigned int lParameter )
+
+ +
+
+

Member Function Documentation

+ +

◆ getDerivativeValue()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< double > dftfe::AtomCenteredSphericalFunctionGaussian::getDerivativeValue (double r) const
+
+overridevirtual
+
+ +

Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance r.

+
Parameters
+ + +
[in]rradial distance
+
+
+
Returns
vector of size 3 comprising of function value, Radial-derivative value and Radial-secon derivative at distance r.
+ +

Implements dftfe::AtomCenteredSphericalFunctionBase.

+ +
+
+ +

◆ getQuantumNumbern()

+ +
+
+ + + + + + + +
unsigned int dftfe::AtomCenteredSphericalFunctionGaussian::getQuantumNumbern () const
+
+ +
+
+ +

◆ getRadialValue()

+ +
+
+ + + + + +
+ + + + + + + +
double dftfe::AtomCenteredSphericalFunctionGaussian::getRadialValue (double r) const
+
+overridevirtual
+
+ +

Computes the Radial Value of the Function at distance r.

+
Parameters
+ + +
[in]rradial distance
+
+
+
Returns
function value at distance r
+ +

Implements dftfe::AtomCenteredSphericalFunctionBase.

+ +
+
+ +

◆ getrMinVal()

+ +
+
+ + + + + + + +
double dftfe::AtomCenteredSphericalFunctionGaussian::getrMinVal () const
+
+ +
+
+

Member Data Documentation

+ +

◆ d_NormalizationConstant

+ +
+
+ + + + + +
+ + + + +
double dftfe::AtomCenteredSphericalFunctionGaussian::d_NormalizationConstant
+
+private
+
+ +
+
+ +

◆ d_Rc

+ +
+
+ + + + + +
+ + + + +
double dftfe::AtomCenteredSphericalFunctionGaussian::d_Rc
+
+private
+
+ +
+
+ +

◆ d_rMinVal

+ +
+
+ + + + + +
+ + + + +
double dftfe::AtomCenteredSphericalFunctionGaussian::d_rMinVal
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_gaussian.png b/classdftfe_1_1_atom_centered_spherical_function_gaussian.png new file mode 100644 index 0000000000000000000000000000000000000000..82f0eef678602394695710f69a3185b39e831350 GIT binary patch literal 1127 zcmeAS@N?(olHy`uVBq!ia0y~yU=#zg12~w0S!Kw|ot7Y`mh0E(NQ4O;?~<17jC3uXZF!N8np_7w&O=1-n3jv*C{Z|B~f^jM3h z<@VcEE9?HN+jZvl{PQp>T~$`JP`BzhBj=HJf$cZG*XF(p*uEq?-T$5an(5zEBun)YV!3W#`TC;5N>ux7;iPqYH>tn8 zrLE(Bq}!nXT-L;@2ddK^eDZuz8nOO*beqp4N7HG_zVmY4D}P+zE;hH_%u284bHTaB z#1h}aS#kHb-#0aiowK(y!6$pqy7_5;IBbs?Y&>)H^0BxiOSQ6_M)qg*X9pg?^o{4a zLrIBo{F&p472?_Q*G@+)n#p}mEj88Y(pJ%FGM*lvwa##z?poge((YVUWPLi@UhBe7 zz50Q(ZWTrU^VeAyGqdAbgrD?m@ighY4J%T=ZcBGvuXiz8XW^m#M*(*i#iw}JwcShg z-c|ds#%a$}w$F9q(_bX(sJTy9{ZYR4sqM6{a^{m9)8=lnxw73f`Q*X6hNs`R9-VT2 z^^)D}2}y?f7h^2!B=24FGf&&UzPohew}+}+NAKD;e`npOKXJY8b?dLMr+29Qcj#_W zJ6XRL7PR{~xjpMTrMNxSOvNVoWa+5Pyb|GI^s+Ja{`b9G-|x<4_@MiXu|bUCx)e8q z%iljH;tU*FIt&6|7hH;AIIwyngTul$CI-)5R)$GH1uCXu3?4w~30EQ*6jlNygOV8= zmK>vsg8MD0x3{g`nmarDhRRCSlUt4{d3yG`PMRdut)glw=IK=wF>n5Dvwt2%Z{KKY z+GTH7v0Pg@pF3juA+u6jt8?K_lelb;tDbz_dbry_d7APg*BS2Vrrx$6guDxWs-(W& zaPRH=%QsbLnr)QH{Nz$C-}&5T(+is|7Yh^TxEJ&BEY9w_{N>lazw0KxeDubbB{}MG z>0gt_?k^PEl(zi#>-j&q|8SAdn@y>8yEvcEPnN1~D^{@DHBRdd- z8r~-6qdmVv)m`XPjqUfUx2(bCVNW;xJI7P??!w-iOiz7&y?EHQ^!%Ujh?uQLf@?R< zF*DOYV|FJ&Fn#aaNVC=6UpU30A6=jRqFCpt@fW@5OK&%?6f4_v!*%2RqpH7Tyw6=- zdOjVRN<1CE@r6HKxNohbH(!};@T#2IBDc7@HRp$Wmh&Gtk`%Y7^3BJSAEuSni_WAk@4s$e?H#ld7TW)S!Cku$7Uo$x olcrpWP|*Y?7hv3o{`<>bul>03YsKelz#@Uc)78&qol`;+08EGw;s5{u literal 0 HcmV?d00001 diff --git a/classdftfe_1_1_atom_centered_spherical_function_local_potential_spline-members.html b/classdftfe_1_1_atom_centered_spherical_function_local_potential_spline-members.html new file mode 100644 index 000000000..5fd8af896 --- /dev/null +++ b/classdftfe_1_1_atom_centered_spherical_function_local_potential_spline-members.html @@ -0,0 +1,104 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::AtomCenteredSphericalFunctionLocalPotentialSpline Member List
+
+ + + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_local_potential_spline.html b/classdftfe_1_1_atom_centered_spherical_function_local_potential_spline.html new file mode 100644 index 000000000..a2b4dbed5 --- /dev/null +++ b/classdftfe_1_1_atom_centered_spherical_function_local_potential_spline.html @@ -0,0 +1,193 @@ + + + + + + + +DFT-FE: dftfe::AtomCenteredSphericalFunctionLocalPotentialSpline Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::AtomCenteredSphericalFunctionLocalPotentialSpline Class Reference
+
+
+ +

#include <AtomCenteredSphericalFunctionLocalPotentialSpline.h>

+
+Inheritance diagram for dftfe::AtomCenteredSphericalFunctionLocalPotentialSpline:
+
+
+ + +dftfe::AtomCenteredSphericalFunctionSpline +dftfe::AtomCenteredSphericalFunctionBase + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 AtomCenteredSphericalFunctionLocalPotentialSpline (std::string filename, double atomAttribute, double truncationTol=1E-10, double maxAllowedTail=8.0001)
 Creates splines for radial-Local Potential from file by applying suitable BC on spline and determining the cutOff Radius.
 
- Public Member Functions inherited from dftfe::AtomCenteredSphericalFunctionSpline
double getRadialValue (double r) const override
 Computes the Radial Value of the Function at distance r.
 
std::vector< doublegetDerivativeValue (double r) const override
 Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance r.
 
double getrMinVal () const
 
- Public Member Functions inherited from dftfe::AtomCenteredSphericalFunctionBase
unsigned int getQuantumNumberl () const
 returns the l-quantum number associated with the spherical function
 
double getIntegralValue () const
 COmputes the Radial-Integral value.
 
double getRadialCutOff () const
 Returns the maximum radial distance.
 
bool isDataPresent () const
 Checks if the data is present.
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from dftfe::AtomCenteredSphericalFunctionSpline
double d_rMin
 
alglib::spline1dinterpolant d_radialSplineObject
 
- Protected Attributes inherited from dftfe::AtomCenteredSphericalFunctionBase
double d_cutOff
 
unsigned int d_lQuantumNumber
 
bool d_DataPresent
 
+

Constructor & Destructor Documentation

+ +

◆ AtomCenteredSphericalFunctionLocalPotentialSpline()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
dftfe::AtomCenteredSphericalFunctionLocalPotentialSpline::AtomCenteredSphericalFunctionLocalPotentialSpline (std::string filename,
double atomAttribute,
double truncationTol = 1E-10,
double maxAllowedTail = 8.0001 )
+
+ +

Creates splines for radial-Local Potential from file by applying suitable BC on spline and determining the cutOff Radius.

+
Parameters
+ + + + + +
[in]filenamethe location of file containing the data
[in]atomAttributethe atomic number
[in]truncationTolthe minimum function value afterwhich the function is truncated.
[in]maxAllowedTailMaximum distance before the function is evaluated as Z/r
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_local_potential_spline.png b/classdftfe_1_1_atom_centered_spherical_function_local_potential_spline.png new file mode 100644 index 0000000000000000000000000000000000000000..debd2326ff48f5248e72701c447fc8005fa946e2 GIT binary patch literal 1796 zcmcJQdr;C@6vrXQe3U)Z&01Zz$wxwMwkesGuFn(%BSgzwP2GHvN{&*d{i?|=*0D12 zL5r)T5h5yPBBrEfo0*%BF%W!A=t{dPifn6uLCF4U*LIrO+5fsT=bX>E_m6w#obTM5 zhYbldGyU8Y0)dzzgZyz22ow+U55@+dFX)jbg25V##s}#2dJt#km8614)%$kCPHm?4 z%}h>Cg8PX6a0Ym0l8Flmg@F0{<+iF!2!X6FK>GXOv!L?waSpt7T|i)eQ1G(eIgM4D zQ3H?B)&VoT$Cfun8eOIyHx%Pg>|)%Me<7pTJ^)sU!re7z+Z*m!fw@qYAXK1osL|}S z(=DX{1ZQM@DMS(A!po_(^zK*t1%C1(04gJP)^KL)Qn`dSBfMBwz#ZQk6{-1+H>}QIhsmf$SVlxU$5RtvbgC31T=3Y!G1mV4Ca`%-{$H=CRx6>)fGt7f;I1u`26#nuK& zje>P$TS6PJ|KEX-j*ES=Z9C5;I9UVx=l} zS6QQd6l@;TPR+~R4r7@sCX_&9!a~pq2{4x?CkMPs6Ik&_E(}ZmraD=>r%Bdyb?xBf=&QaycsX5U z{*b>mg`(|o;*$r_-LAon8aj*z8kb67qi3JsFO+CVSHoA!; zx}Td}6oB|6TVy0`^`{#(QvISVBMqI69+=gUPvPhHG;XO6-pQO(ydajle+$o{cJb;K zkLlaqxGNpWKUYR~9BYt-^9?&s&`Hz)Gg9P9{yf5PAQ}VJb zPoby|HQ=7P=8dwg@bnr<{XlkcjzM$5c!yK29B$M@hd{)}5`}^Z=lf=vv^8s$S2*@iWx%l6l3| zE*NDq>&VFDQUWES^A=H&2IQ z6c=S4FE>`F);8Zco)!so&Pck)-ClGi=LOyi9ASnXQ6R;-aiwZ`BqesytGDf0)fGa5 zN~_@y_4j!VVMHdwee+T8C#IwOAzZX#SS9U8@XPqf%|S`vkP#SxCG!G=YI7v{sarA^ Q{I4L$fDnIHq)$ literal 0 HcmV?d00001 diff --git a/classdftfe_1_1_atom_centered_spherical_function_projector_spline-members.html b/classdftfe_1_1_atom_centered_spherical_function_projector_spline-members.html new file mode 100644 index 000000000..8ea9d98d0 --- /dev/null +++ b/classdftfe_1_1_atom_centered_spherical_function_projector_spline-members.html @@ -0,0 +1,104 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::AtomCenteredSphericalFunctionProjectorSpline Member List
+
+ + + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_projector_spline.html b/classdftfe_1_1_atom_centered_spherical_function_projector_spline.html new file mode 100644 index 000000000..eaa588316 --- /dev/null +++ b/classdftfe_1_1_atom_centered_spherical_function_projector_spline.html @@ -0,0 +1,211 @@ + + + + + + + +DFT-FE: dftfe::AtomCenteredSphericalFunctionProjectorSpline Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::AtomCenteredSphericalFunctionProjectorSpline Class Reference
+
+
+ +

#include <AtomCenteredSphericalFunctionProjectorSpline.h>

+
+Inheritance diagram for dftfe::AtomCenteredSphericalFunctionProjectorSpline:
+
+
+ + +dftfe::AtomCenteredSphericalFunctionSpline +dftfe::AtomCenteredSphericalFunctionBase + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 AtomCenteredSphericalFunctionProjectorSpline (std::string filename, unsigned int l, int radialPower, int colIndex, int totalColSize, double truncationTol=1E-10, bool consider0thEntry=true)
 Creates splines for radial-Local Potential from file by applying suitable BC on spline and determining the cutOff Radius.
 
- Public Member Functions inherited from dftfe::AtomCenteredSphericalFunctionSpline
double getRadialValue (double r) const override
 Computes the Radial Value of the Function at distance r.
 
std::vector< doublegetDerivativeValue (double r) const override
 Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance r.
 
double getrMinVal () const
 
- Public Member Functions inherited from dftfe::AtomCenteredSphericalFunctionBase
unsigned int getQuantumNumberl () const
 returns the l-quantum number associated with the spherical function
 
double getIntegralValue () const
 COmputes the Radial-Integral value.
 
double getRadialCutOff () const
 Returns the maximum radial distance.
 
bool isDataPresent () const
 Checks if the data is present.
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from dftfe::AtomCenteredSphericalFunctionSpline
double d_rMin
 
alglib::spline1dinterpolant d_radialSplineObject
 
- Protected Attributes inherited from dftfe::AtomCenteredSphericalFunctionBase
double d_cutOff
 
unsigned int d_lQuantumNumber
 
bool d_DataPresent
 
+

Constructor & Destructor Documentation

+ +

◆ AtomCenteredSphericalFunctionProjectorSpline()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::AtomCenteredSphericalFunctionProjectorSpline::AtomCenteredSphericalFunctionProjectorSpline (std::string filename,
unsigned int l,
int radialPower,
int colIndex,
int totalColSize,
double truncationTol = 1E-10,
bool consider0thEntry = true )
+
+ +

Creates splines for radial-Local Potential from file by applying suitable BC on spline and determining the cutOff Radius.

+
Parameters
+ + + + + + + + +
[in]filenamethe location of file containing the data
[in]lquantumNumber-l
[in]radialPowermulitply the data with pow(r,radialPower)
[in]colIndexthe column Number where the function data is present
[in]totalColSizethe total number oc columns in file
[in]truncationTolthe minimum function value afterwhich the function is truncated.
[in]consider0thEntrywhether to replace the 0th fn value with the 1st value in the data.
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_projector_spline.png b/classdftfe_1_1_atom_centered_spherical_function_projector_spline.png new file mode 100644 index 0000000000000000000000000000000000000000..e199bed087e9b2f3208421a2a8089024cd34416d GIT binary patch literal 1766 zcmcJQYgE!_9LN97<}A~5N>3NdEYljbvJ)nesVCFfpA-!x6ErOsh6bpJns{lg)M{#? ziHKqsE(;SYlOl|6vl|d8DN9szDqhjdP*a)1w%Y0JY_GQG#q<0wZ+_?bexC1hIsoZo zG2doB000)?ZZ8x7%z+!@Y%>$%UeR`xXFQe%_y&2;%*+_W-a$Pj?;&s7W=QN(x~#Xo zz1>*fD&NO8_U0v^kb!_P|FB?RFkbsA_Rhty7os>ghkq${;X9geqLb$?GN-z3?$#3Vbv4X`)1%#1}( zV|q^epQfp|L?{G^fON061`!T@3uh<$Y*d)skHppGvHL^X-VOKkDwDzJkhO2ZOs}_A zsLm$w9{Bo*9ncBN(kMsJc3dvEqr7z-mDbBTGxw1F=&qX4zG~8UV*%>FXn9NgL`%oN z((=+@Nhx5P6N{NWg0a$aep+>=YH{c;^>v$LVMT)y*w%NVYK2YSS$Gb1NIX3vmZsqw zx7`kYg3FCbPr#6h#lIB6a$}Me`crx(Yamyoxt3E{|NY??f3gkb_nao$$jF939itk z=BM?80|69*+fcSdxbO0w21t?&Y|!*H<>#|C3t4MFzE+8<)FBP}H#MBdoI+Y5>NymU z6xki0+rD}h6@|YM6=aEt*_%c5eqd#R7C6L){a?V$qNpJdOSljQ7oTEQzz8{n8_RZ% z!Yy7cXE2NogTooEh7oe|dCOFfGa*BEHKho)t9}?2iQ5+^aropk*R8igtLF?SLMvE% zr;kKHU0IuIMqn_lHgEfT+WYP!g>jEKBCfP7Cu3}0aAYYrwSEK_oh3R}eU~t7j&)KA zm(V$y16R3ujTjr@1xmJKg5mBs7Mr^XT`P@P-lWIOP;}&eKg+By={sFxnMddt7@9yF z3e&+gmH$i<8Y_Ml;rxb$E@=Mx!Q)U5Ts7XuDtFd*dfZ*^$IklBdoe+oX~8*~)D*iR z$acequw=S{BkJcS{AoXY%j}pHEftZ_C+FR^SK7&Qmb7)p-v~tBdOOthh&5n7z;jbo zRw~5#@sk(JXa!0e7nN4MGB=R?!~D3EKfu~jZ3-b{zgF?PCu^?GD>-{iC{!KN0|XBfSKk5hs2J-hy+~ literal 0 HcmV?d00001 diff --git a/classdftfe_1_1_atom_centered_spherical_function_sinc-members.html b/classdftfe_1_1_atom_centered_spherical_function_sinc-members.html new file mode 100644 index 000000000..0042e0f36 --- /dev/null +++ b/classdftfe_1_1_atom_centered_spherical_function_sinc-members.html @@ -0,0 +1,106 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::AtomCenteredSphericalFunctionSinc Member List
+
+ + + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_sinc.html b/classdftfe_1_1_atom_centered_spherical_function_sinc.html new file mode 100644 index 000000000..5adbf8a8e --- /dev/null +++ b/classdftfe_1_1_atom_centered_spherical_function_sinc.html @@ -0,0 +1,355 @@ + + + + + + + +DFT-FE: dftfe::AtomCenteredSphericalFunctionSinc Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::AtomCenteredSphericalFunctionSinc Class Reference
+
+
+ +

#include <AtomCenteredSphericalFunctionSinc.h>

+
+Inheritance diagram for dftfe::AtomCenteredSphericalFunctionSinc:
+
+
+ + +dftfe::AtomCenteredSphericalFunctionBase + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 AtomCenteredSphericalFunctionSinc (double RcParameter, double RmaxParameter, unsigned int lParameter)
 
double getRadialValue (double r) const override
 Computes the Radial Value of the Function at distance r.
 
unsigned int getQuantumNumbern () const
 
double getrMinVal () const
 
std::vector< doublegetDerivativeValue (double r) const override
 Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance r.
 
- Public Member Functions inherited from dftfe::AtomCenteredSphericalFunctionBase
unsigned int getQuantumNumberl () const
 returns the l-quantum number associated with the spherical function
 
double getIntegralValue () const
 COmputes the Radial-Integral value.
 
double getRadialCutOff () const
 Returns the maximum radial distance.
 
bool isDataPresent () const
 Checks if the data is present.
 
+ + + + + + + +

+Private Attributes

double d_rMinVal
 
double d_NormalizationConstant
 
double d_Rc
 
+ + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from dftfe::AtomCenteredSphericalFunctionBase
double d_cutOff
 
unsigned int d_lQuantumNumber
 
bool d_DataPresent
 
+

Constructor & Destructor Documentation

+ +

◆ AtomCenteredSphericalFunctionSinc()

+ +
+
+ + + + + + + + + + + + + + + + +
dftfe::AtomCenteredSphericalFunctionSinc::AtomCenteredSphericalFunctionSinc (double RcParameter,
double RmaxParameter,
unsigned int lParameter )
+
+ +
+
+

Member Function Documentation

+ +

◆ getDerivativeValue()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< double > dftfe::AtomCenteredSphericalFunctionSinc::getDerivativeValue (double r) const
+
+overridevirtual
+
+ +

Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance r.

+
Parameters
+ + +
[in]rradial distance
+
+
+
Returns
vector of size 3 comprising of function value, Radial-derivative value and Radial-secon derivative at distance r.
+ +

Implements dftfe::AtomCenteredSphericalFunctionBase.

+ +
+
+ +

◆ getQuantumNumbern()

+ +
+
+ + + + + + + +
unsigned int dftfe::AtomCenteredSphericalFunctionSinc::getQuantumNumbern () const
+
+ +
+
+ +

◆ getRadialValue()

+ +
+
+ + + + + +
+ + + + + + + +
double dftfe::AtomCenteredSphericalFunctionSinc::getRadialValue (double r) const
+
+overridevirtual
+
+ +

Computes the Radial Value of the Function at distance r.

+
Parameters
+ + +
[in]rradial distance
+
+
+
Returns
function value at distance r
+ +

Implements dftfe::AtomCenteredSphericalFunctionBase.

+ +
+
+ +

◆ getrMinVal()

+ +
+
+ + + + + + + +
double dftfe::AtomCenteredSphericalFunctionSinc::getrMinVal () const
+
+ +
+
+

Member Data Documentation

+ +

◆ d_NormalizationConstant

+ +
+
+ + + + + +
+ + + + +
double dftfe::AtomCenteredSphericalFunctionSinc::d_NormalizationConstant
+
+private
+
+ +
+
+ +

◆ d_Rc

+ +
+
+ + + + + +
+ + + + +
double dftfe::AtomCenteredSphericalFunctionSinc::d_Rc
+
+private
+
+ +
+
+ +

◆ d_rMinVal

+ +
+
+ + + + + +
+ + + + +
double dftfe::AtomCenteredSphericalFunctionSinc::d_rMinVal
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_sinc.png b/classdftfe_1_1_atom_centered_spherical_function_sinc.png new file mode 100644 index 0000000000000000000000000000000000000000..010a05142775db8af164221243fc26995d47e224 GIT binary patch literal 970 zcmV;*12z1KP)vTJr#LVva2S`&=-}Ys|Ns9r%~qrU000SeQchC<|NsC0|NsC0Hv*f~000A3 zNklZw6*du(tXlXY zB3ZTYMMSd7;Fn#c{fUVAog?G;VLi1M5%D@5=p}*eF!USP7X_aByoi|JoqdFVL^cWM z7>qWHCvNfGlDiP^@SgllLmu#tW8ZUirPwB}RmFJ-ZJ?&BC;OaeMsP%l^ z>{SG9TeYgbs`(>y7emMI&JEawe{5h*zdx!sT_J}HeI|XvFEl&X+_t3KCEDKk8}YrF z2~HPTWa9BhkFGqUa3cI!-mLHIcw)D<)?1dYLKtsqm@;+uFUyzsrfn$CbNtgrpR)?r zOa{Fs#_OFmD*i`&*J<0OZeS0mKeqj+(;se)%eRXw1R1#|#s3;#)tmu)zWdMkbCx0^ zPRdVsedAj;;*Y_;z@OiJ)y8TIH4V4ptIppY_!ey~^>%IdtIYKhZSOk2YqI9Ea}~Dk z{PynG@4~e6i->%nHy?Zvk^e~xUqs|HCC3*L`A`dAL?o*gzKBRx{qVPK+tLaEzSJK8 z*=OMHKo7!ul8PzRL)B1d^t22Fxu~!jXC)iijS2cfx?qbjj zoC}A4Y+z2mKdLufA;*ULO!|ahXm+l-ZArIFw7v5;;(Id_oW8`PixGeH=*lw+C&HiQ z&APviCw6OVy=AFi<>97ADN}BuYkiAv+Klo%$3JcKIjeBZWYBA3yxzZ};(vi3OuWMn z+y2w(54T2_jw6fedoa2y{zrV}<`F->`_K4umO|1=`3bLYe9K1sG1&L`!QEGFthP|o zaBTol=EuVo=|Gw`cI(C&_=TZ{06^lKf7| s@k#PKEqs#9s)bLIS@pv&rIfV#4`5c$@9*eiaR2}S07*qoM6N<$g2Bk}M*si- literal 0 HcmV?d00001 diff --git a/classdftfe_1_1_atom_centered_spherical_function_spline-members.html b/classdftfe_1_1_atom_centered_spherical_function_spline-members.html new file mode 100644 index 000000000..c08a0e834 --- /dev/null +++ b/classdftfe_1_1_atom_centered_spherical_function_spline-members.html @@ -0,0 +1,103 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::AtomCenteredSphericalFunctionSpline Member List
+
+ + + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_spline.html b/classdftfe_1_1_atom_centered_spherical_function_spline.html new file mode 100644 index 000000000..d7073c14c --- /dev/null +++ b/classdftfe_1_1_atom_centered_spherical_function_spline.html @@ -0,0 +1,284 @@ + + + + + + + +DFT-FE: dftfe::AtomCenteredSphericalFunctionSpline Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::AtomCenteredSphericalFunctionSpline Class Reference
+
+
+ +

#include <AtomCenteredSphericalFunctionSpline.h>

+
+Inheritance diagram for dftfe::AtomCenteredSphericalFunctionSpline:
+
+
+ + +dftfe::AtomCenteredSphericalFunctionBase +dftfe::AtomCenteredSphericalFunctionCoreDensitySpline +dftfe::AtomCenteredSphericalFunctionLocalPotentialSpline +dftfe::AtomCenteredSphericalFunctionProjectorSpline +dftfe::AtomCenteredSphericalFunctionValenceDensitySpline + +
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

double getRadialValue (double r) const override
 Computes the Radial Value of the Function at distance r.
 
std::vector< doublegetDerivativeValue (double r) const override
 Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance r.
 
double getrMinVal () const
 
- Public Member Functions inherited from dftfe::AtomCenteredSphericalFunctionBase
unsigned int getQuantumNumberl () const
 returns the l-quantum number associated with the spherical function
 
double getIntegralValue () const
 COmputes the Radial-Integral value.
 
double getRadialCutOff () const
 Returns the maximum radial distance.
 
bool isDataPresent () const
 Checks if the data is present.
 
+ + + + + + + + + + + + +

+Protected Attributes

double d_rMin
 
alglib::spline1dinterpolant d_radialSplineObject
 
- Protected Attributes inherited from dftfe::AtomCenteredSphericalFunctionBase
double d_cutOff
 
unsigned int d_lQuantumNumber
 
bool d_DataPresent
 
+

Member Function Documentation

+ +

◆ getDerivativeValue()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< double > dftfe::AtomCenteredSphericalFunctionSpline::getDerivativeValue (double r) const
+
+overridevirtual
+
+ +

Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance r.

+
Parameters
+ + +
[in]rradial distance
+
+
+
Returns
vector of size 3 comprising of function value, Radial-derivative value and Radial-secon derivative at distance r.
+ +

Implements dftfe::AtomCenteredSphericalFunctionBase.

+ +
+
+ +

◆ getRadialValue()

+ +
+
+ + + + + +
+ + + + + + + +
double dftfe::AtomCenteredSphericalFunctionSpline::getRadialValue (double r) const
+
+overridevirtual
+
+ +

Computes the Radial Value of the Function at distance r.

+
Parameters
+ + +
[in]rradial distance
+
+
+
Returns
function value at distance r
+ +

Implements dftfe::AtomCenteredSphericalFunctionBase.

+ +
+
+ +

◆ getrMinVal()

+ +
+
+ + + + + + + +
double dftfe::AtomCenteredSphericalFunctionSpline::getrMinVal () const
+
+ +
+
+

Member Data Documentation

+ +

◆ d_radialSplineObject

+ +
+
+ + + + + +
+ + + + +
alglib::spline1dinterpolant dftfe::AtomCenteredSphericalFunctionSpline::d_radialSplineObject
+
+protected
+
+ +
+
+ +

◆ d_rMin

+ +
+
+ + + + + +
+ + + + +
double dftfe::AtomCenteredSphericalFunctionSpline::d_rMin
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_spline.png b/classdftfe_1_1_atom_centered_spherical_function_spline.png new file mode 100644 index 0000000000000000000000000000000000000000..0807d08a993589a36034393877a53d2ee1ed41e3 GIT binary patch literal 3408 zcmdT{c~nzZ8b_o96f7-P1W}=_3YHu}7?vUgH$Wp!W2S`D^B!nS0Lt?)u&L-S2+C z-@PyQSfKBQcelK&qocFI@5tdVbadV!L-orB>mhk4I1mdJmdE^qy;oLNpz6fTd|L6n z+iniKzc#0IPYe$aL;cR&kXz80;n^<&ztn-+tI1Wj?2(R+@u1(~1HqZ=W}gnG41E6K zJ8f~*dDmA~Mq*+dnm>LiIc&&?IIF`2%I-h3)6?@eW;?Vy7#}iuA4)I(I0kG20G2)7 zc-^{nDpL*sPldg8zWbPL~HFd;ug+r-jF9jjaU2{VWB?|3PaT(%Y65$ zJ-Zms`IGJ)p@Qjg@fiVGRpPhO`(AQikq?qpG+-ZIG5dTwXQ5-WYX~rZN4o)46byAC z>BG#?;z~?qEk(~NNAzP9{A)*1(tT9c-wGanwrVnUITBX2T z_($-fUcXT{Tgq}-Ffe$$z(%OMo5Ev}a6&6@y~Hd>mR)Sr_d#Fz=wxyoDkm%JTC9Y*vN(OJ+m_r_ z#g zy8FQn?cd+l+MWUcHd^~Ah#GKehxUlGqs*htvv24_b{k~c#A^xzw}Y$dxh{S4h!s!d-FYs^wm6Q=`i~j?G4tZ@|W} z@z<2?J!;Y}8x16ecYEbl^u^DW!&jI~$eMz2MV^SmK+9}9S>uf^L+;4ii&MDeCC|Bm z6f4I`uYuo^26}&-793Zdny&MNQBD}6X^huFZ89=unpoLpN!m)VBrta@y1{%m$j+Bu ztG!0ToBQV!sCfMFPHD?vY^u;HU{}N*ei*v;h&G@qI;4(aqql8Yv-8! z?r5&~yi(HOe!BI=m?Ih)hMvW0UAVB1p2clLt2{qwh*4DYek5$IEbTmAQY0kP@nspf z=a&$XPoIIzvo9ztIOGy2cK3`09rrukHalAm73 zq}G|lC>{+gGL#buG=|OE{NjgWuc!bes6s5;-}25-%k$BDXWQ$?Gn)rz1Rq(UcAdx) zd#Q02PI)3poR~ul@}NdFcSj@8H0By+h#$Jr81k;=8&vg}r6Q`hQw|a zUnD+jBh-=?zd_;K7|9j!!=~4k)Tr>^pf(&$TciDb)WF+rP~Hxq(0Z8qy#|fe!v?D# zg5aq5K0KLAAaRhc5I=r5UQpo=?#y}^29p*%{} z6wQAB?=2FohwWgzQX+FOX0tv?+nyaYVgDz|(_Yt@tb%IrCOEZF)dK*_t3pG!&G+|0 zj;dm#ii;s3%?+VIK$1!3-vxf~05N%mx+)Yi+2!=hT-(X+5~ zggE7bQ=HPa(bJ4oez3tvAQY+n7f&~)H3v%i=amZl5JLoyeMqXmI9OkKTu@sn=kVk4 zh{U9pQWeI*B1QN|TI+Y*J!Z9_1Z}tHS#xJ;Zk#LtgC-h{?nZqo|B}Ac>dnH)RRftL z3Lg}_vv_KW3^2u*$X-Pr!8F!_L!kz4Cyh#Ec7nOS>xEm!*4sFtNbQ5Q`?fjGd4*$6 zjAI+_kMVzTVRg-aRIRE=L^p}RW|qsy2o2qG^(znI$b-+BEMd95+=;%_>5Y2wn-49t z;TL>?)gy&xb@SbM8XajG>rAFh7eTrNejP@pe?56b?Gc7d_mC|6_yp0h4YT)v{)B|% zk3=FacTYnEupmf>u`q=d6_{xjkGaS*Q{6`pyKbWN6TkWW);}v%gjsX1B9ZHzsTaG- zJ*Qb$t%EwGvlLd3l8`@`rk-*l{!uvPm@w3My6oUEiw?qiy%>*YScTpRTj{buC6we25Y#r z;jVNs+@qx{K0f3gm;KAUm6{Tb#UAYoD2m^*e6oz!41&4iYb&FXakL;aRStdW2YtM| z#E}d+zqUha89cv_Y_*mDq=)2uAS4DW55DRZ>pIXX2w30r_yl zw&Q)VEY7M0{fdCm5tq1>tpdtK2^8NE!2GzUn-Kuyl+B1Ix$sS!AwahaBS%57Dn5NV zqrVB9t6iU`p1D$snXUav=9T#mlwS$-@ak`!lxyDgq$ALaerl5j{;ck!hF73>*nsmO zQqyVT2jQPNJh^G3W?m=SP%6+UsucO75XmIn`Y)1tC| + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::AtomCenteredSphericalFunctionValenceDensitySpline Member List
+
+ + + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_valence_density_spline.html b/classdftfe_1_1_atom_centered_spherical_function_valence_density_spline.html new file mode 100644 index 000000000..d8c62aa72 --- /dev/null +++ b/classdftfe_1_1_atom_centered_spherical_function_valence_density_spline.html @@ -0,0 +1,187 @@ + + + + + + + +DFT-FE: dftfe::AtomCenteredSphericalFunctionValenceDensitySpline Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::AtomCenteredSphericalFunctionValenceDensitySpline Class Reference
+
+
+ +

#include <AtomCenteredSphericalFunctionValenceDensitySpline.h>

+
+Inheritance diagram for dftfe::AtomCenteredSphericalFunctionValenceDensitySpline:
+
+
+ + +dftfe::AtomCenteredSphericalFunctionSpline +dftfe::AtomCenteredSphericalFunctionBase + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 AtomCenteredSphericalFunctionValenceDensitySpline (std::string filename, double truncationTol=1E-10, bool consider0thEntry=true)
 Creates splines for radial-Valence Density from file by applying suitable BC on spline and determining the cutOff Radius.
 
- Public Member Functions inherited from dftfe::AtomCenteredSphericalFunctionSpline
double getRadialValue (double r) const override
 Computes the Radial Value of the Function at distance r.
 
std::vector< doublegetDerivativeValue (double r) const override
 Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance r.
 
double getrMinVal () const
 
- Public Member Functions inherited from dftfe::AtomCenteredSphericalFunctionBase
unsigned int getQuantumNumberl () const
 returns the l-quantum number associated with the spherical function
 
double getIntegralValue () const
 COmputes the Radial-Integral value.
 
double getRadialCutOff () const
 Returns the maximum radial distance.
 
bool isDataPresent () const
 Checks if the data is present.
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from dftfe::AtomCenteredSphericalFunctionSpline
double d_rMin
 
alglib::spline1dinterpolant d_radialSplineObject
 
- Protected Attributes inherited from dftfe::AtomCenteredSphericalFunctionBase
double d_cutOff
 
unsigned int d_lQuantumNumber
 
bool d_DataPresent
 
+

Constructor & Destructor Documentation

+ +

◆ AtomCenteredSphericalFunctionValenceDensitySpline()

+ +
+
+ + + + + + + + + + + + + + + + +
dftfe::AtomCenteredSphericalFunctionValenceDensitySpline::AtomCenteredSphericalFunctionValenceDensitySpline (std::string filename,
double truncationTol = 1E-10,
bool consider0thEntry = true )
+
+ +

Creates splines for radial-Valence Density from file by applying suitable BC on spline and determining the cutOff Radius.

+
Parameters
+ + + + +
[in]filenamethe location of file containing the data
[in]truncationTolthe minimum function value afterwhich the function is truncated.
[in]consider0thEntrywhether to replace the 0th fn value with the 1st value in the data.
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_valence_density_spline.png b/classdftfe_1_1_atom_centered_spherical_function_valence_density_spline.png new file mode 100644 index 0000000000000000000000000000000000000000..9e4a85f38e50497264d1432514f8bcf1a693802c GIT binary patch literal 1853 zcmcK5dr(qY90zc;vQ4w?wUwEg=Bq3$5#5!fF)h6!`OX|8vo$L_ zwd|c~YFKEbAg#~LkQ7T&mWR3dNGd;hs-&gYz)?zh9! zP=BR93#UX{On5oZ6R`+g+_bE1{YF> zqhK!NUOo{N28i|!J2WzQqnqiyN3J01*8^6-6i1(7dAn%XJ0S0Kpq?aF9qQ70=}TP% z+4dcDCGADDp$w<@P~58eqvg=Tfy?xzT(Xijc9)t#?3`>!qSyF8=t*aT#`FUV&$d^Y zDIE3#BzHv*u34GX;hA24LRw7PaD%cJmBrlEkuE+Mwht-RY?*$T+ivxWJzu#$U#M(v zu`hD|=`#3SCT_GG2(8W}0vm%AlMMA6yX4LkMp68Y#QAn{2Uup&2_s4@$22Zx8Eupv z8EFA925msK2~tQb7cY_&$ETA~%`vN-lqoYyv$noNbq;&&R=BR$t^wabTfSQ|q`e;6o}1OV;@nTKvVq1RVj? zzv+NJlmCB$B#kJsqx`64YMjZyljUzQWFWdiZx}vHgzqQIdL2(E@G${?%X?ky0Mhm? zHSD43ee7p4+v<^e94GS`;u5vKH=Rf2D-Uxpof7_(?fG4{ct8wczv`?Qkz!=!T!K7R#QPA?HC{zE+^o~s>oP060 zu&qJlJVN4>hI;XxE6)Wi@uBT$W53sVl4nG+k^6WOu7OT<$0uk}H_0vC<`Ohd+!sbO9b{IkHc4W3UbwX# z&M%{6vHh}HzDl?R_*=?wo~!aX>`MU4d^w^uCf3TBWejD+09_QarRx}RM5*a}{YjAd z#|hdGxN>M?YLe=dx4>X3GN;xKaQi?=n-N0OBg%}xKX_RL=A`Gg~EaWkw(W@kP>8!Ugu~AN~hb6pPVej;{-`{PJmPp@h z(QB9ClBoB^`w8XE;A^;~@lCE>LPaV$hLfQ>j%Bv?B>KK*mGzhHd64#*mFd8Lv6@Sl z-rpY6dh*f6E^4f~-Xw9-;{&kjFw}!w&mjC)4kzZ*lHdcasRvmHFH~GrTxqk&a|G1{ z>}2*sR4q9XzDXInqpl2Fj3O&qi*E`&xDNe9?Xju-8p_aI&|Q^;VmGq8CR_}O0{RQk z%#}N8WQ0sh164M4rES)ok?4&XhN~~OPxP*mnFhsaw{N~Hd1rBI!3tJlFou4694*0T zqCJ?;a#-PimQq5ieN~btAR`nT)zQ>Y8GF2knFXpN?cs&wd+-J2I-}PNoj@Ce7KeP# zQ1LTZCay5@8Dg35k=F_ASqy5qj^ed^=6Qq7!|M~gN9FDd@Hf>fGu?R8k2*@*DsQ*O z?$+SYix|0`inr2Ce3bHm9=4qqTUZ+trOepZm@4EA#YZpJWcMHuYO|f)NCYPE%L1Kn jhw=&pj@ZByjSlHf#LLzG(O%Gx4hC%7;c;*4-jsg;e#Xkt literal 0 HcmV?d00001 diff --git a/classdftfe_1_1_atom_centered_spherical_function_z_over_r-members.html b/classdftfe_1_1_atom_centered_spherical_function_z_over_r-members.html new file mode 100644 index 000000000..48a91fd0e --- /dev/null +++ b/classdftfe_1_1_atom_centered_spherical_function_z_over_r-members.html @@ -0,0 +1,104 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::AtomCenteredSphericalFunctionZOverR Member List
+
+ + + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_z_over_r.html b/classdftfe_1_1_atom_centered_spherical_function_z_over_r.html new file mode 100644 index 000000000..ba9bac5f8 --- /dev/null +++ b/classdftfe_1_1_atom_centered_spherical_function_z_over_r.html @@ -0,0 +1,311 @@ + + + + + + + +DFT-FE: dftfe::AtomCenteredSphericalFunctionZOverR Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::AtomCenteredSphericalFunctionZOverR Class Reference
+
+
+ +

#include <AtomCenteredSphericalFunctionZOverR.h>

+
+Inheritance diagram for dftfe::AtomCenteredSphericalFunctionZOverR:
+
+
+ + +dftfe::AtomCenteredSphericalFunctionBase + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 AtomCenteredSphericalFunctionOneOverR (double Z, double Rtail, unsigned int l)
 
double getRadialValue (double r) const override
 Computes the Radial Value of the Function at distance r.
 
std::vector< doublegetDerivativeValue (double r) const override
 Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance r.
 
double getrMinVal () const
 
- Public Member Functions inherited from dftfe::AtomCenteredSphericalFunctionBase
unsigned int getQuantumNumberl () const
 returns the l-quantum number associated with the spherical function
 
double getIntegralValue () const
 COmputes the Radial-Integral value.
 
double getRadialCutOff () const
 Returns the maximum radial distance.
 
bool isDataPresent () const
 Checks if the data is present.
 
+ + + + + +

+Private Attributes

double d_rMin
 
double d_Zval
 
+ + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from dftfe::AtomCenteredSphericalFunctionBase
double d_cutOff
 
unsigned int d_lQuantumNumber
 
bool d_DataPresent
 
+

Member Function Documentation

+ +

◆ AtomCenteredSphericalFunctionOneOverR()

+ +
+
+ + + + + + + + + + + + + + + + +
dftfe::AtomCenteredSphericalFunctionZOverR::AtomCenteredSphericalFunctionOneOverR (double Z,
double Rtail,
unsigned int l )
+
+ +
+
+ +

◆ getDerivativeValue()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< double > dftfe::AtomCenteredSphericalFunctionZOverR::getDerivativeValue (double r) const
+
+overridevirtual
+
+ +

Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance r.

+
Parameters
+ + +
[in]rradial distance
+
+
+
Returns
vector of size 3 comprising of function value, Radial-derivative value and Radial-secon derivative at distance r.
+ +

Implements dftfe::AtomCenteredSphericalFunctionBase.

+ +
+
+ +

◆ getRadialValue()

+ +
+
+ + + + + +
+ + + + + + + +
double dftfe::AtomCenteredSphericalFunctionZOverR::getRadialValue (double r) const
+
+overridevirtual
+
+ +

Computes the Radial Value of the Function at distance r.

+
Parameters
+ + +
[in]rradial distance
+
+
+
Returns
function value at distance r
+ +

Implements dftfe::AtomCenteredSphericalFunctionBase.

+ +
+
+ +

◆ getrMinVal()

+ +
+
+ + + + + + + +
double dftfe::AtomCenteredSphericalFunctionZOverR::getrMinVal () const
+
+ +
+
+

Member Data Documentation

+ +

◆ d_rMin

+ +
+
+ + + + + +
+ + + + +
double dftfe::AtomCenteredSphericalFunctionZOverR::d_rMin
+
+private
+
+ +
+
+ +

◆ d_Zval

+ +
+
+ + + + + +
+ + + + +
double dftfe::AtomCenteredSphericalFunctionZOverR::d_Zval
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1_atom_centered_spherical_function_z_over_r.png b/classdftfe_1_1_atom_centered_spherical_function_z_over_r.png new file mode 100644 index 0000000000000000000000000000000000000000..f2a82ecbd5012e8fd931273d159e3b7d6126cea5 GIT binary patch literal 1097 zcmeAS@N?(olHy`uVBq!ia0y~yU=#qd12~w0BJQ@p!)<3Q%~sV~Fn;5;l$v$f^2o!g zeer+KO}nT1Bbp^Q;&ti2t>0|FD7Nt}@wd~>VN8)XO7W=QT0hVA_mX}2dlTPCxY=cH z&+Ul4Q$Hi0&1hHa0~lS8ir7R?wbgI4hg`bLL~t%scB+W}YwSx|nt1 z>CgR*ElnvK*EGu5&EwwIaAC%kH8ltKrlq?-6FU)bI9hYYxiiZpjp7ZF&7XRhDGO`ph}s4A5{c`#?*7M>^R#cW3GzZoaozapSLA$=#`(Y?$Y zqnG(x#<5?#+@8HSzWwm-9sdhX^E|bVDZF0zAzJO)gwK4xj_Nv3s!xdgHR;LzZA?y= zLLEGI?PKHctZNn(n6wTmz{TNtUHAkjCSv&+YFhs?I7BisHk_%e>*8ow$Ha8t%acGC zE)E8rwFL|Xq5=#cp-=~g9YCRQM#cwP3Jfuz+{P}PpzeiBg`Z7<) z=Vv$eT-+lDP7QL8y)GqG9*$OUp6-9ig#Yzp-ipVMa%E4gKe7Yg!UGObcMjwYTm1M82x$!>I{vMCZ zR8QCJGww)!8SOLm>I9Wd0c|?dOeY*ZUVKnYK)o08 zlU|#yG1{LRHFsuLHG9%_pZl*qT6N5`i;@0&>c)&6ck6egwtbRax1&t6EqdAfgV_@b zYT8z&DNOqE{%wBx^d$#Dq0Bh($**jnP-qx5*nt9C3X@{|6>e|KO}+kE-si-<1@7z- Rz`}xo!PC{xWt~$(69B0c_2>Wq literal 0 HcmV?d00001 diff --git a/classdftfe_1_1_atom_pseudo_wavefunctions-members.html b/classdftfe_1_1_atom_pseudo_wavefunctions-members.html new file mode 100644 index 000000000..aa4d23867 --- /dev/null +++ b/classdftfe_1_1_atom_pseudo_wavefunctions-members.html @@ -0,0 +1,106 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::AtomPseudoWavefunctions Member List
+
+ + + + + diff --git a/classdftfe_1_1_atom_pseudo_wavefunctions.html b/classdftfe_1_1_atom_pseudo_wavefunctions.html new file mode 100644 index 000000000..c631876b1 --- /dev/null +++ b/classdftfe_1_1_atom_pseudo_wavefunctions.html @@ -0,0 +1,343 @@ + + + + + + + +DFT-FE: dftfe::AtomPseudoWavefunctions Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::AtomPseudoWavefunctions Class Reference
+
+
+ +

#include <AtomPseudoWavefunctions.h>

+
+Inheritance diagram for dftfe::AtomPseudoWavefunctions:
+
+
+ + +dftfe::AtomCenteredSphericalFunctionBase + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 AtomPseudoWavefunctions (std::string filename, unsigned int n, unsigned int l)
 
double getRadialValue (double r) const override
 Computes the Radial Value of the Function at distance r.
 
unsigned int getQuantumNumbern () const
 
double getrMinVal () const
 
- Public Member Functions inherited from dftfe::AtomCenteredSphericalFunctionBase
unsigned int getQuantumNumberl () const
 returns the l-quantum number associated with the spherical function
 
double getIntegralValue () const
 COmputes the Radial-Integral value.
 
double getRadialCutOff () const
 Returns the maximum radial distance.
 
bool isDataPresent () const
 Checks if the data is present.
 
virtual std::vector< doublegetDerivativeValue (double r) const =0
 Computes the Radial Value, Radial-deriative and Radial-second derivative of the Function at distance r.
 
+ + + + + + + + + +

+Private Attributes

unsigned int d_nQuantumNumber
 
unsigned int d_lQuantumNumber
 
double d_rMin
 
alglib::spline1dinterpolant d_radialSplineObject
 
+ + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from dftfe::AtomCenteredSphericalFunctionBase
double d_cutOff
 
unsigned int d_lQuantumNumber
 
bool d_DataPresent
 
+

Constructor & Destructor Documentation

+ +

◆ AtomPseudoWavefunctions()

+ +
+
+ + + + + + + + + + + + + + + + +
dftfe::AtomPseudoWavefunctions::AtomPseudoWavefunctions (std::string filename,
unsigned int n,
unsigned int l )
+
+ +
+
+

Member Function Documentation

+ +

◆ getQuantumNumbern()

+ +
+
+ + + + + + + +
unsigned int dftfe::AtomPseudoWavefunctions::getQuantumNumbern () const
+
+ +
+
+ +

◆ getRadialValue()

+ +
+
+ + + + + +
+ + + + + + + +
double dftfe::AtomPseudoWavefunctions::getRadialValue (double r) const
+
+overridevirtual
+
+ +

Computes the Radial Value of the Function at distance r.

+
Parameters
+ + +
[in]rradial distance
+
+
+
Returns
function value at distance r
+ +

Implements dftfe::AtomCenteredSphericalFunctionBase.

+ +
+
+ +

◆ getrMinVal()

+ +
+
+ + + + + + + +
double dftfe::AtomPseudoWavefunctions::getrMinVal () const
+
+ +
+
+

Member Data Documentation

+ +

◆ d_lQuantumNumber

+ +
+
+ + + + + +
+ + + + +
unsigned int dftfe::AtomPseudoWavefunctions::d_lQuantumNumber
+
+private
+
+ +
+
+ +

◆ d_nQuantumNumber

+ +
+
+ + + + + +
+ + + + +
unsigned int dftfe::AtomPseudoWavefunctions::d_nQuantumNumber
+
+private
+
+ +
+
+ +

◆ d_radialSplineObject

+ +
+
+ + + + + +
+ + + + +
alglib::spline1dinterpolant dftfe::AtomPseudoWavefunctions::d_radialSplineObject
+
+private
+
+ +
+
+ +

◆ d_rMin

+ +
+
+ + + + + +
+ + + + +
double dftfe::AtomPseudoWavefunctions::d_rMin
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1_atom_pseudo_wavefunctions.png b/classdftfe_1_1_atom_pseudo_wavefunctions.png new file mode 100644 index 0000000000000000000000000000000000000000..491e0b0f2289152e7391a626298801835ae62870 GIT binary patch literal 915 zcmV;E18n?>P)vTJr#LVva2S`&=-}Ys|Ns9r%~qrU000SeQchC<|NsC0|NsC0Hv*f~0009X zNklyGOn41@@kKir^Oo-2C~KS#C* zCpUV|{EkcfVaQd8S9o{xEkmC0^R~a&sx7fyxSAE`Ce((qTz#?6j%rj~oTlZwjVnEU zh_P1@RJUqW`K$VK=tB%0zfW$!8h&y|*6nam3$2ibc1`16cIdV1k__^WlZbGPmBr?t6WSE(h!d{W&dQ)j}L1pvVXVx)2SKOdx*;gnYk9p{}^B8oB_K(`}g>3 zmLwvB)I9F-^-tN1KL`5&e|`2<87n2!6x@!lDu16~EYa3dyQ|(?n(HCjeyIFIku}#& zOKe^F?b$E)!m{#p-!U_OB zsV@MCtJwHoU!nP9S+b*U0 zB59tp#qpKvD@iWY`?6=>Np(e%vtG?V-NSF;m*70ev(fFjBKi*gdRa*FXL^XAxBb11 z=WTiJ>V%)$O1E0BmN{)$lNx96N3-g;ZGiHY!%|~v7fIgf8GfF`?0)|oBCoF;MopDw zIT#tYvp@HxMwvlV*CVi}_ + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace > Member List
+
+
+ +

This is the complete list of members for dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
applyAllReduceOnCconjtransX(dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &sphericalFunctionKetTimesVectorParFlattened, const bool skipComm=false)dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
applyCconjtransOnX(const ValueType *X, const std::pair< unsigned int, unsigned int > cellRange)dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
applyCOnVCconjtransX(ValueType *Xout, const std::pair< unsigned int, unsigned int > cellRange)dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
applyCVCconjtransOnX(const dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &src, const unsigned int kPointIndex, const CouplingStructure couplingtype, const dftfe::utils::MemoryStorage< ValueType, memorySpace > &couplingMatrix, dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &sphericalFunctionKetTimesVectorParFlattened, dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &dst)dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
applyVCconjtransOnX(const dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &src, const unsigned int kPointIndex, const CouplingStructure couplingtype, const dftfe::utils::MemoryStorage< ValueType, memorySpace > &couplingMatrix, dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &sphericalFunctionKetTimesVectorParFlattened, const bool flagScaleInternalMatrix=false)dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
applyVOnCconjtransX(const CouplingStructure couplingtype, const dftfe::utils::MemoryStorage< ValueType, memorySpace > &couplingMatrix, dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &sphericalFunctionKetTimesVectorParFlattened, const bool flagCopyResultsToMatrix=true)dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
AtomicCenteredNonLocalOperator(std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > BLASWrapperPtr, std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, memorySpace > > basisOperatorPtr, std::shared_ptr< AtomCenteredSphericalFunctionContainer > atomCenteredSphericalFunctionContainer, const MPI_Comm &mpi_comm_parent)dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
atomSupportInElement(unsigned int iElem) constdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
computeCMatrixEntries(std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, dftfe::utils::MemorySpace::HOST > > basisOperationsPtr, const unsigned int quadratureIndex)dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >private
d_AllReduceCompleteddftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_AtomCenteredFnIdsNumberingMapCurrentProcessdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_atomCenteredKpointIndexedSphericalFnQuadValuesdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_atomCenteredKpointTimesSphericalFnTimesDistFromAtomQuadValuesdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_atomCenteredSphericalFunctionContainerdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_atomIdToNonTrivialSphericalFnCellStartIndexdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_basisOperatorPtrdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_BLASWrapperPtrdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_cellIdToAtomIdsLocalCompactSupportMapdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_CMatrixEntriesdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_CMatrixEntriesConjugatedftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_CMatrixEntriesTransposedftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_flattenedNonLocalCellDofIndexToProcessDofIndexMapdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >private
d_flattenedNonLocalCellDofIndexToProcessDofIndexVectordftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >private
d_ghostAtomCenteredFnIdsCurrentProcessdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_ghostSphericalFunctionIdsCurrentProcessdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_isMallocCalleddftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_kPointCoordinatesdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_kPointIndexdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_kPointWeightsdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_locallyOwnedAtomCenteredFnIdsCurrentProcessdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_locallyOwnedCellsdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_locallyOwnedSphericalFunctionIdsCurrentProcessdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_maxSingleAtomContributiondftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_mpi_communicatordftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_mpiPatternP2Pdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_n_mpi_processesdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_nonlocalElemIdToCellIdVectordftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >private
d_nonTrivialAllCellsSphericalFnAlphaToElemIdMapdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_nonTrivialSphericalFnPerCelldftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_nonTrivialSphericalFnsCellStartIndexdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_numberCellsAccumNonLocalAtomsdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_numberCellsForEachAtomdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_numberNodesPerElementdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_numberWaveFunctionsdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_sphericalFnTimesVectorFlattenedVectorLocalIdsdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_sphericalFnTimesWavefunMatrixdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >private
d_sphericalFunctionIdsNumberingMapCurrentProcessdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_SphericalFunctionKetTimesVectorPardftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_sumNonTrivialSphericalFnOverAllCellsdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_this_mpi_processdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_totalAtomsInCurrentProcdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_totalNonlocalElemsdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
d_totalNonLocalEntriesdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
getAtomCenteredKpointIndexedSphericalFnQuadValues() constdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
getAtomCenteredKpointTimesSphericalFnTimesDistFromAtomQuadValues() constdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
getAtomIdToNonTrivialSphericalFnCellStartIndex() constdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
getAtomWiseNumberCellsAccumulated() constdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
getAtomWiseNumberCellsInCompactSupport() constdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
getCellIdToAtomIdsLocalCompactSupportMap() constdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
getFlattenedNonLocalCellDofIndexToProcessDofIndexMap() constdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
getGlobalDofAtomIdSphericalFnPair(const unsigned int atomId, const unsigned int alpha) constdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
getLocalIdOfDistributedVec(const unsigned int globalId) constdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
getMaxSingleAtomEntries() constdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
getNonlocalElementToCellIdVector() constdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
getNonLocalElemIdToLocalElemIdMap() constdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
getNonTrivialAllCellsSphericalFnAlphaToElemIdMap() constdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
getNonTrivialSphericalFnsCellStartIndex() constdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
getNonTrivialSphericalFnsPerCell() constdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
getSphericalFnTimesVectorFlattenedVectorLocalIds() constdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
getTotalAtomInCurrentProcessor() constdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
getTotalNonLocalElementsInCurrentProcessor() constdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
getTotalNonLocalEntriesCurrentProcessor() constdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
getTotalNonTrivialSphericalFnsOverAllCells() constdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
initialiseFlattenedDataStructure(unsigned int waveFunctionBlockSize, dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &sphericalFunctionKetTimesVectorParFlattened)dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
initialiseOperatorActionOnX(unsigned int kPointIndex)dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
initialisePartitioner()dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >private
initKpoints(const std::vector< double > &kPointWeights, const std::vector< double > &kPointCoordinates)dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >private
intitialisePartitionerKPointsAndComputeCMatrixEntries(const bool updateSparsity, const std::vector< double > &kPointWeights, const std::vector< double > &kPointCoordinates, std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, dftfe::utils::MemorySpace::HOST > > basisOperationsPtr, const unsigned int quadratureIndex)dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
pcoutdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >protected
+ + + + diff --git a/classdftfe_1_1_atomic_centered_non_local_operator.html b/classdftfe_1_1_atomic_centered_non_local_operator.html new file mode 100644 index 000000000..4feb98086 --- /dev/null +++ b/classdftfe_1_1_atomic_centered_non_local_operator.html @@ -0,0 +1,2287 @@ + + + + + + + +DFT-FE: dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace > Class Template Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace > Class Template Reference
+
+
+ +

#include <AtomicCenteredNonLocalOperator.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 AtomicCenteredNonLocalOperator (std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > BLASWrapperPtr, std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, memorySpace > > basisOperatorPtr, std::shared_ptr< AtomCenteredSphericalFunctionContainer > atomCenteredSphericalFunctionContainer, const MPI_Comm &mpi_comm_parent)
 
void initialiseOperatorActionOnX (unsigned int kPointIndex)
 Resizes various internal data members and selects the kpoint of interest.
 
void initialiseFlattenedDataStructure (unsigned int waveFunctionBlockSize, dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &sphericalFunctionKetTimesVectorParFlattened)
 initialises the multivector object, waveFunctionBlockSize and resizes various internal data members.
 
void intitialisePartitionerKPointsAndComputeCMatrixEntries (const bool updateSparsity, const std::vector< double > &kPointWeights, const std::vector< double > &kPointCoordinates, std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, dftfe::utils::MemorySpace::HOST > > basisOperationsPtr, const unsigned int quadratureIndex)
 calls internal function: initialisePartitioner, initialiseKpoint and computeCMatrixEntries
 
const std::vector< unsigned int > & getNonlocalElementToCellIdVector () const
 
unsigned int getTotalAtomInCurrentProcessor () const
 
const dftfe::utils::MemoryStorage< dftfe::global_size_type, memorySpace > & getFlattenedNonLocalCellDofIndexToProcessDofIndexMap () const
 
unsigned int getTotalNonLocalElementsInCurrentProcessor () const
 
unsigned int getTotalNonLocalEntriesCurrentProcessor () const
 
unsigned int getMaxSingleAtomEntries () const
 
bool atomSupportInElement (unsigned int iElem) const
 
unsigned int getGlobalDofAtomIdSphericalFnPair (const unsigned int atomId, const unsigned int alpha) const
 
unsigned int getLocalIdOfDistributedVec (const unsigned int globalId) const
 
std::vector< unsigned int > & getNonLocalElemIdToLocalElemIdMap () const
 
std::vector< unsigned int > & getAtomWiseNumberCellsInCompactSupport () const
 
std::vector< unsigned int > & getAtomWiseNumberCellsAccumulated () const
 
const std::vector< ValueType > & getAtomCenteredKpointIndexedSphericalFnQuadValues () const
 
const std::vector< ValueType > & getAtomCenteredKpointTimesSphericalFnTimesDistFromAtomQuadValues () const
 
const std::map< unsigned int, std::vector< unsigned int > > & getCellIdToAtomIdsLocalCompactSupportMap () const
 
const std::vector< unsigned int > & getNonTrivialSphericalFnsPerCell () const
 
const std::vector< unsigned int > & getNonTrivialSphericalFnsCellStartIndex () const
 
const unsigned int getTotalNonTrivialSphericalFnsOverAllCells () const
 
const std::vector< unsigned int > & getNonTrivialAllCellsSphericalFnAlphaToElemIdMap () const
 
const std::map< unsigned int, std::vector< unsigned int > > & getAtomIdToNonTrivialSphericalFnCellStartIndex () const
 
const std::vector< unsigned int > & getSphericalFnTimesVectorFlattenedVectorLocalIds () const
 
void applyVOnCconjtransX (const CouplingStructure couplingtype, const dftfe::utils::MemoryStorage< ValueType, memorySpace > &couplingMatrix, dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &sphericalFunctionKetTimesVectorParFlattened, const bool flagCopyResultsToMatrix=true)
 compute sht action of coupling matrix on sphericalFunctionKetTimesVectorParFlattened.
 
void applyAllReduceOnCconjtransX (dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &sphericalFunctionKetTimesVectorParFlattened, const bool skipComm=false)
 copies the results from internal member to sphericalFunctionKetTimesVectorParFlattened, on which ghost values are called. crucial operation for completion of the full CconjtranX on all cells
 
void applyCconjtransOnX (const ValueType *X, const std::pair< unsigned int, unsigned int > cellRange)
 computes the results of CconjtransX on the cells of interst specied by cellRange
 
void applyVCconjtransOnX (const dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &src, const unsigned int kPointIndex, const CouplingStructure couplingtype, const dftfe::utils::MemoryStorage< ValueType, memorySpace > &couplingMatrix, dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &sphericalFunctionKetTimesVectorParFlattened, const bool flagScaleInternalMatrix=false)
 completes the VCconjX on nodal vector src. The src vector must have all ghost nodes and contraint nodes updated.
 
void applyCVCconjtransOnX (const dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &src, const unsigned int kPointIndex, const CouplingStructure couplingtype, const dftfe::utils::MemoryStorage< ValueType, memorySpace > &couplingMatrix, dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &sphericalFunctionKetTimesVectorParFlattened, dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > &dst)
 completes the action of CVCconjtranspose on nodal vector src. The src vector must have all ghost nodes and contraint nodes updated.
 
void applyCOnVCconjtransX (ValueType *Xout, const std::pair< unsigned int, unsigned int > cellRange)
 adds the result of CVCtX onto Xout for both CPU and GPU calls
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

bool d_AllReduceCompleted
 
std::vector< doubled_kPointWeights
 
std::vector< doubled_kPointCoordinates
 
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > d_BLASWrapperPtr
 
std::shared_ptr< AtomCenteredSphericalFunctionContainerd_atomCenteredSphericalFunctionContainer
 
std::shared_ptr< const utils::mpi::MPIPatternP2P< dftfe::utils::MemorySpace::HOST > > d_mpiPatternP2P
 
std::vector< unsigned intd_numberCellsForEachAtom
 
std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, memorySpace > > d_basisOperatorPtr
 
std::vector< ValueTyped_atomCenteredKpointIndexedSphericalFnQuadValues
 
std::vector< ValueTyped_atomCenteredKpointTimesSphericalFnTimesDistFromAtomQuadValues
 
std::map< unsigned int, std::vector< unsigned int > > d_cellIdToAtomIdsLocalCompactSupportMap
 map from cell number to set of non local atom ids (local numbering)
 
std::vector< unsigned intd_nonTrivialSphericalFnPerCell
 vector of size num physical cells
 
std::vector< unsigned intd_nonTrivialSphericalFnsCellStartIndex
 
std::vector< unsigned intd_nonTrivialAllCellsSphericalFnAlphaToElemIdMap
 
std::map< unsigned int, std::vector< unsigned int > > d_atomIdToNonTrivialSphericalFnCellStartIndex
 map from local nonlocal atomid to vector over cells
 
unsigned int d_sumNonTrivialSphericalFnOverAllCells
 
std::vector< unsigned intd_sphericalFnTimesVectorFlattenedVectorLocalIds
 
std::vector< distributedCPUVec< double > > d_SphericalFunctionKetTimesVectorPar
 
std::map< std::pair< unsigned int, unsigned int >, unsigned intd_sphericalFunctionIdsNumberingMapCurrentProcess
 
dealii::IndexSet d_locallyOwnedAtomCenteredFnIdsCurrentProcess
 
dealii::IndexSet d_ghostAtomCenteredFnIdsCurrentProcess
 
std::map< std::pair< unsigned int, unsigned int >, unsigned intd_AtomCenteredFnIdsNumberingMapCurrentProcess
 
std::vector< std::vector< std::vector< dftfe::utils::MemoryStorage< ValueType, memorySpace > > > > d_CMatrixEntries
 
dealii::ConditionalOStream pcout
 
const MPI_Comm d_mpi_communicator
 
const unsigned int d_this_mpi_process
 
const unsigned int d_n_mpi_processes
 
dealii::IndexSet d_locallyOwnedSphericalFunctionIdsCurrentProcess
 
dealii::IndexSet d_ghostSphericalFunctionIdsCurrentProcess
 
unsigned int d_totalAtomsInCurrentProc
 
unsigned int d_totalNonlocalElems
 
unsigned int d_totalNonLocalEntries
 
unsigned int d_maxSingleAtomContribution
 
std::vector< unsigned intd_numberCellsAccumNonLocalAtoms
 
unsigned int d_numberNodesPerElement
 
unsigned int d_locallyOwnedCells
 
unsigned int d_numberWaveFunctions
 
unsigned int d_kPointIndex
 
bool d_isMallocCalled = false
 
std::vector< std::vector< std::vector< ValueType > > > d_CMatrixEntriesConjugate
 
std::vector< std::vector< std::vector< ValueType > > > d_CMatrixEntriesTranspose
 
+ + + + + + + + + + +

+Private Member Functions

void initKpoints (const std::vector< double > &kPointWeights, const std::vector< double > &kPointCoordinates)
 stores the d_kpointWeights, d_kpointCoordinates. Other data members regarding are computed from container data object
 
void initialisePartitioner ()
 creates the partitioner for the distributed vector based on sparsity patten from sphericalFn container.
 
void computeCMatrixEntries (std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, dftfe::utils::MemorySpace::HOST > > basisOperationsPtr, const unsigned int quadratureIndex)
 computes the entries in C matrix for CPUs and GPUs. On GPUs the entries are copied to a flattened vector on device memory. Further on GPUs, various maps are created crucial for accessing and padding entries in Cmatrix flattened device.
 
+ + + + + + + + + +

+Private Attributes

std::map< unsigned int, dftfe::utils::MemoryStorage< ValueType, dftfe::utils::MemorySpace::HOST > > d_sphericalFnTimesWavefunMatrix
 
std::vector< dftfe::global_size_typed_flattenedNonLocalCellDofIndexToProcessDofIndexVector
 
dftfe::utils::MemoryStorage< dftfe::global_size_type, memorySpaced_flattenedNonLocalCellDofIndexToProcessDofIndexMap
 
std::vector< unsigned intd_nonlocalElemIdToCellIdVector
 
+

Constructor & Destructor Documentation

+ +

◆ AtomicCenteredNonLocalOperator()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + +
dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::AtomicCenteredNonLocalOperator (std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > BLASWrapperPtr,
std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, memorySpace > > basisOperatorPtr,
std::shared_ptr< AtomCenteredSphericalFunctionContainer > atomCenteredSphericalFunctionContainer,
const MPI_Comm & mpi_comm_parent )
+
+ +
+
+

Member Function Documentation

+ +

◆ applyAllReduceOnCconjtransX()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + +
void dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::applyAllReduceOnCconjtransX (dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > & sphericalFunctionKetTimesVectorParFlattened,
const bool skipComm = false )
+
+ +

copies the results from internal member to sphericalFunctionKetTimesVectorParFlattened, on which ghost values are called. crucial operation for completion of the full CconjtranX on all cells

+
Parameters
+ + + + +
[in]sphericalFunctionKetTimesVectorParFlattenedmultivector to store results of CconjtransX which is initiliased using initialiseFlattenedVector call
[in]skip1flag for compute-communication overlap in ChFSI on GPUs
[in]skip2flag for compute-communication overlap in ChFSI on GPUs
+
+
+ +
+
+ +

◆ applyCconjtransOnX()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + +
void dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::applyCconjtransOnX (const ValueType * X,
const std::pair< unsigned int, unsigned int > cellRange )
+
+ +

computes the results of CconjtransX on the cells of interst specied by cellRange

+
Parameters
+ + + +
[in]Xinpute cell level vector
[in]cellRangestart and end element id in list of nonlocal elements
+
+
+ +
+
+ +

◆ applyCOnVCconjtransX()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + +
void dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::applyCOnVCconjtransX (ValueType * Xout,
const std::pair< unsigned int, unsigned int > cellRange )
+
+ +

adds the result of CVCtX onto Xout for both CPU and GPU calls

+
Parameters
+ + + +
[out]XoutmemoryStorage object of size cells*numberOfNodex*BlockSize. Typical case holds the results of H_{loc}X
[in]cellRangestart and end element id in list of nonlocal elements
+
+
+ +
+
+ +

◆ applyCVCconjtransOnX()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::applyCVCconjtransOnX (const dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > & src,
const unsigned int kPointIndex,
const CouplingStructure couplingtype,
const dftfe::utils::MemoryStorage< ValueType, memorySpace > & couplingMatrix,
dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > & sphericalFunctionKetTimesVectorParFlattened,
dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > & dst )
+
+ +

completes the action of CVCconjtranspose on nodal vector src. The src vector must have all ghost nodes and contraint nodes updated.

+
Parameters
+ + + + + + + +
[in]srcinput nodal vector on which operator acts on.
[in]kPointIndexkPoint of interst for current operation
[in]couplingtypestructure of coupling matrix
[in]couplingMatrixentires of the coupling matrix V in CVCconjtrans
[in]sphericalFunctionKetTimesVectorParFlattenedmultivector to store results of CconjtransX which is initiliased using initialiseFlattenedVector call
[out]dstoutput nodal vector where the results of the operator is copied into.
+
+
+ +
+
+ +

◆ applyVCconjtransOnX()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::applyVCconjtransOnX (const dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > & src,
const unsigned int kPointIndex,
const CouplingStructure couplingtype,
const dftfe::utils::MemoryStorage< ValueType, memorySpace > & couplingMatrix,
dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > & sphericalFunctionKetTimesVectorParFlattened,
const bool flagScaleInternalMatrix = false )
+
+ +

completes the VCconjX on nodal vector src. The src vector must have all ghost nodes and contraint nodes updated.

+
Parameters
+ + + + + + +
[in]srcinput nodal vector on which operator acts on.
[in]kPointIndexkPoint of interst for current operation
[in]couplingtypestructure of coupling matrix
[in]couplingMatrixentires of the coupling matrix V in CVCconjtrans
[out]sphericalFunctionKetTimesVectorParFlattenedmultivector to store results of CconjtransX which is initiliased using initialiseFlattenedVector call
+
+
+ +
+
+ +

◆ applyVOnCconjtransX()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::applyVOnCconjtransX (const CouplingStructure couplingtype,
const dftfe::utils::MemoryStorage< ValueType, memorySpace > & couplingMatrix,
dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > & sphericalFunctionKetTimesVectorParFlattened,
const bool flagCopyResultsToMatrix = true )
+
+ +

compute sht action of coupling matrix on sphericalFunctionKetTimesVectorParFlattened.

+
Parameters
+ + + + + +
[in]couplingtypestructure of coupling matrix
[in]couplingMatrixentires of the coupling matrix V in CVCconjtrans
[out]sphericalFunctionKetTimesVectorParFlattenedmultivector to store results of CconjtransX which is initiliased using initialiseFlattenedVector call. The results are stored in sphericalFunctionKetTimesVectorParFlattened or internal data member based on flagCopyResultsToMatrix.
[in]flagCopyResultsToMatrixflag to confirm whether to scal the multivector sphericalFunctionKetTimesVectorParFlattened or store results in internal data member.
+
+
+ +
+
+ +

◆ atomSupportInElement()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
bool dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::atomSupportInElement (unsigned int iElem) const
+
+ +
+
+ +

◆ computeCMatrixEntries()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
void dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::computeCMatrixEntries (std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, dftfe::utils::MemorySpace::HOST > > basisOperationsPtr,
const unsigned int quadratureIndex )
+
+private
+
+ +

computes the entries in C matrix for CPUs and GPUs. On GPUs the entries are copied to a flattened vector on device memory. Further on GPUs, various maps are created crucial for accessing and padding entries in Cmatrix flattened device.

+
Parameters
+ + + +
[in]basisOperationsPtrHOST FEBasisOperations shared_ptr required to indetify the element ids and quad points
[in]quadratureIndexquadrature index for sampling the spherical function. Quadrature Index is used to reinit basisOperationsPtr
+
+
+ +
+
+ +

◆ getAtomCenteredKpointIndexedSphericalFnQuadValues()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const std::vector< ValueType > & dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::getAtomCenteredKpointIndexedSphericalFnQuadValues () const
+
+ +
+
+ +

◆ getAtomCenteredKpointTimesSphericalFnTimesDistFromAtomQuadValues()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const std::vector< ValueType > & dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::getAtomCenteredKpointTimesSphericalFnTimesDistFromAtomQuadValues () const
+
+ +
+
+ +

◆ getAtomIdToNonTrivialSphericalFnCellStartIndex()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const std::map< unsigned int, std::vector< unsigned int > > & dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::getAtomIdToNonTrivialSphericalFnCellStartIndex () const
+
+ +
+
+ +

◆ getAtomWiseNumberCellsAccumulated()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
std::vector< unsigned int > & dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::getAtomWiseNumberCellsAccumulated () const
+
+ +
+
+ +

◆ getAtomWiseNumberCellsInCompactSupport()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
std::vector< unsigned int > & dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::getAtomWiseNumberCellsInCompactSupport () const
+
+ +
+
+ +

◆ getCellIdToAtomIdsLocalCompactSupportMap()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const std::map< unsigned int, std::vector< unsigned int > > & dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::getCellIdToAtomIdsLocalCompactSupportMap () const
+
+ +
+
+ +

◆ getFlattenedNonLocalCellDofIndexToProcessDofIndexMap()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const dftfe::utils::MemoryStorage< dftfe::global_size_type, memorySpace > & dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::getFlattenedNonLocalCellDofIndexToProcessDofIndexMap () const
+
+ +
+
+ +

◆ getGlobalDofAtomIdSphericalFnPair()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + +
unsigned int dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::getGlobalDofAtomIdSphericalFnPair (const unsigned int atomId,
const unsigned int alpha ) const
+
+ +
+
+ +

◆ getLocalIdOfDistributedVec()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
unsigned int dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::getLocalIdOfDistributedVec (const unsigned int globalId) const
+
+ +
+
+ +

◆ getMaxSingleAtomEntries()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
unsigned int dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::getMaxSingleAtomEntries () const
+
+ +
+
+ +

◆ getNonlocalElementToCellIdVector()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const std::vector< unsigned int > & dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::getNonlocalElementToCellIdVector () const
+
+ +
+
+ +

◆ getNonLocalElemIdToLocalElemIdMap()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
std::vector< unsigned int > & dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::getNonLocalElemIdToLocalElemIdMap () const
+
+ +
+
+ +

◆ getNonTrivialAllCellsSphericalFnAlphaToElemIdMap()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const std::vector< unsigned int > & dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::getNonTrivialAllCellsSphericalFnAlphaToElemIdMap () const
+
+ +
+
+ +

◆ getNonTrivialSphericalFnsCellStartIndex()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const std::vector< unsigned int > & dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::getNonTrivialSphericalFnsCellStartIndex () const
+
+ +
+
+ +

◆ getNonTrivialSphericalFnsPerCell()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const std::vector< unsigned int > & dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::getNonTrivialSphericalFnsPerCell () const
+
+ +
+
+ +

◆ getSphericalFnTimesVectorFlattenedVectorLocalIds()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const std::vector< unsigned int > & dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::getSphericalFnTimesVectorFlattenedVectorLocalIds () const
+
+ +
+
+ +

◆ getTotalAtomInCurrentProcessor()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
unsigned int dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::getTotalAtomInCurrentProcessor () const
+
+ +
+
+ +

◆ getTotalNonLocalElementsInCurrentProcessor()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
unsigned int dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::getTotalNonLocalElementsInCurrentProcessor () const
+
+ +
+
+ +

◆ getTotalNonLocalEntriesCurrentProcessor()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
unsigned int dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::getTotalNonLocalEntriesCurrentProcessor () const
+
+ +
+
+ +

◆ getTotalNonTrivialSphericalFnsOverAllCells()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const unsigned int dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::getTotalNonTrivialSphericalFnsOverAllCells () const
+
+ +
+
+ +

◆ initialiseFlattenedDataStructure()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + +
void dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::initialiseFlattenedDataStructure (unsigned int waveFunctionBlockSize,
dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > & sphericalFunctionKetTimesVectorParFlattened )
+
+ +

initialises the multivector object, waveFunctionBlockSize and resizes various internal data members.

+
Parameters
+ + + +
[in]waveFunctionBlockSizesets the wavefunction block size for the action of the nonlocal operator.
[out]sphericalFunctionKetTimesVectorParFlattened,themultivector that is initialised based on blocksize and partitioner.
+
+
+ +
+
+ +

◆ initialiseOperatorActionOnX()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::initialiseOperatorActionOnX (unsigned int kPointIndex)
+
+ +

Resizes various internal data members and selects the kpoint of interest.

+
Parameters
+ + +
[in]kPointIndexspecifies the k-point of interest
+
+
+ +
+
+ +

◆ initialisePartitioner()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::initialisePartitioner ()
+
+private
+
+ +

creates the partitioner for the distributed vector based on sparsity patten from sphericalFn container.

+
Parameters
+ + +
[in]basisOperationsPtrHOST FEBasisOperations shared_ptr required to indetify the element ids and quad points.
+
+
+ +
+
+ +

◆ initKpoints()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
void dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::initKpoints (const std::vector< double > & kPointWeights,
const std::vector< double > & kPointCoordinates )
+
+private
+
+ +

stores the d_kpointWeights, d_kpointCoordinates. Other data members regarding are computed from container data object

+
Parameters
+ + + +
[in]kPointWeightsstd::vector<double> of size number of kPoints
[out]kPointCoordinatesstd::vector<double> of kPoint coordinates
+
+
+ +
+
+ +

◆ intitialisePartitionerKPointsAndComputeCMatrixEntries()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::intitialisePartitionerKPointsAndComputeCMatrixEntries (const bool updateSparsity,
const std::vector< double > & kPointWeights,
const std::vector< double > & kPointCoordinates,
std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, dftfe::utils::MemorySpace::HOST > > basisOperationsPtr,
const unsigned int quadratureIndex )
+
+ +

calls internal function: initialisePartitioner, initialiseKpoint and computeCMatrixEntries

+
Parameters
+ + + + + + +
[in]updateSparsityflag on whether the sparstiy patten was updated, hence the partitioner is updated.
[in]kPointWeightsstd::vector<double> of size number of kPoints
[out]kPointCoordinatesstd::vector<double> of kPoint coordinates
[in]basisOperationsPtrHOST FEBasisOperations shared_ptr required to indetify the element ids and quad points
[in]quadratureIndexquadrature index for sampling the spherical function. Quadrature Index is used to reinit basisOperationsPtr
+
+
+ +
+
+

Member Data Documentation

+ +

◆ d_AllReduceCompleted

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
bool dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_AllReduceCompleted
+
+protected
+
+ +
+
+ +

◆ d_AtomCenteredFnIdsNumberingMapCurrentProcess

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<std::pair<unsigned int, unsigned int>, unsigned int> dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_AtomCenteredFnIdsNumberingMapCurrentProcess
+
+protected
+
+ +
+
+ +

◆ d_atomCenteredKpointIndexedSphericalFnQuadValues

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<ValueType> dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_atomCenteredKpointIndexedSphericalFnQuadValues
+
+protected
+
+ +
+
+ +

◆ d_atomCenteredKpointTimesSphericalFnTimesDistFromAtomQuadValues

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<ValueType> dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_atomCenteredKpointTimesSphericalFnTimesDistFromAtomQuadValues
+
+protected
+
+ +
+
+ +

◆ d_atomCenteredSphericalFunctionContainer

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr<AtomCenteredSphericalFunctionContainer> dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_atomCenteredSphericalFunctionContainer
+
+protected
+
+ +
+
+ +

◆ d_atomIdToNonTrivialSphericalFnCellStartIndex

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<unsigned int, std::vector<unsigned int> > dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_atomIdToNonTrivialSphericalFnCellStartIndex
+
+protected
+
+ +

map from local nonlocal atomid to vector over cells

+ +
+
+ +

◆ d_basisOperatorPtr

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr< dftfe::basis::FEBasisOperations<ValueType, double, memorySpace> > dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_basisOperatorPtr
+
+protected
+
+ +
+
+ +

◆ d_BLASWrapperPtr

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr<dftfe::linearAlgebra::BLASWrapper<memorySpace> > dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_BLASWrapperPtr
+
+protected
+
+ +
+
+ +

◆ d_cellIdToAtomIdsLocalCompactSupportMap

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<unsigned int, std::vector<unsigned int> > dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_cellIdToAtomIdsLocalCompactSupportMap
+
+protected
+
+ +

map from cell number to set of non local atom ids (local numbering)

+ +
+
+ +

◆ d_CMatrixEntries

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector< std::vector<dftfe::utils::MemoryStorage<ValueType, memorySpace> > > > dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_CMatrixEntries
+
+protected
+
+ +
+
+ +

◆ d_CMatrixEntriesConjugate

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<ValueType> > > dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_CMatrixEntriesConjugate
+
+protected
+
+ +
+
+ +

◆ d_CMatrixEntriesTranspose

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<ValueType> > > dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_CMatrixEntriesTranspose
+
+protected
+
+ +
+
+ +

◆ d_flattenedNonLocalCellDofIndexToProcessDofIndexMap

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<dftfe::global_size_type, memorySpace> dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_flattenedNonLocalCellDofIndexToProcessDofIndexMap
+
+private
+
+ +
+
+ +

◆ d_flattenedNonLocalCellDofIndexToProcessDofIndexVector

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<dftfe::global_size_type> dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_flattenedNonLocalCellDofIndexToProcessDofIndexVector
+
+private
+
+ +
+
+ +

◆ d_ghostAtomCenteredFnIdsCurrentProcess

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_ghostAtomCenteredFnIdsCurrentProcess
+
+protected
+
+ +
+
+ +

◆ d_ghostSphericalFunctionIdsCurrentProcess

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_ghostSphericalFunctionIdsCurrentProcess
+
+protected
+
+ +
+
+ +

◆ d_isMallocCalled

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
bool dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_isMallocCalled = false
+
+protected
+
+ +
+
+ +

◆ d_kPointCoordinates

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_kPointCoordinates
+
+protected
+
+ +
+
+ +

◆ d_kPointIndex

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_kPointIndex
+
+protected
+
+ +
+
+ +

◆ d_kPointWeights

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_kPointWeights
+
+protected
+
+ +
+
+ +

◆ d_locallyOwnedAtomCenteredFnIdsCurrentProcess

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_locallyOwnedAtomCenteredFnIdsCurrentProcess
+
+protected
+
+ +
+
+ +

◆ d_locallyOwnedCells

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_locallyOwnedCells
+
+protected
+
+ +
+
+ +

◆ d_locallyOwnedSphericalFunctionIdsCurrentProcess

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_locallyOwnedSphericalFunctionIdsCurrentProcess
+
+protected
+
+ +
+
+ +

◆ d_maxSingleAtomContribution

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_maxSingleAtomContribution
+
+protected
+
+ +
+
+ +

◆ d_mpi_communicator

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_mpi_communicator
+
+protected
+
+ +
+
+ +

◆ d_mpiPatternP2P

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr< const utils::mpi::MPIPatternP2P<dftfe::utils::MemorySpace::HOST> > dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_mpiPatternP2P
+
+protected
+
+ +
+
+ +

◆ d_n_mpi_processes

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const unsigned int dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_n_mpi_processes
+
+protected
+
+ +
+
+ +

◆ d_nonlocalElemIdToCellIdVector

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_nonlocalElemIdToCellIdVector
+
+private
+
+ +
+
+ +

◆ d_nonTrivialAllCellsSphericalFnAlphaToElemIdMap

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_nonTrivialAllCellsSphericalFnAlphaToElemIdMap
+
+protected
+
+ +
+
+ +

◆ d_nonTrivialSphericalFnPerCell

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_nonTrivialSphericalFnPerCell
+
+protected
+
+ +

vector of size num physical cells

+ +
+
+ +

◆ d_nonTrivialSphericalFnsCellStartIndex

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_nonTrivialSphericalFnsCellStartIndex
+
+protected
+
+

vector of size num physical cell with starting index for each cell for the above array

+ +
+
+ +

◆ d_numberCellsAccumNonLocalAtoms

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_numberCellsAccumNonLocalAtoms
+
+protected
+
+ +
+
+ +

◆ d_numberCellsForEachAtom

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_numberCellsForEachAtom
+
+protected
+
+ +
+
+ +

◆ d_numberNodesPerElement

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_numberNodesPerElement
+
+protected
+
+ +
+
+ +

◆ d_numberWaveFunctions

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_numberWaveFunctions
+
+protected
+
+ +
+
+ +

◆ d_sphericalFnTimesVectorFlattenedVectorLocalIds

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_sphericalFnTimesVectorFlattenedVectorLocalIds
+
+protected
+
+ +
+
+ +

◆ d_sphericalFnTimesWavefunMatrix

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map< unsigned int, dftfe::utils::MemoryStorage<ValueType, dftfe::utils::MemorySpace::HOST> > dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_sphericalFnTimesWavefunMatrix
+
+private
+
+ +
+
+ +

◆ d_sphericalFunctionIdsNumberingMapCurrentProcess

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<std::pair<unsigned int, unsigned int>, unsigned int> dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_sphericalFunctionIdsNumberingMapCurrentProcess
+
+protected
+
+ +
+
+ +

◆ d_SphericalFunctionKetTimesVectorPar

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<distributedCPUVec<double> > dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_SphericalFunctionKetTimesVectorPar
+
+protected
+
+ +
+
+ +

◆ d_sumNonTrivialSphericalFnOverAllCells

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_sumNonTrivialSphericalFnOverAllCells
+
+protected
+
+ +
+
+ +

◆ d_this_mpi_process

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const unsigned int dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_this_mpi_process
+
+protected
+
+ +
+
+ +

◆ d_totalAtomsInCurrentProc

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_totalAtomsInCurrentProc
+
+protected
+
+ +
+
+ +

◆ d_totalNonlocalElems

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_totalNonlocalElems
+
+protected
+
+ +
+
+ +

◆ d_totalNonLocalEntries

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::d_totalNonLocalEntries
+
+protected
+
+ +
+
+ +

◆ pcout

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >::pcout
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1_b_f_g_s_non_linear_solver-members.html b/classdftfe_1_1_b_f_g_s_non_linear_solver-members.html new file mode 100644 index 000000000..c8a0fd73d --- /dev/null +++ b/classdftfe_1_1_b_f_g_s_non_linear_solver-members.html @@ -0,0 +1,147 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::BFGSNonLinearSolver Member List
+
+
+ +

This is the complete list of members for dftfe::BFGSNonLinearSolver, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BFGSNonLinearSolver(const bool usePreconditioner, const bool useRFOStep, const unsigned int maxNumberIterations, const unsigned int debugLevel, const MPI_Comm &mpi_comm_parent, const double trustRadius_maximum=0.5, const double trustRadius_initial=0.02, const double trustRadius_minimum=1.0e-4, const bool isCurvatureOnlyLineSearchStoppingCondition=false)dftfe::BFGSNonLinearSolver
checkWolfe()dftfe::BFGSNonLinearSolverprivate
computeNewtonStep()dftfe::BFGSNonLinearSolverprivate
computeRFOStep()dftfe::BFGSNonLinearSolverprivate
computeStep()dftfe::BFGSNonLinearSolverprivate
computeTrustRadius(nonlinearSolverProblem &problem)dftfe::BFGSNonLinearSolverprivate
d_debugLeveldftfe::nonLinearSolverprotected
d_deltaXdftfe::BFGSNonLinearSolverprivate
d_deltaXNewdftfe::BFGSNonLinearSolverprivate
d_gradientdftfe::BFGSNonLinearSolverprivate
d_gradientNewdftfe::BFGSNonLinearSolverprivate
d_hessiandftfe::BFGSNonLinearSolverprivate
d_hessianScaleddftfe::BFGSNonLinearSolverprivate
d_isCurvatureOnlyLineSearchStoppingConditiondftfe::BFGSNonLinearSolverprivate
d_isResetdftfe::BFGSNonLinearSolverprivate
d_iterdftfe::BFGSNonLinearSolverprivate
d_maxNumberIterationsdftfe::nonLinearSolverprotected
d_normDeltaXnewdftfe::BFGSNonLinearSolverprivate
d_numberUnknownsdftfe::BFGSNonLinearSolverprivate
d_Srfodftfe::BFGSNonLinearSolverprivate
d_stepAccepteddftfe::BFGSNonLinearSolverprivate
d_tolerancedftfe::nonLinearSolverprotected
d_trustRadiusdftfe::BFGSNonLinearSolverprivate
d_trustRadiusInitialdftfe::BFGSNonLinearSolverprivate
d_trustRadiusMaxdftfe::BFGSNonLinearSolverprivate
d_trustRadiusMindftfe::BFGSNonLinearSolverprivate
d_updateVectordftfe::BFGSNonLinearSolverprivate
d_usePreconditionerdftfe::BFGSNonLinearSolverprivate
d_useRFOStepdftfe::BFGSNonLinearSolverprivate
d_useSingleAtomSolutionsInitialGuessdftfe::BFGSNonLinearSolverprivate
d_valuedftfe::BFGSNonLinearSolverprivate
d_valueNewdftfe::BFGSNonLinearSolverprivate
d_wolfeCurvaturedftfe::BFGSNonLinearSolverprivate
d_wolfeSatisfieddftfe::BFGSNonLinearSolverprivate
d_wolfeSufficientDecdftfe::BFGSNonLinearSolverprivate
FAILURE enum valuedftfe::nonLinearSolver
getDebugLevel() constdftfe::nonLinearSolverprotected
getMaximumNumberIterations() constdftfe::nonLinearSolverprotected
getTolerance() constdftfe::nonLinearSolverprotected
initializeHessian(nonlinearSolverProblem &problem)dftfe::BFGSNonLinearSolverprivate
LINESEARCH_FAILED enum valuedftfe::nonLinearSolver
load(const std::string &checkpointFileName)dftfe::BFGSNonLinearSolverprivate
MAX_ITER_REACHED enum valuedftfe::nonLinearSolver
mpi_communicatordftfe::BFGSNonLinearSolverprivate
nonLinearSolver(const unsigned int debugLevel, const unsigned int maxNumberIterations, const double tolerance=0)dftfe::nonLinearSolverprotected
pcoutdftfe::BFGSNonLinearSolverprivate
RESTART enum valuedftfe::nonLinearSolver
ReturnValueType enum namedftfe::nonLinearSolver
save(const std::string &checkpointFileName)dftfe::BFGSNonLinearSolvervirtual
scaleHessian()dftfe::BFGSNonLinearSolverprivate
solve(nonlinearSolverProblem &problem, const std::string checkpointFileName="", const bool restart=false)dftfe::BFGSNonLinearSolvervirtual
SUCCESS enum valuedftfe::nonLinearSolver
updateHessian()dftfe::BFGSNonLinearSolverprivate
updateSolution(const std::vector< double > &step, nonlinearSolverProblem &problem)dftfe::BFGSNonLinearSolverprivate
~BFGSNonLinearSolver()dftfe::BFGSNonLinearSolver
~nonLinearSolver()=0dftfe::nonLinearSolverpure virtual
+ + + + diff --git a/classdftfe_1_1_b_f_g_s_non_linear_solver.html b/classdftfe_1_1_b_f_g_s_non_linear_solver.html new file mode 100644 index 000000000..1b483b4a0 --- /dev/null +++ b/classdftfe_1_1_b_f_g_s_non_linear_solver.html @@ -0,0 +1,1351 @@ + + + + + + + +DFT-FE: dftfe::BFGSNonLinearSolver Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::BFGSNonLinearSolver Class Reference
+
+
+ +

Class implementing a modified BFGS optimization scheme. + More...

+ +

#include <BFGSNonLinearSolver.h>

+
+Inheritance diagram for dftfe::BFGSNonLinearSolver:
+
+
+ + +dftfe::nonLinearSolver + +
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 BFGSNonLinearSolver (const bool usePreconditioner, const bool useRFOStep, const unsigned int maxNumberIterations, const unsigned int debugLevel, const MPI_Comm &mpi_comm_parent, const double trustRadius_maximum=0.5, const double trustRadius_initial=0.02, const double trustRadius_minimum=1.0e-4, const bool isCurvatureOnlyLineSearchStoppingCondition=false)
 Constructor.
 
 ~BFGSNonLinearSolver ()
 Destructor.
 
nonLinearSolver::ReturnValueType solve (nonlinearSolverProblem &problem, const std::string checkpointFileName="", const bool restart=false)
 Solve non-linear problem using a modified BFGS method.
 
void save (const std::string &checkpointFileName)
 Create checkpoint file for current state of the BFGS solver.
 
- Public Member Functions inherited from dftfe::nonLinearSolver
virtual ~nonLinearSolver ()=0
 Destructor.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

void initializeHessian (nonlinearSolverProblem &problem)
 initialize hessian, either preconditioner or identity matrix.
 
void updateHessian ()
 Update Hessian according to damped BFGS rule: Procedure 18.2 of Nocedal and Wright.
 
void scaleHessian ()
 Scale hessian according to eqn 6.20 of Nocedal and Wright.
 
void checkWolfe ()
 Check if the step satifies the Strong Wolfe conditons.
 
void computeRFOStep ()
 Compute step using the Rational Function Method.
 
void computeNewtonStep ()
 Compute the Quasi-Newton Step.
 
void computeStep ()
 Compute the final update step using the trust radius and whether or not the previous step was accepted.
 
void computeTrustRadius (nonlinearSolverProblem &problem)
 Estimate the trust radius for the next step based on the previous step and check for trust radius max/min conditons and reset BFGS if needed.
 
bool updateSolution (const std::vector< double > &step, nonlinearSolverProblem &problem)
 Update solution x -> x + step.
 
void load (const std::string &checkpointFileName)
 Load BFGS solver state from checkpoint file.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::vector< doubled_gradient
 
std::vector< doubled_value
 
std::vector< doubled_gradientNew
 
std::vector< doubled_valueNew
 
std::vector< doubled_deltaX
 
std::vector< doubled_deltaXNew
 
std::vector< doubled_updateVector
 
unsigned int d_numberUnknowns
 
unsigned int d_iter
 storage for current bfgs iteration count
 
std::vector< doubled_Srfo
 
std::vector< doubled_hessian
 storage for the hessian in current bfgs step.
 
double d_normDeltaXnew
 storage for inf norm of the update step.
 
double d_trustRadiusInitial
 storage for trust region parameters.
 
double d_trustRadiusMax
 
double d_trustRadiusMin
 
double d_trustRadius
 
bool d_stepAccepted
 boolean parameter for step accepteance and Wolfe conditions.
 
bool d_wolfeCurvature
 
bool d_wolfeSufficientDec
 
bool d_wolfeSatisfied
 
bool d_hessianScaled
 
bool d_isCurvatureOnlyLineSearchStoppingCondition
 
int d_isReset
 
bool d_useSingleAtomSolutionsInitialGuess
 
const bool d_useRFOStep
 
const bool d_usePreconditioner
 
MPI_Comm mpi_communicator
 
dealii::ConditionalOStream pcout
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from dftfe::nonLinearSolver
enum  ReturnValueType {
+  SUCCESS = 0 +, FAILURE +, LINESEARCH_FAILED +, MAX_ITER_REACHED +,
+  RESTART +
+ }
 
- Protected Member Functions inherited from dftfe::nonLinearSolver
 nonLinearSolver (const unsigned int debugLevel, const unsigned int maxNumberIterations, const double tolerance=0)
 Constructor.
 
double getTolerance () const
 Get tolerance.
 
unsigned int getMaximumNumberIterations () const
 Get maximum number of iterations.
 
unsigned int getDebugLevel () const
 Get debug level.
 
- Protected Attributes inherited from dftfe::nonLinearSolver
const unsigned int d_debugLevel
 controls the verbosity of the printing
 
const unsigned int d_maxNumberIterations
 maximum number of nonlinear solve iterations
 
const double d_tolerance
 nonlinear solve stopping tolerance
 
+

Detailed Description

+

Class implementing a modified BFGS optimization scheme.

+
Author
Nikhil Kodali
+

Constructor & Destructor Documentation

+ +

◆ BFGSNonLinearSolver()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::BFGSNonLinearSolver::BFGSNonLinearSolver (const bool usePreconditioner,
const bool useRFOStep,
const unsigned int maxNumberIterations,
const unsigned int debugLevel,
const MPI_Comm & mpi_comm_parent,
const double trustRadius_maximum = 0.5,
const double trustRadius_initial = 0.02,
const double trustRadius_minimum = 1.0e-4,
const bool isCurvatureOnlyLineSearchStoppingCondition = false )
+
+ +

Constructor.

+
Parameters
+ + + + + + + + + +
usePreconditionerBoolean parameter specifying whether or not to use the preconditioner.
useRFOStepBoolean parameter specifying whether or not the RFO step is used.
maxNumberIterationsMaximum number of iterations.
debugLevelDebug output level: 0 - no debug output 1 - limited debug output 2 - all debug output.
mpi_comm_parentThe mpi communicator used.
trustRadius_maximumMaximum trust region radius.
trustRadius_initialInitial trust region radius.
trustRadius_minimummimimum trust region radius (will reset BFGS).
+
+
+ +
+
+ +

◆ ~BFGSNonLinearSolver()

+ +
+
+ + + + + + + +
dftfe::BFGSNonLinearSolver::~BFGSNonLinearSolver ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ checkWolfe()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::BFGSNonLinearSolver::checkWolfe ()
+
+private
+
+ +

Check if the step satifies the Strong Wolfe conditons.

+ +
+
+ +

◆ computeNewtonStep()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::BFGSNonLinearSolver::computeNewtonStep ()
+
+private
+
+ +

Compute the Quasi-Newton Step.

+ +
+
+ +

◆ computeRFOStep()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::BFGSNonLinearSolver::computeRFOStep ()
+
+private
+
+ +

Compute step using the Rational Function Method.

+ +
+
+ +

◆ computeStep()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::BFGSNonLinearSolver::computeStep ()
+
+private
+
+ +

Compute the final update step using the trust radius and whether or not the previous step was accepted.

+ +
+
+ +

◆ computeTrustRadius()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::BFGSNonLinearSolver::computeTrustRadius (nonlinearSolverProblem & problem)
+
+private
+
+ +

Estimate the trust radius for the next step based on the previous step and check for trust radius max/min conditons and reset BFGS if needed.

+ +
+
+ +

◆ initializeHessian()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::BFGSNonLinearSolver::initializeHessian (nonlinearSolverProblem & problem)
+
+private
+
+ +

initialize hessian, either preconditioner or identity matrix.

+ +
+
+ +

◆ load()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::BFGSNonLinearSolver::load (const std::string & checkpointFileName)
+
+private
+
+ +

Load BFGS solver state from checkpoint file.

+ +
+
+ +

◆ save()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::BFGSNonLinearSolver::save (const std::string & checkpointFileName)
+
+virtual
+
+ +

Create checkpoint file for current state of the BFGS solver.

+ +

Implements dftfe::nonLinearSolver.

+ +
+
+ +

◆ scaleHessian()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::BFGSNonLinearSolver::scaleHessian ()
+
+private
+
+ +

Scale hessian according to eqn 6.20 of Nocedal and Wright.

+ +
+
+ +

◆ solve()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
nonLinearSolver::ReturnValueType dftfe::BFGSNonLinearSolver::solve (nonlinearSolverProblem & problem,
const std::string checkpointFileName = "",
const bool restart = false )
+
+virtual
+
+ +

Solve non-linear problem using a modified BFGS method.

+
Parameters
+ + + + +
problem[in]nonlinearSolverProblem object.
checkpointFileName[in]if string is non-empty, creates checkpoint file named checkpointFileName for every nonlinear iteration. If restart is set to true, checkpointFileName must match the name of the checkpoint file. Empty string will throw an error.
restart[in]boolean specifying whether this is a restart solve using the checkpoint file specified by checkpointFileName.
+
+
+
Returns
Return value indicating success or failure.
+ +

Implements dftfe::nonLinearSolver.

+ +
+
+ +

◆ updateHessian()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::BFGSNonLinearSolver::updateHessian ()
+
+private
+
+ +

Update Hessian according to damped BFGS rule: Procedure 18.2 of Nocedal and Wright.

+ +
+
+ +

◆ updateSolution()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
bool dftfe::BFGSNonLinearSolver::updateSolution (const std::vector< double > & step,
nonlinearSolverProblem & problem )
+
+private
+
+ +

Update solution x -> x + step.

+
Parameters
+ + + +
stepupdate step vector.
problemnonlinearSolverProblem object.
+
+
+
Returns
bool true if valid update and false if increment bound exceeded
+ +
+
+

Member Data Documentation

+ +

◆ d_deltaX

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::BFGSNonLinearSolver::d_deltaX
+
+private
+
+

storage for the step taken in last BFGS step, step computed in the corrent BFGS step and the update vector computed in the current bfgs step.

+ +
+
+ +

◆ d_deltaXNew

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::BFGSNonLinearSolver::d_deltaXNew
+
+private
+
+ +
+
+ +

◆ d_gradient

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::BFGSNonLinearSolver::d_gradient
+
+private
+
+

storage for the value and gradient of the nonlinear problem in the current bfgs step.

+ +
+
+ +

◆ d_gradientNew

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::BFGSNonLinearSolver::d_gradientNew
+
+private
+
+

storage for the value and gradient of the nonlinear problem evaluated at the end of the current bfgs step.

+ +
+
+ +

◆ d_hessian

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::BFGSNonLinearSolver::d_hessian
+
+private
+
+ +

storage for the hessian in current bfgs step.

+ +
+
+ +

◆ d_hessianScaled

+ +
+
+ + + + + +
+ + + + +
bool dftfe::BFGSNonLinearSolver::d_hessianScaled
+
+private
+
+

flag to check if hessian is scaled.

+ +
+
+ +

◆ d_isCurvatureOnlyLineSearchStoppingCondition

+ +
+
+ + + + + +
+ + + + +
bool dftfe::BFGSNonLinearSolver::d_isCurvatureOnlyLineSearchStoppingCondition
+
+private
+
+ +
+
+ +

◆ d_isReset

+ +
+
+ + + + + +
+ + + + +
int dftfe::BFGSNonLinearSolver::d_isReset
+
+private
+
+

Flag to store the reset state, 0 if step is accepted, 1 if reset occured and no steps are accepted, 2 if two resets occur without step being accepted (failure of BFGS).

+ +
+
+ +

◆ d_iter

+ +
+
+ + + + + +
+ + + + +
unsigned int dftfe::BFGSNonLinearSolver::d_iter
+
+private
+
+ +

storage for current bfgs iteration count

+ +
+
+ +

◆ d_normDeltaXnew

+ +
+
+ + + + + +
+ + + + +
double dftfe::BFGSNonLinearSolver::d_normDeltaXnew
+
+private
+
+ +

storage for inf norm of the update step.

+ +
+
+ +

◆ d_numberUnknowns

+ +
+
+ + + + + +
+ + + + +
unsigned int dftfe::BFGSNonLinearSolver::d_numberUnknowns
+
+private
+
+

storage for number of unknowns to be solved for in the nonlinear problem.

+ +
+
+ +

◆ d_Srfo

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::BFGSNonLinearSolver::d_Srfo
+
+private
+
+

storage for the S matrix in RFO framework, initialized to starting. Hessian Guess

+ +
+
+ +

◆ d_stepAccepted

+ +
+
+ + + + + +
+ + + + +
bool dftfe::BFGSNonLinearSolver::d_stepAccepted
+
+private
+
+ +

boolean parameter for step accepteance and Wolfe conditions.

+ +
+
+ +

◆ d_trustRadius

+ +
+
+ + + + + +
+ + + + +
double dftfe::BFGSNonLinearSolver::d_trustRadius
+
+private
+
+ +
+
+ +

◆ d_trustRadiusInitial

+ +
+
+ + + + + +
+ + + + +
double dftfe::BFGSNonLinearSolver::d_trustRadiusInitial
+
+private
+
+ +

storage for trust region parameters.

+ +
+
+ +

◆ d_trustRadiusMax

+ +
+
+ + + + + +
+ + + + +
double dftfe::BFGSNonLinearSolver::d_trustRadiusMax
+
+private
+
+ +
+
+ +

◆ d_trustRadiusMin

+ +
+
+ + + + + +
+ + + + +
double dftfe::BFGSNonLinearSolver::d_trustRadiusMin
+
+private
+
+ +
+
+ +

◆ d_updateVector

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::BFGSNonLinearSolver::d_updateVector
+
+private
+
+ +
+
+ +

◆ d_usePreconditioner

+ +
+
+ + + + + +
+ + + + +
const bool dftfe::BFGSNonLinearSolver::d_usePreconditioner
+
+private
+
+ +
+
+ +

◆ d_useRFOStep

+ +
+
+ + + + + +
+ + + + +
const bool dftfe::BFGSNonLinearSolver::d_useRFOStep
+
+private
+
+ +
+
+ +

◆ d_useSingleAtomSolutionsInitialGuess

+ +
+
+ + + + + +
+ + + + +
bool dftfe::BFGSNonLinearSolver::d_useSingleAtomSolutionsInitialGuess
+
+private
+
+ +
+
+ +

◆ d_value

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::BFGSNonLinearSolver::d_value
+
+private
+
+ +
+
+ +

◆ d_valueNew

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::BFGSNonLinearSolver::d_valueNew
+
+private
+
+ +
+
+ +

◆ d_wolfeCurvature

+ +
+
+ + + + + +
+ + + + +
bool dftfe::BFGSNonLinearSolver::d_wolfeCurvature
+
+private
+
+ +
+
+ +

◆ d_wolfeSatisfied

+ +
+
+ + + + + +
+ + + + +
bool dftfe::BFGSNonLinearSolver::d_wolfeSatisfied
+
+private
+
+ +
+
+ +

◆ d_wolfeSufficientDec

+ +
+
+ + + + + +
+ + + + +
bool dftfe::BFGSNonLinearSolver::d_wolfeSufficientDec
+
+private
+
+ +
+
+ +

◆ mpi_communicator

+ +
+
+ + + + + +
+ + + + +
MPI_Comm dftfe::BFGSNonLinearSolver::mpi_communicator
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::BFGSNonLinearSolver::pcout
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1_b_f_g_s_non_linear_solver.png b/classdftfe_1_1_b_f_g_s_non_linear_solver.png new file mode 100644 index 0000000000000000000000000000000000000000..827a8de66964d9d0acf01f98ea6403ca817acc61 GIT binary patch literal 704 zcmeAS@N?(olHy`uVBq!ia0vp^Yk)X_gBeI}-k;Y2q@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SR%c<=xyZhAIs2~du+B*-tA0mugfbEer>7#NtmJzX3_Dj46+z1#O%fv2V2 zan+xH{x!2intUTptbE0-@;=S$)cfNJccP!n`K;%pcG6a4gUZW=4XU2}XA>_k4B?(M zXZ4qv<-YIt-xin@lf_xxWHPaNK5EaetNM%H{tB-)yRUp>y&|CeQ9YMe#@8h$n7n$d$iu6)m*JYwNRrx3qKo zYYPtFP6?kE+8(zq<}90vWze5Hla{nIO;bTQe{W*(xk_QihUPei4c%o;wR_DL-R1mt zb{GHKuniM=84kEJax=(rMKF8_IKb4<&LqZQBeH?v!NLYs27Xo@h6;@Y#ski1N<1`| z#dU7-oImker6iCoti3mN*W^as zXJ7VSHEvtWSbXrBQ}1hSp1yfb>#vo+N^rm1W|;lGHqs)>!#X={8}}B=bP?kS+3(5e zSGN~^$&T3iT5ryo6ZdAapVLd)*4^*E;o8;gg^D@#`qK=pPqLLdG}p^Eo=}K{1|YctE1ut@9ZG2 b*)QbT&-G@BX}r4zOlu6Du6{1-oD!M + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::KohnShamHamiltonianOperator< memorySpace > Member List
+
+
+ +

This is the complete list of members for dftfe::KohnShamHamiltonianOperator< memorySpace >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeCellHamiltonianMatrix(const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)dftfe::KohnShamHamiltonianOperator< memorySpace >
computeCellHamiltonianMatrixExtPotContribution()dftfe::KohnShamHamiltonianOperator< memorySpace >
computeVEff(const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &phiValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int spinIndex=0)dftfe::KohnShamHamiltonianOperator< memorySpace >
computeVEffExternalPotCorr(const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues)dftfe::KohnShamHamiltonianOperator< memorySpace >
computeVEffPrime(const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoPrimeValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoPrimeValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int spinIndex)dftfe::KohnShamHamiltonianOperator< memorySpace >
computing_timerdftfe::KohnShamHamiltonianOperator< memorySpace >private
constraintInfoClass typedefdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_basisOperationsPtrdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_basisOperationsPtrHostdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_BLASWrapperPtrdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_cellHamiltonianMatrixdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_cellHamiltonianMatrixExtPotdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_cellsBlockSizeHamiltonianConstructiondftfe::KohnShamHamiltonianOperator< memorySpace >private
d_cellsBlockSizeHXdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_cellWaveFunctionMatrixDstdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_cellWaveFunctionMatrixSrcdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_densityQuadratureIDdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_dftParamsPtrdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_excManagerPtrdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_feOrderPlusOneQuadratureIDdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_HamiltonianIndexdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_invJacderExcWithSigmaTimesGradRhoJxWdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_invJacKPointTimesJxWdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_isExternalPotCorrHamiltonianComputeddftfe::KohnShamHamiltonianOperator< memorySpace >private
d_kPointCoordinatesdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_kPointIndexdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_kPointWeightsdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_lpspQuadratureIDdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_mpiCommDomaindftfe::KohnShamHamiltonianOperator< memorySpace >private
d_mpiCommParentdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_numVectorsInternaldftfe::KohnShamHamiltonianOperator< memorySpace >private
d_oncvClassPtrdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_ONCVnonLocalOperatordftfe::KohnShamHamiltonianOperator< memorySpace >private
d_ONCVNonLocalProjectorTimesVectorBlockdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_spinIndexdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_VeffExtPotJxWdftfe::KohnShamHamiltonianOperator< memorySpace >private
d_VeffJxWdftfe::KohnShamHamiltonianOperator< memorySpace >private
getInverseSqrtMassVector()dftfe::KohnShamHamiltonianOperator< memorySpace >virtual
getMPICommunicatorDomain()dftfe::KohnShamHamiltonianOperator< memorySpace >virtual
getOverloadedConstraintMatrix() constdftfe::KohnShamHamiltonianOperator< memorySpace >inlinevirtual
getOverloadedConstraintMatrixHost() constdftfe::KohnShamHamiltonianOperator< memorySpace >virtual
getScratchFEMultivector(const unsigned int numVectors, const unsigned int index)dftfe::KohnShamHamiltonianOperator< memorySpace >virtual
getSqrtMassVector()dftfe::KohnShamHamiltonianOperator< memorySpace >virtual
HX(dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &src, const double scalarHX, const double scalarY, const double scalarX, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dst, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)dftfe::KohnShamHamiltonianOperator< memorySpace >virtual
HXCheby(dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &src, const double scalarHX, const double scalarY, const double scalarX, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dst, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false, const bool skip1=false, const bool skip2=false, const bool skip3=false)dftfe::KohnShamHamiltonianOperator< memorySpace >virtual
HXRR(dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &src, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dstHX, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dstMX, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)dftfe::KohnShamHamiltonianOperator< memorySpace >
init(const std::vector< double > &kPointCoordinates, const std::vector< double > &kPointWeights)dftfe::KohnShamHamiltonianOperator< memorySpace >virtual
inverseMassVectorScaledConstraintsNoneDataInfoPtrdftfe::KohnShamHamiltonianOperator< memorySpace >private
inverseSqrtMassVectorScaledConstraintsNoneDataInfoPtrdftfe::KohnShamHamiltonianOperator< memorySpace >private
KohnShamHamiltonianOperator(std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > BLASWrapperPtr, std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, memorySpace > > basisOperationsPtr, std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > basisOperationsPtrHost, std::shared_ptr< dftfe::oncvClass< dataTypes::number, memorySpace > > oncvClassPtr, std::shared_ptr< excManager > excManagerPtr, dftParameters *dftParamsPtr, const unsigned int densityQuadratureID, const unsigned int lpspQuadratureID, const unsigned int feOrderPlusOneQuadratureID, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain)dftfe::KohnShamHamiltonianOperator< memorySpace >
n_mpi_processesdftfe::KohnShamHamiltonianOperator< memorySpace >private
pcoutdftfe::KohnShamHamiltonianOperator< memorySpace >private
reinitkPointSpinIndex(const unsigned int kPointIndex, const unsigned int spinIndex)dftfe::KohnShamHamiltonianOperator< memorySpace >virtual
reinitNumberWavefunctions(const unsigned int numWfc)dftfe::KohnShamHamiltonianOperator< memorySpace >virtual
resetExtPotHamFlag()dftfe::KohnShamHamiltonianOperator< memorySpace >
tempHamMatrixImagBlockdftfe::KohnShamHamiltonianOperator< memorySpace >private
tempHamMatrixRealBlockdftfe::KohnShamHamiltonianOperator< memorySpace >private
this_mpi_processdftfe::KohnShamHamiltonianOperator< memorySpace >private
~operatorDFTClass()dftfe::operatorDFTClass< memorySpace >inlinevirtual
+ + + + diff --git a/classdftfe_1_1_kohn_sham_hamiltonian_operator.html b/classdftfe_1_1_kohn_sham_hamiltonian_operator.html new file mode 100644 index 000000000..ac3e5da3b --- /dev/null +++ b/classdftfe_1_1_kohn_sham_hamiltonian_operator.html @@ -0,0 +1,1870 @@ + + + + + + + +DFT-FE: dftfe::KohnShamHamiltonianOperator< memorySpace > Class Template Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::KohnShamHamiltonianOperator< memorySpace > Class Template Reference
+
+
+ +

#include <KohnShamHamiltonianOperator.h>

+
+Inheritance diagram for dftfe::KohnShamHamiltonianOperator< memorySpace >:
+
+
+ + +dftfe::operatorDFTClass< memorySpace > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 KohnShamHamiltonianOperator (std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > BLASWrapperPtr, std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, memorySpace > > basisOperationsPtr, std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > basisOperationsPtrHost, std::shared_ptr< dftfe::oncvClass< dataTypes::number, memorySpace > > oncvClassPtr, std::shared_ptr< excManager > excManagerPtr, dftParameters *dftParamsPtr, const unsigned int densityQuadratureID, const unsigned int lpspQuadratureID, const unsigned int feOrderPlusOneQuadratureID, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain)
 
void init (const std::vector< double > &kPointCoordinates, const std::vector< double > &kPointWeights)
 
void resetExtPotHamFlag ()
 
const MPI_CommgetMPICommunicatorDomain ()
 
dftUtils::constraintMatrixInfogetOverloadedConstraintMatrixHost () const
 
constraintInfoClassgetOverloadedConstraintMatrix () const
 
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & getScratchFEMultivector (const unsigned int numVectors, const unsigned int index)
 
void computeVEff (const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &phiValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int spinIndex=0)
 Computes effective potential involving exchange-correlation functionals.
 
void computeVEffExternalPotCorr (const std::map< dealii::CellId, std::vector< double > > &externalPotCorrValues)
 
void computeVEffPrime (const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoPrimeValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoPrimeValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &phiPrimeValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const unsigned int spinIndex)
 
void reinitkPointSpinIndex (const unsigned int kPointIndex, const unsigned int spinIndex)
 sets the data member to appropriate kPoint and spin Index
 
void reinitNumberWavefunctions (const unsigned int numWfc)
 
const dftfe::utils::MemoryStorage< double, memorySpace > & getInverseSqrtMassVector ()
 
const dftfe::utils::MemoryStorage< double, memorySpace > & getSqrtMassVector ()
 
void computeCellHamiltonianMatrix (const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
 
void computeCellHamiltonianMatrixExtPotContribution ()
 
void HX (dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &src, const double scalarHX, const double scalarY, const double scalarX, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dst, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
 
void HXCheby (dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &src, const double scalarHX, const double scalarY, const double scalarX, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dst, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false, const bool skip1=false, const bool skip2=false, const bool skip3=false)
 
void HXRR (dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &src, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dstHX, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dstMX, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
 
- Public Member Functions inherited from dftfe::operatorDFTClass< memorySpace >
virtual ~operatorDFTClass ()
 Destructor.
 
+ + + +

+Private Types

using constraintInfoClass = dftUtils::constraintMatrixInfo
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::shared_ptr< AtomicCenteredNonLocalOperator< dataTypes::number, memorySpace > > d_ONCVnonLocalOperator
 
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > d_BLASWrapperPtr
 
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, memorySpace > > d_basisOperationsPtr
 
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > d_basisOperationsPtrHost
 
std::shared_ptr< dftfe::oncvClass< dataTypes::number, memorySpace > > d_oncvClassPtr
 
std::shared_ptr< excManagerd_excManagerPtr
 
dftParametersd_dftParamsPtr
 
std::vector< dftfe::utils::MemoryStorage< dataTypes::number, memorySpace > > d_cellHamiltonianMatrix
 
dftfe::utils::MemoryStorage< double, memorySpaced_cellHamiltonianMatrixExtPot
 
dftfe::utils::MemoryStorage< dataTypes::number, memorySpaced_cellWaveFunctionMatrixSrc
 
dftfe::utils::MemoryStorage< dataTypes::number, memorySpaced_cellWaveFunctionMatrixDst
 
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpaced_ONCVNonLocalProjectorTimesVectorBlock
 
dftfe::utils::MemoryStorage< double, memorySpaced_VeffJxW
 
dftfe::utils::MemoryStorage< double, memorySpaced_VeffExtPotJxW
 
dftfe::utils::MemoryStorage< double, memorySpaced_invJacderExcWithSigmaTimesGradRhoJxW
 
std::vector< dftfe::utils::MemoryStorage< double, memorySpace > > d_invJacKPointTimesJxW
 
std::shared_ptr< constraintInfoClassinverseMassVectorScaledConstraintsNoneDataInfoPtr
 
std::shared_ptr< constraintInfoClassinverseSqrtMassVectorScaledConstraintsNoneDataInfoPtr
 
std::vector< doubled_kPointCoordinates
 
std::vector< doubled_kPointWeights
 
dftfe::utils::MemoryStorage< double, memorySpacetempHamMatrixRealBlock
 
dftfe::utils::MemoryStorage< double, memorySpacetempHamMatrixImagBlock
 
const unsigned int d_densityQuadratureID
 
const unsigned int d_lpspQuadratureID
 
const unsigned int d_feOrderPlusOneQuadratureID
 
unsigned int d_kPointIndex
 
unsigned int d_spinIndex
 
unsigned int d_HamiltonianIndex
 
bool d_isExternalPotCorrHamiltonianComputed
 
const MPI_Comm d_mpiCommParent
 
const MPI_Comm d_mpiCommDomain
 
const unsigned int n_mpi_processes
 
const unsigned int this_mpi_process
 
unsigned int d_cellsBlockSizeHamiltonianConstruction
 
unsigned int d_cellsBlockSizeHX
 
unsigned int d_numVectorsInternal
 
dealii::ConditionalOStream pcout
 
dealii::TimerOutput computing_timer
 
+ + + + +

+Additional Inherited Members

- Public Types inherited from dftfe::operatorDFTClass< memorySpace >
using constraintInfoClass = dftUtils::constraintMatrixInfo
 
+

Member Typedef Documentation

+ +

◆ constraintInfoClass

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
using dftfe::KohnShamHamiltonianOperator< memorySpace >::constraintInfoClass = dftUtils::constraintMatrixInfo
+
+private
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ KohnShamHamiltonianOperator()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::KohnShamHamiltonianOperator< memorySpace >::KohnShamHamiltonianOperator (std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > BLASWrapperPtr,
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, memorySpace > > basisOperationsPtr,
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > basisOperationsPtrHost,
std::shared_ptr< dftfe::oncvClass< dataTypes::number, memorySpace > > oncvClassPtr,
std::shared_ptr< excManager > excManagerPtr,
dftParameters * dftParamsPtr,
const unsigned int densityQuadratureID,
const unsigned int lpspQuadratureID,
const unsigned int feOrderPlusOneQuadratureID,
const MPI_Comm & mpi_comm_parent,
const MPI_Comm & mpi_comm_domain )
+
+ +
+
+

Member Function Documentation

+ +

◆ computeCellHamiltonianMatrix()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::KohnShamHamiltonianOperator< memorySpace >::computeCellHamiltonianMatrix (const bool onlyHPrimePartForFirstOrderDensityMatResponse = false)
+
+ +
+
+ +

◆ computeCellHamiltonianMatrixExtPotContribution()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::KohnShamHamiltonianOperator< memorySpace >::computeCellHamiltonianMatrixExtPotContribution ()
+
+ +
+
+ +

◆ computeVEff()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::KohnShamHamiltonianOperator< memorySpace >::computeVEff (const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & rhoValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & gradRhoValues,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & phiValues,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoCoreValues,
const unsigned int spinIndex = 0 )
+
+ +

Computes effective potential involving exchange-correlation functionals.

+
Parameters
+ + + + +
rhoValueselectron-density
phiValueselectrostatic potential arising both from electron-density and nuclear charge
rhoCoreValuesquadrature data of sum{Vext} minus sum{Vnu}
+
+
+ +
+
+ +

◆ computeVEffExternalPotCorr()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::KohnShamHamiltonianOperator< memorySpace >::computeVEffExternalPotCorr (const std::map< dealii::CellId, std::vector< double > > & externalPotCorrValues)
+
+ +
+
+ +

◆ computeVEffPrime()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::KohnShamHamiltonianOperator< memorySpace >::computeVEffPrime (const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & rhoValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & rhoPrimeValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & gradRhoValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & gradRhoPrimeValues,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & phiPrimeValues,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoCoreValues,
const unsigned int spinIndex )
+
+ +
+
+ +

◆ getInverseSqrtMassVector()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
const dftfe::utils::MemoryStorage< double, memorySpace > & dftfe::KohnShamHamiltonianOperator< memorySpace >::getInverseSqrtMassVector ()
+
+virtual
+
+
+ +

◆ getMPICommunicatorDomain()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
const MPI_Comm & dftfe::KohnShamHamiltonianOperator< memorySpace >::getMPICommunicatorDomain ()
+
+virtual
+
+
+ +

◆ getOverloadedConstraintMatrix()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
constraintInfoClass * dftfe::KohnShamHamiltonianOperator< memorySpace >::getOverloadedConstraintMatrix () const
+
+inlinevirtual
+
+
+ +

◆ getOverloadedConstraintMatrixHost()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
dftUtils::constraintMatrixInfo * dftfe::KohnShamHamiltonianOperator< memorySpace >::getOverloadedConstraintMatrixHost () const
+
+virtual
+
+
+ +

◆ getScratchFEMultivector()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & dftfe::KohnShamHamiltonianOperator< memorySpace >::getScratchFEMultivector (const unsigned int numVectors,
const unsigned int index )
+
+virtual
+
+
+ +

◆ getSqrtMassVector()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
const dftfe::utils::MemoryStorage< double, memorySpace > & dftfe::KohnShamHamiltonianOperator< memorySpace >::getSqrtMassVector ()
+
+virtual
+
+
+ +

◆ HX()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::KohnShamHamiltonianOperator< memorySpace >::HX (dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & src,
const double scalarHX,
const double scalarY,
const double scalarX,
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & dst,
const bool onlyHPrimePartForFirstOrderDensityMatResponse = false )
+
+virtual
+
+
+ +

◆ HXCheby()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::KohnShamHamiltonianOperator< memorySpace >::HXCheby (dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & src,
const double scalarHX,
const double scalarY,
const double scalarX,
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & dst,
const bool onlyHPrimePartForFirstOrderDensityMatResponse = false,
const bool skip1 = false,
const bool skip2 = false,
const bool skip3 = false )
+
+virtual
+
+
+ +

◆ HXRR()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::KohnShamHamiltonianOperator< memorySpace >::HXRR (dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & src,
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & dstHX,
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & dstMX,
const bool onlyHPrimePartForFirstOrderDensityMatResponse = false )
+
+ +
+
+ +

◆ init()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
void dftfe::KohnShamHamiltonianOperator< memorySpace >::init (const std::vector< double > & kPointCoordinates,
const std::vector< double > & kPointWeights )
+
+virtual
+
+
+ +

◆ reinitkPointSpinIndex()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
void dftfe::KohnShamHamiltonianOperator< memorySpace >::reinitkPointSpinIndex (const unsigned int kPointIndex,
const unsigned int spinIndex )
+
+virtual
+
+ +

sets the data member to appropriate kPoint and spin Index

+
Parameters
+ + +
kPointIndexk-point Index to set
+
+
+ +

Implements dftfe::operatorDFTClass< memorySpace >.

+ +
+
+ +

◆ reinitNumberWavefunctions()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::KohnShamHamiltonianOperator< memorySpace >::reinitNumberWavefunctions (const unsigned int numWfc)
+
+virtual
+
+
+ +

◆ resetExtPotHamFlag()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::KohnShamHamiltonianOperator< memorySpace >::resetExtPotHamFlag ()
+
+ +
+
+

Member Data Documentation

+ +

◆ computing_timer

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::TimerOutput dftfe::KohnShamHamiltonianOperator< memorySpace >::computing_timer
+
+private
+
+ +
+
+ +

◆ d_basisOperationsPtr

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr< dftfe::basis::FEBasisOperations<dataTypes::number, double, memorySpace> > dftfe::KohnShamHamiltonianOperator< memorySpace >::d_basisOperationsPtr
+
+private
+
+ +
+
+ +

◆ d_basisOperationsPtrHost

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr< dftfe::basis::FEBasisOperations<dataTypes::number, double, dftfe::utils::MemorySpace::HOST> > dftfe::KohnShamHamiltonianOperator< memorySpace >::d_basisOperationsPtrHost
+
+private
+
+ +
+
+ +

◆ d_BLASWrapperPtr

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr<dftfe::linearAlgebra::BLASWrapper<memorySpace> > dftfe::KohnShamHamiltonianOperator< memorySpace >::d_BLASWrapperPtr
+
+private
+
+ +
+
+ +

◆ d_cellHamiltonianMatrix

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<dftfe::utils::MemoryStorage<dataTypes::number, memorySpace> > dftfe::KohnShamHamiltonianOperator< memorySpace >::d_cellHamiltonianMatrix
+
+private
+
+ +
+
+ +

◆ d_cellHamiltonianMatrixExtPot

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, memorySpace> dftfe::KohnShamHamiltonianOperator< memorySpace >::d_cellHamiltonianMatrixExtPot
+
+private
+
+ +
+
+ +

◆ d_cellsBlockSizeHamiltonianConstruction

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::KohnShamHamiltonianOperator< memorySpace >::d_cellsBlockSizeHamiltonianConstruction
+
+private
+
+ +
+
+ +

◆ d_cellsBlockSizeHX

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::KohnShamHamiltonianOperator< memorySpace >::d_cellsBlockSizeHX
+
+private
+
+ +
+
+ +

◆ d_cellWaveFunctionMatrixDst

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<dataTypes::number, memorySpace> dftfe::KohnShamHamiltonianOperator< memorySpace >::d_cellWaveFunctionMatrixDst
+
+private
+
+ +
+
+ +

◆ d_cellWaveFunctionMatrixSrc

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<dataTypes::number, memorySpace> dftfe::KohnShamHamiltonianOperator< memorySpace >::d_cellWaveFunctionMatrixSrc
+
+private
+
+ +
+
+ +

◆ d_densityQuadratureID

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const unsigned int dftfe::KohnShamHamiltonianOperator< memorySpace >::d_densityQuadratureID
+
+private
+
+ +
+
+ +

◆ d_dftParamsPtr

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftParameters* dftfe::KohnShamHamiltonianOperator< memorySpace >::d_dftParamsPtr
+
+private
+
+ +
+
+ +

◆ d_excManagerPtr

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr<excManager> dftfe::KohnShamHamiltonianOperator< memorySpace >::d_excManagerPtr
+
+private
+
+ +
+
+ +

◆ d_feOrderPlusOneQuadratureID

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const unsigned int dftfe::KohnShamHamiltonianOperator< memorySpace >::d_feOrderPlusOneQuadratureID
+
+private
+
+ +
+
+ +

◆ d_HamiltonianIndex

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::KohnShamHamiltonianOperator< memorySpace >::d_HamiltonianIndex
+
+private
+
+ +
+
+ +

◆ d_invJacderExcWithSigmaTimesGradRhoJxW

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, memorySpace> dftfe::KohnShamHamiltonianOperator< memorySpace >::d_invJacderExcWithSigmaTimesGradRhoJxW
+
+private
+
+ +
+
+ +

◆ d_invJacKPointTimesJxW

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<dftfe::utils::MemoryStorage<double, memorySpace> > dftfe::KohnShamHamiltonianOperator< memorySpace >::d_invJacKPointTimesJxW
+
+private
+
+ +
+
+ +

◆ d_isExternalPotCorrHamiltonianComputed

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
bool dftfe::KohnShamHamiltonianOperator< memorySpace >::d_isExternalPotCorrHamiltonianComputed
+
+private
+
+ +
+
+ +

◆ d_kPointCoordinates

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::KohnShamHamiltonianOperator< memorySpace >::d_kPointCoordinates
+
+private
+
+ +
+
+ +

◆ d_kPointIndex

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::KohnShamHamiltonianOperator< memorySpace >::d_kPointIndex
+
+private
+
+ +
+
+ +

◆ d_kPointWeights

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::KohnShamHamiltonianOperator< memorySpace >::d_kPointWeights
+
+private
+
+ +
+
+ +

◆ d_lpspQuadratureID

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const unsigned int dftfe::KohnShamHamiltonianOperator< memorySpace >::d_lpspQuadratureID
+
+private
+
+ +
+
+ +

◆ d_mpiCommDomain

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::KohnShamHamiltonianOperator< memorySpace >::d_mpiCommDomain
+
+private
+
+ +
+
+ +

◆ d_mpiCommParent

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::KohnShamHamiltonianOperator< memorySpace >::d_mpiCommParent
+
+private
+
+ +
+
+ +

◆ d_numVectorsInternal

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::KohnShamHamiltonianOperator< memorySpace >::d_numVectorsInternal
+
+private
+
+ +
+
+ +

◆ d_oncvClassPtr

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr<dftfe::oncvClass<dataTypes::number, memorySpace> > dftfe::KohnShamHamiltonianOperator< memorySpace >::d_oncvClassPtr
+
+private
+
+ +
+
+ +

◆ d_ONCVnonLocalOperator

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr< AtomicCenteredNonLocalOperator<dataTypes::number, memorySpace> > dftfe::KohnShamHamiltonianOperator< memorySpace >::d_ONCVnonLocalOperator
+
+private
+
+ +
+
+ +

◆ d_ONCVNonLocalProjectorTimesVectorBlock

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::linearAlgebra::MultiVector<dataTypes::number, memorySpace> dftfe::KohnShamHamiltonianOperator< memorySpace >::d_ONCVNonLocalProjectorTimesVectorBlock
+
+private
+
+ +
+
+ +

◆ d_spinIndex

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::KohnShamHamiltonianOperator< memorySpace >::d_spinIndex
+
+private
+
+ +
+
+ +

◆ d_VeffExtPotJxW

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, memorySpace> dftfe::KohnShamHamiltonianOperator< memorySpace >::d_VeffExtPotJxW
+
+private
+
+ +
+
+ +

◆ d_VeffJxW

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, memorySpace> dftfe::KohnShamHamiltonianOperator< memorySpace >::d_VeffJxW
+
+private
+
+ +
+
+ +

◆ inverseMassVectorScaledConstraintsNoneDataInfoPtr

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr<constraintInfoClass> dftfe::KohnShamHamiltonianOperator< memorySpace >::inverseMassVectorScaledConstraintsNoneDataInfoPtr
+
+private
+
+ +
+
+ +

◆ inverseSqrtMassVectorScaledConstraintsNoneDataInfoPtr

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr<constraintInfoClass> dftfe::KohnShamHamiltonianOperator< memorySpace >::inverseSqrtMassVectorScaledConstraintsNoneDataInfoPtr
+
+private
+
+ +
+
+ +

◆ n_mpi_processes

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const unsigned int dftfe::KohnShamHamiltonianOperator< memorySpace >::n_mpi_processes
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::KohnShamHamiltonianOperator< memorySpace >::pcout
+
+private
+
+ +
+
+ +

◆ tempHamMatrixImagBlock

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, memorySpace> dftfe::KohnShamHamiltonianOperator< memorySpace >::tempHamMatrixImagBlock
+
+private
+
+ +
+
+ +

◆ tempHamMatrixRealBlock

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, memorySpace> dftfe::KohnShamHamiltonianOperator< memorySpace >::tempHamMatrixRealBlock
+
+private
+
+ +
+
+ +

◆ this_mpi_process

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const unsigned int dftfe::KohnShamHamiltonianOperator< memorySpace >::this_mpi_process
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1_kohn_sham_hamiltonian_operator.png b/classdftfe_1_1_kohn_sham_hamiltonian_operator.png new file mode 100644 index 0000000000000000000000000000000000000000..01ecd53c1874fd05037917dec0a346ccd23e33cd GIT binary patch literal 1175 zcmeAS@N?(olHy`uVBq!ia0y~yU~~qu12~w0W0G|-o|Ns93nJ?aaE$u(F z+`>S!Kw|ot7Y`mh0E(NQ4O;?~<17jC3uXZF!N8np_7w&O79~#?$B+ufw{u@ldaT9M zGP~?*$o~Jr^HusBCl%_2rIml{33?|{Jo$&fBmHTqkzS`a=`3$;Rquhik{EDm>n()y&b3WbC=WqvcF#srJnm;z4pd;^^-kj#VS8N=O$Lf-~0W~ zrLETAsekRm&D!std3>5&)&EeJ!TrRV>ept!o~8A#yZTzYH@ouB+O4t?2{-I}8Gpau zk#l%=?)STICA2Tve^)wL{#ER-G?RGy;*3{!!zBc>=NtC0y-T+0mljCBT^s%Sw#NJT zh%+V2Jw7$wOSLe3efZf1OM@-!+trVG%0!*Iy**j3^UPa`Z^u?{tXEvR$JOxkg=a4> zWE#Lg)7r%ZQ@9aM88IvbG z>(L$G{x{W+3+D0L9zJ~8B>BgaxVmZl@s_72K8!!xZWe!k{nfg-%A-A zJ_}2JW4_}qcmMRoZU4U+?)iS+;!FFx)JZk#F7KQ0c2ScQ&Bg2W65=;($M+F#)K+1v*SsH+`#qcDAhf!fUP>H3eGqsewlux)3mA&*@ zl(nvjrPf=&jQ!6FBg8YsKOaj_IY0Bi}3f*nn_Nw$g|7Q6r>Gjj?>%Y!b@14Ht z>%^3Kk>{^AsK~wuUijh8Bo#~7wsMinrL4EA54<<3v3PZm&nxIkyTrZ(&q;IG4o5S@ znLpemoEi`EyIrxT{H?OtKD}xAbv!>Vw^=+|acH-N2fO)Vb6cxB`&#p@ z&mIi25jEePZt?Q2b)I#B$xDs}6JA~WAQ8FD^K$xpk9i?Km^ZAxJ9lA+HBZI1DYZ`0 z)n6JG`mVSA)o*_6-O_H2@@cb8YSoU(8*G_AW9}8U4=oRm7}h`Po4zTsNcevEHw(V< z@>5%8?+xbL_It&{hKJdWJN+%sKQ0iOKKuW&iWdjwJ<$GHQ2+H`VcRnf8M#AyFDLh| zpY!y@2OqmFncwOfzkGgVaiip+^1Zrmr}gJOy|7{D?%AcUGta+%5+@h?cCXG!8#ecd ziP9TV55Ik9HhF)AzW1f`*UPPTpN^gMrK{^<&8s90&wQ;jf9%sVJniA}6KptT$(*i* iDo;xip)tAoKSSs<&Kbd3Hxz+I2!p4qpUXO@geCyM_c*Qq literal 0 HcmV?d00001 diff --git a/classdftfe_1_1_l_b_f_g_s_non_linear_solver-members.html b/classdftfe_1_1_l_b_f_g_s_non_linear_solver-members.html new file mode 100644 index 000000000..6ccf53438 --- /dev/null +++ b/classdftfe_1_1_l_b_f_g_s_non_linear_solver-members.html @@ -0,0 +1,147 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::LBFGSNonLinearSolver Member List
+
+
+ +

This is the complete list of members for dftfe::LBFGSNonLinearSolver, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
checkWolfe()dftfe::LBFGSNonLinearSolverprivate
computeHx(std::vector< double > &Hx)dftfe::LBFGSNonLinearSolverprivate
computeStep()dftfe::LBFGSNonLinearSolverprivate
computeStepScale(nonlinearSolverProblem &problem)dftfe::LBFGSNonLinearSolverprivate
computeUpdateStep()dftfe::LBFGSNonLinearSolverprivate
d_alphadftfe::LBFGSNonLinearSolverprivate
d_debugLeveldftfe::nonLinearSolverprotected
d_deltaGqdftfe::LBFGSNonLinearSolverprivate
d_deltaXdftfe::LBFGSNonLinearSolverprivate
d_deltaXNewdftfe::LBFGSNonLinearSolverprivate
d_deltaXqdftfe::LBFGSNonLinearSolverprivate
d_gradientdftfe::LBFGSNonLinearSolverprivate
d_gradientNewdftfe::LBFGSNonLinearSolverprivate
d_isCurvatureOnlyLineSearchStoppingConditiondftfe::LBFGSNonLinearSolverprivate
d_iterdftfe::LBFGSNonLinearSolverprivate
d_maxNumberIterationsdftfe::nonLinearSolverprotected
d_maxNumPastStepsdftfe::LBFGSNonLinearSolverprivate
d_maxStepLengthdftfe::LBFGSNonLinearSolverprivate
d_noHistorydftfe::LBFGSNonLinearSolverprivate
d_normDeltaXnewdftfe::LBFGSNonLinearSolverprivate
d_numberUnknownsdftfe::LBFGSNonLinearSolverprivate
d_numPastStepsdftfe::LBFGSNonLinearSolverprivate
d_preconditionerdftfe::LBFGSNonLinearSolverprivate
d_rhoqdftfe::LBFGSNonLinearSolverprivate
d_stepAccepteddftfe::LBFGSNonLinearSolverprivate
d_tolerancedftfe::nonLinearSolverprotected
d_updateVectordftfe::LBFGSNonLinearSolverprivate
d_usePreconditionerdftfe::LBFGSNonLinearSolverprivate
d_useSingleAtomSolutionsInitialGuessdftfe::LBFGSNonLinearSolverprivate
d_valuedftfe::LBFGSNonLinearSolverprivate
d_valueNewdftfe::LBFGSNonLinearSolverprivate
d_wolfeCurvaturedftfe::LBFGSNonLinearSolverprivate
d_wolfeSatisfieddftfe::LBFGSNonLinearSolverprivate
d_wolfeSufficientDecdftfe::LBFGSNonLinearSolverprivate
FAILURE enum valuedftfe::nonLinearSolver
getDebugLevel() constdftfe::nonLinearSolverprotected
getMaximumNumberIterations() constdftfe::nonLinearSolverprotected
getTolerance() constdftfe::nonLinearSolverprotected
initializePreconditioner(nonlinearSolverProblem &problem)dftfe::LBFGSNonLinearSolverprivate
LBFGSNonLinearSolver(const bool usePreconditioner, const double maxUpdate, const unsigned int maxNumberIterations, const int maxNumPastSteps, const unsigned int debugLevel, const MPI_Comm &mpi_comm_parent, const bool isCurvatureOnlyLineSearchStoppingCondition=false)dftfe::LBFGSNonLinearSolver
LINESEARCH_FAILED enum valuedftfe::nonLinearSolver
load(const std::string &checkpointFileName)dftfe::LBFGSNonLinearSolverprivate
MAX_ITER_REACHED enum valuedftfe::nonLinearSolver
mpi_communicatordftfe::LBFGSNonLinearSolverprivate
nonLinearSolver(const unsigned int debugLevel, const unsigned int maxNumberIterations, const double tolerance=0)dftfe::nonLinearSolverprotected
pcoutdftfe::LBFGSNonLinearSolverprivate
RESTART enum valuedftfe::nonLinearSolver
ReturnValueType enum namedftfe::nonLinearSolver
save(const std::string &checkpointFileName)dftfe::LBFGSNonLinearSolvervirtual
scalePreconditioner(nonlinearSolverProblem &problem)dftfe::LBFGSNonLinearSolverprivate
solve(nonlinearSolverProblem &problem, const std::string checkpointFileName="", const bool restart=false)dftfe::LBFGSNonLinearSolvervirtual
SUCCESS enum valuedftfe::nonLinearSolver
updateHistory()dftfe::LBFGSNonLinearSolverprivate
updateSolution(const std::vector< double > &step, nonlinearSolverProblem &problem)dftfe::LBFGSNonLinearSolverprivate
~LBFGSNonLinearSolver()dftfe::LBFGSNonLinearSolver
~nonLinearSolver()=0dftfe::nonLinearSolverpure virtual
+ + + + diff --git a/classdftfe_1_1_l_b_f_g_s_non_linear_solver.html b/classdftfe_1_1_l_b_f_g_s_non_linear_solver.html new file mode 100644 index 000000000..de761c46f --- /dev/null +++ b/classdftfe_1_1_l_b_f_g_s_non_linear_solver.html @@ -0,0 +1,1351 @@ + + + + + + + +DFT-FE: dftfe::LBFGSNonLinearSolver Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::LBFGSNonLinearSolver Class Reference
+
+
+ +

Class implementing LBFGS optimzation method. + More...

+ +

#include <LBFGSNonLinearSolver.h>

+
+Inheritance diagram for dftfe::LBFGSNonLinearSolver:
+
+
+ + +dftfe::nonLinearSolver + +
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 LBFGSNonLinearSolver (const bool usePreconditioner, const double maxUpdate, const unsigned int maxNumberIterations, const int maxNumPastSteps, const unsigned int debugLevel, const MPI_Comm &mpi_comm_parent, const bool isCurvatureOnlyLineSearchStoppingCondition=false)
 Constructor.
 
 ~LBFGSNonLinearSolver ()
 Destructor.
 
nonLinearSolver::ReturnValueType solve (nonlinearSolverProblem &problem, const std::string checkpointFileName="", const bool restart=false)
 Solve non-linear problem using LBFGS method.
 
void save (const std::string &checkpointFileName)
 Create checkpoint file for current state of the LBFGS solver.
 
- Public Member Functions inherited from dftfe::nonLinearSolver
virtual ~nonLinearSolver ()=0
 Destructor.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

void initializePreconditioner (nonlinearSolverProblem &problem)
 Initialize preconditioner.
 
void scalePreconditioner (nonlinearSolverProblem &problem)
 Scale preconditioner.
 
void computeHx (std::vector< double > &Hx)
 Compute Hessian inverse times vector.
 
void computeStep ()
 Compute LBFGS step.
 
void computeUpdateStep ()
 Compute Update Vector.
 
void updateHistory ()
 Update the stored history, damped LBFGS.
 
void checkWolfe ()
 Test if the step satisfies strong Wolfe conditions.
 
void computeStepScale (nonlinearSolverProblem &problem)
 Compute scaling factor for the step.
 
bool updateSolution (const std::vector< double > &step, nonlinearSolverProblem &problem)
 Update solution x -> x + step.
 
void load (const std::string &checkpointFileName)
 Load LBFGS solver state from checkpoint file.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::vector< doubled_gradient
 
std::vector< doubled_value
 
std::vector< doubled_gradientNew
 
std::vector< doubled_valueNew
 
std::vector< doubled_deltaX
 
std::vector< doubled_deltaXNew
 
std::vector< doubled_updateVector
 
std::vector< doubled_preconditioner
 storage for the preconditioner.
 
unsigned int d_numberUnknowns
 
unsigned int d_iter
 storage for current bfgs iteration count.
 
std::deque< std::vector< double > > d_deltaGq
 storage for history.
 
std::deque< std::vector< double > > d_deltaXq
 
std::deque< doubled_rhoq
 
const int d_maxNumPastSteps
 storage for the maximum number of past steps to be stored.
 
int d_numPastSteps
 storage for the number of past steps currently stored.
 
double d_normDeltaXnew
 storage for inf norm of the update step.
 
double d_maxStepLength
 storage for the maximum allowed step length.
 
double d_alpha
 storage for backtracking line search parameter.
 
bool d_stepAccepted
 boolean parameter for step accepteance and Wolfe conditions.
 
bool d_wolfeCurvature
 
bool d_wolfeSufficientDec
 
bool d_wolfeSatisfied
 
const bool d_usePreconditioner
 flag for using the preconditioner
 
bool d_useSingleAtomSolutionsInitialGuess
 
bool d_noHistory
 
bool d_isCurvatureOnlyLineSearchStoppingCondition
 
MPI_Comm mpi_communicator
 
dealii::ConditionalOStream pcout
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from dftfe::nonLinearSolver
enum  ReturnValueType {
+  SUCCESS = 0 +, FAILURE +, LINESEARCH_FAILED +, MAX_ITER_REACHED +,
+  RESTART +
+ }
 
- Protected Member Functions inherited from dftfe::nonLinearSolver
 nonLinearSolver (const unsigned int debugLevel, const unsigned int maxNumberIterations, const double tolerance=0)
 Constructor.
 
double getTolerance () const
 Get tolerance.
 
unsigned int getMaximumNumberIterations () const
 Get maximum number of iterations.
 
unsigned int getDebugLevel () const
 Get debug level.
 
- Protected Attributes inherited from dftfe::nonLinearSolver
const unsigned int d_debugLevel
 controls the verbosity of the printing
 
const unsigned int d_maxNumberIterations
 maximum number of nonlinear solve iterations
 
const double d_tolerance
 nonlinear solve stopping tolerance
 
+

Detailed Description

+

Class implementing LBFGS optimzation method.

+
Author
Nikhil Kodali
+

Constructor & Destructor Documentation

+ +

◆ LBFGSNonLinearSolver()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::LBFGSNonLinearSolver::LBFGSNonLinearSolver (const bool usePreconditioner,
const double maxUpdate,
const unsigned int maxNumberIterations,
const int maxNumPastSteps,
const unsigned int debugLevel,
const MPI_Comm & mpi_comm_parent,
const bool isCurvatureOnlyLineSearchStoppingCondition = false )
+
+ +

Constructor.

+
Parameters
+ + + + + + + +
usePreconditionerBoolean parameter specifying whether or not to use the preconditioner.
maxUpdateMaximum allowed step length in any direction.
maxNumberIterationsMaximum number of iterations.
maxNumPastStepsNumber of previous steps stored by the LBFGS solver.
debugLevelDebug output level: 0 - no debug output 1 - limited debug output 2 - all debug output.
mpi_comm_parentThe mpi communicator used.
+
+
+ +
+
+ +

◆ ~LBFGSNonLinearSolver()

+ +
+
+ + + + + + + +
dftfe::LBFGSNonLinearSolver::~LBFGSNonLinearSolver ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ checkWolfe()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::LBFGSNonLinearSolver::checkWolfe ()
+
+private
+
+ +

Test if the step satisfies strong Wolfe conditions.

+ +
+
+ +

◆ computeHx()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::LBFGSNonLinearSolver::computeHx (std::vector< double > & Hx)
+
+private
+
+ +

Compute Hessian inverse times vector.

+ +
+
+ +

◆ computeStep()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::LBFGSNonLinearSolver::computeStep ()
+
+private
+
+ +

Compute LBFGS step.

+ +
+
+ +

◆ computeStepScale()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::LBFGSNonLinearSolver::computeStepScale (nonlinearSolverProblem & problem)
+
+private
+
+ +

Compute scaling factor for the step.

+ +
+
+ +

◆ computeUpdateStep()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::LBFGSNonLinearSolver::computeUpdateStep ()
+
+private
+
+ +

Compute Update Vector.

+ +
+
+ +

◆ initializePreconditioner()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::LBFGSNonLinearSolver::initializePreconditioner (nonlinearSolverProblem & problem)
+
+private
+
+ +

Initialize preconditioner.

+ +
+
+ +

◆ load()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::LBFGSNonLinearSolver::load (const std::string & checkpointFileName)
+
+private
+
+ +

Load LBFGS solver state from checkpoint file.

+ +
+
+ +

◆ save()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::LBFGSNonLinearSolver::save (const std::string & checkpointFileName)
+
+virtual
+
+ +

Create checkpoint file for current state of the LBFGS solver.

+ +

Implements dftfe::nonLinearSolver.

+ +
+
+ +

◆ scalePreconditioner()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::LBFGSNonLinearSolver::scalePreconditioner (nonlinearSolverProblem & problem)
+
+private
+
+ +

Scale preconditioner.

+ +
+
+ +

◆ solve()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
nonLinearSolver::ReturnValueType dftfe::LBFGSNonLinearSolver::solve (nonlinearSolverProblem & problem,
const std::string checkpointFileName = "",
const bool restart = false )
+
+virtual
+
+ +

Solve non-linear problem using LBFGS method.

+
Parameters
+ + + + +
problem[in]nonlinearSolverProblem object.
checkpointFileName[in]if string is non-empty, creates checkpoint file named checkpointFileName for every nonlinear iteration. If restart is set to true, checkpointFileName must match the name of the checkpoint file. Empty string will throw an error.
restart[in]boolean specifying whether this is a restart solve using the checkpoint file specified by checkpointFileName.
+
+
+
Returns
Return value indicating success or failure.
+ +

Implements dftfe::nonLinearSolver.

+ +
+
+ +

◆ updateHistory()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::LBFGSNonLinearSolver::updateHistory ()
+
+private
+
+ +

Update the stored history, damped LBFGS.

+ +
+
+ +

◆ updateSolution()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
bool dftfe::LBFGSNonLinearSolver::updateSolution (const std::vector< double > & step,
nonlinearSolverProblem & problem )
+
+private
+
+ +

Update solution x -> x + step.

+
Parameters
+ + + +
stepupdate step vector.
problemnonlinearSolverProblem object.
+
+
+
Returns
bool true if valid update and false if increment bound exceeded
+ +
+
+

Member Data Documentation

+ +

◆ d_alpha

+ +
+
+ + + + + +
+ + + + +
double dftfe::LBFGSNonLinearSolver::d_alpha
+
+private
+
+ +

storage for backtracking line search parameter.

+ +
+
+ +

◆ d_deltaGq

+ +
+
+ + + + + +
+ + + + +
std::deque<std::vector<double> > dftfe::LBFGSNonLinearSolver::d_deltaGq
+
+private
+
+ +

storage for history.

+ +
+
+ +

◆ d_deltaX

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::LBFGSNonLinearSolver::d_deltaX
+
+private
+
+

storage for the step taken in last BFGS step, step computed in the corrent BFGS step and the update vector computed in the current bfgs step.

+ +
+
+ +

◆ d_deltaXNew

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::LBFGSNonLinearSolver::d_deltaXNew
+
+private
+
+ +
+
+ +

◆ d_deltaXq

+ +
+
+ + + + + +
+ + + + +
std::deque<std::vector<double> > dftfe::LBFGSNonLinearSolver::d_deltaXq
+
+private
+
+ +
+
+ +

◆ d_gradient

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::LBFGSNonLinearSolver::d_gradient
+
+private
+
+

storage for the value and gradient of the nonlinear problem in the current bfgs step

+ +
+
+ +

◆ d_gradientNew

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::LBFGSNonLinearSolver::d_gradientNew
+
+private
+
+

storage for the value and gradient of the nonlinear problem evaluated at the end of the current bfgs step

+ +
+
+ +

◆ d_isCurvatureOnlyLineSearchStoppingCondition

+ +
+
+ + + + + +
+ + + + +
bool dftfe::LBFGSNonLinearSolver::d_isCurvatureOnlyLineSearchStoppingCondition
+
+private
+
+ +
+
+ +

◆ d_iter

+ +
+
+ + + + + +
+ + + + +
unsigned int dftfe::LBFGSNonLinearSolver::d_iter
+
+private
+
+ +

storage for current bfgs iteration count.

+ +
+
+ +

◆ d_maxNumPastSteps

+ +
+
+ + + + + +
+ + + + +
const int dftfe::LBFGSNonLinearSolver::d_maxNumPastSteps
+
+private
+
+ +

storage for the maximum number of past steps to be stored.

+ +
+
+ +

◆ d_maxStepLength

+ +
+
+ + + + + +
+ + + + +
double dftfe::LBFGSNonLinearSolver::d_maxStepLength
+
+private
+
+ +

storage for the maximum allowed step length.

+ +
+
+ +

◆ d_noHistory

+ +
+
+ + + + + +
+ + + + +
bool dftfe::LBFGSNonLinearSolver::d_noHistory
+
+private
+
+ +
+
+ +

◆ d_normDeltaXnew

+ +
+
+ + + + + +
+ + + + +
double dftfe::LBFGSNonLinearSolver::d_normDeltaXnew
+
+private
+
+ +

storage for inf norm of the update step.

+ +
+
+ +

◆ d_numberUnknowns

+ +
+
+ + + + + +
+ + + + +
unsigned int dftfe::LBFGSNonLinearSolver::d_numberUnknowns
+
+private
+
+

storage for number of unknowns to be solved for in the nonlinear problem.

+ +
+
+ +

◆ d_numPastSteps

+ +
+
+ + + + + +
+ + + + +
int dftfe::LBFGSNonLinearSolver::d_numPastSteps
+
+private
+
+ +

storage for the number of past steps currently stored.

+ +
+
+ +

◆ d_preconditioner

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::LBFGSNonLinearSolver::d_preconditioner
+
+private
+
+ +

storage for the preconditioner.

+ +
+
+ +

◆ d_rhoq

+ +
+
+ + + + + +
+ + + + +
std::deque<double> dftfe::LBFGSNonLinearSolver::d_rhoq
+
+private
+
+ +
+
+ +

◆ d_stepAccepted

+ +
+
+ + + + + +
+ + + + +
bool dftfe::LBFGSNonLinearSolver::d_stepAccepted
+
+private
+
+ +

boolean parameter for step accepteance and Wolfe conditions.

+ +
+
+ +

◆ d_updateVector

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::LBFGSNonLinearSolver::d_updateVector
+
+private
+
+ +
+
+ +

◆ d_usePreconditioner

+ +
+
+ + + + + +
+ + + + +
const bool dftfe::LBFGSNonLinearSolver::d_usePreconditioner
+
+private
+
+ +

flag for using the preconditioner

+ +
+
+ +

◆ d_useSingleAtomSolutionsInitialGuess

+ +
+
+ + + + + +
+ + + + +
bool dftfe::LBFGSNonLinearSolver::d_useSingleAtomSolutionsInitialGuess
+
+private
+
+ +
+
+ +

◆ d_value

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::LBFGSNonLinearSolver::d_value
+
+private
+
+ +
+
+ +

◆ d_valueNew

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::LBFGSNonLinearSolver::d_valueNew
+
+private
+
+ +
+
+ +

◆ d_wolfeCurvature

+ +
+
+ + + + + +
+ + + + +
bool dftfe::LBFGSNonLinearSolver::d_wolfeCurvature
+
+private
+
+ +
+
+ +

◆ d_wolfeSatisfied

+ +
+
+ + + + + +
+ + + + +
bool dftfe::LBFGSNonLinearSolver::d_wolfeSatisfied
+
+private
+
+ +
+
+ +

◆ d_wolfeSufficientDec

+ +
+
+ + + + + +
+ + + + +
bool dftfe::LBFGSNonLinearSolver::d_wolfeSufficientDec
+
+private
+
+ +
+
+ +

◆ mpi_communicator

+ +
+
+ + + + + +
+ + + + +
MPI_Comm dftfe::LBFGSNonLinearSolver::mpi_communicator
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::LBFGSNonLinearSolver::pcout
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1_l_b_f_g_s_non_linear_solver.png b/classdftfe_1_1_l_b_f_g_s_non_linear_solver.png new file mode 100644 index 0000000000000000000000000000000000000000..f655d63a0aef78e1d10f1a0a693571c1b5882c6c GIT binary patch literal 715 zcmeAS@N?(olHy`uVBq!ia0vp^n}IlhgBeJsN^N-yq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SR%c<=xyZhAIs2~du+B*-tA0mugfbEer>7#NtsJY5_^Dj46+P0V|vz|+$1 zxT@yA@P1#hCf^9B->RWmp7ldvuRa*vhd2~|6`vWKkhu=bD3ZAv#G&957+#2%(F4r-v9s0PLZ_GMQ1&? zx8GfMXo1+4lk0x1F~E4}_#=9T;lcU@ zHimk1C2zenm!54=QQ9=MDbnRg{6QV1NBW0rYJ69kDP3AuR4sS=*1X!--*V-j7q)eG z)P&4^m6>xs=Gt7nRr6=}EnXY%;u5Pp`=;wUgZXUo`BjxG;(s%5PPM=Ns_bj*&HsIS zzPXyKZuphUbETQ5_~Q!swd*vCeV29bG^^e5${?hQYj1}Aiex$7*-tl@J~S%XGVj|> zorLR|#pe>z&iwN6sSPVvm7h2B>gn=(Gfv!Fz&ii>r^xvSL(^V=+9!NAkCKoQT();pzem p4J9RD_y`Kt@0}6sm8t)iIfietclgqa(}Bs3!PC{xWt~$(69E2!UF84( literal 0 HcmV?d00001 diff --git a/classdftfe_1_1_mixing_scheme-members.html b/classdftfe_1_1_mixing_scheme-members.html new file mode 100644 index 000000000..b10afbf72 --- /dev/null +++ b/classdftfe_1_1_mixing_scheme-members.html @@ -0,0 +1,121 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::MixingScheme Member List
+
+
+ +

This is the complete list of members for dftfe::MixingScheme, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addMixingVariable(const mixingVariable mixingVariableList, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &weightDotProducts, const bool performMPIReduce, const double mixingValue, const bool adaptMixingValue)dftfe::MixingScheme
addVariableToInHist(const mixingVariable mixingVariableName, const double *inputVariableToInHist, const unsigned int length)dftfe::MixingScheme
addVariableToResidualHist(const mixingVariable mixingVariableName, const double *inputVariableToResidualHist, const unsigned int length)dftfe::MixingScheme
clearHistory()dftfe::MixingScheme
computeAdaptiveAndersonMixingParameter()dftfe::MixingScheme
computeAndersonMixingCoeff(const std::vector< mixingVariable > mixingVariablesList)dftfe::MixingScheme
computeMixingMatrices(const std::deque< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &inHist, const std::deque< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &outHist, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &weightDotProducts, const bool isPerformMixing, const bool isMPIAllReduce, std::vector< double > &A, std::vector< double > &c)dftfe::MixingSchemeprivate
d_Adftfe::MixingSchemeprivate
d_adaptiveMixingParameterDecAllIterationsdftfe::MixingSchemeprivate
d_adaptiveMixingParameterDecLastIterationdftfe::MixingSchemeprivate
d_adaptiveMixingParameterIncAllIterationsdftfe::MixingSchemeprivate
d_adaptMixingParameterdftfe::MixingSchemeprivate
d_anyMixingParameterAdaptivedftfe::MixingSchemeprivate
d_cdftfe::MixingSchemeprivate
d_cFinaldftfe::MixingSchemeprivate
d_mixingHistorydftfe::MixingSchemeprivate
d_mixingParameterdftfe::MixingSchemeprivate
d_mpi_comm_domaindftfe::MixingSchemeprivate
d_mpi_comm_parentdftfe::MixingSchemeprivate
d_performMixingdftfe::MixingSchemeprivate
d_performMPIReducedftfe::MixingSchemeprivate
d_variableHistoryIndftfe::MixingSchemeprivate
d_variableHistoryResidualdftfe::MixingSchemeprivate
d_vectorDotProductWeightsdftfe::MixingSchemeprivate
d_verbositydftfe::MixingSchemeprivate
lengthOfHistory()dftfe::MixingScheme
MixingScheme(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const unsigned int verbosity)dftfe::MixingScheme
mixVariable(const mixingVariable mixingVariableName, double *outputVariable, const unsigned int lenVar)dftfe::MixingScheme
pcoutdftfe::MixingSchemeprivate
popOldHistory(unsigned int mixingHistory)dftfe::MixingScheme
+ + + + diff --git a/classdftfe_1_1_mixing_scheme.html b/classdftfe_1_1_mixing_scheme.html new file mode 100644 index 000000000..9fc841f4a --- /dev/null +++ b/classdftfe_1_1_mixing_scheme.html @@ -0,0 +1,904 @@ + + + + + + + +DFT-FE: dftfe::MixingScheme Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::MixingScheme Class Reference
+
+
+ +

This class performs the anderson mixing in a variable agnostic way This class takes can take different input variables as input in a std::vector format and computes the mixing coefficients These coefficients can then be used to compute the new variable at the start of the SCF. + More...

+ +

#include <mixingClass.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 MixingScheme (const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const unsigned int verbosity)
 
unsigned int lengthOfHistory ()
 
void computeAndersonMixingCoeff (const std::vector< mixingVariable > mixingVariablesList)
 Computes the mixing coefficients.
 
void computeAdaptiveAndersonMixingParameter ()
 Computes the adaptive mixing parameter.
 
void popOldHistory (unsigned int mixingHistory)
 Deletes the old history if the length exceeds max length of history.
 
void clearHistory ()
 Clears all the the history.
 
void addMixingVariable (const mixingVariable mixingVariableList, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &weightDotProducts, const bool performMPIReduce, const double mixingValue, const bool adaptMixingValue)
 This function is used to add the mixing variables and its corresponding JxW values For dependent variables which are not used in mixing, the weightDotProducts is set to a vector of size zero. Later the dependent variables can be mixed with the same mixing coefficients.
 
void addVariableToInHist (const mixingVariable mixingVariableName, const double *inputVariableToInHist, const unsigned int length)
 Adds to the input history.
 
void addVariableToResidualHist (const mixingVariable mixingVariableName, const double *inputVariableToResidualHist, const unsigned int length)
 Adds to the residual history.
 
void mixVariable (const mixingVariable mixingVariableName, double *outputVariable, const unsigned int lenVar)
 Computes the input for the next iteration based on the anderson coefficients.
 
+ + + + +

+Private Member Functions

void computeMixingMatrices (const std::deque< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &inHist, const std::deque< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &outHist, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &weightDotProducts, const bool isPerformMixing, const bool isMPIAllReduce, std::vector< double > &A, std::vector< double > &c)
 Computes the matrix A and c vector that will be needed for anderson mixing. This function computes the A and c values for each variable which will be then added up in computeAndersonMixingCoeff()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::vector< doubled_A
 
std::vector< doubled_c
 
double d_cFinal
 
std::map< mixingVariable, std::deque< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > > d_variableHistoryIn
 
std::map< mixingVariable, std::deque< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > > d_variableHistoryResidual
 
std::map< mixingVariable, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_vectorDotProductWeights
 
std::map< mixingVariable, boold_performMPIReduce
 
const MPI_Comm d_mpi_comm_domain
 
const MPI_Comm d_mpi_comm_parent
 
std::map< mixingVariable, doubled_mixingParameter
 
std::map< mixingVariable, boold_adaptMixingParameter
 
bool d_anyMixingParameterAdaptive
 
bool d_adaptiveMixingParameterDecLastIteration
 
bool d_adaptiveMixingParameterDecAllIterations
 
bool d_adaptiveMixingParameterIncAllIterations
 
unsigned int d_mixingHistory
 
std::map< mixingVariable, boold_performMixing
 
const int d_verbosity
 
dealii::ConditionalOStream pcout
 conditional stream object
 
+

Detailed Description

+

This class performs the anderson mixing in a variable agnostic way This class takes can take different input variables as input in a std::vector format and computes the mixing coefficients These coefficients can then be used to compute the new variable at the start of the SCF.

+
Author
Vishal Subramanian
+

Constructor & Destructor Documentation

+ +

◆ MixingScheme()

+ +
+
+ + + + + + + + + + + + + + + + +
dftfe::MixingScheme::MixingScheme (const MPI_Comm & mpi_comm_parent,
const MPI_Comm & mpi_comm_domain,
const unsigned int verbosity )
+
+ +
+
+

Member Function Documentation

+ +

◆ addMixingVariable()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::MixingScheme::addMixingVariable (const mixingVariable mixingVariableList,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & weightDotProducts,
const bool performMPIReduce,
const double mixingValue,
const bool adaptMixingValue )
+
+ +

This function is used to add the mixing variables and its corresponding JxW values For dependent variables which are not used in mixing, the weightDotProducts is set to a vector of size zero. Later the dependent variables can be mixed with the same mixing coefficients.

+ +
+
+ +

◆ addVariableToInHist()

+ +
+
+ + + + + + + + + + + + + + + + +
void dftfe::MixingScheme::addVariableToInHist (const mixingVariable mixingVariableName,
const double * inputVariableToInHist,
const unsigned int length )
+
+ +

Adds to the input history.

+ +
+
+ +

◆ addVariableToResidualHist()

+ +
+
+ + + + + + + + + + + + + + + + +
void dftfe::MixingScheme::addVariableToResidualHist (const mixingVariable mixingVariableName,
const double * inputVariableToResidualHist,
const unsigned int length )
+
+ +

Adds to the residual history.

+ +
+
+ +

◆ clearHistory()

+ +
+
+ + + + + + + +
void dftfe::MixingScheme::clearHistory ()
+
+ +

Clears all the the history.

+ +
+
+ +

◆ computeAdaptiveAndersonMixingParameter()

+ +
+
+ + + + + + + +
void dftfe::MixingScheme::computeAdaptiveAndersonMixingParameter ()
+
+ +

Computes the adaptive mixing parameter.

+ +
+
+ +

◆ computeAndersonMixingCoeff()

+ +
+
+ + + + + + + +
void dftfe::MixingScheme::computeAndersonMixingCoeff (const std::vector< mixingVariable > mixingVariablesList)
+
+ +

Computes the mixing coefficients.

+ +
+
+ +

◆ computeMixingMatrices()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::MixingScheme::computeMixingMatrices (const std::deque< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & inHist,
const std::deque< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & outHist,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & weightDotProducts,
const bool isPerformMixing,
const bool isMPIAllReduce,
std::vector< double > & A,
std::vector< double > & c )
+
+private
+
+ +

Computes the matrix A and c vector that will be needed for anderson mixing. This function computes the A and c values for each variable which will be then added up in computeAndersonMixingCoeff()

+ +
+
+ +

◆ lengthOfHistory()

+ +
+
+ + + + + + + +
unsigned int dftfe::MixingScheme::lengthOfHistory ()
+
+ +
+
+ +

◆ mixVariable()

+ +
+
+ + + + + + + + + + + + + + + + +
void dftfe::MixingScheme::mixVariable (const mixingVariable mixingVariableName,
double * outputVariable,
const unsigned int lenVar )
+
+ +

Computes the input for the next iteration based on the anderson coefficients.

+ +
+
+ +

◆ popOldHistory()

+ +
+
+ + + + + + + +
void dftfe::MixingScheme::popOldHistory (unsigned int mixingHistory)
+
+ +

Deletes the old history if the length exceeds max length of history.

+ +
+
+

Member Data Documentation

+ +

◆ d_A

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::MixingScheme::d_A
+
+private
+
+ +
+
+ +

◆ d_adaptiveMixingParameterDecAllIterations

+ +
+
+ + + + + +
+ + + + +
bool dftfe::MixingScheme::d_adaptiveMixingParameterDecAllIterations
+
+private
+
+ +
+
+ +

◆ d_adaptiveMixingParameterDecLastIteration

+ +
+
+ + + + + +
+ + + + +
bool dftfe::MixingScheme::d_adaptiveMixingParameterDecLastIteration
+
+private
+
+ +
+
+ +

◆ d_adaptiveMixingParameterIncAllIterations

+ +
+
+ + + + + +
+ + + + +
bool dftfe::MixingScheme::d_adaptiveMixingParameterIncAllIterations
+
+private
+
+ +
+
+ +

◆ d_adaptMixingParameter

+ +
+
+ + + + + +
+ + + + +
std::map<mixingVariable, bool> dftfe::MixingScheme::d_adaptMixingParameter
+
+private
+
+ +
+
+ +

◆ d_anyMixingParameterAdaptive

+ +
+
+ + + + + +
+ + + + +
bool dftfe::MixingScheme::d_anyMixingParameterAdaptive
+
+private
+
+ +
+
+ +

◆ d_c

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::MixingScheme::d_c
+
+private
+
+ +
+
+ +

◆ d_cFinal

+ +
+
+ + + + + +
+ + + + +
double dftfe::MixingScheme::d_cFinal
+
+private
+
+ +
+
+ +

◆ d_mixingHistory

+ +
+
+ + + + + +
+ + + + +
unsigned int dftfe::MixingScheme::d_mixingHistory
+
+private
+
+ +
+
+ +

◆ d_mixingParameter

+ +
+
+ + + + + +
+ + + + +
std::map<mixingVariable, double> dftfe::MixingScheme::d_mixingParameter
+
+private
+
+ +
+
+ +

◆ d_mpi_comm_domain

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm dftfe::MixingScheme::d_mpi_comm_domain
+
+private
+
+ +
+
+ +

◆ d_mpi_comm_parent

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm dftfe::MixingScheme::d_mpi_comm_parent
+
+private
+
+ +
+
+ +

◆ d_performMixing

+ +
+
+ + + + + +
+ + + + +
std::map<mixingVariable, bool> dftfe::MixingScheme::d_performMixing
+
+private
+
+ +
+
+ +

◆ d_performMPIReduce

+ +
+
+ + + + + +
+ + + + +
std::map<mixingVariable, bool> dftfe::MixingScheme::d_performMPIReduce
+
+private
+
+ +
+
+ +

◆ d_variableHistoryIn

+ +
+
+ + + + + +
+ + + + +
std::map< mixingVariable, std::deque< dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> > > dftfe::MixingScheme::d_variableHistoryIn
+
+private
+
+ +
+
+ +

◆ d_variableHistoryResidual

+ +
+
+ + + + + +
+ + + + +
std::map< mixingVariable, std::deque< dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> > > dftfe::MixingScheme::d_variableHistoryResidual
+
+private
+
+ +
+
+ +

◆ d_vectorDotProductWeights

+ +
+
+ + + + + +
+ + + + +
std::map< mixingVariable, dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> > dftfe::MixingScheme::d_vectorDotProductWeights
+
+private
+
+ +
+
+ +

◆ d_verbosity

+ +
+
+ + + + + +
+ + + + +
const int dftfe::MixingScheme::d_verbosity
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::MixingScheme::pcout
+
+private
+
+ +

conditional stream object

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1_process_grid-members.html b/classdftfe_1_1_process_grid-members.html new file mode 100644 index 000000000..031e93146 --- /dev/null +++ b/classdftfe_1_1_process_grid-members.html @@ -0,0 +1,112 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::ProcessGrid Member List
+
+
+ +

This is the complete list of members for dftfe::ProcessGrid, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
blacs_contextdftfe::ProcessGridprivate
dftfe::ScaLAPACKMatrixdftfe::ProcessGridfriend
get_process_grid_columns() constdftfe::ProcessGridinline
get_process_grid_rows() constdftfe::ProcessGridinline
get_this_process_column() constdftfe::ProcessGridinline
get_this_process_row() constdftfe::ProcessGridinline
is_process_active() constdftfe::ProcessGridinline
mpi_communicatordftfe::ProcessGridprivate
mpi_communicator_inactive_with_rootdftfe::ProcessGridprivate
mpi_process_is_activedftfe::ProcessGridprivate
n_mpi_processesdftfe::ProcessGridprivate
n_process_columnsdftfe::ProcessGridprivate
n_process_rowsdftfe::ProcessGridprivate
ProcessGrid(const MPI_Comm &mpi_communicator, const unsigned int n_rows, const unsigned int n_columns)dftfe::ProcessGrid
ProcessGrid(const MPI_Comm &mpi_communicator, const unsigned int n_rows_matrix, const unsigned int n_columns_matrix, const unsigned int row_block_size, const unsigned int column_block_size)dftfe::ProcessGrid
ProcessGrid(const MPI_Comm &mpi_communicator, const std::pair< unsigned int, unsigned int > &grid_dimensions)dftfe::ProcessGridprivate
send_to_inactive(NumberType *value, const int count=1) constdftfe::ProcessGrid
this_mpi_processdftfe::ProcessGridprivate
this_process_columndftfe::ProcessGridprivate
this_process_rowdftfe::ProcessGridprivate
~ProcessGrid()dftfe::ProcessGrid
+ + + + diff --git a/classdftfe_1_1_process_grid.html b/classdftfe_1_1_process_grid.html new file mode 100644 index 000000000..d2f4eb55e --- /dev/null +++ b/classdftfe_1_1_process_grid.html @@ -0,0 +1,696 @@ + + + + + + + +DFT-FE: dftfe::ProcessGrid Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +
+ +

#include <process_grid.h>

+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ProcessGrid (const MPI_Comm &mpi_communicator, const unsigned int n_rows, const unsigned int n_columns)
 
 ProcessGrid (const MPI_Comm &mpi_communicator, const unsigned int n_rows_matrix, const unsigned int n_columns_matrix, const unsigned int row_block_size, const unsigned int column_block_size)
 
 ~ProcessGrid ()
 
unsigned int get_process_grid_rows () const
 
unsigned int get_process_grid_columns () const
 
int get_this_process_row () const
 
int get_this_process_column () const
 
template<typename NumberType >
void send_to_inactive (NumberType *value, const int count=1) const
 
bool is_process_active () const
 
+ + + +

+Private Member Functions

 ProcessGrid (const MPI_Comm &mpi_communicator, const std::pair< unsigned int, unsigned int > &grid_dimensions)
 
+ + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

MPI_Comm mpi_communicator
 
MPI_Comm mpi_communicator_inactive_with_root
 
int blacs_context
 
const unsigned int this_mpi_process
 
const unsigned int n_mpi_processes
 
int n_process_rows
 
int n_process_columns
 
int this_process_row
 
int this_process_column
 
bool mpi_process_is_active
 
+ + + + +

+Friends

template<typename NumberType >
class dftfe::ScaLAPACKMatrix
 
+

Detailed Description

+

A class taking care of setting up a two-dimensional processor grid. For example an MPI communicator with 5 processes can be arranged into a 2x2 grid with the 5-th processor being inactive:

| 0 | 1
+
-----| ------- |-----
+
0 | P0 | P1
+
| |
+
-----| ------- |-----
+
1 | P2 | P3
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+

A shared pointer to this class is provided to ScaLAPACKMatrix matrices to perform block-cyclic distribution.

+

Note that this class allows to setup a process grid which has fewer MPI cores than the total number of cores in the communicator.

+

Currently the only place where one would use a ProcessGrid object is in connection with a ScaLAPACKMatrix object.

+

Constructor & Destructor Documentation

+ +

◆ ProcessGrid() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + +
dftfe::ProcessGrid::ProcessGrid (const MPI_Comm & mpi_communicator,
const unsigned int n_rows,
const unsigned int n_columns )
+
+

Constructor for a process grid with n_rows and n_columns for a given mpi_communicator. The product of rows and columns should be less or equal to the total number of cores in the mpi_communicator.

+ +
+
+ +

◆ ProcessGrid() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::ProcessGrid::ProcessGrid (const MPI_Comm & mpi_communicator,
const unsigned int n_rows_matrix,
const unsigned int n_columns_matrix,
const unsigned int row_block_size,
const unsigned int column_block_size )
+
+

$, where $M,N$ are the matrix dimension and $MB,NB$ are the block sizes and $Np$ is the number of processes in the mpi_communicator. This function then creates a 2D processor grid assuming the ratio between number of process row $p$ and columns $q$ to be equal the ratio between matrix dimensions $M$ and $N$.

+

For example, a square matrix $640x640$ with the block size $32$ and the mpi_communicator with 11 cores will result in the $3x3$ process grid.

+ +
+
+ +

◆ ~ProcessGrid()

+ +
+
+ + + + + + + +
dftfe::ProcessGrid::~ProcessGrid ()
+
+

Destructor.

+ +
+
+ +

◆ ProcessGrid() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + +
dftfe::ProcessGrid::ProcessGrid (const MPI_Comm & mpi_communicator,
const std::pair< unsigned int, unsigned int > & grid_dimensions )
+
+private
+
+

A private constructor which takes grid dimensions as an std::pair.

+ +
+
+

Member Function Documentation

+ +

◆ get_process_grid_columns()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int dftfe::ProcessGrid::get_process_grid_columns () const
+
+inline
+
+

Return the number of columns in the processes grid.

+ +
+
+ +

◆ get_process_grid_rows()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int dftfe::ProcessGrid::get_process_grid_rows () const
+
+inline
+
+

Return the number of rows in the processes grid.

+ +
+
+ +

◆ get_this_process_column()

+ +
+
+ + + + + +
+ + + + + + + +
int dftfe::ProcessGrid::get_this_process_column () const
+
+inline
+
+

Return column of this process in the process grid.

+

It's negative for inactive processes.

+ +
+
+ +

◆ get_this_process_row()

+ +
+
+ + + + + +
+ + + + + + + +
int dftfe::ProcessGrid::get_this_process_row () const
+
+inline
+
+

Return row of this process in the process grid.

+

It's negative for inactive processes.

+ +
+
+ +

◆ is_process_active()

+ +
+
+ + + + + +
+ + + + + + + +
bool dftfe::ProcessGrid::is_process_active () const
+
+inline
+
+

Return true if the process is active within the grid.

+ +
+
+ +

◆ send_to_inactive()

+ +
+
+
+template<typename NumberType >
+ + + + + + + + + + + +
void dftfe::ProcessGrid::send_to_inactive (NumberType * value,
const int count = 1 ) const
+
+

Send count values stored consequently starting at value from the process with rank zero to processes which are not in the process grid.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ dftfe::ScaLAPACKMatrix

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + +
friend class dftfe::ScaLAPACKMatrix
+
+friend
+
+ +
+
+

Member Data Documentation

+ +

◆ blacs_context

+ +
+
+ + + + + +
+ + + + +
int dftfe::ProcessGrid::blacs_context
+
+private
+
+

BLACS context. This is equivalent to MPI communicators and is used by ScaLAPACK.

+ +
+
+ +

◆ mpi_communicator

+ +
+
+ + + + + +
+ + + + +
MPI_Comm dftfe::ProcessGrid::mpi_communicator
+
+private
+
+

An MPI communicator with all processes (active and inactive).

+ +
+
+ +

◆ mpi_communicator_inactive_with_root

+ +
+
+ + + + + +
+ + + + +
MPI_Comm dftfe::ProcessGrid::mpi_communicator_inactive_with_root
+
+private
+
+

An MPI communicator with inactive processes and the process with rank zero.

+ +
+
+ +

◆ mpi_process_is_active

+ +
+
+ + + + + +
+ + + + +
bool dftfe::ProcessGrid::mpi_process_is_active
+
+private
+
+

A flag which is true for processes within the 2D process grid.

+ +
+
+ +

◆ n_mpi_processes

+ +
+
+ + + + + +
+ + + + +
const unsigned int dftfe::ProcessGrid::n_mpi_processes
+
+private
+
+

Total number of MPI processes.

+ +
+
+ +

◆ n_process_columns

+ +
+
+ + + + + +
+ + + + +
int dftfe::ProcessGrid::n_process_columns
+
+private
+
+

Number of columns in the processes grid.

+ +
+
+ +

◆ n_process_rows

+ +
+
+ + + + + +
+ + + + +
int dftfe::ProcessGrid::n_process_rows
+
+private
+
+

Number of rows in the processes grid.

+ +
+
+ +

◆ this_mpi_process

+ +
+
+ + + + + +
+ + + + +
const unsigned int dftfe::ProcessGrid::this_mpi_process
+
+private
+
+

Rank of this MPI process.

+ +
+
+ +

◆ this_process_column

+ +
+
+ + + + + +
+ + + + +
int dftfe::ProcessGrid::this_process_column
+
+private
+
+

Column of this process in the grid.

+

It's negative for in-active processes.

+ +
+
+ +

◆ this_process_row

+ +
+
+ + + + + +
+ + + + +
int dftfe::ProcessGrid::this_process_row
+
+private
+
+

Row of this process in the grid.

+

It's negative for in-active processes.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1_sca_l_a_p_a_c_k_matrix-members.html b/classdftfe_1_1_sca_l_a_p_a_c_k_matrix-members.html new file mode 100644 index 000000000..b437d0de9 --- /dev/null +++ b/classdftfe_1_1_sca_l_a_p_a_c_k_matrix-members.html @@ -0,0 +1,154 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::ScaLAPACKMatrix< NumberType > Member List
+
+
+ +

This is the complete list of members for dftfe::ScaLAPACKMatrix< NumberType >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
add(const ScaLAPACKMatrix< NumberType > &B, const NumberType a=0., const NumberType b=1., const bool transpose_B=false)dftfe::ScaLAPACKMatrix< NumberType >
column_block_sizedftfe::ScaLAPACKMatrix< NumberType >private
compute_cholesky_factorization()dftfe::ScaLAPACKMatrix< NumberType >
compute_lu_factorization()dftfe::ScaLAPACKMatrix< NumberType >
conjugate()dftfe::ScaLAPACKMatrix< NumberType >
copy_conjugate_transposed(const ScaLAPACKMatrix< NumberType > &B)dftfe::ScaLAPACKMatrix< NumberType >
copy_to(ScaLAPACKMatrix< NumberType > &dest) constdftfe::ScaLAPACKMatrix< NumberType >
copy_transposed(const ScaLAPACKMatrix< NumberType > &B)dftfe::ScaLAPACKMatrix< NumberType >
descriptordftfe::ScaLAPACKMatrix< NumberType >private
eigenpairs_hermitian(const bool compute_eigenvectors, const std::pair< unsigned int, unsigned int > &index_limits=std::make_pair(dealii::numbers::invalid_unsigned_int, dealii::numbers::invalid_unsigned_int), const std::pair< double, double > &value_limits=std::make_pair(std::numeric_limits< double >::quiet_NaN(), std::numeric_limits< double >::quiet_NaN()))dftfe::ScaLAPACKMatrix< NumberType >private
eigenpairs_hermitian_by_index(const std::pair< unsigned int, unsigned int > &index_limits, const bool compute_eigenvectors)dftfe::ScaLAPACKMatrix< NumberType >
eigenpairs_hermitian_by_index_MRRR(const std::pair< unsigned int, unsigned int > &index_limits, const bool compute_eigenvectors)dftfe::ScaLAPACKMatrix< NumberType >
eigenpairs_hermitian_MRRR(const bool compute_eigenvectors, const std::pair< unsigned int, unsigned int > &index_limits=std::make_pair(dealii::numbers::invalid_unsigned_int, dealii::numbers::invalid_unsigned_int), const std::pair< double, double > &value_limits=std::make_pair(std::numeric_limits< double >::quiet_NaN(), std::numeric_limits< double >::quiet_NaN()))dftfe::ScaLAPACKMatrix< NumberType >private
first_process_columndftfe::ScaLAPACKMatrix< NumberType >private
first_process_rowdftfe::ScaLAPACKMatrix< NumberType >private
get_property() constdftfe::ScaLAPACKMatrix< NumberType >
get_state() constdftfe::ScaLAPACKMatrix< NumberType >
global_column(const unsigned int loc_column) constdftfe::ScaLAPACKMatrix< NumberType >
global_row(const unsigned int loc_row) constdftfe::ScaLAPACKMatrix< NumberType >
griddftfe::ScaLAPACKMatrix< NumberType >private
invert()dftfe::ScaLAPACKMatrix< NumberType >
ipivdftfe::ScaLAPACKMatrix< NumberType >private
iworkdftfe::ScaLAPACKMatrix< NumberType >mutableprivate
local_el(const unsigned int loc_row, const unsigned int loc_column) constdftfe::ScaLAPACKMatrix< NumberType >inline
local_el(const unsigned int loc_row, const unsigned int loc_column)dftfe::ScaLAPACKMatrix< NumberType >inline
local_m() constdftfe::ScaLAPACKMatrix< NumberType >
local_n() constdftfe::ScaLAPACKMatrix< NumberType >
m() constdftfe::ScaLAPACKMatrix< NumberType >inline
mmult(ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) constdftfe::ScaLAPACKMatrix< NumberType >
mTmult(ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) constdftfe::ScaLAPACKMatrix< NumberType >
mult(const NumberType b, const ScaLAPACKMatrix< NumberType > &B, const NumberType c, ScaLAPACKMatrix< NumberType > &C, const bool transpose_A=false, const bool transpose_B=false) constdftfe::ScaLAPACKMatrix< NumberType >
mutexdftfe::ScaLAPACKMatrix< NumberType >mutableprivate
n() constdftfe::ScaLAPACKMatrix< NumberType >inline
n_columnsdftfe::ScaLAPACKMatrix< NumberType >private
n_local_columnsdftfe::ScaLAPACKMatrix< NumberType >private
n_local_rowsdftfe::ScaLAPACKMatrix< NumberType >private
n_rowsdftfe::ScaLAPACKMatrix< NumberType >private
propertydftfe::ScaLAPACKMatrix< NumberType >private
reinit(const size_type n_rows, const size_type n_columns, const std::shared_ptr< const dftfe::ProcessGrid > &process_grid, const size_type row_block_size=32, const size_type column_block_size=32, const dftfe::LAPACKSupport::Property property=dftfe::LAPACKSupport::Property::general)dftfe::ScaLAPACKMatrix< NumberType >
reinit(const size_type size, const std::shared_ptr< const dftfe::ProcessGrid > &process_grid, const size_type block_size=32, const dftfe::LAPACKSupport::Property property=dftfe::LAPACKSupport::Property::hermitian)dftfe::ScaLAPACKMatrix< NumberType >
row_block_sizedftfe::ScaLAPACKMatrix< NumberType >private
ScaLAPACKMatrix(const size_type n_rows, const size_type n_columns, const std::shared_ptr< const dftfe::ProcessGrid > &process_grid, const size_type row_block_size=32, const size_type column_block_size=32, const dftfe::LAPACKSupport::Property property=dftfe::LAPACKSupport::Property::general)dftfe::ScaLAPACKMatrix< NumberType >
ScaLAPACKMatrix(const size_type size, const std::shared_ptr< const dftfe::ProcessGrid > &process_grid, const size_type block_size=32, const dftfe::LAPACKSupport::Property property=dftfe::LAPACKSupport::Property::hermitian)dftfe::ScaLAPACKMatrix< NumberType >
scale_columns(const std::vector< NumberType > &factors)dftfe::ScaLAPACKMatrix< NumberType >
scale_columns_realfactors(const std::vector< double > &factors)dftfe::ScaLAPACKMatrix< NumberType >
scale_rows(const std::vector< NumberType > &factors)dftfe::ScaLAPACKMatrix< NumberType >
scale_rows_realfactors(const std::vector< double > &factors)dftfe::ScaLAPACKMatrix< NumberType >
set_property(const dftfe::LAPACKSupport::Property property)dftfe::ScaLAPACKMatrix< NumberType >
size_type typedefdftfe::ScaLAPACKMatrix< NumberType >
statedftfe::ScaLAPACKMatrix< NumberType >private
submatrix_columndftfe::ScaLAPACKMatrix< NumberType >private
submatrix_rowdftfe::ScaLAPACKMatrix< NumberType >private
Tmmult(ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) constdftfe::ScaLAPACKMatrix< NumberType >
TmTmult(ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) constdftfe::ScaLAPACKMatrix< NumberType >
uplodftfe::ScaLAPACKMatrix< NumberType >private
valuesdftfe::ScaLAPACKMatrix< NumberType >private
workdftfe::ScaLAPACKMatrix< NumberType >mutableprivate
zadd(const ScaLAPACKMatrix< NumberType > &B, const NumberType a=0., const NumberType b=1., const bool conjugate_transpose_B=false)dftfe::ScaLAPACKMatrix< NumberType >
zCmCmult(ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) constdftfe::ScaLAPACKMatrix< NumberType >
zCmmult(ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) constdftfe::ScaLAPACKMatrix< NumberType >
zmCmult(ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) constdftfe::ScaLAPACKMatrix< NumberType >
zmmult(ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) constdftfe::ScaLAPACKMatrix< NumberType >
zmult(const NumberType b, const ScaLAPACKMatrix< NumberType > &B, const NumberType c, ScaLAPACKMatrix< NumberType > &C, const bool conjugate_transpose_A=false, const bool conjugate_transpose_B=false) constdftfe::ScaLAPACKMatrix< NumberType >
+ + + + diff --git a/classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html b/classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html new file mode 100644 index 000000000..841e125f5 --- /dev/null +++ b/classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html @@ -0,0 +1,2050 @@ + + + + + + + +DFT-FE: dftfe::ScaLAPACKMatrix< NumberType > Class Template Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::ScaLAPACKMatrix< NumberType > Class Template Reference
+
+
+ +

Scalapack wrapper adapted from dealii library and extended implementation to complex datatype. + More...

+ +

#include <scalapackWrapper.h>

+ + + + +

+Public Types

using size_type = unsigned int
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ScaLAPACKMatrix (const size_type n_rows, const size_type n_columns, const std::shared_ptr< const dftfe::ProcessGrid > &process_grid, const size_type row_block_size=32, const size_type column_block_size=32, const dftfe::LAPACKSupport::Property property=dftfe::LAPACKSupport::Property::general)
 
 ScaLAPACKMatrix (const size_type size, const std::shared_ptr< const dftfe::ProcessGrid > &process_grid, const size_type block_size=32, const dftfe::LAPACKSupport::Property property=dftfe::LAPACKSupport::Property::hermitian)
 
void reinit (const size_type n_rows, const size_type n_columns, const std::shared_ptr< const dftfe::ProcessGrid > &process_grid, const size_type row_block_size=32, const size_type column_block_size=32, const dftfe::LAPACKSupport::Property property=dftfe::LAPACKSupport::Property::general)
 
void reinit (const size_type size, const std::shared_ptr< const dftfe::ProcessGrid > &process_grid, const size_type block_size=32, const dftfe::LAPACKSupport::Property property=dftfe::LAPACKSupport::Property::hermitian)
 
void set_property (const dftfe::LAPACKSupport::Property property)
 
dftfe::LAPACKSupport::Property get_property () const
 
dftfe::LAPACKSupport::State get_state () const
 
void copy_to (ScaLAPACKMatrix< NumberType > &dest) const
 
void conjugate ()
 
void add (const ScaLAPACKMatrix< NumberType > &B, const NumberType a=0., const NumberType b=1., const bool transpose_B=false)
 
void zadd (const ScaLAPACKMatrix< NumberType > &B, const NumberType a=0., const NumberType b=1., const bool conjugate_transpose_B=false)
 
void copy_transposed (const ScaLAPACKMatrix< NumberType > &B)
 
void copy_conjugate_transposed (const ScaLAPACKMatrix< NumberType > &B)
 
void mult (const NumberType b, const ScaLAPACKMatrix< NumberType > &B, const NumberType c, ScaLAPACKMatrix< NumberType > &C, const bool transpose_A=false, const bool transpose_B=false) const
 
void zmult (const NumberType b, const ScaLAPACKMatrix< NumberType > &B, const NumberType c, ScaLAPACKMatrix< NumberType > &C, const bool conjugate_transpose_A=false, const bool conjugate_transpose_B=false) const
 
void mmult (ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) const
 
void Tmmult (ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) const
 
void mTmult (ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) const
 
void TmTmult (ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) const
 
void zmmult (ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) const
 
void zCmmult (ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) const
 
void zmCmult (ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) const
 
void zCmCmult (ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) const
 
size_type m () const
 
size_type n () const
 
unsigned int local_m () const
 
unsigned int local_n () const
 
unsigned int global_row (const unsigned int loc_row) const
 
unsigned int global_column (const unsigned int loc_column) const
 
NumberType local_el (const unsigned int loc_row, const unsigned int loc_column) const
 
NumberTypelocal_el (const unsigned int loc_row, const unsigned int loc_column)
 
void compute_cholesky_factorization ()
 
void compute_lu_factorization ()
 
void invert ()
 
void scale_columns (const std::vector< NumberType > &factors)
 
void scale_rows (const std::vector< NumberType > &factors)
 
void scale_columns_realfactors (const std::vector< double > &factors)
 
void scale_rows_realfactors (const std::vector< double > &factors)
 
std::vector< doubleeigenpairs_hermitian_by_index (const std::pair< unsigned int, unsigned int > &index_limits, const bool compute_eigenvectors)
 
std::vector< doubleeigenpairs_hermitian_by_index_MRRR (const std::pair< unsigned int, unsigned int > &index_limits, const bool compute_eigenvectors)
 
+ + + + + +

+Private Member Functions

std::vector< doubleeigenpairs_hermitian (const bool compute_eigenvectors, const std::pair< unsigned int, unsigned int > &index_limits=std::make_pair(dealii::numbers::invalid_unsigned_int, dealii::numbers::invalid_unsigned_int), const std::pair< double, double > &value_limits=std::make_pair(std::numeric_limits< double >::quiet_NaN(), std::numeric_limits< double >::quiet_NaN()))
 
std::vector< doubleeigenpairs_hermitian_MRRR (const bool compute_eigenvectors, const std::pair< unsigned int, unsigned int > &index_limits=std::make_pair(dealii::numbers::invalid_unsigned_int, dealii::numbers::invalid_unsigned_int), const std::pair< double, double > &value_limits=std::make_pair(std::numeric_limits< double >::quiet_NaN(), std::numeric_limits< double >::quiet_NaN()))
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::vector< NumberTypevalues
 
dftfe::LAPACKSupport::State state
 
dftfe::LAPACKSupport::Property property
 
std::shared_ptr< const dftfe::ProcessGridgrid
 
int n_rows
 
int n_columns
 
int row_block_size
 
int column_block_size
 
int n_local_rows
 
int n_local_columns
 
int descriptor [9]
 
std::vector< NumberTypework
 
std::vector< intiwork
 
std::vector< intipiv
 
const char uplo
 
const int first_process_row
 
const int first_process_column
 
const int submatrix_row
 
const int submatrix_column
 
dealii::Threads::Mutex mutex
 
+

Detailed Description

+
template<typename NumberType>
+class dftfe::ScaLAPACKMatrix< NumberType >

Scalapack wrapper adapted from dealii library and extended implementation to complex datatype.

+
Author
Sambit Das
+

Member Typedef Documentation

+ +

◆ size_type

+ +
+
+
+template<typename NumberType >
+ + + + +
using dftfe::ScaLAPACKMatrix< NumberType >::size_type = unsigned int
+
+

Declare the type for container size.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ScaLAPACKMatrix() [1/2]

+ +
+
+
+template<typename NumberType >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::ScaLAPACKMatrix< NumberType >::ScaLAPACKMatrix (const size_type n_rows,
const size_type n_columns,
const std::shared_ptr< const dftfe::ProcessGrid > & process_grid,
const size_type row_block_size = 32,
const size_type column_block_size = 32,
const dftfe::LAPACKSupport::Property property = dftfe::LAPACKSupport::Property::general )
+
+

Constructor for a rectangular matrix with n_rows and n_cols and distributed using the grid process_grid.

+

The parameters row_block_size and column_block_size are the block sizes used for the block-cyclic distribution of the matrix. In general, it is recommended to use powers of $2$, e.g. $16,32,64, \dots$.

+ +
+
+ +

◆ ScaLAPACKMatrix() [2/2]

+ +
+
+
+template<typename NumberType >
+ + + + + + + + + + + + + + + + + + + + + +
dftfe::ScaLAPACKMatrix< NumberType >::ScaLAPACKMatrix (const size_type size,
const std::shared_ptr< const dftfe::ProcessGrid > & process_grid,
const size_type block_size = 32,
const dftfe::LAPACKSupport::Property property = dftfe::LAPACKSupport::Property::hermitian )
+
+

Constructor for a square matrix of size size, and distributed using the process grid in process_grid.

+

The parameter block_size is used for the block-cyclic distribution of the matrix. An identical block size is used for the rows and columns of the matrix. In general, it is recommended to use powers of $2$, e.g. $16,32,64, \dots$.

+ +
+
+

Member Function Documentation

+ +

◆ add()

+ +
+
+
+template<typename NumberType >
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::add (const ScaLAPACKMatrix< NumberType > & B,
const NumberType a = 0.,
const NumberType b = 1.,
const bool transpose_B = false )
+
+

The operations based on the input parameter transpose_B and the alignment conditions are summarized in the following table:

+ + + + + + + +
transpose_B Block Sizes Operation
false $MB_A=MB_B$
+ $NB_A=NB_B$
$\mathbf{A} = a \mathbf{A} + b \mathbf{B}$
true $MB_A=NB_B$
+ $NB_A=MB_B$
$\mathbf{A} = a \mathbf{A} + b \mathbf{B}^T$
+

The matrices $\mathbf{A}$ and $\mathbf{B}$ must have the same process grid.

+ +
+
+ +

◆ compute_cholesky_factorization()

+ +
+
+
+template<typename NumberType >
+ + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::compute_cholesky_factorization ()
+
+

Compute the Cholesky factorization of the matrix using ScaLAPACK function pXpotrf. The result of the factorization is stored in this object.

+ +
+
+ +

◆ compute_lu_factorization()

+ +
+
+
+template<typename NumberType >
+ + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::compute_lu_factorization ()
+
+

Compute the LU factorization of the matrix using ScaLAPACK function pXgetrf and partial pivoting with row interchanges. The result of the factorization is stored in this object.

+ +
+
+ +

◆ conjugate()

+ +
+
+
+template<typename NumberType >
+ + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::conjugate ()
+
+

Complex conjugate.

+ +
+
+ +

◆ copy_conjugate_transposed()

+ +
+
+
+template<typename NumberType >
+ + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::copy_conjugate_transposed (const ScaLAPACKMatrix< NumberType > & B)
+
+

Transposing assignment: $\mathbf{A} = \mathbf{B}^C$

+

The matrices $\mathbf{A}$ and $\mathbf{B}$ must have the same process grid.

+

The following alignment conditions have to be fulfilled: $MB_A=NB_B$ and $NB_A=MB_B$.

+ +
+
+ +

◆ copy_to()

+ +
+
+
+template<typename NumberType >
+ + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::copy_to (ScaLAPACKMatrix< NumberType > & dest) const
+
+

Copy the contents of the distributed matrix into a differently distributed matrix dest. The function also works for matrices with different process grids or block-cyclic distributions.

+ +
+
+ +

◆ copy_transposed()

+ +
+
+
+template<typename NumberType >
+ + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::copy_transposed (const ScaLAPACKMatrix< NumberType > & B)
+
+

Transposing assignment: $\mathbf{A} = \mathbf{B}^T$

+

The matrices $\mathbf{A}$ and $\mathbf{B}$ must have the same process grid.

+

The following alignment conditions have to be fulfilled: $MB_A=NB_B$ and $NB_A=MB_B$.

+ +
+
+ +

◆ eigenpairs_hermitian()

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + + + + + + + + + + + + + +
std::vector< double > dftfe::ScaLAPACKMatrix< NumberType >::eigenpairs_hermitian (const bool compute_eigenvectors,
const std::pair< unsigned int, unsigned int > & index_limits = std::make_pair(dealii::numbers::invalid_unsigned_int, dealii::numbers::invalid_unsigned_int),
const std::pair< double, double > & value_limits = std::make_pair(std::numeric_limits< double >::quiet_NaN(), std::numeric_limits< double >::quiet_NaN()) )
+
+private
+
+

Computing selected eigenvalues and, optionally, the eigenvectors. The eigenvalues/eigenvectors are selected by either prescribing a range of indices index_limits or a range of values value_limits for the eigenvalues. The function will throw an exception if both ranges are prescribed (meaning that both ranges differ from the default value) as this ambiguity is prohibited. If successful, the computed eigenvalues are arranged in ascending order. The eigenvectors are stored in the columns of the matrix, thereby overwriting the original content of the matrix.

+ +
+
+ +

◆ eigenpairs_hermitian_by_index()

+ +
+
+
+template<typename NumberType >
+ + + + + + + + + + + +
std::vector< double > dftfe::ScaLAPACKMatrix< NumberType >::eigenpairs_hermitian_by_index (const std::pair< unsigned int, unsigned int > & index_limits,
const bool compute_eigenvectors )
+
+

Computing selected eigenvalues and, optionally, the eigenvectors of the real hermitian matrix $\mathbf{A} \in \mathbb{R}^{M \times M}$.

+

The eigenvalues/eigenvectors are selected by prescribing a range of indices index_limits.

+

If successful, the computed eigenvalues are arranged in ascending order. The eigenvectors are stored in the columns of the matrix, thereby overwriting the original content of the matrix.

+

If all eigenvalues/eigenvectors have to be computed, pass the closed interval $ \left[ 0, M-1 \right] $ in index_limits.

+

Pass the closed interval $ \left[ M-r, M-1 \right] $ if the $r$ largest eigenvalues/eigenvectors are desired.

+ +
+
+ +

◆ eigenpairs_hermitian_by_index_MRRR()

+ +
+
+
+template<typename NumberType >
+ + + + + + + + + + + +
std::vector< double > dftfe::ScaLAPACKMatrix< NumberType >::eigenpairs_hermitian_by_index_MRRR (const std::pair< unsigned int, unsigned int > & index_limits,
const bool compute_eigenvectors )
+
+

Computing selected eigenvalues and, optionally, the eigenvectors of the real hermitian matrix $\mathbf{A} \in \mathbb{R}^{M \times M}$ using the MRRR algorithm.

+

The eigenvalues/eigenvectors are selected by prescribing a range of indices index_limits.

+

If successful, the computed eigenvalues are arranged in ascending order. The eigenvectors are stored in the columns of the matrix, thereby overwriting the original content of the matrix.

+

If all eigenvalues/eigenvectors have to be computed, pass the closed interval $ \left[ 0, M-1 \right] $ in index_limits.

+

Pass the closed interval $ \left[ M-r, M-1 \right] $ if the $r$ largest eigenvalues/eigenvectors are desired.

+ +
+
+ +

◆ eigenpairs_hermitian_MRRR()

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + + + + + + + + + + + + + +
std::vector< double > dftfe::ScaLAPACKMatrix< NumberType >::eigenpairs_hermitian_MRRR (const bool compute_eigenvectors,
const std::pair< unsigned int, unsigned int > & index_limits = std::make_pair(dealii::numbers::invalid_unsigned_int, dealii::numbers::invalid_unsigned_int),
const std::pair< double, double > & value_limits = std::make_pair(std::numeric_limits< double >::quiet_NaN(), std::numeric_limits< double >::quiet_NaN()) )
+
+private
+
+

Computing selected eigenvalues and, optionally, the eigenvectors of the real hermitian matrix $\mathbf{A} \in \mathbb{R}^{M \times M}$ using the MRRR algorithm. The eigenvalues/eigenvectors are selected by either prescribing a range of indices index_limits or a range of values value_limits for the eigenvalues. The function will throw an exception if both ranges are prescribed (meaning that both ranges differ from the default value) as this ambiguity is prohibited.

+

By calling this function the original content of the matrix will be overwritten. If requested, the eigenvectors are stored in the columns of the matrix. Also in the case that just the eigenvalues are required, the content of the matrix will be overwritten.

+

If successful, the computed eigenvalues are arranged in ascending order.

+
Note
Due to a bug in Netlib-ScaLAPACK, either all or no eigenvectors can be computed. Therefore, the input index_limits has to be set accordingly. Using Intel-MKL this restriction is not required.
+ +
+
+ +

◆ get_property()

+ +
+
+
+template<typename NumberType >
+ + + + + + + +
dftfe::LAPACKSupport::Property dftfe::ScaLAPACKMatrix< NumberType >::get_property () const
+
+

Return current property of this matrix

+ +
+
+ +

◆ get_state()

+ +
+
+
+template<typename NumberType >
+ + + + + + + +
dftfe::LAPACKSupport::State dftfe::ScaLAPACKMatrix< NumberType >::get_state () const
+
+

Return current state of this matrix

+ +
+
+ +

◆ global_column()

+ +
+
+
+template<typename NumberType >
+ + + + + + + +
unsigned int dftfe::ScaLAPACKMatrix< NumberType >::global_column (const unsigned int loc_column) const
+
+

Return the global column number for the given local column loc_column.

+ +
+
+ +

◆ global_row()

+ +
+
+
+template<typename NumberType >
+ + + + + + + +
unsigned int dftfe::ScaLAPACKMatrix< NumberType >::global_row (const unsigned int loc_row) const
+
+

Return the global row number for the given local row loc_row .

+ +
+
+ +

◆ invert()

+ +
+
+
+template<typename NumberType >
+ + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::invert ()
+
+

Invert the matrix by first computing a Cholesky for hermitian matrices or a LU factorization for general matrices and then building the actual inverse using pXpotri or pXgetri. If the matrix is triangular, the LU factorization step is skipped, and pXtrtri is used directly.

+

If a Cholesky or LU factorization has been applied previously, pXpotri or pXgetri are called directly.

+

The inverse is stored in this object.

+ +
+
+ +

◆ local_el() [1/2]

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + + + + + + + + +
NumberType & dftfe::ScaLAPACKMatrix< NumberType >::local_el (const unsigned int loc_row,
const unsigned int loc_column )
+
+inline
+
+

Write access to local element.

+ +
+
+ +

◆ local_el() [2/2]

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + + + + + + + + +
NumberType dftfe::ScaLAPACKMatrix< NumberType >::local_el (const unsigned int loc_row,
const unsigned int loc_column ) const
+
+inline
+
+

Read access to local element.

+ +
+
+ +

◆ local_m()

+ +
+
+
+template<typename NumberType >
+ + + + + + + +
unsigned int dftfe::ScaLAPACKMatrix< NumberType >::local_m () const
+
+

Number of local rows on this MPI processes.

+ +
+
+ +

◆ local_n()

+ +
+
+
+template<typename NumberType >
+ + + + + + + +
unsigned int dftfe::ScaLAPACKMatrix< NumberType >::local_n () const
+
+

Number of local columns on this MPI process.

+ +
+
+ +

◆ m()

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + + + + +
unsigned int dftfe::ScaLAPACKMatrix< NumberType >::m () const
+
+inline
+
+

Number of rows of the $M \times N$ matrix.

+ +
+
+ +

◆ mmult()

+ +
+
+
+template<typename NumberType >
+ + + + + + + + + + + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::mmult (ScaLAPACKMatrix< NumberType > & C,
const ScaLAPACKMatrix< NumberType > & B,
const bool adding = false ) const
+
+

Matrix-matrix-multiplication.

+

The optional parameter adding determines whether the result is stored in $\mathbf{C}$ or added to $\mathbf{C}$.

+

if (adding) $\mathbf{C} = \mathbf{C} + \mathbf{A} \cdot \mathbf{B}$

+

else $\mathbf{C} = \mathbf{A} \cdot \mathbf{B}$

+

It is assumed that $\mathbf{A}$ and $\mathbf{B}$ have compatible sizes and that $\mathbf{C}$ already has the right size.

+

The following alignment conditions have to be fulfilled: $MB_A=MB_C$, $NB_A=MB_B$ and $NB_B=NB_C$.

+ +
+
+ +

◆ mTmult()

+ +
+
+
+template<typename NumberType >
+ + + + + + + + + + + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::mTmult (ScaLAPACKMatrix< NumberType > & C,
const ScaLAPACKMatrix< NumberType > & B,
const bool adding = false ) const
+
+

Matrix-matrix-multiplication using the transpose of $\mathbf{B}$.

+

The optional parameter adding determines whether the result is stored in $\mathbf{C}$ or added to $\mathbf{C}$.

+

if (adding) $\mathbf{C} = \mathbf{C} + \mathbf{A} \cdot \mathbf{B}^T$

+

else $\mathbf{C} = \mathbf{A} \cdot \mathbf{B}^T$

+

It is assumed that $\mathbf{A}$ and $\mathbf{B}$ have compatible sizes and that $\mathbf{C}$ already has the right size.

+

The following alignment conditions have to be fulfilled: $MB_A=MB_C$, $NB_A=NB_B$ and $MB_B=NB_C$.

+ +
+
+ +

◆ mult()

+ +
+
+
+template<typename NumberType >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::mult (const NumberType b,
const ScaLAPACKMatrix< NumberType > & B,
const NumberType c,
ScaLAPACKMatrix< NumberType > & C,
const bool transpose_A = false,
const bool transpose_B = false ) const
+
+

Matrix-matrix-multiplication:

+

The operations based on the input parameters and the alignment conditions are summarized in the following table:

+ + + + + + + + + + + +
transpose_A transpose_B Block Sizes Operation
false false $MB_A=MB_C$
+ $NB_A=MB_B$
+ $NB_B=NB_C$
$\mathbf{C} = b \mathbf{A} \cdot \mathbf{B} + c \mathbf{C}$
false true $MB_A=MB_C$
+ $NB_A=NB_B$
+ $MB_B=NB_C$
$\mathbf{C} = b \mathbf{A} \cdot \mathbf{B}^T + c \mathbf{C}$
true false $MB_A=MB_B$
+ $NB_A=MB_C$
+ $NB_B=NB_C$
$\mathbf{C} = b \mathbf{A}^T \cdot \mathbf{B} + c \mathbf{C}$
true true $MB_A=NB_B$
+ $NB_A=MB_C$
+ $MB_B=NB_C$
$\mathbf{C} = b \mathbf{A}^T \cdot \mathbf{B}^T + c \mathbf{C}$
+

It is assumed that $\mathbf{A}$ and $\mathbf{B}$ have compatible sizes and that $\mathbf{C}$ already has the right size.

+

The matrices $\mathbf{A}$, $\mathbf{B}$ and $\mathbf{C}$ must have the same process grid.

+ +
+
+ +

◆ n()

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + + + + +
unsigned int dftfe::ScaLAPACKMatrix< NumberType >::n () const
+
+inline
+
+

Number of columns of the $M \times N$ matrix.

+ +
+
+ +

◆ reinit() [1/2]

+ +
+
+
+template<typename NumberType >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::reinit (const size_type n_rows,
const size_type n_columns,
const std::shared_ptr< const dftfe::ProcessGrid > & process_grid,
const size_type row_block_size = 32,
const size_type column_block_size = 32,
const dftfe::LAPACKSupport::Property property = dftfe::LAPACKSupport::Property::general )
+
+

Initialize the rectangular matrix with n_rows and n_cols and distributed using the grid process_grid.

+

The parameters row_block_size and column_block_size are the block sizes used for the block-cyclic distribution of the matrix. In general, it is recommended to use powers of $2$, e.g. $16,32,64, \dots$.

+ +
+
+ +

◆ reinit() [2/2]

+ +
+
+
+template<typename NumberType >
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::reinit (const size_type size,
const std::shared_ptr< const dftfe::ProcessGrid > & process_grid,
const size_type block_size = 32,
const dftfe::LAPACKSupport::Property property = dftfe::LAPACKSupport::Property::hermitian )
+
+

Initialize the square matrix of size size and distributed using the grid process_grid.

+

The parameter block_size is used for the block-cyclic distribution of the matrix. An identical block size is used for the rows and columns of the matrix. In general, it is recommended to use powers of $2$, e.g. $16,32,64, \dots$.

+ +
+
+ +

◆ scale_columns()

+ +
+
+
+template<typename NumberType >
+ + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::scale_columns (const std::vector< NumberType > & factors)
+
+

Scale the columns of the distributed matrix by the scalars provided in the array factors.

+

The array factors must have as many entries as the matrix columns.

+

Copies of factors have to be available on all processes of the underlying MPI communicator.

+ +
+
+ +

◆ scale_columns_realfactors()

+ +
+
+
+template<typename NumberType >
+ + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::scale_columns_realfactors (const std::vector< double > & factors)
+
+

Scale the columns of the distributed matrix by the scalars provided in the array factors.

+

The array factors must have as many entries as the matrix columns.

+

Copies of factors have to be available on all processes of the underlying MPI communicator.

+ +
+
+ +

◆ scale_rows()

+ +
+
+
+template<typename NumberType >
+ + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::scale_rows (const std::vector< NumberType > & factors)
+
+

Scale the rows of the distributed matrix by the scalars provided in the array factors.

+

The array factors must have as many entries as the matrix rows.

+

Copies of factors have to be available on all processes of the underlying MPI communicator.

+ +
+
+ +

◆ scale_rows_realfactors()

+ +
+
+
+template<typename NumberType >
+ + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::scale_rows_realfactors (const std::vector< double > & factors)
+
+

Scale the rows of the distributed matrix by the scalars provided in the array factors.

+

The array factors must have as many entries as the matrix rows.

+

Copies of factors have to be available on all processes of the underlying MPI communicator.

+ +
+
+ +

◆ set_property()

+ +
+
+
+template<typename NumberType >
+ + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::set_property (const dftfe::LAPACKSupport::Property property)
+
+

Assign property to this matrix.

+ +
+
+ +

◆ Tmmult()

+ +
+
+
+template<typename NumberType >
+ + + + + + + + + + + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::Tmmult (ScaLAPACKMatrix< NumberType > & C,
const ScaLAPACKMatrix< NumberType > & B,
const bool adding = false ) const
+
+

Matrix-matrix-multiplication using transpose of $\mathbf{A}$.

+

The optional parameter adding determines whether the result is stored in $\mathbf{C}$ or added to $\mathbf{C}$.

+

if (adding) $\mathbf{C} = \mathbf{C} + \mathbf{A}^T \cdot \mathbf{B}$

+

else $\mathbf{C} = \mathbf{A}^T \cdot \mathbf{B}$

+

It is assumed that $\mathbf{A}$ and $\mathbf{B}$ have compatible sizes and that $\mathbf{C}$ already has the right size.

+

The following alignment conditions have to be fulfilled: $MB_A=MB_B$, $NB_A=MB_C$ and $NB_B=NB_C$.

+ +
+
+ +

◆ TmTmult()

+ +
+
+
+template<typename NumberType >
+ + + + + + + + + + + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::TmTmult (ScaLAPACKMatrix< NumberType > & C,
const ScaLAPACKMatrix< NumberType > & B,
const bool adding = false ) const
+
+

Matrix-matrix-multiplication using transpose of $\mathbf{A}$ and $\mathbf{B}$.

+

The optional parameter adding determines whether the result is stored in $\mathbf{C}$ or added to $\mathbf{C}$.

+

if (adding) $\mathbf{C} = \mathbf{C} + \mathbf{A}^T \cdot \mathbf{B}^T$

+

else $\mathbf{C} = \mathbf{A}^T \cdot \mathbf{B}^T$

+

It is assumed that $\mathbf{A}$ and $\mathbf{B}$ have compatible sizes and that $\mathbf{C}$ already has the right size.

+

The following alignment conditions have to be fulfilled: $MB_A=NB_B$, $NB_A=MB_C$ and $MB_B=NB_C$.

+ +
+
+ +

◆ zadd()

+ +
+
+
+template<typename NumberType >
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::zadd (const ScaLAPACKMatrix< NumberType > & B,
const NumberType a = 0.,
const NumberType b = 1.,
const bool conjugate_transpose_B = false )
+
+

The operations based on the input parameter conjugate_transpose_B and the alignment conditions are summarized in the following table:

+ + + + + + + +
transpose_B Block Sizes Operation
false $MB_A=MB_B$
+ $NB_A=NB_B$
$\mathbf{A} = a \mathbf{A} + b \mathbf{B}$
true $MB_A=NB_B$
+ $NB_A=MB_B$
$\mathbf{A} = a \mathbf{A} + b \mathbf{B}^C$
+

The matrices $\mathbf{A}$ and $\mathbf{B}$ must have the same process grid.

+ +
+
+ +

◆ zCmCmult()

+ +
+
+
+template<typename NumberType >
+ + + + + + + + + + + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::zCmCmult (ScaLAPACKMatrix< NumberType > & C,
const ScaLAPACKMatrix< NumberType > & B,
const bool adding = false ) const
+
+

Matrix-matrix-multiplication using conjugate transpose of $\mathbf{A}$ and $\mathbf{B}$.

+

The optional parameter adding determines whether the result is stored in $\mathbf{C}$ or added to $\mathbf{C}$.

+

if (adding) $\mathbf{C} = \mathbf{C} + \mathbf{A}^C \cdot \mathbf{B}^T$

+

else $\mathbf{C} = \mathbf{A}^C \cdot \mathbf{B}^C$

+

It is assumed that $\mathbf{A}$ and $\mathbf{B}$ have compatible sizes and that $\mathbf{C}$ already has the right size.

+

The following alignment conditions have to be fulfilled: $MB_A=NB_B$, $NB_A=MB_C$ and $MB_B=NB_C$.

+ +
+
+ +

◆ zCmmult()

+ +
+
+
+template<typename NumberType >
+ + + + + + + + + + + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::zCmmult (ScaLAPACKMatrix< NumberType > & C,
const ScaLAPACKMatrix< NumberType > & B,
const bool adding = false ) const
+
+

Matrix-matrix-multiplication using conjugate transpose of $\mathbf{A}$.

+

The optional parameter adding determines whether the result is stored in $\mathbf{C}$ or added to $\mathbf{C}$.

+

if (adding) $\mathbf{C} = \mathbf{C} + \mathbf{A}^C \cdot \mathbf{B}$

+

else $\mathbf{C} = \mathbf{A}^C \cdot \mathbf{B}$

+

It is assumed that $\mathbf{A}$ and $\mathbf{B}$ have compatible sizes and that $\mathbf{C}$ already has the right size.

+

The following alignment conditions have to be fulfilled: $MB_A=MB_B$, $NB_A=MB_C$ and $NB_B=NB_C$.

+ +
+
+ +

◆ zmCmult()

+ +
+
+
+template<typename NumberType >
+ + + + + + + + + + + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::zmCmult (ScaLAPACKMatrix< NumberType > & C,
const ScaLAPACKMatrix< NumberType > & B,
const bool adding = false ) const
+
+

Matrix-matrix-multiplication using the conjugate transpose of $\mathbf{B}$.

+

The optional parameter adding determines whether the result is stored in $\mathbf{C}$ or added to $\mathbf{C}$.

+

if (adding) $\mathbf{C} = \mathbf{C} + \mathbf{A} \cdot \mathbf{B}^C$

+

else $\mathbf{C} = \mathbf{A} \cdot \mathbf{B}^C$

+

It is assumed that $\mathbf{A}$ and $\mathbf{B}$ have compatible sizes and that $\mathbf{C}$ already has the right size.

+

The following alignment conditions have to be fulfilled: $MB_A=MB_C$, $NB_A=NB_B$ and $MB_B=NB_C$.

+ +
+
+ +

◆ zmmult()

+ +
+
+
+template<typename NumberType >
+ + + + + + + + + + + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::zmmult (ScaLAPACKMatrix< NumberType > & C,
const ScaLAPACKMatrix< NumberType > & B,
const bool adding = false ) const
+
+

Matrix-matrix-multiplication.

+

The optional parameter adding determines whether the result is stored in $\mathbf{C}$ or added to $\mathbf{C}$.

+

if (adding) $\mathbf{C} = \mathbf{C} + \mathbf{A} \cdot \mathbf{B}$

+

else $\mathbf{C} = \mathbf{A} \cdot \mathbf{B}$

+

It is assumed that $\mathbf{A}$ and $\mathbf{B}$ have compatible sizes and that $\mathbf{C}$ already has the right size.

+

The following alignment conditions have to be fulfilled: $MB_A=MB_C$, $NB_A=MB_B$ and $NB_B=NB_C$.

+ +
+
+ +

◆ zmult()

+ +
+
+
+template<typename NumberType >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::ScaLAPACKMatrix< NumberType >::zmult (const NumberType b,
const ScaLAPACKMatrix< NumberType > & B,
const NumberType c,
ScaLAPACKMatrix< NumberType > & C,
const bool conjugate_transpose_A = false,
const bool conjugate_transpose_B = false ) const
+
+

Matrix-matrix-multiplication:

+

The operations based on the input parameters and the alignment conditions are summarized in the following table:

+ + + + + + + + + + + +
conjugate_transpose_A conjugate_transpose_B Block Sizes Operation
false false $MB_A=MB_C$
+ $NB_A=MB_B$
+ $NB_B=NB_C$
$\mathbf{C} = b \mathbf{A} \cdot \mathbf{B} + c \mathbf{C}$
false true $MB_A=MB_C$
+ $NB_A=NB_B$
+ $MB_B=NB_C$
$\mathbf{C} = b \mathbf{A} \cdot \mathbf{B}^C + c \mathbf{C}$
true false $MB_A=MB_B$
+ $NB_A=MB_C$
+ $NB_B=NB_C$
$\mathbf{C} = b \mathbf{A}^C \cdot \mathbf{B} + c \mathbf{C}$
true true $MB_A=NB_B$
+ $NB_A=MB_C$
+ $MB_B=NB_C$
$\mathbf{C} = b \mathbf{A}^C \cdot \mathbf{B}^C + c \mathbf{C}$
+

It is assumed that $\mathbf{A}$ and $\mathbf{B}$ have compatible sizes and that $\mathbf{C}$ already has the right size.

+

The matrices $\mathbf{A}$, $\mathbf{B}$ and $\mathbf{C}$ must have the same process grid.

+ +
+
+

Member Data Documentation

+ +

◆ column_block_size

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + +
int dftfe::ScaLAPACKMatrix< NumberType >::column_block_size
+
+private
+
+

Column block size.

+ +
+
+ +

◆ descriptor

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + +
int dftfe::ScaLAPACKMatrix< NumberType >::descriptor[9]
+
+private
+
+

ScaLAPACK description vector.

+ +
+
+ +

◆ first_process_column

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + +
const int dftfe::ScaLAPACKMatrix< NumberType >::first_process_column
+
+private
+
+

The process column of the process grid over which the first column of the global matrix is distributed.

+ +
+
+ +

◆ first_process_row

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + +
const int dftfe::ScaLAPACKMatrix< NumberType >::first_process_row
+
+private
+
+

The process row of the process grid over which the first row of the global matrix is distributed.

+ +
+
+ +

◆ grid

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + +
std::shared_ptr<const dftfe::ProcessGrid> dftfe::ScaLAPACKMatrix< NumberType >::grid
+
+private
+
+

A shared pointer to a dealii::Utilities::MPI::ProcessGrid object which contains a BLACS context and a MPI communicator, as well as other necessary data structures.

+ +
+
+ +

◆ ipiv

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + +
std::vector<int> dftfe::ScaLAPACKMatrix< NumberType >::ipiv
+
+private
+
+

Integer array holding pivoting information required by ScaLAPACK's matrix factorization routines.

+ +
+
+ +

◆ iwork

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + +
std::vector<int> dftfe::ScaLAPACKMatrix< NumberType >::iwork
+
+mutableprivate
+
+

Integer workspace array.

+ +
+
+ +

◆ mutex

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + +
dealii::Threads::Mutex dftfe::ScaLAPACKMatrix< NumberType >::mutex
+
+mutableprivate
+
+

Thread mutex.

+ +
+
+ +

◆ n_columns

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + +
int dftfe::ScaLAPACKMatrix< NumberType >::n_columns
+
+private
+
+

Number of columns in the matrix.

+ +
+
+ +

◆ n_local_columns

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + +
int dftfe::ScaLAPACKMatrix< NumberType >::n_local_columns
+
+private
+
+

Number of columns in the matrix owned by the current process.

+ +
+
+ +

◆ n_local_rows

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + +
int dftfe::ScaLAPACKMatrix< NumberType >::n_local_rows
+
+private
+
+

Number of rows in the matrix owned by the current process.

+ +
+
+ +

◆ n_rows

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + +
int dftfe::ScaLAPACKMatrix< NumberType >::n_rows
+
+private
+
+

Number of rows in the matrix.

+ +
+
+ +

◆ property

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + +
dftfe::LAPACKSupport::Property dftfe::ScaLAPACKMatrix< NumberType >::property
+
+private
+
+

Additional property of the matrix which may help to select more efficient ScaLAPACK functions.

+ +
+
+ +

◆ row_block_size

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + +
int dftfe::ScaLAPACKMatrix< NumberType >::row_block_size
+
+private
+
+

Row block size.

+ +
+
+ +

◆ state

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + +
dftfe::LAPACKSupport::State dftfe::ScaLAPACKMatrix< NumberType >::state
+
+private
+
+

Since ScaLAPACK operations notoriously change the meaning of the matrix entries, we record the current state after the last operation here.

+ +
+
+ +

◆ submatrix_column

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + +
const int dftfe::ScaLAPACKMatrix< NumberType >::submatrix_column
+
+private
+
+

Global column index that determines where to start a submatrix. Currently this equals unity, as we don't use submatrices.

+ +
+
+ +

◆ submatrix_row

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + +
const int dftfe::ScaLAPACKMatrix< NumberType >::submatrix_row
+
+private
+
+

Global row index that determines where to start a submatrix. Currently this equals unity, as we don't use submatrices.

+ +
+
+ +

◆ uplo

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + +
const char dftfe::ScaLAPACKMatrix< NumberType >::uplo
+
+private
+
+

A character to define where elements are stored in case ScaLAPACK operations support this.

+ +
+
+ +

◆ values

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + +
std::vector<NumberType> dftfe::ScaLAPACKMatrix< NumberType >::values
+
+private
+
+

local storage

+ +
+
+ +

◆ work

+ +
+
+
+template<typename NumberType >
+ + + + + +
+ + + + +
std::vector<NumberType> dftfe::ScaLAPACKMatrix< NumberType >::work
+
+mutableprivate
+
+

Workspace array.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classdftfe_1_1basis_1_1_f_e_basis_operations-members.html b/classdftfe_1_1basis_1_1_f_e_basis_operations-members.html new file mode 100644 index 000000000..49b6937d4 --- /dev/null +++ b/classdftfe_1_1basis_1_1_f_e_basis_operations-members.html @@ -0,0 +1,232 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace > Member List
+
+
+ +

This is the complete list of members for dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accumulateFromCellNodalData(const ValueTypeBasisCoeff *cellNodalDataPtr, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
accumulateFromCellNodalDataKernel(const ValueTypeBasisCoeff *cellNodalDataPtr, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData, const std::pair< unsigned int, unsigned int > cellRange) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
areAllCellsAffinedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
areAllCellsCartesiandftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
cellID(const unsigned int iElem) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
cellIndex(const dealii::CellId cellid) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
cellInverseMassVector() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >inline
cellInverseMassVectorBasisData() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
cellInverseSqrtMassVector() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >inline
cellInverseSqrtMassVectorBasisData() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
cellMassMatrix() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >inline
cellMassMatrixBasisData() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
cellMassVector() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >inline
cellMassVectorBasisData() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
cellSqrtMassVector() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >inline
cellSqrtMassVectorBasisData() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
cellStiffnessMatrix() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >inline
cellStiffnessMatrixBasisData() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
cellsTypeFlag() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
clear()dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
clearScratchMultiVectors() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
computeCellMassMatrix(const unsigned int quadratureID, const unsigned int cellsBlockSize, const bool basisType=false, const bool ceoffType=true)dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
computeCellStiffnessMatrix(const unsigned int quadratureID, const unsigned int cellsBlockSize, const bool basisType=false, const bool ceoffType=true)dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
computeInverseSqrtMassVector(const bool basisType=true, const bool ceoffType=false)dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
computeWeightedCellMassMatrix(const std::pair< unsigned int, unsigned int > cellRangeTotal, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > &weights, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > &weightedCellMassMatrix) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
computeWeightedCellNjGradNiMatrix(const std::pair< unsigned int, unsigned int > cellRangeTotal, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > &weights, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > &weightedCellNjGradNiMatrix) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
computeWeightedCellNjGradNiPlusNiGradNjMatrix(const std::pair< unsigned int, unsigned int > cellRangeTotal, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > &weights, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > &weightedCellNjGradNiPlusNiGradNjMatrix) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
constraintInfoClass typedefdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
createMultiVector(const unsigned int blocksize, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &multiVector) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
createScratchMultiVectors(const unsigned int vecBlockSize, const unsigned int numMultiVecs=1) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_BLASWrapperPtrdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >protected
d_cellDofIndexToProcessDofIndexMapdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_cellIdToCellIndexMapdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_cellIndexToCellIdMapdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_cellInverseMassVectorBasisTypedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_cellInverseMassVectorCoeffTypedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_cellInverseSqrtMassVectorBasisTypedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_cellInverseSqrtMassVectorCoeffTypedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_cellMassMatrixBasisTypedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_cellMassMatrixCoeffTypedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_cellMassVectorBasisTypedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_cellMassVectorCoeffTypedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_cellsBlockSizedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_cellSqrtMassVectorBasisTypedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_cellSqrtMassVectorCoeffTypedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_cellStiffnessMatrixBasisTypedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_cellStiffnessMatrixCoeffTypedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_constraintInfodftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_constraintsVectordftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_dofHandlerIDdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_flattenedCellDofIndexToProcessDofIndexMapdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_inverseJacobianBasisDatadftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_inverseJacobianDatadftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_inverseMassVectorBasisTypedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_inverseMassVectorCoeffTypedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_inverseSqrtMassVectorBasisTypedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_inverseSqrtMassVectorCoeffTypedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_JxWBasisDatadftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_JxWDatadftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_locallyOwnedSizedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_localSizedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_massVectorBasisTypedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_massVectorCoeffTypedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_matrixFreeDataPtrdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_nCellsdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_nDofsPerCelldftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_nOMPThreadsdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_nQuadsPerCelldftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_nVectorsdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_quadPointsdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_quadratureIDdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_quadratureIDsVectordftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_quadratureIndexdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_shapeFunctionBasisDatadftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_shapeFunctionBasisDataTransposedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_shapeFunctionDatadftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_shapeFunctionDataTransposedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_shapeFunctionGradientBasisDatadftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_shapeFunctionGradientBasisDataTransposedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_shapeFunctionGradientDatadftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_shapeFunctionGradientDataInternalLayoutdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_shapeFunctionGradientDataTransposedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_sqrtMassVectorBasisTypedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_sqrtMassVectorCoeffTypedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
d_updateFlagsdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
distribute(dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &multiVector, unsigned int constraintIndex=std::numeric_limits< unsigned int >::max()) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
extractToCellNodalData(dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData, ValueTypeBasisCoeff *cellNodalDataPtr) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
extractToCellNodalDataKernel(const dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData, ValueTypeBasisCoeff *cellNodalDataPtr, const std::pair< unsigned int, unsigned int > cellRange) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
FEBasisOperations(std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > BLASWrapperPtr)dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
getDofHandler() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
getMultiVector(const unsigned int vecBlockSize, const unsigned int index=0) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
init(dealii::MatrixFree< 3, ValueTypeBasisData > &matrixFreeData, std::vector< const dealii::AffineConstraints< ValueTypeBasisData > * > &constraintsVector, const unsigned int &dofHandlerID, const std::vector< unsigned int > &quadratureID, const std::vector< UpdateFlags > updateFlags)dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
init(const FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpaceSrc > &basisOperationsSrc)dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
initializeConstraints()dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
initializeFlattenedIndexMaps()dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
initializeIndexMaps()dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
initializeMPIPattern()dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
initializeShapeFunctionAndJacobianBasisData()dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
initializeShapeFunctionAndJacobianData()dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
integrateWithBasis(ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
integrateWithBasisKernel(const ValueTypeBasisCoeff *quadratureValues, const ValueTypeBasisCoeff *quadratureGradients, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData, const std::pair< unsigned int, unsigned int > cellRange) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
interpolate(dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData, ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients=NULL) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
interpolateKernel(const dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData, ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients, const std::pair< unsigned int, unsigned int > cellRange) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
interpolateKernel(const ValueTypeBasisCoeff *nodalData, ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients, const std::pair< unsigned int, unsigned int > cellRange) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
inverseJacobians() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
inverseJacobiansBasisData() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >inline
inverseMassVector() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >inline
inverseMassVectorBasisData() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
inverseSqrtMassVector() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >inline
inverseSqrtMassVectorBasisData() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
JxW() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
JxWBasisData() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >inline
massVector() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >inline
massVectorBasisData() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
matrixFreeData() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
mpiPatternP2Pdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
nCells() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
nDofsPerCell() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
nOwnedDofs() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
nQuadsPerCell() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
nRelaventDofs() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
quadPoints() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
reinit(const unsigned int &vecBlockSize, const unsigned int &cellBlockSize, const unsigned int &quadratureID, const bool isResizeTempStorageForInerpolation=true, const bool isResizeTempStorageForCellMatrices=false)dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
reinitializeConstraints(std::vector< const dealii::AffineConstraints< ValueTypeBasisData > * > &constraintsVector)dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
resizeTempStorage(const bool isResizeTempStorageForInerpolation, const bool isResizeTempStorageForCellMatrices)dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
scratchMultiVectorsdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >mutable
shapeFunctionBasisData(bool transpose=false) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >inline
shapeFunctionData(bool transpose=false) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
shapeFunctionGradientBasisData(bool transpose=false) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >inline
shapeFunctionGradientData(bool transpose=false) constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
sqrtMassVector() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >inline
sqrtMassVectorBasisData() constdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
tempCellGradientsBlockdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >mutableprotected
tempCellGradientsBlock2dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >protected
tempCellMatrixBlockdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >protected
tempCellNodalDatadftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >mutableprotected
tempCellValuesBlockdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >protected
tempQuadratureGradientsDatadftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >protected
tempQuadratureGradientsDataNonAffinedftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >protected
zeroIndexVecdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >mutableprotected
~FEBasisOperations()=defaultdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
+ + + + diff --git a/classdftfe_1_1basis_1_1_f_e_basis_operations.html b/classdftfe_1_1basis_1_1_f_e_basis_operations.html new file mode 100644 index 000000000..6c8c47e1d --- /dev/null +++ b/classdftfe_1_1basis_1_1_f_e_basis_operations.html @@ -0,0 +1,3643 @@ + + + + + + + +DFT-FE: dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace > Class Template Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace > Class Template Reference
+
+
+ +

#include <FEBasisOperations.h>

+ + + + +

+Public Types

using constraintInfoClass = dftUtils::constraintMatrixInfo
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 FEBasisOperations (std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > BLASWrapperPtr)
 Constructor.
 
 ~FEBasisOperations ()=default
 Default Destructor.
 
void clear ()
 Clears the FEBasisOperations internal storage.
 
void init (dealii::MatrixFree< 3, ValueTypeBasisData > &matrixFreeData, std::vector< const dealii::AffineConstraints< ValueTypeBasisData > * > &constraintsVector, const unsigned int &dofHandlerID, const std::vector< unsigned int > &quadratureID, const std::vector< UpdateFlags > updateFlags)
 fills required data structures for the given dofHandlerID
 
template<dftfe::utils::MemorySpace memorySpaceSrc>
void init (const FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpaceSrc > &basisOperationsSrc)
 fills required data structures from another FEBasisOperations object
 
void reinit (const unsigned int &vecBlockSize, const unsigned int &cellBlockSize, const unsigned int &quadratureID, const bool isResizeTempStorageForInerpolation=true, const bool isResizeTempStorageForCellMatrices=false)
 sets internal variables and optionally resizes internal temp storage for interpolation operations
 
void initializeIndexMaps ()
 Initializes indexset maps from process level indices to cell level indices for a single vector, also initializes cell index to cellid map.
 
void initializeFlattenedIndexMaps ()
 Initializes indexset maps from process level indices to cell level indices for multivectors.
 
void initializeConstraints ()
 Initializes the constraintMatrixInfo object.
 
void reinitializeConstraints (std::vector< const dealii::AffineConstraints< ValueTypeBasisData > * > &constraintsVector)
 Reinitializes the constraintMatrixInfo object.
 
void initializeMPIPattern ()
 Constructs the MPIPatternP2P object.
 
void initializeShapeFunctionAndJacobianData ()
 Fill the shape function data and jacobian data in the ValueTypeBasisCoeff datatype.
 
void initializeShapeFunctionAndJacobianBasisData ()
 Fill the shape function data and jacobian data in the ValueTypeBasisData datatype.
 
void computeCellStiffnessMatrix (const unsigned int quadratureID, const unsigned int cellsBlockSize, const bool basisType=false, const bool ceoffType=true)
 Computes the cell-level stiffness matrix.
 
void computeCellMassMatrix (const unsigned int quadratureID, const unsigned int cellsBlockSize, const bool basisType=false, const bool ceoffType=true)
 
void computeWeightedCellMassMatrix (const std::pair< unsigned int, unsigned int > cellRangeTotal, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > &weights, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > &weightedCellMassMatrix) const
 
void computeWeightedCellNjGradNiMatrix (const std::pair< unsigned int, unsigned int > cellRangeTotal, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > &weights, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > &weightedCellNjGradNiMatrix) const
 
void computeWeightedCellNjGradNiPlusNiGradNjMatrix (const std::pair< unsigned int, unsigned int > cellRangeTotal, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > &weights, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > &weightedCellNjGradNiPlusNiGradNjMatrix) const
 
void computeInverseSqrtMassVector (const bool basisType=true, const bool ceoffType=false)
 
void resizeTempStorage (const bool isResizeTempStorageForInerpolation, const bool isResizeTempStorageForCellMatrices)
 Resizes the internal temp storage to be sufficient for the vector and cell block sizes provided in reinit.
 
unsigned int nQuadsPerCell () const
 Number of quadrature points per cell for the quadratureID set in reinit.
 
unsigned int nDofsPerCell () const
 Number of DoFs per cell for the dofHandlerID set in init.
 
unsigned int nCells () const
 Number of locally owned cells on the current processor.
 
unsigned int nRelaventDofs () const
 Number of DoFs on the current processor, locally owned + ghosts.
 
unsigned int nOwnedDofs () const
 Number of locally owned DoFs on the current processor.
 
const dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > & shapeFunctionData (bool transpose=false) const
 Shape function values at quadrature points.
 
const dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > & shapeFunctionGradientData (bool transpose=false) const
 Shape function gradient values at quadrature points.
 
const dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > & inverseJacobians () const
 Inverse Jacobian matrices, for cartesian cells returns the diagonal elements of the inverse Jacobian matrices for each cell, for affine cells returns the 3x3 inverse Jacobians for each cell otherwise returns the 3x3 inverse Jacobians at each quad point for each cell.
 
const dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > & JxW () const
 determinant of Jacobian times the quadrature weight at each quad point for each cell.
 
const dftfe::utils::MemoryStorage< ValueTypeBasisData, dftfe::utils::MemorySpace::HOST > & quadPoints () const
 quad point coordinates for each cell.
 
const autoshapeFunctionBasisData (bool transpose=false) const
 Shape function values at quadrature points in ValueTypeBasisData.
 
const autoshapeFunctionGradientBasisData (bool transpose=false) const
 Shape function gradient values at quadrature points in ValueTypeBasisData.
 
const autoinverseJacobiansBasisData () const
 Inverse Jacobian matrices in ValueTypeBasisData, for cartesian cells returns the diagonal elements of the inverse Jacobian matrices for each cell, for affine cells returns the 3x3 inverse Jacobians for each cell otherwise returns the 3x3 inverse Jacobians at each quad point for each cell.
 
const autoJxWBasisData () const
 determinant of Jacobian times the quadrature weight in ValueTypeBasisData at each quad point for each cell.
 
const autocellStiffnessMatrix () const
 Cell level stiffness matrix in ValueTypeBasisCoeff.
 
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & cellStiffnessMatrixBasisData () const
 Cell level stiffness matrix in ValueTypeBasisData.
 
const autocellMassMatrix () const
 Cell level mass matrix in ValueTypeBasisCoeff.
 
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & cellMassMatrixBasisData () const
 Cell level mass matrix in ValueTypeBasisData.
 
const autocellInverseSqrtMassVector () const
 Cell level inverse sqrt diagonal mass matrix in ValueTypeBasisCoeff.
 
const autocellInverseMassVector () const
 Cell level inverse diagonal mass matrix in ValueTypeBasisCoeff.
 
const autocellSqrtMassVector () const
 Cell level sqrt diagonal mass matrix in ValueTypeBasisCoeff.
 
const autocellMassVector () const
 Cell level diagonal mass matrix in ValueTypeBasisCoeff.
 
const autoinverseSqrtMassVector () const
 Inverse sqrt diagonal mass matrix in ValueTypeBasisCoeff.
 
const autoinverseMassVector () const
 Inverse sqrt diagonal mass matrix in ValueTypeBasisCoeff.
 
const autosqrtMassVector () const
 sqrt diagonal mass matrix in ValueTypeBasisCoeff
 
const automassVector () const
 diagonal mass matrix in ValueTypeBasisCoeff
 
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & cellInverseSqrtMassVectorBasisData () const
 Cell level inverse sqrt diagonal mass matrix in ValueTypeBasisData.
 
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & cellInverseMassVectorBasisData () const
 Cell level inverse diagonal mass matrix in ValueTypeBasisData.
 
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & cellSqrtMassVectorBasisData () const
 Cell level sqrt diagonal mass matrix in ValueTypeBasisData.
 
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & cellMassVectorBasisData () const
 Cell level diagonal mass matrix in ValueTypeBasisData.
 
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & inverseSqrtMassVectorBasisData () const
 Inverse sqrt diagonal mass matrix in ValueTypeBasisData.
 
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & inverseMassVectorBasisData () const
 Inverse diagonal mass matrix in ValueTypeBasisData.
 
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & sqrtMassVectorBasisData () const
 sqrt diagonal mass matrix in ValueTypeBasisData
 
const dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & massVectorBasisData () const
 diagonal mass matrix in ValueTypeBasisData
 
unsigned int cellsTypeFlag () const
 returns 2 if all cells on current processor are Cartesian, 1 if all cells on current processor are affine and 0 otherwise.
 
dealii::CellId cellID (const unsigned int iElem) const
 returns the deal.ii cellID corresponing to given cell Index.
 
unsigned int cellIndex (const dealii::CellId cellid) const
 returns the cell index corresponding to given deal.ii cellID.
 
void createMultiVector (const unsigned int blocksize, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &multiVector) const
 Creates a multivector.
 
void createScratchMultiVectors (const unsigned int vecBlockSize, const unsigned int numMultiVecs=1) const
 Creates scratch multivectors.
 
void clearScratchMultiVectors () const
 Clears scratch multivectors.
 
dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > & getMultiVector (const unsigned int vecBlockSize, const unsigned int index=0) const
 Gets scratch multivectors.
 
void distribute (dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &multiVector, unsigned int constraintIndex=std::numeric_limits< unsigned int >::max()) const
 Apply constraints on given multivector.
 
const dealii::MatrixFree< 3, ValueTypeBasisData > & matrixFreeData () const
 Return the underlying deal.II matrixfree object.
 
const dealii::DoFHandler< 3 > & getDofHandler () const
 Return the underlying deal.II dofhandler object.
 
void interpolate (dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData, ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients=NULL) const
 Interpolate process level nodal data to cell level quadrature data.
 
void integrateWithBasis (ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData) const
 Integrate cell level quadrature data times shape functions to process level nodal data.
 
void extractToCellNodalData (dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData, ValueTypeBasisCoeff *cellNodalDataPtr) const
 Get cell level nodal data from process level nodal data.
 
void accumulateFromCellNodalData (const ValueTypeBasisCoeff *cellNodalDataPtr, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData) const
 Accumulate cell level nodal data into process level nodal data.
 
void interpolateKernel (const dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData, ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients, const std::pair< unsigned int, unsigned int > cellRange) const
 Interpolate process level nodal data to cell level quadrature data.
 
void interpolateKernel (const ValueTypeBasisCoeff *nodalData, ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients, const std::pair< unsigned int, unsigned int > cellRange) const
 Interpolate cell level nodal data to cell level quadrature data.
 
void integrateWithBasisKernel (const ValueTypeBasisCoeff *quadratureValues, const ValueTypeBasisCoeff *quadratureGradients, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData, const std::pair< unsigned int, unsigned int > cellRange) const
 Integrate cell level quadrature data times shape functions to process level nodal data.
 
void extractToCellNodalDataKernel (const dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData, ValueTypeBasisCoeff *cellNodalDataPtr, const std::pair< unsigned int, unsigned int > cellRange) const
 Get cell level nodal data from process level nodal data.
 
void accumulateFromCellNodalDataKernel (const ValueTypeBasisCoeff *cellNodalDataPtr, dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData, const std::pair< unsigned int, unsigned int > cellRange) const
 Accumulate cell level nodal data into process level nodal data.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

std::vector< constraintInfoClassd_constraintInfo
 
unsigned int d_nOMPThreads
 
std::vector< const dealii::AffineConstraints< ValueTypeBasisData > * > * d_constraintsVector
 
const dealii::MatrixFree< 3, ValueTypeBasisData > * d_matrixFreeDataPtr
 
dftfe::utils::MemoryStorage< dftfe::global_size_type, dftfe::utils::MemorySpace::HOSTd_cellDofIndexToProcessDofIndexMap
 
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisData, dftfe::utils::MemorySpace::HOST > > d_quadPoints
 
dftfe::utils::MemoryStorage< dftfe::global_size_type, memorySpaced_flattenedCellDofIndexToProcessDofIndexMap
 
std::vector< dealii::CellId > d_cellIndexToCellIdMap
 
std::map< dealii::CellId, unsigned intd_cellIdToCellIndexMap
 
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_inverseJacobianData
 
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_JxWData
 
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionData
 
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionGradientDataInternalLayout
 
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionGradientData
 
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionDataTranspose
 
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace > > d_shapeFunctionGradientDataTranspose
 
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_inverseJacobianBasisData
 
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_JxWBasisData
 
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionBasisData
 
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionGradientBasisData
 
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionBasisDataTranspose
 
std::map< unsigned int, dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > > d_shapeFunctionGradientBasisDataTranspose
 
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpaced_cellStiffnessMatrixBasisType
 
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpaced_cellStiffnessMatrixCoeffType
 
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpaced_cellMassMatrixBasisType
 
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpaced_cellMassMatrixCoeffType
 
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpaced_cellInverseMassVectorBasisType
 
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpaced_cellInverseMassVectorCoeffType
 
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpaced_cellInverseSqrtMassVectorBasisType
 
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpaced_cellInverseSqrtMassVectorCoeffType
 
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpaced_cellMassVectorBasisType
 
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpaced_cellMassVectorCoeffType
 
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpaced_cellSqrtMassVectorBasisType
 
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpaced_cellSqrtMassVectorCoeffType
 
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpaced_massVectorBasisType
 
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpaced_massVectorCoeffType
 
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpaced_inverseMassVectorBasisType
 
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpaced_inverseMassVectorCoeffType
 
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpaced_inverseSqrtMassVectorBasisType
 
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpaced_inverseSqrtMassVectorCoeffType
 
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpaced_sqrtMassVectorBasisType
 
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpaced_sqrtMassVectorCoeffType
 
std::map< unsigned int, std::vector< dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > > > scratchMultiVectors
 
std::vector< unsigned intd_quadratureIDsVector
 
unsigned int d_quadratureID
 
unsigned int d_quadratureIndex
 
std::vector< unsigned intd_nQuadsPerCell
 
unsigned int d_dofHandlerID
 
unsigned int d_nVectors
 
unsigned int d_nCells
 
unsigned int d_cellsBlockSize
 
unsigned int d_nDofsPerCell
 
unsigned int d_localSize
 
unsigned int d_locallyOwnedSize
 
bool areAllCellsAffine
 
bool areAllCellsCartesian
 
std::vector< UpdateFlagsd_updateFlags
 
std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P
 
+ + + + + + + + + + + + + + + + + + + +

+Protected Attributes

dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpacetempCellNodalData
 
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpacetempQuadratureGradientsData
 
dftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpacetempQuadratureGradientsDataNonAffine
 
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpacetempCellGradientsBlock
 
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpacetempCellGradientsBlock2
 
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpacetempCellValuesBlock
 
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpacetempCellMatrixBlock
 
dftfe::utils::MemoryStorage< dftfe::global_size_type, memorySpacezeroIndexVec
 
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > d_BLASWrapperPtr
 
+

Member Typedef Documentation

+ +

◆ constraintInfoClass

+ + +

Constructor & Destructor Documentation

+ +

◆ FEBasisOperations()

+ +
+
+ +

Constructor.

+ +
+
+ +

◆ ~FEBasisOperations()

+ +
+
+ +

Default Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ accumulateFromCellNodalData()

+ +
+
+ +

Accumulate cell level nodal data into process level nodal data.

+
Parameters
+ + + +
[in]cellNodalDataPtrCell level nodal values, indexed by [iCell * d_nDofsPerCell * d_nVectors + iDoF * d_nVectors + iVec].
[out]nodalDataprocess level nodal data.
+
+
+ +
+
+ +

◆ accumulateFromCellNodalDataKernel()

+ +
+
+ + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::accumulateFromCellNodalDataKernel (const ValueTypeBasisCoeff * cellNodalDataPtr,
dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > & nodalData,
const std::pair< unsigned int, unsigned int > cellRange ) const
+
+ +

Accumulate cell level nodal data into process level nodal data.

+
Parameters
+ + + + +
[in]cellNodalDataPtrCell level nodal values, indexed by [iCell * d_nDofsPerCell * d_nVectors + iDoF * d_nVectors + iVec].
[out]nodalDataprocess level nodal data.
[in]cellRangethe range of cells for which extraction has to be done.
+
+
+ +
+
+ +

◆ cellID()

+ +
+
+ +

returns the deal.ii cellID corresponing to given cell Index.

+
Parameters
+ + +
[in]iElemcell Index
+
+
+ +
+
+ +

◆ cellIndex()

+ +
+
+ +

returns the cell index corresponding to given deal.ii cellID.

+
Parameters
+ + +
[in]iElemcell Index
+
+
+ +
+
+ +

◆ cellInverseMassVector()

+ +
+
+ + + + + + +
+ + + + + + + +
const auto & dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::cellInverseMassVector () const
+
+inline
+
+ +

Cell level inverse diagonal mass matrix in ValueTypeBasisCoeff.

+ +
+
+ +

◆ cellInverseMassVectorBasisData()

+ +
+
+ +

Cell level inverse diagonal mass matrix in ValueTypeBasisData.

+ +
+
+ +

◆ cellInverseSqrtMassVector()

+ +
+
+ + + + + + +
+ + + + + + + +
const auto & dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::cellInverseSqrtMassVector () const
+
+inline
+
+ +

Cell level inverse sqrt diagonal mass matrix in ValueTypeBasisCoeff.

+ +
+
+ +

◆ cellInverseSqrtMassVectorBasisData()

+ +
+
+ +

Cell level inverse sqrt diagonal mass matrix in ValueTypeBasisData.

+ +
+
+ +

◆ cellMassMatrix()

+ +
+
+ + + + + + +
+ + + + + + + +
const auto & dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::cellMassMatrix () const
+
+inline
+
+ +

Cell level mass matrix in ValueTypeBasisCoeff.

+ +
+
+ +

◆ cellMassMatrixBasisData()

+ +
+
+ +

Cell level mass matrix in ValueTypeBasisData.

+ +
+
+ +

◆ cellMassVector()

+ +
+
+ + + + + + +
+ + + + + + + +
const auto & dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::cellMassVector () const
+
+inline
+
+ +

Cell level diagonal mass matrix in ValueTypeBasisCoeff.

+ +
+
+ +

◆ cellMassVectorBasisData()

+ +
+
+ +

Cell level diagonal mass matrix in ValueTypeBasisData.

+ +
+
+ +

◆ cellSqrtMassVector()

+ +
+
+ + + + + + +
+ + + + + + + +
const auto & dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::cellSqrtMassVector () const
+
+inline
+
+ +

Cell level sqrt diagonal mass matrix in ValueTypeBasisCoeff.

+ +
+
+ +

◆ cellSqrtMassVectorBasisData()

+ +
+
+ +

Cell level sqrt diagonal mass matrix in ValueTypeBasisData.

+ +
+
+ +

◆ cellStiffnessMatrix()

+ +
+
+ + + + + + +
+ + + + + + + +
const auto & dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::cellStiffnessMatrix () const
+
+inline
+
+ +

Cell level stiffness matrix in ValueTypeBasisCoeff.

+ +
+
+ +

◆ cellStiffnessMatrixBasisData()

+ +
+
+ +

Cell level stiffness matrix in ValueTypeBasisData.

+ +
+
+ +

◆ cellsTypeFlag()

+ +
+
+ +

returns 2 if all cells on current processor are Cartesian, 1 if all cells on current processor are affine and 0 otherwise.

+ +
+
+ +

◆ clear()

+ +
+
+ +

Clears the FEBasisOperations internal storage.

+ +
+
+ +

◆ clearScratchMultiVectors()

+ +
+
+ +

Clears scratch multivectors.

+ +
+
+ +

◆ computeCellMassMatrix()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::computeCellMassMatrix (const unsigned int quadratureID,
const unsigned int cellsBlockSize,
const bool basisType = false,
const bool ceoffType = true )
+
+ +
+
+ +

◆ computeCellStiffnessMatrix()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::computeCellStiffnessMatrix (const unsigned int quadratureID,
const unsigned int cellsBlockSize,
const bool basisType = false,
const bool ceoffType = true )
+
+ +

Computes the cell-level stiffness matrix.

+ +
+
+ +

◆ computeInverseSqrtMassVector()

+ +
+
+ + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::computeInverseSqrtMassVector (const bool basisType = true,
const bool ceoffType = false )
+
+ +
+
+ +

◆ computeWeightedCellMassMatrix()

+ +
+
+ + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::computeWeightedCellMassMatrix (const std::pair< unsigned int, unsigned int > cellRangeTotal,
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & weights,
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & weightedCellMassMatrix ) const
+
+ +
+
+ +

◆ computeWeightedCellNjGradNiMatrix()

+ +
+
+ + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::computeWeightedCellNjGradNiMatrix (const std::pair< unsigned int, unsigned int > cellRangeTotal,
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & weights,
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & weightedCellNjGradNiMatrix ) const
+
+ +
+
+ +

◆ computeWeightedCellNjGradNiPlusNiGradNjMatrix()

+ +
+
+ + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::computeWeightedCellNjGradNiPlusNiGradNjMatrix (const std::pair< unsigned int, unsigned int > cellRangeTotal,
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & weights,
dftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace > & weightedCellNjGradNiPlusNiGradNjMatrix ) const
+
+ +
+
+ +

◆ createMultiVector()

+ +
+
+ +

Creates a multivector.

+
Parameters
+ + + +
[in]blocksizeNumber of vectors in the multivector.
[out]multiVectorthe created multivector.
+
+
+ +
+
+ +

◆ createScratchMultiVectors()

+ +
+
+ + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::createScratchMultiVectors (const unsigned int vecBlockSize,
const unsigned int numMultiVecs = 1 ) const
+
+ +

Creates scratch multivectors.

+
Parameters
+ + + +
[in]vecBlockSizeNumber of vectors in the multivector.
[out]numMultiVecsnumber of scratch multivectors needed with this vecBlockSize.
+
+
+ +
+
+ +

◆ distribute()

+ +
+
+ + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::distribute (dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > & multiVector,
unsigned int constraintIndex = std::numeric_limits< unsigned int >::max() ) const
+
+ +

Apply constraints on given multivector.

+
Parameters
+ + +
[in,out]multiVectorthe given multivector.
+
+
+ +
+
+ +

◆ extractToCellNodalData()

+ +
+
+ +

Get cell level nodal data from process level nodal data.

+
Parameters
+ + + +
[in]nodalDataprocess level nodal data, the multivector should already have ghost data and constraints should have been applied.
[out]cellNodalDataPtrCell level nodal values, indexed by [iCell * d_nDofsPerCell * d_nVectors + iDoF * d_nVectors + iVec].
+
+
+ +
+
+ +

◆ extractToCellNodalDataKernel()

+ +
+
+ + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::extractToCellNodalDataKernel (const dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > & nodalData,
ValueTypeBasisCoeff * cellNodalDataPtr,
const std::pair< unsigned int, unsigned int > cellRange ) const
+
+ +

Get cell level nodal data from process level nodal data.

+
Parameters
+ + + + +
[in]nodalDataprocess level nodal data, the multivector should already have ghost data and constraints should have been applied.
[out]cellNodalDataPtrCell level nodal values, indexed by [iCell * d_nDofsPerCell * d_nVectors + iDoF * d_nVectors + iVec].
[in]cellRangethe range of cells for which extraction has to be done.
+
+
+ +
+
+ +

◆ getDofHandler()

+ +
+
+ + + + + + + + +
const dealii::DoFHandler< 3 > & dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::getDofHandler () const
+
+ +

Return the underlying deal.II dofhandler object.

+ +
+
+ +

◆ getMultiVector()

+ +
+
+ +

Gets scratch multivectors.

+
Parameters
+ + + +
[in]vecBlockSizeNumber of vectors in the multivector.
[out]numMultiVecsindex of the multivector among those with the same vecBlockSize.
+
+
+ +
+
+ +

◆ init() [1/2]

+ +
+
+ +

fills required data structures from another FEBasisOperations object

+
Parameters
+ + +
[in]basisOperationsSrcSource FEBasisOperations object.
+
+
+ +
+
+ +

◆ init() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::init (dealii::MatrixFree< 3, ValueTypeBasisData > & matrixFreeData,
std::vector< const dealii::AffineConstraints< ValueTypeBasisData > * > & constraintsVector,
const unsigned int & dofHandlerID,
const std::vector< unsigned int > & quadratureID,
const std::vector< UpdateFlags > updateFlags )
+
+ +

fills required data structures for the given dofHandlerID

+
Parameters
+ + + + + +
[in]matrixFreeDataMatrixFree object.
[in]constraintsVectorstd::vector of AffineConstraints, should be the same vector which was passed for the construction of the given MatrixFree object.
[in]dofHandlerIDdofHandler index to be used for getting data from the MatrixFree object.
[in]quadratureIDstd::vector of quadratureIDs to be used, should be the same IDs which were used during the construction of the given MatrixFree object.
+
+
+ +
+
+ +

◆ initializeConstraints()

+ +
+
+ +

Initializes the constraintMatrixInfo object.

+ +
+
+ +

◆ initializeFlattenedIndexMaps()

+ +
+
+ +

Initializes indexset maps from process level indices to cell level indices for multivectors.

+ +
+
+ +

◆ initializeIndexMaps()

+ +
+
+ +

Initializes indexset maps from process level indices to cell level indices for a single vector, also initializes cell index to cellid map.

+ +
+
+ +

◆ initializeMPIPattern()

+ +
+
+ +

Constructs the MPIPatternP2P object.

+ +
+
+ +

◆ initializeShapeFunctionAndJacobianBasisData()

+ +
+
+ + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::initializeShapeFunctionAndJacobianBasisData ()
+
+ +

Fill the shape function data and jacobian data in the ValueTypeBasisData datatype.

+ +
+
+ +

◆ initializeShapeFunctionAndJacobianData()

+ +
+
+ +

Fill the shape function data and jacobian data in the ValueTypeBasisCoeff datatype.

+ +
+
+ +

◆ integrateWithBasis()

+ +
+
+ +

Integrate cell level quadrature data times shape functions to process level nodal data.

+
Parameters
+ + + + +
[in]quadratureValuesCell level quadrature values, indexed by [iCell * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
[in]quadratureGradientsCell level quadrature gradients, indexed by [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
[out]nodalDataprocess level nodal data.
+
+
+ +
+
+ +

◆ integrateWithBasisKernel()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::integrateWithBasisKernel (const ValueTypeBasisCoeff * quadratureValues,
const ValueTypeBasisCoeff * quadratureGradients,
dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > & nodalData,
const std::pair< unsigned int, unsigned int > cellRange ) const
+
+ +

Integrate cell level quadrature data times shape functions to process level nodal data.

+
Parameters
+ + + + + +
[in]quadratureValuesCell level quadrature values, indexed by [iCell * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
[in]quadratureGradientsCell level quadrature gradients, indexed by [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
[out]nodalDataprocess level nodal data.
[in]cellRangethe range of cells for which integration has to be done.
+
+
+ +
+
+ +

◆ interpolate()

+ +
+
+ +

Interpolate process level nodal data to cell level quadrature data.

+
Parameters
+ + + + +
[in]nodalDataprocess level nodal data, the multivector should already have ghost data and constraints should have been applied.
[out]quadratureValuesCell level quadrature values, indexed by [iCell * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
[out]quadratureGradientsCell level quadrature gradients, indexed by [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
+
+
+ +
+
+ +

◆ interpolateKernel() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::interpolateKernel (const dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > & nodalData,
ValueTypeBasisCoeff * quadratureValues,
ValueTypeBasisCoeff * quadratureGradients,
const std::pair< unsigned int, unsigned int > cellRange ) const
+
+ +

Interpolate process level nodal data to cell level quadrature data.

+
Parameters
+ + + + + +
[in]nodalDataprocess level nodal data, the multivector should already have ghost data and constraints should have been applied.
[out]quadratureValuesCell level quadrature values, indexed by [iCell * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
[out]quadratureGradientsCell level quadrature gradients, indexed by [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
[in]cellRangethe range of cells for which interpolation has to be done.
+
+
+ +
+
+ +

◆ interpolateKernel() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::interpolateKernel (const ValueTypeBasisCoeff * nodalData,
ValueTypeBasisCoeff * quadratureValues,
ValueTypeBasisCoeff * quadratureGradients,
const std::pair< unsigned int, unsigned int > cellRange ) const
+
+ +

Interpolate cell level nodal data to cell level quadrature data.

+
Parameters
+ + + + + +
[in]nodalDatacell level nodal data, the multivector should already have ghost data and constraints should have been applied.
[out]quadratureValuesCell level quadrature values, indexed by [iCell * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
[out]quadratureGradientsCell level quadrature gradients, indexed by [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
[in]cellRangethe range of cells for which interpolation has to be done.
+
+
+ +
+
+ +

◆ inverseJacobians()

+ +
+
+ +

Inverse Jacobian matrices, for cartesian cells returns the diagonal elements of the inverse Jacobian matrices for each cell, for affine cells returns the 3x3 inverse Jacobians for each cell otherwise returns the 3x3 inverse Jacobians at each quad point for each cell.

+ +
+
+ +

◆ inverseJacobiansBasisData()

+ +
+
+ + + + + + +
+ + + + + + + +
const auto & dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::inverseJacobiansBasisData () const
+
+inline
+
+ +

Inverse Jacobian matrices in ValueTypeBasisData, for cartesian cells returns the diagonal elements of the inverse Jacobian matrices for each cell, for affine cells returns the 3x3 inverse Jacobians for each cell otherwise returns the 3x3 inverse Jacobians at each quad point for each cell.

+ +
+
+ +

◆ inverseMassVector()

+ +
+
+ + + + + + +
+ + + + + + + +
const auto & dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::inverseMassVector () const
+
+inline
+
+ +

Inverse sqrt diagonal mass matrix in ValueTypeBasisCoeff.

+ +
+
+ +

◆ inverseMassVectorBasisData()

+ +
+
+ +

Inverse diagonal mass matrix in ValueTypeBasisData.

+ +
+
+ +

◆ inverseSqrtMassVector()

+ +
+
+ + + + + + +
+ + + + + + + +
const auto & dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::inverseSqrtMassVector () const
+
+inline
+
+ +

Inverse sqrt diagonal mass matrix in ValueTypeBasisCoeff.

+ +
+
+ +

◆ inverseSqrtMassVectorBasisData()

+ +
+
+ +

Inverse sqrt diagonal mass matrix in ValueTypeBasisData.

+ +
+
+ +

◆ JxW()

+ +
+
+ +

determinant of Jacobian times the quadrature weight at each quad point for each cell.

+ +
+
+ +

◆ JxWBasisData()

+ +
+
+ +

determinant of Jacobian times the quadrature weight in ValueTypeBasisData at each quad point for each cell.

+ +
+
+ +

◆ massVector()

+ +
+
+ +

diagonal mass matrix in ValueTypeBasisCoeff

+ +
+
+ +

◆ massVectorBasisData()

+ +
+
+ +

diagonal mass matrix in ValueTypeBasisData

+ +
+
+ +

◆ matrixFreeData()

+ +
+
+ +

Return the underlying deal.II matrixfree object.

+ +
+
+ +

◆ nCells()

+ +
+
+ +

Number of locally owned cells on the current processor.

+ +
+
+ +

◆ nDofsPerCell()

+ +
+
+ +

Number of DoFs per cell for the dofHandlerID set in init.

+ +
+
+ +

◆ nOwnedDofs()

+ +
+
+ +

Number of locally owned DoFs on the current processor.

+ +
+
+ +

◆ nQuadsPerCell()

+ +
+
+ +

Number of quadrature points per cell for the quadratureID set in reinit.

+ +
+
+ +

◆ nRelaventDofs()

+ +
+
+ +

Number of DoFs on the current processor, locally owned + ghosts.

+ +
+
+ +

◆ quadPoints()

+ + + +

◆ reinit()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::reinit (const unsigned int & vecBlockSize,
const unsigned int & cellBlockSize,
const unsigned int & quadratureID,
const bool isResizeTempStorageForInerpolation = true,
const bool isResizeTempStorageForCellMatrices = false )
+
+ +

sets internal variables and optionally resizes internal temp storage for interpolation operations

+
Parameters
+ + + + + +
[in]vecBlockSizeblock size to used for operations on vectors, this has to be set to the exact value before any such operations are called.
[in]cellBlockSizeblock size to used for cells, this has to be set to a value greater than or equal to the required value before any such operations are called
[in]quadratureIDQuadrature index to be used.
[in]isResizeTempStoragewhether to resize internal tempstorage.
+
+
+ +
+
+ +

◆ reinitializeConstraints()

+ +
+
+ + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::reinitializeConstraints (std::vector< const dealii::AffineConstraints< ValueTypeBasisData > * > & constraintsVector)
+
+ +

Reinitializes the constraintMatrixInfo object.

+ +
+
+ +

◆ resizeTempStorage()

+ +
+
+ + + + + + + + + + + + +
void dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::resizeTempStorage (const bool isResizeTempStorageForInerpolation,
const bool isResizeTempStorageForCellMatrices )
+
+ +

Resizes the internal temp storage to be sufficient for the vector and cell block sizes provided in reinit.

+ +
+
+ +

◆ shapeFunctionBasisData()

+ +
+
+ + + + + + +
+ + + + + + + +
const auto & dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::shapeFunctionBasisData (bool transpose = false) const
+
+inline
+
+ +

Shape function values at quadrature points in ValueTypeBasisData.

+
Parameters
+ + +
[in]transposeif false the the data is indexed as [iQuad * d_nDofsPerCell + iNode] and if true it is indexed as [iNode * d_nQuadsPerCell + iQuad].
+
+
+ +
+
+ +

◆ shapeFunctionData()

+ +
+
+ +

Shape function values at quadrature points.

+
Parameters
+ + +
[in]transposeif false the the data is indexed as [iQuad * d_nDofsPerCell + iNode] and if true it is indexed as [iNode * d_nQuadsPerCell + iQuad].
+
+
+ +
+
+ +

◆ shapeFunctionGradientBasisData()

+ +
+
+ + + + + + +
+ + + + + + + +
const auto & dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::shapeFunctionGradientBasisData (bool transpose = false) const
+
+inline
+
+ +

Shape function gradient values at quadrature points in ValueTypeBasisData.

+
Parameters
+ + +
[in]transposeif false the the data is indexed as [iDim * d_nQuadsPerCell * d_nDofsPerCell + iQuad * d_nDofsPerCell + iNode] and if true it is indexed as [iDim * d_nQuadsPerCell * d_nDofsPerCell + iNode * d_nQuadsPerCell + iQuad].
+
+
+ +
+
+ +

◆ shapeFunctionGradientData()

+ +
+
+ +

Shape function gradient values at quadrature points.

+
Parameters
+ + +
[in]transposeif false the the data is indexed as [iDim * d_nQuadsPerCell * d_nDofsPerCell + iQuad * d_nDofsPerCell + iNode] and if true it is indexed as [iDim * d_nQuadsPerCell * d_nDofsPerCell + iNode * d_nQuadsPerCell + iQuad].
+
+
+ +
+
+ +

◆ sqrtMassVector()

+ +
+
+ + + + + + +
+ + + + + + + +
const auto & dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::sqrtMassVector () const
+
+inline
+
+ +

sqrt diagonal mass matrix in ValueTypeBasisCoeff

+ +
+
+ +

◆ sqrtMassVectorBasisData()

+ +
+
+ +

sqrt diagonal mass matrix in ValueTypeBasisData

+ +
+
+

Member Data Documentation

+ +

◆ areAllCellsAffine

+ + + +

◆ areAllCellsCartesian

+ + + +

◆ d_BLASWrapperPtr

+ + + +

◆ d_cellDofIndexToProcessDofIndexMap

+ + + +

◆ d_cellIdToCellIndexMap

+ +
+
+ +
+
+ +

◆ d_cellIndexToCellIdMap

+ +
+
+ + + + + +
std::vector<dealii::CellId> dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_cellIndexToCellIdMap
+
+ +
+
+ +

◆ d_cellInverseMassVectorBasisType

+ + + +

◆ d_cellInverseMassVectorCoeffType

+ + + +

◆ d_cellInverseSqrtMassVectorBasisType

+ + + +

◆ d_cellInverseSqrtMassVectorCoeffType

+ + + +

◆ d_cellMassMatrixBasisType

+ + + +

◆ d_cellMassMatrixCoeffType

+ + + +

◆ d_cellMassVectorBasisType

+ + + +

◆ d_cellMassVectorCoeffType

+ + + +

◆ d_cellsBlockSize

+ + + +

◆ d_cellSqrtMassVectorBasisType

+ + + +

◆ d_cellSqrtMassVectorCoeffType

+ + + +

◆ d_cellStiffnessMatrixBasisType

+ + + +

◆ d_cellStiffnessMatrixCoeffType

+ + + +

◆ d_constraintInfo

+ + + +

◆ d_constraintsVector

+ +
+
+ + + + + +
std::vector<const dealii::AffineConstraints<ValueTypeBasisData> *>* dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >::d_constraintsVector
+
+ +
+
+ +

◆ d_dofHandlerID

+ + + +

◆ d_flattenedCellDofIndexToProcessDofIndexMap

+ + + +

◆ d_inverseJacobianBasisData

+ + + +

◆ d_inverseJacobianData

+ + + +

◆ d_inverseMassVectorBasisType

+ + + +

◆ d_inverseMassVectorCoeffType

+ + + +

◆ d_inverseSqrtMassVectorBasisType

+ + + +

◆ d_inverseSqrtMassVectorCoeffType

+ + + +

◆ d_JxWBasisData

+ + + +

◆ d_JxWData

+ + + +

◆ d_locallyOwnedSize

+ + + +

◆ d_localSize

+ + + +

◆ d_massVectorBasisType

+ + + +

◆ d_massVectorCoeffType

+ + + +

◆ d_matrixFreeDataPtr

+ + + +

◆ d_nCells

+ + + +

◆ d_nDofsPerCell

+ + + +

◆ d_nOMPThreads

+ + + +

◆ d_nQuadsPerCell

+ + + +

◆ d_nVectors

+ + + +

◆ d_quadPoints

+ + + +

◆ d_quadratureID

+ + + +

◆ d_quadratureIDsVector

+ + + +

◆ d_quadratureIndex

+ + + +

◆ d_shapeFunctionBasisData

+ + + +

◆ d_shapeFunctionBasisDataTranspose

+ + + +

◆ d_shapeFunctionData

+ + + +

◆ d_shapeFunctionDataTranspose

+ + + +

◆ d_shapeFunctionGradientBasisData

+ + + +

◆ d_shapeFunctionGradientBasisDataTranspose

+ + + +

◆ d_shapeFunctionGradientData

+ + + +

◆ d_shapeFunctionGradientDataInternalLayout

+ + + +

◆ d_shapeFunctionGradientDataTranspose

+ + + +

◆ d_sqrtMassVectorBasisType

+ + + +

◆ d_sqrtMassVectorCoeffType

+ + + +

◆ d_updateFlags

+ + + +

◆ mpiPatternP2P

+ + + +

◆ scratchMultiVectors

+ + + +

◆ tempCellGradientsBlock

+ + + +

◆ tempCellGradientsBlock2

+ + + +

◆ tempCellMatrixBlock

+ + + +

◆ tempCellNodalData

+ + + +

◆ tempCellValuesBlock

+ + + +

◆ tempQuadratureGradientsData

+ + + +

◆ tempQuadratureGradientsDataNonAffine

+ + + +

◆ zeroIndexVec

+ + +
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1cg_p_r_p_non_linear_solver-members.html b/classdftfe_1_1cg_p_r_p_non_linear_solver-members.html new file mode 100644 index 000000000..e4bc78af8 --- /dev/null +++ b/classdftfe_1_1cg_p_r_p_non_linear_solver-members.html @@ -0,0 +1,149 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::cgPRPNonLinearSolver Member List
+
+
+ +

This is the complete list of members for dftfe::cgPRPNonLinearSolver, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cgPRPNonLinearSolver(const unsigned int maxNumberIterations, const unsigned int debugLevel, const MPI_Comm &mpi_comm_parent, const double lineSearchTolerance=1.0e-6, const unsigned int lineSearchMaxIterations=10, const double lineSeachDampingParameter=1.0, const double maxIncrementSolLinf=1e+6, const bool isCurvatureOnlyLineSearchStoppingCondition=false)dftfe::cgPRPNonLinearSolver
computeDeltaD()dftfe::cgPRPNonLinearSolverprivate
computeDeltas()dftfe::cgPRPNonLinearSolverprivate
computeEta()dftfe::cgPRPNonLinearSolverprivate
computeResidualL2Norm() constdftfe::cgPRPNonLinearSolverprivate
computeTotalNumberUnknowns() constdftfe::cgPRPNonLinearSolverprivate
d_alphaChkdftfe::cgPRPNonLinearSolverprivate
d_betadftfe::cgPRPNonLinearSolverprivate
d_conjugateDirectiondftfe::cgPRPNonLinearSolverprivate
d_debugLeveldftfe::nonLinearSolverprotected
d_deltaMiddftfe::cgPRPNonLinearSolverprivate
d_deltaNewdftfe::cgPRPNonLinearSolverprivate
d_deltaOlddftfe::cgPRPNonLinearSolverprivate
d_etadftfe::cgPRPNonLinearSolverprivate
d_etaAlphaZeroChkdftfe::cgPRPNonLinearSolverprivate
d_etaChkdftfe::cgPRPNonLinearSolverprivate
d_etaPChkdftfe::cgPRPNonLinearSolverprivate
d_functionalValueAfterAlphUpdateChkdftfe::cgPRPNonLinearSolverprivate
d_functionValueChkdftfe::cgPRPNonLinearSolverprivate
d_gradientdftfe::cgPRPNonLinearSolverprivate
d_gradMaxdftfe::cgPRPNonLinearSolverprivate
d_isCGRestartDueToLargeIncrementdftfe::cgPRPNonLinearSolverprivate
d_isCurvatureOnlyLineSearchStoppingConditiondftfe::cgPRPNonLinearSolverprivate
d_iterdftfe::cgPRPNonLinearSolverprivate
d_lineSearchDampingParameterdftfe::cgPRPNonLinearSolverprivate
d_lineSearchMaxIterationsdftfe::cgPRPNonLinearSolverprivate
d_lineSearchRestartIterChkdftfe::cgPRPNonLinearSolverprivate
d_lineSearchTolerancedftfe::cgPRPNonLinearSolverprivate
d_maxNumberIterationsdftfe::nonLinearSolverprotected
d_maxSolutionIncrementLinfdftfe::cgPRPNonLinearSolverprivate
d_numberUnknownsdftfe::cgPRPNonLinearSolverprivate
d_steepestDirectionOlddftfe::cgPRPNonLinearSolverprivate
d_tolerancedftfe::nonLinearSolverprotected
d_unknownCountFlagdftfe::cgPRPNonLinearSolverprivate
d_useSingleAtomSolutionsInitialGuessdftfe::cgPRPNonLinearSolverprivate
FAILURE enum valuedftfe::nonLinearSolver
getDebugLevel() constdftfe::nonLinearSolverprotected
getMaximumNumberIterations() constdftfe::nonLinearSolverprotected
getTolerance() constdftfe::nonLinearSolverprotected
initializeDirection()dftfe::cgPRPNonLinearSolverprivate
lineSearch(nonlinearSolverProblem &problem, const double tolerance, const unsigned int maxNumberIterations, const unsigned int debugLevel, const std::string checkpointFileName="", const int startingIter=-1, const bool isCheckpointRestart=false)dftfe::cgPRPNonLinearSolverprivate
LINESEARCH_FAILED enum valuedftfe::nonLinearSolver
load(const std::string &checkpointFileName)dftfe::cgPRPNonLinearSolverprivate
MAX_ITER_REACHED enum valuedftfe::nonLinearSolver
mpi_communicatordftfe::cgPRPNonLinearSolverprivate
n_mpi_processesdftfe::cgPRPNonLinearSolverprivate
nonLinearSolver(const unsigned int debugLevel, const unsigned int maxNumberIterations, const double tolerance=0)dftfe::nonLinearSolverprotected
pcoutdftfe::cgPRPNonLinearSolverprivate
RESTART enum valuedftfe::nonLinearSolver
ReturnValueType enum namedftfe::nonLinearSolver
save(const std::string &checkpointFileName)dftfe::cgPRPNonLinearSolvervirtual
solve(nonlinearSolverProblem &problem, const std::string checkpointFileName="", const bool restart=false)dftfe::cgPRPNonLinearSolvervirtual
SUCCESS enum valuedftfe::nonLinearSolver
this_mpi_processdftfe::cgPRPNonLinearSolverprivate
updateDirection()dftfe::cgPRPNonLinearSolverprivate
updateSolution(const double alpha, const std::vector< double > &direction, nonlinearSolverProblem &problem)dftfe::cgPRPNonLinearSolverprivate
~cgPRPNonLinearSolver()dftfe::cgPRPNonLinearSolver
~nonLinearSolver()=0dftfe::nonLinearSolverpure virtual
+ + + + diff --git a/classdftfe_1_1cg_p_r_p_non_linear_solver.html b/classdftfe_1_1cg_p_r_p_non_linear_solver.html new file mode 100644 index 000000000..77015bb3d --- /dev/null +++ b/classdftfe_1_1cg_p_r_p_non_linear_solver.html @@ -0,0 +1,1475 @@ + + + + + + + +DFT-FE: dftfe::cgPRPNonLinearSolver Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::cgPRPNonLinearSolver Class Reference
+
+
+ +

Concrete class implementing Polak-Ribiere-Polyak Conjugate Gradient non-linear algebraic solver. + More...

+ +

#include <cgPRPNonLinearSolver.h>

+
+Inheritance diagram for dftfe::cgPRPNonLinearSolver:
+
+
+ + +dftfe::nonLinearSolver + +
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 cgPRPNonLinearSolver (const unsigned int maxNumberIterations, const unsigned int debugLevel, const MPI_Comm &mpi_comm_parent, const double lineSearchTolerance=1.0e-6, const unsigned int lineSearchMaxIterations=10, const double lineSeachDampingParameter=1.0, const double maxIncrementSolLinf=1e+6, const bool isCurvatureOnlyLineSearchStoppingCondition=false)
 Constructor.
 
 ~cgPRPNonLinearSolver ()
 Destructor.
 
nonLinearSolver::ReturnValueType solve (nonlinearSolverProblem &problem, const std::string checkpointFileName="", const bool restart=false)
 Solve non-linear problem using Polak-Ribiere-Polyak nonlinar conjugate gradient method.
 
void save (const std::string &checkpointFileName)
 Create checkpoint file for current state of the cg solver.
 
- Public Member Functions inherited from dftfe::nonLinearSolver
virtual ~nonLinearSolver ()=0
 Destructor.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

void initializeDirection ()
 Initialize direction.
 
nonLinearSolver::ReturnValueType lineSearch (nonlinearSolverProblem &problem, const double tolerance, const unsigned int maxNumberIterations, const unsigned int debugLevel, const std::string checkpointFileName="", const int startingIter=-1, const bool isCheckpointRestart=false)
 Perform line search.
 
std::pair< double, doublecomputeDeltaD ()
 Compute delta_d and eta_p.
 
double computeEta ()
 Compute eta.
 
void computeDeltas ()
 Compute delta new and delta mid.
 
void updateDirection ()
 Update direction.
 
double computeResidualL2Norm () const
 Compute residual L2-norm.
 
unsigned int computeTotalNumberUnknowns () const
 Compute the total number of unknowns in all processors.
 
bool updateSolution (const double alpha, const std::vector< double > &direction, nonlinearSolverProblem &problem)
 Update solution x -> x + \alpha direction.
 
void load (const std::string &checkpointFileName)
 Load cg solver state from checkpoint file.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::vector< doubled_conjugateDirection
 storage for conjugate direction
 
std::vector< doubled_gradient
 storage for the gradient of the nonlinear problem in the current cg step
 
std::vector< doubled_steepestDirectionOld
 
double d_deltaNew
 intermediate variable for beta computation
 
double d_deltaMid
 intermediate variable for beta computation
 
double d_deltaOld
 intermediate variable for beta computation
 
double d_beta
 
double d_gradMax
 
unsigned int d_numberUnknowns
 storage for number of unknowns to be solved for in the nonlinear problem
 
unsigned int d_iter
 storage for current nonlinear cg iteration count
 
std::vector< unsigned intd_unknownCountFlag
 
const double d_lineSearchTolerance
 line search stopping tolerance
 
const unsigned int d_lineSearchMaxIterations
 maximum number of line search iterations
 
double d_lineSearchDampingParameter
 
bool d_isCGRestartDueToLargeIncrement
 
double d_maxSolutionIncrementLinf
 
double d_alphaChk
 line search data
 
double d_etaPChk
 line search data
 
double d_etaChk
 line search data
 
double d_eta
 line search data
 
double d_etaAlphaZeroChk
 line search data
 
double d_functionValueChk
 line search data
 
double d_functionalValueAfterAlphUpdateChk
 line search data
 
int d_lineSearchRestartIterChk
 line search iter
 
bool d_useSingleAtomSolutionsInitialGuess
 
bool d_isCurvatureOnlyLineSearchStoppingCondition
 
MPI_Comm mpi_communicator
 
const unsigned int n_mpi_processes
 
const unsigned int this_mpi_process
 
dealii::ConditionalOStream pcout
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from dftfe::nonLinearSolver
enum  ReturnValueType {
+  SUCCESS = 0 +, FAILURE +, LINESEARCH_FAILED +, MAX_ITER_REACHED +,
+  RESTART +
+ }
 
- Protected Member Functions inherited from dftfe::nonLinearSolver
 nonLinearSolver (const unsigned int debugLevel, const unsigned int maxNumberIterations, const double tolerance=0)
 Constructor.
 
double getTolerance () const
 Get tolerance.
 
unsigned int getMaximumNumberIterations () const
 Get maximum number of iterations.
 
unsigned int getDebugLevel () const
 Get debug level.
 
- Protected Attributes inherited from dftfe::nonLinearSolver
const unsigned int d_debugLevel
 controls the verbosity of the printing
 
const unsigned int d_maxNumberIterations
 maximum number of nonlinear solve iterations
 
const double d_tolerance
 nonlinear solve stopping tolerance
 
+

Detailed Description

+

Concrete class implementing Polak-Ribiere-Polyak Conjugate Gradient non-linear algebraic solver.

+
Author
Sambit Das
+

Constructor & Destructor Documentation

+ +

◆ cgPRPNonLinearSolver()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::cgPRPNonLinearSolver::cgPRPNonLinearSolver (const unsigned int maxNumberIterations,
const unsigned int debugLevel,
const MPI_Comm & mpi_comm_parent,
const double lineSearchTolerance = 1.0e-6,
const unsigned int lineSearchMaxIterations = 10,
const double lineSeachDampingParameter = 1.0,
const double maxIncrementSolLinf = 1e+6,
const bool isCurvatureOnlyLineSearchStoppingCondition = false )
+
+ +

Constructor.

+
Parameters
+ + + + + + +
maxNumberIterationsMaximum number of iterations.
debugLevelDebug output level: 0 - no debug output 1 - limited debug output 2 - all debug output.
lineSearchToleranceTolereance required for line search convergence.
lineSearchMaxIterationsMaximum number of iterations for the line search.
lineSearchDampingParameterscales the initial line search step
+
+
+ +
+
+ +

◆ ~cgPRPNonLinearSolver()

+ +
+
+ + + + + + + +
dftfe::cgPRPNonLinearSolver::~cgPRPNonLinearSolver ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ computeDeltaD()

+ +
+
+ + + + + +
+ + + + + + + +
std::pair< double, double > dftfe::cgPRPNonLinearSolver::computeDeltaD ()
+
+private
+
+ +

Compute delta_d and eta_p.

+
Returns
Pair containing delta_d and eta_p.
+ +
+
+ +

◆ computeDeltas()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::cgPRPNonLinearSolver::computeDeltas ()
+
+private
+
+ +

Compute delta new and delta mid.

+ +
+
+ +

◆ computeEta()

+ +
+
+ + + + + +
+ + + + + + + +
double dftfe::cgPRPNonLinearSolver::computeEta ()
+
+private
+
+ +

Compute eta.

+
Returns
Value of eta.
+ +
+
+ +

◆ computeResidualL2Norm()

+ +
+
+ + + + + +
+ + + + + + + +
double dftfe::cgPRPNonLinearSolver::computeResidualL2Norm () const
+
+private
+
+ +

Compute residual L2-norm.

+
Returns
Value of the residual L2-norm.
+ +
+
+ +

◆ computeTotalNumberUnknowns()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int dftfe::cgPRPNonLinearSolver::computeTotalNumberUnknowns () const
+
+private
+
+ +

Compute the total number of unknowns in all processors.

+
Returns
Number of unknowns in all processors.
+ +
+
+ +

◆ initializeDirection()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::cgPRPNonLinearSolver::initializeDirection ()
+
+private
+
+ +

Initialize direction.

+ +
+
+ +

◆ lineSearch()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
nonLinearSolver::ReturnValueType dftfe::cgPRPNonLinearSolver::lineSearch (nonlinearSolverProblem & problem,
const double tolerance,
const unsigned int maxNumberIterations,
const unsigned int debugLevel,
const std::string checkpointFileName = "",
const int startingIter = -1,
const bool isCheckpointRestart = false )
+
+private
+
+ +

Perform line search.

+
Parameters
+ + + + + +
problemnonlinearSolverProblem object (functor) to compute energy and forces.
toleranceTolerance (relative) required for convergence.
maxNumberIterationsMaximum number of iterations.
debugLevelDebug output level: 0 - no debug output 1 - limited debug output 2 - all debug output.
+
+
+
Returns
Return value indicating success or failure.
+ +
+
+ +

◆ load()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::cgPRPNonLinearSolver::load (const std::string & checkpointFileName)
+
+private
+
+ +

Load cg solver state from checkpoint file.

+ +
+
+ +

◆ save()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::cgPRPNonLinearSolver::save (const std::string & checkpointFileName)
+
+virtual
+
+ +

Create checkpoint file for current state of the cg solver.

+ +

Implements dftfe::nonLinearSolver.

+ +
+
+ +

◆ solve()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
nonLinearSolver::ReturnValueType dftfe::cgPRPNonLinearSolver::solve (nonlinearSolverProblem & problem,
const std::string checkpointFileName = "",
const bool restart = false )
+
+virtual
+
+ +

Solve non-linear problem using Polak-Ribiere-Polyak nonlinar conjugate gradient method.

+
Parameters
+ + + + +
problem[in]nonlinearSolverProblem object.
checkpointFileName[in]if string is non-empty, creates checkpoint file named checkpointFileName for every nonlinear iteration. If restart is set to true, checkpointFileName must match the name of the checkpoint file. Empty string will throw an error.
restart[in]boolean specifying whether this is a restart solve using the checkpoint file specified by checkpointFileName.
+
+
+
Returns
Return value indicating success or failure.
+ +

Implements dftfe::nonLinearSolver.

+ +
+
+ +

◆ updateDirection()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::cgPRPNonLinearSolver::updateDirection ()
+
+private
+
+ +

Update direction.

+ +
+
+ +

◆ updateSolution()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
bool dftfe::cgPRPNonLinearSolver::updateSolution (const double alpha,
const std::vector< double > & direction,
nonlinearSolverProblem & problem )
+
+private
+
+ +

Update solution x -> x + \alpha direction.

+
Parameters
+ + + + +
alphaScalar value.
directionDirection vector.
problemnonlinearSolverProblem object.
+
+
+
Returns
bool true if valid update and false if increment bound exceeded
+ +
+
+

Member Data Documentation

+ +

◆ d_alphaChk

+ +
+
+ + + + + +
+ + + + +
double dftfe::cgPRPNonLinearSolver::d_alphaChk
+
+private
+
+ +

line search data

+ +
+
+ +

◆ d_beta

+ +
+
+ + + + + +
+ + + + +
double dftfe::cgPRPNonLinearSolver::d_beta
+
+private
+
+

storage for beta- the parameter for updating the conjugate direction d_beta = (d_deltaNew - d_deltaMid)/d_deltaOld

+ +
+
+ +

◆ d_conjugateDirection

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::cgPRPNonLinearSolver::d_conjugateDirection
+
+private
+
+ +

storage for conjugate direction

+ +
+
+ +

◆ d_deltaMid

+ +
+
+ + + + + +
+ + + + +
double dftfe::cgPRPNonLinearSolver::d_deltaMid
+
+private
+
+ +

intermediate variable for beta computation

+ +
+
+ +

◆ d_deltaNew

+ +
+
+ + + + + +
+ + + + +
double dftfe::cgPRPNonLinearSolver::d_deltaNew
+
+private
+
+ +

intermediate variable for beta computation

+ +
+
+ +

◆ d_deltaOld

+ +
+
+ + + + + +
+ + + + +
double dftfe::cgPRPNonLinearSolver::d_deltaOld
+
+private
+
+ +

intermediate variable for beta computation

+ +
+
+ +

◆ d_eta

+ +
+
+ + + + + +
+ + + + +
double dftfe::cgPRPNonLinearSolver::d_eta
+
+private
+
+ +

line search data

+ +
+
+ +

◆ d_etaAlphaZeroChk

+ +
+
+ + + + + +
+ + + + +
double dftfe::cgPRPNonLinearSolver::d_etaAlphaZeroChk
+
+private
+
+ +

line search data

+ +
+
+ +

◆ d_etaChk

+ +
+
+ + + + + +
+ + + + +
double dftfe::cgPRPNonLinearSolver::d_etaChk
+
+private
+
+ +

line search data

+ +
+
+ +

◆ d_etaPChk

+ +
+
+ + + + + +
+ + + + +
double dftfe::cgPRPNonLinearSolver::d_etaPChk
+
+private
+
+ +

line search data

+ +
+
+ +

◆ d_functionalValueAfterAlphUpdateChk

+ +
+
+ + + + + +
+ + + + +
double dftfe::cgPRPNonLinearSolver::d_functionalValueAfterAlphUpdateChk
+
+private
+
+ +

line search data

+ +
+
+ +

◆ d_functionValueChk

+ +
+
+ + + + + +
+ + + + +
double dftfe::cgPRPNonLinearSolver::d_functionValueChk
+
+private
+
+ +

line search data

+ +
+
+ +

◆ d_gradient

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::cgPRPNonLinearSolver::d_gradient
+
+private
+
+ +

storage for the gradient of the nonlinear problem in the current cg step

+ +
+
+ +

◆ d_gradMax

+ +
+
+ + + + + +
+ + + + +
double dftfe::cgPRPNonLinearSolver::d_gradMax
+
+private
+
+ +
+
+ +

◆ d_isCGRestartDueToLargeIncrement

+ +
+
+ + + + + +
+ + + + +
bool dftfe::cgPRPNonLinearSolver::d_isCGRestartDueToLargeIncrement
+
+private
+
+

flag which restarts the CG if large increment to the solution vector happens during line search

+ +
+
+ +

◆ d_isCurvatureOnlyLineSearchStoppingCondition

+ +
+
+ + + + + +
+ + + + +
bool dftfe::cgPRPNonLinearSolver::d_isCurvatureOnlyLineSearchStoppingCondition
+
+private
+
+ +
+
+ +

◆ d_iter

+ +
+
+ + + + + +
+ + + + +
unsigned int dftfe::cgPRPNonLinearSolver::d_iter
+
+private
+
+ +

storage for current nonlinear cg iteration count

+ +
+
+ +

◆ d_lineSearchDampingParameter

+ +
+
+ + + + + +
+ + + + +
double dftfe::cgPRPNonLinearSolver::d_lineSearchDampingParameter
+
+private
+
+

damping parameter (0,1] to be multiplied with the steepest descent direction, which controls the initial guess to the line search iteration.

+ +
+
+ +

◆ d_lineSearchMaxIterations

+ +
+
+ + + + + +
+ + + + +
const unsigned int dftfe::cgPRPNonLinearSolver::d_lineSearchMaxIterations
+
+private
+
+ +

maximum number of line search iterations

+ +
+
+ +

◆ d_lineSearchRestartIterChk

+ +
+
+ + + + + +
+ + + + +
int dftfe::cgPRPNonLinearSolver::d_lineSearchRestartIterChk
+
+private
+
+ +

line search iter

+ +
+
+ +

◆ d_lineSearchTolerance

+ +
+
+ + + + + +
+ + + + +
const double dftfe::cgPRPNonLinearSolver::d_lineSearchTolerance
+
+private
+
+ +

line search stopping tolerance

+ +
+
+ +

◆ d_maxSolutionIncrementLinf

+ +
+
+ + + + + +
+ + + + +
double dftfe::cgPRPNonLinearSolver::d_maxSolutionIncrementLinf
+
+private
+
+

maximum allowed increment (measured as L_{inf}(delta x)) in solution vector beyond which CG is restarted

+ +
+
+ +

◆ d_numberUnknowns

+ +
+
+ + + + + +
+ + + + +
unsigned int dftfe::cgPRPNonLinearSolver::d_numberUnknowns
+
+private
+
+ +

storage for number of unknowns to be solved for in the nonlinear problem

+ +
+
+ +

◆ d_steepestDirectionOld

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::cgPRPNonLinearSolver::d_steepestDirectionOld
+
+private
+
+

storage for the steepest descent direction of the nonlinear problem in the previous cg step

+ +
+
+ +

◆ d_unknownCountFlag

+ +
+
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::cgPRPNonLinearSolver::d_unknownCountFlag
+
+private
+
+

Storage for vector of flags (0 or 1) with size equal to the size of the solution vector of the nonlinear problem. If the flag value is 1 for an index in the vector, the corresponding entry in the solution vector is allowed to be updated and vice-versa if flag value is 0 for an index.

+ +
+
+ +

◆ d_useSingleAtomSolutionsInitialGuess

+ +
+
+ + + + + +
+ + + + +
bool dftfe::cgPRPNonLinearSolver::d_useSingleAtomSolutionsInitialGuess
+
+private
+
+ +
+
+ +

◆ mpi_communicator

+ +
+
+ + + + + +
+ + + + +
MPI_Comm dftfe::cgPRPNonLinearSolver::mpi_communicator
+
+private
+
+ +
+
+ +

◆ n_mpi_processes

+ +
+
+ + + + + +
+ + + + +
const unsigned int dftfe::cgPRPNonLinearSolver::n_mpi_processes
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::cgPRPNonLinearSolver::pcout
+
+private
+
+ +
+
+ +

◆ this_mpi_process

+ +
+
+ + + + + +
+ + + + +
const unsigned int dftfe::cgPRPNonLinearSolver::this_mpi_process
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1cg_p_r_p_non_linear_solver.png b/classdftfe_1_1cg_p_r_p_non_linear_solver.png new file mode 100644 index 0000000000000000000000000000000000000000..496980f4e08e659f2e14b52809935b6981883e83 GIT binary patch literal 734 zcmeAS@N?(olHy`uVBq!ia0vp^8-X~0gBeIBzE8OTq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SR%c<=xyZhAIs2~du+B*-tA0mugfbEer>7#Nr`JzX3_Dj46+eYk100#D2I z(q)_9|39)lN~9?w^ZiN7!#=n2wn{xno_%D0#I)3zUJ)KeO00&SzqC3$FNJSEk{No7 zU*%_<<+Iw1s(pUW9z_nyN2K4rIC6NmR-?V=o|(IUZJf2~X3*@-ap(G`#ve_t{%w)- z{?S&$rF=>!=iL)p9~{|#I&SCTctUJ0ld_qe6$0=%_@o>jG`b^qaC8U3P(-{?pf{V-y%Py51 z=|7%x;&r2zM|lf>zN(5TZM-vS_A1-2UD`>PwO^^cxKe+&%IE)zS$8jL@2h+E_oMSC z=SRVH-k09L3hqA}>^i9~Ha?|Q + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::chebyshevOrthogonalizedSubspaceIterationSolver Member List
+
+
+ +

This is the complete list of members for dftfe::chebyshevOrthogonalizedSubspaceIterationSolver, including all inherited members.

+ + + + + + + + + + + + + + + + +
chebyshevOrthogonalizedSubspaceIterationSolver(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, double lowerBoundWantedSpectrum, double lowerBoundUnWantedSpectrum, double upperBoundUnWantedSpectrum, const dftParameters &dftParams)dftfe::chebyshevOrthogonalizedSubspaceIterationSolver
computing_timerdftfe::chebyshevOrthogonalizedSubspaceIterationSolverprivate
d_dftParamsdftfe::chebyshevOrthogonalizedSubspaceIterationSolverprivate
d_lowerBoundUnWantedSpectrumdftfe::chebyshevOrthogonalizedSubspaceIterationSolverprivate
d_lowerBoundWantedSpectrumdftfe::chebyshevOrthogonalizedSubspaceIterationSolverprivate
d_mpiCommParentdftfe::chebyshevOrthogonalizedSubspaceIterationSolverprivate
d_upperBoundUnWantedSpectrumdftfe::chebyshevOrthogonalizedSubspaceIterationSolverprivate
eigenSolverClass()dftfe::eigenSolverClassprotected
pcoutdftfe::chebyshevOrthogonalizedSubspaceIterationSolverprivate
reinitSpectrumBounds(double lowerBoundWantedSpectrum, double lowerBoundUnWantedSpectrum, double upperBoundUnWantedSpectrum)dftfe::chebyshevOrthogonalizedSubspaceIterationSolver
ReturnValueType enum namedftfe::eigenSolverClass
solve(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, elpaScalaManager &elpaScala, dataTypes::number *eigenVectorsFlattened, dataTypes::number *eigenVectorsRotFracDensityFlattened, const unsigned int totalNumberWaveFunctions, const unsigned int localVectorSize, std::vector< double > &eigenValues, std::vector< double > &residuals, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, const bool computeResidual, const bool useMixedPrec=false, const bool isFirstScf=false)dftfe::chebyshevOrthogonalizedSubspaceIterationSolver
solve(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, std::vector< distributedCPUVec< double > > &eigenVectors, std::vector< double > &eigenValues, std::vector< double > &residuals)dftfe::chebyshevOrthogonalizedSubspaceIterationSolvervirtual
~chebyshevOrthogonalizedSubspaceIterationSolver()dftfe::chebyshevOrthogonalizedSubspaceIterationSolver
~eigenSolverClass()=0dftfe::eigenSolverClasspure virtual
+ + + + diff --git a/classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html b/classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html new file mode 100644 index 000000000..acb9c1aa0 --- /dev/null +++ b/classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html @@ -0,0 +1,542 @@ + + + + + + + +DFT-FE: dftfe::chebyshevOrthogonalizedSubspaceIterationSolver Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::chebyshevOrthogonalizedSubspaceIterationSolver Class Reference
+
+
+ +

Concrete class implementing Chebyshev filtered orthogonalized subspace iteration solver. + More...

+ +

#include <chebyshevOrthogonalizedSubspaceIterationSolver.h>

+
+Inheritance diagram for dftfe::chebyshevOrthogonalizedSubspaceIterationSolver:
+
+
+ + +dftfe::eigenSolverClass + +
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 chebyshevOrthogonalizedSubspaceIterationSolver (const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, double lowerBoundWantedSpectrum, double lowerBoundUnWantedSpectrum, double upperBoundUnWantedSpectrum, const dftParameters &dftParams)
 Constructor.
 
 ~chebyshevOrthogonalizedSubspaceIterationSolver ()
 Destructor.
 
void solve (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, elpaScalaManager &elpaScala, dataTypes::number *eigenVectorsFlattened, dataTypes::number *eigenVectorsRotFracDensityFlattened, const unsigned int totalNumberWaveFunctions, const unsigned int localVectorSize, std::vector< double > &eigenValues, std::vector< double > &residuals, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, const bool computeResidual, const bool useMixedPrec=false, const bool isFirstScf=false)
 Solve a generalized eigen problem.
 
void solve (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, std::vector< distributedCPUVec< double > > &eigenVectors, std::vector< double > &eigenValues, std::vector< double > &residuals)
 Solve a generalized eigen problem.
 
void reinitSpectrumBounds (double lowerBoundWantedSpectrum, double lowerBoundUnWantedSpectrum, double upperBoundUnWantedSpectrum)
 reinit spectrum bounds
 
- Public Member Functions inherited from dftfe::eigenSolverClass
virtual ~eigenSolverClass ()=0
 Destructor.
 
+ + + + + + + + + + + + + + + +

+Private Attributes

const MPI_Comm d_mpiCommParent
 
double d_lowerBoundWantedSpectrum
 
double d_lowerBoundUnWantedSpectrum
 
double d_upperBoundUnWantedSpectrum
 
const dftParametersd_dftParams
 
dealii::ConditionalOStream pcout
 
dealii::TimerOutput computing_timer
 
+ + + + + + + + +

+Additional Inherited Members

- Public Types inherited from dftfe::eigenSolverClass
enum class  ReturnValueType { SUCCESS = 0 +, FAILURE +, MAX_ITER_REACHED + }
 
- Protected Member Functions inherited from dftfe::eigenSolverClass
 eigenSolverClass ()
 Constructor.
 
+

Detailed Description

+

Concrete class implementing Chebyshev filtered orthogonalized subspace iteration solver.

+
Author
Phani Motamarri, Sambit Das
+

Constructor & Destructor Documentation

+ +

◆ chebyshevOrthogonalizedSubspaceIterationSolver()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::chebyshevOrthogonalizedSubspaceIterationSolver (const MPI_Comm & mpi_comm_parent,
const MPI_Comm & mpi_comm_domain,
double lowerBoundWantedSpectrum,
double lowerBoundUnWantedSpectrum,
double upperBoundUnWantedSpectrum,
const dftParameters & dftParams )
+
+ +

Constructor.

+
Parameters
+ + + + + +
mpi_comm_parentparent mpi communicator
mpi_comm_domaindomain decomposition mpi communicator
lowerBoundWantedSpectrumLower Bound of the Wanted Spectrum.
lowerBoundUnWantedSpectrumLower Bound of the UnWanted Spectrum.
+
+
+ +
+
+ +

◆ ~chebyshevOrthogonalizedSubspaceIterationSolver()

+ +
+
+ + + + + + + +
dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::~chebyshevOrthogonalizedSubspaceIterationSolver ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ reinitSpectrumBounds()

+ +
+
+ + + + + + + + + + + + + + + + +
void dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::reinitSpectrumBounds (double lowerBoundWantedSpectrum,
double lowerBoundUnWantedSpectrum,
double upperBoundUnWantedSpectrum )
+
+ +

reinit spectrum bounds

+ +
+
+ +

◆ solve() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::solve (operatorDFTClass< dftfe::utils::MemorySpace::HOST > & operatorMatrix,
elpaScalaManager & elpaScala,
dataTypes::number * eigenVectorsFlattened,
dataTypes::number * eigenVectorsRotFracDensityFlattened,
const unsigned int totalNumberWaveFunctions,
const unsigned int localVectorSize,
std::vector< double > & eigenValues,
std::vector< double > & residuals,
const MPI_Comm & interBandGroupComm,
const MPI_Comm & mpiCommDomain,
const bool computeResidual,
const bool useMixedPrec = false,
const bool isFirstScf = false )
+
+ +

Solve a generalized eigen problem.

+ +
+
+ +

◆ solve() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::solve (operatorDFTClass< dftfe::utils::MemorySpace::HOST > & operatorMatrix,
std::vector< distributedCPUVec< double > > & eigenVectors,
std::vector< double > & eigenValues,
std::vector< double > & residuals )
+
+virtual
+
+ +

Solve a generalized eigen problem.

+ +

Implements dftfe::eigenSolverClass.

+ +
+
+

Member Data Documentation

+ +

◆ computing_timer

+ +
+
+ + + + + +
+ + + + +
dealii::TimerOutput dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::computing_timer
+
+private
+
+ +
+
+ +

◆ d_dftParams

+ +
+
+ + + + + +
+ + + + +
const dftParameters& dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::d_dftParams
+
+private
+
+ +
+
+ +

◆ d_lowerBoundUnWantedSpectrum

+ +
+
+ + + + + +
+ + + + +
double dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::d_lowerBoundUnWantedSpectrum
+
+private
+
+ +
+
+ +

◆ d_lowerBoundWantedSpectrum

+ +
+
+ + + + + +
+ + + + +
double dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::d_lowerBoundWantedSpectrum
+
+private
+
+ +
+
+ +

◆ d_mpiCommParent

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::d_mpiCommParent
+
+private
+
+ +
+
+ +

◆ d_upperBoundUnWantedSpectrum

+ +
+
+ + + + + +
+ + + + +
double dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::d_upperBoundUnWantedSpectrum
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::pcout
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.png b/classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.png new file mode 100644 index 0000000000000000000000000000000000000000..70448afad930589f0ae8c4fe0680af78eceb9d9a GIT binary patch literal 1091 zcmeAS@N?(olHy`uVBq!ia0y~yVDtpC12~w03f*F8(FfeDDeT9L6`JAVVV@L(#+qticK5Ox~ zn$MnjuI|6OU1^Qup$W^j&eDH*(I-qOIr6}!hW#tHUR!c4O25f#5~pXJlJBGxmdr^i z${v$dBpqj|oaC67zDZ}w-*%PiV{5lp{63*Iq@nrmym1^5N>&n+{|MBg@laIEq z`e*MEeH>)${cz3F$EV(`ShhIpI$M0IdqnrWKWqJG-ip6{*4*=-)_KF7KKHJt{C<6F z_kq9fUma?#Tp0G<@@H^}-PtD|2Y!CDC@8ixzp1|Y^`FSqf9KEKviw9@Vs~M_h0B+J zIg>tT-z=Z7f5)!&rDi&dx5>P{dSQwG{q&dnJU@y5JpTJhLg{>FcD38rC!TQm`>?ji zdeYg4cjg}6y!p0n*yXC6`Tq{hdwJXYXY%UVD)P@F-B~=@J|(I7M{9WQV_zRO`I(FQ zN%Kdn;pU$E6j8i?NyXFcL*}MyQIn&x_p&kUv5{w(z;M9zk_rRMhmRAr7#~<=3NbMK z5Sa;N8UdL}9{mggj}63ETX)SC*=EU$NVq_{I2D zTCJ4p{gaUw?JSdvM6QK?%}L4I_uaQ{;=z)4zVqbszM9Ln#h*!@oOib0?P94>V9EI< zce8h|_!<^&y6$+bWm)mBzLSe5E4RKc->`kQ@3PYm<;#`d?6TT_K6v%j&mAWZrrE4E z{Qv8&+_&V(%e5r>k|JEnueoeby>s)#yOK+hbp`YHY+v*HN^|DcqtC=%-n@2w_brV( zabhcL_U%nxtgqX{`MH<3zCJQz%98n?v@GkiXRFk@cAPw|>34gRO6((BU$;Ho zxo^FLIP#+=Px`W79V6=Oe5VC@1$k*+|H04O%vW*ja=bM#yEAyY`njxgN@xNAY|Rhc literal 0 HcmV?d00001 diff --git a/classdftfe_1_1dealii_linear_solver-members.html b/classdftfe_1_1dealii_linear_solver-members.html new file mode 100644 index 000000000..7580be8ed --- /dev/null +++ b/classdftfe_1_1dealii_linear_solver-members.html @@ -0,0 +1,106 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::dealiiLinearSolver Member List
+
+
+ +

This is the complete list of members for dftfe::dealiiLinearSolver, including all inherited members.

+ + + + + + + + + + + + + + + + +
CG enum valuedftfe::dealiiLinearSolver
d_mpiCommParentdftfe::dealiiLinearSolverprivate
d_typedftfe::dealiiLinearSolverprivate
dealiiLinearSolver(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const solverType type)dftfe::dealiiLinearSolver
dvecdftfe::dealiiLinearSolverprivate
GMRES enum valuedftfe::dealiiLinearSolver
gvecdftfe::dealiiLinearSolverprivate
hvecdftfe::dealiiLinearSolverprivate
linearSolver()dftfe::linearSolver
mpi_communicatordftfe::dealiiLinearSolverprivate
n_mpi_processesdftfe::dealiiLinearSolverprivate
pcoutdftfe::dealiiLinearSolverprivate
solve(dealiiLinearSolverProblem &problem, const double absTolerance, const unsigned int maxNumberIterations, const int debugLevel=0, bool distributeFlag=true)dftfe::dealiiLinearSolvervirtual
solverType enum namedftfe::dealiiLinearSolver
this_mpi_processdftfe::dealiiLinearSolverprivate
+ + + + diff --git a/classdftfe_1_1dealii_linear_solver.html b/classdftfe_1_1dealii_linear_solver.html new file mode 100644 index 000000000..7304c1f9c --- /dev/null +++ b/classdftfe_1_1dealii_linear_solver.html @@ -0,0 +1,474 @@ + + + + + + + +DFT-FE: dftfe::dealiiLinearSolver Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::dealiiLinearSolver Class Reference
+
+
+ +

dealii linear solver class wrapper + More...

+ +

#include <dealiiLinearSolver.h>

+
+Inheritance diagram for dftfe::dealiiLinearSolver:
+
+
+ + +dftfe::linearSolver + +
+ + + + +

+Public Types

enum  solverType { CG = 0 +, GMRES + }
 
+ + + + + + + + + + + +

+Public Member Functions

 dealiiLinearSolver (const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const solverType type)
 Constructor.
 
void solve (dealiiLinearSolverProblem &problem, const double absTolerance, const unsigned int maxNumberIterations, const int debugLevel=0, bool distributeFlag=true)
 Solve linear system, A*x=Rhs.
 
- Public Member Functions inherited from dftfe::linearSolver
 linearSolver ()
 Constructor.
 
+ + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

const solverType d_type
 enum denoting the choice of the dealii solver
 
distributedCPUVec< doublegvec
 define some temporary vectors
 
distributedCPUVec< doubledvec
 
distributedCPUVec< doublehvec
 
const MPI_Comm d_mpiCommParent
 
const MPI_Comm mpi_communicator
 
const unsigned int n_mpi_processes
 
const unsigned int this_mpi_process
 
dealii::ConditionalOStream pcout
 
+

Detailed Description

+

dealii linear solver class wrapper

+
Author
Sambit Das
+

Member Enumeration Documentation

+ +

◆ solverType

+ +
+
+ + + +
Enumerator
CG 
GMRES 
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ dealiiLinearSolver()

+ +
+
+ + + + + + + + + + + + + + + + +
dftfe::dealiiLinearSolver::dealiiLinearSolver (const MPI_Comm & mpi_comm_parent,
const MPI_Comm & mpi_comm_domain,
const solverType type )
+
+ +

Constructor.

+
Parameters
+ + + + +
mpi_comm_parentparent mpi communicato
mpi_comm_domaindomain mpi communicator
typeenum specifying the choice of the dealii linear solver
+
+
+ +
+
+

Member Function Documentation

+ +

◆ solve()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dealiiLinearSolver::solve (dealiiLinearSolverProblem & problem,
const double absTolerance,
const unsigned int maxNumberIterations,
const int debugLevel = 0,
bool distributeFlag = true )
+
+virtual
+
+ +

Solve linear system, A*x=Rhs.

+
Parameters
+ + + + + +
problemlinearSolverProblem object (functor) to compute Rhs and A*x, and preconditioning
relToleranceTolerance (relative) required for convergence.
maxNumberIterationsMaximum number of iterations.
debugLevelDebug output level: 0 - no debug output 1 - limited debug output 2 - all debug output.
+
+
+ +

Implements dftfe::linearSolver.

+ +
+
+

Member Data Documentation

+ +

◆ d_mpiCommParent

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm dftfe::dealiiLinearSolver::d_mpiCommParent
+
+private
+
+ +
+
+ +

◆ d_type

+ +
+
+ + + + + +
+ + + + +
const solverType dftfe::dealiiLinearSolver::d_type
+
+private
+
+ +

enum denoting the choice of the dealii solver

+ +
+
+ +

◆ dvec

+ +
+
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dealiiLinearSolver::dvec
+
+private
+
+ +
+
+ +

◆ gvec

+ +
+
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dealiiLinearSolver::gvec
+
+private
+
+ +

define some temporary vectors

+ +
+
+ +

◆ hvec

+ +
+
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dealiiLinearSolver::hvec
+
+private
+
+ +
+
+ +

◆ mpi_communicator

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm dftfe::dealiiLinearSolver::mpi_communicator
+
+private
+
+ +
+
+ +

◆ n_mpi_processes

+ +
+
+ + + + + +
+ + + + +
const unsigned int dftfe::dealiiLinearSolver::n_mpi_processes
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::dealiiLinearSolver::pcout
+
+private
+
+ +
+
+ +

◆ this_mpi_process

+ +
+
+ + + + + +
+ + + + +
const unsigned int dftfe::dealiiLinearSolver::this_mpi_process
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1dealii_linear_solver.png b/classdftfe_1_1dealii_linear_solver.png new file mode 100644 index 0000000000000000000000000000000000000000..63f9a6300cb62796429fda8d7bc3b69dce028844 GIT binary patch literal 665 zcmeAS@N?(olHy`uVBq!ia0vp^lYlsYgBeI3ZM_4cqyv0HT>t<74`jZ0^R=}9&~gg{ z%>s$(XI?yb@Bk=odNyncP>!=C$S;@y$Oi*+rrB2*7?@N%T^vIy7~jslIBAUnkIU?B zS*!m4?_O`A)w$qf-dpCaQ)R0P6c2fN%m~*xz3Ggqj*8`Ep-vTLRUuEeDmSgrr!PFV zZTnX(shAlZ`TviX%1*Uvkmuy2j4P{F0XEY@I6Zzw}jRZ>*bL zwu$-OwVR=J>?_aL%>QG?;9m9JBk<6Fh3W73^&GO|?RzfODb8GdQncTBlW6(7_p2`4 z;Y>d|@rlFFW~WILVb1kZnbfmIN%!<7A614Qvb78edS~0e{Pa0)B7e!tMEY`zM`R&` zfc8WNg&-wHhb1md4IZ5=3=@So8I)9o7+kzm7&@kSFbHTOE2x)RIVI?sP?yTtB`%Ye zcyy|GPLv6%)p`0t<>X4~DE4z^CKIki=`L$Onm5sG&TMfvkNk)pU*j53uvmTCE3+>z zQvUmk+UftKz67pXZ{EE5ww-R&x!UX}6IONhUn;#^SJiTb?ane?@jJWcUS!Qod3Nbc zujt8b{~r83RJ~;WgmvuZ4x4^f^lUfQos=uClK$MLSo&t|J%!lGm#2qK%#ohf&U;|u zJ=;sF4qBDxE%3NxtvX4? p)l0>*Yl_DtkxW;urBhaZ;ZJ#AVOF5rS`JJ^44$rjF6*2UngA^=C_n%J literal 0 HcmV?d00001 diff --git a/classdftfe_1_1dealii_linear_solver_problem-members.html b/classdftfe_1_1dealii_linear_solver_problem-members.html new file mode 100644 index 000000000..56789f49a --- /dev/null +++ b/classdftfe_1_1dealii_linear_solver_problem-members.html @@ -0,0 +1,101 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::dealiiLinearSolverProblem Member List
+
+
+ +

This is the complete list of members for dftfe::dealiiLinearSolverProblem, including all inherited members.

+ + + + + + + + + + + +
computeRhs(distributedCPUVec< double > &rhs)=0dftfe::dealiiLinearSolverProblempure virtual
dealiiLinearSolverProblem()dftfe::dealiiLinearSolverProblem
distributeX()=0dftfe::dealiiLinearSolverProblempure virtual
getX()=0dftfe::dealiiLinearSolverProblempure virtual
operator!=(double val) const =0dftfe::dealiiLinearSolverProblempure virtual
precondition_Jacobi(distributedCPUVec< double > &dst, const distributedCPUVec< double > &src, const double omega) const =0dftfe::dealiiLinearSolverProblempure virtual
size_type typedefdftfe::dealiiLinearSolverProblem
subscribe(std::atomic< bool > *const validity, const std::string &identifier="") const =0dftfe::dealiiLinearSolverProblempure virtual
unsubscribe(std::atomic< bool > *const validity, const std::string &identifier="") const =0dftfe::dealiiLinearSolverProblempure virtual
vmult(distributedCPUVec< double > &Ax, distributedCPUVec< double > &x)=0dftfe::dealiiLinearSolverProblempure virtual
+ + + + diff --git a/classdftfe_1_1dealii_linear_solver_problem.html b/classdftfe_1_1dealii_linear_solver_problem.html new file mode 100644 index 000000000..75809588c --- /dev/null +++ b/classdftfe_1_1dealii_linear_solver_problem.html @@ -0,0 +1,444 @@ + + + + + + + +DFT-FE: dftfe::dealiiLinearSolverProblem Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::dealiiLinearSolverProblem Class Referenceabstract
+
+
+ +

Abstract class for linear solve problems to be used with the dealiiLinearSolver interface. + More...

+ +

#include <dealiiLinearSolverProblem.h>

+
+Inheritance diagram for dftfe::dealiiLinearSolverProblem:
+
+
+ + +dftfe::kerkerSolverProblem< FEOrderElectro > +dftfe::poissonSolverProblem< FEOrder, FEOrderElectro > + +
+ + + + + +

+Public Types

typedef dealii::types::global_dof_index size_type
 typedef declaration needed by dealii
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 dealiiLinearSolverProblem ()
 Constructor.
 
virtual distributedCPUVec< double > & getX ()=0
 get the reference to x field
 
virtual void vmult (distributedCPUVec< double > &Ax, distributedCPUVec< double > &x)=0
 Compute A matrix multipled by x.
 
virtual void computeRhs (distributedCPUVec< double > &rhs)=0
 Compute right hand side vector for the problem Ax = rhs.
 
virtual void precondition_Jacobi (distributedCPUVec< double > &dst, const distributedCPUVec< double > &src, const double omega) const =0
 Jacobi preconditioning function.
 
virtual void distributeX ()=0
 distribute x to the constrained nodes.
 
virtual void subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const =0
 
virtual void unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const =0
 
virtual bool operator!= (double val) const =0
 function needed by dealii to mimic SparseMatrix
 
+

Detailed Description

+

Abstract class for linear solve problems to be used with the dealiiLinearSolver interface.

+
Author
Sambit Das
+

Member Typedef Documentation

+ +

◆ size_type

+ +
+
+ + + + +
typedef dealii::types::global_dof_index dftfe::dealiiLinearSolverProblem::size_type
+
+ +

typedef declaration needed by dealii

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ dealiiLinearSolverProblem()

+ +
+
+ + + + + + + +
dftfe::dealiiLinearSolverProblem::dealiiLinearSolverProblem ()
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ computeRhs()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::dealiiLinearSolverProblem::computeRhs (distributedCPUVec< double > & rhs)
+
+pure virtual
+
+ +

Compute right hand side vector for the problem Ax = rhs.

+
Parameters
+ + +
rhsvector for the right hand side values
+
+
+ +

Implemented in dftfe::kerkerSolverProblem< FEOrderElectro >, and dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >.

+ +
+
+ +

◆ distributeX()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::dealiiLinearSolverProblem::distributeX ()
+
+pure virtual
+
+ +

distribute x to the constrained nodes.

+ +

Implemented in dftfe::kerkerSolverProblem< FEOrderElectro >, and dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >.

+ +
+
+ +

◆ getX()

+ +
+
+ + + + + +
+ + + + + + + +
virtual distributedCPUVec< double > & dftfe::dealiiLinearSolverProblem::getX ()
+
+pure virtual
+
+ +

get the reference to x field

+
Returns
reference to x field. Assumes x field data structure is already initialized
+ +

Implemented in dftfe::kerkerSolverProblem< FEOrderElectro >, and dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >.

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool dftfe::dealiiLinearSolverProblem::operator!= (double val) const
+
+pure virtual
+
+ +

function needed by dealii to mimic SparseMatrix

+ +

Implemented in dftfe::kerkerSolverProblem< FEOrderElectro >, and dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >.

+ +
+
+ +

◆ precondition_Jacobi()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
virtual void dftfe::dealiiLinearSolverProblem::precondition_Jacobi (distributedCPUVec< double > & dst,
const distributedCPUVec< double > & src,
const double omega ) const
+
+pure virtual
+
+ +

Jacobi preconditioning function.

+ +

Implemented in dftfe::kerkerSolverProblem< FEOrderElectro >, and dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >.

+ +
+
+ +

◆ subscribe()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
virtual void dftfe::dealiiLinearSolverProblem::subscribe (std::atomic< bool > *const validity,
const std::string & identifier = "" ) const
+
+pure virtual
+
+

function needed by dealii to mimic SparseMatrix for Jacobi preconditioning

+ +

Implemented in dftfe::kerkerSolverProblem< FEOrderElectro >, and dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >.

+ +
+
+ +

◆ unsubscribe()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
virtual void dftfe::dealiiLinearSolverProblem::unsubscribe (std::atomic< bool > *const validity,
const std::string & identifier = "" ) const
+
+pure virtual
+
+

function needed by dealii to mimic SparseMatrix for Jacobi preconditioning

+ +

Implemented in dftfe::kerkerSolverProblem< FEOrderElectro >, and dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >.

+ +
+
+ +

◆ vmult()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
virtual void dftfe::dealiiLinearSolverProblem::vmult (distributedCPUVec< double > & Ax,
distributedCPUVec< double > & x )
+
+pure virtual
+
+ +

Compute A matrix multipled by x.

+ +

Implemented in dftfe::kerkerSolverProblem< FEOrderElectro >, and dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1dealii_linear_solver_problem.png b/classdftfe_1_1dealii_linear_solver_problem.png new file mode 100644 index 0000000000000000000000000000000000000000..182d74c38ed9a3dac197e064af05aad1aed61b99 GIT binary patch literal 1582 zcmchXdoW3%o8ROT;ta=SXvxU@++sz9#x!Q#n*B{@`*Zta|Je7B_xpL?_xV2OJnwnV8-LvS zh^D%MIsgEg1P4130H{C+A76z=cG$bg50MSWolYKBC=>`ze2|6TX(+TZGYQdWwNDHW z4JR7TIaMj(r8Onq&xe` z&1i4~>lwCQfkBHty7l!{&^BCD8OSTWE z0O_8Ibl-B!6&8(EQ8&55%=8^%v0Fj5AGv3N$xQYj$EB?KBcj+x_A;8W-~~@wYJz-z zw?Elw)L$dSWs%!AkSs_%uTzuLl0ln_ul4d=>@Aen4n#K z7hRFW{0mlA^njVnj{go$-R2pz%z|t{9|%L60jk3W9%KL=Vi<&@Yfu2wYdnk@(EGN{ zQyCRsRYt6aE*1SajWZx>P5q4$2(cXcV)^MAHV*Y%TcleLc&!Rhny)L<^%}(gq<{X6 z4^R6B@nKLKP|e+ztV7w@p_hyQKh?bzm!D?ZfXz=Uz9Kzpl7Hdu))ohnO(1%N+1&Oa7~PuU9sQs)s&>Ut^nGeVFK#cP z%LD|EjoeFn(NU-XO=2jhLD7850#UlLB2cJygzaHUs1Ff>Wwt~`Q{NC;iGm#fy> zlmNkgOHbFyUz7$FFm_^zduGd;74~gaEeWpu$Yk5#W~7~E<5BYRHD%{AXTv`oh?IJn zCM+1g#~O%Z^t>&j-R`uBWFuTh30mW071T+ShL)~Wwx?j;_@7E{qEa&Gkgc?@jP~H> zzH1+9tcl>Jfy@AR)!r2--1J?_li)W2OTRP1H{DCCOOVv<60jpL58En!h}dAX5HCQNqZbj_nX zgFs_8KDG#%vQDZJg9COF>{CxSh#g6nkg-c@{C5~7!fB*ECi$;ZoW6nrRVwtKf3=Gv QKz??BaM;ml->m5vMgRZ+ literal 0 HcmV?d00001 diff --git a/classdftfe_1_1dft_base-members.html b/classdftfe_1_1dft_base-members.html new file mode 100644 index 000000000..99dd38c75 --- /dev/null +++ b/classdftfe_1_1dft_base-members.html @@ -0,0 +1,121 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::dftBase Member List
+
+
+ +

This is the complete list of members for dftfe::dftBase, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeStress()=0dftfe::dftBasepure virtual
deformDomain(const dealii::Tensor< 2, 3, double > &deformationGradient, const bool vselfPerturbationUpdateForStress=false, const bool useSingleAtomSolutionsInitialGuess=false, const bool print=true)=0dftfe::dftBasepure virtual
getAtomLocationsCart() const =0dftfe::dftBasepure virtual
getAtomLocationsFrac() const =0dftfe::dftBasepure virtual
getAtomTypes() const =0dftfe::dftBasepure virtual
getCell() const =0dftfe::dftBasepure virtual
getCellStress() const =0dftfe::dftBasepure virtual
getCellVolume() const =0dftfe::dftBasepure virtual
getEntropicEnergy() const =0dftfe::dftBasepure virtual
getForceonAtoms() const =0dftfe::dftBasepure virtual
getFreeEnergy() const =0dftfe::dftBasepure virtual
getInternalEnergy() const =0dftfe::dftBasepure virtual
getParametersObject() const =0dftfe::dftBasepure virtual
getRhoNodalOut() const =0dftfe::dftBasepure virtual
getRhoNodalSplitOut() const =0dftfe::dftBasepure virtual
getTotalChargeforRhoSplit()=0dftfe::dftBasepure virtual
init()=0dftfe::dftBasepure virtual
resetRhoNodalIn(distributedCPUVec< double > &OutDensity)=0dftfe::dftBasepure virtual
resetRhoNodalSplitIn(distributedCPUVec< double > &OutDensity)=0dftfe::dftBasepure virtual
run()=0dftfe::dftBasepure virtual
set()=0dftfe::dftBasepure virtual
solve(const bool computeForces=true, const bool computeStress=true, const bool isRestartGroundStateCalcFromChk=false)=0dftfe::dftBasepure virtual
trivialSolveForStress()=0dftfe::dftBasepure virtual
updateAtomPositionsAndMoveMesh(const std::vector< dealii::Tensor< 1, 3, double > > &globalAtomsDisplacements, const double maxJacobianRatioFactor=1.25, const bool useSingleAtomSolutionsOverride=false)=0dftfe::dftBasepure virtual
writeDomainAndAtomCoordinates()=0dftfe::dftBasepure virtual
writeDomainAndAtomCoordinates(const std::string Path) const =0dftfe::dftBasepure virtual
writeGSElectronDensity(const std::string Path) const =0dftfe::dftBasepure virtual
writeMesh()=0dftfe::dftBasepure virtual
writeStructureEnergyForcesDataPostProcess(const std::string Path) const =0dftfe::dftBasepure virtual
~dftBase()dftfe::dftBaseinlinevirtual
+ + + + diff --git a/classdftfe_1_1dft_base.html b/classdftfe_1_1dft_base.html new file mode 100644 index 000000000..b8cc362e9 --- /dev/null +++ b/classdftfe_1_1dft_base.html @@ -0,0 +1,1078 @@ + + + + + + + +DFT-FE: dftfe::dftBase Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::dftBase Class Referenceabstract
+
+
+ +

abstract base class for dft + More...

+ +

#include <dftBase.h>

+
+Inheritance diagram for dftfe::dftBase:
+
+
+ + +dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~dftBase ()
 This is required to correctly delete the derived class object through the base class ptr.
 
virtual void set ()=0
 
virtual void init ()=0
 
virtual void run ()=0
 
virtual void writeMesh ()=0
 
virtual void updateAtomPositionsAndMoveMesh (const std::vector< dealii::Tensor< 1, 3, double > > &globalAtomsDisplacements, const double maxJacobianRatioFactor=1.25, const bool useSingleAtomSolutionsOverride=false)=0
 
virtual void deformDomain (const dealii::Tensor< 2, 3, double > &deformationGradient, const bool vselfPerturbationUpdateForStress=false, const bool useSingleAtomSolutionsInitialGuess=false, const bool print=true)=0
 Deforms the domain by the given deformation gradient and reinitializes the dftClass datastructures.
 
virtual std::tuple< bool, doublesolve (const bool computeForces=true, const bool computeStress=true, const bool isRestartGroundStateCalcFromChk=false)=0
 
virtual void computeStress ()=0
 
virtual void trivialSolveForStress ()=0
 
virtual double getInternalEnergy () const =0
 
virtual double getEntropicEnergy () const =0
 
virtual double getFreeEnergy () const =0
 
virtual distributedCPUVec< doublegetRhoNodalOut () const =0
 
virtual distributedCPUVec< doublegetRhoNodalSplitOut () const =0
 
virtual double getTotalChargeforRhoSplit ()=0
 
virtual void resetRhoNodalIn (distributedCPUVec< double > &OutDensity)=0
 
virtual void resetRhoNodalSplitIn (distributedCPUVec< double > &OutDensity)=0
 
virtual std::vector< std::vector< double > > getAtomLocationsCart () const =0
 Gets the current atom Locations in cartesian form (origin at center of domain) from dftClass.
 
virtual std::vector< std::vector< double > > getAtomLocationsFrac () const =0
 Gets the current atom Locations in fractional form from dftClass (only applicable for periodic and semi-periodic BCs)
 
virtual std::vector< std::vector< double > > getCell () const =0
 Gets the current cell lattice vectors.
 
virtual double getCellVolume () const =0
 Gets the current cell volume.
 
virtual std::set< unsigned intgetAtomTypes () const =0
 Gets the current atom types from dftClass.
 
virtual std::vector< doublegetForceonAtoms () const =0
 Gets the current atomic forces (configurational forces) from dftClass.
 
virtual dealii::Tensor< 2, 3, doublegetCellStress () const =0
 Gets the current cell stress from dftClass.
 
virtual dftParametersgetParametersObject () const =0
 Get reference to dftParameters object.
 
virtual void writeDomainAndAtomCoordinates ()=0
 writes the current domain bounding vectors and atom coordinates to files, which are required for geometry relaxation restart
 
virtual void writeDomainAndAtomCoordinates (const std::string Path) const =0
 writes the current domain bounding vectors and atom coordinates to files for structural optimization and dynamics restarts. The coordinates are stored as: 1. fractional for semi-periodic/periodic 2. Cartesian for non-periodic.
 
virtual void writeStructureEnergyForcesDataPostProcess (const std::string Path) const =0
 writes atomistics data for subsequent post-processing. Related to WRITE STRUCTURE ENERGY FORCES DATA POST PROCESS input parameter.
 
virtual void writeGSElectronDensity (const std::string Path) const =0
 writes quadrature grid information and associated spin-up and spin-down electron-density for post-processing
 
+

Detailed Description

+

abstract base class for dft

+
Author
Sambit Das
+

Constructor & Destructor Documentation

+ +

◆ ~dftBase()

+ +
+
+ + + + + +
+ + + + + + + +
virtual dftfe::dftBase::~dftBase ()
+
+inlinevirtual
+
+ +

This is required to correctly delete the derived class object through the base class ptr.

+ +
+
+

Member Function Documentation

+ +

◆ computeStress()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::dftBase::computeStress ()
+
+pure virtual
+
+
+ +

◆ deformDomain()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
virtual void dftfe::dftBase::deformDomain (const dealii::Tensor< 2, 3, double > & deformationGradient,
const bool vselfPerturbationUpdateForStress = false,
const bool useSingleAtomSolutionsInitialGuess = false,
const bool print = true )
+
+pure virtual
+
+ +

Deforms the domain by the given deformation gradient and reinitializes the dftClass datastructures.

+ +

Implemented in dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >.

+ +
+
+ +

◆ getAtomLocationsCart()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::vector< std::vector< double > > dftfe::dftBase::getAtomLocationsCart () const
+
+pure virtual
+
+ +

Gets the current atom Locations in cartesian form (origin at center of domain) from dftClass.

+ +

Implemented in dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >.

+ +
+
+ +

◆ getAtomLocationsFrac()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::vector< std::vector< double > > dftfe::dftBase::getAtomLocationsFrac () const
+
+pure virtual
+
+ +

Gets the current atom Locations in fractional form from dftClass (only applicable for periodic and semi-periodic BCs)

+ +

Implemented in dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >.

+ +
+
+ +

◆ getAtomTypes()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::set< unsigned int > dftfe::dftBase::getAtomTypes () const
+
+pure virtual
+
+ +

Gets the current atom types from dftClass.

+ +

Implemented in dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >.

+ +
+
+ +

◆ getCell()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::vector< std::vector< double > > dftfe::dftBase::getCell () const
+
+pure virtual
+
+ +

Gets the current cell lattice vectors.

+
Returns
std::vector<std::vector<double>> 3 \times 3 matrix,lattice[i][j] corresponds to jth component of ith lattice vector
+ +

Implemented in dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >.

+ +
+
+ +

◆ getCellStress()

+ +
+
+ + + + + +
+ + + + + + + +
virtual dealii::Tensor< 2, 3, double > dftfe::dftBase::getCellStress () const
+
+pure virtual
+
+ +

Gets the current cell stress from dftClass.

+ +

Implemented in dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >.

+ +
+
+ +

◆ getCellVolume()

+ +
+
+ + + + + +
+ + + + + + + +
virtual double dftfe::dftBase::getCellVolume () const
+
+pure virtual
+
+ +

Gets the current cell volume.

+ +

Implemented in dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >.

+ +
+
+ +

◆ getEntropicEnergy()

+ +
+
+ + + + + +
+ + + + + + + +
virtual double dftfe::dftBase::getEntropicEnergy () const
+
+pure virtual
+
+
+ +

◆ getForceonAtoms()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::vector< double > dftfe::dftBase::getForceonAtoms () const
+
+pure virtual
+
+ +

Gets the current atomic forces (configurational forces) from dftClass.

+ +

Implemented in dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >.

+ +
+
+ +

◆ getFreeEnergy()

+ +
+
+ + + + + +
+ + + + + + + +
virtual double dftfe::dftBase::getFreeEnergy () const
+
+pure virtual
+
+
+ +

◆ getInternalEnergy()

+ +
+
+ + + + + +
+ + + + + + + +
virtual double dftfe::dftBase::getInternalEnergy () const
+
+pure virtual
+
+
+ +

◆ getParametersObject()

+ +
+
+ + + + + +
+ + + + + + + +
virtual dftParameters & dftfe::dftBase::getParametersObject () const
+
+pure virtual
+
+ +

Get reference to dftParameters object.

+ +

Implemented in dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >.

+ +
+
+ +

◆ getRhoNodalOut()

+ +
+
+ + + + + +
+ + + + + + + +
virtual distributedCPUVec< double > dftfe::dftBase::getRhoNodalOut () const
+
+pure virtual
+
+
+ +

◆ getRhoNodalSplitOut()

+ +
+
+ + + + + +
+ + + + + + + +
virtual distributedCPUVec< double > dftfe::dftBase::getRhoNodalSplitOut () const
+
+pure virtual
+
+
+ +

◆ getTotalChargeforRhoSplit()

+ +
+
+ + + + + +
+ + + + + + + +
virtual double dftfe::dftBase::getTotalChargeforRhoSplit ()
+
+pure virtual
+
+
+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::dftBase::init ()
+
+pure virtual
+
+
+ +

◆ resetRhoNodalIn()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::dftBase::resetRhoNodalIn (distributedCPUVec< double > & OutDensity)
+
+pure virtual
+
+
+ +

◆ resetRhoNodalSplitIn()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::dftBase::resetRhoNodalSplitIn (distributedCPUVec< double > & OutDensity)
+
+pure virtual
+
+
+ +

◆ run()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::dftBase::run ()
+
+pure virtual
+
+
+ +

◆ set()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::dftBase::set ()
+
+pure virtual
+
+
+ +

◆ solve()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
virtual std::tuple< bool, double > dftfe::dftBase::solve (const bool computeForces = true,
const bool computeStress = true,
const bool isRestartGroundStateCalcFromChk = false )
+
+pure virtual
+
+
+ +

◆ trivialSolveForStress()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::dftBase::trivialSolveForStress ()
+
+pure virtual
+
+
+ +

◆ updateAtomPositionsAndMoveMesh()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
virtual void dftfe::dftBase::updateAtomPositionsAndMoveMesh (const std::vector< dealii::Tensor< 1, 3, double > > & globalAtomsDisplacements,
const double maxJacobianRatioFactor = 1.25,
const bool useSingleAtomSolutionsOverride = false )
+
+pure virtual
+
+
+ +

◆ writeDomainAndAtomCoordinates() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::dftBase::writeDomainAndAtomCoordinates ()
+
+pure virtual
+
+ +

writes the current domain bounding vectors and atom coordinates to files, which are required for geometry relaxation restart

+ +

Implemented in dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >.

+ +
+
+ +

◆ writeDomainAndAtomCoordinates() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::dftBase::writeDomainAndAtomCoordinates (const std::string Path) const
+
+pure virtual
+
+ +

writes the current domain bounding vectors and atom coordinates to files for structural optimization and dynamics restarts. The coordinates are stored as: 1. fractional for semi-periodic/periodic 2. Cartesian for non-periodic.

+
Parameters
+ + +
[in]PathThe folder path to store the atom coordinates required during restart.
+
+
+ +

Implemented in dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >.

+ +
+
+ +

◆ writeGSElectronDensity()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::dftBase::writeGSElectronDensity (const std::string Path) const
+
+pure virtual
+
+ +

writes quadrature grid information and associated spin-up and spin-down electron-density for post-processing

+
Parameters
+ + +
[in]PathThe folder path to store the atomistics data.
+
+
+ +

Implemented in dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >.

+ +
+
+ +

◆ writeMesh()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::dftBase::writeMesh ()
+
+pure virtual
+
+
+ +

◆ writeStructureEnergyForcesDataPostProcess()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::dftBase::writeStructureEnergyForcesDataPostProcess (const std::string Path) const
+
+pure virtual
+
+ +

writes atomistics data for subsequent post-processing. Related to WRITE STRUCTURE ENERGY FORCES DATA POST PROCESS input parameter.

+
Parameters
+ + +
[in]PathThe folder path to store the atomistics data.
+
+
+ +

Implemented in dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1dft_base.png b/classdftfe_1_1dft_base.png new file mode 100644 index 0000000000000000000000000000000000000000..6d5d9321c9f32c47428732e16ee100df7b5257f3 GIT binary patch literal 1026 zcmeAS@N?(olHy`uVBq!ia0y~yV2lH@12~w0WLn4DH$X}{z$e7@|Ns9$=8HF9OZyKk zw=mEwkeGhv#e)YAfa0cS!3f*F8(FfeDDeT9L6x!2RhF{Fa=?cBHLK4}TK zn$JG+=J)neAuJe@Tw zdfBY!o6ol2+w1*v&Z!?ERo8XzFM0m4bpN@Vx65a0El$6D`|Urs@as8Q`MRnL!zaZV zT*yAZzPR{paM$6S=Xd#2-n$mxetWf0!}EW~{S|xH&szM=>(X(Xw^vtf_Vb!=NGR_|GPkrYl-tLQvTvKNg8P69ge+|p18r>|MAM~ATLKRO-lxb z{YRJ?m>51Nd|_%3?|1*f%AoF~&rtDki*z01f%XgB41Fyz3>OV`Bpr_$^JsM^%s$kzI&hF^!zl-`TeZvr+=?Jd1;T%?K^rq(yo21 z-1zA4zP*c0O=mm4`Fx*$t8IUazI?RL_bRWxDR*!DTeo;tNR-G8xwE}X_O813w(xDh z@#}x3RLVbx?_Kju+kJWA?d`?(SH9$kCs~^WuUY4_|K0Z&4^Q1$TzPBj_A2(hw@qYU z<(_i+S?iOqtx31Ltm$G+J-4atZS}WFyQ;n`d7g9py65HfySy>i>z7`i_KACMs8j9M z`O6kamY0OwnChW@JWi!AQ&?OnIGUYBq0z5Q3> zqAz_{-jTQK@%dS^%G}@iZncd|&+p5w-nTZnZ8MI3 z;|~c=dtcnMXR4^NfoHXBm1hy3+j-AP@lT$K9QJjc^nOOb`zK}fvHG5VuFs9XOnM^H v5;v(t`OBmw(y-_}7My?1lHKz8n*;Scuk|Z>?f>2a=2iwzS3j3^P6 + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace > Member List
+
+
+ +

This is the complete list of members for dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
a0dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
addAtomicRhoQuadValuesGradients(dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureGradValueData, const bool isConsiderGradData=false)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
aposterioriMeshGenerate()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
applyHomogeneousDirichletBC(const dealii::DoFHandler< 3 > &_dofHandler, const dealii::AffineConstraints< double > &onlyHangingNodeConstraints, dealii::AffineConstraints< double > &constraintMatrix)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
applyKerkerPreconditionerToTotalDensityResidual(kerkerSolverProblem< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()> &kerkerPreconditionedResidualSolverProblem, dealiiLinearSolver &CGSolver, const distributedCPUVec< double > &residualRho, distributedCPUVec< double > &preCondTotalDensityResidualVector)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
applyMultipoleDirichletBC(const dealii::DoFHandler< 3 > &_dofHandler, const dealii::AffineConstraints< double > &onlyHangingNodeConstraints, dealii::AffineConstraints< double > &constraintMatrix)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
applyPeriodicBCHigherOrderNodes()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
atomLocationsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
atomLocationsFractionaldftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
atomTypesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
bLowdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
calculateNearestAtomDistances()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
calculateSmearedChargeWidths()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
clearRhoData()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
compute_fermienergy(const std::vector< std::vector< double > > &eigenValuesInput, const double numElectronsInput)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
compute_fermienergy_constraintMagnetization(const std::vector< std::vector< double > > &eigenValuesInput)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
compute_ldos(const std::vector< std::vector< double > > &eigenValuesInput, const std::string &fileName)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
compute_localizationLength(const std::string &locLengthFileName)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
compute_pdos(const std::vector< std::vector< double > > &eigenValuesInput, const std::string &fileName)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
compute_rhoOut(const bool isConsiderSpectrumSplitting, const bool isGroundState=false)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
compute_tdos(const std::vector< std::vector< double > > &eigenValuesInput, const unsigned int highestStateOfInterest, const std::string &fileName)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
computeMaximumHighestOccupiedStateResidualNorm(const std::vector< std::vector< double > > &residualNormWaveFunctionsAllkPoints, const std::vector< std::vector< double > > &eigenValuesAllkPoints, const double _fermiEnergy)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
computeMaximumHighestOccupiedStateResidualNorm(const std::vector< std::vector< double > > &residualNormWaveFunctionsAllkPoints, const std::vector< std::vector< double > > &eigenValuesAllkPoints, const unsigned int highestState)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
computeMultipoleMoments(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int densityQuadratureId, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoQuadValues, const std::map< dealii::CellId, std::vector< double > > *bQuadValues)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
computeOutputDensityDirectionalDerivative(const distributedCPUVec< double > &v, const distributedCPUVec< double > &vSpin0, const distributedCPUVec< double > &vSpin1, distributedCPUVec< double > &fv, distributedCPUVec< double > &fvSpin0, distributedCPUVec< double > &fvSpin1)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >
computeResidualNodalData(const distributedCPUVec< double > &outValues, const distributedCPUVec< double > &inValues, distributedCPUVec< double > &residualValues)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >
computeResidualQuadData(const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &outValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &inValues, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &residualValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &JxW, const bool computeNorm)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >
computeRhoInitialGuessFromPSI(std::vector< std::vector< distributedCPUVec< double > > > eigenVectors)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
computeRhoNodalFirstOrderResponseFromPSIAndPSIPrime(distributedCPUVec< double > &fv, distributedCPUVec< double > &fvSpin0, distributedCPUVec< double > &fvSpin1)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
computeRhoNodalFromPSI(bool isConsiderSpectrumSplitting)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
computeRhoNodalMassVector(dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &massVec)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >
computeStress()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
computeTraceXtHX(unsigned int numberWaveFunctionsEstimate)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
computeTraceXtKX(unsigned int numberWaveFunctionsEstimate)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
computeVolume(const dealii::DoFHandler< 3 > &_dofHandler)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
computeVselfFieldGateauxDerFD()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
computing_timerdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
computingTimerStandarddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
constraintsNonedftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
constraintsNoneDataInfodftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
constraintsNoneEigendftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
constraintsNoneEigenDataInfodftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
createMasterChargeIdToImageIdMaps(const double pspCutOff, const std::vector< int > &imageIds, const std::vector< std::vector< double > > &imagePositions, std::vector< std::vector< int > > &globalChargeIdToImageIdMap)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
createpRefinedDofHandler(dealii::parallel::distributed::Triangulation< 3 > &triangulation)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_affineTransformMeshdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_atomicRhoScalingFacdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_atomIdPseudopotentialInterestToGlobalIddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_atomLocationsAutoMeshdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_atomLocationsInterestPseudopotentialdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_atomNodeIdToChargeMapdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_atomsDisplacementsGaussianReaddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_atomTypeAtributesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_autoMeshdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_autoMeshMaxJacobianRatiodftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_baseDofHandlerIndexElectrodftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_basisOperationsPtrElectroHostdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_basisOperationsPtrHostdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_bCellNonTrivialAtomIdsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_bCellNonTrivialAtomIdsBinsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_bCellNonTrivialAtomImageIdsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_bCellNonTrivialAtomImageIdsBinsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_binsStartDofHandlerIndexElectrodftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_BLASWrapperPtrdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_BLASWrapperPtrHostdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_bQuadAtomIdsAllAtomsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_bQuadAtomIdsAllAtomsImagesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_bQuadValuesAllAtomsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_closestTriaVertexToAtomsLocationdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_constraintsForHelmholtzRhoNodaldftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_constraintsForPhiPrimeElectrodftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_constraintsForTotalPotentialElectrodftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_constraintsPRefineddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_constraintsPRefinedOnlyHangingdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_constraintsRhoNodaldftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_constraintsRhoNodalInfodftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_constraintsRhoNodalOnlyHangingdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_constraintsVectordftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_constraintsVectorElectrodftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_controlPointLocationsCurrentMovedftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_densityDofHandlerIndexdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_densityDofHandlerIndexElectrodftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_densityInNodalValuesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_densityInQuadValuesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_densityMatDerFermiEnergydftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_densityOutNodalValuesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_densityOutQuadValuesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_densityQuadratureIddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_densityQuadratureIdElectrodftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_densityResidualNodalValuesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_densityResidualQuadValuesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_densityTotalInValuesLpspQuaddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_densityTotalOutValuesLpspQuaddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_dftfeScratchFolderNamedftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_dftParamsPtrdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_dipoledftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_dispClosestTriaVerticesToAtomsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_dispersionCorrdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_dofHandlerPRefineddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_dofHandlerRhoNodaldftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_domainBoundingVectorsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_domainVolumedftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_eigenDofHandlerIndexdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_eigenVectorsDensityMatrixPrimeHostdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_eigenVectorsFlattenedHostdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_eigenVectorsRotFracDensityFlattenedHostdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_elpaScaladftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_entropicEnergydftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_excManagerPtrdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_feOrderPlusOneQuadratureIddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_flatTopWidthsAutoMeshMovedftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_forceDofHandlerIndexdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_forceDofHandlerIndexElectrodftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_freeEnergydftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_freeEnergyInitialdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_fvcontainerValsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_fvSpin0containerValsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_fvSpin1containerValsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_gaussianConstantsAutoMeshdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_gaussianConstantsForcedftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_gaussianMovementAtomsNetDisplacementsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_gaussianMovePardftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_generatorFlatTopWidthsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_gllQuadratureIddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_globalChargeIdToImageIdMapdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_globalChargeIdToImageIdMapTruncdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_globalTimerdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_gradbQuadValuesAllAtomsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_gradDensityInQuadValuesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_gradDensityOutQuadValuesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_gradDensityResidualQuadValuesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_gradDensityTotalInValuesLpspQuaddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_gradDensityTotalOutValuesLpspQuaddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_gradRhoAtomsValuesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_gradRhoAtomsValuesSeparatedftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_gradRhoCoredftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_gradRhoCoreAtomsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_groundStateDensityHistorydftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_groundStateEnergydftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_helmholtzDofHandlerIndexElectrodftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_hessianRhoAtomsValuesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_hessianRhoAtomsValuesSeparatedftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_hessianRhoCoredftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_hessianRhoCoreAtomsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_imageChargesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_imageChargesTruncdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_imageIdsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_imageIdsTruncdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_imagePositionsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_imagePositionsAutoMeshdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_imagePositionsTruncdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_isAtomsGaussianDisplacementsReadFromFiledftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_isFirstFilteringCalldftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_isRestartGroundStateCalcFromChkdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_kohnShamDFTOperatorPtrdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_kohnShamDFTOperatorsInitializeddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_kPointCoordinatesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_kPointWeightsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_locallyRelevantDofsPRefineddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_locallyRelevantDofsRhoNodaldftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_localVselfsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_lpspQuadratureIddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_lpspQuadratureIdElectrodftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_magInNodalValuesReaddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_matrixFreeDataPRefineddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_meshdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_minDistdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_mixingSchemedftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_monopoledftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_mpiCommParentdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_nearestAtomDistancesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_nearestAtomIdsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_netFloatingDispSinceLastBinsUpdatedftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_netFloatingDispSinceLastCheckForSmearedChargeOverlapsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_nlPSPCutOffdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_nlpspQuadratureIddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_noConstraintsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_nOMPThreadsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_nonAtomicWaveFunctionsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >
d_nonPeriodicDensityDofHandlerIndexElectrodftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_numEigenValuesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >
d_numEigenValuesRRdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >
d_oncvClassPtrdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_phiExtdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_phiExtDofHandlerIndexElectrodftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_phiInQuadValuesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_phiOutQuadValuesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_phiPrimedftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_phiPrimeDofHandlerIndexElectrodftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_phiPrimeSolverProblemdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_phiTotalSolverProblemdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_phiTotAXQuadratureIdElectrodftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_phiTotDofHandlerIndexElectrodftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_phiTotRhoIndftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_phiTotRhoOutdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_preCondTotalDensityResidualVectordftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_pseudoVLocdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_pseudoVLocAtomsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_pspCutOffdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_pspCutOffTruncdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_quadrupoledftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_rankCurrentLRDdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_reciprocalLatticeVectorsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_relativeErrorJacInvApproxPrevScfLRDdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_residualNormPredicteddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_residualPredicteddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_rhoAtomsValuesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_rhoAtomsValuesSeparatedftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_rhoCoredftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_rhoInNodalValuesReaddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_rhoNodalFieldRefineddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_rhoOutNodalValuesDistributeddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_rhoOutNodalValuesSplitdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_smearedChargeMomentsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_smearedChargeMomentsComputeddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_smearedChargeQuadratureIdElectrodftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_smearedChargeScalingdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_smearedChargeWidthMindftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_smearedChargeWidthsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_sparsityPatternQuadratureIddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_subspaceIterationSolverdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_supportPointsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_supportPointsEigendftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_supportPointsPRefineddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_tempEigenVecdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_tolReacheddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_upperBoundUnwantedSpectrumValuesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_vcontainerValsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_vselfBinsManagerdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_vselfFieldGateauxDerStrainFDBinsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_vSpin0containerValsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_vSpin1containerValsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
d_wfcInitTruncationdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
deformDomain(const dealii::Tensor< 2, 3, double > &deformationGradient, const bool vselfPerturbationUpdateForStress=false, const bool useSingleAtomSolutionsOverride=false, const bool print=true)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >privatevirtual
determineAtomsOfInterstPseudopotential(const std::vector< std::vector< double > > &atomCoordinates)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
determineOrbitalFilling()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
dftClass(const MPI_Comm &mpiCommParent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const std::string &scratchFolderName, dftParameters &dftParams)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >
dofHandlerdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
dofHandlerEigendftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
eigenValuesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
eigenValuesRRSplitdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
FEdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
FEEigendftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
fermiEnergydftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
fermiEnergyDowndftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
fermiEnergyUpdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
fieldGradl2Norm(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &field)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
finalizeKohnShamDFTOperator()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >
forceClass< FEOrder, FEOrderElectro, memorySpace >dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >friend
forcePtrdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
generateImageCharges(const double pspCutOff, std::vector< int > &imageIds, std::vector< double > &imageCharges, std::vector< std::vector< double > > &imagePositions)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
generateMPGrid()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
getAtomLocationsCart() constdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
getAtomLocationsFrac() constdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
getAtomTypes() constdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
getCell() constdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
getCellStress() constdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
getCellVolume() constdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
getEntropicEnergy() constdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
getForceonAtoms() constdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
getFreeEnergy() constdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
getInternalEnergy() constdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
getLocalDofIndicesImag() constdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >
getLocalDofIndicesReal() constdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >
getLocalProcDofIndicesImag() constdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >
getLocalProcDofIndicesReal() constdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >
getMatrixFreeData() constdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >
getParametersObject() constdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
getRhoNodalOut() constdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
getRhoNodalSplitOut() constdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
getTotalChargeforRhoSplit()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
init()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
initAtomicRho()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
initBoundaryConditions(const bool recomputeBasisData=true, const bool meshOnlyDeformed=false, const bool vselfPerturbationUpdateForStress=false)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
initCoreRho()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
initElectronicFields()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
initializeKohnShamDFTOperator(const bool initializeCublas=true)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >
initImageChargesUpdateKPoints(bool flag=true)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
initLocalPseudoPotential(const dealii::DoFHandler< 3 > &_dofHandler, const unsigned int lpspQuadratureId, const dealii::MatrixFree< 3, double > &_matrix_free_data, const unsigned int _phiExtDofHandlerIndex, const dealii::AffineConstraints< double > &phiExtConstraintMatrix, const std::map< dealii::types::global_dof_index, dealii::Point< 3 > > &supportPoints, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinManager, distributedCPUVec< double > &phiExt, std::map< dealii::CellId, std::vector< double > > &_pseudoValues, std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &_pseudoValuesAtoms)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
initNoRemesh(const bool updateImagesAndKPointsAndVselfBins=true, const bool checkSmearedChargeWidthsForOverlap=true, const bool useSingleAtomSolutionOverride=false, const bool isMeshDeformed=false)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >
initnscf(KohnShamHamiltonianOperator< memorySpace > &kohnShamDFTEigenOperator, poissonSolverProblem< FEOrder, FEOrderElectro > &phiTotalSolverProblem, dealiiLinearSolver &CGSolver)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
initpRefinedObjects(const bool recomputeBasisData, const bool meshOnlyDeformed, const bool vselfPerturbationUpdateForStress=false)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
initPseudoPotentialAll(const bool updateNonlocalSparsity=true)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
initRho()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
initUnmovedTriangulation(dealii::parallel::distributed::Triangulation< 3 > &triangulation)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
interBandGroupCommdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
interpolateDensityNodalDataToQuadratureDataGeneral(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalField, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureGradValueData, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureHessianValueData, const bool isEvaluateGradData=false, const bool isEvaluateHessianData=false)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
interpolateDensityNodalDataToQuadratureDataLpsp(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalField, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureGradValueData, const bool isEvaluateGradData)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
interpolateElectroNodalDataToQuadratureDataGeneral(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalField, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureGradValueData, const bool isEvaluateGradData=false)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
interpoolcommdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
kohnShamEigenSpaceCompute(const unsigned int s, const unsigned int kPointIndex, KohnShamHamiltonianOperator< dftfe::utils::MemorySpace::HOST > &kohnShamDFTEigenOperator, elpaScalaManager &elpaScala, chebyshevOrthogonalizedSubspaceIterationSolver &subspaceIterationSolver, std::vector< double > &residualNormWaveFunctions, const bool computeResidual, const bool isSpectrumSplit=false, const bool useMixedPrec=false, const bool isFirstScf=false)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
kohnShamEigenSpaceComputeNSCF(const unsigned int spinType, const unsigned int kPointIndex, KohnShamHamiltonianOperator< dftfe::utils::MemorySpace::HOST > &kohnShamDFTEigenOperator, chebyshevOrthogonalizedSubspaceIterationSolver &subspaceIterationSolver, std::vector< double > &residualNormWaveFunctions, unsigned int ipass)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
kohnShamEigenSpaceFirstOrderDensityMatResponse(const unsigned int s, const unsigned int kPointIndex, KohnShamHamiltonianOperator< dftfe::utils::MemorySpace::HOST > &kohnShamDFTEigenOperator, elpaScalaManager &elpaScala)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
kPointReducedCoordinatesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
l2ProjectionQuadDensityMinusAtomicDensity(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const dealii::AffineConstraints< double > &constraintMatrix, const unsigned int dofHandlerId, const unsigned int quadratureId, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, distributedCPUVec< double > &nodalField)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
l2ProjectionQuadToNodal(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const dealii::AffineConstraints< double > &constraintMatrix, const unsigned int dofHandlerId, const unsigned int quadratureId, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, distributedCPUVec< double > &nodalField)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
loadPSIFiles(unsigned int Z, unsigned int n, unsigned int l, unsigned int &flag)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
loadTriaInfoAndRhoNodalData()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
local_dof_indicesImagdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
local_dof_indicesRealdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
locally_owned_dofsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
locally_owned_dofsEigendftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
locally_relevant_dofsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
locally_relevant_dofsEigendftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
localProc_dof_indicesImagdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
localProc_dof_indicesRealdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
locateAtomCoreNodes(const dealii::DoFHandler< 3 > &_dofHandler, std::map< dealii::types::global_dof_index, double > &atomNodeIdToChargeValueMap)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
locatePeriodicPinnedNodes(const dealii::DoFHandler< 3 > &_dofHandler, const dealii::AffineConstraints< double > &constraintMatrixBase, dealii::AffineConstraints< double > &constraintMatrix)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
lowerBoundKindexdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
lowrankApproxScfDielectricMatrixInv(const unsigned int scfIter)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
lowrankApproxScfDielectricMatrixInvSpinPolarized(const unsigned int scfIter)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
matrix_free_datadftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
moveMeshToAtoms(dealii::Triangulation< 3, 3 > &triangulationMove, dealii::Triangulation< 3, 3 > &triangulationSerial, bool reuseFlag=false, bool moveSubdivided=false)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
mpi_communicatordftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
n_mpi_processesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
noRemeshRhoDataInit()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
normalizeAtomicRhoQuadValues()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
normalizeRhoInQuadValues()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
normalizeRhoOutQuadValues()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
nscf(KohnShamHamiltonianOperator< memorySpace > &kohnShamDFTEigenOperator, chebyshevOrthogonalizedSubspaceIterationSolver &subspaceIterationSolver)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
numElectronsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
numElectronsDowndftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
numElectronsUpdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
numLevelsdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
outerValuesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
outputDensity()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
outputWfc()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
pcoutdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
projectPreviousGroundStateRho()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
radValuesdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
readkPointData()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >
readPSI()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
readPSIRadialValues()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
recomputeKPointCoordinates()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
reInitializeKohnShamDFTOperator()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >
resetRhoNodalIn(distributedCPUVec< double > &OutDensity)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
resetRhoNodalSplitIn(distributedCPUVec< double > &OutDensity)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
rhofieldInnerProduct(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField1, const distributedCPUVec< double > &rhoNodalField2, const unsigned int dofHandlerId, const unsigned int quadratureId)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
rhofieldl2Norm(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField, const unsigned int dofHandlerId, const unsigned int quadratureId)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
run()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
saveTriaInfoAndRhoNodalData()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
scfConvergeddftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
selectedDofsHangingdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
set()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
solve(const bool computeForces=true, const bool computestress=true, const bool restartGroundStateCalcFromChk=false)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
solveNoSCF()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >
symmetryClass< FEOrder, FEOrderElectro, memorySpace >dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >friend
symmetryPtrdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
this_mpi_processdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const distributedCPUVec< double > &rhoNodalField)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const std::map< dealii::CellId, std::vector< double > > *rhoQuadValues)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoQuadValues)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
totalCharge(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
totalMagnetization(const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &magQuadValues)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
trivialSolveForStress()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
updateAtomPositionsAndMoveMesh(const std::vector< dealii::Tensor< 1, 3, double > > &globalAtomsDisplacements, const double maxJacobianRatioFactor=1.25, const bool useSingleAtomSolutionsOverride=false)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
updatePRefinedConstraints()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
waveFunctionsVectordftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
writeBands()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
writeDomainAndAtomCoordinates()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
writeDomainAndAtomCoordinates(const std::string Path) constdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
writeGSElectronDensity(const std::string Path) constdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
writeMesh()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
writeMesh(std::string meshFileName)dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >private
writeStructureEnergyForcesDataPostProcess(const std::string Path) constdftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >virtual
~dftBase()dftfe::dftBaseinlinevirtual
~dftClass()dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >
+ + + + diff --git a/classdftfe_1_1dft_class.html b/classdftfe_1_1dft_class.html new file mode 100644 index 000000000..8e0664325 --- /dev/null +++ b/classdftfe_1_1dft_class.html @@ -0,0 +1,11010 @@ + + + + + + + +DFT-FE: dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace > Class Template Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace > Class Template Reference
+
+
+ +

This class is the primary interface location of all other parts of the DFT-FE code for all steps involved in obtaining the Kohn-Sham DFT ground-state solution. + More...

+ +

#include <dft.h>

+
+Inheritance diagram for dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >:
+
+
+ + +dftfe::dftBase + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 dftClass (const MPI_Comm &mpiCommParent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const std::string &scratchFolderName, dftParameters &dftParams)
 dftClass constructor
 
 ~dftClass ()
 dftClass destructor
 
void set ()
 atomic system pre-processing steps.
 
void init ()
 Does KSDFT problem pre-processing steps including mesh generation calls.
 
void initNoRemesh (const bool updateImagesAndKPointsAndVselfBins=true, const bool checkSmearedChargeWidthsForOverlap=true, const bool useSingleAtomSolutionOverride=false, const bool isMeshDeformed=false)
 Does KSDFT problem pre-processing steps but without remeshing.
 
void run ()
 FIXME: legacy call, move to main.cc.
 
void writeMesh ()
 Writes inital density and mesh to file.
 
void solveNoSCF ()
 compute approximation to ground-state without solving the SCF iteration
 
std::tuple< bool, doublesolve (const bool computeForces=true, const bool computestress=true, const bool restartGroundStateCalcFromChk=false)
 Kohn-Sham ground-state solve using SCF iteration.
 
void computeStress ()
 
void trivialSolveForStress ()
 
void computeOutputDensityDirectionalDerivative (const distributedCPUVec< double > &v, const distributedCPUVec< double > &vSpin0, const distributedCPUVec< double > &vSpin1, distributedCPUVec< double > &fv, distributedCPUVec< double > &fvSpin0, distributedCPUVec< double > &fvSpin1)
 
double computeResidualQuadData (const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &outValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &inValues, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &residualValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &JxW, const bool computeNorm)
 Copies the residual residualValues=outValues-inValues.
 
double computeResidualNodalData (const distributedCPUVec< double > &outValues, const distributedCPUVec< double > &inValues, distributedCPUVec< double > &residualValues)
 
void computeRhoNodalMassVector (dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &massVec)
 Computes the diagonal mass matrix for rho nodal grid, used for nodal mixing.
 
void initializeKohnShamDFTOperator (const bool initializeCublas=true)
 
void reInitializeKohnShamDFTOperator ()
 
void finalizeKohnShamDFTOperator ()
 
double getInternalEnergy () const
 
double getEntropicEnergy () const
 
double getFreeEnergy () const
 
distributedCPUVec< doublegetRhoNodalOut () const
 
distributedCPUVec< doublegetRhoNodalSplitOut () const
 
double getTotalChargeforRhoSplit ()
 
void resetRhoNodalIn (distributedCPUVec< double > &OutDensity)
 
virtual void resetRhoNodalSplitIn (distributedCPUVec< double > &OutDensity)
 
void readkPointData ()
 
const std::vector< dealii::types::global_dof_index > & getLocalDofIndicesReal () const
 Get local dofs global indices real.
 
const std::vector< dealii::types::global_dof_index > & getLocalDofIndicesImag () const
 Get local dofs global indices imag.
 
const std::vector< dealii::types::global_dof_index > & getLocalProcDofIndicesReal () const
 Get local dofs local proc indices real.
 
const std::vector< dealii::types::global_dof_index > & getLocalProcDofIndicesImag () const
 Get local dofs local proc indices imag.
 
const dealii::MatrixFree< 3, double > & getMatrixFreeData () const
 Get matrix free data object.
 
void updateAtomPositionsAndMoveMesh (const std::vector< dealii::Tensor< 1, 3, double > > &globalAtomsDisplacements, const double maxJacobianRatioFactor=1.25, const bool useSingleAtomSolutionsOverride=false)
 Updates atom positions, remeshes/moves mesh and calls appropriate reinits.
 
void writeDomainAndAtomCoordinates ()
 writes the current domain bounding vectors and atom coordinates to files, which are required for geometry relaxation restart
 
void writeDomainAndAtomCoordinates (const std::string Path) const
 writes the current domain bounding vectors and atom coordinates to files for structural optimization and dynamics restarts. The coordinates are stored as: 1. fractional for semi-periodic/periodic 2. Cartesian for non-periodic.
 
void writeStructureEnergyForcesDataPostProcess (const std::string Path) const
 writes atomistics data for subsequent post-processing. Related to WRITE STRUCTURE ENERGY FORCES DATA POST PROCESS input parameter.
 
virtual void writeGSElectronDensity (const std::string Path) const
 writes quadrature grid information and associated spin-up and spin-down electron-density for post-processing
 
std::vector< std::vector< double > > getAtomLocationsCart () const
 Gets the current atom Locations in cartesian form (origin at center of domain) from dftClass.
 
std::vector< std::vector< double > > getAtomLocationsFrac () const
 Gets the current atom Locations in fractional form from dftClass (only applicable for periodic and semi-periodic BCs)
 
std::vector< std::vector< double > > getCell () const
 Gets the current cell lattice vectors.
 
double getCellVolume () const
 Gets the current cell volume.
 
std::set< unsigned intgetAtomTypes () const
 Gets the current atom types from dftClass.
 
std::vector< doublegetForceonAtoms () const
 Gets the current atomic forces from dftClass.
 
dealii::Tensor< 2, 3, doublegetCellStress () const
 Gets the current cell stress from dftClass.
 
dftParametersgetParametersObject () const
 Get reference to dftParameters object.
 
- Public Member Functions inherited from dftfe::dftBase
virtual ~dftBase ()
 This is required to correctly delete the derived class object through the base class ptr.
 
+ + + + + + + + + + +

+Public Attributes

unsigned int d_numEigenValues
 Number of Kohn-Sham eigen values to be computed.
 
unsigned int d_numEigenValuesRR
 Number of Kohn-Sham eigen values to be computed in the Rayleigh-Ritz step after spectrum splitting.
 
unsigned int d_nonAtomicWaveFunctions
 Number of random wavefunctions.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

void initImageChargesUpdateKPoints (bool flag=true)
 generate image charges and update k point cartesian coordinates based on current lattice vectors
 
void determineAtomsOfInterstPseudopotential (const std::vector< std::vector< double > > &atomCoordinates)
 
void projectPreviousGroundStateRho ()
 project ground state electron density from previous mesh into the new mesh to be used as initial guess for the new ground state solve
 
void saveTriaInfoAndRhoNodalData ()
 save triangulation information and rho quadrature data to checkpoint file for restarts
 
void loadTriaInfoAndRhoNodalData ()
 load triangulation information rho quadrature data from checkpoint file for restarted run
 
void generateMPGrid ()
 
void writeMesh (std::string meshFileName)
 
void generateImageCharges (const double pspCutOff, std::vector< int > &imageIds, std::vector< double > &imageCharges, std::vector< std::vector< double > > &imagePositions)
 creates datastructures related to periodic image charges
 
void createMasterChargeIdToImageIdMaps (const double pspCutOff, const std::vector< int > &imageIds, const std::vector< std::vector< double > > &imagePositions, std::vector< std::vector< int > > &globalChargeIdToImageIdMap)
 
void determineOrbitalFilling ()
 
void aposterioriMeshGenerate ()
 
dataTypes::number computeTraceXtHX (unsigned int numberWaveFunctionsEstimate)
 
double computeTraceXtKX (unsigned int numberWaveFunctionsEstimate)
 
void moveMeshToAtoms (dealii::Triangulation< 3, 3 > &triangulationMove, dealii::Triangulation< 3, 3 > &triangulationSerial, bool reuseFlag=false, bool moveSubdivided=false)
 moves the triangulation vertices using Gaussians such that the all atoms are on triangulation vertices
 
void calculateSmearedChargeWidths ()
 a
 
void calculateNearestAtomDistances ()
 a
 
void initUnmovedTriangulation (dealii::parallel::distributed::Triangulation< 3 > &triangulation)
 
void initBoundaryConditions (const bool recomputeBasisData=true, const bool meshOnlyDeformed=false, const bool vselfPerturbationUpdateForStress=false)
 
void initElectronicFields ()
 
void initPseudoPotentialAll (const bool updateNonlocalSparsity=true)
 
void createpRefinedDofHandler (dealii::parallel::distributed::Triangulation< 3 > &triangulation)
 
void initpRefinedObjects (const bool recomputeBasisData, const bool meshOnlyDeformed, const bool vselfPerturbationUpdateForStress=false)
 
void updatePRefinedConstraints ()
 
void applyMultipoleDirichletBC (const dealii::DoFHandler< 3 > &_dofHandler, const dealii::AffineConstraints< double > &onlyHangingNodeConstraints, dealii::AffineConstraints< double > &constraintMatrix)
 Sets inhomegeneous dirichlet boundary conditions upto quadrupole for total potential constraints on non-periodic boundary (boundary id==0).
 
void computeMultipoleMoments (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int densityQuadratureId, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoQuadValues, const std::map< dealii::CellId, std::vector< double > > *bQuadValues)
 
void interpolateDensityNodalDataToQuadratureDataGeneral (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalField, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureGradValueData, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureHessianValueData, const bool isEvaluateGradData=false, const bool isEvaluateHessianData=false)
 interpolate rho nodal data to quadrature data using FEEvaluation
 
void interpolateElectroNodalDataToQuadratureDataGeneral (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalField, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureGradValueData, const bool isEvaluateGradData=false)
 interpolate nodal data to quadrature data using FEEvaluation
 
void interpolateDensityNodalDataToQuadratureDataLpsp (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalField, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureGradValueData, const bool isEvaluateGradData)
 interpolate rho nodal data to quadrature data using FEEvaluation
 
void addAtomicRhoQuadValuesGradients (dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureGradValueData, const bool isConsiderGradData=false)
 add atomic densities at quadrature points
 
void locateAtomCoreNodes (const dealii::DoFHandler< 3 > &_dofHandler, std::map< dealii::types::global_dof_index, double > &atomNodeIdToChargeValueMap)
 Finds the global dof ids of the nodes containing atoms.
 
void locatePeriodicPinnedNodes (const dealii::DoFHandler< 3 > &_dofHandler, const dealii::AffineConstraints< double > &constraintMatrixBase, dealii::AffineConstraints< double > &constraintMatrix)
 Sets homogeneous dirichlet boundary conditions on a node farthest from all atoms (pinned node). This is only done in case of periodic boundary conditions to get an unique solution to the total electrostatic potential problem.
 
void initAtomicRho ()
 
void initRho ()
 
void initCoreRho ()
 
void computeRhoInitialGuessFromPSI (std::vector< std::vector< distributedCPUVec< double > > > eigenVectors)
 
void clearRhoData ()
 
void computeRhoNodalFromPSI (bool isConsiderSpectrumSplitting)
 computes density nodal data from wavefunctions
 
void computeRhoNodalFirstOrderResponseFromPSIAndPSIPrime (distributedCPUVec< double > &fv, distributedCPUVec< double > &fvSpin0, distributedCPUVec< double > &fvSpin1)
 
void noRemeshRhoDataInit ()
 
void readPSI ()
 
void readPSIRadialValues ()
 
void loadPSIFiles (unsigned int Z, unsigned int n, unsigned int l, unsigned int &flag)
 
void initLocalPseudoPotential (const dealii::DoFHandler< 3 > &_dofHandler, const unsigned int lpspQuadratureId, const dealii::MatrixFree< 3, double > &_matrix_free_data, const unsigned int _phiExtDofHandlerIndex, const dealii::AffineConstraints< double > &phiExtConstraintMatrix, const std::map< dealii::types::global_dof_index, dealii::Point< 3 > > &supportPoints, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinManager, distributedCPUVec< double > &phiExt, std::map< dealii::CellId, std::vector< double > > &_pseudoValues, std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &_pseudoValuesAtoms)
 
void applyHomogeneousDirichletBC (const dealii::DoFHandler< 3 > &_dofHandler, const dealii::AffineConstraints< double > &onlyHangingNodeConstraints, dealii::AffineConstraints< double > &constraintMatrix)
 Sets homegeneous dirichlet boundary conditions for total potential constraints on non-periodic boundary (boundary id==0).
 
double totalCharge (const dealii::DoFHandler< 3 > &dofHandlerOfField, const distributedCPUVec< double > &rhoNodalField)
 Computes total charge by integrating the electron-density.
 
double totalCharge (const dealii::DoFHandler< 3 > &dofHandlerOfField, const std::map< dealii::CellId, std::vector< double > > *rhoQuadValues)
 
double totalCharge (const dealii::DoFHandler< 3 > &dofHandlerOfField, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoQuadValues)
 
double totalCharge (const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField)
 
double rhofieldl2Norm (const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField, const unsigned int dofHandlerId, const unsigned int quadratureId)
 
double rhofieldInnerProduct (const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField1, const distributedCPUVec< double > &rhoNodalField2, const unsigned int dofHandlerId, const unsigned int quadratureId)
 
double fieldGradl2Norm (const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &field)
 
void l2ProjectionQuadToNodal (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const dealii::AffineConstraints< double > &constraintMatrix, const unsigned int dofHandlerId, const unsigned int quadratureId, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, distributedCPUVec< double > &nodalField)
 l2 projection
 
void l2ProjectionQuadDensityMinusAtomicDensity (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const dealii::AffineConstraints< double > &constraintMatrix, const unsigned int dofHandlerId, const unsigned int quadratureId, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, distributedCPUVec< double > &nodalField)
 l2 projection
 
double totalMagnetization (const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &magQuadValues)
 Computes net magnetization from the difference of local spin densities.
 
void normalizeRhoInQuadValues ()
 normalize the input electron density
 
void normalizeRhoOutQuadValues ()
 normalize the output electron density in each scf
 
void normalizeAtomicRhoQuadValues ()
 normalize the electron density
 
void compute_rhoOut (const bool isConsiderSpectrumSplitting, const bool isGroundState=false)
 Computes output electron-density from wavefunctions.
 
void applyKerkerPreconditionerToTotalDensityResidual (kerkerSolverProblem< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()> &kerkerPreconditionedResidualSolverProblem, dealiiLinearSolver &CGSolver, const distributedCPUVec< double > &residualRho, distributedCPUVec< double > &preCondTotalDensityResidualVector)
 Mixing schemes for mixing electron-density.
 
double lowrankApproxScfDielectricMatrixInv (const unsigned int scfIter)
 
double lowrankApproxScfDielectricMatrixInvSpinPolarized (const unsigned int scfIter)
 
void compute_fermienergy (const std::vector< std::vector< double > > &eigenValuesInput, const double numElectronsInput)
 Computes Fermi-energy obtained by imposing constraint on the number of electrons.
 
void compute_fermienergy_constraintMagnetization (const std::vector< std::vector< double > > &eigenValuesInput)
 Computes Fermi-energy obtained by imposing separate constraints on the number of spin-up and spin-down electrons.
 
void compute_tdos (const std::vector< std::vector< double > > &eigenValuesInput, const unsigned int highestStateOfInterest, const std::string &fileName)
 compute density of states and local density of states
 
void compute_ldos (const std::vector< std::vector< double > > &eigenValuesInput, const std::string &fileName)
 
void compute_pdos (const std::vector< std::vector< double > > &eigenValuesInput, const std::string &fileName)
 
void compute_localizationLength (const std::string &locLengthFileName)
 compute localization length
 
void outputWfc ()
 write wavefunction solution fields
 
void outputDensity ()
 write electron density solution fields
 
void writeBands ()
 write the KS eigen values for given BZ sampling/path
 
double computeVolume (const dealii::DoFHandler< 3 > &_dofHandler)
 Computes the volume of the domain.
 
void deformDomain (const dealii::Tensor< 2, 3, double > &deformationGradient, const bool vselfPerturbationUpdateForStress=false, const bool useSingleAtomSolutionsOverride=false, const bool print=true)
 Deforms the domain by the given deformation gradient and reinitializes the dftClass datastructures.
 
void applyPeriodicBCHigherOrderNodes ()
 Computes inner Product and Y = alpha*X + Y for complex vectors used during periodic boundary conditions.
 
void computeVselfFieldGateauxDerFD ()
 
void recomputeKPointCoordinates ()
 
void nscf (KohnShamHamiltonianOperator< memorySpace > &kohnShamDFTEigenOperator, chebyshevOrthogonalizedSubspaceIterationSolver &subspaceIterationSolver)
 
void initnscf (KohnShamHamiltonianOperator< memorySpace > &kohnShamDFTEigenOperator, poissonSolverProblem< FEOrder, FEOrderElectro > &phiTotalSolverProblem, dealiiLinearSolver &CGSolver)
 
double computeMaximumHighestOccupiedStateResidualNorm (const std::vector< std::vector< double > > &residualNormWaveFunctionsAllkPoints, const std::vector< std::vector< double > > &eigenValuesAllkPoints, const double _fermiEnergy)
 compute the maximum of the residual norm of the highest occupied state among all k points
 
double computeMaximumHighestOccupiedStateResidualNorm (const std::vector< std::vector< double > > &residualNormWaveFunctionsAllkPoints, const std::vector< std::vector< double > > &eigenValuesAllkPoints, const unsigned int highestState)
 compute the maximum of the residual norm of the highest state of interest among all k points
 
void kohnShamEigenSpaceCompute (const unsigned int s, const unsigned int kPointIndex, KohnShamHamiltonianOperator< dftfe::utils::MemorySpace::HOST > &kohnShamDFTEigenOperator, elpaScalaManager &elpaScala, chebyshevOrthogonalizedSubspaceIterationSolver &subspaceIterationSolver, std::vector< double > &residualNormWaveFunctions, const bool computeResidual, const bool isSpectrumSplit=false, const bool useMixedPrec=false, const bool isFirstScf=false)
 
void kohnShamEigenSpaceFirstOrderDensityMatResponse (const unsigned int s, const unsigned int kPointIndex, KohnShamHamiltonianOperator< dftfe::utils::MemorySpace::HOST > &kohnShamDFTEigenOperator, elpaScalaManager &elpaScala)
 
void kohnShamEigenSpaceComputeNSCF (const unsigned int spinType, const unsigned int kPointIndex, KohnShamHamiltonianOperator< dftfe::utils::MemorySpace::HOST > &kohnShamDFTEigenOperator, chebyshevOrthogonalizedSubspaceIterationSolver &subspaceIterationSolver, std::vector< double > &residualNormWaveFunctions, unsigned int ipass)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

double d_atomicRhoScalingFac
 
std::shared_ptr< excManagerd_excManagerPtr
 
dispersionCorrection d_dispersionCorr
 
unsigned int numElectrons
 
unsigned int numElectronsUp
 
unsigned int numElectronsDown
 
unsigned int numLevels
 
std::set< unsigned intatomTypes
 
std::map< unsigned int, unsigned intd_atomTypeAtributes
 
std::vector< std::vector< double > > atomLocations
 FIXME: remove atom type atributes from atomLocations.
 
std::vector< std::vector< double > > atomLocationsFractional
 
std::vector< std::vector< double > > d_reciprocalLatticeVectors
 
std::vector< std::vector< double > > d_domainBoundingVectors
 
std::vector< std::vector< double > > d_atomLocationsInterestPseudopotential
 
std::map< unsigned int, unsigned intd_atomIdPseudopotentialInterestToGlobalId
 
std::vector< std::vector< double > > d_atomLocationsAutoMesh
 
std::vector< std::vector< double > > d_imagePositionsAutoMesh
 
std::vector< dealii::Tensor< 1, 3, double > > d_atomsDisplacementsGaussianRead
 Gaussian displacements of atoms read from file.
 
std::vector< doubled_netFloatingDispSinceLastBinsUpdate
 
std::vector< doubled_netFloatingDispSinceLastCheckForSmearedChargeOverlaps
 
bool d_isAtomsGaussianDisplacementsReadFromFile = false
 
std::vector< doubled_gaussianConstantsForce
 
std::vector< doubled_gaussianConstantsAutoMesh
 
std::vector< doubled_generatorFlatTopWidths
 composite generator flat top widths for all domain atoms
 
std::vector< doubled_flatTopWidthsAutoMeshMove
 
std::vector< doubled_smearedChargeWidths
 smeared charge widths for all domain atoms
 
std::vector< doubled_smearedChargeScaling
 smeared charge normalization scaling for all domain atoms
 
std::vector< unsigned intd_nearestAtomIds
 nearest atom ids for all domain atoms
 
std::vector< doubled_nearestAtomDistances
 nearest atom distances for all domain atoms
 
double d_minDist
 
std::vector< intd_imageIds
 
std::vector< doubled_imageCharges
 
std::vector< std::vector< double > > d_imagePositions
 
std::vector< std::vector< int > > d_globalChargeIdToImageIdMap
 globalChargeId to ImageChargeId Map
 
std::vector< intd_imageIdsTrunc
 
std::vector< doubled_imageChargesTrunc
 
std::vector< std::vector< double > > d_imagePositionsTrunc
 
std::vector< std::vector< int > > d_globalChargeIdToImageIdMapTrunc
 globalChargeId to ImageChargeId Map generated with a truncated pspCutOff
 
double d_pspCutOff = 15.0
 distance from the domain till which periodic images will be considered
 
const double d_pspCutOffTrunc = 15.0
 distance from the domain till which periodic images will be considered
 
double d_nlPSPCutOff = 8.0
 
std::map< dealii::CellId, std::vector< double > > d_bQuadValuesAllAtoms
 non-intersecting smeared charges of all atoms at quad points
 
std::map< dealii::CellId, std::vector< double > > d_gradbQuadValuesAllAtoms
 non-intersecting smeared charge gradients of all atoms at quad points
 
std::map< dealii::CellId, std::vector< int > > d_bQuadAtomIdsAllAtoms
 non-intersecting smeared charges atom ids of all atoms at quad points
 
std::map< dealii::CellId, std::vector< int > > d_bQuadAtomIdsAllAtomsImages
 
std::map< dealii::CellId, std::vector< unsigned int > > d_bCellNonTrivialAtomIds
 
std::vector< std::map< dealii::CellId, std::vector< unsigned int > > > d_bCellNonTrivialAtomIdsBins
 
std::map< dealii::CellId, std::vector< unsigned int > > d_bCellNonTrivialAtomImageIds
 
std::vector< std::map< dealii::CellId, std::vector< unsigned int > > > d_bCellNonTrivialAtomImageIdsBins
 
const double d_smearedChargeWidthMin = 0.4
 minimum smeared charge width
 
std::vector< orbitalwaveFunctionsVector
 
std::map< unsigned int, std::map< unsigned int, std::map< unsigned int, alglib::spline1dinterpolant > > > radValues
 
std::map< unsigned int, std::map< unsigned int, std::map< unsigned int, double > > > outerValues
 
triangulationManager d_mesh
 
double d_autoMeshMaxJacobianRatio
 
unsigned int d_autoMesh
 
meshMovementAffineTransform d_affineTransformMesh
 affine transformation object
 
meshMovementGaussianClass d_gaussianMovePar
 meshMovementGaussianClass object
 
std::vector< dealii::Tensor< 1, 3, double > > d_gaussianMovementAtomsNetDisplacements
 
std::vector< dealii::Point< 3 > > d_controlPointLocationsCurrentMove
 
double d_domainVolume
 volume of the domain
 
double d_wfcInitTruncation = 5.0
 init wfc trunctation radius
 
dealii::FESystem< 3 > FE
 
dealii::FESystem< 3 > FEEigen
 
dealii::DoFHandler< 3 > dofHandler
 
dealii::DoFHandler< 3 > dofHandlerEigen
 
dealii::DoFHandler< 3 > d_dofHandlerPRefined
 
dealii::DoFHandler< 3 > d_dofHandlerRhoNodal
 
unsigned int d_eigenDofHandlerIndex
 
unsigned int d_phiExtDofHandlerIndexElectro
 
unsigned int d_forceDofHandlerIndex
 
unsigned int d_densityDofHandlerIndex
 
unsigned int d_densityDofHandlerIndexElectro
 
unsigned int d_nonPeriodicDensityDofHandlerIndexElectro
 
unsigned int d_baseDofHandlerIndexElectro
 
unsigned int d_forceDofHandlerIndexElectro
 
unsigned int d_smearedChargeQuadratureIdElectro
 
unsigned int d_nlpspQuadratureId
 
unsigned int d_lpspQuadratureId
 
unsigned int d_feOrderPlusOneQuadratureId
 
unsigned int d_lpspQuadratureIdElectro
 
unsigned int d_gllQuadratureId
 
unsigned int d_phiTotDofHandlerIndexElectro
 
unsigned int d_phiPrimeDofHandlerIndexElectro
 
unsigned int d_phiTotAXQuadratureIdElectro
 
unsigned int d_helmholtzDofHandlerIndexElectro
 
unsigned int d_binsStartDofHandlerIndexElectro
 
unsigned int d_densityQuadratureId
 
unsigned int d_densityQuadratureIdElectro
 
unsigned int d_sparsityPatternQuadratureId
 
unsigned int d_nOMPThreads
 
dealii::MatrixFree< 3, doublematrix_free_data
 
dealii::MatrixFree< 3, doubled_matrixFreeDataPRefined
 
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > d_basisOperationsPtrHost
 
std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > d_basisOperationsPtrElectroHost
 
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > d_BLASWrapperPtrHost
 
std::shared_ptr< dftfe::oncvClass< dataTypes::number, memorySpace > > d_oncvClassPtr
 
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > d_BLASWrapperPtr
 
std::map< dealii::types::global_dof_index, dealii::Point< 3 > > d_supportPoints
 
std::map< dealii::types::global_dof_index, dealii::Point< 3 > > d_supportPointsPRefined
 
std::map< dealii::types::global_dof_index, dealii::Point< 3 > > d_supportPointsEigen
 
std::vector< const dealii::AffineConstraints< double > * > d_constraintsVector
 
std::vector< const dealii::AffineConstraints< double > * > d_constraintsVectorElectro
 
const MPI_Comm mpi_communicator
 
const MPI_Comm d_mpiCommParent
 
const MPI_Comm interpoolcomm
 
const MPI_Comm interBandGroupComm
 
const unsigned int n_mpi_processes
 
const unsigned int this_mpi_process
 
dealii::IndexSet locally_owned_dofs
 
dealii::IndexSet locally_owned_dofsEigen
 
dealii::IndexSet locally_relevant_dofs
 
dealii::IndexSet locally_relevant_dofsEigen
 
dealii::IndexSet d_locallyRelevantDofsPRefined
 
dealii::IndexSet d_locallyRelevantDofsRhoNodal
 
std::vector< dealii::types::global_dof_index > local_dof_indicesReal
 
std::vector< dealii::types::global_dof_index > local_dof_indicesImag
 
std::vector< dealii::types::global_dof_index > localProc_dof_indicesReal
 
std::vector< dealii::types::global_dof_index > localProc_dof_indicesImag
 
std::vector< boolselectedDofsHanging
 
forceClass< FEOrder, FEOrderElectro, memorySpace > * forcePtr
 
symmetryClass< FEOrder, FEOrderElectro, memorySpace > * symmetryPtr
 
elpaScalaManagerd_elpaScala
 
poissonSolverProblem< FEOrder, FEOrderElectrod_phiTotalSolverProblem
 
poissonSolverProblem< FEOrder, FEOrderElectrod_phiPrimeSolverProblem
 
bool d_kohnShamDFTOperatorsInitialized
 
KohnShamHamiltonianOperator< memorySpace > * d_kohnShamDFTOperatorPtr
 
const std::string d_dftfeScratchFolderName
 
chebyshevOrthogonalizedSubspaceIterationSolver d_subspaceIterationSolver
 
dftUtils::constraintMatrixInfo constraintsNoneEigenDataInfo
 
dftUtils::constraintMatrixInfo constraintsNoneDataInfo
 
dealii::AffineConstraints< doubleconstraintsNone
 
dealii::AffineConstraints< doubleconstraintsNoneEigen
 
dealii::AffineConstraints< doubled_noConstraints
 
dealii::AffineConstraints< doubled_constraintsForTotalPotentialElectro
 
dealii::AffineConstraints< doubled_constraintsForPhiPrimeElectro
 
dealii::AffineConstraints< doubled_constraintsForHelmholtzRhoNodal
 
dealii::AffineConstraints< doubled_constraintsPRefined
 
dealii::AffineConstraints< doubled_constraintsPRefinedOnlyHanging
 
dealii::AffineConstraints< doubled_constraintsRhoNodal
 
dealii::AffineConstraints< doubled_constraintsRhoNodalOnlyHanging
 
dftUtils::constraintMatrixInfo d_constraintsRhoNodalInfo
 
std::vector< std::vector< double > > eigenValues
 
std::vector< std::vector< double > > d_densityMatDerFermiEnergy
 
std::vector< std::vector< double > > eigenValuesRRSplit
 Spectrum split higher eigenvalues computed in Rayleigh-Ritz step.
 
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOSTd_eigenVectorsFlattenedHost
 
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOSTd_eigenVectorsRotFracDensityFlattenedHost
 
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOSTd_eigenVectorsDensityMatrixPrimeHost
 
dealii::ConditionalOStream pcout
 device eigenvectors
 
dealii::TimerOutput computing_timer
 compute-time logger
 
dealii::TimerOutput computingTimerStandard
 
dealii::Timer d_globalTimer
 
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_densityInQuadValues
 
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_densityOutQuadValues
 
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_densityResidualQuadValues
 
std::vector< distributedCPUVec< double > > d_densityInNodalValues
 
std::vector< distributedCPUVec< double > > d_densityOutNodalValues
 
std::vector< distributedCPUVec< double > > d_densityResidualNodalValues
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTd_phiInQuadValues
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTd_phiOutQuadValues
 
MixingScheme d_mixingScheme
 
distributedCPUVec< doubled_rhoInNodalValuesRead
 
distributedCPUVec< doubled_rhoOutNodalValuesSplit
 
distributedCPUVec< doubled_preCondTotalDensityResidualVector
 
distributedCPUVec< doubled_rhoNodalFieldRefined
 
distributedCPUVec< doubled_rhoOutNodalValuesDistributed
 
distributedCPUVec< doubled_magInNodalValuesRead
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTd_densityTotalOutValuesLpspQuad
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTd_densityTotalInValuesLpspQuad
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTd_gradDensityTotalOutValuesLpspQuad
 
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOSTd_gradDensityTotalInValuesLpspQuad
 
double d_monopole
 
std::vector< doubled_dipole
 
std::vector< doubled_quadrupole
 
std::vector< doubled_smearedChargeMoments
 
bool d_smearedChargeMomentsComputed
 
std::deque< distributedCPUVec< double > > d_vcontainerVals
 for low rank jacobian inverse approximation
 
std::deque< distributedCPUVec< double > > d_fvcontainerVals
 
std::deque< distributedCPUVec< double > > d_vSpin0containerVals
 
std::deque< distributedCPUVec< double > > d_fvSpin0containerVals
 
std::deque< distributedCPUVec< double > > d_vSpin1containerVals
 
std::deque< distributedCPUVec< double > > d_fvSpin1containerVals
 
distributedCPUVec< doubled_residualPredicted
 
unsigned int d_rankCurrentLRD
 
double d_relativeErrorJacInvApproxPrevScfLRD
 
double d_residualNormPredicted
 
bool d_tolReached
 
std::map< dealii::CellId, std::vector< double > > d_rhoAtomsValues
 for xl-bomd
 
std::map< dealii::CellId, std::vector< double > > d_gradRhoAtomsValues
 
std::map< dealii::CellId, std::vector< double > > d_hessianRhoAtomsValues
 
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > d_rhoAtomsValuesSeparate
 
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > d_gradRhoAtomsValuesSeparate
 
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > d_hessianRhoAtomsValuesSeparate
 
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_gradDensityInQuadValues
 
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_gradDensityOutQuadValues
 
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_gradDensityResidualQuadValues
 
distributedCPUVec< doubled_phiTotRhoIn
 
distributedCPUVec< doubled_phiTotRhoOut
 
distributedCPUVec< doubled_phiPrime
 
distributedCPUVec< doubled_phiExt
 
std::deque< distributedCPUVec< double > > d_groundStateDensityHistory
 
std::map< dealii::CellId, std::vector< double > > d_pseudoVLoc
 
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > d_pseudoVLocAtoms
 
std::vector< std::vector< double > > d_localVselfs
 
std::map< dealii::CellId, std::vector< double > > d_rhoCore
 
std::map< dealii::CellId, std::vector< double > > d_gradRhoCore
 
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > d_gradRhoCoreAtoms
 
std::map< dealii::CellId, std::vector< double > > d_hessianRhoCore
 
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > d_hessianRhoCoreAtoms
 
std::map< dealii::types::global_dof_index, doubled_atomNodeIdToChargeMap
 map of atom node number and atomic weight
 
vselfBinsManager< FEOrder, FEOrderElectrod_vselfBinsManager
 vselfBinsManager object
 
std::vector< distributedCPUVec< double > > d_vselfFieldGateauxDerStrainFDBins
 
dftParametersd_dftParamsPtr
 dftParameters object
 
std::vector< doubled_kPointCoordinates
 kPoint cartesian coordinates
 
std::vector< doublekPointReducedCoordinates
 k point crystal coordinates
 
std::vector< doubled_kPointWeights
 k point weights
 
std::vector< dealii::Point< 3 > > d_closestTriaVertexToAtomsLocation
 closest tria vertex
 
std::vector< dealii::Tensor< 1, 3, double > > d_dispClosestTriaVerticesToAtoms
 
unsigned int lowerBoundKindex = 0
 global k index of lower bound of the local k point set
 
double fermiEnergy
 fermi energy
 
double fermiEnergyUp
 
double fermiEnergyDown
 
double d_groundStateEnergy
 
double d_freeEnergyInitial
 
double d_freeEnergy
 
double d_entropicEnergy
 entropic energy
 
std::vector< doublea0
 
std::vector< doublebLow
 
std::vector< boold_isFirstFilteringCall
 
std::vector< doubled_upperBoundUnwantedSpectrumValues
 
distributedCPUVec< doubled_tempEigenVec
 
bool d_isRestartGroundStateCalcFromChk
 
bool scfConverged
 
+ + + + + +

+Friends

class forceClass< FEOrder, FEOrderElectro, memorySpace >
 
class symmetryClass< FEOrder, FEOrderElectro, memorySpace >
 
+

Detailed Description

+
template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+class dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >

This class is the primary interface location of all other parts of the DFT-FE code for all steps involved in obtaining the Kohn-Sham DFT ground-state solution.

+
Author
Shiva Rudraraju, Phani Motamarri, Sambit Das
+

Constructor & Destructor Documentation

+ +

◆ dftClass()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::dftClass (const MPI_Comm & mpiCommParent,
const MPI_Comm & mpi_comm_domain,
const MPI_Comm & interpoolcomm,
const MPI_Comm & interBandGroupComm,
const std::string & scratchFolderName,
dftParameters & dftParams )
+
+ +

dftClass constructor

+
Parameters
+ + + + + + + +
[in]mpi_comm_parentparent communicator
[in]mpi_comm_domainmpi_communicator for domain decomposition parallelization
[in]interpoolcommmpi_communicator for parallelization over k points
[in]interBandGroupCommmpi_communicator for parallelization over bands
[in]scratchFolderNamescratch folder name
[in]dftParamsdftParameters object containg parameter values parsed from an input parameter file in dftfeWrapper class
+
+
+ +
+
+ +

◆ ~dftClass()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::~dftClass ()
+
+ +

dftClass destructor

+ +
+
+

Member Function Documentation

+ +

◆ addAtomicRhoQuadValuesGradients()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::addAtomicRhoQuadValuesGradients (dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & quadratureValueData,
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & quadratureGradValueData,
const bool isConsiderGradData = false )
+
+private
+
+ +

add atomic densities at quadrature points

+ +
+
+ +

◆ aposterioriMeshGenerate()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::aposterioriMeshGenerate ()
+
+private
+
+ +
+
+ +

◆ applyHomogeneousDirichletBC()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::applyHomogeneousDirichletBC (const dealii::DoFHandler< 3 > & _dofHandler,
const dealii::AffineConstraints< double > & onlyHangingNodeConstraints,
dealii::AffineConstraints< double > & constraintMatrix )
+
+private
+
+ +

Sets homegeneous dirichlet boundary conditions for total potential constraints on non-periodic boundary (boundary id==0).

+
Parameters
+ + + +
[in]dofHandler
[out]constraintMatrixdealii::AffineConstraints<double> object with homogeneous Dirichlet boundary condition entries added
+
+
+ +
+
+ +

◆ applyKerkerPreconditionerToTotalDensityResidual()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::applyKerkerPreconditionerToTotalDensityResidual (kerkerSolverProblem< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()> & kerkerPreconditionedResidualSolverProblem,
dealiiLinearSolver & CGSolver,
const distributedCPUVec< double > & residualRho,
distributedCPUVec< double > & preCondTotalDensityResidualVector )
+
+private
+
+ +

Mixing schemes for mixing electron-density.

+ +
+
+ +

◆ applyMultipoleDirichletBC()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::applyMultipoleDirichletBC (const dealii::DoFHandler< 3 > & _dofHandler,
const dealii::AffineConstraints< double > & onlyHangingNodeConstraints,
dealii::AffineConstraints< double > & constraintMatrix )
+
+private
+
+ +

Sets inhomegeneous dirichlet boundary conditions upto quadrupole for total potential constraints on non-periodic boundary (boundary id==0).

+
Parameters
+ + + +
[in]dofHandler
[out]constraintMatrixdealii::AffineConstraints<double> object with inhomogeneous Dirichlet boundary condition entries added
+
+
+ +
+
+ +

◆ applyPeriodicBCHigherOrderNodes()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::applyPeriodicBCHigherOrderNodes ()
+
+private
+
+ +

Computes inner Product and Y = alpha*X + Y for complex vectors used during periodic boundary conditions.

+

Sets dirichlet boundary conditions for total potential constraints on non-periodic boundary (boundary id==0). Currently setting homogeneous bc

+ +
+
+ +

◆ calculateNearestAtomDistances()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::calculateNearestAtomDistances ()
+
+private
+
+ +

a

+ +
+
+ +

◆ calculateSmearedChargeWidths()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::calculateSmearedChargeWidths ()
+
+private
+
+ +

a

+ +
+
+ +

◆ clearRhoData()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::clearRhoData ()
+
+private
+
+ +
+
+ +

◆ compute_fermienergy()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::compute_fermienergy (const std::vector< std::vector< double > > & eigenValuesInput,
const double numElectronsInput )
+
+private
+
+ +

Computes Fermi-energy obtained by imposing constraint on the number of electrons.

+ +
+
+ +

◆ compute_fermienergy_constraintMagnetization()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::compute_fermienergy_constraintMagnetization (const std::vector< std::vector< double > > & eigenValuesInput)
+
+private
+
+ +

Computes Fermi-energy obtained by imposing separate constraints on the number of spin-up and spin-down electrons.

+ +
+
+ +

◆ compute_ldos()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::compute_ldos (const std::vector< std::vector< double > > & eigenValuesInput,
const std::string & fileName )
+
+private
+
+ +
+
+ +

◆ compute_localizationLength()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::compute_localizationLength (const std::string & locLengthFileName)
+
+private
+
+ +

compute localization length

+ +
+
+ +

◆ compute_pdos()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::compute_pdos (const std::vector< std::vector< double > > & eigenValuesInput,
const std::string & fileName )
+
+private
+
+ +
+
+ +

◆ compute_rhoOut()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::compute_rhoOut (const bool isConsiderSpectrumSplitting,
const bool isGroundState = false )
+
+private
+
+ +

Computes output electron-density from wavefunctions.

+ +
+
+ +

◆ compute_tdos()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::compute_tdos (const std::vector< std::vector< double > > & eigenValuesInput,
const unsigned int highestStateOfInterest,
const std::string & fileName )
+
+private
+
+ +

compute density of states and local density of states

+ +
+
+ +

◆ computeMaximumHighestOccupiedStateResidualNorm() [1/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::computeMaximumHighestOccupiedStateResidualNorm (const std::vector< std::vector< double > > & residualNormWaveFunctionsAllkPoints,
const std::vector< std::vector< double > > & eigenValuesAllkPoints,
const double _fermiEnergy )
+
+private
+
+ +

compute the maximum of the residual norm of the highest occupied state among all k points

+ +
+
+ +

◆ computeMaximumHighestOccupiedStateResidualNorm() [2/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::computeMaximumHighestOccupiedStateResidualNorm (const std::vector< std::vector< double > > & residualNormWaveFunctionsAllkPoints,
const std::vector< std::vector< double > > & eigenValuesAllkPoints,
const unsigned int highestState )
+
+private
+
+ +

compute the maximum of the residual norm of the highest state of interest among all k points

+ +
+
+ +

◆ computeMultipoleMoments()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::computeMultipoleMoments (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > & basisOperationsPtr,
const unsigned int densityQuadratureId,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & rhoQuadValues,
const std::map< dealii::CellId, std::vector< double > > * bQuadValues )
+
+private
+
+ +
+
+ +

◆ computeOutputDensityDirectionalDerivative()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::computeOutputDensityDirectionalDerivative (const distributedCPUVec< double > & v,
const distributedCPUVec< double > & vSpin0,
const distributedCPUVec< double > & vSpin1,
distributedCPUVec< double > & fv,
distributedCPUVec< double > & fvSpin0,
distributedCPUVec< double > & fvSpin1 )
+
+ +
+
+ +

◆ computeResidualNodalData()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::computeResidualNodalData (const distributedCPUVec< double > & outValues,
const distributedCPUVec< double > & inValues,
distributedCPUVec< double > & residualValues )
+
+ +
+
+ +

◆ computeResidualQuadData()

+ +
+
+ +

Copies the residual residualValues=outValues-inValues.

+ +
+
+ +

◆ computeRhoInitialGuessFromPSI()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::computeRhoInitialGuessFromPSI (std::vector< std::vector< distributedCPUVec< double > > > eigenVectors)
+
+private
+
+ +
+
+ +

◆ computeRhoNodalFirstOrderResponseFromPSIAndPSIPrime()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::computeRhoNodalFirstOrderResponseFromPSIAndPSIPrime (distributedCPUVec< double > & fv,
distributedCPUVec< double > & fvSpin0,
distributedCPUVec< double > & fvSpin1 )
+
+private
+
+ +
+
+ +

◆ computeRhoNodalFromPSI()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::computeRhoNodalFromPSI (bool isConsiderSpectrumSplitting)
+
+private
+
+ +

computes density nodal data from wavefunctions

+ +
+
+ +

◆ computeRhoNodalMassVector()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::computeRhoNodalMassVector (dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & massVec)
+
+ +

Computes the diagonal mass matrix for rho nodal grid, used for nodal mixing.

+ +
+
+ +

◆ computeStress()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::computeStress ()
+
+virtual
+
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ computeTraceXtHX()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
dataTypes::number dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::computeTraceXtHX (unsigned int numberWaveFunctionsEstimate)
+
+private
+
+ +
+
+ +

◆ computeTraceXtKX()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::computeTraceXtKX (unsigned int numberWaveFunctionsEstimate)
+
+private
+
+ +
+
+ +

◆ computeVolume()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::computeVolume (const dealii::DoFHandler< 3 > & _dofHandler)
+
+private
+
+ +

Computes the volume of the domain.

+ +
+
+ +

◆ computeVselfFieldGateauxDerFD()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::computeVselfFieldGateauxDerFD ()
+
+private
+
+

Compute Gateaux derivative of vself field in bins with respect to affine strain tensor components

+ +
+
+ +

◆ createMasterChargeIdToImageIdMaps()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::createMasterChargeIdToImageIdMaps (const double pspCutOff,
const std::vector< int > & imageIds,
const std::vector< std::vector< double > > & imagePositions,
std::vector< std::vector< int > > & globalChargeIdToImageIdMap )
+
+private
+
+ +
+
+ +

◆ createpRefinedDofHandler()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::createpRefinedDofHandler (dealii::parallel::distributed::Triangulation< 3 > & triangulation)
+
+private
+
+

create a dofHandler containing finite-element interpolating polynomial twice of the original polynomial required for Kerker mixing and initialize various objects related to this refined dofHandler

+ +
+
+ +

◆ deformDomain()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::deformDomain (const dealii::Tensor< 2, 3, double > & deformationGradient,
const bool vselfPerturbationUpdateForStress = false,
const bool useSingleAtomSolutionsOverride = false,
const bool print = true )
+
+privatevirtual
+
+ +

Deforms the domain by the given deformation gradient and reinitializes the dftClass datastructures.

+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ determineAtomsOfInterstPseudopotential()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::determineAtomsOfInterstPseudopotential (const std::vector< std::vector< double > > & atomCoordinates)
+
+private
+
+ +
+
+ +

◆ determineOrbitalFilling()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::determineOrbitalFilling ()
+
+private
+
+ +
+
+ +

◆ fieldGradl2Norm()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::fieldGradl2Norm (const dealii::MatrixFree< 3, double > & matrixFreeDataObject,
const distributedCPUVec< double > & field )
+
+private
+
+ +
+
+ +

◆ finalizeKohnShamDFTOperator()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::finalizeKohnShamDFTOperator ()
+
+ +
+
+ +

◆ generateImageCharges()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::generateImageCharges (const double pspCutOff,
std::vector< int > & imageIds,
std::vector< double > & imageCharges,
std::vector< std::vector< double > > & imagePositions )
+
+private
+
+ +

creates datastructures related to periodic image charges

+ +
+
+ +

◆ generateMPGrid()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::generateMPGrid ()
+
+private
+
+ +
+
+ +

◆ getAtomLocationsCart()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
std::vector< std::vector< double > > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::getAtomLocationsCart () const
+
+virtual
+
+ +

Gets the current atom Locations in cartesian form (origin at center of domain) from dftClass.

+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getAtomLocationsFrac()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
std::vector< std::vector< double > > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::getAtomLocationsFrac () const
+
+virtual
+
+ +

Gets the current atom Locations in fractional form from dftClass (only applicable for periodic and semi-periodic BCs)

+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getAtomTypes()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
std::set< unsigned int > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::getAtomTypes () const
+
+virtual
+
+ +

Gets the current atom types from dftClass.

+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getCell()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
std::vector< std::vector< double > > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::getCell () const
+
+virtual
+
+ +

Gets the current cell lattice vectors.

+
Returns
std::vector<std::vector<double>> 3 \times 3 matrix,lattice[i][j] corresponds to jth component of ith lattice vector
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getCellStress()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
dealii::Tensor< 2, 3, double > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::getCellStress () const
+
+virtual
+
+ +

Gets the current cell stress from dftClass.

+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getCellVolume()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::getCellVolume () const
+
+virtual
+
+ +

Gets the current cell volume.

+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getEntropicEnergy()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::getEntropicEnergy () const
+
+virtual
+
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getForceonAtoms()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
std::vector< double > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::getForceonAtoms () const
+
+virtual
+
+ +

Gets the current atomic forces from dftClass.

+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getFreeEnergy()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::getFreeEnergy () const
+
+virtual
+
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getInternalEnergy()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::getInternalEnergy () const
+
+virtual
+
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getLocalDofIndicesImag()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const std::vector< dealii::types::global_dof_index > & dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::getLocalDofIndicesImag () const
+
+ +

Get local dofs global indices imag.

+ +
+
+ +

◆ getLocalDofIndicesReal()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const std::vector< dealii::types::global_dof_index > & dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::getLocalDofIndicesReal () const
+
+ +

Get local dofs global indices real.

+ +
+
+ +

◆ getLocalProcDofIndicesImag()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const std::vector< dealii::types::global_dof_index > & dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::getLocalProcDofIndicesImag () const
+
+ +

Get local dofs local proc indices imag.

+ +
+
+ +

◆ getLocalProcDofIndicesReal()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const std::vector< dealii::types::global_dof_index > & dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::getLocalProcDofIndicesReal () const
+
+ +

Get local dofs local proc indices real.

+ +
+
+ +

◆ getMatrixFreeData()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const dealii::MatrixFree< 3, double > & dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::getMatrixFreeData () const
+
+ +

Get matrix free data object.

+ +
+
+ +

◆ getParametersObject()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
dftParameters & dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::getParametersObject () const
+
+virtual
+
+ +

Get reference to dftParameters object.

+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getRhoNodalOut()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
distributedCPUVec< double > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::getRhoNodalOut () const
+
+virtual
+
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getRhoNodalSplitOut()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
distributedCPUVec< double > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::getRhoNodalSplitOut () const
+
+virtual
+
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ getTotalChargeforRhoSplit()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::getTotalChargeforRhoSplit ()
+
+virtual
+
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ init()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::init ()
+
+virtual
+
+ +

Does KSDFT problem pre-processing steps including mesh generation calls.

+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ initAtomicRho()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::initAtomicRho ()
+
+private
+
+ +
+
+ +

◆ initBoundaryConditions()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::initBoundaryConditions (const bool recomputeBasisData = true,
const bool meshOnlyDeformed = false,
const bool vselfPerturbationUpdateForStress = false )
+
+private
+
+ +
+
+ +

◆ initCoreRho()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::initCoreRho ()
+
+private
+
+ +
+
+ +

◆ initElectronicFields()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::initElectronicFields ()
+
+private
+
+ +
+
+ +

◆ initializeKohnShamDFTOperator()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::initializeKohnShamDFTOperator (const bool initializeCublas = true)
+
+ +
+
+ +

◆ initImageChargesUpdateKPoints()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::initImageChargesUpdateKPoints (bool flag = true)
+
+private
+
+ +

generate image charges and update k point cartesian coordinates based on current lattice vectors

+ +
+
+ +

◆ initLocalPseudoPotential()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::initLocalPseudoPotential (const dealii::DoFHandler< 3 > & _dofHandler,
const unsigned int lpspQuadratureId,
const dealii::MatrixFree< 3, double > & _matrix_free_data,
const unsigned int _phiExtDofHandlerIndex,
const dealii::AffineConstraints< double > & phiExtConstraintMatrix,
const std::map< dealii::types::global_dof_index, dealii::Point< 3 > > & supportPoints,
const vselfBinsManager< FEOrder, FEOrderElectro > & vselfBinManager,
distributedCPUVec< double > & phiExt,
std::map< dealii::CellId, std::vector< double > > & _pseudoValues,
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & _pseudoValuesAtoms )
+
+private
+
+ +
+
+ +

◆ initNoRemesh()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::initNoRemesh (const bool updateImagesAndKPointsAndVselfBins = true,
const bool checkSmearedChargeWidthsForOverlap = true,
const bool useSingleAtomSolutionOverride = false,
const bool isMeshDeformed = false )
+
+ +

Does KSDFT problem pre-processing steps but without remeshing.

+ +
+
+ +

◆ initnscf()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::initnscf (KohnShamHamiltonianOperator< memorySpace > & kohnShamDFTEigenOperator,
poissonSolverProblem< FEOrder, FEOrderElectro > & phiTotalSolverProblem,
dealiiLinearSolver & CGSolver )
+
+private
+
+ +
+
+ +

◆ initpRefinedObjects()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::initpRefinedObjects (const bool recomputeBasisData,
const bool meshOnlyDeformed,
const bool vselfPerturbationUpdateForStress = false )
+
+private
+
+ +
+
+ +

◆ initPseudoPotentialAll()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::initPseudoPotentialAll (const bool updateNonlocalSparsity = true)
+
+private
+
+ +
+
+ +

◆ initRho()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::initRho ()
+
+private
+
+ +
+
+ +

◆ initUnmovedTriangulation()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::initUnmovedTriangulation (dealii::parallel::distributed::Triangulation< 3 > & triangulation)
+
+private
+
+

Initializes the guess of electron-density and single-atom wavefunctions on the mesh, maps finite-element nodes to given atomic positions, initializes pseudopotential files and exchange-correlation functionals to be used based on user-choice. In periodic problems, periodic faces are mapped here. Further finite-element nodes to be pinned for solving the Poisson problem electro-static potential is set here

+ +
+
+ +

◆ interpolateDensityNodalDataToQuadratureDataGeneral()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::interpolateDensityNodalDataToQuadratureDataGeneral (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > & basisOperationsPtr,
const unsigned int dofHandlerId,
const unsigned int quadratureId,
const distributedCPUVec< double > & nodalField,
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & quadratureValueData,
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & quadratureGradValueData,
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & quadratureHessianValueData,
const bool isEvaluateGradData = false,
const bool isEvaluateHessianData = false )
+
+private
+
+ +

interpolate rho nodal data to quadrature data using FEEvaluation

+
Parameters
+ + + + + + +
[in]basisOperationsPtrbasisoperationsPtr object
[in]nodalFieldnodal data to be interpolated
[out]quadratureValueDatato be computed at quadrature points
[out]quadratureGradValueDatato be computed at quadrature points
[in]isEvaluateGradDatadenotes a flag to evaluate gradients or not
+
+
+ +
+
+ +

◆ interpolateDensityNodalDataToQuadratureDataLpsp()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::interpolateDensityNodalDataToQuadratureDataLpsp (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > & basisOperationsPtr,
const unsigned int dofHandlerId,
const unsigned int quadratureId,
const distributedCPUVec< double > & nodalField,
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & quadratureValueData,
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & quadratureGradValueData,
const bool isEvaluateGradData )
+
+private
+
+ +

interpolate rho nodal data to quadrature data using FEEvaluation

+
Parameters
+ + + + + + +
[in]basisOperationsPtrbasisoperationsPtr object
[in]nodalFieldnodal data to be interpolated
[out]quadratureValueDatato be computed at quadrature points
[out]quadratureGradValueDatato be computed at quadrature points
[in]isEvaluateGradDatadenotes a flag to evaluate gradients or not
+
+
+ +
+
+ +

◆ interpolateElectroNodalDataToQuadratureDataGeneral()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::interpolateElectroNodalDataToQuadratureDataGeneral (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > & basisOperationsPtr,
const unsigned int dofHandlerId,
const unsigned int quadratureId,
const distributedCPUVec< double > & nodalField,
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & quadratureValueData,
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & quadratureGradValueData,
const bool isEvaluateGradData = false )
+
+private
+
+ +

interpolate nodal data to quadrature data using FEEvaluation

+
Parameters
+ + + + + + +
[in]matrixFreeDatamatrix free data object
[in]nodalFieldnodal data to be interpolated
[out]quadratureValueDatato be computed at quadrature points
[out]quadratureGradValueDatato be computed at quadrature points
[in]isEvaluateGradDatadenotes a flag to evaluate gradients or not
+
+
+ +
+
+ +

◆ kohnShamEigenSpaceCompute()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::kohnShamEigenSpaceCompute (const unsigned int s,
const unsigned int kPointIndex,
KohnShamHamiltonianOperator< dftfe::utils::MemorySpace::HOST > & kohnShamDFTEigenOperator,
elpaScalaManager & elpaScala,
chebyshevOrthogonalizedSubspaceIterationSolver & subspaceIterationSolver,
std::vector< double > & residualNormWaveFunctions,
const bool computeResidual,
const bool isSpectrumSplit = false,
const bool useMixedPrec = false,
const bool isFirstScf = false )
+
+private
+
+ +
+
+ +

◆ kohnShamEigenSpaceComputeNSCF()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::kohnShamEigenSpaceComputeNSCF (const unsigned int spinType,
const unsigned int kPointIndex,
KohnShamHamiltonianOperator< dftfe::utils::MemorySpace::HOST > & kohnShamDFTEigenOperator,
chebyshevOrthogonalizedSubspaceIterationSolver & subspaceIterationSolver,
std::vector< double > & residualNormWaveFunctions,
unsigned int ipass )
+
+private
+
+ +
+
+ +

◆ kohnShamEigenSpaceFirstOrderDensityMatResponse()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::kohnShamEigenSpaceFirstOrderDensityMatResponse (const unsigned int s,
const unsigned int kPointIndex,
KohnShamHamiltonianOperator< dftfe::utils::MemorySpace::HOST > & kohnShamDFTEigenOperator,
elpaScalaManager & elpaScala )
+
+private
+
+ +
+
+ +

◆ l2ProjectionQuadDensityMinusAtomicDensity()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::l2ProjectionQuadDensityMinusAtomicDensity (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > & basisOperationsPtr,
const dealii::AffineConstraints< double > & constraintMatrix,
const unsigned int dofHandlerId,
const unsigned int quadratureId,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & quadratureValueData,
distributedCPUVec< double > & nodalField )
+
+private
+
+ +

l2 projection

+ +
+
+ +

◆ l2ProjectionQuadToNodal()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::l2ProjectionQuadToNodal (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > & basisOperationsPtr,
const dealii::AffineConstraints< double > & constraintMatrix,
const unsigned int dofHandlerId,
const unsigned int quadratureId,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & quadratureValueData,
distributedCPUVec< double > & nodalField )
+
+private
+
+ +

l2 projection

+ +
+
+ +

◆ loadPSIFiles()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::loadPSIFiles (unsigned int Z,
unsigned int n,
unsigned int l,
unsigned int & flag )
+
+private
+
+ +
+
+ +

◆ loadTriaInfoAndRhoNodalData()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::loadTriaInfoAndRhoNodalData ()
+
+private
+
+ +

load triangulation information rho quadrature data from checkpoint file for restarted run

+ +
+
+ +

◆ locateAtomCoreNodes()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::locateAtomCoreNodes (const dealii::DoFHandler< 3 > & _dofHandler,
std::map< dealii::types::global_dof_index, double > & atomNodeIdToChargeValueMap )
+
+private
+
+ +

Finds the global dof ids of the nodes containing atoms.

+
Parameters
+ + + +
[in]dofHandler
[out]atomNodeIdToChargeValueMaplocal map of global dof id to atom charge id
+
+
+ +
+
+ +

◆ locatePeriodicPinnedNodes()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::locatePeriodicPinnedNodes (const dealii::DoFHandler< 3 > & _dofHandler,
const dealii::AffineConstraints< double > & constraintMatrixBase,
dealii::AffineConstraints< double > & constraintMatrix )
+
+private
+
+ +

Sets homogeneous dirichlet boundary conditions on a node farthest from all atoms (pinned node). This is only done in case of periodic boundary conditions to get an unique solution to the total electrostatic potential problem.

+
Parameters
+ + + + +
[in]dofHandler
[in]constraintMatrixBasebase dealii::AffineConstraints<double> object
[out]constraintMatrixdealii::AffineConstraints<double> object with homogeneous Dirichlet boundary condition entries added
+
+
+ +
+
+ +

◆ lowrankApproxScfDielectricMatrixInv()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::lowrankApproxScfDielectricMatrixInv (const unsigned int scfIter)
+
+private
+
+ +
+
+ +

◆ lowrankApproxScfDielectricMatrixInvSpinPolarized()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::lowrankApproxScfDielectricMatrixInvSpinPolarized (const unsigned int scfIter)
+
+private
+
+ +
+
+ +

◆ moveMeshToAtoms()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::moveMeshToAtoms (dealii::Triangulation< 3, 3 > & triangulationMove,
dealii::Triangulation< 3, 3 > & triangulationSerial,
bool reuseFlag = false,
bool moveSubdivided = false )
+
+private
+
+ +

moves the triangulation vertices using Gaussians such that the all atoms are on triangulation vertices

+ +
+
+ +

◆ noRemeshRhoDataInit()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::noRemeshRhoDataInit ()
+
+private
+
+ +
+
+ +

◆ normalizeAtomicRhoQuadValues()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::normalizeAtomicRhoQuadValues ()
+
+private
+
+ +

normalize the electron density

+ +
+
+ +

◆ normalizeRhoInQuadValues()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::normalizeRhoInQuadValues ()
+
+private
+
+ +

normalize the input electron density

+ +
+
+ +

◆ normalizeRhoOutQuadValues()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::normalizeRhoOutQuadValues ()
+
+private
+
+ +

normalize the output electron density in each scf

+ +
+
+ +

◆ nscf()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::nscf (KohnShamHamiltonianOperator< memorySpace > & kohnShamDFTEigenOperator,
chebyshevOrthogonalizedSubspaceIterationSolver & subspaceIterationSolver )
+
+private
+
+ +
+
+ +

◆ outputDensity()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::outputDensity ()
+
+private
+
+ +

write electron density solution fields

+ +
+
+ +

◆ outputWfc()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::outputWfc ()
+
+private
+
+ +

write wavefunction solution fields

+ +
+
+ +

◆ projectPreviousGroundStateRho()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::projectPreviousGroundStateRho ()
+
+private
+
+ +

project ground state electron density from previous mesh into the new mesh to be used as initial guess for the new ground state solve

+ +
+
+ +

◆ readkPointData()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::readkPointData ()
+
+ +
+
+ +

◆ readPSI()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::readPSI ()
+
+private
+
+ +
+
+ +

◆ readPSIRadialValues()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::readPSIRadialValues ()
+
+private
+
+ +
+
+ +

◆ recomputeKPointCoordinates()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::recomputeKPointCoordinates ()
+
+private
+
+

Recomputes the k point cartesian coordinates from the crystal k point coordinates and the current lattice vectors, which can change in each ground state solve dutring cell optimization.

+ +
+
+ +

◆ reInitializeKohnShamDFTOperator()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::reInitializeKohnShamDFTOperator ()
+
+ +
+
+ +

◆ resetRhoNodalIn()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::resetRhoNodalIn (distributedCPUVec< double > & OutDensity)
+
+virtual
+
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ resetRhoNodalSplitIn()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
virtual void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::resetRhoNodalSplitIn (distributedCPUVec< double > & OutDensity)
+
+virtual
+
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ rhofieldInnerProduct()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::rhofieldInnerProduct (const dealii::MatrixFree< 3, double > & matrixFreeDataObject,
const distributedCPUVec< double > & rhoNodalField1,
const distributedCPUVec< double > & rhoNodalField2,
const unsigned int dofHandlerId,
const unsigned int quadratureId )
+
+private
+
+ +
+
+ +

◆ rhofieldl2Norm()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::rhofieldl2Norm (const dealii::MatrixFree< 3, double > & matrixFreeDataObject,
const distributedCPUVec< double > & rhoNodalField,
const unsigned int dofHandlerId,
const unsigned int quadratureId )
+
+private
+
+ +
+
+ +

◆ run()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::run ()
+
+virtual
+
+ +

FIXME: legacy call, move to main.cc.

+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ saveTriaInfoAndRhoNodalData()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::saveTriaInfoAndRhoNodalData ()
+
+private
+
+ +

save triangulation information and rho quadrature data to checkpoint file for restarts

+ +
+
+ +

◆ set()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::set ()
+
+virtual
+
+ +

atomic system pre-processing steps.

+

Reads the coordinates of the atoms. If periodic calculation, reads fractional coordinates of atoms in the unit-cell, lattice vectors, kPoint quadrature rules to be used and also generates image atoms. Also determines orbital-ordering

+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ solve()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + +
std::tuple< bool, double > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::solve (const bool computeForces = true,
const bool computestress = true,
const bool restartGroundStateCalcFromChk = false )
+
+virtual
+
+ +

Kohn-Sham ground-state solve using SCF iteration.

+
Returns
tuple of boolean flag on whether scf converged, and L2 norm of residual electron-density of the last SCF iteration step
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ solveNoSCF()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::solveNoSCF ()
+
+ +

compute approximation to ground-state without solving the SCF iteration

+ +
+
+ +

◆ totalCharge() [1/4]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::totalCharge (const dealii::DoFHandler< 3 > & dofHandlerOfField,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & rhoQuadValues )
+
+private
+
+ +
+
+ +

◆ totalCharge() [2/4]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::totalCharge (const dealii::DoFHandler< 3 > & dofHandlerOfField,
const distributedCPUVec< double > & rhoNodalField )
+
+private
+
+ +

Computes total charge by integrating the electron-density.

+ +
+
+ +

◆ totalCharge() [3/4]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::totalCharge (const dealii::DoFHandler< 3 > & dofHandlerOfField,
const std::map< dealii::CellId, std::vector< double > > * rhoQuadValues )
+
+private
+
+ +
+
+ +

◆ totalCharge() [4/4]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::totalCharge (const dealii::MatrixFree< 3, double > & matrixFreeDataObject,
const distributedCPUVec< double > & rhoNodalField )
+
+private
+
+ +
+
+ +

◆ totalMagnetization()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::totalMagnetization (const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & magQuadValues)
+
+private
+
+ +

Computes net magnetization from the difference of local spin densities.

+ +
+
+ +

◆ trivialSolveForStress()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::trivialSolveForStress ()
+
+virtual
+
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ updateAtomPositionsAndMoveMesh()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::updateAtomPositionsAndMoveMesh (const std::vector< dealii::Tensor< 1, 3, double > > & globalAtomsDisplacements,
const double maxJacobianRatioFactor = 1.25,
const bool useSingleAtomSolutionsOverride = false )
+
+virtual
+
+ +

Updates atom positions, remeshes/moves mesh and calls appropriate reinits.

+

Function to update the atom positions and mesh based on the provided displacement input. Depending on the maximum displacement magnitude this function decides wether to do auto remeshing or move mesh using Gaussian functions. Additionaly this function also wraps the atom position across the periodic boundary if the atom moves across it beyond a certain magnitude. In case of floating atoms, only the atomic positions are updated keeping the mesh fixed. This function also calls initNoRemesh to reinitialize all the required FEM and KSDFT objects.

+
Parameters
+ + +
[in]globalAtomsDisplacementsvector containing the displacements (from current position) of all atoms (global).
+
+
+
Returns
void.
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ updatePRefinedConstraints()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::updatePRefinedConstraints ()
+
+private
+
+ +
+
+ +

◆ writeBands()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::writeBands ()
+
+private
+
+ +

write the KS eigen values for given BZ sampling/path

+ +
+
+ +

◆ writeDomainAndAtomCoordinates() [1/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::writeDomainAndAtomCoordinates ()
+
+virtual
+
+ +

writes the current domain bounding vectors and atom coordinates to files, which are required for geometry relaxation restart

+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ writeDomainAndAtomCoordinates() [2/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::writeDomainAndAtomCoordinates (const std::string Path) const
+
+virtual
+
+ +

writes the current domain bounding vectors and atom coordinates to files for structural optimization and dynamics restarts. The coordinates are stored as: 1. fractional for semi-periodic/periodic 2. Cartesian for non-periodic.

+
Parameters
+ + +
[in]PathThe folder path to store the atom coordinates required during restart.
+
+
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ writeGSElectronDensity()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
virtual void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::writeGSElectronDensity (const std::string Path) const
+
+virtual
+
+ +

writes quadrature grid information and associated spin-up and spin-down electron-density for post-processing

+
Parameters
+ + +
[in]PathThe folder path to store the atomistics data.
+
+
+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ writeMesh() [1/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::writeMesh ()
+
+virtual
+
+ +

Writes inital density and mesh to file.

+ +

Implements dftfe::dftBase.

+ +
+
+ +

◆ writeMesh() [2/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::writeMesh (std::string meshFileName)
+
+private
+
+ +
+
+ +

◆ writeStructureEnergyForcesDataPostProcess()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::writeStructureEnergyForcesDataPostProcess (const std::string Path) const
+
+virtual
+
+ +

writes atomistics data for subsequent post-processing. Related to WRITE STRUCTURE ENERGY FORCES DATA POST PROCESS input parameter.

+
Parameters
+ + +
[in]PathThe folder path to store the atomistics data.
+
+
+ +

Implements dftfe::dftBase.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ forceClass< FEOrder, FEOrderElectro, memorySpace >

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
friend class forceClass< FEOrder, FEOrderElectro, memorySpace >
+
+friend
+
+ +
+
+ +

◆ symmetryClass< FEOrder, FEOrderElectro, memorySpace >

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
friend class symmetryClass< FEOrder, FEOrderElectro, memorySpace >
+
+friend
+
+ +
+
+

Member Data Documentation

+ +

◆ a0

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::a0
+
+private
+
+ +
+
+ +

◆ atomLocations

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::atomLocations
+
+private
+
+ +

FIXME: remove atom type atributes from atomLocations.

+ +
+
+ +

◆ atomLocationsFractional

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::atomLocationsFractional
+
+private
+
+ +
+
+ +

◆ atomTypes

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::set<unsigned int> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::atomTypes
+
+private
+
+ +
+
+ +

◆ bLow

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::bLow
+
+private
+
+ +
+
+ +

◆ computing_timer

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::TimerOutput dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::computing_timer
+
+private
+
+ +

compute-time logger

+ +
+
+ +

◆ computingTimerStandard

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::TimerOutput dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::computingTimerStandard
+
+private
+
+ +
+
+ +

◆ constraintsNone

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::constraintsNone
+
+private
+
+ +
+
+ +

◆ constraintsNoneDataInfo

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftUtils::constraintMatrixInfo dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::constraintsNoneDataInfo
+
+private
+
+

object which is used to store dealii constraint matrix information using STL vectors. The relevant dealii constraint matrix has hanging node constraints used in Poisson problem solution

+ +
+
+ +

◆ constraintsNoneEigen

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::constraintsNoneEigen
+
+private
+
+ +
+
+ +

◆ constraintsNoneEigenDataInfo

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftUtils::constraintMatrixInfo dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::constraintsNoneEigenDataInfo
+
+private
+
+

constraint Matrices object which is used to store dealii constraint matrix information using STL vectors. The relevant dealii constraint matrix has hanging node constraints and periodic constraints(for periodic +problems) used in eigen solve

+ +
+
+ +

◆ d_affineTransformMesh

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
meshMovementAffineTransform dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_affineTransformMesh
+
+private
+
+ +

affine transformation object

+ +
+
+ +

◆ d_atomicRhoScalingFac

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_atomicRhoScalingFac
+
+private
+
+ +
+
+ +

◆ d_atomIdPseudopotentialInterestToGlobalId

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<unsigned int, unsigned int> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_atomIdPseudopotentialInterestToGlobalId
+
+private
+
+ +
+
+ +

◆ d_atomLocationsAutoMesh

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_atomLocationsAutoMesh
+
+private
+
+ +
+
+ +

◆ d_atomLocationsInterestPseudopotential

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_atomLocationsInterestPseudopotential
+
+private
+
+ +
+
+ +

◆ d_atomNodeIdToChargeMap

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<dealii::types::global_dof_index, double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_atomNodeIdToChargeMap
+
+private
+
+ +

map of atom node number and atomic weight

+ +
+
+ +

◆ d_atomsDisplacementsGaussianRead

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<dealii::Tensor<1, 3, double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_atomsDisplacementsGaussianRead
+
+private
+
+ +

Gaussian displacements of atoms read from file.

+ +
+
+ +

◆ d_atomTypeAtributes

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<unsigned int, unsigned int> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_atomTypeAtributes
+
+private
+
+

FIXME: eventually it should be a map of atomic number to struct- {valence number, mesh input etc}

+ +
+
+ +

◆ d_autoMesh

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_autoMesh
+
+private
+
+ +
+
+ +

◆ d_autoMeshMaxJacobianRatio

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_autoMeshMaxJacobianRatio
+
+private
+
+ +
+
+ +

◆ d_baseDofHandlerIndexElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_baseDofHandlerIndexElectro
+
+private
+
+ +
+
+ +

◆ d_basisOperationsPtrElectroHost

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr< dftfe::basis:: FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_basisOperationsPtrElectroHost
+
+private
+
+ +
+
+ +

◆ d_basisOperationsPtrHost

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr< dftfe::basis::FEBasisOperations<dataTypes::number, double, dftfe::utils::MemorySpace::HOST> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_basisOperationsPtrHost
+
+private
+
+ +
+
+ +

◆ d_bCellNonTrivialAtomIds

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<unsigned int> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_bCellNonTrivialAtomIds
+
+private
+
+

map of cell and non-trivial global atom ids (no images) for smeared charges for each bin

+ +
+
+ +

◆ d_bCellNonTrivialAtomIdsBins

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::map<dealii::CellId, std::vector<unsigned int> > > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_bCellNonTrivialAtomIdsBins
+
+private
+
+

map of cell and non-trivial global atom ids (no images) for smeared charge for each bin

+ +
+
+ +

◆ d_bCellNonTrivialAtomImageIds

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<unsigned int> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_bCellNonTrivialAtomImageIds
+
+private
+
+

map of cell and non-trivial global atom and image ids for smeared charges for each bin

+ +
+
+ +

◆ d_bCellNonTrivialAtomImageIdsBins

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::map<dealii::CellId, std::vector<unsigned int> > > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_bCellNonTrivialAtomImageIdsBins
+
+private
+
+

map of cell and non-trivial global atom and image ids for smeared charge for each bin

+ +
+
+ +

◆ d_binsStartDofHandlerIndexElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_binsStartDofHandlerIndexElectro
+
+private
+
+ +
+
+ +

◆ d_BLASWrapperPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper<dftfe::utils::MemorySpace::HOST> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_BLASWrapperPtr
+
+private
+
+ +
+
+ +

◆ d_BLASWrapperPtrHost

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper<dftfe::utils::MemorySpace::HOST> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_BLASWrapperPtrHost
+
+private
+
+ +
+
+ +

◆ d_bQuadAtomIdsAllAtoms

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<int> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_bQuadAtomIdsAllAtoms
+
+private
+
+ +

non-intersecting smeared charges atom ids of all atoms at quad points

+ +
+
+ +

◆ d_bQuadAtomIdsAllAtomsImages

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<int> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_bQuadAtomIdsAllAtomsImages
+
+private
+
+

non-intersecting smeared charges atom ids of all atoms (with image atom ids separately accounted) at quad points

+ +
+
+ +

◆ d_bQuadValuesAllAtoms

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_bQuadValuesAllAtoms
+
+private
+
+ +

non-intersecting smeared charges of all atoms at quad points

+ +
+
+ +

◆ d_closestTriaVertexToAtomsLocation

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<dealii::Point<3> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_closestTriaVertexToAtomsLocation
+
+private
+
+ +

closest tria vertex

+ +
+
+ +

◆ d_constraintsForHelmholtzRhoNodal

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_constraintsForHelmholtzRhoNodal
+
+private
+
+ +
+
+ +

◆ d_constraintsForPhiPrimeElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_constraintsForPhiPrimeElectro
+
+private
+
+ +
+
+ +

◆ d_constraintsForTotalPotentialElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_constraintsForTotalPotentialElectro
+
+private
+
+ +
+
+ +

◆ d_constraintsPRefined

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_constraintsPRefined
+
+private
+
+ +
+
+ +

◆ d_constraintsPRefinedOnlyHanging

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_constraintsPRefinedOnlyHanging
+
+private
+
+ +
+
+ +

◆ d_constraintsRhoNodal

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_constraintsRhoNodal
+
+private
+
+ +
+
+ +

◆ d_constraintsRhoNodalInfo

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftUtils::constraintMatrixInfo dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_constraintsRhoNodalInfo
+
+private
+
+ +
+
+ +

◆ d_constraintsRhoNodalOnlyHanging

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_constraintsRhoNodalOnlyHanging
+
+private
+
+ +
+
+ +

◆ d_constraintsVector

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<const dealii::AffineConstraints<double> *> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_constraintsVector
+
+private
+
+ +
+
+ +

◆ d_constraintsVectorElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<const dealii::AffineConstraints<double> *> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_constraintsVectorElectro
+
+private
+
+ +
+
+ +

◆ d_controlPointLocationsCurrentMove

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<dealii::Point<3> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_controlPointLocationsCurrentMove
+
+private
+
+ +
+
+ +

◆ d_densityDofHandlerIndex

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_densityDofHandlerIndex
+
+private
+
+ +
+
+ +

◆ d_densityDofHandlerIndexElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_densityDofHandlerIndexElectro
+
+private
+
+ +
+
+ +

◆ d_densityInNodalValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_densityInNodalValues
+
+private
+
+ +
+
+ +

◆ d_densityInQuadValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector< dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_densityInQuadValues
+
+private
+
+ +
+
+ +

◆ d_densityMatDerFermiEnergy

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_densityMatDerFermiEnergy
+
+private
+
+ +
+
+ +

◆ d_densityOutNodalValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_densityOutNodalValues
+
+private
+
+ +
+
+ +

◆ d_densityOutQuadValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector< dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_densityOutQuadValues
+
+private
+
+ +
+
+ +

◆ d_densityQuadratureId

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_densityQuadratureId
+
+private
+
+ +
+
+ +

◆ d_densityQuadratureIdElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_densityQuadratureIdElectro
+
+private
+
+ +
+
+ +

◆ d_densityResidualNodalValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_densityResidualNodalValues
+
+private
+
+ +
+
+ +

◆ d_densityResidualQuadValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector< dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_densityResidualQuadValues
+
+private
+
+ +
+
+ +

◆ d_densityTotalInValuesLpspQuad

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_densityTotalInValuesLpspQuad
+
+private
+
+ +
+
+ +

◆ d_densityTotalOutValuesLpspQuad

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_densityTotalOutValuesLpspQuad
+
+private
+
+ +
+
+ +

◆ d_dftfeScratchFolderName

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const std::string dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_dftfeScratchFolderName
+
+private
+
+ +
+
+ +

◆ d_dftParamsPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftParameters* dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_dftParamsPtr
+
+private
+
+ +

dftParameters object

+ +
+
+ +

◆ d_dipole

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_dipole
+
+private
+
+ +
+
+ +

◆ d_dispClosestTriaVerticesToAtoms

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<dealii::Tensor<1, 3, double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_dispClosestTriaVerticesToAtoms
+
+private
+
+ +
+
+ +

◆ d_dispersionCorr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dispersionCorrection dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_dispersionCorr
+
+private
+
+ +
+
+ +

◆ d_dofHandlerPRefined

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::DoFHandler<3> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_dofHandlerPRefined
+
+private
+
+ +
+
+ +

◆ d_dofHandlerRhoNodal

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::DoFHandler<3> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_dofHandlerRhoNodal
+
+private
+
+ +
+
+ +

◆ d_domainBoundingVectors

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_domainBoundingVectors
+
+private
+
+ +
+
+ +

◆ d_domainVolume

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_domainVolume
+
+private
+
+ +

volume of the domain

+ +
+
+ +

◆ d_eigenDofHandlerIndex

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_eigenDofHandlerIndex
+
+private
+
+ +
+
+ +

◆ d_eigenVectorsDensityMatrixPrimeHost

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<dataTypes::number, dftfe::utils::MemorySpace::HOST> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_eigenVectorsDensityMatrixPrimeHost
+
+private
+
+ +
+
+ +

◆ d_eigenVectorsFlattenedHost

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<dataTypes::number, dftfe::utils::MemorySpace::HOST> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_eigenVectorsFlattenedHost
+
+private
+
+

The indexing of d_eigenVectorsFlattenedHost and d_eigenVectorsFlattenedDevice [kPoint * numSpinComponents * numLocallyOwnedNodes * numWaveFunctions + iSpin * numLocallyOwnedNodes * numWaveFunctions + iNode * numWaveFunctions + iWaveFunction]

+ +
+
+ +

◆ d_eigenVectorsRotFracDensityFlattenedHost

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<dataTypes::number, dftfe::utils::MemorySpace::HOST> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_eigenVectorsRotFracDensityFlattenedHost
+
+private
+
+ +
+
+ +

◆ d_elpaScala

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
elpaScalaManager* dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_elpaScala
+
+private
+
+ +
+
+ +

◆ d_entropicEnergy

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_entropicEnergy
+
+private
+
+ +

entropic energy

+ +
+
+ +

◆ d_excManagerPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr<excManager> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_excManagerPtr
+
+private
+
+ +
+
+ +

◆ d_feOrderPlusOneQuadratureId

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_feOrderPlusOneQuadratureId
+
+private
+
+ +
+
+ +

◆ d_flatTopWidthsAutoMeshMove

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_flatTopWidthsAutoMeshMove
+
+private
+
+

flat top widths for all domain atoms in case of automesh mesh movement composite gaussian

+ +
+
+ +

◆ d_forceDofHandlerIndex

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_forceDofHandlerIndex
+
+private
+
+ +
+
+ +

◆ d_forceDofHandlerIndexElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_forceDofHandlerIndexElectro
+
+private
+
+ +
+
+ +

◆ d_freeEnergy

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_freeEnergy
+
+private
+
+ +
+
+ +

◆ d_freeEnergyInitial

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_freeEnergyInitial
+
+private
+
+ +
+
+ +

◆ d_fvcontainerVals

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::deque<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_fvcontainerVals
+
+private
+
+ +
+
+ +

◆ d_fvSpin0containerVals

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::deque<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_fvSpin0containerVals
+
+private
+
+ +
+
+ +

◆ d_fvSpin1containerVals

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::deque<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_fvSpin1containerVals
+
+private
+
+ +
+
+ +

◆ d_gaussianConstantsAutoMesh

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_gaussianConstantsAutoMesh
+
+private
+
+

Gaussian constants for automesh mesh movement stored for all domain atoms

+ +
+
+ +

◆ d_gaussianConstantsForce

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_gaussianConstantsForce
+
+private
+
+

Gaussian generator parameter for force computation and Gaussian deformation of atoms and FEM mesh Gaussian generator: Gamma(r)= exp(-(r/d_gaussianConstant)^2) Stored for all domain atoms

+ +
+
+ +

◆ d_gaussianMovementAtomsNetDisplacements

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<dealii::Tensor<1, 3, double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_gaussianMovementAtomsNetDisplacements
+
+private
+
+ +
+
+ +

◆ d_gaussianMovePar

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
meshMovementGaussianClass dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_gaussianMovePar
+
+private
+
+ +

meshMovementGaussianClass object

+ +
+
+ +

◆ d_generatorFlatTopWidths

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_generatorFlatTopWidths
+
+private
+
+ +

composite generator flat top widths for all domain atoms

+ +
+
+ +

◆ d_gllQuadratureId

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_gllQuadratureId
+
+private
+
+ +
+
+ +

◆ d_globalChargeIdToImageIdMap

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<int> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_globalChargeIdToImageIdMap
+
+private
+
+ +

globalChargeId to ImageChargeId Map

+ +
+
+ +

◆ d_globalChargeIdToImageIdMapTrunc

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<int> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_globalChargeIdToImageIdMapTrunc
+
+private
+
+ +

globalChargeId to ImageChargeId Map generated with a truncated pspCutOff

+ +
+
+ +

◆ d_globalTimer

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::Timer dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_globalTimer
+
+private
+
+

A plain global timer to track only the total elapsed time after every ground-state solve

+ +
+
+ +

◆ d_gradbQuadValuesAllAtoms

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_gradbQuadValuesAllAtoms
+
+private
+
+ +

non-intersecting smeared charge gradients of all atoms at quad points

+ +
+
+ +

◆ d_gradDensityInQuadValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector< dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_gradDensityInQuadValues
+
+private
+
+ +
+
+ +

◆ d_gradDensityOutQuadValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector< dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_gradDensityOutQuadValues
+
+private
+
+ +
+
+ +

◆ d_gradDensityResidualQuadValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector< dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_gradDensityResidualQuadValues
+
+private
+
+ +
+
+ +

◆ d_gradDensityTotalInValuesLpspQuad

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_gradDensityTotalInValuesLpspQuad
+
+private
+
+ +
+
+ +

◆ d_gradDensityTotalOutValuesLpspQuad

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_gradDensityTotalOutValuesLpspQuad
+
+private
+
+ +
+
+ +

◆ d_gradRhoAtomsValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_gradRhoAtomsValues
+
+private
+
+ +
+
+ +

◆ d_gradRhoAtomsValuesSeparate

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<unsigned int, std::map<dealii::CellId, std::vector<double> > > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_gradRhoAtomsValuesSeparate
+
+private
+
+ +
+
+ +

◆ d_gradRhoCore

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_gradRhoCore
+
+private
+
+ +
+
+ +

◆ d_gradRhoCoreAtoms

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<unsigned int, std::map<dealii::CellId, std::vector<double> > > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_gradRhoCoreAtoms
+
+private
+
+ +
+
+ +

◆ d_groundStateDensityHistory

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::deque<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_groundStateDensityHistory
+
+private
+
+ +
+
+ +

◆ d_groundStateEnergy

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_groundStateEnergy
+
+private
+
+ +
+
+ +

◆ d_helmholtzDofHandlerIndexElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_helmholtzDofHandlerIndexElectro
+
+private
+
+ +
+
+ +

◆ d_hessianRhoAtomsValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_hessianRhoAtomsValues
+
+private
+
+ +
+
+ +

◆ d_hessianRhoAtomsValuesSeparate

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<unsigned int, std::map<dealii::CellId, std::vector<double> > > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_hessianRhoAtomsValuesSeparate
+
+private
+
+ +
+
+ +

◆ d_hessianRhoCore

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_hessianRhoCore
+
+private
+
+ +
+
+ +

◆ d_hessianRhoCoreAtoms

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<unsigned int, std::map<dealii::CellId, std::vector<double> > > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_hessianRhoCoreAtoms
+
+private
+
+ +
+
+ +

◆ d_imageCharges

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_imageCharges
+
+private
+
+

vector of length number of periodic image charges with corresponding charge values

+ +
+
+ +

◆ d_imageChargesTrunc

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_imageChargesTrunc
+
+private
+
+

vector of length number of periodic image charges with corresponding charge values , generated with a truncated pspCutoff

+ +
+
+ +

◆ d_imageIds

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<int> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_imageIds
+
+private
+
+

vector of lendth number of periodic image charges with corresponding master chargeIds

+ +
+
+ +

◆ d_imageIdsTrunc

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<int> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_imageIdsTrunc
+
+private
+
+

vector of lendth number of periodic image charges with corresponding master chargeIds , generated with a truncated pspCutoff

+ +
+
+ +

◆ d_imagePositions

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_imagePositions
+
+private
+
+

vector of length number of periodic image charges with corresponding positions in cartesian coordinates

+ +
+
+ +

◆ d_imagePositionsAutoMesh

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_imagePositionsAutoMesh
+
+private
+
+ +
+
+ +

◆ d_imagePositionsTrunc

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_imagePositionsTrunc
+
+private
+
+

vector of length number of periodic image charges with corresponding positions in cartesian coordinates, generated with a truncated pspCutOff

+ +
+
+ +

◆ d_isAtomsGaussianDisplacementsReadFromFile

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
bool dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_isAtomsGaussianDisplacementsReadFromFile = false
+
+private
+
+ +
+
+ +

◆ d_isFirstFilteringCall

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<bool> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_isFirstFilteringCall
+
+private
+
+

stores flag for first ever call to chebyshev filtering for a given FEM mesh vector for each k point and spin

+ +
+
+ +

◆ d_isRestartGroundStateCalcFromChk

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
bool dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_isRestartGroundStateCalcFromChk
+
+private
+
+ +
+
+ +

◆ d_kohnShamDFTOperatorPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
KohnShamHamiltonianOperator<memorySpace>* dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_kohnShamDFTOperatorPtr
+
+private
+
+ +
+
+ +

◆ d_kohnShamDFTOperatorsInitialized

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
bool dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_kohnShamDFTOperatorsInitialized
+
+private
+
+ +
+
+ +

◆ d_kPointCoordinates

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_kPointCoordinates
+
+private
+
+ +

kPoint cartesian coordinates

+ +
+
+ +

◆ d_kPointWeights

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_kPointWeights
+
+private
+
+ +

k point weights

+ +
+
+ +

◆ d_locallyRelevantDofsPRefined

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_locallyRelevantDofsPRefined
+
+private
+
+ +
+
+ +

◆ d_locallyRelevantDofsRhoNodal

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_locallyRelevantDofsRhoNodal
+
+private
+
+ +
+
+ +

◆ d_localVselfs

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_localVselfs
+
+private
+
+ +
+
+ +

◆ d_lpspQuadratureId

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_lpspQuadratureId
+
+private
+
+ +
+
+ +

◆ d_lpspQuadratureIdElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_lpspQuadratureIdElectro
+
+private
+
+ +
+
+ +

◆ d_magInNodalValuesRead

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_magInNodalValuesRead
+
+private
+
+ +
+
+ +

◆ d_matrixFreeDataPRefined

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::MatrixFree<3, double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_matrixFreeDataPRefined
+
+private
+
+ +
+
+ +

◆ d_mesh

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
triangulationManager dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_mesh
+
+private
+
+

meshGenerator based object

+ +
+
+ +

◆ d_minDist

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_minDist
+
+private
+
+ +
+
+ +

◆ d_mixingScheme

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
MixingScheme dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_mixingScheme
+
+private
+
+ +
+
+ +

◆ d_monopole

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_monopole
+
+private
+
+ +
+
+ +

◆ d_mpiCommParent

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_mpiCommParent
+
+private
+
+ +
+
+ +

◆ d_nearestAtomDistances

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_nearestAtomDistances
+
+private
+
+ +

nearest atom distances for all domain atoms

+ +
+
+ +

◆ d_nearestAtomIds

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_nearestAtomIds
+
+private
+
+ +

nearest atom ids for all domain atoms

+ +
+
+ +

◆ d_netFloatingDispSinceLastBinsUpdate

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_netFloatingDispSinceLastBinsUpdate
+
+private
+
+ +
+
+ +

◆ d_netFloatingDispSinceLastCheckForSmearedChargeOverlaps

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_netFloatingDispSinceLastCheckForSmearedChargeOverlaps
+
+private
+
+ +
+
+ +

◆ d_nlPSPCutOff

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_nlPSPCutOff = 8.0
+
+private
+
+

cut-off distance from atom till which non-local projectors are non-trivial

+ +
+
+ +

◆ d_nlpspQuadratureId

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_nlpspQuadratureId
+
+private
+
+ +
+
+ +

◆ d_noConstraints

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_noConstraints
+
+private
+
+ +
+
+ +

◆ d_nOMPThreads

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_nOMPThreads
+
+private
+
+ +
+
+ +

◆ d_nonAtomicWaveFunctions

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_nonAtomicWaveFunctions
+
+ +

Number of random wavefunctions.

+ +
+
+ +

◆ d_nonPeriodicDensityDofHandlerIndexElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_nonPeriodicDensityDofHandlerIndexElectro
+
+private
+
+ +
+
+ +

◆ d_numEigenValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_numEigenValues
+
+ +

Number of Kohn-Sham eigen values to be computed.

+ +
+
+ +

◆ d_numEigenValuesRR

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_numEigenValuesRR
+
+ +

Number of Kohn-Sham eigen values to be computed in the Rayleigh-Ritz step after spectrum splitting.

+ +
+
+ +

◆ d_oncvClassPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr<dftfe::oncvClass<dataTypes::number, memorySpace> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_oncvClassPtr
+
+private
+
+ +
+
+ +

◆ d_phiExt

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_phiExt
+
+private
+
+ +
+
+ +

◆ d_phiExtDofHandlerIndexElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_phiExtDofHandlerIndexElectro
+
+private
+
+ +
+
+ +

◆ d_phiInQuadValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_phiInQuadValues
+
+private
+
+ +
+
+ +

◆ d_phiOutQuadValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_phiOutQuadValues
+
+private
+
+ +
+
+ +

◆ d_phiPrime

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_phiPrime
+
+private
+
+ +
+
+ +

◆ d_phiPrimeDofHandlerIndexElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_phiPrimeDofHandlerIndexElectro
+
+private
+
+ +
+
+ +

◆ d_phiPrimeSolverProblem

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
poissonSolverProblem<FEOrder, FEOrderElectro> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_phiPrimeSolverProblem
+
+private
+
+ +
+
+ +

◆ d_phiTotalSolverProblem

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
poissonSolverProblem<FEOrder, FEOrderElectro> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_phiTotalSolverProblem
+
+private
+
+ +
+
+ +

◆ d_phiTotAXQuadratureIdElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_phiTotAXQuadratureIdElectro
+
+private
+
+ +
+
+ +

◆ d_phiTotDofHandlerIndexElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_phiTotDofHandlerIndexElectro
+
+private
+
+ +
+
+ +

◆ d_phiTotRhoIn

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_phiTotRhoIn
+
+private
+
+ +
+
+ +

◆ d_phiTotRhoOut

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_phiTotRhoOut
+
+private
+
+ +
+
+ +

◆ d_preCondTotalDensityResidualVector

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_preCondTotalDensityResidualVector
+
+private
+
+ +
+
+ +

◆ d_pseudoVLoc

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_pseudoVLoc
+
+private
+
+ +
+
+ +

◆ d_pseudoVLocAtoms

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<unsigned int, std::map<dealii::CellId, std::vector<double> > > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_pseudoVLocAtoms
+
+private
+
+

Internal data:: map for cell id to Vpseudo local of individual atoms. Only for atoms whose psp tail intersects the local domain.

+ +
+
+ +

◆ d_pspCutOff

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_pspCutOff = 15.0
+
+private
+
+ +

distance from the domain till which periodic images will be considered

+ +
+
+ +

◆ d_pspCutOffTrunc

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_pspCutOffTrunc = 15.0
+
+private
+
+ +

distance from the domain till which periodic images will be considered

+ +
+
+ +

◆ d_quadrupole

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_quadrupole
+
+private
+
+ +
+
+ +

◆ d_rankCurrentLRD

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_rankCurrentLRD
+
+private
+
+ +
+
+ +

◆ d_reciprocalLatticeVectors

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_reciprocalLatticeVectors
+
+private
+
+ +
+
+ +

◆ d_relativeErrorJacInvApproxPrevScfLRD

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_relativeErrorJacInvApproxPrevScfLRD
+
+private
+
+ +
+
+ +

◆ d_residualNormPredicted

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_residualNormPredicted
+
+private
+
+ +
+
+ +

◆ d_residualPredicted

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_residualPredicted
+
+private
+
+ +
+
+ +

◆ d_rhoAtomsValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_rhoAtomsValues
+
+private
+
+ +

for xl-bomd

+ +
+
+ +

◆ d_rhoAtomsValuesSeparate

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<unsigned int, std::map<dealii::CellId, std::vector<double> > > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_rhoAtomsValuesSeparate
+
+private
+
+ +
+
+ +

◆ d_rhoCore

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_rhoCore
+
+private
+
+ +
+
+ +

◆ d_rhoInNodalValuesRead

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_rhoInNodalValuesRead
+
+private
+
+ +
+
+ +

◆ d_rhoNodalFieldRefined

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_rhoNodalFieldRefined
+
+private
+
+ +
+
+ +

◆ d_rhoOutNodalValuesDistributed

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_rhoOutNodalValuesDistributed
+
+private
+
+ +
+
+ +

◆ d_rhoOutNodalValuesSplit

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_rhoOutNodalValuesSplit
+
+private
+
+ +
+
+ +

◆ d_smearedChargeMoments

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_smearedChargeMoments
+
+private
+
+ +
+
+ +

◆ d_smearedChargeMomentsComputed

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
bool dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_smearedChargeMomentsComputed
+
+private
+
+ +
+
+ +

◆ d_smearedChargeQuadratureIdElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_smearedChargeQuadratureIdElectro
+
+private
+
+ +
+
+ +

◆ d_smearedChargeScaling

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_smearedChargeScaling
+
+private
+
+ +

smeared charge normalization scaling for all domain atoms

+ +
+
+ +

◆ d_smearedChargeWidthMin

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_smearedChargeWidthMin = 0.4
+
+private
+
+ +

minimum smeared charge width

+ +
+
+ +

◆ d_smearedChargeWidths

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_smearedChargeWidths
+
+private
+
+ +

smeared charge widths for all domain atoms

+ +
+
+ +

◆ d_sparsityPatternQuadratureId

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_sparsityPatternQuadratureId
+
+private
+
+ +
+
+ +

◆ d_subspaceIterationSolver

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
chebyshevOrthogonalizedSubspaceIterationSolver dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_subspaceIterationSolver
+
+private
+
+

chebyshev subspace iteration solver objects

+ +
+
+ +

◆ d_supportPoints

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<dealii::types::global_dof_index, dealii::Point<3> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_supportPoints
+
+private
+
+ +
+
+ +

◆ d_supportPointsEigen

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<dealii::types::global_dof_index, dealii::Point<3> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_supportPointsEigen
+
+private
+
+ +
+
+ +

◆ d_supportPointsPRefined

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<dealii::types::global_dof_index, dealii::Point<3> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_supportPointsPRefined
+
+private
+
+ +
+
+ +

◆ d_tempEigenVec

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_tempEigenVec
+
+private
+
+ +
+
+ +

◆ d_tolReached

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
bool dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_tolReached
+
+private
+
+ +
+
+ +

◆ d_upperBoundUnwantedSpectrumValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_upperBoundUnwantedSpectrumValues
+
+private
+
+ +
+
+ +

◆ d_vcontainerVals

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::deque<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_vcontainerVals
+
+private
+
+ +

for low rank jacobian inverse approximation

+ +
+
+ +

◆ d_vselfBinsManager

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
vselfBinsManager<FEOrder, FEOrderElectro> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_vselfBinsManager
+
+private
+
+ +

vselfBinsManager object

+ +
+
+ +

◆ d_vselfFieldGateauxDerStrainFDBins

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_vselfFieldGateauxDerStrainFDBins
+
+private
+
+

Gateaux derivative of vself field with respect to affine strain tensor components using central finite difference. This is used for cell stress computation

+ +
+
+ +

◆ d_vSpin0containerVals

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::deque<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_vSpin0containerVals
+
+private
+
+ +
+
+ +

◆ d_vSpin1containerVals

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::deque<distributedCPUVec<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_vSpin1containerVals
+
+private
+
+ +
+
+ +

◆ d_wfcInitTruncation

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::d_wfcInitTruncation = 5.0
+
+private
+
+ +

init wfc trunctation radius

+ +
+
+ +

◆ dofHandler

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::DoFHandler<3> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::dofHandler
+
+private
+
+ +
+
+ +

◆ dofHandlerEigen

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::DoFHandler<3> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::dofHandlerEigen
+
+private
+
+ +
+
+ +

◆ eigenValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::eigenValues
+
+private
+
+

data storage for Kohn-Sham wavefunctions

+ +
+
+ +

◆ eigenValuesRRSplit

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::eigenValuesRRSplit
+
+private
+
+ +

Spectrum split higher eigenvalues computed in Rayleigh-Ritz step.

+ +
+
+ +

◆ FE

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::FESystem<3> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::FE
+
+private
+
+

dealii based FE data structres

+ +
+
+ +

◆ FEEigen

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::FESystem<3> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::FEEigen
+
+private
+
+ +
+
+ +

◆ fermiEnergy

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::fermiEnergy
+
+private
+
+ +

fermi energy

+ +
+
+ +

◆ fermiEnergyDown

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::fermiEnergyDown
+
+private
+
+ +
+
+ +

◆ fermiEnergyUp

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
double dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::fermiEnergyUp
+
+private
+
+ +
+
+ +

◆ forcePtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
forceClass<FEOrder, FEOrderElectro, memorySpace>* dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::forcePtr
+
+private
+
+ +
+
+ +

◆ interBandGroupComm

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::interBandGroupComm
+
+private
+
+ +
+
+ +

◆ interpoolcomm

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::interpoolcomm
+
+private
+
+ +
+
+ +

◆ kPointReducedCoordinates

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::kPointReducedCoordinates
+
+private
+
+ +

k point crystal coordinates

+ +
+
+ +

◆ local_dof_indicesImag

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<dealii::types::global_dof_index> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::local_dof_indicesImag
+
+private
+
+ +
+
+ +

◆ local_dof_indicesReal

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<dealii::types::global_dof_index> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::local_dof_indicesReal
+
+private
+
+ +
+
+ +

◆ locally_owned_dofs

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::locally_owned_dofs
+
+private
+
+ +
+
+ +

◆ locally_owned_dofsEigen

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::locally_owned_dofsEigen
+
+private
+
+ +
+
+ +

◆ locally_relevant_dofs

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::locally_relevant_dofs
+
+private
+
+ +
+
+ +

◆ locally_relevant_dofsEigen

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::locally_relevant_dofsEigen
+
+private
+
+ +
+
+ +

◆ localProc_dof_indicesImag

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<dealii::types::global_dof_index> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::localProc_dof_indicesImag
+
+private
+
+ +
+
+ +

◆ localProc_dof_indicesReal

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<dealii::types::global_dof_index> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::localProc_dof_indicesReal
+
+private
+
+ +
+
+ +

◆ lowerBoundKindex

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::lowerBoundKindex = 0
+
+private
+
+ +

global k index of lower bound of the local k point set

+ +
+
+ +

◆ matrix_free_data

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::MatrixFree<3, double> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::matrix_free_data
+
+private
+
+ +
+
+ +

◆ mpi_communicator

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::mpi_communicator
+
+private
+
+

parallel objects

+ +
+
+ +

◆ n_mpi_processes

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::n_mpi_processes
+
+private
+
+ +
+
+ +

◆ numElectrons

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::numElectrons
+
+private
+
+

stores required data for Kohn-Sham problem

+ +
+
+ +

◆ numElectronsDown

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::numElectronsDown
+
+private
+
+ +
+
+ +

◆ numElectronsUp

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::numElectronsUp
+
+private
+
+ +
+
+ +

◆ numLevels

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::numLevels
+
+private
+
+ +
+
+ +

◆ outerValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<unsigned int, std::map<unsigned int, std::map<unsigned int, double> > > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::outerValues
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::pcout
+
+private
+
+ +

device eigenvectors

+

parallel message stream

+ +
+
+ +

◆ radValues

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<unsigned int, std::map<unsigned int, std::map<unsigned int, alglib::spline1dinterpolant> > > dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::radValues
+
+private
+
+ +
+
+ +

◆ scfConverged

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
bool dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::scfConverged
+
+private
+
+

@ nscf variables

+ +
+
+ +

◆ selectedDofsHanging

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<bool> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::selectedDofsHanging
+
+private
+
+ +
+
+ +

◆ symmetryPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
symmetryClass<FEOrder, FEOrderElectro, memorySpace>* dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::symmetryPtr
+
+private
+
+ +
+
+ +

◆ this_mpi_process

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const unsigned int dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::this_mpi_process
+
+private
+
+ +
+
+ +

◆ waveFunctionsVector

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<orbital> dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >::waveFunctionsVector
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • workspace/include/dft.h
  • +
+
+ + + + diff --git a/classdftfe_1_1dft_class.png b/classdftfe_1_1dft_class.png new file mode 100644 index 0000000000000000000000000000000000000000..336194f0822f4e821e8c3b6173ec191aa838d69b GIT binary patch literal 1016 zcmeAS@N?(olHy`uVBq!ia0y~yV2lH@12~w0WLn4DH$X}{z$e7@|Ns9$=8HF9OZyKk zw=mEwkeGhv#e)YAfa0cS!3f*F8(FfeDDeT9L6x!KdjF{Fa=?c9rfj}>@a z^~Ezw{{QdZ?#m?MWPCPbk9WA-Q`?RIb{-$$EWX{dsSY#y-@Wu zchdLVC0ONosrTuZW$G*Mcx+m1y8OAk=ejdpRpza~dsVF4o?ZRBZfW`H)9FEZD|e=^ zGR&Ag``%*jpE0L?1XXRuH?q5Rre0kAQnsvqd3J``*6q_KUGScyKjX#L z=ht`c{HA#{aqH)I%$vS1+WG$5D+`sA^+(dL+zUS&Snc^KSMFO@sKuYR)%X5I?3-%! zVUO%H@A^qGOD?Fbg%h2Heh?{|l z;e)~#rUvo&_=n;Qb2#=gJUDtd?*}V`ypukIg-{XWf!+(;3_ueY3Y3A$q!)@a+yNl&g;(vK|ke8#EW@UqlXQRqryM^JCfObuK;`U;yin-Hzm7Nz~*4Fv1 zyrZ)6u!;S<=>GTj&(<|;tLA-seCm>kzZaT11(pBx;+vZ`eMz?4-uBHe4c7h)_%rQZ zVWa97-o4wM{RQ{0{BE;bCHC@{yvm<7_NI}$rl-#S&3gSz)_ieoyLZ2>Zv}0ZK4SO( zZ@}%%sx?1vB)44;E?V;D*uVc)t2~!3XS%(3x96tttGn&j$*!ukUFTU;Zh!T3*1n<= zsqOXF-<^HW*C}puHb468)EDW0^KD~hR-5_n{}%UtN%{O`!Fyw8YW$zgc`Ix~>P0_; z+3(XAE=&Kv#Q99X`#6=8mMi9&Ki<{e7+nRYc*`|_A$-RyOLBZ4o# zJF$4B7`x}&ti#ja25%4Ke9`wm^4dPxtkosui>~M9Jb!6?M5nA~!7L;9`DUNu!pyi~5UqP%eT{B_}zrX?AORH`MGyFm{gjGBVoW7~d6dD^)z4*}Q$iB}4<7VJ literal 0 HcmV?d00001 diff --git a/classdftfe_1_1dft_parameters-members.html b/classdftfe_1_1dft_parameters-members.html new file mode 100644 index 000000000..8a01c7cce --- /dev/null +++ b/classdftfe_1_1dft_parameters-members.html @@ -0,0 +1,279 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + + +
+
dftfe::dftParameters Member List
+
+
+ +

This is the complete list of members for dftfe::dftParameters, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
absLinearSolverTolerancedftfe::dftParameters
absLinearSolverToleranceHelmholtzdftfe::dftParameters
absPoissonSolverToleranceLRDdftfe::dftParameters
adaptAndersonMixingParameterdftfe::dftParameters
adaptiveRankRelTolLRDdftfe::dftParameters
algoTypedftfe::dftParameters
allowFullCPUMemSubspaceRotdftfe::dftParameters
allowMultipleFilteringPassesAfterFirstScfdftfe::dftParameters
atomicMassesFiledftfe::dftParameters
autoAdaptBaseMeshSizedftfe::dftParameters
autoDeviceBlockSizesdftfe::dftParameters
bandParalOptdftfe::dftParameters
betaToldftfe::dftParameters
bfgsStepMethoddftfe::dftParameters
cellConstraintTypedftfe::dftParameters
cellOptSolverdftfe::dftParameters
chebyshevFilterPolyDegreeFirstScfScalingFactordftfe::dftParameters
chebyshevOrderdftfe::dftParameters
chebyshevTolerancedftfe::dftParameters
chebyWfcBlockSizedftfe::dftParameters
check_parameters(const MPI_Comm &mpi_comm_parent) constdftfe::dftParameters
computeEnergyEverySCFdftfe::dftParameters
constraintMagnetizationdftfe::dftParameters
constraintsParallelCheckdftfe::dftParameters
coordinatesFiledftfe::dftParameters
coordinatesGaussianDispFiledftfe::dftParameters
createConstraintsFromSerialDofhandlerdftfe::dftParameters
dc_d3ATMdftfe::dftParameters
dc_d3cutoff2dftfe::dftParameters
dc_d3cutoff3dftfe::dftParameters
dc_d3cutoffCNdftfe::dftParameters
dc_d3dampingtypedftfe::dftParameters
dc_d4MBDdftfe::dftParameters
dc_dampingParameterFilenamedftfe::dftParameters
dc_dispersioncorrectiontypedftfe::dftParameters
deviceFineGrainedTimingsdftfe::dftParameters
dftParameters()dftfe::dftParameters
diracDeltaKernelScalingConstantdftfe::dftParameters
domainBoundingVectorsFiledftfe::dftParameters
estimateJacCondNoFinalSCFIterdftfe::dftParameters
extrapolateDensitydftfe::dftParameters
finiteElementPolynomialOrderdftfe::dftParameters
finiteElementPolynomialOrderElectrostaticsdftfe::dftParameters
floatingNuclearChargesdftfe::dftParameters
forceRelaxToldftfe::dftParameters
gaussianConstantForcedftfe::dftParameters
gaussianOrderForcedftfe::dftParameters
gaussianOrderMoveMeshToAtomsdftfe::dftParameters
highestStateOfInterestForChebFilteringdftfe::dftParameters
innerAtomBallRadiusdftfe::dftParameters
ionOptSolverdftfe::dftParameters
ionRelaxFlagsFiledftfe::dftParameters
isBOMDdftfe::dftParameters
isCellStressdftfe::dftParameters
isIonForcedftfe::dftParameters
isPseudopotentialdftfe::dftParameters
keepScratchFolderdftfe::dftParameters
kerkerParameterdftfe::dftParameters
kPointDataFiledftfe::dftParameters
lbfgsNumPastStepsdftfe::dftParameters
loadRhoDatadftfe::dftParameters
maxCellUpdateStepdftfe::dftParameters
maxIonUpdateStepdftfe::dftParameters
maxJacobianRatioFactorForMDdftfe::dftParameters
maxLinearSolverIterationsdftfe::dftParameters
maxLinearSolverIterationsHelmholtzdftfe::dftParameters
maxLineSearchIterCGPRPdftfe::dftParameters
maxOptIterdftfe::dftParameters
maxStaggeredCyclesdftfe::dftParameters
MaxWallTimedftfe::dftParameters
MDTrackdftfe::dftParameters
memOptModedftfe::dftParameters
meshAdaptiondftfe::dftParameters
meshSizeInnerBalldftfe::dftParameters
meshSizeOuterBalldftfe::dftParameters
meshSizeOuterDomaindftfe::dftParameters
methodSubTypeLRDdftfe::dftParameters
mixingHistorydftfe::dftParameters
mixingMethoddftfe::dftParameters
mixingParameterdftfe::dftParameters
modelXCInputFiledftfe::dftParameters
mpiAllReduceMessageBlockSizeMBdftfe::dftParameters
multipoleBoundaryConditionsdftfe::dftParameters
n_refinement_stepsdftfe::dftParameters
natomsdftfe::dftParameters
natomTypesdftfe::dftParameters
nbandGrpsdftfe::dftParameters
netChargedftfe::dftParameters
nkxdftfe::dftParameters
nkydftfe::dftParameters
nkzdftfe::dftParameters
nonLinearCoreCorrectiondftfe::dftParameters
nonSelfConsistentForcedftfe::dftParameters
npooldftfe::dftParameters
numberEigenValuesdftfe::dftParameters
numberStepsBOMDdftfe::dftParameters
numberWaveFunctionsForEstimatedftfe::dftParameters
numCoreWfcRRdftfe::dftParameters
numCoreWfcXtHXdftfe::dftParameters
numLevelsdftfe::dftParameters
numPassdftfe::dftParameters
numSCFIterationsdftfe::dftParameters
offsetFlagXdftfe::dftParameters
offsetFlagYdftfe::dftParameters
offsetFlagZdftfe::dftParameters
optimizationModedftfe::dftParameters
orthogTypedftfe::dftParameters
outerAtomBallRadiusdftfe::dftParameters
overlapComputeCommunChebydftfe::dftParameters
overlapComputeCommunOrthoRRdftfe::dftParameters
parse_parameters(const std::string &parameter_file, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const std::string mode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool _useDevice=false)dftfe::dftParameters
periodicXdftfe::dftParameters
periodicYdftfe::dftParameters
periodicZdftfe::dftParameters
pinnedNodeForPBCdftfe::dftParameters
poissonGPUdftfe::dftParameters
pseudoPotentialFiledftfe::dftParameters
pseudoTestsFlagdftfe::dftParameters
pspCutoffImageChargesdftfe::dftParameters
radiusAtomBalldftfe::dftParameters
readWfcForPdosPspFiledftfe::dftParameters
reproducible_outputdftfe::dftParameters
restaFermiWavevectordftfe::dftParameters
restartFolderdftfe::dftParameters
restartSpinFromNoSpindftfe::dftParameters
restaScreeningLengthdftfe::dftParameters
restrictToOnePassdftfe::dftParameters
reuseDensityGeoOptdftfe::dftParameters
reuseLanczosUpperBoundFromFirstCalldftfe::dftParameters
reuseWfcGeoOptdftfe::dftParameters
saveRhoDatadftfe::dftParameters
scalapackBlockSizedftfe::dftParameters
scalapackParalProcsdftfe::dftParameters
selfConsistentSolverTolerancedftfe::dftParameters
setAutoParameters(const MPI_Comm &mpi_comm_parent)dftfe::dftParameters
singlePrecLRDdftfe::dftParameters
smearedNuclearChargesdftfe::dftParameters
solverModedftfe::dftParameters
spectrumSplitStartingScfIterdftfe::dftParameters
spinMixingEnhancementFactordftfe::dftParameters
spinPolarizeddftfe::dftParameters
start_magnetizationdftfe::dftParameters
startingNormLRDLargeDampingdftfe::dftParameters
startingTempBOMDdftfe::dftParameters
startingWFCTypedftfe::dftParameters
stressRelaxToldftfe::dftParameters
subspaceRotDofsBlockSizedftfe::dftParameters
tempControllerTypeBOMDdftfe::dftParameters
thermostatTimeConstantBOMDdftfe::dftParameters
timeReversaldftfe::dftParameters
timeStepBOMDdftfe::dftParameters
toleranceKineticdftfe::dftParameters
topfracdftfe::dftParameters
TotalImagesdftfe::dftParameters
TValdftfe::dftParameters
useDCCLdftfe::dftParameters
useDensityMatrixPerturbationRankUpdatesdftfe::dftParameters
useDevicedftfe::dftParameters
useDeviceDirectAllReducedftfe::dftParameters
useELPAdftfe::dftParameters
useELPADeviceKerneldftfe::dftParameters
useFlatTopGeneratordftfe::dftParameters
useMeshSizesFromAtomsFiledftfe::dftParameters
useMixedPrecCGS_Odftfe::dftParameters
useMixedPrecCGS_SRdftfe::dftParameters
useMixedPrecChebydftfe::dftParameters
useMixedPrecCommunOnlyXTHXCGSOdftfe::dftParameters
useMixedPrecSubspaceRotRRdftfe::dftParameters
useMixedPrecXTHXSpectrumSplitdftfe::dftParameters
usePreconditionerdftfe::dftParameters
useSubspaceProjectedSHEPGPUdftfe::dftParameters
useSymmdftfe::dftParameters
useTF32Devicedftfe::dftParameters
verbositydftfe::dftParameters
vselfGPUdftfe::dftParameters
wfcBlockSizedftfe::dftParameters
writeBandsFiledftfe::dftParameters
writeDensityQuadDatadftfe::dftParameters
writeDensitySolutionFieldsdftfe::dftParameters
writeDosFiledftfe::dftParameters
writeLdosFiledftfe::dftParameters
writeLocalizationLengthsdftfe::dftParameters
writePdosFiledftfe::dftParameters
writeStructreEnergyForcesFileForPostProcessdftfe::dftParameters
writeWfcSolutionFieldsdftfe::dftParameters
xc_iddftfe::dftParameters
xlbomdKernelRankUpdateFDParameterdftfe::dftParameters
xlbomdRestartChebyToldftfe::dftParameters
+ + + + diff --git a/classdftfe_1_1dft_parameters.html b/classdftfe_1_1dft_parameters.html new file mode 100644 index 000000000..67da628c8 --- /dev/null +++ b/classdftfe_1_1dft_parameters.html @@ -0,0 +1,3166 @@ + + + + + + + +DFT-FE: dftfe::dftParameters Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::dftParameters Class Reference
+
+
+ +

Namespace which declares the input parameters and the functions to parse them from the input parameter file. + More...

+ +

#include <dftParameters.h>

+ + + + + + + + + + +

+Public Member Functions

 dftParameters ()
 
void parse_parameters (const std::string &parameter_file, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const std::string mode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool _useDevice=false)
 
void check_parameters (const MPI_Comm &mpi_comm_parent) const
 
void setAutoParameters (const MPI_Comm &mpi_comm_parent)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

unsigned int finiteElementPolynomialOrder
 
unsigned int finiteElementPolynomialOrderElectrostatics
 
unsigned int n_refinement_steps
 
unsigned int numberEigenValues
 
unsigned int xc_id
 
unsigned int spinPolarized
 
unsigned int nkx
 
unsigned int nky
 
unsigned int nkz
 
unsigned int offsetFlagX
 
unsigned int offsetFlagY
 
unsigned int offsetFlagZ
 
unsigned int chebyshevOrder
 
unsigned int numPass
 
unsigned int numSCFIterations
 
unsigned int maxLinearSolverIterations
 
unsigned int mixingHistory
 
unsigned int npool
 
unsigned int numberWaveFunctionsForEstimate
 
unsigned int numLevels
 
unsigned int maxLinearSolverIterationsHelmholtz
 
bool poissonGPU
 
bool vselfGPU
 
std::string modelXCInputFile
 
double radiusAtomBall
 
double mixingParameter
 
double spinMixingEnhancementFactor
 
bool adaptAndersonMixingParameter
 
double absLinearSolverTolerance
 
double selfConsistentSolverTolerance
 
double TVal
 
double start_magnetization
 
double absLinearSolverToleranceHelmholtz
 
bool isPseudopotential
 
bool periodicX
 
bool periodicY
 
bool periodicZ
 
bool useSymm
 
bool timeReversal
 
bool pseudoTestsFlag
 
bool constraintMagnetization
 
bool writeDosFile
 
bool writeLdosFile
 
bool writeBandsFile
 
bool writeLocalizationLengths
 
bool pinnedNodeForPBC
 
bool writePdosFile
 
double netCharge
 
double startingNormLRDLargeDamping
 
std::string methodSubTypeLRD
 
double adaptiveRankRelTolLRD
 
double betaTol
 
double absPoissonSolverToleranceLRD
 
bool singlePrecLRD
 
bool estimateJacCondNoFinalSCFIter
 
std::string coordinatesFile
 
std::string domainBoundingVectorsFile
 
std::string kPointDataFile
 
std::string ionRelaxFlagsFile
 
std::string orthogType
 
std::string algoType
 
std::string pseudoPotentialFile
 
std::string restartFolder
 
std::string coordinatesGaussianDispFile
 
double outerAtomBallRadius
 
double innerAtomBallRadius
 
double meshSizeOuterDomain
 
bool autoAdaptBaseMeshSize
 
double meshSizeInnerBall
 
double meshSizeOuterBall
 
double chebyshevTolerance
 
double topfrac
 
double kerkerParameter
 
double restaScreeningLength
 
double restaFermiWavevector
 
std::string optimizationMode
 
std::string mixingMethod
 
std::string ionOptSolver
 
std::string cellOptSolver
 
bool isIonForce
 
bool isCellStress
 
bool isBOMD
 
bool nonSelfConsistentForce
 
bool meshAdaption
 
double forceRelaxTol
 
double stressRelaxTol
 
double toleranceKinetic
 
unsigned int cellConstraintType
 
int verbosity
 
std::string solverMode
 
bool keepScratchFolder
 
bool saveRhoData
 
bool loadRhoData
 
bool restartSpinFromNoSpin
 
bool reproducible_output
 
bool writeWfcSolutionFields
 
bool writeDensitySolutionFields
 
bool writeDensityQuadData
 
std::string startingWFCType
 
bool restrictToOnePass
 
unsigned int numCoreWfcRR
 
unsigned int numCoreWfcXtHX
 
unsigned int wfcBlockSize
 
unsigned int chebyWfcBlockSize
 
unsigned int subspaceRotDofsBlockSize
 
unsigned int nbandGrps
 
bool computeEnergyEverySCF
 
unsigned int scalapackParalProcs
 
unsigned int scalapackBlockSize
 
unsigned int natoms
 
unsigned int natomTypes
 
bool reuseWfcGeoOpt
 
unsigned int reuseDensityGeoOpt
 
double mpiAllReduceMessageBlockSizeMB
 
bool useSubspaceProjectedSHEPGPU
 
bool useMixedPrecCGS_SR
 
bool useMixedPrecCGS_O
 
bool useMixedPrecXTHXSpectrumSplit
 
bool useMixedPrecSubspaceRotRR
 
bool useMixedPrecCommunOnlyXTHXCGSO
 
unsigned int spectrumSplitStartingScfIter
 
bool useELPA
 
bool constraintsParallelCheck
 
bool createConstraintsFromSerialDofhandler
 
bool bandParalOpt
 
bool useDevice
 
bool useTF32Device
 
bool deviceFineGrainedTimings
 
bool allowFullCPUMemSubspaceRot
 
bool useMixedPrecCheby
 
bool overlapComputeCommunCheby
 
bool overlapComputeCommunOrthoRR
 
bool autoDeviceBlockSizes
 
bool readWfcForPdosPspFile
 
double maxJacobianRatioFactorForMD
 
double chebyshevFilterPolyDegreeFirstScfScalingFactor
 
int extrapolateDensity
 
double timeStepBOMD
 
unsigned int numberStepsBOMD
 
unsigned int TotalImages
 
double gaussianConstantForce
 
double gaussianOrderForce
 
double gaussianOrderMoveMeshToAtoms
 
bool useFlatTopGenerator
 
double diracDeltaKernelScalingConstant
 
bool useMeshSizesFromAtomsFile
 
double xlbomdRestartChebyTol
 
bool useDensityMatrixPerturbationRankUpdates
 
double xlbomdKernelRankUpdateFDParameter
 
bool smearedNuclearCharges
 
bool floatingNuclearCharges
 
bool multipoleBoundaryConditions
 
bool nonLinearCoreCorrection
 
unsigned int maxLineSearchIterCGPRP
 
std::string atomicMassesFile
 
bool useDeviceDirectAllReduce
 
bool useDCCL
 
double pspCutoffImageCharges
 
bool reuseLanczosUpperBoundFromFirstCall
 
bool allowMultipleFilteringPassesAfterFirstScf
 
unsigned int highestStateOfInterestForChebFiltering
 
bool useELPADeviceKernel
 
bool memOptMode
 
unsigned int dc_dispersioncorrectiontype
 
unsigned int dc_d3dampingtype
 
bool dc_d3ATM
 
bool dc_d4MBD
 
std::string dc_dampingParameterFilename
 
double dc_d3cutoff2
 
double dc_d3cutoff3
 
double dc_d3cutoffCN
 
std::string bfgsStepMethod
 
bool usePreconditioner
 
unsigned int lbfgsNumPastSteps
 
unsigned int maxOptIter
 
unsigned int maxStaggeredCycles
 
double maxIonUpdateStep
 
double maxCellUpdateStep
 
double startingTempBOMD
 
double MaxWallTime
 
double thermostatTimeConstantBOMD
 
std::string tempControllerTypeBOMD
 
int MDTrack
 
bool writeStructreEnergyForcesFileForPostProcess
 
+

Detailed Description

+

Namespace which declares the input parameters and the functions to parse them from the input parameter file.

+
Author
Phani Motamarri, Sambit Das
+

Constructor & Destructor Documentation

+ +

◆ dftParameters()

+ +
+
+ + + + + + + +
dftfe::dftParameters::dftParameters ()
+
+ +
+
+

Member Function Documentation

+ +

◆ check_parameters()

+ +
+
+ + + + + + + +
void dftfe::dftParameters::check_parameters (const MPI_Comm & mpi_comm_parent) const
+
+

Check parameters

+ +
+
+ +

◆ parse_parameters()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftParameters::parse_parameters (const std::string & parameter_file,
const MPI_Comm & mpi_comm_parent,
const bool printParams = false,
const std::string mode = "GS",
const std::string restartFilesPath = ".",
const int _verbosity = 1,
const bool _useDevice = false )
+
+

Parse parameters.

+ +
+
+ +

◆ setAutoParameters()

+ +
+
+ + + + + + + +
void dftfe::dftParameters::setAutoParameters (const MPI_Comm & mpi_comm_parent)
+
+

Set automated choices for parameters

+ +
+
+

Member Data Documentation

+ +

◆ absLinearSolverTolerance

+ +
+
+ + + + +
double dftfe::dftParameters::absLinearSolverTolerance
+
+ +
+
+ +

◆ absLinearSolverToleranceHelmholtz

+ +
+
+ + + + +
double dftfe::dftParameters::absLinearSolverToleranceHelmholtz
+
+ +
+
+ +

◆ absPoissonSolverToleranceLRD

+ +
+
+ + + + +
double dftfe::dftParameters::absPoissonSolverToleranceLRD
+
+ +
+
+ +

◆ adaptAndersonMixingParameter

+ +
+
+ + + + +
bool dftfe::dftParameters::adaptAndersonMixingParameter
+
+ +
+
+ +

◆ adaptiveRankRelTolLRD

+ +
+
+ + + + +
double dftfe::dftParameters::adaptiveRankRelTolLRD
+
+ +
+
+ +

◆ algoType

+ +
+
+ + + + +
std::string dftfe::dftParameters::algoType
+
+ +
+
+ +

◆ allowFullCPUMemSubspaceRot

+ +
+
+ + + + +
bool dftfe::dftParameters::allowFullCPUMemSubspaceRot
+
+ +
+
+ +

◆ allowMultipleFilteringPassesAfterFirstScf

+ +
+
+ + + + +
bool dftfe::dftParameters::allowMultipleFilteringPassesAfterFirstScf
+
+ +
+
+ +

◆ atomicMassesFile

+ +
+
+ + + + +
std::string dftfe::dftParameters::atomicMassesFile
+
+ +
+
+ +

◆ autoAdaptBaseMeshSize

+ +
+
+ + + + +
bool dftfe::dftParameters::autoAdaptBaseMeshSize
+
+ +
+
+ +

◆ autoDeviceBlockSizes

+ +
+
+ + + + +
bool dftfe::dftParameters::autoDeviceBlockSizes
+
+ +
+
+ +

◆ bandParalOpt

+ +
+
+ + + + +
bool dftfe::dftParameters::bandParalOpt
+
+ +
+
+ +

◆ betaTol

+ +
+
+ + + + +
double dftfe::dftParameters::betaTol
+
+ +
+
+ +

◆ bfgsStepMethod

+ +
+
+ + + + +
std::string dftfe::dftParameters::bfgsStepMethod
+
+ +
+
+ +

◆ cellConstraintType

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::cellConstraintType
+
+ +
+
+ +

◆ cellOptSolver

+ +
+
+ + + + +
std::string dftfe::dftParameters::cellOptSolver
+
+ +
+
+ +

◆ chebyshevFilterPolyDegreeFirstScfScalingFactor

+ +
+
+ + + + +
double dftfe::dftParameters::chebyshevFilterPolyDegreeFirstScfScalingFactor
+
+ +
+
+ +

◆ chebyshevOrder

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::chebyshevOrder
+
+ +
+
+ +

◆ chebyshevTolerance

+ +
+
+ + + + +
double dftfe::dftParameters::chebyshevTolerance
+
+ +
+
+ +

◆ chebyWfcBlockSize

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::chebyWfcBlockSize
+
+ +
+
+ +

◆ computeEnergyEverySCF

+ +
+
+ + + + +
bool dftfe::dftParameters::computeEnergyEverySCF
+
+ +
+
+ +

◆ constraintMagnetization

+ +
+
+ + + + +
bool dftfe::dftParameters::constraintMagnetization
+
+ +
+
+ +

◆ constraintsParallelCheck

+ +
+
+ + + + +
bool dftfe::dftParameters::constraintsParallelCheck
+
+ +
+
+ +

◆ coordinatesFile

+ +
+
+ + + + +
std::string dftfe::dftParameters::coordinatesFile
+
+ +
+
+ +

◆ coordinatesGaussianDispFile

+ +
+
+ + + + +
std::string dftfe::dftParameters::coordinatesGaussianDispFile
+
+ +
+
+ +

◆ createConstraintsFromSerialDofhandler

+ +
+
+ + + + +
bool dftfe::dftParameters::createConstraintsFromSerialDofhandler
+
+ +
+
+ +

◆ dc_d3ATM

+ +
+
+ + + + +
bool dftfe::dftParameters::dc_d3ATM
+
+ +
+
+ +

◆ dc_d3cutoff2

+ +
+
+ + + + +
double dftfe::dftParameters::dc_d3cutoff2
+
+ +
+
+ +

◆ dc_d3cutoff3

+ +
+
+ + + + +
double dftfe::dftParameters::dc_d3cutoff3
+
+ +
+
+ +

◆ dc_d3cutoffCN

+ +
+
+ + + + +
double dftfe::dftParameters::dc_d3cutoffCN
+
+ +
+
+ +

◆ dc_d3dampingtype

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::dc_d3dampingtype
+
+ +
+
+ +

◆ dc_d4MBD

+ +
+
+ + + + +
bool dftfe::dftParameters::dc_d4MBD
+
+ +
+
+ +

◆ dc_dampingParameterFilename

+ +
+
+ + + + +
std::string dftfe::dftParameters::dc_dampingParameterFilename
+
+ +
+
+ +

◆ dc_dispersioncorrectiontype

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::dc_dispersioncorrectiontype
+
+ +
+
+ +

◆ deviceFineGrainedTimings

+ +
+
+ + + + +
bool dftfe::dftParameters::deviceFineGrainedTimings
+
+ +
+
+ +

◆ diracDeltaKernelScalingConstant

+ +
+
+ + + + +
double dftfe::dftParameters::diracDeltaKernelScalingConstant
+
+ +
+
+ +

◆ domainBoundingVectorsFile

+ +
+
+ + + + +
std::string dftfe::dftParameters::domainBoundingVectorsFile
+
+ +
+
+ +

◆ estimateJacCondNoFinalSCFIter

+ +
+
+ + + + +
bool dftfe::dftParameters::estimateJacCondNoFinalSCFIter
+
+ +
+
+ +

◆ extrapolateDensity

+ +
+
+ + + + +
int dftfe::dftParameters::extrapolateDensity
+
+ +
+
+ +

◆ finiteElementPolynomialOrder

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::finiteElementPolynomialOrder
+
+ +
+
+ +

◆ finiteElementPolynomialOrderElectrostatics

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::finiteElementPolynomialOrderElectrostatics
+
+ +
+
+ +

◆ floatingNuclearCharges

+ +
+
+ + + + +
bool dftfe::dftParameters::floatingNuclearCharges
+
+ +
+
+ +

◆ forceRelaxTol

+ +
+
+ + + + +
double dftfe::dftParameters::forceRelaxTol
+
+ +
+
+ +

◆ gaussianConstantForce

+ +
+
+ + + + +
double dftfe::dftParameters::gaussianConstantForce
+
+ +
+
+ +

◆ gaussianOrderForce

+ +
+
+ + + + +
double dftfe::dftParameters::gaussianOrderForce
+
+ +
+
+ +

◆ gaussianOrderMoveMeshToAtoms

+ +
+
+ + + + +
double dftfe::dftParameters::gaussianOrderMoveMeshToAtoms
+
+ +
+
+ +

◆ highestStateOfInterestForChebFiltering

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::highestStateOfInterestForChebFiltering
+
+ +
+
+ +

◆ innerAtomBallRadius

+ +
+
+ + + + +
double dftfe::dftParameters::innerAtomBallRadius
+
+ +
+
+ +

◆ ionOptSolver

+ +
+
+ + + + +
std::string dftfe::dftParameters::ionOptSolver
+
+ +
+
+ +

◆ ionRelaxFlagsFile

+ +
+
+ + + + +
std::string dftfe::dftParameters::ionRelaxFlagsFile
+
+ +
+
+ +

◆ isBOMD

+ +
+
+ + + + +
bool dftfe::dftParameters::isBOMD
+
+ +
+
+ +

◆ isCellStress

+ +
+
+ + + + +
bool dftfe::dftParameters::isCellStress
+
+ +
+
+ +

◆ isIonForce

+ +
+
+ + + + +
bool dftfe::dftParameters::isIonForce
+
+ +
+
+ +

◆ isPseudopotential

+ +
+
+ + + + +
bool dftfe::dftParameters::isPseudopotential
+
+ +
+
+ +

◆ keepScratchFolder

+ +
+
+ + + + +
bool dftfe::dftParameters::keepScratchFolder
+
+ +
+
+ +

◆ kerkerParameter

+ +
+
+ + + + +
double dftfe::dftParameters::kerkerParameter
+
+ +
+
+ +

◆ kPointDataFile

+ +
+
+ + + + +
std::string dftfe::dftParameters::kPointDataFile
+
+ +
+
+ +

◆ lbfgsNumPastSteps

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::lbfgsNumPastSteps
+
+ +
+
+ +

◆ loadRhoData

+ +
+
+ + + + +
bool dftfe::dftParameters::loadRhoData
+
+ +
+
+ +

◆ maxCellUpdateStep

+ +
+
+ + + + +
double dftfe::dftParameters::maxCellUpdateStep
+
+ +
+
+ +

◆ maxIonUpdateStep

+ +
+
+ + + + +
double dftfe::dftParameters::maxIonUpdateStep
+
+ +
+
+ +

◆ maxJacobianRatioFactorForMD

+ +
+
+ + + + +
double dftfe::dftParameters::maxJacobianRatioFactorForMD
+
+ +
+
+ +

◆ maxLinearSolverIterations

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::maxLinearSolverIterations
+
+ +
+
+ +

◆ maxLinearSolverIterationsHelmholtz

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::maxLinearSolverIterationsHelmholtz
+
+ +
+
+ +

◆ maxLineSearchIterCGPRP

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::maxLineSearchIterCGPRP
+
+ +
+
+ +

◆ maxOptIter

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::maxOptIter
+
+ +
+
+ +

◆ maxStaggeredCycles

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::maxStaggeredCycles
+
+ +
+
+ +

◆ MaxWallTime

+ +
+
+ + + + +
double dftfe::dftParameters::MaxWallTime
+
+ +
+
+ +

◆ MDTrack

+ +
+
+ + + + +
int dftfe::dftParameters::MDTrack
+
+ +
+
+ +

◆ memOptMode

+ +
+
+ + + + +
bool dftfe::dftParameters::memOptMode
+
+ +
+
+ +

◆ meshAdaption

+ +
+
+ + + + +
bool dftfe::dftParameters::meshAdaption
+
+ +
+
+ +

◆ meshSizeInnerBall

+ +
+
+ + + + +
double dftfe::dftParameters::meshSizeInnerBall
+
+ +
+
+ +

◆ meshSizeOuterBall

+ +
+
+ + + + +
double dftfe::dftParameters::meshSizeOuterBall
+
+ +
+
+ +

◆ meshSizeOuterDomain

+ +
+
+ + + + +
double dftfe::dftParameters::meshSizeOuterDomain
+
+ +
+
+ +

◆ methodSubTypeLRD

+ +
+
+ + + + +
std::string dftfe::dftParameters::methodSubTypeLRD
+
+ +
+
+ +

◆ mixingHistory

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::mixingHistory
+
+ +
+
+ +

◆ mixingMethod

+ +
+
+ + + + +
std::string dftfe::dftParameters::mixingMethod
+
+ +
+
+ +

◆ mixingParameter

+ +
+
+ + + + +
double dftfe::dftParameters::mixingParameter
+
+ +
+
+ +

◆ modelXCInputFile

+ +
+
+ + + + +
std::string dftfe::dftParameters::modelXCInputFile
+
+ +
+
+ +

◆ mpiAllReduceMessageBlockSizeMB

+ +
+
+ + + + +
double dftfe::dftParameters::mpiAllReduceMessageBlockSizeMB
+
+ +
+
+ +

◆ multipoleBoundaryConditions

+ +
+
+ + + + +
bool dftfe::dftParameters::multipoleBoundaryConditions
+
+ +
+
+ +

◆ n_refinement_steps

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::n_refinement_steps
+
+ +
+
+ +

◆ natoms

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::natoms
+
+ +
+
+ +

◆ natomTypes

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::natomTypes
+
+ +
+
+ +

◆ nbandGrps

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::nbandGrps
+
+ +
+
+ +

◆ netCharge

+ +
+
+ + + + +
double dftfe::dftParameters::netCharge
+
+ +
+
+ +

◆ nkx

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::nkx
+
+ +
+
+ +

◆ nky

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::nky
+
+ +
+
+ +

◆ nkz

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::nkz
+
+ +
+
+ +

◆ nonLinearCoreCorrection

+ +
+
+ + + + +
bool dftfe::dftParameters::nonLinearCoreCorrection
+
+ +
+
+ +

◆ nonSelfConsistentForce

+ +
+
+ + + + +
bool dftfe::dftParameters::nonSelfConsistentForce
+
+ +
+
+ +

◆ npool

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::npool
+
+ +
+
+ +

◆ numberEigenValues

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::numberEigenValues
+
+ +
+
+ +

◆ numberStepsBOMD

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::numberStepsBOMD
+
+ +
+
+ +

◆ numberWaveFunctionsForEstimate

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::numberWaveFunctionsForEstimate
+
+ +
+
+ +

◆ numCoreWfcRR

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::numCoreWfcRR
+
+ +
+
+ +

◆ numCoreWfcXtHX

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::numCoreWfcXtHX
+
+ +
+
+ +

◆ numLevels

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::numLevels
+
+ +
+
+ +

◆ numPass

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::numPass
+
+ +
+
+ +

◆ numSCFIterations

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::numSCFIterations
+
+ +
+
+ +

◆ offsetFlagX

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::offsetFlagX
+
+ +
+
+ +

◆ offsetFlagY

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::offsetFlagY
+
+ +
+
+ +

◆ offsetFlagZ

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::offsetFlagZ
+
+ +
+
+ +

◆ optimizationMode

+ +
+
+ + + + +
std::string dftfe::dftParameters::optimizationMode
+
+ +
+
+ +

◆ orthogType

+ +
+
+ + + + +
std::string dftfe::dftParameters::orthogType
+
+ +
+
+ +

◆ outerAtomBallRadius

+ +
+
+ + + + +
double dftfe::dftParameters::outerAtomBallRadius
+
+ +
+
+ +

◆ overlapComputeCommunCheby

+ +
+
+ + + + +
bool dftfe::dftParameters::overlapComputeCommunCheby
+
+ +
+
+ +

◆ overlapComputeCommunOrthoRR

+ +
+
+ + + + +
bool dftfe::dftParameters::overlapComputeCommunOrthoRR
+
+ +
+
+ +

◆ periodicX

+ +
+
+ + + + +
bool dftfe::dftParameters::periodicX
+
+ +
+
+ +

◆ periodicY

+ +
+
+ + + + +
bool dftfe::dftParameters::periodicY
+
+ +
+
+ +

◆ periodicZ

+ +
+
+ + + + +
bool dftfe::dftParameters::periodicZ
+
+ +
+
+ +

◆ pinnedNodeForPBC

+ +
+
+ + + + +
bool dftfe::dftParameters::pinnedNodeForPBC
+
+ +
+
+ +

◆ poissonGPU

+ +
+
+ + + + +
bool dftfe::dftParameters::poissonGPU
+
+ +
+
+ +

◆ pseudoPotentialFile

+ +
+
+ + + + +
std::string dftfe::dftParameters::pseudoPotentialFile
+
+ +
+
+ +

◆ pseudoTestsFlag

+ +
+
+ + + + +
bool dftfe::dftParameters::pseudoTestsFlag
+
+ +
+
+ +

◆ pspCutoffImageCharges

+ +
+
+ + + + +
double dftfe::dftParameters::pspCutoffImageCharges
+
+ +
+
+ +

◆ radiusAtomBall

+ +
+
+ + + + +
double dftfe::dftParameters::radiusAtomBall
+
+ +
+
+ +

◆ readWfcForPdosPspFile

+ +
+
+ + + + +
bool dftfe::dftParameters::readWfcForPdosPspFile
+
+ +
+
+ +

◆ reproducible_output

+ +
+
+ + + + +
bool dftfe::dftParameters::reproducible_output
+
+ +
+
+ +

◆ restaFermiWavevector

+ +
+
+ + + + +
double dftfe::dftParameters::restaFermiWavevector
+
+ +
+
+ +

◆ restartFolder

+ +
+
+ + + + +
std::string dftfe::dftParameters::restartFolder
+
+ +
+
+ +

◆ restartSpinFromNoSpin

+ +
+
+ + + + +
bool dftfe::dftParameters::restartSpinFromNoSpin
+
+ +
+
+ +

◆ restaScreeningLength

+ +
+
+ + + + +
double dftfe::dftParameters::restaScreeningLength
+
+ +
+
+ +

◆ restrictToOnePass

+ +
+
+ + + + +
bool dftfe::dftParameters::restrictToOnePass
+
+ +
+
+ +

◆ reuseDensityGeoOpt

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::reuseDensityGeoOpt
+
+ +
+
+ +

◆ reuseLanczosUpperBoundFromFirstCall

+ +
+
+ + + + +
bool dftfe::dftParameters::reuseLanczosUpperBoundFromFirstCall
+
+ +
+
+ +

◆ reuseWfcGeoOpt

+ +
+
+ + + + +
bool dftfe::dftParameters::reuseWfcGeoOpt
+
+ +
+
+ +

◆ saveRhoData

+ +
+
+ + + + +
bool dftfe::dftParameters::saveRhoData
+
+ +
+
+ +

◆ scalapackBlockSize

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::scalapackBlockSize
+
+ +
+
+ +

◆ scalapackParalProcs

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::scalapackParalProcs
+
+ +
+
+ +

◆ selfConsistentSolverTolerance

+ +
+
+ + + + +
double dftfe::dftParameters::selfConsistentSolverTolerance
+
+ +
+
+ +

◆ singlePrecLRD

+ +
+
+ + + + +
bool dftfe::dftParameters::singlePrecLRD
+
+ +
+
+ +

◆ smearedNuclearCharges

+ +
+
+ + + + +
bool dftfe::dftParameters::smearedNuclearCharges
+
+ +
+
+ +

◆ solverMode

+ +
+
+ + + + +
std::string dftfe::dftParameters::solverMode
+
+ +
+
+ +

◆ spectrumSplitStartingScfIter

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::spectrumSplitStartingScfIter
+
+ +
+
+ +

◆ spinMixingEnhancementFactor

+ +
+
+ + + + +
double dftfe::dftParameters::spinMixingEnhancementFactor
+
+ +
+
+ +

◆ spinPolarized

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::spinPolarized
+
+ +
+
+ +

◆ start_magnetization

+ +
+
+ + + + +
double dftfe::dftParameters::start_magnetization
+
+ +
+
+ +

◆ startingNormLRDLargeDamping

+ +
+
+ + + + +
double dftfe::dftParameters::startingNormLRDLargeDamping
+
+

parameters for LRD preconditioner

+ +
+
+ +

◆ startingTempBOMD

+ +
+
+ + + + +
double dftfe::dftParameters::startingTempBOMD
+
+ +
+
+ +

◆ startingWFCType

+ +
+
+ + + + +
std::string dftfe::dftParameters::startingWFCType
+
+ +
+
+ +

◆ stressRelaxTol

+ +
+
+ + + + +
double dftfe::dftParameters::stressRelaxTol
+
+ +
+
+ +

◆ subspaceRotDofsBlockSize

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::subspaceRotDofsBlockSize
+
+ +
+
+ +

◆ tempControllerTypeBOMD

+ +
+
+ + + + +
std::string dftfe::dftParameters::tempControllerTypeBOMD
+
+ +
+
+ +

◆ thermostatTimeConstantBOMD

+ +
+
+ + + + +
double dftfe::dftParameters::thermostatTimeConstantBOMD
+
+ +
+
+ +

◆ timeReversal

+ +
+
+ + + + +
bool dftfe::dftParameters::timeReversal
+
+ +
+
+ +

◆ timeStepBOMD

+ +
+
+ + + + +
double dftfe::dftParameters::timeStepBOMD
+
+ +
+
+ +

◆ toleranceKinetic

+ +
+
+ + + + +
double dftfe::dftParameters::toleranceKinetic
+
+ +
+
+ +

◆ topfrac

+ +
+
+ + + + +
double dftfe::dftParameters::topfrac
+
+ +
+
+ +

◆ TotalImages

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::TotalImages
+
+ +
+
+ +

◆ TVal

+ +
+
+ + + + +
double dftfe::dftParameters::TVal
+
+ +
+
+ +

◆ useDCCL

+ +
+
+ + + + +
bool dftfe::dftParameters::useDCCL
+
+ +
+
+ +

◆ useDensityMatrixPerturbationRankUpdates

+ +
+
+ + + + +
bool dftfe::dftParameters::useDensityMatrixPerturbationRankUpdates
+
+ +
+
+ +

◆ useDevice

+ +
+
+ + + + +
bool dftfe::dftParameters::useDevice
+
+ +
+
+ +

◆ useDeviceDirectAllReduce

+ +
+
+ + + + +
bool dftfe::dftParameters::useDeviceDirectAllReduce
+
+ +
+
+ +

◆ useELPA

+ +
+
+ + + + +
bool dftfe::dftParameters::useELPA
+
+ +
+
+ +

◆ useELPADeviceKernel

+ +
+
+ + + + +
bool dftfe::dftParameters::useELPADeviceKernel
+
+ +
+
+ +

◆ useFlatTopGenerator

+ +
+
+ + + + +
bool dftfe::dftParameters::useFlatTopGenerator
+
+ +
+
+ +

◆ useMeshSizesFromAtomsFile

+ +
+
+ + + + +
bool dftfe::dftParameters::useMeshSizesFromAtomsFile
+
+ +
+
+ +

◆ useMixedPrecCGS_O

+ +
+
+ + + + +
bool dftfe::dftParameters::useMixedPrecCGS_O
+
+ +
+
+ +

◆ useMixedPrecCGS_SR

+ +
+
+ + + + +
bool dftfe::dftParameters::useMixedPrecCGS_SR
+
+ +
+
+ +

◆ useMixedPrecCheby

+ +
+
+ + + + +
bool dftfe::dftParameters::useMixedPrecCheby
+
+ +
+
+ +

◆ useMixedPrecCommunOnlyXTHXCGSO

+ +
+
+ + + + +
bool dftfe::dftParameters::useMixedPrecCommunOnlyXTHXCGSO
+
+ +
+
+ +

◆ useMixedPrecSubspaceRotRR

+ +
+
+ + + + +
bool dftfe::dftParameters::useMixedPrecSubspaceRotRR
+
+ +
+
+ +

◆ useMixedPrecXTHXSpectrumSplit

+ +
+
+ + + + +
bool dftfe::dftParameters::useMixedPrecXTHXSpectrumSplit
+
+ +
+
+ +

◆ usePreconditioner

+ +
+
+ + + + +
bool dftfe::dftParameters::usePreconditioner
+
+ +
+
+ +

◆ useSubspaceProjectedSHEPGPU

+ +
+
+ + + + +
bool dftfe::dftParameters::useSubspaceProjectedSHEPGPU
+
+ +
+
+ +

◆ useSymm

+ +
+
+ + + + +
bool dftfe::dftParameters::useSymm
+
+ +
+
+ +

◆ useTF32Device

+ +
+
+ + + + +
bool dftfe::dftParameters::useTF32Device
+
+ +
+
+ +

◆ verbosity

+ +
+
+ + + + +
int dftfe::dftParameters::verbosity
+
+ +
+
+ +

◆ vselfGPU

+ +
+
+ + + + +
bool dftfe::dftParameters::vselfGPU
+
+ +
+
+ +

◆ wfcBlockSize

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::wfcBlockSize
+
+ +
+
+ +

◆ writeBandsFile

+ +
+
+ + + + +
bool dftfe::dftParameters::writeBandsFile
+
+ +
+
+ +

◆ writeDensityQuadData

+ +
+
+ + + + +
bool dftfe::dftParameters::writeDensityQuadData
+
+ +
+
+ +

◆ writeDensitySolutionFields

+ +
+
+ + + + +
bool dftfe::dftParameters::writeDensitySolutionFields
+
+ +
+
+ +

◆ writeDosFile

+ +
+
+ + + + +
bool dftfe::dftParameters::writeDosFile
+
+ +
+
+ +

◆ writeLdosFile

+ +
+
+ + + + +
bool dftfe::dftParameters::writeLdosFile
+
+ +
+
+ +

◆ writeLocalizationLengths

+ +
+
+ + + + +
bool dftfe::dftParameters::writeLocalizationLengths
+
+ +
+
+ +

◆ writePdosFile

+ +
+
+ + + + +
bool dftfe::dftParameters::writePdosFile
+
+ +
+
+ +

◆ writeStructreEnergyForcesFileForPostProcess

+ +
+
+ + + + +
bool dftfe::dftParameters::writeStructreEnergyForcesFileForPostProcess
+
+ +
+
+ +

◆ writeWfcSolutionFields

+ +
+
+ + + + +
bool dftfe::dftParameters::writeWfcSolutionFields
+
+ +
+
+ +

◆ xc_id

+ +
+
+ + + + +
unsigned int dftfe::dftParameters::xc_id
+
+ +
+
+ +

◆ xlbomdKernelRankUpdateFDParameter

+ +
+
+ + + + +
double dftfe::dftParameters::xlbomdKernelRankUpdateFDParameter
+
+ +
+
+ +

◆ xlbomdRestartChebyTol

+ +
+
+ + + + +
double dftfe::dftParameters::xlbomdRestartChebyTol
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1dft_utils_1_1_composite_data-members.html b/classdftfe_1_1dft_utils_1_1_composite_data-members.html new file mode 100644 index 000000000..31f29d393 --- /dev/null +++ b/classdftfe_1_1dft_utils_1_1_composite_data-members.html @@ -0,0 +1,95 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::dftUtils::CompositeData Member List
+
+
+ +

This is the complete list of members for dftfe::dftUtils::CompositeData, including all inherited members.

+ + + + + +
CompositeData()=defaultdftfe::dftUtils::CompositeData
getCharArray(char *data)=0dftfe::dftUtils::CompositeDatapure virtual
getMPIDataType(MPI_Datatype *mpi_datatype)=0dftfe::dftUtils::CompositeDatapure virtual
getNumberCharsPerCompositeData()=0dftfe::dftUtils::CompositeDatapure virtual
+ + + + diff --git a/classdftfe_1_1dft_utils_1_1_composite_data.html b/classdftfe_1_1dft_utils_1_1_composite_data.html new file mode 100644 index 000000000..3aa6b506d --- /dev/null +++ b/classdftfe_1_1dft_utils_1_1_composite_data.html @@ -0,0 +1,225 @@ + + + + + + + +DFT-FE: dftfe::dftUtils::CompositeData Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::dftUtils::CompositeData Class Referenceabstract
+
+
+ +

#include <CompositeData.h>

+
+Inheritance diagram for dftfe::dftUtils::CompositeData:
+
+
+ + +dftfe::dftUtils::QuadDataCompositeWrite + +
+ + + + + + + + + + +

+Public Member Functions

 CompositeData ()=default
 
virtual void getCharArray (char *data)=0
 
virtual void getMPIDataType (MPI_Datatype *mpi_datatype)=0
 
virtual int getNumberCharsPerCompositeData ()=0
 
+

Constructor & Destructor Documentation

+ +

◆ CompositeData()

+ +
+
+ + + + + +
+ + + + + + + +
dftfe::dftUtils::CompositeData::CompositeData ()
+
+default
+
+ +
+
+

Member Function Documentation

+ +

◆ getCharArray()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::dftUtils::CompositeData::getCharArray (char * data)
+
+pure virtual
+
+
+ +

◆ getMPIDataType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::dftUtils::CompositeData::getMPIDataType (MPI_Datatype * mpi_datatype)
+
+pure virtual
+
+
+ +

◆ getNumberCharsPerCompositeData()

+ +
+
+ + + + + +
+ + + + + + + +
virtual int dftfe::dftUtils::CompositeData::getNumberCharsPerCompositeData ()
+
+pure virtual
+
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1dft_utils_1_1_composite_data.png b/classdftfe_1_1dft_utils_1_1_composite_data.png new file mode 100644 index 0000000000000000000000000000000000000000..5f325c67e045ccbf9d8e92707cf5a331d16e828f GIT binary patch literal 888 zcmeAS@N?(olHy`uVBq!ia0vp^&wx09gBeI#ssDTkq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SR%c<=xyZhAIs2~du+B*-tA0mugfbEer>7#NtDJzX3_Dj46+ec!i6f#)dy z@sy%_|2yAnC@p<(B5nO--c1kJ@ICdf-*RO=hhodeRt3++*-2iPG-l11WYSgFu#=BR z(N<+;fLZ>rA3poL8sFP{z6vm`T|Fbu+4I%K^9JTqCiBkuDe;V5eYHyIiG*F9a_sJN#s(pHuI8qyb@k$#4=fWu#XeoTSMsu03-_6{OLfP5 zJf$DY2wzcK`_XCAx-Y9U>I}3s%>A!7YqDPcbY}PDZMEj-&v1P@D|%+~>Dof`)tf%V z8=e*asIgRStyi&^YIr8Ue}B}g2~ktc)`rJSjyODdDf1W4TUC#j0qyX zJ`57B!om!07mu(s1QI0_y+!Brr_{aEQX}_i>!?`nQd9HnTh!?}Y4M5!Jgc3mCZsIP zx!3b?W}PVW{d$$iY}vPKj{bh>GD#=o&F;#yYpdpbn(_O=v$S(HJfE8`n5eHm-9AaoXy%07pY30N`}aFSS$D!U&)u_U zMxG32E=b7R>$>C9>wB{<@}%5-bz{2skG$zlFTb}zq+xulvDrxGtFiF%T_kK zYnt8+oOPM~T-IXfOp6Hg}i&}k2&iM9>w_e_p>O=p|51N#d znKbFi{R_?po}bER%}}xI0*9pevrRguKm1}}5Wjzml*uP`U>;%cboFyt=akR{0IXTB A_W%F@ literal 0 HcmV?d00001 diff --git a/classdftfe_1_1dft_utils_1_1_m_p_i_write_on_file-members.html b/classdftfe_1_1dft_utils_1_1_m_p_i_write_on_file-members.html new file mode 100644 index 000000000..903fad28a --- /dev/null +++ b/classdftfe_1_1dft_utils_1_1_m_p_i_write_on_file-members.html @@ -0,0 +1,92 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::dftUtils::MPIWriteOnFile Member List
+
+
+ +

This is the complete list of members for dftfe::dftUtils::MPIWriteOnFile, including all inherited members.

+ + +
writeData(const std::vector< CompositeData * > &data, const std::string &fileName, const MPI_Comm &mpiComm)dftfe::dftUtils::MPIWriteOnFilestatic
+ + + + diff --git a/classdftfe_1_1dft_utils_1_1_m_p_i_write_on_file.html b/classdftfe_1_1dft_utils_1_1_m_p_i_write_on_file.html new file mode 100644 index 000000000..a31d712e0 --- /dev/null +++ b/classdftfe_1_1dft_utils_1_1_m_p_i_write_on_file.html @@ -0,0 +1,137 @@ + + + + + + + +DFT-FE: dftfe::dftUtils::MPIWriteOnFile Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::dftUtils::MPIWriteOnFile Class Reference
+
+
+ +

#include <MPIWriteOnFile.h>

+ + + + +

+Static Public Member Functions

static void writeData (const std::vector< CompositeData * > &data, const std::string &fileName, const MPI_Comm &mpiComm)
 
+

Member Function Documentation

+ +

◆ writeData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
static void dftfe::dftUtils::MPIWriteOnFile::writeData (const std::vector< CompositeData * > & data,
const std::string & fileName,
const MPI_Comm & mpiComm )
+
+static
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1dft_utils_1_1_pool-members.html b/classdftfe_1_1dft_utils_1_1_pool-members.html new file mode 100644 index 000000000..f7defa5ad --- /dev/null +++ b/classdftfe_1_1dft_utils_1_1_pool-members.html @@ -0,0 +1,96 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::dftUtils::Pool Member List
+
+
+ +

This is the complete list of members for dftfe::dftUtils::Pool, including all inherited members.

+ + + + + + +
get_interpool_comm()dftfe::dftUtils::Pool
get_intrapool_comm()dftfe::dftUtils::Pool
interpoolcommdftfe::dftUtils::Poolprivate
intrapoolcommdftfe::dftUtils::Poolprivate
Pool(const MPI_Comm &mpi_communicator, const unsigned int n_pools, const int verbosity)dftfe::dftUtils::Pool
+ + + + diff --git a/classdftfe_1_1dft_utils_1_1_pool.html b/classdftfe_1_1dft_utils_1_1_pool.html new file mode 100644 index 000000000..456344598 --- /dev/null +++ b/classdftfe_1_1dft_utils_1_1_pool.html @@ -0,0 +1,229 @@ + + + + + + + +DFT-FE: dftfe::dftUtils::Pool Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::dftUtils::Pool Class Reference
+
+
+ +

#include <dftUtils.h>

+ + + + + + + + + + +

+Public Member Functions

 Pool (const MPI_Comm &mpi_communicator, const unsigned int n_pools, const int verbosity)
 
MPI_Commget_interpool_comm ()
 get the communicator across the processor groups
 
MPI_Commget_intrapool_comm ()
 get the communicator associated with processor group
 
+ + + + + +

+Private Attributes

MPI_Comm interpoolcomm
 
MPI_Comm intrapoolcomm
 
+

Detailed Description

+

A class to split the given communicator into a number of pools

+

Constructor & Destructor Documentation

+ +

◆ Pool()

+ +
+
+ + + + + + + + + + + + + + + + +
dftfe::dftUtils::Pool::Pool (const MPI_Comm & mpi_communicator,
const unsigned int n_pools,
const int verbosity )
+
+ +
+
+

Member Function Documentation

+ +

◆ get_interpool_comm()

+ +
+
+ + + + + + + +
MPI_Comm & dftfe::dftUtils::Pool::get_interpool_comm ()
+
+ +

get the communicator across the processor groups

+ +
+
+ +

◆ get_intrapool_comm()

+ +
+
+ + + + + + + +
MPI_Comm & dftfe::dftUtils::Pool::get_intrapool_comm ()
+
+ +

get the communicator associated with processor group

+ +
+
+

Member Data Documentation

+ +

◆ interpoolcomm

+ +
+
+ + + + + +
+ + + + +
MPI_Comm dftfe::dftUtils::Pool::interpoolcomm
+
+private
+
+ +
+
+ +

◆ intrapoolcomm

+ +
+
+ + + + + +
+ + + + +
MPI_Comm dftfe::dftUtils::Pool::intrapoolcomm
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1dft_utils_1_1_quad_data_composite_write-members.html b/classdftfe_1_1dft_utils_1_1_quad_data_composite_write-members.html new file mode 100644 index 000000000..e9f224643 --- /dev/null +++ b/classdftfe_1_1dft_utils_1_1_quad_data_composite_write-members.html @@ -0,0 +1,98 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::dftUtils::QuadDataCompositeWrite Member List
+
+ + + + + diff --git a/classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html b/classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html new file mode 100644 index 000000000..06aa3dc15 --- /dev/null +++ b/classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html @@ -0,0 +1,273 @@ + + + + + + + +DFT-FE: dftfe::dftUtils::QuadDataCompositeWrite Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::dftUtils::QuadDataCompositeWrite Class Reference
+
+
+ +

#include <QuadDataCompositeWrite.h>

+
+Inheritance diagram for dftfe::dftUtils::QuadDataCompositeWrite:
+
+
+ + +dftfe::dftUtils::CompositeData + +
+ + + + + + + + + + + + + +

+Public Member Functions

 QuadDataCompositeWrite (const std::vector< double > &vals)
 
virtual void getCharArray (char *data) override
 
virtual void getMPIDataType (MPI_Datatype *mpi_datatype) override
 
virtual int getNumberCharsPerCompositeData () override
 
- Public Member Functions inherited from dftfe::dftUtils::CompositeData
 CompositeData ()=default
 
+ + + + + +

+Private Attributes

unsigned int d_charspernum
 
std::vector< doubled_vals
 
+

Constructor & Destructor Documentation

+ +

◆ QuadDataCompositeWrite()

+ +
+
+ + + + + + + +
dftfe::dftUtils::QuadDataCompositeWrite::QuadDataCompositeWrite (const std::vector< double > & vals)
+
+ +
+
+

Member Function Documentation

+ +

◆ getCharArray()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::dftUtils::QuadDataCompositeWrite::getCharArray (char * data)
+
+overridevirtual
+
+ +

Implements dftfe::dftUtils::CompositeData.

+ +
+
+ +

◆ getMPIDataType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::dftUtils::QuadDataCompositeWrite::getMPIDataType (MPI_Datatype * mpi_datatype)
+
+overridevirtual
+
+ +

Implements dftfe::dftUtils::CompositeData.

+ +
+
+ +

◆ getNumberCharsPerCompositeData()

+ +
+
+ + + + + +
+ + + + + + + +
virtual int dftfe::dftUtils::QuadDataCompositeWrite::getNumberCharsPerCompositeData ()
+
+overridevirtual
+
+ +

Implements dftfe::dftUtils::CompositeData.

+ +
+
+

Member Data Documentation

+ +

◆ d_charspernum

+ +
+
+ + + + + +
+ + + + +
unsigned int dftfe::dftUtils::QuadDataCompositeWrite::d_charspernum
+
+private
+
+ +
+
+ +

◆ d_vals

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftUtils::QuadDataCompositeWrite::d_vals
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1dft_utils_1_1_quad_data_composite_write.png b/classdftfe_1_1dft_utils_1_1_quad_data_composite_write.png new file mode 100644 index 0000000000000000000000000000000000000000..a8cdd7bf142695ad81542bbab14fad7d2dc28e03 GIT binary patch literal 883 zcmV-(1C0EMP)vTJr#LVva2S`&=-}Ys|Ns9r%~qrU000SeQchC<|NsC0|NsC0Hv*f~00091 zNklyGOn41|Y?w3_#S;?sl>j3G^`o~~9d71I#R?Zd|Ti)C4s_`*Vx(KRti zGKwZ9Nk-8Nm}yli50Y$D&6_bl%Ujd&@gvC_YKE`l?7+K|ypFk{oGjqXM>pTOSV{7R z45l0S3Czt;>uGLhnmuQiH0H9Oz3RN*cqjKO=aYNw^A_X!EIn(`l*YS(aT9Z!v2j=l$GGhmrPXhlbl)9%B8%nvkq{JG$?aEsjW!hup z7;~IyCF!r~{Vh&RN%|Z55==>YPZLv;qG)1DQWQNfQ%Whk{sGuZydjN=#GC*C002ov JPDHLkV1oW;x7z>! literal 0 HcmV?d00001 diff --git a/classdftfe_1_1dft_utils_1_1constraint_matrix_info-members.html b/classdftfe_1_1dft_utils_1_1constraint_matrix_info-members.html new file mode 100644 index 000000000..56a3fc417 --- /dev/null +++ b/classdftfe_1_1dft_utils_1_1constraint_matrix_info-members.html @@ -0,0 +1,112 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::dftUtils::constraintMatrixInfo Member List
+
+
+ +

This is the complete list of members for dftfe::dftUtils::constraintMatrixInfo, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
clear()dftfe::dftUtils::constraintMatrixInfo
constraintMatrixInfo()dftfe::dftUtils::constraintMatrixInfo
d_columnIdsGlobaldftfe::dftUtils::constraintMatrixInfoprivate
d_columnIdsLocaldftfe::dftUtils::constraintMatrixInfoprivate
d_columnValuesdftfe::dftUtils::constraintMatrixInfoprivate
d_inhomogenitiesdftfe::dftUtils::constraintMatrixInfoprivate
d_localIndexMapUnflattenedToFlatteneddftfe::dftUtils::constraintMatrixInfoprivate
d_rowIdsGlobaldftfe::dftUtils::constraintMatrixInfoprivate
d_rowIdsLocaldftfe::dftUtils::constraintMatrixInfoprivate
d_rowSizesdftfe::dftUtils::constraintMatrixInfoprivate
distribute(distributedCPUVec< double > &fieldVector) constdftfe::dftUtils::constraintMatrixInfo
distribute(distributedCPUVec< T > &fieldVector, const unsigned int blockSize) constdftfe::dftUtils::constraintMatrixInfo
distribute(distributedCPUMultiVec< T > &fieldVector) constdftfe::dftUtils::constraintMatrixInfo
distribute_slave_to_master(distributedCPUVec< T > &fieldVector, const unsigned int blockSize) constdftfe::dftUtils::constraintMatrixInfo
distribute_slave_to_master(distributedCPUMultiVec< T > &fieldVector) constdftfe::dftUtils::constraintMatrixInfo
initialize(const std::shared_ptr< const dealii::Utilities::MPI::Partitioner > &partitioner, const dealii::AffineConstraints< double > &constraintMatrixData)dftfe::dftUtils::constraintMatrixInfo
initializeScaledConstraints(const distributedCPUVec< double > &invSqrtMassVec)dftfe::dftUtils::constraintMatrixInfo
initializeScaledConstraints(const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &invSqrtMassVec)dftfe::dftUtils::constraintMatrixInfo
set_zero(distributedCPUVec< T > &fieldVector, const unsigned int blockSize) constdftfe::dftUtils::constraintMatrixInfo
set_zero(distributedCPUMultiVec< T > &fieldVector) constdftfe::dftUtils::constraintMatrixInfo
~constraintMatrixInfo()dftfe::dftUtils::constraintMatrixInfo
+ + + + diff --git a/classdftfe_1_1dft_utils_1_1constraint_matrix_info.html b/classdftfe_1_1dft_utils_1_1constraint_matrix_info.html new file mode 100644 index 000000000..e88a1d6ff --- /dev/null +++ b/classdftfe_1_1dft_utils_1_1constraint_matrix_info.html @@ -0,0 +1,646 @@ + + + + + + + +DFT-FE: dftfe::dftUtils::constraintMatrixInfo Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::dftUtils::constraintMatrixInfo Class Reference
+
+
+ +

Overloads dealii's distribute and distribute_local_to_global functions associated with constraints class. Stores the dealii's constraint matrix data into STL vectors for faster memory access costs. + More...

+ +

#include <constraintMatrixInfo.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 constraintMatrixInfo ()
 
 ~constraintMatrixInfo ()
 
void initialize (const std::shared_ptr< const dealii::Utilities::MPI::Partitioner > &partitioner, const dealii::AffineConstraints< double > &constraintMatrixData)
 convert a given constraintMatrix to simple arrays (STL) for fast access
 
void distribute (distributedCPUVec< double > &fieldVector) const
 overloaded dealii internal function "distribute" which sets the slave node field values from master nodes
 
template<typename T >
void distribute (distributedCPUVec< T > &fieldVector, const unsigned int blockSize) const
 overloaded dealii internal function distribute for flattened dealii array which sets the slave node field values from master nodes
 
template<typename T >
void distribute (distributedCPUMultiVec< T > &fieldVector) const
 
template<typename T >
void distribute_slave_to_master (distributedCPUVec< T > &fieldVector, const unsigned int blockSize) const
 transfers the contributions of slave nodes to master nodes using the constraint equation slave nodes are the nodes which are to the right of the constraint equation and master nodes are the nodes which are left of the constraint equation.
 
template<typename T >
void distribute_slave_to_master (distributedCPUMultiVec< T > &fieldVector) const
 
void initializeScaledConstraints (const distributedCPUVec< double > &invSqrtMassVec)
 Scales the constraints with the inverse diagonal mass matrix so that the scaling of the vector can be done at the cell level.
 
void initializeScaledConstraints (const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &invSqrtMassVec)
 
template<typename T >
void set_zero (distributedCPUVec< T > &fieldVector, const unsigned int blockSize) const
 sets field values at constrained nodes to be zero
 
template<typename T >
void set_zero (distributedCPUMultiVec< T > &fieldVector) const
 
void clear ()
 
+ + + + + + + + + + + + + + + + + +

+Private Attributes

std::vector< dealii::types::global_dof_index > d_rowIdsGlobal
 
std::vector< dealii::types::global_dof_index > d_rowIdsLocal
 
std::vector< dealii::types::global_dof_index > d_columnIdsLocal
 
std::vector< dealii::types::global_dof_index > d_columnIdsGlobal
 
std::vector< doubled_columnValues
 
std::vector< doubled_inhomogenities
 
std::vector< dealii::types::global_dof_index > d_rowSizes
 
std::vector< dealii::types::global_dof_index > d_localIndexMapUnflattenedToFlattened
 
+

Detailed Description

+

Overloads dealii's distribute and distribute_local_to_global functions associated with constraints class. Stores the dealii's constraint matrix data into STL vectors for faster memory access costs.

+
Author
Phani Motamarri
+

Constructor & Destructor Documentation

+ +

◆ constraintMatrixInfo()

+ +
+
+ + + + + + + +
dftfe::dftUtils::constraintMatrixInfo::constraintMatrixInfo ()
+
+

class constructor

+ +
+
+ +

◆ ~constraintMatrixInfo()

+ +
+
+ + + + + + + +
dftfe::dftUtils::constraintMatrixInfo::~constraintMatrixInfo ()
+
+

class destructor

+ +
+
+

Member Function Documentation

+ +

◆ clear()

+ +
+
+ + + + + + + +
void dftfe::dftUtils::constraintMatrixInfo::clear ()
+
+

clear data members

+ +
+
+ +

◆ distribute() [1/3]

+ +
+
+
+template<typename T >
+ + + + + + + +
void dftfe::dftUtils::constraintMatrixInfo::distribute (distributedCPUMultiVec< T > & fieldVector) const
+
+ +
+
+ +

◆ distribute() [2/3]

+ +
+
+ + + + + + + +
void dftfe::dftUtils::constraintMatrixInfo::distribute (distributedCPUVec< double > & fieldVector) const
+
+ +

overloaded dealii internal function "distribute" which sets the slave node field values from master nodes

+
Parameters
+ + +
fieldVectorparallel dealii vector
+
+
+ +
+
+ +

◆ distribute() [3/3]

+ +
+
+
+template<typename T >
+ + + + + + + + + + + +
void dftfe::dftUtils::constraintMatrixInfo::distribute (distributedCPUVec< T > & fieldVector,
const unsigned int blockSize ) const
+
+ +

overloaded dealii internal function distribute for flattened dealii array which sets the slave node field values from master nodes

+
Parameters
+ + +
blockSizenumber of components for a given node
+
+
+ +
+
+ +

◆ distribute_slave_to_master() [1/2]

+ +
+
+
+template<typename T >
+ + + + + + + +
void dftfe::dftUtils::constraintMatrixInfo::distribute_slave_to_master (distributedCPUMultiVec< T > & fieldVector) const
+
+ +
+
+ +

◆ distribute_slave_to_master() [2/2]

+ +
+
+
+template<typename T >
+ + + + + + + + + + + +
void dftfe::dftUtils::constraintMatrixInfo::distribute_slave_to_master (distributedCPUVec< T > & fieldVector,
const unsigned int blockSize ) const
+
+ +

transfers the contributions of slave nodes to master nodes using the constraint equation slave nodes are the nodes which are to the right of the constraint equation and master nodes are the nodes which are left of the constraint equation.

+
Parameters
+ + + +
fieldVectorparallel dealii vector which is the result of matrix-vector product(vmult) withot taking care of constraints
blockSizenumber of components for a given node
+
+
+ +
+
+ +

◆ initialize()

+ +
+
+ + + + + + + + + + + +
void dftfe::dftUtils::constraintMatrixInfo::initialize (const std::shared_ptr< const dealii::Utilities::MPI::Partitioner > & partitioner,
const dealii::AffineConstraints< double > & constraintMatrixData )
+
+ +

convert a given constraintMatrix to simple arrays (STL) for fast access

+
Parameters
+ + + +
partitionerassociated with the dealii vector
constraintMatrixDatadealii constraint matrix from which the data is extracted
+
+
+ +
+
+ +

◆ initializeScaledConstraints() [1/2]

+ +
+
+ + + + + + + +
void dftfe::dftUtils::constraintMatrixInfo::initializeScaledConstraints (const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & invSqrtMassVec)
+
+ +
+
+ +

◆ initializeScaledConstraints() [2/2]

+ +
+
+ + + + + + + +
void dftfe::dftUtils::constraintMatrixInfo::initializeScaledConstraints (const distributedCPUVec< double > & invSqrtMassVec)
+
+ +

Scales the constraints with the inverse diagonal mass matrix so that the scaling of the vector can be done at the cell level.

+
Parameters
+ + +
invSqrtMassVecthe inverse diagonal mass matrix
+
+
+ +
+
+ +

◆ set_zero() [1/2]

+ +
+
+
+template<typename T >
+ + + + + + + +
void dftfe::dftUtils::constraintMatrixInfo::set_zero (distributedCPUMultiVec< T > & fieldVector) const
+
+ +
+
+ +

◆ set_zero() [2/2]

+ +
+
+
+template<typename T >
+ + + + + + + + + + + +
void dftfe::dftUtils::constraintMatrixInfo::set_zero (distributedCPUVec< T > & fieldVector,
const unsigned int blockSize ) const
+
+ +

sets field values at constrained nodes to be zero

+
Parameters
+ + + +
fieldVectorparallel dealii vector with fields stored in a flattened format
blockSizenumber of field components for a given node
+
+
+ +
+
+

Member Data Documentation

+ +

◆ d_columnIdsGlobal

+ +
+
+ + + + + +
+ + + + +
std::vector<dealii::types::global_dof_index> dftfe::dftUtils::constraintMatrixInfo::d_columnIdsGlobal
+
+private
+
+ +
+
+ +

◆ d_columnIdsLocal

+ +
+
+ + + + + +
+ + + + +
std::vector<dealii::types::global_dof_index> dftfe::dftUtils::constraintMatrixInfo::d_columnIdsLocal
+
+private
+
+ +
+
+ +

◆ d_columnValues

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftUtils::constraintMatrixInfo::d_columnValues
+
+private
+
+ +
+
+ +

◆ d_inhomogenities

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::dftUtils::constraintMatrixInfo::d_inhomogenities
+
+private
+
+ +
+
+ +

◆ d_localIndexMapUnflattenedToFlattened

+ +
+
+ + + + + +
+ + + + +
std::vector<dealii::types::global_dof_index> dftfe::dftUtils::constraintMatrixInfo::d_localIndexMapUnflattenedToFlattened
+
+private
+
+ +
+
+ +

◆ d_rowIdsGlobal

+ +
+
+ + + + + +
+ + + + +
std::vector<dealii::types::global_dof_index> dftfe::dftUtils::constraintMatrixInfo::d_rowIdsGlobal
+
+private
+
+ +
+
+ +

◆ d_rowIdsLocal

+ +
+
+ + + + + +
+ + + + +
std::vector<dealii::types::global_dof_index> dftfe::dftUtils::constraintMatrixInfo::d_rowIdsLocal
+
+private
+
+ +
+
+ +

◆ d_rowSizes

+ +
+
+ + + + + +
+ + + + +
std::vector<dealii::types::global_dof_index> dftfe::dftUtils::constraintMatrixInfo::d_rowSizes
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1dftfe_wrapper-members.html b/classdftfe_1_1dftfe_wrapper-members.html new file mode 100644 index 000000000..d3e4522d2 --- /dev/null +++ b/classdftfe_1_1dftfe_wrapper-members.html @@ -0,0 +1,127 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::dftfeWrapper Member List
+
+
+ +

This is the complete list of members for dftfe::dftfeWrapper, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
clear()dftfe::dftfeWrapper
computeDFTFreeEnergy(const bool computeIonForces=true, const bool computeCellStress=false)dftfe::dftfeWrapper
computeStress()dftfe::dftfeWrapper
createScratchFolder()dftfe::dftfeWrapperprivate
d_dftfeBasePtrdftfe::dftfeWrapperprivate
d_dftfeParamsPtrdftfe::dftfeWrapperprivate
d_isDeviceToMPITaskBindingSetInternallydftfe::dftfeWrapperprivate
d_mpi_comm_parentdftfe::dftfeWrapperprivate
d_scratchFolderNamedftfe::dftfeWrapperprivate
deformCell(const std::vector< std::vector< double > > deformationGradient)dftfe::dftfeWrapper
dftfeWrapper()dftfe::dftfeWrapper
dftfeWrapper(const std::string parameter_file, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const bool setDeviceToMPITaskBindingInternally=false, const std::string solverMode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool useDevice=false)dftfe::dftfeWrapper
dftfeWrapper(const std::string parameter_file, const std::string restartCoordsFile, const std::string restartDomainVectorsFile, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const bool setDeviceToMPITaskBindingInternally=false, const std::string solverMode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool useDevice=false, const bool isScfRestart=true)dftfe::dftfeWrapper
dftfeWrapper(const MPI_Comm &mpi_comm_parent, const bool useDevice, const std::vector< std::vector< double > > atomicPositionsCart, const std::vector< unsigned int > atomicNumbers, const std::vector< std::vector< double > > cell, const std::vector< bool > pbc, const std::vector< unsigned int > mpGrid=std::vector< unsigned int >{1, 1, 1}, const std::vector< bool > mpGridShift=std::vector< bool >{false, false, false}, const bool spinPolarizedDFT=false, const double startMagnetization=0.0, const double fermiDiracSmearingTemp=500.0, const unsigned int npkpt=0, const double meshSize=0.8, const double scfMixingParameter=0.2, const int verbosity=-1, const bool setDeviceToMPITaskBindingInternally=false)dftfe::dftfeWrapper
getAtomicNumbers() constdftfe::dftfeWrapper
getAtomPositionsCart() constdftfe::dftfeWrapper
getAtomPositionsFrac() constdftfe::dftfeWrapper
getCell() constdftfe::dftfeWrapper
getCellStress() constdftfe::dftfeWrapper
getDftfeBasePtr()dftfe::dftfeWrapper
getDFTFreeEnergy() constdftfe::dftfeWrapper
getElectronicEntropicEnergy() constdftfe::dftfeWrapper
getForcesAtoms() constdftfe::dftfeWrapper
getPBC() constdftfe::dftfeWrapper
getValenceElectronNumbers() constdftfe::dftfeWrapper
globalHandlesFinalize()dftfe::dftfeWrapperstatic
globalHandlesInitialize(const MPI_Comm &mpi_comm_world)dftfe::dftfeWrapperstatic
initialize(const bool setDeviceToMPITaskBindingInternally, const bool useDevice)dftfe::dftfeWrapperprivate
reinit(const std::string parameter_file, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const bool setDeviceToMPITaskBindingInternally=false, const std::string solverMode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool useDevice=false)dftfe::dftfeWrapper
reinit(const std::string parameter_file, const std::string restartCoordsFile, const std::string restartDomainVectorsFile, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const bool setDeviceToMPITaskBindingInternally=false, const std::string solverMode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool useDevice=false, const bool isScfRestart=true)dftfe::dftfeWrapper
reinit(const MPI_Comm &mpi_comm_parent, const bool useDevice, const std::vector< std::vector< double > > atomicPositionsCart, const std::vector< unsigned int > atomicNumbers, const std::vector< std::vector< double > > cell, const std::vector< bool > pbc, const std::vector< unsigned int > mpGrid=std::vector< unsigned int >{1, 1, 1}, const std::vector< bool > mpGridShift=std::vector< bool >{false, false, false}, const bool spinPolarizedDFT=false, const double startMagnetization=0.0, const double fermiDiracSmearingTemp=500.0, const unsigned int npkpt=0, const double meshSize=0.8, const double scfMixingParameter=0.2, const int verbosity=-1, const bool setDeviceToMPITaskBindingInternally=false)dftfe::dftfeWrapper
run()dftfe::dftfeWrapper
updateAtomPositions(const std::vector< std::vector< double > > atomsDisplacements)dftfe::dftfeWrapper
writeDomainAndAtomCoordinates(const std::string Path) constdftfe::dftfeWrapper
writeMesh()dftfe::dftfeWrapper
~dftfeWrapper()dftfe::dftfeWrapper
+ + + + diff --git a/classdftfe_1_1dftfe_wrapper.html b/classdftfe_1_1dftfe_wrapper.html new file mode 100644 index 000000000..3a6955200 --- /dev/null +++ b/classdftfe_1_1dftfe_wrapper.html @@ -0,0 +1,1304 @@ + + + + + + + +DFT-FE: dftfe::dftfeWrapper Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +
+ +

wrapper class for dftfe + More...

+ +

#include <dftfeWrapper.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 dftfeWrapper ()
 empty constructor
 
 dftfeWrapper (const std::string parameter_file, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const bool setDeviceToMPITaskBindingInternally=false, const std::string solverMode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool useDevice=false)
 constructor based on input parameter_file
 
 dftfeWrapper (const std::string parameter_file, const std::string restartCoordsFile, const std::string restartDomainVectorsFile, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const bool setDeviceToMPITaskBindingInternally=false, const std::string solverMode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool useDevice=false, const bool isScfRestart=true)
 constructor based on input parameter_file and restart coordinates and domain vectors file paths
 
 dftfeWrapper (const MPI_Comm &mpi_comm_parent, const bool useDevice, const std::vector< std::vector< double > > atomicPositionsCart, const std::vector< unsigned int > atomicNumbers, const std::vector< std::vector< double > > cell, const std::vector< bool > pbc, const std::vector< unsigned int > mpGrid=std::vector< unsigned int >{1, 1, 1}, const std::vector< bool > mpGridShift=std::vector< bool >{false, false, false}, const bool spinPolarizedDFT=false, const double startMagnetization=0.0, const double fermiDiracSmearingTemp=500.0, const unsigned int npkpt=0, const double meshSize=0.8, const double scfMixingParameter=0.2, const int verbosity=-1, const bool setDeviceToMPITaskBindingInternally=false)
 constructor based on input list of atomic coordinates, list of atomic numbers,cell, boundary conditions, Monkhorst-Pack k-point grid, and other optional parameters. This constructor currently only sets up GGA PBE pseudopotential DFT calculations using ONCV pseudopotentials in .upf format (read from DFTFE_PSP_PATH folder provided as an environment variable). The pseudpotential directory must contain files in the format: AtomicSymbol.upf
 
 ~dftfeWrapper ()
 
void reinit (const std::string parameter_file, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const bool setDeviceToMPITaskBindingInternally=false, const std::string solverMode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool useDevice=false)
 clear and reinitialize based on input parameter_file
 
void reinit (const std::string parameter_file, const std::string restartCoordsFile, const std::string restartDomainVectorsFile, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const bool setDeviceToMPITaskBindingInternally=false, const std::string solverMode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool useDevice=false, const bool isScfRestart=true)
 clear and reinitialize based on input parameter_file and restart coordinates and domain vectors file paths
 
void reinit (const MPI_Comm &mpi_comm_parent, const bool useDevice, const std::vector< std::vector< double > > atomicPositionsCart, const std::vector< unsigned int > atomicNumbers, const std::vector< std::vector< double > > cell, const std::vector< bool > pbc, const std::vector< unsigned int > mpGrid=std::vector< unsigned int >{1, 1, 1}, const std::vector< bool > mpGridShift=std::vector< bool >{false, false, false}, const bool spinPolarizedDFT=false, const double startMagnetization=0.0, const double fermiDiracSmearingTemp=500.0, const unsigned int npkpt=0, const double meshSize=0.8, const double scfMixingParameter=0.2, const int verbosity=-1, const bool setDeviceToMPITaskBindingInternally=false)
 
void clear ()
 
void run ()
 Legacy function (to be deprecated)
 
void writeMesh ()
 Calls dftBasepointer public function writeMesh(). Here the inital density and mesh are stored in a file. Useful for visluiing meshes without running solve.
 
std::tuple< double, bool, doublecomputeDFTFreeEnergy (const bool computeIonForces=true, const bool computeCellStress=false)
 solve ground-state and return DFT free energy which is sum of internal energy and negative of electronic entropic energy (in Hartree units)
 
void computeStress ()
 
double getDFTFreeEnergy () const
 Get DFT free energy (in Hartree units). This function can only be called after calling computeDFTFreeEnergy.
 
double getElectronicEntropicEnergy () const
 Get electronic entropic energy (in Hartree units). This function can only be called after calling computeDFTFreeEnergy.
 
std::vector< std::vector< double > > getForcesAtoms () const
 Get ionic forces: negative of gradient of DFT free energy with respect to ionic positions (in Hartree/Bohr units). This function can only be called after calling computeDFTFreeEnergy.
 
std::vector< std::vector< double > > getCellStress () const
 Get cell stress: negative of gradient of DFT free energy with respect to affine strain components scaled by volume (Hartree/Bohr^3) units. This function can only be called after calling computeDFTFreeEnergy.
 
void updateAtomPositions (const std::vector< std::vector< double > > atomsDisplacements)
 update atom positions and reinitialize all related data-structures
 
void deformCell (const std::vector< std::vector< double > > deformationGradient)
 Deforms the cell by applying the given affine deformation gradient and reinitializes the underlying data-structures.
 
std::vector< std::vector< double > > getAtomPositionsCart () const
 Gets the current atom Positions in cartesian form (in Bohr units) (origin at corner of cell against which the cell vectors are defined)
 
std::vector< std::vector< double > > getAtomPositionsFrac () const
 Gets the current atom Positions in fractional form (only applicable for periodic and semi-periodic BCs). CAUTION: during relaxation and MD fractional coordinates may have negaive values.
 
std::vector< std::vector< double > > getCell () const
 Gets the current cell vectors.
 
std::vector< boolgetPBC () const
 Gets the boundary conditions for each cell vector direction.
 
std::vector< intgetAtomicNumbers () const
 Gets the atomic numbers vector.
 
std::vector< intgetValenceElectronNumbers () const
 Gets the number of valence electrons for each atom.
 
void writeDomainAndAtomCoordinates (const std::string Path) const
 writes the current domain bounding vectors and atom coordinates to files for structural optimization and dynamics restarts. The coordinates are stored as: 1. fractional for semi-periodic/periodic 2. Cartesian for non-periodic.
 
dftBasegetDftfeBasePtr ()
 
+ + + + + + + +

+Static Public Member Functions

static void globalHandlesInitialize (const MPI_Comm &mpi_comm_world)
 must be called only once at start of program from all processors after calling MPI_Init
 
static void globalHandlesFinalize ()
 must be called only once at end of program from all processors but before calling MPI_Finalize
 
+ + + + + +

+Private Member Functions

void createScratchFolder ()
 
void initialize (const bool setDeviceToMPITaskBindingInternally, const bool useDevice)
 
+ + + + + + + + + + + +

+Private Attributes

MPI_Comm d_mpi_comm_parent
 
dftBased_dftfeBasePtr
 
dftParametersd_dftfeParamsPtr
 
std::string d_scratchFolderName
 
bool d_isDeviceToMPITaskBindingSetInternally
 
+

Detailed Description

+

wrapper class for dftfe

+
Author
Sambit Das
+

Constructor & Destructor Documentation

+ +

◆ dftfeWrapper() [1/4]

+ +
+
+ + + + + + + +
dftfe::dftfeWrapper::dftfeWrapper ()
+
+ +

empty constructor

+ +
+
+ +

◆ dftfeWrapper() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::dftfeWrapper::dftfeWrapper (const std::string parameter_file,
const MPI_Comm & mpi_comm_parent,
const bool printParams = false,
const bool setDeviceToMPITaskBindingInternally = false,
const std::string solverMode = "GS",
const std::string restartFilesPath = ".",
const int _verbosity = 1,
const bool useDevice = false )
+
+ +

constructor based on input parameter_file

+ +
+
+ +

◆ dftfeWrapper() [3/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::dftfeWrapper::dftfeWrapper (const std::string parameter_file,
const std::string restartCoordsFile,
const std::string restartDomainVectorsFile,
const MPI_Comm & mpi_comm_parent,
const bool printParams = false,
const bool setDeviceToMPITaskBindingInternally = false,
const std::string solverMode = "GS",
const std::string restartFilesPath = ".",
const int _verbosity = 1,
const bool useDevice = false,
const bool isScfRestart = true )
+
+ +

constructor based on input parameter_file and restart coordinates and domain vectors file paths

+ +
+
+ +

◆ dftfeWrapper() [4/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::dftfeWrapper::dftfeWrapper (const MPI_Comm & mpi_comm_parent,
const bool useDevice,
const std::vector< std::vector< double > > atomicPositionsCart,
const std::vector< unsigned int > atomicNumbers,
const std::vector< std::vector< double > > cell,
const std::vector< bool > pbc,
const std::vector< unsigned int > mpGrid = std::vector< unsigned int >{1, 1, 1},
const std::vector< bool > mpGridShift = std::vector< bool >{falsefalsefalse},
const bool spinPolarizedDFT = false,
const double startMagnetization = 0.0,
const double fermiDiracSmearingTemp = 500.0,
const unsigned int npkpt = 0,
const double meshSize = 0.8,
const double scfMixingParameter = 0.2,
const int verbosity = -1,
const bool setDeviceToMPITaskBindingInternally = false )
+
+ +

constructor based on input list of atomic coordinates, list of atomic numbers,cell, boundary conditions, Monkhorst-Pack k-point grid, and other optional parameters. This constructor currently only sets up GGA PBE pseudopotential DFT calculations using ONCV pseudopotentials in .upf format (read from DFTFE_PSP_PATH folder provided as an environment variable). The pseudpotential directory must contain files in the format: AtomicSymbol.upf

+
Parameters
+ + + + + + + + + + + + + + + + + +
[in]mpi_comm_parentmpi communicator to be used by the dftfeWrapper.
[in]useDevicetoggle use of Device accelerated DFT-FE
[in]atomicPositionsCartvector of atomic positions for each atom (in Bohr units), Origin is at cell corner
[in]atomicNumbersvector of atomic numbers
[in]cell3 \times 3 matrix in Bohr units, cell[i] denotes the ith cell vector. DFT-FE requires the cell vectors to form a right-handed coordinate system i.e. dotProduct(crossProduct(cell[0],cell[1]),cell[2])>0
[in]pbcvector of bools denoting periodic boundary conditions along the three cell vectors, false denotes non-periodic and true is periodic
[in]mpgridvector of Monkhorst-Pack grid points along the reciprocal lattice vector directions for sampling the Brillouin zone along periodic directions. Default value is a Gamma point.
[in]mpgridShiftvector of bools where false denotes no shift and true denotes shift by half the Monkhost-Pack grid spacing. Default value is no shift.
[in]spinPolarizedDFTtoggles spin-polarized DFT calculations. Default value is false
[in]startMagnetizationStarting magnetization to be used for spin-polarized DFT calculations (must be between -0.5 and +0.5). Corresponding magnetization per simulation domain will be (2 x START MAGNETIZATION x Number of electrons) in Bohr magneton units.
[in]fermiDiracSmearingTempFermi-Dirac smearing temperature in Kelvin. Default value is 500 K.
[in]npkptNumber of groups of MPI tasks across which the work load of the irreducible k-points is parallelised. npkpt must be a divisor of total number of MPI tasks. Default value of 0 internally sets npkt to an heuristically determined value.
[in]meshSizeFinite-element mesh size around the atoms in Bohr units. The default value of 0.8 is sufficient to achieve chemical accuracy in energy (0.1 mHa/atom discretization error) and forces (0.1 mHa/Bohr discretization error) for the ONCV pseudo-dojo pseudopotentials. Note that this function assumes a sixth order finite-element interpolating polynomial
[in]scfMixingParametermixing paramter for SCF fixed point iteration. Currently the Anderson mixing strategy is used.
[in]verbosityprinting verbosity. Default value is -1: no printing
[in]setDeviceToMPITaskBindingInternallyThis option is only valid for Device runs. If set to true Device to MPI task binding is set inside the DFT-FE code. Default behaviour is false which assumes the binding has been externally set.
+
+
+ +
+
+ +

◆ ~dftfeWrapper()

+ +
+
+ + + + + + + +
dftfe::dftfeWrapper::~dftfeWrapper ()
+
+ +
+
+

Member Function Documentation

+ +

◆ clear()

+ +
+
+ + + + + + + +
void dftfe::dftfeWrapper::clear ()
+
+ +
+
+ +

◆ computeDFTFreeEnergy()

+ +
+
+ + + + + + + + + + + +
std::tuple< double, bool, double > dftfe::dftfeWrapper::computeDFTFreeEnergy (const bool computeIonForces = true,
const bool computeCellStress = false )
+
+ +

solve ground-state and return DFT free energy which is sum of internal energy and negative of electronic entropic energy (in Hartree units)

+
Returns
tuple of ground-state energy, boolean flag on whether scf converged, and L2 norm of residual electron-density of the last SCF iteration
+ +
+
+ +

◆ computeStress()

+ +
+
+ + + + + + + +
void dftfe::dftfeWrapper::computeStress ()
+
+ +
+
+ +

◆ createScratchFolder()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::dftfeWrapper::createScratchFolder ()
+
+private
+
+ +
+
+ +

◆ deformCell()

+ +
+
+ + + + + + + +
void dftfe::dftfeWrapper::deformCell (const std::vector< std::vector< double > > deformationGradient)
+
+ +

Deforms the cell by applying the given affine deformation gradient and reinitializes the underlying data-structures.

+
Parameters
+ + +
[in]deformationGradientdeformation gradient matrix given by F[i][j]=\frac{\partial x_i}{\partial X_j}
+
+
+ +
+
+ +

◆ getAtomicNumbers()

+ +
+
+ + + + + + + +
std::vector< int > dftfe::dftfeWrapper::getAtomicNumbers () const
+
+ +

Gets the atomic numbers vector.

+
Returns
vector of atomic numbers
+ +
+
+ +

◆ getAtomPositionsCart()

+ +
+
+ + + + + + + +
std::vector< std::vector< double > > dftfe::dftfeWrapper::getAtomPositionsCart () const
+
+ +

Gets the current atom Positions in cartesian form (in Bohr units) (origin at corner of cell against which the cell vectors are defined)

+
Returns
array of coords for each atom
+ +
+
+ +

◆ getAtomPositionsFrac()

+ +
+
+ + + + + + + +
std::vector< std::vector< double > > dftfe::dftfeWrapper::getAtomPositionsFrac () const
+
+ +

Gets the current atom Positions in fractional form (only applicable for periodic and semi-periodic BCs). CAUTION: during relaxation and MD fractional coordinates may have negaive values.

+
Returns
array of coords for each atom
+ +
+
+ +

◆ getCell()

+ +
+
+ + + + + + + +
std::vector< std::vector< double > > dftfe::dftfeWrapper::getCell () const
+
+ +

Gets the current cell vectors.

+
Returns
3 \times 3 matrix, cell[i][j] corresponds to jth component of ith cell vector (in Bohr units)
+ +
+
+ +

◆ getCellStress()

+ +
+
+ + + + + + + +
std::vector< std::vector< double > > dftfe::dftfeWrapper::getCellStress () const
+
+ +

Get cell stress: negative of gradient of DFT free energy with respect to affine strain components scaled by volume (Hartree/Bohr^3) units. This function can only be called after calling computeDFTFreeEnergy.

+
Returns
cell stress 3 \times 3 matrix given by sigma[i][j]=\frac{1}{\Omega}\frac{\partial E}{\partial \epsilon_{ij}}
+ +
+
+ +

◆ getDftfeBasePtr()

+ +
+
+ + + + + + + +
dftBase * dftfe::dftfeWrapper::getDftfeBasePtr ()
+
+ +
+
+ +

◆ getDFTFreeEnergy()

+ +
+
+ + + + + + + +
double dftfe::dftfeWrapper::getDFTFreeEnergy () const
+
+ +

Get DFT free energy (in Hartree units). This function can only be called after calling computeDFTFreeEnergy.

+ +
+
+ +

◆ getElectronicEntropicEnergy()

+ +
+
+ + + + + + + +
double dftfe::dftfeWrapper::getElectronicEntropicEnergy () const
+
+ +

Get electronic entropic energy (in Hartree units). This function can only be called after calling computeDFTFreeEnergy.

+ +
+
+ +

◆ getForcesAtoms()

+ +
+
+ + + + + + + +
std::vector< std::vector< double > > dftfe::dftfeWrapper::getForcesAtoms () const
+
+ +

Get ionic forces: negative of gradient of DFT free energy with respect to ionic positions (in Hartree/Bohr units). This function can only be called after calling computeDFTFreeEnergy.

+
Returns
vector of forces on each atom
+ +
+
+ +

◆ getPBC()

+ +
+
+ + + + + + + +
std::vector< bool > dftfe::dftfeWrapper::getPBC () const
+
+ +

Gets the boundary conditions for each cell vector direction.

+
Returns
vector of bools, false denotes non-periodic BC and true denotes periodic BC
+ +
+
+ +

◆ getValenceElectronNumbers()

+ +
+
+ + + + + + + +
std::vector< int > dftfe::dftfeWrapper::getValenceElectronNumbers () const
+
+ +

Gets the number of valence electrons for each atom.

+
Returns
array of number of valence for each atom
+ +
+
+ +

◆ globalHandlesFinalize()

+ +
+
+ + + + + +
+ + + + + + + +
static void dftfe::dftfeWrapper::globalHandlesFinalize ()
+
+static
+
+ +

must be called only once at end of program from all processors but before calling MPI_Finalize

+ +
+
+ +

◆ globalHandlesInitialize()

+ +
+
+ + + + + +
+ + + + + + + +
static void dftfe::dftfeWrapper::globalHandlesInitialize (const MPI_Comm & mpi_comm_world)
+
+static
+
+ +

must be called only once at start of program from all processors after calling MPI_Init

+ +
+
+ +

◆ initialize()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
void dftfe::dftfeWrapper::initialize (const bool setDeviceToMPITaskBindingInternally,
const bool useDevice )
+
+private
+
+ +
+
+ +

◆ reinit() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftfeWrapper::reinit (const MPI_Comm & mpi_comm_parent,
const bool useDevice,
const std::vector< std::vector< double > > atomicPositionsCart,
const std::vector< unsigned int > atomicNumbers,
const std::vector< std::vector< double > > cell,
const std::vector< bool > pbc,
const std::vector< unsigned int > mpGrid = std::vector< unsigned int >{1, 1, 1},
const std::vector< bool > mpGridShift = std::vector< bool >{falsefalsefalse},
const bool spinPolarizedDFT = false,
const double startMagnetization = 0.0,
const double fermiDiracSmearingTemp = 500.0,
const unsigned int npkpt = 0,
const double meshSize = 0.8,
const double scfMixingParameter = 0.2,
const int verbosity = -1,
const bool setDeviceToMPITaskBindingInternally = false )
+
+ +
+
+ +

◆ reinit() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftfeWrapper::reinit (const std::string parameter_file,
const MPI_Comm & mpi_comm_parent,
const bool printParams = false,
const bool setDeviceToMPITaskBindingInternally = false,
const std::string solverMode = "GS",
const std::string restartFilesPath = ".",
const int _verbosity = 1,
const bool useDevice = false )
+
+ +

clear and reinitialize based on input parameter_file

+ +
+
+ +

◆ reinit() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::dftfeWrapper::reinit (const std::string parameter_file,
const std::string restartCoordsFile,
const std::string restartDomainVectorsFile,
const MPI_Comm & mpi_comm_parent,
const bool printParams = false,
const bool setDeviceToMPITaskBindingInternally = false,
const std::string solverMode = "GS",
const std::string restartFilesPath = ".",
const int _verbosity = 1,
const bool useDevice = false,
const bool isScfRestart = true )
+
+ +

clear and reinitialize based on input parameter_file and restart coordinates and domain vectors file paths

+ +
+
+ +

◆ run()

+ +
+
+ + + + + + + +
void dftfe::dftfeWrapper::run ()
+
+ +

Legacy function (to be deprecated)

+ +
+
+ +

◆ updateAtomPositions()

+ +
+
+ + + + + + + +
void dftfe::dftfeWrapper::updateAtomPositions (const std::vector< std::vector< double > > atomsDisplacements)
+
+ +

update atom positions and reinitialize all related data-structures

+
Parameters
+ + +
[in]atomsDisplacementsvector of displacements for each atom (in Bohr units)
+
+
+ +
+
+ +

◆ writeDomainAndAtomCoordinates()

+ +
+
+ + + + + + + +
void dftfe::dftfeWrapper::writeDomainAndAtomCoordinates (const std::string Path) const
+
+ +

writes the current domain bounding vectors and atom coordinates to files for structural optimization and dynamics restarts. The coordinates are stored as: 1. fractional for semi-periodic/periodic 2. Cartesian for non-periodic.

+
Parameters
+ + +
[in]PathThe folder path to store the atom coordinates required during restart.
+
+
+ +
+
+ +

◆ writeMesh()

+ +
+
+ + + + + + + +
void dftfe::dftfeWrapper::writeMesh ()
+
+ +

Calls dftBasepointer public function writeMesh(). Here the inital density and mesh are stored in a file. Useful for visluiing meshes without running solve.

+ +
+
+

Member Data Documentation

+ +

◆ d_dftfeBasePtr

+ +
+
+ + + + + +
+ + + + +
dftBase* dftfe::dftfeWrapper::d_dftfeBasePtr
+
+private
+
+ +
+
+ +

◆ d_dftfeParamsPtr

+ +
+
+ + + + + +
+ + + + +
dftParameters* dftfe::dftfeWrapper::d_dftfeParamsPtr
+
+private
+
+ +
+
+ +

◆ d_isDeviceToMPITaskBindingSetInternally

+ +
+
+ + + + + +
+ + + + +
bool dftfe::dftfeWrapper::d_isDeviceToMPITaskBindingSetInternally
+
+private
+
+ +
+
+ +

◆ d_mpi_comm_parent

+ +
+
+ + + + + +
+ + + + +
MPI_Comm dftfe::dftfeWrapper::d_mpi_comm_parent
+
+private
+
+ +
+
+ +

◆ d_scratchFolderName

+ +
+
+ + + + + +
+ + + + +
std::string dftfe::dftfeWrapper::d_scratchFolderName
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1dispersion_correction-members.html b/classdftfe_1_1dispersion_correction-members.html new file mode 100644 index 000000000..248f6acc6 --- /dev/null +++ b/classdftfe_1_1dispersion_correction-members.html @@ -0,0 +1,110 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::dispersionCorrection Member List
+
+
+ +

This is the complete list of members for dftfe::dispersionCorrection, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
computeDFTDCorrection()dftfe::dispersionCorrectionprivate
computeDispresionCorrection(const std::vector< std::vector< double > > &atomLocations, const std::vector< std::vector< double > > &d_domainBoundingVectors)dftfe::dispersionCorrection
d_atomCoordinatesdftfe::dispersionCorrectionprivate
d_atomicNumbersdftfe::dispersionCorrectionprivate
d_dftParamsdftfe::dispersionCorrectionprivate
d_energyDispersiondftfe::dispersionCorrectionprivate
d_forceDispersiondftfe::dispersionCorrectionprivate
d_latticeVectorsdftfe::dispersionCorrectionprivate
d_natomsdftfe::dispersionCorrectionprivate
d_stressDispersiondftfe::dispersionCorrectionprivate
dispersionCorrection(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &interpool_comm, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams)dftfe::dispersionCorrection
getEnergyCorrection() constdftfe::dispersionCorrection
getForceCorrection(int atomNo, int dim) constdftfe::dispersionCorrection
getStressCorrection(int dim1, int dim2) constdftfe::dispersionCorrection
initDispersionCorrection(const std::vector< std::vector< double > > &atomLocations, const std::vector< std::vector< double > > &d_domainBoundingVectors)dftfe::dispersionCorrectionprivate
interBandGroupCommdftfe::dispersionCorrectionprivate
interpoolcommdftfe::dispersionCorrectionprivate
mpi_communicator_domaindftfe::dispersionCorrectionprivate
mpi_communicator_globaldftfe::dispersionCorrectionprivate
+ + + + diff --git a/classdftfe_1_1dispersion_correction.html b/classdftfe_1_1dispersion_correction.html new file mode 100644 index 000000000..edcfffabd --- /dev/null +++ b/classdftfe_1_1dispersion_correction.html @@ -0,0 +1,600 @@ + + + + + + + +DFT-FE: dftfe::dispersionCorrection Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::dispersionCorrection Class Reference
+
+
+ +

Calculates dispersion correction to energy, force and stress. + More...

+ +

#include <dftd.h>

+ + + + + + + + + + + + + +

+Public Member Functions

 dispersionCorrection (const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &interpool_comm, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams)
 Constructor.
 
void computeDispresionCorrection (const std::vector< std::vector< double > > &atomLocations, const std::vector< std::vector< double > > &d_domainBoundingVectors)
 
double getEnergyCorrection () const
 
double getForceCorrection (int atomNo, int dim) const
 
double getStressCorrection (int dim1, int dim2) const
 
+ + + + + +

+Private Member Functions

void initDispersionCorrection (const std::vector< std::vector< double > > &atomLocations, const std::vector< std::vector< double > > &d_domainBoundingVectors)
 
void computeDFTDCorrection ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

int d_natoms
 
double d_energyDispersion
 
std::vector< doubled_forceDispersion
 
std::array< double, 9 > d_stressDispersion
 
std::vector< doubled_atomCoordinates
 
std::vector< intd_atomicNumbers
 
std::array< double, 9 > d_latticeVectors
 
const MPI_Comm mpi_communicator_global
 
const MPI_Comm mpi_communicator_domain
 
const MPI_Comm interpoolcomm
 
const MPI_Comm interBandGroupComm
 
const dftParametersd_dftParams
 
+

Detailed Description

+

Calculates dispersion correction to energy, force and stress.

+
Author
Nikhil Kodali
+

Constructor & Destructor Documentation

+ +

◆ dispersionCorrection()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::dispersionCorrection::dispersionCorrection (const MPI_Comm & mpi_comm_parent,
const MPI_Comm & mpi_comm_domain,
const MPI_Comm & interpool_comm,
const MPI_Comm & interBandGroupComm,
const dftParameters & dftParams )
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ computeDFTDCorrection()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::dispersionCorrection::computeDFTDCorrection ()
+
+private
+
+ +
+
+ +

◆ computeDispresionCorrection()

+ +
+
+ + + + + + + + + + + +
void dftfe::dispersionCorrection::computeDispresionCorrection (const std::vector< std::vector< double > > & atomLocations,
const std::vector< std::vector< double > > & d_domainBoundingVectors )
+
+

Wrapper function for various dispersion corrections to energy, force and stress.

+
Parameters
+ + + +
atomLocations
d_domainBoundingVectors
+
+
+ +
+
+ +

◆ getEnergyCorrection()

+ +
+
+ + + + + + + +
double dftfe::dispersionCorrection::getEnergyCorrection () const
+
+ +
+
+ +

◆ getForceCorrection()

+ +
+
+ + + + + + + + + + + +
double dftfe::dispersionCorrection::getForceCorrection (int atomNo,
int dim ) const
+
+ +
+
+ +

◆ getStressCorrection()

+ +
+
+ + + + + + + + + + + +
double dftfe::dispersionCorrection::getStressCorrection (int dim1,
int dim2 ) const
+
+ +
+
+ +

◆ initDispersionCorrection()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
void dftfe::dispersionCorrection::initDispersionCorrection (const std::vector< std::vector< double > > & atomLocations,
const std::vector< std::vector< double > > & d_domainBoundingVectors )
+
+private
+
+ +
+
+

Member Data Documentation

+ +

◆ d_atomCoordinates

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::dispersionCorrection::d_atomCoordinates
+
+private
+
+ +
+
+ +

◆ d_atomicNumbers

+ +
+
+ + + + + +
+ + + + +
std::vector<int> dftfe::dispersionCorrection::d_atomicNumbers
+
+private
+
+ +
+
+ +

◆ d_dftParams

+ +
+
+ + + + + +
+ + + + +
const dftParameters& dftfe::dispersionCorrection::d_dftParams
+
+private
+
+ +
+
+ +

◆ d_energyDispersion

+ +
+
+ + + + + +
+ + + + +
double dftfe::dispersionCorrection::d_energyDispersion
+
+private
+
+ +
+
+ +

◆ d_forceDispersion

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::dispersionCorrection::d_forceDispersion
+
+private
+
+ +
+
+ +

◆ d_latticeVectors

+ +
+
+ + + + + +
+ + + + +
std::array<double, 9> dftfe::dispersionCorrection::d_latticeVectors
+
+private
+
+ +
+
+ +

◆ d_natoms

+ +
+
+ + + + + +
+ + + + +
int dftfe::dispersionCorrection::d_natoms
+
+private
+
+ +
+
+ +

◆ d_stressDispersion

+ +
+
+ + + + + +
+ + + + +
std::array<double, 9> dftfe::dispersionCorrection::d_stressDispersion
+
+private
+
+ +
+
+ +

◆ interBandGroupComm

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm dftfe::dispersionCorrection::interBandGroupComm
+
+private
+
+ +
+
+ +

◆ interpoolcomm

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm dftfe::dispersionCorrection::interpoolcomm
+
+private
+
+ +
+
+ +

◆ mpi_communicator_domain

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm dftfe::dispersionCorrection::mpi_communicator_domain
+
+private
+
+ +
+
+ +

◆ mpi_communicator_global

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm dftfe::dispersionCorrection::mpi_communicator_global
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1eigen_solver_class-members.html b/classdftfe_1_1eigen_solver_class-members.html new file mode 100644 index 000000000..55136f8b3 --- /dev/null +++ b/classdftfe_1_1eigen_solver_class-members.html @@ -0,0 +1,95 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::eigenSolverClass Member List
+
+
+ +

This is the complete list of members for dftfe::eigenSolverClass, including all inherited members.

+ + + + + +
eigenSolverClass()dftfe::eigenSolverClassprotected
ReturnValueType enum namedftfe::eigenSolverClass
solve(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, std::vector< distributedCPUVec< double > > &eigenVectors, std::vector< double > &eigenValues, std::vector< double > &residuals)=0dftfe::eigenSolverClasspure virtual
~eigenSolverClass()=0dftfe::eigenSolverClasspure virtual
+ + + + diff --git a/classdftfe_1_1eigen_solver_class.html b/classdftfe_1_1eigen_solver_class.html new file mode 100644 index 000000000..8229122d8 --- /dev/null +++ b/classdftfe_1_1eigen_solver_class.html @@ -0,0 +1,265 @@ + + + + + + + +DFT-FE: dftfe::eigenSolverClass Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::eigenSolverClass Class Referenceabstract
+
+
+ +

Base class for non-linear algebraic solver. + More...

+ +

#include <eigenSolver.h>

+
+Inheritance diagram for dftfe::eigenSolverClass:
+
+
+ + +dftfe::chebyshevOrthogonalizedSubspaceIterationSolver + +
+ + + + +

+Public Types

enum class  ReturnValueType { SUCCESS = 0 +, FAILURE +, MAX_ITER_REACHED + }
 
+ + + + + + + +

+Public Member Functions

virtual ~eigenSolverClass ()=0
 Destructor.
 
virtual void solve (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, std::vector< distributedCPUVec< double > > &eigenVectors, std::vector< double > &eigenValues, std::vector< double > &residuals)=0
 Solve eigen problem.
 
+ + + + +

+Protected Member Functions

 eigenSolverClass ()
 Constructor.
 
+

Detailed Description

+

Base class for non-linear algebraic solver.

+
Author
Phani Motamarri
+

Member Enumeration Documentation

+ +

◆ ReturnValueType

+ +
+
+ + + + + +
+ + + + +
enum class dftfe::eigenSolverClass::ReturnValueType
+
+strong
+
+ + + + +
Enumerator
SUCCESS 
FAILURE 
MAX_ITER_REACHED 
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~eigenSolverClass()

+ +
+
+ + + + + +
+ + + + + + + +
virtual dftfe::eigenSolverClass::~eigenSolverClass ()
+
+pure virtual
+
+ +

Destructor.

+ +
+
+ +

◆ eigenSolverClass()

+ +
+
+ + + + + +
+ + + + + + + +
dftfe::eigenSolverClass::eigenSolverClass ()
+
+protected
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ solve()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
virtual void dftfe::eigenSolverClass::solve (operatorDFTClass< dftfe::utils::MemorySpace::HOST > & operatorMatrix,
std::vector< distributedCPUVec< double > > & eigenVectors,
std::vector< double > & eigenValues,
std::vector< double > & residuals )
+
+pure virtual
+
+ +

Solve eigen problem.

+
Returns
Return value indicating success or failure.
+ +

Implemented in dftfe::chebyshevOrthogonalizedSubspaceIterationSolver.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1eigen_solver_class.png b/classdftfe_1_1eigen_solver_class.png new file mode 100644 index 0000000000000000000000000000000000000000..c350e49485fc2235405bb4c74bcf39e0fd9b94fd GIT binary patch literal 1099 zcmeAS@N?(olHy`uVBq!ia0y~yVDtpC12~w03f*F8(FfeDDeT9L6`I@JTV@L(#+qrN1UK#MX zs0(wR{cZno=@;d)SxmdXZrX5Nh&^ML)wz|E|F~){RarWvNJzxfOXa0VX3!)hkI9on z9A`~g!f|Pdit7if$(JpbuCbqVrFh245+l2J+rIo-d#YmP$<#&hvLCPQw=Mbb=M$}mUGm&t+Wr62<^02u@vf#MuMWiAuc7!{gKI2i<&crtV-0F|(03Q%Cm?APWU)+y}2PnLa{-J0q@_aDQT + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::elpaScalaManager Member List
+
+ + + + + diff --git a/classdftfe_1_1elpa_scala_manager.html b/classdftfe_1_1elpa_scala_manager.html new file mode 100644 index 000000000..6ebaf2c08 --- /dev/null +++ b/classdftfe_1_1elpa_scala_manager.html @@ -0,0 +1,505 @@ + + + + + + + +DFT-FE: dftfe::elpaScalaManager Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::elpaScalaManager Class Reference
+
+
+ +

Manager class for ELPA and ScaLAPACK. + More...

+ +

#include <elpaScalaManager.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

unsigned int getScalapackBlockSize () const
 
std::shared_ptr< const dftfe::ProcessGridgetProcessGridDftfeScalaWrapper () const
 
void processGridELPASetup (const unsigned int na, const unsigned int nev, const dftParameters &dftParams)
 
void elpaDeallocateHandles (const dftParameters &dftParams)
 
elpa_tgetElpaHandle ()
 
elpa_tgetElpaHandlePartialEigenVec ()
 
elpa_autotune_tgetElpaAutoTuneHandle ()
 
const MPI_CommgetMPICommunicator () const
 Get relevant mpi communicator.
 
 elpaScalaManager (const MPI_Comm &mpi_comm_replica)
 Constructor.
 
 ~elpaScalaManager ()
 Destructor.
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

MPI_Comm d_mpi_communicator
 
elpa_t d_elpaHandle
 ELPA handle.
 
elpa_t d_elpaHandlePartialEigenVec
 ELPA handle for partial eigenvectors of full proj ham.
 
elpa_autotune_t d_elpaAutoTuneHandle
 ELPA autotune handle.
 
MPI_Comm d_processGridCommunicatorActive
 processGrid mpi communicator
 
MPI_Comm d_processGridCommunicatorActivePartial
 
unsigned int d_scalapackBlockSize
 ScaLAPACK distributed format block size.
 
std::shared_ptr< const dftfe::ProcessGridd_processGridDftfeWrapper
 
+

Detailed Description

+

Manager class for ELPA and ScaLAPACK.

+
Author
Sambit Das
+

Constructor & Destructor Documentation

+ +

◆ elpaScalaManager()

+ +
+
+ + + + + + + +
dftfe::elpaScalaManager::elpaScalaManager (const MPI_Comm & mpi_comm_replica)
+
+ +

Constructor.

+ +
+
+ +

◆ ~elpaScalaManager()

+ +
+
+ + + + + + + +
dftfe::elpaScalaManager::~elpaScalaManager ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ elpaDeallocateHandles()

+ +
+
+ + + + + + + +
void dftfe::elpaScalaManager::elpaDeallocateHandles (const dftParameters & dftParams)
+
+ +
+
+ +

◆ getElpaAutoTuneHandle()

+ +
+
+ + + + + +
+ + + + + + + +
elpa_autotune_t & dftfe::elpaScalaManager::getElpaAutoTuneHandle ()
+
+inline
+
+ +
+
+ +

◆ getElpaHandle()

+ +
+
+ + + + + +
+ + + + + + + +
elpa_t & dftfe::elpaScalaManager::getElpaHandle ()
+
+inline
+
+ +
+
+ +

◆ getElpaHandlePartialEigenVec()

+ +
+
+ + + + + +
+ + + + + + + +
elpa_t & dftfe::elpaScalaManager::getElpaHandlePartialEigenVec ()
+
+inline
+
+ +
+
+ +

◆ getMPICommunicator()

+ +
+
+ + + + + + + +
const MPI_Comm & dftfe::elpaScalaManager::getMPICommunicator () const
+
+ +

Get relevant mpi communicator.

+
Returns
mpi communicator
+ +
+
+ +

◆ getProcessGridDftfeScalaWrapper()

+ +
+
+ + + + + +
+ + + + + + + +
std::shared_ptr< const dftfe::ProcessGrid > dftfe::elpaScalaManager::getProcessGridDftfeScalaWrapper () const
+
+inline
+
+ +
+
+ +

◆ getScalapackBlockSize()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int dftfe::elpaScalaManager::getScalapackBlockSize () const
+
+inline
+
+ +
+
+ +

◆ processGridELPASetup()

+ +
+
+ + + + + + + + + + + + + + + + +
void dftfe::elpaScalaManager::processGridELPASetup (const unsigned int na,
const unsigned int nev,
const dftParameters & dftParams )
+
+ +
+
+

Member Data Documentation

+ +

◆ d_elpaAutoTuneHandle

+ +
+
+ + + + +
elpa_autotune_t dftfe::elpaScalaManager::d_elpaAutoTuneHandle
+
+ +

ELPA autotune handle.

+ +
+
+ +

◆ d_elpaHandle

+ +
+
+ + + + +
elpa_t dftfe::elpaScalaManager::d_elpaHandle
+
+ +

ELPA handle.

+ +
+
+ +

◆ d_elpaHandlePartialEigenVec

+ +
+
+ + + + +
elpa_t dftfe::elpaScalaManager::d_elpaHandlePartialEigenVec
+
+ +

ELPA handle for partial eigenvectors of full proj ham.

+ +
+
+ +

◆ d_mpi_communicator

+ +
+
+ + + + +
MPI_Comm dftfe::elpaScalaManager::d_mpi_communicator
+
+ +
+
+ +

◆ d_processGridCommunicatorActive

+ +
+
+ + + + +
MPI_Comm dftfe::elpaScalaManager::d_processGridCommunicatorActive
+
+ +

processGrid mpi communicator

+ +
+
+ +

◆ d_processGridCommunicatorActivePartial

+ +
+
+ + + + +
MPI_Comm dftfe::elpaScalaManager::d_processGridCommunicatorActivePartial
+
+ +
+
+ +

◆ d_processGridDftfeWrapper

+ +
+
+ + + + +
std::shared_ptr<const dftfe::ProcessGrid> dftfe::elpaScalaManager::d_processGridDftfeWrapper
+
+ +
+
+ +

◆ d_scalapackBlockSize

+ +
+
+ + + + +
unsigned int dftfe::elpaScalaManager::d_scalapackBlockSize
+
+ +

ScaLAPACK distributed format block size.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1energy_calculator-members.html b/classdftfe_1_1energy_calculator-members.html new file mode 100644 index 000000000..451a4c5e4 --- /dev/null +++ b/classdftfe_1_1energy_calculator-members.html @@ -0,0 +1,102 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::energyCalculator Member List
+
+
+ +

This is the complete list of members for dftfe::energyCalculator, including all inherited members.

+ + + + + + + + + + + + +
computeEnergy(const std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtrElectro, const unsigned int densityQuadratureID, const unsigned int densityQuadratureIDElectro, const unsigned int smearedChargeQuadratureIDElectro, const unsigned int lpspQuadratureIDElectro, const std::vector< std::vector< double > > &eigenValues, const std::vector< double > &kPointWeights, const double fermiEnergy, const double fermiEnergyUp, const double fermiEnergyDown, const std::shared_ptr< excManager > excManagerPtr, const dispersionCorrection &dispersionCorr, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &phiTotRhoInValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &phiTotRhoOutValues, const distributedCPUVec< double > &phiTotRhoOut, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &smearedbValues, const std::map< dealii::CellId, std::vector< unsigned int > > &smearedbNonTrivialAtomIds, const std::vector< std::vector< double > > &localVselfs, const std::map< dealii::CellId, std::vector< double > > &pseudoLocValues, const std::map< dealii::types::global_dof_index, double > &atomElectrostaticNodeIdToChargeMap, const unsigned int numberGlobalAtoms, const unsigned int lowerBoundKindex, const unsigned int scfConverged, const bool print, const bool smearedNuclearCharges=false)dftfe::energyCalculator
computeEntropicEnergy(const std::vector< std::vector< double > > &eigenValues, const std::vector< double > &kPointWeights, const double fermiEnergy, const double fermiEnergyUp, const double fermiEnergyDown, const bool isSpinPolarized, const bool isConstraintMagnetization, const double temperature) constdftfe::energyCalculator
computeXCEnergyTerms(const std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int quadratureId, const std::shared_ptr< excManager > excManagerPtr, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityOutValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, double &exchangeEnergy, double &correlationEnergy, double &excCorrPotentialTimesRho)dftfe::energyCalculator
computeXCEnergyTermsSpinPolarized(const std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int quadratureId, const std::shared_ptr< excManager > excManagerPtr, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityOutValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, double &exchangeEnergy, double &correlationEnergy, double &excCorrPotentialTimesRho)dftfe::energyCalculator
d_dftParamsdftfe::energyCalculatorprivate
d_mpiCommParentdftfe::energyCalculatorprivate
energyCalculator(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &interpool_comm, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams)dftfe::energyCalculator
interBandGroupCommdftfe::energyCalculatorprivate
interpoolcommdftfe::energyCalculatorprivate
mpi_communicatordftfe::energyCalculatorprivate
pcoutdftfe::energyCalculatorprivate
+ + + + diff --git a/classdftfe_1_1energy_calculator.html b/classdftfe_1_1energy_calculator.html new file mode 100644 index 000000000..3c4adb7b7 --- /dev/null +++ b/classdftfe_1_1energy_calculator.html @@ -0,0 +1,716 @@ + + + + + + + +DFT-FE: dftfe::energyCalculator Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::energyCalculator Class Reference
+
+
+ +

Calculates the ksdft problem total energy and its components. + More...

+ +

#include <energyCalculator.h>

+ + + + + + + + + + + + + +

+Public Member Functions

 energyCalculator (const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &interpool_comm, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams)
 Constructor.
 
double computeEnergy (const std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtrElectro, const unsigned int densityQuadratureID, const unsigned int densityQuadratureIDElectro, const unsigned int smearedChargeQuadratureIDElectro, const unsigned int lpspQuadratureIDElectro, const std::vector< std::vector< double > > &eigenValues, const std::vector< double > &kPointWeights, const double fermiEnergy, const double fermiEnergyUp, const double fermiEnergyDown, const std::shared_ptr< excManager > excManagerPtr, const dispersionCorrection &dispersionCorr, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &phiTotRhoInValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &phiTotRhoOutValues, const distributedCPUVec< double > &phiTotRhoOut, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &smearedbValues, const std::map< dealii::CellId, std::vector< unsigned int > > &smearedbNonTrivialAtomIds, const std::vector< std::vector< double > > &localVselfs, const std::map< dealii::CellId, std::vector< double > > &pseudoLocValues, const std::map< dealii::types::global_dof_index, double > &atomElectrostaticNodeIdToChargeMap, const unsigned int numberGlobalAtoms, const unsigned int lowerBoundKindex, const unsigned int scfConverged, const bool print, const bool smearedNuclearCharges=false)
 
void computeXCEnergyTermsSpinPolarized (const std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int quadratureId, const std::shared_ptr< excManager > excManagerPtr, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityOutValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, double &exchangeEnergy, double &correlationEnergy, double &excCorrPotentialTimesRho)
 
void computeXCEnergyTerms (const std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int quadratureId, const std::shared_ptr< excManager > excManagerPtr, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityOutValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, double &exchangeEnergy, double &correlationEnergy, double &excCorrPotentialTimesRho)
 
double computeEntropicEnergy (const std::vector< std::vector< double > > &eigenValues, const std::vector< double > &kPointWeights, const double fermiEnergy, const double fermiEnergyUp, const double fermiEnergyDown, const bool isSpinPolarized, const bool isConstraintMagnetization, const double temperature) const
 
+ + + + + + + + + + + + + + +

+Private Attributes

const MPI_Comm d_mpiCommParent
 
const MPI_Comm mpi_communicator
 
const MPI_Comm interpoolcomm
 
const MPI_Comm interBandGroupComm
 
const dftParametersd_dftParams
 
dealii::ConditionalOStream pcout
 parallel message stream
 
+

Detailed Description

+

Calculates the ksdft problem total energy and its components.

+
Author
Sambit Das, Shiva Rudraraju, Phani Motamarri, Krishnendu Ghosh
+

Constructor & Destructor Documentation

+ +

◆ energyCalculator()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::energyCalculator::energyCalculator (const MPI_Comm & mpi_comm_parent,
const MPI_Comm & mpi_comm_domain,
const MPI_Comm & interpool_comm,
const MPI_Comm & interBandGroupComm,
const dftParameters & dftParams )
+
+ +

Constructor.

+
Parameters
+ + + + + +
mpi_comm_parentparent mpi communicator
mpi_comm_domainmpi communicator of domain decomposition
interpool_commmpi interpool communicator over k points
interBandGroupCommmpi interpool communicator over band groups
+
+
+ +
+
+

Member Function Documentation

+ +

◆ computeEnergy()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double dftfe::energyCalculator::computeEnergy (const std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > & basisOperationsPtr,
const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > & basisOperationsPtrElectro,
const unsigned int densityQuadratureID,
const unsigned int densityQuadratureIDElectro,
const unsigned int smearedChargeQuadratureIDElectro,
const unsigned int lpspQuadratureIDElectro,
const std::vector< std::vector< double > > & eigenValues,
const std::vector< double > & kPointWeights,
const double fermiEnergy,
const double fermiEnergyUp,
const double fermiEnergyDown,
const std::shared_ptr< excManager > excManagerPtr,
const dispersionCorrection & dispersionCorr,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & phiTotRhoInValues,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & phiTotRhoOutValues,
const distributedCPUVec< double > & phiTotRhoOut,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & densityInValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & densityOutValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & gradDensityInValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & gradDensityOutValues,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & rhoOutValuesLpsp,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & smearedbValues,
const std::map< dealii::CellId, std::vector< unsigned int > > & smearedbNonTrivialAtomIds,
const std::vector< std::vector< double > > & localVselfs,
const std::map< dealii::CellId, std::vector< double > > & pseudoLocValues,
const std::map< dealii::types::global_dof_index, double > & atomElectrostaticNodeIdToChargeMap,
const unsigned int numberGlobalAtoms,
const unsigned int lowerBoundKindex,
const unsigned int scfConverged,
const bool print,
const bool smearedNuclearCharges = false )
+
+

Computes total energy of the ksdft problem in the current state and also prints the individual components of the energy

+
Parameters
+ + + + + + + + + + + + + + + + + + + + + + + +
dofHandlerElectrostaticp refined DoFHandler object used for re-computing the electrostatic fields using the ground state electron density. If electrostatics is not recomputed on p refined mesh, use dofHandlerElectronic for this argument.
dofHandlerElectronicDoFHandler object on which the electrostatics for the eigen solve are computed.
quadratureElectrostaticqudarature object for dofHandlerElectrostatic.
quadratureElectronicqudarature object for dofHandlerElectronic.
eigenValueseigenValues for each k point.
kPointWeights
fermiEnergy
funcXexchange functional object.
funcCcorrelation functional object.
phiTotRhoInnodal vector field of total electrostatic potential using input electron density to an eigensolve. This vector field is based on dofHandlerElectronic.
phiTotRhoOutnodal vector field of total electrostatic potential using output electron density to an eigensolve. This vector field is based on dofHandlerElectrostatic.
rhoInValuescell quadrature data of input electron density to an eigensolve. This data must correspond to quadratureElectronic.
rhoOutValuescell quadrature data of output electron density of an eigensolve. This data must correspond to quadratureElectronic.
rhoOutValuesElectrostaticcell quadrature data of output electron density of an eigensolve evaluated on a p refined mesh. This data corresponds to quadratureElectrostatic.
gradRhoInValuescell quadrature data of input gradient electron density to an eigensolve. This data must correspond to quadratureElectronic.
gradRhoOutValuescell quadrature data of output gradient electron density of an eigensolve. This data must correspond to quadratureElectronic.
localVselfspeak vselfs of local atoms in each vself bin
atomElectrostaticNodeIdToChargeMapmap between locally processor atom global node ids of dofHandlerElectrostatic to atom charge value.
numberGlobalAtoms
lowerBoundKindexglobal k index of lower bound of the local k point set in the current pool
ifscf is converged
print
+
+
+
Returns
total energy
+ +
+
+ +

◆ computeEntropicEnergy()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double dftfe::energyCalculator::computeEntropicEnergy (const std::vector< std::vector< double > > & eigenValues,
const std::vector< double > & kPointWeights,
const double fermiEnergy,
const double fermiEnergyUp,
const double fermiEnergyDown,
const bool isSpinPolarized,
const bool isConstraintMagnetization,
const double temperature ) const
+
+ +
+
+ +

◆ computeXCEnergyTerms()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::energyCalculator::computeXCEnergyTerms (const std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > & basisOperationsPtr,
const unsigned int quadratureId,
const std::shared_ptr< excManager > excManagerPtr,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & densityInValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & densityOutValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & gradDensityInValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & gradDensityOutValues,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoCoreValues,
double & exchangeEnergy,
double & correlationEnergy,
double & excCorrPotentialTimesRho )
+
+ +
+
+ +

◆ computeXCEnergyTermsSpinPolarized()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::energyCalculator::computeXCEnergyTermsSpinPolarized (const std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > & basisOperationsPtr,
const unsigned int quadratureId,
const std::shared_ptr< excManager > excManagerPtr,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & densityInValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & densityOutValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & gradDensityInValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & gradDensityOutValues,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoCoreValues,
double & exchangeEnergy,
double & correlationEnergy,
double & excCorrPotentialTimesRho )
+
+ +
+
+

Member Data Documentation

+ +

◆ d_dftParams

+ +
+
+ + + + + +
+ + + + +
const dftParameters& dftfe::energyCalculator::d_dftParams
+
+private
+
+ +
+
+ +

◆ d_mpiCommParent

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm dftfe::energyCalculator::d_mpiCommParent
+
+private
+
+ +
+
+ +

◆ interBandGroupComm

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm dftfe::energyCalculator::interBandGroupComm
+
+private
+
+ +
+
+ +

◆ interpoolcomm

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm dftfe::energyCalculator::interpoolcomm
+
+private
+
+ +
+
+ +

◆ mpi_communicator

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm dftfe::energyCalculator::mpi_communicator
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::energyCalculator::pcout
+
+private
+
+ +

parallel message stream

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1exc_density_base_class-members.html b/classdftfe_1_1exc_density_base_class-members.html new file mode 100644 index 000000000..27338ad2f --- /dev/null +++ b/classdftfe_1_1exc_density_base_class-members.html @@ -0,0 +1,98 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::excDensityBaseClass Member List
+
+
+ +

This is the complete list of members for dftfe::excDensityBaseClass, including all inherited members.

+ + + + + + + + +
computeDensityBasedEnergyDensity(unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::vector< double > &outputExchangeEnergyDensity, std::vector< double > &outputCorrEnergyDensity) const =0dftfe::excDensityBaseClasspure virtual
computeDensityBasedFxc(unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::map< fxcOutputDataAttributes, std::vector< double > * > &outputDer2ExchangeEnergy, std::map< fxcOutputDataAttributes, std::vector< double > * > &outputDer2CorrEnergy) const =0dftfe::excDensityBaseClasspure virtual
computeDensityBasedVxc(unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::map< VeffOutputDataAttributes, std::vector< double > * > &outputDerExchangeEnergy, std::map< VeffOutputDataAttributes, std::vector< double > * > &outputDerCorrEnergy) const =0dftfe::excDensityBaseClasspure virtual
d_familyTypedftfe::excDensityBaseClassprotected
d_isSpinPolarizeddftfe::excDensityBaseClassprotected
excDensityBaseClass(bool isSpinPolarized)dftfe::excDensityBaseClass
getDensityBasedFamilyType() constdftfe::excDensityBaseClass
+ + + + diff --git a/classdftfe_1_1exc_density_base_class.html b/classdftfe_1_1exc_density_base_class.html new file mode 100644 index 000000000..4f4422ae1 --- /dev/null +++ b/classdftfe_1_1exc_density_base_class.html @@ -0,0 +1,332 @@ + + + + + + + +DFT-FE: dftfe::excDensityBaseClass Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::excDensityBaseClass Class Referenceabstract
+
+
+ +

#include <excDensityBaseClass.h>

+
+Inheritance diagram for dftfe::excDensityBaseClass:
+
+
+ + +dftfe::excDensityGGAClass +dftfe::excDensityLDAClass + +
+ + + + + + + + + + + + +

+Public Member Functions

 excDensityBaseClass (bool isSpinPolarized)
 
virtual void computeDensityBasedEnergyDensity (unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::vector< double > &outputExchangeEnergyDensity, std::vector< double > &outputCorrEnergyDensity) const =0
 
virtual void computeDensityBasedVxc (unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::map< VeffOutputDataAttributes, std::vector< double > * > &outputDerExchangeEnergy, std::map< VeffOutputDataAttributes, std::vector< double > * > &outputDerCorrEnergy) const =0
 
virtual void computeDensityBasedFxc (unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::map< fxcOutputDataAttributes, std::vector< double > * > &outputDer2ExchangeEnergy, std::map< fxcOutputDataAttributes, std::vector< double > * > &outputDer2CorrEnergy) const =0
 
densityFamilyType getDensityBasedFamilyType () const
 
+ + + + + +

+Protected Attributes

densityFamilyType d_familyType
 
bool d_isSpinPolarized
 
+

Constructor & Destructor Documentation

+ +

◆ excDensityBaseClass()

+ +
+
+ + + + + + + +
dftfe::excDensityBaseClass::excDensityBaseClass (bool isSpinPolarized)
+
+ +
+
+

Member Function Documentation

+ +

◆ computeDensityBasedEnergyDensity()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
virtual void dftfe::excDensityBaseClass::computeDensityBasedEnergyDensity (unsigned int sizeInput,
const std::map< rhoDataAttributes, const std::vector< double > * > & rhoData,
std::vector< double > & outputExchangeEnergyDensity,
std::vector< double > & outputCorrEnergyDensity ) const
+
+pure virtual
+
+
+ +

◆ computeDensityBasedFxc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
virtual void dftfe::excDensityBaseClass::computeDensityBasedFxc (unsigned int sizeInput,
const std::map< rhoDataAttributes, const std::vector< double > * > & rhoData,
std::map< fxcOutputDataAttributes, std::vector< double > * > & outputDer2ExchangeEnergy,
std::map< fxcOutputDataAttributes, std::vector< double > * > & outputDer2CorrEnergy ) const
+
+pure virtual
+
+
+ +

◆ computeDensityBasedVxc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
virtual void dftfe::excDensityBaseClass::computeDensityBasedVxc (unsigned int sizeInput,
const std::map< rhoDataAttributes, const std::vector< double > * > & rhoData,
std::map< VeffOutputDataAttributes, std::vector< double > * > & outputDerExchangeEnergy,
std::map< VeffOutputDataAttributes, std::vector< double > * > & outputDerCorrEnergy ) const
+
+pure virtual
+
+
+ +

◆ getDensityBasedFamilyType()

+ +
+
+ + + + + + + +
densityFamilyType dftfe::excDensityBaseClass::getDensityBasedFamilyType () const
+
+ +
+
+

Member Data Documentation

+ +

◆ d_familyType

+ +
+
+ + + + + +
+ + + + +
densityFamilyType dftfe::excDensityBaseClass::d_familyType
+
+protected
+
+ +
+
+ +

◆ d_isSpinPolarized

+ +
+
+ + + + + +
+ + + + +
bool dftfe::excDensityBaseClass::d_isSpinPolarized
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1exc_density_base_class.png b/classdftfe_1_1exc_density_base_class.png new file mode 100644 index 0000000000000000000000000000000000000000..807775fb22beb92e83b94c2435cb64e72e442b64 GIT binary patch literal 1060 zcmeAS@N?(olHy`uVBq!ia0y~yU<6`@01jp#S+j*V2}nr?_=LFr|NkGzeDUUMY5$?+ z76zIH64TGTc<|r>P~7xv*b<-|XGxG>FawYe2Ifq&uP`t$ulICu45?szJNI?bY6Bj& z>F13l_x=~2@5FGr?ShHu%nOVC%sGEFMV$T=-(W1!miVKDLGMUH+P9laf{Zr@1g)GI zsj>3P8J#I1S!rUYTBr8ewN$Jn+mEajx$U;gul;~U1=YjWq2dFD*w$^^RU-*viq%0<^QR&_}AFGfAZ45ftTMMf0vQ}>a|s8_^t05 zlQ!m;`?Ky4xPLWheRkMp%M!WpL$OP9f9*Q9Kh*oZ`oB$uw}mThyLSuMujTprCeN%+ zblVr1{nMsBt%xuGz3uNU>HBBi@F*?wUwY9kICIBEP+)j#nHqDePMtNgb&}WFGftjM z)6y2k_`NjXIo!_tA-)DJm>d@YkAK1)tb5l7_BNmSF37H3DNRgXyVmAG4bc5CC+Uh{U-sV^h0j; zb*r?@dGBRxJ~Upsd?=Qwgn1r++2WFS|6N*&mp9K_m-#m8_?_4**7};Z>M{GDc~9_X ze?7(Twe7ltTP(gW{T_6zyVPxa2rR18Cv-2^cxT_@>P7!+mVDuTXeKtFZ=2TKd3SWG z|K7awzW8t~|D|vL8-u>L%$>7(vAjmD`;I)`I)R+UTV`*WzgTSTzlpauS{tsb3@%Rl z+>+PStYd3?Cx5CP*SCO``p-+t-yW^Ve{+8^=Vtzdxf^bKf8Aht=SM!r_oE5>PhXnb zwRdyZyQ1%vZtRq93M4 zNeSlFKl-n6nUEBI8A;BPKrzLU#T+J!C^_p(O^7x&uh{b?|VBws=l1Q zB*>FXb*fj8#>$XMz$7q9 + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::excDensityGGAClass Member List
+
+
+ +

This is the complete list of members for dftfe::excDensityGGAClass, including all inherited members.

+ + + + + + + + + + + + + + +
computeDensityBasedEnergyDensity(unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::vector< double > &outputExchangeEnergyDensity, std::vector< double > &outputCorrEnergyDensity) const overridedftfe::excDensityGGAClassvirtual
computeDensityBasedFxc(unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::map< fxcOutputDataAttributes, std::vector< double > * > &outputDer2ExchangeEnergy, std::map< fxcOutputDataAttributes, std::vector< double > * > &outputDer2CorrEnergy) const overridedftfe::excDensityGGAClassvirtual
computeDensityBasedVxc(unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::map< VeffOutputDataAttributes, std::vector< double > * > &outputDerExchangeEnergy, std::map< VeffOutputDataAttributes, std::vector< double > * > &outputDerCorrEnergy) const overridedftfe::excDensityGGAClassvirtual
d_familyTypedftfe::excDensityBaseClassprotected
d_funcCPtrdftfe::excDensityGGAClassprivate
d_funcXPtrdftfe::excDensityGGAClassprivate
d_isSpinPolarizeddftfe::excDensityBaseClassprotected
d_NNGGAPtrdftfe::excDensityGGAClassprivate
excDensityBaseClass(bool isSpinPolarized)dftfe::excDensityBaseClass
excDensityGGAClass(xc_func_type *funcXPtr, xc_func_type *funcCPtr, bool isSpinPolarized, bool scaleExchange, bool computeCorrelation, double scaleExchangeFactor)dftfe::excDensityGGAClass
excDensityGGAClass(xc_func_type *funcXPtr, xc_func_type *funcCPtr, bool isSpinPolarized, std::string modelXCInputFile, bool scaleExchange, bool computeCorrelation, double scaleExchangeFactor)dftfe::excDensityGGAClass
getDensityBasedFamilyType() constdftfe::excDensityBaseClass
~excDensityGGAClass()dftfe::excDensityGGAClass
+ + + + diff --git a/classdftfe_1_1exc_density_g_g_a_class.html b/classdftfe_1_1exc_density_g_g_a_class.html new file mode 100644 index 000000000..e0cf84793 --- /dev/null +++ b/classdftfe_1_1exc_density_g_g_a_class.html @@ -0,0 +1,440 @@ + + + + + + + +DFT-FE: dftfe::excDensityGGAClass Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::excDensityGGAClass Class Reference
+
+
+ +

#include <excDensityGGAClass.h>

+
+Inheritance diagram for dftfe::excDensityGGAClass:
+
+
+ + +dftfe::excDensityBaseClass + +
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 excDensityGGAClass (xc_func_type *funcXPtr, xc_func_type *funcCPtr, bool isSpinPolarized, bool scaleExchange, bool computeCorrelation, double scaleExchangeFactor)
 
 excDensityGGAClass (xc_func_type *funcXPtr, xc_func_type *funcCPtr, bool isSpinPolarized, std::string modelXCInputFile, bool scaleExchange, bool computeCorrelation, double scaleExchangeFactor)
 
 ~excDensityGGAClass ()
 
void computeDensityBasedEnergyDensity (unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::vector< double > &outputExchangeEnergyDensity, std::vector< double > &outputCorrEnergyDensity) const override
 
void computeDensityBasedVxc (unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::map< VeffOutputDataAttributes, std::vector< double > * > &outputDerExchangeEnergy, std::map< VeffOutputDataAttributes, std::vector< double > * > &outputDerCorrEnergy) const override
 
void computeDensityBasedFxc (unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::map< fxcOutputDataAttributes, std::vector< double > * > &outputDer2ExchangeEnergy, std::map< fxcOutputDataAttributes, std::vector< double > * > &outputDer2CorrEnergy) const override
 
- Public Member Functions inherited from dftfe::excDensityBaseClass
 excDensityBaseClass (bool isSpinPolarized)
 
densityFamilyType getDensityBasedFamilyType () const
 
+ + + + + + + +

+Private Attributes

NNGGAd_NNGGAPtr
 
xc_func_typed_funcXPtr
 
xc_func_typed_funcCPtr
 
+ + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from dftfe::excDensityBaseClass
densityFamilyType d_familyType
 
bool d_isSpinPolarized
 
+

Constructor & Destructor Documentation

+ +

◆ excDensityGGAClass() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::excDensityGGAClass::excDensityGGAClass (xc_func_type * funcXPtr,
xc_func_type * funcCPtr,
bool isSpinPolarized,
bool scaleExchange,
bool computeCorrelation,
double scaleExchangeFactor )
+
+ +
+
+ +

◆ excDensityGGAClass() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::excDensityGGAClass::excDensityGGAClass (xc_func_type * funcXPtr,
xc_func_type * funcCPtr,
bool isSpinPolarized,
std::string modelXCInputFile,
bool scaleExchange,
bool computeCorrelation,
double scaleExchangeFactor )
+
+ +
+
+ +

◆ ~excDensityGGAClass()

+ +
+
+ + + + + + + +
dftfe::excDensityGGAClass::~excDensityGGAClass ()
+
+ +
+
+

Member Function Documentation

+ +

◆ computeDensityBasedEnergyDensity()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::excDensityGGAClass::computeDensityBasedEnergyDensity (unsigned int sizeInput,
const std::map< rhoDataAttributes, const std::vector< double > * > & rhoData,
std::vector< double > & outputExchangeEnergyDensity,
std::vector< double > & outputCorrEnergyDensity ) const
+
+overridevirtual
+
+ +

Implements dftfe::excDensityBaseClass.

+ +
+
+ +

◆ computeDensityBasedFxc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::excDensityGGAClass::computeDensityBasedFxc (unsigned int sizeInput,
const std::map< rhoDataAttributes, const std::vector< double > * > & rhoData,
std::map< fxcOutputDataAttributes, std::vector< double > * > & outputDer2ExchangeEnergy,
std::map< fxcOutputDataAttributes, std::vector< double > * > & outputDer2CorrEnergy ) const
+
+overridevirtual
+
+ +

Implements dftfe::excDensityBaseClass.

+ +
+
+ +

◆ computeDensityBasedVxc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::excDensityGGAClass::computeDensityBasedVxc (unsigned int sizeInput,
const std::map< rhoDataAttributes, const std::vector< double > * > & rhoData,
std::map< VeffOutputDataAttributes, std::vector< double > * > & outputDerExchangeEnergy,
std::map< VeffOutputDataAttributes, std::vector< double > * > & outputDerCorrEnergy ) const
+
+overridevirtual
+
+ +

Implements dftfe::excDensityBaseClass.

+ +
+
+

Member Data Documentation

+ +

◆ d_funcCPtr

+ +
+
+ + + + + +
+ + + + +
xc_func_type* dftfe::excDensityGGAClass::d_funcCPtr
+
+private
+
+ +
+
+ +

◆ d_funcXPtr

+ +
+
+ + + + + +
+ + + + +
xc_func_type* dftfe::excDensityGGAClass::d_funcXPtr
+
+private
+
+ +
+
+ +

◆ d_NNGGAPtr

+ +
+
+ + + + + +
+ + + + +
NNGGA* dftfe::excDensityGGAClass::d_NNGGAPtr
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1exc_density_g_g_a_class.png b/classdftfe_1_1exc_density_g_g_a_class.png new file mode 100644 index 0000000000000000000000000000000000000000..817a6697e9161dde2c42276037430d03b95a6d64 GIT binary patch literal 784 zcmeAS@N?(olHy`uVBq!ia0vp^OMp0lgBeIJ$k3|+QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$58$(!*I2$m>vQ7ro3=+xORe0sVZxKmriz|M&cc&ajGri+UR6{x z@yW_lzxq|&tE8`#z1kW1`kl&6ZKtsJ+#Oe69=Yr=uTt)q_JnAz>&Cgq?`_V!mdmd@ z&vIAQI`8Zye;0}!b+|U+c>MGOjkZpC(Yt+K`G2=tcH2gL)BlJQ=L3&@%i264F}2?3 z>?FulDDbN>5kuFELMHdwh3-X3zKOvsM0wf&6O%@_7D<)W~V=+zgYx zGBqrJEv^v1UVgzJ))VHBKWo-A75SMnJjrlka%fXiVMrmG@h|*DkXPld02h~eYdJNQ zCM^UJitIc8={)@*BxrfntU^gic`xs^YcZu~6W8VYne|M#`ZuV`eEH@Z%;B+{)t&Fh zG~Ef>A(yp();Hx{Au}4Dy?M1$Z|%fy?NK7k4|e=jJlpqeee<1dWizkLe^=|Xy;4u< z?{nrQHxmQgVr3PbuShsmUo{N{2JyCO)0)K=-&SOiNZr(*Wppnpfn}%kV@H|vJNsFA zo?criJH2|sNeh;BJc+OQmT!9|V6^V-`Q+#Sv;CtOjHjjb{9<>{a0H= l1W#T76VjWe1j((l|5DYqVdsa$iNLhW;OXk;vd$@?2>`%XaP0s9 literal 0 HcmV?d00001 diff --git a/classdftfe_1_1exc_density_l_d_a_class-members.html b/classdftfe_1_1exc_density_l_d_a_class-members.html new file mode 100644 index 000000000..d5764a0ca --- /dev/null +++ b/classdftfe_1_1exc_density_l_d_a_class-members.html @@ -0,0 +1,104 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::excDensityLDAClass Member List
+
+
+ +

This is the complete list of members for dftfe::excDensityLDAClass, including all inherited members.

+ + + + + + + + + + + + + + +
computeDensityBasedEnergyDensity(unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::vector< double > &outputExchangeEnergyDensity, std::vector< double > &outputCorrEnergyDensity) const overridedftfe::excDensityLDAClassvirtual
computeDensityBasedFxc(unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::map< fxcOutputDataAttributes, std::vector< double > * > &outputDer2ExchangeEnergy, std::map< fxcOutputDataAttributes, std::vector< double > * > &outputDer2CorrEnergy) const overridedftfe::excDensityLDAClassvirtual
computeDensityBasedVxc(unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::map< VeffOutputDataAttributes, std::vector< double > * > &outputDerExchangeEnergy, std::map< VeffOutputDataAttributes, std::vector< double > * > &outputDerCorrEnergy) const overridedftfe::excDensityLDAClassvirtual
d_familyTypedftfe::excDensityBaseClassprotected
d_funcCPtrdftfe::excDensityLDAClassprivate
d_funcXPtrdftfe::excDensityLDAClassprivate
d_isSpinPolarizeddftfe::excDensityBaseClassprotected
d_NNLDAPtrdftfe::excDensityLDAClassprivate
excDensityBaseClass(bool isSpinPolarized)dftfe::excDensityBaseClass
excDensityLDAClass(xc_func_type *funcXPtr, xc_func_type *funcCPtr, bool isSpinPolarized, bool scaleExchange, bool computeCorrelation, double scaleExchangeFactor)dftfe::excDensityLDAClass
excDensityLDAClass(xc_func_type *funcXPtr, xc_func_type *funcCPtr, bool isSpinPolarized, std::string modelXCInputFile, bool scaleExchange, bool computeCorrelation, double scaleExchangeFactor)dftfe::excDensityLDAClass
getDensityBasedFamilyType() constdftfe::excDensityBaseClass
~excDensityLDAClass()dftfe::excDensityLDAClass
+ + + + diff --git a/classdftfe_1_1exc_density_l_d_a_class.html b/classdftfe_1_1exc_density_l_d_a_class.html new file mode 100644 index 000000000..bf0f8ad3f --- /dev/null +++ b/classdftfe_1_1exc_density_l_d_a_class.html @@ -0,0 +1,440 @@ + + + + + + + +DFT-FE: dftfe::excDensityLDAClass Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::excDensityLDAClass Class Reference
+
+
+ +

#include <excDensityLDAClass.h>

+
+Inheritance diagram for dftfe::excDensityLDAClass:
+
+
+ + +dftfe::excDensityBaseClass + +
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 excDensityLDAClass (xc_func_type *funcXPtr, xc_func_type *funcCPtr, bool isSpinPolarized, bool scaleExchange, bool computeCorrelation, double scaleExchangeFactor)
 
 excDensityLDAClass (xc_func_type *funcXPtr, xc_func_type *funcCPtr, bool isSpinPolarized, std::string modelXCInputFile, bool scaleExchange, bool computeCorrelation, double scaleExchangeFactor)
 
 ~excDensityLDAClass ()
 
void computeDensityBasedEnergyDensity (unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::vector< double > &outputExchangeEnergyDensity, std::vector< double > &outputCorrEnergyDensity) const override
 
void computeDensityBasedVxc (unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::map< VeffOutputDataAttributes, std::vector< double > * > &outputDerExchangeEnergy, std::map< VeffOutputDataAttributes, std::vector< double > * > &outputDerCorrEnergy) const override
 
void computeDensityBasedFxc (unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::map< fxcOutputDataAttributes, std::vector< double > * > &outputDer2ExchangeEnergy, std::map< fxcOutputDataAttributes, std::vector< double > * > &outputDer2CorrEnergy) const override
 
- Public Member Functions inherited from dftfe::excDensityBaseClass
 excDensityBaseClass (bool isSpinPolarized)
 
densityFamilyType getDensityBasedFamilyType () const
 
+ + + + + + + +

+Private Attributes

NNLDAd_NNLDAPtr
 
xc_func_typed_funcXPtr
 
xc_func_typed_funcCPtr
 
+ + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from dftfe::excDensityBaseClass
densityFamilyType d_familyType
 
bool d_isSpinPolarized
 
+

Constructor & Destructor Documentation

+ +

◆ excDensityLDAClass() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::excDensityLDAClass::excDensityLDAClass (xc_func_type * funcXPtr,
xc_func_type * funcCPtr,
bool isSpinPolarized,
bool scaleExchange,
bool computeCorrelation,
double scaleExchangeFactor )
+
+ +
+
+ +

◆ excDensityLDAClass() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::excDensityLDAClass::excDensityLDAClass (xc_func_type * funcXPtr,
xc_func_type * funcCPtr,
bool isSpinPolarized,
std::string modelXCInputFile,
bool scaleExchange,
bool computeCorrelation,
double scaleExchangeFactor )
+
+ +
+
+ +

◆ ~excDensityLDAClass()

+ +
+
+ + + + + + + +
dftfe::excDensityLDAClass::~excDensityLDAClass ()
+
+ +
+
+

Member Function Documentation

+ +

◆ computeDensityBasedEnergyDensity()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::excDensityLDAClass::computeDensityBasedEnergyDensity (unsigned int sizeInput,
const std::map< rhoDataAttributes, const std::vector< double > * > & rhoData,
std::vector< double > & outputExchangeEnergyDensity,
std::vector< double > & outputCorrEnergyDensity ) const
+
+overridevirtual
+
+ +

Implements dftfe::excDensityBaseClass.

+ +
+
+ +

◆ computeDensityBasedFxc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::excDensityLDAClass::computeDensityBasedFxc (unsigned int sizeInput,
const std::map< rhoDataAttributes, const std::vector< double > * > & rhoData,
std::map< fxcOutputDataAttributes, std::vector< double > * > & outputDer2ExchangeEnergy,
std::map< fxcOutputDataAttributes, std::vector< double > * > & outputDer2CorrEnergy ) const
+
+overridevirtual
+
+ +

Implements dftfe::excDensityBaseClass.

+ +
+
+ +

◆ computeDensityBasedVxc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::excDensityLDAClass::computeDensityBasedVxc (unsigned int sizeInput,
const std::map< rhoDataAttributes, const std::vector< double > * > & rhoData,
std::map< VeffOutputDataAttributes, std::vector< double > * > & outputDerExchangeEnergy,
std::map< VeffOutputDataAttributes, std::vector< double > * > & outputDerCorrEnergy ) const
+
+overridevirtual
+
+ +

Implements dftfe::excDensityBaseClass.

+ +
+
+

Member Data Documentation

+ +

◆ d_funcCPtr

+ +
+
+ + + + + +
+ + + + +
xc_func_type* dftfe::excDensityLDAClass::d_funcCPtr
+
+private
+
+ +
+
+ +

◆ d_funcXPtr

+ +
+
+ + + + + +
+ + + + +
xc_func_type* dftfe::excDensityLDAClass::d_funcXPtr
+
+private
+
+ +
+
+ +

◆ d_NNLDAPtr

+ +
+
+ + + + + +
+ + + + +
NNLDA* dftfe::excDensityLDAClass::d_NNLDAPtr
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1exc_density_l_d_a_class.png b/classdftfe_1_1exc_density_l_d_a_class.png new file mode 100644 index 0000000000000000000000000000000000000000..1db854326cbf8ee286437ac183747a51fb49a8ba GIT binary patch literal 775 zcmeAS@N?(olHy`uVBq!ia0vp^OMp0lgBeIJ$k3|+QqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$58$(!*I2ZLaKtde!jgY2+3JsdZ0+;_f}bzSI%W8Sd}f#WOf`XzUrS{8kK+w6CKD#^k-bar^` zx)5!{Et$Tf!FBhod)Jq+u9$85wjeGr)D1=tE2?9 z2uOUIaJpFYcYnu;rPt003%<-WTd~&eChPI{W+hu=nIpw(MD7Da_>5T4{OtiRF0@a` z=9r$GTYkCBL)`4~r8#lwdfuy-zg?et@?OBcQ}VH+OnO7l-%b4ce9P4*&As%V z<=CF>i8kD|9+?sE_&)4Y(`{H;dD-nP<9Y?>(_g(FZ&7>Anz_#F?Zd@ioyz6EF4$T8 zGOR0#|2Na^XKA^v7XI5iPRM$FsJBjO`@LH+c+dU$d4dz;vmClQQZm3q8!!;sU$d*f XZ+m}YS#b_9$ufAl`njxgN@xNA9Zqq8 literal 0 HcmV?d00001 diff --git a/classdftfe_1_1exc_manager-members.html b/classdftfe_1_1exc_manager-members.html new file mode 100644 index 000000000..ce0d0778f --- /dev/null +++ b/classdftfe_1_1exc_manager-members.html @@ -0,0 +1,105 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::excManager Member List
+
+
+ +

This is the complete list of members for dftfe::excManager, including all inherited members.

+ + + + + + + + + + + + + + + +
clear()dftfe::excManager
d_excDensityObjPtrdftfe::excManagerprivate
d_excWavefunctionObjPtrdftfe::excManagerprivate
d_funcCPtrdftfe::excManagerprivate
d_funcXPtrdftfe::excManagerprivate
excManager()dftfe::excManager
getDensityBasedFamilyType() constdftfe::excManager
getExcDensityObj()dftfe::excManager
getExcDensityObj() constdftfe::excManager
getExcWavefunctionObj()dftfe::excManager
getExcWavefunctionObj() constdftfe::excManager
getWavefunctionBasedFamilyType() constdftfe::excManager
init(unsigned int xc_id, bool isSpinPolarized, unsigned int exxFactor, bool scaleExchange, unsigned int scaleExchangeFactor, bool computeCorrelation, std::string modelXCInputFile)dftfe::excManager
~excManager()dftfe::excManager
+ + + + diff --git a/classdftfe_1_1exc_manager.html b/classdftfe_1_1exc_manager.html new file mode 100644 index 000000000..cb741f288 --- /dev/null +++ b/classdftfe_1_1exc_manager.html @@ -0,0 +1,431 @@ + + + + + + + +DFT-FE: dftfe::excManager Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::excManager Class Reference
+
+
+ +

#include <excManager.h>

+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 excManager ()
 Constructor.
 
 ~excManager ()
 destructor
 
void clear ()
 
void init (unsigned int xc_id, bool isSpinPolarized, unsigned int exxFactor, bool scaleExchange, unsigned int scaleExchangeFactor, bool computeCorrelation, std::string modelXCInputFile)
 
densityFamilyType getDensityBasedFamilyType () const
 
wavefunctionFamilyType getWavefunctionBasedFamilyType () const
 
excDensityBaseClassgetExcDensityObj ()
 
excWavefunctionBaseClassgetExcWavefunctionObj ()
 
const excDensityBaseClassgetExcDensityObj () const
 
const excWavefunctionBaseClassgetExcWavefunctionObj () const
 
+ + + + + + + + + + +

+Private Attributes

xc_func_typed_funcXPtr
 objects for various exchange-correlations (from libxc package)
 
xc_func_typed_funcCPtr
 
excDensityBaseClassd_excDensityObjPtr
 
excWavefunctionBaseClassd_excWavefunctionObjPtr
 
+

Constructor & Destructor Documentation

+ +

◆ excManager()

+ +
+
+ + + + + + + +
dftfe::excManager::excManager ()
+
+ +

Constructor.

+ +
+
+ +

◆ ~excManager()

+ +
+
+ + + + + + + +
dftfe::excManager::~excManager ()
+
+ +

destructor

+ +
+
+

Member Function Documentation

+ +

◆ clear()

+ +
+
+ + + + + + + +
void dftfe::excManager::clear ()
+
+ +
+
+ +

◆ getDensityBasedFamilyType()

+ +
+
+ + + + + + + +
densityFamilyType dftfe::excManager::getDensityBasedFamilyType () const
+
+ +
+
+ +

◆ getExcDensityObj() [1/2]

+ +
+
+ + + + + + + +
excDensityBaseClass * dftfe::excManager::getExcDensityObj ()
+
+ +
+
+ +

◆ getExcDensityObj() [2/2]

+ +
+
+ + + + + + + +
const excDensityBaseClass * dftfe::excManager::getExcDensityObj () const
+
+ +
+
+ +

◆ getExcWavefunctionObj() [1/2]

+ +
+
+ + + + + + + +
excWavefunctionBaseClass * dftfe::excManager::getExcWavefunctionObj ()
+
+ +
+
+ +

◆ getExcWavefunctionObj() [2/2]

+ +
+
+ + + + + + + +
const excWavefunctionBaseClass * dftfe::excManager::getExcWavefunctionObj () const
+
+ +
+
+ +

◆ getWavefunctionBasedFamilyType()

+ +
+
+ + + + + + + +
wavefunctionFamilyType dftfe::excManager::getWavefunctionBasedFamilyType () const
+
+ +
+
+ +

◆ init()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::excManager::init (unsigned int xc_id,
bool isSpinPolarized,
unsigned int exxFactor,
bool scaleExchange,
unsigned int scaleExchangeFactor,
bool computeCorrelation,
std::string modelXCInputFile )
+
+ +
+
+

Member Data Documentation

+ +

◆ d_excDensityObjPtr

+ +
+
+ + + + + +
+ + + + +
excDensityBaseClass* dftfe::excManager::d_excDensityObjPtr
+
+private
+
+ +
+
+ +

◆ d_excWavefunctionObjPtr

+ +
+
+ + + + + +
+ + + + +
excWavefunctionBaseClass* dftfe::excManager::d_excWavefunctionObjPtr
+
+private
+
+ +
+
+ +

◆ d_funcCPtr

+ +
+
+ + + + + +
+ + + + +
xc_func_type* dftfe::excManager::d_funcCPtr
+
+private
+
+ +
+
+ +

◆ d_funcXPtr

+ +
+
+ + + + + +
+ + + + +
xc_func_type* dftfe::excManager::d_funcXPtr
+
+private
+
+ +

objects for various exchange-correlations (from libxc package)

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1exc_wavefunction_base_class-members.html b/classdftfe_1_1exc_wavefunction_base_class-members.html new file mode 100644 index 000000000..65e7f20ac --- /dev/null +++ b/classdftfe_1_1exc_wavefunction_base_class-members.html @@ -0,0 +1,99 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::excWavefunctionBaseClass Member List
+
+ + + + + diff --git a/classdftfe_1_1exc_wavefunction_base_class.html b/classdftfe_1_1exc_wavefunction_base_class.html new file mode 100644 index 000000000..d874032dd --- /dev/null +++ b/classdftfe_1_1exc_wavefunction_base_class.html @@ -0,0 +1,316 @@ + + + + + + + +DFT-FE: dftfe::excWavefunctionBaseClass Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::excWavefunctionBaseClass Class Referenceabstract
+
+
+ +

#include <excWavefunctionBaseClass.h>

+
+Inheritance diagram for dftfe::excWavefunctionBaseClass:
+
+
+ + +dftfe::excWavefunctionNoneClass + +
+ + + + + + + + + + + + + + +

+Public Member Functions

 excWavefunctionBaseClass (bool isSpinPolarized)
 
virtual ~excWavefunctionBaseClass ()
 
virtual void applyWaveFunctionDependentVxc () const =0
 
virtual void updateWaveFunctionDependentVxc () const =0
 
virtual double computeWaveFunctionDependentExcEnergy () const =0
 
wavefunctionFamilyType getWavefunctionBasedFamilyType () const
 
+ + + + + +

+Protected Attributes

wavefunctionFamilyType d_wavefunctionFamilyType
 
bool d_isSpinPolarized
 
+

Constructor & Destructor Documentation

+ +

◆ excWavefunctionBaseClass()

+ +
+
+ + + + + + + +
dftfe::excWavefunctionBaseClass::excWavefunctionBaseClass (bool isSpinPolarized)
+
+ +
+
+ +

◆ ~excWavefunctionBaseClass()

+ +
+
+ + + + + +
+ + + + + + + +
virtual dftfe::excWavefunctionBaseClass::~excWavefunctionBaseClass ()
+
+virtual
+
+ +
+
+

Member Function Documentation

+ +

◆ applyWaveFunctionDependentVxc()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::excWavefunctionBaseClass::applyWaveFunctionDependentVxc () const
+
+pure virtual
+
+ +

Implemented in dftfe::excWavefunctionNoneClass.

+ +
+
+ +

◆ computeWaveFunctionDependentExcEnergy()

+ +
+
+ + + + + +
+ + + + + + + +
virtual double dftfe::excWavefunctionBaseClass::computeWaveFunctionDependentExcEnergy () const
+
+pure virtual
+
+ +

Implemented in dftfe::excWavefunctionNoneClass.

+ +
+
+ +

◆ getWavefunctionBasedFamilyType()

+ +
+
+ + + + + + + +
wavefunctionFamilyType dftfe::excWavefunctionBaseClass::getWavefunctionBasedFamilyType () const
+
+ +
+
+ +

◆ updateWaveFunctionDependentVxc()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::excWavefunctionBaseClass::updateWaveFunctionDependentVxc () const
+
+pure virtual
+
+ +

Implemented in dftfe::excWavefunctionNoneClass.

+ +
+
+

Member Data Documentation

+ +

◆ d_isSpinPolarized

+ +
+
+ + + + + +
+ + + + +
bool dftfe::excWavefunctionBaseClass::d_isSpinPolarized
+
+protected
+
+ +
+
+ +

◆ d_wavefunctionFamilyType

+ +
+
+ + + + + +
+ + + + +
wavefunctionFamilyType dftfe::excWavefunctionBaseClass::d_wavefunctionFamilyType
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1exc_wavefunction_base_class.png b/classdftfe_1_1exc_wavefunction_base_class.png new file mode 100644 index 0000000000000000000000000000000000000000..a2d813b8ad2c6808c32d4d473ccf3d71ecd2f6fb GIT binary patch literal 832 zcmeAS@N?(olHy`uVBq!ia0vp^CxJMCgBeJ+6fWEYq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SR%c<=xyZhAIs2~du+B*-tA0mugfbEer>7#NsNd%8G=R4~4s`?^m>k)ySL zMoGng^?P}zg+5%fo&B=KFz1_3sJ6mLeHFO4s)D$_^{7Q`!i>Pub%V`V)oqn|HYDf6W4IgoM}CEWA2jLsIDb4$GHDy zoxkojBQ{X*HlOLuiAgopQ;v(S_RWyLnYVS-Ch>-oe>{T14APa>r`4F<-s#)4X7P%Z zOHXdem=f=AK!`eMd)K-nnPr8a0up@+56-qSf3?)ERac-PU#t2~wG@4Bl+y-TX6|D0Fyd3pWgnKS>d zYHFEzb2@^UrveP1CWZ&Es~8RlTD3j-XuYX5`(>SgU~cG}RUI8{YnyD^+h=Ac?9HnB zcU$U<%GF=Yecx5Gos<^&iGRJ9I(x>1DTgZ>_rK7u+q?X!d-wHk%TM-+JifiyCTrRE zmTx=dV>O;CGHB`l4WB$k^vui?t0m{3Ez6s%@LD5xRq;DpwNzy_*^@S%>n454uyp;J z?VKbeHOa^2*Z)5Yxi|BAUVY<{HE}EVcI8a*pvr$!o_u=O?{+FGbh^pX%u?TNoA)ny zW;1oB%37QH)+Mh6)y#`^-oNiWw<^t+;l}jJqx$bVy(+V^n(7PuA)%iO3H|e+(BJx` z#Hl=%=dT~D% + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::excWavefunctionNoneClass Member List
+
+ + + + + diff --git a/classdftfe_1_1exc_wavefunction_none_class.html b/classdftfe_1_1exc_wavefunction_none_class.html new file mode 100644 index 000000000..e13064910 --- /dev/null +++ b/classdftfe_1_1exc_wavefunction_none_class.html @@ -0,0 +1,232 @@ + + + + + + + +DFT-FE: dftfe::excWavefunctionNoneClass Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::excWavefunctionNoneClass Class Reference
+
+
+ +

#include <excWavefunctionNoneClass.h>

+
+Inheritance diagram for dftfe::excWavefunctionNoneClass:
+
+
+ + +dftfe::excWavefunctionBaseClass + +
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

 excWavefunctionNoneClass (bool isSpinPolarized)
 
void applyWaveFunctionDependentVxc () const override
 
void updateWaveFunctionDependentVxc () const override
 
double computeWaveFunctionDependentExcEnergy () const override
 
- Public Member Functions inherited from dftfe::excWavefunctionBaseClass
 excWavefunctionBaseClass (bool isSpinPolarized)
 
virtual ~excWavefunctionBaseClass ()
 
wavefunctionFamilyType getWavefunctionBasedFamilyType () const
 
+ + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from dftfe::excWavefunctionBaseClass
wavefunctionFamilyType d_wavefunctionFamilyType
 
bool d_isSpinPolarized
 
+

Constructor & Destructor Documentation

+ +

◆ excWavefunctionNoneClass()

+ +
+
+ + + + + + + +
dftfe::excWavefunctionNoneClass::excWavefunctionNoneClass (bool isSpinPolarized)
+
+ +
+
+

Member Function Documentation

+ +

◆ applyWaveFunctionDependentVxc()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::excWavefunctionNoneClass::applyWaveFunctionDependentVxc () const
+
+overridevirtual
+
+
+ +

◆ computeWaveFunctionDependentExcEnergy()

+ +
+
+ + + + + +
+ + + + + + + +
double dftfe::excWavefunctionNoneClass::computeWaveFunctionDependentExcEnergy () const
+
+overridevirtual
+
+
+ +

◆ updateWaveFunctionDependentVxc()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::excWavefunctionNoneClass::updateWaveFunctionDependentVxc () const
+
+overridevirtual
+
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1exc_wavefunction_none_class.png b/classdftfe_1_1exc_wavefunction_none_class.png new file mode 100644 index 0000000000000000000000000000000000000000..b308a3b4ac1cc7056ee53b47a38dbd470b4bda94 GIT binary patch literal 827 zcmeAS@N?(olHy`uVBq!ia0vp^CxJMCgBeJ+6fWEYq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SR%c<=xyZhAIs2~du+B*-tA0mugfbEer>7#Nt2dAc};R4~4s`+nUM1&*Wr zCNn?$^WPJ^n(5!{owM(@WZ!tR^R0%0z3VU0>!q>o9O8l(8M%a%l;Xj}CY6_AtN4`` zt=$wWD0p!}=!EYd3?{#;cX0`xdeS$D*>mInrpLx7XHDo>5iEDx?bh<89-k8Lyr?Xn zR~$I+r+fE}vK1%$QXapWDDS_RYsI zn%d<>fpxYgZ93OY`jTPi`Ze1*DM;#44d1HVg3WU#@O-{M;f1w^sJVJ(cu?iP9+%L5 z9hJtCQcv%wkn1VdzrC~kL(ZsVKK&W4@+kk!@8tLY>Pr1f!cuoK9@xiIYJBpS@W}$! zaPcw~O?jcOo)eELzCH0pZ?of8dC$eG9eupE8nxA3&)Vs7Y47P8|6M;X@BirHvOm<( z$>oVRg2=RL8c;HO} z6cW?EEd>#(&PDr|g~*>d6P>zSDeal#YK8X?6Q4;&tgk9xzSq$` zXw81B75*yOPHE5l_`lvuojqg1lfyd>&VTnOr}?I^==!(*lVwjHyQ*yOwXD?X_Z4?> zuS$-FQ{Mlts#LNTt9{BkmcDuJZIu&NUbA1#sqXi@+2QGKq$W=Zx6loxYZgm&tA21&+o+(H-%kQ_05cmo&5HV{z^;#R5efS z^Yu=bzH&^SZ8`1ycbD|gO>zuxPVad%{kzLj8&lJR`*)~6bzWqrdC6>v?96+q+m?S* z&MeWjoExyVd*S_+4aw45?oZxyZPl(BGwZiDwamOZ9YORdd1@{d{=&{yv*ho)A303G PWX|B}>gTe~DWM4fmxO{V literal 0 HcmV?d00001 diff --git a/classdftfe_1_1force_class-members.html b/classdftfe_1_1force_class-members.html new file mode 100644 index 000000000..aef7a523c --- /dev/null +++ b/classdftfe_1_1force_class-members.html @@ -0,0 +1,176 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace > Member List
+
+
+ +

This is the complete list of members for dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accumulateForceContributionGammaAtomsFloating(const std::map< unsigned int, std::vector< double > > &forceContributionLocalGammaAtoms, std::vector< double > &accumForcesVector)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
addENonlinearCoreCorrectionStressContribution(dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &vxcQuads, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derExcGradRho, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
addENonlinearCoreCorrectionStressContributionSpinPolarized(dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &vxcQuadsSpin0, const dealii::AlignedVector< dealii::VectorizedArray< double > > &vxcQuadsSpin1, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derExcGradRhoSpin0, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derExcGradRhoSpin1, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const bool isXCGGA=false)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
addEPhiTotSmearedStressContribution(dealii::FEEvaluation< 3, -1, 1, 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradPhiTotQuads, const std::vector< unsigned int > &nonTrivialAtomImageIdsMacroCell, const std::map< dealii::CellId, std::vector< int > > &bQuadAtomIdsAllAtomsImages, const dealii::AlignedVector< dealii::VectorizedArray< double > > &smearedbQuads)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
addEPSPStressContribution(dealii::FEValues< 3 > &feValues, dealii::FEFaceValues< 3 > &feFaceValues, dealii::FEEvaluation< 3, 1, C_num1DQuadLPSP< FEOrder >() *C_numCopies1DQuadLPSP(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int phiTotDofHandlerIndexElectro, const unsigned int cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &rhoQuads, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradRhoQuads, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtoms, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManager, const std::vector< std::map< dealii::CellId, unsigned int > > &cellsVselfBallsClosestAtomIdDofHandler)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
addEVselfSmearedStressContribution(dealii::FEEvaluation< 3, -1, 1, 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradVselfQuads, const std::vector< unsigned int > &nonTrivialAtomImageIdsMacroCell, const std::map< dealii::CellId, std::vector< int > > &bQuadAtomIdsAllAtomsImages, const dealii::AlignedVector< dealii::VectorizedArray< double > > &smearedbQuads)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
computeAtomsForces(const dealii::MatrixFree< 3, double > &matrixFreeData, const dispersionCorrection &dispersionCorr, const unsigned int eigenDofHandlerIndex, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &hessianRhoCoreValues, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const dealii::AffineConstraints< double > &hangingPlusPBCConstraintsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >
computeAtomsForcesGaussianGenerator(bool allowGaussianOverlapOnAtoms=false)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
computeConfigurationalForceEEshelbyEElectroPhiTot(const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
computeConfigurationalForceEEshelbyTensorFPSPFnlLinFE(const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int eigenDofHandlerIndex, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &hessianRhoCoreValues, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
computeConfigurationalForceEselfLinFE(const dealii::DoFHandler< 3 > &dofHandlerElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int smearedChargeQuadratureId)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
computeConfigurationalForceEselfNoSurfaceLinFE()dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
computeConfigurationalForcePhiExtLinFE()dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
computeConfigurationalForceTotalLinFE(const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int eigenDofHandlerIndex, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &hessianRhoCoreValues, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
computeElementalNonLocalPseudoOVDataForce()dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
computeFloatingAtomsForces()dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
computeStress(const dealii::MatrixFree< 3, double > &matrixFreeData, const dispersionCorrection &dispersionCorr, const unsigned int eigenDofHandlerIndex, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &hessianRhoCoreValues, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const dealii::AffineConstraints< double > &hangingPlusPBCConstraintsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >
computeStressEEshelbyEElectroPhiTot(const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesElectro, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
computeStressEEshelbyEPSPEnlEk(const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int eigenDofHandlerIndex, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &hessianRhoCoreValues, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
computeStressEself(const dealii::DoFHandler< 3 > &dofHandlerElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int smearedChargeQuadratureId)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
configForceLinFEFinalize()dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
configForceLinFEInit(const dealii::MatrixFree< 3, double > &matrixFreeData, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
createBinObjectsForce(const dealii::DoFHandler< 3 > &dofHandler, const dealii::DoFHandler< 3 > &dofHandlerForce, const dealii::AffineConstraints< double > &hangingPlusPBCConstraints, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManager, std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > &cellsVselfBallsDofHandler, std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > &cellsVselfBallsDofHandlerForce, std::vector< std::map< dealii::CellId, unsigned int > > &cellsVselfBallsClosestAtomIdDofHandler, std::map< unsigned int, unsigned int > &AtomIdBinIdLocalDofHandler, std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< unsigned int > > > &cellFacesVselfBallSurfacesDofHandler, std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< unsigned int > > > &cellFacesVselfBallSurfacesDofHandlerForce)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_allowGaussianOverlapOnAtomsdftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_AtomIdBinIdLocalDofHandlerdftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_AtomIdBinIdLocalDofHandlerElectrodftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_atomsForceDofsdftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_atomsForceDofsElectrodftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_cellFacesVselfBallSurfacesDofHandlerdftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_cellFacesVselfBallSurfacesDofHandlerElectrodftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_cellFacesVselfBallSurfacesDofHandlerForcedftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_cellFacesVselfBallSurfacesDofHandlerForceElectrodftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_cellIdToActiveCellIteratorMapDofHandlerRhoNodalElectrodftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_cellsVselfBallsClosestAtomIdDofHandlerdftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_cellsVselfBallsClosestAtomIdDofHandlerElectrodftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_cellsVselfBallsDofHandlerdftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_cellsVselfBallsDofHandlerElectrodftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_cellsVselfBallsDofHandlerForcedftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_cellsVselfBallsDofHandlerForceElectrodftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_configForceVectorLinFEdftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_configForceVectorLinFEElectrodftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_constraintsNoneForcedftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_constraintsNoneForceElectrodftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_dftParamsdftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_dofHandlerForcedftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_dofHandlerForceElectrodftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_forceAtomsFloatingdftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_forceDofHandlerIndexdftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_forceDofHandlerIndexElectrodftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_gaussianWeightsVecAtomsdftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_globalAtomsForcesdftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_locally_owned_dofsForcedftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_locally_owned_dofsForceElectrodftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_locally_relevant_dofsForcedftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_locally_relevant_dofsForceElectrodftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_mpiCommParentdftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_stressdftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
d_stressKPointsdftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
dftClass< FEOrder, FEOrderElectro, memorySpace >dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >friend
dftPtrdftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
distributeForceContributionFnlGammaAtoms(const std::map< unsigned int, std::vector< double > > &forceContributionFnlGammaAtoms)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
distributeForceContributionFPSPLocalGammaAtoms(const std::map< unsigned int, std::vector< double > > &forceContributionFPSPLocalGammaAtoms, const std::map< std::pair< unsigned int, unsigned int >, unsigned int > &atomsForceDofs, const dealii::AffineConstraints< double > &constraintsNoneForce, distributedCPUVec< double > &configForceVectorLinFE)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
FEForcedftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
FnlGammaAtomsElementalContribution(std::map< unsigned int, std::vector< double > > &forceContributionFnlGammaAtoms, const dealii::MatrixFree< 3, double > &matrixFreeData, dealii::FEEvaluation< 3, 1, C_num1DQuadNLPSP< FEOrder >() *C_numCopies1DQuadNLPSP(), 3 > &forceEvalNLP, const unsigned int cell, const std::map< dealii::CellId, unsigned int > &cellIdToCellNumberMap, const std::vector< dataTypes::number > &zetaDeltaVQuadsFlattened, const std::vector< dataTypes::number > &projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
FnlGammaxElementalContribution(dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &FVectQuads, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int numQuadPoints, const unsigned int cell, const std::map< dealii::CellId, unsigned int > &cellIdToCellNumberMap, const std::vector< dataTypes::number > &zetaDeltaVQuadsFlattened, const std::vector< dataTypes::number > &projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
FNonlinearCoreCorrectionGammaAtomsElementalContribution(std::map< unsigned int, std::vector< double > > &forceContributionFNonlinearCoreCorrectionGammaAtoms, dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &vxcQuads, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
FNonlinearCoreCorrectionGammaAtomsElementalContribution(std::map< unsigned int, std::vector< double > > &forceContributionFNonlinearCoreCorrectionGammaAtoms, dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derExcGradRho, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
FNonlinearCoreCorrectionGammaAtomsElementalContributionSpinPolarized(std::map< unsigned int, std::vector< double > > &forceContributionFNonlinearCoreCorrectionGammaAtoms, dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &vxcQuadsSpin0, const dealii::AlignedVector< dealii::VectorizedArray< double > > &vxcQuadsSpin1, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derExcGradRhoSpin0, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derExcGradRhoSpin1, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const bool isXCGGA=false)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
forceClass(dftClass< FEOrder, FEOrderElectro, memorySpace > *_dftPtr, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const dftParameters &dftParams)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >
FPhiTotSmearedChargesGammaAtomsElementalContribution(std::map< unsigned int, std::vector< double > > &forceContributionSmearedChargesGammaAtoms, dealii::FEEvaluation< 3, -1, 1, 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradPhiTotQuads, const std::vector< unsigned int > &nonTrivialAtomIdsMacroCell, const std::map< dealii::CellId, std::vector< int > > &bQuadAtomIdsAllAtoms, const dealii::AlignedVector< dealii::VectorizedArray< double > > &smearedbQuads)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
FPSPLocalGammaAtomsElementalContribution(std::map< unsigned int, std::vector< double > > &forceContributionFPSPLocalGammaAtoms, dealii::FEValues< 3 > &feValues, dealii::FEFaceValues< 3 > &feFaceValues, dealii::FEEvaluation< 3, 1, C_num1DQuadLPSP< FEOrder >() *C_numCopies1DQuadLPSP(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int phiTotDofHandlerIndexElectro, const unsigned int cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &rhoQuads, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradRhoQuads, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtoms, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManager, const std::vector< std::map< dealii::CellId, unsigned int > > &cellsVselfBallsClosestAtomIdDofHandler)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
FVselfSmearedChargesGammaAtomsElementalContribution(std::map< unsigned int, std::vector< double > > &forceContributionSmearedChargesGammaAtoms, dealii::FEEvaluation< 3, -1, 1, 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradVselfBinQuads, const std::vector< unsigned int > &nonTrivialAtomIdsMacroCell, const std::map< dealii::CellId, std::vector< int > > &bQuadAtomIdsAllAtoms, const dealii::AlignedVector< dealii::VectorizedArray< double > > &smearedbQuads)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
getAtomsForces()dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >
getStress()dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >
initMoved(std::vector< const dealii::DoFHandler< 3 > * > &dofHandlerVectorMatrixFree, std::vector< const dealii::AffineConstraints< double > * > &constraintsVectorMatrixFree, const bool isElectrostaticsMesh)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >
initPseudoData()dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >
initUnmoved(const dealii::Triangulation< 3, 3 > &triangulation, const dealii::Triangulation< 3, 3 > &serialTriangulation, const std::vector< std::vector< double > > &domainBoundingVectors, const bool isElectrostaticsMesh)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >
locateAtomCoreNodesForce(const dealii::DoFHandler< 3 > &dofHandlerForce, const dealii::IndexSet &locally_owned_dofsForce, std::map< std::pair< unsigned int, unsigned int >, unsigned int > &atomsForceDofs)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
mpi_communicatordftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
n_mpi_processesdftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
pcoutdftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
printAtomsForces()dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >
printStress()dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >
stressEnlElementalContribution(dealii::Tensor< 2, 3, double > &stressContribution, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int numQuadPoints, const std::vector< double > &jxwQuadsSubCells, const unsigned int cell, const std::map< dealii::CellId, unsigned int > &cellIdToCellNumberMap, const std::vector< dataTypes::number > &zetalmDeltaVlProductDistImageAtoms, const std::vector< dataTypes::number > &projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened, const bool isSpinPolarized)dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
this_mpi_processdftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >private
+ + + + diff --git a/classdftfe_1_1force_class.html b/classdftfe_1_1force_class.html new file mode 100644 index 000000000..fc63df06a --- /dev/null +++ b/classdftfe_1_1force_class.html @@ -0,0 +1,3704 @@ + + + + + + + +DFT-FE: dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace > Class Template Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace > Class Template Reference
+
+
+ +

computes configurational forces in KSDFT + More...

+ +

#include <force.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 forceClass (dftClass< FEOrder, FEOrderElectro, memorySpace > *_dftPtr, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const dftParameters &dftParams)
 Constructor.
 
void initUnmoved (const dealii::Triangulation< 3, 3 > &triangulation, const dealii::Triangulation< 3, 3 > &serialTriangulation, const std::vector< std::vector< double > > &domainBoundingVectors, const bool isElectrostaticsMesh)
 initializes data structures inside forceClass assuming unmoved triangulation.
 
void initMoved (std::vector< const dealii::DoFHandler< 3 > * > &dofHandlerVectorMatrixFree, std::vector< const dealii::AffineConstraints< double > * > &constraintsVectorMatrixFree, const bool isElectrostaticsMesh)
 initializes data structures inside forceClass which depend on the moved mesh.
 
void initPseudoData ()
 initializes and precomputes pseudopotential related data structuers required for configurational force and stress computation.
 
void computeAtomsForces (const dealii::MatrixFree< 3, double > &matrixFreeData, const dispersionCorrection &dispersionCorr, const unsigned int eigenDofHandlerIndex, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &hessianRhoCoreValues, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const dealii::AffineConstraints< double > &hangingPlusPBCConstraintsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)
 computes the configurational force on all atoms corresponding to a Gaussian generator, which represents perturbation of the underlying space.
 
std::vector< doublegetAtomsForces ()
 returns a copy of the configurational force on all global atoms.
 
void printAtomsForces ()
 prints the currently stored configurational forces on atoms and the Gaussian generator constant used to compute them.
 
void computeStress (const dealii::MatrixFree< 3, double > &matrixFreeData, const dispersionCorrection &dispersionCorr, const unsigned int eigenDofHandlerIndex, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &hessianRhoCoreValues, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const dealii::AffineConstraints< double > &hangingPlusPBCConstraintsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)
 Update force generator Gaussian constant.
 
void printStress ()
 prints the currently stored configurational stress tensor.
 
dealii::Tensor< 2, 3, doublegetStress ()
 returns a copy of the current stress tensor value.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

void locateAtomCoreNodesForce (const dealii::DoFHandler< 3 > &dofHandlerForce, const dealii::IndexSet &locally_owned_dofsForce, std::map< std::pair< unsigned int, unsigned int >, unsigned int > &atomsForceDofs)
 get the value of Gaussian generator parameter (d_gaussianConstant). Gaussian generator: Gamma(r)= exp(-d_gaussianConstant*r^2).
 
void createBinObjectsForce (const dealii::DoFHandler< 3 > &dofHandler, const dealii::DoFHandler< 3 > &dofHandlerForce, const dealii::AffineConstraints< double > &hangingPlusPBCConstraints, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManager, std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > &cellsVselfBallsDofHandler, std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > &cellsVselfBallsDofHandlerForce, std::vector< std::map< dealii::CellId, unsigned int > > &cellsVselfBallsClosestAtomIdDofHandler, std::map< unsigned int, unsigned int > &AtomIdBinIdLocalDofHandler, std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< unsigned int > > > &cellFacesVselfBallSurfacesDofHandler, std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< unsigned int > > > &cellFacesVselfBallSurfacesDofHandlerForce)
 
void configForceLinFEInit (const dealii::MatrixFree< 3, double > &matrixFreeData, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro)
 
void configForceLinFEFinalize ()
 
void computeConfigurationalForceEEshelbyTensorFPSPFnlLinFE (const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int eigenDofHandlerIndex, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &hessianRhoCoreValues, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)
 
void computeConfigurationalForceEEshelbyEElectroPhiTot (const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)
 
void computeConfigurationalForcePhiExtLinFE ()
 
void computeConfigurationalForceEselfLinFE (const dealii::DoFHandler< 3 > &dofHandlerElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int smearedChargeQuadratureId)
 
void computeConfigurationalForceEselfNoSurfaceLinFE ()
 
void computeConfigurationalForceTotalLinFE (const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int eigenDofHandlerIndex, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &hessianRhoCoreValues, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)
 
void FPSPLocalGammaAtomsElementalContribution (std::map< unsigned int, std::vector< double > > &forceContributionFPSPLocalGammaAtoms, dealii::FEValues< 3 > &feValues, dealii::FEFaceValues< 3 > &feFaceValues, dealii::FEEvaluation< 3, 1, C_num1DQuadLPSP< FEOrder >() *C_numCopies1DQuadLPSP(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int phiTotDofHandlerIndexElectro, const unsigned int cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &rhoQuads, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradRhoQuads, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtoms, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManager, const std::vector< std::map< dealii::CellId, unsigned int > > &cellsVselfBallsClosestAtomIdDofHandler)
 
void FPhiTotSmearedChargesGammaAtomsElementalContribution (std::map< unsigned int, std::vector< double > > &forceContributionSmearedChargesGammaAtoms, dealii::FEEvaluation< 3, -1, 1, 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradPhiTotQuads, const std::vector< unsigned int > &nonTrivialAtomIdsMacroCell, const std::map< dealii::CellId, std::vector< int > > &bQuadAtomIdsAllAtoms, const dealii::AlignedVector< dealii::VectorizedArray< double > > &smearedbQuads)
 
void FVselfSmearedChargesGammaAtomsElementalContribution (std::map< unsigned int, std::vector< double > > &forceContributionSmearedChargesGammaAtoms, dealii::FEEvaluation< 3, -1, 1, 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradVselfBinQuads, const std::vector< unsigned int > &nonTrivialAtomIdsMacroCell, const std::map< dealii::CellId, std::vector< int > > &bQuadAtomIdsAllAtoms, const dealii::AlignedVector< dealii::VectorizedArray< double > > &smearedbQuads)
 
void FNonlinearCoreCorrectionGammaAtomsElementalContribution (std::map< unsigned int, std::vector< double > > &forceContributionFNonlinearCoreCorrectionGammaAtoms, dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &vxcQuads, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms)
 
void FNonlinearCoreCorrectionGammaAtomsElementalContribution (std::map< unsigned int, std::vector< double > > &forceContributionFNonlinearCoreCorrectionGammaAtoms, dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derExcGradRho, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms)
 
void FNonlinearCoreCorrectionGammaAtomsElementalContributionSpinPolarized (std::map< unsigned int, std::vector< double > > &forceContributionFNonlinearCoreCorrectionGammaAtoms, dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &vxcQuadsSpin0, const dealii::AlignedVector< dealii::VectorizedArray< double > > &vxcQuadsSpin1, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derExcGradRhoSpin0, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derExcGradRhoSpin1, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const bool isXCGGA=false)
 
void distributeForceContributionFPSPLocalGammaAtoms (const std::map< unsigned int, std::vector< double > > &forceContributionFPSPLocalGammaAtoms, const std::map< std::pair< unsigned int, unsigned int >, unsigned int > &atomsForceDofs, const dealii::AffineConstraints< double > &constraintsNoneForce, distributedCPUVec< double > &configForceVectorLinFE)
 
void accumulateForceContributionGammaAtomsFloating (const std::map< unsigned int, std::vector< double > > &forceContributionLocalGammaAtoms, std::vector< double > &accumForcesVector)
 
void FnlGammaAtomsElementalContribution (std::map< unsigned int, std::vector< double > > &forceContributionFnlGammaAtoms, const dealii::MatrixFree< 3, double > &matrixFreeData, dealii::FEEvaluation< 3, 1, C_num1DQuadNLPSP< FEOrder >() *C_numCopies1DQuadNLPSP(), 3 > &forceEvalNLP, const unsigned int cell, const std::map< dealii::CellId, unsigned int > &cellIdToCellNumberMap, const std::vector< dataTypes::number > &zetaDeltaVQuadsFlattened, const std::vector< dataTypes::number > &projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened)
 
void FnlGammaxElementalContribution (dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &FVectQuads, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int numQuadPoints, const unsigned int cell, const std::map< dealii::CellId, unsigned int > &cellIdToCellNumberMap, const std::vector< dataTypes::number > &zetaDeltaVQuadsFlattened, const std::vector< dataTypes::number > &projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened)
 
void distributeForceContributionFnlGammaAtoms (const std::map< unsigned int, std::vector< double > > &forceContributionFnlGammaAtoms)
 
void stressEnlElementalContribution (dealii::Tensor< 2, 3, double > &stressContribution, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int numQuadPoints, const std::vector< double > &jxwQuadsSubCells, const unsigned int cell, const std::map< dealii::CellId, unsigned int > &cellIdToCellNumberMap, const std::vector< dataTypes::number > &zetalmDeltaVlProductDistImageAtoms, const std::vector< dataTypes::number > &projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened, const bool isSpinPolarized)
 
void computeAtomsForcesGaussianGenerator (bool allowGaussianOverlapOnAtoms=false)
 
void computeFloatingAtomsForces ()
 
void computeStressEself (const dealii::DoFHandler< 3 > &dofHandlerElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int smearedChargeQuadratureId)
 
void computeStressEEshelbyEPSPEnlEk (const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int eigenDofHandlerIndex, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &hessianRhoCoreValues, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)
 
void computeStressEEshelbyEElectroPhiTot (const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesElectro, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)
 
void addEPSPStressContribution (dealii::FEValues< 3 > &feValues, dealii::FEFaceValues< 3 > &feFaceValues, dealii::FEEvaluation< 3, 1, C_num1DQuadLPSP< FEOrder >() *C_numCopies1DQuadLPSP(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int phiTotDofHandlerIndexElectro, const unsigned int cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &rhoQuads, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradRhoQuads, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtoms, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManager, const std::vector< std::map< dealii::CellId, unsigned int > > &cellsVselfBallsClosestAtomIdDofHandler)
 
void addENonlinearCoreCorrectionStressContribution (dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &vxcQuads, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derExcGradRho, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms)
 
void addENonlinearCoreCorrectionStressContributionSpinPolarized (dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &vxcQuadsSpin0, const dealii::AlignedVector< dealii::VectorizedArray< double > > &vxcQuadsSpin1, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derExcGradRhoSpin0, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derExcGradRhoSpin1, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const bool isXCGGA=false)
 
void addEPhiTotSmearedStressContribution (dealii::FEEvaluation< 3, -1, 1, 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradPhiTotQuads, const std::vector< unsigned int > &nonTrivialAtomImageIdsMacroCell, const std::map< dealii::CellId, std::vector< int > > &bQuadAtomIdsAllAtomsImages, const dealii::AlignedVector< dealii::VectorizedArray< double > > &smearedbQuads)
 
void addEVselfSmearedStressContribution (dealii::FEEvaluation< 3, -1, 1, 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradVselfQuads, const std::vector< unsigned int > &nonTrivialAtomImageIdsMacroCell, const std::map< dealii::CellId, std::vector< int > > &bQuadAtomIdsAllAtomsImages, const dealii::AlignedVector< dealii::VectorizedArray< double > > &smearedbQuads)
 
void computeElementalNonLocalPseudoOVDataForce ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

distributedCPUVec< doubled_configForceVectorLinFE
 
distributedCPUVec< doubled_configForceVectorLinFEElectro
 
std::vector< doubled_forceAtomsFloating
 
std::vector< doubled_globalAtomsForces
 Storage for configurational force on all global atoms.
 
dealii::Tensor< 2, 3, doubled_stress
 Storage for configurational stress tensor.
 
dealii::Tensor< 2, 3, doubled_stressKPoints
 
const bool d_allowGaussianOverlapOnAtoms = false
 
dftClass< FEOrder, FEOrderElectro, memorySpace > * dftPtr
 pointer to dft class
 
dealii::FESystem< 3 > FEForce
 
dealii::DoFHandler< 3 > d_dofHandlerForce
 
dealii::DoFHandler< 3 > d_dofHandlerForceElectro
 
unsigned int d_forceDofHandlerIndex
 
unsigned int d_forceDofHandlerIndexElectro
 
dealii::IndexSet d_locally_owned_dofsForce
 
dealii::IndexSet d_locally_owned_dofsForceElectro
 
dealii::IndexSet d_locally_relevant_dofsForce
 
dealii::IndexSet d_locally_relevant_dofsForceElectro
 
dealii::AffineConstraints< doubled_constraintsNoneForce
 
dealii::AffineConstraints< doubled_constraintsNoneForceElectro
 
std::map< std::pair< unsigned int, unsigned int >, unsigned intd_atomsForceDofs
 
std::map< std::pair< unsigned int, unsigned int >, unsigned intd_atomsForceDofsElectro
 
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_cellsVselfBallsDofHandler
 
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_cellsVselfBallsDofHandlerForce
 
std::vector< std::map< dealii::CellId, unsigned int > > d_cellsVselfBallsClosestAtomIdDofHandler
 
std::map< unsigned int, unsigned intd_AtomIdBinIdLocalDofHandler
 
std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< unsigned int > > > d_cellFacesVselfBallSurfacesDofHandler
 
std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< unsigned int > > > d_cellFacesVselfBallSurfacesDofHandlerForce
 
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_cellsVselfBallsDofHandlerElectro
 
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_cellsVselfBallsDofHandlerForceElectro
 
std::vector< std::map< dealii::CellId, unsigned int > > d_cellsVselfBallsClosestAtomIdDofHandlerElectro
 
std::map< unsigned int, unsigned intd_AtomIdBinIdLocalDofHandlerElectro
 
std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< unsigned int > > > d_cellFacesVselfBallSurfacesDofHandlerElectro
 
std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< unsigned int > > > d_cellFacesVselfBallSurfacesDofHandlerForceElectro
 
std::map< dealii::CellId, dealii::DoFHandler< 3 >::active_cell_iterator > d_cellIdToActiveCellIteratorMapDofHandlerRhoNodalElectro
 
std::vector< distributedCPUVec< double > > d_gaussianWeightsVecAtoms
 
const MPI_Comm d_mpiCommParent
 domain decomposition mpi_communicator
 
const MPI_Comm mpi_communicator
 domain decomposition mpi_communicator
 
const dftParametersd_dftParams
 
const unsigned int n_mpi_processes
 number of mpi processes in the current pool
 
const unsigned int this_mpi_process
 current mpi process id in the current pool
 
dealii::ConditionalOStream pcout
 
+ + + +

+Friends

class dftClass< FEOrder, FEOrderElectro, memorySpace >
 
+

Detailed Description

+
template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+class dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >

computes configurational forces in KSDFT

+

This class computes and stores the configurational forces corresponding to geometry optimization. It uses the formulation in the paper by Motamarri et.al. (https://link.aps.org/doi/10.1103/PhysRevB.97.165132) which provides an unified approach to atomic forces corresponding to internal atomic relaxation and cell stress corresponding to cell relaxation.

+
Author
Sambit Das
+

Constructor & Destructor Documentation

+ +

◆ forceClass()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + +
dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::forceClass (dftClass< FEOrder, FEOrderElectro, memorySpace > * _dftPtr,
const MPI_Comm & mpi_comm_parent,
const MPI_Comm & mpi_comm_domain,
const dftParameters & dftParams )
+
+ +

Constructor.

+
Parameters
+ + + + +
_dftPtrpointer to dftClass
mpi_comm_parentparent mpi_communicator
mpi_comm_domaindomain decomposition mpi_communicator
+
+
+ +
+
+

Member Function Documentation

+ +

◆ accumulateForceContributionGammaAtomsFloating()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::accumulateForceContributionGammaAtomsFloating (const std::map< unsigned int, std::vector< double > > & forceContributionLocalGammaAtoms,
std::vector< double > & accumForcesVector )
+
+private
+
+ +
+
+ +

◆ addENonlinearCoreCorrectionStressContribution()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::addENonlinearCoreCorrectionStressContribution (dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > & forceEval,
const dealii::MatrixFree< 3, double > & matrixFreeData,
const unsigned int cell,
const dealii::AlignedVector< dealii::VectorizedArray< double > > & vxcQuads,
const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > & derExcGradRho,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & gradRhoCoreAtoms,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & hessianRhoCoreAtoms )
+
+private
+
+ +
+
+ +

◆ addENonlinearCoreCorrectionStressContributionSpinPolarized()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::addENonlinearCoreCorrectionStressContributionSpinPolarized (dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > & forceEval,
const dealii::MatrixFree< 3, double > & matrixFreeData,
const unsigned int cell,
const dealii::AlignedVector< dealii::VectorizedArray< double > > & vxcQuadsSpin0,
const dealii::AlignedVector< dealii::VectorizedArray< double > > & vxcQuadsSpin1,
const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > & derExcGradRhoSpin0,
const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > & derExcGradRhoSpin1,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & gradRhoCoreAtoms,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & hessianRhoCoreAtoms,
const bool isXCGGA = false )
+
+private
+
+ +
+
+ +

◆ addEPhiTotSmearedStressContribution()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::addEPhiTotSmearedStressContribution (dealii::FEEvaluation< 3, -1, 1, 3 > & forceEval,
const dealii::MatrixFree< 3, double > & matrixFreeData,
const unsigned int cell,
const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > & gradPhiTotQuads,
const std::vector< unsigned int > & nonTrivialAtomImageIdsMacroCell,
const std::map< dealii::CellId, std::vector< int > > & bQuadAtomIdsAllAtomsImages,
const dealii::AlignedVector< dealii::VectorizedArray< double > > & smearedbQuads )
+
+private
+
+ +
+
+ +

◆ addEPSPStressContribution()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::addEPSPStressContribution (dealii::FEValues< 3 > & feValues,
dealii::FEFaceValues< 3 > & feFaceValues,
dealii::FEEvaluation< 3, 1, C_num1DQuadLPSP< FEOrder >() *C_numCopies1DQuadLPSP(), 3 > & forceEval,
const dealii::MatrixFree< 3, double > & matrixFreeData,
const unsigned int phiTotDofHandlerIndexElectro,
const unsigned int cell,
const dealii::AlignedVector< dealii::VectorizedArray< double > > & rhoQuads,
const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > & gradRhoQuads,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & pseudoVLocAtoms,
const vselfBinsManager< FEOrder, FEOrderElectro > & vselfBinsManager,
const std::vector< std::map< dealii::CellId, unsigned int > > & cellsVselfBallsClosestAtomIdDofHandler )
+
+private
+
+ +
+
+ +

◆ addEVselfSmearedStressContribution()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::addEVselfSmearedStressContribution (dealii::FEEvaluation< 3, -1, 1, 3 > & forceEval,
const dealii::MatrixFree< 3, double > & matrixFreeData,
const unsigned int cell,
const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > & gradVselfQuads,
const std::vector< unsigned int > & nonTrivialAtomImageIdsMacroCell,
const std::map< dealii::CellId, std::vector< int > > & bQuadAtomIdsAllAtomsImages,
const dealii::AlignedVector< dealii::VectorizedArray< double > > & smearedbQuads )
+
+private
+
+ +
+
+ +

◆ computeAtomsForces()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::computeAtomsForces (const dealii::MatrixFree< 3, double > & matrixFreeData,
const dispersionCorrection & dispersionCorr,
const unsigned int eigenDofHandlerIndex,
const unsigned int smearedChargeQuadratureId,
const unsigned int lpspQuadratureIdElectro,
const dealii::MatrixFree< 3, double > & matrixFreeDataElectro,
const unsigned int phiTotDofHandlerIndexElectro,
const distributedCPUVec< double > & phiTotRhoOutElectro,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & rhoOutValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & gradRhoOutValues,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & rhoTotalOutValuesLpsp,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & gradRhoTotalOutValuesLpsp,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & hessianRhoCoreValues,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & gradRhoCoreAtoms,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & hessianRhoCoreAtoms,
const std::map< dealii::CellId, std::vector< double > > & pseudoVLocElectro,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & pseudoVLocAtomsElectro,
const dealii::AffineConstraints< double > & hangingPlusPBCConstraintsElectro,
const vselfBinsManager< FEOrder, FEOrderElectro > & vselfBinsManagerElectro )
+
+ +

computes the configurational force on all atoms corresponding to a Gaussian generator, which represents perturbation of the underlying space.

+

The Gaussian generator is taken to be exp(-d_gaussianConstant*r^2), r being the distance from the atom. Currently d_gaussianConstant is hardcoded to be 4.0. To get the computed atomic forces use getAtomsForces

+
Returns
void.
+ +
+
+ +

◆ computeAtomsForcesGaussianGenerator()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::computeAtomsForcesGaussianGenerator (bool allowGaussianOverlapOnAtoms = false)
+
+private
+
+ +
+
+ +

◆ computeConfigurationalForceEEshelbyEElectroPhiTot()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::computeConfigurationalForceEEshelbyEElectroPhiTot (const dealii::MatrixFree< 3, double > & matrixFreeDataElectro,
const unsigned int phiTotDofHandlerIndexElectro,
const unsigned int smearedChargeQuadratureId,
const unsigned int lpspQuadratureIdElectro,
const distributedCPUVec< double > & phiTotRhoOutElectro,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & rhoTotalOutValues,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & rhoTotalOutValuesLpsp,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & gradRhoTotalOutValues,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & gradRhoTotalOutValuesLpsp,
const std::map< dealii::CellId, std::vector< double > > & pseudoVLocElectro,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & pseudoVLocAtomsElectro,
const vselfBinsManager< FEOrder, FEOrderElectro > & vselfBinsManagerElectro )
+
+private
+
+ +
+
+ +

◆ computeConfigurationalForceEEshelbyTensorFPSPFnlLinFE()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::computeConfigurationalForceEEshelbyTensorFPSPFnlLinFE (const dealii::MatrixFree< 3, double > & matrixFreeData,
const unsigned int eigenDofHandlerIndex,
const unsigned int smearedChargeQuadratureId,
const unsigned int lpspQuadratureIdElectro,
const dealii::MatrixFree< 3, double > & matrixFreeDataElectro,
const unsigned int phiTotDofHandlerIndexElectro,
const distributedCPUVec< double > & phiTotRhoOutElectro,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & rhoOutValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & gradRhoOutValues,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & rhoTotalOutValuesLpsp,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & gradRhoTotalOutValuesLpsp,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & hessianRhoCoreValues,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & gradRhoCoreAtoms,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & hessianRhoCoreAtoms,
const std::map< dealii::CellId, std::vector< double > > & pseudoVLocElectro,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & pseudoVLocAtomsElectro,
const vselfBinsManager< FEOrder, FEOrderElectro > & vselfBinsManagerElectro )
+
+private
+
+ +
+
+ +

◆ computeConfigurationalForceEselfLinFE()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::computeConfigurationalForceEselfLinFE (const dealii::DoFHandler< 3 > & dofHandlerElectro,
const vselfBinsManager< FEOrder, FEOrderElectro > & vselfBinsManagerElectro,
const dealii::MatrixFree< 3, double > & matrixFreeDataElectro,
const unsigned int smearedChargeQuadratureId )
+
+private
+
+ +
+
+ +

◆ computeConfigurationalForceEselfNoSurfaceLinFE()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::computeConfigurationalForceEselfNoSurfaceLinFE ()
+
+private
+
+ +
+
+ +

◆ computeConfigurationalForcePhiExtLinFE()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::computeConfigurationalForcePhiExtLinFE ()
+
+private
+
+ +
+
+ +

◆ computeConfigurationalForceTotalLinFE()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::computeConfigurationalForceTotalLinFE (const dealii::MatrixFree< 3, double > & matrixFreeData,
const unsigned int eigenDofHandlerIndex,
const unsigned int smearedChargeQuadratureId,
const unsigned int lpspQuadratureIdElectro,
const dealii::MatrixFree< 3, double > & matrixFreeDataElectro,
const unsigned int phiTotDofHandlerIndexElectro,
const distributedCPUVec< double > & phiTotRhoOutElectro,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & rhoOutValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & gradRhoOutValues,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & rhoTotalOutValuesLpsp,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & gradRhoTotalOutValuesLpsp,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & hessianRhoCoreValues,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & gradRhoCoreAtoms,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & hessianRhoCoreAtoms,
const std::map< dealii::CellId, std::vector< double > > & pseudoVLocElectro,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & pseudoVLocAtomsElectro,
const vselfBinsManager< FEOrder, FEOrderElectro > & vselfBinsManagerElectro )
+
+private
+
+ +
+
+ +

◆ computeElementalNonLocalPseudoOVDataForce()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::computeElementalNonLocalPseudoOVDataForce ()
+
+private
+
+ +
+
+ +

◆ computeFloatingAtomsForces()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::computeFloatingAtomsForces ()
+
+private
+
+ +
+
+ +

◆ computeStress()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::computeStress (const dealii::MatrixFree< 3, double > & matrixFreeData,
const dispersionCorrection & dispersionCorr,
const unsigned int eigenDofHandlerIndex,
const unsigned int smearedChargeQuadratureId,
const unsigned int lpspQuadratureIdElectro,
const dealii::MatrixFree< 3, double > & matrixFreeDataElectro,
const unsigned int phiTotDofHandlerIndexElectro,
const distributedCPUVec< double > & phiTotRhoOutElectro,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & rhoOutValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & gradRhoOutValues,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & rhoTotalOutValuesLpsp,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & gradRhoTotalOutValuesLpsp,
const std::map< dealii::CellId, std::vector< double > > & pseudoVLocElectro,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & pseudoVLocAtomsElectro,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & hessianRhoCoreValues,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & gradRhoCoreAtoms,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & hessianRhoCoreAtoms,
const dealii::AffineConstraints< double > & hangingPlusPBCConstraintsElectro,
const vselfBinsManager< FEOrder, FEOrderElectro > & vselfBinsManagerElectro )
+
+ +

Update force generator Gaussian constant.

+
Returns
void.
+

computes the configurational stress on the domain corresponding to affine deformation of the periodic cell.

+

This function cannot be called for fully non-periodic calculations.

+
Returns
void.
+ +
+
+ +

◆ computeStressEEshelbyEElectroPhiTot()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::computeStressEEshelbyEElectroPhiTot (const dealii::MatrixFree< 3, double > & matrixFreeDataElectro,
const unsigned int phiTotDofHandlerIndexElectro,
const unsigned int smearedChargeQuadratureId,
const unsigned int lpspQuadratureIdElectro,
const distributedCPUVec< double > & phiTotRhoOutElectro,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & rhoTotalOutValues,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & rhoTotalOutValuesLpsp,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & gradRhoTotalOutValuesElectro,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & gradRhoTotalOutValuesElectroLpsp,
const std::map< dealii::CellId, std::vector< double > > & pseudoVLocElectro,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & pseudoVLocAtomsElectro,
const vselfBinsManager< FEOrder, FEOrderElectro > & vselfBinsManagerElectro )
+
+private
+
+ +
+
+ +

◆ computeStressEEshelbyEPSPEnlEk()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::computeStressEEshelbyEPSPEnlEk (const dealii::MatrixFree< 3, double > & matrixFreeData,
const unsigned int eigenDofHandlerIndex,
const unsigned int smearedChargeQuadratureId,
const unsigned int lpspQuadratureIdElectro,
const dealii::MatrixFree< 3, double > & matrixFreeDataElectro,
const unsigned int phiTotDofHandlerIndexElectro,
const distributedCPUVec< double > & phiTotRhoOutElectro,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & rhoOutValues,
const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & gradRhoOutValues,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & rhoTotalOutValuesLpsp,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & gradRhoTotalOutValuesLpsp,
const std::map< dealii::CellId, std::vector< double > > & pseudoVLocElectro,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & pseudoVLocAtomsElectro,
const std::map< dealii::CellId, std::vector< double > > & rhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & gradRhoCoreValues,
const std::map< dealii::CellId, std::vector< double > > & hessianRhoCoreValues,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & gradRhoCoreAtoms,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & hessianRhoCoreAtoms,
const vselfBinsManager< FEOrder, FEOrderElectro > & vselfBinsManagerElectro )
+
+private
+
+ +
+
+ +

◆ computeStressEself()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::computeStressEself (const dealii::DoFHandler< 3 > & dofHandlerElectro,
const vselfBinsManager< FEOrder, FEOrderElectro > & vselfBinsManagerElectro,
const dealii::MatrixFree< 3, double > & matrixFreeDataElectro,
const unsigned int smearedChargeQuadratureId )
+
+private
+
+ +
+
+ +

◆ configForceLinFEFinalize()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::configForceLinFEFinalize ()
+
+private
+
+ +
+
+ +

◆ configForceLinFEInit()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::configForceLinFEInit (const dealii::MatrixFree< 3, double > & matrixFreeData,
const dealii::MatrixFree< 3, double > & matrixFreeDataElectro )
+
+private
+
+ +
+
+ +

◆ createBinObjectsForce()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::createBinObjectsForce (const dealii::DoFHandler< 3 > & dofHandler,
const dealii::DoFHandler< 3 > & dofHandlerForce,
const dealii::AffineConstraints< double > & hangingPlusPBCConstraints,
const vselfBinsManager< FEOrder, FEOrderElectro > & vselfBinsManager,
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > & cellsVselfBallsDofHandler,
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > & cellsVselfBallsDofHandlerForce,
std::vector< std::map< dealii::CellId, unsigned int > > & cellsVselfBallsClosestAtomIdDofHandler,
std::map< unsigned int, unsigned int > & AtomIdBinIdLocalDofHandler,
std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< unsigned int > > > & cellFacesVselfBallSurfacesDofHandler,
std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< unsigned int > > > & cellFacesVselfBallSurfacesDofHandlerForce )
+
+private
+
+ +
+
+ +

◆ distributeForceContributionFnlGammaAtoms()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::distributeForceContributionFnlGammaAtoms (const std::map< unsigned int, std::vector< double > > & forceContributionFnlGammaAtoms)
+
+private
+
+ +
+
+ +

◆ distributeForceContributionFPSPLocalGammaAtoms()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::distributeForceContributionFPSPLocalGammaAtoms (const std::map< unsigned int, std::vector< double > > & forceContributionFPSPLocalGammaAtoms,
const std::map< std::pair< unsigned int, unsigned int >, unsigned int > & atomsForceDofs,
const dealii::AffineConstraints< double > & constraintsNoneForce,
distributedCPUVec< double > & configForceVectorLinFE )
+
+private
+
+ +
+
+ +

◆ FnlGammaAtomsElementalContribution()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::FnlGammaAtomsElementalContribution (std::map< unsigned int, std::vector< double > > & forceContributionFnlGammaAtoms,
const dealii::MatrixFree< 3, double > & matrixFreeData,
dealii::FEEvaluation< 3, 1, C_num1DQuadNLPSP< FEOrder >() *C_numCopies1DQuadNLPSP(), 3 > & forceEvalNLP,
const unsigned int cell,
const std::map< dealii::CellId, unsigned int > & cellIdToCellNumberMap,
const std::vector< dataTypes::number > & zetaDeltaVQuadsFlattened,
const std::vector< dataTypes::number > & projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened )
+
+private
+
+ +
+
+ +

◆ FnlGammaxElementalContribution()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::FnlGammaxElementalContribution (dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > & FVectQuads,
const dealii::MatrixFree< 3, double > & matrixFreeData,
const unsigned int numQuadPoints,
const unsigned int cell,
const std::map< dealii::CellId, unsigned int > & cellIdToCellNumberMap,
const std::vector< dataTypes::number > & zetaDeltaVQuadsFlattened,
const std::vector< dataTypes::number > & projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened )
+
+private
+
+ +
+
+ +

◆ FNonlinearCoreCorrectionGammaAtomsElementalContribution() [1/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::FNonlinearCoreCorrectionGammaAtomsElementalContribution (std::map< unsigned int, std::vector< double > > & forceContributionFNonlinearCoreCorrectionGammaAtoms,
dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > & forceEval,
const dealii::MatrixFree< 3, double > & matrixFreeData,
const unsigned int cell,
const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > & derExcGradRho,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & hessianRhoCoreAtoms )
+
+private
+
+ +
+
+ +

◆ FNonlinearCoreCorrectionGammaAtomsElementalContribution() [2/2]

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::FNonlinearCoreCorrectionGammaAtomsElementalContribution (std::map< unsigned int, std::vector< double > > & forceContributionFNonlinearCoreCorrectionGammaAtoms,
dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > & forceEval,
const dealii::MatrixFree< 3, double > & matrixFreeData,
const unsigned int cell,
const dealii::AlignedVector< dealii::VectorizedArray< double > > & vxcQuads,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & gradRhoCoreAtoms )
+
+private
+
+ +
+
+ +

◆ FNonlinearCoreCorrectionGammaAtomsElementalContributionSpinPolarized()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::FNonlinearCoreCorrectionGammaAtomsElementalContributionSpinPolarized (std::map< unsigned int, std::vector< double > > & forceContributionFNonlinearCoreCorrectionGammaAtoms,
dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > & forceEval,
const dealii::MatrixFree< 3, double > & matrixFreeData,
const unsigned int cell,
const dealii::AlignedVector< dealii::VectorizedArray< double > > & vxcQuadsSpin0,
const dealii::AlignedVector< dealii::VectorizedArray< double > > & vxcQuadsSpin1,
const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > & derExcGradRhoSpin0,
const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > & derExcGradRhoSpin1,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & gradRhoCoreAtoms,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & hessianRhoCoreAtoms,
const bool isXCGGA = false )
+
+private
+
+ +
+
+ +

◆ FPhiTotSmearedChargesGammaAtomsElementalContribution()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::FPhiTotSmearedChargesGammaAtomsElementalContribution (std::map< unsigned int, std::vector< double > > & forceContributionSmearedChargesGammaAtoms,
dealii::FEEvaluation< 3, -1, 1, 3 > & forceEval,
const dealii::MatrixFree< 3, double > & matrixFreeData,
const unsigned int cell,
const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > & gradPhiTotQuads,
const std::vector< unsigned int > & nonTrivialAtomIdsMacroCell,
const std::map< dealii::CellId, std::vector< int > > & bQuadAtomIdsAllAtoms,
const dealii::AlignedVector< dealii::VectorizedArray< double > > & smearedbQuads )
+
+private
+
+ +
+
+ +

◆ FPSPLocalGammaAtomsElementalContribution()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::FPSPLocalGammaAtomsElementalContribution (std::map< unsigned int, std::vector< double > > & forceContributionFPSPLocalGammaAtoms,
dealii::FEValues< 3 > & feValues,
dealii::FEFaceValues< 3 > & feFaceValues,
dealii::FEEvaluation< 3, 1, C_num1DQuadLPSP< FEOrder >() *C_numCopies1DQuadLPSP(), 3 > & forceEval,
const dealii::MatrixFree< 3, double > & matrixFreeData,
const unsigned int phiTotDofHandlerIndexElectro,
const unsigned int cell,
const dealii::AlignedVector< dealii::VectorizedArray< double > > & rhoQuads,
const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > & gradRhoQuads,
const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > & pseudoVLocAtoms,
const vselfBinsManager< FEOrder, FEOrderElectro > & vselfBinsManager,
const std::vector< std::map< dealii::CellId, unsigned int > > & cellsVselfBallsClosestAtomIdDofHandler )
+
+private
+
+ +
+
+ +

◆ FVselfSmearedChargesGammaAtomsElementalContribution()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::FVselfSmearedChargesGammaAtomsElementalContribution (std::map< unsigned int, std::vector< double > > & forceContributionSmearedChargesGammaAtoms,
dealii::FEEvaluation< 3, -1, 1, 3 > & forceEval,
const dealii::MatrixFree< 3, double > & matrixFreeData,
const unsigned int cell,
const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > & gradVselfBinQuads,
const std::vector< unsigned int > & nonTrivialAtomIdsMacroCell,
const std::map< dealii::CellId, std::vector< int > > & bQuadAtomIdsAllAtoms,
const dealii::AlignedVector< dealii::VectorizedArray< double > > & smearedbQuads )
+
+private
+
+ +
+
+ +

◆ getAtomsForces()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
std::vector< double > dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::getAtomsForces ()
+
+ +

returns a copy of the configurational force on all global atoms.

+

computeAtomsForces must be called prior to this function call.

+
Returns
std::vector<double> flattened array of the configurational force on all atoms, the three force components on each atom being the leading dimension. Units- Hartree/Bohr
+ +
+
+ +

◆ getStress()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
dealii::Tensor< 2, 3, double > dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::getStress ()
+
+ +

returns a copy of the current stress tensor value.

+

computeStress must be call prior to this function call.

+
Returns
dealii::Tensor<2,3,double> second order stress Tensor in Hartree/Bohr^3
+ +
+
+ +

◆ initMoved()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::initMoved (std::vector< const dealii::DoFHandler< 3 > * > & dofHandlerVectorMatrixFree,
std::vector< const dealii::AffineConstraints< double > * > & constraintsVectorMatrixFree,
const bool isElectrostaticsMesh )
+
+ +

initializes data structures inside forceClass which depend on the moved mesh.

+

initMoved is the second step (first step call initUnmoved) of the initialization/reinitialization of force class when starting from a new mesh, and the first step when recomputing forces on a perturbed mesh. initMoved assumes that the triangulation whose reference was passed to the forceClass object in the initUnmoved call now has its nodes moved such that all atomic positions lie on nodes.

+
Returns
void.
+ +
+
+ +

◆ initPseudoData()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::initPseudoData ()
+
+ +

initializes and precomputes pseudopotential related data structuers required for configurational force and stress computation.

+

This function is only activated for pseudopotential calculations and is currently called when initializing/reinitializing the dftClass object. This function initializes and precomputes the pseudopotential datastructures for local and non-local parts. Separate internal function calls are made for KB and ONCV projectors.

+
Returns
void.
+ +
+
+ +

◆ initUnmoved()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::initUnmoved (const dealii::Triangulation< 3, 3 > & triangulation,
const dealii::Triangulation< 3, 3 > & serialTriangulation,
const std::vector< std::vector< double > > & domainBoundingVectors,
const bool isElectrostaticsMesh )
+
+ +

initializes data structures inside forceClass assuming unmoved triangulation.

+

initUnmoved is the first step of the initialization/reinitialization of force class when starting from a new unmoved triangulation. It creates the dofHandler with linear finite elements and three components corresponding to the three force components. It also creates the corresponding constraint matrices which is why an unmoved triangulation is necessary. Finally this function also initializes the gaussianMovePar data member.

+
Parameters
+ + + +
triangulationreference to unmoved triangulation where the mesh nodes have not been manually moved.
isElectrostaticsMeshboolean parameter specifying whether this triangulatio is to be used for for the electrostatics part of the configurational force.
+
+
+
Returns
void.
+ +
+
+ +

◆ locateAtomCoreNodesForce()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::locateAtomCoreNodesForce (const dealii::DoFHandler< 3 > & dofHandlerForce,
const dealii::IndexSet & locally_owned_dofsForce,
std::map< std::pair< unsigned int, unsigned int >, unsigned int > & atomsForceDofs )
+
+private
+
+ +

get the value of Gaussian generator parameter (d_gaussianConstant). Gaussian generator: Gamma(r)= exp(-d_gaussianConstant*r^2).

+

Locates and stores the global dof indices of d_dofHandlerForce whose cooridinates match with the atomic positions.

+
Returns
void.
+ +
+
+ +

◆ printAtomsForces()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::printAtomsForces ()
+
+ +

prints the currently stored configurational forces on atoms and the Gaussian generator constant used to compute them.

+
Returns
void.
+ +
+
+ +

◆ printStress()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::printStress ()
+
+ +

prints the currently stored configurational stress tensor.

+
Returns
void.
+ +
+
+ +

◆ stressEnlElementalContribution()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::stressEnlElementalContribution (dealii::Tensor< 2, 3, double > & stressContribution,
const dealii::MatrixFree< 3, double > & matrixFreeData,
const unsigned int numQuadPoints,
const std::vector< double > & jxwQuadsSubCells,
const unsigned int cell,
const std::map< dealii::CellId, unsigned int > & cellIdToCellNumberMap,
const std::vector< dataTypes::number > & zetalmDeltaVlProductDistImageAtoms,
const std::vector< dataTypes::number > & projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened,
const bool isSpinPolarized )
+
+private
+
+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ dftClass< FEOrder, FEOrderElectro, memorySpace >

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
friend class dftClass< FEOrder, FEOrderElectro, memorySpace >
+
+friend
+
+ +
+
+

Member Data Documentation

+ +

◆ d_allowGaussianOverlapOnAtoms

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const bool dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_allowGaussianOverlapOnAtoms = false
+
+private
+
+ +
+
+ +

◆ d_AtomIdBinIdLocalDofHandler

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<unsigned int, unsigned int> dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_AtomIdBinIdLocalDofHandler
+
+private
+
+

Internal data: stores the map of atom Id (only in the local processor) to the vself bin Id.

+ +
+
+ +

◆ d_AtomIdBinIdLocalDofHandlerElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<unsigned int, unsigned int> dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_AtomIdBinIdLocalDofHandlerElectro
+
+private
+
+

Internal data: stores the map of atom Id (only in the local processor) to the vself bin Id.

+ +
+
+ +

◆ d_atomsForceDofs

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<std::pair<unsigned int, unsigned int>, unsigned int> dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_atomsForceDofs
+
+private
+
+

Internal data: map < <atomId,force component>, globaldof in d_dofHandlerForce>

+ +
+
+ +

◆ d_atomsForceDofsElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<std::pair<unsigned int, unsigned int>, unsigned int> dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_atomsForceDofsElectro
+
+private
+
+

Internal data: map < <atomId,force component>, globaldof in d_dofHandlerForceElectro>

+ +
+
+ +

◆ d_cellFacesVselfBallSurfacesDofHandler

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator, std::vector<unsigned int> > > dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_cellFacesVselfBallSurfacesDofHandler
+
+private
+
+ +
+
+ +

◆ d_cellFacesVselfBallSurfacesDofHandlerElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator, std::vector<unsigned int> > > dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_cellFacesVselfBallSurfacesDofHandlerElectro
+
+private
+
+ +
+
+ +

◆ d_cellFacesVselfBallSurfacesDofHandlerForce

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator, std::vector<unsigned int> > > dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_cellFacesVselfBallSurfacesDofHandlerForce
+
+private
+
+ +
+
+ +

◆ d_cellFacesVselfBallSurfacesDofHandlerForceElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator, std::vector<unsigned int> > > dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_cellFacesVselfBallSurfacesDofHandlerForceElectro
+
+private
+
+ +
+
+ +

◆ d_cellIdToActiveCellIteratorMapDofHandlerRhoNodalElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<dealii::CellId, dealii::DoFHandler<3>::active_cell_iterator> dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_cellIdToActiveCellIteratorMapDofHandlerRhoNodalElectro
+
+private
+
+ +
+
+ +

◆ d_cellsVselfBallsClosestAtomIdDofHandler

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::map<dealii::CellId, unsigned int> > dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_cellsVselfBallsClosestAtomIdDofHandler
+
+private
+
+

Internal data: stores map of vself ball cell Id to the closest atom Id of that cell. Outer vector over vself bins.

+ +
+
+ +

◆ d_cellsVselfBallsClosestAtomIdDofHandlerElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::map<dealii::CellId, unsigned int> > dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_cellsVselfBallsClosestAtomIdDofHandlerElectro
+
+private
+
+

Internal data: stores map of vself ball cell Id to the closest atom Id of that cell. Outer vector over vself bins.

+ +
+
+ +

◆ d_cellsVselfBallsDofHandler

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator> > dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_cellsVselfBallsDofHandler
+
+private
+
+

Internal data: stores cell iterators of all cells in dftPtr->d_dofHandler which are part of the vself ball. Outer vector is over vself bins.

+ +
+
+ +

◆ d_cellsVselfBallsDofHandlerElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator> > dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_cellsVselfBallsDofHandlerElectro
+
+private
+
+

Internal data: stores cell iterators of all cells in dftPtr->d_dofHandler which are part of the vself ball. Outer vector is over vself bins.

+ +
+
+ +

◆ d_cellsVselfBallsDofHandlerForce

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator> > dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_cellsVselfBallsDofHandlerForce
+
+private
+
+

Internal data: stores cell iterators of all cells in d_dofHandlerForce which are part of the vself ball. Outer vector is over vself bins.

+ +
+
+ +

◆ d_cellsVselfBallsDofHandlerForceElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator> > dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_cellsVselfBallsDofHandlerForceElectro
+
+private
+
+

Internal data: stores cell iterators of all cells in d_dofHandlerForce which are part of the vself ball. Outer vector is over vself bins.

+ +
+
+ +

◆ d_configForceVectorLinFE

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_configForceVectorLinFE
+
+private
+
+

Parallel distributed vector field which stores the configurational force for each fem node corresponding to linear shape function generator (see equations 52-53 in (https://link.aps.org/doi/10.1103/PhysRevB.97.165132)). This vector doesn't contain contribution from terms which have sums over k points.

+ +
+
+ +

◆ d_configForceVectorLinFEElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_configForceVectorLinFEElectro
+
+private
+
+

Parallel distributed vector field which stores the configurational force for each fem node corresponding to linear shape function generator (see equations 52-53 in (https://link.aps.org/doi/10.1103/PhysRevB.97.165132)). This vector only containts contribution from the electrostatic part.

+ +
+
+ +

◆ d_constraintsNoneForce

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_constraintsNoneForce
+
+private
+
+

Constraint matrix for hanging node and periodic constaints on d_dofHandlerForce.

+ +
+
+ +

◆ d_constraintsNoneForceElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_constraintsNoneForceElectro
+
+private
+
+

Constraint matrix for hanging node and periodic constaints on d_dofHandlerForceElectro.

+ +
+
+ +

◆ d_dftParams

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const dftParameters& dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_dftParams
+
+private
+
+ +
+
+ +

◆ d_dofHandlerForce

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::DoFHandler<3> dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_dofHandlerForce
+
+private
+
+ +
+
+ +

◆ d_dofHandlerForceElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::DoFHandler<3> dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_dofHandlerForceElectro
+
+private
+
+ +
+
+ +

◆ d_forceAtomsFloating

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_forceAtomsFloating
+
+private
+
+ +
+
+ +

◆ d_forceDofHandlerIndex

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_forceDofHandlerIndex
+
+private
+
+

Index of the d_dofHandlerForce in the MatrixFree object stored in dftClass. This is required to correctly use FEEvaluation class.

+ +
+
+ +

◆ d_forceDofHandlerIndexElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_forceDofHandlerIndexElectro
+
+private
+
+

Index of the d_dofHandlerForceElectro in the MatrixFree object stored in dftClass. This is required to correctly use FEEvaluation class.

+ +
+
+ +

◆ d_gaussianWeightsVecAtoms

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<distributedCPUVec<double> > dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_gaussianWeightsVecAtoms
+
+private
+
+ +
+
+ +

◆ d_globalAtomsForces

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<double> dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_globalAtomsForces
+
+private
+
+ +

Storage for configurational force on all global atoms.

+

Gaussian generator constant. Gaussian generator: Gamma(r)= exp(-d_gaussianConstant*r^2) FIXME: Until the hanging nodes surface integral issue is fixed use a value >=4.0

+ +
+
+ +

◆ d_locally_owned_dofsForce

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_locally_owned_dofsForce
+
+private
+
+

dealii::IndexSet of locally owned dofs of in d_dofHandlerForce the current processor

+ +
+
+ +

◆ d_locally_owned_dofsForceElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_locally_owned_dofsForceElectro
+
+private
+
+

dealii::IndexSet of locally owned dofs of in d_dofHandlerForceElectro the current processor

+ +
+
+ +

◆ d_locally_relevant_dofsForce

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_locally_relevant_dofsForce
+
+private
+
+

dealii::IndexSet of locally relevant dofs of in d_dofHandlerForce the current processor

+ +
+
+ +

◆ d_locally_relevant_dofsForceElectro

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_locally_relevant_dofsForceElectro
+
+private
+
+

dealii::IndexSet of locally relevant dofs of in d_dofHandlerForceElectro the current processor

+ +
+
+ +

◆ d_mpiCommParent

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_mpiCommParent
+
+private
+
+ +

domain decomposition mpi_communicator

+ +
+
+ +

◆ d_stress

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::Tensor<2, 3, double> dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_stress
+
+private
+
+ +

Storage for configurational stress tensor.

+ +
+
+ +

◆ d_stressKPoints

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::Tensor<2, 3, double> dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::d_stressKPoints
+
+private
+
+ +
+
+ +

◆ dftPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftClass<FEOrder, FEOrderElectro, memorySpace>* dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::dftPtr
+
+private
+
+ +

pointer to dft class

+ +
+
+ +

◆ FEForce

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::FESystem<3> dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::FEForce
+
+private
+
+

Finite element object for configurational force computation. Linear finite elements with three force field components are used.

+ +
+
+ +

◆ mpi_communicator

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::mpi_communicator
+
+private
+
+ +

domain decomposition mpi_communicator

+ +
+
+ +

◆ n_mpi_processes

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const unsigned int dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::n_mpi_processes
+
+private
+
+ +

number of mpi processes in the current pool

+ +
+
+ +

◆ pcout

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::pcout
+
+private
+
+

conditional stream object to enable printing only on root processor across all pools

+ +
+
+ +

◆ this_mpi_process

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const unsigned int dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >::this_mpi_process
+
+private
+
+ +

current mpi process id in the current pool

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1geo_opt_cell-members.html b/classdftfe_1_1geo_opt_cell-members.html new file mode 100644 index 000000000..e655ec06f --- /dev/null +++ b/classdftfe_1_1geo_opt_cell-members.html @@ -0,0 +1,123 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::geoOptCell Member List
+
+
+ +

This is the complete list of members for dftfe::geoOptCell, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
d_dftPtrdftfe::geoOptCellprivate
d_domainVolumeInitialdftfe::geoOptCellprivate
d_isRestartdftfe::geoOptCellprivate
d_isScfRestartdftfe::geoOptCellprivate
d_nonLinearSolverPtrdftfe::geoOptCellprivate
d_relaxationFlagsdftfe::geoOptCellprivate
d_restartPathdftfe::geoOptCellprivate
d_solverdftfe::geoOptCellprivate
d_solverRestartdftfe::geoOptCellprivate
d_solverRestartPathdftfe::geoOptCellprivate
d_strainEpsilondftfe::geoOptCellprivate
d_totalUpdateCallsdftfe::geoOptCellprivate
geoOptCell(dftBase *dftPtr, const MPI_Comm &mpi_comm_parent, const bool restart=false)dftfe::geoOptCell
getMPICommunicator()dftfe::geoOptCellvirtual
getNumberUnknowns() constdftfe::geoOptCellvirtual
getUnknownCountFlag() constdftfe::geoOptCellvirtual
gradient(std::vector< double > &gradient)dftfe::geoOptCellvirtual
init(const std::string &restartPath)dftfe::geoOptCell
isConverged() constdftfe::geoOptCellvirtual
mpi_communicatordftfe::geoOptCellprivate
n_mpi_processesdftfe::geoOptCellprivate
nonlinearSolverProblem()dftfe::nonlinearSolverProblem
pcoutdftfe::geoOptCellprivate
precondition(std::vector< double > &s, const std::vector< double > &gradient)dftfe::geoOptCellvirtual
run()dftfe::geoOptCell
save()dftfe::geoOptCellvirtual
solution(std::vector< double > &solution)dftfe::geoOptCellvirtual
this_mpi_processdftfe::geoOptCellprivate
update(const std::vector< double > &solution, const bool computeStress=true, const bool useSingleAtomSolutionsInitialGuess=false)dftfe::geoOptCellvirtual
value(std::vector< double > &functionValue)dftfe::geoOptCellvirtual
writeMesh(std::string meshFileName)dftfe::geoOptCell
~nonlinearSolverProblem()=0dftfe::nonlinearSolverProblempure virtual
+ + + + diff --git a/classdftfe_1_1geo_opt_cell.html b/classdftfe_1_1geo_opt_cell.html new file mode 100644 index 000000000..5212609a4 --- /dev/null +++ b/classdftfe_1_1geo_opt_cell.html @@ -0,0 +1,982 @@ + + + + + + + +DFT-FE: dftfe::geoOptCell Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::geoOptCell Class Reference
+
+
+ +

problem class for cell stress relaxation solver. + More...

+ +

#include <geoOptCell.h>

+
+Inheritance diagram for dftfe::geoOptCell:
+
+
+ + +dftfe::nonlinearSolverProblem + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 geoOptCell (dftBase *dftPtr, const MPI_Comm &mpi_comm_parent, const bool restart=false)
 Constructor.
 
void init (const std::string &restartPath)
 initializes the data member d_relaxationFlags.
 
int run ()
 calls the cell stress relaxation solver.
 
void writeMesh (std::string meshFileName)
 writes the current fem mesh.
 
unsigned int getNumberUnknowns () const
 Obtain number of unknowns (depends on the stress relaxation constraint type).
 
void gradient (std::vector< double > &gradient)
 Compute function gradient (stress).
 
void update (const std::vector< double > &solution, const bool computeStress=true, const bool useSingleAtomSolutionsInitialGuess=false)
 Update the strain tensor epsilon.
 
void save ()
 create checkpoint file for current domain bounding vectors and atomic coordinates.
 
bool isConverged () const
 check for convergence.
 
const MPI_CommgetMPICommunicator ()
 get MPI communicator.
 
void value (std::vector< double > &functionValue)
 Not implemented.
 
void precondition (std::vector< double > &s, const std::vector< double > &gradient)
 Not implemented.
 
void solution (std::vector< double > &solution)
 Not implemented.
 
std::vector< unsigned intgetUnknownCountFlag () const
 Not implemented.
 
- Public Member Functions inherited from dftfe::nonlinearSolverProblem
 nonlinearSolverProblem ()
 Constructor.
 
virtual ~nonlinearSolverProblem ()=0
 Destructor.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::vector< unsigned intd_relaxationFlags
 
std::string d_restartPath
 
std::string d_solverRestartPath
 
bool d_isRestart
 
bool d_solverRestart
 
bool d_isScfRestart
 
int d_solver
 
int d_totalUpdateCalls
 total number of calls to update()
 
double d_domainVolumeInitial
 
dealii::Tensor< 2, 3, doubled_strainEpsilon
 current strain tensor applied on the domain
 
dftBased_dftPtr
 pointer to dft class
 
std::unique_ptr< nonLinearSolverd_nonLinearSolverPtr
 
const MPI_Comm mpi_communicator
 parallel communication objects
 
const unsigned int n_mpi_processes
 
const unsigned int this_mpi_process
 
dealii::ConditionalOStream pcout
 conditional stream object
 
+

Detailed Description

+

problem class for cell stress relaxation solver.

+
Author
Sambit Das
+

Constructor & Destructor Documentation

+ +

◆ geoOptCell()

+ +
+
+ + + + + + + + + + + + + + + + +
dftfe::geoOptCell::geoOptCell (dftBase * dftPtr,
const MPI_Comm & mpi_comm_parent,
const bool restart = false )
+
+ +

Constructor.

+
Parameters
+ + + +
_dftPtrpointer to dftClass
mpi_comm_parentparent mpi_communicator
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getMPICommunicator()

+ +
+
+ + + + + +
+ + + + + + + +
const MPI_Comm & dftfe::geoOptCell::getMPICommunicator ()
+
+virtual
+
+ +

get MPI communicator.

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ getNumberUnknowns()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int dftfe::geoOptCell::getNumberUnknowns () const
+
+virtual
+
+ +

Obtain number of unknowns (depends on the stress relaxation constraint type).

+
Returns
int Number of unknowns.
+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ getUnknownCountFlag()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< unsigned int > dftfe::geoOptCell::getUnknownCountFlag () const
+
+virtual
+
+ +

Not implemented.

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ gradient()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::geoOptCell::gradient (std::vector< double > & gradient)
+
+virtual
+
+ +

Compute function gradient (stress).

+
Parameters
+ + +
gradientSTL vector for gradient values.
+
+
+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ init()

+ +
+
+ + + + + + + +
void dftfe::geoOptCell::init (const std::string & restartPath)
+
+ +

initializes the data member d_relaxationFlags.

+ +
+
+ +

◆ isConverged()

+ +
+
+ + + + + +
+ + + + + + + +
bool dftfe::geoOptCell::isConverged () const
+
+virtual
+
+ +

check for convergence.

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ precondition()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
void dftfe::geoOptCell::precondition (std::vector< double > & s,
const std::vector< double > & gradient )
+
+virtual
+
+ +

Not implemented.

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ run()

+ +
+
+ + + + + + + +
int dftfe::geoOptCell::run ()
+
+ +

calls the cell stress relaxation solver.

+

The Polak–Ribière nonlinear CG solver with secant based line search is used for the stress relaxation.

+
Returns
int total geometry update calls
+ +
+
+ +

◆ save()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::geoOptCell::save ()
+
+virtual
+
+ +

create checkpoint file for current domain bounding vectors and atomic coordinates.

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ solution()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::geoOptCell::solution (std::vector< double > & solution)
+
+virtual
+
+ +

Not implemented.

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ update()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
void dftfe::geoOptCell::update (const std::vector< double > & solution,
const bool computeStress = true,
const bool useSingleAtomSolutionsInitialGuess = false )
+
+virtual
+
+ +

Update the strain tensor epsilon.

+

The new strain tensor is epsilonNew= epsilon+ delta(epsilon). Since epsilon strain is already applied to the domain. The new strain to be applied to the domain is epsilonNew*inv(epsilon)

+
Parameters
+ + +
solutiondelta(epsilon).
+
+
+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ value()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::geoOptCell::value (std::vector< double > & functionValue)
+
+virtual
+
+ +

Not implemented.

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ writeMesh()

+ +
+
+ + + + + + + +
void dftfe::geoOptCell::writeMesh (std::string meshFileName)
+
+ +

writes the current fem mesh.

+ +
+
+

Member Data Documentation

+ +

◆ d_dftPtr

+ +
+
+ + + + + +
+ + + + +
dftBase* dftfe::geoOptCell::d_dftPtr
+
+private
+
+ +

pointer to dft class

+ +
+
+ +

◆ d_domainVolumeInitial

+ +
+
+ + + + + +
+ + + + +
double dftfe::geoOptCell::d_domainVolumeInitial
+
+private
+
+ +
+
+ +

◆ d_isRestart

+ +
+
+ + + + + +
+ + + + +
bool dftfe::geoOptCell::d_isRestart
+
+private
+
+ +
+
+ +

◆ d_isScfRestart

+ +
+
+ + + + + +
+ + + + +
bool dftfe::geoOptCell::d_isScfRestart
+
+private
+
+ +
+
+ +

◆ d_nonLinearSolverPtr

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<nonLinearSolver> dftfe::geoOptCell::d_nonLinearSolverPtr
+
+private
+
+ +
+
+ +

◆ d_relaxationFlags

+ +
+
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::geoOptCell::d_relaxationFlags
+
+private
+
+

Relaxation flags which determine whether a particular stress component is to be relaxed or not.

+ +
+
+ +

◆ d_restartPath

+ +
+
+ + + + + +
+ + + + +
std::string dftfe::geoOptCell::d_restartPath
+
+private
+
+ +
+
+ +

◆ d_solver

+ +
+
+ + + + + +
+ + + + +
int dftfe::geoOptCell::d_solver
+
+private
+
+ +
+
+ +

◆ d_solverRestart

+ +
+
+ + + + + +
+ + + + +
bool dftfe::geoOptCell::d_solverRestart
+
+private
+
+ +
+
+ +

◆ d_solverRestartPath

+ +
+
+ + + + + +
+ + + + +
std::string dftfe::geoOptCell::d_solverRestartPath
+
+private
+
+ +
+
+ +

◆ d_strainEpsilon

+ +
+
+ + + + + +
+ + + + +
dealii::Tensor<2, 3, double> dftfe::geoOptCell::d_strainEpsilon
+
+private
+
+ +

current strain tensor applied on the domain

+ +
+
+ +

◆ d_totalUpdateCalls

+ +
+
+ + + + + +
+ + + + +
int dftfe::geoOptCell::d_totalUpdateCalls
+
+private
+
+ +

total number of calls to update()

+ +
+
+ +

◆ mpi_communicator

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm dftfe::geoOptCell::mpi_communicator
+
+private
+
+ +

parallel communication objects

+ +
+
+ +

◆ n_mpi_processes

+ +
+
+ + + + + +
+ + + + +
const unsigned int dftfe::geoOptCell::n_mpi_processes
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::geoOptCell::pcout
+
+private
+
+ +

conditional stream object

+ +
+
+ +

◆ this_mpi_process

+ +
+
+ + + + + +
+ + + + +
const unsigned int dftfe::geoOptCell::this_mpi_process
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1geo_opt_cell.png b/classdftfe_1_1geo_opt_cell.png new file mode 100644 index 0000000000000000000000000000000000000000..a44c026fe848be29421a5f8dbc34450585e8d225 GIT binary patch literal 698 zcmV;r0!96aP)vTJr#LVva2S`&=-}Ys|Ns9r%~qrU000SeQchC<|NsC0|NsC0Hv*f~0006- zNkl$_yGYDhXA`(y|0nnGG(zH^Tq49e=$wdG?*}v)DoxbJZ@}skALz4ZW+m(PbvdF%--s>91fWNq+@1N&0J0=4qOyu>=4|Er%L-TP>)x7y!^Bt7T{bE6*7 z_TcyCMw!KVZtQ=W+2T5%CFw>t*?#RszsY=Ra7oqmCz + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::geoOptIon Member List
+
+
+ +

This is the complete list of members for dftfe::geoOptIon, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
d_atomLocationsInitialdftfe::geoOptIonprivate
d_dftPtrdftfe::geoOptIonprivate
d_externalForceOnAtomdftfe::geoOptIonprivate
d_isRestartdftfe::geoOptIonprivate
d_isScfRestartdftfe::geoOptIonprivate
d_maximumAtomForceToBeRelaxeddftfe::geoOptIonprivate
d_nonLinearSolverPtrdftfe::geoOptIonprivate
d_relaxationFlagsdftfe::geoOptIonprivate
d_restartPathdftfe::geoOptIonprivate
d_solverdftfe::geoOptIonprivate
d_solverRestartdftfe::geoOptIonprivate
d_solverRestartPathdftfe::geoOptIonprivate
d_totalUpdateCallsdftfe::geoOptIonprivate
geoOptIon(dftBase *dftPtr, const MPI_Comm &mpi_comm_parent, const bool restart=false)dftfe::geoOptIon
getMPICommunicator()dftfe::geoOptIonvirtual
getNumberUnknowns() constdftfe::geoOptIonvirtual
getUnknownCountFlag() constdftfe::geoOptIonvirtual
gradient(std::vector< double > &gradient)dftfe::geoOptIonvirtual
init(const std::string &restartPath)dftfe::geoOptIon
isConverged() constdftfe::geoOptIonvirtual
mpi_communicatordftfe::geoOptIonprivate
n_mpi_processesdftfe::geoOptIonprivate
nonlinearSolverProblem()dftfe::nonlinearSolverProblem
pcoutdftfe::geoOptIonprivate
precondition(std::vector< double > &s, const std::vector< double > &gradient)dftfe::geoOptIonvirtual
run()dftfe::geoOptIon
save()dftfe::geoOptIonvirtual
solution(std::vector< double > &solution)dftfe::geoOptIonvirtual
this_mpi_processdftfe::geoOptIonprivate
update(const std::vector< double > &solution, const bool computeForces=true, const bool useSingleAtomSolutionsInitialGuess=false)dftfe::geoOptIonvirtual
value(std::vector< double > &functionValue)dftfe::geoOptIonvirtual
~nonlinearSolverProblem()=0dftfe::nonlinearSolverProblempure virtual
+ + + + diff --git a/classdftfe_1_1geo_opt_ion.html b/classdftfe_1_1geo_opt_ion.html new file mode 100644 index 000000000..b51d9e847 --- /dev/null +++ b/classdftfe_1_1geo_opt_ion.html @@ -0,0 +1,983 @@ + + + + + + + +DFT-FE: dftfe::geoOptIon Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::geoOptIon Class Reference
+
+
+ +

problem class for atomic force relaxation solver. + More...

+ +

#include <geoOptIon.h>

+
+Inheritance diagram for dftfe::geoOptIon:
+
+
+ + +dftfe::nonlinearSolverProblem + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 geoOptIon (dftBase *dftPtr, const MPI_Comm &mpi_comm_parent, const bool restart=false)
 Constructor.
 
void init (const std::string &restartPath)
 initializes the data member d_relaxationFlags.
 
int run ()
 calls the atomic force relaxation solver.
 
unsigned int getNumberUnknowns () const
 Obtain number of unknowns (total number of force components to be relaxed).
 
void gradient (std::vector< double > &gradient)
 Compute function gradient (aka forces).
 
void update (const std::vector< double > &solution, const bool computeForces=true, const bool useSingleAtomSolutionsInitialGuess=false)
 Update atomic positions.
 
void save ()
 create checkpoint file for current domain bounding vectors and atomic coordinates.
 
bool isConverged () const
 check for convergence.
 
const MPI_CommgetMPICommunicator ()
 get MPI communicator.
 
void value (std::vector< double > &functionValue)
 not implemented
 
void precondition (std::vector< double > &s, const std::vector< double > &gradient)
 not implemented
 
void solution (std::vector< double > &solution)
 not implemented
 
std::vector< unsigned intgetUnknownCountFlag () const
 not implemented
 
- Public Member Functions inherited from dftfe::nonlinearSolverProblem
 nonlinearSolverProblem ()
 Constructor.
 
virtual ~nonlinearSolverProblem ()=0
 Destructor.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::vector< unsigned intd_relaxationFlags
 
std::vector< doubled_externalForceOnAtom
 
std::vector< std::vector< double > > d_atomLocationsInitial
 
std::string d_restartPath
 
std::string d_solverRestartPath
 
bool d_isRestart
 
bool d_solverRestart
 
bool d_isScfRestart
 
int d_solver
 
double d_maximumAtomForceToBeRelaxed
 maximum force component to be relaxed
 
int d_totalUpdateCalls
 total number of calls to update()
 
dftBased_dftPtr
 pointer to dft class
 
std::unique_ptr< nonLinearSolverd_nonLinearSolverPtr
 
const MPI_Comm mpi_communicator
 parallel communication objects
 
const unsigned int n_mpi_processes
 
const unsigned int this_mpi_process
 
dealii::ConditionalOStream pcout
 conditional stream object
 
+

Detailed Description

+

problem class for atomic force relaxation solver.

+
Author
Sambit Das
+

Constructor & Destructor Documentation

+ +

◆ geoOptIon()

+ +
+
+ + + + + + + + + + + + + + + + +
dftfe::geoOptIon::geoOptIon (dftBase * dftPtr,
const MPI_Comm & mpi_comm_parent,
const bool restart = false )
+
+ +

Constructor.

+
Parameters
+ + + +
_dftPtrpointer to dftClass
mpi_comm_parentparent mpi_communicator
+
+
+ +
+
+

Member Function Documentation

+ +

◆ getMPICommunicator()

+ +
+
+ + + + + +
+ + + + + + + +
const MPI_Comm & dftfe::geoOptIon::getMPICommunicator ()
+
+virtual
+
+ +

get MPI communicator.

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ getNumberUnknowns()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int dftfe::geoOptIon::getNumberUnknowns () const
+
+virtual
+
+ +

Obtain number of unknowns (total number of force components to be relaxed).

+
Returns
int Number of unknowns.
+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ getUnknownCountFlag()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< unsigned int > dftfe::geoOptIon::getUnknownCountFlag () const
+
+virtual
+
+ +

not implemented

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ gradient()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::geoOptIon::gradient (std::vector< double > & gradient)
+
+virtual
+
+ +

Compute function gradient (aka forces).

+
Parameters
+ + +
gradientSTL vector for gradient values.
+
+
+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ init()

+ +
+
+ + + + + + + +
void dftfe::geoOptIon::init (const std::string & restartPath)
+
+ +

initializes the data member d_relaxationFlags.

+ +
+
+ +

◆ isConverged()

+ +
+
+ + + + + +
+ + + + + + + +
bool dftfe::geoOptIon::isConverged () const
+
+virtual
+
+ +

check for convergence.

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ precondition()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
void dftfe::geoOptIon::precondition (std::vector< double > & s,
const std::vector< double > & gradient )
+
+virtual
+
+ +

not implemented

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ run()

+ +
+
+ + + + + + + +
int dftfe::geoOptIon::run ()
+
+ +

calls the atomic force relaxation solver.

+

Currently we have option of one solver: Polak–Ribière nonlinear CG solver with secant based line search. In future releases, we will have more options like BFGS solver.

+
Returns
int total geometry update calls
+ +
+
+ +

◆ save()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::geoOptIon::save ()
+
+virtual
+
+ +

create checkpoint file for current domain bounding vectors and atomic coordinates.

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ solution()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::geoOptIon::solution (std::vector< double > & solution)
+
+virtual
+
+ +

not implemented

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ update()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
void dftfe::geoOptIon::update (const std::vector< double > & solution,
const bool computeForces = true,
const bool useSingleAtomSolutionsInitialGuess = false )
+
+virtual
+
+ +

Update atomic positions.

+
Parameters
+ + +
solutiondisplacement of the atoms with respect to their current position. The size of the solution vector is equal to the number of unknowns.
+
+
+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ value()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::geoOptIon::value (std::vector< double > & functionValue)
+
+virtual
+
+ +

not implemented

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+

Member Data Documentation

+ +

◆ d_atomLocationsInitial

+ +
+
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::geoOptIon::d_atomLocationsInitial
+
+private
+
+ +
+
+ +

◆ d_dftPtr

+ +
+
+ + + + + +
+ + + + +
dftBase* dftfe::geoOptIon::d_dftPtr
+
+private
+
+ +

pointer to dft class

+ +
+
+ +

◆ d_externalForceOnAtom

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::geoOptIon::d_externalForceOnAtom
+
+private
+
+ +
+
+ +

◆ d_isRestart

+ +
+
+ + + + + +
+ + + + +
bool dftfe::geoOptIon::d_isRestart
+
+private
+
+ +
+
+ +

◆ d_isScfRestart

+ +
+
+ + + + + +
+ + + + +
bool dftfe::geoOptIon::d_isScfRestart
+
+private
+
+ +
+
+ +

◆ d_maximumAtomForceToBeRelaxed

+ +
+
+ + + + + +
+ + + + +
double dftfe::geoOptIon::d_maximumAtomForceToBeRelaxed
+
+private
+
+ +

maximum force component to be relaxed

+ +
+
+ +

◆ d_nonLinearSolverPtr

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<nonLinearSolver> dftfe::geoOptIon::d_nonLinearSolverPtr
+
+private
+
+ +
+
+ +

◆ d_relaxationFlags

+ +
+
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::geoOptIon::d_relaxationFlags
+
+private
+
+

storage for relaxation flags and external force components for each global atom. each atom has three flags corresponding to three components (0- no relax, 1- relax) and three external force components

+ +
+
+ +

◆ d_restartPath

+ +
+
+ + + + + +
+ + + + +
std::string dftfe::geoOptIon::d_restartPath
+
+private
+
+ +
+
+ +

◆ d_solver

+ +
+
+ + + + + +
+ + + + +
int dftfe::geoOptIon::d_solver
+
+private
+
+ +
+
+ +

◆ d_solverRestart

+ +
+
+ + + + + +
+ + + + +
bool dftfe::geoOptIon::d_solverRestart
+
+private
+
+ +
+
+ +

◆ d_solverRestartPath

+ +
+
+ + + + + +
+ + + + +
std::string dftfe::geoOptIon::d_solverRestartPath
+
+private
+
+ +
+
+ +

◆ d_totalUpdateCalls

+ +
+
+ + + + + +
+ + + + +
int dftfe::geoOptIon::d_totalUpdateCalls
+
+private
+
+ +

total number of calls to update()

+ +
+
+ +

◆ mpi_communicator

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm dftfe::geoOptIon::mpi_communicator
+
+private
+
+ +

parallel communication objects

+ +
+
+ +

◆ n_mpi_processes

+ +
+
+ + + + + +
+ + + + +
const unsigned int dftfe::geoOptIon::n_mpi_processes
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::geoOptIon::pcout
+
+private
+
+ +

conditional stream object

+ +
+
+ +

◆ this_mpi_process

+ +
+
+ + + + + +
+ + + + +
const unsigned int dftfe::geoOptIon::this_mpi_process
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1geo_opt_ion.png b/classdftfe_1_1geo_opt_ion.png new file mode 100644 index 0000000000000000000000000000000000000000..b7829c067e0ebc7daabe78c686716e6c7685b4ec GIT binary patch literal 694 zcmV;n0!jUeP)vTJr#LVva2S`&=-}Ys|Ns9r%~qrU000SeQchC<|NsC0|NsC0Hv*f~0006( zNkl;h3e#NpZ%Vferl2a*| zNzz}zOp^X;nA58Ce30b19zN%8>G5g9lVq#ar?-^%gWx@L=Dk8Whv@9p>414)y33ps zydF6pe9N`nZ+j`0?QJ_;YuX?AujaBz$%|77`WnAZ)FbT7*}uuNrFz<)bBU~@HPss1 zE3ApsJ5}a`_+_FLZO1$c+LZd>@w%j4S@U%iey``&^JPIz^cl0g95uJ$<%4g++m(D+k+37$MyV|wQ<30uiOdqAozf})VOKU&28_mF`3M0 zdO;1e_h(ZsHpWSWrq z=Vw0X37H?r(?QS39DM@-enY_w0R9SQ0Pt5Z1AxDR836nh%mCo8U5|tCCOj!Ft008dOjrSO6z5B1N=*- z-ek_aw|CBN#`m|GbAs2jZLM-kVrSmxii06tC-Q1zz4>Fk&78Mv@?5``@nSa2NwUNG zOVT~P!Q9c9OdgnRo~2}ljUh?*^Z{mj!S>wcx$k8@Fpu8;8}qoHFU`-^`1{PIF_;!z zn?uvLjj8tM(j&UQ;m#~c=Q;`anY}*De37)TWN!b#NK&KkWR@gv1+ygiE0`t8Uk~P# cQkqMD0FW7%g3T<>%>V!Z07*qoM6N<$f(CG6!vFvP literal 0 HcmV?d00001 diff --git a/classdftfe_1_1geometry_optimization_class-members.html b/classdftfe_1_1geometry_optimization_class-members.html new file mode 100644 index 000000000..c28471ab1 --- /dev/null +++ b/classdftfe_1_1geometry_optimization_class-members.html @@ -0,0 +1,106 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::geometryOptimizationClass Member List
+
+ + + + + diff --git a/classdftfe_1_1geometry_optimization_class.html b/classdftfe_1_1geometry_optimization_class.html new file mode 100644 index 000000000..e4d7ee105 --- /dev/null +++ b/classdftfe_1_1geometry_optimization_class.html @@ -0,0 +1,493 @@ + + + + + + + +DFT-FE: dftfe::geometryOptimizationClass Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::geometryOptimizationClass Class Reference
+
+
+ +

#include <geometryOptimizationClass.h>

+ + + + + + + + + + +

+Public Member Functions

 geometryOptimizationClass (const std::string parameter_file, const std::string restartFilesPath, const MPI_Comm &mpi_comm_parent, const bool restart, const int verbosity, const bool useDevice)
 geometryOptimizationClass constructor: copy data from dftparameters to the memebrs of molecularDynamicsClass
 
void init (const std::string parameter_file, const bool useDevice)
 
void runOpt ()
 runOpt:
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::unique_ptr< dftfeWrapperd_dftfeWrapper
 
std::unique_ptr< geoOptIond_geoOptIonPtr
 
std::unique_ptr< geoOptCelld_geoOptCellPtr
 
dftBased_dftPtr
 
const bool d_isRestart
 
const std::string d_restartFilesPath
 
const int d_verbosity
 
int d_status
 
int d_cycle
 
int d_optMode
 
const MPI_Comm d_mpiCommParent
 
dealii::ConditionalOStream pcout
 
+

Constructor & Destructor Documentation

+ +

◆ geometryOptimizationClass()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::geometryOptimizationClass::geometryOptimizationClass (const std::string parameter_file,
const std::string restartFilesPath,
const MPI_Comm & mpi_comm_parent,
const bool restart,
const int verbosity,
const bool useDevice )
+
+ +

geometryOptimizationClass constructor: copy data from dftparameters to the memebrs of molecularDynamicsClass

+
Parameters
+ + + +
[in]dftBase*_dftBasePtr pointer to base class of dftClass
[in]mpi_comm_parentparent mpi communicator
+
+
+ +
+
+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + + + + + + + +
void dftfe::geometryOptimizationClass::init (const std::string parameter_file,
const bool useDevice )
+
+ +
+
+ +

◆ runOpt()

+ +
+
+ + + + + + + +
void dftfe::geometryOptimizationClass::runOpt ()
+
+ +

runOpt:

+ +
+
+

Member Data Documentation

+ +

◆ d_cycle

+ +
+
+ + + + + +
+ + + + +
int dftfe::geometryOptimizationClass::d_cycle
+
+private
+
+ +
+
+ +

◆ d_dftfeWrapper

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<dftfeWrapper> dftfe::geometryOptimizationClass::d_dftfeWrapper
+
+private
+
+ +
+
+ +

◆ d_dftPtr

+ +
+
+ + + + + +
+ + + + +
dftBase* dftfe::geometryOptimizationClass::d_dftPtr
+
+private
+
+ +
+
+ +

◆ d_geoOptCellPtr

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<geoOptCell> dftfe::geometryOptimizationClass::d_geoOptCellPtr
+
+private
+
+ +
+
+ +

◆ d_geoOptIonPtr

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<geoOptIon> dftfe::geometryOptimizationClass::d_geoOptIonPtr
+
+private
+
+ +
+
+ +

◆ d_isRestart

+ +
+
+ + + + + +
+ + + + +
const bool dftfe::geometryOptimizationClass::d_isRestart
+
+private
+
+ +
+
+ +

◆ d_mpiCommParent

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm dftfe::geometryOptimizationClass::d_mpiCommParent
+
+private
+
+ +
+
+ +

◆ d_optMode

+ +
+
+ + + + + +
+ + + + +
int dftfe::geometryOptimizationClass::d_optMode
+
+private
+
+ +
+
+ +

◆ d_restartFilesPath

+ +
+
+ + + + + +
+ + + + +
const std::string dftfe::geometryOptimizationClass::d_restartFilesPath
+
+private
+
+ +
+
+ +

◆ d_status

+ +
+
+ + + + + +
+ + + + +
int dftfe::geometryOptimizationClass::d_status
+
+private
+
+ +
+
+ +

◆ d_verbosity

+ +
+
+ + + + + +
+ + + + +
const int dftfe::geometryOptimizationClass::d_verbosity
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::geometryOptimizationClass::pcout
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1kerker_solver_problem-members.html b/classdftfe_1_1kerker_solver_problem-members.html new file mode 100644 index 000000000..f98480d15 --- /dev/null +++ b/classdftfe_1_1kerker_solver_problem-members.html @@ -0,0 +1,121 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::kerkerSolverProblem< FEOrderElectro > Member List
+
+
+ +

This is the complete list of members for dftfe::kerkerSolverProblem< FEOrderElectro >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AX(const dealii::MatrixFree< 3, double > &matrixFreeData, distributedCPUVec< double > &dst, const distributedCPUVec< double > &src, const std::pair< unsigned int, unsigned int > &cell_range) constdftfe::kerkerSolverProblem< FEOrderElectro >private
computeDiagonalA()dftfe::kerkerSolverProblem< FEOrderElectro >private
computeRhs(distributedCPUVec< double > &rhs)dftfe::kerkerSolverProblem< FEOrderElectro >virtual
d_basisOperationsPtrdftfe::kerkerSolverProblem< FEOrderElectro >private
d_constraintMatrixPRefinedPtrdftfe::kerkerSolverProblem< FEOrderElectro >private
d_diagonalAdftfe::kerkerSolverProblem< FEOrderElectro >private
d_dofHandlerPRefinedPtrdftfe::kerkerSolverProblem< FEOrderElectro >private
d_gammadftfe::kerkerSolverProblem< FEOrderElectro >private
d_matrixFreeDataPRefinedPtrdftfe::kerkerSolverProblem< FEOrderElectro >private
d_matrixFreeQuadratureComponentdftfe::kerkerSolverProblem< FEOrderElectro >private
d_matrixFreeVectorComponentdftfe::kerkerSolverProblem< FEOrderElectro >private
d_mpiCommParentdftfe::kerkerSolverProblem< FEOrderElectro >private
d_residualQuadValuesPtrdftfe::kerkerSolverProblem< FEOrderElectro >private
d_xPtrdftfe::kerkerSolverProblem< FEOrderElectro >private
dealiiLinearSolverProblem()dftfe::dealiiLinearSolverProblem
distributeX()dftfe::kerkerSolverProblem< FEOrderElectro >virtual
getX()dftfe::kerkerSolverProblem< FEOrderElectro >virtual
init(std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, dealii::AffineConstraints< double > &constraintMatrix, distributedCPUVec< double > &x, double kerkerMixingParameter, const unsigned int matrixFreeVectorComponent, const unsigned int matrixFreeQuadratureComponent)dftfe::kerkerSolverProblem< FEOrderElectro >
kerkerSolverProblem(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain)dftfe::kerkerSolverProblem< FEOrderElectro >
mpi_communicatordftfe::kerkerSolverProblem< FEOrderElectro >private
n_mpi_processesdftfe::kerkerSolverProblem< FEOrderElectro >private
operator!=(double val) constdftfe::kerkerSolverProblem< FEOrderElectro >inlinevirtual
pcoutdftfe::kerkerSolverProblem< FEOrderElectro >private
precondition_Jacobi(distributedCPUVec< double > &dst, const distributedCPUVec< double > &src, const double omega) constdftfe::kerkerSolverProblem< FEOrderElectro >virtual
reinit(distributedCPUVec< double > &x, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadPointValues)dftfe::kerkerSolverProblem< FEOrderElectro >
size_type typedefdftfe::dealiiLinearSolverProblem
subscribe(std::atomic< bool > *const validity, const std::string &identifier="") constdftfe::kerkerSolverProblem< FEOrderElectro >inlinevirtual
this_mpi_processdftfe::kerkerSolverProblem< FEOrderElectro >private
unsubscribe(std::atomic< bool > *const validity, const std::string &identifier="") constdftfe::kerkerSolverProblem< FEOrderElectro >inlinevirtual
vmult(distributedCPUVec< double > &Ax, distributedCPUVec< double > &x)dftfe::kerkerSolverProblem< FEOrderElectro >virtual
+ + + + diff --git a/classdftfe_1_1kerker_solver_problem.html b/classdftfe_1_1kerker_solver_problem.html new file mode 100644 index 000000000..e9717d857 --- /dev/null +++ b/classdftfe_1_1kerker_solver_problem.html @@ -0,0 +1,1035 @@ + + + + + + + +DFT-FE: dftfe::kerkerSolverProblem< FEOrderElectro > Class Template Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::kerkerSolverProblem< FEOrderElectro > Class Template Reference
+
+
+ +

poisson solver problem class template. template parameter FEOrderElectro is the finite element polynomial order for electrostatics + More...

+ +

#include <kerkerSolverProblem.h>

+
+Inheritance diagram for dftfe::kerkerSolverProblem< FEOrderElectro >:
+
+
+ + +dftfe::dealiiLinearSolverProblem + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 kerkerSolverProblem (const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain)
 Constructor.
 
void init (std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, dealii::AffineConstraints< double > &constraintMatrix, distributedCPUVec< double > &x, double kerkerMixingParameter, const unsigned int matrixFreeVectorComponent, const unsigned int matrixFreeQuadratureComponent)
 initialize the matrix-free data structures
 
void reinit (distributedCPUVec< double > &x, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadPointValues)
 reinitialize data structures .
 
distributedCPUVec< double > & getX ()
 get the reference to x field
 
void vmult (distributedCPUVec< double > &Ax, distributedCPUVec< double > &x)
 Compute A matrix multipled by x.
 
void computeRhs (distributedCPUVec< double > &rhs)
 Compute right hand side vector for the problem Ax = rhs.
 
void precondition_Jacobi (distributedCPUVec< double > &dst, const distributedCPUVec< double > &src, const double omega) const
 Jacobi preconditioning.
 
void distributeX ()
 distribute x to the constrained nodes.
 
void subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
void unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
bool operator!= (double val) const
 function needed by dealii to mimic SparseMatrix
 
- Public Member Functions inherited from dftfe::dealiiLinearSolverProblem
 dealiiLinearSolverProblem ()
 Constructor.
 
+ + + + + + + +

+Private Member Functions

void AX (const dealii::MatrixFree< 3, double > &matrixFreeData, distributedCPUVec< double > &dst, const distributedCPUVec< double > &src, const std::pair< unsigned int, unsigned int > &cell_range) const
 required for the cell_loop operation in dealii's MatrixFree class
 
void computeDiagonalA ()
 Compute the diagonal of A.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

distributedCPUVec< doubled_diagonalA
 storage for diagonal of the A matrix
 
distributedCPUVec< double > * d_xPtr
 pointer to the x vector being solved for
 
double d_gamma
 
unsigned int d_matrixFreeVectorComponent
 
unsigned int d_matrixFreeQuadratureComponent
 matrix free quadrature index
 
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > * d_residualQuadValuesPtr
 pointer to electron density cell and grad residual data
 
const dealii::DoFHandler< 3 > * d_dofHandlerPRefinedPtr
 
const dealii::AffineConstraints< double > * d_constraintMatrixPRefinedPtr
 
const dealii::MatrixFree< 3, double > * d_matrixFreeDataPRefinedPtr
 
std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > d_basisOperationsPtr
 
const MPI_Comm d_mpiCommParent
 
const MPI_Comm mpi_communicator
 
const unsigned int n_mpi_processes
 
const unsigned int this_mpi_process
 
dealii::ConditionalOStream pcout
 
+ + + + + +

+Additional Inherited Members

- Public Types inherited from dftfe::dealiiLinearSolverProblem
typedef dealii::types::global_dof_index size_type
 typedef declaration needed by dealii
 
+

Detailed Description

+
template<unsigned int FEOrderElectro>
+class dftfe::kerkerSolverProblem< FEOrderElectro >

poisson solver problem class template. template parameter FEOrderElectro is the finite element polynomial order for electrostatics

+
Author
Phani Motamarri
+

Constructor & Destructor Documentation

+ +

◆ kerkerSolverProblem()

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + + + + + + + +
dftfe::kerkerSolverProblem< FEOrderElectro >::kerkerSolverProblem (const MPI_Comm & mpi_comm_parent,
const MPI_Comm & mpi_comm_domain )
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ AX()

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::kerkerSolverProblem< FEOrderElectro >::AX (const dealii::MatrixFree< 3, double > & matrixFreeData,
distributedCPUVec< double > & dst,
const distributedCPUVec< double > & src,
const std::pair< unsigned int, unsigned int > & cell_range ) const
+
+private
+
+ +

required for the cell_loop operation in dealii's MatrixFree class

+ +
+
+ +

◆ computeDiagonalA()

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::kerkerSolverProblem< FEOrderElectro >::computeDiagonalA ()
+
+private
+
+ +

Compute the diagonal of A.

+ +
+
+ +

◆ computeRhs()

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::kerkerSolverProblem< FEOrderElectro >::computeRhs (distributedCPUVec< double > & rhs)
+
+virtual
+
+ +

Compute right hand side vector for the problem Ax = rhs.

+
Parameters
+ + +
rhsvector for the right hand side values
+
+
+ +

Implements dftfe::dealiiLinearSolverProblem.

+ +
+
+ +

◆ distributeX()

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::kerkerSolverProblem< FEOrderElectro >::distributeX ()
+
+virtual
+
+ +

distribute x to the constrained nodes.

+ +

Implements dftfe::dealiiLinearSolverProblem.

+ +
+
+ +

◆ getX()

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
distributedCPUVec< double > & dftfe::kerkerSolverProblem< FEOrderElectro >::getX ()
+
+virtual
+
+ +

get the reference to x field

+
Returns
reference to x field. Assumes x field data structure is already initialized
+ +

Implements dftfe::dealiiLinearSolverProblem.

+ +
+
+ +

◆ init()

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::kerkerSolverProblem< FEOrderElectro >::init (std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > & basisOperationsPtr,
dealii::AffineConstraints< double > & constraintMatrix,
distributedCPUVec< double > & x,
double kerkerMixingParameter,
const unsigned int matrixFreeVectorComponent,
const unsigned int matrixFreeQuadratureComponent )
+
+ +

initialize the matrix-free data structures

+
Parameters
+ + + + +
matrixFreeDatastructure to hold quadrature rule, constraints vector and appropriate dofHandler
constraintMatrixto hold constraints in the given problem
xvector to be initialized using matrix-free object
+
+
+ +
+
+ +

◆ operator!=()

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
bool dftfe::kerkerSolverProblem< FEOrderElectro >::operator!= (double val) const
+
+inlinevirtual
+
+ +

function needed by dealii to mimic SparseMatrix

+ +

Implements dftfe::dealiiLinearSolverProblem.

+ +
+
+ +

◆ precondition_Jacobi()

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + +
void dftfe::kerkerSolverProblem< FEOrderElectro >::precondition_Jacobi (distributedCPUVec< double > & dst,
const distributedCPUVec< double > & src,
const double omega ) const
+
+virtual
+
+ +

Jacobi preconditioning.

+ +

Implements dftfe::dealiiLinearSolverProblem.

+ +
+
+ +

◆ reinit()

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + + + + + + + +
void dftfe::kerkerSolverProblem< FEOrderElectro >::reinit (distributedCPUVec< double > & x,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & quadPointValues )
+
+ +

reinitialize data structures .

+
Parameters
+ + + + +
xvector to store initial guess and solution
gradResidualValuesstores the gradient of difference of input electron-density and output electron-density
kerkerMixingParameterused in Kerker mixing scheme which usually represents Thomas Fermi wavevector (k_{TF}**2).
+
+
+ +
+
+ +

◆ subscribe()

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + +
void dftfe::kerkerSolverProblem< FEOrderElectro >::subscribe (std::atomic< bool > *const validity,
const std::string & identifier = "" ) const
+
+inlinevirtual
+
+

function needed by dealii to mimic SparseMatrix for Jacobi preconditioning

+ +

Implements dftfe::dealiiLinearSolverProblem.

+ +
+
+ +

◆ unsubscribe()

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + +
void dftfe::kerkerSolverProblem< FEOrderElectro >::unsubscribe (std::atomic< bool > *const validity,
const std::string & identifier = "" ) const
+
+inlinevirtual
+
+

function needed by dealii to mimic SparseMatrix for Jacobi preconditioning

+ +

Implements dftfe::dealiiLinearSolverProblem.

+ +
+
+ +

◆ vmult()

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + +
void dftfe::kerkerSolverProblem< FEOrderElectro >::vmult (distributedCPUVec< double > & Ax,
distributedCPUVec< double > & x )
+
+virtual
+
+ +

Compute A matrix multipled by x.

+ +

Implements dftfe::dealiiLinearSolverProblem.

+ +
+
+

Member Data Documentation

+ +

◆ d_basisOperationsPtr

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::shared_ptr< dftfe::basis:: FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST> > dftfe::kerkerSolverProblem< FEOrderElectro >::d_basisOperationsPtr
+
+private
+
+ +
+
+ +

◆ d_constraintMatrixPRefinedPtr

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const dealii::AffineConstraints<double>* dftfe::kerkerSolverProblem< FEOrderElectro >::d_constraintMatrixPRefinedPtr
+
+private
+
+ +
+
+ +

◆ d_diagonalA

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::kerkerSolverProblem< FEOrderElectro >::d_diagonalA
+
+private
+
+ +

storage for diagonal of the A matrix

+ +
+
+ +

◆ d_dofHandlerPRefinedPtr

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const dealii::DoFHandler<3>* dftfe::kerkerSolverProblem< FEOrderElectro >::d_dofHandlerPRefinedPtr
+
+private
+
+ +
+
+ +

◆ d_gamma

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
double dftfe::kerkerSolverProblem< FEOrderElectro >::d_gamma
+
+private
+
+ +
+
+ +

◆ d_matrixFreeDataPRefinedPtr

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const dealii::MatrixFree<3, double>* dftfe::kerkerSolverProblem< FEOrderElectro >::d_matrixFreeDataPRefinedPtr
+
+private
+
+ +
+
+ +

◆ d_matrixFreeQuadratureComponent

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::kerkerSolverProblem< FEOrderElectro >::d_matrixFreeQuadratureComponent
+
+private
+
+ +

matrix free quadrature index

+ +
+
+ +

◆ d_matrixFreeVectorComponent

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::kerkerSolverProblem< FEOrderElectro >::d_matrixFreeVectorComponent
+
+private
+
+

matrix free index required to access the DofHandler and dealii::AffineConstraints<double> objects corresponding to the problem

+ +
+
+ +

◆ d_mpiCommParent

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::kerkerSolverProblem< FEOrderElectro >::d_mpiCommParent
+
+private
+
+ +
+
+ +

◆ d_residualQuadValuesPtr

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>* dftfe::kerkerSolverProblem< FEOrderElectro >::d_residualQuadValuesPtr
+
+private
+
+ +

pointer to electron density cell and grad residual data

+ +
+
+ +

◆ d_xPtr

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double>* dftfe::kerkerSolverProblem< FEOrderElectro >::d_xPtr
+
+private
+
+ +

pointer to the x vector being solved for

+ +
+
+ +

◆ mpi_communicator

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::kerkerSolverProblem< FEOrderElectro >::mpi_communicator
+
+private
+
+ +
+
+ +

◆ n_mpi_processes

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const unsigned int dftfe::kerkerSolverProblem< FEOrderElectro >::n_mpi_processes
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::kerkerSolverProblem< FEOrderElectro >::pcout
+
+private
+
+ +
+
+ +

◆ this_mpi_process

+ +
+
+
+template<unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const unsigned int dftfe::kerkerSolverProblem< FEOrderElectro >::this_mpi_process
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1kerker_solver_problem.png b/classdftfe_1_1kerker_solver_problem.png new file mode 100644 index 0000000000000000000000000000000000000000..73f315e5c6571ac7c59a0eb4ac30a71b5057006f GIT binary patch literal 1029 zcmeAS@N?(olHy`uVBq!ia0y~yU=#te12~w0dtRv;xE;1lBd|Nnm=^TnI5rTvGN zTNr2-NK8NT;=zLlKylNvVM~B=oFzei!3;n?7??B7zQVx3Ji*h&F{Fa=?cCRWkF9u` zGub3Q{GI<}%g)F}b4@hZs>QfVeYPw*> z`CA`%t4wCQe7c}-CG$zUTd#{Z-+1}hUryI=lKdCjDWWHi@}&jL%dhzQvQIoft^c3D zMt0|(&s);6S5KR9b8*wQ+I+s`rF)i_w|~z5`}*nxAp?utZ`%*QtMqx%mM>Aun0nWF zm5BYf9~Ep%r7vy#-Ro0)ccnAu`QRC6H!SZ^k$-KivAOr0e6_RZvWxHkSZ??hk?wzT z-r<&fucze;jw~xzd$}jFx99KzmHkJ|Si1_-JPky|rm4(-eO)W{TSeJsJ*iTyCU1>n z581k|YIxdR&;K@M_Hp_3=h-zjuD|CXS#?UjdDHiGdr$JNpKr3bua3eq_Z?N@)twHeiwU&044!9N5+OV^XD&OV(?^T zW!Mzw)5XvM^`SzQi@BDRFkoi>Y+SRqDK~2t(z(3m z$kaQ9Oseye_J{Vb^Vis97#8(I%1i(2Z!b>kO&YW?*F0>NF8+ke>&nr?z6A|P3zn9=H6SmmznSHg6L~f zzQVr`UfNQyWcBv*PrhC@mwNQ&n%$n-qVFf8t&7Y4f19`@$Z_J5m0VpaGqK^gfT--X dQ|$gT&U^KE>ihT4g@GBC!PC{xWt~$(696+g%((yn literal 0 HcmV?d00001 diff --git a/classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper.html b/classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper.html new file mode 100644 index 000000000..58c26a2e6 --- /dev/null +++ b/classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper.html @@ -0,0 +1,91 @@ + + + + + + + +DFT-FE: dftfe::linearAlgebra::BLASWrapper< memorySpace > Class Template Reference + + + + + + + + + + + + +
+
dftfe::linearAlgebra::BLASWrapper< memorySpace > Class Template Reference
+
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4-members.html b/classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4-members.html new file mode 100644 index 000000000..a054eba0f --- /dev/null +++ b/classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4-members.html @@ -0,0 +1,137 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > Member List
+
+
+ +

This is the complete list of members for dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
add(double *y, const double *x, const double alpha, const dftfe::size_type size)dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
axpby(const unsigned int n, const ValueType2 alpha, const ValueType1 *x, const ValueType2 beta, ValueType1 *y) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
axpyStridedBlockAtomicAdd(const dftfe::size_type contiguousBlockSize, const dftfe::size_type numContiguousBlocks, const ValueType *addFromVec, ValueType *addToVec, const dftfe::global_size_type *addToVecStartingContiguousBlockIds) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
axpyStridedBlockAtomicAdd(const dftfe::size_type contiguousBlockSize, const dftfe::size_type numContiguousBlocks, const ValueType1 a, const ValueType1 *s, const ValueType2 *addFromVec, ValueType2 *addToVec, const dftfe::global_size_type *addToVecStartingContiguousBlockIds) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
BLASWrapper()dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
copyComplexArrToRealArrs(const dftfe::size_type size, const ValueTypeComplex *complexArr, ValueTypeReal *realArr, ValueTypeReal *imagArr)dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
copyRealArrsToComplexArr(const dftfe::size_type size, const ValueTypeReal *realArr, const ValueTypeReal *imagArr, ValueTypeComplex *complexArr)dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
copyValueType1ArrToValueType2Arr(const dftfe::size_type size, const ValueType1 *valueType1Arr, ValueType2 *valueType2Arr)dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
sadd(ValueType *y, ValueType *x, const ValueType beta, const dftfe::size_type size)dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
stridedBlockScale(const dftfe::size_type contiguousBlockSize, const dftfe::size_type numContiguousBlocks, const ValueType1 a, const ValueType1 *s, ValueType2 *x)dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
stridedBlockScaleCopy(const dftfe::size_type contiguousBlockSize, const dftfe::size_type numContiguousBlocks, const ValueType1 a, const ValueType1 *s, const ValueType2 *copyFromVec, ValueType2 *copyToVecBlock, const dftfe::global_size_type *copyFromVecStartingContiguousBlockIds)dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
stridedCopyConstantStride(const dftfe::size_type blockSize, const dftfe::size_type strideTo, const dftfe::size_type strideFrom, const dftfe::size_type numBlocks, const dftfe::size_type startingToId, const dftfe::size_type startingFromId, const ValueType1 *copyFromVec, ValueType2 *copyToVec)dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
stridedCopyFromBlock(const dftfe::size_type contiguousBlockSize, const dftfe::size_type numContiguousBlocks, const ValueType1 *copyFromVecBlock, ValueType2 *copyToVec, const dftfe::global_size_type *copyFromVecStartingContiguousBlockIds)dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
stridedCopyFromBlockConstantStride(const dftfe::size_type blockSizeTo, const dftfe::size_type blockSizeFrom, const dftfe::size_type numBlocks, const dftfe::size_type startingId, const ValueType1 *copyFromVec, ValueType2 *copyToVec)dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
stridedCopyToBlock(const dftfe::size_type contiguousBlockSize, const dftfe::size_type numContiguousBlocks, const ValueType1 *copyFromVec, ValueType2 *copyToVecBlock, const dftfe::global_size_type *copyFromVecStartingContiguousBlockIds)dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
stridedCopyToBlockConstantStride(const dftfe::size_type blockSizeTo, const dftfe::size_type blockSizeFrom, const dftfe::size_type numBlocks, const dftfe::size_type startingId, const ValueType1 *copyFromVec, ValueType2 *copyToVec)dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xaxpy(const unsigned int n, const double *alpha, const double *x, const unsigned int incx, double *y, const unsigned int incy) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xaxpy(const unsigned int n, const std::complex< double > *alpha, const std::complex< double > *x, const unsigned int incx, std::complex< double > *y, const unsigned int incy) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xcopy(const unsigned int n, const double *x, const unsigned int incx, double *y, const unsigned int incy) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xcopy(const unsigned int n, const std::complex< double > *x, const unsigned int incx, std::complex< double > *y, const unsigned int incy) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xcopy(const unsigned int n, const float *x, const unsigned int incx, float *y, const unsigned int incy) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xcopy(const unsigned int n, const std::complex< float > *x, const unsigned int incx, std::complex< float > *y, const unsigned int incy) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xdot(const unsigned int N, const double *X, const unsigned int INCX, const double *Y, const unsigned int INCY, double *result) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xdot(const unsigned int N, const double *X, const unsigned int INCX, const double *Y, const unsigned int INCY, const MPI_Comm &mpi_communicator, double *result) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xdot(const unsigned int N, const std::complex< double > *X, const unsigned int INCX, const std::complex< double > *Y, const unsigned int INCY, std::complex< double > *result) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xdot(const unsigned int N, const std::complex< double > *X, const unsigned int INCX, const std::complex< double > *Y, const unsigned int INCY, const MPI_Comm &mpi_communicator, std::complex< double > *result) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xgemm(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const float *alpha, const float *A, const unsigned int lda, const float *B, const unsigned int ldb, const float *beta, float *C, const unsigned int ldc) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xgemm(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< float > *alpha, const std::complex< float > *A, const unsigned int lda, const std::complex< float > *B, const unsigned int ldb, const std::complex< float > *beta, std::complex< float > *C, const unsigned int ldc) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xgemm(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const double *alpha, const double *A, const unsigned int lda, const double *B, const unsigned int ldb, const double *beta, double *C, const unsigned int ldc) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xgemm(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< double > *alpha, const std::complex< double > *A, const unsigned int lda, const std::complex< double > *B, const unsigned int ldb, const std::complex< double > *beta, std::complex< double > *C, const unsigned int ldc) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xgemmBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const double *alpha, const double *A[], const unsigned int lda, const double *B[], const unsigned int ldb, const double *beta, double *C[], const unsigned int ldc, const int batchCount) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xgemmBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< double > *alpha, const std::complex< double > *A[], const unsigned int lda, const std::complex< double > *B[], const unsigned int ldb, const std::complex< double > *beta, std::complex< double > *C[], const unsigned int ldc, const int batchCount) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xgemmBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const float *alpha, const float *A[], const unsigned int lda, const float *B[], const unsigned int ldb, const float *beta, float *C[], const unsigned int ldc, const int batchCount) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xgemmBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< float > *alpha, const std::complex< float > *A[], const unsigned int lda, const std::complex< float > *B[], const unsigned int ldb, const std::complex< float > *beta, std::complex< float > *C[], const unsigned int ldc, const int batchCount) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xgemmStridedBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const double *alpha, const double *A, const unsigned int lda, long long int strideA, const double *B, const unsigned int ldb, long long int strideB, const double *beta, double *C, const unsigned int ldc, long long int strideC, const int batchCount) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xgemmStridedBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< double > *alpha, const std::complex< double > *A, const unsigned int lda, long long int strideA, const std::complex< double > *B, const unsigned int ldb, long long int strideB, const std::complex< double > *beta, std::complex< double > *C, const unsigned int ldc, long long int strideC, const int batchCount) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xgemmStridedBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< float > *alpha, const std::complex< float > *A, const unsigned int lda, long long int strideA, const std::complex< float > *B, const unsigned int ldb, long long int strideB, const std::complex< float > *beta, std::complex< float > *C, const unsigned int ldc, long long int strideC, const int batchCount) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xgemmStridedBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const float *alpha, const float *A, const unsigned int lda, long long int strideA, const float *B, const unsigned int ldb, long long int strideB, const float *beta, float *C, const unsigned int ldc, long long int strideC, const int batchCount) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xgemv(const char transA, const unsigned int m, const unsigned int n, const double *alpha, const double *A, const unsigned int lda, const double *x, const unsigned int incx, const double *beta, double *y, const unsigned int incy) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xgemv(const char transA, const unsigned int m, const unsigned int n, const float *alpha, const float *A, const unsigned int lda, const float *x, const unsigned int incx, const float *beta, float *y, const unsigned int incy) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xgemv(const char transA, const unsigned int m, const unsigned int n, const std::complex< double > *alpha, const std::complex< double > *A, const unsigned int lda, const std::complex< double > *x, const unsigned int incx, const std::complex< double > *beta, std::complex< double > *y, const unsigned int incy) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xgemv(const char transA, const unsigned int m, const unsigned int n, const std::complex< float > *alpha, const std::complex< float > *A, const unsigned int lda, const std::complex< float > *x, const unsigned int incx, const std::complex< float > *beta, std::complex< float > *y, const unsigned int incy) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xnrm2(const unsigned int n, const double *x, const unsigned int incx, const MPI_Comm &mpi_communicator, double *result) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xnrm2(const unsigned int n, const std::complex< double > *x, const unsigned int incx, const MPI_Comm &mpi_communicator, double *result) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xscal(ValueType1 *x, const ValueType2 alpha, const dftfe::size_type n) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
xsymv(const char UPLO, const unsigned int N, const double *alpha, const double *A, const unsigned int LDA, const double *X, const unsigned int INCX, const double *beta, double *C, const unsigned int INCY) constdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
+ + + + diff --git a/classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html b/classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html new file mode 100644 index 000000000..8ebdbe0ab --- /dev/null +++ b/classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html @@ -0,0 +1,2646 @@ + + + + + + + +DFT-FE: dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > Class Reference
+
+
+ +

#include <BLASWrapper.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 BLASWrapper ()
 
void xgemm (const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const float *alpha, const float *A, const unsigned int lda, const float *B, const unsigned int ldb, const float *beta, float *C, const unsigned int ldc) const
 
void xgemm (const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< float > *alpha, const std::complex< float > *A, const unsigned int lda, const std::complex< float > *B, const unsigned int ldb, const std::complex< float > *beta, std::complex< float > *C, const unsigned int ldc) const
 
void xgemm (const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const double *alpha, const double *A, const unsigned int lda, const double *B, const unsigned int ldb, const double *beta, double *C, const unsigned int ldc) const
 
void xgemm (const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< double > *alpha, const std::complex< double > *A, const unsigned int lda, const std::complex< double > *B, const unsigned int ldb, const std::complex< double > *beta, std::complex< double > *C, const unsigned int ldc) const
 
void xgemv (const char transA, const unsigned int m, const unsigned int n, const double *alpha, const double *A, const unsigned int lda, const double *x, const unsigned int incx, const double *beta, double *y, const unsigned int incy) const
 
void xgemv (const char transA, const unsigned int m, const unsigned int n, const float *alpha, const float *A, const unsigned int lda, const float *x, const unsigned int incx, const float *beta, float *y, const unsigned int incy) const
 
void xgemv (const char transA, const unsigned int m, const unsigned int n, const std::complex< double > *alpha, const std::complex< double > *A, const unsigned int lda, const std::complex< double > *x, const unsigned int incx, const std::complex< double > *beta, std::complex< double > *y, const unsigned int incy) const
 
void xgemv (const char transA, const unsigned int m, const unsigned int n, const std::complex< float > *alpha, const std::complex< float > *A, const unsigned int lda, const std::complex< float > *x, const unsigned int incx, const std::complex< float > *beta, std::complex< float > *y, const unsigned int incy) const
 
template<typename ValueType1 , typename ValueType2 >
void xscal (ValueType1 *x, const ValueType2 alpha, const dftfe::size_type n) const
 
void xnrm2 (const unsigned int n, const double *x, const unsigned int incx, const MPI_Comm &mpi_communicator, double *result) const
 
void xnrm2 (const unsigned int n, const std::complex< double > *x, const unsigned int incx, const MPI_Comm &mpi_communicator, double *result) const
 
void xdot (const unsigned int N, const double *X, const unsigned int INCX, const double *Y, const unsigned int INCY, double *result) const
 
void xdot (const unsigned int N, const double *X, const unsigned int INCX, const double *Y, const unsigned int INCY, const MPI_Comm &mpi_communicator, double *result) const
 
void xdot (const unsigned int N, const std::complex< double > *X, const unsigned int INCX, const std::complex< double > *Y, const unsigned int INCY, std::complex< double > *result) const
 
void xdot (const unsigned int N, const std::complex< double > *X, const unsigned int INCX, const std::complex< double > *Y, const unsigned int INCY, const MPI_Comm &mpi_communicator, std::complex< double > *result) const
 
void xaxpy (const unsigned int n, const double *alpha, const double *x, const unsigned int incx, double *y, const unsigned int incy) const
 
void xaxpy (const unsigned int n, const std::complex< double > *alpha, const std::complex< double > *x, const unsigned int incx, std::complex< double > *y, const unsigned int incy) const
 
void xcopy (const unsigned int n, const double *x, const unsigned int incx, double *y, const unsigned int incy) const
 
void xcopy (const unsigned int n, const std::complex< double > *x, const unsigned int incx, std::complex< double > *y, const unsigned int incy) const
 
void xcopy (const unsigned int n, const float *x, const unsigned int incx, float *y, const unsigned int incy) const
 
void xcopy (const unsigned int n, const std::complex< float > *x, const unsigned int incx, std::complex< float > *y, const unsigned int incy) const
 
void xsymv (const char UPLO, const unsigned int N, const double *alpha, const double *A, const unsigned int LDA, const double *X, const unsigned int INCX, const double *beta, double *C, const unsigned int INCY) const
 
void xgemmBatched (const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const double *alpha, const double *A[], const unsigned int lda, const double *B[], const unsigned int ldb, const double *beta, double *C[], const unsigned int ldc, const int batchCount) const
 
void xgemmBatched (const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< double > *alpha, const std::complex< double > *A[], const unsigned int lda, const std::complex< double > *B[], const unsigned int ldb, const std::complex< double > *beta, std::complex< double > *C[], const unsigned int ldc, const int batchCount) const
 
void xgemmBatched (const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const float *alpha, const float *A[], const unsigned int lda, const float *B[], const unsigned int ldb, const float *beta, float *C[], const unsigned int ldc, const int batchCount) const
 
void xgemmBatched (const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< float > *alpha, const std::complex< float > *A[], const unsigned int lda, const std::complex< float > *B[], const unsigned int ldb, const std::complex< float > *beta, std::complex< float > *C[], const unsigned int ldc, const int batchCount) const
 
void xgemmStridedBatched (const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const double *alpha, const double *A, const unsigned int lda, long long int strideA, const double *B, const unsigned int ldb, long long int strideB, const double *beta, double *C, const unsigned int ldc, long long int strideC, const int batchCount) const
 
void xgemmStridedBatched (const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< double > *alpha, const std::complex< double > *A, const unsigned int lda, long long int strideA, const std::complex< double > *B, const unsigned int ldb, long long int strideB, const std::complex< double > *beta, std::complex< double > *C, const unsigned int ldc, long long int strideC, const int batchCount) const
 
void xgemmStridedBatched (const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< float > *alpha, const std::complex< float > *A, const unsigned int lda, long long int strideA, const std::complex< float > *B, const unsigned int ldb, long long int strideB, const std::complex< float > *beta, std::complex< float > *C, const unsigned int ldc, long long int strideC, const int batchCount) const
 
void xgemmStridedBatched (const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const float *alpha, const float *A, const unsigned int lda, long long int strideA, const float *B, const unsigned int ldb, long long int strideB, const float *beta, float *C, const unsigned int ldc, long long int strideC, const int batchCount) const
 
template<typename ValueTypeComplex , typename ValueTypeReal >
void copyComplexArrToRealArrs (const dftfe::size_type size, const ValueTypeComplex *complexArr, ValueTypeReal *realArr, ValueTypeReal *imagArr)
 
template<typename ValueTypeComplex , typename ValueTypeReal >
void copyRealArrsToComplexArr (const dftfe::size_type size, const ValueTypeReal *realArr, const ValueTypeReal *imagArr, ValueTypeComplex *complexArr)
 
template<typename ValueType1 , typename ValueType2 >
void copyValueType1ArrToValueType2Arr (const dftfe::size_type size, const ValueType1 *valueType1Arr, ValueType2 *valueType2Arr)
 
template<typename ValueType1 , typename ValueType2 >
void stridedCopyToBlock (const dftfe::size_type contiguousBlockSize, const dftfe::size_type numContiguousBlocks, const ValueType1 *copyFromVec, ValueType2 *copyToVecBlock, const dftfe::global_size_type *copyFromVecStartingContiguousBlockIds)
 
template<typename ValueType1 , typename ValueType2 >
void stridedCopyFromBlock (const dftfe::size_type contiguousBlockSize, const dftfe::size_type numContiguousBlocks, const ValueType1 *copyFromVecBlock, ValueType2 *copyToVec, const dftfe::global_size_type *copyFromVecStartingContiguousBlockIds)
 
template<typename ValueType1 , typename ValueType2 >
void stridedCopyToBlockConstantStride (const dftfe::size_type blockSizeTo, const dftfe::size_type blockSizeFrom, const dftfe::size_type numBlocks, const dftfe::size_type startingId, const ValueType1 *copyFromVec, ValueType2 *copyToVec)
 
template<typename ValueType1 , typename ValueType2 >
void stridedCopyConstantStride (const dftfe::size_type blockSize, const dftfe::size_type strideTo, const dftfe::size_type strideFrom, const dftfe::size_type numBlocks, const dftfe::size_type startingToId, const dftfe::size_type startingFromId, const ValueType1 *copyFromVec, ValueType2 *copyToVec)
 
template<typename ValueType1 , typename ValueType2 >
void stridedCopyFromBlockConstantStride (const dftfe::size_type blockSizeTo, const dftfe::size_type blockSizeFrom, const dftfe::size_type numBlocks, const dftfe::size_type startingId, const ValueType1 *copyFromVec, ValueType2 *copyToVec)
 
template<typename ValueType1 , typename ValueType2 >
void axpby (const unsigned int n, const ValueType2 alpha, const ValueType1 *x, const ValueType2 beta, ValueType1 *y) const
 
template<typename ValueType >
void axpyStridedBlockAtomicAdd (const dftfe::size_type contiguousBlockSize, const dftfe::size_type numContiguousBlocks, const ValueType *addFromVec, ValueType *addToVec, const dftfe::global_size_type *addToVecStartingContiguousBlockIds) const
 
template<typename ValueType1 , typename ValueType2 >
void axpyStridedBlockAtomicAdd (const dftfe::size_type contiguousBlockSize, const dftfe::size_type numContiguousBlocks, const ValueType1 a, const ValueType1 *s, const ValueType2 *addFromVec, ValueType2 *addToVec, const dftfe::global_size_type *addToVecStartingContiguousBlockIds) const
 
template<typename ValueType1 , typename ValueType2 >
void stridedBlockScale (const dftfe::size_type contiguousBlockSize, const dftfe::size_type numContiguousBlocks, const ValueType1 a, const ValueType1 *s, ValueType2 *x)
 
template<typename ValueType1 , typename ValueType2 >
void stridedBlockScaleCopy (const dftfe::size_type contiguousBlockSize, const dftfe::size_type numContiguousBlocks, const ValueType1 a, const ValueType1 *s, const ValueType2 *copyFromVec, ValueType2 *copyToVecBlock, const dftfe::global_size_type *copyFromVecStartingContiguousBlockIds)
 
void add (double *y, const double *x, const double alpha, const dftfe::size_type size)
 
template<typename ValueType >
void sadd (ValueType *y, ValueType *x, const ValueType beta, const dftfe::size_type size)
 
+

Constructor & Destructor Documentation

+ +

◆ BLASWrapper()

+ +
+
+ +
+
+

Member Function Documentation

+ +

◆ add()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::add (double * y,
const double * x,
const double alpha,
const dftfe::size_type size )
+
+ +
+
+ +

◆ axpby()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::axpby (const unsigned int n,
const ValueType2 alpha,
const ValueType1 * x,
const ValueType2 beta,
ValueType1 * y ) const
+
+ +
+
+ +

◆ axpyStridedBlockAtomicAdd() [1/2]

+ +
+
+
+template<typename ValueType >
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::axpyStridedBlockAtomicAdd (const dftfe::size_type contiguousBlockSize,
const dftfe::size_type numContiguousBlocks,
const ValueType * addFromVec,
ValueType * addToVec,
const dftfe::global_size_type * addToVecStartingContiguousBlockIds ) const
+
+ +
+
+ +

◆ axpyStridedBlockAtomicAdd() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::axpyStridedBlockAtomicAdd (const dftfe::size_type contiguousBlockSize,
const dftfe::size_type numContiguousBlocks,
const ValueType1 a,
const ValueType1 * s,
const ValueType2 * addFromVec,
ValueType2 * addToVec,
const dftfe::global_size_type * addToVecStartingContiguousBlockIds ) const
+
+ +
+
+ +

◆ copyComplexArrToRealArrs()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::copyComplexArrToRealArrs (const dftfe::size_type size,
const ValueTypeComplex * complexArr,
ValueTypeReal * realArr,
ValueTypeReal * imagArr )
+
+ +
+
+ +

◆ copyRealArrsToComplexArr()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::copyRealArrsToComplexArr (const dftfe::size_type size,
const ValueTypeReal * realArr,
const ValueTypeReal * imagArr,
ValueTypeComplex * complexArr )
+
+ +
+
+ +

◆ copyValueType1ArrToValueType2Arr()

+ +
+
+ + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::copyValueType1ArrToValueType2Arr (const dftfe::size_type size,
const ValueType1 * valueType1Arr,
ValueType2 * valueType2Arr )
+
+ +
+
+ +

◆ sadd()

+ +
+
+
+template<typename ValueType >
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::sadd (ValueType * y,
ValueType * x,
const ValueType beta,
const dftfe::size_type size )
+
+ +
+
+ +

◆ stridedBlockScale()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::stridedBlockScale (const dftfe::size_type contiguousBlockSize,
const dftfe::size_type numContiguousBlocks,
const ValueType1 a,
const ValueType1 * s,
ValueType2 * x )
+
+ +
+
+ +

◆ stridedBlockScaleCopy()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::stridedBlockScaleCopy (const dftfe::size_type contiguousBlockSize,
const dftfe::size_type numContiguousBlocks,
const ValueType1 a,
const ValueType1 * s,
const ValueType2 * copyFromVec,
ValueType2 * copyToVecBlock,
const dftfe::global_size_type * copyFromVecStartingContiguousBlockIds )
+
+ +
+
+ +

◆ stridedCopyConstantStride()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::stridedCopyConstantStride (const dftfe::size_type blockSize,
const dftfe::size_type strideTo,
const dftfe::size_type strideFrom,
const dftfe::size_type numBlocks,
const dftfe::size_type startingToId,
const dftfe::size_type startingFromId,
const ValueType1 * copyFromVec,
ValueType2 * copyToVec )
+
+ +
+
+ +

◆ stridedCopyFromBlock()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::stridedCopyFromBlock (const dftfe::size_type contiguousBlockSize,
const dftfe::size_type numContiguousBlocks,
const ValueType1 * copyFromVecBlock,
ValueType2 * copyToVec,
const dftfe::global_size_type * copyFromVecStartingContiguousBlockIds )
+
+ +
+
+ +

◆ stridedCopyFromBlockConstantStride()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::stridedCopyFromBlockConstantStride (const dftfe::size_type blockSizeTo,
const dftfe::size_type blockSizeFrom,
const dftfe::size_type numBlocks,
const dftfe::size_type startingId,
const ValueType1 * copyFromVec,
ValueType2 * copyToVec )
+
+ +
+
+ +

◆ stridedCopyToBlock()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::stridedCopyToBlock (const dftfe::size_type contiguousBlockSize,
const dftfe::size_type numContiguousBlocks,
const ValueType1 * copyFromVec,
ValueType2 * copyToVecBlock,
const dftfe::global_size_type * copyFromVecStartingContiguousBlockIds )
+
+ +
+
+ +

◆ stridedCopyToBlockConstantStride()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::stridedCopyToBlockConstantStride (const dftfe::size_type blockSizeTo,
const dftfe::size_type blockSizeFrom,
const dftfe::size_type numBlocks,
const dftfe::size_type startingId,
const ValueType1 * copyFromVec,
ValueType2 * copyToVec )
+
+ +
+
+ +

◆ xaxpy() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xaxpy (const unsigned int n,
const double * alpha,
const double * x,
const unsigned int incx,
double * y,
const unsigned int incy ) const
+
+ +
+
+ +

◆ xaxpy() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xaxpy (const unsigned int n,
const std::complex< double > * alpha,
const std::complex< double > * x,
const unsigned int incx,
std::complex< double > * y,
const unsigned int incy ) const
+
+ +
+
+ +

◆ xcopy() [1/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xcopy (const unsigned int n,
const double * x,
const unsigned int incx,
double * y,
const unsigned int incy ) const
+
+ +
+
+ +

◆ xcopy() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xcopy (const unsigned int n,
const float * x,
const unsigned int incx,
float * y,
const unsigned int incy ) const
+
+ +
+
+ +

◆ xcopy() [3/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xcopy (const unsigned int n,
const std::complex< double > * x,
const unsigned int incx,
std::complex< double > * y,
const unsigned int incy ) const
+
+ +
+
+ +

◆ xcopy() [4/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xcopy (const unsigned int n,
const std::complex< float > * x,
const unsigned int incx,
std::complex< float > * y,
const unsigned int incy ) const
+
+ +
+
+ +

◆ xdot() [1/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xdot (const unsigned int N,
const double * X,
const unsigned int INCX,
const double * Y,
const unsigned int INCY,
const MPI_Comm & mpi_communicator,
double * result ) const
+
+ +
+
+ +

◆ xdot() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xdot (const unsigned int N,
const double * X,
const unsigned int INCX,
const double * Y,
const unsigned int INCY,
double * result ) const
+
+ +
+
+ +

◆ xdot() [3/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xdot (const unsigned int N,
const std::complex< double > * X,
const unsigned int INCX,
const std::complex< double > * Y,
const unsigned int INCY,
const MPI_Comm & mpi_communicator,
std::complex< double > * result ) const
+
+ +
+
+ +

◆ xdot() [4/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xdot (const unsigned int N,
const std::complex< double > * X,
const unsigned int INCX,
const std::complex< double > * Y,
const unsigned int INCY,
std::complex< double > * result ) const
+
+ +
+
+ +

◆ xgemm() [1/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemm (const char transA,
const char transB,
const unsigned int m,
const unsigned int n,
const unsigned int k,
const double * alpha,
const double * A,
const unsigned int lda,
const double * B,
const unsigned int ldb,
const double * beta,
double * C,
const unsigned int ldc ) const
+
+ +
+
+ +

◆ xgemm() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemm (const char transA,
const char transB,
const unsigned int m,
const unsigned int n,
const unsigned int k,
const float * alpha,
const float * A,
const unsigned int lda,
const float * B,
const unsigned int ldb,
const float * beta,
float * C,
const unsigned int ldc ) const
+
+ +
+
+ +

◆ xgemm() [3/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemm (const char transA,
const char transB,
const unsigned int m,
const unsigned int n,
const unsigned int k,
const std::complex< double > * alpha,
const std::complex< double > * A,
const unsigned int lda,
const std::complex< double > * B,
const unsigned int ldb,
const std::complex< double > * beta,
std::complex< double > * C,
const unsigned int ldc ) const
+
+ +
+
+ +

◆ xgemm() [4/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemm (const char transA,
const char transB,
const unsigned int m,
const unsigned int n,
const unsigned int k,
const std::complex< float > * alpha,
const std::complex< float > * A,
const unsigned int lda,
const std::complex< float > * B,
const unsigned int ldb,
const std::complex< float > * beta,
std::complex< float > * C,
const unsigned int ldc ) const
+
+ +
+
+ +

◆ xgemmBatched() [1/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmBatched (const char transA,
const char transB,
const unsigned int m,
const unsigned int n,
const unsigned int k,
const double * alpha,
const double * A[],
const unsigned int lda,
const double * B[],
const unsigned int ldb,
const double * beta,
double * C[],
const unsigned int ldc,
const int batchCount ) const
+
+ +
+
+ +

◆ xgemmBatched() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmBatched (const char transA,
const char transB,
const unsigned int m,
const unsigned int n,
const unsigned int k,
const float * alpha,
const float * A[],
const unsigned int lda,
const float * B[],
const unsigned int ldb,
const float * beta,
float * C[],
const unsigned int ldc,
const int batchCount ) const
+
+ +
+
+ +

◆ xgemmBatched() [3/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmBatched (const char transA,
const char transB,
const unsigned int m,
const unsigned int n,
const unsigned int k,
const std::complex< double > * alpha,
const std::complex< double > * A[],
const unsigned int lda,
const std::complex< double > * B[],
const unsigned int ldb,
const std::complex< double > * beta,
std::complex< double > * C[],
const unsigned int ldc,
const int batchCount ) const
+
+ +
+
+ +

◆ xgemmBatched() [4/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmBatched (const char transA,
const char transB,
const unsigned int m,
const unsigned int n,
const unsigned int k,
const std::complex< float > * alpha,
const std::complex< float > * A[],
const unsigned int lda,
const std::complex< float > * B[],
const unsigned int ldb,
const std::complex< float > * beta,
std::complex< float > * C[],
const unsigned int ldc,
const int batchCount ) const
+
+ +
+
+ +

◆ xgemmStridedBatched() [1/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmStridedBatched (const char transA,
const char transB,
const unsigned int m,
const unsigned int n,
const unsigned int k,
const double * alpha,
const double * A,
const unsigned int lda,
long long int strideA,
const double * B,
const unsigned int ldb,
long long int strideB,
const double * beta,
double * C,
const unsigned int ldc,
long long int strideC,
const int batchCount ) const
+
+ +
+
+ +

◆ xgemmStridedBatched() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmStridedBatched (const char transA,
const char transB,
const unsigned int m,
const unsigned int n,
const unsigned int k,
const float * alpha,
const float * A,
const unsigned int lda,
long long int strideA,
const float * B,
const unsigned int ldb,
long long int strideB,
const float * beta,
float * C,
const unsigned int ldc,
long long int strideC,
const int batchCount ) const
+
+ +
+
+ +

◆ xgemmStridedBatched() [3/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmStridedBatched (const char transA,
const char transB,
const unsigned int m,
const unsigned int n,
const unsigned int k,
const std::complex< double > * alpha,
const std::complex< double > * A,
const unsigned int lda,
long long int strideA,
const std::complex< double > * B,
const unsigned int ldb,
long long int strideB,
const std::complex< double > * beta,
std::complex< double > * C,
const unsigned int ldc,
long long int strideC,
const int batchCount ) const
+
+ +
+
+ +

◆ xgemmStridedBatched() [4/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmStridedBatched (const char transA,
const char transB,
const unsigned int m,
const unsigned int n,
const unsigned int k,
const std::complex< float > * alpha,
const std::complex< float > * A,
const unsigned int lda,
long long int strideA,
const std::complex< float > * B,
const unsigned int ldb,
long long int strideB,
const std::complex< float > * beta,
std::complex< float > * C,
const unsigned int ldc,
long long int strideC,
const int batchCount ) const
+
+ +
+
+ +

◆ xgemv() [1/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemv (const char transA,
const unsigned int m,
const unsigned int n,
const double * alpha,
const double * A,
const unsigned int lda,
const double * x,
const unsigned int incx,
const double * beta,
double * y,
const unsigned int incy ) const
+
+ +
+
+ +

◆ xgemv() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemv (const char transA,
const unsigned int m,
const unsigned int n,
const float * alpha,
const float * A,
const unsigned int lda,
const float * x,
const unsigned int incx,
const float * beta,
float * y,
const unsigned int incy ) const
+
+ +
+
+ +

◆ xgemv() [3/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemv (const char transA,
const unsigned int m,
const unsigned int n,
const std::complex< double > * alpha,
const std::complex< double > * A,
const unsigned int lda,
const std::complex< double > * x,
const unsigned int incx,
const std::complex< double > * beta,
std::complex< double > * y,
const unsigned int incy ) const
+
+ +
+
+ +

◆ xgemv() [4/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemv (const char transA,
const unsigned int m,
const unsigned int n,
const std::complex< float > * alpha,
const std::complex< float > * A,
const unsigned int lda,
const std::complex< float > * x,
const unsigned int incx,
const std::complex< float > * beta,
std::complex< float > * y,
const unsigned int incy ) const
+
+ +
+
+ +

◆ xnrm2() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xnrm2 (const unsigned int n,
const double * x,
const unsigned int incx,
const MPI_Comm & mpi_communicator,
double * result ) const
+
+ +
+
+ +

◆ xnrm2() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xnrm2 (const unsigned int n,
const std::complex< double > * x,
const unsigned int incx,
const MPI_Comm & mpi_communicator,
double * result ) const
+
+ +
+
+ +

◆ xscal()

+ +
+
+ +
+
+ +

◆ xsymv()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xsymv (const char UPLO,
const unsigned int N,
const double * alpha,
const double * A,
const unsigned int LDA,
const double * X,
const unsigned int INCX,
const double * beta,
double * C,
const unsigned int INCY ) const
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1linear_algebra_1_1_multi_vector-members.html b/classdftfe_1_1linear_algebra_1_1_multi_vector-members.html new file mode 100644 index 000000000..00b0d2153 --- /dev/null +++ b/classdftfe_1_1linear_algebra_1_1_multi_vector-members.html @@ -0,0 +1,152 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > Member List
+
+
+ +

This is the complete list of members for dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accumulateAddLocallyOwned(const size_type communicationChannel=0)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
accumulateAddLocallyOwnedBegin(const size_type communicationChannel=0)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
accumulateAddLocallyOwnedEnd()dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
add(const ValueBaseType *valVec, const MultiVector &u)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
add(const ValueBaseType val, const MultiVector &u)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
addAndScale(const ValueBaseType1 valScale, const ValueBaseType2 valAdd, const MultiVector &u)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
begin()dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
begin() constdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
const_iterator typedefdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
const_reference typedefdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
d_ghostSizedftfe::linearAlgebra::MultiVector< ValueType, memorySpace >private
d_globalSizedftfe::linearAlgebra::MultiVector< ValueType, memorySpace >private
d_locallyOwnedSizedftfe::linearAlgebra::MultiVector< ValueType, memorySpace >private
d_localSizedftfe::linearAlgebra::MultiVector< ValueType, memorySpace >private
d_mpiCommunicatorP2Pdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >private
d_mpiPatternP2Pdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >private
d_numVectorsdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >private
d_storagedftfe::linearAlgebra::MultiVector< ValueType, memorySpace >private
data()dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
data() constdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
dot(const MultiVector &u, ValueType *dotVec)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
end()dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
end() constdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
getMPIPatternP2P() constdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
ghostSize() constdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
globalSize() constdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
isCompatible(const MultiVector< ValueType, memorySpace > &rhs) constdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
iterator typedefdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
l2Norm(ValueBaseType *normVec) constdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
locallyOwnedSize() constdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
localSize() constdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
MultiVector()=defaultdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
MultiVector(const size_type size, const size_type numVectors, const ValueType initVal=0)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
MultiVector(std::unique_ptr< typename MultiVector< ValueType, memorySpace >::Storage > storage, size_type numVectors)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
MultiVector(std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P, const size_type numVectors, const ValueType initVal=0)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
MultiVector(std::unique_ptr< typename MultiVector< ValueType, memorySpace >::Storage > &storage, std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P, const size_type numVectors)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
MultiVector(const std::pair< global_size_type, global_size_type > locallyOwnedRange, const std::vector< global_size_type > &ghostIndices, const MPI_Comm &mpiComm, const size_type numVectors, ValueType initVal=0)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
MultiVector(const std::pair< global_size_type, global_size_type > locallyOwnedRange, const MPI_Comm &mpiComm, const size_type numVectors, const ValueType initVal=0)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
MultiVector(const global_size_type globalSize, const MPI_Comm &mpiComm, const size_type numVectors, const ValueType initVal=0)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
MultiVector(const MultiVector &u)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
MultiVector(const MultiVector &u, const ValueType initVal=0)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
MultiVector(MultiVector &&u) noexceptdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
numVectors() constdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
operator=(const MultiVector &u)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
operator=(MultiVector &&u)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
pointer typedefdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
reference typedefdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
reinit(std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P, const size_type numVectors, const ValueType initVal=0)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
reinit(const MultiVector &u)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
scale(const ValueBaseType val)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
scaleAndAdd(const ValueBaseType1 valScale, const ValueBaseType2 valAdd, const MultiVector &u)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
setCommunicationPrecision(utils::mpi::communicationPrecision commPrecision)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
setValue(const ValueType val)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
Storage typedefdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
swap(MultiVector &u)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
updateGhostValues(const size_type communicationChannel=0)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
updateGhostValuesBegin(const size_type communicationChannel=0)dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
updateGhostValuesEnd()dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
value_type typedefdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
zeroOutGhosts()dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
~MultiVector()=defaultdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >
+ + + + diff --git a/classdftfe_1_1linear_algebra_1_1_multi_vector.html b/classdftfe_1_1linear_algebra_1_1_multi_vector.html new file mode 100644 index 000000000..6c9fc6f9d --- /dev/null +++ b/classdftfe_1_1linear_algebra_1_1_multi_vector.html @@ -0,0 +1,1795 @@ + + + + + + + +DFT-FE: dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > Class Template Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::linearAlgebra::MultiVector< ValueType, memorySpace > Class Template Reference
+
+
+ +

An class template to encapsulate a MultiVector. A MultiVector is a collection of $N$ vectors belonging to the same finite-dimensional vector space, where usual notion of vector size denotes the dimension of the vector space. Note that this in the mathematical sense and not in the sense of an multi-dimensional array.The MultiVector is stored contiguously with the vector index being the fastest index, or in other words a matrix of size $M \times N$ in row major format with $M $ denoting the dimension of the vector space (size of individual vector). + More...

+ +

#include <MultiVector.h>

+ + + + + + + + + + + + + + + + +

+Public Types

using Storage = dftfe::utils::MemoryStorage<ValueType, memorySpace>
 
using value_type = typename Storage::value_type
 
using pointer = typename Storage::pointer
 
using reference = typename Storage::reference
 
using const_reference = typename Storage::const_reference
 
using iterator = typename Storage::iterator
 
using const_iterator = typename Storage::const_iterator
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 MultiVector ()=default
 Default Constructor.
 
 ~MultiVector ()=default
 Default Destructor.
 
 MultiVector (const size_type size, const size_type numVectors, const ValueType initVal=0)
 Constructor for serial MultiVector with vector size, number of vectors and initial value arguments.
 
 MultiVector (std::unique_ptr< typename MultiVector< ValueType, memorySpace >::Storage > storage, size_type numVectors)
 Constructor for a \serial MultiVector with a predefined MultiVector::Storage (i.e., utils::MemoryStorage). This constructor transfers the ownership of the input Storage to the MultiVector. This is useful when one does not want to allocate new memory and instead use memory allocated in the MultiVector::Storage (i.e., utils::MemoryStorage). The locallyOwnedSize, ghostSize, etc., are automatically set using the size of the input Storage object.
 
 MultiVector (std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P, const size_type numVectors, const ValueType initVal=0)
 Constructor for a distributed MultiVector based on an input MPIPatternP2P.
 
 MultiVector (std::unique_ptr< typename MultiVector< ValueType, memorySpace >::Storage > &storage, std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P, const size_type numVectors)
 Constructor for a distributed MultiVector with a predefined MultiVector::Storage (i.e., utils::MemoryStorage) and MPIPatternP2P. This constructor transfers the ownership of the input Storage to the MultiVector. This is useful when one does not want to allocate new memory and instead use memory allocated in the input MultiVector::Storage (i.e., utils::MemoryStorage).
 
 MultiVector (const std::pair< global_size_type, global_size_type > locallyOwnedRange, const std::vector< global_size_type > &ghostIndices, const MPI_Comm &mpiComm, const size_type numVectors, ValueType initVal=0)
 Constructor for a \distributed MultiVector based on locally owned and ghost indices.
 
 MultiVector (const std::pair< global_size_type, global_size_type > locallyOwnedRange, const MPI_Comm &mpiComm, const size_type numVectors, const ValueType initVal=0)
 Constructor for a special case of distributed MultiVector where none none of the processors have any ghost indices.
 
 MultiVector (const global_size_type globalSize, const MPI_Comm &mpiComm, const size_type numVectors, const ValueType initVal=0)
 Constructor for a distributed MultiVector based on total number of global indices. The resulting MultiVector will not contain any ghost indices on any of the processors. Internally, the vector is divided to ensure as much equitable distribution across all the processors much as possible.
 
 MultiVector (const MultiVector &u)
 Copy constructor.
 
 MultiVector (const MultiVector &u, const ValueType initVal=0)
 Copy constructor with reinitialisation.
 
 MultiVector (MultiVector &&u) noexcept
 Move constructor.
 
MultiVectoroperator= (const MultiVector &u)
 Copy assignment operator.
 
MultiVectoroperator= (MultiVector &&u)
 Move assignment operator.
 
void swap (MultiVector &u)
 pointer swap
 
void reinit (std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P, const size_type numVectors, const ValueType initVal=0)
 reinit for a distributed MultiVector based on an input MPIPatternP2P.
 
void reinit (const MultiVector &u)
 reinit based on an input distributed MultiVector.
 
iterator begin ()
 Return iterator pointing to the beginning of MultiVector data.
 
const_iterator begin () const
 Return iterator pointing to the beginning of MultiVector data.
 
iterator end ()
 Return iterator pointing to the end of MultiVector data.
 
const_iterator end () const
 Return iterator pointing to the end of MultiVector data.
 
ValueTypedata ()
 Return the raw pointer to the MultiVector data.
 
const ValueTypedata () const
 Return the constant raw pointer to the MultiVector data.
 
void setValue (const ValueType val)
 Set all entries of the MultiVector to a given value.
 
template<typename ValueBaseType >
void scale (const ValueBaseType val)
 
template<typename ValueBaseType >
void add (const ValueBaseType *valVec, const MultiVector &u)
 
template<typename ValueBaseType >
void add (const ValueBaseType val, const MultiVector &u)
 
template<typename ValueBaseType1 , typename ValueBaseType2 >
void addAndScale (const ValueBaseType1 valScale, const ValueBaseType2 valAdd, const MultiVector &u)
 
template<typename ValueBaseType1 , typename ValueBaseType2 >
void scaleAndAdd (const ValueBaseType1 valScale, const ValueBaseType2 valAdd, const MultiVector &u)
 
void dot (const MultiVector &u, ValueType *dotVec)
 
void zeroOutGhosts ()
 
void updateGhostValues (const size_type communicationChannel=0)
 
void accumulateAddLocallyOwned (const size_type communicationChannel=0)
 
void updateGhostValuesBegin (const size_type communicationChannel=0)
 
void updateGhostValuesEnd ()
 
void accumulateAddLocallyOwnedBegin (const size_type communicationChannel=0)
 
void accumulateAddLocallyOwnedEnd ()
 
bool isCompatible (const MultiVector< ValueType, memorySpace > &rhs) const
 
std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > getMPIPatternP2P () const
 
template<typename ValueBaseType >
void l2Norm (ValueBaseType *normVec) const
 
void setCommunicationPrecision (utils::mpi::communicationPrecision commPrecision)
 
global_size_type globalSize () const
 
size_type localSize () const
 
size_type locallyOwnedSize () const
 
size_type ghostSize () const
 
size_type numVectors () const
 
+ + + + + + + + + + + + + + + + + +

+Private Attributes

std::unique_ptr< Storaged_storage
 
size_type d_localSize
 
global_size_type d_globalSize
 
size_type d_locallyOwnedSize
 
size_type d_ghostSize
 
size_type d_numVectors
 
std::unique_ptr< utils::mpi::MPICommunicatorP2P< ValueType, memorySpace > > d_mpiCommunicatorP2P
 
std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > d_mpiPatternP2P
 
+

Detailed Description

+
template<typename ValueType, dftfe::utils::MemorySpace memorySpace>
+class dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >

An class template to encapsulate a MultiVector. A MultiVector is a collection of $N$ vectors belonging to the same finite-dimensional vector space, where usual notion of vector size denotes the dimension of the vector space. Note that this in the mathematical sense and not in the sense of an multi-dimensional array.The MultiVector is stored contiguously with the vector index being the fastest index, or in other words a matrix of size $M \times N$ in row major format with $M $ denoting the dimension of the vector space (size of individual vector).

+

This class handles both serial and distributed MultiVector in a unfied way. There are different constructors provided for the serial and distributed case.

+

The serial MultiVector, as the name suggests, resides entirely in a processor.

+

The distributed MultiVector, on the other hand, is distributed across a set of processors. The storage of each of the $N$ vectors in the distributed MultiVector in a processor follows along similar lines to a distributed Vector object and comprises of two parts:

    +
  1. locally owned part: A part of the distribute MultiVector, defined through a contiguous range of indices $[a,b)$ ( $a$ is included, but $b$ is not), for which the current processor is the sole owner. The size of the locally owned part (i.e., $b-a$) is termed as locallyOwnedSize. Note that the range of indices that comprises the locally owned part (i.e., $[a,b)$) is same for all the $N$ vectors in the MultiVector
  2. +
  3. ghost part: Part of the MultiVector, defined through a set of ghost indices, that are owned by other processors. The size of ghost indices for each vector is termed as ghostSize. Note that the set of indices that define the ghost indices are same for all the $N$ vectors in the MultiVector
  4. +
+

The global size of each vector in the distributed MultiVector (i.e., the number of unique indices across all the processors) is simply termed as size. Additionally, we define localSize = locallyOwnedSize + ghostSize.

+

We handle the serial MultiVector as a special case of the distributed MultiVector, wherein size = locallyOwnedSize and ghostSize = 0.

+
Note
While typically one would link to an MPI library while compiling this class, care is taken to seamlessly allow usage of this class even while not linking to an MPI library. To do so, we have our own MPI wrappers that redirect to the MPI library's function calls and definitions while linking to an MPI library. While not linking to an MPI library, the MPI wrappers provide equivalent functions and definitions that mimic the MPI functions and definitions, albeit for a single processor. This allows the user of this class to seamlessly switch between linking and de-linking to an MPI library without any change in the code and with the expected behavior.
+
+Note that the case of not linking to an MPI library and the case of creating a serial mult-Vector are two independent things. One can still create a serial MultiVector while linking to an MPI library and running the code across multipe processors. That is, one can create a serial MultiVector in one or more than one of the set of processors used when running in parallel. Internally, we handle this by using MPI_COMM_SELF as our MPI_Comm for the serial MultiVector (i.e., the processor does self communication). However, while not linking to an MPI library (which by definition means running on a single processor), there is no notion of communication (neither with self nor with other processors). In such case, both serial and distributed mult-Vector mean the same thing and the MPI wrappers ensure the expected behavior (i.e., the behavior of a MultiVector while using just one processor)
+
Template Parameters
+ + + +
templateparameter ValueType defines underlying datatype being stored in the MultiVector (i.e., int, double, complex<double>, etc.)
templateparameter memorySpace defines the MemorySpace (i.e., HOST or DEVICE) in which the MultiVector must reside.
+
+
+
Note
Broadly, there are two ways of constructing a distributed MultiVector.
    +
  1. [Prefered and efficient approach] The first approach takes a pointer to an MPIPatternP2P as an input argument (along with other arguments). The MPIPatternP2P, in turn, contains all the information regarding the locally owned and ghost part of the MultiVector as well as the interaction map between processors. This is the most efficient way of constructing a distributed MultiVector as it allows for reusing of an already constructed MPIPatternP2P.
  2. +
  3. [ Expensive approach] The second approach takes in the locally owned, ghost indices or the total number of indices across all the processors and internally creates an MPIPatternP2P object. Given that the creation of an MPIPatternP2P is expensive, this route of constructing a distributed MultiVector should be avoided.
  4. +
+
+

Member Typedef Documentation

+ +

◆ const_iterator

+ + + +

◆ const_reference

+ + + +

◆ iterator

+ + + +

◆ pointer

+ + + +

◆ reference

+ + + +

◆ Storage

+ + + +

◆ value_type

+ + +

Constructor & Destructor Documentation

+ +

◆ MultiVector() [1/11]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::MultiVector ()
+
+default
+
+ +

Default Constructor.

+ +
+
+ +

◆ ~MultiVector()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::~MultiVector ()
+
+default
+
+ +

Default Destructor.

+ +
+
+ +

◆ MultiVector() [2/11]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + +
dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::MultiVector (const size_type size,
const size_type numVectors,
const ValueType initVal = 0 )
+
+ +

Constructor for serial MultiVector with vector size, number of vectors and initial value arguments.

+
Parameters
+ + + + +
[in]sizesize of each vector in the MultiVector
[in]numVectorsnumber of vectors in the MultiVector
[in]initValinitial value of elements of the MultiVector
+
+
+ +
+
+ +

◆ MultiVector() [3/11]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + +
dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::MultiVector (std::unique_ptr< typename MultiVector< ValueType, memorySpace >::Storage > storage,
size_type numVectors )
+
+ +

Constructor for a \serial MultiVector with a predefined MultiVector::Storage (i.e., utils::MemoryStorage). This constructor transfers the ownership of the input Storage to the MultiVector. This is useful when one does not want to allocate new memory and instead use memory allocated in the MultiVector::Storage (i.e., utils::MemoryStorage). The locallyOwnedSize, ghostSize, etc., are automatically set using the size of the input Storage object.

+
Parameters
+ + + +
[in]storageunique_ptr to MultiVector::Storage whose ownership is to be transfered to the MultiVector
[in]numVectorsnumber of vectors in the MultiVector
+
+
+
Note
This Constructor transfers the ownership from the input unique_ptr storage to the internal data member of the MultiVector. Thus, after the function call storage will point to NULL and any access through storage will lead to undefined behavior.
+ +
+
+ +

◆ MultiVector() [4/11]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + +
dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::MultiVector (std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P,
const size_type numVectors,
const ValueType initVal = 0 )
+
+ +

Constructor for a distributed MultiVector based on an input MPIPatternP2P.

+
Parameters
+ + + + +
[in]mpiPatternP2PA shared_ptr to const MPIPatternP2P based on which the distributed MultiVector will be created.
[in]numVectorsnumber of vectors in the MultiVector
[in]initValvalue with which the MultiVector shoud be initialized
+
+
+ +
+
+ +

◆ MultiVector() [5/11]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + +
dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::MultiVector (std::unique_ptr< typename MultiVector< ValueType, memorySpace >::Storage > & storage,
std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P,
const size_type numVectors )
+
+ +

Constructor for a distributed MultiVector with a predefined MultiVector::Storage (i.e., utils::MemoryStorage) and MPIPatternP2P. This constructor transfers the ownership of the input Storage to the MultiVector. This is useful when one does not want to allocate new memory and instead use memory allocated in the input MultiVector::Storage (i.e., utils::MemoryStorage).

+
Parameters
+ + + + +
[in]storageunique_ptr to MultiVector::Storage whose ownership is to be transfered to the MultiVector
[in]mpiPatternP2PA shared_ptr to const MPIPatternP2P based on which the distributed MultiVector will be created.
[in]numVectorsnumber of vectors in the MultiVector
+
+
+
Note
This Constructor transfers the ownership from the input unique_ptr storage to the internal data member of the MultiVector. Thus, after the function call storage will point to NULL and any access through storage will lead to undefined behavior.
+ +
+
+ +

◆ MultiVector() [6/11]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::MultiVector (const std::pair< global_size_type, global_size_type > locallyOwnedRange,
const std::vector< global_size_type > & ghostIndices,
const MPI_Comm & mpiComm,
const size_type numVectors,
ValueType initVal = 0 )
+
+ +

Constructor for a \distributed MultiVector based on locally owned and ghost indices.

+
Note
This way of construction is expensive. One should use the other constructor based on an input MPIPatternP2P as far as possible.
+
Parameters
+ + + + + + +
[in]locallyOwnedRangea pair $(a,b)$ which defines a range of indices (continuous) that are owned by the current processor.
[in]ghostIndicesvector containing an ordered set of ghost indices (ordered in increasing order and non-repeating)
[in]mpiCommMPI_Comm object associated with the group of processors across which the MultiVector is to be distributed
[in]numVectorsnumber of vectors in the MultiVector
[in]initValvalue with which the MultiVector shoud be initialized
+
+
+
Note
The locallyOwnedRange should be an open interval where the start index is included, but the end index is not included.
+ +
+
+ +

◆ MultiVector() [7/11]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + +
dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::MultiVector (const std::pair< global_size_type, global_size_type > locallyOwnedRange,
const MPI_Comm & mpiComm,
const size_type numVectors,
const ValueType initVal = 0 )
+
+ +

Constructor for a special case of distributed MultiVector where none none of the processors have any ghost indices.

+
Note
This way of construction is expensive. One should use the other constructor based on an input MPIPatternP2P as far as possible.
+
Parameters
+ + + + + +
[in]locallyOwnedRangea pair $(a,b)$ which defines a range of indices (continuous) that are owned by the current processor.
[in]mpiCommMPI_Comm object associated with the group of processors across which the MultiVector is to be distributed
[in]numVectorsnumber of vectors in the MultiVector
[in]initValvalue with which the MultiVector shoud be initialized
+
+
+
Note
The locallyOwnedRange should be an open interval where the start index included, but the end index is not included.
+ +
+
+ +

◆ MultiVector() [8/11]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + +
dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::MultiVector (const global_size_type globalSize,
const MPI_Comm & mpiComm,
const size_type numVectors,
const ValueType initVal = 0 )
+
+ +

Constructor for a distributed MultiVector based on total number of global indices. The resulting MultiVector will not contain any ghost indices on any of the processors. Internally, the vector is divided to ensure as much equitable distribution across all the processors much as possible.

+
Note
This way of construction is expensive. One should use the other constructor based on an input MPIPatternP2P as far as possible. Further, the decomposition is not compatible with other ways of distributed MultiVector construction.
+
Parameters
+ + + + + +
[in]globalSizeTotal number of global indices that is distributed over the processors.
[in]mpiCommMPI_Comm object associated with the group of processors across which the MultiVector is to be distributed
[in]numVectorsnumber of vectors in the MultiVector
[in]initValvalue with which the MultiVector shoud be initialized
+
+
+ +
+
+ +

◆ MultiVector() [9/11]

+ +
+
+ +

Copy constructor.

+
Parameters
+ + +
[in]uMultiVector object to copy from
+
+
+ +
+
+ +

◆ MultiVector() [10/11]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + +
dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::MultiVector (const MultiVector< ValueType, memorySpace > & u,
const ValueType initVal = 0 )
+
+ +

Copy constructor with reinitialisation.

+
Parameters
+ + + +
[in]uMultiVector object to copy from
[in]initValInitial value of the MultiVector
+
+
+ +
+
+ +

◆ MultiVector() [11/11]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::MultiVector (MultiVector< ValueType, memorySpace > && u)
+
+noexcept
+
+ +

Move constructor.

+
Parameters
+ + +
[in]uMultiVector object to move from
+
+
+ +
+
+

Member Function Documentation

+ +

◆ accumulateAddLocallyOwned()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::accumulateAddLocallyOwned (const size_type communicationChannel = 0)
+
+ +
+
+ +

◆ accumulateAddLocallyOwnedBegin()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::accumulateAddLocallyOwnedBegin (const size_type communicationChannel = 0)
+
+ +
+
+ +

◆ accumulateAddLocallyOwnedEnd()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::accumulateAddLocallyOwnedEnd ()
+
+ +
+
+ +

◆ add() [1/2]

+ +
+
+ +
+
+ +

◆ add() [2/2]

+ +
+
+ +
+
+ +

◆ addAndScale()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::addAndScale (const ValueBaseType1 valScale,
const ValueBaseType2 valAdd,
const MultiVector< ValueType, memorySpace > & u )
+
+ +
+
+ +

◆ begin() [1/2]

+ +
+
+ +

Return iterator pointing to the beginning of MultiVector data.

+
Returns
Iterator pointing to the beginning of MultiVector.
+ +
+
+ +

◆ begin() [2/2]

+ +
+
+ +

Return iterator pointing to the beginning of MultiVector data.

+
Returns
Constant iterator pointing to the beginning of MultiVector.
+ +
+
+ +

◆ data() [1/2]

+ +
+
+ +

Return the raw pointer to the MultiVector data.

+
Returns
pointer to data
+ +
+
+ +

◆ data() [2/2]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const ValueType * dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::data () const
+
+ +

Return the constant raw pointer to the MultiVector data.

+
Returns
pointer to const data
+ +
+
+ +

◆ dot()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + +
void dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::dot (const MultiVector< ValueType, memorySpace > & u,
ValueType * dotVec )
+
+ +
+
+ +

◆ end() [1/2]

+ +
+
+ +

Return iterator pointing to the end of MultiVector data.

+
Returns
Iterator pointing to the end of MultiVector.
+ +
+
+ +

◆ end() [2/2]

+ +
+
+ +

Return iterator pointing to the end of MultiVector data.

+
Returns
Constant iterator pointing to the end of MultiVector.
+ +
+
+ +

◆ getMPIPatternP2P()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::getMPIPatternP2P () const
+
+ +
+
+ +

◆ ghostSize()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
size_type dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::ghostSize () const
+
+ +
+
+ +

◆ globalSize()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
global_size_type dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::globalSize () const
+
+ +
+
+ +

◆ isCompatible()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
bool dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::isCompatible (const MultiVector< ValueType, memorySpace > & rhs) const
+
+ +
+
+ +

◆ l2Norm()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+
+template<typename ValueBaseType >
+ + + + + + + +
void dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::l2Norm (ValueBaseType * normVec) const
+
+ +
+
+ +

◆ locallyOwnedSize()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
size_type dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::locallyOwnedSize () const
+
+ +
+
+ +

◆ localSize()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
size_type dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::localSize () const
+
+ +
+
+ +

◆ numVectors()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
size_type dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::numVectors () const
+
+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+ +

Copy assignment operator.

+
Parameters
+ + +
[in]uconst reference to MultiVector object to copy from
+
+
+
Returns
reference to this object after copying data from u
+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+ +

Move assignment operator.

+
Parameters
+ + +
[in]uconst reference to MultiVector object to move from
+
+
+
Returns
reference to this object after moving data from u
+ +
+
+ +

◆ reinit() [1/2]

+ +
+
+ +

reinit based on an input distributed MultiVector.

+ +
+
+ +

◆ reinit() [2/2]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::reinit (std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P,
const size_type numVectors,
const ValueType initVal = 0 )
+
+ +

reinit for a distributed MultiVector based on an input MPIPatternP2P.

+
Parameters
+ + + + +
[in]mpiPatternP2PA shared_ptr to const MPIPatternP2P based on which the distributed MultiVector will be reinitialized.
[in]numVectorsnumber of vectors in the MultiVector
[in]initValvalue with which the MultiVector shoud be reinitialized
+
+
+ +
+
+ +

◆ scale()

+ +
+
+ +
+
+ +

◆ scaleAndAdd()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + +
void dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::scaleAndAdd (const ValueBaseType1 valScale,
const ValueBaseType2 valAdd,
const MultiVector< ValueType, memorySpace > & u )
+
+ +
+
+ +

◆ setCommunicationPrecision()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::setCommunicationPrecision (utils::mpi::communicationPrecision commPrecision)
+
+ +
+
+ +

◆ setValue()

+ +
+
+ +

Set all entries of the MultiVector to a given value.

+
Parameters
+ + +
[in]valThe value to which the entries are to be set
+
+
+ +
+
+ +

◆ swap()

+ +
+
+ +

pointer swap

+ +
+
+ +

◆ updateGhostValues()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::updateGhostValues (const size_type communicationChannel = 0)
+
+ +
+
+ +

◆ updateGhostValuesBegin()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::updateGhostValuesBegin (const size_type communicationChannel = 0)
+
+ +
+
+ +

◆ updateGhostValuesEnd()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::updateGhostValuesEnd ()
+
+ +
+
+ +

◆ zeroOutGhosts()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::zeroOutGhosts ()
+
+ +
+
+

Member Data Documentation

+ +

◆ d_ghostSize

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
size_type dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::d_ghostSize
+
+private
+
+ +
+
+ +

◆ d_globalSize

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
global_size_type dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::d_globalSize
+
+private
+
+ +
+
+ +

◆ d_locallyOwnedSize

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
size_type dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::d_locallyOwnedSize
+
+private
+
+ +
+
+ +

◆ d_localSize

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
size_type dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::d_localSize
+
+private
+
+ +
+
+ +

◆ d_mpiCommunicatorP2P

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::unique_ptr<utils::mpi::MPICommunicatorP2P<ValueType, memorySpace> > dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::d_mpiCommunicatorP2P
+
+private
+
+ +
+
+ +

◆ d_mpiPatternP2P

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr<const utils::mpi::MPIPatternP2P<memorySpace> > dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::d_mpiPatternP2P
+
+private
+
+ +
+
+ +

◆ d_numVectors

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
size_type dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::d_numVectors
+
+private
+
+ +
+
+ +

◆ d_storage

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::unique_ptr<Storage> dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >::d_storage
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1linear_solver-members.html b/classdftfe_1_1linear_solver-members.html new file mode 100644 index 000000000..823557263 --- /dev/null +++ b/classdftfe_1_1linear_solver-members.html @@ -0,0 +1,93 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::linearSolver Member List
+
+
+ +

This is the complete list of members for dftfe::linearSolver, including all inherited members.

+ + + +
linearSolver()dftfe::linearSolver
solve(dealiiLinearSolverProblem &problem, const double relTolerance, const unsigned int maxNumberIterations, const int debugLevel=0, bool distributeFlag=true)=0dftfe::linearSolverpure virtual
+ + + + diff --git a/classdftfe_1_1linear_solver.html b/classdftfe_1_1linear_solver.html new file mode 100644 index 000000000..3f4a986d0 --- /dev/null +++ b/classdftfe_1_1linear_solver.html @@ -0,0 +1,199 @@ + + + + + + + +DFT-FE: dftfe::linearSolver Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::linearSolver Class Referenceabstract
+
+
+ +

Abstract linear solver base class. + More...

+ +

#include <linearSolver.h>

+
+Inheritance diagram for dftfe::linearSolver:
+
+
+ + +dftfe::dealiiLinearSolver + +
+ + + + + + + + +

+Public Member Functions

 linearSolver ()
 Constructor.
 
virtual void solve (dealiiLinearSolverProblem &problem, const double relTolerance, const unsigned int maxNumberIterations, const int debugLevel=0, bool distributeFlag=true)=0
 Solve linear system, A*x=Rhs.
 
+

Detailed Description

+

Abstract linear solver base class.

+
Author
Sambit Das
+

Constructor & Destructor Documentation

+ +

◆ linearSolver()

+ +
+
+ + + + + + + +
dftfe::linearSolver::linearSolver ()
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ solve()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void dftfe::linearSolver::solve (dealiiLinearSolverProblem & problem,
const double relTolerance,
const unsigned int maxNumberIterations,
const int debugLevel = 0,
bool distributeFlag = true )
+
+pure virtual
+
+ +

Solve linear system, A*x=Rhs.

+
Parameters
+ + + + + +
problemlinearSolverProblem object (functor) to compute Rhs and A*x, and preconditioning
relToleranceTolerance (relative) required for convergence.
maxNumberIterationsMaximum number of iterations.
debugLevelDebug output level: 0 - no debug output 1 - limited debug output 2 - all debug output.
+
+
+ +

Implemented in dftfe::dealiiLinearSolver.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1linear_solver.png b/classdftfe_1_1linear_solver.png new file mode 100644 index 0000000000000000000000000000000000000000..7cbcb880383f6e488c3e571bcf4e93f885958d53 GIT binary patch literal 665 zcmeAS@N?(olHy`uVBq!ia0vp^lYlsYgBeI3ZM_4cqyv0HT>t<74`jZ0^R=}9&~gg{ z%>s$(XI?yb@Bk=odNyncP>!=C$S;@y$Oi*+rrB2*7?@N%T^vIy7~jqf%s;Ha)6(y} z>fQhUk6O2|$Yjj%t#p_izAoj#f%N3d;Y+4migKE?WU7eAq$ipaR8C$t4Vvk_vTRb+ z?SFgAmR;$K^_-M^jp?d~KburMjsJ43JRh;!*ZL-B z`RiYy^Bkp&@2l0zH_W=HJZbue`V&jvvp-kZy58RHWwByu_+(AF<}2ZMHtt_}=$)U1 zmfs|`E_o5pPcX*@D|k*?&a1g}$}}Mco5kV`YnFbU5V!v6jBC!fI>M5p1T?ky7;0FB z7%I3_7(R%2Fg(zlz;GZ~fw5t^0~3RPBMZYkCQb$$WCbtdm7mV}tXu^ogq_q*0)s{6 zrRD^WOOqYFTvwK*iZ~Jb$uf>C_YZd`~atckq2L z_;SjJI=xt*-QeKLoMNYXHP(0eB?+x{x3(A03JHwgTe~DWM4f!Us0q literal 0 HcmV?d00001 diff --git a/classdftfe_1_1mesh_movement_affine_transform-members.html b/classdftfe_1_1mesh_movement_affine_transform-members.html new file mode 100644 index 000000000..af7f99c94 --- /dev/null +++ b/classdftfe_1_1mesh_movement_affine_transform-members.html @@ -0,0 +1,122 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::meshMovementAffineTransform Member List
+
+
+ +

This is the complete list of members for dftfe::meshMovementAffineTransform, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeIncrement()dftfe::meshMovementAffineTransformprivate
d_constraintsMoveMeshdftfe::meshMovementClassprotected
d_deformationGradientdftfe::meshMovementAffineTransformprivate
d_dftParamsdftfe::meshMovementClassprotected
d_dofHandlerMoveMeshdftfe::meshMovementClassprotected
d_domainBoundingVectorsdftfe::meshMovementClassprotected
d_incrementalDisplacementdftfe::meshMovementClassprotected
d_isParallelMeshdftfe::meshMovementClassprotected
d_locally_owned_dofsdftfe::meshMovementClassprotected
d_locally_relevant_dofsdftfe::meshMovementClassprotected
d_mpiCommParentdftfe::meshMovementClassprotected
d_periodicity_vectordftfe::meshMovementClassprotected
d_triaPtrdftfe::meshMovementClassprotected
d_triaPtrSerialdftfe::meshMovementClassprotected
FEMoveMeshdftfe::meshMovementClassprotected
finalizeIncrementField()dftfe::meshMovementClassprotected
findClosestVerticesToDestinationPoints(const std::vector< dealii::Point< 3 > > &destinationPoints, std::vector< dealii::Point< 3 > > &closestTriaVertexToDestPointsLocation, std::vector< dealii::Tensor< 1, 3, double > > &dispClosestTriaVerticesToDestPoints)dftfe::meshMovementClass
init(dealii::Triangulation< 3, 3 > &triangulation, dealii::Triangulation< 3, 3 > &serialTriangulation, const std::vector< std::vector< double > > &domainBoundingVectors)dftfe::meshMovementClass
initIncrementField()dftfe::meshMovementClassprotected
initMoved(const std::vector< std::vector< double > > &domainBoundingVectors)dftfe::meshMovementClass
meshMovementAffineTransform(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const dftParameters &dftParams)dftfe::meshMovementAffineTransform
meshMovementClass(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const dftParameters &dftParams)dftfe::meshMovementClass
movedMeshCheck()dftfe::meshMovementClassprotected
moveMesh(const std::vector< dealii::Point< 3 > > &controlPointLocations, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements, const double controllingParameter, const bool moveSubdivided=false)dftfe::meshMovementAffineTransform
moveSubdividedMesh()dftfe::meshMovementClassprotected
mpi_communicatordftfe::meshMovementClassprotected
pcoutdftfe::meshMovementClassprotected
this_mpi_processdftfe::meshMovementClassprotected
transform(const dealii::Tensor< 2, 3, double > &deformationGradient)dftfe::meshMovementAffineTransform
updateTriangulationVertices()dftfe::meshMovementClassprotected
~meshMovementClass()dftfe::meshMovementClassinlinevirtual
+ + + + diff --git a/classdftfe_1_1mesh_movement_affine_transform.html b/classdftfe_1_1mesh_movement_affine_transform.html new file mode 100644 index 000000000..0642be2de --- /dev/null +++ b/classdftfe_1_1mesh_movement_affine_transform.html @@ -0,0 +1,350 @@ + + + + + + + +DFT-FE: dftfe::meshMovementAffineTransform Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::meshMovementAffineTransform Class Reference
+
+
+ +

Class to update triangulation under affine transformation. + More...

+ +

#include <meshMovementAffineTransform.h>

+
+Inheritance diagram for dftfe::meshMovementAffineTransform:
+
+
+ + +dftfe::meshMovementClass + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 meshMovementAffineTransform (const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const dftParameters &dftParams)
 Constructor.
 
std::pair< bool, doubletransform (const dealii::Tensor< 2, 3, double > &deformationGradient)
 Performs affine transformation of the triangulation.
 
std::pair< bool, doublemoveMesh (const std::vector< dealii::Point< 3 > > &controlPointLocations, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements, const double controllingParameter, const bool moveSubdivided=false)
 
- Public Member Functions inherited from dftfe::meshMovementClass
 meshMovementClass (const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const dftParameters &dftParams)
 Constructor.
 
virtual ~meshMovementClass ()
 
void init (dealii::Triangulation< 3, 3 > &triangulation, dealii::Triangulation< 3, 3 > &serialTriangulation, const std::vector< std::vector< double > > &domainBoundingVectors)
 Initializes the required data-structures for a given triangulation.
 
void initMoved (const std::vector< std::vector< double > > &domainBoundingVectors)
 Re-initializes the required data-structures for a given triangulation.
 
void findClosestVerticesToDestinationPoints (const std::vector< dealii::Point< 3 > > &destinationPoints, std::vector< dealii::Point< 3 > > &closestTriaVertexToDestPointsLocation, std::vector< dealii::Tensor< 1, 3, double > > &dispClosestTriaVerticesToDestPoints)
 Finds the closest triangulation vertices to a given vector of position coordinates.
 
+ + + + +

+Private Member Functions

void computeIncrement ()
 internal function which computes the nodal increment field in the local processor
 
+ + + + +

+Private Attributes

dealii::Tensor< 2, 3, doubled_deformationGradient
 storage for the deformation gradient to be applied to the triangulation
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from dftfe::meshMovementClass
void initIncrementField ()
 Initializes the parallel layout of d_incrementalDisplacementParallel.
 
void finalizeIncrementField ()
 
void updateTriangulationVertices ()
 Function which updates the locally relevant triangulation vertices.
 
void moveSubdividedMesh ()
 Function which moves subdivided mesh.
 
std::pair< bool, doublemovedMeshCheck ()
 
- Protected Attributes inherited from dftfe::meshMovementClass
distributedCPUVec< doubled_incrementalDisplacement
 vector of displacements of the triangulation vertices
 
bool d_isParallelMesh
 
dealii::FESystem< 3 > FEMoveMesh
 
dealii::DoFHandler< 3 > d_dofHandlerMoveMesh
 
dealii::parallel::distributed::Triangulation< 3 > * d_triaPtr
 
dealii::Triangulation< 3, 3 > * d_triaPtrSerial
 
dealii::IndexSet d_locally_owned_dofs
 
dealii::IndexSet d_locally_relevant_dofs
 
dealii::AffineConstraints< doubled_constraintsMoveMesh
 
std::vector< dealii::GridTools::PeriodicFacePair< typename dealii::DoFHandler< 3 >::cell_iterator > > d_periodicity_vector
 
std::vector< std::vector< double > > d_domainBoundingVectors
 
const dftParametersd_dftParams
 
MPI_Comm d_mpiCommParent
 
MPI_Comm mpi_communicator
 
const unsigned int this_mpi_process
 
dealii::ConditionalOStream pcout
 
+

Detailed Description

+

Class to update triangulation under affine transformation.

+
Author
Sambit Das
+

Constructor & Destructor Documentation

+ +

◆ meshMovementAffineTransform()

+ +
+
+ + + + + + + + + + + + + + + + +
dftfe::meshMovementAffineTransform::meshMovementAffineTransform (const MPI_Comm & mpi_comm_parent,
const MPI_Comm & mpi_comm_domain,
const dftParameters & dftParams )
+
+ +

Constructor.

+
Parameters
+ + + +
mpi_comm_parentparent mpi communicator
mpi_comm_domainmpi communicator domain decomposition
+
+
+ +
+
+

Member Function Documentation

+ +

◆ computeIncrement()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::meshMovementAffineTransform::computeIncrement ()
+
+private
+
+ +

internal function which computes the nodal increment field in the local processor

+ +
+
+ +

◆ moveMesh()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
std::pair< bool, double > dftfe::meshMovementAffineTransform::moveMesh (const std::vector< dealii::Point< 3 > > & controlPointLocations,
const std::vector< dealii::Tensor< 1, 3, double > > & controlPointDisplacements,
const double controllingParameter,
const bool moveSubdivided = false )
+
+

Not implemented, just present to override the pure virtual from base class

+ +
+
+ +

◆ transform()

+ +
+
+ + + + + + + +
std::pair< bool, double > dftfe::meshMovementAffineTransform::transform (const dealii::Tensor< 2, 3, double > & deformationGradient)
+
+ +

Performs affine transformation of the triangulation.

+
Parameters
+ + +
deformationGradient
+
+
+
Returns
std::pair<bool,double> mesh quality metrics pair(bool for is negative jacobian, maximum jacobian ratio)
+ +
+
+

Member Data Documentation

+ +

◆ d_deformationGradient

+ +
+
+ + + + + +
+ + + + +
dealii::Tensor<2, 3, double> dftfe::meshMovementAffineTransform::d_deformationGradient
+
+private
+
+ +

storage for the deformation gradient to be applied to the triangulation

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1mesh_movement_affine_transform.png b/classdftfe_1_1mesh_movement_affine_transform.png new file mode 100644 index 0000000000000000000000000000000000000000..539d0b4d77197e74e1769235fe8e1c200f9fe07f GIT binary patch literal 815 zcmeAS@N?(olHy`uVBq!ia0vp^cY!#7gBeJ!GHK8QQqloFA+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=B-WJY5_^Dj46+eYoz40!M4V z$;=P`{P$d5C3?Z{?VC4h67SA>T8FmqPq=?$TW)mNjgAhn&!{DqT~>+jEOzBRLP z@voyTmP@3i`(MsF*!=15+r7KroLL=Rb?#v2xhck<N7-yd0*Zer~O#h_j_Bk zM1JnB88aCkggUY_*ol@fJP0O%@j-j(luMhOlG5Tr9FL!Q6AUK0^6Gt8+Rd1mA7XZO zFTe2A?bnU(oqrVl_GJB;GvdFtWW40t^wPpL<+7yVHP#hBQq#8ms(E$%s$02Ap8w^U zx-&N`cgVQ^n^iugeS!9}boD8@rz~c7Zhf^qWn0yRqi54S)_Z^C>UAtuEY;N$+VR`u1uY0%_ zu0Jk2ch9*+F#Bdyux;b9w&-;jerC zK4!T&Gtxc#{>z6G^PW!eJK|FmK + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::meshMovementClass Member List
+
+
+ +

This is the complete list of members for dftfe::meshMovementClass, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
d_constraintsMoveMeshdftfe::meshMovementClassprotected
d_dftParamsdftfe::meshMovementClassprotected
d_dofHandlerMoveMeshdftfe::meshMovementClassprotected
d_domainBoundingVectorsdftfe::meshMovementClassprotected
d_incrementalDisplacementdftfe::meshMovementClassprotected
d_isParallelMeshdftfe::meshMovementClassprotected
d_locally_owned_dofsdftfe::meshMovementClassprotected
d_locally_relevant_dofsdftfe::meshMovementClassprotected
d_mpiCommParentdftfe::meshMovementClassprotected
d_periodicity_vectordftfe::meshMovementClassprotected
d_triaPtrdftfe::meshMovementClassprotected
d_triaPtrSerialdftfe::meshMovementClassprotected
FEMoveMeshdftfe::meshMovementClassprotected
finalizeIncrementField()dftfe::meshMovementClassprotected
findClosestVerticesToDestinationPoints(const std::vector< dealii::Point< 3 > > &destinationPoints, std::vector< dealii::Point< 3 > > &closestTriaVertexToDestPointsLocation, std::vector< dealii::Tensor< 1, 3, double > > &dispClosestTriaVerticesToDestPoints)dftfe::meshMovementClass
init(dealii::Triangulation< 3, 3 > &triangulation, dealii::Triangulation< 3, 3 > &serialTriangulation, const std::vector< std::vector< double > > &domainBoundingVectors)dftfe::meshMovementClass
initIncrementField()dftfe::meshMovementClassprotected
initMoved(const std::vector< std::vector< double > > &domainBoundingVectors)dftfe::meshMovementClass
meshMovementClass(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const dftParameters &dftParams)dftfe::meshMovementClass
movedMeshCheck()dftfe::meshMovementClassprotected
moveSubdividedMesh()dftfe::meshMovementClassprotected
mpi_communicatordftfe::meshMovementClassprotected
pcoutdftfe::meshMovementClassprotected
this_mpi_processdftfe::meshMovementClassprotected
updateTriangulationVertices()dftfe::meshMovementClassprotected
~meshMovementClass()dftfe::meshMovementClassinlinevirtual
+ + + + diff --git a/classdftfe_1_1mesh_movement_class.html b/classdftfe_1_1mesh_movement_class.html new file mode 100644 index 000000000..cfdc479f1 --- /dev/null +++ b/classdftfe_1_1mesh_movement_class.html @@ -0,0 +1,831 @@ + + + + + + + +DFT-FE: dftfe::meshMovementClass Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::meshMovementClass Class Reference
+
+
+ +

Base class to move triangulation vertices. + More...

+ +

#include <meshMovement.h>

+
+Inheritance diagram for dftfe::meshMovementClass:
+
+
+ + +dftfe::meshMovementAffineTransform +dftfe::meshMovementGaussianClass + +
+ + + + + + + + + + + + + + + + +

+Public Member Functions

 meshMovementClass (const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const dftParameters &dftParams)
 Constructor.
 
virtual ~meshMovementClass ()
 
void init (dealii::Triangulation< 3, 3 > &triangulation, dealii::Triangulation< 3, 3 > &serialTriangulation, const std::vector< std::vector< double > > &domainBoundingVectors)
 Initializes the required data-structures for a given triangulation.
 
void initMoved (const std::vector< std::vector< double > > &domainBoundingVectors)
 Re-initializes the required data-structures for a given triangulation.
 
void findClosestVerticesToDestinationPoints (const std::vector< dealii::Point< 3 > > &destinationPoints, std::vector< dealii::Point< 3 > > &closestTriaVertexToDestPointsLocation, std::vector< dealii::Tensor< 1, 3, double > > &dispClosestTriaVerticesToDestPoints)
 Finds the closest triangulation vertices to a given vector of position coordinates.
 
+ + + + + + + + + + + + + + +

+Protected Member Functions

void initIncrementField ()
 Initializes the parallel layout of d_incrementalDisplacementParallel.
 
void finalizeIncrementField ()
 
void updateTriangulationVertices ()
 Function which updates the locally relevant triangulation vertices.
 
void moveSubdividedMesh ()
 Function which moves subdivided mesh.
 
std::pair< bool, doublemovedMeshCheck ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

distributedCPUVec< doubled_incrementalDisplacement
 vector of displacements of the triangulation vertices
 
bool d_isParallelMesh
 
dealii::FESystem< 3 > FEMoveMesh
 
dealii::DoFHandler< 3 > d_dofHandlerMoveMesh
 
dealii::parallel::distributed::Triangulation< 3 > * d_triaPtr
 
dealii::Triangulation< 3, 3 > * d_triaPtrSerial
 
dealii::IndexSet d_locally_owned_dofs
 
dealii::IndexSet d_locally_relevant_dofs
 
dealii::AffineConstraints< doubled_constraintsMoveMesh
 
std::vector< dealii::GridTools::PeriodicFacePair< typename dealii::DoFHandler< 3 >::cell_iterator > > d_periodicity_vector
 
std::vector< std::vector< double > > d_domainBoundingVectors
 
const dftParametersd_dftParams
 
MPI_Comm d_mpiCommParent
 
MPI_Comm mpi_communicator
 
const unsigned int this_mpi_process
 
dealii::ConditionalOStream pcout
 
+

Detailed Description

+

Base class to move triangulation vertices.

+
Author
Sambit Das
+

Constructor & Destructor Documentation

+ +

◆ meshMovementClass()

+ +
+
+ + + + + + + + + + + + + + + + +
dftfe::meshMovementClass::meshMovementClass (const MPI_Comm & mpi_comm_parent,
const MPI_Comm & mpi_comm_domain,
const dftParameters & dftParams )
+
+ +

Constructor.

+
Parameters
+ + + +
[in]mpi_comm_parentparent mpi communicator
[in]mpi_comm_domainmpi communicator for domain decomposition
+
+
+ +
+
+ +

◆ ~meshMovementClass()

+ +
+
+ + + + + +
+ + + + + + + +
virtual dftfe::meshMovementClass::~meshMovementClass ()
+
+inlinevirtual
+
+ +
+
+

Member Function Documentation

+ +

◆ finalizeIncrementField()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::meshMovementClass::finalizeIncrementField ()
+
+protected
+
+

Takes care of communicating the movement of triangulation vertices on processor boundaries, and also takes care of hanging nodes and periodic constraints

+ +
+
+ +

◆ findClosestVerticesToDestinationPoints()

+ +
+
+ + + + + + + + + + + + + + + + +
void dftfe::meshMovementClass::findClosestVerticesToDestinationPoints (const std::vector< dealii::Point< 3 > > & destinationPoints,
std::vector< dealii::Point< 3 > > & closestTriaVertexToDestPointsLocation,
std::vector< dealii::Tensor< 1, 3, double > > & dispClosestTriaVerticesToDestPoints )
+
+ +

Finds the closest triangulation vertices to a given vector of position coordinates.

+
Parameters
+ + + + +
[in]destinationPointsvector of points in cartesian coordinates (origin at center of the domain) to which closest triangulation vertices are desired.
[out]closestTriaVertexToDestPointsLocationvector of positions of the closest triangulation v vertices.
[out]dispClosestTriaVerticesToDestPointsvector of displacements of the destinationPoints from the closest triangulation vertices.
+
+
+ +
+
+ +

◆ init()

+ +
+
+ + + + + + + + + + + + + + + + +
void dftfe::meshMovementClass::init (dealii::Triangulation< 3, 3 > & triangulation,
dealii::Triangulation< 3, 3 > & serialTriangulation,
const std::vector< std::vector< double > > & domainBoundingVectors )
+
+ +

Initializes the required data-structures for a given triangulation.

+
Parameters
+ + + + +
[in]triangulationtriangulation object whose nodes are to be moved
[in]serialtriangulation to create constraints from serial dofHandler (temporary fix)
[in]domainBoundingVectorsdomain vectors of the domain corresponding to the triangulation object.
+
+
+ +
+
+ +

◆ initIncrementField()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::meshMovementClass::initIncrementField ()
+
+protected
+
+ +

Initializes the parallel layout of d_incrementalDisplacementParallel.

+ +
+
+ +

◆ initMoved()

+ +
+
+ + + + + + + +
void dftfe::meshMovementClass::initMoved (const std::vector< std::vector< double > > & domainBoundingVectors)
+
+ +

Re-initializes the required data-structures for a given triangulation.

+
Parameters
+ + +
[in]domainBoundingVectorscurrent domain vectors of the domain corresponding to the triangulation object.
+
+
+ +
+
+ +

◆ movedMeshCheck()

+ +
+
+ + + + + +
+ + + + + + + +
std::pair< bool, double > dftfe::meshMovementClass::movedMeshCheck ()
+
+protected
+
+

Performs periodic matching sanity check and returns the pair<if negative jacobian, maximum inverse jacobian magnitude>

+ +
+
+ +

◆ moveSubdividedMesh()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::meshMovementClass::moveSubdividedMesh ()
+
+protected
+
+ +

Function which moves subdivided mesh.

+ +
+
+ +

◆ updateTriangulationVertices()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::meshMovementClass::updateTriangulationVertices ()
+
+protected
+
+ +

Function which updates the locally relevant triangulation vertices.

+ +
+
+

Member Data Documentation

+ +

◆ d_constraintsMoveMesh

+ +
+
+ + + + + +
+ + + + +
dealii::AffineConstraints<double> dftfe::meshMovementClass::d_constraintsMoveMesh
+
+protected
+
+ +
+
+ +

◆ d_dftParams

+ +
+
+ + + + + +
+ + + + +
const dftParameters& dftfe::meshMovementClass::d_dftParams
+
+protected
+
+ +
+
+ +

◆ d_dofHandlerMoveMesh

+ +
+
+ + + + + +
+ + + + +
dealii::DoFHandler<3> dftfe::meshMovementClass::d_dofHandlerMoveMesh
+
+protected
+
+ +
+
+ +

◆ d_domainBoundingVectors

+ +
+
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::meshMovementClass::d_domainBoundingVectors
+
+protected
+
+ +
+
+ +

◆ d_incrementalDisplacement

+ +
+
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::meshMovementClass::d_incrementalDisplacement
+
+protected
+
+ +

vector of displacements of the triangulation vertices

+ +
+
+ +

◆ d_isParallelMesh

+ +
+
+ + + + + +
+ + + + +
bool dftfe::meshMovementClass::d_isParallelMesh
+
+protected
+
+ +
+
+ +

◆ d_locally_owned_dofs

+ +
+
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::meshMovementClass::d_locally_owned_dofs
+
+protected
+
+ +
+
+ +

◆ d_locally_relevant_dofs

+ +
+
+ + + + + +
+ + + + +
dealii::IndexSet dftfe::meshMovementClass::d_locally_relevant_dofs
+
+protected
+
+ +
+
+ +

◆ d_mpiCommParent

+ +
+
+ + + + + +
+ + + + +
MPI_Comm dftfe::meshMovementClass::d_mpiCommParent
+
+protected
+
+ +
+
+ +

◆ d_periodicity_vector

+ +
+
+ + + + + +
+ + + + +
std::vector<dealii::GridTools::PeriodicFacePair< typename dealii::DoFHandler<3>::cell_iterator> > dftfe::meshMovementClass::d_periodicity_vector
+
+protected
+
+ +
+
+ +

◆ d_triaPtr

+ +
+
+ + + + + +
+ + + + +
dealii::parallel::distributed::Triangulation<3>* dftfe::meshMovementClass::d_triaPtr
+
+protected
+
+ +
+
+ +

◆ d_triaPtrSerial

+ +
+
+ + + + + +
+ + + + +
dealii::Triangulation<3, 3>* dftfe::meshMovementClass::d_triaPtrSerial
+
+protected
+
+ +
+
+ +

◆ FEMoveMesh

+ +
+
+ + + + + +
+ + + + +
dealii::FESystem<3> dftfe::meshMovementClass::FEMoveMesh
+
+protected
+
+ +
+
+ +

◆ mpi_communicator

+ +
+
+ + + + + +
+ + + + +
MPI_Comm dftfe::meshMovementClass::mpi_communicator
+
+protected
+
+ +
+
+ +

◆ pcout

+ +
+
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::meshMovementClass::pcout
+
+protected
+
+ +
+
+ +

◆ this_mpi_process

+ +
+
+ + + + + +
+ + + + +
const unsigned int dftfe::meshMovementClass::this_mpi_process
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1mesh_movement_class.png b/classdftfe_1_1mesh_movement_class.png new file mode 100644 index 0000000000000000000000000000000000000000..5a11a4063f73efd5163d47a1c0d2a8c12b39517b GIT binary patch literal 1163 zcmeAS@N?(olHy`uVBq!ia0y~yU_1h32XHV0$qkHO&j2au0G|-o|Ns93nJ?aaE$u(F z+`>S!Kw|ot7Y`mh0E(NQ4O;?~<17jC3uXZF!N8np_7w&O7BNp3$B+ufw{tJ{EjHkB z3{u4KWORZ$4y4Oy-wDQQiX6ugV#GlKrRTx&E zxoXyU_VdjikB(Z=ZBuvD#@^GdzW0AuO?JTB{JkHaCEQ@yRi2jS?$yzJZ(I8d^PTUv ze|^Y$r17I%(&dQr+pf3#V0v^b)VgEq^|GV460~BbAKd$q(dE76ZOsSk>sK6EcDu}X z-D1NQ3o|+AJ3RL^j^mWZp`z(bVY90J{|jXYt}!ddDdsnJkmr753v}|i)VCp0KFMmpz310`2jfK zzE&&vT{ejgWzcN+zf#(POJSXml0(kjJWoM|Eg;rk1D`I2iBkm_4`~ZBv4lIZaI90UhAUwT|sk$@P%DNngM*J;gUaw&u^B z>pN!~o}RBF`{L&5##=NyllUb8Ck4tx2;+?kK(M?F4zX0P_=b=-Q!KZ0Uwenjq_ z{I&h-{$n)^AGH_m;2lJs$b)NsfEbLxtJN$F>S29EjQQQ z`^M%9u8-Uc%~o$$;%G;=TiF2;`HZxKfHu}7uc6Wxk z_Ye0Dd5)`357~7sn=9w=WwmAA^2J6H%bssI(mt`bmwjTd_Qunf?mjy9^iTQJA1?!D zYuu`meRnY7&rjoz8;;A!YOmv*_sY;;p=@f!g`NMH9*H~M^?RH9MCI-JyNiykmUR5` z{NtqPZ1(vo^;7rV`zo>hj9P4z`0dY9hlM-#E`OBg{pZ!{buVR(yl;sLi+}%hW&ZMg z+x}(-pXIx~QYF@p9TQEMyc1tY UX_cJU02Uhzp00i_>zopr0PG4b1ONa4 literal 0 HcmV?d00001 diff --git a/classdftfe_1_1mesh_movement_gaussian_class-members.html b/classdftfe_1_1mesh_movement_gaussian_class-members.html new file mode 100644 index 000000000..33968fb6c --- /dev/null +++ b/classdftfe_1_1mesh_movement_gaussian_class-members.html @@ -0,0 +1,123 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::meshMovementGaussianClass Member List
+
+
+ +

This is the complete list of members for dftfe::meshMovementGaussianClass, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeIncrement(const std::vector< dealii::Point< 3 > > &controlPointLocations, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements, const std::vector< double > &gaussianWidthParameter, const std::vector< double > &flatTopWidthParameter)dftfe::meshMovementGaussianClassprivate
computeIncrementTwoStep(const std::vector< dealii::Point< 3 > > &controlPointLocations1, const std::vector< dealii::Point< 3 > > &controlPointLocations2, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements1, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements2, const std::vector< double > &gaussianWidthParameter1, const std::vector< double > &gaussianWidthParameter2, const std::vector< double > &flatTopWidthParameter)dftfe::meshMovementGaussianClassprivate
d_constraintsMoveMeshdftfe::meshMovementClassprotected
d_dftParamsdftfe::meshMovementClassprotected
d_dofHandlerMoveMeshdftfe::meshMovementClassprotected
d_domainBoundingVectorsdftfe::meshMovementClassprotected
d_incrementalDisplacementdftfe::meshMovementClassprotected
d_isParallelMeshdftfe::meshMovementClassprotected
d_locally_owned_dofsdftfe::meshMovementClassprotected
d_locally_relevant_dofsdftfe::meshMovementClassprotected
d_mpiCommParentdftfe::meshMovementClassprotected
d_periodicity_vectordftfe::meshMovementClassprotected
d_triaPtrdftfe::meshMovementClassprotected
d_triaPtrSerialdftfe::meshMovementClassprotected
FEMoveMeshdftfe::meshMovementClassprotected
finalizeIncrementField()dftfe::meshMovementClassprotected
findClosestVerticesToDestinationPoints(const std::vector< dealii::Point< 3 > > &destinationPoints, std::vector< dealii::Point< 3 > > &closestTriaVertexToDestPointsLocation, std::vector< dealii::Tensor< 1, 3, double > > &dispClosestTriaVerticesToDestPoints)dftfe::meshMovementClass
init(dealii::Triangulation< 3, 3 > &triangulation, dealii::Triangulation< 3, 3 > &serialTriangulation, const std::vector< std::vector< double > > &domainBoundingVectors)dftfe::meshMovementClass
initIncrementField()dftfe::meshMovementClassprotected
initMoved(const std::vector< std::vector< double > > &domainBoundingVectors)dftfe::meshMovementClass
meshMovementClass(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const dftParameters &dftParams)dftfe::meshMovementClass
meshMovementGaussianClass(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domaim, const dftParameters &dftParams)dftfe::meshMovementGaussianClass
movedMeshCheck()dftfe::meshMovementClassprotected
moveMesh(const std::vector< dealii::Point< 3 > > &controlPointLocations, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements, const std::vector< double > &gaussianWidthParameter, const std::vector< double > &flatTopWidthParameter, const bool moveSubdivided=false)dftfe::meshMovementGaussianClass
moveMeshTwoLevelElectro()dftfe::meshMovementGaussianClass
moveMeshTwoStep(const std::vector< dealii::Point< 3 > > &controlPointLocations1, const std::vector< dealii::Point< 3 > > &controlPointLocations2, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements1, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements2, const std::vector< double > &controllingParameter1, const std::vector< double > &controllingParameter2, const std::vector< double > &flatTopWidthParameter, const bool moveSubdivided=false)dftfe::meshMovementGaussianClass
moveSubdividedMesh()dftfe::meshMovementClassprotected
mpi_communicatordftfe::meshMovementClassprotected
pcoutdftfe::meshMovementClassprotected
this_mpi_processdftfe::meshMovementClassprotected
updateTriangulationVertices()dftfe::meshMovementClassprotected
~meshMovementClass()dftfe::meshMovementClassinlinevirtual
+ + + + diff --git a/classdftfe_1_1mesh_movement_gaussian_class.html b/classdftfe_1_1mesh_movement_gaussian_class.html new file mode 100644 index 000000000..f45cb7120 --- /dev/null +++ b/classdftfe_1_1mesh_movement_gaussian_class.html @@ -0,0 +1,447 @@ + + + + + + + +DFT-FE: dftfe::meshMovementGaussianClass Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::meshMovementGaussianClass Class Reference
+
+
+ +

Class to move triangulation nodes using Gaussian functions attached to control points. + More...

+ +

#include <meshMovementGaussian.h>

+
+Inheritance diagram for dftfe::meshMovementGaussianClass:
+
+
+ + +dftfe::meshMovementClass + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 meshMovementGaussianClass (const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domaim, const dftParameters &dftParams)
 Constructor.
 
std::pair< bool, doublemoveMesh (const std::vector< dealii::Point< 3 > > &controlPointLocations, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements, const std::vector< double > &gaussianWidthParameter, const std::vector< double > &flatTopWidthParameter, const bool moveSubdivided=false)
 Moves the triangulation corresponding to Gaussians attached to control points.
 
std::pair< bool, doublemoveMeshTwoStep (const std::vector< dealii::Point< 3 > > &controlPointLocations1, const std::vector< dealii::Point< 3 > > &controlPointLocations2, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements1, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements2, const std::vector< double > &controllingParameter1, const std::vector< double > &controllingParameter2, const std::vector< double > &flatTopWidthParameter, const bool moveSubdivided=false)
 
void moveMeshTwoLevelElectro ()
 
- Public Member Functions inherited from dftfe::meshMovementClass
 meshMovementClass (const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const dftParameters &dftParams)
 Constructor.
 
virtual ~meshMovementClass ()
 
void init (dealii::Triangulation< 3, 3 > &triangulation, dealii::Triangulation< 3, 3 > &serialTriangulation, const std::vector< std::vector< double > > &domainBoundingVectors)
 Initializes the required data-structures for a given triangulation.
 
void initMoved (const std::vector< std::vector< double > > &domainBoundingVectors)
 Re-initializes the required data-structures for a given triangulation.
 
void findClosestVerticesToDestinationPoints (const std::vector< dealii::Point< 3 > > &destinationPoints, std::vector< dealii::Point< 3 > > &closestTriaVertexToDestPointsLocation, std::vector< dealii::Tensor< 1, 3, double > > &dispClosestTriaVerticesToDestPoints)
 Finds the closest triangulation vertices to a given vector of position coordinates.
 
+ + + + + + +

+Private Member Functions

void computeIncrement (const std::vector< dealii::Point< 3 > > &controlPointLocations, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements, const std::vector< double > &gaussianWidthParameter, const std::vector< double > &flatTopWidthParameter)
 internal function which computes the nodal increment field in the local processor
 
void computeIncrementTwoStep (const std::vector< dealii::Point< 3 > > &controlPointLocations1, const std::vector< dealii::Point< 3 > > &controlPointLocations2, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements1, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements2, const std::vector< double > &gaussianWidthParameter1, const std::vector< double > &gaussianWidthParameter2, const std::vector< double > &flatTopWidthParameter)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from dftfe::meshMovementClass
void initIncrementField ()
 Initializes the parallel layout of d_incrementalDisplacementParallel.
 
void finalizeIncrementField ()
 
void updateTriangulationVertices ()
 Function which updates the locally relevant triangulation vertices.
 
void moveSubdividedMesh ()
 Function which moves subdivided mesh.
 
std::pair< bool, doublemovedMeshCheck ()
 
- Protected Attributes inherited from dftfe::meshMovementClass
distributedCPUVec< doubled_incrementalDisplacement
 vector of displacements of the triangulation vertices
 
bool d_isParallelMesh
 
dealii::FESystem< 3 > FEMoveMesh
 
dealii::DoFHandler< 3 > d_dofHandlerMoveMesh
 
dealii::parallel::distributed::Triangulation< 3 > * d_triaPtr
 
dealii::Triangulation< 3, 3 > * d_triaPtrSerial
 
dealii::IndexSet d_locally_owned_dofs
 
dealii::IndexSet d_locally_relevant_dofs
 
dealii::AffineConstraints< doubled_constraintsMoveMesh
 
std::vector< dealii::GridTools::PeriodicFacePair< typename dealii::DoFHandler< 3 >::cell_iterator > > d_periodicity_vector
 
std::vector< std::vector< double > > d_domainBoundingVectors
 
const dftParametersd_dftParams
 
MPI_Comm d_mpiCommParent
 
MPI_Comm mpi_communicator
 
const unsigned int this_mpi_process
 
dealii::ConditionalOStream pcout
 
+

Detailed Description

+

Class to move triangulation nodes using Gaussian functions attached to control points.

+
Author
Sambit Das
+

Constructor & Destructor Documentation

+ +

◆ meshMovementGaussianClass()

+ +
+
+ + + + + + + + + + + + + + + + +
dftfe::meshMovementGaussianClass::meshMovementGaussianClass (const MPI_Comm & mpi_comm_parent,
const MPI_Comm & mpi_comm_domaim,
const dftParameters & dftParams )
+
+ +

Constructor.

+
Parameters
+ + + +
mpi_comm_parentparent mpi communicator
mpi_comm_domainmpi communicator for domain decomposition
+
+
+ +
+
+

Member Function Documentation

+ +

◆ computeIncrement()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::meshMovementGaussianClass::computeIncrement (const std::vector< dealii::Point< 3 > > & controlPointLocations,
const std::vector< dealii::Tensor< 1, 3, double > > & controlPointDisplacements,
const std::vector< double > & gaussianWidthParameter,
const std::vector< double > & flatTopWidthParameter )
+
+private
+
+ +

internal function which computes the nodal increment field in the local processor

+ +
+
+ +

◆ computeIncrementTwoStep()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::meshMovementGaussianClass::computeIncrementTwoStep (const std::vector< dealii::Point< 3 > > & controlPointLocations1,
const std::vector< dealii::Point< 3 > > & controlPointLocations2,
const std::vector< dealii::Tensor< 1, 3, double > > & controlPointDisplacements1,
const std::vector< dealii::Tensor< 1, 3, double > > & controlPointDisplacements2,
const std::vector< double > & gaussianWidthParameter1,
const std::vector< double > & gaussianWidthParameter2,
const std::vector< double > & flatTopWidthParameter )
+
+private
+
+ +
+
+ +

◆ moveMesh()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
std::pair< bool, double > dftfe::meshMovementGaussianClass::moveMesh (const std::vector< dealii::Point< 3 > > & controlPointLocations,
const std::vector< dealii::Tensor< 1, 3, double > > & controlPointDisplacements,
const std::vector< double > & gaussianWidthParameter,
const std::vector< double > & flatTopWidthParameter,
const bool moveSubdivided = false )
+
+ +

Moves the triangulation corresponding to Gaussians attached to control points.

+

This functions takes into account the hanging node and periodic constraints when computing the nodal increment field.

+
Parameters
+ + + +
controlPointLocationsvector of coordinates of control points
controlPointDisplacementsvector of displacements of control points @ controllingParameter constant in the Gaussian function: exp(-(r/controllingParameter)^pow) where pow is controlled via the input file parameter (.prm)
+
+
+
Returns
std::pair<bool,double> mesh quality metrics pair(bool for is negative jacobian, maximum jacobian ratio)
+ +
+
+ +

◆ moveMeshTwoLevelElectro()

+ +
+
+ + + + + + + +
void dftfe::meshMovementGaussianClass::moveMeshTwoLevelElectro ()
+
+ +
+
+ +

◆ moveMeshTwoStep()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::pair< bool, double > dftfe::meshMovementGaussianClass::moveMeshTwoStep (const std::vector< dealii::Point< 3 > > & controlPointLocations1,
const std::vector< dealii::Point< 3 > > & controlPointLocations2,
const std::vector< dealii::Tensor< 1, 3, double > > & controlPointDisplacements1,
const std::vector< dealii::Tensor< 1, 3, double > > & controlPointDisplacements2,
const std::vector< double > & controllingParameter1,
const std::vector< double > & controllingParameter2,
const std::vector< double > & flatTopWidthParameter,
const bool moveSubdivided = false )
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1mesh_movement_gaussian_class.png b/classdftfe_1_1mesh_movement_gaussian_class.png new file mode 100644 index 0000000000000000000000000000000000000000..718408e2b409cecf52628dc874c6e0db1b70bd7b GIT binary patch literal 811 zcmeAS@N?(olHy`uVBq!ia0vp^SAjTygBeKfe0<;*kdhAY332`Z|38rV;?396{zJE{RnehGic_`vvnLujiaZw*+`CwGm9}U4gL5yQ{@^rU&vWg8 zSxfQ8g|8M)&%b3cJ2w5L(M#*~Eg6lktlXZivVXSoP0Qa|^QXLjoY4E5?XrkJnawf#J26*7SOnf{om2OlfLi#vh3QqE#a%!`3zTtM&Dj^ zuKU%5t?6EufBl@UHKF6g%%-l66YU6M+fu8($2WW#KFt5Z)bMtT>ebgMCi^fT4Qk3@}uI#F7=~j!$`Y;LM)|n^vr= zHFmiEX>+on@%=2L=$vT#5ck3hXluPG>G1&WTJR}{3qntSTH(ArHK zg1;J^GS8iJcHQQbKU3#gIL|JXez^Egd{FH16)|6r+f1LkA^!8^Pqi{@3hy6y;`?4N zTywK$=1NOX(_P8s8&q$_$*oX3_Q;v{V@`Qx`P;V_j5jImUpz@Xa>?>(%RQHW+THZ* z=(UL8ub20&J|M02^6VZ+fX4Nx{WZe(lE!s7}WX<5|>gTe~DWM4fox_cy literal 0 HcmV?d00001 diff --git a/classdftfe_1_1molecular_dynamics_class-members.html b/classdftfe_1_1molecular_dynamics_class-members.html new file mode 100644 index 000000000..f4600ef21 --- /dev/null +++ b/classdftfe_1_1molecular_dynamics_class-members.html @@ -0,0 +1,140 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::molecularDynamicsClass Member List
+
+
+ +

This is the complete list of members for dftfe::molecularDynamicsClass, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AngTobohrdftfe::molecularDynamicsClass
bohrToAngdftfe::molecularDynamicsClass
checkRestart(std::string &coordinatesFile, std::string &domainVectorsFile, bool &scfRestart)dftfe::molecularDynamicsClassprivate
d_atomFractionalunwrappeddftfe::molecularDynamicsClassprivate
d_dftfeWrapperdftfe::molecularDynamicsClassprivate
d_dftPtrdftfe::molecularDynamicsClassprivate
d_domainLengthdftfe::molecularDynamicsClassprivate
d_extrapDensity_t0dftfe::molecularDynamicsClassprivate
d_extrapDensity_tmin1dftfe::molecularDynamicsClassprivate
d_extrapDensity_tmin2dftfe::molecularDynamicsClassprivate
d_extrapDensity_tp1dftfe::molecularDynamicsClassprivate
d_MaxWallTimedftfe::molecularDynamicsClassprivate
d_MDstartWallTimedftfe::molecularDynamicsClassprivate
d_mpiCommParentdftfe::molecularDynamicsClassprivate
d_numberGlobalChargesdftfe::molecularDynamicsClassprivate
d_numberofStepsdftfe::molecularDynamicsClassprivate
d_restartFilesPathdftfe::molecularDynamicsClassprivate
d_restartFlagdftfe::molecularDynamicsClassprivate
d_startingTemperaturedftfe::molecularDynamicsClassprivate
d_startingTimeStepdftfe::molecularDynamicsClass
d_ThermostatTimeConstantdftfe::molecularDynamicsClassprivate
d_ThermostatTypedftfe::molecularDynamicsClassprivate
d_this_mpi_processdftfe::molecularDynamicsClassprivate
d_TimeIndexdftfe::molecularDynamicsClassprivate
d_TimeStepdftfe::molecularDynamicsClassprivate
d_verbositydftfe::molecularDynamicsClassprivate
DensityExtrapolation(int TimeStep)dftfe::molecularDynamicsClassprivate
DensitySplitExtrapolation(int TimeStep)dftfe::molecularDynamicsClassprivate
haPerBohrToeVPerAngdftfe::molecularDynamicsClass
haToeVdftfe::molecularDynamicsClass
InitialiseFromRestartFile(std::vector< dealii::Tensor< 1, 3, double > > &disp, std::vector< double > &velocity, std::vector< double > &force, std::vector< double > &KE, std::vector< double > &IE, std::vector< double > &TE)dftfe::molecularDynamicsClassprivate
InitialiseFromRestartNHCFile(std::vector< double > &v_e, std::vector< double > &e, std::vector< double > &Q)dftfe::molecularDynamicsClassprivate
kBdftfe::molecularDynamicsClass
mdNVE(std::vector< double > &KineticEnergyVector, std::vector< double > &InternalEnergyVector, std::vector< double > &EntropicEnergyVector, std::vector< double > &TotalEnergyVector, std::vector< dealii::Tensor< 1, 3, double > > &displacements, std::vector< double > &velocity, std::vector< double > &force, const std::vector< double > &atomMass)dftfe::molecularDynamicsClassprivate
mdNVTnosehoverchainsThermostat(std::vector< double > &KineticEnergyVector, std::vector< double > &InternalEnergyVector, std::vector< double > &EntropicEnergyVector, std::vector< double > &TotalEnergyVector, std::vector< dealii::Tensor< 1, 3, double > > &displacements, std::vector< double > &velocity, std::vector< double > &force, const std::vector< double > &atomMass)dftfe::molecularDynamicsClassprivate
mdNVTrescaleThermostat(std::vector< double > &KineticEnergyVector, std::vector< double > &InternalEnergyVector, std::vector< double > &EntropicEnergyVector, std::vector< double > &TotalEnergyVector, std::vector< dealii::Tensor< 1, 3, double > > &displacements, std::vector< double > &velocity, std::vector< double > &force, const std::vector< double > &atomMass)dftfe::molecularDynamicsClassprivate
mdNVTsvrThermostat(std::vector< double > &KineticEnergyVector, std::vector< double > &InternalEnergyVector, std::vector< double > &EntropicEnergyVector, std::vector< double > &TotalEnergyVector, std::vector< dealii::Tensor< 1, 3, double > > &displacements, std::vector< double > &velocity, std::vector< double > &force, const std::vector< double > &atomMass)dftfe::molecularDynamicsClassprivate
molecularDynamicsClass(const std::string parameter_file, const std::string restartFilesPath, const MPI_Comm &mpi_comm_parent, const bool restart, const int verbosity, const bool useDevice)dftfe::molecularDynamicsClass
NoseHoverChains(std::vector< double > &v, std::vector< double > &v_e, std::vector< double > &e, std::vector< double > Q, double KE, double Temperature)dftfe::molecularDynamicsClassprivate
NoseHoverExtendedLagrangian(const std::vector< double > &thermovelocity, const std::vector< double > &thermoposition, const std::vector< double > &thermomass, double PE, double KE, double T)dftfe::molecularDynamicsClassprivate
pcoutdftfe::molecularDynamicsClassprivate
RescaleVelocities(std::vector< double > &v, const std::vector< double > &M, double Temperature)dftfe::molecularDynamicsClassprivate
runMD()dftfe::molecularDynamicsClass
set()dftfe::molecularDynamicsClassprivate
svr(std::vector< double > &v, double KE, double KEref)dftfe::molecularDynamicsClassprivate
velocityVerlet(std::vector< double > &v, std::vector< dealii::Tensor< 1, 3, double > > &r, const std::vector< double > &atomMass, std::vector< double > &forceOnAtoms)dftfe::molecularDynamicsClassprivate
writeRestartFile(const std::vector< dealii::Tensor< 1, 3, double > > &disp, const std::vector< double > &velocity, const std::vector< double > &force, const std::vector< double > &KineticEnergyVector, const std::vector< double > &InternalEnergyVector, const std::vector< double > &TotalEnergyVector, int time)dftfe::molecularDynamicsClassprivate
writeRestartNHCfile(const std::vector< double > &v_e, const std::vector< double > &e, const std::vector< double > &Q, const int time)dftfe::molecularDynamicsClassprivate
writeTotalDisplacementFile(const std::vector< dealii::Tensor< 1, 3, double > > &r, int time)dftfe::molecularDynamicsClassprivate
+ + + + diff --git a/classdftfe_1_1molecular_dynamics_class.html b/classdftfe_1_1molecular_dynamics_class.html new file mode 100644 index 000000000..873c7196b --- /dev/null +++ b/classdftfe_1_1molecular_dynamics_class.html @@ -0,0 +1,1823 @@ + + + + + + + +DFT-FE: dftfe::molecularDynamicsClass Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::molecularDynamicsClass Class Reference
+
+
+ +

#include <molecularDynamicsClass.h>

+ + + + + + + + +

+Public Member Functions

 molecularDynamicsClass (const std::string parameter_file, const std::string restartFilesPath, const MPI_Comm &mpi_comm_parent, const bool restart, const int verbosity, const bool useDevice)
 molecularDynamicsClass constructor: copy data from dftparameters to the memebrs of molecularDynamicsClass
 
int runMD ()
 runMD: Assign atom mass to charge. Create vectors for displacement, velocity, force. Create KE vector, TE vector, PE vector. Initialise velocities from Boltsmann distribution. Set Center of Mass velocities to be 0. Call the resepective ensemble based on input file
 
+ + + + + + + + + + + + + +

+Public Attributes

const double haPerBohrToeVPerAng = 27.211386245988 / 0.529177210903
 
const double haToeV = 27.211386245988
 
const double bohrToAng = 0.529177210903
 
const double AngTobohr = 1.0 / bohrToAng
 
const double kB = 8.617333262e-05
 
int d_startingTimeStep
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

int mdNVE (std::vector< double > &KineticEnergyVector, std::vector< double > &InternalEnergyVector, std::vector< double > &EntropicEnergyVector, std::vector< double > &TotalEnergyVector, std::vector< dealii::Tensor< 1, 3, double > > &displacements, std::vector< double > &velocity, std::vector< double > &force, const std::vector< double > &atomMass)
 mdNVE Performs a Ccanonical Ensemble MD calculation. The inital temperature is set by runMD(). Temperature is NOT_CONTROLLED. Controls the timeloop.
 
int mdNVTnosehoverchainsThermostat (std::vector< double > &KineticEnergyVector, std::vector< double > &InternalEnergyVector, std::vector< double > &EntropicEnergyVector, std::vector< double > &TotalEnergyVector, std::vector< dealii::Tensor< 1, 3, double > > &displacements, std::vector< double > &velocity, std::vector< double > &force, const std::vector< double > &atomMass)
 mdNVTnosehoverchainsThermostat Performs a Canonical Ensemble MD calculation. The inital temperature is set by runMD(). Thermostat type is NOSE_HOVER_CHAINS. Controls the timeloop.
 
int mdNVTrescaleThermostat (std::vector< double > &KineticEnergyVector, std::vector< double > &InternalEnergyVector, std::vector< double > &EntropicEnergyVector, std::vector< double > &TotalEnergyVector, std::vector< dealii::Tensor< 1, 3, double > > &displacements, std::vector< double > &velocity, std::vector< double > &force, const std::vector< double > &atomMass)
 mdNVTrescaleThermostat Performs a Constant Kinetic Energy Ensemble MD calculation. The inital temperature is set by runMD(). Thermostat type is RESCALE. Controls the timeloop. At timestep which is multiple of Thermostat time constatn, the veloctites are rescaled *such that the temperature is set to inital temperature .
 
int mdNVTsvrThermostat (std::vector< double > &KineticEnergyVector, std::vector< double > &InternalEnergyVector, std::vector< double > &EntropicEnergyVector, std::vector< double > &TotalEnergyVector, std::vector< dealii::Tensor< 1, 3, double > > &displacements, std::vector< double > &velocity, std::vector< double > &force, const std::vector< double > &atomMass)
 mdNVTsvrThermostat Performs a Canonical Ensemble MD calculation. The inital temperature is set by runMD(). Thermostat type is SVR. Controls the timeloop.
 
double RescaleVelocities (std::vector< double > &v, const std::vector< double > &M, double Temperature)
 RescaleVelocities controls the velocity at timestep t. The scaling of velocities depends on ratio of T at that timestep and inital Temperature.
 
void NoseHoverChains (std::vector< double > &v, std::vector< double > &v_e, std::vector< double > &e, std::vector< double > Q, double KE, double Temperature)
 NoseHoverChains controls the velocity at timestep t. The temperature is contolled by 2 thermostats. Thermostat 1 contols the velocity of all Charges. Thermostat 2 controls thermostat 1. Employs Extended Lagrangian approach.
 
double svr (std::vector< double > &v, double KE, double KEref)
 
double velocityVerlet (std::vector< double > &v, std::vector< dealii::Tensor< 1, 3, double > > &r, const std::vector< double > &atomMass, std::vector< double > &forceOnAtoms)
 velocityVerlet
 
void writeRestartFile (const std::vector< dealii::Tensor< 1, 3, double > > &disp, const std::vector< double > &velocity, const std::vector< double > &force, const std::vector< double > &KineticEnergyVector, const std::vector< double > &InternalEnergyVector, const std::vector< double > &TotalEnergyVector, int time)
 writeRestartFile: Writing files at each timestep to mdRestart
 
void InitialiseFromRestartFile (std::vector< dealii::Tensor< 1, 3, double > > &disp, std::vector< double > &velocity, std::vector< double > &force, std::vector< double > &KE, std::vector< double > &IE, std::vector< double > &TE)
 InitialiseFromRestartFile : Initialise atomcordinates, velocity and force at restart.
 
void writeRestartNHCfile (const std::vector< double > &v_e, const std::vector< double > &e, const std::vector< double > &Q, const int time)
 NoseHoverExtendedLagrangian Writes the NHC parameters at each timeStep.
 
void InitialiseFromRestartNHCFile (std::vector< double > &v_e, std::vector< double > &e, std::vector< double > &Q)
 InitialiseFromRestartNHCFile: Reads the NHC parameters during restart.
 
void writeTotalDisplacementFile (const std::vector< dealii::Tensor< 1, 3, double > > &r, int time)
 writeTotalDisplacementFile: Updates Displacement.chk and appends TotalDisplacement.chk
 
double NoseHoverExtendedLagrangian (const std::vector< double > &thermovelocity, const std::vector< double > &thermoposition, const std::vector< double > &thermomass, double PE, double KE, double T)
 NoseHoverExtendedLagrangian: Computes the Nose-Hover Hamiltonian when using NHC thermostat.
 
int checkRestart (std::string &coordinatesFile, std::string &domainVectorsFile, bool &scfRestart)
 checkRestart: Identifies the folder containing the restart file, sets the path of coordinates file and restursn the starting timestep *
 
void DensityExtrapolation (int TimeStep)
 DensityExtrapolation Identifies the folder containing the restart file, sets the path of coordinates file and restursn the starting timestep *.
 
void DensitySplitExtrapolation (int TimeStep)
 DensityExtrapolation calculates the t+dt density as a second order extrapolation of density from t, t-dt and t-2dt.
 
void set ()
 set() initalises all the private datamembers of mdclass object from the parameters declared by user.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::unique_ptr< dftfeWrapperd_dftfeWrapper
 
dftBased_dftPtr
 
const MPI_Comm d_mpiCommParent
 
const unsigned int d_this_mpi_process
 
dealii::ConditionalOStream pcout
 
std::string d_restartFilesPath
 
const int d_verbosity
 
unsigned int d_restartFlag
 
unsigned int d_numberGlobalCharges
 
double d_TimeStep
 
unsigned int d_TimeIndex
 
unsigned int d_numberofSteps
 
double d_startingTemperature
 
int d_ThermostatTimeConstant
 
std::string d_ThermostatType
 
double d_MDstartWallTime
 
double d_MaxWallTime
 
std::vector< std::vector< double > > d_atomFractionalunwrapped
 
std::vector< doubled_domainLength
 
distributedCPUVec< doubled_extrapDensity_tmin2
 
distributedCPUVec< doubled_extrapDensity_tmin1
 
distributedCPUVec< doubled_extrapDensity_t0
 
distributedCPUVec< doubled_extrapDensity_tp1
 
+

Constructor & Destructor Documentation

+ +

◆ molecularDynamicsClass()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::molecularDynamicsClass::molecularDynamicsClass (const std::string parameter_file,
const std::string restartFilesPath,
const MPI_Comm & mpi_comm_parent,
const bool restart,
const int verbosity,
const bool useDevice )
+
+ +

molecularDynamicsClass constructor: copy data from dftparameters to the memebrs of molecularDynamicsClass

+
Parameters
+ + + +
[in]dftBase*_dftBasePtr pointer to base class of dftClass
[in]mpi_comm_parentparent mpi communicator
+
+
+ +
+
+

Member Function Documentation

+ +

◆ checkRestart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
int dftfe::molecularDynamicsClass::checkRestart (std::string & coordinatesFile,
std::string & domainVectorsFile,
bool & scfRestart )
+
+private
+
+ +

checkRestart: Identifies the folder containing the restart file, sets the path of coordinates file and restursn the starting timestep *

+
Returns
StartingTimeStep the timestep to restart the MD from.
+ +
+
+ +

◆ DensityExtrapolation()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::molecularDynamicsClass::DensityExtrapolation (int TimeStep)
+
+private
+
+ +

DensityExtrapolation Identifies the folder containing the restart file, sets the path of coordinates file and restursn the starting timestep *.

+ +
+
+ +

◆ DensitySplitExtrapolation()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::molecularDynamicsClass::DensitySplitExtrapolation (int TimeStep)
+
+private
+
+ +

DensityExtrapolation calculates the t+dt density as a second order extrapolation of density from t, t-dt and t-2dt.

+ +
+
+ +

◆ InitialiseFromRestartFile()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::molecularDynamicsClass::InitialiseFromRestartFile (std::vector< dealii::Tensor< 1, 3, double > > & disp,
std::vector< double > & velocity,
std::vector< double > & force,
std::vector< double > & KE,
std::vector< double > & IE,
std::vector< double > & TE )
+
+private
+
+ +

InitialiseFromRestartFile : Initialise atomcordinates, velocity and force at restart.

+
Parameters
+ + + + + + + +
[out]dispDisplacements of previous timestep from restart
[out]velocityVelocity updated from restart
[out]forceForce updated from dft->Solve
[out]PEFree energy of system at current Timestep
[out]KEKinetic ENergy of nuclei at current Timestep
[out]TEtemperature at current Timestep
+
+
+ +
+
+ +

◆ InitialiseFromRestartNHCFile()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
void dftfe::molecularDynamicsClass::InitialiseFromRestartNHCFile (std::vector< double > & v_e,
std::vector< double > & e,
std::vector< double > & Q )
+
+private
+
+ +

InitialiseFromRestartNHCFile: Reads the NHC parameters during restart.

+
Parameters
+ + + + +
[out]thermovelocityVelocity of each, updated at each TimeStep
[out]thermopositionPosition of each thermostat , updated at each TimeStep
[out]thermomassStores the mass of each thermostat.
+
+
+ +
+
+ +

◆ mdNVE()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int dftfe::molecularDynamicsClass::mdNVE (std::vector< double > & KineticEnergyVector,
std::vector< double > & InternalEnergyVector,
std::vector< double > & EntropicEnergyVector,
std::vector< double > & TotalEnergyVector,
std::vector< dealii::Tensor< 1, 3, double > > & displacements,
std::vector< double > & velocity,
std::vector< double > & force,
const std::vector< double > & atomMass )
+
+private
+
+ +

mdNVE Performs a Ccanonical Ensemble MD calculation. The inital temperature is set by runMD(). Temperature is NOT_CONTROLLED. Controls the timeloop.

+
Parameters
+ + + + + + + + + +
[in]atomMassStores the mass of each Charge.
[out]KineticEnergyVectorStores KineticEnergy at each TimeStep
[out]InternalEnergyVectorStores InternalEnergy at each TimeStep
[out]EntropicEnergyVectorStores PotentialEnergy at each TimeStep
[out]TotalEnergyVectorStores TotalEnergy at each TimeStep
[out]displacementsStores the displacment of each Charge, updated at each TimeStep
[out]velocityStores the velocity of each Charge, updated at each TimeStep
[out]forceStores the -ve of force on each charge, updated at each TimeStep
+
+
+ +
+
+ +

◆ mdNVTnosehoverchainsThermostat()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int dftfe::molecularDynamicsClass::mdNVTnosehoverchainsThermostat (std::vector< double > & KineticEnergyVector,
std::vector< double > & InternalEnergyVector,
std::vector< double > & EntropicEnergyVector,
std::vector< double > & TotalEnergyVector,
std::vector< dealii::Tensor< 1, 3, double > > & displacements,
std::vector< double > & velocity,
std::vector< double > & force,
const std::vector< double > & atomMass )
+
+private
+
+ +

mdNVTnosehoverchainsThermostat Performs a Canonical Ensemble MD calculation. The inital temperature is set by runMD(). Thermostat type is NOSE_HOVER_CHAINS. Controls the timeloop.

+
Parameters
+ + + + + + + + + +
[in]atomMassStores the mass of each Charge.
[out]KineticEnergyVectorStores KineticEnergy at each TimeStep
[out]InternalEnergyVectorStores InternalEnergy at each TimeStep
[out]EntropicEnergyVectorStores PotentialEnergy at each TimeStep
[out]TotalEnergyVectorStores TotalEnergy at each TimeStep
[out]displacementsStores the displacment of each Charge, updated at each TimeStep
[out]velocityStores the velocity of each Charge, updated at each TimeStep
[out]forceStores the -ve of force on each charge, updated at each TimeStep
+
+
+ +
+
+ +

◆ mdNVTrescaleThermostat()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int dftfe::molecularDynamicsClass::mdNVTrescaleThermostat (std::vector< double > & KineticEnergyVector,
std::vector< double > & InternalEnergyVector,
std::vector< double > & EntropicEnergyVector,
std::vector< double > & TotalEnergyVector,
std::vector< dealii::Tensor< 1, 3, double > > & displacements,
std::vector< double > & velocity,
std::vector< double > & force,
const std::vector< double > & atomMass )
+
+private
+
+ +

mdNVTrescaleThermostat Performs a Constant Kinetic Energy Ensemble MD calculation. The inital temperature is set by runMD(). Thermostat type is RESCALE. Controls the timeloop. At timestep which is multiple of Thermostat time constatn, the veloctites are rescaled *such that the temperature is set to inital temperature .

+
Parameters
+ + + + + + + + + +
[in]atomMassStores the mass of each Charge.
[out]KineticEnergyVectorStores KineticEnergy at each TimeStep
[out]InternalEnergyVectorStores InternalEnergy at each TimeStep
[out]EntropicEnergyVectorStores PotentialEnergy at each TimeStep
[out]TotalEnergyVectorStores TotalEnergy at each TimeStep
[out]displacementsStores the displacment of each Charge, updated at each TimeStep
[out]velocityStores the velocity of each Charge, updated at each TimeStep
[out]forceStores the -ve of force on each charge, updated at each TimeStep
+
+
+ +
+
+ +

◆ mdNVTsvrThermostat()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int dftfe::molecularDynamicsClass::mdNVTsvrThermostat (std::vector< double > & KineticEnergyVector,
std::vector< double > & InternalEnergyVector,
std::vector< double > & EntropicEnergyVector,
std::vector< double > & TotalEnergyVector,
std::vector< dealii::Tensor< 1, 3, double > > & displacements,
std::vector< double > & velocity,
std::vector< double > & force,
const std::vector< double > & atomMass )
+
+private
+
+ +

mdNVTsvrThermostat Performs a Canonical Ensemble MD calculation. The inital temperature is set by runMD(). Thermostat type is SVR. Controls the timeloop.

+
Parameters
+ + + + + + + + + +
[in]massAtomsStores the mass of each Charge. *
[out]KineticEnergyVectorStores KineticEnergy at each TimeStep
[out]InternalEnergyVectorStores InternalEnergy at each TimeStep
[out]EntropicEnergyVectorStores PotentialEnergy at each TimeStep
[out]TotalEnergyVectorStores TotalEnergy at each TimeStep
[out]displacementsStores the displacment of each Charge, updated at each TimeStep
[out]velocityStores the velocity of each Charge, updated at each TimeStep
[out]forceStores the -ve of force on each charge, updated at each TimeStep
+
+
+ +
+
+ +

◆ NoseHoverChains()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::molecularDynamicsClass::NoseHoverChains (std::vector< double > & v,
std::vector< double > & v_e,
std::vector< double > & e,
std::vector< double > Q,
double KE,
double Temperature )
+
+private
+
+ +

NoseHoverChains controls the velocity at timestep t. The temperature is contolled by 2 thermostats. Thermostat 1 contols the velocity of all Charges. Thermostat 2 controls thermostat 1. Employs Extended Lagrangian approach.

+
Parameters
+ + + + + + +
[in]Qstores mass of each Thermostat
[in]Temperaturetemperature of previous timestep
[out]vStores the velocity of each Charge, updated at each TimeStep
[out]v_eStores the thermostat velocity
[out]eStores the position of each thermosat
+
+
+ +
+
+ +

◆ NoseHoverExtendedLagrangian()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double dftfe::molecularDynamicsClass::NoseHoverExtendedLagrangian (const std::vector< double > & thermovelocity,
const std::vector< double > & thermoposition,
const std::vector< double > & thermomass,
double PE,
double KE,
double T )
+
+private
+
+ +

NoseHoverExtendedLagrangian: Computes the Nose-Hover Hamiltonian when using NHC thermostat.

+
Parameters
+ + + + + + + +
[in]thermovelocityVelocity of each, updated at each TimeStep
[in]thermopositionPosition of each thermostat , updated at each TimeStep
[in]thermomassStores the mass of each thermostat.
[in]PEFree energy of system at current Timestep
[in]KEKinetic ENergy of nuclei at current Timestep
[in]Temperaturetemperature at current Timestep
+
+
+
Returns
Hnose Nose Hamiltonian at each timestep
+ +
+
+ +

◆ RescaleVelocities()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
double dftfe::molecularDynamicsClass::RescaleVelocities (std::vector< double > & v,
const std::vector< double > & M,
double Temperature )
+
+private
+
+ +

RescaleVelocities controls the velocity at timestep t. The scaling of velocities depends on ratio of T at that timestep and inital Temperature.

+
@param[in] M Stores the mass of each Charge.
+@param[in] Temperature  temperature at current Timestep
+@param[out] v Stores the velocity of each Charge, updated at each
+

Timestep

@param[return] KE Kinetic Energy at current timestp in eV
+
+
+
+ +

◆ runMD()

+ +
+
+ + + + + + + +
int dftfe::molecularDynamicsClass::runMD ()
+
+ +

runMD: Assign atom mass to charge. Create vectors for displacement, velocity, force. Create KE vector, TE vector, PE vector. Initialise velocities from Boltsmann distribution. Set Center of Mass velocities to be 0. Call the resepective ensemble based on input file

+ +
+
+ +

◆ set()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::molecularDynamicsClass::set ()
+
+private
+
+ +

set() initalises all the private datamembers of mdclass object from the parameters declared by user.

+ +
+
+ +

◆ svr()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
double dftfe::molecularDynamicsClass::svr (std::vector< double > & v,
double KE,
double KEref )
+
+private
+
+
Parameters
+ + + + +
[in]KErefTarget value of Kinetic Enegy from Temperature
[out]vStores the velocity of each Charge, updated at each TimeStep
[out]KErescaled Kinetic Energy from svr thermostat
+
+
+ +
+
+ +

◆ velocityVerlet()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
double dftfe::molecularDynamicsClass::velocityVerlet (std::vector< double > & v,
std::vector< dealii::Tensor< 1, 3, double > > & r,
const std::vector< double > & atomMass,
std::vector< double > & forceOnAtoms )
+
+private
+
+ +

velocityVerlet

+
Parameters
+ + + + + + +
[in]atomMassStores the mass of each Charge.
[return]KE Kinetic Energy at current timestp in eV
[out]forceonAtomsUpdated -ve forces on each charge.
[out]rUpdated displacement
[out]vUpdated velocity of each atom
+
+
+ +
+
+ +

◆ writeRestartFile()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::molecularDynamicsClass::writeRestartFile (const std::vector< dealii::Tensor< 1, 3, double > > & disp,
const std::vector< double > & velocity,
const std::vector< double > & force,
const std::vector< double > & KineticEnergyVector,
const std::vector< double > & InternalEnergyVector,
const std::vector< double > & TotalEnergyVector,
int time )
+
+private
+
+ +

writeRestartFile: Writing files at each timestep to mdRestart

+
Parameters
+ + + + + + + +
[in]velocityVelocity updated from restart
[in]forceForce data at each timeStep
[in]PEFree energy of system at current Timestep
[in]KEKinetic ENergy of nuclei at current Timestep
[in]TEtemperature at current Timestep
[in]timeCurrent TimeStep
+
+
+ +
+
+ +

◆ writeRestartNHCfile()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::molecularDynamicsClass::writeRestartNHCfile (const std::vector< double > & v_e,
const std::vector< double > & e,
const std::vector< double > & Q,
const int time )
+
+private
+
+ +

NoseHoverExtendedLagrangian Writes the NHC parameters at each timeStep.

+
Parameters
+ + + + + +
[in]thermovelocityVelocity of each, updated at each TimeStep
[in]thermopositionPosition of each thermostat , updated at each TimeStep
[in]thermomassStores the mass of each thermostat.
[in]timeCurrent TimeStep
+
+
+ +
+
+ +

◆ writeTotalDisplacementFile()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
void dftfe::molecularDynamicsClass::writeTotalDisplacementFile (const std::vector< dealii::Tensor< 1, 3, double > > & r,
int time )
+
+private
+
+ +

writeTotalDisplacementFile: Updates Displacement.chk and appends TotalDisplacement.chk

+
Parameters
+ + + +
[in]rDisplacemnt of each atom, updated at each TimeStep
[in]timeeach TimeStep
+
+
+ +
+
+

Member Data Documentation

+ +

◆ AngTobohr

+ +
+
+ + + + +
const double dftfe::molecularDynamicsClass::AngTobohr = 1.0 / bohrToAng
+
+ +
+
+ +

◆ bohrToAng

+ +
+
+ + + + +
const double dftfe::molecularDynamicsClass::bohrToAng = 0.529177210903
+
+ +
+
+ +

◆ d_atomFractionalunwrapped

+ +
+
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::molecularDynamicsClass::d_atomFractionalunwrapped
+
+private
+
+ +
+
+ +

◆ d_dftfeWrapper

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<dftfeWrapper> dftfe::molecularDynamicsClass::d_dftfeWrapper
+
+private
+
+ +
+
+ +

◆ d_dftPtr

+ +
+
+ + + + + +
+ + + + +
dftBase* dftfe::molecularDynamicsClass::d_dftPtr
+
+private
+
+ +
+
+ +

◆ d_domainLength

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::molecularDynamicsClass::d_domainLength
+
+private
+
+ +
+
+ +

◆ d_extrapDensity_t0

+ +
+
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::molecularDynamicsClass::d_extrapDensity_t0
+
+private
+
+ +
+
+ +

◆ d_extrapDensity_tmin1

+ +
+
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::molecularDynamicsClass::d_extrapDensity_tmin1
+
+private
+
+ +
+
+ +

◆ d_extrapDensity_tmin2

+ +
+
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::molecularDynamicsClass::d_extrapDensity_tmin2
+
+private
+
+ +
+
+ +

◆ d_extrapDensity_tp1

+ +
+
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::molecularDynamicsClass::d_extrapDensity_tp1
+
+private
+
+ +
+
+ +

◆ d_MaxWallTime

+ +
+
+ + + + + +
+ + + + +
double dftfe::molecularDynamicsClass::d_MaxWallTime
+
+private
+
+ +
+
+ +

◆ d_MDstartWallTime

+ +
+
+ + + + + +
+ + + + +
double dftfe::molecularDynamicsClass::d_MDstartWallTime
+
+private
+
+ +
+
+ +

◆ d_mpiCommParent

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm dftfe::molecularDynamicsClass::d_mpiCommParent
+
+private
+
+ +
+
+ +

◆ d_numberGlobalCharges

+ +
+
+ + + + + +
+ + + + +
unsigned int dftfe::molecularDynamicsClass::d_numberGlobalCharges
+
+private
+
+ +
+
+ +

◆ d_numberofSteps

+ +
+
+ + + + + +
+ + + + +
unsigned int dftfe::molecularDynamicsClass::d_numberofSteps
+
+private
+
+ +
+
+ +

◆ d_restartFilesPath

+ +
+
+ + + + + +
+ + + + +
std::string dftfe::molecularDynamicsClass::d_restartFilesPath
+
+private
+
+ +
+
+ +

◆ d_restartFlag

+ +
+
+ + + + + +
+ + + + +
unsigned int dftfe::molecularDynamicsClass::d_restartFlag
+
+private
+
+ +
+
+ +

◆ d_startingTemperature

+ +
+
+ + + + + +
+ + + + +
double dftfe::molecularDynamicsClass::d_startingTemperature
+
+private
+
+ +
+
+ +

◆ d_startingTimeStep

+ +
+
+ + + + +
int dftfe::molecularDynamicsClass::d_startingTimeStep
+
+ +
+
+ +

◆ d_ThermostatTimeConstant

+ +
+
+ + + + + +
+ + + + +
int dftfe::molecularDynamicsClass::d_ThermostatTimeConstant
+
+private
+
+ +
+
+ +

◆ d_ThermostatType

+ +
+
+ + + + + +
+ + + + +
std::string dftfe::molecularDynamicsClass::d_ThermostatType
+
+private
+
+ +
+
+ +

◆ d_this_mpi_process

+ +
+
+ + + + + +
+ + + + +
const unsigned int dftfe::molecularDynamicsClass::d_this_mpi_process
+
+private
+
+ +
+
+ +

◆ d_TimeIndex

+ +
+
+ + + + + +
+ + + + +
unsigned int dftfe::molecularDynamicsClass::d_TimeIndex
+
+private
+
+ +
+
+ +

◆ d_TimeStep

+ +
+
+ + + + + +
+ + + + +
double dftfe::molecularDynamicsClass::d_TimeStep
+
+private
+
+ +
+
+ +

◆ d_verbosity

+ +
+
+ + + + + +
+ + + + +
const int dftfe::molecularDynamicsClass::d_verbosity
+
+private
+
+ +
+
+ +

◆ haPerBohrToeVPerAng

+ +
+
+ + + + +
const double dftfe::molecularDynamicsClass::haPerBohrToeVPerAng = 27.211386245988 / 0.529177210903
+
+ +
+
+ +

◆ haToeV

+ +
+
+ + + + +
const double dftfe::molecularDynamicsClass::haToeV = 27.211386245988
+
+ +
+
+ +

◆ kB

+ +
+
+ + + + +
const double dftfe::molecularDynamicsClass::kB = 8.617333262e-05
+
+ +
+
+ +

◆ pcout

+ +
+
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::molecularDynamicsClass::pcout
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1non_linear_solver-members.html b/classdftfe_1_1non_linear_solver-members.html new file mode 100644 index 000000000..40450602d --- /dev/null +++ b/classdftfe_1_1non_linear_solver-members.html @@ -0,0 +1,107 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::nonLinearSolver Member List
+
+
+ +

This is the complete list of members for dftfe::nonLinearSolver, including all inherited members.

+ + + + + + + + + + + + + + + + + +
d_debugLeveldftfe::nonLinearSolverprotected
d_maxNumberIterationsdftfe::nonLinearSolverprotected
d_tolerancedftfe::nonLinearSolverprotected
FAILURE enum valuedftfe::nonLinearSolver
getDebugLevel() constdftfe::nonLinearSolverprotected
getMaximumNumberIterations() constdftfe::nonLinearSolverprotected
getTolerance() constdftfe::nonLinearSolverprotected
LINESEARCH_FAILED enum valuedftfe::nonLinearSolver
MAX_ITER_REACHED enum valuedftfe::nonLinearSolver
nonLinearSolver(const unsigned int debugLevel, const unsigned int maxNumberIterations, const double tolerance=0)dftfe::nonLinearSolverprotected
RESTART enum valuedftfe::nonLinearSolver
ReturnValueType enum namedftfe::nonLinearSolver
save(const std::string &checkpointFileName)=0dftfe::nonLinearSolverpure virtual
solve(nonlinearSolverProblem &problem, const std::string checkpointFileName="", const bool restart=false)=0dftfe::nonLinearSolverpure virtual
SUCCESS enum valuedftfe::nonLinearSolver
~nonLinearSolver()=0dftfe::nonLinearSolverpure virtual
+ + + + diff --git a/classdftfe_1_1non_linear_solver.html b/classdftfe_1_1non_linear_solver.html new file mode 100644 index 000000000..9ab46cc3c --- /dev/null +++ b/classdftfe_1_1non_linear_solver.html @@ -0,0 +1,486 @@ + + + + + + + +DFT-FE: dftfe::nonLinearSolver Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::nonLinearSolver Class Referenceabstract
+
+
+ +

Base class for non-linear algebraic solver. + More...

+ +

#include <nonLinearSolver.h>

+
+Inheritance diagram for dftfe::nonLinearSolver:
+
+
+ + +dftfe::BFGSNonLinearSolver +dftfe::LBFGSNonLinearSolver +dftfe::cgPRPNonLinearSolver + +
+ + + + +

+Public Types

enum  ReturnValueType {
+  SUCCESS = 0 +, FAILURE +, LINESEARCH_FAILED +, MAX_ITER_REACHED +,
+  RESTART +
+ }
 
+ + + + + + + + + +

+Public Member Functions

virtual ~nonLinearSolver ()=0
 Destructor.
 
virtual ReturnValueType solve (nonlinearSolverProblem &problem, const std::string checkpointFileName="", const bool restart=false)=0
 Solve non-linear algebraic equation.
 
virtual void save (const std::string &checkpointFileName)=0
 
+ + + + + + + + + + + + + +

+Protected Member Functions

 nonLinearSolver (const unsigned int debugLevel, const unsigned int maxNumberIterations, const double tolerance=0)
 Constructor.
 
double getTolerance () const
 Get tolerance.
 
unsigned int getMaximumNumberIterations () const
 Get maximum number of iterations.
 
unsigned int getDebugLevel () const
 Get debug level.
 
+ + + + + + + + + + +

+Protected Attributes

const unsigned int d_debugLevel
 controls the verbosity of the printing
 
const unsigned int d_maxNumberIterations
 maximum number of nonlinear solve iterations
 
const double d_tolerance
 nonlinear solve stopping tolerance
 
+

Detailed Description

+

Base class for non-linear algebraic solver.

+
Author
Sambit Das
+

Member Enumeration Documentation

+ +

◆ ReturnValueType

+ +
+
+ + + + + + +
Enumerator
SUCCESS 
FAILURE 
LINESEARCH_FAILED 
MAX_ITER_REACHED 
RESTART 
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~nonLinearSolver()

+ +
+
+ + + + + +
+ + + + + + + +
virtual dftfe::nonLinearSolver::~nonLinearSolver ()
+
+pure virtual
+
+ +

Destructor.

+ +
+
+ +

◆ nonLinearSolver()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
dftfe::nonLinearSolver::nonLinearSolver (const unsigned int debugLevel,
const unsigned int maxNumberIterations,
const double tolerance = 0 )
+
+protected
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ getDebugLevel()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int dftfe::nonLinearSolver::getDebugLevel () const
+
+protected
+
+ +

Get debug level.

+
Returns
Debug level.
+ +
+
+ +

◆ getMaximumNumberIterations()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int dftfe::nonLinearSolver::getMaximumNumberIterations () const
+
+protected
+
+ +

Get maximum number of iterations.

+
Returns
Maximum number of iterations.
+ +
+
+ +

◆ getTolerance()

+ +
+
+ + + + + +
+ + + + + + + +
double dftfe::nonLinearSolver::getTolerance () const
+
+protected
+
+ +

Get tolerance.

+
Returns
Value of the tolerance.
+ +
+
+ +

◆ save()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::nonLinearSolver::save (const std::string & checkpointFileName)
+
+pure virtual
+
+
+ +

◆ solve()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
virtual ReturnValueType dftfe::nonLinearSolver::solve (nonlinearSolverProblem & problem,
const std::string checkpointFileName = "",
const bool restart = false )
+
+pure virtual
+
+ +

Solve non-linear algebraic equation.

+
Parameters
+ + + + +
problem[in]nonlinearSolverProblem object.
checkpointFileName[in]if string is non-empty, creates checkpoint file named checkpointFileName for every nonlinear iteration.
restart[in]boolean specifying whether this is a restart solve.
+
+
+
Returns
Return value indicating success or failure.
+ +

Implemented in dftfe::BFGSNonLinearSolver, dftfe::cgPRPNonLinearSolver, and dftfe::LBFGSNonLinearSolver.

+ +
+
+

Member Data Documentation

+ +

◆ d_debugLevel

+ +
+
+ + + + + +
+ + + + +
const unsigned int dftfe::nonLinearSolver::d_debugLevel
+
+protected
+
+ +

controls the verbosity of the printing

+ +
+
+ +

◆ d_maxNumberIterations

+ +
+
+ + + + + +
+ + + + +
const unsigned int dftfe::nonLinearSolver::d_maxNumberIterations
+
+protected
+
+ +

maximum number of nonlinear solve iterations

+ +
+
+ +

◆ d_tolerance

+ +
+
+ + + + + +
+ + + + +
const double dftfe::nonLinearSolver::d_tolerance
+
+protected
+
+ +

nonlinear solve stopping tolerance

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1non_linear_solver.png b/classdftfe_1_1non_linear_solver.png new file mode 100644 index 0000000000000000000000000000000000000000..b7828624b12c470a149471a86c11055d31bd2554 GIT binary patch literal 1258 zcmeAS@N?(olHy`uVBq!ia0y~yVA2J$12~w03f*F8(FfeDDeT9L6rPR~KF{Fa=?cCR!maGwD zxvX^P!Qc5mq^qkLT?^08VY3aawmP1tAE9&kXnezWBc8(_j2L(virXZTYecuPF5utB zdVt}|MqLKB1%0`U1`MS++zpH?f;XpH+3}oKJ0`Jy=J}m=r9VEG?@&1=@jfA%;a9=o zY5khz@~?6iZxhbtKA^p$CS?9HqpyuCC2MXu-V#}Mw|M!Dy4=00_IvW|{%@0;%sF$O zNOF&B4!48+x}2GE$@ikSt-rl7_5Qcl8@HCtZmwor0U`VFxLyFZtvRXYCa)x9mXtz37vk?g%~3^o()f1mdH@X>oh$uebA zay{Mp438;+d?XsZEc|c%CZW)roBxXQ87nld^FRB1>i-(S&!1z$xCk?eD#%=~MP-JihN^&$X;AC$zB{00YA;!QQkS@{oFqJ`~;lI2a19Jj{ z9ykzBSwx8gW7Nd&vh1db}b2(znRAUB!7j zAB3NjH)#}(*1P2GWp`8MQf~Jn@tm3OWA_zSDcm;9ovuG=()rR$H7n{jKQ;R4tX7bB zIgKk{q7_VsYfyJy7pW~FcS_TQ!P zqxT8_Oox-xUVpiLw`*F?#eMOAu1vdm;jie)KA}VDVaY{qp(y?{0iL`{;d+=G>}XNowyMl%6KGguKsr@`vsAjOm)^a(4RsTfjLb zcjx4~$``vmb0+_+`>4I`OrT!e*(cZUFuZP@-1+X*q}ZMHoAz&dI^mC^@Q(D;p1)#$ zl-yA}y8ipLny>nz*0u%O9}4&V6v%vVcva#4?N3h18#UhEyL3vO{J(_r)4TU?Ub?4l z+UK?2QTtl%<+V*caJzncmA5G{Bm%ZAomLm8ptY@L?~j$bm(N}c+i}P4?5=o`W%t|H znZ37IvnBJ$d^79#eKqIvckr3N-@oN)+$VRR1p@mf)$NX6yB(-)rtYLKOkS+hmxO=t zf4EuHYm!tlFa{OtW$X6Kc?V_ZbgP&?d4Kr)=_Zx0hqieHImgM}11e6tA?BIYkvnmT x9E{NhWV|{k9}P?-u_~6-Jm9f741gQu&X%Q~loCIFyLPIv$S literal 0 HcmV?d00001 diff --git a/classdftfe_1_1nonlinear_solver_problem-members.html b/classdftfe_1_1nonlinear_solver_problem-members.html new file mode 100644 index 000000000..c4074334d --- /dev/null +++ b/classdftfe_1_1nonlinear_solver_problem-members.html @@ -0,0 +1,103 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::nonlinearSolverProblem Member List
+
+
+ +

This is the complete list of members for dftfe::nonlinearSolverProblem, including all inherited members.

+ + + + + + + + + + + + + +
getMPICommunicator()=0dftfe::nonlinearSolverProblempure virtual
getNumberUnknowns() const =0dftfe::nonlinearSolverProblempure virtual
getUnknownCountFlag() const =0dftfe::nonlinearSolverProblempure virtual
gradient(std::vector< double > &gradient)=0dftfe::nonlinearSolverProblempure virtual
isConverged() const =0dftfe::nonlinearSolverProblempure virtual
nonlinearSolverProblem()dftfe::nonlinearSolverProblem
precondition(std::vector< double > &s, const std::vector< double > &gradient)=0dftfe::nonlinearSolverProblempure virtual
save()=0dftfe::nonlinearSolverProblempure virtual
solution(std::vector< double > &solution)=0dftfe::nonlinearSolverProblempure virtual
update(const std::vector< double > &solution, const bool computeForces=true, const bool useSingleAtomSolutionsInitialGuess=false)=0dftfe::nonlinearSolverProblempure virtual
value(std::vector< double > &functionValue)=0dftfe::nonlinearSolverProblempure virtual
~nonlinearSolverProblem()=0dftfe::nonlinearSolverProblempure virtual
+ + + + diff --git a/classdftfe_1_1nonlinear_solver_problem.html b/classdftfe_1_1nonlinear_solver_problem.html new file mode 100644 index 000000000..78e46b83b --- /dev/null +++ b/classdftfe_1_1nonlinear_solver_problem.html @@ -0,0 +1,532 @@ + + + + + + + +DFT-FE: dftfe::nonlinearSolverProblem Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::nonlinearSolverProblem Class Referenceabstract
+
+
+ +

Abstract class for solver functions. + More...

+ +

#include <nonlinearSolverProblem.h>

+
+Inheritance diagram for dftfe::nonlinearSolverProblem:
+
+
+ + +dftfe::geoOptCell +dftfe::geoOptIon +dftfe::nudgedElasticBandClass + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 nonlinearSolverProblem ()
 Constructor.
 
virtual ~nonlinearSolverProblem ()=0
 Destructor.
 
virtual unsigned int getNumberUnknowns () const =0
 Obtain number of unknowns.
 
virtual void value (std::vector< double > &functionValue)=0
 Compute function value (aka energy).
 
virtual void gradient (std::vector< double > &gradient)=0
 Compute function gradient (aka forces).
 
virtual void precondition (std::vector< double > &s, const std::vector< double > &gradient)=0
 Apply preconditioner to function gradient.
 
virtual void update (const std::vector< double > &solution, const bool computeForces=true, const bool useSingleAtomSolutionsInitialGuess=false)=0
 Update solution.
 
virtual void solution (std::vector< double > &solution)=0
 Obtain current solution.
 
virtual std::vector< unsigned intgetUnknownCountFlag () const =0
 For each unknown indicate whether that unknown should be accumulated. This functionality is needed in the case of parallel execution when domain decomposition is employed. Unknowns residing on processor boundary should only be accumulated once when dot products of vertex fields are computed (e.g. residual).
 
virtual bool isConverged () const =0
 check for convergence.
 
virtual void save ()=0
 create checkpoint for the current state of the problem i.e problem domain and solution.
 
virtual const MPI_CommgetMPICommunicator ()=0
 get MPI communicator.
 
+

Detailed Description

+

Abstract class for solver functions.

+
Author
Sambit Das
+

Constructor & Destructor Documentation

+ +

◆ nonlinearSolverProblem()

+ +
+
+ + + + + + + +
dftfe::nonlinearSolverProblem::nonlinearSolverProblem ()
+
+ +

Constructor.

+ +
+
+ +

◆ ~nonlinearSolverProblem()

+ +
+
+ + + + + +
+ + + + + + + +
virtual dftfe::nonlinearSolverProblem::~nonlinearSolverProblem ()
+
+pure virtual
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ getMPICommunicator()

+ +
+
+ + + + + +
+ + + + + + + +
virtual const MPI_Comm & dftfe::nonlinearSolverProblem::getMPICommunicator ()
+
+pure virtual
+
+ +

get MPI communicator.

+ +

Implemented in dftfe::geoOptCell, dftfe::geoOptIon, and dftfe::nudgedElasticBandClass.

+ +
+
+ +

◆ getNumberUnknowns()

+ +
+
+ + + + + +
+ + + + + + + +
virtual unsigned int dftfe::nonlinearSolverProblem::getNumberUnknowns () const
+
+pure virtual
+
+ +

Obtain number of unknowns.

+
Returns
Number of unknowns.
+ +

Implemented in dftfe::geoOptCell, dftfe::geoOptIon, and dftfe::nudgedElasticBandClass.

+ +
+
+ +

◆ getUnknownCountFlag()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::vector< unsigned int > dftfe::nonlinearSolverProblem::getUnknownCountFlag () const
+
+pure virtual
+
+ +

For each unknown indicate whether that unknown should be accumulated. This functionality is needed in the case of parallel execution when domain decomposition is employed. Unknowns residing on processor boundary should only be accumulated once when dot products of vertex fields are computed (e.g. residual).

+
Returns
A vector of int values for each unknown. Value of 1 indicates that the unknown should be counted and 0 otherwise.
+ +

Implemented in dftfe::geoOptCell, dftfe::geoOptIon, and dftfe::nudgedElasticBandClass.

+ +
+
+ +

◆ gradient()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::nonlinearSolverProblem::gradient (std::vector< double > & gradient)
+
+pure virtual
+
+ +

Compute function gradient (aka forces).

+
Parameters
+ + +
gradientSTL vector for gradient values.
+
+
+ +

Implemented in dftfe::geoOptCell, dftfe::geoOptIon, and dftfe::nudgedElasticBandClass.

+ +
+
+ +

◆ isConverged()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool dftfe::nonlinearSolverProblem::isConverged () const
+
+pure virtual
+
+ +

check for convergence.

+ +

Implemented in dftfe::geoOptCell, dftfe::geoOptIon, and dftfe::nudgedElasticBandClass.

+ +
+
+ +

◆ precondition()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
virtual void dftfe::nonlinearSolverProblem::precondition (std::vector< double > & s,
const std::vector< double > & gradient )
+
+pure virtual
+
+ +

Apply preconditioner to function gradient.

+
Parameters
+ + + +
sSTL vector for s=-M^{-1} gradient.
gradientSTL vector for gradient values.
+
+
+ +

Implemented in dftfe::geoOptCell, dftfe::geoOptIon, and dftfe::nudgedElasticBandClass.

+ +
+
+ +

◆ save()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::nonlinearSolverProblem::save ()
+
+pure virtual
+
+ +

create checkpoint for the current state of the problem i.e problem domain and solution.

+ +

Implemented in dftfe::geoOptCell, dftfe::geoOptIon, and dftfe::nudgedElasticBandClass.

+ +
+
+ +

◆ solution()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::nonlinearSolverProblem::solution (std::vector< double > & solution)
+
+pure virtual
+
+ +

Obtain current solution.

+
Parameters
+ + +
solutionSpace for current solution.
+
+
+ +

Implemented in dftfe::geoOptCell, dftfe::geoOptIon, and dftfe::nudgedElasticBandClass.

+ +
+
+ +

◆ update()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
virtual void dftfe::nonlinearSolverProblem::update (const std::vector< double > & solution,
const bool computeForces = true,
const bool useSingleAtomSolutionsInitialGuess = false )
+
+pure virtual
+
+ +

Update solution.

+
Parameters
+ + +
solutionUpdated solution.
+
+
+ +

Implemented in dftfe::geoOptIon, dftfe::nudgedElasticBandClass, and dftfe::geoOptCell.

+ +
+
+ +

◆ value()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void dftfe::nonlinearSolverProblem::value (std::vector< double > & functionValue)
+
+pure virtual
+
+ +

Compute function value (aka energy).

+
Returns
Function value.
+ +

Implemented in dftfe::geoOptCell, dftfe::geoOptIon, and dftfe::nudgedElasticBandClass.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1nonlinear_solver_problem.png b/classdftfe_1_1nonlinear_solver_problem.png new file mode 100644 index 0000000000000000000000000000000000000000..a01f4cb1940eaacfd481f014aaf6daa93a82a663 GIT binary patch literal 1355 zcmaKsYfw{17=}+o!)2hs)(aE^f+&g>gkYjk5JhMX62iz`NCvqn#8a+85F)4p$V`cP zz)}nfXhc+u1R=Bvl`0Uqg-aml2|^T%K`tt3Nsvf-#&)Lt;dFoOKKt#D{q}v|*#bY` z?@f%pH39&@1f(1|1OUs3DEk@cp|k7Z-Z*rz@bd}q)ai66DyRQsoqv3D=k_g$W+mN9 zxm=Fcck~4D&@;o-L%#k1y8k>#%eaF8uv`ir*cXtFnYq$mcYVF-3R%>p*ShQvo4i)_ zRoi0kh1q3h7P_}%ke93FQWvUZ1PACPuB48sKfS0W0>P0GVC;^OVq1V!5&xnoQ>7hs zc{!kFKkA9kDRCS1oq$>dV3+}jz##>^joHotzVT)(+L_C^;1Xk)7G zns;`q+N>D5;I@KBEsHSUG|M=3gD#2Dkb;X_JKHLpl+H^d7Yqy{00*1tw%Qo5p`gux zU3qtMalvusGVbAI^+B80XJet!Rx68ki39<{eR(~|Z|$P?Yng$$f0U#QrLT1x6#5Lc z;a(+2K>$D6gIim!-%xs982-ydaFTKd;lAeHMYKblfDTpl3gRVdc9DQjjqS`M3Nq0; z&2&btIh=ihGINZeYYc^g&V*UyJbK);+QT{>Z#}NaJ8LVnb_dV}-BJML~_g;?ag z-I<;9HvKt<{{#U7L<@QWqOPwJ@ltFBS!`87W~Ajzp|2WBS^|bX)aixiH(;tcD*b9s z30_XFF>z;=?R950O#{P6AmH}679)+52|ul*%Y-utiA#`7xLfP23xa38nx^4Y(ro#o z5;|-j1=-#rOTA$9M#>>pO`&a|2%!wHvMQ)5p5a;$xt@_#2ZYMTrv!dCw=J3zHhTxd zUrSYvolI5>LGbeaH0^S`6I{G9LAv5pUy>$dugKu3sag#C1;JR<HTHcCww^df)E1%}YFDlEJvCdUjiAQ@P zEK@ne-5FGz5sg7jBiAWXen_+K*u_{9Y+%ogxa4az7hoQq7*v~@v@!0AWBo-QWZx}s z()Nb=gXGR%k?E#%QeV}8vA9E5M79IRQj!}CJ?ZdIBbCTt>F?k|g56ed?<=i`H+)J= z!)*aSI;nfdx*Whu0wNrMXKnz|MExC;+h|@U$(BexBpc-%doB|~38EJ&oqn#*MD3hm Su?hO^0idVv0sj7oGk*aLCy+D% literal 0 HcmV?d00001 diff --git a/classdftfe_1_1nudged_elastic_band_class-members.html b/classdftfe_1_1nudged_elastic_band_class-members.html new file mode 100644 index 000000000..1883e61ff --- /dev/null +++ b/classdftfe_1_1nudged_elastic_band_class-members.html @@ -0,0 +1,157 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::nudgedElasticBandClass Member List
+
+
+ +

This is the complete list of members for dftfe::nudgedElasticBandClass, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bfgsStepMethoddftfe::nudgedElasticBandClassprivate
CalculateForceonImage(const std::vector< double > &, const std::vector< double > &, std::vector< double > &)dftfe::nudgedElasticBandClassprivate
CalculateForceparallel(int, std::vector< double > &, const std::vector< double > &)dftfe::nudgedElasticBandClassprivate
CalculateForceperpendicular(int, std::vector< double > &, const std::vector< double > &, const std::vector< double > &)dftfe::nudgedElasticBandClassprivate
CalculatePathLength(bool flag) constdftfe::nudgedElasticBandClassprivate
CalculatePathTangent(int, std::vector< double > &)dftfe::nudgedElasticBandClassprivate
CalculateSpringConstant(int, double &)dftfe::nudgedElasticBandClassprivate
CalculateSpringForce(int, std::vector< double > &, std::vector< double >)dftfe::nudgedElasticBandClassprivate
checkRestart(bool &periodic)dftfe::nudgedElasticBandClassprivate
d_atomLocationsInitialdftfe::nudgedElasticBandClassprivate
d_coordinatesFileNEBdftfe::nudgedElasticBandClassprivate
d_countrelaxationFlagsdftfe::nudgedElasticBandClassprivate
d_dftfeWrapperdftfe::nudgedElasticBandClassprivate
d_dftPtrdftfe::nudgedElasticBandClassprivate
d_domainVectorsFileNEBdftfe::nudgedElasticBandClassprivate
d_externalForceOnAtomdftfe::nudgedElasticBandClassprivate
d_ImageErrordftfe::nudgedElasticBandClassprivate
d_imageFreezedftfe::nudgedElasticBandClassprivate
d_ionRelaxFlagsFiledftfe::nudgedElasticBandClassprivate
d_isRestartdftfe::nudgedElasticBandClassprivate
d_kmaxdftfe::nudgedElasticBandClass
d_kmindftfe::nudgedElasticBandClass
d_Lengthdftfe::nudgedElasticBandClassprivate
d_maximumAtomForceToBeRelaxeddftfe::nudgedElasticBandClassprivate
d_maximumNEBIterationdftfe::nudgedElasticBandClassprivate
d_mpiCommParentdftfe::nudgedElasticBandClassprivate
d_NEBImagenodftfe::nudgedElasticBandClass
d_nonLinearSolverPtrdftfe::nudgedElasticBandClassprivate
d_numberGlobalChargesdftfe::nudgedElasticBandClassprivate
d_numberOfImagesdftfe::nudgedElasticBandClassprivate
d_optimizationSolverdftfe::nudgedElasticBandClassprivate
d_optimizermaxIonUpdateStepdftfe::nudgedElasticBandClassprivate
d_optimizertolerancedftfe::nudgedElasticBandClassprivate
d_relaxationFlagsdftfe::nudgedElasticBandClassprivate
d_restartFilesPathdftfe::nudgedElasticBandClassprivate
d_restartFlagdftfe::nudgedElasticBandClassprivate
d_solverdftfe::nudgedElasticBandClassprivate
d_solverRestartdftfe::nudgedElasticBandClassprivate
d_solverRestartPathdftfe::nudgedElasticBandClassprivate
d_startStepdftfe::nudgedElasticBandClassprivate
d_this_mpi_processdftfe::nudgedElasticBandClassprivate
d_totalUpdateCallsdftfe::nudgedElasticBandClassprivate
d_verbositydftfe::nudgedElasticBandClassprivate
findMEP()dftfe::nudgedElasticBandClass
getMPICommunicator()dftfe::nudgedElasticBandClassprivatevirtual
getNumberUnknowns() constdftfe::nudgedElasticBandClassvirtual
getUnknownCountFlag() constdftfe::nudgedElasticBandClassvirtual
gradient(std::vector< double > &gradient)dftfe::nudgedElasticBandClassvirtual
ImageError(int image, double &Force)dftfe::nudgedElasticBandClassprivate
init()dftfe::nudgedElasticBandClass
isConverged() constdftfe::nudgedElasticBandClassprivatevirtual
lbfgsNumPastStepsdftfe::nudgedElasticBandClassprivate
LNorm(double &, std::vector< double >, int, int)dftfe::nudgedElasticBandClass
maxLineSearchIterCGPRPdftfe::nudgedElasticBandClassprivate
nonlinearSolverProblem()dftfe::nonlinearSolverProblem
nudgedElasticBandClass(const std::string parameter_file, const std::string restartFilesPath, const MPI_Comm &mpi_comm_parent, const bool restart, const int verbosity, const bool useDevice, const int d_numberOfImages, const bool imageFreeze, double Kmax, double Kmin, const double pathThreshold, const int maximumNEBIteration, const unsigned int _maxLineSearchIterCGPRP, const unsigned int _lbfgsNumPastSteps, const std::string &_bfgsStepMethod, const double optimizermaxIonUpdateStep, const std::string &optimizationSolver, const std::string &coordinatesFileNEB, const std::string &domainVectorsFileNEB, const std::string &ionRelaxFlagsFile)dftfe::nudgedElasticBandClass
pcoutdftfe::nudgedElasticBandClassprivate
precondition(std::vector< double > &s, const std::vector< double > &gradient)dftfe::nudgedElasticBandClassvirtual
ReturnNormedVector(std::vector< double > &, int)dftfe::nudgedElasticBandClass
save()dftfe::nudgedElasticBandClassvirtual
set()dftfe::nudgedElasticBandClassprivate
solution(std::vector< double > &solution)dftfe::nudgedElasticBandClassvirtual
update(const std::vector< double > &solution, const bool computeForces=true, const bool useSingleAtomSolutionsInitialGuess=false)dftfe::nudgedElasticBandClassvirtual
value(std::vector< double > &functionValue)dftfe::nudgedElasticBandClassvirtual
WriteRestartFiles(int step)dftfe::nudgedElasticBandClassprivate
~nonlinearSolverProblem()=0dftfe::nonlinearSolverProblempure virtual
+ + + + diff --git a/classdftfe_1_1nudged_elastic_band_class.html b/classdftfe_1_1nudged_elastic_band_class.html new file mode 100644 index 000000000..8eb929cde --- /dev/null +++ b/classdftfe_1_1nudged_elastic_band_class.html @@ -0,0 +1,1960 @@ + + + + + + + +DFT-FE: dftfe::nudgedElasticBandClass Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::nudgedElasticBandClass Class Reference
+
+
+ +

#include <nudgedElasticBandClass.h>

+
+Inheritance diagram for dftfe::nudgedElasticBandClass:
+
+
+ + +dftfe::nonlinearSolverProblem + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 nudgedElasticBandClass (const std::string parameter_file, const std::string restartFilesPath, const MPI_Comm &mpi_comm_parent, const bool restart, const int verbosity, const bool useDevice, const int d_numberOfImages, const bool imageFreeze, double Kmax, double Kmin, const double pathThreshold, const int maximumNEBIteration, const unsigned int _maxLineSearchIterCGPRP, const unsigned int _lbfgsNumPastSteps, const std::string &_bfgsStepMethod, const double optimizermaxIonUpdateStep, const std::string &optimizationSolver, const std::string &coordinatesFileNEB, const std::string &domainVectorsFileNEB, const std::string &ionRelaxFlagsFile)
 First, sets the nebRestart path. Second, creates Step0 folder with coordinaes and domainVectors file. Third, creates the array of pointers of dftClass for each image. If in restart mode, calls function to read coordinates and initialise parameters Sets solvermode: CGPT, LBFGS, BFGS.
 
int findMEP ()
 Calls optimizer(nonLinearClass) solve. Prints the Final NEB energies and forces. References: 1. https://pubs.aip.org/aip/jcp/article/113/22/9978/184858/Improved-tangent-estimate-in-the-nudged-elastic 2. https://pubs.aip.org/aip/jcp/article/128/13/134106/977389/Optimization-methods-for-finding-minimum-energy.
 
void ReturnNormedVector (std::vector< double > &, int)
 Returns the Normed vetor satistfying ||v||_2 = 1.
 
void LNorm (double &, std::vector< double >, int, int)
 Calculates the L-norm of a vector.
 
void gradient (std::vector< double > &gradient)
 Identifies the images to freeze, calculates gradient. First prints the Image No., free energy and force error of each image Prints activation energy of current step.
 
unsigned int getNumberUnknowns () const
 Returns the total DoFs of the optimizer problem.
 
void update (const std::vector< double > &solution, const bool computeForces=true, const bool useSingleAtomSolutionsInitialGuess=false)
 Updates the positions of atoms and the total step count. Calls dftPtr colve to compute eenergy and force for current step.
 
void save ()
 Saves the output files for restart.
 
void init ()
 initializes the data member d_relaxationFlags, nonlinearSolver,
 
void value (std::vector< double > &functionValue)
 Not working. Finds the saddle point energy.
 
void precondition (std::vector< double > &s, const std::vector< double > &gradient)
 not implemented
 
void solution (std::vector< double > &solution)
 not implemented
 
std::vector< unsigned intgetUnknownCountFlag () const
 not implemented
 
- Public Member Functions inherited from dftfe::nonlinearSolverProblem
 nonlinearSolverProblem ()
 Constructor.
 
virtual ~nonlinearSolverProblem ()=0
 Destructor.
 
+ + + + + + + +

+Public Attributes

double d_kmax = 0.1
 
double d_kmin = 0.1
 
int d_NEBImageno
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

const MPI_CommgetMPICommunicator ()
 get MPI communicator.
 
void CalculatePathTangent (int, std::vector< double > &)
 Calculate the tangent between each image.
 
void CalculateForceparallel (int, std::vector< double > &, const std::vector< double > &)
 Calculates the force on atom along the tangent between images.
 
void CalculateForceperpendicular (int, std::vector< double > &, const std::vector< double > &, const std::vector< double > &)
 Calculates force perpendicular to the tangent.
 
void CalculateSpringForce (int, std::vector< double > &, std::vector< double >)
 Calculates the force due to the spring.
 
void CalculateForceonImage (const std::vector< double > &, const std::vector< double > &, std::vector< double > &)
 Calculates F_NEB = G_per+ F_spring.
 
double CalculatePathLength (bool flag) const
 Calculate path length: max diaplacement of atoms.
 
void WriteRestartFiles (int step)
 Write Restart files.
 
void CalculateSpringConstant (int, double &)
 Find spring constant based on k_max and k_min.
 
void ImageError (int image, double &Force)
 Calculate F_per norm.
 
void set ()
 set() initalises all the private datamembers of nudgedElasticBandClass object from the parameters declared by user.
 
bool isConverged () const
 check for convergence.
 
int checkRestart (bool &periodic)
 Check the restart files.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::vector< std::unique_ptr< dftfeWrapper > > d_dftfeWrapper
 
dftBased_dftPtr
 
std::unique_ptr< nonLinearSolverd_nonLinearSolverPtr
 
const MPI_Comm d_mpiCommParent
 
const unsigned int d_this_mpi_process
 
dealii::ConditionalOStream pcout
 
int d_verbosity
 
std::string d_restartFilesPath
 
std::string d_solverRestartPath
 
bool d_imageFreeze
 
int d_totalUpdateCalls
 total number of calls to update()
 
int d_startStep
 
int d_solver
 
bool d_isRestart
 
bool d_solverRestart
 
unsigned int d_restartFlag
 
unsigned int d_numberGlobalCharges
 
double d_maximumAtomForceToBeRelaxed
 
unsigned int d_numberOfImages
 
unsigned int d_countrelaxationFlags
 
unsigned int d_maximumNEBIteration
 
double d_optimizertolerance
 
unsigned int maxLineSearchIterCGPRP
 
std::string bfgsStepMethod
 
double d_optimizermaxIonUpdateStep
 
unsigned int lbfgsNumPastSteps
 
std::string d_optimizationSolver
 
std::string d_ionRelaxFlagsFile
 
std::map< int, std::vector< std::vector< double > > > d_atomLocationsInitial
 
std::vector< unsigned intd_relaxationFlags
 
std::vector< doubled_externalForceOnAtom
 
std::vector< doubled_ImageError
 
std::vector< doubled_Length
 
std::string d_coordinatesFileNEB
 
std::string d_domainVectorsFileNEB
 
+

Constructor & Destructor Documentation

+ +

◆ nudgedElasticBandClass()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::nudgedElasticBandClass::nudgedElasticBandClass (const std::string parameter_file,
const std::string restartFilesPath,
const MPI_Comm & mpi_comm_parent,
const bool restart,
const int verbosity,
const bool useDevice,
const int d_numberOfImages,
const bool imageFreeze,
double Kmax,
double Kmin,
const double pathThreshold,
const int maximumNEBIteration,
const unsigned int _maxLineSearchIterCGPRP,
const unsigned int _lbfgsNumPastSteps,
const std::string & _bfgsStepMethod,
const double optimizermaxIonUpdateStep,
const std::string & optimizationSolver,
const std::string & coordinatesFileNEB,
const std::string & domainVectorsFileNEB,
const std::string & ionRelaxFlagsFile )
+
+ +

First, sets the nebRestart path. Second, creates Step0 folder with coordinaes and domainVectors file. Third, creates the array of pointers of dftClass for each image. If in restart mode, calls function to read coordinates and initialise parameters Sets solvermode: CGPT, LBFGS, BFGS.

+ +
+
+

Member Function Documentation

+ +

◆ CalculateForceonImage()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
void dftfe::nudgedElasticBandClass::CalculateForceonImage (const std::vector< double > & ,
const std::vector< double > & ,
std::vector< double > &  )
+
+private
+
+ +

Calculates F_NEB = G_per+ F_spring.

+ +
+
+ +

◆ CalculateForceparallel()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
void dftfe::nudgedElasticBandClass::CalculateForceparallel (int ,
std::vector< double > & ,
const std::vector< double > &  )
+
+private
+
+ +

Calculates the force on atom along the tangent between images.

+ +
+
+ +

◆ CalculateForceperpendicular()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::nudgedElasticBandClass::CalculateForceperpendicular (int ,
std::vector< double > & ,
const std::vector< double > & ,
const std::vector< double > &  )
+
+private
+
+ +

Calculates force perpendicular to the tangent.

+ +
+
+ +

◆ CalculatePathLength()

+ +
+
+ + + + + +
+ + + + + + + +
double dftfe::nudgedElasticBandClass::CalculatePathLength (bool flag) const
+
+private
+
+ +

Calculate path length: max diaplacement of atoms.

+ +
+
+ +

◆ CalculatePathTangent()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
void dftfe::nudgedElasticBandClass::CalculatePathTangent (int ,
std::vector< double > &  )
+
+private
+
+ +

Calculate the tangent between each image.

+ +
+
+ +

◆ CalculateSpringConstant()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
void dftfe::nudgedElasticBandClass::CalculateSpringConstant (int ,
double &  )
+
+private
+
+ +

Find spring constant based on k_max and k_min.

+ +
+
+ +

◆ CalculateSpringForce()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
void dftfe::nudgedElasticBandClass::CalculateSpringForce (int ,
std::vector< double > & ,
std::vector< double >  )
+
+private
+
+ +

Calculates the force due to the spring.

+ +
+
+ +

◆ checkRestart()

+ +
+
+ + + + + +
+ + + + + + + +
int dftfe::nudgedElasticBandClass::checkRestart (bool & periodic)
+
+private
+
+ +

Check the restart files.

+ +
+
+ +

◆ findMEP()

+ +
+
+ + + + + + + +
int dftfe::nudgedElasticBandClass::findMEP ()
+
+
+ +

◆ getMPICommunicator()

+ +
+
+ + + + + +
+ + + + + + + +
const MPI_Comm & dftfe::nudgedElasticBandClass::getMPICommunicator ()
+
+privatevirtual
+
+ +

get MPI communicator.

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ getNumberUnknowns()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int dftfe::nudgedElasticBandClass::getNumberUnknowns () const
+
+virtual
+
+ +

Returns the total DoFs of the optimizer problem.

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ getUnknownCountFlag()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< unsigned int > dftfe::nudgedElasticBandClass::getUnknownCountFlag () const
+
+virtual
+
+ +

not implemented

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ gradient()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::nudgedElasticBandClass::gradient (std::vector< double > & gradient)
+
+virtual
+
+ +

Identifies the images to freeze, calculates gradient. First prints the Image No., free energy and force error of each image Prints activation energy of current step.

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ ImageError()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
void dftfe::nudgedElasticBandClass::ImageError (int image,
double & Force )
+
+private
+
+ +

Calculate F_per norm.

+ +
+
+ +

◆ init()

+ +
+
+ + + + + + + +
void dftfe::nudgedElasticBandClass::init ()
+
+ +

initializes the data member d_relaxationFlags, nonlinearSolver,

+ +
+
+ +

◆ isConverged()

+ +
+
+ + + + + +
+ + + + + + + +
bool dftfe::nudgedElasticBandClass::isConverged () const
+
+privatevirtual
+
+ +

check for convergence.

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ LNorm()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::nudgedElasticBandClass::LNorm (double & ,
std::vector< double > ,
int ,
int  )
+
+ +

Calculates the L-norm of a vector.

+ +
+
+ +

◆ precondition()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
void dftfe::nudgedElasticBandClass::precondition (std::vector< double > & s,
const std::vector< double > & gradient )
+
+virtual
+
+ +

not implemented

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ ReturnNormedVector()

+ +
+
+ + + + + + + + + + + +
void dftfe::nudgedElasticBandClass::ReturnNormedVector (std::vector< double > & ,
int  )
+
+ +

Returns the Normed vetor satistfying ||v||_2 = 1.

+ +
+
+ +

◆ save()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::nudgedElasticBandClass::save ()
+
+virtual
+
+ +

Saves the output files for restart.

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ set()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::nudgedElasticBandClass::set ()
+
+private
+
+ +

set() initalises all the private datamembers of nudgedElasticBandClass object from the parameters declared by user.

+ +
+
+ +

◆ solution()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::nudgedElasticBandClass::solution (std::vector< double > & solution)
+
+virtual
+
+ +

not implemented

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ update()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
void dftfe::nudgedElasticBandClass::update (const std::vector< double > & solution,
const bool computeForces = true,
const bool useSingleAtomSolutionsInitialGuess = false )
+
+virtual
+
+ +

Updates the positions of atoms and the total step count. Calls dftPtr colve to compute eenergy and force for current step.

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ value()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::nudgedElasticBandClass::value (std::vector< double > & functionValue)
+
+virtual
+
+ +

Not working. Finds the saddle point energy.

+ +

Implements dftfe::nonlinearSolverProblem.

+ +
+
+ +

◆ WriteRestartFiles()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::nudgedElasticBandClass::WriteRestartFiles (int step)
+
+private
+
+ +

Write Restart files.

+ +
+
+

Member Data Documentation

+ +

◆ bfgsStepMethod

+ +
+
+ + + + + +
+ + + + +
std::string dftfe::nudgedElasticBandClass::bfgsStepMethod
+
+private
+
+ +
+
+ +

◆ d_atomLocationsInitial

+ +
+
+ + + + + +
+ + + + +
std::map<int, std::vector<std::vector<double> > > dftfe::nudgedElasticBandClass::d_atomLocationsInitial
+
+private
+
+ +
+
+ +

◆ d_coordinatesFileNEB

+ +
+
+ + + + + +
+ + + + +
std::string dftfe::nudgedElasticBandClass::d_coordinatesFileNEB
+
+private
+
+ +
+
+ +

◆ d_countrelaxationFlags

+ +
+
+ + + + + +
+ + + + +
unsigned int dftfe::nudgedElasticBandClass::d_countrelaxationFlags
+
+private
+
+ +
+
+ +

◆ d_dftfeWrapper

+ +
+
+ + + + + +
+ + + + +
std::vector<std::unique_ptr<dftfeWrapper> > dftfe::nudgedElasticBandClass::d_dftfeWrapper
+
+private
+
+ +
+
+ +

◆ d_dftPtr

+ +
+
+ + + + + +
+ + + + +
dftBase* dftfe::nudgedElasticBandClass::d_dftPtr
+
+private
+
+ +
+
+ +

◆ d_domainVectorsFileNEB

+ +
+
+ + + + + +
+ + + + +
std::string dftfe::nudgedElasticBandClass::d_domainVectorsFileNEB
+
+private
+
+ +
+
+ +

◆ d_externalForceOnAtom

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::nudgedElasticBandClass::d_externalForceOnAtom
+
+private
+
+ +
+
+ +

◆ d_ImageError

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::nudgedElasticBandClass::d_ImageError
+
+private
+
+ +
+
+ +

◆ d_imageFreeze

+ +
+
+ + + + + +
+ + + + +
bool dftfe::nudgedElasticBandClass::d_imageFreeze
+
+private
+
+ +
+
+ +

◆ d_ionRelaxFlagsFile

+ +
+
+ + + + + +
+ + + + +
std::string dftfe::nudgedElasticBandClass::d_ionRelaxFlagsFile
+
+private
+
+ +
+
+ +

◆ d_isRestart

+ +
+
+ + + + + +
+ + + + +
bool dftfe::nudgedElasticBandClass::d_isRestart
+
+private
+
+ +
+
+ +

◆ d_kmax

+ +
+
+ + + + +
double dftfe::nudgedElasticBandClass::d_kmax = 0.1
+
+ +
+
+ +

◆ d_kmin

+ +
+
+ + + + +
double dftfe::nudgedElasticBandClass::d_kmin = 0.1
+
+ +
+
+ +

◆ d_Length

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::nudgedElasticBandClass::d_Length
+
+private
+
+ +
+
+ +

◆ d_maximumAtomForceToBeRelaxed

+ +
+
+ + + + + +
+ + + + +
double dftfe::nudgedElasticBandClass::d_maximumAtomForceToBeRelaxed
+
+private
+
+ +
+
+ +

◆ d_maximumNEBIteration

+ +
+
+ + + + + +
+ + + + +
unsigned int dftfe::nudgedElasticBandClass::d_maximumNEBIteration
+
+private
+
+ +
+
+ +

◆ d_mpiCommParent

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm dftfe::nudgedElasticBandClass::d_mpiCommParent
+
+private
+
+ +
+
+ +

◆ d_NEBImageno

+ +
+
+ + + + +
int dftfe::nudgedElasticBandClass::d_NEBImageno
+
+ +
+
+ +

◆ d_nonLinearSolverPtr

+ +
+
+ + + + + +
+ + + + +
std::unique_ptr<nonLinearSolver> dftfe::nudgedElasticBandClass::d_nonLinearSolverPtr
+
+private
+
+ +
+
+ +

◆ d_numberGlobalCharges

+ +
+
+ + + + + +
+ + + + +
unsigned int dftfe::nudgedElasticBandClass::d_numberGlobalCharges
+
+private
+
+ +
+
+ +

◆ d_numberOfImages

+ +
+
+ + + + + +
+ + + + +
unsigned int dftfe::nudgedElasticBandClass::d_numberOfImages
+
+private
+
+ +
+
+ +

◆ d_optimizationSolver

+ +
+
+ + + + + +
+ + + + +
std::string dftfe::nudgedElasticBandClass::d_optimizationSolver
+
+private
+
+ +
+
+ +

◆ d_optimizermaxIonUpdateStep

+ +
+
+ + + + + +
+ + + + +
double dftfe::nudgedElasticBandClass::d_optimizermaxIonUpdateStep
+
+private
+
+ +
+
+ +

◆ d_optimizertolerance

+ +
+
+ + + + + +
+ + + + +
double dftfe::nudgedElasticBandClass::d_optimizertolerance
+
+private
+
+ +
+
+ +

◆ d_relaxationFlags

+ +
+
+ + + + + +
+ + + + +
std::vector<unsigned int> dftfe::nudgedElasticBandClass::d_relaxationFlags
+
+private
+
+ +
+
+ +

◆ d_restartFilesPath

+ +
+
+ + + + + +
+ + + + +
std::string dftfe::nudgedElasticBandClass::d_restartFilesPath
+
+private
+
+ +
+
+ +

◆ d_restartFlag

+ +
+
+ + + + + +
+ + + + +
unsigned int dftfe::nudgedElasticBandClass::d_restartFlag
+
+private
+
+ +
+
+ +

◆ d_solver

+ +
+
+ + + + + +
+ + + + +
int dftfe::nudgedElasticBandClass::d_solver
+
+private
+
+ +
+
+ +

◆ d_solverRestart

+ +
+
+ + + + + +
+ + + + +
bool dftfe::nudgedElasticBandClass::d_solverRestart
+
+private
+
+ +
+
+ +

◆ d_solverRestartPath

+ +
+
+ + + + + +
+ + + + +
std::string dftfe::nudgedElasticBandClass::d_solverRestartPath
+
+private
+
+ +
+
+ +

◆ d_startStep

+ +
+
+ + + + + +
+ + + + +
int dftfe::nudgedElasticBandClass::d_startStep
+
+private
+
+ +
+
+ +

◆ d_this_mpi_process

+ +
+
+ + + + + +
+ + + + +
const unsigned int dftfe::nudgedElasticBandClass::d_this_mpi_process
+
+private
+
+ +
+
+ +

◆ d_totalUpdateCalls

+ +
+
+ + + + + +
+ + + + +
int dftfe::nudgedElasticBandClass::d_totalUpdateCalls
+
+private
+
+ +

total number of calls to update()

+ +
+
+ +

◆ d_verbosity

+ +
+
+ + + + + +
+ + + + +
int dftfe::nudgedElasticBandClass::d_verbosity
+
+private
+
+ +
+
+ +

◆ lbfgsNumPastSteps

+ +
+
+ + + + + +
+ + + + +
unsigned int dftfe::nudgedElasticBandClass::lbfgsNumPastSteps
+
+private
+
+ +
+
+ +

◆ maxLineSearchIterCGPRP

+ +
+
+ + + + + +
+ + + + +
unsigned int dftfe::nudgedElasticBandClass::maxLineSearchIterCGPRP
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::nudgedElasticBandClass::pcout
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1nudged_elastic_band_class.png b/classdftfe_1_1nudged_elastic_band_class.png new file mode 100644 index 0000000000000000000000000000000000000000..e827c0b11abcde1fdcd1d62f76b39187e1851501 GIT binary patch literal 783 zcmV+q1MvKbP)vTJr#LVva2S`&=-}Ys|Ns9r%~qrU000SeQchC<|NsC0|NsC0Hv*f~0007- zNkl`-EOa$KG!-)z)BV?3^ni{bNJD z*;=a^C!f@@Z~W^-?cOW)$k(*};Bvji-r1{mXWx3;W?pX4<(^{ez48m}-dcXa<}PhL zs*LkLGT*`Wo8)!1MWi^5u^s6ITd#eLJ?`x{o8$$y-hmVBf%zD_w!AvJ&HncrTcoIu zIUTxDJGWKe)Jfv#0G#UB{l#=DX{^-sFYIH6ADSLro<-6C?z&YM#*45zm{@dNOGcK!ejE- z>DRcKsyQU-w9nS)J%h)t*}r%Nx7asvGd|!*(yQT4DLVFE=I1KUa_xie*4A&|iAp?1 z8oLJ$=Qh=_&*8|yTc{pr*t@f-cK_OAYR+8j+vufY{LX+fI^>LGsWV{laB%_qrBpIa#b}6MSr$49Il#_QZjD-LI N002ovPDHLkV1nO2iQWJJ literal 0 HcmV?d00001 diff --git a/classdftfe_1_1oncv_class-members.html b/classdftfe_1_1oncv_class-members.html new file mode 100644 index 000000000..a20eedd78 --- /dev/null +++ b/classdftfe_1_1oncv_class-members.html @@ -0,0 +1,153 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::oncvClass< ValueType, memorySpace > Member List
+
+
+ +

This is the complete list of members for dftfe::oncvClass< ValueType, memorySpace >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
computeNonlocalPseudoPotentialConstants()dftfe::oncvClass< ValueType, memorySpace >private
coreNuclearDensityPresent(unsigned int Znum)dftfe::oncvClass< ValueType, memorySpace >
createAtomCenteredSphericalFunctionsForDensities()dftfe::oncvClass< ValueType, memorySpace >private
createAtomCenteredSphericalFunctionsForLocalPotential()dftfe::oncvClass< ValueType, memorySpace >private
createAtomCenteredSphericalFunctionsForProjectors()dftfe::oncvClass< ValueType, memorySpace >private
d_atomicCoreDensityVectordftfe::oncvClass< ValueType, memorySpace >private
d_atomicLocalPotVectordftfe::oncvClass< ValueType, memorySpace >private
d_atomicNonLocalPseudoPotentialConstantsdftfe::oncvClass< ValueType, memorySpace >private
d_atomicProjectorFnsContainerdftfe::oncvClass< ValueType, memorySpace >private
d_atomicProjectorFnsMapdftfe::oncvClass< ValueType, memorySpace >private
d_atomicProjectorFnsVectordftfe::oncvClass< ValueType, memorySpace >private
d_atomicValenceDensityVectordftfe::oncvClass< ValueType, memorySpace >private
d_atomicWaveFnsVectordftfe::oncvClass< ValueType, memorySpace >private
d_atomLocationsdftfe::oncvClass< ValueType, memorySpace >private
d_atomTypeAtributesdftfe::oncvClass< ValueType, memorySpace >private
d_atomTypeCoreFlagMapdftfe::oncvClass< ValueType, memorySpace >private
d_atomTypesdftfe::oncvClass< ValueType, memorySpace >private
d_atomTypesListdftfe::oncvClass< ValueType, memorySpace >private
d_BasisOperatorHostPtrdftfe::oncvClass< ValueType, memorySpace >private
d_BLASWrapperHostPtrdftfe::oncvClass< ValueType, memorySpace >private
d_couplingMatrixEntriesdftfe::oncvClass< ValueType, memorySpace >private
d_densityQuadratureIddftfe::oncvClass< ValueType, memorySpace >private
d_densityQuadratureIdElectrodftfe::oncvClass< ValueType, memorySpace >private
d_dftfeScratchFolderNamedftfe::oncvClass< ValueType, memorySpace >private
d_excManagerPtrdftfe::oncvClass< ValueType, memorySpace >private
d_floatingNuclearChargesdftfe::oncvClass< ValueType, memorySpace >private
d_HamiltonianCouplingMatrixEntriesUpdateddftfe::oncvClass< ValueType, memorySpace >private
d_imageIdsdftfe::oncvClass< ValueType, memorySpace >private
d_imagePositionsdftfe::oncvClass< ValueType, memorySpace >private
d_localContributionQuadratureIddftfe::oncvClass< ValueType, memorySpace >private
d_mpiCommParentdftfe::oncvClass< ValueType, memorySpace >private
d_nlpspQuadratureIddftfe::oncvClass< ValueType, memorySpace >private
d_nOMPThreadsdftfe::oncvClass< ValueType, memorySpace >private
d_nonLocalOperatordftfe::oncvClass< ValueType, memorySpace >private
d_nonLocalPseudoPotentialConstantsdftfe::oncvClass< ValueType, memorySpace >private
d_nuclearChargeQuadratureIdElectrodftfe::oncvClass< ValueType, memorySpace >private
d_numEigenValuesdftfe::oncvClass< ValueType, memorySpace >private
d_reproducible_outputdftfe::oncvClass< ValueType, memorySpace >private
d_sparsityPatternQuadratureIddftfe::oncvClass< ValueType, memorySpace >private
d_this_mpi_processdftfe::oncvClass< ValueType, memorySpace >private
d_useDevicedftfe::oncvClass< ValueType, memorySpace >private
d_verbositydftfe::oncvClass< ValueType, memorySpace >private
getAtomIdInCurrentProcessor(unsigned int iAtom)dftfe::oncvClass< ValueType, memorySpace >
getCouplingMatrix()dftfe::oncvClass< ValueType, memorySpace >
getNonLocalOperator()dftfe::oncvClass< ValueType, memorySpace >
getRadialCoreDensity(unsigned int Znum, double rad, std::vector< double > &Val)dftfe::oncvClass< ValueType, memorySpace >
getRadialCoreDensity(unsigned int Znum, double rad)dftfe::oncvClass< ValueType, memorySpace >
getRadialLocalPseudo(unsigned int Znum, double rad)dftfe::oncvClass< ValueType, memorySpace >
getRadialValenceDensity(unsigned int Znum, double rad, std::vector< double > &Val)dftfe::oncvClass< ValueType, memorySpace >
getRadialValenceDensity(unsigned int Znum, double rad)dftfe::oncvClass< ValueType, memorySpace >
getRmaxCoreDensity(unsigned int Znum)dftfe::oncvClass< ValueType, memorySpace >
getRmaxLocalPot(unsigned int Znum)dftfe::oncvClass< ValueType, memorySpace >
getRmaxValenceDensity(unsigned int Znum)dftfe::oncvClass< ValueType, memorySpace >
getTotalNumberOfAtomsInCurrentProcessor()dftfe::oncvClass< ValueType, memorySpace >
getTotalNumberOfSphericalFunctionsForAtomId(unsigned int atomId)dftfe::oncvClass< ValueType, memorySpace >
initialise(std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, dftfe::utils::MemorySpace::HOST > > basisOperationsHostPtr, std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > BLASWrapperPtrHost, unsigned int densityQuadratureId, unsigned int localContributionQuadratureId, unsigned int sparsityPatternQuadratureId, unsigned int nlpspQuadratureId, unsigned int densityQuadratureIdElectro, std::shared_ptr< excManager > excFunctionalPtr, const std::vector< std::vector< double > > &atomLocations, unsigned int numEigenValues)dftfe::oncvClass< ValueType, memorySpace >
initialiseNonLocalContribution(const std::vector< std::vector< double > > &atomLocations, const std::vector< int > &imageIds, const std::vector< std::vector< double > > &periodicCoords, const std::vector< double > &kPointWeights, const std::vector< double > &kPointCoordinates, const bool updateNonlocalSparsity)dftfe::oncvClass< ValueType, memorySpace >
initialiseNonLocalContribution(const std::vector< std::vector< double > > &atomLocations, const std::vector< int > &imageIds, const std::vector< std::vector< double > > &periodicCoords, const std::vector< double > &kPointWeights, const std::vector< double > &kPointCoordinates, const bool updateNonlocalSparsity, const std::map< unsigned int, std::vector< int > > &sparsityPattern, const std::vector< std::vector< dealii::CellId > > &elementIdsInAtomCompactSupport, const std::vector< std::vector< unsigned int > > &elementIndexesInAtomCompactSupport, const std::vector< unsigned int > &atomIdsInCurrentProcess, unsigned int numberElements)dftfe::oncvClass< ValueType, memorySpace >
initLocalPotential()dftfe::oncvClass< ValueType, memorySpace >
oncvClass(const MPI_Comm &mpi_comm_parent, const std::string &scratchFolderName, const std::set< unsigned int > &atomTypes, const bool floatingNuclearCharges, const unsigned int nOMPThreads, const std::map< unsigned int, unsigned int > &atomAttributes, const bool reproducibleOutput, const int verbosity, const bool useDevice)dftfe::oncvClass< ValueType, memorySpace >
pcoutdftfe::oncvClass< ValueType, memorySpace >private
setImageCoordinates(const std::vector< std::vector< double > > &atomLocations, const std::vector< int > &imageIds, const std::vector< std::vector< double > > &periodicCoords, std::vector< unsigned int > &imageIdsTemp, std::vector< double > &imageCoordsTemp)dftfe::oncvClass< ValueType, memorySpace >private
+ + + + diff --git a/classdftfe_1_1oncv_class.html b/classdftfe_1_1oncv_class.html new file mode 100644 index 000000000..ca4ff8f84 --- /dev/null +++ b/classdftfe_1_1oncv_class.html @@ -0,0 +1,1903 @@ + + + + + + + +DFT-FE: dftfe::oncvClass< ValueType, memorySpace > Class Template Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::oncvClass< ValueType, memorySpace > Class Template Reference
+
+
+ +

#include <oncvClass.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 oncvClass (const MPI_Comm &mpi_comm_parent, const std::string &scratchFolderName, const std::set< unsigned int > &atomTypes, const bool floatingNuclearCharges, const unsigned int nOMPThreads, const std::map< unsigned int, unsigned int > &atomAttributes, const bool reproducibleOutput, const int verbosity, const bool useDevice)
 
void initialise (std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, dftfe::utils::MemorySpace::HOST > > basisOperationsHostPtr, std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > BLASWrapperPtrHost, unsigned int densityQuadratureId, unsigned int localContributionQuadratureId, unsigned int sparsityPatternQuadratureId, unsigned int nlpspQuadratureId, unsigned int densityQuadratureIdElectro, std::shared_ptr< excManager > excFunctionalPtr, const std::vector< std::vector< double > > &atomLocations, unsigned int numEigenValues)
 Initialises all the data members with addresses/values to/of dftClass.
 
void initialiseNonLocalContribution (const std::vector< std::vector< double > > &atomLocations, const std::vector< int > &imageIds, const std::vector< std::vector< double > > &periodicCoords, const std::vector< double > &kPointWeights, const std::vector< double > &kPointCoordinates, const bool updateNonlocalSparsity)
 Initialises all the data members with addresses/values to/of dftClass.
 
void initialiseNonLocalContribution (const std::vector< std::vector< double > > &atomLocations, const std::vector< int > &imageIds, const std::vector< std::vector< double > > &periodicCoords, const std::vector< double > &kPointWeights, const std::vector< double > &kPointCoordinates, const bool updateNonlocalSparsity, const std::map< unsigned int, std::vector< int > > &sparsityPattern, const std::vector< std::vector< dealii::CellId > > &elementIdsInAtomCompactSupport, const std::vector< std::vector< unsigned int > > &elementIndexesInAtomCompactSupport, const std::vector< unsigned int > &atomIdsInCurrentProcess, unsigned int numberElements)
 
void initLocalPotential ()
 Initialises local potential.
 
void getRadialValenceDensity (unsigned int Znum, double rad, std::vector< double > &Val)
 
double getRadialValenceDensity (unsigned int Znum, double rad)
 
double getRmaxValenceDensity (unsigned int Znum)
 
void getRadialCoreDensity (unsigned int Znum, double rad, std::vector< double > &Val)
 
double getRadialCoreDensity (unsigned int Znum, double rad)
 
double getRmaxCoreDensity (unsigned int Znum)
 
double getRadialLocalPseudo (unsigned int Znum, double rad)
 
double getRmaxLocalPot (unsigned int Znum)
 
bool coreNuclearDensityPresent (unsigned int Znum)
 
unsigned int getTotalNumberOfSphericalFunctionsForAtomId (unsigned int atomId)
 
unsigned int getTotalNumberOfAtomsInCurrentProcessor ()
 
unsigned int getAtomIdInCurrentProcessor (unsigned int iAtom)
 
const dftfe::utils::MemoryStorage< ValueType, memorySpace > & getCouplingMatrix ()
 
const std::shared_ptr< AtomicCenteredNonLocalOperator< ValueType, memorySpace > > getNonLocalOperator ()
 
+ + + + + + + + + + + + + +

+Private Member Functions

void setImageCoordinates (const std::vector< std::vector< double > > &atomLocations, const std::vector< int > &imageIds, const std::vector< std::vector< double > > &periodicCoords, std::vector< unsigned int > &imageIdsTemp, std::vector< double > &imageCoordsTemp)
 Converts the periodic image data structure to relevant form for the container class.
 
void createAtomCenteredSphericalFunctionsForDensities ()
 Creating Density splines for all atomTypes.
 
void computeNonlocalPseudoPotentialConstants ()
 
void createAtomCenteredSphericalFunctionsForProjectors ()
 
void createAtomCenteredSphericalFunctionsForLocalPotential ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > d_BLASWrapperHostPtr
 
std::vector< std::vector< double > > d_nonLocalPseudoPotentialConstants
 
std::map< unsigned int, std::vector< double > > d_atomicNonLocalPseudoPotentialConstants
 
dftfe::utils::MemoryStorage< ValueType, memorySpaced_couplingMatrixEntries
 
bool d_HamiltonianCouplingMatrixEntriesUpdated
 
std::vector< std::shared_ptr< AtomCenteredSphericalFunctionBase > > d_atomicWaveFnsVector
 
std::shared_ptr< AtomCenteredSphericalFunctionContainerd_atomicProjectorFnsContainer
 
std::map< std::pair< unsigned int, unsigned int >, std::shared_ptr< AtomCenteredSphericalFunctionBase > > d_atomicProjectorFnsMap
 
const MPI_Comm d_mpiCommParent
 
const unsigned int d_this_mpi_process
 
dealii::ConditionalOStream pcout
 
bool d_useDevice
 
unsigned int d_densityQuadratureId
 
unsigned int d_localContributionQuadratureId
 
unsigned int d_nuclearChargeQuadratureIdElectro
 
unsigned int d_densityQuadratureIdElectro
 
unsigned int d_sparsityPatternQuadratureId
 
unsigned int d_nlpspQuadratureId
 
std::shared_ptr< excManagerd_excManagerPtr
 
std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, dftfe::utils::MemorySpace::HOST > > d_BasisOperatorHostPtr
 
std::map< unsigned int, boold_atomTypeCoreFlagMap
 
bool d_floatingNuclearCharges
 
int d_verbosity
 
std::vector< std::vector< double > > d_atomLocations
 
std::set< unsigned intd_atomTypes
 
std::map< unsigned int, std::vector< unsigned int > > d_atomTypesList
 
std::string d_dftfeScratchFolderName
 
std::vector< intd_imageIds
 
std::vector< std::vector< double > > d_imagePositions
 
unsigned int d_numEigenValues
 
unsigned int d_nOMPThreads
 
std::shared_ptr< AtomicCenteredNonLocalOperator< ValueType, memorySpace > > d_nonLocalOperator
 
std::vector< std::shared_ptr< AtomCenteredSphericalFunctionBase > > d_atomicProjectorFnsVector
 
std::vector< std::map< unsigned int, std::shared_ptr< AtomCenteredSphericalFunctionBase > > > d_atomicLocalPotVector
 
std::vector< std::map< unsigned int, std::shared_ptr< AtomCenteredSphericalFunctionBase > > > d_atomicValenceDensityVector
 
std::vector< std::map< unsigned int, std::shared_ptr< AtomCenteredSphericalFunctionBase > > > d_atomicCoreDensityVector
 
bool d_reproducible_output
 
std::map< unsigned int, unsigned intd_atomTypeAtributes
 
+

Constructor & Destructor Documentation

+ +

◆ oncvClass()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::oncvClass< ValueType, memorySpace >::oncvClass (const MPI_Comm & mpi_comm_parent,
const std::string & scratchFolderName,
const std::set< unsigned int > & atomTypes,
const bool floatingNuclearCharges,
const unsigned int nOMPThreads,
const std::map< unsigned int, unsigned int > & atomAttributes,
const bool reproducibleOutput,
const int verbosity,
const bool useDevice )
+
+ +
+
+

Member Function Documentation

+ +

◆ computeNonlocalPseudoPotentialConstants()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::oncvClass< ValueType, memorySpace >::computeNonlocalPseudoPotentialConstants ()
+
+private
+
+ +
+
+ +

◆ coreNuclearDensityPresent()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
bool dftfe::oncvClass< ValueType, memorySpace >::coreNuclearDensityPresent (unsigned int Znum)
+
+ +
+
+ +

◆ createAtomCenteredSphericalFunctionsForDensities()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::oncvClass< ValueType, memorySpace >::createAtomCenteredSphericalFunctionsForDensities ()
+
+private
+
+ +

Creating Density splines for all atomTypes.

+ +
+
+ +

◆ createAtomCenteredSphericalFunctionsForLocalPotential()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::oncvClass< ValueType, memorySpace >::createAtomCenteredSphericalFunctionsForLocalPotential ()
+
+private
+
+ +
+
+ +

◆ createAtomCenteredSphericalFunctionsForProjectors()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
void dftfe::oncvClass< ValueType, memorySpace >::createAtomCenteredSphericalFunctionsForProjectors ()
+
+private
+
+ +
+
+ +

◆ getAtomIdInCurrentProcessor()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
unsigned int dftfe::oncvClass< ValueType, memorySpace >::getAtomIdInCurrentProcessor (unsigned int iAtom)
+
+ +
+
+ +

◆ getCouplingMatrix()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const dftfe::utils::MemoryStorage< ValueType, memorySpace > & dftfe::oncvClass< ValueType, memorySpace >::getCouplingMatrix ()
+
+ +
+
+ +

◆ getNonLocalOperator()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const std::shared_ptr< AtomicCenteredNonLocalOperator< ValueType, memorySpace > > dftfe::oncvClass< ValueType, memorySpace >::getNonLocalOperator ()
+
+ +
+
+ +

◆ getRadialCoreDensity() [1/2]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + +
double dftfe::oncvClass< ValueType, memorySpace >::getRadialCoreDensity (unsigned int Znum,
double rad )
+
+ +
+
+ +

◆ getRadialCoreDensity() [2/2]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + +
void dftfe::oncvClass< ValueType, memorySpace >::getRadialCoreDensity (unsigned int Znum,
double rad,
std::vector< double > & Val )
+
+ +
+
+ +

◆ getRadialLocalPseudo()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + +
double dftfe::oncvClass< ValueType, memorySpace >::getRadialLocalPseudo (unsigned int Znum,
double rad )
+
+ +
+
+ +

◆ getRadialValenceDensity() [1/2]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + +
double dftfe::oncvClass< ValueType, memorySpace >::getRadialValenceDensity (unsigned int Znum,
double rad )
+
+ +
+
+ +

◆ getRadialValenceDensity() [2/2]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + +
void dftfe::oncvClass< ValueType, memorySpace >::getRadialValenceDensity (unsigned int Znum,
double rad,
std::vector< double > & Val )
+
+ +
+
+ +

◆ getRmaxCoreDensity()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
double dftfe::oncvClass< ValueType, memorySpace >::getRmaxCoreDensity (unsigned int Znum)
+
+ +
+
+ +

◆ getRmaxLocalPot()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
double dftfe::oncvClass< ValueType, memorySpace >::getRmaxLocalPot (unsigned int Znum)
+
+ +
+
+ +

◆ getRmaxValenceDensity()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
double dftfe::oncvClass< ValueType, memorySpace >::getRmaxValenceDensity (unsigned int Znum)
+
+ +
+
+ +

◆ getTotalNumberOfAtomsInCurrentProcessor()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
unsigned int dftfe::oncvClass< ValueType, memorySpace >::getTotalNumberOfAtomsInCurrentProcessor ()
+
+ +
+
+ +

◆ getTotalNumberOfSphericalFunctionsForAtomId()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
unsigned int dftfe::oncvClass< ValueType, memorySpace >::getTotalNumberOfSphericalFunctionsForAtomId (unsigned int atomId)
+
+ +
+
+ +

◆ initialise()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::oncvClass< ValueType, memorySpace >::initialise (std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, dftfe::utils::MemorySpace::HOST > > basisOperationsHostPtr,
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > BLASWrapperPtrHost,
unsigned int densityQuadratureId,
unsigned int localContributionQuadratureId,
unsigned int sparsityPatternQuadratureId,
unsigned int nlpspQuadratureId,
unsigned int densityQuadratureIdElectro,
std::shared_ptr< excManager > excFunctionalPtr,
const std::vector< std::vector< double > > & atomLocations,
unsigned int numEigenValues )
+
+ +

Initialises all the data members with addresses/values to/of dftClass.

+
Parameters
+ + + + + + + + + + +
[in]densityQuadratureIdquadratureId for density.
[in]localContributionQuadratureIdquadratureId for local/zero potential
[in]nuclearChargeQuadratureIdElectroquadratureId for nuclear charges
[in]densityQuadratureIdElectroquadratureId for density in Electrostatics mesh
[in]excFunctionalPtraddress XC functional pointer
[in]numEigenValuesnumber of eigenvalues
[in]atomLocationsatomic Coordinates
[in]imageIdsimage IDs of periodic cell
[in]periodicCoordscoordinates of image atoms
+
+
+ +
+
+ +

◆ initialiseNonLocalContribution() [1/2]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::oncvClass< ValueType, memorySpace >::initialiseNonLocalContribution (const std::vector< std::vector< double > > & atomLocations,
const std::vector< int > & imageIds,
const std::vector< std::vector< double > > & periodicCoords,
const std::vector< double > & kPointWeights,
const std::vector< double > & kPointCoordinates,
const bool updateNonlocalSparsity )
+
+ +

Initialises all the data members with addresses/values to/of dftClass.

+
Parameters
+ + + + + + + + + + + +
[in]densityQuadratureIdquadratureId for density.
[in]localContributionQuadratureIdquadratureId for local/zero potential
[in]nuclearChargeQuadratureIdElectroquadratureId for nuclear charges
[in]densityQuadratureIdElectroquadratureId for density in Electrostatics mesh
[in]bQuadValuesAllAtomsaddress of nuclear charge field
[in]excFunctionalPtraddress XC functional pointer
[in]numEigenValuesnumber of eigenvalues
[in]atomLocationsatomic Coordinates
[in]imageIdsimage IDs of periodic cell
[in]periodicCoordscoordinates of image atoms
+
+
+ +
+
+ +

◆ initialiseNonLocalContribution() [2/2]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::oncvClass< ValueType, memorySpace >::initialiseNonLocalContribution (const std::vector< std::vector< double > > & atomLocations,
const std::vector< int > & imageIds,
const std::vector< std::vector< double > > & periodicCoords,
const std::vector< double > & kPointWeights,
const std::vector< double > & kPointCoordinates,
const bool updateNonlocalSparsity,
const std::map< unsigned int, std::vector< int > > & sparsityPattern,
const std::vector< std::vector< dealii::CellId > > & elementIdsInAtomCompactSupport,
const std::vector< std::vector< unsigned int > > & elementIndexesInAtomCompactSupport,
const std::vector< unsigned int > & atomIdsInCurrentProcess,
unsigned int numberElements )
+
+ +
+
+ +

◆ initLocalPotential()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::oncvClass< ValueType, memorySpace >::initLocalPotential ()
+
+ +

Initialises local potential.

+ +
+
+ +

◆ setImageCoordinates()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::oncvClass< ValueType, memorySpace >::setImageCoordinates (const std::vector< std::vector< double > > & atomLocations,
const std::vector< int > & imageIds,
const std::vector< std::vector< double > > & periodicCoords,
std::vector< unsigned int > & imageIdsTemp,
std::vector< double > & imageCoordsTemp )
+
+private
+
+ +

Converts the periodic image data structure to relevant form for the container class.

+
Parameters
+ + + + + + +
[in]atomLocationsatomic Coordinates
[in]imageIdsimage IDs of periodic cell
[in]periodicCoordscoordinates of image atoms
[out]imageIdsTempimage IDs of periodic cell
[out]imageCoordsTempcoordinates of image atoms
+
+
+ +
+
+

Member Data Documentation

+ +

◆ d_atomicCoreDensityVector

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::map<unsigned int, std::shared_ptr<AtomCenteredSphericalFunctionBase> > > dftfe::oncvClass< ValueType, memorySpace >::d_atomicCoreDensityVector
+
+private
+
+ +
+
+ +

◆ d_atomicLocalPotVector

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::map<unsigned int, std::shared_ptr<AtomCenteredSphericalFunctionBase> > > dftfe::oncvClass< ValueType, memorySpace >::d_atomicLocalPotVector
+
+private
+
+ +
+
+ +

◆ d_atomicNonLocalPseudoPotentialConstants

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<unsigned int, std::vector<double> > dftfe::oncvClass< ValueType, memorySpace >::d_atomicNonLocalPseudoPotentialConstants
+
+private
+
+ +
+
+ +

◆ d_atomicProjectorFnsContainer

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr<AtomCenteredSphericalFunctionContainer> dftfe::oncvClass< ValueType, memorySpace >::d_atomicProjectorFnsContainer
+
+private
+
+ +
+
+ +

◆ d_atomicProjectorFnsMap

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<std::pair<unsigned int, unsigned int>, std::shared_ptr<AtomCenteredSphericalFunctionBase> > dftfe::oncvClass< ValueType, memorySpace >::d_atomicProjectorFnsMap
+
+private
+
+ +
+
+ +

◆ d_atomicProjectorFnsVector

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::shared_ptr<AtomCenteredSphericalFunctionBase> > dftfe::oncvClass< ValueType, memorySpace >::d_atomicProjectorFnsVector
+
+private
+
+ +
+
+ +

◆ d_atomicValenceDensityVector

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::map<unsigned int, std::shared_ptr<AtomCenteredSphericalFunctionBase> > > dftfe::oncvClass< ValueType, memorySpace >::d_atomicValenceDensityVector
+
+private
+
+ +
+
+ +

◆ d_atomicWaveFnsVector

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::shared_ptr<AtomCenteredSphericalFunctionBase> > dftfe::oncvClass< ValueType, memorySpace >::d_atomicWaveFnsVector
+
+private
+
+ +
+
+ +

◆ d_atomLocations

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::oncvClass< ValueType, memorySpace >::d_atomLocations
+
+private
+
+ +
+
+ +

◆ d_atomTypeAtributes

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<unsigned int, unsigned int> dftfe::oncvClass< ValueType, memorySpace >::d_atomTypeAtributes
+
+private
+
+

FIXME: eventually it should be a map of atomic number to struct- {valence number, mesh input etc}

+ +
+
+ +

◆ d_atomTypeCoreFlagMap

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<unsigned int, bool> dftfe::oncvClass< ValueType, memorySpace >::d_atomTypeCoreFlagMap
+
+private
+
+ +
+
+ +

◆ d_atomTypes

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::set<unsigned int> dftfe::oncvClass< ValueType, memorySpace >::d_atomTypes
+
+private
+
+ +
+
+ +

◆ d_atomTypesList

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<unsigned int, std::vector<unsigned int> > dftfe::oncvClass< ValueType, memorySpace >::d_atomTypesList
+
+private
+
+ +
+
+ +

◆ d_BasisOperatorHostPtr

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr< dftfe::basis:: FEBasisOperations<ValueType, double, dftfe::utils::MemorySpace::HOST> > dftfe::oncvClass< ValueType, memorySpace >::d_BasisOperatorHostPtr
+
+private
+
+ +
+
+ +

◆ d_BLASWrapperHostPtr

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper<dftfe::utils::MemorySpace::HOST> > dftfe::oncvClass< ValueType, memorySpace >::d_BLASWrapperHostPtr
+
+private
+
+ +
+
+ +

◆ d_couplingMatrixEntries

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftfe::utils::MemoryStorage<ValueType, memorySpace> dftfe::oncvClass< ValueType, memorySpace >::d_couplingMatrixEntries
+
+private
+
+ +
+
+ +

◆ d_densityQuadratureId

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::oncvClass< ValueType, memorySpace >::d_densityQuadratureId
+
+private
+
+ +
+
+ +

◆ d_densityQuadratureIdElectro

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::oncvClass< ValueType, memorySpace >::d_densityQuadratureIdElectro
+
+private
+
+ +
+
+ +

◆ d_dftfeScratchFolderName

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::string dftfe::oncvClass< ValueType, memorySpace >::d_dftfeScratchFolderName
+
+private
+
+ +
+
+ +

◆ d_excManagerPtr

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr<excManager> dftfe::oncvClass< ValueType, memorySpace >::d_excManagerPtr
+
+private
+
+ +
+
+ +

◆ d_floatingNuclearCharges

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
bool dftfe::oncvClass< ValueType, memorySpace >::d_floatingNuclearCharges
+
+private
+
+ +
+
+ +

◆ d_HamiltonianCouplingMatrixEntriesUpdated

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
bool dftfe::oncvClass< ValueType, memorySpace >::d_HamiltonianCouplingMatrixEntriesUpdated
+
+private
+
+ +
+
+ +

◆ d_imageIds

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<int> dftfe::oncvClass< ValueType, memorySpace >::d_imageIds
+
+private
+
+ +
+
+ +

◆ d_imagePositions

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::oncvClass< ValueType, memorySpace >::d_imagePositions
+
+private
+
+ +
+
+ +

◆ d_localContributionQuadratureId

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::oncvClass< ValueType, memorySpace >::d_localContributionQuadratureId
+
+private
+
+ +
+
+ +

◆ d_mpiCommParent

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::oncvClass< ValueType, memorySpace >::d_mpiCommParent
+
+private
+
+ +
+
+ +

◆ d_nlpspQuadratureId

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::oncvClass< ValueType, memorySpace >::d_nlpspQuadratureId
+
+private
+
+ +
+
+ +

◆ d_nOMPThreads

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::oncvClass< ValueType, memorySpace >::d_nOMPThreads
+
+private
+
+ +
+
+ +

◆ d_nonLocalOperator

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr<AtomicCenteredNonLocalOperator<ValueType, memorySpace> > dftfe::oncvClass< ValueType, memorySpace >::d_nonLocalOperator
+
+private
+
+ +
+
+ +

◆ d_nonLocalPseudoPotentialConstants

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::oncvClass< ValueType, memorySpace >::d_nonLocalPseudoPotentialConstants
+
+private
+
+ +
+
+ +

◆ d_nuclearChargeQuadratureIdElectro

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::oncvClass< ValueType, memorySpace >::d_nuclearChargeQuadratureIdElectro
+
+private
+
+ +
+
+ +

◆ d_numEigenValues

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::oncvClass< ValueType, memorySpace >::d_numEigenValues
+
+private
+
+ +
+
+ +

◆ d_reproducible_output

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
bool dftfe::oncvClass< ValueType, memorySpace >::d_reproducible_output
+
+private
+
+ +
+
+ +

◆ d_sparsityPatternQuadratureId

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::oncvClass< ValueType, memorySpace >::d_sparsityPatternQuadratureId
+
+private
+
+ +
+
+ +

◆ d_this_mpi_process

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const unsigned int dftfe::oncvClass< ValueType, memorySpace >::d_this_mpi_process
+
+private
+
+ +
+
+ +

◆ d_useDevice

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
bool dftfe::oncvClass< ValueType, memorySpace >::d_useDevice
+
+private
+
+ +
+
+ +

◆ d_verbosity

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
int dftfe::oncvClass< ValueType, memorySpace >::d_verbosity
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::oncvClass< ValueType, memorySpace >::pcout
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1operator_d_f_t_class-members.html b/classdftfe_1_1operator_d_f_t_class-members.html new file mode 100644 index 000000000..98ce3b60f --- /dev/null +++ b/classdftfe_1_1operator_d_f_t_class-members.html @@ -0,0 +1,104 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::operatorDFTClass< memorySpace > Member List
+
+
+ +

This is the complete list of members for dftfe::operatorDFTClass< memorySpace >, including all inherited members.

+ + + + + + + + + + + + + + +
constraintInfoClass typedefdftfe::operatorDFTClass< memorySpace >
getInverseSqrtMassVector()=0dftfe::operatorDFTClass< memorySpace >pure virtual
getMPICommunicatorDomain()=0dftfe::operatorDFTClass< memorySpace >pure virtual
getOverloadedConstraintMatrix() const =0dftfe::operatorDFTClass< memorySpace >pure virtual
getOverloadedConstraintMatrixHost() const =0dftfe::operatorDFTClass< memorySpace >pure virtual
getScratchFEMultivector(const unsigned int numVectors, const unsigned int index)=0dftfe::operatorDFTClass< memorySpace >pure virtual
getSqrtMassVector()=0dftfe::operatorDFTClass< memorySpace >pure virtual
HX(dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &src, const double scalarHX, const double scalarY, const double scalarX, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dst, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)=0dftfe::operatorDFTClass< memorySpace >pure virtual
HXCheby(dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &src, const double scalarHX, const double scalarY, const double scalarX, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dst, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false, const bool skip1=false, const bool skip2=false, const bool skip3=false)=0dftfe::operatorDFTClass< memorySpace >pure virtual
init(const std::vector< double > &kPointCoordinates, const std::vector< double > &kPointWeights)=0dftfe::operatorDFTClass< memorySpace >pure virtual
reinitkPointSpinIndex(const unsigned int kPointIndex, const unsigned int spinIndex)=0dftfe::operatorDFTClass< memorySpace >pure virtual
reinitNumberWavefunctions(const unsigned int numWfc)=0dftfe::operatorDFTClass< memorySpace >pure virtual
~operatorDFTClass()dftfe::operatorDFTClass< memorySpace >inlinevirtual
+ + + + diff --git a/classdftfe_1_1operator_d_f_t_class.html b/classdftfe_1_1operator_d_f_t_class.html new file mode 100644 index 000000000..74ad8a325 --- /dev/null +++ b/classdftfe_1_1operator_d_f_t_class.html @@ -0,0 +1,588 @@ + + + + + + + +DFT-FE: dftfe::operatorDFTClass< memorySpace > Class Template Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::operatorDFTClass< memorySpace > Class Template Referenceabstract
+
+
+ +

Base class for building the DFT operator and the action of operator on a vector. + More...

+ +

#include <operator.h>

+
+Inheritance diagram for dftfe::operatorDFTClass< memorySpace >:
+
+
+ + +dftfe::KohnShamHamiltonianOperator< memorySpace > + +
+ + + + +

+Public Types

using constraintInfoClass = dftUtils::constraintMatrixInfo
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~operatorDFTClass ()
 Destructor.
 
virtual dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & getScratchFEMultivector (const unsigned int numVectors, const unsigned int index)=0
 
virtual void init (const std::vector< double > &kPointCoordinates, const std::vector< double > &kPointWeights)=0
 
virtual void reinitkPointSpinIndex (const unsigned int kPointIndex, const unsigned int spinIndex)=0
 
virtual void reinitNumberWavefunctions (const unsigned int numWfc)=0
 
virtual void HX (dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &src, const double scalarHX, const double scalarY, const double scalarX, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dst, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)=0
 
virtual void HXCheby (dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &src, const double scalarHX, const double scalarY, const double scalarX, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dst, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false, const bool skip1=false, const bool skip2=false, const bool skip3=false)=0
 
virtual dftUtils::constraintMatrixInfogetOverloadedConstraintMatrixHost () const =0
 
virtual constraintInfoClassgetOverloadedConstraintMatrix () const =0
 
virtual const MPI_CommgetMPICommunicatorDomain ()=0
 
virtual const dftfe::utils::MemoryStorage< double, memorySpace > & getInverseSqrtMassVector ()=0
 
virtual const dftfe::utils::MemoryStorage< double, memorySpace > & getSqrtMassVector ()=0
 
+

Detailed Description

+
template<dftfe::utils::MemorySpace memorySpace>
+class dftfe::operatorDFTClass< memorySpace >

Base class for building the DFT operator and the action of operator on a vector.

+
Author
Phani Motamarri, Sambit Das
+

Member Typedef Documentation

+ +

◆ constraintInfoClass

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + +
using dftfe::operatorDFTClass< memorySpace >::constraintInfoClass = dftUtils::constraintMatrixInfo
+
+ +
+
+

Member Function Documentation

+ +

◆ getInverseSqrtMassVector()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
virtual const dftfe::utils::MemoryStorage< double, memorySpace > & dftfe::operatorDFTClass< memorySpace >::getInverseSqrtMassVector ()
+
+pure virtual
+
+
+ +

◆ getMPICommunicatorDomain()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
virtual const MPI_Comm & dftfe::operatorDFTClass< memorySpace >::getMPICommunicatorDomain ()
+
+pure virtual
+
+
+ +

◆ getOverloadedConstraintMatrix()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
virtual constraintInfoClass * dftfe::operatorDFTClass< memorySpace >::getOverloadedConstraintMatrix () const
+
+pure virtual
+
+
+ +

◆ getOverloadedConstraintMatrixHost()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
virtual dftUtils::constraintMatrixInfo * dftfe::operatorDFTClass< memorySpace >::getOverloadedConstraintMatrixHost () const
+
+pure virtual
+
+
+ +

◆ getScratchFEMultivector()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
virtual dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & dftfe::operatorDFTClass< memorySpace >::getScratchFEMultivector (const unsigned int numVectors,
const unsigned int index )
+
+pure virtual
+
+
+ +

◆ getSqrtMassVector()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
virtual const dftfe::utils::MemoryStorage< double, memorySpace > & dftfe::operatorDFTClass< memorySpace >::getSqrtMassVector ()
+
+pure virtual
+
+
+ +

◆ HX()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void dftfe::operatorDFTClass< memorySpace >::HX (dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & src,
const double scalarHX,
const double scalarY,
const double scalarX,
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & dst,
const bool onlyHPrimePartForFirstOrderDensityMatResponse = false )
+
+pure virtual
+
+
+ +

◆ HXCheby()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void dftfe::operatorDFTClass< memorySpace >::HXCheby (dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & src,
const double scalarHX,
const double scalarY,
const double scalarX,
dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & dst,
const bool onlyHPrimePartForFirstOrderDensityMatResponse = false,
const bool skip1 = false,
const bool skip2 = false,
const bool skip3 = false )
+
+pure virtual
+
+
+ +

◆ init()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
virtual void dftfe::operatorDFTClass< memorySpace >::init (const std::vector< double > & kPointCoordinates,
const std::vector< double > & kPointWeights )
+
+pure virtual
+
+
+ +

◆ reinitkPointSpinIndex()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
virtual void dftfe::operatorDFTClass< memorySpace >::reinitkPointSpinIndex (const unsigned int kPointIndex,
const unsigned int spinIndex )
+
+pure virtual
+
+
+ +

◆ reinitNumberWavefunctions()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
virtual void dftfe::operatorDFTClass< memorySpace >::reinitNumberWavefunctions (const unsigned int numWfc)
+
+pure virtual
+
+
+ +

◆ ~operatorDFTClass()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
virtual dftfe::operatorDFTClass< memorySpace >::~operatorDFTClass ()
+
+inlinevirtual
+
+ +

Destructor.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1operator_d_f_t_class.png b/classdftfe_1_1operator_d_f_t_class.png new file mode 100644 index 0000000000000000000000000000000000000000..ef3d91ebeacfc73f2dc5cfed96d4dbca2a1e85e2 GIT binary patch literal 1182 zcmeAS@N?(olHy`uVBq!ia0y~yU~~qu12~w0W0G|-o|Ns93nJ?aaE$u(F z+`>S!Kw|ot7Y`mh0E(NQ4O;?~<17jC3uXZF!N8np_7w&O7EMnV$B+ufw{u@ldac3J zGP~?*$o~Jr`9kay4EkiXtIg8gHOq6>3CTPCan)S9#7pz(rT`U9RZsD$JgS<@QZzgb zRh>P%G$p-)eDaO=lc8*bx{Xmu1Uncgh~VXL0p=zK3RhV2{z3%BqZQ z;)j3jJ^kTpb@?fSFc^2H~=`1R9xXXjzhm}{J8 zpWpHIe|W$5aHZWBo^t=oJr57=t(n4qe$La059?>~=kBYETm5#=H|vsOef#~_tAcNz zJAYz>>;to+|8a7;zc=+iTw8x^p?!(I_oaw>aAg@(Zg4S^{?2EQ%n84I<+N+I0;L>@2CzgheNs0_D zCC)Ph7!?+za4-a_Ix=)SXI7%(NfFPu5F?e7K>Iw8P2ur0T9)E5$AIkJmEWH=zU|uh_1o=h zzs^lQ7Jc>C1e5b?o@X_vl$TuanY6qlr&DFFTbsYg<@Sz^|p&ZFM}@QQ{{dCiA$e}OUz^I$Wo y^co&Vs?L*oG$kjc_?Wky-lVfKHFDbOU+fDU`Ha_j=bHmd5(ZCKKbLh*2~7Yu4=acO literal 0 HcmV?d00001 diff --git a/classdftfe_1_1poisson_solver_problem-members.html b/classdftfe_1_1poisson_solver_problem-members.html new file mode 100644 index 000000000..52bf85594 --- /dev/null +++ b/classdftfe_1_1poisson_solver_problem-members.html @@ -0,0 +1,138 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::poissonSolverProblem< FEOrder, FEOrderElectro > Member List
+
+
+ +

This is the complete list of members for dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AX(const dealii::MatrixFree< 3, double > &matrixFreeData, distributedCPUVec< double > &dst, const distributedCPUVec< double > &src, const std::pair< unsigned int, unsigned int > &cell_range) constdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
clear()dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >
computeDiagonalA()dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
computeMeanValueConstraint()dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
computeRhs(distributedCPUVec< double > &rhs)dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >virtual
d_atomsPtrdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_basisOperationsPtrdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_cellShapeFunctionGradientIntegralFlatteneddftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_constraintMatrixPtrdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_constraintsInfodftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_diagonalAdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_isFastConstraintsInitializeddftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_isGradSmearedChargeRhsdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_isMeanValueConstraintComputeddftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_isReuseSmearedChargeRhsdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_isStoreSmearedChargeRhsdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_matrixFreeDataPtrdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_matrixFreeQuadratureComponentAXdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_matrixFreeQuadratureComponentRhsDensitydftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_matrixFreeVectorComponentdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_meanValueConstraintNodeIddftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_meanValueConstraintProcIddftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_meanValueConstraintVecdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_rhoValuesPtrdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_rhsSmearedChargedftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_smearedChargeGradientComponentIddftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_smearedChargeQuadratureIddftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_smearedChargeValuesPtrdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
d_xPtrdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
dealiiLinearSolverProblem()dftfe::dealiiLinearSolverProblem
distributeX()dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >virtual
getX()dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >virtual
meanValueConstraintDistribute(distributedCPUVec< double > &vec) constdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
meanValueConstraintDistributeSlaveToMaster(distributedCPUVec< double > &vec) constdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
meanValueConstraintSetZero(distributedCPUVec< double > &vec) constdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
mpi_communicatordftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
n_mpi_processesdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
operator!=(double val) constdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >inlinevirtual
pcoutdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
poissonSolverProblem(const MPI_Comm &mpi_comm)dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >
precondition_Jacobi(distributedCPUVec< double > &dst, const distributedCPUVec< double > &src, const double omega) constdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >virtual
reinit(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, distributedCPUVec< double > &x, const dealii::AffineConstraints< double > &constraintMatrix, const unsigned int matrixFreeVectorComponent, const unsigned int matrixFreeQuadratureComponentRhsDensity, const unsigned int matrixFreeQuadratureComponentAX, const std::map< dealii::types::global_dof_index, double > &atoms, const std::map< dealii::CellId, std::vector< double > > &smearedChargeValues, const unsigned int smearedChargeQuadratureId, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoValues, const bool isComputeDiagonalA=true, const bool isComputeMeanValueConstraints=false, const bool smearedNuclearCharges=false, const bool isRhoValues=true, const bool isGradSmearedChargeRhs=false, const unsigned int smearedChargeGradientComponentId=0, const bool storeSmearedChargeRhs=false, const bool reuseSmearedChargeRhs=false, const bool reinitializeFastConstraints=false)dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >
size_type typedefdftfe::dealiiLinearSolverProblem
subscribe(std::atomic< bool > *const validity, const std::string &identifier="") constdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >inlinevirtual
this_mpi_processdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >private
unsubscribe(std::atomic< bool > *const validity, const std::string &identifier="") constdftfe::poissonSolverProblem< FEOrder, FEOrderElectro >inlinevirtual
vmult(distributedCPUVec< double > &Ax, distributedCPUVec< double > &x)dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >virtual
+ + + + diff --git a/classdftfe_1_1poisson_solver_problem.html b/classdftfe_1_1poisson_solver_problem.html new file mode 100644 index 000000000..78b5fd862 --- /dev/null +++ b/classdftfe_1_1poisson_solver_problem.html @@ -0,0 +1,1571 @@ + + + + + + + +DFT-FE: dftfe::poissonSolverProblem< FEOrder, FEOrderElectro > Class Template Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::poissonSolverProblem< FEOrder, FEOrderElectro > Class Template Reference
+
+
+ +

poisson solver problem class template. template parameter FEOrderElectro is the finite element polynomial order. FEOrder template parameter is used in conjunction with FEOrderElectro to determine the order of the Gauss quadrature rule + More...

+ +

#include <poissonSolverProblem.h>

+
+Inheritance diagram for dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >:
+
+
+ + +dftfe::dealiiLinearSolverProblem + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 poissonSolverProblem (const MPI_Comm &mpi_comm)
 Constructor.
 
void clear ()
 clears all datamembers and reset to original state.
 
void reinit (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, distributedCPUVec< double > &x, const dealii::AffineConstraints< double > &constraintMatrix, const unsigned int matrixFreeVectorComponent, const unsigned int matrixFreeQuadratureComponentRhsDensity, const unsigned int matrixFreeQuadratureComponentAX, const std::map< dealii::types::global_dof_index, double > &atoms, const std::map< dealii::CellId, std::vector< double > > &smearedChargeValues, const unsigned int smearedChargeQuadratureId, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoValues, const bool isComputeDiagonalA=true, const bool isComputeMeanValueConstraints=false, const bool smearedNuclearCharges=false, const bool isRhoValues=true, const bool isGradSmearedChargeRhs=false, const unsigned int smearedChargeGradientComponentId=0, const bool storeSmearedChargeRhs=false, const bool reuseSmearedChargeRhs=false, const bool reinitializeFastConstraints=false)
 reinitialize data structures for total electrostatic potential solve.
 
distributedCPUVec< double > & getX ()
 get the reference to x field
 
void vmult (distributedCPUVec< double > &Ax, distributedCPUVec< double > &x)
 Compute A matrix multipled by x.
 
void computeRhs (distributedCPUVec< double > &rhs)
 Compute right hand side vector for the problem Ax = rhs.
 
void precondition_Jacobi (distributedCPUVec< double > &dst, const distributedCPUVec< double > &src, const double omega) const
 Jacobi preconditioning.
 
void distributeX ()
 distribute x to the constrained nodes.
 
void subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
void unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
bool operator!= (double val) const
 function needed by dealii to mimic SparseMatrix
 
- Public Member Functions inherited from dftfe::dealiiLinearSolverProblem
 dealiiLinearSolverProblem ()
 Constructor.
 
+ + + + + + + + + + + + + + + + + + + +

+Private Member Functions

void AX (const dealii::MatrixFree< 3, double > &matrixFreeData, distributedCPUVec< double > &dst, const distributedCPUVec< double > &src, const std::pair< unsigned int, unsigned int > &cell_range) const
 required for the cell_loop operation in dealii's MatrixFree class
 
void computeDiagonalA ()
 Compute the diagonal of A.
 
void computeMeanValueConstraint ()
 Compute mean value constraint which is required in case of fully periodic boundary conditions.
 
void meanValueConstraintDistribute (distributedCPUVec< double > &vec) const
 Mean value constraint distibute.
 
void meanValueConstraintDistributeSlaveToMaster (distributedCPUVec< double > &vec) const
 Mean value constraint distibute slave to master.
 
void meanValueConstraintSetZero (distributedCPUVec< double > &vec) const
 Mean value constraint set zero.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

distributedCPUVec< doubled_diagonalA
 storage for diagonal of the A matrix
 
distributedCPUVec< doubled_rhsSmearedCharge
 
const dealii::MatrixFree< 3, double > * d_matrixFreeDataPtr
 pointer to dealii MatrixFree object
 
distributedCPUVec< double > * d_xPtr
 pointer to the x vector being solved for
 
const dealii::AffineConstraints< double > * d_constraintMatrixPtr
 pointer to dealii dealii::AffineConstraints<double> object
 
unsigned int d_matrixFreeVectorComponent
 
unsigned int d_matrixFreeQuadratureComponentRhsDensity
 matrix free quadrature index
 
unsigned int d_matrixFreeQuadratureComponentAX
 matrix free quadrature index
 
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > * d_rhoValuesPtr
 pointer to electron density cell quadrature data
 
const std::map< dealii::CellId, std::vector< double > > * d_smearedChargeValuesPtr
 pointer to smeared charge cell quadrature data
 
unsigned int d_smearedChargeQuadratureId
 
const std::map< dealii::types::global_dof_index, double > * d_atomsPtr
 
std::vector< doubled_cellShapeFunctionGradientIntegralFlattened
 shape function gradient integral storage
 
distributedCPUVec< doubled_meanValueConstraintVec
 storage for mean value constraint vector
 
bool d_isMeanValueConstraintComputed
 
bool d_isGradSmearedChargeRhs
 
bool d_isStoreSmearedChargeRhs
 
bool d_isReuseSmearedChargeRhs
 
unsigned int d_smearedChargeGradientComponentId
 
dealii::types::global_dof_index d_meanValueConstraintNodeId
 mean value constraints: mean value constrained node
 
unsigned int d_meanValueConstraintProcId
 
dftUtils::constraintMatrixInfo d_constraintsInfo
 duplicate constraints object with flattened maps for faster access
 
std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > d_basisOperationsPtr
 
bool d_isFastConstraintsInitialized
 
const MPI_Comm mpi_communicator
 
const unsigned int n_mpi_processes
 
const unsigned int this_mpi_process
 
dealii::ConditionalOStream pcout
 
+ + + + + +

+Additional Inherited Members

- Public Types inherited from dftfe::dealiiLinearSolverProblem
typedef dealii::types::global_dof_index size_type
 typedef declaration needed by dealii
 
+

Detailed Description

+
template<unsigned int FEOrder, unsigned int FEOrderElectro>
+class dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >

poisson solver problem class template. template parameter FEOrderElectro is the finite element polynomial order. FEOrder template parameter is used in conjunction with FEOrderElectro to determine the order of the Gauss quadrature rule

+
Author
Shiva Rudraraju, Phani Motamarri, Sambit Das
+

Constructor & Destructor Documentation

+ +

◆ poissonSolverProblem()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::poissonSolverProblem (const MPI_Comm & mpi_comm)
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ AX()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::AX (const dealii::MatrixFree< 3, double > & matrixFreeData,
distributedCPUVec< double > & dst,
const distributedCPUVec< double > & src,
const std::pair< unsigned int, unsigned int > & cell_range ) const
+
+private
+
+ +

required for the cell_loop operation in dealii's MatrixFree class

+ +
+
+ +

◆ clear()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
void dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::clear ()
+
+ +

clears all datamembers and reset to original state.

+ +
+
+ +

◆ computeDiagonalA()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::computeDiagonalA ()
+
+private
+
+ +

Compute the diagonal of A.

+ +
+
+ +

◆ computeMeanValueConstraint()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::computeMeanValueConstraint ()
+
+private
+
+ +

Compute mean value constraint which is required in case of fully periodic boundary conditions.

+ +
+
+ +

◆ computeRhs()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::computeRhs (distributedCPUVec< double > & rhs)
+
+virtual
+
+ +

Compute right hand side vector for the problem Ax = rhs.

+
Parameters
+ + +
rhsvector for the right hand side values
+
+
+ +

Implements dftfe::dealiiLinearSolverProblem.

+ +
+
+ +

◆ distributeX()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::distributeX ()
+
+virtual
+
+ +

distribute x to the constrained nodes.

+ +

Implements dftfe::dealiiLinearSolverProblem.

+ +
+
+ +

◆ getX()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
distributedCPUVec< double > & dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::getX ()
+
+virtual
+
+ +

get the reference to x field

+
Returns
reference to x field. Assumes x field data structure is already initialized
+ +

Implements dftfe::dealiiLinearSolverProblem.

+ +
+
+ +

◆ meanValueConstraintDistribute()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::meanValueConstraintDistribute (distributedCPUVec< double > & vec) const
+
+private
+
+ +

Mean value constraint distibute.

+ +
+
+ +

◆ meanValueConstraintDistributeSlaveToMaster()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::meanValueConstraintDistributeSlaveToMaster (distributedCPUVec< double > & vec) const
+
+private
+
+ +

Mean value constraint distibute slave to master.

+ +
+
+ +

◆ meanValueConstraintSetZero()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::meanValueConstraintSetZero (distributedCPUVec< double > & vec) const
+
+private
+
+ +

Mean value constraint set zero.

+ +
+
+ +

◆ operator!=()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
bool dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::operator!= (double val) const
+
+inlinevirtual
+
+ +

function needed by dealii to mimic SparseMatrix

+ +

Implements dftfe::dealiiLinearSolverProblem.

+ +
+
+ +

◆ precondition_Jacobi()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + + + + + + +
void dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::precondition_Jacobi (distributedCPUVec< double > & dst,
const distributedCPUVec< double > & src,
const double omega ) const
+
+virtual
+
+ +

Jacobi preconditioning.

+ +

Implements dftfe::dealiiLinearSolverProblem.

+ +
+
+ +

◆ reinit()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::reinit (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > & basisOperationsPtr,
distributedCPUVec< double > & x,
const dealii::AffineConstraints< double > & constraintMatrix,
const unsigned int matrixFreeVectorComponent,
const unsigned int matrixFreeQuadratureComponentRhsDensity,
const unsigned int matrixFreeQuadratureComponentAX,
const std::map< dealii::types::global_dof_index, double > & atoms,
const std::map< dealii::CellId, std::vector< double > > & smearedChargeValues,
const unsigned int smearedChargeQuadratureId,
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > & rhoValues,
const bool isComputeDiagonalA = true,
const bool isComputeMeanValueConstraints = false,
const bool smearedNuclearCharges = false,
const bool isRhoValues = true,
const bool isGradSmearedChargeRhs = false,
const unsigned int smearedChargeGradientComponentId = 0,
const bool storeSmearedChargeRhs = false,
const bool reuseSmearedChargeRhs = false,
const bool reinitializeFastConstraints = false )
+
+ +

reinitialize data structures for total electrostatic potential solve.

+

For Hartree electrostatic potential solve give an empty map to the atoms parameter.

+ +
+
+ +

◆ subscribe()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + +
void dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::subscribe (std::atomic< bool > *const validity,
const std::string & identifier = "" ) const
+
+inlinevirtual
+
+

function needed by dealii to mimic SparseMatrix for Jacobi preconditioning

+ +

Implements dftfe::dealiiLinearSolverProblem.

+ +
+
+ +

◆ unsubscribe()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + +
void dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::unsubscribe (std::atomic< bool > *const validity,
const std::string & identifier = "" ) const
+
+inlinevirtual
+
+

function needed by dealii to mimic SparseMatrix for Jacobi preconditioning

+ +

Implements dftfe::dealiiLinearSolverProblem.

+ +
+
+ +

◆ vmult()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + +
void dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::vmult (distributedCPUVec< double > & Ax,
distributedCPUVec< double > & x )
+
+virtual
+
+ +

Compute A matrix multipled by x.

+ +

Implements dftfe::dealiiLinearSolverProblem.

+ +
+
+

Member Data Documentation

+ +

◆ d_atomsPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const std::map<dealii::types::global_dof_index, double>* dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_atomsPtr
+
+private
+
+

pointer to map between global dof index in current processor and the atomic charge on that dof

+ +
+
+ +

◆ d_basisOperationsPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::shared_ptr< dftfe::basis:: FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST> > dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_basisOperationsPtr
+
+private
+
+ +
+
+ +

◆ d_cellShapeFunctionGradientIntegralFlattened

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<double> dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_cellShapeFunctionGradientIntegralFlattened
+
+private
+
+ +

shape function gradient integral storage

+ +
+
+ +

◆ d_constraintMatrixPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const dealii::AffineConstraints<double>* dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_constraintMatrixPtr
+
+private
+
+ +

pointer to dealii dealii::AffineConstraints<double> object

+ +
+
+ +

◆ d_constraintsInfo

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftUtils::constraintMatrixInfo dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_constraintsInfo
+
+private
+
+ +

duplicate constraints object with flattened maps for faster access

+ +
+
+ +

◆ d_diagonalA

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_diagonalA
+
+private
+
+ +

storage for diagonal of the A matrix

+ +
+
+ +

◆ d_isFastConstraintsInitialized

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
bool dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_isFastConstraintsInitialized
+
+private
+
+ +
+
+ +

◆ d_isGradSmearedChargeRhs

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
bool dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_isGradSmearedChargeRhs
+
+private
+
+ +
+
+ +

◆ d_isMeanValueConstraintComputed

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
bool dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_isMeanValueConstraintComputed
+
+private
+
+

boolean flag to query if mean value constraint datastructures are precomputed

+ +
+
+ +

◆ d_isReuseSmearedChargeRhs

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
bool dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_isReuseSmearedChargeRhs
+
+private
+
+ +
+
+ +

◆ d_isStoreSmearedChargeRhs

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
bool dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_isStoreSmearedChargeRhs
+
+private
+
+ +
+
+ +

◆ d_matrixFreeDataPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const dealii::MatrixFree<3, double>* dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_matrixFreeDataPtr
+
+private
+
+ +

pointer to dealii MatrixFree object

+ +
+
+ +

◆ d_matrixFreeQuadratureComponentAX

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_matrixFreeQuadratureComponentAX
+
+private
+
+ +

matrix free quadrature index

+ +
+
+ +

◆ d_matrixFreeQuadratureComponentRhsDensity

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_matrixFreeQuadratureComponentRhsDensity
+
+private
+
+ +

matrix free quadrature index

+ +
+
+ +

◆ d_matrixFreeVectorComponent

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_matrixFreeVectorComponent
+
+private
+
+

matrix free index required to access the DofHandler and dealii::AffineConstraints<double> objects corresponding to the problem

+ +
+
+ +

◆ d_meanValueConstraintNodeId

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::types::global_dof_index dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_meanValueConstraintNodeId
+
+private
+
+ +

mean value constraints: mean value constrained node

+ +
+
+ +

◆ d_meanValueConstraintProcId

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_meanValueConstraintProcId
+
+private
+
+

mean value constraints: constrained proc id containing the mean value constrained node

+ +
+
+ +

◆ d_meanValueConstraintVec

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_meanValueConstraintVec
+
+private
+
+ +

storage for mean value constraint vector

+ +
+
+ +

◆ d_rhoValuesPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>* dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_rhoValuesPtr
+
+private
+
+ +

pointer to electron density cell quadrature data

+ +
+
+ +

◆ d_rhsSmearedCharge

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double> dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_rhsSmearedCharge
+
+private
+
+

storage for smeared charge rhs in case of total potential solve (doesn't change every scf)

+ +
+
+ +

◆ d_smearedChargeGradientComponentId

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_smearedChargeGradientComponentId
+
+private
+
+ +
+
+ +

◆ d_smearedChargeQuadratureId

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
unsigned int dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_smearedChargeQuadratureId
+
+private
+
+ +
+
+ +

◆ d_smearedChargeValuesPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const std::map<dealii::CellId, std::vector<double> >* dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_smearedChargeValuesPtr
+
+private
+
+ +

pointer to smeared charge cell quadrature data

+ +
+
+ +

◆ d_xPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
distributedCPUVec<double>* dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::d_xPtr
+
+private
+
+ +

pointer to the x vector being solved for

+ +
+
+ +

◆ mpi_communicator

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::mpi_communicator
+
+private
+
+ +
+
+ +

◆ n_mpi_processes

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const unsigned int dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::n_mpi_processes
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::pcout
+
+private
+
+ +
+
+ +

◆ this_mpi_process

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const unsigned int dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >::this_mpi_process
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1poisson_solver_problem.png b/classdftfe_1_1poisson_solver_problem.png new file mode 100644 index 0000000000000000000000000000000000000000..68f57f6c50afebbb37a99b99ccf15581cf356138 GIT binary patch literal 1131 zcmeAS@N?(olHy`uVBq!ia0y~yUlr?!; zCaWw`zW=}T`Z{KTfcEXF@2#S2r*30cVVocGNWbWu<&@%c^PJR93V8m~+%Rd$ZYFKd zUD`0l>)43P!I}S+JQpXvFbtTtlJVrPCCBf3Zb-U({tlPlr2SW=H|lxtpEEdI_5Vb- zuc^%etC_#@)_Bjf%T8T6V{6jwSGQJI*#68i2zz~buhf+FPvh5mOg?llL$+QjXWDLO z*$VEbO=e2OkzX>P4z1$#WJy~{h!0vN8y|QQWA}5txdA_RD z%=R@ud-y!fBhG7NPYSQOTkSNd?^i~??aX~SOyUu@rC+hUz7V~i<8>K#&h?`Oci%Uk z<=ub#d;ar`@IyB@SkGEFS8UDKN81DUb7_12%ViClR1%(`>RFDRah*B)oMn5_xtoCu zA9Q~)HV80OXl-C>*j`uHq|IQV4PwfLG;1^b0E!-v771WH5Zfrqa7Q$PK8*Vfz0_Ym zz9&;>pM3sd+PNk54>IC8*Y`H{LRX2^YvJ1@9K`c z*Ja&euX`FYciXP|c3CHI^*fD>w|VXdbswi4{~DWhdmg8q<$?XhxjMPkZ)&PGq(|JY zvpav4;e)~6+yjyOtY*AT{PwT-xo;lV-gRHOuYa>hU-{x-T*&I1f%7+gvYa_5>8;1S zgxuoG;jeAYHm`nKdVQT2U+uY7rT3y&A5P7;J#y<_fO>>FV>VxZ)$1J%nG=?O|F!gW zW&Yb;A-@ z=h8!~Zf|{i=v&Cr1fO=Pjb4{FzKis{^gm$!{Xg*se#yW2>mRaOr8ca5qgRl}q&!WO k_yR@T>qcm-uBd02@mXrwGY(l*V6nj9>FVdQ&MBb@0QE{A`Tzg` literal 0 HcmV?d00001 diff --git a/classdftfe_1_1pseudo_utils_1_1_periodic_table-members.html b/classdftfe_1_1pseudo_utils_1_1_periodic_table-members.html new file mode 100644 index 000000000..59fee53d3 --- /dev/null +++ b/classdftfe_1_1pseudo_utils_1_1_periodic_table-members.html @@ -0,0 +1,101 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::pseudoUtils::PeriodicTable Member List
+
+ + + + + diff --git a/classdftfe_1_1pseudo_utils_1_1_periodic_table.html b/classdftfe_1_1pseudo_utils_1_1_periodic_table.html new file mode 100644 index 000000000..c5f1f03fc --- /dev/null +++ b/classdftfe_1_1pseudo_utils_1_1_periodic_table.html @@ -0,0 +1,307 @@ + + + + + + + +DFT-FE: dftfe::pseudoUtils::PeriodicTable Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::pseudoUtils::PeriodicTable Class Reference
+
+
+ +

#include <PeriodicTable.h>

+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PeriodicTable (void)
 
int z (std::string symbol) const
 
std::string symbol (int zval) const
 
std::string configuration (int zval) const
 
std::string configuration (std::string symbol) const
 
double mass (int zval) const
 
double mass (std::string symbol) const
 
int size (void) const
 
+ + + + + +

+Private Attributes

std::vector< Elementptable
 
std::map< std::string, intzmap
 
+

Constructor & Destructor Documentation

+ +

◆ PeriodicTable()

+ +
+
+ + + + + + + +
dftfe::pseudoUtils::PeriodicTable::PeriodicTable (void )
+
+ +
+
+

Member Function Documentation

+ +

◆ configuration() [1/2]

+ +
+
+ + + + + + + +
std::string dftfe::pseudoUtils::PeriodicTable::configuration (int zval) const
+
+ +
+
+ +

◆ configuration() [2/2]

+ +
+
+ + + + + + + +
std::string dftfe::pseudoUtils::PeriodicTable::configuration (std::string symbol) const
+
+ +
+
+ +

◆ mass() [1/2]

+ +
+
+ + + + + + + +
double dftfe::pseudoUtils::PeriodicTable::mass (int zval) const
+
+ +
+
+ +

◆ mass() [2/2]

+ +
+
+ + + + + + + +
double dftfe::pseudoUtils::PeriodicTable::mass (std::string symbol) const
+
+ +
+
+ +

◆ size()

+ +
+
+ + + + + + + +
int dftfe::pseudoUtils::PeriodicTable::size (void ) const
+
+ +
+
+ +

◆ symbol()

+ +
+
+ + + + + + + +
std::string dftfe::pseudoUtils::PeriodicTable::symbol (int zval) const
+
+ +
+
+ +

◆ z()

+ +
+
+ + + + + + + +
int dftfe::pseudoUtils::PeriodicTable::z (std::string symbol) const
+
+ +
+
+

Member Data Documentation

+ +

◆ ptable

+ +
+
+ + + + + +
+ + + + +
std::vector<Element> dftfe::pseudoUtils::PeriodicTable::ptable
+
+private
+
+ +
+
+ +

◆ zmap

+ +
+
+ + + + + +
+ + + + +
std::map<std::string, int> dftfe::pseudoUtils::PeriodicTable::zmap
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1run_parameters-members.html b/classdftfe_1_1run_parameters-members.html new file mode 100644 index 000000000..28d69844d --- /dev/null +++ b/classdftfe_1_1run_parameters-members.html @@ -0,0 +1,114 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::runParameters Member List
+
+ + + + + diff --git a/classdftfe_1_1run_parameters.html b/classdftfe_1_1run_parameters.html new file mode 100644 index 000000000..d66ad7507 --- /dev/null +++ b/classdftfe_1_1run_parameters.html @@ -0,0 +1,511 @@ + + + + + + + +DFT-FE: dftfe::runParameters Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::runParameters Class Reference
+
+
+ +

Namespace which declares the input outer run parameters. + More...

+ +

#include <runParameters.h>

+ + + + + + + + +

+Public Member Functions

 runParameters ()=default
 
void parse_parameters (const std::string &parameter_file)
 
void print_parameters ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

int verbosity
 
std::string solvermode
 
bool restart
 
std::string restartFilesPath
 
int numberOfImages
 
bool imageFreeze
 
double Kmax
 
double Kmin
 
double pathThreshold
 
int maximumNEBiteration
 
bool useDevice
 
unsigned int maxLineSearchIterCGPRP
 
std::string bfgsStepMethod
 
double optimizermaxIonUpdateStep
 
unsigned int lbfgsNumPastSteps
 
std::string optimizationSolver
 
std::string ionRelaxFlagsFile
 
std::string coordinatesFileNEB
 
std::string domainVectorsFileNEB
 
+ + + +

+Private Attributes

dealii::ParameterHandler prm
 
+

Detailed Description

+

Namespace which declares the input outer run parameters.

+
Author
Sambit Das
+

Constructor & Destructor Documentation

+ +

◆ runParameters()

+ +
+
+ + + + + +
+ + + + + + + +
dftfe::runParameters::runParameters ()
+
+default
+
+ +
+
+

Member Function Documentation

+ +

◆ parse_parameters()

+ +
+
+ + + + + + + +
void dftfe::runParameters::parse_parameters (const std::string & parameter_file)
+
+

Parse parameters.

+ +
+
+ +

◆ print_parameters()

+ +
+
+ + + + + + + +
void dftfe::runParameters::print_parameters ()
+
+ +
+
+

Member Data Documentation

+ +

◆ bfgsStepMethod

+ +
+
+ + + + +
std::string dftfe::runParameters::bfgsStepMethod
+
+ +
+
+ +

◆ coordinatesFileNEB

+ +
+
+ + + + +
std::string dftfe::runParameters::coordinatesFileNEB
+
+ +
+
+ +

◆ domainVectorsFileNEB

+ +
+
+ + + + +
std::string dftfe::runParameters::domainVectorsFileNEB
+
+ +
+
+ +

◆ imageFreeze

+ +
+
+ + + + +
bool dftfe::runParameters::imageFreeze
+
+ +
+
+ +

◆ ionRelaxFlagsFile

+ +
+
+ + + + +
std::string dftfe::runParameters::ionRelaxFlagsFile
+
+ +
+
+ +

◆ Kmax

+ +
+
+ + + + +
double dftfe::runParameters::Kmax
+
+ +
+
+ +

◆ Kmin

+ +
+
+ + + + +
double dftfe::runParameters::Kmin
+
+ +
+
+ +

◆ lbfgsNumPastSteps

+ +
+
+ + + + +
unsigned int dftfe::runParameters::lbfgsNumPastSteps
+
+ +
+
+ +

◆ maximumNEBiteration

+ +
+
+ + + + +
int dftfe::runParameters::maximumNEBiteration
+
+ +
+
+ +

◆ maxLineSearchIterCGPRP

+ +
+
+ + + + +
unsigned int dftfe::runParameters::maxLineSearchIterCGPRP
+
+ +
+
+ +

◆ numberOfImages

+ +
+
+ + + + +
int dftfe::runParameters::numberOfImages
+
+ +
+
+ +

◆ optimizationSolver

+ +
+
+ + + + +
std::string dftfe::runParameters::optimizationSolver
+
+ +
+
+ +

◆ optimizermaxIonUpdateStep

+ +
+
+ + + + +
double dftfe::runParameters::optimizermaxIonUpdateStep
+
+ +
+
+ +

◆ pathThreshold

+ +
+
+ + + + +
double dftfe::runParameters::pathThreshold
+
+ +
+
+ +

◆ prm

+ +
+
+ + + + + +
+ + + + +
dealii::ParameterHandler dftfe::runParameters::prm
+
+private
+
+ +
+
+ +

◆ restart

+ +
+
+ + + + +
bool dftfe::runParameters::restart
+
+ +
+
+ +

◆ restartFilesPath

+ +
+
+ + + + +
std::string dftfe::runParameters::restartFilesPath
+
+ +
+
+ +

◆ solvermode

+ +
+
+ + + + +
std::string dftfe::runParameters::solvermode
+
+ +
+
+ +

◆ useDevice

+ +
+
+ + + + +
bool dftfe::runParameters::useDevice
+
+ +
+
+ +

◆ verbosity

+ +
+
+ + + + +
int dftfe::runParameters::verbosity
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1symmetry_class-members.html b/classdftfe_1_1symmetry_class-members.html new file mode 100644 index 000000000..ddb39f4db --- /dev/null +++ b/classdftfe_1_1symmetry_class-members.html @@ -0,0 +1,144 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace > Member List
+
+
+ +

This is the complete list of members for dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cellMapTabledftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
clearMaps()dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >
computeAndSymmetrize_rhoOut()dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >
computeLocalrhoOut()dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >
computing_timerdftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
crys2cart(dealii::Point< 3 > p, int flag)dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >
d_mpiCommParentdftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
dealIICellIddftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
dftClass< FEOrder, FEOrderElectro, memorySpace >dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >friend
dftPtrdftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
FEdftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
globalCellIddftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
gradRhoRecvddftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
groupOffsetsdftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
initSymmetry()dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >
interpoolcommdftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
mappedGroupdftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
mappedGroupRecvd0dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
mappedGroupRecvd1dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
mappedGroupRecvd2dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
mappedGroupSend0dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
mappedGroupSend1dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
mappedGroupSend2dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
mpi_communicatordftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
mpi_offsets0dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
mpi_offsets1dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
mpi_scatter_offsetdftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
mpi_scatterGrad_offsetdftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
mpiGrad_offsets1dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
n_mpi_processesdftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
numSymmdftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
numSymmUnderGroupdftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
ownerProcGlobaldftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
pcoutdftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
recv_buf_sizedftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
recv_sizedftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
recv_size0dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
recv_size1dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
recvdData0dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
recvdData1dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
recvdData2dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
recvdData3dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
recvGrad_size1dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
rhoRecvddftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
send_buf_sizedftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
send_scatter_sizedftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
send_scatterGrad_sizedftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
symmetryClass(dftClass< FEOrder, FEOrderElectro, memorySpace > *_dftPtr, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &_interpoolcomm)dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >
symmMatdftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
symmUnderGroupdftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
this_mpi_processdftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
totPointsdftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
translationdftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >private
+ + + + diff --git a/classdftfe_1_1symmetry_class.html b/classdftfe_1_1symmetry_class.html new file mode 100644 index 000000000..60d0818a3 --- /dev/null +++ b/classdftfe_1_1symmetry_class.html @@ -0,0 +1,1504 @@ + + + + + + + +DFT-FE: dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace > Class Template Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace > Class Template Reference
+
+
+ +

density symmetrization based on irreducible Brillouin zone calculation, only relevant for calculations using point group symmetries + More...

+ +

#include <symmetry.h>

+ + + + + + + + + + + + + + +

+Public Member Functions

 symmetryClass (dftClass< FEOrder, FEOrderElectro, memorySpace > *_dftPtr, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &_interpoolcomm)
 
void initSymmetry ()
 
void computeAndSymmetrize_rhoOut ()
 
void computeLocalrhoOut ()
 
void clearMaps ()
 
dealii::Point< 3 > crys2cart (dealii::Point< 3 > p, int flag)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

dftClass< FEOrder, FEOrderElectro, memorySpace > * dftPtr
 
dealii::FE_Q< 3 > FE
 
dealii::TimerOutput computing_timer
 
const MPI_Comm d_mpiCommParent
 
const MPI_Comm mpi_communicator
 
const MPI_Comm interpoolcomm
 
const unsigned int n_mpi_processes
 
const unsigned int this_mpi_process
 
dealii::ConditionalOStream pcout
 
std::vector< std::vector< std::vector< double > > > symmMat
 
unsigned int numSymm
 
double translation [500][3]
 
std::vector< std::vector< int > > symmUnderGroup
 
std::vector< intnumSymmUnderGroup
 
std::map< dealii::CellId, std::vector< std::tuple< int, std::vector< double >, int > > > cellMapTable
 
std::vector< std::vector< std::vector< std::tuple< int, int, int > > > > mappedGroup
 
std::map< int, typename dealii::DoFHandler< 3 >::active_cell_iterator > dealIICellId
 
std::map< dealii::CellId, intglobalCellId
 
std::vector< intownerProcGlobal
 
std::vector< std::vector< std::vector< std::vector< int > > > > mappedGroupSend0
 
std::vector< std::vector< std::vector< std::vector< int > > > > mappedGroupSend2
 
std::vector< std::vector< std::vector< std::vector< std::vector< double > > > > > mappedGroupSend1
 
std::vector< std::vector< std::vector< int > > > mappedGroupRecvd0
 
std::vector< std::vector< std::vector< int > > > mappedGroupRecvd2
 
std::vector< std::vector< std::vector< std::vector< double > > > > mappedGroupRecvd1
 
std::vector< std::vector< std::vector< std::vector< int > > > > send_buf_size
 
std::vector< std::vector< std::vector< std::vector< int > > > > recv_buf_size
 
std::vector< std::vector< std::vector< std::vector< double > > > > rhoRecvd
 
std::vector< std::vector< std::vector< std::vector< double > > > > gradRhoRecvd
 
std::vector< std::vector< std::vector< std::vector< int > > > > groupOffsets
 
unsigned int totPoints
 
std::vector< intmpi_scatter_offset
 
std::vector< intsend_scatter_size
 
std::vector< intrecv_size
 
std::vector< intmpi_scatterGrad_offset
 
std::vector< intsend_scatterGrad_size
 
std::vector< intmpi_offsets0
 
std::vector< intmpi_offsets1
 
std::vector< intmpiGrad_offsets1
 
std::vector< intrecvdData0
 
std::vector< intrecvdData2
 
std::vector< intrecvdData3
 
std::vector< std::vector< double > > recvdData1
 
std::vector< intrecv_size0
 
std::vector< intrecv_size1
 
std::vector< intrecvGrad_size1
 
+ + + +

+Friends

class dftClass< FEOrder, FEOrderElectro, memorySpace >
 
+

Detailed Description

+
template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+class dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >

density symmetrization based on irreducible Brillouin zone calculation, only relevant for calculations using point group symmetries

+
Author
Krishnendu Ghosh, krisg.nosp@m.@umi.nosp@m.ch.ed.nosp@m.u
+

Constructor & Destructor Documentation

+ +

◆ symmetryClass()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + +
dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::symmetryClass (dftClass< FEOrder, FEOrderElectro, memorySpace > * _dftPtr,
const MPI_Comm & mpi_comm_parent,
const MPI_Comm & mpi_comm_domain,
const MPI_Comm & _interpoolcomm )
+
+

symmetryClass constructor

+ +
+
+

Member Function Documentation

+ +

◆ clearMaps()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::clearMaps ()
+
+

Wipes out mapping tables between relaxation steps

+ +
+
+ +

◆ computeAndSymmetrize_rhoOut()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::computeAndSymmetrize_rhoOut ()
+
+

computes total density by summing over all the symmetry transformed points

+ +
+
+ +

◆ computeLocalrhoOut()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::computeLocalrhoOut ()
+
+

computes density at all the transformed points received from other processors and scatters the density back to the corresponding processors

+ +
+
+ +

◆ crys2cart()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + +
dealii::Point< 3 > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::crys2cart (dealii::Point< 3 > p,
int flag )
+
+

quick snippet to go back and forth between crystal and cartesian coordinates

Parameters
+ + + +
[in]ppoint that is to be transformed
[in]flagtype of coordinate transformation, 1 takes crys. to cart. -1 takes cart. to crys.
+
+
+ +
+
+ +

◆ initSymmetry()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::initSymmetry ()
+
+

Main driver routine to generate and communicate mapping tables

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ dftClass< FEOrder, FEOrderElectro, memorySpace >

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
friend class dftClass< FEOrder, FEOrderElectro, memorySpace >
+
+friend
+
+ +
+
+

Member Data Documentation

+ +

◆ cellMapTable

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<dealii::CellId, std::vector<std::tuple<int, std::vector<double>, int> > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::cellMapTable
+
+private
+
+

Data members required for storing mapping tables locally

+ +
+
+ +

◆ computing_timer

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::TimerOutput dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::computing_timer
+
+private
+
+

compute-time logger

+ +
+
+ +

◆ d_mpiCommParent

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::d_mpiCommParent
+
+private
+
+

parallel objects

+ +
+
+ +

◆ dealIICellId

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<int, typename dealii::DoFHandler<3>::active_cell_iterator> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::dealIICellId
+
+private
+
+ +
+
+ +

◆ dftPtr

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dftClass<FEOrder, FEOrderElectro, memorySpace>* dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::dftPtr
+
+private
+
+ +
+
+ +

◆ FE

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::FE_Q<3> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::FE
+
+private
+
+

dealii based FE data structres

+ +
+
+ +

◆ globalCellId

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::map<dealii::CellId, int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::globalCellId
+
+private
+
+ +
+
+ +

◆ gradRhoRecvd

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<std::vector<double> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::gradRhoRecvd
+
+private
+
+ +
+
+ +

◆ groupOffsets

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<std::vector<int> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::groupOffsets
+
+private
+
+ +
+
+ +

◆ interpoolcomm

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::interpoolcomm
+
+private
+
+ +
+
+ +

◆ mappedGroup

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<std::tuple<int, int, int> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mappedGroup
+
+private
+
+ +
+
+ +

◆ mappedGroupRecvd0

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<int> > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mappedGroupRecvd0
+
+private
+
+ +
+
+ +

◆ mappedGroupRecvd1

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<std::vector<double> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mappedGroupRecvd1
+
+private
+
+ +
+
+ +

◆ mappedGroupRecvd2

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<int> > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mappedGroupRecvd2
+
+private
+
+ +
+
+ +

◆ mappedGroupSend0

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<std::vector<int> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mappedGroupSend0
+
+private
+
+

Data members required for communicating mapping tables

+ +
+
+ +

◆ mappedGroupSend1

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<std::vector<std::vector<double> > > > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mappedGroupSend1
+
+private
+
+ +
+
+ +

◆ mappedGroupSend2

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<std::vector<int> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mappedGroupSend2
+
+private
+
+ +
+
+ +

◆ mpi_communicator

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mpi_communicator
+
+private
+
+ +
+
+ +

◆ mpi_offsets0

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mpi_offsets0
+
+private
+
+ +
+
+ +

◆ mpi_offsets1

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mpi_offsets1
+
+private
+
+ +
+
+ +

◆ mpi_scatter_offset

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mpi_scatter_offset
+
+private
+
+ +
+
+ +

◆ mpi_scatterGrad_offset

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mpi_scatterGrad_offset
+
+private
+
+ +
+
+ +

◆ mpiGrad_offsets1

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::mpiGrad_offsets1
+
+private
+
+ +
+
+ +

◆ n_mpi_processes

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const unsigned int dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::n_mpi_processes
+
+private
+
+ +
+
+ +

◆ numSymm

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::numSymm
+
+private
+
+ +
+
+ +

◆ numSymmUnderGroup

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::numSymmUnderGroup
+
+private
+
+ +
+
+ +

◆ ownerProcGlobal

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::ownerProcGlobal
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::pcout
+
+private
+
+ +
+
+ +

◆ recv_buf_size

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<std::vector<int> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::recv_buf_size
+
+private
+
+ +
+
+ +

◆ recv_size

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::recv_size
+
+private
+
+ +
+
+ +

◆ recv_size0

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::recv_size0
+
+private
+
+ +
+
+ +

◆ recv_size1

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::recv_size1
+
+private
+
+ +
+
+ +

◆ recvdData0

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::recvdData0
+
+private
+
+ +
+
+ +

◆ recvdData1

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::recvdData1
+
+private
+
+ +
+
+ +

◆ recvdData2

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::recvdData2
+
+private
+
+ +
+
+ +

◆ recvdData3

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::recvdData3
+
+private
+
+ +
+
+ +

◆ recvGrad_size1

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::recvGrad_size1
+
+private
+
+ +
+
+ +

◆ rhoRecvd

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<std::vector<double> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::rhoRecvd
+
+private
+
+ +
+
+ +

◆ send_buf_size

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<std::vector<int> > > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::send_buf_size
+
+private
+
+ +
+
+ +

◆ send_scatter_size

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::send_scatter_size
+
+private
+
+ +
+
+ +

◆ send_scatterGrad_size

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<int> dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::send_scatterGrad_size
+
+private
+
+ +
+
+ +

◆ symmMat

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<std::vector<double> > > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::symmMat
+
+private
+
+

Space group symmetry related data

+ +
+
+ +

◆ symmUnderGroup

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<std::vector<int> > dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::symmUnderGroup
+
+private
+
+ +
+
+ +

◆ this_mpi_process

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
const unsigned int dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::this_mpi_process
+
+private
+
+ +
+
+ +

◆ totPoints

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
unsigned int dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::totPoints
+
+private
+
+

Data sizes and offsets required for MPI scattering and gathering of mapping tables and symmetrized density They have to be data members since the same sizes and offsets are used in both communication mapping tables and symmetrized density

+ +
+
+ +

◆ translation

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro, dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
double dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >::translation[500][3]
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1triangulation_manager-members.html b/classdftfe_1_1triangulation_manager-members.html new file mode 100644 index 000000000..197da93b5 --- /dev/null +++ b/classdftfe_1_1triangulation_manager-members.html @@ -0,0 +1,133 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::triangulationManager Member List
+
+
+ +

This is the complete list of members for dftfe::triangulationManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
checkConstraintsConsistency(dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation)dftfe::triangulationManagerprivate
checkPeriodicSurfaceRefinementConsistency(dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation)dftfe::triangulationManagerprivate
computing_timerdftfe::triangulationManagerprivate
consistentPeriodicBoundaryRefinement(dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation, std::vector< unsigned int > &locallyOwnedCellsRefineFlags, std::map< dealii::CellId, unsigned int > &cellIdToCellRefineFlagMapLocal)dftfe::triangulationManagerprivate
d_atomPositionsdftfe::triangulationManagerprivate
d_dftParamsdftfe::triangulationManagerprivate
d_domainBoundingVectorsdftfe::triangulationManagerprivate
d_FEOrderdftfe::triangulationManagerprivate
d_imageAtomPositionsdftfe::triangulationManagerprivate
d_imageIdsdftfe::triangulationManagerprivate
d_max_refinement_stepsdftfe::triangulationManagerprivate
d_mpiCommParentdftfe::triangulationManagerprivate
d_nearestAtomDistancesdftfe::triangulationManagerprivate
d_parallelTriaCurrentRefinementdftfe::triangulationManagerprivate
d_parallelTriangulationMoveddftfe::triangulationManagerprivate
d_parallelTriangulationUnmoveddftfe::triangulationManagerprivate
d_serialTriaCurrentRefinementdftfe::triangulationManagerprivate
d_serialTriangulationUnmoveddftfe::triangulationManagerprivate
generateAutomaticMeshApriori(const dealii::DoFHandler< 3 > &dofHandler, dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation, const std::vector< distributedCPUVec< double > > &eigenVectorsArrayIn, const unsigned int FEOrder)dftfe::triangulationManager
generateCoarseMesh(dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation)dftfe::triangulationManagerprivate
generateCoarseMeshesForRestart(const std::vector< std::vector< double > > &atomLocations, const std::vector< std::vector< double > > &imageAtomLocations, const std::vector< int > &imageIds, const std::vector< double > &nearestAtomDistances, const std::vector< std::vector< double > > &domainBoundingVectors, const bool generateSerialTria)dftfe::triangulationManager
generateMesh(dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation, dealii::parallel::distributed::Triangulation< 3 > &serialTriangulation, const bool generateSerialTria=false)dftfe::triangulationManagerprivate
generateResetMeshes(const std::vector< std::vector< double > > &domainBoundingVectors, const bool generateSerialTria)dftfe::triangulationManager
generateSerialUnmovedAndParallelMovedUnmovedMesh(const std::vector< std::vector< double > > &atomLocations, const std::vector< std::vector< double > > &imageAtomLocations, const std::vector< int > &imageIds, const std::vector< double > &nearestAtomDistances, const std::vector< std::vector< double > > &domainBoundingVectors, const bool generateSerialTria)dftfe::triangulationManager
getParallelMeshMoved()dftfe::triangulationManager
getParallelMeshUnmoved()dftfe::triangulationManager
getSerialMeshUnmoved()dftfe::triangulationManager
interBandGroupCommdftfe::triangulationManagerprivate
interpoolcommdftfe::triangulationManagerprivate
loadSupportTriangulations(std::string path)dftfe::triangulationManagerprivate
loadTriangulationsSolutionVectors(std::string path, const unsigned int feOrder, const unsigned int nComponents, std::vector< distributedCPUVec< double > * > &solutionVectors)dftfe::triangulationManager
mpi_communicatordftfe::triangulationManagerprivate
n_mpi_processesdftfe::triangulationManagerprivate
pcoutdftfe::triangulationManagerprivate
refinementAlgorithmA(dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation, std::vector< unsigned int > &locallyOwnedCellsRefineFlags, std::map< dealii::CellId, unsigned int > &cellIdToCellRefineFlagMapLocal, const bool smoothenCellsOnPeriodicBoundary=false, const double smootheningFactor=2.0)dftfe::triangulationManagerprivate
refineSerialMesh(const std::map< dealii::CellId, unsigned int > &cellIdToCellRefineFlagMapLocal, const MPI_Comm &mpi_comm, dealii::parallel::distributed::Triangulation< 3 > &serialTriangulation, const dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation, std::vector< bool > &serialTriaCurrentRefinement)dftfe::triangulationManagerprivate
resetMesh(dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulationA, dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulationB)dftfe::triangulationManager
saveSupportTriangulations(std::string path)dftfe::triangulationManagerprivate
saveTriangulationsSolutionVectors(std::string path, const unsigned int feOrder, const unsigned int nComponents, const std::vector< const distributedCPUVec< double > * > &solutionVectors, const MPI_Comm &interpoolComm, const MPI_Comm &interBandGroupComm)dftfe::triangulationManager
this_mpi_processdftfe::triangulationManagerprivate
triangulationManager(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const unsigned int FEOrder, const dftParameters &dftParams)dftfe::triangulationManager
~triangulationManager()dftfe::triangulationManager
+ + + + diff --git a/classdftfe_1_1triangulation_manager.html b/classdftfe_1_1triangulation_manager.html new file mode 100644 index 000000000..1c73042e0 --- /dev/null +++ b/classdftfe_1_1triangulation_manager.html @@ -0,0 +1,1399 @@ + + + + + + + +DFT-FE: dftfe::triangulationManager Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::triangulationManager Class Reference
+
+
+ +

This class generates and stores adaptive finite element meshes for the real-space dft problem. + More...

+ +

#include <triangulationManager.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 triangulationManager (const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const unsigned int FEOrder, const dftParameters &dftParams)
 Constructor.
 
 ~triangulationManager ()
 
void generateSerialUnmovedAndParallelMovedUnmovedMesh (const std::vector< std::vector< double > > &atomLocations, const std::vector< std::vector< double > > &imageAtomLocations, const std::vector< int > &imageIds, const std::vector< double > &nearestAtomDistances, const std::vector< std::vector< double > > &domainBoundingVectors, const bool generateSerialTria)
 generates parallel moved and unmoved meshes, and serial unmoved mesh.
 
void generateCoarseMeshesForRestart (const std::vector< std::vector< double > > &atomLocations, const std::vector< std::vector< double > > &imageAtomLocations, const std::vector< int > &imageIds, const std::vector< double > &nearestAtomDistances, const std::vector< std::vector< double > > &domainBoundingVectors, const bool generateSerialTria)
 generates the coarse meshes for restart.
 
void generateAutomaticMeshApriori (const dealii::DoFHandler< 3 > &dofHandler, dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation, const std::vector< distributedCPUVec< double > > &eigenVectorsArrayIn, const unsigned int FEOrder)
 returns generates A-posteriori refined mesh
 
dealii::parallel::distributed::Triangulation< 3 > & getSerialMeshUnmoved ()
 returns constant reference to serial unmoved triangulation
 
dealii::parallel::distributed::Triangulation< 3 > & getParallelMeshMoved ()
 returns reference to parallel moved triangulation
 
dealii::parallel::distributed::Triangulation< 3 > & getParallelMeshUnmoved ()
 returns constant reference to parallel unmoved triangulation
 
void resetMesh (dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulationA, dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulationB)
 resets the vertices of meshB moved to vertices of meshA.
 
void generateResetMeshes (const std::vector< std::vector< double > > &domainBoundingVectors, const bool generateSerialTria)
 generates reset meshes to the last mesh generated by auto mesh approach. This is used in Gaussian update of meshes during electrostatics
 
void saveTriangulationsSolutionVectors (std::string path, const unsigned int feOrder, const unsigned int nComponents, const std::vector< const distributedCPUVec< double > * > &solutionVectors, const MPI_Comm &interpoolComm, const MPI_Comm &interBandGroupComm)
 serialize the triangulations and the associated solution vectors
 
void loadTriangulationsSolutionVectors (std::string path, const unsigned int feOrder, const unsigned int nComponents, std::vector< distributedCPUVec< double > * > &solutionVectors)
 de-serialize the triangulations and the associated solution vectors
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

void generateMesh (dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation, dealii::parallel::distributed::Triangulation< 3 > &serialTriangulation, const bool generateSerialTria=false)
 internal function which generates a parallel and serial mesh using a adaptive refinement strategy.
 
void generateCoarseMesh (dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation)
 internal function which generates a coarse mesh which is required for the load function call in restarts.
 
bool refinementAlgorithmA (dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation, std::vector< unsigned int > &locallyOwnedCellsRefineFlags, std::map< dealii::CellId, unsigned int > &cellIdToCellRefineFlagMapLocal, const bool smoothenCellsOnPeriodicBoundary=false, const double smootheningFactor=2.0)
 internal function which sets refinement flags based on a custom created algorithm
 
bool consistentPeriodicBoundaryRefinement (dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation, std::vector< unsigned int > &locallyOwnedCellsRefineFlags, std::map< dealii::CellId, unsigned int > &cellIdToCellRefineFlagMapLocal)
 internal function which sets refinement flags to have consistent refinement across periodic boundary
 
bool checkPeriodicSurfaceRefinementConsistency (dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation)
 check that triangulation has consistent refinement across periodic boundary including for ghost cells
 
bool checkConstraintsConsistency (dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation)
 check that FEOrder=1 dofHandler using the triangulation has parallel consistent combined hanging node and periodic constraints
 
void refineSerialMesh (const std::map< dealii::CellId, unsigned int > &cellIdToCellRefineFlagMapLocal, const MPI_Comm &mpi_comm, dealii::parallel::distributed::Triangulation< 3 > &serialTriangulation, const dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation, std::vector< bool > &serialTriaCurrentRefinement)
 internal function which refines the serial mesh based on refinement flags from parallel mesh. This ensures that we get the same mesh in serial and parallel.
 
void saveSupportTriangulations (std::string path)
 internal function to serialize support triangulations. No solution data is attached to them
 
void loadSupportTriangulations (std::string path)
 internal function to de-serialize support triangulations. No solution data is read from them
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

dealii::parallel::distributed::Triangulation< 3 > d_parallelTriangulationUnmoved
 
dealii::parallel::distributed::Triangulation< 3 > d_parallelTriangulationMoved
 
dealii::parallel::distributed::Triangulation< 3 > d_serialTriangulationUnmoved
 
std::vector< std::vector< bool > > d_parallelTriaCurrentRefinement
 
std::vector< std::vector< bool > > d_serialTriaCurrentRefinement
 
std::vector< std::vector< double > > d_atomPositions
 
std::vector< std::vector< double > > d_imageAtomPositions
 
std::vector< intd_imageIds
 
std::vector< doubled_nearestAtomDistances
 
std::vector< std::vector< double > > d_domainBoundingVectors
 
const unsigned int d_max_refinement_steps = 40
 
const unsigned int d_FEOrder
 
const dftParametersd_dftParams
 
const MPI_Comm d_mpiCommParent
 
const MPI_Comm mpi_communicator
 
const MPI_Comm interpoolcomm
 
const MPI_Comm interBandGroupComm
 
const unsigned int this_mpi_process
 
const unsigned int n_mpi_processes
 
dealii::ConditionalOStream pcout
 
dealii::TimerOutput computing_timer
 
+

Detailed Description

+

This class generates and stores adaptive finite element meshes for the real-space dft problem.

+

The class uses an adpative mesh generation strategy to generate finite element mesh for given domain based on five input parameters: BASE MESH SIZE, ATOM BALL RADIUS, MESH SIZE ATOM BALL, MESH SIZE NEAR ATOM and MAX REFINEMENT STEPS (Refer to utils/dftParameters.cc for their corresponding internal variable names). Additionaly, this class also applies periodicity to mesh. The class stores two types of meshes: moved and unmoved. They are essentially the same meshes, except that we move the nodes of the moved mesh (in the meshMovement class) such that the atoms lie on the nodes. However, once the mesh is moved, dealii has issues using that mesh for further refinement, which is why we also carry an unmoved triangulation.

+
Author
Phani Motamarri, Sambit Das, Krishnendu Ghosh
+

Constructor & Destructor Documentation

+ +

◆ triangulationManager()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dftfe::triangulationManager::triangulationManager (const MPI_Comm & mpi_comm_parent,
const MPI_Comm & mpi_comm_domain,
const MPI_Comm & interpoolcomm,
const MPI_Comm & interBandGroupComm,
const unsigned int FEOrder,
const dftParameters & dftParams )
+
+ +

Constructor.

+
Parameters
+ + + + + +
mpi_comm_parentparent mpi communicator
mpi_comm_domaindomain decomposition mpi communicator
interpool_commmpi interpool communicator over k points
interBandGroupCommmpi interpool communicator over band groups
+
+
+ +
+
+ +

◆ ~triangulationManager()

+ +
+
+ + + + + + + +
dftfe::triangulationManager::~triangulationManager ()
+
+

triangulationManager destructor

+ +
+
+

Member Function Documentation

+ +

◆ checkConstraintsConsistency()

+ +
+
+ + + + + +
+ + + + + + + +
bool dftfe::triangulationManager::checkConstraintsConsistency (dealii::parallel::distributed::Triangulation< 3 > & parallelTriangulation)
+
+private
+
+ +

check that FEOrder=1 dofHandler using the triangulation has parallel consistent combined hanging node and periodic constraints

+ +
+
+ +

◆ checkPeriodicSurfaceRefinementConsistency()

+ +
+
+ + + + + +
+ + + + + + + +
bool dftfe::triangulationManager::checkPeriodicSurfaceRefinementConsistency (dealii::parallel::distributed::Triangulation< 3 > & parallelTriangulation)
+
+private
+
+ +

check that triangulation has consistent refinement across periodic boundary including for ghost cells

+ +
+
+ +

◆ consistentPeriodicBoundaryRefinement()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
bool dftfe::triangulationManager::consistentPeriodicBoundaryRefinement (dealii::parallel::distributed::Triangulation< 3 > & parallelTriangulation,
std::vector< unsigned int > & locallyOwnedCellsRefineFlags,
std::map< dealii::CellId, unsigned int > & cellIdToCellRefineFlagMapLocal )
+
+private
+
+ +

internal function which sets refinement flags to have consistent refinement across periodic boundary

+
Returns
bool boolean flag is any local cell has refinement flag set
+ +
+
+ +

◆ generateAutomaticMeshApriori()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::triangulationManager::generateAutomaticMeshApriori (const dealii::DoFHandler< 3 > & dofHandler,
dealii::parallel::distributed::Triangulation< 3 > & parallelTriangulation,
const std::vector< distributedCPUVec< double > > & eigenVectorsArrayIn,
const unsigned int FEOrder )
+
+ +

returns generates A-posteriori refined mesh

+
Parameters
+ + + + + +
dofHandlercorresponds to starting mesh which has to refined
parallelTriangulationcorresponds to starting triangulation
eigenVectorsArrayInsolution vectors used to compute errors in each cell required for refinement
FEOrderfinite-element interpolating polynomial
+
+
+ +
+
+ +

◆ generateCoarseMesh()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::triangulationManager::generateCoarseMesh (dealii::parallel::distributed::Triangulation< 3 > & parallelTriangulation)
+
+private
+
+ +

internal function which generates a coarse mesh which is required for the load function call in restarts.

+ +
+
+ +

◆ generateCoarseMeshesForRestart()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::triangulationManager::generateCoarseMeshesForRestart (const std::vector< std::vector< double > > & atomLocations,
const std::vector< std::vector< double > > & imageAtomLocations,
const std::vector< int > & imageIds,
const std::vector< double > & nearestAtomDistances,
const std::vector< std::vector< double > > & domainBoundingVectors,
const bool generateSerialTria )
+
+ +

generates the coarse meshes for restart.

+
Parameters
+ + + + + +
atomLocationsvector containing cartesian coordinates at atoms with respect to origin (center of domain).
imageAtomLocationsvector containing cartesian coordinates of image atoms with respect to origin.
domainBoundingVectorsvector of domain bounding vectors (refer to description of input parameters.
generateSerialMeshbool to toggle to generation of serial tria
+
+
+ +
+
+ +

◆ generateMesh()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + +
void dftfe::triangulationManager::generateMesh (dealii::parallel::distributed::Triangulation< 3 > & parallelTriangulation,
dealii::parallel::distributed::Triangulation< 3 > & serialTriangulation,
const bool generateSerialTria = false )
+
+private
+
+ +

internal function which generates a parallel and serial mesh using a adaptive refinement strategy.

+ +
+
+ +

◆ generateResetMeshes()

+ +
+
+ + + + + + + + + + + +
void dftfe::triangulationManager::generateResetMeshes (const std::vector< std::vector< double > > & domainBoundingVectors,
const bool generateSerialTria )
+
+ +

generates reset meshes to the last mesh generated by auto mesh approach. This is used in Gaussian update of meshes during electrostatics

+ +
+
+ +

◆ generateSerialUnmovedAndParallelMovedUnmovedMesh()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::triangulationManager::generateSerialUnmovedAndParallelMovedUnmovedMesh (const std::vector< std::vector< double > > & atomLocations,
const std::vector< std::vector< double > > & imageAtomLocations,
const std::vector< int > & imageIds,
const std::vector< double > & nearestAtomDistances,
const std::vector< std::vector< double > > & domainBoundingVectors,
const bool generateSerialTria )
+
+ +

generates parallel moved and unmoved meshes, and serial unmoved mesh.

+
Parameters
+ + + + + +
atomLocationsvector containing cartesian coordinates at atoms with respect to origin (center of domain).
imageAtomLocationsvector containing cartesian coordinates of image atoms with respect to origin.
domainBoundingVectorsvector of domain bounding vectors (refer to description of input parameters.
generateSerialMeshbool to toggle to generation of serial tria
+
+
+ +
+
+ +

◆ getParallelMeshMoved()

+ +
+
+ + + + + + + +
dealii::parallel::distributed::Triangulation< 3 > & dftfe::triangulationManager::getParallelMeshMoved ()
+
+ +

returns reference to parallel moved triangulation

+ +
+
+ +

◆ getParallelMeshUnmoved()

+ +
+
+ + + + + + + +
dealii::parallel::distributed::Triangulation< 3 > & dftfe::triangulationManager::getParallelMeshUnmoved ()
+
+ +

returns constant reference to parallel unmoved triangulation

+ +
+
+ +

◆ getSerialMeshUnmoved()

+ +
+
+ + + + + + + +
dealii::parallel::distributed::Triangulation< 3 > & dftfe::triangulationManager::getSerialMeshUnmoved ()
+
+ +

returns constant reference to serial unmoved triangulation

+ +
+
+ +

◆ loadSupportTriangulations()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::triangulationManager::loadSupportTriangulations (std::string path)
+
+private
+
+ +

internal function to de-serialize support triangulations. No solution data is read from them

+ +
+
+ +

◆ loadTriangulationsSolutionVectors()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::triangulationManager::loadTriangulationsSolutionVectors (std::string path,
const unsigned int feOrder,
const unsigned int nComponents,
std::vector< distributedCPUVec< double > * > & solutionVectors )
+
+ +

de-serialize the triangulations and the associated solution vectors

+
Parameters
+ + + + +
[input]feOrderfinite element polynomial order of the dofHandler on which solution vectors to be de-serialized are based upon
[input]nComponentsnumber of components of the dofHandler on which solution vectors to be de-serialized are based upon
[output]solutionVectorsvector of parallel distributed de-serialized solution vectors. The vector length must match the input vector length used in the call to saveTriangulationSolutionVectors
+
+
+ +
+
+ +

◆ refinementAlgorithmA()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
bool dftfe::triangulationManager::refinementAlgorithmA (dealii::parallel::distributed::Triangulation< 3 > & parallelTriangulation,
std::vector< unsigned int > & locallyOwnedCellsRefineFlags,
std::map< dealii::CellId, unsigned int > & cellIdToCellRefineFlagMapLocal,
const bool smoothenCellsOnPeriodicBoundary = false,
const double smootheningFactor = 2.0 )
+
+private
+
+ +

internal function which sets refinement flags based on a custom created algorithm

+
Returns
bool boolean flag is any local cell has refinement flag set
+ +
+
+ +

◆ refineSerialMesh()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::triangulationManager::refineSerialMesh (const std::map< dealii::CellId, unsigned int > & cellIdToCellRefineFlagMapLocal,
const MPI_Comm & mpi_comm,
dealii::parallel::distributed::Triangulation< 3 > & serialTriangulation,
const dealii::parallel::distributed::Triangulation< 3 > & parallelTriangulation,
std::vector< bool > & serialTriaCurrentRefinement )
+
+private
+
+ +

internal function which refines the serial mesh based on refinement flags from parallel mesh. This ensures that we get the same mesh in serial and parallel.

+ +
+
+ +

◆ resetMesh()

+ +
+
+ + + + + + + + + + + +
void dftfe::triangulationManager::resetMesh (dealii::parallel::distributed::Triangulation< 3 > & parallelTriangulationA,
dealii::parallel::distributed::Triangulation< 3 > & parallelTriangulationB )
+
+ +

resets the vertices of meshB moved to vertices of meshA.

+ +
+
+ +

◆ saveSupportTriangulations()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::triangulationManager::saveSupportTriangulations (std::string path)
+
+private
+
+ +

internal function to serialize support triangulations. No solution data is attached to them

+ +
+
+ +

◆ saveTriangulationsSolutionVectors()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::triangulationManager::saveTriangulationsSolutionVectors (std::string path,
const unsigned int feOrder,
const unsigned int nComponents,
const std::vector< const distributedCPUVec< double > * > & solutionVectors,
const MPI_Comm & interpoolComm,
const MPI_Comm & interBandGroupComm )
+
+ +

serialize the triangulations and the associated solution vectors

+
Parameters
+ + + + + + +
[input]feOrderfinite element polynomial order of the dofHandler on which solution vectors are based upon
[input]nComponentsnumber of components of the dofHandler on which solution vectors are based upon
[input]solutionVectorsvector of parallel distributed solution vectors to be serialized
[input]interpoolCommThis communicator is used to ensure serialization happens only in k point pool
[input]interBandGroupCommThis communicator to ensure serialization happens only in band group
+
+
+ +
+
+

Member Data Documentation

+ +

◆ computing_timer

+ +
+
+ + + + + +
+ + + + +
dealii::TimerOutput dftfe::triangulationManager::computing_timer
+
+private
+
+ +
+
+ +

◆ d_atomPositions

+ +
+
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::triangulationManager::d_atomPositions
+
+private
+
+ +
+
+ +

◆ d_dftParams

+ +
+
+ + + + + +
+ + + + +
const dftParameters& dftfe::triangulationManager::d_dftParams
+
+private
+
+ +
+
+ +

◆ d_domainBoundingVectors

+ +
+
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::triangulationManager::d_domainBoundingVectors
+
+private
+
+ +
+
+ +

◆ d_FEOrder

+ +
+
+ + + + + +
+ + + + +
const unsigned int dftfe::triangulationManager::d_FEOrder
+
+private
+
+

FEOrder to be used for checking parallel consistency of periodic+hanging node constraints

+ +
+
+ +

◆ d_imageAtomPositions

+ +
+
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::triangulationManager::d_imageAtomPositions
+
+private
+
+ +
+
+ +

◆ d_imageIds

+ +
+
+ + + + + +
+ + + + +
std::vector<int> dftfe::triangulationManager::d_imageIds
+
+private
+
+ +
+
+ +

◆ d_max_refinement_steps

+ +
+
+ + + + + +
+ + + + +
const unsigned int dftfe::triangulationManager::d_max_refinement_steps = 40
+
+private
+
+ +
+
+ +

◆ d_mpiCommParent

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm dftfe::triangulationManager::d_mpiCommParent
+
+private
+
+ +
+
+ +

◆ d_nearestAtomDistances

+ +
+
+ + + + + +
+ + + + +
std::vector<double> dftfe::triangulationManager::d_nearestAtomDistances
+
+private
+
+ +
+
+ +

◆ d_parallelTriaCurrentRefinement

+ +
+
+ + + + + +
+ + + + +
std::vector<std::vector<bool> > dftfe::triangulationManager::d_parallelTriaCurrentRefinement
+
+private
+
+ +
+
+ +

◆ d_parallelTriangulationMoved

+ +
+
+ + + + + +
+ + + + +
dealii::parallel::distributed::Triangulation<3> dftfe::triangulationManager::d_parallelTriangulationMoved
+
+private
+
+ +
+
+ +

◆ d_parallelTriangulationUnmoved

+ +
+
+ + + + + +
+ + + + +
dealii::parallel::distributed::Triangulation<3> dftfe::triangulationManager::d_parallelTriangulationUnmoved
+
+private
+
+ +
+
+ +

◆ d_serialTriaCurrentRefinement

+ +
+
+ + + + + +
+ + + + +
std::vector<std::vector<bool> > dftfe::triangulationManager::d_serialTriaCurrentRefinement
+
+private
+
+ +
+
+ +

◆ d_serialTriangulationUnmoved

+ +
+
+ + + + + +
+ + + + +
dealii::parallel::distributed::Triangulation<3> dftfe::triangulationManager::d_serialTriangulationUnmoved
+
+private
+
+ +
+
+ +

◆ interBandGroupComm

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm dftfe::triangulationManager::interBandGroupComm
+
+private
+
+ +
+
+ +

◆ interpoolcomm

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm dftfe::triangulationManager::interpoolcomm
+
+private
+
+ +
+
+ +

◆ mpi_communicator

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm dftfe::triangulationManager::mpi_communicator
+
+private
+
+ +
+
+ +

◆ n_mpi_processes

+ +
+
+ + + + + +
+ + + + +
const unsigned int dftfe::triangulationManager::n_mpi_processes
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::triangulationManager::pcout
+
+private
+
+ +
+
+ +

◆ this_mpi_process

+ +
+
+ + + + + +
+ + + + +
const unsigned int dftfe::triangulationManager::this_mpi_process
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels-members.html b/classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels-members.html new file mode 100644 index 000000000..afa9e8b82 --- /dev/null +++ b/classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels-members.html @@ -0,0 +1,95 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::utils::MPICommunicatorP2PKernels< ValueType, memorySpace > Member List
+
+
+ +

This is the complete list of members for dftfe::utils::MPICommunicatorP2PKernels< ValueType, memorySpace >, including all inherited members.

+ + + + + +
accumAddLocallyOwnedContrRecvBufferFromTargetProcs(const MemoryStorage< ValueTypeComm, memorySpace > &recvBuffer, const SizeTypeVector &ownedLocalIndicesForTargetProcs, const size_type blockSize, const size_type locallyOwnedSize, const size_type ghostSize, MemoryStorage< ValueType, memorySpace > &dataArray)dftfe::utils::MPICommunicatorP2PKernels< ValueType, memorySpace >static
copyValueType1ArrToValueType2Arr(const size_type blockSize, const ValueType1 *type1Array, ValueType2 *type2Array)dftfe::utils::MPICommunicatorP2PKernels< ValueType, memorySpace >static
gatherLocallyOwnedEntriesSendBufferToTargetProcs(const MemoryStorage< ValueType, memorySpace > &dataArray, const SizeTypeVector &ownedLocalIndicesForTargetProcs, const size_type blockSize, MemoryStorage< ValueTypeComm, memorySpace > &sendBuffer)dftfe::utils::MPICommunicatorP2PKernels< ValueType, memorySpace >static
SizeTypeVector typedefdftfe::utils::MPICommunicatorP2PKernels< ValueType, memorySpace >
+ + + + diff --git a/classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels.html b/classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels.html new file mode 100644 index 000000000..6c4014bae --- /dev/null +++ b/classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels.html @@ -0,0 +1,316 @@ + + + + + + + +DFT-FE: dftfe::utils::MPICommunicatorP2PKernels< ValueType, memorySpace > Class Template Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::utils::MPICommunicatorP2PKernels< ValueType, memorySpace > Class Template Reference
+
+
+ +

#include <MPICommunicatorP2PKernels.h>

+ + + + +

+Public Types

using SizeTypeVector = utils::MemoryStorage<size_type, memorySpace>
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

template<typename ValueTypeComm >
static void gatherLocallyOwnedEntriesSendBufferToTargetProcs (const MemoryStorage< ValueType, memorySpace > &dataArray, const SizeTypeVector &ownedLocalIndicesForTargetProcs, const size_type blockSize, MemoryStorage< ValueTypeComm, memorySpace > &sendBuffer)
 Function template for architecture adaptable gather kernel to send buffer.
 
template<typename ValueTypeComm >
static void accumAddLocallyOwnedContrRecvBufferFromTargetProcs (const MemoryStorage< ValueTypeComm, memorySpace > &recvBuffer, const SizeTypeVector &ownedLocalIndicesForTargetProcs, const size_type blockSize, const size_type locallyOwnedSize, const size_type ghostSize, MemoryStorage< ValueType, memorySpace > &dataArray)
 Function template for architecture adaptable accumlate kernel from recv buffer.
 
template<typename ValueType1 , typename ValueType2 >
static void copyValueType1ArrToValueType2Arr (const size_type blockSize, const ValueType1 *type1Array, ValueType2 *type2Array)
 Function template for copying type1 to type2.
 
+

Member Typedef Documentation

+ +

◆ SizeTypeVector

+ + +

Member Function Documentation

+ +

◆ accumAddLocallyOwnedContrRecvBufferFromTargetProcs()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+
+template<typename ValueTypeComm >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void dftfe::utils::MPICommunicatorP2PKernels< ValueType, memorySpace >::accumAddLocallyOwnedContrRecvBufferFromTargetProcs (const MemoryStorage< ValueTypeComm, memorySpace > & recvBuffer,
const SizeTypeVector & ownedLocalIndicesForTargetProcs,
const size_type blockSize,
const size_type locallyOwnedSize,
const size_type ghostSize,
MemoryStorage< ValueType, memorySpace > & dataArray )
+
+static
+
+ +

Function template for architecture adaptable accumlate kernel from recv buffer.

+
Template Parameters
+ + + +
ValueTypethe type of the number
memorySpace
+
+
+
Parameters
+ + + + + +
[in]recvBuffer
[in]ownedLocalIndicesForTargetProcs
[in]blockSize
[out]dataArray
+
+
+ +
+
+ +

◆ copyValueType1ArrToValueType2Arr()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + +
+ + + + + + + + + + + + + + + + +
static void dftfe::utils::MPICommunicatorP2PKernels< ValueType, memorySpace >::copyValueType1ArrToValueType2Arr (const size_type blockSize,
const ValueType1 * type1Array,
ValueType2 * type2Array )
+
+static
+
+ +

Function template for copying type1 to type2.

+
Parameters
+ + + + +
[in]blockSize
[in]type1Array
[out]type2Array
+
+
+ +
+
+ +

◆ gatherLocallyOwnedEntriesSendBufferToTargetProcs()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+
+template<typename ValueTypeComm >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
static void dftfe::utils::MPICommunicatorP2PKernels< ValueType, memorySpace >::gatherLocallyOwnedEntriesSendBufferToTargetProcs (const MemoryStorage< ValueType, memorySpace > & dataArray,
const SizeTypeVector & ownedLocalIndicesForTargetProcs,
const size_type blockSize,
MemoryStorage< ValueTypeComm, memorySpace > & sendBuffer )
+
+static
+
+ +

Function template for architecture adaptable gather kernel to send buffer.

+
Template Parameters
+ + + +
ValueTypethe type of the number
memorySpace
+
+
+
Parameters
+ + + + + +
[in]dataArraydata array with locally owned entries
[in]ownedLocalIndicesForTargetProcs
[in]blockSize
[out]sendBuffer
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1utils_1_1_memory_manager-members.html b/classdftfe_1_1utils_1_1_memory_manager-members.html new file mode 100644 index 000000000..ce8dd34f2 --- /dev/null +++ b/classdftfe_1_1utils_1_1_memory_manager-members.html @@ -0,0 +1,94 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::utils::MemoryManager< ValueType, memorySpace > Member List
+
+
+ +

This is the complete list of members for dftfe::utils::MemoryManager< ValueType, memorySpace >, including all inherited members.

+ + + + +
allocate(std::size_t size, ValueType **ptr)dftfe::utils::MemoryManager< ValueType, memorySpace >static
deallocate(ValueType *ptr)dftfe::utils::MemoryManager< ValueType, memorySpace >static
set(std::size_t size, ValueType *ptr, ValueType val)dftfe::utils::MemoryManager< ValueType, memorySpace >static
+ + + + diff --git a/classdftfe_1_1utils_1_1_memory_manager.html b/classdftfe_1_1utils_1_1_memory_manager.html new file mode 100644 index 000000000..7dcf28666 --- /dev/null +++ b/classdftfe_1_1utils_1_1_memory_manager.html @@ -0,0 +1,201 @@ + + + + + + + +DFT-FE: dftfe::utils::MemoryManager< ValueType, memorySpace > Class Template Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::utils::MemoryManager< ValueType, memorySpace > Class Template Reference
+
+
+ +

#include <MemoryManager.h>

+ + + + + + + + +

+Static Public Member Functions

static void allocate (std::size_t size, ValueType **ptr)
 
static void deallocate (ValueType *ptr)
 
static void set (std::size_t size, ValueType *ptr, ValueType val)
 
+

Member Function Documentation

+ +

◆ allocate()

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
static void dftfe::utils::MemoryManager< ValueType, memorySpace >::allocate (std::size_t size,
ValueType ** ptr )
+
+static
+
+ +
+
+ +

◆ deallocate()

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
static void dftfe::utils::MemoryManager< ValueType, memorySpace >::deallocate (ValueType * ptr)
+
+static
+
+ +
+
+ +

◆ set()

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + + + + + + +
static void dftfe::utils::MemoryManager< ValueType, memorySpace >::set (std::size_t size,
ValueType * ptr,
ValueType val )
+
+static
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1utils_1_1_memory_manager_3_01_value_type_00_01_memory_space_1_1_h_o_s_t_01_4-members.html b/classdftfe_1_1utils_1_1_memory_manager_3_01_value_type_00_01_memory_space_1_1_h_o_s_t_01_4-members.html new file mode 100644 index 000000000..1ec5b381f --- /dev/null +++ b/classdftfe_1_1utils_1_1_memory_manager_3_01_value_type_00_01_memory_space_1_1_h_o_s_t_01_4-members.html @@ -0,0 +1,94 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::utils::MemoryManager< ValueType, MemorySpace::HOST > Member List
+
+
+ +

This is the complete list of members for dftfe::utils::MemoryManager< ValueType, MemorySpace::HOST >, including all inherited members.

+ + + + +
allocate(std::size_t size, ValueType **ptr)dftfe::utils::MemoryManager< ValueType, MemorySpace::HOST >static
deallocate(ValueType *ptr)dftfe::utils::MemoryManager< ValueType, MemorySpace::HOST >static
set(std::size_t size, ValueType *ptr, ValueType val)dftfe::utils::MemoryManager< ValueType, MemorySpace::HOST >static
+ + + + diff --git a/classdftfe_1_1utils_1_1_memory_manager_3_01_value_type_00_01_memory_space_1_1_h_o_s_t_01_4.html b/classdftfe_1_1utils_1_1_memory_manager_3_01_value_type_00_01_memory_space_1_1_h_o_s_t_01_4.html new file mode 100644 index 000000000..d0aee9c79 --- /dev/null +++ b/classdftfe_1_1utils_1_1_memory_manager_3_01_value_type_00_01_memory_space_1_1_h_o_s_t_01_4.html @@ -0,0 +1,201 @@ + + + + + + + +DFT-FE: dftfe::utils::MemoryManager< ValueType, MemorySpace::HOST > Class Template Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::utils::MemoryManager< ValueType, MemorySpace::HOST > Class Template Reference
+
+
+ +

#include <MemoryManager.h>

+ + + + + + + + +

+Static Public Member Functions

static void allocate (std::size_t size, ValueType **ptr)
 
static void deallocate (ValueType *ptr)
 
static void set (std::size_t size, ValueType *ptr, ValueType val)
 
+

Member Function Documentation

+ +

◆ allocate()

+ +
+
+
+template<typename ValueType >
+ + + + + +
+ + + + + + + + + + + +
static void dftfe::utils::MemoryManager< ValueType, MemorySpace::HOST >::allocate (std::size_t size,
ValueType ** ptr )
+
+static
+
+ +
+
+ +

◆ deallocate()

+ +
+
+
+template<typename ValueType >
+ + + + + +
+ + + + + + + +
static void dftfe::utils::MemoryManager< ValueType, MemorySpace::HOST >::deallocate (ValueType * ptr)
+
+static
+
+ +
+
+ +

◆ set()

+ +
+
+
+template<typename ValueType >
+ + + + + +
+ + + + + + + + + + + + + + + + +
static void dftfe::utils::MemoryManager< ValueType, MemorySpace::HOST >::set (std::size_t size,
ValueType * ptr,
ValueType val )
+
+static
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1utils_1_1_memory_storage-members.html b/classdftfe_1_1utils_1_1_memory_storage-members.html new file mode 100644 index 000000000..ca34b4df7 --- /dev/null +++ b/classdftfe_1_1utils_1_1_memory_storage-members.html @@ -0,0 +1,131 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::utils::MemoryStorage< ValueType, memorySpace > Member List
+
+
+ +

This is the complete list of members for dftfe::utils::MemoryStorage< ValueType, memorySpace >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
begin()dftfe::utils::MemoryStorage< ValueType, memorySpace >
begin() constdftfe::utils::MemoryStorage< ValueType, memorySpace >
clear()dftfe::utils::MemoryStorage< ValueType, memorySpace >
const_iterator typedefdftfe::utils::MemoryStorage< ValueType, memorySpace >
const_reference typedefdftfe::utils::MemoryStorage< ValueType, memorySpace >
copyFrom(const MemoryStorage< ValueType, memorySpaceSrc > &srcMemoryStorage)dftfe::utils::MemoryStorage< ValueType, memorySpace >
copyFrom(const MemoryStorage< ValueType, memorySpaceSrc > &srcMemoryStorage, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset)dftfe::utils::MemoryStorage< ValueType, memorySpace >
copyFrom(const ValueType *src)dftfe::utils::MemoryStorage< ValueType, memorySpace >
copyFrom(const ValueType *src, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset)dftfe::utils::MemoryStorage< ValueType, memorySpace >
copyFrom(const std::vector< ValueType > &src)dftfe::utils::MemoryStorage< ValueType, memorySpace >
copyFrom(const std::vector< ValueType > &src, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset)dftfe::utils::MemoryStorage< ValueType, memorySpace >
copyTo(MemoryStorage< ValueType, memorySpaceDst > &dstMemoryStorage) constdftfe::utils::MemoryStorage< ValueType, memorySpace >
copyTo(MemoryStorage< ValueType, memorySpaceDst > &dstMemoryStorage, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset) constdftfe::utils::MemoryStorage< ValueType, memorySpace >
copyTo(ValueType *dst) constdftfe::utils::MemoryStorage< ValueType, memorySpace >
copyTo(ValueType *dst, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset) constdftfe::utils::MemoryStorage< ValueType, memorySpace >
copyTo(std::vector< ValueType > &dst) constdftfe::utils::MemoryStorage< ValueType, memorySpace >
copyTo(std::vector< ValueType > &dst, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset) constdftfe::utils::MemoryStorage< ValueType, memorySpace >
d_datadftfe::utils::MemoryStorage< ValueType, memorySpace >private
d_sizedftfe::utils::MemoryStorage< ValueType, memorySpace >private
data() noexceptdftfe::utils::MemoryStorage< ValueType, memorySpace >
data() const noexceptdftfe::utils::MemoryStorage< ValueType, memorySpace >
end()dftfe::utils::MemoryStorage< ValueType, memorySpace >
end() constdftfe::utils::MemoryStorage< ValueType, memorySpace >
iterator typedefdftfe::utils::MemoryStorage< ValueType, memorySpace >
MemoryStorage()=defaultdftfe::utils::MemoryStorage< ValueType, memorySpace >
MemoryStorage(const MemoryStorage &u)dftfe::utils::MemoryStorage< ValueType, memorySpace >
MemoryStorage(MemoryStorage &&u) noexceptdftfe::utils::MemoryStorage< ValueType, memorySpace >
MemoryStorage(std::size_t size, ValueType initVal=0)dftfe::utils::MemoryStorage< ValueType, memorySpace >explicit
operator=(const MemoryStorage &rhs)dftfe::utils::MemoryStorage< ValueType, memorySpace >
operator=(MemoryStorage &&rhs) noexceptdftfe::utils::MemoryStorage< ValueType, memorySpace >
operator[](std::size_t i)dftfe::utils::MemoryStorage< ValueType, memorySpace >
operator[](std::size_t i) constdftfe::utils::MemoryStorage< ValueType, memorySpace >
pointer typedefdftfe::utils::MemoryStorage< ValueType, memorySpace >
reference typedefdftfe::utils::MemoryStorage< ValueType, memorySpace >
resize(std::size_t size, ValueType initVal=ValueType())dftfe::utils::MemoryStorage< ValueType, memorySpace >
setValue(const ValueType val)dftfe::utils::MemoryStorage< ValueType, memorySpace >
size() constdftfe::utils::MemoryStorage< ValueType, memorySpace >
swap(MemoryStorage &rhs)dftfe::utils::MemoryStorage< ValueType, memorySpace >
value_type typedefdftfe::utils::MemoryStorage< ValueType, memorySpace >
~MemoryStorage()dftfe::utils::MemoryStorage< ValueType, memorySpace >
+ + + + diff --git a/classdftfe_1_1utils_1_1_memory_storage.html b/classdftfe_1_1utils_1_1_memory_storage.html new file mode 100644 index 000000000..3e7fed4e6 --- /dev/null +++ b/classdftfe_1_1utils_1_1_memory_storage.html @@ -0,0 +1,1504 @@ + + + + + + + +DFT-FE: dftfe::utils::MemoryStorage< ValueType, memorySpace > Class Template Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::utils::MemoryStorage< ValueType, memorySpace > Class Template Reference
+
+
+ +

#include <MemoryStorage.h>

+ + + + + + + + + + + + + + + +

+Public Types

typedef ValueType value_type
 A class template to provide an interface that can act similar to STL vectors but with different MemorySpace— HOST (cpu) , DEVICE (gpu), etc,.
 
typedef ValueTypepointer
 
typedef ValueTypereference
 
typedef const ValueTypeconst_reference
 
typedef ValueTypeiterator
 
typedef const ValueTypeconst_iterator
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 MemoryStorage ()=default
 
 MemoryStorage (const MemoryStorage &u)
 Copy constructor for a MemoryStorage.
 
 MemoryStorage (MemoryStorage &&u) noexcept
 Move constructor for a Vector.
 
 MemoryStorage (std::size_t size, ValueType initVal=0)
 Constructor for Vector with size and initial value arguments.
 
 ~MemoryStorage ()
 Destructor.
 
void clear ()
 clear and set to d_data to nullptr
 
void setValue (const ValueType val)
 Set all the entries to a given value.
 
iterator begin ()
 Return iterator pointing to the beginning of point data.
 
const_iterator begin () const
 Return iterator pointing to the beginning of Vector data.
 
iterator end ()
 Return iterator pointing to the end of Vector data.
 
const_iterator end () const
 Return iterator pointing to the end of Vector data.
 
MemoryStorageoperator= (const MemoryStorage &rhs)
 Copy assignment operator.
 
MemoryStorageoperator= (MemoryStorage &&rhs) noexcept
 Move assignment constructor.
 
reference operator[] (std::size_t i)
 Operator to get a reference to a element of the Vector.
 
const_reference operator[] (std::size_t i) const
 Operator to get a const reference to a element of the Vector.
 
void swap (MemoryStorage &rhs)
 
void resize (std::size_t size, ValueType initVal=ValueType())
 Deallocates and then resizes Vector with new size and initial value arguments.
 
std::size_t size () const
 Returns the dimension of the Vector.
 
ValueTypedata () noexcept
 Return the raw pointer to the Vector.
 
const ValueTypedata () const noexcept
 Return the raw pointer to the Vector without modifying the values.
 
template<dftfe::utils::MemorySpace memorySpaceDst>
void copyTo (MemoryStorage< ValueType, memorySpaceDst > &dstMemoryStorage) const
 Copies the data to a MemoryStorage object in a different memory space. This provides a seamless interface to copy back and forth between memory spaces , including between the same memory spaces.
 
template<dftfe::utils::MemorySpace memorySpaceDst>
void copyTo (MemoryStorage< ValueType, memorySpaceDst > &dstMemoryStorage, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset) const
 Copies the data to a MemoryStorage object in a different memory space. This provides a seamless interface to copy back and forth between memory spaces , including between the same memory spaces. This is a more granular version of the above copyTo function as it provides transfer from a specific portion of the source MemoryStorage to a specific portion of the destination MemoryStorage.
 
template<dftfe::utils::MemorySpace memorySpaceSrc>
void copyFrom (const MemoryStorage< ValueType, memorySpaceSrc > &srcMemoryStorage)
 Copies data from a MemoryStorage object in a different memory space. This provides a seamless interface to copy back and forth between memory spaces, including between the same memory spaces.
 
template<dftfe::utils::MemorySpace memorySpaceSrc>
void copyFrom (const MemoryStorage< ValueType, memorySpaceSrc > &srcMemoryStorage, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset)
 Copies data from a MemoryStorage object in a different memory space. This provides a seamless interface to copy back and forth between memory spaces, including between the same memory spaces. This is a more granular version of the above copyFrom function as it provides transfer from a specific portion of the source MemoryStorage to a specific portion of the destination MemoryStorage.
 
template<dftfe::utils::MemorySpace memorySpaceDst>
void copyTo (ValueType *dst) const
 Copies the data to a memory pointed by a raw pointer This provides a seamless interface to copy back and forth between memory spaces, including between the same memory spaces.
 
template<dftfe::utils::MemorySpace memorySpaceDst>
void copyTo (ValueType *dst, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset) const
 Copies the data to a memory pointer by a raw pointer. This provides a seamless interface to copy back and forth between memory spaces , including between the same memory spaces. This is a more granular version of the above copyTo function as it provides transfer from a specific portion of the source MemoryStorage to a specific portion of the destination pointer.
 
template<dftfe::utils::MemorySpace memorySpaceSrc>
void copyFrom (const ValueType *src)
 Copies data from a memory pointed by a raw pointer into the MemoryStorage object. This provides a seamless interface to copy back and forth between memory spaces, including between the same memory spaces.
 
template<dftfe::utils::MemorySpace memorySpaceSrc>
void copyFrom (const ValueType *src, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset)
 Copies data from a memory pointer by a raw pointer into the MemoryStorage object. This provides a seamless interface to copy back and forth between memory spaces, including between the same memory spaces. This is a more granular version of the above copyFrom function as it provides transfer from a specific portion of the source memory to a specific portion of the destination MemoryStorage.
 
void copyTo (std::vector< ValueType > &dst) const
 Copies the data to a C++ STL vector, which always resides in the CPU. This provides a seamless interface to copy from any memory space to a C++ STL vector, including the case where source memory space is HOST (i.e., it resides on the CPU)
 
void copyTo (std::vector< ValueType > &dst, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset) const
 Copies the data to a C++ STL vector, which always resides in the CPU. This provides a seamless interface to copy from any memory space to a C++ STL vector, including the case where source memory space is HOST (i.e., it resides on the CPU). This is a more granular version of the above copyToSTL function as it provides transfer from a specific portion of the MemoryStorage to a specific portion of the destination STL vector.
 
void copyFrom (const std::vector< ValueType > &src)
 Copies data from a C++ STL vector to the MemoryStorage object, which always resides on a CPU. This provides a seamless interface to copy from any memory space, including the case where the same memory spaces is HOST(i.e., the MemoryStorage is on CPU).
 
void copyFrom (const std::vector< ValueType > &src, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset)
 Copies data from a C++ STL vector to the MemoryStorage object, which always resides on a CPU. This provides a seamless interface to copy from any memory space, including the case where the same memory spaces is HOST(i.e., the MemoryStorage is on CPU). This is a more granular version of the above copyFromSTL function as it provides transfer from a specific portion of the source STL vector to to a specific portion of the destination MemoryStorage.
 
+ + + + + +

+Private Attributes

ValueTyped_data = nullptr
 
std::size_t d_size = 0
 
+

Member Typedef Documentation

+ +

◆ const_iterator

+ +
+
+ +
+
+ +

◆ const_reference

+ +
+
+ +
+
+ +

◆ iterator

+ +
+
+ +
+
+ +

◆ pointer

+ + + +

◆ reference

+ +
+
+ +
+
+ +

◆ value_type

+ +
+
+ +

A class template to provide an interface that can act similar to STL vectors but with different MemorySpace— HOST (cpu) , DEVICE (gpu), etc,.

+
Template Parameters
+ + + +
ValueTypeThe underlying value type for the MemoryStorage (e.g., int, double, complex<double>, etc.)
memorySpaceThe memory space in which the MemoryStorage needs to reside
+
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ MemoryStorage() [1/4]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
dftfe::utils::MemoryStorage< ValueType, memorySpace >::MemoryStorage ()
+
+default
+
+ +
+
+ +

◆ MemoryStorage() [2/4]

+ +
+
+ +

Copy constructor for a MemoryStorage.

+
Parameters
+ + +
[in]uMemoryStorage object to copy from
+
+
+ +
+
+ +

◆ MemoryStorage() [3/4]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
dftfe::utils::MemoryStorage< ValueType, memorySpace >::MemoryStorage (MemoryStorage< ValueType, memorySpace > && u)
+
+noexcept
+
+ +

Move constructor for a Vector.

+
Parameters
+ + +
[in]uVector object to move from
+
+
+ +
+
+ +

◆ MemoryStorage() [4/4]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + + + + + +
dftfe::utils::MemoryStorage< ValueType, memorySpace >::MemoryStorage (std::size_t size,
ValueType initVal = 0 )
+
+explicit
+
+ +

Constructor for Vector with size and initial value arguments.

+
Parameters
+ + + +
[in]sizesize of the Vector
[in]initValinitial value of elements of the Vector
+
+
+ +
+
+ +

◆ ~MemoryStorage()

+ +
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ begin() [1/2]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
iterator dftfe::utils::MemoryStorage< ValueType, memorySpace >::begin ()
+
+ +

Return iterator pointing to the beginning of point data.

+
Returns
Iterator pointing to the beginning of Vector.
+ +
+
+ +

◆ begin() [2/2]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const_iterator dftfe::utils::MemoryStorage< ValueType, memorySpace >::begin () const
+
+ +

Return iterator pointing to the beginning of Vector data.

+
Returns
Constant iterator pointing to the beginning of Vector.
+ +
+
+ +

◆ clear()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::utils::MemoryStorage< ValueType, memorySpace >::clear ()
+
+ +

clear and set to d_data to nullptr

+ +
+
+ +

◆ copyFrom() [1/6]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+
+template<dftfe::utils::MemorySpace memorySpaceSrc>
+ + + + + + + +
void dftfe::utils::MemoryStorage< ValueType, memorySpace >::copyFrom (const MemoryStorage< ValueType, memorySpaceSrc > & srcMemoryStorage)
+
+ +

Copies data from a MemoryStorage object in a different memory space. This provides a seamless interface to copy back and forth between memory spaces, including between the same memory spaces.

+
Note
The MemoryStorage must be pre-allocated appropriately
+
Template Parameters
+ + +
memorySpaceSrcmemory space of the source MemoryStorage from which to copy
+
+
+
Parameters
+ + +
[in]srcMemoryStoragereference to the source MemoryStorage
+
+
+
Exceptions
+ + +
utils::LengthErrorexception if the size of underlying MemoryStorage is less than size of srcMemoryStorage
+
+
+ +
+
+ +

◆ copyFrom() [2/6]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+
+template<dftfe::utils::MemorySpace memorySpaceSrc>
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::utils::MemoryStorage< ValueType, memorySpace >::copyFrom (const MemoryStorage< ValueType, memorySpaceSrc > & srcMemoryStorage,
const std::size_t N,
const std::size_t srcOffset,
const std::size_t dstOffset )
+
+ +

Copies data from a MemoryStorage object in a different memory space. This provides a seamless interface to copy back and forth between memory spaces, including between the same memory spaces. This is a more granular version of the above copyFrom function as it provides transfer from a specific portion of the source MemoryStorage to a specific portion of the destination MemoryStorage.

+
Note
The MemoryStorage must be pre-allocated appropriately
+
Template Parameters
+ + +
memorySpaceSrcmemory space of the source MemoryStorage from which to copy
+
+
+
Parameters
+ + + + + +
[in]srcMemoryStoragereference to the source MemoryStorage
[in]Nnumber of entries of the source MemoryStorage that needs to be copied to the destination MemoryStorage
[in]srcOffsetoffset relative to the start of the source MemoryStorage from which we need to copy data
[in]dstOffsetoffset relative to the start of the destination MemoryStorage to which we need to copy data
+
+
+
Exceptions
+ + + +
utils::LengthErrorexception if the size of srcMemoryStorage is less than N + srcOffset
utils::LengthErrorexception if the size of underlying MemoryStorage is less than N + dstOffset
+
+
+ +
+
+ +

◆ copyFrom() [3/6]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::utils::MemoryStorage< ValueType, memorySpace >::copyFrom (const std::vector< ValueType > & src)
+
+ +

Copies data from a C++ STL vector to the MemoryStorage object, which always resides on a CPU. This provides a seamless interface to copy from any memory space, including the case where the same memory spaces is HOST(i.e., the MemoryStorage is on CPU).

+
Parameters
+ + +
[in]srcconst reference to the source C++ STL vector from which the data needs to be copied.
+
+
+
Exceptions
+ + +
utils::LengthErrorexception if the size of the MemoryStorage is less than the size of the src
+
+
+ +
+
+ +

◆ copyFrom() [4/6]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::utils::MemoryStorage< ValueType, memorySpace >::copyFrom (const std::vector< ValueType > & src,
const std::size_t N,
const std::size_t srcOffset,
const std::size_t dstOffset )
+
+ +

Copies data from a C++ STL vector to the MemoryStorage object, which always resides on a CPU. This provides a seamless interface to copy from any memory space, including the case where the same memory spaces is HOST(i.e., the MemoryStorage is on CPU). This is a more granular version of the above copyFromSTL function as it provides transfer from a specific portion of the source STL vector to to a specific portion of the destination MemoryStorage.

+
Parameters
+ + + + + +
[in]srcconst reference to the source C++ STL vector from which the data needs to be copied.
[in]Nnumber of entries of the source pointer that needs to be copied to the destination MemoryStorage
[in]srcOffsetoffset relative to the start of the source STL vector from which we need to copy data
[in]dstOffsetoffset relative to the start of the destination MemoryStorage to which we need to copy data
+
+
+
Exceptions
+ + + +
utils::LengthErrorexception if the size of src is less than N + srcOffset
utils::LengthErrorexception if the size of the MemoryStorage is less thant N + dstOffset
+
+
+ +
+
+ +

◆ copyFrom() [5/6]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+
+template<dftfe::utils::MemorySpace memorySpaceSrc>
+ + + + + + + +
void dftfe::utils::MemoryStorage< ValueType, memorySpace >::copyFrom (const ValueType * src)
+
+ +

Copies data from a memory pointed by a raw pointer into the MemoryStorage object. This provides a seamless interface to copy back and forth between memory spaces, including between the same memory spaces.

+
Note
The src pointer must point to a memory chunk that is at least the size of the MemoryStorage
+
Template Parameters
+ + +
memorySpaceSrcmemory space of the source pointer from which to copy
+
+
+
Parameters
+ + +
[in]srcpointer to the source memory
+
+
+ +
+
+ +

◆ copyFrom() [6/6]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+
+template<dftfe::utils::MemorySpace memorySpaceSrc>
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::utils::MemoryStorage< ValueType, memorySpace >::copyFrom (const ValueType * src,
const std::size_t N,
const std::size_t srcOffset,
const std::size_t dstOffset )
+
+ +

Copies data from a memory pointer by a raw pointer into the MemoryStorage object. This provides a seamless interface to copy back and forth between memory spaces, including between the same memory spaces. This is a more granular version of the above copyFrom function as it provides transfer from a specific portion of the source memory to a specific portion of the destination MemoryStorage.

+
Note
The src pointer must point to a memory chunk that is at least the size of N + srcOffset
+
Template Parameters
+ + +
memorySpaceSrcmemory space of the source pointer from which to copy
+
+
+
Parameters
+ + + + + +
[in]srcpointer to the source memory
[in]Nnumber of entries of the source pointer that needs to be copied to the destination MemoryStorage
[in]srcOffsetoffset relative to the start of the source pointer from which we need to copy data
[in]dstOffsetoffset relative to the start of the destination MemoryStorage to which we need to copy data
+
+
+
Exceptions
+ + +
utils::LengthErrorexception if the size of the MemoryStorage is less than N + dstOffset
+
+
+ +
+
+ +

◆ copyTo() [1/6]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+
+template<dftfe::utils::MemorySpace memorySpaceDst>
+ + + + + + + +
void dftfe::utils::MemoryStorage< ValueType, memorySpace >::copyTo (MemoryStorage< ValueType, memorySpaceDst > & dstMemoryStorage) const
+
+ +

Copies the data to a MemoryStorage object in a different memory space. This provides a seamless interface to copy back and forth between memory spaces , including between the same memory spaces.

+
Note
The destination MemoryStorage must be pre-allocated appropriately
+
Template Parameters
+ + +
memorySpaceDstmemory space of the destination MemoryStorage
+
+
+
Parameters
+ + + +
[in]dstMemoryStoragereference to the destination MemoryStorage. It must be pre-allocated appropriately
[out]dstMemoryStoragereference to the destination MemoryStorage with the data copied into it
+
+
+
Exceptions
+ + +
utils::LengthErrorexception if the size of dstMemoryStorage is less than underlying MemoryStorage
+
+
+ +
+
+ +

◆ copyTo() [2/6]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+
+template<dftfe::utils::MemorySpace memorySpaceDst>
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::utils::MemoryStorage< ValueType, memorySpace >::copyTo (MemoryStorage< ValueType, memorySpaceDst > & dstMemoryStorage,
const std::size_t N,
const std::size_t srcOffset,
const std::size_t dstOffset ) const
+
+ +

Copies the data to a MemoryStorage object in a different memory space. This provides a seamless interface to copy back and forth between memory spaces , including between the same memory spaces. This is a more granular version of the above copyTo function as it provides transfer from a specific portion of the source MemoryStorage to a specific portion of the destination MemoryStorage.

+
Note
The destination MemoryStorage must be pre-allocated appropriately
+
Template Parameters
+ + +
memorySpaceDstmemory space of the destination MemoryStorage
+
+
+
Parameters
+ + + + + + +
[in]dstMemoryStoragereference to the destination MemoryStorage. It must be pre-allocated appropriately
[in]Nnumber of entries of the source MemoryStorage that needs to be copied to the destination MemoryStorage
[in]srcOffsetoffset relative to the start of the source MemoryStorage from which we need to copy data
[in]dstOffsetoffset relative to the start of the destination MemoryStorage to which we need to copy data
[out]dstMemoryStoragereference to the destination MemoryStorage with the data copied into it
+
+
+
Exceptions
+ + + +
utils::LengthErrorexception if the size of dstMemoryStorage is less than N + dstOffset
utils::LengthErrorexception if the size of underlying MemoryStorage is less than N + srcOffset
+
+
+ +
+
+ +

◆ copyTo() [3/6]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::utils::MemoryStorage< ValueType, memorySpace >::copyTo (std::vector< ValueType > & dst) const
+
+ +

Copies the data to a C++ STL vector, which always resides in the CPU. This provides a seamless interface to copy from any memory space to a C++ STL vector, including the case where source memory space is HOST (i.e., it resides on the CPU)

+
Parameters
+ + + +
[in]dstreference to the destination C++ STL vector to which the data needs to be copied.
[out]dstreference to the destination C++ STL vector with the data copied into it
+
+
+
Note
If the size of the dst vector is less than the the size of the underlying MemoryStorage, it will be resized. Thus, for performance reasons, it is recommened that the dst STL vector be pre-allocated appropriately.
+ +
+
+ +

◆ copyTo() [4/6]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::utils::MemoryStorage< ValueType, memorySpace >::copyTo (std::vector< ValueType > & dst,
const std::size_t N,
const std::size_t srcOffset,
const std::size_t dstOffset ) const
+
+ +

Copies the data to a C++ STL vector, which always resides in the CPU. This provides a seamless interface to copy from any memory space to a C++ STL vector, including the case where source memory space is HOST (i.e., it resides on the CPU). This is a more granular version of the above copyToSTL function as it provides transfer from a specific portion of the MemoryStorage to a specific portion of the destination STL vector.

+
Parameters
+ + +
[in]dstreference to the destination C++ STL vector to which the data needs to be copied.
+
+
+
Note
If the size of the dst vector is less than the the size of the underlying memory storage, it will be resized. Thus, for performance reasons it is recommened to should be allocated appropriately.
+
Parameters
+ + + + + +
[in]Nnumber of entries of the source MemoryStorage that needs to be copied to the destination pointer
[in]srcOffsetoffset relative to the start of the source MemoryStorage from which we need to copy data
[in]dstOffsetoffset relative to the start of the STL vector to which we need to copy data
[out]dstreference to the destination C++ STL vector with the data copied into it
+
+
+
Exceptions
+ + +
utils::LengthErrorexception if the size of the MemoryStorage is less than N + srcOffset
+
+
+
Note
If the size of the dst vector is less N + srcOffset, it will be resized. Thus, for performance reasons, it is recommened that the dst STL vector be allocated appropriately.
+ +
+
+ +

◆ copyTo() [5/6]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+
+template<dftfe::utils::MemorySpace memorySpaceDst>
+ + + + + + + +
void dftfe::utils::MemoryStorage< ValueType, memorySpace >::copyTo (ValueType * dst) const
+
+ +

Copies the data to a memory pointed by a raw pointer This provides a seamless interface to copy back and forth between memory spaces, including between the same memory spaces.

+
Note
The destination pointer must be pre-allocated to be at least of the size of the MemoryStorage
+
Template Parameters
+ + +
memorySpaceDstmemory space of the destination pointer
+
+
+
Parameters
+ + + +
[in]dstpointer to the destination. It must be pre-allocated appropriately
[out]dstpointer to the destination with the data copied into it
+
+
+ +
+
+ +

◆ copyTo() [6/6]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+
+template<dftfe::utils::MemorySpace memorySpaceDst>
+ + + + + + + + + + + + + + + + + + + + + +
void dftfe::utils::MemoryStorage< ValueType, memorySpace >::copyTo (ValueType * dst,
const std::size_t N,
const std::size_t srcOffset,
const std::size_t dstOffset ) const
+
+ +

Copies the data to a memory pointer by a raw pointer. This provides a seamless interface to copy back and forth between memory spaces , including between the same memory spaces. This is a more granular version of the above copyTo function as it provides transfer from a specific portion of the source MemoryStorage to a specific portion of the destination pointer.

+
Note
The destination pointer must be pre-allocated to be at least of the size N + dstOffset
+
Template Parameters
+ + +
memorySpaceDstmemory space of the destination pointer
+
+
+
Parameters
+ + + + + + +
[in]dstpointer to the destination. It must be pre-allocated appropriately
[in]Nnumber of entries of the source MemoryStorage that needs to be copied to the destination pointer
[in]srcOffsetoffset relative to the start of the source MemoryStorage from which we need to copy data
[in]dstOffsetoffset relative to the start of the destination pointer to which we need to copy data
[out]dstpointer to the destination with the data copied into it
+
+
+
Exceptions
+ + +
utils::LengthErrorexception if the size of the MemoryStorage is less than N + srcOffset
+
+
+ +
+
+ +

◆ data() [1/2]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
const ValueType * dftfe::utils::MemoryStorage< ValueType, memorySpace >::data () const
+
+noexcept
+
+ +

Return the raw pointer to the Vector without modifying the values.

+
Returns
pointer to const data
+ +
+
+ +

◆ data() [2/2]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
ValueType * dftfe::utils::MemoryStorage< ValueType, memorySpace >::data ()
+
+noexcept
+
+ +

Return the raw pointer to the Vector.

+
Returns
pointer to data
+ +
+
+ +

◆ end() [1/2]

+ +
+
+ +

Return iterator pointing to the end of Vector data.

+
Returns
Iterator pointing to the end of Vector.
+ +
+
+ +

◆ end() [2/2]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const_iterator dftfe::utils::MemoryStorage< ValueType, memorySpace >::end () const
+
+ +

Return iterator pointing to the end of Vector data.

+
Returns
Constant iterator pointing to the end of Vector.
+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+ +

Copy assignment operator.

+
Parameters
+ + +
[in]rhsthe rhs Vector from which to copy
+
+
+
Returns
reference to the lhs Vector
+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
MemoryStorage & dftfe::utils::MemoryStorage< ValueType, memorySpace >::operator= (MemoryStorage< ValueType, memorySpace > && rhs)
+
+noexcept
+
+ +

Move assignment constructor.

+
Parameters
+ + +
[in]rhsthe rhs Vector from which to move
+
+
+
Returns
reference to the lhs Vector
+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
reference dftfe::utils::MemoryStorage< ValueType, memorySpace >::operator[] (std::size_t i)
+
+ +

Operator to get a reference to a element of the Vector.

+
Parameters
+ + +
[in]iis the index to the element of the Vector
+
+
+
Returns
reference to the element of the Vector
+
Exceptions
+ + +
exceptionif i >= size of the Vector
+
+
+ +
+
+ +

◆ operator[]() [2/2]

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const_reference dftfe::utils::MemoryStorage< ValueType, memorySpace >::operator[] (std::size_t i) const
+
+ +

Operator to get a const reference to a element of the Vector.

+
Parameters
+ + +
[in]iis the index to the element of the Vector
+
+
+
Returns
const reference to the element of the Vector
+
Exceptions
+ + +
exceptionif i >= size of the Vector
+
+
+ +
+
+ +

◆ resize()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + +
void dftfe::utils::MemoryStorage< ValueType, memorySpace >::resize (std::size_t size,
ValueType initVal = ValueType() )
+
+ +

Deallocates and then resizes Vector with new size and initial value arguments.

+
Parameters
+ + + +
[in]sizesize of the Vector
[in]initValinitial value of elements of the Vector
+
+
+ +
+
+ +

◆ setValue()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
void dftfe::utils::MemoryStorage< ValueType, memorySpace >::setValue (const ValueType val)
+
+ +

Set all the entries to a given value.

+
Parameters
+ + +
[in]valThe value to which the entries are to be set
+
+
+ +
+
+ +

◆ size()

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
std::size_t dftfe::utils::MemoryStorage< ValueType, memorySpace >::size () const
+
+ +

Returns the dimension of the Vector.

+
Returns
size of the Vector
+ +
+
+ +

◆ swap()

+ +
+
+ +
+
+

Member Data Documentation

+ +

◆ d_data

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
ValueType* dftfe::utils::MemoryStorage< ValueType, memorySpace >::d_data = nullptr
+
+private
+
+ +
+
+ +

◆ d_size

+ +
+
+
+template<typename ValueType , dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::size_t dftfe::utils::MemoryStorage< ValueType, memorySpace >::d_size = 0
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1utils_1_1_memory_transfer-members.html b/classdftfe_1_1utils_1_1_memory_transfer-members.html new file mode 100644 index 000000000..31c04f95e --- /dev/null +++ b/classdftfe_1_1utils_1_1_memory_transfer-members.html @@ -0,0 +1,92 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::utils::MemoryTransfer< memorySpaceDst, memorySpaceSrc > Member List
+
+
+ +

This is the complete list of members for dftfe::utils::MemoryTransfer< memorySpaceDst, memorySpaceSrc >, including all inherited members.

+ + +
copy(std::size_t size, ValueType *dst, const ValueType *src)dftfe::utils::MemoryTransfer< memorySpaceDst, memorySpaceSrc >static
+ + + + diff --git a/classdftfe_1_1utils_1_1_memory_transfer.html b/classdftfe_1_1utils_1_1_memory_transfer.html new file mode 100644 index 000000000..c7bb0f443 --- /dev/null +++ b/classdftfe_1_1utils_1_1_memory_transfer.html @@ -0,0 +1,153 @@ + + + + + + + +DFT-FE: dftfe::utils::MemoryTransfer< memorySpaceDst, memorySpaceSrc > Class Template Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::utils::MemoryTransfer< memorySpaceDst, memorySpaceSrc > Class Template Reference
+
+
+ +

#include <MemoryTransfer.h>

+ + + + + + +

+Static Public Member Functions

template<typename ValueType >
static void copy (std::size_t size, ValueType *dst, const ValueType *src)
 Copy array from the memory space of source to the memory space of destination.
 
+

Member Function Documentation

+ +

◆ copy()

+ +
+
+
+template<MemorySpace memorySpaceDst, MemorySpace memorySpaceSrc>
+
+template<typename ValueType >
+ + + + + +
+ + + + + + + + + + + + + + + + +
static void dftfe::utils::MemoryTransfer< memorySpaceDst, memorySpaceSrc >::copy (std::size_t size,
ValueType * dst,
const ValueType * src )
+
+static
+
+ +

Copy array from the memory space of source to the memory space of destination.

+
Parameters
+ + + + +
sizethe length of the array
dstpointer to the destination
srcpointer to the source
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1utils_1_1_memory_transfer_3_01_memory_space_1_1_h_o_s_t_00_01_memory_space_1_1_h_o_s_t_01_4-members.html b/classdftfe_1_1utils_1_1_memory_transfer_3_01_memory_space_1_1_h_o_s_t_00_01_memory_space_1_1_h_o_s_t_01_4-members.html new file mode 100644 index 000000000..24f1a5c61 --- /dev/null +++ b/classdftfe_1_1utils_1_1_memory_transfer_3_01_memory_space_1_1_h_o_s_t_00_01_memory_space_1_1_h_o_s_t_01_4-members.html @@ -0,0 +1,92 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::utils::MemoryTransfer< MemorySpace::HOST, MemorySpace::HOST > Member List
+
+
+ +

This is the complete list of members for dftfe::utils::MemoryTransfer< MemorySpace::HOST, MemorySpace::HOST >, including all inherited members.

+ + +
copy(std::size_t size, ValueType *dst, const ValueType *src)dftfe::utils::MemoryTransfer< MemorySpace::HOST, MemorySpace::HOST >static
+ + + + diff --git a/classdftfe_1_1utils_1_1_memory_transfer_3_01_memory_space_1_1_h_o_s_t_00_01_memory_space_1_1_h_o_s_t_01_4.html b/classdftfe_1_1utils_1_1_memory_transfer_3_01_memory_space_1_1_h_o_s_t_00_01_memory_space_1_1_h_o_s_t_01_4.html new file mode 100644 index 000000000..5ffa09cf0 --- /dev/null +++ b/classdftfe_1_1utils_1_1_memory_transfer_3_01_memory_space_1_1_h_o_s_t_00_01_memory_space_1_1_h_o_s_t_01_4.html @@ -0,0 +1,140 @@ + + + + + + + +DFT-FE: dftfe::utils::MemoryTransfer< MemorySpace::HOST, MemorySpace::HOST > Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::utils::MemoryTransfer< MemorySpace::HOST, MemorySpace::HOST > Class Reference
+
+
+ +

#include <MemoryTransfer.h>

+ + + + + +

+Static Public Member Functions

template<typename ValueType >
static void copy (std::size_t size, ValueType *dst, const ValueType *src)
 
+

Member Function Documentation

+ +

◆ copy()

+ +
+
+
+template<typename ValueType >
+ + + + + +
+ + + + + + + + + + + + + + + + +
static void dftfe::utils::MemoryTransfer< MemorySpace::HOST, MemorySpace::HOST >::copy (std::size_t size,
ValueType * dst,
const ValueType * src )
+
+static
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1utils_1_1_optimized_index_set-members.html b/classdftfe_1_1utils_1_1_optimized_index_set-members.html new file mode 100644 index 000000000..3af854ff2 --- /dev/null +++ b/classdftfe_1_1utils_1_1_optimized_index_set-members.html @@ -0,0 +1,99 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::utils::OptimizedIndexSet< T > Member List
+
+
+ +

This is the complete list of members for dftfe::utils::OptimizedIndexSet< T >, including all inherited members.

+ + + + + + + + + +
d_contiguousRangesdftfe::utils::OptimizedIndexSet< T >private
d_numContiguousRangesdftfe::utils::OptimizedIndexSet< T >private
d_numEntriesBeforedftfe::utils::OptimizedIndexSet< T >private
getPosition(const T &index, size_type &pos, bool &found) constdftfe::utils::OptimizedIndexSet< T >
getPosition(const OptimizedIndexSet< T > &rhs) constdftfe::utils::OptimizedIndexSet< T >
operator==(const OptimizedIndexSet< T > &rhs) constdftfe::utils::OptimizedIndexSet< T >private
OptimizedIndexSet(const std::set< T > &inputSet=std::set< T >())dftfe::utils::OptimizedIndexSet< T >
~OptimizedIndexSet()=defaultdftfe::utils::OptimizedIndexSet< T >
+ + + + diff --git a/classdftfe_1_1utils_1_1_optimized_index_set.html b/classdftfe_1_1utils_1_1_optimized_index_set.html new file mode 100644 index 000000000..b8bfcca5e --- /dev/null +++ b/classdftfe_1_1utils_1_1_optimized_index_set.html @@ -0,0 +1,332 @@ + + + + + + + +DFT-FE: dftfe::utils::OptimizedIndexSet< T > Class Template Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::utils::OptimizedIndexSet< T > Class Template Reference
+
+
+ +

#include <OptimizedIndexSet.h>

+ + + + + + + + + + + +

+Public Member Functions

 OptimizedIndexSet (const std::set< T > &inputSet=std::set< T >())
 Constructor.
 
 ~OptimizedIndexSet ()=default
 
void getPosition (const T &index, size_type &pos, bool &found) const
 
bool getPosition (const OptimizedIndexSet< T > &rhs) const
 
+ + + +

+Private Member Functions

bool operator== (const OptimizedIndexSet< T > &rhs) const
 
+ + + + + + + + +

+Private Attributes

size_type d_numContiguousRanges
 Store the number of contiguous ranges in the input set of indices.
 
std::vector< T > d_contiguousRanges
 
std::vector< size_typed_numEntriesBefore
 
+

Constructor & Destructor Documentation

+ +

◆ OptimizedIndexSet()

+ +
+
+
+template<typename T >
+ + + + + + + +
dftfe::utils::OptimizedIndexSet< T >::OptimizedIndexSet (const std::set< T > & inputSet = std::set< T >())
+
+ +

Constructor.

+
Parameters
+ + +
[in]inputSetA set of unsigned int or unsigned long int for which an OptimizedIndexSet is to be created
+
+
+ +
+
+ +

◆ ~OptimizedIndexSet()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
dftfe::utils::OptimizedIndexSet< T >::~OptimizedIndexSet ()
+
+default
+
+ +
+
+

Member Function Documentation

+ +

◆ getPosition() [1/2]

+ +
+
+
+template<typename T >
+ + + + + + + +
bool dftfe::utils::OptimizedIndexSet< T >::getPosition (const OptimizedIndexSet< T > & rhs) const
+
+ +
+
+ +

◆ getPosition() [2/2]

+ +
+
+
+template<typename T >
+ + + + + + + + + + + + + + + + +
void dftfe::utils::OptimizedIndexSet< T >::getPosition (const T & index,
size_type & pos,
bool & found ) const
+
+ +
+
+ +

◆ operator==()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
bool dftfe::utils::OptimizedIndexSet< T >::operator== (const OptimizedIndexSet< T > & rhs) const
+
+private
+
+ +
+
+

Member Data Documentation

+ +

◆ d_contiguousRanges

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + +
std::vector<T> dftfe::utils::OptimizedIndexSet< T >::d_contiguousRanges
+
+private
+
+ +
+
+ +

◆ d_numContiguousRanges

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + +
size_type dftfe::utils::OptimizedIndexSet< T >::d_numContiguousRanges
+
+private
+
+ +

Store the number of contiguous ranges in the input set of indices.

+ +
+
+ +

◆ d_numEntriesBefore

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + +
std::vector<size_type> dftfe::utils::OptimizedIndexSet< T >::d_numEntriesBefore
+
+private
+
+

Vector of size d_numContiguousRanges which stores the accumulated number of elements in d_set prior to the i-th contiguous range

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p-members.html b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p-members.html new file mode 100644 index 000000000..b1acdf28c --- /dev/null +++ b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p-members.html @@ -0,0 +1,117 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace > Member List
+
+
+ +

This is the complete list of members for dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
accumulateAddLocallyOwned(MemoryStorage< ValueType, memorySpace > &dataArray, const size_type communicationChannel=0)dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >
accumulateAddLocallyOwnedBegin(MemoryStorage< ValueType, memorySpace > &dataArray, const size_type communicationChannel=0)dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >
accumulateAddLocallyOwnedEnd(MemoryStorage< ValueType, memorySpace > &dataArray)dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >
d_blockSizedftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >private
d_commPrecisiondftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >private
d_commProtocoldftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >private
d_ghostDataCopySinglePrecdftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >private
d_ghostSizedftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >private
d_locallyOwnedSizedftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >private
d_mpiCommunicatordftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >private
d_mpiPatternP2Pdftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >private
d_requestsAccumulateAddLocallyOwneddftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >private
d_requestsUpdateGhostValuesdftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >private
d_sendRecvBufferdftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >private
d_sendRecvBufferSinglePrecdftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >private
d_tempDoubleImagArrayForAtomicsdftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >private
d_tempDoubleRealArrayForAtomicsdftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >private
d_tempFloatImagArrayForAtomicsdftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >private
d_tempFloatRealArrayForAtomicsdftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >private
getBlockSize() constdftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >
getMPIPatternP2P() constdftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >
MPICommunicatorP2P(std::shared_ptr< const MPIPatternP2P< memorySpace > > mpiPatternP2P, const size_type blockSize)dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >
setCommunicationPrecision(communicationPrecision precision)dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >
updateGhostValues(MemoryStorage< ValueType, memorySpace > &dataArray, const size_type communicationChannel=0)dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >
updateGhostValuesBegin(MemoryStorage< ValueType, memorySpace > &dataArray, const size_type communicationChannel=0)dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >
updateGhostValuesEnd(MemoryStorage< ValueType, memorySpace > &dataArray)dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >
+ + + + diff --git a/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html new file mode 100644 index 000000000..83dc4c380 --- /dev/null +++ b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html @@ -0,0 +1,753 @@ + + + + + + + +DFT-FE: dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace > Class Template Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace > Class Template Reference
+
+
+ +

#include <MPICommunicatorP2P.h>

+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 MPICommunicatorP2P (std::shared_ptr< const MPIPatternP2P< memorySpace > > mpiPatternP2P, const size_type blockSize)
 
void updateGhostValues (MemoryStorage< ValueType, memorySpace > &dataArray, const size_type communicationChannel=0)
 
void accumulateAddLocallyOwned (MemoryStorage< ValueType, memorySpace > &dataArray, const size_type communicationChannel=0)
 
void updateGhostValuesBegin (MemoryStorage< ValueType, memorySpace > &dataArray, const size_type communicationChannel=0)
 
void updateGhostValuesEnd (MemoryStorage< ValueType, memorySpace > &dataArray)
 
void accumulateAddLocallyOwnedBegin (MemoryStorage< ValueType, memorySpace > &dataArray, const size_type communicationChannel=0)
 
void accumulateAddLocallyOwnedEnd (MemoryStorage< ValueType, memorySpace > &dataArray)
 
std::shared_ptr< const MPIPatternP2P< memorySpace > > getMPIPatternP2P () const
 
int getBlockSize () const
 
void setCommunicationPrecision (communicationPrecision precision)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::shared_ptr< const MPIPatternP2P< memorySpace > > d_mpiPatternP2P
 
size_type d_blockSize
 
size_type d_locallyOwnedSize
 
size_type d_ghostSize
 
MemoryStorage< ValueType, memorySpaced_sendRecvBuffer
 
MemoryStorage< double, memorySpaced_tempDoubleRealArrayForAtomics
 
MemoryStorage< double, memorySpaced_tempDoubleImagArrayForAtomics
 
MemoryStorage< float, memorySpaced_tempFloatRealArrayForAtomics
 
MemoryStorage< float, memorySpaced_tempFloatImagArrayForAtomics
 
MemoryStorage< typename singlePrecType< ValueType >::type, memorySpaced_sendRecvBufferSinglePrec
 
MemoryStorage< typename singlePrecType< ValueType >::type, memorySpaced_ghostDataCopySinglePrec
 
std::vector< MPI_Requestd_requestsUpdateGhostValues
 
std::vector< MPI_Requestd_requestsAccumulateAddLocallyOwned
 
MPI_Comm d_mpiCommunicator
 
communicationProtocol d_commProtocol
 
communicationPrecision d_commPrecision
 
+

Constructor & Destructor Documentation

+ +

◆ MPICommunicatorP2P()

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + + + + + + + +
dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::MPICommunicatorP2P (std::shared_ptr< const MPIPatternP2P< memorySpace > > mpiPatternP2P,
const size_type blockSize )
+
+ +
+
+

Member Function Documentation

+ +

◆ accumulateAddLocallyOwned()

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + + + + + + + +
void dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::accumulateAddLocallyOwned (MemoryStorage< ValueType, memorySpace > & dataArray,
const size_type communicationChannel = 0 )
+
+ +
+
+ +

◆ accumulateAddLocallyOwnedBegin()

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + + + + + + + +
void dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::accumulateAddLocallyOwnedBegin (MemoryStorage< ValueType, memorySpace > & dataArray,
const size_type communicationChannel = 0 )
+
+ +
+
+ +

◆ accumulateAddLocallyOwnedEnd()

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + + + +
void dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::accumulateAddLocallyOwnedEnd (MemoryStorage< ValueType, memorySpace > & dataArray)
+
+ +
+
+ +

◆ getBlockSize()

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + + + +
int dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::getBlockSize () const
+
+ +
+
+ +

◆ getMPIPatternP2P()

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + + + +
std::shared_ptr< const MPIPatternP2P< memorySpace > > dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::getMPIPatternP2P () const
+
+ +
+
+ +

◆ setCommunicationPrecision()

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + + + +
void dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::setCommunicationPrecision (communicationPrecision precision)
+
+ +
+
+ +

◆ updateGhostValues()

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + + + + + + + +
void dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::updateGhostValues (MemoryStorage< ValueType, memorySpace > & dataArray,
const size_type communicationChannel = 0 )
+
+ +
+
+ +

◆ updateGhostValuesBegin()

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + + + + + + + +
void dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::updateGhostValuesBegin (MemoryStorage< ValueType, memorySpace > & dataArray,
const size_type communicationChannel = 0 )
+
+ +
+
+ +

◆ updateGhostValuesEnd()

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + + + +
void dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::updateGhostValuesEnd (MemoryStorage< ValueType, memorySpace > & dataArray)
+
+ +
+
+

Member Data Documentation

+ +

◆ d_blockSize

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + +
+ + + + +
size_type dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::d_blockSize
+
+private
+
+ +
+
+ +

◆ d_commPrecision

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + +
+ + + + +
communicationPrecision dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::d_commPrecision
+
+private
+
+ +
+
+ +

◆ d_commProtocol

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + +
+ + + + +
communicationProtocol dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::d_commProtocol
+
+private
+
+ +
+
+ +

◆ d_ghostDataCopySinglePrec

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + +
+ + + + +
MemoryStorage<typename singlePrecType<ValueType>::type, memorySpace> dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::d_ghostDataCopySinglePrec
+
+private
+
+ +
+
+ +

◆ d_ghostSize

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + +
+ + + + +
size_type dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::d_ghostSize
+
+private
+
+ +
+
+ +

◆ d_locallyOwnedSize

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + +
+ + + + +
size_type dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::d_locallyOwnedSize
+
+private
+
+ +
+
+ +

◆ d_mpiCommunicator

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + +
+ + + + +
MPI_Comm dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::d_mpiCommunicator
+
+private
+
+ +
+
+ +

◆ d_mpiPatternP2P

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::shared_ptr<const MPIPatternP2P<memorySpace> > dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::d_mpiPatternP2P
+
+private
+
+ +
+
+ +

◆ d_requestsAccumulateAddLocallyOwned

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<MPI_Request> dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::d_requestsAccumulateAddLocallyOwned
+
+private
+
+ +
+
+ +

◆ d_requestsUpdateGhostValues

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<MPI_Request> dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::d_requestsUpdateGhostValues
+
+private
+
+ +
+
+ +

◆ d_sendRecvBuffer

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + +
+ + + + +
MemoryStorage<ValueType, memorySpace> dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::d_sendRecvBuffer
+
+private
+
+ +
+
+ +

◆ d_sendRecvBufferSinglePrec

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + +
+ + + + +
MemoryStorage<typename singlePrecType<ValueType>::type, memorySpace> dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::d_sendRecvBufferSinglePrec
+
+private
+
+ +
+
+ +

◆ d_tempDoubleImagArrayForAtomics

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + +
+ + + + +
MemoryStorage<double, memorySpace> dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::d_tempDoubleImagArrayForAtomics
+
+private
+
+ +
+
+ +

◆ d_tempDoubleRealArrayForAtomics

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + +
+ + + + +
MemoryStorage<double, memorySpace> dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::d_tempDoubleRealArrayForAtomics
+
+private
+
+ +
+
+ +

◆ d_tempFloatImagArrayForAtomics

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + +
+ + + + +
MemoryStorage<float, memorySpace> dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::d_tempFloatImagArrayForAtomics
+
+private
+
+ +
+
+ +

◆ d_tempFloatRealArrayForAtomics

+ +
+
+
+template<typename ValueType , MemorySpace memorySpace>
+ + + + + +
+ + + + +
MemoryStorage<float, memorySpace> dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >::d_tempFloatRealArrayForAtomics
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p-members.html b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p-members.html new file mode 100644 index 000000000..84c900a4f --- /dev/null +++ b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p-members.html @@ -0,0 +1,139 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::utils::mpi::MPIPatternP2P< memorySpace > Member List
+
+
+ +

This is the complete list of members for dftfe::utils::mpi::MPIPatternP2P< memorySpace >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
d_allOwnedRangesdftfe::utils::mpi::MPIPatternP2P< memorySpace >private
d_flattenedLocalGhostIndicesdftfe::utils::mpi::MPIPatternP2P< memorySpace >private
d_flattenedLocalTargetIndicesdftfe::utils::mpi::MPIPatternP2P< memorySpace >private
d_ghostIndicesdftfe::utils::mpi::MPIPatternP2P< memorySpace >private
d_ghostIndicesOptimizedIndexSetdftfe::utils::mpi::MPIPatternP2P< memorySpace >private
d_ghostIndicesSetSTLdftfe::utils::mpi::MPIPatternP2P< memorySpace >private
d_ghostProcIdsdftfe::utils::mpi::MPIPatternP2P< memorySpace >private
d_localGhostIndicesRangesdftfe::utils::mpi::MPIPatternP2P< memorySpace >private
d_locallyOwnedRangedftfe::utils::mpi::MPIPatternP2P< memorySpace >private
d_mpiCommdftfe::utils::mpi::MPIPatternP2P< memorySpace >private
d_myRankdftfe::utils::mpi::MPIPatternP2P< memorySpace >private
d_nGlobalIndicesdftfe::utils::mpi::MPIPatternP2P< memorySpace >private
d_nprocsdftfe::utils::mpi::MPIPatternP2P< memorySpace >private
d_numGhostIndicesdftfe::utils::mpi::MPIPatternP2P< memorySpace >private
d_numGhostIndicesInGhostProcsdftfe::utils::mpi::MPIPatternP2P< memorySpace >private
d_numGhostProcsdftfe::utils::mpi::MPIPatternP2P< memorySpace >private
d_numLocallyOwnedIndicesdftfe::utils::mpi::MPIPatternP2P< memorySpace >private
d_numOwnedIndicesForTargetProcsdftfe::utils::mpi::MPIPatternP2P< memorySpace >private
d_numTargetProcsdftfe::utils::mpi::MPIPatternP2P< memorySpace >private
d_targetProcIdsdftfe::utils::mpi::MPIPatternP2P< memorySpace >private
getGhostIndices() constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
getGhostLocalIndices(const size_type procId) constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
getGhostLocalIndicesRanges() constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
getGhostProcIds() constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
getLocallyOwnedRange() constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
getNumGhostIndicesInProc(const size_type procId) constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
getNumGhostIndicesInProcs() constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
getNumOwnedIndicesForTargetProc(const size_type procId) constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
getNumOwnedIndicesForTargetProcs() constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
getOwnedLocalIndices(const size_type procId) constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
getOwnedLocalIndicesForTargetProcs() constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
getTargetProcIds() constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
GlobalSizeTypeVector typedefdftfe::utils::mpi::MPIPatternP2P< memorySpace >
globalToLocal(const global_size_type globalId) constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
inLocallyOwnedRange(const global_size_type globalId) constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
isCompatible(const MPIPatternP2P< memorySpace > &rhs) constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
isGhostEntry(const global_size_type globalId) constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
localGhostSize() constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
localOwnedSize() constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
localToGlobal(const size_type localId) constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
mpiCommunicator() constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
MPIPatternP2P(const std::pair< global_size_type, global_size_type > &locallyOwnedRange, const std::vector< dftfe::global_size_type > &ghostIndices, const MPI_Comm &mpiComm)dftfe::utils::mpi::MPIPatternP2P< memorySpace >
MPIPatternP2P(const size_type size)dftfe::utils::mpi::MPIPatternP2P< memorySpace >
nGlobalIndices() constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
nmpiProcesses() constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
SizeTypeVector typedefdftfe::utils::mpi::MPIPatternP2P< memorySpace >
thisProcessId() constdftfe::utils::mpi::MPIPatternP2P< memorySpace >
~MPIPatternP2P()=defaultdftfe::utils::mpi::MPIPatternP2P< memorySpace >virtual
+ + + + diff --git a/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html new file mode 100644 index 000000000..3ec964da9 --- /dev/null +++ b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html @@ -0,0 +1,1334 @@ + + + + + + + +DFT-FE: dftfe::utils::mpi::MPIPatternP2P< memorySpace > Class Template Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::utils::mpi::MPIPatternP2P< memorySpace > Class Template Reference
+
+
+ +

A class template to store the communication pattern (i.e., which entries/nodes to receive from which processor and which entries/nodes to send to which processor). + More...

+ +

#include <MPIPatternP2P.h>

+ + + + + + +

+Public Types

using SizeTypeVector = utils::MemoryStorage<size_type, memorySpace>
 
using GlobalSizeTypeVector
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~MPIPatternP2P ()=default
 
 MPIPatternP2P (const std::pair< global_size_type, global_size_type > &locallyOwnedRange, const std::vector< dftfe::global_size_type > &ghostIndices, const MPI_Comm &mpiComm)
 Constructor. This constructor is the typical way of creation of an MPI pattern.
 
 MPIPatternP2P (const size_type size)
 Constructor. This constructor is to create an MPI Pattern for a serial case. This is provided so that one can seamlessly use has to be used even for a serial case. In this case, all the indices are owned by the current processor.
 
std::pair< global_size_type, global_size_typegetLocallyOwnedRange () const
 
size_type localOwnedSize () const
 
size_type localGhostSize () const
 
bool inLocallyOwnedRange (const global_size_type globalId) const
 
bool isGhostEntry (const global_size_type globalId) const
 
size_type globalToLocal (const global_size_type globalId) const
 
global_size_type localToGlobal (const size_type localId) const
 
const std::vector< global_size_type > & getGhostIndices () const
 
const std::vector< size_type > & getGhostProcIds () const
 
const std::vector< size_type > & getNumGhostIndicesInProcs () const
 
size_type getNumGhostIndicesInProc (const size_type procId) const
 
SizeTypeVector getGhostLocalIndices (const size_type procId) const
 
const std::vector< size_type > & getGhostLocalIndicesRanges () const
 
const std::vector< size_type > & getTargetProcIds () const
 
const std::vector< size_type > & getNumOwnedIndicesForTargetProcs () const
 
size_type getNumOwnedIndicesForTargetProc (const size_type procId) const
 
const SizeTypeVectorgetOwnedLocalIndicesForTargetProcs () const
 
SizeTypeVector getOwnedLocalIndices (const size_type procId) const
 
size_type nmpiProcesses () const
 
size_type thisProcessId () const
 
global_size_type nGlobalIndices () const
 
const MPI_CommmpiCommunicator () const
 
bool isCompatible (const MPIPatternP2P< memorySpace > &rhs) const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::pair< global_size_type, global_size_typed_locallyOwnedRange
 
std::vector< global_size_typed_allOwnedRanges
 
size_type d_numLocallyOwnedIndices
 
size_type d_numGhostIndices
 
std::vector< global_size_typed_ghostIndices
 
std::set< global_size_typed_ghostIndicesSetSTL
 
OptimizedIndexSet< global_size_typed_ghostIndicesOptimizedIndexSet
 
size_type d_numGhostProcs
 
std::vector< size_typed_ghostProcIds
 
std::vector< size_typed_numGhostIndicesInGhostProcs
 
SizeTypeVector d_flattenedLocalGhostIndices
 
std::vector< size_typed_localGhostIndicesRanges
 A vector of size 2 times the number of ghost processors to store the range of local ghost indices that are owned by the ghost processors. In other words, it stores the list $L=\{a_1,b_1, a_2, b_2, \ldots, a_G, b_G\}$, where $a_i$ and $b_i$is are the start local ghost index and one-past-the-last local ghost index of the current processor that is owned by the $i$-th ghost processor (i.e., d_ghostProcIds[i]). Put it differently, $[a_i,b_i)$ form an open interval, where $a_i$ is included but $b_i$ is not included.
 
size_type d_numTargetProcs
 
std::vector< size_typed_targetProcIds
 
std::vector< size_typed_numOwnedIndicesForTargetProcs
 
SizeTypeVector d_flattenedLocalTargetIndices
 
int d_nprocs
 Number of processors in the MPI Communicator.
 
int d_myRank
 Rank of the current processor.
 
global_size_type d_nGlobalIndices
 
MPI_Comm d_mpiComm
 MPI Communicator object.
 
+

Detailed Description

+
template<dftfe::utils::MemorySpace memorySpace>
+class dftfe::utils::mpi::MPIPatternP2P< memorySpace >

A class template to store the communication pattern (i.e., which entries/nodes to receive from which processor and which entries/nodes to send to which processor).

+
    +
  • Assumptions
      +
    1. It assumes that a a sparse communication pattern. That is, a given processor only communicates with a few processors. This object should be avoided if the communication pattern is dense (e.g., all-to-all communication)
    2. +
    3. It assumes that the each processor owns a set of continuous integers (indices). Further, the ownership is exclusive (i.e., no index is owned by more than one processor). In other words, the different sets of owning indices across all the processors are disjoint.
    4. +
    +
  • +
+
Template Parameters
+ + +
memorySpaceDefines the MemorySpace (i.e., HOST or DEVICE) in which the various data members of this object must reside.
+
+
+

Member Typedef Documentation

+ +

◆ GlobalSizeTypeVector

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + +
using dftfe::utils::mpi::MPIPatternP2P< memorySpace >::GlobalSizeTypeVector
+
+Initial value:
+
utils::MemoryStorage<global_size_type, memorySpace>
+
+
+
+ +

◆ SizeTypeVector

+ +
+
+

typedefs

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~MPIPatternP2P()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + + + + +
virtual dftfe::utils::mpi::MPIPatternP2P< memorySpace >::~MPIPatternP2P ()
+
+virtualdefault
+
+ +
+
+ +

◆ MPIPatternP2P() [1/2]

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + + + + + + + + + + +
dftfe::utils::mpi::MPIPatternP2P< memorySpace >::MPIPatternP2P (const std::pair< global_size_type, global_size_type > & locallyOwnedRange,
const std::vector< dftfe::global_size_type > & ghostIndices,
const MPI_Comm & mpiComm )
+
+ +

Constructor. This constructor is the typical way of creation of an MPI pattern.

+
Parameters
+ + +
[in]locallyOwnedRangeA pair of non-negtive integers $(a,b)$ which defines a range of indices (continuous) that are owned by the current processor.
+
+
+
Note
It is an open interval where $a$ is included, but $b$ is not included.
+
Parameters
+ + +
[in]ghostIndicesAn ordered set of non-negtive indices specifyin the ghost indices for the current processor.
+
+
+
Note
the vector must be ordered (i.e., ordered in increasing order and non-repeating)
+
Parameters
+ + +
[in]mpiCommThe MPI communicator object which defines the set of processors for which the MPI pattern needs to be created.
+
+
+
Exceptions
+ + +
Throwsexception if mpiComm is in an invalid state, if the locallyOwnedRange across all the processors are not disjoint, if ghostIndices are not ordered (if it is not strictly increasing), or if some sanity checks with respect to MPI sends and receives fail.
+
+
+
Note
Care is taken to create a dummy MPIPatternP2P while not linking to an MPI library. This allows the user code to seamlessly link and delink an MPI library.
+ +
+
+ +

◆ MPIPatternP2P() [2/2]

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
dftfe::utils::mpi::MPIPatternP2P< memorySpace >::MPIPatternP2P (const size_type size)
+
+ +

Constructor. This constructor is to create an MPI Pattern for a serial case. This is provided so that one can seamlessly use has to be used even for a serial case. In this case, all the indices are owned by the current processor.

+
Parameters
+ + +
[in]sizeTotal number of indices.
+
+
+
Note
This is an explicitly serial construction (i.e., it uses MPI_COMM_SELF), which is different from the dummy MPIPatternP2P created while not linking to an MPI library. For examples, within a parallel run, one might have the need to create a serial MPIPatternP2P. A typical case is creation of a serial vector as a special case of distributed vector.
+
+Similar to the previous constructor, care is taken to create a dummy MPIPatternP2P while not linking to an MPI library.
+ +
+
+

Member Function Documentation

+ +

◆ getGhostIndices()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const std::vector< global_size_type > & dftfe::utils::mpi::MPIPatternP2P< memorySpace >::getGhostIndices () const
+
+ +
+
+ +

◆ getGhostLocalIndices()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
SizeTypeVector dftfe::utils::mpi::MPIPatternP2P< memorySpace >::getGhostLocalIndices (const size_type procId) const
+
+ +
+
+ +

◆ getGhostLocalIndicesRanges()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const std::vector< size_type > & dftfe::utils::mpi::MPIPatternP2P< memorySpace >::getGhostLocalIndicesRanges () const
+
+ +
+
+ +

◆ getGhostProcIds()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const std::vector< size_type > & dftfe::utils::mpi::MPIPatternP2P< memorySpace >::getGhostProcIds () const
+
+ +
+
+ +

◆ getLocallyOwnedRange()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
std::pair< global_size_type, global_size_type > dftfe::utils::mpi::MPIPatternP2P< memorySpace >::getLocallyOwnedRange () const
+
+ +
+
+ +

◆ getNumGhostIndicesInProc()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
size_type dftfe::utils::mpi::MPIPatternP2P< memorySpace >::getNumGhostIndicesInProc (const size_type procId) const
+
+ +
+
+ +

◆ getNumGhostIndicesInProcs()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const std::vector< size_type > & dftfe::utils::mpi::MPIPatternP2P< memorySpace >::getNumGhostIndicesInProcs () const
+
+ +
+
+ +

◆ getNumOwnedIndicesForTargetProc()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
size_type dftfe::utils::mpi::MPIPatternP2P< memorySpace >::getNumOwnedIndicesForTargetProc (const size_type procId) const
+
+ +
+
+ +

◆ getNumOwnedIndicesForTargetProcs()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const std::vector< size_type > & dftfe::utils::mpi::MPIPatternP2P< memorySpace >::getNumOwnedIndicesForTargetProcs () const
+
+ +
+
+ +

◆ getOwnedLocalIndices()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
SizeTypeVector dftfe::utils::mpi::MPIPatternP2P< memorySpace >::getOwnedLocalIndices (const size_type procId) const
+
+ +
+
+ +

◆ getOwnedLocalIndicesForTargetProcs()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const SizeTypeVector & dftfe::utils::mpi::MPIPatternP2P< memorySpace >::getOwnedLocalIndicesForTargetProcs () const
+
+ +
+
+ +

◆ getTargetProcIds()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const std::vector< size_type > & dftfe::utils::mpi::MPIPatternP2P< memorySpace >::getTargetProcIds () const
+
+ +
+
+ +

◆ globalToLocal()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
size_type dftfe::utils::mpi::MPIPatternP2P< memorySpace >::globalToLocal (const global_size_type globalId) const
+
+ +
+
+ +

◆ inLocallyOwnedRange()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
bool dftfe::utils::mpi::MPIPatternP2P< memorySpace >::inLocallyOwnedRange (const global_size_type globalId) const
+
+ +
+
+ +

◆ isCompatible()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
bool dftfe::utils::mpi::MPIPatternP2P< memorySpace >::isCompatible (const MPIPatternP2P< memorySpace > & rhs) const
+
+ +
+
+ +

◆ isGhostEntry()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
bool dftfe::utils::mpi::MPIPatternP2P< memorySpace >::isGhostEntry (const global_size_type globalId) const
+
+ +
+
+ +

◆ localGhostSize()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
size_type dftfe::utils::mpi::MPIPatternP2P< memorySpace >::localGhostSize () const
+
+ +
+
+ +

◆ localOwnedSize()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
size_type dftfe::utils::mpi::MPIPatternP2P< memorySpace >::localOwnedSize () const
+
+ +
+
+ +

◆ localToGlobal()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
global_size_type dftfe::utils::mpi::MPIPatternP2P< memorySpace >::localToGlobal (const size_type localId) const
+
+ +
+
+ +

◆ mpiCommunicator()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
const MPI_Comm & dftfe::utils::mpi::MPIPatternP2P< memorySpace >::mpiCommunicator () const
+
+ +
+
+ +

◆ nGlobalIndices()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
global_size_type dftfe::utils::mpi::MPIPatternP2P< memorySpace >::nGlobalIndices () const
+
+ +
+
+ +

◆ nmpiProcesses()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
size_type dftfe::utils::mpi::MPIPatternP2P< memorySpace >::nmpiProcesses () const
+
+ +
+
+ +

◆ thisProcessId()

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + + + +
size_type dftfe::utils::mpi::MPIPatternP2P< memorySpace >::thisProcessId () const
+
+ +
+
+

Member Data Documentation

+ +

◆ d_allOwnedRanges

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<global_size_type> dftfe::utils::mpi::MPIPatternP2P< memorySpace >::d_allOwnedRanges
+
+private
+
+

A vector of size 2 times number of processors to store the locallyOwnedRange of each processor. That is it store the list $[a_0,b_0,a_1,b_1,\ldots,a_{P-1},b_{P-1}]$, where the pair $(a_i,b_i)$ defines a range of indices (continuous) that are owned by the $i-$th processor.

+
Note
$a$ is included but $b$ is not included.
+ +
+
+ +

◆ d_flattenedLocalGhostIndices

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
SizeTypeVector dftfe::utils::mpi::MPIPatternP2P< memorySpace >::d_flattenedLocalGhostIndices
+
+private
+
+

A flattened vector of size number of ghosts containing the ghost indices ordered as per the list of ghost processor Ids in d_ghostProcIds In other words it stores a concatentaion of the lists $L_i = \{g^{(k_i)}_1,g^{(k_i)}_2,\ldots,g^{(k_i)}_{N_i}\}$, where $g$'s are the ghost indices, $k_i$ is the rank of the $i$-th ghost processor (i.e., d_ghostProcIds[i]) and $N_i$ is the number of ghost indices owned by the $i$-th ghost processor (i.e., d_numGhostIndicesInGhostProcs[i]).

+
Note
$L_i$ has to be an increasing set.
+
+We store only the ghost index local to this processor, i.e., position of the ghost index in d_ghostIndicesSetSTL or d_ghostIndices. This is done to use size_type which is unsigned int instead of global_size_type which is long unsigned it. This helps in reducing the volume of data transfered during MPI calls.
+
+In the case that the locally owned ranges across all the processors are ordered as per the processor Id, this vector is redundant and one can only work with d_ghostIndices and d_numGhostIndicesInGhostProcs. By locally owned range being ordered as per the processor Id, means that the ranges for processor $0, 1,\ldots,P-1$ are $[N_0,N_1), [N_1, N_2), [N_2, N_3), ..., [N_{P-1},N_P)$ with $N_0, N_1,\ldots, N_P$ beign non-decreasing. But in a more general case, where the locally owned ranges are not ordered as per the processor Id, this following array is useful.
+ +
+
+ +

◆ d_flattenedLocalTargetIndices

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
SizeTypeVector dftfe::utils::mpi::MPIPatternP2P< memorySpace >::d_flattenedLocalTargetIndices
+
+private
+
+

Vector of size $\sum_i$ d_numOwnedIndicesForTargetProcs[i] to store all thelocally owned indices which other processors need (i.e., which are ghost indices in other processors). It is stored as a concatentation of lists where the $i$-th list indices $L_i = \{o^{(k_i)}_1,o^{(k_i)}_2,\ldots,o^{(k_i)}_{N_i}\}$, where where $o$'s are indices target to other processors, $k_i$ is the rank of the $i$-th target processor (i.e., d_targetProcIds[i]) and N_i is the number of indices to be sent to i-th target processor (i.e., d_numOwnedIndicesForTargetProcs[i]).

+
Note
We store only the indices local to this processor, i.e., the relative position of the index in the locally owned range of this processor This is done to use size_type which is unsigned int instead of global_size_type which is long unsigned it. This helps in reducing the volume of data transfered during MPI calls.
+
+The list $L_i$ must be ordered.
+ +
+
+ +

◆ d_ghostIndices

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<global_size_type> dftfe::utils::mpi::MPIPatternP2P< memorySpace >::d_ghostIndices
+
+private
+
+

Vector to store an ordered set of ghost indices (ordered in increasing order and non-repeating)

+ +
+
+ +

◆ d_ghostIndicesOptimizedIndexSet

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
OptimizedIndexSet<global_size_type> dftfe::utils::mpi::MPIPatternP2P< memorySpace >::d_ghostIndicesOptimizedIndexSet
+
+private
+
+

An OptimizedIndexSet object to store the ghost indices for efficient operations. The OptimizedIndexSet internally creates contiguous sub-ranges within the set of indices and hence can optimize the finding of an index

+ +
+
+ +

◆ d_ghostIndicesSetSTL

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::set<global_size_type> dftfe::utils::mpi::MPIPatternP2P< memorySpace >::d_ghostIndicesSetSTL
+
+private
+
+

A copy of the above d_ghostIndices stored as an STL set

+ +
+
+ +

◆ d_ghostProcIds

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<size_type> dftfe::utils::mpi::MPIPatternP2P< memorySpace >::d_ghostProcIds
+
+private
+
+

Vector to store the ghost processor Ids. A ghost processor is one which owns at least one of the ghost indices of this processor.

+ +
+
+ +

◆ d_localGhostIndicesRanges

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<size_type> dftfe::utils::mpi::MPIPatternP2P< memorySpace >::d_localGhostIndicesRanges
+
+private
+
+ +

A vector of size 2 times the number of ghost processors to store the range of local ghost indices that are owned by the ghost processors. In other words, it stores the list $L=\{a_1,b_1, a_2, b_2, \ldots, a_G, b_G\}$, where $a_i$ and $b_i$is are the start local ghost index and one-past-the-last local ghost index of the current processor that is owned by the $i$-th ghost processor (i.e., d_ghostProcIds[i]). Put it differently, $[a_i,b_i)$ form an open interval, where $a_i$ is included but $b_i$ is not included.

+
Note
Given the fact that the locally owned indices of each processor are contiguous and the global ghost indices (i.e., d_ghostIndices) is ordered, it is sufficient to just store the range of local ghost indices for each ghost procId. The actual global ghost indices belonging to the $i$-th ghost processor can be fetched from d_ghostIndices (i.e., it is the subset of d_ghostIndices lying bewteen d_ghostIndices[a_i] and d_ghostIndices[b_i].
+ +
+
+ +

◆ d_locallyOwnedRange

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::pair<global_size_type, global_size_type> dftfe::utils::mpi::MPIPatternP2P< memorySpace >::d_locallyOwnedRange
+
+private
+
+

A pair $(a,b)$ which defines a range of indices (continuous) that are owned by the current processor.

+
Note
It is an open interval where $a$ is included, but $b$ is not included.
+ +
+
+ +

◆ d_mpiComm

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
MPI_Comm dftfe::utils::mpi::MPIPatternP2P< memorySpace >::d_mpiComm
+
+private
+
+ +

MPI Communicator object.

+ +
+
+ +

◆ d_myRank

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
int dftfe::utils::mpi::MPIPatternP2P< memorySpace >::d_myRank
+
+private
+
+ +

Rank of the current processor.

+ +
+
+ +

◆ d_nGlobalIndices

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
global_size_type dftfe::utils::mpi::MPIPatternP2P< memorySpace >::d_nGlobalIndices
+
+private
+
+

Total number of unique indices across all processors

+ +
+
+ +

◆ d_nprocs

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
int dftfe::utils::mpi::MPIPatternP2P< memorySpace >::d_nprocs
+
+private
+
+ +

Number of processors in the MPI Communicator.

+ +
+
+ +

◆ d_numGhostIndices

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
size_type dftfe::utils::mpi::MPIPatternP2P< memorySpace >::d_numGhostIndices
+
+private
+
+

Number of ghost indices in the current processor

+ +
+
+ +

◆ d_numGhostIndicesInGhostProcs

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<size_type> dftfe::utils::mpi::MPIPatternP2P< memorySpace >::d_numGhostIndicesInGhostProcs
+
+private
+
+

Vector of size number of ghost processors to store how many ghost indices of this current processor are owned by a ghost processor.

+ +
+
+ +

◆ d_numGhostProcs

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
size_type dftfe::utils::mpi::MPIPatternP2P< memorySpace >::d_numGhostProcs
+
+private
+
+

Number of ghost processors for the current processor. A ghost processor is one which owns at least one of the ghost indices of this processor.

+ +
+
+ +

◆ d_numLocallyOwnedIndices

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
size_type dftfe::utils::mpi::MPIPatternP2P< memorySpace >::d_numLocallyOwnedIndices
+
+private
+
+

Number of locally owned indices in the current processor

+ +
+
+ +

◆ d_numOwnedIndicesForTargetProcs

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<size_type> dftfe::utils::mpi::MPIPatternP2P< memorySpace >::d_numOwnedIndicesForTargetProcs
+
+private
+
+

Vector of size number of target processors to store how many locally owned indices of this current processor are need ghost in each of the target processors.

+ +
+
+ +

◆ d_numTargetProcs

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
size_type dftfe::utils::mpi::MPIPatternP2P< memorySpace >::d_numTargetProcs
+
+private
+
+

Number of target processors for the current processor. A target processor is one which owns at least one of the locally owned indices of this processor as its ghost index.

+ +
+
+ +

◆ d_targetProcIds

+ +
+
+
+template<dftfe::utils::MemorySpace memorySpace>
+ + + + + +
+ + + + +
std::vector<size_type> dftfe::utils::mpi::MPIPatternP2P< memorySpace >::d_targetProcIds
+
+private
+
+

Vector to store the target processor Ids. A target processor is one which contains at least one of the locally owned indices of this processor as its ghost index.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base-members.html b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base-members.html new file mode 100644 index 000000000..7464d9514 --- /dev/null +++ b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base-members.html @@ -0,0 +1,93 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::utils::mpi::MPIRequestersBase Member List
+
+
+ +

This is the complete list of members for dftfe::utils::mpi::MPIRequestersBase, including all inherited members.

+ + + +
getRequestingRankIds()=0dftfe::utils::mpi::MPIRequestersBasepure virtual
~MPIRequestersBase()=defaultdftfe::utils::mpi::MPIRequestersBasevirtual
+ + + + diff --git a/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base.html b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base.html new file mode 100644 index 000000000..aa9dc7eac --- /dev/null +++ b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base.html @@ -0,0 +1,167 @@ + + + + + + + +DFT-FE: dftfe::utils::mpi::MPIRequestersBase Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::utils::mpi::MPIRequestersBase Class Referenceabstract
+
+
+ +

#include <MPIRequestersBase.h>

+
+Inheritance diagram for dftfe::utils::mpi::MPIRequestersBase:
+
+
+ + +dftfe::utils::mpi::MPIRequestersNBX + +
+ + + + + + +

+Public Member Functions

virtual ~MPIRequestersBase ()=default
 
virtual std::vector< size_typegetRequestingRankIds ()=0
 
+

Constructor & Destructor Documentation

+ +

◆ ~MPIRequestersBase()

+ +
+
+ + + + + +
+ + + + + + + +
virtual dftfe::utils::mpi::MPIRequestersBase::~MPIRequestersBase ()
+
+virtualdefault
+
+ +
+
+

Member Function Documentation

+ +

◆ getRequestingRankIds()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::vector< size_type > dftfe::utils::mpi::MPIRequestersBase::getRequestingRankIds ()
+
+pure virtual
+
+ +

Implemented in dftfe::utils::mpi::MPIRequestersNBX.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base.png b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base.png new file mode 100644 index 0000000000000000000000000000000000000000..ae0e3d219df9732e5cd8872de933b29481593658 GIT binary patch literal 886 zcmeAS@N?(olHy`uVBq!ia0vp^7l1f`gBeK1pW>beq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SR%c<=xyZhAIs2~du+B*-tA0mugfbEer>7#NrtJzX3_Dj46+eVzA4fv2Ut zbIYvn^^Z1la^7f5x%_Q~tDxxOrO%%6-+rPW-Hs1xFah>jp$SzgzL`$FY9pJ8Dwf z*zy=|e#+KAvh=ZJ0H^fqowT{S%Pa(J_pVT^uUWBhHP@TvcQ$7K6?yC5Zrm2G=ef`H8n?ptQ&->5 zKdJZolU9tl)AYrPCZ&st6v2IXuf#sk1GWiZ&JCcx0Mh8Uq5_tTqn z_Ak7?N$0da2e+r4yKsk!`!yD&lM|mdURqW1XF|%A+q0xS=dI+CpIdtJ*Yn*fl`G#Z z$@yYEYbWo8LJiNdC*hNyOfB1geg4|?b&t=9)hcWbF5K>C>JXg~_JY^eeP!Ov@Z7_y zlSMw)^;hOEvfRd>8f|II}J`-9IHq+T-qlEsvboPvpGZ90TY)Gpk-!iX()__Mz(&6u;3Wz*5yZKuJJ(_br}Rd#hw#|GISv(D>1i|-Ctq4<36 z_uttL$F7LEJ-1z39KB%uwE&sC&F92|Wjf}?U728ScO_uOf!pin0OLi!2NW+8QRC(2 zl-+-2l}^ro@$P%4%G`Z>C#cL-6Y!k(s?b5@=kZw%Dwe=N_Uv0@egPPC&0qL;wygYg U)6?ZWFo!UBy85}Sb4q9e0K~zrNB{r; literal 0 HcmV?d00001 diff --git a/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x-members.html b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x-members.html new file mode 100644 index 000000000..2363d3aa9 --- /dev/null +++ b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x-members.html @@ -0,0 +1,111 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::utils::mpi::MPIRequestersNBX Member List
+
+ + + + + diff --git a/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html new file mode 100644 index 000000000..d073cadec --- /dev/null +++ b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html @@ -0,0 +1,616 @@ + + + + + + + +DFT-FE: dftfe::utils::mpi::MPIRequestersNBX Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::utils::mpi::MPIRequestersNBX Class Reference
+
+
+ +

#include <MPIRequestersNBX.h>

+
+Inheritance diagram for dftfe::utils::mpi::MPIRequestersNBX:
+
+
+ + +dftfe::utils::mpi::MPIRequestersBase + +
+ + + + + + + + + + + +

+Public Member Functions

 MPIRequestersNBX (const std::vector< size_type > &targetIDs, const MPI_Comm &comm)
 
 MPIRequestersNBX ()=default
 
std::vector< size_typegetRequestingRankIds () override
 
- Public Member Functions inherited from dftfe::utils::mpi::MPIRequestersBase
virtual ~MPIRequestersBase ()=default
 
+ + + + + + + + + + + + + +

+Private Member Functions

bool haveAllLocalSendReceived ()
 
void signalLocalSendCompletion ()
 
bool haveAllIncomingMsgsReceived ()
 
void probeAndReceiveIncomingMsg ()
 
void startLocalSend ()
 
void finish ()
 
+ + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::vector< size_typed_targetIDs
 
std::vector< intd_sendBuffers
 
std::vector< MPI_Requestd_sendRequests
 
std::vector< std::unique_ptr< int > > d_recvBuffers
 
std::vector< std::unique_ptr< MPI_Request > > d_recvRequests
 
MPI_Request d_barrierRequest
 
const MPI_Commd_comm
 
std::set< size_typed_requestingProcesses
 
int d_numProcessors
 
int d_myRank
 
+

Constructor & Destructor Documentation

+ +

◆ MPIRequestersNBX() [1/2]

+ +
+
+ + + + + + + + + + + +
dftfe::utils::mpi::MPIRequestersNBX::MPIRequestersNBX (const std::vector< size_type > & targetIDs,
const MPI_Comm & comm )
+
+ +
+
+ +

◆ MPIRequestersNBX() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
dftfe::utils::mpi::MPIRequestersNBX::MPIRequestersNBX ()
+
+default
+
+ +
+
+

Member Function Documentation

+ +

◆ finish()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::utils::mpi::MPIRequestersNBX::finish ()
+
+private
+
+

After all processors have received all the incoming messages, the MPI data structures can be freed and the received messages can be processed.

+ +
+
+ +

◆ getRequestingRankIds()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< size_type > dftfe::utils::mpi::MPIRequestersNBX::getRequestingRankIds ()
+
+overridevirtual
+
+
+ +

◆ haveAllIncomingMsgsReceived()

+ +
+
+ + + + + +
+ + + + + + + +
bool dftfe::utils::mpi::MPIRequestersNBX::haveAllIncomingMsgsReceived ()
+
+private
+
+

Check whether all of the incoming messages from other processors to the current processor have been received.

+ +
+
+ +

◆ haveAllLocalSendReceived()

+ +
+
+ + + + + +
+ + + + + + + +
bool dftfe::utils::mpi::MPIRequestersNBX::haveAllLocalSendReceived ()
+
+private
+
+

Check whether all of message sent from the current processor to other processors have been received or not

+ +
+
+ +

◆ probeAndReceiveIncomingMsg()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::utils::mpi::MPIRequestersNBX::probeAndReceiveIncomingMsg ()
+
+private
+
+

Probe for an incoming message and if there is one receive it

+ +
+
+ +

◆ signalLocalSendCompletion()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::utils::mpi::MPIRequestersNBX::signalLocalSendCompletion ()
+
+private
+
+

Signal to all other processors that for this processor all its message sent to other processors have been received. This is done nonblocking barrier (i.e., MPI_IBarrier).

+ +
+
+ +

◆ startLocalSend()

+ +
+
+ + + + + +
+ + + + + + + +
void dftfe::utils::mpi::MPIRequestersNBX::startLocalSend ()
+
+private
+
+

Start to sending message to all the target processors

+ +
+
+

Member Data Documentation

+ +

◆ d_barrierRequest

+ +
+
+ + + + + +
+ + + + +
MPI_Request dftfe::utils::mpi::MPIRequestersNBX::d_barrierRequest
+
+private
+
+ +
+
+ +

◆ d_comm

+ +
+
+ + + + + +
+ + + + +
const MPI_Comm& dftfe::utils::mpi::MPIRequestersNBX::d_comm
+
+private
+
+ +
+
+ +

◆ d_myRank

+ +
+
+ + + + + +
+ + + + +
int dftfe::utils::mpi::MPIRequestersNBX::d_myRank
+
+private
+
+ +
+
+ +

◆ d_numProcessors

+ +
+
+ + + + + +
+ + + + +
int dftfe::utils::mpi::MPIRequestersNBX::d_numProcessors
+
+private
+
+ +
+
+ +

◆ d_recvBuffers

+ +
+
+ + + + + +
+ + + + +
std::vector<std::unique_ptr<int> > dftfe::utils::mpi::MPIRequestersNBX::d_recvBuffers
+
+private
+
+

Buffers for receiving requests. We use a vector of pointers because that guarantees that the buffers themselves are never moved around in memory, even if the vector is resized and consequently its elements (the pointers) are moved around.

+ +
+
+ +

◆ d_recvRequests

+ +
+
+ + + + + +
+ + + + +
std::vector<std::unique_ptr<MPI_Request> > dftfe::utils::mpi::MPIRequestersNBX::d_recvRequests
+
+private
+
+

Requests for receiving requests.

+ +
+
+ +

◆ d_requestingProcesses

+ +
+
+ + + + + +
+ + + + +
std::set<size_type> dftfe::utils::mpi::MPIRequestersNBX::d_requestingProcesses
+
+private
+
+

List of processes who have made a request to this process.

+ +
+
+ +

◆ d_sendBuffers

+ +
+
+ + + + + +
+ + + + +
std::vector<int> dftfe::utils::mpi::MPIRequestersNBX::d_sendBuffers
+
+private
+
+

Buffers for sending requests.

+ +
+
+ +

◆ d_sendRequests

+ +
+
+ + + + + +
+ + + + +
std::vector<MPI_Request> dftfe::utils::mpi::MPIRequestersNBX::d_sendRequests
+
+private
+
+

Requests for sending requests.

+ +
+
+ +

◆ d_targetIDs

+ +
+
+ + + + + +
+ + + + +
std::vector<size_type> dftfe::utils::mpi::MPIRequestersNBX::d_targetIDs
+
+private
+
+

List of processes this processor wants to send requests to.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.png b/classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.png new file mode 100644 index 0000000000000000000000000000000000000000..c35b70750922babf5891b1f6996f9bfff8d44799 GIT binary patch literal 880 zcmeAS@N?(olHy`uVBq!ia0vp^7l1f`gBeK1pW>beq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SR%c<=xyZhAIs2~du+B*-tA0mugfbEer>7#Ns-d%8G=R4~4s`#SH90#8eO zXUN&#_8)JyFqloq*=Cz1xF~7Ml{sNoru_q`}!mR z$+6$2W^dBoyCZzPjOV`)|NZ_dFTcEPRe8C!!Q+$HWndV^XTt+3&f)g9TwzXzI@fpx zgUM;kzkbc?$uL_Wem=(KGUM8CK89o0n3x(SZf#&lNYPbbkci~wU~nT!Xy0N1rx~6c zlT7->CaCnTVO8-|KF$30ufU~#m8-yLnY;uZE!v*IXz6m>zu0yaFlM}h-0QZg+Gpl(y7uk)hQ_IiFiY-t!u`a1O&+mQHXq{DCvC8R)eVoPV?;FqkeSEN2x9swN zL$#IPSzg2>q)lJ9nSEs*yT{D~Ti!UapU8Q+hi6jm&tHG$sa?2ug>hBTxyj{zSzN2n zg>zrIHo$((@W~K5lzh^s<6=%Hd?;g(=}DJEgWU$A7wc^v`CFP}3)S zKG)T=rTF9~mfX8+w4L?WmbO<9&0gmiUS;08+}!j@|N5*Is}3ArKj*K=T>TzUv`nZ$ ziI&Zp-+x%Ec-mjw{{2_IpN@j(t}7)DlfE2}a+qYY2^>t~0UU}xOX?&2R|%&+ka7m* O4F*qFKbLh*2~7Yz;hZu6 literal 0 HcmV?d00001 diff --git a/classdftfe_1_1vself_bins_manager-members.html b/classdftfe_1_1vself_bins_manager-members.html new file mode 100644 index 000000000..dbd28c658 --- /dev/null +++ b/classdftfe_1_1vself_bins_manager-members.html @@ -0,0 +1,132 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfe::vselfBinsManager< FEOrder, FEOrderElectro > Member List
+
+
+ +

This is the complete list of members for dftfe::vselfBinsManager< FEOrder, FEOrderElectro >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
createAtomBins(std::vector< const dealii::AffineConstraints< double > * > &constraintsVector, const dealii::AffineConstraints< double > &onlyHangingNodeConstraints, const dealii::DoFHandler< 3 > &dofHandler, const dealii::AffineConstraints< double > &constraintMatrix, const std::vector< std::vector< double > > &atomLocations, const std::vector< std::vector< double > > &imagePositions, const std::vector< int > &imageIds, const std::vector< double > &imageCharges, const double radiusAtomBall)dftfe::vselfBinsManager< FEOrder, FEOrderElectro >
createAtomBinsSanityCheck(const dealii::DoFHandler< 3 > &dofHandler, const dealii::AffineConstraints< double > &onlyHangingNodeConstraints)dftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
d_atomIdBinIdMapLocalAllImagesdftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
d_atomLocationsdftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
d_atomsInBindftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
d_binsdftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
d_binsImagesdftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
d_boundaryFlagdftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
d_boundaryFlagOnlyChargeIddftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
d_closestAtomBindftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
d_constraintsOnlyHangingInfodftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
d_dftParamsdftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
d_dofClosestChargeLocationMapdftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
d_mpiCommParentdftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
d_mpiInterCommKptsdftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
d_storedAdaptiveBallRadiusdftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
d_vselfBinConstraintMatricesdftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
d_vselfBinFielddftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
d_vselfFieldBinsdftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
d_vselfFieldDerRBinsdftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
d_vselfFieldPerturbedBinsdftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
getAtomIdBinIdMapLocalAllImages() constdftfe::vselfBinsManager< FEOrder, FEOrderElectro >
getAtomIdsBins() constdftfe::vselfBinsManager< FEOrder, FEOrderElectro >
getAtomImageIdsBins() constdftfe::vselfBinsManager< FEOrder, FEOrderElectro >
getBoundaryFlagsBins() constdftfe::vselfBinsManager< FEOrder, FEOrderElectro >
getBoundaryFlagsBinsOnlyChargeId() constdftfe::vselfBinsManager< FEOrder, FEOrderElectro >
getClosestAtomIdsBins() constdftfe::vselfBinsManager< FEOrder, FEOrderElectro >
getClosestAtomLocationsBins() constdftfe::vselfBinsManager< FEOrder, FEOrderElectro >
getPerturbedVselfFieldBins() constdftfe::vselfBinsManager< FEOrder, FEOrderElectro >
getStoredAdaptiveBallRadius() constdftfe::vselfBinsManager< FEOrder, FEOrderElectro >
getVselfFieldBins() constdftfe::vselfBinsManager< FEOrder, FEOrderElectro >
getVselfFieldDerRBins() constdftfe::vselfBinsManager< FEOrder, FEOrderElectro >
locateAtomsInBins(const dealii::DoFHandler< 3 > &dofHandler)dftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
mpi_communicatordftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
n_mpi_processesdftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
pcoutdftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
solveVselfInBins(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int offset, const unsigned int matrixFreeQuadratureIdAX, const dealii::AffineConstraints< double > &hangingPeriodicConstraintMatrix, const std::vector< std::vector< double > > &imagePositions, const std::vector< int > &imageIds, const std::vector< double > &imageCharges, std::vector< std::vector< double > > &localVselfs, std::map< dealii::CellId, std::vector< double > > &bQuadValuesAllAtoms, std::map< dealii::CellId, std::vector< int > > &bQuadAtomIdsAllAtoms, std::map< dealii::CellId, std::vector< int > > &bQuadAtomIdsAllAtomsImages, std::map< dealii::CellId, std::vector< unsigned int > > &bCellNonTrivialAtomIds, std::vector< std::map< dealii::CellId, std::vector< unsigned int > > > &bCellNonTrivialAtomIdsBins, std::map< dealii::CellId, std::vector< unsigned int > > &bCellNonTrivialAtomImageIds, std::vector< std::map< dealii::CellId, std::vector< unsigned int > > > &bCellNonTrivialAtomImageIdsBins, const std::vector< double > &smearingWidths, std::vector< double > &smearedChargeScaling, const unsigned int smearedChargeQuadratureId, const bool useSmearedCharges=false, const bool isVselfPerturbationSolve=false)dftfe::vselfBinsManager< FEOrder, FEOrderElectro >
solveVselfInBinsPerturbedDomain(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int mfBaseDofHandlerIndex, const unsigned int matrixFreeQuadratureIdAX, const unsigned int offset, const dealii::AffineConstraints< double > &hangingPeriodicConstraintMatrix, const std::vector< std::vector< double > > &imagePositions, const std::vector< int > &imageIds, const std::vector< double > &imageCharges, const std::vector< double > &smearingWidths, const unsigned int smearedChargeQuadratureId, const bool useSmearedCharges=false)dftfe::vselfBinsManager< FEOrder, FEOrderElectro >
this_mpi_processdftfe::vselfBinsManager< FEOrder, FEOrderElectro >private
updateBinsBc(std::vector< const dealii::AffineConstraints< double > * > &constraintsVector, const dealii::AffineConstraints< double > &onlyHangingNodeConstraints, const dealii::DoFHandler< 3 > &dofHandler, const dealii::AffineConstraints< double > &constraintMatrix, const std::vector< std::vector< double > > &atomLocations, const std::vector< std::vector< double > > &imagePositions, const std::vector< int > &imageIds, const std::vector< double > &imageCharges, const bool vselfPerturbationUpdateForStress=false)dftfe::vselfBinsManager< FEOrder, FEOrderElectro >
vselfBinsManager(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &mpi_intercomm_kpts, const dftParameters &dftParams)dftfe::vselfBinsManager< FEOrder, FEOrderElectro >
+ + + + diff --git a/classdftfe_1_1vself_bins_manager.html b/classdftfe_1_1vself_bins_manager.html new file mode 100644 index 000000000..8131f3f02 --- /dev/null +++ b/classdftfe_1_1vself_bins_manager.html @@ -0,0 +1,1476 @@ + + + + + + + +DFT-FE: dftfe::vselfBinsManager< FEOrder, FEOrderElectro > Class Template Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfe::vselfBinsManager< FEOrder, FEOrderElectro > Class Template Reference
+
+
+ +

Categorizes atoms into bins for efficient solution of nuclear electrostatic self-potential. template parameter FEOrderElectro is the finite element polynomial order. + More...

+ +

#include <vselfBinsManager.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 vselfBinsManager (const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &mpi_intercomm_kpts, const dftParameters &dftParams)
 Constructor.
 
void createAtomBins (std::vector< const dealii::AffineConstraints< double > * > &constraintsVector, const dealii::AffineConstraints< double > &onlyHangingNodeConstraints, const dealii::DoFHandler< 3 > &dofHandler, const dealii::AffineConstraints< double > &constraintMatrix, const std::vector< std::vector< double > > &atomLocations, const std::vector< std::vector< double > > &imagePositions, const std::vector< int > &imageIds, const std::vector< double > &imageCharges, const double radiusAtomBall)
 Categorize atoms into bins based on self-potential ball radius around each atom such that no two atoms in each bin has overlapping balls.
 
void updateBinsBc (std::vector< const dealii::AffineConstraints< double > * > &constraintsVector, const dealii::AffineConstraints< double > &onlyHangingNodeConstraints, const dealii::DoFHandler< 3 > &dofHandler, const dealii::AffineConstraints< double > &constraintMatrix, const std::vector< std::vector< double > > &atomLocations, const std::vector< std::vector< double > > &imagePositions, const std::vector< int > &imageIds, const std::vector< double > &imageCharges, const bool vselfPerturbationUpdateForStress=false)
 Categorize atoms into bins based on self-potential ball radius around each atom such that no two atoms in each bin has overlapping balls.
 
void solveVselfInBins (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int offset, const unsigned int matrixFreeQuadratureIdAX, const dealii::AffineConstraints< double > &hangingPeriodicConstraintMatrix, const std::vector< std::vector< double > > &imagePositions, const std::vector< int > &imageIds, const std::vector< double > &imageCharges, std::vector< std::vector< double > > &localVselfs, std::map< dealii::CellId, std::vector< double > > &bQuadValuesAllAtoms, std::map< dealii::CellId, std::vector< int > > &bQuadAtomIdsAllAtoms, std::map< dealii::CellId, std::vector< int > > &bQuadAtomIdsAllAtomsImages, std::map< dealii::CellId, std::vector< unsigned int > > &bCellNonTrivialAtomIds, std::vector< std::map< dealii::CellId, std::vector< unsigned int > > > &bCellNonTrivialAtomIdsBins, std::map< dealii::CellId, std::vector< unsigned int > > &bCellNonTrivialAtomImageIds, std::vector< std::map< dealii::CellId, std::vector< unsigned int > > > &bCellNonTrivialAtomImageIdsBins, const std::vector< double > &smearingWidths, std::vector< double > &smearedChargeScaling, const unsigned int smearedChargeQuadratureId, const bool useSmearedCharges=false, const bool isVselfPerturbationSolve=false)
 Solve nuclear electrostatic self-potential of atoms in each bin one-by-one.
 
void solveVselfInBinsPerturbedDomain (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int mfBaseDofHandlerIndex, const unsigned int matrixFreeQuadratureIdAX, const unsigned int offset, const dealii::AffineConstraints< double > &hangingPeriodicConstraintMatrix, const std::vector< std::vector< double > > &imagePositions, const std::vector< int > &imageIds, const std::vector< double > &imageCharges, const std::vector< double > &smearingWidths, const unsigned int smearedChargeQuadratureId, const bool useSmearedCharges=false)
 Solve nuclear electrostatic self-potential of atoms in each bin in a perturbed domain (used for cell stress calculation)
 
const std::map< int, std::set< int > > & getAtomIdsBins () const
 get const reference map of binIds and atomIds
 
const std::map< int, std::set< int > > & getAtomImageIdsBins () const
 get const reference map of binIds and atomIds
 
const std::vector< std::map< dealii::types::global_dof_index, int > > & getBoundaryFlagsBins () const
 
const std::vector< std::map< dealii::types::global_dof_index, int > > & getBoundaryFlagsBinsOnlyChargeId () const
 
const std::vector< std::map< dealii::types::global_dof_index, int > > & getClosestAtomIdsBins () const
 
const std::vector< std::map< dealii::types::global_dof_index, dealii::Point< 3 > > > & getClosestAtomLocationsBins () const
 
const std::vector< distributedCPUVec< double > > & getVselfFieldBins () const
 get const reference to solved vself fields
 
const std::vector< distributedCPUVec< double > > & getVselfFieldDerRBins () const
 get const reference to del{vself}/del{R_i} fields
 
const std::vector< distributedCPUVec< double > > & getPerturbedVselfFieldBins () const
 
const std::map< unsigned int, unsigned int > & getAtomIdBinIdMapLocalAllImages () const
 get const reference to d_atomIdBinIdMapLocalAllImages
 
double getStoredAdaptiveBallRadius () const
 get stored adaptive ball radius
 
+ + + + + + + +

+Private Member Functions

void locateAtomsInBins (const dealii::DoFHandler< 3 > &dofHandler)
 locate underlying fem nodes for atoms in bins.
 
void createAtomBinsSanityCheck (const dealii::DoFHandler< 3 > &dofHandler, const dealii::AffineConstraints< double > &onlyHangingNodeConstraints)
 sanity check for Dirichlet boundary conditions on the vself balls in each bin
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

std::vector< std::vector< double > > d_atomLocations
 storage for input atomLocations argument in createAtomBins function
 
dftUtils::constraintMatrixInfo d_constraintsOnlyHangingInfo
 storage for optimized constraints handling object
 
std::vector< dealii::AffineConstraints< double > > d_vselfBinConstraintMatrices
 vector of constraint matrices for vself bins
 
std::map< int, std::set< int > > d_bins
 map of binIds and atomIds
 
std::map< int, std::set< int > > d_binsImages
 map of binIds and atomIds and imageIds
 
std::vector< std::map< dealii::types::global_dof_index, int > > d_boundaryFlag
 map of global dof index and vself solve boundary flag (chargeId or
 
std::vector< std::map< dealii::types::global_dof_index, int > > d_boundaryFlagOnlyChargeId
 
std::vector< std::map< dealii::types::global_dof_index, dealii::Point< 3 > > > d_dofClosestChargeLocationMap
 map of global dof index to location of closest charge
 
std::vector< std::map< dealii::types::global_dof_index, double > > d_vselfBinField
 map of global dof index and vself field initial value in each bin
 
std::vector< std::map< dealii::types::global_dof_index, int > > d_closestAtomBin
 map of global dof index and vself field initial value in each bin
 
std::map< unsigned int, unsigned intd_atomIdBinIdMapLocalAllImages
 
std::vector< distributedCPUVec< double > > d_vselfFieldBins
 solved vself solution field for each bin
 
std::vector< distributedCPUVec< double > > d_vselfFieldDerRBins
 solved del{vself}/del{R_i} solution field for each bin
 
std::vector< distributedCPUVec< double > > d_vselfFieldPerturbedBins
 
std::vector< std::map< dealii::types::global_dof_index, double > > d_atomsInBin
 
double d_storedAdaptiveBallRadius
 
const dftParametersd_dftParams
 
const MPI_Comm d_mpiCommParent
 
const MPI_Comm mpi_communicator
 
const MPI_Comm d_mpiInterCommKpts
 
const unsigned int n_mpi_processes
 
const unsigned int this_mpi_process
 
dealii::ConditionalOStream pcout
 
+

Detailed Description

+
template<unsigned int FEOrder, unsigned int FEOrderElectro>
+class dftfe::vselfBinsManager< FEOrder, FEOrderElectro >

Categorizes atoms into bins for efficient solution of nuclear electrostatic self-potential. template parameter FEOrderElectro is the finite element polynomial order.

+
Author
Sambit Das, Phani Motamarri
+

Constructor & Destructor Documentation

+ +

◆ vselfBinsManager()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + +
dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::vselfBinsManager (const MPI_Comm & mpi_comm_parent,
const MPI_Comm & mpi_comm_domain,
const MPI_Comm & mpi_intercomm_kpts,
const dftParameters & dftParams )
+
+ +

Constructor.

+
Parameters
+ + + +
mpi_comm_parentparent mpi communicator
mpi_comm_domaindomain decomposition mpi communicator
+
+
+ +
+
+

Member Function Documentation

+ +

◆ createAtomBins()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::createAtomBins (std::vector< const dealii::AffineConstraints< double > * > & constraintsVector,
const dealii::AffineConstraints< double > & onlyHangingNodeConstraints,
const dealii::DoFHandler< 3 > & dofHandler,
const dealii::AffineConstraints< double > & constraintMatrix,
const std::vector< std::vector< double > > & atomLocations,
const std::vector< std::vector< double > > & imagePositions,
const std::vector< int > & imageIds,
const std::vector< double > & imageCharges,
const double radiusAtomBall )
+
+ +

Categorize atoms into bins based on self-potential ball radius around each atom such that no two atoms in each bin has overlapping balls.

+
Parameters
+ + + + + + + + + +
[out]constraintsVectorconstraintsVector to which the vself bins solve constraint matrices will be pushed back
[in]dofHandlerDofHandler object
[in]constraintMatrixdealii::AffineConstraints<double> which was used for the total electrostatics solve
[in]atomLocationsglobal atom locations and charge values data
[in]imagePositionsimage atoms positions data
[in]imageIdsimage atoms Ids data
[in]imageChargesimage atoms charge values data
[in]radiusAtomBallself-potential ball radius
+
+
+ +
+
+ +

◆ createAtomBinsSanityCheck()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + + + + + +
void dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::createAtomBinsSanityCheck (const dealii::DoFHandler< 3 > & dofHandler,
const dealii::AffineConstraints< double > & onlyHangingNodeConstraints )
+
+private
+
+ +

sanity check for Dirichlet boundary conditions on the vself balls in each bin

+ +
+
+ +

◆ getAtomIdBinIdMapLocalAllImages()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
const std::map< unsigned int, unsigned int > & dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::getAtomIdBinIdMapLocalAllImages () const
+
+ +

get const reference to d_atomIdBinIdMapLocalAllImages

+ +
+
+ +

◆ getAtomIdsBins()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
const std::map< int, std::set< int > > & dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::getAtomIdsBins () const
+
+ +

get const reference map of binIds and atomIds

+ +
+
+ +

◆ getAtomImageIdsBins()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
const std::map< int, std::set< int > > & dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::getAtomImageIdsBins () const
+
+ +

get const reference map of binIds and atomIds

+ +
+
+ +

◆ getBoundaryFlagsBins()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
const std::vector< std::map< dealii::types::global_dof_index, int > > & dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::getBoundaryFlagsBins () const
+
+

get const reference to map of global dof index and vself solve boundary flag in each bin

+ +
+
+ +

◆ getBoundaryFlagsBinsOnlyChargeId()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
const std::vector< std::map< dealii::types::global_dof_index, int > > & dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::getBoundaryFlagsBinsOnlyChargeId () const
+
+

get const reference to map of global dof index and vself solve boundary flag in each bin

+ +
+
+ +

◆ getClosestAtomIdsBins()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
const std::vector< std::map< dealii::types::global_dof_index, int > > & dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::getClosestAtomIdsBins () const
+
+

get const reference to map of global dof index and vself field initial value in each bin

+ +
+
+ +

◆ getClosestAtomLocationsBins()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
const std::vector< std::map< dealii::types::global_dof_index, dealii::Point< 3 > > > & dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::getClosestAtomLocationsBins () const
+
+

get const reference to map of global dof index and vself field initial value in each bin

+ +
+
+ +

◆ getPerturbedVselfFieldBins()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
const std::vector< distributedCPUVec< double > > & dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::getPerturbedVselfFieldBins () const
+
+

perturbation of vself solution field to be used to evaluate the Gateaux derivative of vself field with respect to affine strain components using central finite difference

+ +
+
+ +

◆ getStoredAdaptiveBallRadius()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
double dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::getStoredAdaptiveBallRadius () const
+
+ +

get stored adaptive ball radius

+ +
+
+ +

◆ getVselfFieldBins()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
const std::vector< distributedCPUVec< double > > & dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::getVselfFieldBins () const
+
+ +

get const reference to solved vself fields

+ +
+
+ +

◆ getVselfFieldDerRBins()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + +
const std::vector< distributedCPUVec< double > > & dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::getVselfFieldDerRBins () const
+
+ +

get const reference to del{vself}/del{R_i} fields

+ +
+
+ +

◆ locateAtomsInBins()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + + + + +
void dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::locateAtomsInBins (const dealii::DoFHandler< 3 > & dofHandler)
+
+private
+
+ +

locate underlying fem nodes for atoms in bins.

+ +
+
+ +

◆ solveVselfInBins()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::solveVselfInBins (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > & basisOperationsPtr,
const unsigned int offset,
const unsigned int matrixFreeQuadratureIdAX,
const dealii::AffineConstraints< double > & hangingPeriodicConstraintMatrix,
const std::vector< std::vector< double > > & imagePositions,
const std::vector< int > & imageIds,
const std::vector< double > & imageCharges,
std::vector< std::vector< double > > & localVselfs,
std::map< dealii::CellId, std::vector< double > > & bQuadValuesAllAtoms,
std::map< dealii::CellId, std::vector< int > > & bQuadAtomIdsAllAtoms,
std::map< dealii::CellId, std::vector< int > > & bQuadAtomIdsAllAtomsImages,
std::map< dealii::CellId, std::vector< unsigned int > > & bCellNonTrivialAtomIds,
std::vector< std::map< dealii::CellId, std::vector< unsigned int > > > & bCellNonTrivialAtomIdsBins,
std::map< dealii::CellId, std::vector< unsigned int > > & bCellNonTrivialAtomImageIds,
std::vector< std::map< dealii::CellId, std::vector< unsigned int > > > & bCellNonTrivialAtomImageIdsBins,
const std::vector< double > & smearingWidths,
std::vector< double > & smearedChargeScaling,
const unsigned int smearedChargeQuadratureId,
const bool useSmearedCharges = false,
const bool isVselfPerturbationSolve = false )
+
+ +

Solve nuclear electrostatic self-potential of atoms in each bin one-by-one.

+
Parameters
+ + + + + + + + + +
[in]matrix_free_dataMatrixFree object
[in]offsetMatrixFree object starting offset for vself bins solve
[out]phiExtsum of the self-potential fields of all atoms and image atoms
[in]phiExtConstraintMatrixconstraintMatrix corresponding to phiExt
[in]imagePositionsimage atoms positions data
[in]imageIdsimage atoms Ids data
[in]imageChargesimage atoms charge values data *
[out]localVselfspeak self-potential values of atoms in the local processor
+
+
+ +
+
+ +

◆ solveVselfInBinsPerturbedDomain()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::solveVselfInBinsPerturbedDomain (const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > & basisOperationsPtr,
const unsigned int mfBaseDofHandlerIndex,
const unsigned int matrixFreeQuadratureIdAX,
const unsigned int offset,
const dealii::AffineConstraints< double > & hangingPeriodicConstraintMatrix,
const std::vector< std::vector< double > > & imagePositions,
const std::vector< int > & imageIds,
const std::vector< double > & imageCharges,
const std::vector< double > & smearingWidths,
const unsigned int smearedChargeQuadratureId,
const bool useSmearedCharges = false )
+
+ +

Solve nuclear electrostatic self-potential of atoms in each bin in a perturbed domain (used for cell stress calculation)

+ +
+
+ +

◆ updateBinsBc()

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::updateBinsBc (std::vector< const dealii::AffineConstraints< double > * > & constraintsVector,
const dealii::AffineConstraints< double > & onlyHangingNodeConstraints,
const dealii::DoFHandler< 3 > & dofHandler,
const dealii::AffineConstraints< double > & constraintMatrix,
const std::vector< std::vector< double > > & atomLocations,
const std::vector< std::vector< double > > & imagePositions,
const std::vector< int > & imageIds,
const std::vector< double > & imageCharges,
const bool vselfPerturbationUpdateForStress = false )
+
+ +

Categorize atoms into bins based on self-potential ball radius around each atom such that no two atoms in each bin has overlapping balls.

+
Parameters
+ + + + + + + + +
[out]constraintsVectorconstraintsVector to which the vself bins solve constraint matrices will be pushed back
[in]dofHandlerDofHandler object
[in]constraintMatrixdealii::AffineConstraints<double> which was used for the total electrostatics solve
[in]atomLocationsglobal atom locations and charge values data
[in]imagePositionsimage atoms positions data
[in]imageIdsimage atoms Ids data
[in]imageChargesimage atoms charge values data
+
+
+ +
+
+

Member Data Documentation

+ +

◆ d_atomIdBinIdMapLocalAllImages

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<unsigned int, unsigned int> dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::d_atomIdBinIdMapLocalAllImages
+
+private
+
+

Internal data: stores the map of atom Id (only in the local processor) to the vself bin Id. Populated in solve vself in Bins

+ +
+
+ +

◆ d_atomLocations

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::vector<double> > dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::d_atomLocations
+
+private
+
+ +

storage for input atomLocations argument in createAtomBins function

+ +
+
+ +

◆ d_atomsInBin

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::map<dealii::types::global_dof_index, double> > dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::d_atomsInBin
+
+private
+
+

Map of locally relevant global dof index and the atomic charge in each bin

+ +
+
+ +

◆ d_bins

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<int, std::set<int> > dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::d_bins
+
+private
+
+ +

map of binIds and atomIds

+ +
+
+ +

◆ d_binsImages

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::map<int, std::set<int> > dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::d_binsImages
+
+private
+
+ +

map of binIds and atomIds and imageIds

+ +
+
+ +

◆ d_boundaryFlag

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::map<dealii::types::global_dof_index, int> > dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::d_boundaryFlag
+
+private
+
+ +

map of global dof index and vself solve boundary flag (chargeId or

+ +
+
+ +

◆ d_boundaryFlagOnlyChargeId

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::map<dealii::types::global_dof_index, int> > dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::d_boundaryFlagOnlyChargeId
+
+private
+
+

map of global dof index and vself solve boundary flag (only chargeId)in each bin

+ +
+
+ +

◆ d_closestAtomBin

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::map<dealii::types::global_dof_index, int> > dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::d_closestAtomBin
+
+private
+
+ +

map of global dof index and vself field initial value in each bin

+ +
+
+ +

◆ d_constraintsOnlyHangingInfo

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dftUtils::constraintMatrixInfo dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::d_constraintsOnlyHangingInfo
+
+private
+
+ +

storage for optimized constraints handling object

+ +
+
+ +

◆ d_dftParams

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const dftParameters& dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::d_dftParams
+
+private
+
+ +
+
+ +

◆ d_dofClosestChargeLocationMap

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::map<dealii::types::global_dof_index, dealii::Point<3> > > dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::d_dofClosestChargeLocationMap
+
+private
+
+ +

map of global dof index to location of closest charge

+ +
+
+ +

◆ d_mpiCommParent

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::d_mpiCommParent
+
+private
+
+ +
+
+ +

◆ d_mpiInterCommKpts

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::d_mpiInterCommKpts
+
+private
+
+ +
+
+ +

◆ d_storedAdaptiveBallRadius

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
double dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::d_storedAdaptiveBallRadius
+
+private
+
+

Vself ball radius. This is stored after the first call to createAtomBins and reused for subsequent calls

+ +
+
+ +

◆ d_vselfBinConstraintMatrices

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<dealii::AffineConstraints<double> > dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::d_vselfBinConstraintMatrices
+
+private
+
+ +

vector of constraint matrices for vself bins

+ +
+
+ +

◆ d_vselfBinField

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<std::map<dealii::types::global_dof_index, double> > dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::d_vselfBinField
+
+private
+
+ +

map of global dof index and vself field initial value in each bin

+ +
+
+ +

◆ d_vselfFieldBins

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<distributedCPUVec<double> > dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::d_vselfFieldBins
+
+private
+
+ +

solved vself solution field for each bin

+ +
+
+ +

◆ d_vselfFieldDerRBins

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<distributedCPUVec<double> > dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::d_vselfFieldDerRBins
+
+private
+
+ +

solved del{vself}/del{R_i} solution field for each bin

+ +
+
+ +

◆ d_vselfFieldPerturbedBins

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
std::vector<distributedCPUVec<double> > dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::d_vselfFieldPerturbedBins
+
+private
+
+

perturbation of vself solution field to be used to evaluate the Gateaux derivative of vself field with respect to affine strain components using central finite difference

+ +
+
+ +

◆ mpi_communicator

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const MPI_Comm dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::mpi_communicator
+
+private
+
+ +
+
+ +

◆ n_mpi_processes

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const unsigned int dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::n_mpi_processes
+
+private
+
+ +
+
+ +

◆ pcout

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
dealii::ConditionalOStream dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::pcout
+
+private
+
+ +
+
+ +

◆ this_mpi_process

+ +
+
+
+template<unsigned int FEOrder, unsigned int FEOrderElectro>
+ + + + + +
+ + + + +
const unsigned int dftfe::vselfBinsManager< FEOrder, FEOrderElectro >::this_mpi_process
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/classes.html b/classes.html new file mode 100644 index 000000000..8138ebdb0 --- /dev/null +++ b/classes.html @@ -0,0 +1,141 @@ + + + + + + + +DFT-FE: Class Index + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+
+
A | B | C | D | E | F | G | K | L | M | N | O | P | Q | R | S | T | V
+
+
+
A
+
AtomCenteredSphericalFunctionBase (dftfe)
AtomCenteredSphericalFunctionBessel (dftfe)
AtomCenteredSphericalFunctionContainer (dftfe)
AtomCenteredSphericalFunctionCoreDensitySpline (dftfe)
AtomCenteredSphericalFunctionGaussian (dftfe)
AtomCenteredSphericalFunctionLocalPotentialSpline (dftfe)
AtomCenteredSphericalFunctionProjectorSpline (dftfe)
AtomCenteredSphericalFunctionSinc (dftfe)
AtomCenteredSphericalFunctionSpline (dftfe)
AtomCenteredSphericalFunctionValenceDensitySpline (dftfe)
AtomCenteredSphericalFunctionZOverR (dftfe)
AtomicCenteredNonLocalOperator (dftfe)
AtomPseudoWavefunctions (dftfe)
+
+
B
+
BFGSNonLinearSolver (dftfe)
BLASWrapper (dftfe::linearAlgebra)
BLASWrapper< dftfe::utils::MemorySpace::HOST > (dftfe::linearAlgebra)
+
+
C
+
cgPRPNonLinearSolver (dftfe)
chebyshevOrthogonalizedSubspaceIterationSolver (dftfe)
CompositeData (dftfe::dftUtils)
constraintMatrixInfo (dftfe::dftUtils)
+
+
D
+
dealiiLinearSolver (dftfe)
dealiiLinearSolverProblem (dftfe)
dftBase (dftfe)
dftClass (dftfe)
dftfeWrapper (dftfe)
dftParameters (dftfe)
dispersionCorrection (dftfe)
+
+
E
+
eigenSolverClass (dftfe)
Element (dftfe::pseudoUtils)
elpaScalaManager (dftfe)
energyCalculator (dftfe)
excDensityBaseClass (dftfe)
excDensityGGAClass (dftfe)
excDensityLDAClass (dftfe)
excManager (dftfe)
excWavefunctionBaseClass (dftfe)
excWavefunctionNoneClass (dftfe)
+
+
F
+
FEBasisOperations (dftfe::basis)
forceClass (dftfe)
+
+
G
+
geometryOptimizationClass (dftfe)
geoOptCell (dftfe)
geoOptIon (dftfe)
+
+
K
+
kerkerSolverProblem (dftfe)
KohnShamHamiltonianOperator (dftfe)
+
+
L
+
LBFGSNonLinearSolver (dftfe)
linearSolver (dftfe)
+
+
M
+
MemoryManager (dftfe::utils)
MemoryManager< ValueType, MemorySpace::HOST > (dftfe::utils)
MemoryStorage (dftfe::utils)
MemoryTransfer (dftfe::utils)
MemoryTransfer< MemorySpace::HOST, MemorySpace::HOST > (dftfe::utils)
meshMovementAffineTransform (dftfe)
meshMovementClass (dftfe)
meshMovementGaussianClass (dftfe)
MixingScheme (dftfe)
molecularDynamicsClass (dftfe)
MPICommunicatorP2P (dftfe::utils::mpi)
MPICommunicatorP2PKernels (dftfe::utils)
MPIPatternP2P (dftfe::utils::mpi)
MPIRequestersBase (dftfe::utils::mpi)
MPIRequestersNBX (dftfe::utils::mpi)
MPIWriteOnFile (dftfe::dftUtils)
MultiVector (dftfe::linearAlgebra)
+
+
N
+
nonLinearSolver (dftfe)
nonlinearSolverProblem (dftfe)
nudgedElasticBandClass (dftfe)
+
+
O
+
oncvClass (dftfe)
operatorDFTClass (dftfe)
OptimizedIndexSet (dftfe::utils)
+
+
P
+
PeriodicTable (dftfe::pseudoUtils)
poissonSolverProblem (dftfe)
Pool (dftfe::dftUtils)
ProcessGrid (dftfe)
+
+
Q
+
QuadDataCompositeWrite (dftfe::dftUtils)
+
+
R
+
runParameters (dftfe)
+
+
S
+
ScaLAPACKMatrix (dftfe)
singlePrecType (dftfe::utils::mpi)
singlePrecType< double > (dftfe::utils::mpi)
singlePrecType< std::complex< double > > (dftfe::utils::mpi)
symmetryClass (dftfe)
+
+
T
+
triangulationManager (dftfe)
+
+
V
+
vselfBinsManager (dftfe)
+
+
+ + + + diff --git a/clipboard.js b/clipboard.js new file mode 100644 index 000000000..42c1fb0e0 --- /dev/null +++ b/clipboard.js @@ -0,0 +1,61 @@ +/** + +The code below is based on the Doxygen Awesome project, see +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2022 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +let clipboard_title = "Copy to clipboard" +let clipboard_icon = `` +let clipboard_successIcon = `` +let clipboard_successDuration = 1000 + +$(function() { + if(navigator.clipboard) { + const fragments = document.getElementsByClassName("fragment") + for(const fragment of fragments) { + const clipboard_div = document.createElement("div") + clipboard_div.classList.add("clipboard") + clipboard_div.innerHTML = clipboard_icon + clipboard_div.title = clipboard_title + $(clipboard_div).click(function() { + const content = this.parentNode.cloneNode(true) + // filter out line number and folded fragments from file listings + content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) + let text = content.textContent + // remove trailing newlines and trailing spaces from empty lines + text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'') + navigator.clipboard.writeText(text); + this.classList.add("success") + this.innerHTML = clipboard_successIcon + window.setTimeout(() => { // switch back to normal icon after timeout + this.classList.remove("success") + this.innerHTML = clipboard_icon + }, clipboard_successDuration); + }) + fragment.insertBefore(clipboard_div, fragment.firstChild) + } + } +}) diff --git a/closed.png b/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/constants_8h.html b/constants_8h.html new file mode 100644 index 000000000..563c50765 --- /dev/null +++ b/constants_8h.html @@ -0,0 +1,156 @@ + + + + + + + +DFT-FE: workspace/include/constants.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
constants.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Namespaces

namespace  dftfe
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<unsigned int FEOrder>
constexpr unsigned int dftfe::C_num1DQuad ()
 1d quadrature rule order
 
constexpr unsigned int dftfe::C_num1DQuadSmearedCharge ()
 1d quad rule smeared nuclear charge
 
constexpr unsigned int dftfe::C_numCopies1DQuadSmearedCharge ()
 number of copies 1d quad rule smeared nuclear charge
 
constexpr unsigned int dftfe::C_num1DQuadSmearedChargeHigh ()
 
constexpr unsigned int dftfe::C_numCopies1DQuadSmearedChargeHigh ()
 
constexpr unsigned int dftfe::C_num1DQuadSmearedChargeStress ()
 1d quad rule smeared nuclear charge if cell stress calculation is on
 
constexpr unsigned int dftfe::C_numCopies1DQuadSmearedChargeStress ()
 
template<unsigned int FEOrder, unsigned int FEOrderElectro>
constexpr unsigned int dftfe::C_rhoNodalPolyOrder ()
 rho nodal polynomial order
 
template<unsigned int FEOrder>
constexpr unsigned int dftfe::C_num1DQuadNLPSP ()
 1d quadrature rule order for non-local part of pseudopotential
 
constexpr unsigned int dftfe::C_numCopies1DQuadNLPSP ()
 number of copies 1d quad rule non-local PSP
 
template<unsigned int FEOrder>
constexpr unsigned int dftfe::C_num1DQuadLPSP ()
 1d quadrature rule order for local part of pseudopotential
 
constexpr unsigned int dftfe::C_numCopies1DQuadLPSP ()
 number of copies 1d quad rule local PSP
 
+ + + + + + + + + + + + + + +

+Variables

const double dftfe::C_kb = 3.166811429e-06
 Boltzmann constant.
 
const double dftfe::C_haPerBohrToeVPerAng = 27.211386245988 / 0.529177210903
 
const double dftfe::C_haToeV = 27.211386245988
 
const double dftfe::C_bohrToAng = 0.529177210903
 
const double dftfe::C_pi = 3.14159265359
 
const double dftfe::C_AngTobohr = 1.0 / 0.529177210903
 
+
+ + + + diff --git a/constants_8h_source.html b/constants_8h_source.html new file mode 100644 index 000000000..50eaafb42 --- /dev/null +++ b/constants_8h_source.html @@ -0,0 +1,306 @@ + + + + + + + +DFT-FE: workspace/include/constants.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
constants.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17// @author Sambit Das and Phani Motamarri
+
18//
+
19
+
20#ifndef constants_H_
+
21#define constants_H_
+
22
+
23namespace dftfe
+
24{
+
25 //
+
26 // Add prefix C_ to all constants
+
27 //
+
28
+
29 /// Boltzmann constant
+
30 const double C_kb = 3.166811429e-06;
+
31 const double C_haPerBohrToeVPerAng = 27.211386245988 / 0.529177210903;
+
32 const double C_haToeV = 27.211386245988;
+
33 const double C_bohrToAng = 0.529177210903;
+
34 const double C_pi = 3.14159265359;
+
35 const double C_AngTobohr = 1.0 / 0.529177210903;
+
36 /// 1d quadrature rule order
+
37 template <unsigned int FEOrder>
+
38 constexpr unsigned int
+
+ +
40 {
+
41 return FEOrder + 1;
+
42 }
+
+
43
+
44 /// 1d quad rule smeared nuclear charge
+
45 constexpr unsigned int
+
+ +
47 {
+
48 return 10;
+
49 }
+
+
50
+
51 /// number of copies 1d quad rule smeared nuclear charge
+
52 constexpr unsigned int
+
+ +
54 {
+
55 return 2; // can be changed from 2 to 3
+
56 }
+
+
57
+
58 /// 1d quad rule smeared nuclear charge
+
59 /// if a very coarse FE mesh is used (e.g. softer pseudopotentials)
+
60 constexpr unsigned int
+
+ +
62 {
+
63 return 10;
+
64 }
+
+
65
+
66 /// number of copies 1d quad rule smeared nuclear charge
+
67 /// if a very coarse FE mesh is used (e.g. softer pseudpotentials)
+
68 constexpr unsigned int
+
+ +
70 {
+
71 return 3;
+
72 }
+
+
73
+
74 /// 1d quad rule smeared nuclear charge if cell stress calculation is on
+
75 constexpr unsigned int
+
+ +
77 {
+
78 return 10;
+
79 }
+
+
80
+
81 /// number of copies 1d quad rule smeared nuclear charge if cell stress
+
82 /// calculation is on
+
83 constexpr unsigned int
+
+ +
85 {
+
86 return 5; //
+
87 }
+
+
88
+
89#ifdef DFTFE_WITH_HIGHERQUAD_PSP
+
90 /// rho nodal polynomial order
+
91 template <unsigned int FEOrder, unsigned int FEOrderElectro>
+
92 constexpr unsigned int
+ +
94 {
+
95 return ((FEOrder + 2) > FEOrderElectro ? (FEOrder + 2) : FEOrderElectro);
+
96 }
+
97
+
98 /// 1d quadrature rule order for non-local part of pseudopotential
+
99 template <unsigned int FEOrder>
+
100 constexpr unsigned int
+ +
102 {
+
103 return 14; // Can be changed from 14 to 18 Step 1
+
104 }
+
105
+
106 /// number of copies 1d quad rule non-local PSP
+
107 constexpr unsigned int
+ +
109 {
+
110 return 1;
+
111 }
+
112
+
113 /// 1d quadrature rule order for local part of pseudopotential
+
114 template <unsigned int FEOrder>
+
115 constexpr unsigned int
+ +
117 {
+
118 return 14;
+
119 }
+
120
+
121 /// number of copies 1d quad rule local PSP
+
122 constexpr unsigned int
+ +
124 {
+
125 return 1;
+
126 }
+
127#else
+
128
+
129 /// rho nodal polynomial order
+
130 template <unsigned int FEOrder, unsigned int FEOrderElectro>
+
131 constexpr unsigned int
+
+ +
133 {
+
134 return ((FEOrder + 2) > FEOrderElectro ? (FEOrder + 2) : FEOrderElectro);
+
135 }
+
+
136
+
137 /// 1d quadrature rule order for non-local part of pseudopotential
+
138 template <unsigned int FEOrder>
+
139 constexpr unsigned int
+
+ +
141 {
+
142 return 10;
+
143 }
+
+
144
+
145 /// number of copies 1d quad rule non-local PSP
+
146 constexpr unsigned int
+
+ +
148 {
+
149 return 1;
+
150 }
+
+
151
+
152 /// 1d quadrature rule order for local part of pseudopotential
+
153 template <unsigned int FEOrder>
+
154 constexpr unsigned int
+
+ +
156 {
+
157 return 10;
+
158 }
+
+
159
+
160 /// number of copies 1d quad rule local PSP
+
161 constexpr unsigned int
+
+ +
163 {
+
164 return 1;
+
165 }
+
+
166
+
167#endif
+
168} // namespace dftfe
+
169#endif
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
constexpr unsigned int C_num1DQuad()
1d quadrature rule order
Definition constants.h:39
+
constexpr unsigned int C_num1DQuadSmearedCharge()
1d quad rule smeared nuclear charge
Definition constants.h:46
+
constexpr unsigned int C_numCopies1DQuadSmearedChargeStress()
Definition constants.h:84
+
constexpr unsigned int C_num1DQuadSmearedChargeStress()
1d quad rule smeared nuclear charge if cell stress calculation is on
Definition constants.h:76
+
constexpr unsigned int C_num1DQuadSmearedChargeHigh()
Definition constants.h:61
+
const double C_pi
Definition constants.h:34
+
const double C_AngTobohr
Definition constants.h:35
+
const double C_haPerBohrToeVPerAng
Definition constants.h:31
+
constexpr unsigned int C_num1DQuadNLPSP()
1d quadrature rule order for non-local part of pseudopotential
Definition constants.h:140
+
constexpr unsigned int C_numCopies1DQuadNLPSP()
number of copies 1d quad rule non-local PSP
Definition constants.h:147
+
constexpr unsigned int C_numCopies1DQuadSmearedChargeHigh()
Definition constants.h:69
+
const double C_haToeV
Definition constants.h:32
+
constexpr unsigned int C_numCopies1DQuadSmearedCharge()
number of copies 1d quad rule smeared nuclear charge
Definition constants.h:53
+
constexpr unsigned int C_rhoNodalPolyOrder()
rho nodal polynomial order
Definition constants.h:132
+
const double C_bohrToAng
Definition constants.h:33
+
const double C_kb
Boltzmann constant.
Definition constants.h:30
+
constexpr unsigned int C_numCopies1DQuadLPSP()
number of copies 1d quad rule local PSP
Definition constants.h:162
+
constexpr unsigned int C_num1DQuadLPSP()
1d quadrature rule order for local part of pseudopotential
Definition constants.h:155
+
+ + + + diff --git a/constraint_matrix_info_8h.html b/constraint_matrix_info_8h.html new file mode 100644 index 000000000..a6b7db90a --- /dev/null +++ b/constraint_matrix_info_8h.html @@ -0,0 +1,110 @@ + + + + + + + +DFT-FE: workspace/include/constraintMatrixInfo.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
constraintMatrixInfo.h File Reference
+
+
+
#include <vector>
+#include "headers.h"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::dftUtils::constraintMatrixInfo
 Overloads dealii's distribute and distribute_local_to_global functions associated with constraints class. Stores the dealii's constraint matrix data into STL vectors for faster memory access costs. More...
 
+ + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::dftUtils
 Contains repeatedly used functions in the KSDFT calculations.
 
+
+ + + + diff --git a/constraint_matrix_info_8h_source.html b/constraint_matrix_info_8h_source.html new file mode 100644 index 000000000..8b556f87f --- /dev/null +++ b/constraint_matrix_info_8h_source.html @@ -0,0 +1,283 @@ + + + + + + + +DFT-FE: workspace/include/constraintMatrixInfo.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
constraintMatrixInfo.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18
+
19#ifndef constraintMatrixInfo_H_
+
20#define constraintMatrixInfo_H_
+
21
+
22#include <vector>
+
23
+
24#include "headers.h"
+
25
+
26namespace dftfe
+
27{
+
28 //
+
29 // Declare dftUtils functions
+
30 //
+
31 namespace dftUtils
+
32 {
+
33 /**
+
34 * @brief Overloads dealii's distribute and distribute_local_to_global functions associated with constraints class.
+
35 * Stores the dealii's constraint matrix data into STL vectors for faster
+
36 * memory access costs
+
37 *
+
38 * @author Phani Motamarri
+
39 *
+
40 */
+
+ +
42 {
+
43 public:
+
44 /**
+
45 * class constructor
+
46 */
+ +
48
+
49 /**
+
50 * class destructor
+
51 */
+ +
53
+
54 /**
+
55 * @brief convert a given constraintMatrix to simple arrays (STL) for fast access
+
56 *
+
57 * @param partitioner associated with the dealii vector
+
58 * @param constraintMatrixData dealii constraint matrix from which the data is extracted
+
59 */
+
60 void
+ +
62 const std::shared_ptr<const dealii::Utilities::MPI::Partitioner>
+ +
64 const dealii::AffineConstraints<double> &constraintMatrixData);
+
65
+
66 /**
+
67 * @brief overloaded dealii internal function "distribute" which sets the slave node
+
68 * field values from master nodes
+
69 *
+
70 * @param fieldVector parallel dealii vector
+
71 */
+
72 void
+ +
74
+
75 /**
+
76 * @brief overloaded dealii internal function distribute for flattened dealii array which sets
+
77 * the slave node field values from master nodes
+
78 *
+
79 * @param blockSize number of components for a given node
+
80 */
+
81 template <typename T>
+
82 void
+ +
84 const unsigned int blockSize) const;
+
85
+
86 template <typename T>
+
87 void
+ +
89
+
90 /**
+
91 * @brief transfers the contributions of slave nodes to master nodes using the constraint equation
+
92 * slave nodes are the nodes which are to the right of the constraint
+
93 * equation and master nodes are the nodes which are left of the
+
94 * constraint equation.
+
95 *
+
96 * @param fieldVector parallel dealii vector which is the result of matrix-vector product(vmult) withot taking
+
97 * care of constraints
+
98 * @param blockSize number of components for a given node
+
99 */
+
100 template <typename T>
+
101 void
+ +
103 const unsigned int blockSize) const;
+
104
+
105 template <typename T>
+
106 void
+ +
108
+
109 /**
+
110 * @brief Scales the constraints with the inverse diagonal mass matrix so that the scaling of the vector can be done at the cell level
+
111 *
+
112 * @param invSqrtMassVec the inverse diagonal mass matrix
+
113 */
+
114 void
+ + +
117
+
118 void
+ +
120 const dftfe::utils::MemoryStorage<double,
+ + +
123
+
124
+
125 /**
+
126 * @brief sets field values at constrained nodes to be zero
+
127 *
+
128 * @param fieldVector parallel dealii vector with fields stored in a flattened format
+
129 * @param blockSize number of field components for a given node
+
130 */
+
131 template <typename T>
+
132 void
+ +
134 const unsigned int blockSize) const;
+
135 template <typename T>
+
136 void
+ +
138
+
139 /**
+
140 * clear data members
+
141 */
+
142 void
+ +
144
+
145
+
146 private:
+
147 std::vector<dealii::types::global_dof_index> d_rowIdsGlobal;
+
148 std::vector<dealii::types::global_dof_index> d_rowIdsLocal;
+
149 std::vector<dealii::types::global_dof_index> d_columnIdsLocal;
+
150 std::vector<dealii::types::global_dof_index> d_columnIdsGlobal;
+
151 std::vector<double> d_columnValues;
+
152 std::vector<double> d_inhomogenities;
+
153 std::vector<dealii::types::global_dof_index> d_rowSizes;
+
154 std::vector<dealii::types::global_dof_index>
+ +
156 };
+
+
157
+
158 } // namespace dftUtils
+
159
+
160} // namespace dftfe
+
161#endif
+
Overloads dealii's distribute and distribute_local_to_global functions associated with constraints cl...
Definition constraintMatrixInfo.h:42
+
std::vector< dealii::types::global_dof_index > d_columnIdsLocal
Definition constraintMatrixInfo.h:149
+ +
std::vector< dealii::types::global_dof_index > d_rowIdsGlobal
Definition constraintMatrixInfo.h:147
+
std::vector< dealii::types::global_dof_index > d_rowIdsLocal
Definition constraintMatrixInfo.h:148
+
std::vector< dealii::types::global_dof_index > d_columnIdsGlobal
Definition constraintMatrixInfo.h:150
+
void set_zero(distributedCPUMultiVec< T > &fieldVector) const
+
void set_zero(distributedCPUVec< T > &fieldVector, const unsigned int blockSize) const
sets field values at constrained nodes to be zero
+
std::vector< dealii::types::global_dof_index > d_rowSizes
Definition constraintMatrixInfo.h:153
+
void initializeScaledConstraints(const distributedCPUVec< double > &invSqrtMassVec)
Scales the constraints with the inverse diagonal mass matrix so that the scaling of the vector can be...
+
void distribute_slave_to_master(distributedCPUVec< T > &fieldVector, const unsigned int blockSize) const
transfers the contributions of slave nodes to master nodes using the constraint equation slave nodes ...
+
void initialize(const std::shared_ptr< const dealii::Utilities::MPI::Partitioner > &partitioner, const dealii::AffineConstraints< double > &constraintMatrixData)
convert a given constraintMatrix to simple arrays (STL) for fast access
+
std::vector< double > d_inhomogenities
Definition constraintMatrixInfo.h:152
+
void distribute(distributedCPUVec< T > &fieldVector, const unsigned int blockSize) const
overloaded dealii internal function distribute for flattened dealii array which sets the slave node f...
+
void distribute(distributedCPUVec< double > &fieldVector) const
overloaded dealii internal function "distribute" which sets the slave node field values from master n...
+ +
void distribute_slave_to_master(distributedCPUMultiVec< T > &fieldVector) const
+
std::vector< dealii::types::global_dof_index > d_localIndexMapUnflattenedToFlattened
Definition constraintMatrixInfo.h:155
+
std::vector< double > d_columnValues
Definition constraintMatrixInfo.h:151
+
void initializeScaledConstraints(const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &invSqrtMassVec)
+
void distribute(distributedCPUMultiVec< T > &fieldVector) const
+ +
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition MemoryStorage.h:33
+ + +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/constraint_matrix_info_device_8h.html b/constraint_matrix_info_device_8h.html new file mode 100644 index 000000000..a505b07ec --- /dev/null +++ b/constraint_matrix_info_device_8h.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: workspace/include/constraintMatrixInfoDevice.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
constraintMatrixInfoDevice.h File Reference
+
+ + + + + diff --git a/constraint_matrix_info_device_8h_source.html b/constraint_matrix_info_device_8h_source.html new file mode 100644 index 000000000..e5ad945fd --- /dev/null +++ b/constraint_matrix_info_device_8h_source.html @@ -0,0 +1,277 @@ + + + + + + + +DFT-FE: workspace/include/constraintMatrixInfoDevice.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
constraintMatrixInfoDevice.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#if defined(DFTFE_WITH_DEVICE)
+
19# ifndef constraintMatrixInfoDevice_H_
+
20# define constraintMatrixInfoDevice_H_
+
21
+
22# include <MemoryStorage.h>
+
23# include <vector>
+
24
+
25# include <headers.h>
+
26
+
27namespace dftfe
+
28{
+
29 namespace dftUtils
+
30 {
+
31 /**
+
32 * @brief Overloads dealii's distribute and distribute_local_to_global functions associated with constraints class.
+
33 * Stores the dealii's constraint matrix data into STL vectors for faster
+
34 * memory access costs
+
35 *
+
36 * @author Sambit Das, Phani Motamarri
+
37 *
+
38 */
+
39 class constraintMatrixInfoDevice
+
40 {
+
41 public:
+
42 /**
+
43 * class constructor
+
44 */
+
45 constraintMatrixInfoDevice();
+
46
+
47 /**
+
48 * class destructor
+
49 */
+
50 ~constraintMatrixInfoDevice();
+
51
+
52 /**
+
53 * @brief convert a given constraintMatrix to simple arrays (STL) for fast access
+
54 *
+
55 * @param partitioner associated with the dealii vector
+
56 * @param constraintMatrixData dealii constraint matrix from which the data is extracted
+
57 */
+
58 void
+
59 initialize(
+
60 const std::shared_ptr<const dealii::Utilities::MPI::Partitioner>
+
61 & partitioner,
+
62 const dealii::AffineConstraints<double> &constraintMatrixData,
+
63 const bool useInhomogeneties = true);
+
64
+
65 /**
+
66 * @brief overloaded dealii internal function distribute for flattened dealii array which sets
+
67 * the slave node field values from master nodes
+
68 *
+
69 * @param blockSize number of components for a given node
+
70 */
+
71 template <typename NumberType>
+
72 void
+
73 distribute(distributedDeviceVec<NumberType> &fieldVector) const;
+
74
+
75
+
76 /**
+
77 * @brief Scales the constraints with the inverse diagonal mass matrix so that the scaling of the vector can be done at the cell level
+
78 *
+
79 * @param invSqrtMassVec the inverse diagonal mass matrix
+
80 */
+
81 void
+
82 initializeScaledConstraints(
+
83 const dftfe::utils::MemoryStorage<double,
+ +
85 &invSqrtMassVec);
+
86
+
87
+
88 /**
+
89 * @brief transfers the contributions of slave nodes to master nodes using the constraint equation
+
90 * slave nodes are the nodes which are to the right of the constraint
+
91 * equation and master nodes are the nodes which are left of the
+
92 * constraint equation.
+
93 *
+
94 * @param fieldVector parallel dealii vector which is the result of matrix-vector product(vmult) withot taking
+
95 * care of constraints
+
96 * @param blockSize number of components for a given node
+
97 */
+
98 void
+
99 distribute_slave_to_master(
+
100 distributedDeviceVec<double> &fieldVector) const;
+
101
+
102 void
+
103 distribute_slave_to_master(
+
104 distributedDeviceVec<std::complex<double>> &fieldVector) const;
+
105
+
106
+
107 /**
+
108 * @brief sets field values at constrained nodes to be zero
+
109 *
+
110 * @param fieldVector parallel dealii vector with fields stored in a flattened format
+
111 * @param blockSize number of field components for a given node
+
112 */
+
113 template <typename NumberType>
+
114 void
+
115 set_zero(distributedDeviceVec<NumberType> &fieldVector) const;
+
116
+
117 /**
+
118 * clear data members
+
119 */
+
120 void
+
121 clear();
+
122
+
123
+
124 private:
+
125 std::vector<unsigned int> d_rowIdsLocal;
+
126 std::vector<unsigned int> d_columnIdsLocal;
+
127 std::vector<double> d_columnValues;
+
128 std::vector<double> d_inhomogenities;
+
129 std::vector<unsigned int> d_rowSizes;
+
130 std::vector<unsigned int> d_rowSizesAccumulated;
+
131 std::vector<dealii::types::global_dof_index>
+
132 d_localIndexMapUnflattenedToFlattened;
+
133
+
134 dftfe::utils::MemoryStorage<unsigned int,
+ +
136 d_rowIdsLocalDevice;
+
137 dftfe::utils::MemoryStorage<unsigned int,
+ +
139 d_columnIdsLocalDevice;
+ +
141 d_columnValuesDevice;
+ +
143 d_inhomogenitiesDevice;
+
144 dftfe::utils::MemoryStorage<unsigned int,
+ +
146 d_rowSizesDevice;
+
147 dftfe::utils::MemoryStorage<unsigned int,
+ +
149 d_rowSizesAccumulatedDevice;
+
150 dftfe::utils::MemoryStorage<dealii::types::global_dof_index,
+ +
152 d_localIndexMapUnflattenedToFlattenedDevice;
+
153
+
154 std::vector<unsigned int> d_rowIdsLocalBins;
+
155 std::vector<unsigned int> d_columnIdsLocalBins;
+
156 std::vector<unsigned int> d_columnIdToRowIdMapBins;
+
157 std::vector<double> d_columnValuesBins;
+
158 std::vector<unsigned int> d_binColumnSizes;
+
159 std::vector<unsigned int> d_binColumnSizesAccumulated;
+
160
+
161 dftfe::utils::MemoryStorage<unsigned int,
+ +
163 d_rowIdsLocalBinsDevice;
+
164 dftfe::utils::MemoryStorage<unsigned int,
+ +
166 d_columnIdsLocalBinsDevice;
+
167 dftfe::utils::MemoryStorage<unsigned int,
+ +
169 d_columnIdToRowIdMapBinsDevice;
+ +
171 d_columnValuesBinsDevice;
+
172
+
173 unsigned int d_numConstrainedDofs;
+
174 };
+
175 } // namespace dftUtils
+
176
+
177} // namespace dftfe
+
178# endif
+
179#endif
+ +
Definition MemoryStorage.h:33
+ + +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/cookie.js b/cookie.js new file mode 100644 index 000000000..53ad21d98 --- /dev/null +++ b/cookie.js @@ -0,0 +1,58 @@ +/*! + Cookie helper functions + Copyright (c) 2023 Dimitri van Heesch + Released under MIT license. +*/ +let Cookie = { + cookie_namespace: 'doxygen_', + + readSetting(cookie,defVal) { + if (window.chrome) { + const val = localStorage.getItem(this.cookie_namespace+cookie) || + sessionStorage.getItem(this.cookie_namespace+cookie); + if (val) return val; + } else { + let myCookie = this.cookie_namespace+cookie+"="; + if (document.cookie) { + const index = document.cookie.indexOf(myCookie); + if (index != -1) { + const valStart = index + myCookie.length; + let valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + return document.cookie.substring(valStart, valEnd); + } + } + } + return defVal; + }, + + writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete + if (window.chrome) { + if (days==0) { + sessionStorage.setItem(this.cookie_namespace+cookie,val); + } else { + localStorage.setItem(this.cookie_namespace+cookie,val); + } + } else { + let date = new Date(); + date.setTime(date.getTime()+(days*24*60*60*1000)); + const expiration = days!=0 ? "expires="+date.toGMTString()+";" : ""; + document.cookie = this.cookie_namespace + cookie + "=" + + val + "; SameSite=Lax;" + expiration + "path=/"; + } + }, + + eraseSetting(cookie) { + if (window.chrome) { + if (localStorage.getItem(this.cookie_namespace+cookie)) { + localStorage.removeItem(this.cookie_namespace+cookie); + } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) { + sessionStorage.removeItem(this.cookie_namespace+cookie); + } + } else { + this.writeSetting(cookie,'',-1); + } + }, +} diff --git a/dealii_linear_solver_8h.html b/dealii_linear_solver_8h.html new file mode 100644 index 000000000..228d86c97 --- /dev/null +++ b/dealii_linear_solver_8h.html @@ -0,0 +1,127 @@ + + + + + + + +DFT-FE: workspace/include/dealiiLinearSolver.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dealiiLinearSolver.h File Reference
+
+
+
#include <linearSolver.h>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::dealiiLinearSolver
 dealii linear solver class wrapper More...
 
+ + + +

+Namespaces

namespace  dftfe
 
+ + + +

+Macros

#define dealiiLinearSolver_H_
 
+

Macro Definition Documentation

+ +

◆ dealiiLinearSolver_H_

+ +
+
+ + + + +
#define dealiiLinearSolver_H_
+
+ +
+
+
+ + + + diff --git a/dealii_linear_solver_8h_source.html b/dealii_linear_solver_8h_source.html new file mode 100644 index 000000000..5c7b4c3d8 --- /dev/null +++ b/dealii_linear_solver_8h_source.html @@ -0,0 +1,202 @@ + + + + + + + +DFT-FE: workspace/include/dealiiLinearSolver.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dealiiLinearSolver.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18
+
19#include <linearSolver.h>
+
20
+
21#ifndef dealiiLinearSolver_H_
+
22# define dealiiLinearSolver_H_
+
23
+
24namespace dftfe
+
25{
+
26 /**
+
27 * @brief dealii linear solver class wrapper
+
28 *
+
29 * @author Sambit Das
+
30 */
+
+ +
32 {
+
33 public:
+
+ +
35 {
+
36 CG = 0,
+
37 GMRES
+
38 };
+
+
39
+
40 /**
+
41 * @brief Constructor
+
42 *
+
43 * @param mpi_comm_parent parent mpi communicato
+
44 * @param mpi_comm_domain domain mpi communicator
+
45 * @param type enum specifying the choice of the dealii linear solver
+
46 */
+ + +
49 const solverType type);
+
50
+
51 /**
+
52 * @brief Solve linear system, A*x=Rhs
+
53 *
+
54 * @param problem linearSolverProblem object (functor) to compute Rhs and A*x, and preconditioning
+
55 * @param relTolerance Tolerance (relative) required for convergence.
+
56 * @param maxNumberIterations Maximum number of iterations.
+
57 * @param debugLevel Debug output level:
+
58 * 0 - no debug output
+
59 * 1 - limited debug output
+
60 * 2 - all debug output.
+
61 */
+
62 void
+ +
64 const double absTolerance,
+
65 const unsigned int maxNumberIterations,
+
66 const int debugLevel = 0,
+
67 bool distributeFlag = true);
+
68
+
69 private:
+
70 /// enum denoting the choice of the dealii solver
+ +
72
+
73 /// define some temporary vectors
+ +
75
+ + +
78 const unsigned int n_mpi_processes;
+
79 const unsigned int this_mpi_process;
+
80 dealii::ConditionalOStream pcout;
+
81 };
+
+
82
+
83} // namespace dftfe
+
84
+
85#endif
+
dealii linear solver class wrapper
Definition dealiiLinearSolver.h:32
+
dealii::ConditionalOStream pcout
Definition dealiiLinearSolver.h:80
+
distributedCPUVec< double > gvec
define some temporary vectors
Definition dealiiLinearSolver.h:74
+
solverType
Definition dealiiLinearSolver.h:35
+
@ GMRES
Definition dealiiLinearSolver.h:37
+
@ CG
Definition dealiiLinearSolver.h:36
+
const unsigned int n_mpi_processes
Definition dealiiLinearSolver.h:78
+
const MPI_Comm d_mpiCommParent
Definition dealiiLinearSolver.h:76
+
const MPI_Comm mpi_communicator
Definition dealiiLinearSolver.h:77
+
const solverType d_type
enum denoting the choice of the dealii solver
Definition dealiiLinearSolver.h:71
+
dealiiLinearSolver(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const solverType type)
Constructor.
+
const unsigned int this_mpi_process
Definition dealiiLinearSolver.h:79
+
distributedCPUVec< double > hvec
Definition dealiiLinearSolver.h:74
+
distributedCPUVec< double > dvec
Definition dealiiLinearSolver.h:74
+
void solve(dealiiLinearSolverProblem &problem, const double absTolerance, const unsigned int maxNumberIterations, const int debugLevel=0, bool distributeFlag=true)
Solve linear system, A*x=Rhs.
+
Abstract class for linear solve problems to be used with the dealiiLinearSolver interface.
Definition dealiiLinearSolverProblem.h:31
+
Abstract linear solver base class.
Definition linearSolver.h:32
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/dealii_linear_solver_problem_8h.html b/dealii_linear_solver_problem_8h.html new file mode 100644 index 000000000..32f5dc19e --- /dev/null +++ b/dealii_linear_solver_problem_8h.html @@ -0,0 +1,106 @@ + + + + + + + +DFT-FE: workspace/include/dealiiLinearSolverProblem.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dealiiLinearSolverProblem.h File Reference
+
+
+
#include <headers.h>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::dealiiLinearSolverProblem
 Abstract class for linear solve problems to be used with the dealiiLinearSolver interface. More...
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/dealii_linear_solver_problem_8h_source.html b/dealii_linear_solver_problem_8h_source.html new file mode 100644 index 000000000..361891f29 --- /dev/null +++ b/dealii_linear_solver_problem_8h_source.html @@ -0,0 +1,209 @@ + + + + + + + +DFT-FE: workspace/include/dealiiLinearSolverProblem.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dealiiLinearSolverProblem.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#include <headers.h>
+
19
+
20#ifndef dealiiLinearSolverProblem_H_
+
21# define dealiiLinearSolverProblem_H_
+
22
+
23namespace dftfe
+
24{
+
25 /**
+
26 * @brief Abstract class for linear solve problems to be used with the dealiiLinearSolver interface.
+
27 *
+
28 * @author Sambit Das
+
29 */
+
+ +
31 {
+
32 public:
+
33 /**
+
34 * @brief Constructor.
+
35 */
+ +
37
+
38 /**
+
39 * @brief get the reference to x field
+
40 *
+
41 * @return reference to x field. Assumes x field data structure is already initialized
+
42 */
+ +
44 getX() = 0;
+
45
+
46 /**
+
47 * @brief Compute A matrix multipled by x.
+
48 *
+
49 */
+
50 virtual void
+ +
52
+
53 /**
+
54 * @brief Compute right hand side vector for the problem Ax = rhs.
+
55 *
+
56 * @param rhs vector for the right hand side values
+
57 */
+
58 virtual void
+ +
60
+
61 /**
+
62 * @brief Jacobi preconditioning function.
+
63 *
+
64 */
+
65 virtual void
+ + +
68 const double omega) const = 0;
+
69
+
70 /**
+
71 * @brief distribute x to the constrained nodes.
+
72 *
+
73 */
+
74 virtual void
+ +
76
+
77 /// function needed by dealii to mimic SparseMatrix for Jacobi
+
78 /// preconditioning
+
79 virtual void
+
80 subscribe(std::atomic<bool> *const validity,
+
81 const std::string & identifier = "") const = 0;
+
82
+
83 /// function needed by dealii to mimic SparseMatrix for Jacobi
+
84 /// preconditioning
+
85 virtual void
+
86 unsubscribe(std::atomic<bool> *const validity,
+
87 const std::string & identifier = "") const = 0;
+
88
+
89 /// function needed by dealii to mimic SparseMatrix
+
90 virtual bool
+
91 operator!=(double val) const = 0;
+
92
+
93 // protected:
+
94
+
95 /// typedef declaration needed by dealii
+
96 typedef dealii::types::global_dof_index size_type;
+
97 };
+
+
98
+
99} // namespace dftfe
+
100#endif // dealiiLinearSolverProblem_H_
+
Abstract class for linear solve problems to be used with the dealiiLinearSolver interface.
Definition dealiiLinearSolverProblem.h:31
+
virtual void vmult(distributedCPUVec< double > &Ax, distributedCPUVec< double > &x)=0
Compute A matrix multipled by x.
+
virtual void precondition_Jacobi(distributedCPUVec< double > &dst, const distributedCPUVec< double > &src, const double omega) const =0
Jacobi preconditioning function.
+
virtual void unsubscribe(std::atomic< bool > *const validity, const std::string &identifier="") const =0
+
virtual void computeRhs(distributedCPUVec< double > &rhs)=0
Compute right hand side vector for the problem Ax = rhs.
+
virtual void distributeX()=0
distribute x to the constrained nodes.
+
virtual distributedCPUVec< double > & getX()=0
get the reference to x field
+
dealii::types::global_dof_index size_type
typedef declaration needed by dealii
Definition dealiiLinearSolverProblem.h:96
+ +
virtual bool operator!=(double val) const =0
function needed by dealii to mimic SparseMatrix
+
virtual void subscribe(std::atomic< bool > *const validity, const std::string &identifier="") const =0
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/density_calculator_8h.html b/density_calculator_8h.html new file mode 100644 index 000000000..40552c819 --- /dev/null +++ b/density_calculator_8h.html @@ -0,0 +1,111 @@ + + + + + + + +DFT-FE: workspace/include/densityCalculator.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
densityCalculator.h File Reference
+
+
+
#include <headers.h>
+#include "dftParameters.h"
+#include "FEBasisOperations.h"
+
+

Go to the source code of this file.

+ + + + +

+Namespaces

namespace  dftfe
 
+ + + + + + + +

+Functions

template<typename NumberType , dftfe::utils::MemorySpace memorySpace>
void dftfe::computeRhoFromPSI (const dftfe::utils::MemoryStorage< NumberType, memorySpace > *X, const dftfe::utils::MemoryStorage< NumberType, memorySpace > *XFrac, const unsigned int totalNumWaveFunctions, const unsigned int Nfr, const std::vector< std::vector< double > > &eigenValues, const double fermiEnergy, const double fermiEnergyUp, const double fermiEnergyDown, std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, memorySpace > > &basisOperationsPtr, std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > &BLASWrapperPtr, const unsigned int matrixFreeDofhandlerIndex, const unsigned int quadratureIndex, const std::vector< double > &kPointWeights, std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityValues, std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityValues, const bool isEvaluateGradRho, const MPI_Comm &mpiCommParent, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, const bool spectrumSplit)
 
template<typename NumberType >
void dftfe::computeRhoGradRhoFromInterpolatedValues (std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, const std::pair< unsigned int, unsigned int > cellRange, const std::pair< unsigned int, unsigned int > vecRange, double *partialOccupVec, NumberType *wfcQuadPointData, NumberType *gradWfcQuadPointData, double *rhoCellsWfcContributions, double *gradRhoCellsWfcContributions, double *rho, double *gradRho, const bool isEvaluateGradRho)
 
+
+ + + + diff --git a/density_calculator_8h_source.html b/density_calculator_8h_source.html new file mode 100644 index 000000000..a361b0c0f --- /dev/null +++ b/density_calculator_8h_source.html @@ -0,0 +1,213 @@ + + + + + + + +DFT-FE: workspace/include/densityCalculator.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
densityCalculator.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#ifndef densityCalculator_H_
+
19#define densityCalculator_H_
+
20
+
21#include <headers.h>
+
22#include "dftParameters.h"
+
23#include "FEBasisOperations.h"
+
24
+
25namespace dftfe
+
26{
+
27 template <typename NumberType, dftfe::utils::MemorySpace memorySpace>
+
28 void
+ + + +
32 const unsigned int totalNumWaveFunctions,
+
33 const unsigned int Nfr,
+
34 const std::vector<std::vector<double>> &eigenValues,
+
35 const double fermiEnergy,
+
36 const double fermiEnergyUp,
+
37 const double fermiEnergyDown,
+
38 std::shared_ptr<
+ + + + +
43 const unsigned int matrixFreeDofhandlerIndex,
+
44 const unsigned int quadratureIndex,
+
45 const std::vector<double> &kPointWeights,
+
46 std::vector<
+ + +
49 std::vector<
+ + +
52 const bool isEvaluateGradRho,
+
53 const MPI_Comm & mpiCommParent,
+
54 const MPI_Comm & interpoolcomm,
+
55 const MPI_Comm & interBandGroupComm,
+ +
57 const bool spectrumSplit);
+
58
+
59 template <typename NumberType>
+
60 void
+ +
62 std::shared_ptr<
+ +
64 FEBasisOperations<NumberType, double, dftfe::utils::MemorySpace::HOST>>
+ + +
67 dftfe::linearAlgebra::BLASWrapper<dftfe::utils::MemorySpace::HOST>>
+ + + + + + + + +
76 double * rho,
+ + +
79
+
80#if defined(DFTFE_WITH_DEVICE)
+
81 template <typename NumberType>
+
82 void
+ +
84 std::shared_ptr<
+ +
86 double,
+ + +
89 std::shared_ptr<
+ + +
92 const std::pair<unsigned int, unsigned int> cellRange,
+
93 const std::pair<unsigned int, unsigned int> vecRange,
+
94 double * partialOccupVec,
+ + + + +
99 double * rho,
+
100 double * gradRho,
+
101 const bool isEvaluateGradRho);
+
102#endif
+
103
+
104} // namespace dftfe
+
105#endif
+ +
Definition FEBasisOperations.h:85
+
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:35
+
Definition BLASWrapper.h:34
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition MemoryStorage.h:33
+ + +
Definition FEBasisOperations.h:31
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+
void computeRhoFromPSI(const dftfe::utils::MemoryStorage< NumberType, memorySpace > *X, const dftfe::utils::MemoryStorage< NumberType, memorySpace > *XFrac, const unsigned int totalNumWaveFunctions, const unsigned int Nfr, const std::vector< std::vector< double > > &eigenValues, const double fermiEnergy, const double fermiEnergyUp, const double fermiEnergyDown, std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, memorySpace > > &basisOperationsPtr, std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > &BLASWrapperPtr, const unsigned int matrixFreeDofhandlerIndex, const unsigned int quadratureIndex, const std::vector< double > &kPointWeights, std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityValues, std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityValues, const bool isEvaluateGradRho, const MPI_Comm &mpiCommParent, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, const bool spectrumSplit)
+ + +
void computeRhoGradRhoFromInterpolatedValues(std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, const std::pair< unsigned int, unsigned int > cellRange, const std::pair< unsigned int, unsigned int > vecRange, double *partialOccupVec, NumberType *wfcQuadPointData, NumberType *gradWfcQuadPointData, double *rhoCellsWfcContributions, double *gradRhoCellsWfcContributions, double *rho, double *gradRho, const bool isEvaluateGradRho)
+
+ + + + diff --git a/density_first_order_response_calculator_8h.html b/density_first_order_response_calculator_8h.html new file mode 100644 index 000000000..5071f3023 --- /dev/null +++ b/density_first_order_response_calculator_8h.html @@ -0,0 +1,112 @@ + + + + + + + +DFT-FE: workspace/include/densityFirstOrderResponseCalculator.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
densityFirstOrderResponseCalculator.h File Reference
+
+
+
#include "headers.h"
+#include "dftParameters.h"
+#include "FEBasisOperations.h"
+#include <BLASWrapper.h>
+
+

Go to the source code of this file.

+ + + + +

+Namespaces

namespace  dftfe
 
+ + + + + + + +

+Functions

template<typename NumberType , dftfe::utils::MemorySpace memorySpace>
void dftfe::computeRhoFirstOrderResponse (const dftfe::utils::MemoryStorage< NumberType, memorySpace > &X, const dftfe::utils::MemoryStorage< NumberType, memorySpace > &XPrime, const unsigned int totalNumWaveFunctions, const std::vector< std::vector< double > > &densityMatDerFermiEnergy, std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, memorySpace > > &basisOperationsPtr, std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > &BLASWrapperPtr, const unsigned int matrixFreeDofhandlerIndex, const unsigned int quadratureIndex, const std::vector< double > &kPointWeights, std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoResponseValuesHam, std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoResponseValuesFermiEnergy, const MPI_Comm &mpiCommParent, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams)
 
template<typename NumberType >
void dftfe::computeRhoResponseFromInterpolatedValues (std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, const std::pair< unsigned int, unsigned int > cellRange, const std::pair< unsigned int, unsigned int > vecRange, double *onesVec, double *partialOccupPrimeVec, NumberType *wfcQuadPointData, NumberType *wfcPrimeQuadPointData, double *rhoResponseHamCellsWfcContributions, double *rhoResponseFermiEnergyCellsWfcContributions, double *rhoResponseHam, double *rhoResponseFermiEnergy)
 
+
+ + + + diff --git a/density_first_order_response_calculator_8h_source.html b/density_first_order_response_calculator_8h_source.html new file mode 100644 index 000000000..304b14d2e --- /dev/null +++ b/density_first_order_response_calculator_8h_source.html @@ -0,0 +1,210 @@ + + + + + + + +DFT-FE: workspace/include/densityFirstOrderResponseCalculator.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
densityFirstOrderResponseCalculator.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2018 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18
+
19#ifndef densityFirstOrderResponseCalculator_H_
+
20#define densityFirstOrderResponseCalculator_H_
+
21
+
22#include "headers.h"
+
23#include "dftParameters.h"
+
24#include "FEBasisOperations.h"
+
25#include <BLASWrapper.h>
+
26
+
27
+
28namespace dftfe
+
29{
+
30 template <typename NumberType, dftfe::utils::MemorySpace memorySpace>
+
31 void
+ + + +
35 const unsigned int totalNumWaveFunctions,
+
36 const std::vector<std::vector<double>> &densityMatDerFermiEnergy,
+
37 std::shared_ptr<
+ + + + +
42 const unsigned int matrixFreeDofhandlerIndex,
+
43 const unsigned int quadratureIndex,
+
44 const std::vector<double> &kPointWeights,
+
45 std::vector<
+ + +
48 std::vector<
+ + +
51 const MPI_Comm & mpiCommParent,
+
52 const MPI_Comm & interpoolcomm,
+
53 const MPI_Comm & interBandGroupComm,
+ +
55
+
56
+
57 template <typename NumberType>
+
58 void
+ +
60 std::shared_ptr<
+ +
62 FEBasisOperations<NumberType, double, dftfe::utils::MemorySpace::HOST>>
+ + +
65 dftfe::linearAlgebra::BLASWrapper<dftfe::utils::MemorySpace::HOST>>
+ + + + + + + + + + + +
77
+
78#if defined(DFTFE_WITH_DEVICE)
+
79 template <typename NumberType>
+
80 void
+ +
82 std::shared_ptr<
+ +
84 double,
+ + +
87 std::shared_ptr<
+ + +
90 const std::pair<unsigned int, unsigned int> cellRange,
+
91 const std::pair<unsigned int, unsigned int> vecRange,
+
92 double * onesVec,
+
93 double * partialOccupVecPrime,
+ + + + +
98 double *rhoResponseHam,
+ +
100#endif
+
101
+
102} // namespace dftfe
+
103#endif
+ + +
Definition FEBasisOperations.h:85
+
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:35
+
Definition BLASWrapper.h:34
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition MemoryStorage.h:33
+ + +
Definition FEBasisOperations.h:31
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+
void computeRhoResponseFromInterpolatedValues(std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, const std::pair< unsigned int, unsigned int > cellRange, const std::pair< unsigned int, unsigned int > vecRange, double *onesVec, double *partialOccupPrimeVec, NumberType *wfcQuadPointData, NumberType *wfcPrimeQuadPointData, double *rhoResponseHamCellsWfcContributions, double *rhoResponseFermiEnergyCellsWfcContributions, double *rhoResponseHam, double *rhoResponseFermiEnergy)
+
void computeRhoFirstOrderResponse(const dftfe::utils::MemoryStorage< NumberType, memorySpace > &X, const dftfe::utils::MemoryStorage< NumberType, memorySpace > &XPrime, const unsigned int totalNumWaveFunctions, const std::vector< std::vector< double > > &densityMatDerFermiEnergy, std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, memorySpace > > &basisOperationsPtr, std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > &BLASWrapperPtr, const unsigned int matrixFreeDofhandlerIndex, const unsigned int quadratureIndex, const std::vector< double > &kPointWeights, std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoResponseValuesHam, std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoResponseValuesFermiEnergy, const MPI_Comm &mpiCommParent, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams)
+
+ + + + diff --git a/device_direct_c_c_l_wrapper_8h.html b/device_direct_c_c_l_wrapper_8h.html new file mode 100644 index 000000000..70159c3eb --- /dev/null +++ b/device_direct_c_c_l_wrapper_8h.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: workspace/include/deviceDirectCCLWrapper.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
deviceDirectCCLWrapper.h File Reference
+
+ + + + + diff --git a/device_direct_c_c_l_wrapper_8h_source.html b/device_direct_c_c_l_wrapper_8h_source.html new file mode 100644 index 000000000..e97143a75 --- /dev/null +++ b/device_direct_c_c_l_wrapper_8h_source.html @@ -0,0 +1,299 @@ + + + + + + + +DFT-FE: workspace/include/deviceDirectCCLWrapper.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
deviceDirectCCLWrapper.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16// @author Sambit Das, David M. Rogers
+
17
+
18#if defined(DFTFE_WITH_DEVICE)
+
19# ifndef deviceDirectCCLWrapper_h
+
20# define deviceDirectCCLWrapper_h
+
21
+
22# include <complex>
+
23# include <mpi.h>
+
24# include <DeviceTypeConfig.h>
+
25
+
26# if defined(DFTFE_WITH_CUDA_NCCL)
+
27# include <nccl.h>
+
28# include <DeviceTypeConfig.h>
+
29# elif defined(DFTFE_WITH_HIP_RCCL)
+
30# include <rccl.h>
+
31# include <DeviceTypeConfig.h>
+
32# endif
+
33
+
34namespace dftfe
+
35{
+
36 namespace utils
+
37 {
+
38# if defined(DFTFE_WITH_CUDA_NCCL) || defined(DFTFE_WITH_HIP_RCCL)
+
39# define NCCLCHECK(cmd) \
+
40 do \
+
41 { \
+
42 ncclResult_t r = cmd; \
+
43 if (r != ncclSuccess) \
+
44 { \
+
45 printf("Failed, NCCL error %s:%d '%s'\n", \
+
46 __FILE__, \
+
47 __LINE__, \
+
48 ncclGetErrorString(r)); \
+
49 exit(EXIT_FAILURE); \
+
50 } \
+
51 } \
+
52 while (0)
+
53# endif
+
54 /**
+
55 * @brief Wrapper class for Device Direct collective communications library.
+
56 * Adapted from
+
57 * https://code.ornl.gov/99R/olcf-cookbook/-/blob/develop/comms/nccl_allreduce.rst
+
58 *
+
59 * @author Sambit Das, David M. Rogers
+
60 */
+
61 class DeviceCCLWrapper
+
62 {
+
63 public:
+
64 DeviceCCLWrapper();
+
65
+
66 void
+
67 init(const MPI_Comm &mpiComm, const bool useDCCL);
+
68
+
69 ~DeviceCCLWrapper();
+
70
+
71 int
+
72 deviceDirectAllReduceWrapper(const float * send,
+
73 float * recv,
+
74 int size,
+
75 deviceStream_t &stream);
+
76
+
77
+
78 int
+
79 deviceDirectAllReduceWrapper(const double * send,
+
80 double * recv,
+
81 int size,
+
82 deviceStream_t &stream);
+
83
+
84
+
85 int
+
86 deviceDirectAllReduceWrapper(const std::complex<double> *send,
+
87 std::complex<double> * recv,
+
88 int size,
+
89 double * tempReal,
+
90 double * tempImag,
+
91 deviceStream_t & stream);
+
92
+
93 int
+
94 deviceDirectAllReduceWrapper(const std::complex<float> *send,
+
95 std::complex<float> * recv,
+
96 int size,
+
97 float * tempReal,
+
98 float * tempImag,
+
99 deviceStream_t & stream);
+
100
+
101
+
102 int
+
103 deviceDirectAllReduceMixedPrecGroupWrapper(const double * send1,
+
104 const float * send2,
+
105 double * recv1,
+
106 float * recv2,
+
107 int size1,
+
108 int size2,
+
109 deviceStream_t &stream);
+
110
+
111 int
+
112 deviceDirectAllReduceMixedPrecGroupWrapper(
+
113 const std::complex<double> *send1,
+
114 const std::complex<float> * send2,
+
115 std::complex<double> * recv1,
+
116 std::complex<float> * recv2,
+
117 int size1,
+
118 int size2,
+
119 double * tempReal1,
+
120 float * tempReal2,
+
121 double * tempImag1,
+
122 float * tempImag2,
+
123 deviceStream_t & stream);
+
124
+
125
+
126
+
127 inline void
+
128 deviceDirectAllReduceWrapper(const std::complex<float> *send,
+
129 std::complex<float> * recv,
+
130 int size,
+
131 deviceStream_t & stream)
+
132 {}
+
133
+
134
+
135 inline void
+
136 deviceDirectAllReduceWrapper(const std::complex<double> *send,
+
137 std::complex<double> * recv,
+
138 int size,
+
139 deviceStream_t & stream)
+
140 {}
+
141
+
142 inline void
+
143 deviceDirectAllReduceMixedPrecGroupWrapper(
+
144 const std::complex<double> *send1,
+
145 const std::complex<float> * send2,
+
146 std::complex<double> * recv1,
+
147 std::complex<float> * recv2,
+
148 int size1,
+
149 int size2,
+
150 deviceStream_t & stream)
+
151 {}
+
152
+
153
+
154 inline void
+
155 deviceDirectAllReduceWrapper(const double * send,
+
156 double * recv,
+
157 int size,
+
158 double * tempReal,
+
159 double * tempImag,
+
160 deviceStream_t &stream)
+
161 {}
+
162
+
163 inline void
+
164 deviceDirectAllReduceWrapper(const float * send,
+
165 float * recv,
+
166 int size,
+
167 float * tempReal,
+
168 float * tempImag,
+
169 deviceStream_t &stream)
+
170 {}
+
171
+
172 inline void
+
173 deviceDirectAllReduceMixedPrecGroupWrapper(const double * send1,
+
174 const float * send2,
+
175 double * recv1,
+
176 float * recv2,
+
177 int size1,
+
178 int size2,
+
179 double * tempReal1,
+
180 float * tempReal2,
+
181 double * tempImag1,
+
182 float * tempImag2,
+
183 deviceStream_t &stream)
+
184 {}
+
185
+
186# if defined(DFTFE_WITH_CUDA_NCCL) || defined(DFTFE_WITH_HIP_RCCL)
+
187 inline static ncclUniqueId *ncclIdPtr;
+
188 inline static ncclComm_t * ncclCommPtr;
+
189# endif
+
190 inline static bool ncclCommInit;
+
191 inline static dftfe::utils::deviceStream_t d_deviceCommStream;
+
192 inline static bool commStreamCreated;
+
193
+
194 private:
+
195 int myRank;
+
196 int totalRanks;
+
197 MPI_Comm d_mpiComm;
+
198 };
+
199 } // namespace utils
+
200} // namespace dftfe
+
201
+
202# endif
+
203#endif
+ +
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/device_kernels_generic_8h.html b/device_kernels_generic_8h.html new file mode 100644 index 000000000..dc9c8e405 --- /dev/null +++ b/device_kernels_generic_8h.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: workspace/include/deviceKernelsGeneric.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
deviceKernelsGeneric.h File Reference
+
+ + + + + diff --git a/device_kernels_generic_8h_source.html b/device_kernels_generic_8h_source.html new file mode 100644 index 000000000..77b61b159 --- /dev/null +++ b/device_kernels_generic_8h_source.html @@ -0,0 +1,284 @@ + + + + + + + +DFT-FE: workspace/include/deviceKernelsGeneric.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
deviceKernelsGeneric.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16
+
17#if defined(DFTFE_WITH_DEVICE)
+
18# ifndef deviceKernelsGeneric_H_
+
19# define deviceKernelsGeneric_H_
+
20
+
21# include <dftfeDataTypes.h>
+
22# include <MemorySpaceType.h>
+
23# include <headers.h>
+
24# include <TypeConfig.h>
+
25# include <DeviceTypeConfig.h>
+
26
+
27namespace dftfe
+
28{
+
29 namespace utils
+
30 {
+
31 namespace deviceKernelsGeneric
+
32 {
+
33 void
+
34 setupDevice();
+
35
+
36 template <typename ValueTypeComplex, typename ValueTypeReal>
+
37 void
+
38 copyComplexArrToRealArrsDevice(const dftfe::size_type size,
+
39 const ValueTypeComplex *complexArr,
+
40 ValueTypeReal * realArr,
+
41 ValueTypeReal * imagArr);
+
42
+
43
+
44 template <typename ValueTypeComplex, typename ValueTypeReal>
+
45 void
+
46 copyRealArrsToComplexArrDevice(const dftfe::size_type size,
+
47 const ValueTypeReal * realArr,
+
48 const ValueTypeReal * imagArr,
+
49 ValueTypeComplex * complexArr);
+
50
+
51 template <typename ValueType1, typename ValueType2>
+
52 void
+
53 copyValueType1ArrToValueType2Arr(const dftfe::size_type size,
+
54 const ValueType1 * valueType1Arr,
+
55 ValueType2 * valueType2Arr,
+
56 const deviceStream_t streamId = 0);
+
57
+
58
+
59 template <typename ValueType1, typename ValueType2>
+
60 void
+
61 stridedCopyToBlock(
+
62 const dftfe::size_type contiguousBlockSize,
+
63 const dftfe::size_type numContiguousBlocks,
+
64 const ValueType1 * copyFromVec,
+
65 ValueType2 * copyToVecBlock,
+
66 const dftfe::global_size_type *copyFromVecStartingContiguousBlockIds);
+
67
+
68
+
69
+
70 template <typename ValueType1, typename ValueType2>
+
71 void
+
72 stridedCopyFromBlock(
+
73 const dftfe::size_type contiguousBlockSize,
+
74 const dftfe::size_type numContiguousBlocks,
+
75 const ValueType1 * copyFromVecBlock,
+
76 ValueType2 * copyToVec,
+
77 const dftfe::global_size_type *copyFromVecStartingContiguousBlockIds);
+
78
+
79 template <typename ValueType1, typename ValueType2>
+
80 void
+
81 stridedCopyToBlockConstantStride(const dftfe::size_type blockSizeTo,
+
82 const dftfe::size_type blockSizeFrom,
+
83 const dftfe::size_type numBlocks,
+
84 const dftfe::size_type startingId,
+
85 const ValueType1 * copyFromVec,
+
86 ValueType2 * copyToVec);
+
87
+
88
+
89 template <typename ValueType1, typename ValueType2>
+
90 void
+
91 stridedCopyConstantStride(const dftfe::size_type blockSize,
+
92 const dftfe::size_type strideTo,
+
93 const dftfe::size_type strideFrom,
+
94 const dftfe::size_type numBlocks,
+
95 const dftfe::size_type startingToId,
+
96 const dftfe::size_type startingFromId,
+
97 const ValueType1 * copyFromVec,
+
98 ValueType2 * copyToVec);
+
99
+
100
+
101 template <typename ValueType1, typename ValueType2>
+
102 void
+
103 stridedCopyFromBlockConstantStride(const dftfe::size_type blockSizeTo,
+
104 const dftfe::size_type blockSizeFrom,
+
105 const dftfe::size_type numBlocks,
+
106 const dftfe::size_type startingId,
+
107 const ValueType1 * copyFromVec,
+
108 ValueType2 * copyToVec);
+
109
+
110
+
111 template <typename ValueType1, typename ValueType2>
+
112 void
+
113 axpby(const dftfe::size_type n,
+
114 const ValueType1 * x,
+
115 ValueType1 * y,
+
116 const ValueType2 a,
+
117 const ValueType2 b);
+
118
+
119 template <typename ValueType>
+
120 void
+
121 axpyStridedBlockAtomicAdd(
+
122 const dftfe::size_type contiguousBlockSize,
+
123 const dftfe::size_type numContiguousBlocks,
+
124 const ValueType * addFromVec,
+
125 ValueType * addToVec,
+
126 const dftfe::global_size_type *addToVecStartingContiguousBlockIds);
+
127
+
128 template <typename ValueType>
+
129 void
+
130 axpyStridedBlockAtomicAdd(
+
131 const dftfe::size_type contiguousBlockSize,
+
132 const dftfe::size_type numContiguousBlocks,
+
133 const ValueType * addFromVec,
+
134 double * addToVecReal,
+
135 double * addToVecImag,
+
136 const dftfe::global_size_type *addToVecStartingContiguousBlockIds);
+
137
+
138
+
139 template <typename ValueType1, typename ValueType2>
+
140 void
+
141 ascal(const dftfe::size_type n, ValueType1 *x, const ValueType2 a);
+
142
+
143 template <typename ValueType1, typename ValueType2>
+
144 void
+
145 stridedBlockScale(const dftfe::size_type contiguousBlockSize,
+
146 const dftfe::size_type numContiguousBlocks,
+
147 const ValueType1 a,
+
148 const ValueType1 * s,
+
149 ValueType2 * x);
+
150
+
151 void
+
152 add(double * y,
+
153 const double * x,
+
154 const double alpha,
+
155 const dftfe::size_type size,
+
156 dftfe::utils::deviceBlasHandle_t &deviceBlasHandle);
+
157
+
158 double
+
159 l2_norm(const double * x,
+
160 const dftfe::size_type size,
+
161 const MPI_Comm & mpi_communicator,
+
162 dftfe::utils::deviceBlasHandle_t &deviceBlasHandle);
+
163
+
164 double
+
165 dot(const double * x,
+
166 const double * y,
+
167 const dftfe::size_type size,
+
168 const MPI_Comm & mpi_communicator,
+
169 dftfe::utils::deviceBlasHandle_t &deviceBlasHandle);
+
170
+
171 template <typename ValueType>
+
172 void
+
173 sadd(ValueType * y,
+
174 ValueType * x,
+
175 const ValueType beta,
+
176 const dftfe::size_type size);
+
177
+
178 } // namespace deviceKernelsGeneric
+
179 } // namespace utils
+
180} // namespace dftfe
+
181
+
182# endif
+
183#endif
+ + + +
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ + +
__forceinline__ __device__ unsigned int add(unsigned int a, unsigned int b)
Definition DeviceDataTypeOverloads.cu.h:363
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/dft_8h.html b/dft_8h.html new file mode 100644 index 000000000..0335b7040 --- /dev/null +++ b/dft_8h.html @@ -0,0 +1,137 @@ + + + + + + + +DFT-FE: workspace/include/dft.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dft.h File Reference
+
+
+
#include <constants.h>
+#include <constraintMatrixInfo.h>
+#include <elpaScalaManager.h>
+#include <headers.h>
+#include <MemorySpaceType.h>
+#include <MemoryStorage.h>
+#include <FEBasisOperations.h>
+#include <BLASWrapper.h>
+#include <complex>
+#include <deque>
+#include <iomanip>
+#include <iostream>
+#include <numeric>
+#include <sstream>
+#include <chebyshevOrthogonalizedSubspaceIterationSolver.h>
+#include <dealiiLinearSolver.h>
+#include <dftParameters.h>
+#include <eigenSolver.h>
+#include <interpolation.h>
+#include <kerkerSolverProblem.h>
+#include <KohnShamHamiltonianOperator.h>
+#include <meshMovementAffineTransform.h>
+#include <meshMovementGaussian.h>
+#include <poissonSolverProblem.h>
+#include <triangulationManager.h>
+#include <vselfBinsManager.h>
+#include <excManager.h>
+#include <dftd.h>
+#include <force.h>
+#include "dftBase.h"
+#include <mixingClass.h>
+#include <oncvClass.h>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >
 This class is the primary interface location of all other parts of the DFT-FE code for all steps involved in obtaining the Kohn-Sham DFT ground-state solution. More...
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/dft_8h_source.html b/dft_8h_source.html new file mode 100644 index 000000000..edb9190fb --- /dev/null +++ b/dft_8h_source.html @@ -0,0 +1,2204 @@ + + + + + + + +DFT-FE: workspace/include/dft.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dft.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#ifndef dft_H_
+
19#define dft_H_
+
20#include <constants.h>
+ +
22#include <elpaScalaManager.h>
+
23#include <headers.h>
+
24#include <MemorySpaceType.h>
+
25#include <MemoryStorage.h>
+
26#include <FEBasisOperations.h>
+
27#include <BLASWrapper.h>
+
28
+
29#include <complex>
+
30#include <deque>
+
31#include <iomanip>
+
32#include <iostream>
+
33#include <numeric>
+
34#include <sstream>
+
35
+
36#ifdef DFTFE_WITH_DEVICE
+ + +
39# include "deviceKernelsGeneric.h"
+ + +
42# include <linearSolverCGDevice.h>
+ +
44#endif
+
45
+ +
47#include <dealiiLinearSolver.h>
+
48#include <dftParameters.h>
+
49#include <eigenSolver.h>
+
50#include <interpolation.h>
+
51#include <kerkerSolverProblem.h>
+ + + + + +
57#include <vselfBinsManager.h>
+
58#include <excManager.h>
+
59#include <dftd.h>
+
60#include <force.h>
+
61#include "dftBase.h"
+
62#ifdef USE_PETSC
+
63# include <petsc.h>
+
64
+
65# include <slepceps.h>
+
66#endif
+
67
+
68#include <mixingClass.h>
+
69#include <oncvClass.h>
+
70
+
71namespace dftfe
+
72{
+
73 //
+
74 // Initialize Namespace
+
75 //
+
76
+
77
+
78
+
79#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
80
+
81 struct orbital
+
82 {
+
83 unsigned int atomID;
+
84 unsigned int waveID;
+
85 unsigned int Z, n, l;
+
86 int m;
+
87 alglib::spline1dinterpolant psi;
+
88 };
+
89
+
90 /* code that must be skipped by Doxygen */
+
91 // forward declarations
+
92 template <unsigned int T1, unsigned int T2, dftfe::utils::MemorySpace memory>
+
93 class symmetryClass;
+
94 template <unsigned int T1, unsigned int T2, dftfe::utils::MemorySpace memory>
+
95 class forceClass;
+
96#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
97
+
98 /**
+
99 * @brief This class is the primary interface location of all other parts of the DFT-FE code
+
100 * for all steps involved in obtaining the Kohn-Sham DFT ground-state
+
101 * solution.
+
102 *
+
103 * @author Shiva Rudraraju, Phani Motamarri, Sambit Das
+
104 */
+
105 template <unsigned int FEOrder,
+
106 unsigned int FEOrderElectro,
+ +
+
108 class dftClass : public dftBase
+
109 {
+ +
111
+ +
113
+
114 public:
+
115 /**
+
116 * @brief dftClass constructor
+
117 *
+
118 * @param[in] mpi_comm_parent parent communicator
+
119 * @param[in] mpi_comm_domain mpi_communicator for domain decomposition
+
120 * parallelization
+
121 * @param[in] interpoolcomm mpi_communicator for parallelization over k
+
122 * points
+
123 * @param[in] interBandGroupComm mpi_communicator for parallelization over
+
124 * bands
+
125 * @param[in] scratchFolderName scratch folder name
+
126 * @param[in] dftParams dftParameters object containg parameter values
+
127 * parsed from an input parameter file in dftfeWrapper class
+
128 */
+ + +
131 const MPI_Comm & interpoolcomm,
+ +
133 const std::string &scratchFolderName,
+ +
135
+
136 /**
+
137 * @brief dftClass destructor
+
138 */
+ +
140
+
141 /**
+
142 * @brief atomic system pre-processing steps.
+
143 *
+
144 * Reads the coordinates of the atoms.
+
145 * If periodic calculation, reads fractional coordinates of atoms in the
+
146 * unit-cell, lattice vectors, kPoint quadrature rules to be used and also
+
147 * generates image atoms. Also determines orbital-ordering
+
148 */
+
149 void
+ +
151
+
152 /**
+
153 * @brief Does KSDFT problem pre-processing steps including mesh generation calls.
+
154 */
+
155 void
+ +
157
+
158 /**
+
159 * @brief Does KSDFT problem pre-processing steps but without remeshing.
+
160 */
+
161 void
+ +
163 const bool checkSmearedChargeWidthsForOverlap = true,
+
164 const bool useSingleAtomSolutionOverride = false,
+
165 const bool isMeshDeformed = false);
+
166
+
167
+
168
+
169 /**
+
170 * @brief FIXME: legacy call, move to main.cc
+
171 */
+
172 void
+ +
174
+
175 /**
+
176 * @brief Writes inital density and mesh to file.
+
177 */
+
178 void
+ +
180
+
181 /**
+
182 * @brief compute approximation to ground-state without solving the SCF iteration
+
183 */
+
184 void
+ +
186 /**
+
187 * @brief Kohn-Sham ground-state solve using SCF iteration
+
188 *
+
189 * @return tuple of boolean flag on whether scf converged,
+
190 * and L2 norm of residual electron-density of the last SCF iteration step
+
191 *
+
192 */
+
193 std::tuple<bool, double>
+
194 solve(const bool computeForces = true,
+
195 const bool computestress = true,
+
196 const bool restartGroundStateCalcFromChk = false);
+
197
+
198 void
+ +
200
+
201 void
+ +
203
+
204
+
205 void
+ + + + + + + +
213
+
214 /**
+
215 * @brief Copies the residual residualValues=outValues-inValues
+
216 */
+
217 double
+ + +
220 &outValues,
+ +
222 &inValues,
+ + + +
226 & JxW,
+
227 const bool computeNorm);
+
228
+
229
+
230 double
+ + + +
234
+
235
+
236 /**
+
237 * @brief Computes the diagonal mass matrix for rho nodal grid, used for nodal mixing
+
238 */
+
239 void
+ + +
242 &massVec);
+
243
+
244 void
+ +
246
+
247
+
248 void
+ +
250
+
251
+
252 void
+ +
254
+
255
+
256 double
+ +
258
+
259 double
+ +
261
+
262 double
+ +
264
+ + +
267
+ + +
270
+
271 double
+ +
273
+
274 void
+ +
276
+
277 virtual void
+ +
279
+
280 /**
+
281 * @brief Number of Kohn-Sham eigen values to be computed
+
282 */
+
283 unsigned int d_numEigenValues;
+
284
+
285 /**
+
286 * @brief Number of Kohn-Sham eigen values to be computed in the Rayleigh-Ritz step
+
287 * after spectrum splitting.
+
288 */
+
289 unsigned int d_numEigenValuesRR;
+
290
+
291 /**
+
292 * @brief Number of random wavefunctions
+
293 */
+ +
295
+
296 void
+ +
298
+
299 /**
+
300 *@brief Get local dofs global indices real
+
301 */
+
302 const std::vector<dealii::types::global_dof_index> &
+ +
304
+
305 /**
+
306 *@brief Get local dofs global indices imag
+
307 */
+
308 const std::vector<dealii::types::global_dof_index> &
+ +
310
+
311 /**
+
312 *@brief Get local dofs local proc indices real
+
313 */
+
314 const std::vector<dealii::types::global_dof_index> &
+ +
316
+
317 /**
+
318 *@brief Get local dofs local proc indices imag
+
319 */
+
320 const std::vector<dealii::types::global_dof_index> &
+ +
322
+
323 /**
+
324 *@brief Get matrix free data object
+
325 */
+
326 const dealii::MatrixFree<3, double> &
+ +
328
+
329
+
330 /** @brief Updates atom positions, remeshes/moves mesh and calls appropriate reinits.
+
331 *
+
332 * Function to update the atom positions and mesh based on the provided
+
333 * displacement input. Depending on the maximum displacement magnitude this
+
334 * function decides wether to do auto remeshing or move mesh using Gaussian
+
335 * functions. Additionaly this function also wraps the atom position across
+
336 * the periodic boundary if the atom moves across it beyond a certain
+
337 * magnitude. In case of floating atoms, only the atomic positions are
+
338 * updated keeping the mesh fixed. This function also calls initNoRemesh to
+
339 * reinitialize all the required FEM and KSDFT objects.
+
340 *
+
341 * @param[in] globalAtomsDisplacements vector containing the displacements
+
342 * (from current position) of all atoms (global).
+
343 * @return void.
+
344 */
+
345 void
+ +
347 const std::vector<dealii::Tensor<1, 3, double>> &globalAtomsDisplacements,
+
348 const double maxJacobianRatioFactor = 1.25,
+
349 const bool useSingleAtomSolutionsOverride = false);
+
350
+
351
+
352 /**
+
353 * @brief writes the current domain bounding vectors and atom coordinates to files, which are required for
+
354 * geometry relaxation restart
+
355
+
356 */
+
357 void
+ +
359
+
360 /**
+
361 * @brief writes the current domain bounding vectors and atom coordinates to files for
+
362 * structural optimization and dynamics restarts. The coordinates are stored
+
363 * as: 1. fractional for semi-periodic/periodic 2. Cartesian for
+
364 * non-periodic.
+
365 * @param[in] Path The folder path to store the atom coordinates required
+
366 * during restart.
+
367 */
+
368 void
+
369 writeDomainAndAtomCoordinates(const std::string Path) const;
+
370
+
371 /**
+
372 * @brief writes atomistics data for subsequent post-processing. Related to
+
373 * WRITE STRUCTURE ENERGY FORCES DATA POST PROCESS input parameter.
+
374 * @param[in] Path The folder path to store the atomistics data.
+
375 */
+
376 void
+ +
378
+
379 /**
+
380 * @brief writes quadrature grid information and associated spin-up
+
381 * and spin-down electron-density for post-processing
+
382 * @param[in] Path The folder path to store the atomistics data.
+
383 */
+
384 virtual void
+
385 writeGSElectronDensity(const std::string Path) const;
+
386
+
387
+
388 /**
+
389 * @brief Gets the current atom Locations in cartesian form
+
390 * (origin at center of domain) from dftClass
+
391 */
+
392 std::vector<std::vector<double>>
+ +
394
+
395 /**
+
396 * @brief Gets the current atom Locations in fractional form
+
397 * from dftClass (only applicable for periodic and semi-periodic BCs)
+
398 */
+
399 std::vector<std::vector<double>>
+ +
401
+
402
+
403
+
404 /**
+
405 * @brief Gets the current cell lattice vectors
+
406 *
+
407 * @return std::vector<std::vector<double>> 3 \times 3 matrix,lattice[i][j]
+
408 * corresponds to jth component of ith lattice vector
+
409 */
+
410 std::vector<std::vector<double>>
+
411 getCell() const;
+
412
+
413 /**
+
414 * @brief Gets the current cell volume
+
415 *
+
416 */
+
417 double
+ +
419
+
420 /**
+
421 * @brief Gets the current atom types from dftClass
+
422 */
+
423 std::set<unsigned int>
+ +
425
+
426 /**
+
427 * @brief Gets the current atomic forces from dftClass
+
428 */
+
429 std::vector<double>
+ +
431
+
432 /**
+
433 * @brief Gets the current cell stress from dftClass
+
434 */
+
435 dealii::Tensor<2, 3, double>
+ +
437
+
438 /**
+
439 * @brief Get reference to dftParameters object
+
440 */
+ + +
443
+
444 private:
+
445 /**
+
446 * @brief generate image charges and update k point cartesian coordinates based
+
447 * on current lattice vectors
+
448 */
+
449 void
+ +
451
+
452 void
+ +
454 const std::vector<std::vector<double>> &atomCoordinates);
+
455
+
456
+
457 /**
+
458 *@brief project ground state electron density from previous mesh into
+
459 * the new mesh to be used as initial guess for the new ground state solve
+
460 */
+
461 void
+ +
463
+
464 /**
+
465 *@brief save triangulation information and rho quadrature data to checkpoint file for restarts
+
466 */
+
467 void
+ +
469
+
470 /**
+
471 *@brief load triangulation information rho quadrature data from checkpoint file for restarted run
+
472 */
+
473 void
+ +
475
+
476 void
+ +
478 void
+ +
480
+
481 /// creates datastructures related to periodic image charges
+
482 void
+ +
484 std::vector<int> & imageIds,
+
485 std::vector<double> & imageCharges,
+
486 std::vector<std::vector<double>> &imagePositions);
+
487
+
488 void
+ +
490 const double pspCutOff,
+
491 const std::vector<int> & imageIds,
+
492 const std::vector<std::vector<double>> &imagePositions,
+
493 std::vector<std::vector<int>> & globalChargeIdToImageIdMap);
+
494
+
495 void
+ +
497
+
498 //
+
499 // generate mesh using a-posteriori error estimates
+
500 //
+
501 void
+ + + +
505 double
+ +
507
+
508
+
509 /**
+
510 *@brief moves the triangulation vertices using Gaussians such that the all atoms are on triangulation vertices
+
511 */
+
512 void moveMeshToAtoms(dealii::Triangulation<3, 3> &triangulationMove,
+
513 dealii::Triangulation<3, 3> &triangulationSerial,
+
514 bool reuseFlag = false,
+
515 bool moveSubdivided = false);
+
516
+
517 /**
+
518 *@brief a
+
519 */
+
520 void
+ +
522
+
523 /**
+
524 *@brief a
+
525 */
+
526 void
+ +
528
+
529 /**
+
530 * Initializes the guess of electron-density and single-atom wavefunctions
+
531 * on the mesh, maps finite-element nodes to given atomic positions,
+
532 * initializes pseudopotential files and exchange-correlation functionals to
+
533 * be used based on user-choice. In periodic problems, periodic faces are
+
534 * mapped here. Further finite-element nodes to be pinned for solving the
+
535 * Poisson problem electro-static potential is set here
+
536 */
+ +
538 dealii::parallel::distributed::Triangulation<3> &triangulation);
+
539 void
+ +
541 const bool meshOnlyDeformed = false,
+
542 const bool vselfPerturbationUpdateForStress = false);
+
543 void
+ +
545 void
+ +
547
+
548 /**
+
549 * create a dofHandler containing finite-element interpolating polynomial
+
550 * twice of the original polynomial required for Kerker mixing and
+
551 * initialize various objects related to this refined dofHandler
+
552 */
+ +
554 dealii::parallel::distributed::Triangulation<3> &triangulation);
+
555 void
+ +
557 const bool meshOnlyDeformed,
+
558 const bool vselfPerturbationUpdateForStress = false);
+
559
+
560
+
561 void
+ +
563
+
564 /**
+
565 *@brief Sets inhomegeneous dirichlet boundary conditions upto quadrupole for total potential constraints on
+
566 * non-periodic boundary (boundary id==0).
+
567 *
+
568 * @param[in] dofHandler
+
569 * @param[out] constraintMatrix dealii::AffineConstraints<double> object
+
570 *with inhomogeneous Dirichlet boundary condition entries added
+
571 */
+
572 void
+ +
574 const dealii::DoFHandler<3> & _dofHandler,
+
575 const dealii::AffineConstraints<double> &onlyHangingNodeConstraints,
+
576 dealii::AffineConstraints<double> & constraintMatrix);
+
577
+
578
+
579 void
+ +
581 const std::shared_ptr<
+ +
583 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
+ + +
586 const dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>
+ + +
589
+
590
+
591 /**
+
592 *@brief interpolate rho nodal data to quadrature data using FEEvaluation
+
593 *
+
594 *@param[in] basisOperationsPtr basisoperationsPtr object
+
595 *@param[in] nodalField nodal data to be interpolated
+
596 *@param[out] quadratureValueData to be computed at quadrature points
+
597 *@param[out] quadratureGradValueData to be computed at quadrature points
+
598 *@param[in] isEvaluateGradData denotes a flag to evaluate gradients or not
+
599 */
+
600 void
+ +
602 const std::shared_ptr<
+ +
604 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
+ + + + +
609 dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>
+ +
611 dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>
+ +
613 dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>
+ + + +
617
+
618 /**
+
619 *@brief interpolate nodal data to quadrature data using FEEvaluation
+
620 *
+
621 *@param[in] matrixFreeData matrix free data object
+
622 *@param[in] nodalField nodal data to be interpolated
+
623 *@param[out] quadratureValueData to be computed at quadrature points
+
624 *@param[out] quadratureGradValueData to be computed at quadrature points
+
625 *@param[in] isEvaluateGradData denotes a flag to evaluate gradients or not
+
626 */
+
627 void
+ +
629 const std::shared_ptr<
+ +
631 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
+ + + + +
636 dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>
+ +
638 dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>
+ + +
641
+
642
+
643 /**
+
644 *@brief interpolate rho nodal data to quadrature data using FEEvaluation
+
645 *
+
646 *@param[in] basisOperationsPtr basisoperationsPtr object
+
647 *@param[in] nodalField nodal data to be interpolated
+
648 *@param[out] quadratureValueData to be computed at quadrature points
+
649 *@param[out] quadratureGradValueData to be computed at quadrature points
+
650 *@param[in] isEvaluateGradData denotes a flag to evaluate gradients or not
+
651 */
+
652 void
+ +
654 const std::shared_ptr<
+ +
656 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
+ + + + +
661 dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>
+ +
663 dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>
+ + +
666
+
667
+
668 /**
+
669 *@brief add atomic densities at quadrature points
+
670 *
+
671 */
+
672 void
+ + + + + +
678 const bool isConsiderGradData = false);
+
679
+
680
+
681 /**
+
682 *@brief Finds the global dof ids of the nodes containing atoms.
+
683 *
+
684 * @param[in] dofHandler
+
685 * @param[out] atomNodeIdToChargeValueMap local map of global dof id to atom
+
686 *charge id
+
687 */
+
688 void
+
689 locateAtomCoreNodes(const dealii::DoFHandler<3> &_dofHandler,
+
690 std::map<dealii::types::global_dof_index, double>
+ +
692
+
693 /**
+
694 *@brief Sets homogeneous dirichlet boundary conditions on a node farthest from
+
695 * all atoms (pinned node). This is only done in case of periodic boundary
+
696 *conditions to get an unique solution to the total electrostatic potential
+
697 *problem.
+
698 *
+
699 * @param[in] dofHandler
+
700 * @param[in] constraintMatrixBase base dealii::AffineConstraints<double>
+
701 *object
+
702 * @param[out] constraintMatrix dealii::AffineConstraints<double> object
+
703 *with homogeneous Dirichlet boundary condition entries added
+
704 */
+
705 void
+ +
707 const dealii::DoFHandler<3> & _dofHandler,
+
708 const dealii::AffineConstraints<double> &constraintMatrixBase,
+
709 dealii::AffineConstraints<double> & constraintMatrix);
+
710
+
711 void
+ +
713
+ +
715
+
716 void
+ +
718 void
+ +
720 void
+ +
722 std::vector<std::vector<distributedCPUVec<double>>> eigenVectors);
+
723 void
+ +
725
+
726
+
727 /**
+
728 *@brief computes density nodal data from wavefunctions
+
729 */
+
730 void
+ +
732
+
733
+
734 void
+ + + + +
739
+
740 void
+ +
742 void
+ +
744 void
+ +
746 void
+
747 loadPSIFiles(unsigned int Z,
+
748 unsigned int n,
+
749 unsigned int l,
+
750 unsigned int &flag);
+
751 void
+ +
753 const dealii::DoFHandler<3> & _dofHandler,
+
754 const unsigned int lpspQuadratureId,
+
755 const dealii::MatrixFree<3, double> & _matrix_free_data,
+
756 const unsigned int _phiExtDofHandlerIndex,
+
757 const dealii::AffineConstraints<double> &phiExtConstraintMatrix,
+
758 const std::map<dealii::types::global_dof_index, dealii::Point<3>>
+ + + +
762 std::map<dealii::CellId, std::vector<double>> & _pseudoValues,
+
763 std::map<unsigned int, std::map<dealii::CellId, std::vector<double>>>
+ +
765
+
766
+
767
+
768 /**
+
769 *@brief Sets homegeneous dirichlet boundary conditions for total potential constraints on
+
770 * non-periodic boundary (boundary id==0).
+
771 *
+
772 * @param[in] dofHandler
+
773 * @param[out] constraintMatrix dealii::AffineConstraints<double> object
+
774 *with homogeneous Dirichlet boundary condition entries added
+
775 */
+
776 void
+ +
778 const dealii::DoFHandler<3> & _dofHandler,
+
779 const dealii::AffineConstraints<double> &onlyHangingNodeConstraints,
+
780 dealii::AffineConstraints<double> & constraintMatrix);
+
781
+
782
+
783
+
784 /**
+
785 *@brief Computes total charge by integrating the electron-density
+
786 */
+
787 double
+
788 totalCharge(const dealii::DoFHandler<3> & dofHandlerOfField,
+ +
790
+
791
+
792 double
+ +
794 const dealii::DoFHandler<3> & dofHandlerOfField,
+
795 const std::map<dealii::CellId, std::vector<double>> *rhoQuadValues);
+
796
+
797 double
+ +
799 const dealii::DoFHandler<3> &dofHandlerOfField,
+ + +
802
+
803
+
804 double
+
805 totalCharge(const dealii::MatrixFree<3, double> &matrixFreeDataObject,
+ +
807
+
808
+
809
+
810 double
+
811 rhofieldl2Norm(const dealii::MatrixFree<3, double> &matrixFreeDataObject,
+ +
813 const unsigned int dofHandlerId,
+
814 const unsigned int quadratureId);
+
815
+
816 double
+ +
818 const dealii::MatrixFree<3, double> &matrixFreeDataObject,
+ + +
821 const unsigned int dofHandlerId,
+
822 const unsigned int quadratureId);
+
823
+
824
+
825 double
+
826 fieldGradl2Norm(const dealii::MatrixFree<3, double> &matrixFreeDataObject,
+ +
828
+
829 /**
+
830 *@brief l2 projection
+
831 */
+
832 void
+ +
834 const std::shared_ptr<
+ +
836 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
+ + + + +
841 const dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>
+ + +
844
+
845 /**
+
846 *@brief l2 projection
+
847 */
+
848 void
+ +
850 const std::shared_ptr<
+ +
852 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
+ + + + +
857 const dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>
+ + +
860
+
861 /**
+
862 *@brief Computes net magnetization from the difference of local spin densities
+
863 */
+
864 double
+ + + +
868
+
869 /**
+
870 *@brief normalize the input electron density
+
871 */
+
872 void
+ +
874
+
875 /**
+
876 *@brief normalize the output electron density in each scf
+
877 */
+
878 void
+ +
880
+
881 /**
+
882 *@brief normalize the electron density
+
883 */
+
884 void
+ +
886
+
887 /**
+
888 *@brief Computes output electron-density from wavefunctions
+
889 */
+
890 void
+ +
892 const bool isGroundState = false);
+
893
+
894 /**
+
895 *@brief Mixing schemes for mixing electron-density
+
896 */
+
897
+
898 void
+ + + + + +
904#endif
+ + + + + +
910
+
911 double
+ +
913
+
914 double
+ +
916 const unsigned int scfIter);
+
917
+
918 /**
+
919 *@brief Computes Fermi-energy obtained by imposing constraint on the number of electrons
+
920 */
+
921 void
+ +
923 const std::vector<std::vector<double>> &eigenValuesInput,
+
924 const double numElectronsInput);
+
925 /**
+
926 *@brief Computes Fermi-energy obtained by imposing separate constraints on the number of spin-up and spin-down electrons
+
927 */
+
928 void
+ +
930 const std::vector<std::vector<double>> &eigenValuesInput);
+
931
+
932 /**
+
933 *@brief compute density of states and local density of states
+
934 */
+
935 void
+
936 compute_tdos(const std::vector<std::vector<double>> &eigenValuesInput,
+
937 const unsigned int highestStateOfInterest,
+
938 const std::string & fileName);
+
939
+
940 void
+
941 compute_ldos(const std::vector<std::vector<double>> &eigenValuesInput,
+
942 const std::string & fileName);
+
943
+
944 void
+
945 compute_pdos(const std::vector<std::vector<double>> &eigenValuesInput,
+
946 const std::string & fileName);
+
947
+
948
+
949 /**
+
950 *@brief compute localization length
+
951 */
+
952 void
+ +
954
+
955 /**
+
956 *@brief write wavefunction solution fields
+
957 */
+
958 void
+ +
960
+
961 /**
+
962 *@brief write electron density solution fields
+
963 */
+
964 void
+ +
966
+
967 /**
+
968 *@brief write the KS eigen values for given BZ sampling/path
+
969 */
+
970 void
+ +
972
+
973 /**
+
974 *@brief Computes the volume of the domain
+
975 */
+
976 double
+
977 computeVolume(const dealii::DoFHandler<3> &_dofHandler);
+
978
+
979 /**
+
980 *@brief Deforms the domain by the given deformation gradient and reinitializes the
+
981 * dftClass datastructures.
+
982 */
+
983 void
+
984 deformDomain(const dealii::Tensor<2, 3, double> &deformationGradient,
+
985 const bool vselfPerturbationUpdateForStress = false,
+
986 const bool useSingleAtomSolutionsOverride = false,
+
987 const bool print = true);
+
988
+
989 /**
+
990 *@brief Computes inner Product and Y = alpha*X + Y for complex vectors used during
+
991 * periodic boundary conditions
+
992 */
+
993
+
994#ifdef USE_COMPLEX
+
995 std::complex<double>
+ +
997
+
998 void
+
999 alphaTimesXPlusY(std::complex<double> alpha,
+ + +
1002
+
1003#endif
+
1004 /**
+
1005 *@brief Sets dirichlet boundary conditions for total potential constraints on
+
1006 * non-periodic boundary (boundary id==0). Currently setting homogeneous bc
+
1007 *
+
1008 */
+
1009 void
+ +
1011
+
1012
+
1013
+
1014 std::shared_ptr<excManager> d_excManagerPtr;
+ +
1016
+
1017 /**
+
1018 * stores required data for Kohn-Sham problem
+
1019 */
+ +
1021 std::set<unsigned int> atomTypes;
+
1022
+
1023 /// FIXME: eventually it should be a map of atomic number to struct-
+
1024 /// {valence number, mesh input etc}
+
1025 std::map<unsigned int, unsigned int> d_atomTypeAtributes;
+
1026
+
1027 /// FIXME: remove atom type atributes from atomLocations
+
1028 std::vector<std::vector<double>> atomLocations, atomLocationsFractional,
+ +
1030 std::vector<std::vector<double>> d_atomLocationsInterestPseudopotential;
+
1031 std::map<unsigned int, unsigned int>
+ +
1033 std::vector<std::vector<double>> d_atomLocationsAutoMesh;
+
1034 std::vector<std::vector<double>> d_imagePositionsAutoMesh;
+
1035
+
1036 /// Gaussian displacements of atoms read from file
+
1037 std::vector<dealii::Tensor<1, 3, double>> d_atomsDisplacementsGaussianRead;
+
1038
+
1039 ///
+ +
1041
+
1042 ///
+ +
1044
+ +
1046
+
1047 /// Gaussian generator parameter for force computation and Gaussian
+
1048 /// deformation of atoms and FEM mesh Gaussian generator: Gamma(r)=
+
1049 /// exp(-(r/d_gaussianConstant)^2) Stored for all domain atoms
+
1050 std::vector<double> d_gaussianConstantsForce;
+
1051
+
1052 /// Gaussian constants for automesh mesh movement stored for all domain
+
1053 /// atoms
+
1054 std::vector<double> d_gaussianConstantsAutoMesh;
+
1055
+
1056 /// composite generator flat top widths for all domain atoms
+
1057 std::vector<double> d_generatorFlatTopWidths;
+
1058
+
1059 /// flat top widths for all domain atoms in case of automesh mesh movement
+
1060 /// composite gaussian
+
1061 std::vector<double> d_flatTopWidthsAutoMeshMove;
+
1062
+
1063 /// smeared charge widths for all domain atoms
+
1064 std::vector<double> d_smearedChargeWidths;
+
1065
+
1066 /// smeared charge normalization scaling for all domain atoms
+
1067 std::vector<double> d_smearedChargeScaling;
+
1068
+
1069 /// nearest atom ids for all domain atoms
+
1070 std::vector<unsigned int> d_nearestAtomIds;
+
1071
+
1072 /// nearest atom distances for all domain atoms
+
1073 std::vector<double> d_nearestAtomDistances;
+
1074
+
1075 ///
+ +
1077
+
1078 /// vector of lendth number of periodic image charges with corresponding
+
1079 /// master chargeIds
+
1080 std::vector<int> d_imageIds;
+
1081 // std::vector<int> d_imageIdsAutoMesh;
+
1082
+
1083
+
1084 /// vector of length number of periodic image charges with corresponding
+
1085 /// charge values
+
1086 std::vector<double> d_imageCharges;
+
1087
+
1088 /// vector of length number of periodic image charges with corresponding
+
1089 /// positions in cartesian coordinates
+
1090 std::vector<std::vector<double>> d_imagePositions;
+
1091
+
1092 /// globalChargeId to ImageChargeId Map
+
1093 std::vector<std::vector<int>> d_globalChargeIdToImageIdMap;
+
1094
+
1095 /// vector of lendth number of periodic image charges with corresponding
+
1096 /// master chargeIds , generated with a truncated pspCutoff
+
1097 std::vector<int> d_imageIdsTrunc;
+
1098
+
1099 /// vector of length number of periodic image charges with corresponding
+
1100 /// charge values , generated with a truncated pspCutoff
+
1101 std::vector<double> d_imageChargesTrunc;
+
1102
+
1103 /// vector of length number of periodic image charges with corresponding
+
1104 /// positions in cartesian coordinates, generated with a truncated pspCutOff
+
1105 std::vector<std::vector<double>> d_imagePositionsTrunc;
+
1106
+
1107 /// globalChargeId to ImageChargeId Map generated with a truncated pspCutOff
+
1108 std::vector<std::vector<int>> d_globalChargeIdToImageIdMapTrunc;
+
1109
+
1110 /// distance from the domain till which periodic images will be considered
+
1111 double d_pspCutOff = 15.0;
+
1112
+
1113 /// distance from the domain till which periodic images will be considered
+
1114 const double d_pspCutOffTrunc = 15.0;
+
1115
+
1116 /// cut-off distance from atom till which non-local projectors are
+
1117 /// non-trivial
+
1118 double d_nlPSPCutOff = 8.0;
+
1119
+
1120 /// non-intersecting smeared charges of all atoms at quad points
+
1121 std::map<dealii::CellId, std::vector<double>> d_bQuadValuesAllAtoms;
+
1122
+
1123 /// non-intersecting smeared charge gradients of all atoms at quad points
+
1124 std::map<dealii::CellId, std::vector<double>> d_gradbQuadValuesAllAtoms;
+
1125
+
1126 /// non-intersecting smeared charges atom ids of all atoms at quad points
+
1127 std::map<dealii::CellId, std::vector<int>> d_bQuadAtomIdsAllAtoms;
+
1128
+
1129 /// non-intersecting smeared charges atom ids of all atoms (with image atom
+
1130 /// ids separately accounted) at quad points
+
1131 std::map<dealii::CellId, std::vector<int>> d_bQuadAtomIdsAllAtomsImages;
+
1132
+
1133 /// map of cell and non-trivial global atom ids (no images) for smeared
+
1134 /// charges for each bin
+
1135 std::map<dealii::CellId, std::vector<unsigned int>>
+ +
1137
+
1138 /// map of cell and non-trivial global atom ids (no images) for smeared
+
1139 /// charge for each bin
+
1140 std::vector<std::map<dealii::CellId, std::vector<unsigned int>>>
+ +
1142
+
1143 /// map of cell and non-trivial global atom and image ids for smeared
+
1144 /// charges for each bin
+
1145 std::map<dealii::CellId, std::vector<unsigned int>>
+ +
1147
+
1148 /// map of cell and non-trivial global atom and image ids for smeared charge
+
1149 /// for each bin
+
1150 std::vector<std::map<dealii::CellId, std::vector<unsigned int>>>
+ +
1152
+
1153 /// minimum smeared charge width
+
1154 const double d_smearedChargeWidthMin = 0.4;
+
1155
+
1156 std::vector<orbital> waveFunctionsVector;
+
1157 std::map<unsigned int,
+
1158 std::map<unsigned int,
+
1159 std::map<unsigned int, alglib::spline1dinterpolant>>>
+ +
1161 std::map<unsigned int,
+
1162 std::map<unsigned int, std::map<unsigned int, double>>>
+ +
1164
+
1165 /**
+
1166 * meshGenerator based object
+
1167 */
+ +
1169
+ +
1171 unsigned int d_autoMesh;
+
1172
+
1173
+
1174 /// affine transformation object
+ +
1176
+
1177 /// meshMovementGaussianClass object
+ +
1179
+
1180 std::vector<dealii::Tensor<1, 3, double>>
+ +
1182 std::vector<dealii::Point<3>> d_controlPointLocationsCurrentMove;
+
1183
+
1184 /// volume of the domain
+ +
1186
+
1187 /// init wfc trunctation radius
+ +
1189
+
1190 /**
+
1191 * dealii based FE data structres
+
1192 */
+
1193 dealii::FESystem<3> FE, FEEigen;
+ + + + + + + + + + + + + + +
1208 unsigned int d_gllQuadratureId;
+ + + + + + + + +
1217 unsigned int d_nOMPThreads;
+
1218 dealii::MatrixFree<3, double> matrix_free_data, d_matrixFreeDataPRefined;
+
1219 std::shared_ptr<
+ +
1221 double,
+ + +
1224 std::shared_ptr<
+
1225 dftfe::basis::
+
1226 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
+ +
1228#if defined(DFTFE_WITH_DEVICE)
+
1229 std::shared_ptr<
+ +
1231 double,
+ + +
1234 std::shared_ptr<
+
1235 dftfe::basis::
+
1236 FEBasisOperations<double, double, dftfe::utils::MemorySpace::DEVICE>>
+ +
1238#endif
+
1239
+
1240 std::shared_ptr<
+ + +
1243
+
1244 std::shared_ptr<dftfe::oncvClass<dataTypes::number, memorySpace>>
+ +
1246
+
1247
+
1248 std::shared_ptr<
+
1249#if defined(DFTFE_WITH_DEVICE)
+ +
1251#else
+ +
1253#endif
+ +
1255
+
1256 std::map<dealii::types::global_dof_index, dealii::Point<3>> d_supportPoints,
+ +
1258 std::vector<const dealii::AffineConstraints<double> *> d_constraintsVector;
+
1259 std::vector<const dealii::AffineConstraints<double> *>
+ +
1261
+
1262 /**
+
1263 * parallel objects
+
1264 */
+ +
1266#if defined(DFTFE_WITH_DEVICE)
+
1267 utils::DeviceCCLWrapper *d_devicecclMpiCommDomainPtr;
+
1268#endif
+ + + +
1272 const unsigned int n_mpi_processes;
+
1273 const unsigned int this_mpi_process;
+ + + +
1277 std::vector<dealii::types::global_dof_index> local_dof_indicesReal,
+ +
1279 std::vector<dealii::types::global_dof_index> localProc_dof_indicesReal,
+ +
1281 std::vector<bool> selectedDofsHanging;
+
1282
+ + +
1285
+ +
1287
+ +
1289
+ +
1291#ifdef DFTFE_WITH_DEVICE
+ + +
1294
+ + +
1297#endif
+
1298
+ +
1300
+ +
1302
+
1303 const std::string d_dftfeScratchFolderName;
+
1304
+
1305 /**
+
1306 * chebyshev subspace iteration solver objects
+
1307 *
+
1308 */
+ +
1310#ifdef DFTFE_WITH_DEVICE
+ + +
1313#endif
+
1314
+
1315 /**
+
1316 * constraint Matrices
+
1317 */
+
1318
+
1319 /**
+
1320 *object which is used to store dealii constraint matrix information
+
1321 *using STL vectors. The relevant dealii constraint matrix
+
1322 *has hanging node constraints and periodic constraints(for periodic
+
1323 *problems) used in eigen solve
+
1324 */
+ +
1326
+
1327
+
1328 /**
+
1329 *object which is used to store dealii constraint matrix information
+
1330 *using STL vectors. The relevant dealii constraint matrix
+
1331 *has hanging node constraints used in Poisson problem solution
+
1332 *
+
1333 */
+ +
1335
+
1336
+
1337#ifdef DFTFE_WITH_DEVICE
+
1338 dftUtils::constraintMatrixInfoDevice d_constraintsNoneDataInfoDevice;
+
1339#endif
+
1340
+
1341
+
1342 dealii::AffineConstraints<double> constraintsNone, constraintsNoneEigen,
+ +
1344
+
1345 dealii::AffineConstraints<double> d_constraintsForTotalPotentialElectro;
+
1346
+
1347 dealii::AffineConstraints<double> d_constraintsForPhiPrimeElectro;
+
1348
+
1349 dealii::AffineConstraints<double> d_constraintsForHelmholtzRhoNodal;
+
1350
+
1351 dealii::AffineConstraints<double> d_constraintsPRefined;
+
1352
+
1353 dealii::AffineConstraints<double> d_constraintsPRefinedOnlyHanging;
+
1354
+
1355 dealii::AffineConstraints<double> d_constraintsRhoNodal;
+
1356
+
1357 dealii::AffineConstraints<double> d_constraintsRhoNodalOnlyHanging;
+
1358
+ +
1360
+
1361 /**
+
1362 * data storage for Kohn-Sham wavefunctions
+
1363 */
+
1364 std::vector<std::vector<double>> eigenValues;
+
1365
+
1366 std::vector<std::vector<double>> d_densityMatDerFermiEnergy;
+
1367
+
1368 /// Spectrum split higher eigenvalues computed in Rayleigh-Ritz step
+
1369 std::vector<std::vector<double>> eigenValuesRRSplit;
+
1370
+
1371 /**
+
1372 * The indexing of d_eigenVectorsFlattenedHost and
+
1373 * d_eigenVectorsFlattenedDevice [kPoint * numSpinComponents *
+
1374 * numLocallyOwnedNodes * numWaveFunctions + iSpin * numLocallyOwnedNodes *
+
1375 * numWaveFunctions + iNode * numWaveFunctions + iWaveFunction]
+
1376 */
+ + + +
1380
+ + + + + + +
1387
+
1388 /// device eigenvectors
+
1389#ifdef DFTFE_WITH_DEVICE
+ + + + + + + + + +
1399#endif
+
1400
+
1401 /// parallel message stream
+
1402 dealii::ConditionalOStream pcout;
+
1403
+
1404 /// compute-time logger
+
1405 dealii::TimerOutput computing_timer;
+
1406 dealii::TimerOutput computingTimerStandard;
+
1407
+
1408 /// A plain global timer to track only the total elapsed time after every
+
1409 /// ground-state solve
+
1410 dealii::Timer d_globalTimer;
+
1411
+
1412 // dft related objects
+
1413 std::vector<
+ + + +
1417 std::vector<distributedCPUVec<double>> d_densityInNodalValues,
+ +
1419
+
1420 // std::map<dealii::CellId, std::vector<double>> d_phiInValues,
+
1421 // d_phiOutValues;
+ + + +
1425
+ + + +
1429
+
1430
+ +
1432
+
1433
+ + + +
1437
+
1438 // For multipole boundary conditions
+ +
1440 std::vector<double> d_dipole;
+
1441 std::vector<double> d_quadrupole;
+
1442 std::vector<double> d_smearedChargeMoments;
+ +
1444
+
1445
+
1446 /// for low rank jacobian inverse approximation
+
1447 std::deque<distributedCPUVec<double>> d_vcontainerVals;
+
1448 std::deque<distributedCPUVec<double>> d_fvcontainerVals;
+
1449 std::deque<distributedCPUVec<double>> d_vSpin0containerVals;
+
1450 std::deque<distributedCPUVec<double>> d_fvSpin0containerVals;
+
1451 std::deque<distributedCPUVec<double>> d_vSpin1containerVals;
+
1452 std::deque<distributedCPUVec<double>> d_fvSpin1containerVals;
+ +
1454 unsigned int d_rankCurrentLRD;
+ + + +
1458
+
1459 /// for xl-bomd
+
1460 std::map<dealii::CellId, std::vector<double>> d_rhoAtomsValues,
+ +
1462 std::map<unsigned int, std::map<dealii::CellId, std::vector<double>>>
+ + +
1465
+
1466 std::vector<
+ + + +
1470
+
1471 // storage for total electrostatic potential solution vector corresponding
+
1472 // to input scf electron density
+ +
1474
+
1475 // storage for total electrostatic potential solution vector corresponding
+
1476 // to output scf electron density
+ +
1478
+
1479 // storage for electrostatic potential Gateaux derivate corresponding
+
1480 // to electron number preserving electron-density peturbation (required for
+
1481 // LRDM)
+ +
1483
+
1484 // storage for sum of nuclear electrostatic potential
+ +
1486
+
1487 // storage of densities for xl-bomd
+
1488 std::deque<distributedCPUVec<double>> d_groundStateDensityHistory;
+
1489
+
1490 std::map<dealii::CellId, std::vector<double>> d_pseudoVLoc;
+
1491
+
1492 /// Internal data:: map for cell id to Vpseudo local of individual atoms.
+
1493 /// Only for atoms whose psp tail intersects the local domain.
+
1494 std::map<unsigned int, std::map<dealii::CellId, std::vector<double>>>
+ +
1496
+
1497
+
1498 std::vector<std::vector<double>> d_localVselfs;
+
1499
+
1500 // nonlocal pseudopotential related objects used only for pseudopotential
+
1501 // calculation
+
1502 std::map<dealii::CellId, std::vector<double>> d_rhoCore;
+
1503
+
1504 std::map<dealii::CellId, std::vector<double>> d_gradRhoCore;
+
1505
+
1506 std::map<unsigned int, std::map<dealii::CellId, std::vector<double>>>
+ +
1508
+
1509 std::map<dealii::CellId, std::vector<double>> d_hessianRhoCore;
+
1510
+
1511 std::map<unsigned int, std::map<dealii::CellId, std::vector<double>>>
+ +
1513
+
1514
+
1515
+
1516 /// map of atom node number and atomic weight
+
1517 std::map<dealii::types::global_dof_index, double> d_atomNodeIdToChargeMap;
+
1518
+
1519 /// vselfBinsManager object
+ +
1521
+
1522 /// Gateaux derivative of vself field with respect to affine strain tensor
+
1523 /// components using central finite difference. This is used for cell stress
+
1524 /// computation
+
1525 std::vector<distributedCPUVec<double>> d_vselfFieldGateauxDerStrainFDBins;
+
1526
+
1527 /// Compute Gateaux derivative of vself field in bins with respect to affine
+
1528 /// strain tensor components
+
1529 void
+ +
1531
+
1532 /// dftParameters object
+ +
1534
+
1535 /// kPoint cartesian coordinates
+
1536 std::vector<double> d_kPointCoordinates;
+
1537
+
1538 /// k point crystal coordinates
+
1539 std::vector<double> kPointReducedCoordinates;
+
1540
+
1541 /// k point weights
+
1542 std::vector<double> d_kPointWeights;
+
1543
+
1544 /// closest tria vertex
+
1545 std::vector<dealii::Point<3>> d_closestTriaVertexToAtomsLocation;
+
1546 std::vector<dealii::Tensor<1, 3, double>> d_dispClosestTriaVerticesToAtoms;
+
1547
+
1548 /// global k index of lower bound of the local k point set
+
1549 unsigned int lowerBoundKindex = 0;
+
1550 /**
+
1551 * Recomputes the k point cartesian coordinates from the crystal k point
+
1552 * coordinates and the current lattice vectors, which can change in each
+
1553 * ground state solve dutring cell optimization.
+
1554 */
+
1555 void
+ +
1557
+
1558 /// fermi energy
+ +
1560
+ +
1562
+ +
1564
+
1565 /// entropic energy
+ +
1567
+
1568 // chebyshev filter variables and functions
+
1569 // int numPass ; // number of filter passes
+
1570
+
1571 std::vector<double> a0;
+
1572 std::vector<double> bLow;
+
1573
+
1574 /// stores flag for first ever call to chebyshev filtering for a given FEM
+
1575 /// mesh vector for each k point and spin
+
1576 std::vector<bool> d_isFirstFilteringCall;
+
1577
+ +
1579
+ +
1581
+ +
1583
+
1584 /**
+
1585 * @ nscf variables
+
1586 */
+ +
1588 void
+ + + +
1592 void
+ + + + +
1597
+
1598 /**
+
1599 * @brief compute the maximum of the residual norm of the highest occupied state among all k points
+
1600 */
+
1601 double
+ +
1603 const std::vector<std::vector<double>>
+ +
1605 const std::vector<std::vector<double>> &eigenValuesAllkPoints,
+
1606 const double _fermiEnergy);
+
1607
+
1608
+
1609 /**
+
1610 * @brief compute the maximum of the residual norm of the highest state of interest among all k points
+
1611 */
+
1612 double
+ +
1614 const std::vector<std::vector<double>>
+ +
1616 const std::vector<std::vector<double>> &eigenValuesAllkPoints,
+
1617 const unsigned int highestState);
+
1618
+
1619
+
1620 void
+ +
1622 const unsigned int s,
+
1623 const unsigned int kPointIndex,
+ + + + +
1628 std::vector<double> & residualNormWaveFunctions,
+
1629 const bool computeResidual,
+
1630 const bool isSpectrumSplit = false,
+
1631 const bool useMixedPrec = false,
+
1632 const bool isFirstScf = false);
+
1633
+
1634
+
1635#ifdef DFTFE_WITH_DEVICE
+
1636 void
+ +
1638 const unsigned int s,
+
1639 const unsigned int kPointIndex,
+ + + + + +
1645 std::vector<double> &residualNormWaveFunctions,
+
1646 const bool computeResidual,
+
1647 const unsigned int numberRayleighRitzAvoidancePasses = 0,
+
1648 const bool isSpectrumSplit = false,
+
1649 const bool useMixedPrec = false,
+
1650 const bool isFirstScf = false);
+
1651#endif
+
1652
+
1653
+
1654#ifdef DFTFE_WITH_DEVICE
+
1655 void
+ +
1657 const unsigned int s,
+
1658 const unsigned int kPointIndex,
+ + + + + +
1664
+
1665#endif
+
1666
+
1667 void
+ +
1669 const unsigned int s,
+
1670 const unsigned int kPointIndex,
+ + + +
1674
+
1675 void
+ +
1677 const unsigned int spinType,
+
1678 const unsigned int kPointIndex,
+ + + +
1682 std::vector<double> & residualNormWaveFunctions,
+
1683 unsigned int ipass);
+
1684 };
+
+
1685
+
1686} // namespace dftfe
+
1687
+
1688#endif
+ + + + + + + +
This class performs the anderson mixing in a variable agnostic way This class takes can take differen...
Definition mixingClass.h:47
+
Definition FEBasisOperations.h:85
+
Concrete class implementing Chebyshev filtered orthogonalized subspace iteration solver.
Definition chebyshevOrthogonalizedSubspaceIterationSolver.h:38
+
dealii linear solver class wrapper
Definition dealiiLinearSolver.h:32
+
abstract base class for dft
Definition dftBase.h:34
+
This class is the primary interface location of all other parts of the DFT-FE code for all steps invo...
Definition dft.h:109
+
std::deque< distributedCPUVec< double > > d_vSpin0containerVals
Definition dft.h:1449
+
double d_atomicRhoScalingFac
Definition dft.h:714
+
const std::string d_dftfeScratchFolderName
Definition dft.h:1303
+
double rhofieldInnerProduct(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField1, const distributedCPUVec< double > &rhoNodalField2, const unsigned int dofHandlerId, const unsigned int quadratureId)
+
double d_freeEnergy
Definition dft.h:1563
+
unsigned int d_phiExtDofHandlerIndexElectro
Definition dft.h:1196
+
std::vector< unsigned int > d_nearestAtomIds
nearest atom ids for all domain atoms
Definition dft.h:1070
+
std::map< dealii::CellId, std::vector< unsigned int > > d_bCellNonTrivialAtomImageIds
Definition dft.h:1146
+
double computeMaximumHighestOccupiedStateResidualNorm(const std::vector< std::vector< double > > &residualNormWaveFunctionsAllkPoints, const std::vector< std::vector< double > > &eigenValuesAllkPoints, const unsigned int highestState)
compute the maximum of the residual norm of the highest state of interest among all k points
+
unsigned int d_phiTotAXQuadratureIdElectro
Definition dft.h:1211
+
std::vector< double > d_upperBoundUnwantedSpectrumValues
Definition dft.h:1578
+
const MPI_Comm d_mpiCommParent
Definition dft.h:1269
+
unsigned int d_densityDofHandlerIndex
Definition dft.h:1198
+
distributedCPUVec< double > d_phiTotRhoOut
Definition dft.h:1477
+
std::vector< std::vector< double > > atomLocationsFractional
Definition dft.h:1028
+
double d_entropicEnergy
entropic energy
Definition dft.h:1566
+
std::vector< double > d_gaussianConstantsAutoMesh
Definition dft.h:1054
+
void initBoundaryConditions(const bool recomputeBasisData=true, const bool meshOnlyDeformed=false, const bool vselfPerturbationUpdateForStress=false)
+
void initAtomicRho()
+
void kohnShamEigenSpaceCompute(const unsigned int s, const unsigned int kPointIndex, KohnShamHamiltonianOperator< dftfe::utils::MemorySpace::HOST > &kohnShamDFTEigenOperator, elpaScalaManager &elpaScala, chebyshevOrthogonalizedSubspaceIterationSolver &subspaceIterationSolver, std::vector< double > &residualNormWaveFunctions, const bool computeResidual, const bool isSpectrumSplit=false, const bool useMixedPrec=false, const bool isFirstScf=false)
+
std::map< dealii::CellId, std::vector< double > > d_hessianRhoCore
Definition dft.h:1509
+
void locateAtomCoreNodes(const dealii::DoFHandler< 3 > &_dofHandler, std::map< dealii::types::global_dof_index, double > &atomNodeIdToChargeValueMap)
Finds the global dof ids of the nodes containing atoms.
+
void writeMesh()
Writes inital density and mesh to file.
+
std::set< unsigned int > getAtomTypes() const
Gets the current atom types from dftClass.
+
std::vector< dealii::types::global_dof_index > local_dof_indicesImag
Definition dft.h:1278
+
const MPI_Comm mpi_communicator
Definition dft.h:1265
+
double d_monopole
Definition dft.h:1439
+
dealii::IndexSet locally_owned_dofs
Definition dft.h:1274
+
dealii::DoFHandler< 3 > d_dofHandlerRhoNodal
Definition dft.h:1195
+
void generateMPGrid()
+
double getFreeEnergy() const
+
void saveTriaInfoAndRhoNodalData()
save triangulation information and rho quadrature data to checkpoint file for restarts
+
std::vector< std::vector< double > > d_domainBoundingVectors
Definition dft.h:1029
+
unsigned int d_phiPrimeDofHandlerIndexElectro
Definition dft.h:1210
+
dealii::AffineConstraints< double > constraintsNone
Definition dft.h:1342
+
void applyHomogeneousDirichletBC(const dealii::DoFHandler< 3 > &_dofHandler, const dealii::AffineConstraints< double > &onlyHangingNodeConstraints, dealii::AffineConstraints< double > &constraintMatrix)
Sets homegeneous dirichlet boundary conditions for total potential constraints on non-periodic bounda...
+
double computeResidualNodalData(const distributedCPUVec< double > &outValues, const distributedCPUVec< double > &inValues, distributedCPUVec< double > &residualValues)
+
dealii::DoFHandler< 3 > d_dofHandlerPRefined
Definition dft.h:1194
+
void locatePeriodicPinnedNodes(const dealii::DoFHandler< 3 > &_dofHandler, const dealii::AffineConstraints< double > &constraintMatrixBase, dealii::AffineConstraints< double > &constraintMatrix)
Sets homogeneous dirichlet boundary conditions on a node farthest from all atoms (pinned node)....
+ +
void writeDomainAndAtomCoordinates(const std::string Path) const
writes the current domain bounding vectors and atom coordinates to files for structural optimization ...
+
double totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoQuadValues)
+
dealii::IndexSet locally_owned_dofsEigen
Definition dft.h:1274
+
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > d_gradRhoAtomsValuesSeparate
Definition dft.h:1463
+
std::vector< std::vector< int > > d_globalChargeIdToImageIdMapTrunc
globalChargeId to ImageChargeId Map generated with a truncated pspCutOff
Definition dft.h:1108
+
std::map< dealii::CellId, std::vector< unsigned int > > d_bCellNonTrivialAtomIds
Definition dft.h:1136
+
std::vector< dealii::Point< 3 > > d_closestTriaVertexToAtomsLocation
closest tria vertex
Definition dft.h:1545
+
std::deque< distributedCPUVec< double > > d_fvcontainerVals
Definition dft.h:1448
+
double fermiEnergyUp
Definition dft.h:1559
+
std::vector< std::vector< double > > d_densityMatDerFermiEnergy
Definition dft.h:1366
+
void l2ProjectionQuadDensityMinusAtomicDensity(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const dealii::AffineConstraints< double > &constraintMatrix, const unsigned int dofHandlerId, const unsigned int quadratureId, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, distributedCPUVec< double > &nodalField)
l2 projection
+
poissonSolverProblem< FEOrder, FEOrderElectro > d_phiTotalSolverProblem
Definition dft.h:1288
+
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > d_gradRhoCoreAtoms
Definition dft.h:1507
+
void writeStructureEnergyForcesDataPostProcess(const std::string Path) const
writes atomistics data for subsequent post-processing. Related to WRITE STRUCTURE ENERGY FORCES DATA ...
+
unsigned int d_eigenDofHandlerIndex
Definition dft.h:1196
+
std::map< dealii::CellId, std::vector< double > > d_bQuadValuesAllAtoms
non-intersecting smeared charges of all atoms at quad points
Definition dft.h:1121
+
unsigned int d_densityQuadratureIdElectro
Definition dft.h:1215
+
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_gradDensityResidualQuadValues
Definition dft.h:1469
+
const MPI_Comm interBandGroupComm
Definition dft.h:1271
+
std::vector< dealii::types::global_dof_index > local_dof_indicesReal
Definition dft.h:1277
+
std::vector< std::vector< double > > atomLocations
FIXME: remove atom type atributes from atomLocations.
Definition dft.h:1028
+
std::vector< std::vector< double > > eigenValuesRRSplit
Spectrum split higher eigenvalues computed in Rayleigh-Ritz step.
Definition dft.h:1369
+
void applyPeriodicBCHigherOrderNodes()
Computes inner Product and Y = alpha*X + Y for complex vectors used during periodic boundary conditio...
+
std::vector< double > d_kPointCoordinates
kPoint cartesian coordinates
Definition dft.h:1536
+
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > d_rhoAtomsValuesSeparate
Definition dft.h:1463
+
double fermiEnergyDown
Definition dft.h:1559
+
void deformDomain(const dealii::Tensor< 2, 3, double > &deformationGradient, const bool vselfPerturbationUpdateForStress=false, const bool useSingleAtomSolutionsOverride=false, const bool print=true)
Deforms the domain by the given deformation gradient and reinitializes the dftClass datastructures.
+
void loadPSIFiles(unsigned int Z, unsigned int n, unsigned int l, unsigned int &flag)
+
void generateImageCharges(const double pspCutOff, std::vector< int > &imageIds, std::vector< double > &imageCharges, std::vector< std::vector< double > > &imagePositions)
creates datastructures related to periodic image charges
+
void outputDensity()
write electron density solution fields
+
unsigned int d_densityDofHandlerIndexElectro
Definition dft.h:1199
+
unsigned int d_feOrderPlusOneQuadratureId
Definition dft.h:1206
+
dealii::AffineConstraints< double > d_constraintsRhoNodal
Definition dft.h:1355
+
unsigned int d_numEigenValuesRR
Number of Kohn-Sham eigen values to be computed in the Rayleigh-Ritz step after spectrum splitting.
Definition dft.h:289
+
double d_residualNormPredicted
Definition dft.h:1456
+
double lowrankApproxScfDielectricMatrixInvSpinPolarized(const unsigned int scfIter)
+
void createMasterChargeIdToImageIdMaps(const double pspCutOff, const std::vector< int > &imageIds, const std::vector< std::vector< double > > &imagePositions, std::vector< std::vector< int > > &globalChargeIdToImageIdMap)
+
void initnscf(KohnShamHamiltonianOperator< memorySpace > &kohnShamDFTEigenOperator, poissonSolverProblem< FEOrder, FEOrderElectro > &phiTotalSolverProblem, dealiiLinearSolver &CGSolver)
+
void kohnShamEigenSpaceFirstOrderDensityMatResponse(const unsigned int s, const unsigned int kPointIndex, KohnShamHamiltonianOperator< dftfe::utils::MemorySpace::HOST > &kohnShamDFTEigenOperator, elpaScalaManager &elpaScala)
+
void computeMultipoleMoments(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int densityQuadratureId, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoQuadValues, const std::map< dealii::CellId, std::vector< double > > *bQuadValues)
+
std::vector< double > bLow
Definition dft.h:1572
+
void writeDomainAndAtomCoordinates()
writes the current domain bounding vectors and atom coordinates to files, which are required for geom...
+
symmetryClass< FEOrder, FEOrderElectro, memorySpace > * symmetryPtr
Definition dft.h:1284
+
std::vector< std::vector< double > > d_imagePositionsTrunc
Definition dft.h:1105
+
double d_wfcInitTruncation
init wfc trunctation radius
Definition dft.h:1188
+
std::vector< double > d_smearedChargeWidths
smeared charge widths for all domain atoms
Definition dft.h:1064
+
unsigned int lowerBoundKindex
global k index of lower bound of the local k point set
Definition dft.h:1549
+
double d_groundStateEnergy
Definition dft.h:1559
+
void updateAtomPositionsAndMoveMesh(const std::vector< dealii::Tensor< 1, 3, double > > &globalAtomsDisplacements, const double maxJacobianRatioFactor=1.25, const bool useSingleAtomSolutionsOverride=false)
Updates atom positions, remeshes/moves mesh and calls appropriate reinits.
+
dealii::FESystem< 3 > FEEigen
Definition dft.h:1193
+
distributedCPUVec< double > d_rhoOutNodalValuesSplit
Definition dft.h:1426
+
void initLocalPseudoPotential(const dealii::DoFHandler< 3 > &_dofHandler, const unsigned int lpspQuadratureId, const dealii::MatrixFree< 3, double > &_matrix_free_data, const unsigned int _phiExtDofHandlerIndex, const dealii::AffineConstraints< double > &phiExtConstraintMatrix, const std::map< dealii::types::global_dof_index, dealii::Point< 3 > > &supportPoints, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinManager, distributedCPUVec< double > &phiExt, std::map< dealii::CellId, std::vector< double > > &_pseudoValues, std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &_pseudoValuesAtoms)
+
const std::vector< dealii::types::global_dof_index > & getLocalProcDofIndicesReal() const
Get local dofs local proc indices real.
+
double computeVolume(const dealii::DoFHandler< 3 > &_dofHandler)
Computes the volume of the domain.
+
unsigned int d_smearedChargeQuadratureIdElectro
Definition dft.h:1203
+
std::vector< double > getForceonAtoms() const
Gets the current atomic forces from dftClass.
+
std::map< dealii::CellId, std::vector< double > > d_hessianRhoAtomsValues
Definition dft.h:1461
+
void trivialSolveForStress()
+
std::tuple< bool, double > solve(const bool computeForces=true, const bool computestress=true, const bool restartGroundStateCalcFromChk=false)
Kohn-Sham ground-state solve using SCF iteration.
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_phiOutQuadValues
Definition dft.h:1423
+
std::vector< distributedCPUVec< double > > d_densityInNodalValues
Definition dft.h:1417
+
std::shared_ptr< excManager > d_excManagerPtr
Definition dft.h:1014
+
double totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const std::map< dealii::CellId, std::vector< double > > *rhoQuadValues)
+
std::vector< const dealii::AffineConstraints< double > * > d_constraintsVector
Definition dft.h:1258
+
dftUtils::constraintMatrixInfo constraintsNoneDataInfo
Definition dft.h:1334
+
void readPSIRadialValues()
+
~dftClass()
dftClass destructor
+
distributedCPUVec< double > d_rhoNodalFieldRefined
Definition dft.h:1427
+
std::map< unsigned int, unsigned int > d_atomTypeAtributes
Definition dft.h:1025
+
std::map< unsigned int, unsigned int > d_atomIdPseudopotentialInterestToGlobalId
Definition dft.h:1032
+
unsigned int d_nOMPThreads
Definition dft.h:1217
+
std::vector< bool > d_isFirstFilteringCall
Definition dft.h:1576
+
std::vector< bool > selectedDofsHanging
Definition dft.h:1281
+
void run()
FIXME: legacy call, move to main.cc.
+
std::vector< const dealii::AffineConstraints< double > * > d_constraintsVectorElectro
Definition dft.h:1260
+
double d_nlPSPCutOff
Definition dft.h:1118
+
std::map< dealii::types::global_dof_index, dealii::Point< 3 > > d_supportPointsPRefined
Definition dft.h:1257
+
std::vector< distributedCPUVec< double > > d_densityOutNodalValues
Definition dft.h:1418
+
void writeMesh(std::string meshFileName)
+
dealii::DoFHandler< 3 > dofHandler
Definition dft.h:1194
+
virtual void resetRhoNodalSplitIn(distributedCPUVec< double > &OutDensity)
+
vselfBinsManager< FEOrder, FEOrderElectro > d_vselfBinsManager
vselfBinsManager object
Definition dft.h:1520
+
void computeRhoInitialGuessFromPSI(std::vector< std::vector< distributedCPUVec< double > > > eigenVectors)
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_gradDensityTotalInValuesLpspQuad
Definition dft.h:1436
+
void finalizeKohnShamDFTOperator()
+
bool d_isAtomsGaussianDisplacementsReadFromFile
Definition dft.h:1045
+
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > d_BLASWrapperPtr
Definition dft.h:1254
+
double d_relativeErrorJacInvApproxPrevScfLRD
Definition dft.h:1455
+
std::vector< double > d_dipole
Definition dft.h:1440
+
unsigned int d_baseDofHandlerIndexElectro
Definition dft.h:1201
+
std::vector< double > d_gaussianConstantsForce
Definition dft.h:1050
+
std::vector< double > d_smearedChargeMoments
Definition dft.h:1442
+
std::map< dealii::CellId, std::vector< double > > d_rhoAtomsValues
for xl-bomd
Definition dft.h:1460
+
const unsigned int n_mpi_processes
Definition dft.h:1272
+
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > d_hessianRhoCoreAtoms
Definition dft.h:1512
+
bool d_smearedChargeMomentsComputed
Definition dft.h:1443
+
double rhofieldl2Norm(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField, const unsigned int dofHandlerId, const unsigned int quadratureId)
+
std::vector< double > d_imageCharges
Definition dft.h:1086
+
dealii::MatrixFree< 3, double > d_matrixFreeDataPRefined
Definition dft.h:1218
+
void nscf(KohnShamHamiltonianOperator< memorySpace > &kohnShamDFTEigenOperator, chebyshevOrthogonalizedSubspaceIterationSolver &subspaceIterationSolver)
+
void updatePRefinedConstraints()
+
std::vector< orbital > waveFunctionsVector
Definition dft.h:1156
+
std::vector< std::map< dealii::CellId, std::vector< unsigned int > > > d_bCellNonTrivialAtomImageIdsBins
Definition dft.h:1151
+
double totalCharge(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField)
+
std::deque< distributedCPUVec< double > > d_groundStateDensityHistory
Definition dft.h:1488
+
double lowrankApproxScfDielectricMatrixInv(const unsigned int scfIter)
+
void addAtomicRhoQuadValuesGradients(dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureGradValueData, const bool isConsiderGradData=false)
add atomic densities at quadrature points
+
const MPI_Comm interpoolcomm
Definition dft.h:1270
+
void computeVselfFieldGateauxDerFD()
+
distributedCPUVec< double > d_rhoInNodalValuesRead
Definition dft.h:1426
+
dealii::TimerOutput computing_timer
compute-time logger
Definition dft.h:1405
+
std::vector< double > d_imageChargesTrunc
Definition dft.h:1101
+
void compute_tdos(const std::vector< std::vector< double > > &eigenValuesInput, const unsigned int highestStateOfInterest, const std::string &fileName)
compute density of states and local density of states
+
unsigned int d_forceDofHandlerIndex
Definition dft.h:1197
+
void initpRefinedObjects(const bool recomputeBasisData, const bool meshOnlyDeformed, const bool vselfPerturbationUpdateForStress=false)
+
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOST > d_eigenVectorsRotFracDensityFlattenedHost
Definition dft.h:1383
+
std::vector< std::vector< double > > getCell() const
Gets the current cell lattice vectors.
+
void createpRefinedDofHandler(dealii::parallel::distributed::Triangulation< 3 > &triangulation)
+
const std::vector< dealii::types::global_dof_index > & getLocalDofIndicesReal() const
Get local dofs global indices real.
+
void solveNoSCF()
compute approximation to ground-state without solving the SCF iteration
+ +
void applyKerkerPreconditionerToTotalDensityResidual(kerkerSolverProblem< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()> &kerkerPreconditionedResidualSolverProblem, dealiiLinearSolver &CGSolver, const distributedCPUVec< double > &residualRho, distributedCPUVec< double > &preCondTotalDensityResidualVector)
Mixing schemes for mixing electron-density.
+
std::vector< dealii::types::global_dof_index > localProc_dof_indicesImag
Definition dft.h:1280
+
std::vector< std::vector< double > > d_atomLocationsAutoMesh
Definition dft.h:1033
+
double d_autoMeshMaxJacobianRatio
Definition dft.h:1170
+
void compute_localizationLength(const std::string &locLengthFileName)
compute localization length
+
std::shared_ptr< dftfe::oncvClass< dataTypes::number, memorySpace > > d_oncvClassPtr
Definition dft.h:1245
+
std::vector< double > kPointReducedCoordinates
k point crystal coordinates
Definition dft.h:1539
+
std::vector< std::vector< double > > d_imagePositions
Definition dft.h:1090
+
triangulationManager d_mesh
Definition dft.h:1168
+
std::map< dealii::types::global_dof_index, dealii::Point< 3 > > d_supportPointsEigen
Definition dft.h:1257
+
dealii::AffineConstraints< double > d_constraintsPRefined
Definition dft.h:1351
+
double d_freeEnergyInitial
Definition dft.h:1561
+
dealii::AffineConstraints< double > d_constraintsForPhiPrimeElectro
Definition dft.h:1347
+
void normalizeRhoInQuadValues()
normalize the input electron density
+
void normalizeAtomicRhoQuadValues()
normalize the electron density
+
unsigned int d_rankCurrentLRD
Definition dft.h:1454
+
chebyshevOrthogonalizedSubspaceIterationSolver d_subspaceIterationSolver
Definition dft.h:1309
+
std::vector< double > d_kPointWeights
k point weights
Definition dft.h:1542
+
dftClass(const MPI_Comm &mpiCommParent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const std::string &scratchFolderName, dftParameters &dftParams)
dftClass constructor
+
void initImageChargesUpdateKPoints(bool flag=true)
generate image charges and update k point cartesian coordinates based on current lattice vectors
+
std::map< dealii::types::global_dof_index, dealii::Point< 3 > > d_supportPoints
Definition dft.h:1256
+
double fieldGradl2Norm(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &field)
+
distributedCPUVec< double > d_preCondTotalDensityResidualVector
Definition dft.h:1427
+
distributedCPUVec< double > d_magInNodalValuesRead
Definition dft.h:1431
+
std::deque< distributedCPUVec< double > > d_vcontainerVals
for low rank jacobian inverse approximation
Definition dft.h:1447
+
void readkPointData()
+
distributedCPUVec< double > d_residualPredicted
Definition dft.h:1453
+
std::vector< double > a0
Definition dft.h:1571
+
dealii::Timer d_globalTimer
Definition dft.h:1410
+
void noRemeshRhoDataInit()
+
std::vector< double > d_flatTopWidthsAutoMeshMove
Definition dft.h:1061
+
std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > d_basisOperationsPtrElectroHost
Definition dft.h:1227
+
std::map< dealii::types::global_dof_index, double > d_atomNodeIdToChargeMap
map of atom node number and atomic weight
Definition dft.h:1517
+
std::vector< dealii::Tensor< 1, 3, double > > d_atomsDisplacementsGaussianRead
Gaussian displacements of atoms read from file.
Definition dft.h:1037
+
unsigned int d_nonPeriodicDensityDofHandlerIndexElectro
Definition dft.h:1200
+
double d_domainVolume
volume of the domain
Definition dft.h:1185
+
bool d_isRestartGroundStateCalcFromChk
Definition dft.h:1582
+ +
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_densityOutQuadValues
Definition dft.h:1415
+
dealii::IndexSet d_locallyRelevantDofsRhoNodal
Definition dft.h:1276
+
dealii::ConditionalOStream pcout
device eigenvectors
Definition dft.h:1402
+
void calculateNearestAtomDistances()
a
+
void initUnmovedTriangulation(dealii::parallel::distributed::Triangulation< 3 > &triangulation)
+
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_gradDensityOutQuadValues
Definition dft.h:1468
+
unsigned int d_nonAtomicWaveFunctions
Number of random wavefunctions.
Definition dft.h:294
+
std::map< dealii::CellId, std::vector< double > > d_gradRhoCore
Definition dft.h:1504
+
distributedCPUVec< double > d_phiExt
Definition dft.h:1485
+
dealii::AffineConstraints< double > d_constraintsPRefinedOnlyHanging
Definition dft.h:1353
+
dftUtils::constraintMatrixInfo constraintsNoneEigenDataInfo
Definition dft.h:1325
+
void interpolateDensityNodalDataToQuadratureDataGeneral(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalField, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureGradValueData, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureHessianValueData, const bool isEvaluateGradData=false, const bool isEvaluateHessianData=false)
interpolate rho nodal data to quadrature data using FEEvaluation
+
void compute_pdos(const std::vector< std::vector< double > > &eigenValuesInput, const std::string &fileName)
+
unsigned int d_phiTotDofHandlerIndexElectro
Definition dft.h:1209
+
std::vector< int > d_imageIdsTrunc
Definition dft.h:1097
+
dealii::IndexSet d_locallyRelevantDofsPRefined
Definition dft.h:1276
+
void computeRhoNodalFromPSI(bool isConsiderSpectrumSplitting)
computes density nodal data from wavefunctions
+
const double d_smearedChargeWidthMin
minimum smeared charge width
Definition dft.h:1154
+
double getEntropicEnergy() const
+
std::vector< double > d_nearestAtomDistances
nearest atom distances for all domain atoms
Definition dft.h:1073
+
std::vector< std::vector< double > > d_localVselfs
Definition dft.h:1498
+
dealii::AffineConstraints< double > d_constraintsRhoNodalOnlyHanging
Definition dft.h:1357
+
std::vector< distributedCPUVec< double > > d_densityResidualNodalValues
Definition dft.h:1418
+
KohnShamHamiltonianOperator< memorySpace > * d_kohnShamDFTOperatorPtr
Definition dft.h:1301
+
unsigned int d_densityQuadratureId
Definition dft.h:1214
+
poissonSolverProblem< FEOrder, FEOrderElectro > d_phiPrimeSolverProblem
Definition dft.h:1290
+
void calculateSmearedChargeWidths()
a
+
void compute_rhoOut(const bool isConsiderSpectrumSplitting, const bool isGroundState=false)
Computes output electron-density from wavefunctions.
+
double totalMagnetization(const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &magQuadValues)
Computes net magnetization from the difference of local spin densities.
+
bool d_kohnShamDFTOperatorsInitialized
Definition dft.h:1299
+
void projectPreviousGroundStateRho()
project ground state electron density from previous mesh into the new mesh to be used as initial gues...
+
void aposterioriMeshGenerate()
+
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOST > d_eigenVectorsDensityMatrixPrimeHost
Definition dft.h:1386
+
dftUtils::constraintMatrixInfo d_constraintsRhoNodalInfo
Definition dft.h:1359
+
std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > d_BLASWrapperPtrHost
Definition dft.h:1242
+
void recomputeKPointCoordinates()
+
double totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const distributedCPUVec< double > &rhoNodalField)
Computes total charge by integrating the electron-density.
+
std::map< dealii::CellId, std::vector< double > > d_gradRhoAtomsValues
Definition dft.h:1461
+
void initNoRemesh(const bool updateImagesAndKPointsAndVselfBins=true, const bool checkSmearedChargeWidthsForOverlap=true, const bool useSingleAtomSolutionOverride=false, const bool isMeshDeformed=false)
Does KSDFT problem pre-processing steps but without remeshing.
+
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_densityResidualQuadValues
Definition dft.h:1416
+
void interpolateDensityNodalDataToQuadratureDataLpsp(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalField, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureGradValueData, const bool isEvaluateGradData)
interpolate rho nodal data to quadrature data using FEEvaluation
+
void outputWfc()
write wavefunction solution fields
+
std::deque< distributedCPUVec< double > > d_fvSpin1containerVals
Definition dft.h:1452
+
std::vector< int > d_imageIds
Definition dft.h:1080
+
double fermiEnergy
fermi energy
Definition dft.h:1559
+
dftParameters & getParametersObject() const
Get reference to dftParameters object.
+
std::vector< double > d_netFloatingDispSinceLastCheckForSmearedChargeOverlaps
Definition dft.h:1043
+
double computeTraceXtKX(unsigned int numberWaveFunctionsEstimate)
+
std::vector< double > d_netFloatingDispSinceLastBinsUpdate
Definition dft.h:1040
+
dealii::AffineConstraints< double > d_constraintsForHelmholtzRhoNodal
Definition dft.h:1349
+
unsigned int numLevels
Definition dft.h:1020
+
void initializeKohnShamDFTOperator(const bool initializeCublas=true)
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_phiInQuadValues
Definition dft.h:1423
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_densityTotalInValuesLpspQuad
Definition dft.h:1435
+
distributedCPUVec< double > getRhoNodalSplitOut() const
+
dealii::MatrixFree< 3, double > matrix_free_data
Definition dft.h:1218
+
void applyMultipoleDirichletBC(const dealii::DoFHandler< 3 > &_dofHandler, const dealii::AffineConstraints< double > &onlyHangingNodeConstraints, dealii::AffineConstraints< double > &constraintMatrix)
Sets inhomegeneous dirichlet boundary conditions upto quadrupole for total potential constraints on n...
+
void compute_fermienergy(const std::vector< std::vector< double > > &eigenValuesInput, const double numElectronsInput)
Computes Fermi-energy obtained by imposing constraint on the number of electrons.
+
distributedCPUVec< double > getRhoNodalOut() const
+
unsigned int d_lpspQuadratureId
Definition dft.h:1205
+
const double d_pspCutOffTrunc
distance from the domain till which periodic images will be considered
Definition dft.h:1114
+
double getInternalEnergy() const
+
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > d_hessianRhoAtomsValuesSeparate
Definition dft.h:1464
+
dealii::AffineConstraints< double > d_noConstraints
Definition dft.h:1343
+
meshMovementGaussianClass d_gaussianMovePar
meshMovementGaussianClass object
Definition dft.h:1178
+
unsigned int d_nlpspQuadratureId
Definition dft.h:1204
+
std::map< dealii::CellId, std::vector< double > > d_pseudoVLoc
Definition dft.h:1490
+
dftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOST > d_eigenVectorsFlattenedHost
Definition dft.h:1379
+
dataTypes::number computeTraceXtHX(unsigned int numberWaveFunctionsEstimate)
+
void initElectronicFields()
+
dealii::Tensor< 2, 3, double > getCellStress() const
Gets the current cell stress from dftClass.
+
dealii::AffineConstraints< double > d_constraintsForTotalPotentialElectro
Definition dft.h:1345
+
dispersionCorrection d_dispersionCorr
Definition dft.h:1015
+
void reInitializeKohnShamDFTOperator()
+
std::vector< std::vector< double > > d_atomLocationsInterestPseudopotential
Definition dft.h:1030
+
std::vector< std::vector< double > > d_imagePositionsAutoMesh
Definition dft.h:1034
+
dealii::TimerOutput computingTimerStandard
Definition dft.h:1406
+
meshMovementAffineTransform d_affineTransformMesh
affine transformation object
Definition dft.h:1175
+
std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > d_pseudoVLocAtoms
Definition dft.h:1495
+
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_gradDensityInQuadValues
Definition dft.h:1468
+
elpaScalaManager * d_elpaScala
Definition dft.h:1286
+
std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_densityInQuadValues
Definition dft.h:1415
+
unsigned int d_numEigenValues
Number of Kohn-Sham eigen values to be computed.
Definition dft.h:283
+
std::map< dealii::CellId, std::vector< double > > d_rhoCore
Definition dft.h:1502
+
distributedCPUVec< double > d_phiPrime
Definition dft.h:1482
+
unsigned int d_forceDofHandlerIndexElectro
Definition dft.h:1202
+
void resetRhoNodalIn(distributedCPUVec< double > &OutDensity)
+
bool scfConverged
Definition dft.h:1587
+
unsigned int numElectronsUp
Definition dft.h:1020
+
distributedCPUVec< double > d_rhoOutNodalValuesDistributed
Definition dft.h:1428
+
std::map< unsigned int, std::map< unsigned int, std::map< unsigned int, double > > > outerValues
Definition dft.h:1163
+
void l2ProjectionQuadToNodal(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const dealii::AffineConstraints< double > &constraintMatrix, const unsigned int dofHandlerId, const unsigned int quadratureId, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, distributedCPUVec< double > &nodalField)
l2 projection
+
double computeResidualQuadData(const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &outValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &inValues, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &residualValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &JxW, const bool computeNorm)
Copies the residual residualValues=outValues-inValues.
+
void computeRhoNodalFirstOrderResponseFromPSIAndPSIPrime(distributedCPUVec< double > &fv, distributedCPUVec< double > &fvSpin0, distributedCPUVec< double > &fvSpin1)
+
void computeRhoNodalMassVector(dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &massVec)
Computes the diagonal mass matrix for rho nodal grid, used for nodal mixing.
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_densityTotalOutValuesLpspQuad
Definition dft.h:1435
+
void determineOrbitalFilling()
+
distributedCPUVec< double > d_phiTotRhoIn
Definition dft.h:1473
+
std::vector< dealii::Point< 3 > > d_controlPointLocationsCurrentMove
Definition dft.h:1182
+
unsigned int d_lpspQuadratureIdElectro
Definition dft.h:1207
+
void computeOutputDensityDirectionalDerivative(const distributedCPUVec< double > &v, const distributedCPUVec< double > &vSpin0, const distributedCPUVec< double > &vSpin1, distributedCPUVec< double > &fv, distributedCPUVec< double > &fvSpin0, distributedCPUVec< double > &fvSpin1)
+
dealii::AffineConstraints< double > constraintsNoneEigen
Definition dft.h:1342
+
std::vector< double > d_generatorFlatTopWidths
composite generator flat top widths for all domain atoms
Definition dft.h:1057
+
const dealii::MatrixFree< 3, double > & getMatrixFreeData() const
Get matrix free data object.
+
const std::vector< dealii::types::global_dof_index > & getLocalDofIndicesImag() const
Get local dofs global indices imag.
+
std::vector< std::vector< double > > eigenValues
Definition dft.h:1364
+
void compute_fermienergy_constraintMagnetization(const std::vector< std::vector< double > > &eigenValuesInput)
Computes Fermi-energy obtained by imposing separate constraints on the number of spin-up and spin-dow...
+
std::vector< dealii::Tensor< 1, 3, double > > d_gaussianMovementAtomsNetDisplacements
Definition dft.h:1181
+
void determineAtomsOfInterstPseudopotential(const std::vector< std::vector< double > > &atomCoordinates)
+
void init()
Does KSDFT problem pre-processing steps including mesh generation calls.
+
void computeStress()
+
std::vector< std::vector< double > > d_reciprocalLatticeVectors
Definition dft.h:1029
+
void compute_ldos(const std::vector< std::vector< double > > &eigenValuesInput, const std::string &fileName)
+
unsigned int numElectronsDown
Definition dft.h:1020
+
double d_minDist
Definition dft.h:1076
+
std::vector< std::vector< int > > d_globalChargeIdToImageIdMap
globalChargeId to ImageChargeId Map
Definition dft.h:1093
+
std::vector< dealii::types::global_dof_index > localProc_dof_indicesReal
Definition dft.h:1279
+
distributedCPUVec< double > d_tempEigenVec
Definition dft.h:1580
+
forceClass< FEOrder, FEOrderElectro, memorySpace > * forcePtr
Definition dft.h:1283
+
void writeBands()
write the KS eigen values for given BZ sampling/path
+
bool d_tolReached
Definition dft.h:1457
+
void normalizeRhoOutQuadValues()
normalize the output electron density in each scf
+
void moveMeshToAtoms(dealii::Triangulation< 3, 3 > &triangulationMove, dealii::Triangulation< 3, 3 > &triangulationSerial, bool reuseFlag=false, bool moveSubdivided=false)
moves the triangulation vertices using Gaussians such that the all atoms are on triangulation vertice...
+
double d_pspCutOff
distance from the domain till which periodic images will be considered
Definition dft.h:1111
+
double getCellVolume() const
Gets the current cell volume.
+
void loadTriaInfoAndRhoNodalData()
load triangulation information rho quadrature data from checkpoint file for restarted run
+
std::vector< distributedCPUVec< double > > d_vselfFieldGateauxDerStrainFDBins
Definition dft.h:1525
+
std::deque< distributedCPUVec< double > > d_fvSpin0containerVals
Definition dft.h:1450
+
unsigned int d_autoMesh
Definition dft.h:1171
+
virtual void writeGSElectronDensity(const std::string Path) const
writes quadrature grid information and associated spin-up and spin-down electron-density for post-pro...
+
std::map< dealii::CellId, std::vector< int > > d_bQuadAtomIdsAllAtomsImages
Definition dft.h:1131
+
const std::vector< dealii::types::global_dof_index > & getLocalProcDofIndicesImag() const
Get local dofs local proc indices imag.
+
dealii::IndexSet locally_relevant_dofsEigen
Definition dft.h:1275
+
dealii::IndexSet locally_relevant_dofs
Definition dft.h:1275
+
double computeMaximumHighestOccupiedStateResidualNorm(const std::vector< std::vector< double > > &residualNormWaveFunctionsAllkPoints, const std::vector< std::vector< double > > &eigenValuesAllkPoints, const double _fermiEnergy)
compute the maximum of the residual norm of the highest occupied state among all k points
+
unsigned int d_helmholtzDofHandlerIndexElectro
Definition dft.h:1212
+
unsigned int d_binsStartDofHandlerIndexElectro
Definition dft.h:1213
+
void initPseudoPotentialAll(const bool updateNonlocalSparsity=true)
+
const unsigned int this_mpi_process
Definition dft.h:1273
+
std::map< dealii::CellId, std::vector< int > > d_bQuadAtomIdsAllAtoms
non-intersecting smeared charges atom ids of all atoms at quad points
Definition dft.h:1127
+
std::map< unsigned int, std::map< unsigned int, std::map< unsigned int, alglib::spline1dinterpolant > > > radValues
Definition dft.h:1160
+
std::set< unsigned int > atomTypes
Definition dft.h:1021
+
dftParameters * d_dftParamsPtr
dftParameters object
Definition dft.h:1533
+
std::vector< std::vector< double > > getAtomLocationsFrac() const
Gets the current atom Locations in fractional form from dftClass (only applicable for periodic and se...
+
std::deque< distributedCPUVec< double > > d_vSpin1containerVals
Definition dft.h:1451
+
double getTotalChargeforRhoSplit()
+
void kohnShamEigenSpaceComputeNSCF(const unsigned int spinType, const unsigned int kPointIndex, KohnShamHamiltonianOperator< dftfe::utils::MemorySpace::HOST > &kohnShamDFTEigenOperator, chebyshevOrthogonalizedSubspaceIterationSolver &subspaceIterationSolver, std::vector< double > &residualNormWaveFunctions, unsigned int ipass)
+
void interpolateElectroNodalDataToQuadratureDataGeneral(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int dofHandlerId, const unsigned int quadratureId, const distributedCPUVec< double > &nodalField, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureValueData, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadratureGradValueData, const bool isEvaluateGradData=false)
interpolate nodal data to quadrature data using FEEvaluation
+
MixingScheme d_mixingScheme
Definition dft.h:1424
+
dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > d_gradDensityTotalOutValuesLpspQuad
Definition dft.h:1436
+
std::vector< std::vector< double > > getAtomLocationsCart() const
Gets the current atom Locations in cartesian form (origin at center of domain) from dftClass.
+
std::map< dealii::CellId, std::vector< double > > d_gradbQuadValuesAllAtoms
non-intersecting smeared charge gradients of all atoms at quad points
Definition dft.h:1124
+ +
std::vector< dealii::Tensor< 1, 3, double > > d_dispClosestTriaVerticesToAtoms
Definition dft.h:1546
+
dealii::FESystem< 3 > FE
Definition dft.h:1193
+
std::vector< double > d_smearedChargeScaling
smeared charge normalization scaling for all domain atoms
Definition dft.h:1067
+
std::vector< std::map< dealii::CellId, std::vector< unsigned int > > > d_bCellNonTrivialAtomIdsBins
Definition dft.h:1141
+
unsigned int d_gllQuadratureId
Definition dft.h:1208
+
unsigned int numElectrons
Definition dft.h:1020
+
void set()
atomic system pre-processing steps.
+
std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > d_basisOperationsPtrHost
Definition dft.h:1223
+
dealii::DoFHandler< 3 > dofHandlerEigen
Definition dft.h:1194
+
unsigned int d_sparsityPatternQuadratureId
Definition dft.h:1216
+
std::vector< double > d_quadrupole
Definition dft.h:1441
+
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:35
+
Overloads dealii's distribute and distribute_local_to_global functions associated with constraints cl...
Definition constraintMatrixInfo.h:42
+
Calculates dispersion correction to energy, force and stress.
Definition dftd.h:37
+
Manager class for ELPA and ScaLAPACK.
Definition elpaScalaManager.h:38
+
computes configurational forces in KSDFT
Definition force.h:52
+
poisson solver problem class template. template parameter FEOrderElectro is the finite element polyno...
Definition kerkerSolverProblem.h:35
+
Definition BLASWrapper.h:34
+
Class to update triangulation under affine transformation.
Definition meshMovementAffineTransform.h:30
+
Class to move triangulation nodes using Gaussian functions attached to control points.
Definition meshMovementGaussian.h:30
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
density symmetrization based on irreducible Brillouin zone calculation, only relevant for calculation...
Definition symmetry.h:41
+
This class generates and stores adaptive finite element meshes for the real-space dft problem.
Definition triangulationManager.h:42
+
Definition MemoryStorage.h:33
+ + + + + + + + + + + + + + + + + + + + +
Definition FEBasisOperations.h:31
+
double number
Definition dftfeDataTypes.h:44
+
MemorySpace
Definition MemorySpaceType.h:33
+ + +
Definition pseudoPotentialToDftfeConverter.cc:34
+
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:97
+ + + + + +
+ + + + diff --git a/dft_base_8h.html b/dft_base_8h.html new file mode 100644 index 000000000..0826f3df1 --- /dev/null +++ b/dft_base_8h.html @@ -0,0 +1,109 @@ + + + + + + + +DFT-FE: workspace/include/dftBase.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftBase.h File Reference
+
+
+
#include <vector>
+#include <tuple>
+#include <deal.II/base/tensor_function.h>
+#include "dftParameters.h"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::dftBase
 abstract base class for dft More...
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/dft_base_8h_source.html b/dft_base_8h_source.html new file mode 100644 index 000000000..0650ec014 --- /dev/null +++ b/dft_base_8h_source.html @@ -0,0 +1,333 @@ + + + + + + + +DFT-FE: workspace/include/dftBase.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftBase.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#ifndef dftBase_H_
+
19#define dftBase_H_
+
20
+
21#include <vector>
+
22#include <tuple>
+
23#include <deal.II/base/tensor_function.h>
+
24#include "dftParameters.h"
+
25
+
26namespace dftfe
+
27{
+
28 /**
+
29 * @brief abstract base class for dft
+
30 *
+
31 * @author Sambit Das
+
32 */
+
+
33 class dftBase
+
34 {
+
35 public:
+
36 /**
+
37 * @brief This is required to correctly delete the derived class object
+
38 * through the base class ptr
+
39 */
+
40 virtual ~dftBase(){};
+
41
+
42 virtual void
+
43 set() = 0;
+
44
+
45 virtual void
+
46 init() = 0;
+
47
+
48 virtual void
+
49 run() = 0;
+
50
+
51 virtual void
+
52 writeMesh() = 0;
+
53
+
54 virtual void
+ +
56 const std::vector<dealii::Tensor<1, 3, double>> &globalAtomsDisplacements,
+
57 const double maxJacobianRatioFactor = 1.25,
+
58 const bool useSingleAtomSolutionsOverride = false) = 0;
+
59
+
60 /**
+
61 *@brief Deforms the domain by the given deformation gradient and reinitializes the
+
62 * dftClass datastructures.
+
63 */
+
64 virtual void
+
65 deformDomain(const dealii::Tensor<2, 3, double> &deformationGradient,
+
66 const bool vselfPerturbationUpdateForStress = false,
+
67 const bool useSingleAtomSolutionsInitialGuess = false,
+
68 const bool print = true) = 0;
+
69
+
70
+
71 virtual std::tuple<bool, double>
+
72 solve(const bool computeForces = true,
+
73 const bool computeStress = true,
+
74 const bool isRestartGroundStateCalcFromChk = false) = 0;
+
75
+
76 virtual void
+ +
78
+
79 virtual void
+ +
81
+
82 virtual double
+
83 getInternalEnergy() const = 0;
+
84
+
85 virtual double
+
86 getEntropicEnergy() const = 0;
+
87
+
88 virtual double
+
89 getFreeEnergy() const = 0;
+
90
+ +
92 getRhoNodalOut() const = 0;
+
93
+ + +
96
+
97 virtual double
+ +
99
+
100 virtual void
+ +
102
+
103 virtual void
+ +
105
+
106 /**
+
107 * @brief Gets the current atom Locations in cartesian form
+
108 * (origin at center of domain) from dftClass
+
109 */
+
110 virtual std::vector<std::vector<double>>
+ +
112
+
113 /**
+
114 * @brief Gets the current atom Locations in fractional form
+
115 * from dftClass (only applicable for periodic and semi-periodic BCs)
+
116 */
+
117 virtual std::vector<std::vector<double>>
+ +
119
+
120
+
121
+
122 /**
+
123 * @brief Gets the current cell lattice vectors
+
124 *
+
125 * @return std::vector<std::vector<double>> 3 \times 3 matrix,lattice[i][j]
+
126 * corresponds to jth component of ith lattice vector
+
127 */
+
128 virtual std::vector<std::vector<double>>
+
129 getCell() const = 0;
+
130
+
131 /**
+
132 * @brief Gets the current cell volume
+
133 *
+
134 */
+
135 virtual double
+
136 getCellVolume() const = 0;
+
137
+
138 /**
+
139 * @brief Gets the current atom types from dftClass
+
140 */
+
141 virtual std::set<unsigned int>
+
142 getAtomTypes() const = 0;
+
143
+
144 /**
+
145 * @brief Gets the current atomic forces (configurational forces) from dftClass
+
146 */
+
147 virtual std::vector<double>
+
148 getForceonAtoms() const = 0;
+
149
+
150
+
151 /**
+
152 * @brief Gets the current cell stress from dftClass
+
153 */
+
154 virtual dealii::Tensor<2, 3, double>
+
155 getCellStress() const = 0;
+
156
+
157 /**
+
158 * @brief Get reference to dftParameters object
+
159 */
+
160 virtual dftParameters &
+ +
162
+
163 /**
+
164 * @brief writes the current domain bounding vectors and atom coordinates to files, which are required for
+
165 * geometry relaxation restart
+
166
+
167 */
+
168 virtual void
+ +
170
+
171
+
172 /**
+
173 * @brief writes the current domain bounding vectors and atom coordinates to files for
+
174 * structural optimization and dynamics restarts. The coordinates are stored
+
175 * as: 1. fractional for semi-periodic/periodic 2. Cartesian for
+
176 * non-periodic.
+
177 * @param[in] Path The folder path to store the atom coordinates required
+
178 * during restart.
+
179 */
+
180 virtual void
+
181 writeDomainAndAtomCoordinates(const std::string Path) const = 0;
+
182
+
183
+
184 /**
+
185 * @brief writes atomistics data for subsequent post-processing. Related to
+
186 * WRITE STRUCTURE ENERGY FORCES DATA POST PROCESS input parameter.
+
187 * @param[in] Path The folder path to store the atomistics data.
+
188 */
+
189 virtual void
+ +
191
+
192 /**
+
193 * @brief writes quadrature grid information and associated spin-up
+
194 * and spin-down electron-density for post-processing
+
195 * @param[in] Path The folder path to store the atomistics data.
+
196 */
+
197 virtual void
+
198 writeGSElectronDensity(const std::string Path) const = 0;
+
199 };
+
+
200
+
201} // namespace dftfe
+
202
+
203#endif
+
abstract base class for dft
Definition dftBase.h:34
+
virtual double getInternalEnergy() const =0
+
virtual dftParameters & getParametersObject() const =0
Get reference to dftParameters object.
+
virtual void updateAtomPositionsAndMoveMesh(const std::vector< dealii::Tensor< 1, 3, double > > &globalAtomsDisplacements, const double maxJacobianRatioFactor=1.25, const bool useSingleAtomSolutionsOverride=false)=0
+
virtual distributedCPUVec< double > getRhoNodalSplitOut() const =0
+
virtual std::vector< std::vector< double > > getAtomLocationsFrac() const =0
Gets the current atom Locations in fractional form from dftClass (only applicable for periodic and se...
+
virtual distributedCPUVec< double > getRhoNodalOut() const =0
+
virtual void deformDomain(const dealii::Tensor< 2, 3, double > &deformationGradient, const bool vselfPerturbationUpdateForStress=false, const bool useSingleAtomSolutionsInitialGuess=false, const bool print=true)=0
Deforms the domain by the given deformation gradient and reinitializes the dftClass datastructures.
+
virtual ~dftBase()
This is required to correctly delete the derived class object through the base class ptr.
Definition dftBase.h:40
+
virtual void resetRhoNodalSplitIn(distributedCPUVec< double > &OutDensity)=0
+
virtual void run()=0
+
virtual void computeStress()=0
+
virtual void writeDomainAndAtomCoordinates()=0
writes the current domain bounding vectors and atom coordinates to files, which are required for geom...
+
virtual std::vector< std::vector< double > > getAtomLocationsCart() const =0
Gets the current atom Locations in cartesian form (origin at center of domain) from dftClass.
+
virtual void writeGSElectronDensity(const std::string Path) const =0
writes quadrature grid information and associated spin-up and spin-down electron-density for post-pro...
+
virtual std::set< unsigned int > getAtomTypes() const =0
Gets the current atom types from dftClass.
+
virtual void init()=0
+
virtual double getEntropicEnergy() const =0
+
virtual double getCellVolume() const =0
Gets the current cell volume.
+
virtual std::vector< double > getForceonAtoms() const =0
Gets the current atomic forces (configurational forces) from dftClass.
+
virtual void trivialSolveForStress()=0
+
virtual void writeStructureEnergyForcesDataPostProcess(const std::string Path) const =0
writes atomistics data for subsequent post-processing. Related to WRITE STRUCTURE ENERGY FORCES DATA ...
+
virtual void set()=0
+
virtual std::tuple< bool, double > solve(const bool computeForces=true, const bool computeStress=true, const bool isRestartGroundStateCalcFromChk=false)=0
+
virtual double getTotalChargeforRhoSplit()=0
+
virtual void writeDomainAndAtomCoordinates(const std::string Path) const =0
writes the current domain bounding vectors and atom coordinates to files for structural optimization ...
+
virtual double getFreeEnergy() const =0
+
virtual void writeMesh()=0
+
virtual std::vector< std::vector< double > > getCell() const =0
Gets the current cell lattice vectors.
+
virtual dealii::Tensor< 2, 3, double > getCellStress() const =0
Gets the current cell stress from dftClass.
+
virtual void resetRhoNodalIn(distributedCPUVec< double > &OutDensity)=0
+
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:35
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/dft_parameters_8h.html b/dft_parameters_8h.html new file mode 100644 index 000000000..b7d4a9fc1 --- /dev/null +++ b/dft_parameters_8h.html @@ -0,0 +1,107 @@ + + + + + + + +DFT-FE: workspace/include/dftParameters.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftParameters.h File Reference
+
+
+
#include <string>
+#include <mpi.h>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::dftParameters
 Namespace which declares the input parameters and the functions to parse them from the input parameter file. More...
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/dft_parameters_8h_source.html b/dft_parameters_8h_source.html new file mode 100644 index 000000000..6a4e0717d --- /dev/null +++ b/dft_parameters_8h_source.html @@ -0,0 +1,516 @@ + + + + + + + +DFT-FE: workspace/include/dftParameters.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftParameters.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18
+
19
+
20#ifndef dftParameters_H_
+
21#define dftParameters_H_
+
22
+
23#include <string>
+
24#include <mpi.h>
+
25
+
26namespace dftfe
+
27{
+
28 /**
+
29 * @brief Namespace which declares the input parameters and the functions to parse them
+
30 * from the input parameter file
+
31 *
+
32 * @author Phani Motamarri, Sambit Das
+
33 */
+
+ +
35 {
+
36 public:
+ + + + + + + + +
45
+ + +
48 std::string modelXCInputFile;
+
49
+ + + + +
54
+ + + + +
59
+
60 double netCharge;
+
61
+
62 /** parameters for LRD preconditioner **/
+
63
+ +
65 std::string methodSubTypeLRD;
+ +
67 double betaTol;
+ + + +
71
+
72 /**********************************************/
+
73
+ + + +
77
+ +
79
+ + + + + + +
86
+
87
+ + + +
91 unsigned int cellConstraintType;
+
92
+ +
94 std::string solverMode;
+ + + + +
99
+ +
101
+ +
103
+ +
105
+ +
107
+
108 std::string startingWFCType;
+ +
110 unsigned int numCoreWfcRR;
+
111 unsigned int numCoreWfcXtHX;
+
112 unsigned int wfcBlockSize;
+
113 unsigned int chebyWfcBlockSize;
+ +
115 unsigned int nbandGrps;
+ + +
118 unsigned int scalapackBlockSize;
+
119 unsigned int natoms;
+
120 unsigned int natomTypes;
+ +
122 unsigned int reuseDensityGeoOpt;
+ + + + + + + + + + + + + + + + + + + + + + + + + +
148 unsigned int numberStepsBOMD;
+
149 unsigned int TotalImages;
+ + + + + + + + + + + + + + +
164 std::string atomicMassesFile;
+ + + + + + + + +
173
+
174
+ +
176 unsigned int dc_d3dampingtype;
+ + + + + + +
183
+
184
+
185 std::string bfgsStepMethod;
+ +
187 unsigned int lbfgsNumPastSteps;
+
188 unsigned int maxOptIter;
+
189 unsigned int maxStaggeredCycles;
+ +
191
+
192 // New Paramters for moleculardyynamics class
+ + + + + +
198
+ +
200
+ +
202
+
203 /**
+
204 * Parse parameters.
+
205 */
+
206 void
+ + +
209 const bool printParams = false,
+
210 const std::string mode = "GS",
+
211 const std::string restartFilesPath = ".",
+
212 const int _verbosity = 1,
+
213 const bool _useDevice = false);
+
214
+
215 /**
+
216 * Check parameters
+
217 */
+
218 void
+ +
220
+
221 /**
+
222 * Set automated choices for parameters
+
223 */
+
224 void
+ +
226
+
227 }; // class dftParameters
+
+
228
+
229} // namespace dftfe
+
230#endif
+
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:35
+
unsigned int numPass
Definition dftParameters.h:41
+
unsigned int n_refinement_steps
Definition dftParameters.h:38
+
unsigned int numberStepsBOMD
Definition dftParameters.h:148
+
unsigned int finiteElementPolynomialOrderElectrostatics
Definition dftParameters.h:38
+
bool floatingNuclearCharges
Definition dftParameters.h:160
+
bool useDeviceDirectAllReduce
Definition dftParameters.h:165
+
bool pseudoTestsFlag
Definition dftParameters.h:56
+
unsigned int numCoreWfcRR
Definition dftParameters.h:110
+
unsigned int cellConstraintType
Definition dftParameters.h:91
+
double diracDeltaKernelScalingConstant
Definition dftParameters.h:154
+
double startingTempBOMD
Definition dftParameters.h:193
+
unsigned int maxOptIter
Definition dftParameters.h:188
+
std::string orthogType
Definition dftParameters.h:75
+
std::string coordinatesFile
Definition dftParameters.h:74
+
bool periodicX
Definition dftParameters.h:55
+
double innerAtomBallRadius
Definition dftParameters.h:80
+
void check_parameters(const MPI_Comm &mpi_comm_parent) const
+
double absLinearSolverToleranceHelmholtz
Definition dftParameters.h:53
+
bool usePreconditioner
Definition dftParameters.h:186
+
double gaussianConstantForce
Definition dftParameters.h:150
+
bool multipoleBoundaryConditions
Definition dftParameters.h:161
+
bool writePdosFile
Definition dftParameters.h:58
+
double dc_d3cutoff2
Definition dftParameters.h:180
+
double forceRelaxTol
Definition dftParameters.h:90
+
bool writeDosFile
Definition dftParameters.h:56
+
unsigned int scalapackBlockSize
Definition dftParameters.h:118
+
std::string pseudoPotentialFile
Definition dftParameters.h:75
+
std::string cellOptSolver
Definition dftParameters.h:85
+
double stressRelaxTol
Definition dftParameters.h:90
+
bool saveRhoData
Definition dftParameters.h:96
+
bool smearedNuclearCharges
Definition dftParameters.h:159
+
bool createConstraintsFromSerialDofhandler
Definition dftParameters.h:133
+
unsigned int chebyWfcBlockSize
Definition dftParameters.h:113
+
bool nonSelfConsistentForce
Definition dftParameters.h:89
+
bool vselfGPU
Definition dftParameters.h:47
+
unsigned int npool
Definition dftParameters.h:42
+
unsigned int nbandGrps
Definition dftParameters.h:115
+
std::string bfgsStepMethod
Definition dftParameters.h:185
+
bool periodicY
Definition dftParameters.h:55
+
double xlbomdRestartChebyTol
Definition dftParameters.h:156
+
bool restartSpinFromNoSpin
Definition dftParameters.h:98
+
bool useDCCL
Definition dftParameters.h:166
+
bool dc_d4MBD
Definition dftParameters.h:178
+
unsigned int offsetFlagX
Definition dftParameters.h:39
+
bool singlePrecLRD
Definition dftParameters.h:69
+
bool reuseLanczosUpperBoundFromFirstCall
Definition dftParameters.h:168
+
std::string modelXCInputFile
Definition dftParameters.h:48
+
double kerkerParameter
Definition dftParameters.h:83
+
double absLinearSolverTolerance
Definition dftParameters.h:52
+
std::string algoType
Definition dftParameters.h:75
+
unsigned int natomTypes
Definition dftParameters.h:120
+
double chebyshevFilterPolyDegreeFirstScfScalingFactor
Definition dftParameters.h:145
+
bool isBOMD
Definition dftParameters.h:88
+
bool useMixedPrecCheby
Definition dftParameters.h:139
+
bool useSubspaceProjectedSHEPGPU
Definition dftParameters.h:124
+
bool allowFullCPUMemSubspaceRot
Definition dftParameters.h:138
+
unsigned int reuseDensityGeoOpt
Definition dftParameters.h:122
+
double mixingParameter
Definition dftParameters.h:50
+
bool readWfcForPdosPspFile
Definition dftParameters.h:143
+
bool useTF32Device
Definition dftParameters.h:136
+
void setAutoParameters(const MPI_Comm &mpi_comm_parent)
+
bool constraintsParallelCheck
Definition dftParameters.h:132
+
double start_magnetization
Definition dftParameters.h:53
+
bool reproducible_output
Definition dftParameters.h:100
+
unsigned int numLevels
Definition dftParameters.h:43
+
bool writeLocalizationLengths
Definition dftParameters.h:57
+
bool adaptAndersonMixingParameter
Definition dftParameters.h:51
+
bool autoAdaptBaseMeshSize
Definition dftParameters.h:81
+
unsigned int nky
Definition dftParameters.h:39
+
double pspCutoffImageCharges
Definition dftParameters.h:167
+
double meshSizeInnerBall
Definition dftParameters.h:82
+
double thermostatTimeConstantBOMD
Definition dftParameters.h:195
+
unsigned int wfcBlockSize
Definition dftParameters.h:112
+
unsigned int subspaceRotDofsBlockSize
Definition dftParameters.h:114
+
unsigned int nkz
Definition dftParameters.h:39
+
unsigned int mixingHistory
Definition dftParameters.h:42
+
std::string mixingMethod
Definition dftParameters.h:85
+
double timeStepBOMD
Definition dftParameters.h:147
+
double spinMixingEnhancementFactor
Definition dftParameters.h:50
+
double radiusAtomBall
Definition dftParameters.h:50
+
double netCharge
Definition dftParameters.h:60
+
bool allowMultipleFilteringPassesAfterFirstScf
Definition dftParameters.h:169
+
bool overlapComputeCommunCheby
Definition dftParameters.h:140
+
unsigned int numberEigenValues
Definition dftParameters.h:39
+
double maxCellUpdateStep
Definition dftParameters.h:190
+
double maxIonUpdateStep
Definition dftParameters.h:190
+ +
double dc_d3cutoff3
Definition dftParameters.h:181
+
unsigned int scalapackParalProcs
Definition dftParameters.h:117
+
bool meshAdaption
Definition dftParameters.h:89
+
double topfrac
Definition dftParameters.h:83
+
double gaussianOrderForce
Definition dftParameters.h:151
+
unsigned int spinPolarized
Definition dftParameters.h:39
+
std::string atomicMassesFile
Definition dftParameters.h:164
+
std::string ionOptSolver
Definition dftParameters.h:85
+
std::string restartFolder
Definition dftParameters.h:76
+
unsigned int maxLineSearchIterCGPRP
Definition dftParameters.h:163
+
double MaxWallTime
Definition dftParameters.h:194
+
double TVal
Definition dftParameters.h:52
+
std::string startingWFCType
Definition dftParameters.h:108
+
bool useELPA
Definition dftParameters.h:131
+
double xlbomdKernelRankUpdateFDParameter
Definition dftParameters.h:158
+
bool computeEnergyEverySCF
Definition dftParameters.h:116
+
bool writeBandsFile
Definition dftParameters.h:57
+
double outerAtomBallRadius
Definition dftParameters.h:80
+
bool isIonForce
Definition dftParameters.h:88
+
bool useMixedPrecXTHXSpectrumSplit
Definition dftParameters.h:127
+
bool useSymm
Definition dftParameters.h:55
+
bool poissonGPU
Definition dftParameters.h:46
+
unsigned int finiteElementPolynomialOrder
Definition dftParameters.h:37
+
std::string dc_dampingParameterFilename
Definition dftParameters.h:179
+
bool loadRhoData
Definition dftParameters.h:97
+
bool nonLinearCoreCorrection
Definition dftParameters.h:162
+
double selfConsistentSolverTolerance
Definition dftParameters.h:52
+
bool keepScratchFolder
Definition dftParameters.h:95
+
double mpiAllReduceMessageBlockSizeMB
Definition dftParameters.h:123
+
unsigned int highestStateOfInterestForChebFiltering
Definition dftParameters.h:170
+
double maxJacobianRatioFactorForMD
Definition dftParameters.h:144
+
std::string solverMode
Definition dftParameters.h:94
+
bool constraintMagnetization
Definition dftParameters.h:56
+
bool reuseWfcGeoOpt
Definition dftParameters.h:121
+
bool pinnedNodeForPBC
Definition dftParameters.h:57
+
std::string domainBoundingVectorsFile
Definition dftParameters.h:74
+
double adaptiveRankRelTolLRD
Definition dftParameters.h:66
+
int extrapolateDensity
Definition dftParameters.h:146
+
bool writeDensitySolutionFields
Definition dftParameters.h:104
+
bool writeStructreEnergyForcesFileForPostProcess
Definition dftParameters.h:199
+
bool isPseudopotential
Definition dftParameters.h:55
+
unsigned int dc_dispersioncorrectiontype
Definition dftParameters.h:175
+
bool useMeshSizesFromAtomsFile
Definition dftParameters.h:155
+
double restaScreeningLength
Definition dftParameters.h:83
+
bool bandParalOpt
Definition dftParameters.h:134
+
unsigned int spectrumSplitStartingScfIter
Definition dftParameters.h:130
+
unsigned int maxStaggeredCycles
Definition dftParameters.h:189
+
double restaFermiWavevector
Definition dftParameters.h:84
+
bool periodicZ
Definition dftParameters.h:55
+
bool useMixedPrecCGS_O
Definition dftParameters.h:126
+
unsigned int lbfgsNumPastSteps
Definition dftParameters.h:187
+
bool isCellStress
Definition dftParameters.h:88
+
unsigned int numSCFIterations
Definition dftParameters.h:41
+
std::string ionRelaxFlagsFile
Definition dftParameters.h:75
+
unsigned int natoms
Definition dftParameters.h:119
+
bool writeLdosFile
Definition dftParameters.h:57
+
bool useDensityMatrixPerturbationRankUpdates
Definition dftParameters.h:157
+
std::string kPointDataFile
Definition dftParameters.h:74
+
bool useDevice
Definition dftParameters.h:135
+
unsigned int nkx
Definition dftParameters.h:39
+
bool useMixedPrecCommunOnlyXTHXCGSO
Definition dftParameters.h:129
+
bool dc_d3ATM
Definition dftParameters.h:177
+
unsigned int offsetFlagY
Definition dftParameters.h:40
+
int MDTrack
Definition dftParameters.h:197
+
int verbosity
Definition dftParameters.h:93
+
double betaTol
Definition dftParameters.h:67
+
double dc_d3cutoffCN
Definition dftParameters.h:182
+
double gaussianOrderMoveMeshToAtoms
Definition dftParameters.h:152
+
double chebyshevTolerance
Definition dftParameters.h:83
+
std::string methodSubTypeLRD
Definition dftParameters.h:65
+
bool memOptMode
Definition dftParameters.h:172
+
void parse_parameters(const std::string &parameter_file, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const std::string mode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool _useDevice=false)
+
bool deviceFineGrainedTimings
Definition dftParameters.h:137
+
bool restrictToOnePass
Definition dftParameters.h:109
+
std::string optimizationMode
Definition dftParameters.h:85
+
double absPoissonSolverToleranceLRD
Definition dftParameters.h:68
+
double toleranceKinetic
Definition dftParameters.h:90
+
bool timeReversal
Definition dftParameters.h:56
+
bool useELPADeviceKernel
Definition dftParameters.h:171
+
unsigned int offsetFlagZ
Definition dftParameters.h:40
+
unsigned int maxLinearSolverIterations
Definition dftParameters.h:42
+
bool useMixedPrecSubspaceRotRR
Definition dftParameters.h:128
+
bool useFlatTopGenerator
Definition dftParameters.h:153
+
std::string tempControllerTypeBOMD
Definition dftParameters.h:196
+
unsigned int xc_id
Definition dftParameters.h:39
+
unsigned int numberWaveFunctionsForEstimate
Definition dftParameters.h:43
+
bool autoDeviceBlockSizes
Definition dftParameters.h:142
+
bool useMixedPrecCGS_SR
Definition dftParameters.h:125
+
unsigned int TotalImages
Definition dftParameters.h:149
+
bool estimateJacCondNoFinalSCFIter
Definition dftParameters.h:70
+
unsigned int dc_d3dampingtype
Definition dftParameters.h:176
+
unsigned int chebyshevOrder
Definition dftParameters.h:41
+
unsigned int maxLinearSolverIterationsHelmholtz
Definition dftParameters.h:44
+
std::string coordinatesGaussianDispFile
Definition dftParameters.h:78
+
unsigned int numCoreWfcXtHX
Definition dftParameters.h:111
+
double meshSizeOuterDomain
Definition dftParameters.h:80
+
double meshSizeOuterBall
Definition dftParameters.h:82
+
double startingNormLRDLargeDamping
Definition dftParameters.h:64
+
bool writeDensityQuadData
Definition dftParameters.h:106
+
bool writeWfcSolutionFields
Definition dftParameters.h:102
+
bool overlapComputeCommunOrthoRR
Definition dftParameters.h:141
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/dft_utils_8h.html b/dft_utils_8h.html new file mode 100644 index 000000000..8e78eacd6 --- /dev/null +++ b/dft_utils_8h.html @@ -0,0 +1,160 @@ + + + + + + + +DFT-FE: workspace/include/dftUtils.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftUtils.h File Reference
+
+
+
#include <headers.h>
+#include <mpi.h>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::dftUtils::Pool
 
+ + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::dftUtils
 Contains repeatedly used functions in the KSDFT calculations.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void dftfe::dftUtils::dgesv_ (int *N, int *NRHS, double *A, int *LDA, int *IPIV, double *B, int *LDB, int *INFO)
 
double dftfe::dftUtils::smearedCharge (double r, double rc)
 
double dftfe::dftUtils::smearedChargeDr (double r, double rc)
 
double dftfe::dftUtils::smearedPot (double r, double rc)
 
double dftfe::dftUtils::smearedPotDr (double r, double rc)
 
std::vector< doubledftfe::dftUtils::getFractionalCoordinates (const std::vector< double > &latticeVectorsFlattened, const std::vector< double > &coordWithRespectToCellCorner)
 
double dftfe::dftUtils::getCompositeGeneratorVal (const double rc, const double r, const double a0, const double power)
 Calculates value of composite generator.
 
dealii::BoundingBox< 3 > dftfe::dftUtils::createBoundingBoxForSphere (const dealii::Point< 3 > &center, const double sphereRadius)
 Create bounding box around a sphere.
 
double dftfe::dftUtils::getPartialOccupancy (const double eigenValue, const double fermiEnergy, const double kb, const double T)
 Calculates partial occupancy of the atomic orbital using Fermi-Dirac smearing.
 
double dftfe::dftUtils::getPartialOccupancyDer (const double eigenValue, const double fermiEnergy, const double kb, const double T)
 Calculates the derivative of the partial occupancy of the atomic orbital with respect to (x=eigenvalue-fermiEnergy) using Fermi-Dirac smearing.
 
void dftfe::dftUtils::cross_product (const std::vector< double > &a, const std::vector< double > &b, std::vector< double > &crossProductVector)
 Calculates cross product of two vectors.
 
void dftfe::dftUtils::transformDomainBoundingVectors (std::vector< std::vector< double > > &domainBoundingVectors, const dealii::Tensor< 2, 3, double > &deformationGradient)
 Applies an affine transformation to the domain bounding vectors.
 
void dftfe::dftUtils::writeDataVTUParallelLowestPoolId (const dealii::DoFHandler< 3 > &dofHandler, const dealii::DataOut< 3 > &dataOut, const MPI_Comm &mpiCommParent, const MPI_Comm &mpiCommDomain, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const std::string &folderName, const std::string &fileName)
 Writes to vtu file only from the lowest pool id.
 
void dftfe::dftUtils::createBandParallelizationIndices (const MPI_Comm &interBandGroupComm, const unsigned int numBands, std::vector< unsigned int > &bandGroupLowHighPlusOneIndices)
 Create index vector which is used for band parallelization.
 
void dftfe::dftUtils::createKpointParallelizationIndices (const MPI_Comm &interKptPoolComm, const int numberIndices, std::vector< int > &kptGroupLowHighPlusOneIndices)
 
void dftfe::dftUtils::printCurrentMemoryUsage (const MPI_Comm &mpiComm, const std::string message)
 Wrapper to print current memory usage (prints only the maximum across mpiComm) using PetscMemoryGetCurrentUsage.
 
 dftfe::dftUtils::DeclExceptionMsg (ExcNotImplementedYet, "This functionality is not implemented yet or not needed to be implemented.")
 Exception handler for not implemented functionality.
 
 dftfe::dftUtils::DeclExceptionMsg (ExcInternalError, "DFT-FE internal error.")
 Exception handler for DFT-FE internal error.
 
+
+ + + + diff --git a/dft_utils_8h_source.html b/dft_utils_8h_source.html new file mode 100644 index 000000000..00642ec39 --- /dev/null +++ b/dft_utils_8h_source.html @@ -0,0 +1,444 @@ + + + + + + + +DFT-FE: workspace/include/dftUtils.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftUtils.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16
+
17
+
18
+
19#ifndef dftUtils_H_
+
20#define dftUtils_H_
+
21
+
22#include <headers.h>
+
23#include <mpi.h>
+
24
+
25namespace dftfe
+
26{
+
27 /**
+
28 * @brief Contains repeatedly used functions in the KSDFT calculations
+
29 *
+
30 * @author Sambit Das, Krishnendu Ghosh, Phani Motamarri
+
31 */
+
32
+
33 namespace dftUtils
+
34 {
+
35 extern "C"
+
36 {
+
37 //
+
38 // lapack Ax=b
+
39 //
+
40 void
+
41 dgesv_(int * N,
+
42 int * NRHS,
+
43 double *A,
+
44 int * LDA,
+
45 int * IPIV,
+
46 double *B,
+
47 int * LDB,
+
48 int * INFO);
+
49 }
+
50
+
51 inline double
+
+
52 smearedCharge(double r, double rc)
+
53 {
+
54 double val;
+
55 if (r > rc)
+
56 {
+
57 val = 0.0;
+
58 }
+
59 else
+
60 {
+
61 val = -21.0 * pow(r - rc, 3.0) *
+
62 (6.0 * r * r + 3.0 * r * rc + rc * rc) /
+
63 (5.0 * M_PI * pow(rc, 8.0));
+
64 }
+
65 return val;
+
66 }
+
+
67
+
68 inline double
+
+
69 smearedChargeDr(double r, double rc)
+
70 {
+
71 double val;
+
72 if (r > rc)
+
73 {
+
74 val = 0.0;
+
75 }
+
76 else
+
77 {
+
78 val =
+
79 (-63.0 * pow(r - rc, 2.0) * (6.0 * r * r + 3.0 * r * rc + rc * rc) -
+
80 63.0 * pow(r - rc, 3.0) * (4.0 * r + rc)) /
+
81 (5.0 * M_PI * pow(rc, 8.0));
+
82 }
+
83 return val;
+
84 }
+
+
85
+
86 inline double
+
+
87 smearedPot(double r, double rc)
+
88 {
+
89 double val;
+
90 if (r > rc)
+
91 {
+
92 val = 1.0 / r;
+
93 }
+
94 else
+
95 {
+
96 val = (9.0 * pow(r, 7.0) - 30.0 * pow(r, 6.0) * rc +
+
97 28.0 * pow(r, 5.0) * pow(rc, 2.0) -
+
98 14.0 * pow(r, 2.0) * pow(rc, 5) + 12.0 * pow(rc, 7)) /
+
99 (5.0 * pow(rc, 8.0));
+
100 }
+
101 return val;
+
102 }
+
+
103
+
104 // derivative w.r.t r
+
105 inline double
+
+
106 smearedPotDr(double r, double rc)
+
107 {
+
108 double val;
+
109 if (r > rc)
+
110 {
+
111 val = -1.0 / pow(r, 2.0);
+
112 }
+
113 else
+
114 {
+
115 val = (63.0 * pow(r, 6.0) - 180.0 * pow(r, 5.0) * rc +
+
116 140.0 * pow(r, 4.0) * pow(rc, 2.0) -
+
117 28.0 * pow(r, 1.0) * pow(rc, 5)) /
+
118 (5.0 * pow(rc, 8.0));
+
119 }
+
120 return val;
+
121 }
+
+
122
+
123 inline std::vector<double>
+
+ +
125 const std::vector<double> &latticeVectorsFlattened,
+
126 const std::vector<double> &coordWithRespectToCellCorner)
+
127 {
+
128 std::vector<double> latticeVectorsDup = latticeVectorsFlattened;
+
129 std::vector<double> coordDup = coordWithRespectToCellCorner;
+
130 //
+
131 // to get the fractionalCoords, solve a linear
+
132 // system of equations
+
133 //
+
134 int N = 3;
+
135 int NRHS = 1;
+
136 int LDA = 3;
+
137 int IPIV[3];
+
138 int info;
+
139
+
140 dgesv_(&N,
+
141 &NRHS,
+ +
143 &LDA,
+
144 &IPIV[0],
+
145 &coordDup[0],
+
146 &LDA,
+
147 &info);
+
148 AssertThrow(info == 0,
+
149 dealii::ExcMessage(
+
150 "LU solve in finding fractional coordinates failed."));
+
151 return coordDup;
+
152 }
+
+
153
+
154 /** @brief Calculates value of composite generator
+
155 *
+
156 */
+
157 double
+ +
159 const double r,
+
160 const double a0,
+
161 const double power);
+
162
+
163 /** @brief Create bounding box around a sphere.
+
164 *
+
165 * @param sphere center
+
166 * @param sphere radius
+
167 * @return bounding box
+
168 */
+
169 dealii::BoundingBox<3>
+
170 createBoundingBoxForSphere(const dealii::Point<3> &center,
+
171 const double sphereRadius);
+
172
+
173 /** @brief Calculates partial occupancy of the atomic orbital using
+
174 * Fermi-Dirac smearing.
+
175 *
+
176 * @param eigenValue
+
177 * @param fermiEnergy
+
178 * @param kb Boltzmann constant
+
179 * @param T smearing temperature
+
180 * @return double The partial occupancy of the orbital
+
181 */
+
182 double
+ +
184 const double fermiEnergy,
+
185 const double kb,
+
186 const double T);
+
187
+
188 /** @brief Calculates the derivative of the partial occupancy of the atomic orbital
+
189 * with respect to (x=eigenvalue-fermiEnergy) using Fermi-Dirac smearing.
+
190 *
+
191 * @param eigenValue
+
192 * @param fermiEnergy
+
193 * @param kb Boltzmann constant
+
194 * @param T smearing temperature
+
195 * @return double The partial occupancy derivative of the orbital
+
196 */
+
197 double
+ +
199 const double fermiEnergy,
+
200 const double kb,
+
201 const double T);
+
202
+
203 /** @brief Calculates cross product of two vectors
+
204 *
+
205 * @param a first vector
+
206 * @param b second vector
+
207 * @param crossProductVector cross product of a and b
+
208 * @return void
+
209 */
+
210 void
+
211 cross_product(const std::vector<double> &a,
+
212 const std::vector<double> &b,
+
213 std::vector<double> & crossProductVector);
+
214
+
215
+
216 /** @brief Applies an affine transformation to the domain bounding vectors
+
217 *
+
218 * @param d_domainBoundingVectors the bounding vectors of the domain given as a 2d array
+
219 * @param deformationGradient
+
220 * @return void.
+
221 */
+
222 void
+ +
224 std::vector<std::vector<double>> & domainBoundingVectors,
+
225 const dealii::Tensor<2, 3, double> &deformationGradient);
+
226
+
227 /** @brief Writes to vtu file only from the lowest pool id
+
228 *
+
229 * @param dataOut DataOut class object
+
230 * @param mpiCommParent parent mpi communicator
+
231 * @param mpiCommDomain mpi communicator of domain decomposition inside each pool
+
232 * @param interpoolcomm mpi communicator across k point pools
+
233 * @param interBandGroupComm mpi communicator across band groups
+
234 * @param fileName
+
235 */
+
236 void
+
237 writeDataVTUParallelLowestPoolId(const dealii::DoFHandler<3> &dofHandler,
+
238 const dealii::DataOut<3> & dataOut,
+
239 const MPI_Comm & mpiCommParent,
+
240 const MPI_Comm & mpiCommDomain,
+
241 const MPI_Comm & interpoolcomm,
+
242 const MPI_Comm & interBandGroupComm,
+
243 const std::string &folderName,
+
244 const std::string &fileName);
+
245
+
246 /** @brief Create index vector which is used for band parallelization
+
247 *
+
248 * @[in]param interBandGroupComm mpi communicator across band groups
+
249 * @[in]param numBands
+
250 * @[out]param bandGroupLowHighPlusOneIndices
+
251 */
+
252 void
+ +
254 const MPI_Comm & interBandGroupComm,
+
255 const unsigned int numBands,
+
256 std::vector<unsigned int> &bandGroupLowHighPlusOneIndices);
+
257
+
258 void
+ + +
261 const int numberIndices,
+
262 std::vector<int> &kptGroupLowHighPlusOneIndices);
+
263
+
264
+
265 /** @brief Wrapper to print current memory usage (prints only the maximum across mpiComm)
+
266 * using PetscMemoryGetCurrentUsage
+
267 *
+
268 * @[in]param mpiComm mpi communicator across which the memory printing
+
269 * will be synchronized
+
270 * @[in]param message message to be printed alongwith the memory usage
+
271 */
+
272 void
+ +
274
+
275 /**
+
276 * A class to split the given communicator into a number of pools
+
277 */
+
+
278 class Pool
+
279 {
+
280 public:
+
281 Pool(const MPI_Comm & mpi_communicator,
+
282 const unsigned int n_pools,
+
283 const int verbosity);
+
284
+
285 /**
+
286 * @brief get the communicator across the processor groups
+
287 */
+
288 MPI_Comm &
+ +
290
+
291 /**
+
292 * @brief get the communicator associated with processor group
+
293 */
+
294 MPI_Comm &
+ +
296
+
297 private:
+ + +
300 };
+
+
301
+
302 /// Exception handler for not implemented functionality
+ + +
305 "This functionality is not implemented yet or not needed to be implemented.");
+
306
+
307 /// Exception handler for DFT-FE internal error
+
308 DeclExceptionMsg(ExcInternalError, "DFT-FE internal error.");
+
309 } // namespace dftUtils
+
310
+
311} // namespace dftfe
+
312#endif
+
Definition dftUtils.h:279
+
MPI_Comm & get_intrapool_comm()
get the communicator associated with processor group
+
MPI_Comm & get_interpool_comm()
get the communicator across the processor groups
+
MPI_Comm interpoolcomm
Definition dftUtils.h:298
+
Pool(const MPI_Comm &mpi_communicator, const unsigned int n_pools, const int verbosity)
+
MPI_Comm intrapoolcomm
Definition dftUtils.h:299
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ +
double smearedPot(double r, double rc)
Definition dftUtils.h:87
+
void transformDomainBoundingVectors(std::vector< std::vector< double > > &domainBoundingVectors, const dealii::Tensor< 2, 3, double > &deformationGradient)
Applies an affine transformation to the domain bounding vectors.
+
double smearedPotDr(double r, double rc)
Definition dftUtils.h:106
+
void dgesv_(int *N, int *NRHS, double *A, int *LDA, int *IPIV, double *B, int *LDB, int *INFO)
+
double getPartialOccupancy(const double eigenValue, const double fermiEnergy, const double kb, const double T)
Calculates partial occupancy of the atomic orbital using Fermi-Dirac smearing.
+
double getCompositeGeneratorVal(const double rc, const double r, const double a0, const double power)
Calculates value of composite generator.
+
double smearedChargeDr(double r, double rc)
Definition dftUtils.h:69
+
void createBandParallelizationIndices(const MPI_Comm &interBandGroupComm, const unsigned int numBands, std::vector< unsigned int > &bandGroupLowHighPlusOneIndices)
Create index vector which is used for band parallelization.
+
dealii::BoundingBox< 3 > createBoundingBoxForSphere(const dealii::Point< 3 > &center, const double sphereRadius)
Create bounding box around a sphere.
+
void createKpointParallelizationIndices(const MPI_Comm &interKptPoolComm, const int numberIndices, std::vector< int > &kptGroupLowHighPlusOneIndices)
+
void printCurrentMemoryUsage(const MPI_Comm &mpiComm, const std::string message)
Wrapper to print current memory usage (prints only the maximum across mpiComm) using PetscMemoryGetCu...
+
void writeDataVTUParallelLowestPoolId(const dealii::DoFHandler< 3 > &dofHandler, const dealii::DataOut< 3 > &dataOut, const MPI_Comm &mpiCommParent, const MPI_Comm &mpiCommDomain, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const std::string &folderName, const std::string &fileName)
Writes to vtu file only from the lowest pool id.
+
double smearedCharge(double r, double rc)
Definition dftUtils.h:52
+
double getPartialOccupancyDer(const double eigenValue, const double fermiEnergy, const double kb, const double T)
Calculates the derivative of the partial occupancy of the atomic orbital with respect to (x=eigenvalu...
+
void cross_product(const std::vector< double > &a, const std::vector< double > &b, std::vector< double > &crossProductVector)
Calculates cross product of two vectors.
+
DeclExceptionMsg(ExcNotImplementedYet, "This functionality is not implemented yet or not needed to be implemented.")
Exception handler for not implemented functionality.
+
std::vector< double > getFractionalCoordinates(const std::vector< double > &latticeVectorsFlattened, const std::vector< double > &coordWithRespectToCellCorner)
Definition dftUtils.h:124
+
Definition pseudoPotentialToDftfeConverter.cc:34
+ +
+ + + + diff --git a/dftd_8h.html b/dftd_8h.html new file mode 100644 index 000000000..f1e9ce3ef --- /dev/null +++ b/dftd_8h.html @@ -0,0 +1,128 @@ + + + + + + + +DFT-FE: workspace/include/dftd.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftd.h File Reference
+
+
+
#include <headers.h>
+#include "dftParameters.h"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::dispersionCorrection
 Calculates dispersion correction to energy, force and stress. More...
 
+ + + +

+Namespaces

namespace  dftfe
 
+ + + +

+Macros

#define dispersionCorrection_H_
 
+

Macro Definition Documentation

+ +

◆ dispersionCorrection_H_

+ +
+
+ + + + +
#define dispersionCorrection_H_
+
+ +
+
+
+ + + + diff --git a/dftd_8h_source.html b/dftd_8h_source.html new file mode 100644 index 000000000..536b00bc3 --- /dev/null +++ b/dftd_8h_source.html @@ -0,0 +1,221 @@ + + + + + + + +DFT-FE: workspace/include/dftd.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftd.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2018 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#include <headers.h>
+
19#include "dftParameters.h"
+
20#ifdef DFTFE_WITH_DFTD3
+
21# include <dftd3.h>
+
22#endif
+
23#ifdef DFTFE_WITH_DFTD4
+
24# include <dftd4.h>
+
25#endif
+
26
+
27#ifndef dispersionCorrection_H_
+
28# define dispersionCorrection_H_
+
29namespace dftfe
+
30{
+
31 /**
+
32 * @brief Calculates dispersion correction to energy, force and stress
+
33 *
+
34 * @author Nikhil Kodali
+
35 */
+
+ +
37 {
+
38 public:
+
39 /**
+
40 * @brief Constructor
+
41 *
+
42 */
+ + + + + +
48
+
49 /**
+
50 * Wrapper function for various dispersion corrections to energy, force and
+
51 * stress.
+
52 *
+
53 * @param atomLocations
+
54 * @param d_domainBoundingVectors
+
55 */
+
56 void
+ +
58 const std::vector<std::vector<double>> &atomLocations,
+
59 const std::vector<std::vector<double>> &d_domainBoundingVectors);
+
60
+
61 double
+ +
63
+
64 double
+
65 getForceCorrection(int atomNo, int dim) const;
+
66
+
67 double
+
68 getStressCorrection(int dim1, int dim2) const;
+
69
+
70 private:
+ + +
73 std::vector<double> d_forceDispersion;
+
74 std::array<double, 9> d_stressDispersion;
+
75 std::vector<double> d_atomCoordinates;
+
76 std::vector<int> d_atomicNumbers;
+
77 std::array<double, 9> d_latticeVectors;
+
78
+
79
+ + + + + +
85
+
86 // initialize the variables needed for dispersion correction calculations
+
87 void
+ +
89 const std::vector<std::vector<double>> &atomLocations,
+
90 const std::vector<std::vector<double>> &d_domainBoundingVectors);
+
91
+
92
+
93 // Compute D3/4 correction
+
94 void
+ +
96
+
97
+
98 // Compute TS correction, placeholder
+
99 };
+
+
100} // namespace dftfe
+
101#endif // dispersionCorrection_H_
+
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:35
+
Calculates dispersion correction to energy, force and stress.
Definition dftd.h:37
+
int d_natoms
Definition dftd.h:71
+
const dftParameters & d_dftParams
Definition dftd.h:84
+
double getEnergyCorrection() const
+
double getStressCorrection(int dim1, int dim2) const
+
const MPI_Comm mpi_communicator_global
Definition dftd.h:80
+
double getForceCorrection(int atomNo, int dim) const
+
std::vector< double > d_forceDispersion
Definition dftd.h:73
+
double d_energyDispersion
Definition dftd.h:72
+
std::array< double, 9 > d_latticeVectors
Definition dftd.h:77
+
const MPI_Comm mpi_communicator_domain
Definition dftd.h:81
+
dispersionCorrection(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &interpool_comm, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams)
Constructor.
+ +
std::array< double, 9 > d_stressDispersion
Definition dftd.h:74
+
std::vector< int > d_atomicNumbers
Definition dftd.h:76
+
std::vector< double > d_atomCoordinates
Definition dftd.h:75
+
const MPI_Comm interBandGroupComm
Definition dftd.h:83
+
void computeDispresionCorrection(const std::vector< std::vector< double > > &atomLocations, const std::vector< std::vector< double > > &d_domainBoundingVectors)
+
void initDispersionCorrection(const std::vector< std::vector< double > > &atomLocations, const std::vector< std::vector< double > > &d_domainBoundingVectors)
+
const MPI_Comm interpoolcomm
Definition dftd.h:82
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ + +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/dftfe_data_types_8h.html b/dftfe_data_types_8h.html new file mode 100644 index 000000000..070b0920b --- /dev/null +++ b/dftfe_data_types_8h.html @@ -0,0 +1,145 @@ + + + + + + + +DFT-FE: workspace/include/dftfeDataTypes.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfeDataTypes.h File Reference
+
+ + + + + diff --git a/dftfe_data_types_8h_source.html b/dftfe_data_types_8h_source.html new file mode 100644 index 000000000..8357d2ef9 --- /dev/null +++ b/dftfe_data_types_8h_source.html @@ -0,0 +1,238 @@ + + + + + + + +DFT-FE: workspace/include/dftfeDataTypes.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfeDataTypes.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17// @author Sambit Das
+
18//
+
19
+
20#ifndef dftfeDataTypes_H_
+
21#define dftfeDataTypes_H_
+
22
+
23#include <deal.II/base/config.h>
+
24#include <deal.II/base/types.h>
+
25
+
26// Include generic C++ headers
+
27#include <fstream>
+
28#include <iostream>
+
29#include <fenv.h>
+
30
+
31// commonly used typedefs used in dftfe go here
+
32namespace dftfe
+
33{
+
+
34 namespace dataTypes
+
35 {
+
36 typedef dealii::types::global_dof_index global_size_type;
+
37 typedef unsigned int local_size_type;
+
38#ifdef USE_COMPLEX
+
39 typedef std::complex<double> number;
+
40 typedef std::complex<float> numberFP32;
+
41 typedef double numberValueType;
+
42 typedef float numberFP32ValueType;
+
43#else
+
44 typedef double number;
+
45 typedef float numberFP32;
+
46 typedef double numberValueType;
+
47 typedef float numberFP32ValueType;
+
48#endif
+
49
+
50 inline MPI_Datatype
+
+
51 mpi_type_id(const int *)
+
52 {
+
53 return MPI_INT;
+
54 }
+
+
55
+
56 inline MPI_Datatype
+
+
57 mpi_type_id(const long int *)
+
58 {
+
59 return MPI_LONG;
+
60 }
+
+
61
+
62 inline MPI_Datatype
+
+
63 mpi_type_id(const unsigned int *)
+
64 {
+
65 return MPI_UNSIGNED;
+
66 }
+
+
67
+
68 inline MPI_Datatype
+
+
69 mpi_type_id(const unsigned long int *)
+
70 {
+
71 return MPI_UNSIGNED_LONG;
+
72 }
+
+
73
+
74 inline MPI_Datatype
+
+
75 mpi_type_id(const unsigned long long int *)
+
76 {
+ +
78 }
+
+
79
+
80
+
81 inline MPI_Datatype
+
+
82 mpi_type_id(const float *)
+
83 {
+
84 return MPI_FLOAT;
+
85 }
+
+
86
+
87
+
88 inline MPI_Datatype
+
+
89 mpi_type_id(const double *)
+
90 {
+
91 return MPI_DOUBLE;
+
92 }
+
+
93
+
94 inline MPI_Datatype
+
+
95 mpi_type_id(const long double *)
+
96 {
+
97 return MPI_LONG_DOUBLE;
+
98 }
+
+
99
+
100 inline MPI_Datatype
+
+
101 mpi_type_id(const std::complex<float> *)
+
102 {
+
103 return MPI_COMPLEX;
+
104 }
+
+
105
+
106 inline MPI_Datatype
+
+
107 mpi_type_id(const std::complex<double> *)
+
108 {
+
109 return MPI_DOUBLE_COMPLEX;
+
110 }
+
+
111 } // namespace dataTypes
+
+
112} // namespace dftfe
+
113
+
114#endif
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
double numberValueType
Definition dftfeDataTypes.h:46
+
dealii::types::global_dof_index global_size_type
Definition dftfeDataTypes.h:36
+
unsigned int local_size_type
Definition dftfeDataTypes.h:37
+
float numberFP32ValueType
Definition dftfeDataTypes.h:47
+
double number
Definition dftfeDataTypes.h:44
+
MPI_Datatype mpi_type_id(const int *)
Definition dftfeDataTypes.h:51
+
float numberFP32
Definition dftfeDataTypes.h:45
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/dftfe_wrapper_8h.html b/dftfe_wrapper_8h.html new file mode 100644 index 000000000..d2b9c87c1 --- /dev/null +++ b/dftfe_wrapper_8h.html @@ -0,0 +1,108 @@ + + + + + + + +DFT-FE: workspace/include/dftfeWrapper.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
dftfeWrapper.h File Reference
+
+
+
#include <mpi.h>
+#include <string>
+#include <vector>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::dftfeWrapper
 wrapper class for dftfe More...
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/dftfe_wrapper_8h_source.html b/dftfe_wrapper_8h_source.html new file mode 100644 index 000000000..18098b9f2 --- /dev/null +++ b/dftfe_wrapper_8h_source.html @@ -0,0 +1,526 @@ + + + + + + + +DFT-FE: workspace/include/dftfeWrapper.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
dftfeWrapper.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#ifndef dftfeWrapper_H_
+
19#define dftfeWrapper_H_
+
20
+
21#include <mpi.h>
+
22#include <string>
+
23#include <vector>
+
24
+
25namespace dftfe
+
26{
+
27 class dftBase;
+
28 class dftParameters;
+
29 /**
+
30 * @brief wrapper class for dftfe
+
31 *
+
32 * @author Sambit Das
+
33 */
+
+ +
35 {
+
36 public:
+
37 /**
+
38 * @brief must be called only once at start of program from all processors
+
39 * after calling MPI_Init
+
40 */
+
41 static void
+ +
43
+
44 /**
+
45 * @brief must be called only once at end of program from all processors
+
46 * but before calling MPI_Finalize
+
47 */
+
48 static void
+ +
50
+
51
+
52 /**
+
53 * @brief empty constructor
+
54 */
+ +
56
+
57 /**
+
58 * @brief constructor based on input parameter_file
+
59 */
+
60 dftfeWrapper(const std::string parameter_file,
+ +
62 const bool printParams = false,
+
63 const bool setDeviceToMPITaskBindingInternally = false,
+
64 const std::string solverMode = "GS",
+
65 const std::string restartFilesPath = ".",
+
66 const int _verbosity = 1,
+
67 const bool useDevice = false);
+
68
+
69 /**
+
70 * @brief constructor based on input parameter_file and restart
+
71 * coordinates and domain vectors file paths
+
72 */
+
73 dftfeWrapper(const std::string parameter_file,
+
74 const std::string restartCoordsFile,
+
75 const std::string restartDomainVectorsFile,
+ +
77 const bool printParams = false,
+
78 const bool setDeviceToMPITaskBindingInternally = false,
+
79 const std::string solverMode = "GS",
+
80 const std::string restartFilesPath = ".",
+
81 const int _verbosity = 1,
+
82 const bool useDevice = false,
+
83 const bool isScfRestart = true);
+
84
+
85
+
86 /**
+
87 * @brief constructor based on input list of atomic coordinates,
+
88 * list of atomic numbers,cell, boundary conditions,
+
89 * Monkhorst-Pack k-point grid, and other optional parameters.
+
90 * This constructor currently only sets up GGA PBE pseudopotential
+
91 * DFT calculations using ONCV pseudopotentials in .upf format
+
92 * (read from DFTFE_PSP_PATH folder provided as an environment
+
93 * variable). The pseudpotential directory must contain files in the
+
94 * format: AtomicSymbol.upf
+
95 *
+
96 * @param[in] mpi_comm_parent mpi communicator to be used by the
+
97 * dftfeWrapper.
+
98 * @param[in] useDevice toggle use of Device accelerated DFT-FE
+
99 * @param[in] atomicPositionsCart vector of atomic positions for
+
100 * each atom (in Bohr units), Origin is at cell corner
+
101 * @param[in] atomicNumbers vector of atomic numbers
+
102 * @param[in] cell 3 \times 3 matrix in Bohr units, cell[i] denotes the ith
+
103 * cell vector. DFT-FE requires the cell vectors to form a
+
104 * right-handed coordinate system i.e.
+
105 * dotProduct(crossProduct(cell[0],cell[1]),cell[2])>0
+
106 * @param[in] pbc vector of bools denoting periodic boundary conditions
+
107 * along the three cell vectors, false denotes non-periodic and true is
+
108 * periodic
+
109 * @param[in] mpgrid vector of Monkhorst-Pack grid points along the
+
110 * reciprocal lattice vector directions for sampling the Brillouin zone
+
111 * along periodic directions. Default value is a Gamma point.
+
112 * @param[in] mpgridShift vector of bools where false denotes no shift and
+
113 * true denotes shift by half the Monkhost-Pack grid spacing. Default value
+
114 * is no shift.
+
115 * @param[in] spinPolarizedDFT toggles spin-polarized DFT calculations.
+
116 * Default value is false
+
117 * @param[in] startMagnetization Starting magnetization to be used for
+
118 * spin-polarized DFT calculations (must be between -0.5 and +0.5).
+
119 * Corresponding magnetization per simulation domain will be
+
120 * (2 x START MAGNETIZATION x Number of electrons) in Bohr magneton units.
+
121 * @param[in] fermiDiracSmearingTemp Fermi-Dirac smearing temperature in
+
122 * Kelvin. Default value is 500 K.
+
123 * @param[in] npkpt Number of groups of MPI tasks across which the work load
+
124 * of the irreducible k-points is parallelised. npkpt must be a divisor of
+
125 * total number of MPI tasks. Default value of 0 internally sets npkt to an
+
126 * heuristically determined value.
+
127 * @param[in] meshSize Finite-element mesh size around the atoms in Bohr
+
128 * units. The default value of 0.8 is sufficient to achieve chemical
+
129 * accuracy in energy (0.1 mHa/atom discretization error) and forces (0.1
+
130 * mHa/Bohr discretization error) for the ONCV pseudo-dojo
+
131 * pseudopotentials. Note that this function assumes a sixth order
+
132 * finite-element interpolating polynomial
+
133 * @param[in] scfMixingParameter mixing paramter for SCF fixed point
+
134 * iteration. Currently the Anderson mixing strategy is used.
+
135 * @param[in] verbosity printing verbosity. Default value is -1: no printing
+
136 * @param[in] setDeviceToMPITaskBindingInternally This option is only valid
+
137 * for Device runs. If set to true Device to MPI task binding is set inside
+
138 * the DFT-FE code. Default behaviour is false which assumes the binding has
+
139 * been externally set.
+
140 */
+ +
142 const bool useDevice,
+
143 const std::vector<std::vector<double>> atomicPositionsCart,
+
144 const std::vector<unsigned int> atomicNumbers,
+
145 const std::vector<std::vector<double>> cell,
+
146 const std::vector<bool> pbc,
+
147 const std::vector<unsigned int> mpGrid =
+
148 std::vector<unsigned int>{1, 1, 1},
+
149 const std::vector<bool> mpGridShift = std::vector<bool>{false,
+
150 false,
+
151 false},
+
152 const bool spinPolarizedDFT = false,
+
153 const double startMagnetization = 0.0,
+
154 const double fermiDiracSmearingTemp = 500.0,
+
155 const unsigned int npkpt = 0,
+
156 const double meshSize = 0.8,
+
157 const double scfMixingParameter = 0.2,
+
158 const int verbosity = -1,
+
159 const bool setDeviceToMPITaskBindingInternally = false);
+
160
+
161
+ +
163
+
164 /**
+
165 * @brief clear and reinitialize based on input parameter_file
+
166 */
+
167 void
+
168 reinit(const std::string parameter_file,
+ +
170 const bool printParams = false,
+
171 const bool setDeviceToMPITaskBindingInternally = false,
+
172 const std::string solverMode = "GS",
+
173 const std::string restartFilesPath = ".",
+
174 const int _verbosity = 1,
+
175 const bool useDevice = false);
+
176
+
177 /**
+
178 * @brief clear and reinitialize based on input parameter_file and restart
+
179 * coordinates and domain vectors file paths
+
180 */
+
181 void
+
182 reinit(const std::string parameter_file,
+
183 const std::string restartCoordsFile,
+
184 const std::string restartDomainVectorsFile,
+ +
186 const bool printParams = false,
+
187 const bool setDeviceToMPITaskBindingInternally = false,
+
188 const std::string solverMode = "GS",
+
189 const std::string restartFilesPath = ".",
+
190 const int _verbosity = 1,
+
191 const bool useDevice = false,
+
192 const bool isScfRestart = true);
+
193
+
194 void
+ +
196 const bool useDevice,
+
197 const std::vector<std::vector<double>> atomicPositionsCart,
+
198 const std::vector<unsigned int> atomicNumbers,
+
199 const std::vector<std::vector<double>> cell,
+
200 const std::vector<bool> pbc,
+
201 const std::vector<unsigned int> mpGrid =
+
202 std::vector<unsigned int>{1, 1, 1},
+
203 const std::vector<bool> mpGridShift = std::vector<bool>{false,
+
204 false,
+
205 false},
+
206 const bool spinPolarizedDFT = false,
+
207 const double startMagnetization = 0.0,
+
208 const double fermiDiracSmearingTemp = 500.0,
+
209 const unsigned int npkpt = 0,
+
210 const double meshSize = 0.8,
+
211 const double scfMixingParameter = 0.2,
+
212 const int verbosity = -1,
+
213 const bool setDeviceToMPITaskBindingInternally = false);
+
214
+
215 void
+ +
217
+
218 /**
+
219 * @brief Legacy function (to be deprecated)
+
220 */
+
221 void
+ +
223
+
224 /**
+
225 * @brief Calls dftBasepointer public function writeMesh(). Here the inital density and mesh are stored in a file. Useful for visluiing meshes without running solve.
+
226 */
+
227 void
+ +
229
+
230
+
231 /**
+
232 * @brief solve ground-state and return DFT free energy which is sum of internal
+
233 * energy and negative of electronic entropic energy (in Hartree units)
+
234 *
+
235 * @return tuple of ground-state energy, boolean flag on whether scf converged,
+
236 * and L2 norm of residual electron-density of the last SCF iteration
+
237 */
+
238 std::tuple<double, bool, double>
+ +
240 const bool computeCellStress = false);
+
241
+
242 void
+ +
244
+
245 /**
+
246 * @brief Get DFT free energy (in Hartree units). This function can
+
247 * only be called after calling computeDFTFreeEnergy
+
248 */
+
249 double
+ +
251
+
252 /**
+
253 * @brief Get electronic entropic energy (in Hartree units). This function can
+
254 * only be called after calling computeDFTFreeEnergy
+
255 */
+
256 double
+ +
258
+
259 /**
+
260 * @brief Get ionic forces: negative of gradient of DFT free energy with
+
261 * respect to ionic positions (in Hartree/Bohr units). This function can
+
262 * only be called after calling computeDFTFreeEnergy
+
263 *
+
264 * @return vector of forces on each atom
+
265 */
+
266 std::vector<std::vector<double>>
+ +
268
+
269 /**
+
270 * @brief Get cell stress: negative of gradient of DFT free energy
+
271 * with respect to affine strain components scaled by volume
+
272 * (Hartree/Bohr^3) units. This function can only
+
273 * be called after calling computeDFTFreeEnergy
+
274 *
+
275 * @return cell stress 3 \times 3 matrix given by
+
276 * sigma[i][j]=\frac{1}{\Omega}\frac{\partial E}{\partial \epsilon_{ij}}
+
277 */
+
278 std::vector<std::vector<double>>
+ +
280
+
281 /**
+
282 * @brief update atom positions and reinitialize all related data-structures
+
283 *
+
284 * @param[in] atomsDisplacements vector of displacements for
+
285 * each atom (in Bohr units)
+
286 */
+
287 void
+ +
289 const std::vector<std::vector<double>> atomsDisplacements);
+
290
+
291
+
292 /**
+
293 *@brief Deforms the cell by applying the given affine deformation gradient and
+
294 * reinitializes the underlying data-structures.
+
295 *
+
296 *@param[in] deformationGradient deformation gradient
+
297 * matrix given by F[i][j]=\frac{\partial x_i}{\partial X_j}
+
298 */
+
299 void
+
300 deformCell(const std::vector<std::vector<double>> deformationGradient);
+
301
+
302 /**
+
303 * @brief Gets the current atom Positions in cartesian form (in Bohr units)
+
304 * (origin at corner of cell against which the cell vectors are defined)
+
305 *
+
306 * @return array of coords for each atom
+
307 */
+
308 std::vector<std::vector<double>>
+ +
310
+
311 /**
+
312 * @brief Gets the current atom Positions in fractional form
+
313 * (only applicable for periodic and semi-periodic BCs).
+
314 * CAUTION: during relaxation and MD fractional coordinates may have negaive
+
315 * values
+
316 *
+
317 * @return array of coords for each atom
+
318 */
+
319 std::vector<std::vector<double>>
+ +
321
+
322
+
323
+
324 /**
+
325 * @brief Gets the current cell vectors
+
326 *
+
327 * @return 3 \times 3 matrix, cell[i][j] corresponds to jth component of
+
328 * ith cell vector (in Bohr units)
+
329 */
+
330 std::vector<std::vector<double>>
+
331 getCell() const;
+
332
+
333
+
334 /**
+
335 * @brief Gets the boundary conditions for each cell vector direction
+
336 *
+
337 * @return vector of bools, false denotes non-periodic BC and true denotes periodic BC
+
338 */
+
339 std::vector<bool>
+
340 getPBC() const;
+
341
+
342 /**
+
343 * @brief Gets the atomic numbers vector
+
344 *
+
345 * @return vector of atomic numbers
+
346 */
+
347 std::vector<int>
+ +
349
+
350
+
351 /**
+
352 * @brief Gets the number of valence electrons for each atom
+
353 *
+
354 * @return array of number of valence for each atom
+
355 */
+
356 std::vector<int>
+ +
358
+
359
+
360 /**
+
361 * @brief writes the current domain bounding vectors and atom coordinates to files for
+
362 * structural optimization and dynamics restarts. The coordinates are stored
+
363 * as: 1. fractional for semi-periodic/periodic 2. Cartesian for
+
364 * non-periodic.
+
365 * @param[in] Path The folder path to store the atom coordinates required
+
366 * during restart.
+
367 */
+
368 void
+
369 writeDomainAndAtomCoordinates(const std::string Path) const;
+
370
+
371
+
372 dftBase *
+ +
374
+
375 private:
+
376 void
+ +
378
+
379 void
+ +
381 const bool useDevice);
+
382
+ + + + + +
388 };
+
+
389} // namespace dftfe
+
390#endif
+
abstract base class for dft
Definition dftBase.h:34
+
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:35
+
wrapper class for dftfe
Definition dftfeWrapper.h:35
+
std::vector< std::vector< double > > getAtomPositionsFrac() const
Gets the current atom Positions in fractional form (only applicable for periodic and semi-periodic BC...
+
void reinit(const std::string parameter_file, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const bool setDeviceToMPITaskBindingInternally=false, const std::string solverMode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool useDevice=false)
clear and reinitialize based on input parameter_file
+
void reinit(const MPI_Comm &mpi_comm_parent, const bool useDevice, const std::vector< std::vector< double > > atomicPositionsCart, const std::vector< unsigned int > atomicNumbers, const std::vector< std::vector< double > > cell, const std::vector< bool > pbc, const std::vector< unsigned int > mpGrid=std::vector< unsigned int >{1, 1, 1}, const std::vector< bool > mpGridShift=std::vector< bool >{false, false, false}, const bool spinPolarizedDFT=false, const double startMagnetization=0.0, const double fermiDiracSmearingTemp=500.0, const unsigned int npkpt=0, const double meshSize=0.8, const double scfMixingParameter=0.2, const int verbosity=-1, const bool setDeviceToMPITaskBindingInternally=false)
+
void updateAtomPositions(const std::vector< std::vector< double > > atomsDisplacements)
update atom positions and reinitialize all related data-structures
+
void initialize(const bool setDeviceToMPITaskBindingInternally, const bool useDevice)
+
void run()
Legacy function (to be deprecated)
+
static void globalHandlesInitialize(const MPI_Comm &mpi_comm_world)
must be called only once at start of program from all processors after calling MPI_Init
+
dftfeWrapper(const std::string parameter_file, const std::string restartCoordsFile, const std::string restartDomainVectorsFile, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const bool setDeviceToMPITaskBindingInternally=false, const std::string solverMode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool useDevice=false, const bool isScfRestart=true)
constructor based on input parameter_file and restart coordinates and domain vectors file paths
+
std::vector< std::vector< double > > getCellStress() const
Get cell stress: negative of gradient of DFT free energy with respect to affine strain components sca...
+
std::vector< int > getAtomicNumbers() const
Gets the atomic numbers vector.
+
void writeMesh()
Calls dftBasepointer public function writeMesh(). Here the inital density and mesh are stored in a fi...
+
dftBase * getDftfeBasePtr()
+
std::vector< bool > getPBC() const
Gets the boundary conditions for each cell vector direction.
+
static void globalHandlesFinalize()
must be called only once at end of program from all processors but before calling MPI_Finalize
+
dftfeWrapper()
empty constructor
+
std::vector< int > getValenceElectronNumbers() const
Gets the number of valence electrons for each atom.
+
void reinit(const std::string parameter_file, const std::string restartCoordsFile, const std::string restartDomainVectorsFile, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const bool setDeviceToMPITaskBindingInternally=false, const std::string solverMode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool useDevice=false, const bool isScfRestart=true)
clear and reinitialize based on input parameter_file and restart coordinates and domain vectors file ...
+ +
dftfeWrapper(const std::string parameter_file, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const bool setDeviceToMPITaskBindingInternally=false, const std::string solverMode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool useDevice=false)
constructor based on input parameter_file
+
dftfeWrapper(const MPI_Comm &mpi_comm_parent, const bool useDevice, const std::vector< std::vector< double > > atomicPositionsCart, const std::vector< unsigned int > atomicNumbers, const std::vector< std::vector< double > > cell, const std::vector< bool > pbc, const std::vector< unsigned int > mpGrid=std::vector< unsigned int >{1, 1, 1}, const std::vector< bool > mpGridShift=std::vector< bool >{false, false, false}, const bool spinPolarizedDFT=false, const double startMagnetization=0.0, const double fermiDiracSmearingTemp=500.0, const unsigned int npkpt=0, const double meshSize=0.8, const double scfMixingParameter=0.2, const int verbosity=-1, const bool setDeviceToMPITaskBindingInternally=false)
constructor based on input list of atomic coordinates, list of atomic numbers,cell,...
+
std::string d_scratchFolderName
Definition dftfeWrapper.h:386
+
void deformCell(const std::vector< std::vector< double > > deformationGradient)
Deforms the cell by applying the given affine deformation gradient and reinitializes the underlying d...
+
double getDFTFreeEnergy() const
Get DFT free energy (in Hartree units). This function can only be called after calling computeDFTFree...
+
std::vector< std::vector< double > > getForcesAtoms() const
Get ionic forces: negative of gradient of DFT free energy with respect to ionic positions (in Hartree...
+
dftParameters * d_dftfeParamsPtr
Definition dftfeWrapper.h:385
+ +
void writeDomainAndAtomCoordinates(const std::string Path) const
writes the current domain bounding vectors and atom coordinates to files for structural optimization ...
+
dftBase * d_dftfeBasePtr
Definition dftfeWrapper.h:384
+ +
std::vector< std::vector< double > > getCell() const
Gets the current cell vectors.
+
std::vector< std::vector< double > > getAtomPositionsCart() const
Gets the current atom Positions in cartesian form (in Bohr units) (origin at corner of cell against w...
+
MPI_Comm d_mpi_comm_parent
Definition dftfeWrapper.h:383
+
double getElectronicEntropicEnergy() const
Get electronic entropic energy (in Hartree units). This function can only be called after calling com...
+
std::tuple< double, bool, double > computeDFTFreeEnergy(const bool computeIonForces=true, const bool computeCellStress=false)
solve ground-state and return DFT free energy which is sum of internal energy and negative of electro...
+
bool d_isDeviceToMPITaskBindingSetInternally
Definition dftfeWrapper.h:387
+ +
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/dir_3e0e28f287a7eabeca6cb1997599e376.html b/dir_3e0e28f287a7eabeca6cb1997599e376.html new file mode 100644 index 000000000..b876bd214 --- /dev/null +++ b/dir_3e0e28f287a7eabeca6cb1997599e376.html @@ -0,0 +1,94 @@ + + + + + + + +DFT-FE: workspace/pseudoConverters Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
pseudoConverters Directory Reference
+
+
+ + + + +

+Files

 pseudoPotentialToDftfeConverter.cc
 
+
+ + + + diff --git a/dir_7d1659e50fc771a7918f965a6f1404ad.html b/dir_7d1659e50fc771a7918f965a6f1404ad.html new file mode 100644 index 000000000..46a132042 --- /dev/null +++ b/dir_7d1659e50fc771a7918f965a6f1404ad.html @@ -0,0 +1,352 @@ + + + + + + + +DFT-FE: workspace/include Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
include Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 AtomCenteredSphericalFunctionBase.h
 
 AtomCenteredSphericalFunctionBessel.h
 
 AtomCenteredSphericalFunctionContainer.h
 
 AtomCenteredSphericalFunctionCoreDensitySpline.h
 
 AtomCenteredSphericalFunctionGaussian.h
 
 AtomCenteredSphericalFunctionLocalPotentialSpline.h
 
 AtomCenteredSphericalFunctionProjectorSpline.h
 
 AtomCenteredSphericalFunctionSinc.h
 
 AtomCenteredSphericalFunctionSpline.h
 
 AtomCenteredSphericalFunctionValenceDensitySpline.h
 
 AtomCenteredSphericalFunctionZOverR.h
 
 AtomicCenteredNonLocalOperator.h
 
 AtomicCenteredNonLocalOperatorKernelsDevice.h
 
 AtomPseudoWavefunctions.h
 
 BFGSNonLinearSolver.h
 
 BLASWrapper.h
 
 cgPRPNonLinearSolver.h
 
 chebyshevOrthogonalizedSubspaceIterationSolver.h
 
 chebyshevOrthogonalizedSubspaceIterationSolverDevice.h
 
 CompositeData.h
 
 constants.h
 
 constraintMatrixInfo.h
 
 constraintMatrixInfoDevice.h
 
 DataTypeOverloads.h
 
 dealiiLinearSolver.h
 
 dealiiLinearSolverProblem.h
 
 densityCalculator.h
 
 densityFirstOrderResponseCalculator.h
 
 DeviceAPICalls.h
 
 DeviceBlasWrapper.h
 
 DeviceDataTypeOverloads.cu.h
 
 DeviceDataTypeOverloads.h
 
 DeviceDataTypeOverloads.hip.h
 
 deviceDirectCCLWrapper.h
 
 DeviceExceptions.cu.h
 
 DeviceExceptions.hip.h
 
 DeviceKernelLauncherConstants.h
 
 deviceKernelsGeneric.h
 
 DeviceTypeConfig.cu.h
 
 DeviceTypeConfig.h
 
 DeviceTypeConfig.hip.h
 
 dft.h
 
 dftBase.h
 
 dftd.h
 
 dftfeDataTypes.h
 
 dftfeWrapper.h
 
 dftParameters.h
 
 dftUtils.h
 
 eigenSolver.h
 
 elpaScalaManager.h
 
 energyCalculator.h
 
 eshelbyTensor.h
 
 eshelbyTensorSpinPolarized.h
 
 excDensityBaseClass.h
 
 excDensityGGAClass.h
 
 excDensityLDAClass.h
 
 excDensityPositivityCheckTypes.h
 
 Exceptions.h
 
 excManager.h
 
 excWavefunctionBaseClass.h
 
 excWavefunctionNoneClass.h
 
 FEBasisOperations.h
 
 FEBasisOperationsKernelsInternal.h
 
 fileReaders.h
 Contains commonly used I/O file utils functions.
 
 force.h
 
 forceWfcContractions.h
 
 forceWfcContractionsDeviceKernels.h
 
 geometryOptimizationClass.h
 
 geoOptCell.h
 
 geoOptIon.h
 
 headers.h
 
 kerkerSolverProblem.h
 
 kerkerSolverProblemDevice.h
 
 KohnShamHamiltonianOperator.h
 
 lapack_support.h
 
 LBFGSNonLinearSolver.h
 
 libraryMDI.h
 
 linearAlgebraOperations.h
 
 linearAlgebraOperationsDevice.h
 
 linearAlgebraOperationsInternal.h
 
 linearSolver.h
 
 linearSolverCGDevice.h
 
 linearSolverDevice.h
 
 linearSolverProblemDevice.h
 
 MDIEngine.h
 
 MemoryManager.h
 
 MemorySpaceType.h
 
 MemoryStorage.h
 
 MemoryTransfer.h
 
 MemoryTransferKernelsDevice.h
 
 meshGenUtils.h
 
 meshMovement.h
 
 meshMovementAffineTransform.h
 
 meshMovementGaussian.h
 
 mixingClass.h
 
 molecularDynamicsClass.h
 
 MPICommunicatorP2P.h
 
 MPICommunicatorP2PKernels.h
 
 MPIPatternP2P.h
 
 MPIRequestersBase.h
 
 MPIRequestersNBX.h
 
 MPITags.h
 
 MPIWriteOnFile.h
 
 MultiVector.h
 
 NNGGA.h
 
 NNLDA.h
 
 nonLinearSolver.h
 
 nonlinearSolverProblem.h
 
 nudgedElasticBandClass.h
 
 oncvClass.h
 
 operator.h
 
 OptimizedIndexSet.h
 
 PeriodicTable.h
 stores a map between atomic number and atomic symbol and atomic mass
 
 poissonSolverProblem.h
 
 poissonSolverProblemDevice.h
 
 process_grid.h
 
 pseudoConverter.h
 
 pseudoUtils.h
 
 QuadDataCompositeWrite.h
 
 runParameters.h
 
 scalapack.templates.h
 
 scalapackWrapper.h
 
 solveVselfInBinsDevice.h
 
 sphericalHarmonicUtils.h
 
 symmetry.h
 
 triangulationManager.h
 
 TypeConfig.h
 
 vectorUtilities.h
 
 vselfBinsManager.h
 
+
+ + + + diff --git a/dir_a5be7bbed3ff2f129951759fe96bf5d5.html b/dir_a5be7bbed3ff2f129951759fe96bf5d5.html new file mode 100644 index 000000000..7f222a408 --- /dev/null +++ b/dir_a5be7bbed3ff2f129951759fe96bf5d5.html @@ -0,0 +1,96 @@ + + + + + + + +DFT-FE: workspace Directory Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
workspace Directory Reference
+
+
+ + + + + + +

+Directories

 include
 
 pseudoConverters
 
+
+ + + + diff --git a/doc.svg b/doc.svg new file mode 100644 index 000000000..0b928a531 --- /dev/null +++ b/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docd.svg b/docd.svg new file mode 100644 index 000000000..ac18b2755 --- /dev/null +++ b/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doxygen.css b/doxygen.css new file mode 100644 index 000000000..7b7d851b8 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,2225 @@ +/* The standard CSS for doxygen 1.10.0*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--fragment-copy-ok-color: #2EC82E; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +/** special sections */ +--warning-color-bg: #f8d1cc; +--warning-color-hl: #b61825; +--warning-color-text: #75070f; +--note-color-bg: #faf3d8; +--note-color-hl: #f3a600; +--note-color-text: #5f4204; +--todo-color-bg: #e4f3ff; +--todo-color-hl: #1879C4; +--todo-color-text: #274a5c; +--test-color-bg: #e8e8ff; +--test-color-hl: #3939C4; +--test-color-text: #1a1a5c; +--deprecated-color-bg: #ecf0f3; +--deprecated-color-hl: #5b6269; +--deprecated-color-text: #43454a; +--bug-color-bg: #e4dafd; +--bug-color-hl: #5b2bdd; +--bug-color-text: #2a0d72; +--invariant-color-bg: #d8f1e3; +--invariant-color-hl: #44b86f; +--invariant-color-text: #265532; +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: #090D16; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--fragment-copy-ok-color: #0EA80E; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +/** special sections */ +--warning-color-bg: #2e1917; +--warning-color-hl: #ad2617; +--warning-color-text: #f5b1aa; +--note-color-bg: #3b2e04; +--note-color-hl: #f1b602; +--note-color-text: #ceb670; +--todo-color-bg: #163750; +--todo-color-hl: #1982D2; +--todo-color-text: #dcf0fa; +--test-color-bg: #121258; +--test-color-hl: #4242cf; +--test-color-text: #c0c0da; +--deprecated-color-bg: #2e323b; +--deprecated-color-hl: #738396; +--deprecated-color-text: #abb0bd; +--bug-color-bg: #2a2536; +--bug-color-hl: #7661b3; +--bug-color-text: #ae9ed6; +--invariant-color-bg: #303a35; +--invariant-color-hl: #76ce96; +--invariant-color-text: #cceed5; +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: none; + background: linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%); +} + +a:hover > span.arrow { + text-decoration: none; + background : var(--nav-background-color); +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; + overflow-y: hidden; + position: relative; + min-height: 12px; + margin: 10px 0px; + padding: 10px 10px; + border: 1px solid var(--fragment-border-color); + border-radius: 4px; + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); +} + +pre.fragment { + word-wrap: break-word; + font-size: 10pt; + line-height: 125%; + font-family: var(--font-family-monospace); +} + +.clipboard { + width: 24px; + height: 24px; + right: 5px; + top: 5px; + opacity: 0; + position: absolute; + display: inline; + overflow: auto; + fill: var(--fragment-foreground-color); + justify-content: center; + align-items: center; + cursor: pointer; +} + +.clipboard.success { + border: 1px solid var(--fragment-foreground-color); + border-radius: 4px; +} + +.fragment:hover .clipboard, .clipboard.success { + opacity: .28; +} + +.clipboard:hover, .clipboard.success { + opacity: 1 !important; +} + +.clipboard:active:not([class~=success]) svg { + transform: scale(.91); +} + +.clipboard.success svg { + fill: var(--fragment-copy-ok-color); +} + +.clipboard.success { + border-color: var(--fragment-copy-ok-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; +} + +.paramname { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; + margin-left: 2px; +} + +.paramname em { + color: var(--memdef-param-name-color); + font-style: normal; + margin-right: 1px; +} + +.paramname .paramdefval { + font-family: var(--font-family-monospace); +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* + +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +*/ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, +dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; + border-radius: 4px; +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention { + background: var(--warning-color-bg); + border-left: 8px solid var(--warning-color-hl); + color: var(--warning-color-text); +} + +dl.warning dt, dl.attention dt { + color: var(--warning-color-hl); +} + +dl.note, dl.remark { + background: var(--note-color-bg); + border-left: 8px solid var(--note-color-hl); + color: var(--note-color-text); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-hl); +} + +dl.todo { + background: var(--todo-color-bg); + border-left: 8px solid var(--todo-color-hl); + color: var(--todo-color-text); +} + +dl.todo dt { + color: var(--todo-color-hl); +} + +dl.test { + background: var(--test-color-bg); + border-left: 8px solid var(--test-color-hl); + color: var(--test-color-text); +} + +dl.test dt { + color: var(--test-color-hl); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.bug { + background: var(--bug-color-bg); + border-left: 8px solid var(--bug-color-hl); + color: var(--bug-color-text); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.deprecated { + background: var(--deprecated-color-bg); + border-left: 8px solid var(--deprecated-color-hl); + color: var(--deprecated-color-text); +} + +dl.deprecated dt a { + color: var(--deprecated-color-hl) !important; +} + +dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color-bg); + border-left: 8px solid var(--invariant-color-hl); + color: var(--invariant-color-text); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-hl); +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doxygen.svg b/doxygen.svg new file mode 100644 index 000000000..79a763540 --- /dev/null +++ b/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen_crawl.html b/doxygen_crawl.html new file mode 100644 index 000000000..88bb5d746 --- /dev/null +++ b/doxygen_crawl.html @@ -0,0 +1,647 @@ + + + +Validator / crawler helper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 000000000..8f493264f --- /dev/null +++ b/dynsections.js @@ -0,0 +1,194 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +let dynsection = { + + // helper function + updateStripes : function() { + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); + }, + + toggleVisibility : function(linkObj) { + const base = $(linkObj).attr('id'); + const summary = $('#'+base+'-summary'); + const content = $('#'+base+'-content'); + const trigger = $('#'+base+'-trigger'); + const src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; + }, + + toggleLevel : function(level) { + $('table.directory tr').each(function() { + const l = this.id.split('_').length-1; + const i = $('#img'+this.id.substring(3)); + const a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + const id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + const start = $(this).attr('data-start'); + const end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + const line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); + }, +}; +/* @license-end */ diff --git a/eigen_solver_8h.html b/eigen_solver_8h.html new file mode 100644 index 000000000..aa7c7943f --- /dev/null +++ b/eigen_solver_8h.html @@ -0,0 +1,107 @@ + + + + + + + +DFT-FE: workspace/include/eigenSolver.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
eigenSolver.h File Reference
+
+
+
#include "headers.h"
+#include "operator.h"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::eigenSolverClass
 Base class for non-linear algebraic solver. More...
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/eigen_solver_8h_source.html b/eigen_solver_8h_source.html new file mode 100644 index 000000000..7fd280d6e --- /dev/null +++ b/eigen_solver_8h_source.html @@ -0,0 +1,179 @@ + + + + + + + +DFT-FE: workspace/include/eigenSolver.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
eigenSolver.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18
+
19#ifndef eigenSolver_h
+
20#define eigenSolver_h
+
21
+
22#include "headers.h"
+
23#include "operator.h"
+
24
+
25namespace dftfe
+
26{
+
27 /**
+
28 * @brief Base class for non-linear algebraic solver.
+
29 *
+
30 * @author Phani Motamarri
+
31 */
+
32
+
+ +
34 {
+
35 public:
+
+
36 enum class ReturnValueType
+
37 {
+
38 SUCCESS = 0,
+
39 FAILURE,
+ +
41 };
+
+
42
+
43
+
44 public:
+
45 /**
+
46 * @brief Destructor.
+
47 */
+
48 virtual ~eigenSolverClass() = 0;
+
49
+
50
+
51 /**
+
52 * @brief Solve eigen problem.
+
53 *
+
54 * @return Return value indicating success or failure.
+
55 */
+
56 virtual void
+ + +
59 std::vector<double> & eigenValues,
+
60 std::vector<double> & residuals) = 0;
+
61
+
62 protected:
+
63 /**
+
64 * @brief Constructor.
+
65 *
+
66 */
+ +
68 };
+
+
69} // namespace dftfe
+
70#endif // dft_eigenSolver_h
+
Base class for non-linear algebraic solver.
Definition eigenSolver.h:34
+
virtual ~eigenSolverClass()=0
Destructor.
+
ReturnValueType
Definition eigenSolver.h:37
+ + + +
virtual void solve(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, std::vector< distributedCPUVec< double > > &eigenVectors, std::vector< double > &eigenValues, std::vector< double > &residuals)=0
Solve eigen problem.
+
eigenSolverClass()
Constructor.
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+ +
+ + + + diff --git a/elpa_scala_manager_8h.html b/elpa_scala_manager_8h.html new file mode 100644 index 000000000..115596d2e --- /dev/null +++ b/elpa_scala_manager_8h.html @@ -0,0 +1,110 @@ + + + + + + + +DFT-FE: workspace/include/elpaScalaManager.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
elpaScalaManager.h File Reference
+
+
+
#include "headers.h"
+#include "process_grid.h"
+#include "dftParameters.h"
+#include <vector>
+#include <elpa/elpa.h>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::elpaScalaManager
 Manager class for ELPA and ScaLAPACK. More...
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/elpa_scala_manager_8h_source.html b/elpa_scala_manager_8h_source.html new file mode 100644 index 000000000..08cf174ff --- /dev/null +++ b/elpa_scala_manager_8h_source.html @@ -0,0 +1,277 @@ + + + + + + + +DFT-FE: workspace/include/elpaScalaManager.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
elpaScalaManager.h
+
+
+Go to the documentation of this file.
1//
+
2// -------------------------------------------------------------------------------------
+
3//
+
4// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
5// authors.
+
6//
+
7// This file is part of the DFT-FE code.
+
8//
+
9// The DFT-FE code is free software; you can use it, redistribute
+
10// it, and/or modify it under the terms of the GNU Lesser General
+
11// Public License as published by the Free Software Foundation; either
+
12// version 2.1 of the License, or (at your option) any later version.
+
13// The full text of the license can be found in the file LICENSE at
+
14// the top level of the DFT-FE distribution.
+
15//
+
16// --------------------------------------------------------------------------------------
+
17//
+
18// @author Sambit Das
+
19//
+
20#ifndef elpaScalaManager_h
+
21#define elpaScalaManager_h
+
22
+
23#include "headers.h"
+
24#include "process_grid.h"
+
25#include "dftParameters.h"
+
26
+
27#include <vector>
+
28#include <elpa/elpa.h>
+
29
+
30namespace dftfe
+
31{
+
32 /**
+
33 * @brief Manager class for ELPA and ScaLAPACK
+
34 *
+
35 * @author Sambit Das
+
36 */
+
+ +
38 {
+
39 //
+
40 // methods
+
41 //
+
42 public:
+
43 unsigned int
+ +
45
+
46 std::shared_ptr<const dftfe::ProcessGrid>
+ +
48
+
49 void
+
50 processGridELPASetup(const unsigned int na,
+
51 const unsigned int nev,
+ +
53 void
+ +
55
+
56 elpa_t &
+ +
58
+
59 elpa_t &
+ +
61
+ + +
64
+
65
+
66 /**
+
67 * @brief Get relevant mpi communicator
+
68 *
+
69 * @return mpi communicator
+
70 */
+
71 const MPI_Comm &
+ +
73
+
74
+
75 /**
+
76 * @brief Constructor.
+
77 */
+ +
79
+
80 /**
+
81 * @brief Destructor.
+
82 */
+ +
84
+
85 //
+
86 // mpi communicator
+
87 //
+ +
89
+
90 /// ELPA handle
+ +
92
+
93 /// ELPA handle for partial eigenvectors of full proj ham
+ +
95
+
96 /// ELPA autotune handle
+ +
98
+
99 /// processGrid mpi communicator
+ +
101
+ +
103
+
104
+
105 /// ScaLAPACK distributed format block size
+ +
107
+
108 std::shared_ptr<const dftfe::ProcessGrid> d_processGridDftfeWrapper;
+
109 };
+
+
110
+
111 /*--------------------- Inline functions --------------------------------*/
+
112
+
113#ifndef DOXYGEN
+
114 inline unsigned int
+
+ +
116 {
+ +
118 }
+
+
119
+
120 inline std::shared_ptr<const dftfe::ProcessGrid>
+ +
125
+
126 inline elpa_t &
+
+ +
128 {
+
129 return d_elpaHandle;
+
130 }
+
+
131
+
132 inline elpa_t &
+ +
137
+
138
+
139 inline elpa_autotune_t &
+ +
144#endif // ifndef DOXYGEN
+
145
+
146} // namespace dftfe
+
147#endif
+
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:35
+
Manager class for ELPA and ScaLAPACK.
Definition elpaScalaManager.h:38
+
std::shared_ptr< const dftfe::ProcessGrid > getProcessGridDftfeScalaWrapper() const
Definition elpaScalaManager.h:121
+
elpaScalaManager(const MPI_Comm &mpi_comm_replica)
Constructor.
+
elpa_t d_elpaHandle
ELPA handle.
Definition elpaScalaManager.h:91
+
elpa_autotune_t & getElpaAutoTuneHandle()
Definition elpaScalaManager.h:140
+
elpa_t d_elpaHandlePartialEigenVec
ELPA handle for partial eigenvectors of full proj ham.
Definition elpaScalaManager.h:94
+
void elpaDeallocateHandles(const dftParameters &dftParams)
+
MPI_Comm d_processGridCommunicatorActivePartial
Definition elpaScalaManager.h:102
+
void processGridELPASetup(const unsigned int na, const unsigned int nev, const dftParameters &dftParams)
+
unsigned int getScalapackBlockSize() const
Definition elpaScalaManager.h:115
+
unsigned int d_scalapackBlockSize
ScaLAPACK distributed format block size.
Definition elpaScalaManager.h:106
+
MPI_Comm d_mpi_communicator
Definition elpaScalaManager.h:88
+
const MPI_Comm & getMPICommunicator() const
Get relevant mpi communicator.
+
elpa_t & getElpaHandlePartialEigenVec()
Definition elpaScalaManager.h:133
+
elpa_autotune_t d_elpaAutoTuneHandle
ELPA autotune handle.
Definition elpaScalaManager.h:97
+
elpa_t & getElpaHandle()
Definition elpaScalaManager.h:127
+
std::shared_ptr< const dftfe::ProcessGrid > d_processGridDftfeWrapper
Definition elpaScalaManager.h:108
+
~elpaScalaManager()
Destructor.
+
MPI_Comm d_processGridCommunicatorActive
processGrid mpi communicator
Definition elpaScalaManager.h:100
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ + +
Definition pseudoPotentialToDftfeConverter.cc:34
+ +
+ + + + diff --git a/energy_calculator_8h.html b/energy_calculator_8h.html new file mode 100644 index 000000000..b72611455 --- /dev/null +++ b/energy_calculator_8h.html @@ -0,0 +1,110 @@ + + + + + + + +DFT-FE: workspace/include/energyCalculator.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
energyCalculator.h File Reference
+
+
+
#include <headers.h>
+#include <dftd.h>
+#include <excManager.h>
+#include "dftParameters.h"
+#include <FEBasisOperations.h>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::energyCalculator
 Calculates the ksdft problem total energy and its components. More...
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/energy_calculator_8h_source.html b/energy_calculator_8h_source.html new file mode 100644 index 000000000..dba386511 --- /dev/null +++ b/energy_calculator_8h_source.html @@ -0,0 +1,353 @@ + + + + + + + +DFT-FE: workspace/include/energyCalculator.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
energyCalculator.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#include <headers.h>
+
19#include <dftd.h>
+
20#include <excManager.h>
+
21#include "dftParameters.h"
+
22#include <FEBasisOperations.h>
+
23#ifndef energyCalculator_H_
+
24# define energyCalculator_H_
+
25
+
26namespace dftfe
+
27{
+
28 /**
+
29 * @brief Calculates the ksdft problem total energy and its components
+
30 *
+
31 * @author Sambit Das, Shiva Rudraraju, Phani Motamarri, Krishnendu Ghosh
+
32 */
+
+ +
34 {
+
35 public:
+
36 /**
+
37 * @brief Constructor
+
38 *
+
39 * @param mpi_comm_parent parent mpi communicator
+
40 * @param mpi_comm_domain mpi communicator of domain decomposition
+
41 * @param interpool_comm mpi interpool communicator over k points
+
42 * @param interBandGroupComm mpi interpool communicator over band groups
+
43 */
+ + + + + +
49
+
50 /**
+
51 * Computes total energy of the ksdft problem in the current state and also
+
52 * prints the individual components of the energy
+
53 *
+
54 * @param dofHandlerElectrostatic p refined DoFHandler object used for re-computing
+
55 * the electrostatic fields using the ground state electron density. If
+
56 * electrostatics is not recomputed on p refined mesh, use
+
57 * dofHandlerElectronic for this argument.
+
58 * @param dofHandlerElectronic DoFHandler object on which the electrostatics for the
+
59 * eigen solve are computed.
+
60 * @param quadratureElectrostatic qudarature object for dofHandlerElectrostatic.
+
61 * @param quadratureElectronic qudarature object for dofHandlerElectronic.
+
62 * @param eigenValues eigenValues for each k point.
+
63 * @param kPointWeights
+
64 * @param fermiEnergy
+
65 * @param funcX exchange functional object.
+
66 * @param funcC correlation functional object.
+
67 * @param phiTotRhoIn nodal vector field of total electrostatic potential using input
+
68 * electron density to an eigensolve. This vector field is based on
+
69 * dofHandlerElectronic.
+
70 * @param phiTotRhoOut nodal vector field of total electrostatic potential using output
+
71 * electron density to an eigensolve. This vector field is based on
+
72 * dofHandlerElectrostatic.
+
73 * @param rhoInValues cell quadrature data of input electron density to an eigensolve. This
+
74 * data must correspond to quadratureElectronic.
+
75 * @param rhoOutValues cell quadrature data of output electron density of an eigensolve. This
+
76 * data must correspond to quadratureElectronic.
+
77 * @param rhoOutValuesElectrostatic cell quadrature data of output electron density of an eigensolve
+
78 * evaluated on a p refined mesh. This data corresponds to
+
79 * quadratureElectrostatic.
+
80 * @param gradRhoInValues cell quadrature data of input gradient electron density
+
81 * to an eigensolve. This data must correspond to quadratureElectronic.
+
82 * @param gradRhoOutValues cell quadrature data of output gradient electron density
+
83 * of an eigensolve. This data must correspond to quadratureElectronic.
+
84 * @param localVselfs peak vselfs of local atoms in each vself bin
+
85 * @param atomElectrostaticNodeIdToChargeMap map between locally processor atom global node ids
+
86 * of dofHandlerElectrostatic to atom charge value.
+
87 * @param numberGlobalAtoms
+
88 * @param lowerBoundKindex global k index of lower bound of the local k point set in the current pool
+
89 * @param if scf is converged
+
90 * @param print
+
91 *
+
92 * @return total energy
+
93 */
+
94 double
+ +
96 const std::shared_ptr<
+ +
98 double,
+ + +
101 const std::shared_ptr<
+ +
103 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
+ + + + + +
109 const std::vector<std::vector<double>> &eigenValues,
+ +
111 const double fermiEnergy,
+
112 const double fermiEnergyUp,
+
113 const double fermiEnergyDown,
+ + +
116 const dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>
+ +
118 const dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>
+ + + +
122 dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>>
+ + +
125 dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>>
+ + +
128 dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>>
+ + +
131 dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>>
+ +
133 const dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>
+ + + + + + + + + + + +
145 const unsigned int lowerBoundKindex,
+
146 const unsigned int scfConverged,
+ +
148 const bool smearedNuclearCharges = false);
+
149
+
150
+
151 void
+ +
153 const std::shared_ptr<
+ +
155 double,
+ + +
158 const unsigned int quadratureId,
+
159 const std::shared_ptr<excManager> excManagerPtr,
+
160 const std::vector<
+ + +
163 const std::vector<
+ + +
166 const std::vector<
+ + +
169 const std::vector<
+ + +
172 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
173 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
+
174 double & exchangeEnergy,
+
175 double & correlationEnergy,
+ +
177
+
178 void
+ +
180 const std::shared_ptr<
+ +
182 double,
+ + +
185 const unsigned int quadratureId,
+
186 const std::shared_ptr<excManager> excManagerPtr,
+
187 const std::vector<
+ + +
190 const std::vector<
+ + +
193 const std::vector<
+ + +
196 const std::vector<
+ + +
199 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
200 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
+
201 double & exchangeEnergy,
+
202 double & correlationEnergy,
+ +
204
+
205
+
206 double
+
207 computeEntropicEnergy(const std::vector<std::vector<double>> &eigenValues,
+
208 const std::vector<double> & kPointWeights,
+
209 const double fermiEnergy,
+
210 const double fermiEnergyUp,
+
211 const double fermiEnergyDown,
+
212 const bool isSpinPolarized,
+
213 const bool isConstraintMagnetization,
+
214 const double temperature) const;
+
215
+
216
+
217
+
218 private:
+ + + + +
223
+ +
225
+
226 /// parallel message stream
+
227 dealii::ConditionalOStream pcout;
+
228 };
+
+
229
+
230} // namespace dftfe
+
231#endif // energyCalculator_H_
+ +
Definition FEBasisOperations.h:85
+
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:35
+
Calculates dispersion correction to energy, force and stress.
Definition dftd.h:37
+
Calculates the ksdft problem total energy and its components.
Definition energyCalculator.h:34
+
const MPI_Comm interBandGroupComm
Definition energyCalculator.h:222
+
const MPI_Comm d_mpiCommParent
Definition energyCalculator.h:219
+
double computeEntropicEnergy(const std::vector< std::vector< double > > &eigenValues, const std::vector< double > &kPointWeights, const double fermiEnergy, const double fermiEnergyUp, const double fermiEnergyDown, const bool isSpinPolarized, const bool isConstraintMagnetization, const double temperature) const
+
const dftParameters & d_dftParams
Definition energyCalculator.h:224
+
const MPI_Comm interpoolcomm
Definition energyCalculator.h:221
+
void computeXCEnergyTermsSpinPolarized(const std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int quadratureId, const std::shared_ptr< excManager > excManagerPtr, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityOutValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, double &exchangeEnergy, double &correlationEnergy, double &excCorrPotentialTimesRho)
+
dealii::ConditionalOStream pcout
parallel message stream
Definition energyCalculator.h:227
+
const MPI_Comm mpi_communicator
Definition energyCalculator.h:220
+
energyCalculator(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &interpool_comm, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams)
Constructor.
+
double computeEnergy(const std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtrElectro, const unsigned int densityQuadratureID, const unsigned int densityQuadratureIDElectro, const unsigned int smearedChargeQuadratureIDElectro, const unsigned int lpspQuadratureIDElectro, const std::vector< std::vector< double > > &eigenValues, const std::vector< double > &kPointWeights, const double fermiEnergy, const double fermiEnergyUp, const double fermiEnergyDown, const std::shared_ptr< excManager > excManagerPtr, const dispersionCorrection &dispersionCorr, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &phiTotRhoInValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &phiTotRhoOutValues, const distributedCPUVec< double > &phiTotRhoOut, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &smearedbValues, const std::map< dealii::CellId, std::vector< unsigned int > > &smearedbNonTrivialAtomIds, const std::vector< std::vector< double > > &localVselfs, const std::map< dealii::CellId, std::vector< double > > &pseudoLocValues, const std::map< dealii::types::global_dof_index, double > &atomElectrostaticNodeIdToChargeMap, const unsigned int numberGlobalAtoms, const unsigned int lowerBoundKindex, const unsigned int scfConverged, const bool print, const bool smearedNuclearCharges=false)
+
void computeXCEnergyTerms(const std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int quadratureId, const std::shared_ptr< excManager > excManagerPtr, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityInValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityOutValues, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, double &exchangeEnergy, double &correlationEnergy, double &excCorrPotentialTimesRho)
+
Definition excManager.h:27
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition MemoryStorage.h:33
+ + + + +
Definition FEBasisOperations.h:31
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:97
+
+ + + + diff --git a/eshelby_tensor_8h.html b/eshelby_tensor_8h.html new file mode 100644 index 000000000..c74dc9be9 --- /dev/null +++ b/eshelby_tensor_8h.html @@ -0,0 +1,132 @@ + + + + + + + +DFT-FE: workspace/include/eshelbyTensor.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
eshelbyTensor.h File Reference
+
+
+
#include "constants.h"
+#include "headers.h"
+
+

Go to the source code of this file.

+ + + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::eshelbyTensor
 The functions in this namespace contain the expressions for the various terms of the configurational force (https://link.aps.org/doi/10.1103/PhysRevB.97.165132) for both periodic (see Eq. 38) and non-periodic (see Eqs. 28-29) case.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > dftfe::eshelbyTensor::getPhiExtEshelbyTensor (const dealii::VectorizedArray< double > &phiExt, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradPhiExt)
 
dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > dftfe::eshelbyTensor::getVselfBallEshelbyTensor (const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradVself)
 
dealii::Tensor< 2, 3, doubledftfe::eshelbyTensor::getVselfBallEshelbyTensor (const dealii::Tensor< 1, 3, double > &gradVself)
 Eshelby tensor corresponding to nuclear self energy.
 
dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > dftfe::eshelbyTensor::getEElectroEshelbyTensor (const dealii::VectorizedArray< double > &phiTot, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradPhiTot, const dealii::VectorizedArray< double > &rho)
 All-electron electrostatic part of the Eshelby tensor.
 
dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > dftfe::eshelbyTensor::getELocXcEshelbyTensor (const dealii::VectorizedArray< double > &rho, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradRho, const dealii::VectorizedArray< double > &exc, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derExcGradRho)
 exchange-correlation part of the ELoc Eshelby tensor
 
dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > dftfe::eshelbyTensor::getELocPspEshelbyTensor (const dealii::VectorizedArray< double > &rho, const dealii::VectorizedArray< double > &pseudoVLoc, const dealii::VectorizedArray< double > &phiExt)
 psp part of the ELoc Eshelby tensor
 
dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > dftfe::eshelbyTensor::getFPSPLocal (const dealii::VectorizedArray< double > rho, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradPseudoVLoc, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradPhiExt)
 Local pseudopotential force contribution.
 
dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > dftfe::eshelbyTensor::getFNonlinearCoreCorrection (const dealii::VectorizedArray< double > &vxc, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradRhoCore)
 Nonlocal core correction pseudopotential force contribution.
 
dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > dftfe::eshelbyTensor::getFNonlinearCoreCorrection (const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derExcGradRho, const dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > &hessianRhoCore)
 Nonlocal core correction pseudopotential force contribution.
 
+
+ + + + diff --git a/eshelby_tensor_8h_source.html b/eshelby_tensor_8h_source.html new file mode 100644 index 000000000..21ab3d320 --- /dev/null +++ b/eshelby_tensor_8h_source.html @@ -0,0 +1,242 @@ + + + + + + + +DFT-FE: workspace/include/eshelbyTensor.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
eshelbyTensor.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16
+
17
+
18
+
19#ifndef eshelby_H_
+
20#define eshelby_H_
+
21#include "constants.h"
+
22#include "headers.h"
+
23
+
24namespace dftfe
+
25{
+
26 /**
+
27 * @brief The functions in this namespace contain the expressions for the various terms of the configurational force (https://link.aps.org/doi/10.1103/PhysRevB.97.165132)
+
28 * for both periodic (see Eq. 38) and non-periodic (see Eqs. 28-29) case.
+
29 *
+
30 * Basically, the configurational force is the Gateaux derivative
+
31 * of the Kohn-Sham saddle point problem with respect to perturbations of the
+
32 * underlying space due to generic generator (which can be affine perturbation
+
33 * in case of stress computation or an atom centered generator with a compact
+
34 * support for computing the forces). The terms in the configurational force
+
35 * can be grouped into two types: one type can be written as contraction of
+
36 * Eshelby tensors (second order tensor) with the gradient of the Generator.
+
37 * Another type involves contraction of first order tensors with the
+
38 * Generator. The functions in this class provide expressions for the left
+
39 * side of the contraction operation- the second order Eshelby tensors
+
40 * (denoted by E*) and the first order force tensors (denoted by F*). General
+
41 * nomenclature of the input arguments: a) phiTot- total electrostatic
+
42 * potential b) phiExt- sum of electrostatic potential from all nuclear
+
43 * charges c) rho- electron density d) gradRho- gradient of electron density
+
44 * e) exc- exchange correlation energy
+
45 * f) derExcGradRho- derivative of exc with gradient of rho
+
46 * g) psiBegin- begin iterator to vector eigenvectors stored as a flattened
+
47 * array over k points and number of eigenvectors for each k point (periodic
+
48 * case has complex valued eigenvectors which is why
+
49 * dealii::Tensor<1,2,dealii::VectorizedArray<double> is used in functions for
+
50 * periodic case) h) gradPsiBegin- gradient of eigenvectors i) eigenValues-
+
51 * Kohn sham grounstate eigenvalues stored in a vector. For periodic problems
+
52 * with multiple k points the outer vector should be over k points j) tVal-
+
53 * smearing temperature in K k) pseudoVLoc- local part of the pseudopotential
+
54 * l) gradPseudoVLoc- gradient of local part of pseudopotential m) ZetaDeltaV-
+
55 * nonlocal pseudowavefunctions times deltaV (see Eq. 11 in
+
56 * https://link.aps.org/doi/10.1103/PhysRevB.97.165132) n) gradZetaDeltaV-
+
57 * gradient of ZetaDeltaV o) projectorKetTimesPsiTimesV- nonlocal
+
58 * pseudopotential projector ket times eigenvectors which are precomputed. The
+
59 * nonlocal pseudopotential constants are also multiplied to this quantity.
+
60 * (see Eq. 11 in https://link.aps.org/doi/10.1103/PhysRevB.97.165132)
+
61 *
+
62 * @author Sambit Das
+
63 */
+
+
64 namespace eshelbyTensor
+
65 {
+
66 /// Eshelby tensor from sum of electrostatic potential from all nuclear
+
67 /// charges (only used for testing purpose)
+
68 dealii::Tensor<2, 3, dealii::VectorizedArray<double>>
+ +
70 const dealii::VectorizedArray<double> & phiExt,
+
71 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>> &gradPhiExt);
+
72
+
73 /// Eshelby tensor corresponding to nuclear self energy (only used for
+
74 /// testing purpose)
+
75 dealii::Tensor<2, 3, dealii::VectorizedArray<double>>
+ +
77 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>> &gradVself);
+
78
+
79 /// Eshelby tensor corresponding to nuclear self energy
+
80 dealii::Tensor<2, 3, double>
+
81 getVselfBallEshelbyTensor(const dealii::Tensor<1, 3, double> &gradVself);
+
82
+
83
+
84
+
85 /// All-electron electrostatic part of the Eshelby tensor
+
86 dealii::Tensor<2, 3, dealii::VectorizedArray<double>>
+ +
88 const dealii::VectorizedArray<double> & phiTot,
+
89 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>> &gradPhiTot,
+
90 const dealii::VectorizedArray<double> & rho);
+
91
+
92 /// exchange-correlation part of the ELoc Eshelby tensor
+
93 dealii::Tensor<2, 3, dealii::VectorizedArray<double>>
+ +
95 const dealii::VectorizedArray<double> & rho,
+
96 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>> &gradRho,
+
97 const dealii::VectorizedArray<double> & exc,
+
98 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>>
+ +
100
+
101
+
102 /// psp part of the ELoc Eshelby tensor
+
103 dealii::Tensor<2, 3, dealii::VectorizedArray<double>>
+
104 getELocPspEshelbyTensor(const dealii::VectorizedArray<double> &rho,
+
105 const dealii::VectorizedArray<double> &pseudoVLoc,
+
106 const dealii::VectorizedArray<double> &phiExt);
+
107
+
108 /// Local pseudopotential force contribution
+
109 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>
+ +
111 const dealii::VectorizedArray<double> rho,
+
112 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>>
+ +
114 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>> &gradPhiExt);
+
115
+
116
+
117 /// Nonlocal core correction pseudopotential force contribution
+
118 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>
+ +
120 const dealii::VectorizedArray<double> & vxc,
+
121 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>> &gradRhoCore);
+
122
+
123 /// Nonlocal core correction pseudopotential force contribution
+
124 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>
+ +
126 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>>
+ +
128 const dealii::Tensor<2, 3, dealii::VectorizedArray<double>>
+ +
130
+
131 }; // namespace eshelbyTensor
+
+
132
+
133} // namespace dftfe
+
134#endif
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ + +
dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > getFNonlinearCoreCorrection(const dealii::VectorizedArray< double > &vxc, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradRhoCore)
Nonlocal core correction pseudopotential force contribution.
+
dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > getVselfBallEshelbyTensor(const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradVself)
+
dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > getEElectroEshelbyTensor(const dealii::VectorizedArray< double > &phiTot, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradPhiTot, const dealii::VectorizedArray< double > &rho)
All-electron electrostatic part of the Eshelby tensor.
+
dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > getFPSPLocal(const dealii::VectorizedArray< double > rho, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradPseudoVLoc, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradPhiExt)
Local pseudopotential force contribution.
+
dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > getPhiExtEshelbyTensor(const dealii::VectorizedArray< double > &phiExt, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradPhiExt)
+
dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > getELocPspEshelbyTensor(const dealii::VectorizedArray< double > &rho, const dealii::VectorizedArray< double > &pseudoVLoc, const dealii::VectorizedArray< double > &phiExt)
psp part of the ELoc Eshelby tensor
+
dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > getELocXcEshelbyTensor(const dealii::VectorizedArray< double > &rho, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradRho, const dealii::VectorizedArray< double > &exc, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derExcGradRho)
exchange-correlation part of the ELoc Eshelby tensor
+
Definition pseudoPotentialToDftfeConverter.cc:34
+ + +
+ + + + diff --git a/eshelby_tensor_spin_polarized_8h.html b/eshelby_tensor_spin_polarized_8h.html new file mode 100644 index 000000000..9c2d12948 --- /dev/null +++ b/eshelby_tensor_spin_polarized_8h.html @@ -0,0 +1,113 @@ + + + + + + + +DFT-FE: workspace/include/eshelbyTensorSpinPolarized.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
eshelbyTensorSpinPolarized.h File Reference
+
+
+
#include "constants.h"
+#include "headers.h"
+
+

Go to the source code of this file.

+ + + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::eshelbyTensorSP
 The functions in this namespace contain the expressions for the various terms of the configurational force (https://link.aps.org/doi/10.1103/PhysRevB.97.165132) for both periodic and non-periodic case.
 
+ + + + + + + +

+Functions

dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > dftfe::eshelbyTensorSP::getELocXcEshelbyTensor (const dealii::VectorizedArray< double > &rho, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradRhoSpin0, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradRhoSpin1, const dealii::VectorizedArray< double > &exc, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derExcGradRhoSpin0, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derExcGradRhoSpin1)
 exchange-correlation and psp part of the ELoc Eshelby tensor
 
dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > dftfe::eshelbyTensorSP::getFNonlinearCoreCorrection (const dealii::VectorizedArray< double > &vxcSpin0, const dealii::VectorizedArray< double > &vxcSpin1, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derExcGradRhoSpin0, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derExcGradRhoSpin1, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradRhoCore, const dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > &hessianRhoCore, const bool isXCGGA)
 Nonlocal core correction pseudopotential force contribution.
 
+
+ + + + diff --git a/eshelby_tensor_spin_polarized_8h_source.html b/eshelby_tensor_spin_polarized_8h_source.html new file mode 100644 index 000000000..e5a0b68ca --- /dev/null +++ b/eshelby_tensor_spin_polarized_8h_source.html @@ -0,0 +1,187 @@ + + + + + + + +DFT-FE: workspace/include/eshelbyTensorSpinPolarized.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
eshelbyTensorSpinPolarized.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17#ifndef eshelbySP_H_
+
18#define eshelbySP_H_
+
19#include "constants.h"
+
20#include "headers.h"
+
21
+
22namespace dftfe
+
23{
+
24 /**
+
25 * @brief The functions in this namespace contain the expressions for the various terms of the configurational force (https://link.aps.org/doi/10.1103/PhysRevB.97.165132)
+
26 * for both periodic and non-periodic case.
+
27 *
+
28 * The functions in this namespace are similar to the ones in eshelbyTensor.h
+
29 * except the ones here are specialized
+
30 * for spin polarized case. Spin0 and Spin1 refer to up and down spins
+
31 * respectively. General nomenclature of the input arguments: a) phiTot- total
+
32 * electrostatic potential b) phiExt- sum of electrostatic potential from all
+
33 * nuclear charges c) rho- electron density d) gradRho- gradient of electron
+
34 * density e) exc- exchange correlation energy f) derExcGradRho- derivative of
+
35 * exc with gradient of rho g) psiBegin- begin iterator to vector eigenvectors
+
36 * stored as a flattened array over k points and number of eigenvectors for
+
37 * each k point (periodic case has complex valued eigenvectors which is why
+
38 * dealii::Tensor<1,2,dealii::VectorizedArray<double> is used in functions for
+
39 * periodic case) h) gradPsiBegin- gradient of eigenvectors i) eigenValues-
+
40 * Kohn sham grounstate eigenvalues stored in a vector. For periodic problems
+
41 * with multiple k points the outer vector should be over k points j) tVal-
+
42 * smearing temperature in K k) pseudoVLoc- local part of the pseuodopotential
+
43 * l) gradPseudoVLoc- gradient of local part of pseudopotential m) ZetaDeltaV-
+
44 * nonlocal pseudowavefunctions times deltaV (see Eq. 11 in
+
45 * https://link.aps.org/doi/10.1103/PhysRevB.97.165132) n) gradZetaDeltaV-
+
46 * gradient of ZetaDeltaV o) projectorKetTimesPsiTimesV- nonlocal
+
47 * pseudopotential projector ket times eigenvectors which are precomputed. The
+
48 * nonlocal pseudopotential constants are also multiplied to this quantity.
+
49 * (see Eq. 11 in https://link.aps.org/doi/10.1103/PhysRevB.97.165132)
+
50 *
+
51 * @author Sambit Das
+
52 */
+
+
53 namespace eshelbyTensorSP
+
54 {
+
55 /// exchange-correlation and psp part of the ELoc Eshelby tensor
+
56 dealii::Tensor<2, 3, dealii::VectorizedArray<double>>
+ +
58 const dealii::VectorizedArray<double> & rho,
+
59 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>> &gradRhoSpin0,
+
60 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>> &gradRhoSpin1,
+
61 const dealii::VectorizedArray<double> & exc,
+
62 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>>
+ +
64 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>>
+ +
66
+
67
+
68
+
69 /// Nonlocal core correction pseudopotential force contribution
+
70 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>
+ +
72 const dealii::VectorizedArray<double> &vxcSpin0,
+
73 const dealii::VectorizedArray<double> &vxcSpin1,
+
74 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>>
+ +
76 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>>
+ +
78 const dealii::Tensor<1, 3, dealii::VectorizedArray<double>> &gradRhoCore,
+
79 const dealii::Tensor<2, 3, dealii::VectorizedArray<double>>
+ +
81 const bool isXCGGA);
+
82 }; // namespace eshelbyTensorSP
+
+
83
+
84} // namespace dftfe
+
85#endif
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ + +
dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > getELocXcEshelbyTensor(const dealii::VectorizedArray< double > &rho, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradRhoSpin0, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradRhoSpin1, const dealii::VectorizedArray< double > &exc, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derExcGradRhoSpin0, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derExcGradRhoSpin1)
exchange-correlation and psp part of the ELoc Eshelby tensor
+
dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > getFNonlinearCoreCorrection(const dealii::VectorizedArray< double > &vxcSpin0, const dealii::VectorizedArray< double > &vxcSpin1, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derExcGradRhoSpin0, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derExcGradRhoSpin1, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradRhoCore, const dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > &hessianRhoCore, const bool isXCGGA)
Nonlocal core correction pseudopotential force contribution.
+
Definition pseudoPotentialToDftfeConverter.cc:34
+ +
+ + + + diff --git a/exc_density_base_class_8h.html b/exc_density_base_class_8h.html new file mode 100644 index 000000000..9a60ae58c --- /dev/null +++ b/exc_density_base_class_8h.html @@ -0,0 +1,130 @@ + + + + + + + +DFT-FE: workspace/include/excDensityBaseClass.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
excDensityBaseClass.h File Reference
+
+
+
#include <xc.h>
+#include <vector>
+#include <fstream>
+#include <iostream>
+#include <map>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::excDensityBaseClass
 
+ + + +

+Namespaces

namespace  dftfe
 
+ + + + + + + + + +

+Enumerations

enum class  dftfe::densityFamilyType { dftfe::LDA +, dftfe::GGA + }
 
enum class  dftfe::rhoDataAttributes { dftfe::values +, dftfe::sigmaGradValue + }
 
enum class  dftfe::VeffOutputDataAttributes { dftfe::derEnergyWithDensity +, dftfe::derEnergyWithSigmaGradDensity + }
 
enum class  dftfe::fxcOutputDataAttributes { dftfe::der2EnergyWithDensity +, dftfe::der2EnergyWithDensitySigma +, dftfe::der2EnergyWithSigma + }
 
+
+ + + + diff --git a/exc_density_base_class_8h_source.html b/exc_density_base_class_8h_source.html new file mode 100644 index 000000000..e2ac64b24 --- /dev/null +++ b/exc_density_base_class_8h_source.html @@ -0,0 +1,224 @@ + + + + + + + +DFT-FE: workspace/include/excDensityBaseClass.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
excDensityBaseClass.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18
+
19#ifndef DFTFE_EXCDENSITYBASECLASS_H
+
20#define DFTFE_EXCDENSITYBASECLASS_H
+
21
+
22//#include <headers.h>
+
23#include <xc.h>
+
24#include <vector>
+
25#include <fstream>
+
26#include <iostream>
+
27#include <map>
+
28//#include <linearAlgebraOperations.h>
+
29
+
30namespace dftfe
+
31{
+
+ +
33 {
+
34 LDA,
+
35 GGA
+
36 };
+
+
37 // enum class for identifying the relevant objects for exc manager class
+
+ +
39 {
+
40 values,
+ +
42 };
+
+
43
+ +
49
+ +
56
+
57
+
+ +
59 {
+
60 public:
+ +
62
+
63 virtual void
+ +
65 unsigned int sizeInput,
+
66 const std::map<rhoDataAttributes, const std::vector<double> *> &rhoData,
+
67 std::vector<double> &outputExchangeEnergyDensity,
+
68 std::vector<double> &outputCorrEnergyDensity) const = 0;
+
69
+
70 virtual void
+ +
72 unsigned int sizeInput,
+
73 const std::map<rhoDataAttributes, const std::vector<double> *> &rhoData,
+
74 std::map<VeffOutputDataAttributes, std::vector<double> *>
+ +
76 std::map<VeffOutputDataAttributes, std::vector<double> *>
+
77 &outputDerCorrEnergy) const = 0;
+
78
+
79 virtual void
+ +
81 unsigned int sizeInput,
+
82 const std::map<rhoDataAttributes, const std::vector<double> *> &rhoData,
+
83 std::map<fxcOutputDataAttributes, std::vector<double> *>
+ +
85 std::map<fxcOutputDataAttributes, std::vector<double> *>
+
86 &outputDer2CorrEnergy) const = 0;
+
87
+ + +
90
+
91 protected:
+ + +
94 };
+
+
95
+
96} // namespace dftfe
+
97
+
98#endif // DFTFE_EXCDENSITYBASECLASS_H
+
Definition excDensityBaseClass.h:59
+
virtual void computeDensityBasedEnergyDensity(unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::vector< double > &outputExchangeEnergyDensity, std::vector< double > &outputCorrEnergyDensity) const =0
+
virtual void computeDensityBasedVxc(unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::map< VeffOutputDataAttributes, std::vector< double > * > &outputDerExchangeEnergy, std::map< VeffOutputDataAttributes, std::vector< double > * > &outputDerCorrEnergy) const =0
+
excDensityBaseClass(bool isSpinPolarized)
+
densityFamilyType getDensityBasedFamilyType() const
+
densityFamilyType d_familyType
Definition excDensityBaseClass.h:92
+
bool d_isSpinPolarized
Definition excDensityBaseClass.h:93
+
virtual void computeDensityBasedFxc(unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::map< fxcOutputDataAttributes, std::vector< double > * > &outputDer2ExchangeEnergy, std::map< fxcOutputDataAttributes, std::vector< double > * > &outputDer2CorrEnergy) const =0
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
VeffOutputDataAttributes
Definition excDensityBaseClass.h:45
+ + +
fxcOutputDataAttributes
Definition excDensityBaseClass.h:51
+ + + +
densityFamilyType
Definition excDensityBaseClass.h:33
+ + +
rhoDataAttributes
Definition excDensityBaseClass.h:39
+ + +
+ + + + diff --git a/exc_density_g_g_a_class_8h.html b/exc_density_g_g_a_class_8h.html new file mode 100644 index 000000000..ba5da050f --- /dev/null +++ b/exc_density_g_g_a_class_8h.html @@ -0,0 +1,105 @@ + + + + + + + +DFT-FE: workspace/include/excDensityGGAClass.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
excDensityGGAClass.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::excDensityGGAClass
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/exc_density_g_g_a_class_8h_source.html b/exc_density_g_g_a_class_8h_source.html new file mode 100644 index 000000000..15c5f43a9 --- /dev/null +++ b/exc_density_g_g_a_class_8h_source.html @@ -0,0 +1,190 @@ + + + + + + + +DFT-FE: workspace/include/excDensityGGAClass.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
excDensityGGAClass.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17#ifndef DFTFE_EXCDENSITYGGACLASS_H
+
18#define DFTFE_EXCDENSITYGGACLASS_H
+
19
+
20//#include <NNGGA.h>
+
21#include <excDensityBaseClass.h>
+
22
+
23namespace dftfe
+
24{
+
25 class NNGGA;
+
+ +
27 {
+
28 public:
+ + +
31 bool isSpinPolarized,
+
32 bool scaleExchange,
+ +
34 double scaleExchangeFactor);
+
35
+ + +
38 bool isSpinPolarized,
+
39 std::string modelXCInputFile,
+
40 bool scaleExchange,
+ +
42 double scaleExchangeFactor);
+
43
+ +
45
+
46 void
+ +
48 unsigned int sizeInput,
+
49 const std::map<rhoDataAttributes, const std::vector<double> *> &rhoData,
+
50 std::vector<double> &outputExchangeEnergyDensity,
+
51 std::vector<double> &outputCorrEnergyDensity) const override;
+
52
+
53 void
+ +
55 unsigned int sizeInput,
+
56 const std::map<rhoDataAttributes, const std::vector<double> *> &rhoData,
+
57 std::map<VeffOutputDataAttributes, std::vector<double> *>
+ +
59 std::map<VeffOutputDataAttributes, std::vector<double> *>
+
60 &outputDerCorrEnergy) const override;
+
61
+
62 void
+ +
64 unsigned int sizeInput,
+
65 const std::map<rhoDataAttributes, const std::vector<double> *> &rhoData,
+
66 std::map<fxcOutputDataAttributes, std::vector<double> *>
+ +
68 std::map<fxcOutputDataAttributes, std::vector<double> *>
+
69 &outputDer2CorrEnergy) const override;
+
70
+
71
+
72 private:
+ + + +
76 };
+
+
77} // namespace dftfe
+
78#endif // DFTFE_EXCDENSITYGGACLASS_H
+
Definition excDensityBaseClass.h:59
+
Definition excDensityGGAClass.h:27
+
xc_func_type * d_funcCPtr
Definition excDensityGGAClass.h:75
+
void computeDensityBasedVxc(unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::map< VeffOutputDataAttributes, std::vector< double > * > &outputDerExchangeEnergy, std::map< VeffOutputDataAttributes, std::vector< double > * > &outputDerCorrEnergy) const override
+
xc_func_type * d_funcXPtr
Definition excDensityGGAClass.h:74
+
void computeDensityBasedEnergyDensity(unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::vector< double > &outputExchangeEnergyDensity, std::vector< double > &outputCorrEnergyDensity) const override
+
void computeDensityBasedFxc(unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::map< fxcOutputDataAttributes, std::vector< double > * > &outputDer2ExchangeEnergy, std::map< fxcOutputDataAttributes, std::vector< double > * > &outputDer2CorrEnergy) const override
+ +
excDensityGGAClass(xc_func_type *funcXPtr, xc_func_type *funcCPtr, bool isSpinPolarized, bool scaleExchange, bool computeCorrelation, double scaleExchangeFactor)
+
NNGGA * d_NNGGAPtr
Definition excDensityGGAClass.h:73
+
excDensityGGAClass(xc_func_type *funcXPtr, xc_func_type *funcCPtr, bool isSpinPolarized, std::string modelXCInputFile, bool scaleExchange, bool computeCorrelation, double scaleExchangeFactor)
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+
VeffOutputDataAttributes
Definition excDensityBaseClass.h:45
+
fxcOutputDataAttributes
Definition excDensityBaseClass.h:51
+
rhoDataAttributes
Definition excDensityBaseClass.h:39
+
+ + + + diff --git a/exc_density_l_d_a_class_8h.html b/exc_density_l_d_a_class_8h.html new file mode 100644 index 000000000..93e00d284 --- /dev/null +++ b/exc_density_l_d_a_class_8h.html @@ -0,0 +1,106 @@ + + + + + + + +DFT-FE: workspace/include/excDensityLDAClass.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
excDensityLDAClass.h File Reference
+
+
+
#include <xc.h>
+#include <excDensityBaseClass.h>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::excDensityLDAClass
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/exc_density_l_d_a_class_8h_source.html b/exc_density_l_d_a_class_8h_source.html new file mode 100644 index 000000000..1efed351f --- /dev/null +++ b/exc_density_l_d_a_class_8h_source.html @@ -0,0 +1,192 @@ + + + + + + + +DFT-FE: workspace/include/excDensityLDAClass.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
excDensityLDAClass.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#ifndef DFTFE_EXCDENSIYLDACLASS_H
+
19#define DFTFE_EXCDENSIYLDACLASS_H
+
20
+
21#include <xc.h>
+
22//#include <NNLDA.h>
+
23#include <excDensityBaseClass.h>
+
24namespace dftfe
+
25{
+
26 class NNLDA;
+
+ +
28 {
+
29 public:
+ + +
32 bool isSpinPolarized,
+
33 bool scaleExchange,
+ +
35 double scaleExchangeFactor);
+
36
+ + +
39 bool isSpinPolarized,
+
40 std::string modelXCInputFile,
+
41 bool scaleExchange,
+ +
43 double scaleExchangeFactor);
+
44
+ +
46
+
47 void
+ +
49 unsigned int sizeInput,
+
50 const std::map<rhoDataAttributes, const std::vector<double> *> &rhoData,
+
51 std::vector<double> &outputExchangeEnergyDensity,
+
52 std::vector<double> &outputCorrEnergyDensity) const override;
+
53
+
54 void
+ +
56 unsigned int sizeInput,
+
57 const std::map<rhoDataAttributes, const std::vector<double> *> &rhoData,
+
58 std::map<VeffOutputDataAttributes, std::vector<double> *>
+ +
60 std::map<VeffOutputDataAttributes, std::vector<double> *>
+
61 &outputDerCorrEnergy) const override;
+
62
+
63 void
+ +
65 unsigned int sizeInput,
+
66 const std::map<rhoDataAttributes, const std::vector<double> *> &rhoData,
+
67 std::map<fxcOutputDataAttributes, std::vector<double> *>
+ +
69 std::map<fxcOutputDataAttributes, std::vector<double> *>
+
70 &outputDer2CorrEnergy) const override;
+
71
+
72
+
73 private:
+ + + +
77 };
+
+
78} // namespace dftfe
+
79
+
80#endif // DFTFE_EXCDENSIYLDACLASS_H
+
Definition excDensityBaseClass.h:59
+
Definition excDensityLDAClass.h:28
+
excDensityLDAClass(xc_func_type *funcXPtr, xc_func_type *funcCPtr, bool isSpinPolarized, std::string modelXCInputFile, bool scaleExchange, bool computeCorrelation, double scaleExchangeFactor)
+
void computeDensityBasedEnergyDensity(unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::vector< double > &outputExchangeEnergyDensity, std::vector< double > &outputCorrEnergyDensity) const override
+
xc_func_type * d_funcCPtr
Definition excDensityLDAClass.h:76
+ +
excDensityLDAClass(xc_func_type *funcXPtr, xc_func_type *funcCPtr, bool isSpinPolarized, bool scaleExchange, bool computeCorrelation, double scaleExchangeFactor)
+
xc_func_type * d_funcXPtr
Definition excDensityLDAClass.h:75
+
NNLDA * d_NNLDAPtr
Definition excDensityLDAClass.h:74
+
void computeDensityBasedFxc(unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::map< fxcOutputDataAttributes, std::vector< double > * > &outputDer2ExchangeEnergy, std::map< fxcOutputDataAttributes, std::vector< double > * > &outputDer2CorrEnergy) const override
+
void computeDensityBasedVxc(unsigned int sizeInput, const std::map< rhoDataAttributes, const std::vector< double > * > &rhoData, std::map< VeffOutputDataAttributes, std::vector< double > * > &outputDerExchangeEnergy, std::map< VeffOutputDataAttributes, std::vector< double > * > &outputDerCorrEnergy) const override
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+
VeffOutputDataAttributes
Definition excDensityBaseClass.h:45
+
fxcOutputDataAttributes
Definition excDensityBaseClass.h:51
+
rhoDataAttributes
Definition excDensityBaseClass.h:39
+
+ + + + diff --git a/exc_density_positivity_check_types_8h.html b/exc_density_positivity_check_types_8h.html new file mode 100644 index 000000000..a6800b815 --- /dev/null +++ b/exc_density_positivity_check_types_8h.html @@ -0,0 +1,107 @@ + + + + + + + +DFT-FE: workspace/include/excDensityPositivityCheckTypes.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
excDensityPositivityCheckTypes.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Namespaces

namespace  dftfe
 
+ + + +

+Enumerations

enum class  dftfe::excDensityPositivityCheckTypes { dftfe::NO_CHECK +, dftfe::EXCEPTION_POSITIVE +, dftfe::MAKE_POSITIVE + }
 
+
+ + + + diff --git a/exc_density_positivity_check_types_8h_source.html b/exc_density_positivity_check_types_8h_source.html new file mode 100644 index 000000000..3fe120caa --- /dev/null +++ b/exc_density_positivity_check_types_8h_source.html @@ -0,0 +1,112 @@ + + + + + + + +DFT-FE: workspace/include/excDensityPositivityCheckTypes.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
excDensityPositivityCheckTypes.h
+
+
+Go to the documentation of this file.
1#ifndef excDensityPositivityCheckTypes_H
+
2#define excDensityPositivityCheckTypes_H
+
3namespace dftfe
+
4{
+ +
11} // namespace dftfe
+
12#endif
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
excDensityPositivityCheckTypes
Definition excDensityPositivityCheckTypes.h:6
+ + + +
+ + + + diff --git a/exc_manager_8h.html b/exc_manager_8h.html new file mode 100644 index 000000000..fe760911e --- /dev/null +++ b/exc_manager_8h.html @@ -0,0 +1,107 @@ + + + + + + + +DFT-FE: workspace/include/excManager.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
excManager.h File Reference
+
+
+
#include <xc.h>
+#include <excDensityBaseClass.h>
+#include <excWavefunctionBaseClass.h>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::excManager
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/exc_manager_8h_source.html b/exc_manager_8h_source.html new file mode 100644 index 000000000..1e181df95 --- /dev/null +++ b/exc_manager_8h_source.html @@ -0,0 +1,202 @@ + + + + + + + +DFT-FE: workspace/include/excManager.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
excManager.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#ifndef DFTFE_EXCMANAGER_H
+
19#define DFTFE_EXCMANAGER_H
+
20
+
21#include <xc.h>
+
22#include <excDensityBaseClass.h>
+ +
24namespace dftfe
+
25{
+
+ +
27 {
+
28 public:
+
29 /**
+
30 * @brief Constructor
+
31 *
+
32 */
+ +
34
+
35 /**
+
36 * @brief destructor
+
37 */
+ +
39
+
40 void
+ +
42
+
43
+
44 void
+
45 init(unsigned int xc_id,
+
46 bool isSpinPolarized,
+
47 unsigned int exxFactor,
+
48 bool scaleExchange,
+
49 unsigned int scaleExchangeFactor,
+ +
51 std::string modelXCInputFile);
+
52
+ + +
55
+ + +
58
+
59
+ + +
62
+ + +
65
+
66
+ + +
69
+ + +
72
+
73
+
74 private:
+
75 /// objects for various exchange-correlations (from libxc package)
+ + +
78
+ + +
81 };
+
+
82} // namespace dftfe
+
83
+
84#endif // DFTFE_EXCMANAGER_H
+
Definition excDensityBaseClass.h:59
+
Definition excManager.h:27
+
excDensityBaseClass * d_excDensityObjPtr
Definition excManager.h:79
+
densityFamilyType getDensityBasedFamilyType() const
+
xc_func_type * d_funcCPtr
Definition excManager.h:77
+
const excWavefunctionBaseClass * getExcWavefunctionObj() const
+
~excManager()
destructor
+
wavefunctionFamilyType getWavefunctionBasedFamilyType() const
+
excWavefunctionBaseClass * d_excWavefunctionObjPtr
Definition excManager.h:80
+
excDensityBaseClass * getExcDensityObj()
+
xc_func_type * d_funcXPtr
objects for various exchange-correlations (from libxc package)
Definition excManager.h:76
+
const excDensityBaseClass * getExcDensityObj() const
+
excWavefunctionBaseClass * getExcWavefunctionObj()
+
excManager()
Constructor.
+ +
void init(unsigned int xc_id, bool isSpinPolarized, unsigned int exxFactor, bool scaleExchange, unsigned int scaleExchangeFactor, bool computeCorrelation, std::string modelXCInputFile)
+
Definition excWavefunctionBaseClass.h:31
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ + +
Definition pseudoPotentialToDftfeConverter.cc:34
+
densityFamilyType
Definition excDensityBaseClass.h:33
+
wavefunctionFamilyType
Definition excWavefunctionBaseClass.h:24
+
+ + + + diff --git a/exc_wavefunction_base_class_8h.html b/exc_wavefunction_base_class_8h.html new file mode 100644 index 000000000..91046b255 --- /dev/null +++ b/exc_wavefunction_base_class_8h.html @@ -0,0 +1,113 @@ + + + + + + + +DFT-FE: workspace/include/excWavefunctionBaseClass.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
excWavefunctionBaseClass.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::excWavefunctionBaseClass
 
+ + + +

+Namespaces

namespace  dftfe
 
+ + + +

+Enumerations

enum class  dftfe::wavefunctionFamilyType { dftfe::NONE +, dftfe::SCALED_FOCK +, dftfe::HUBBARD + }
 
+
+ + + + diff --git a/exc_wavefunction_base_class_8h_source.html b/exc_wavefunction_base_class_8h_source.html new file mode 100644 index 000000000..ef9128859 --- /dev/null +++ b/exc_wavefunction_base_class_8h_source.html @@ -0,0 +1,165 @@ + + + + + + + +DFT-FE: workspace/include/excWavefunctionBaseClass.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
excWavefunctionBaseClass.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#ifndef DFTFE_EXCWAVEFUNCTIONBASECLASS_H
+
19#define DFTFE_EXCWAVEFUNCTIONBASECLASS_H
+
20
+
21namespace dftfe
+
22{
+
+ +
24 {
+
25 NONE,
+ + +
28 };
+
+
29
+
+ +
31 {
+
32 public:
+ +
34
+ +
36
+
37 virtual void
+ +
39 virtual void
+ +
41 virtual double
+ +
43
+ + +
46
+
47 protected:
+ + +
50 };
+
+
51} // namespace dftfe
+
52
+
53#endif // DFTFE_EXCWAVEFUNCTIONBASECLASS_H
+
Definition excWavefunctionBaseClass.h:31
+
bool d_isSpinPolarized
Definition excWavefunctionBaseClass.h:49
+
virtual void applyWaveFunctionDependentVxc() const =0
+
wavefunctionFamilyType getWavefunctionBasedFamilyType() const
+
virtual void updateWaveFunctionDependentVxc() const =0
+
wavefunctionFamilyType d_wavefunctionFamilyType
Definition excWavefunctionBaseClass.h:48
+ +
excWavefunctionBaseClass(bool isSpinPolarized)
+
virtual double computeWaveFunctionDependentExcEnergy() const =0
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
wavefunctionFamilyType
Definition excWavefunctionBaseClass.h:24
+ + + +
+ + + + diff --git a/exc_wavefunction_none_class_8h.html b/exc_wavefunction_none_class_8h.html new file mode 100644 index 000000000..c04f20a0e --- /dev/null +++ b/exc_wavefunction_none_class_8h.html @@ -0,0 +1,105 @@ + + + + + + + +DFT-FE: workspace/include/excWavefunctionNoneClass.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
excWavefunctionNoneClass.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::excWavefunctionNoneClass
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/exc_wavefunction_none_class_8h_source.html b/exc_wavefunction_none_class_8h_source.html new file mode 100644 index 000000000..9cab52d7d --- /dev/null +++ b/exc_wavefunction_none_class_8h_source.html @@ -0,0 +1,144 @@ + + + + + + + +DFT-FE: workspace/include/excWavefunctionNoneClass.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
excWavefunctionNoneClass.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#ifndef DFTFE_EXCWAVEFUNCTIONNONECLASS_H
+
19#define DFTFE_EXCWAVEFUNCTIONNONECLASS_H
+
20
+ +
22
+
23namespace dftfe
+
24{
+
+ +
26 {
+
27 public:
+ +
29
+
30
+
31 void
+ +
33 void
+ +
35 double
+ +
37 };
+
+
38} // namespace dftfe
+
39
+
40#endif // DFTFE_EXCWAVEFUNCTIONNONECLASS_H
+
Definition excWavefunctionBaseClass.h:31
+
Definition excWavefunctionNoneClass.h:26
+
excWavefunctionNoneClass(bool isSpinPolarized)
+
void updateWaveFunctionDependentVxc() const override
+
void applyWaveFunctionDependentVxc() const override
+
double computeWaveFunctionDependentExcEnergy() const override
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/file_readers_8h.html b/file_readers_8h.html new file mode 100644 index 000000000..1f120f325 --- /dev/null +++ b/file_readers_8h.html @@ -0,0 +1,138 @@ + + + + + + + +DFT-FE: workspace/include/fileReaders.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
fileReaders.h File Reference
+
+
+ +

Contains commonly used I/O file utils functions. +More...

+
#include <string>
+#include <vector>
+#include <mpi.h>
+
+

Go to the source code of this file.

+ + + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::dftUtils
 Contains repeatedly used functions in the KSDFT calculations.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void dftfe::dftUtils::readFile (const unsigned int numColumns, std::vector< std::vector< double > > &data, const std::string &fileName)
 Read from file containing only double data in columns.
 
int dftfe::dftUtils::readPsiFile (const unsigned int numColumns, std::vector< std::vector< double > > &data, const std::string &fileName)
 Read from file containing only double data in columns.
 
void dftfe::dftUtils::writeDataIntoFile (const std::vector< std::vector< double > > &data, const std::string &fileName, const MPI_Comm &mpi_comm_parent)
 Write data into file containing only double data in rows and columns.
 
void dftfe::dftUtils::writeDataIntoFile (const std::vector< std::vector< double > > &data, const std::string &fileName)
 Write data into file containing only double data in rows and columns.
 
void dftfe::dftUtils::readRelaxationFlagsFile (const unsigned int numColumns, std::vector< std::vector< int > > &data, std::vector< std::vector< double > > &forceData, const std::string &fileName)
 Read from file containing only integer data in columns.
 
void dftfe::dftUtils::moveFile (const std::string &old_name, const std::string &new_name)
 Move/rename checkpoint file.
 
void dftfe::dftUtils::copyFile (const std::string &pathold, const std::string &pathnew)
 copy file.
 
void dftfe::dftUtils::verifyCheckpointFileExists (const std::string &filename)
 Verify if checkpoint file exists.
 
+

Detailed Description

+

Contains commonly used I/O file utils functions.

+
Author
Shiva Rudraraju, Phani Motamarri, Sambit Das
+
+ + + + diff --git a/file_readers_8h_source.html b/file_readers_8h_source.html new file mode 100644 index 000000000..e7f5edbca --- /dev/null +++ b/file_readers_8h_source.html @@ -0,0 +1,205 @@ + + + + + + + +DFT-FE: workspace/include/fileReaders.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
fileReaders.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16
+
17/** @file fileReaders.h
+
18 * @brief Contains commonly used I/O file utils functions
+
19 *
+
20 * @author Shiva Rudraraju, Phani Motamarri, Sambit Das
+
21 */
+
22
+
23#ifndef fileReaders_H_
+
24#define fileReaders_H_
+
25#include <string>
+
26#include <vector>
+
27#include <mpi.h>
+
28
+
29namespace dftfe
+
30{
+
31 namespace dftUtils
+
32 {
+
33 /**
+
34 * @brief Read from file containing only double data in columns.
+
35 *
+
36 * @param[in] numColumns number of data columsn in the file to be read
+
37 * @param[out] data output double data in [rows][columns] format
+
38 * @param[in] fileName
+
39 */
+
40 void
+
41 readFile(const unsigned int numColumns,
+
42 std::vector<std::vector<double>> &data,
+
43 const std::string & fileName);
+
44 /**
+
45 * @brief Read from file containing only double data in columns.
+
46 */
+
47 int
+
48 readPsiFile(const unsigned int numColumns,
+
49 std::vector<std::vector<double>> &data,
+
50 const std::string & fileName);
+
51
+
52 /**
+
53 * @brief Write data into file containing only double data in rows and columns.
+
54 *
+
55 * @param[in] data input double data in [rows][columns] format
+
56 * @param[in] fileName
+
57 * @param[in] mpi_comm_parent parent communicator
+
58 */
+
59 void
+
60 writeDataIntoFile(const std::vector<std::vector<double>> &data,
+
61 const std::string & fileName,
+ +
63
+
64 /**
+
65 * @brief Write data into file containing only double data in rows and columns.
+
66 *
+
67 * @param[in] data input double data in [rows][columns] format
+
68 * @param[in] fileName
+
69 */
+
70 void
+
71 writeDataIntoFile(const std::vector<std::vector<double>> &data,
+
72 const std::string & fileName);
+
73
+
74 /**
+
75 * @brief Read from file containing only integer data in columns.
+
76 */
+
77 void
+ +
79 std::vector<std::vector<int>> & data,
+
80 std::vector<std::vector<double>> &forceData,
+
81 const std::string & fileName);
+
82
+
83 /**
+
84 * @brief Move/rename checkpoint file.
+
85 */
+
86 void
+
87 moveFile(const std::string &old_name, const std::string &new_name);
+
88
+
89 /**
+
90 * @brief copy file.
+
91 */
+
92 void
+
93 copyFile(const std::string &pathold, const std::string &pathnew);
+
94
+
95 /**
+
96 * @brief Verify if checkpoint file exists.
+
97 */
+
98 void
+ +
100 }; // namespace dftUtils
+
101
+
102} // namespace dftfe
+
103#endif
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
void readFile(const unsigned int numColumns, std::vector< std::vector< double > > &data, const std::string &fileName)
Read from file containing only double data in columns.
+
int readPsiFile(const unsigned int numColumns, std::vector< std::vector< double > > &data, const std::string &fileName)
Read from file containing only double data in columns.
+
void readRelaxationFlagsFile(const unsigned int numColumns, std::vector< std::vector< int > > &data, std::vector< std::vector< double > > &forceData, const std::string &fileName)
Read from file containing only integer data in columns.
+
void moveFile(const std::string &old_name, const std::string &new_name)
Move/rename checkpoint file.
+
void writeDataIntoFile(const std::vector< std::vector< double > > &data, const std::string &fileName, const MPI_Comm &mpi_comm_parent)
Write data into file containing only double data in rows and columns.
+
void verifyCheckpointFileExists(const std::string &filename)
Verify if checkpoint file exists.
+
void copyFile(const std::string &pathold, const std::string &pathnew)
copy file.
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/files.html b/files.html new file mode 100644 index 000000000..b614075df --- /dev/null +++ b/files.html @@ -0,0 +1,221 @@ + + + + + + + +DFT-FE: File List + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
File List
+
+
+
Here is a list of all files with brief descriptions:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  workspace
  include
  pseudoConverters
+
+
+ + + + diff --git a/folderclosed.svg b/folderclosed.svg new file mode 100644 index 000000000..b04bed2e7 --- /dev/null +++ b/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/folderclosedd.svg b/folderclosedd.svg new file mode 100644 index 000000000..52f0166a2 --- /dev/null +++ b/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/folderopen.svg b/folderopen.svg new file mode 100644 index 000000000..f6896dd25 --- /dev/null +++ b/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/folderopend.svg b/folderopend.svg new file mode 100644 index 000000000..2d1f06e7b --- /dev/null +++ b/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/force_8h.html b/force_8h.html new file mode 100644 index 000000000..6c704f490 --- /dev/null +++ b/force_8h.html @@ -0,0 +1,113 @@ + + + + + + + +DFT-FE: workspace/include/force.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
force.h File Reference
+
+
+
#include "vselfBinsManager.h"
+#include "dftParameters.h"
+#include "constants.h"
+#include "headers.h"
+#include "meshMovementGaussian.h"
+#include <dftd.h>
+#include <oncvClass.h>
+#include <AtomicCenteredNonLocalOperator.h>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >
 computes configurational forces in KSDFT More...
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/force_8h_source.html b/force_8h_source.html new file mode 100644 index 000000000..84e067d3b --- /dev/null +++ b/force_8h_source.html @@ -0,0 +1,1172 @@ + + + + + + + +DFT-FE: workspace/include/force.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
force.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16
+
17
+
18#ifndef force_H_
+
19#define force_H_
+
20#include "vselfBinsManager.h"
+
21#include "dftParameters.h"
+
22
+
23#include "constants.h"
+
24#include "headers.h"
+ +
26#include <dftd.h>
+
27#include <oncvClass.h>
+ +
29
+
30
+
31namespace dftfe
+
32{
+
33 // forward declaration
+
34 template <unsigned int T1, unsigned int T2, dftfe::utils::MemorySpace memory>
+
35 class dftClass;
+
36
+
37 /**
+
38 * @brief computes configurational forces in KSDFT
+
39 *
+
40 * This class computes and stores the configurational forces corresponding to
+
41 * geometry optimization. It uses the formulation in the paper by Motamarri
+
42 * et.al. (https://link.aps.org/doi/10.1103/PhysRevB.97.165132) which provides
+
43 * an unified approach to atomic forces corresponding to internal atomic
+
44 * relaxation and cell stress corresponding to cell relaxation.
+
45 *
+
46 * @author Sambit Das
+
47 */
+
48 template <unsigned int FEOrder,
+
49 unsigned int FEOrderElectro,
+ +
+ +
52 {
+ +
54
+
55 public:
+
56 /** @brief Constructor.
+
57 *
+
58 * @param _dftPtr pointer to dftClass
+
59 * @param mpi_comm_parent parent mpi_communicator
+
60 * @param mpi_comm_domain domain decomposition mpi_communicator
+
61 */
+ + + +
65 const dftParameters & dftParams);
+
66
+
67 /** @brief initializes data structures inside forceClass assuming unmoved triangulation.
+
68 *
+
69 * initUnmoved is the first step of the initialization/reinitialization of
+
70 * force class when starting from a new unmoved triangulation. It creates
+
71 * the dofHandler with linear finite elements and three components
+
72 * corresponding to the three force components. It also creates the
+
73 * corresponding constraint matrices which is why an unmoved triangulation
+
74 * is necessary. Finally this function also initializes the gaussianMovePar
+
75 * data member.
+
76 *
+
77 * @param triangulation reference to unmoved triangulation where the mesh nodes have not
+
78 * been manually moved.
+
79 * @param isElectrostaticsMesh boolean parameter specifying whether this triangulatio is to be used for
+
80 * for the electrostatics part of the configurational force.
+
81 * @return void.
+
82 */
+
83 void
+
84 initUnmoved(const dealii::Triangulation<3, 3> & triangulation,
+
85 const dealii::Triangulation<3, 3> & serialTriangulation,
+
86 const std::vector<std::vector<double>> &domainBoundingVectors,
+
87 const bool isElectrostaticsMesh);
+
88
+
89 /** @brief initializes data structures inside forceClass which depend on the moved mesh.
+
90 *
+
91 * initMoved is the second step (first step call initUnmoved) of the
+
92 * initialization/reinitialization of force class when starting from a new
+
93 * mesh, and the first step when recomputing forces on a perturbed mesh.
+
94 * initMoved assumes that the triangulation whose reference was passed to
+
95 * the forceClass object in the initUnmoved call now has its nodes moved
+
96 * such that all atomic positions lie on nodes.
+
97 *
+
98 * @return void.
+
99 */
+
100 void
+ +
102 std::vector<const dealii::DoFHandler<3> *> &dofHandlerVectorMatrixFree,
+
103 std::vector<const dealii::AffineConstraints<double> *>
+ +
105 const bool isElectrostaticsMesh);
+
106
+
107 /** @brief initializes and precomputes pseudopotential related data structuers required for configurational force
+
108 * and stress computation.
+
109 *
+
110 * This function is only activated for pseudopotential calculations and is
+
111 * currently called when initializing/reinitializing the dftClass object.
+
112 * This function initializes and precomputes the pseudopotential
+
113 * datastructures for local and non-local parts. Separate internal function
+
114 * calls are made for KB and ONCV projectors.
+
115 *
+
116 * @return void.
+
117 */
+
118 void
+ +
120
+
121 /** @brief computes the configurational force on all atoms corresponding to a Gaussian generator,
+
122 * which represents perturbation of the underlying space.
+
123 *
+
124 * The Gaussian generator is taken to be exp(-d_gaussianConstant*r^2), r
+
125 * being the distance from the atom. Currently d_gaussianConstant is
+
126 * hardcoded to be 4.0. To get the computed atomic forces use getAtomsForces
+
127 *
+
128 * @return void.
+
129 */
+
130 void
+ +
132 const dealii::MatrixFree<3, double> &matrixFreeData,
+ +
134 const unsigned int eigenDofHandlerIndex,
+
135 const unsigned int smearedChargeQuadratureId,
+
136 const unsigned int lpspQuadratureIdElectro,
+
137 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
+
138 const unsigned int phiTotDofHandlerIndexElectro,
+ +
140 const std::vector<
+ + +
143 const std::vector<
+ + + + + + +
150 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
151 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
+
152 const std::map<dealii::CellId, std::vector<double>> &hessianRhoCoreValues,
+
153 const std::map<unsigned int,
+
154 std::map<dealii::CellId, std::vector<double>>>
+ +
156 const std::map<unsigned int,
+
157 std::map<dealii::CellId, std::vector<double>>>
+ +
159 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
+
160 const std::map<unsigned int,
+
161 std::map<dealii::CellId, std::vector<double>>>
+ +
163 const dealii::AffineConstraints<double> &hangingPlusPBCConstraintsElectro,
+ +
165
+
166 /** @brief returns a copy of the configurational force on all global atoms.
+
167 *
+
168 * computeAtomsForces must be called prior to this function call.
+
169 *
+
170 * @return std::vector<double> flattened array of the configurational force on all atoms,
+
171 * the three force components on each atom being the leading dimension.
+
172 * Units- Hartree/Bohr
+
173 */
+
174 std::vector<double>
+ +
176
+
177 /** @brief prints the currently stored configurational forces on atoms and the Gaussian generator constant
+
178 * used to compute them.
+
179 *
+
180 * @return void.
+
181 */
+
182 void
+ +
184
+
185 /** @brief Update force generator Gaussian constant.
+
186 *
+
187 * @return void.
+
188 */
+
189 // void updateGaussianConstant(const double newGaussianConstant);
+
190
+
191 /** @brief computes the configurational stress on the domain corresponding to
+
192 * affine deformation of the periodic cell.
+
193 *
+
194 * This function cannot be called for fully non-periodic calculations.
+
195 *
+
196 * @return void.
+
197 */
+
198 void
+ +
200 const dealii::MatrixFree<3, double> &matrixFreeData,
+ +
202 const unsigned int eigenDofHandlerIndex,
+
203 const unsigned int smearedChargeQuadratureId,
+
204 const unsigned int lpspQuadratureIdElectro,
+
205 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
+
206 const unsigned int phiTotDofHandlerIndexElectro,
+ +
208 const std::vector<
+ + +
211 const std::vector<
+ + + + + + +
218 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
+
219 const std::map<unsigned int,
+
220 std::map<dealii::CellId, std::vector<double>>>
+ +
222 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
223 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
+
224 const std::map<dealii::CellId, std::vector<double>> &hessianRhoCoreValues,
+
225 const std::map<unsigned int,
+
226 std::map<dealii::CellId, std::vector<double>>>
+ +
228 const std::map<unsigned int,
+
229 std::map<dealii::CellId, std::vector<double>>>
+ +
231 const dealii::AffineConstraints<double> &hangingPlusPBCConstraintsElectro,
+ +
233
+
234 /** @brief prints the currently stored configurational stress tensor.
+
235 *
+
236 * @return void.
+
237 */
+
238 void
+ +
240
+
241 /** @brief returns a copy of the current stress tensor value.
+
242 *
+
243 * computeStress must be call prior to this function call.
+
244 *
+
245 * @return dealii::Tensor<2,3,double> second order stress Tensor in Hartree/Bohr^3
+
246 */
+
247 dealii::Tensor<2, 3, double>
+ +
249
+
250 /** @brief get the value of Gaussian generator parameter (d_gaussianConstant).
+
251 * Gaussian generator: Gamma(r)= exp(-d_gaussianConstant*r^2).
+
252 *
+
253 */
+
254 // double getGaussianGeneratorParameter() const;
+
255
+
256 private:
+
257 /** @brief Locates and stores the global dof indices of d_dofHandlerForce whose cooridinates match
+
258 * with the atomic positions.
+
259 *
+
260 * @return void.
+
261 */
+
262 void
+
263 locateAtomCoreNodesForce(const dealii::DoFHandler<3> &dofHandlerForce,
+
264 const dealii::IndexSet &locally_owned_dofsForce,
+
265 std::map<std::pair<unsigned int, unsigned int>,
+
266 unsigned int> &atomsForceDofs);
+
267
+
268 void
+ +
270 const dealii::DoFHandler<3> & dofHandler,
+
271 const dealii::DoFHandler<3> & dofHandlerForce,
+
272 const dealii::AffineConstraints<double> &hangingPlusPBCConstraints,
+ +
274 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
+ +
276 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
+ +
278 std::vector<std::map<dealii::CellId, unsigned int>>
+ +
280 std::map<unsigned int, unsigned int> &AtomIdBinIdLocalDofHandler,
+
281 std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator,
+
282 std::vector<unsigned int>>>
+ +
284 std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator,
+
285 std::vector<unsigned int>>>
+ +
287
+
288 void
+ +
290 const dealii::MatrixFree<3, double> &matrixFreeData,
+
291 const dealii::MatrixFree<3, double> &matrixFreeDataElectro);
+
292
+
293 void
+ +
295
+
296 void
+ +
298 const dealii::MatrixFree<3, double> &matrixFreeData,
+
299 const unsigned int eigenDofHandlerIndex,
+
300 const unsigned int smearedChargeQuadratureId,
+
301 const unsigned int lpspQuadratureIdElectro,
+
302 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
+
303 const unsigned int phiTotDofHandlerIndexElectro,
+ +
305 const std::vector<
+ + +
308 const std::vector<
+ + + + + + +
315 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
316 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
+
317 const std::map<dealii::CellId, std::vector<double>> &hessianRhoCoreValues,
+
318 const std::map<unsigned int,
+
319 std::map<dealii::CellId, std::vector<double>>>
+ +
321 const std::map<unsigned int,
+
322 std::map<dealii::CellId, std::vector<double>>>
+ +
324 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
+
325 const std::map<unsigned int,
+
326 std::map<dealii::CellId, std::vector<double>>>
+ + +
329
+
330 void
+ +
332 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
+
333 const unsigned int phiTotDofHandlerIndexElectro,
+
334 const unsigned int smearedChargeQuadratureId,
+
335 const unsigned int lpspQuadratureIdElectro,
+ + + + + + + + + +
345 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
+
346 const std::map<unsigned int,
+
347 std::map<dealii::CellId, std::vector<double>>>
+ + +
350
+
351 void
+ +
353
+
354 void
+ +
356 const dealii::DoFHandler<3> & dofHandlerElectro,
+ +
358 const dealii::MatrixFree<3, double> & matrixFreeDataElectro,
+
359 const unsigned int smearedChargeQuadratureId);
+
360
+
361 void
+ +
363
+
364 void
+ +
366 const dealii::MatrixFree<3, double> &matrixFreeData,
+
367 const unsigned int eigenDofHandlerIndex,
+
368 const unsigned int smearedChargeQuadratureId,
+
369 const unsigned int lpspQuadratureIdElectro,
+
370 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
+
371 const unsigned int phiTotDofHandlerIndexElectro,
+ +
373 const std::vector<
+ + +
376 const std::vector<
+ + + + + + +
383 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
384 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
+
385 const std::map<dealii::CellId, std::vector<double>> &hessianRhoCoreValues,
+
386 const std::map<unsigned int,
+
387 std::map<dealii::CellId, std::vector<double>>>
+ +
389 const std::map<unsigned int,
+
390 std::map<dealii::CellId, std::vector<double>>>
+ +
392 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
+
393 const std::map<unsigned int,
+
394 std::map<dealii::CellId, std::vector<double>>>
+ + +
397
+
398 void
+ +
400 std::map<unsigned int, std::vector<double>>
+ +
402 dealii::FEValues<3> & feValues,
+
403 dealii::FEFaceValues<3> & feFaceValues,
+
404 dealii::FEEvaluation<3,
+
405 1,
+ +
407 3> & forceEval,
+
408 const dealii::MatrixFree<3, double> &matrixFreeData,
+
409 const unsigned int phiTotDofHandlerIndexElectro,
+
410 const unsigned int cell,
+
411 const dealii::AlignedVector<dealii::VectorizedArray<double>> &rhoQuads,
+
412 const dealii::AlignedVector<
+
413 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &gradRhoQuads,
+
414 const std::map<unsigned int,
+
415 std::map<dealii::CellId, std::vector<double>>>
+ + +
418 const std::vector<std::map<dealii::CellId, unsigned int>>
+ +
420
+
421 void
+ +
423 std::map<unsigned int, std::vector<double>>
+ +
425 dealii::FEEvaluation<3, -1, 1, 3> & forceEval,
+
426 const dealii::MatrixFree<3, double> &matrixFreeData,
+
427 const unsigned int cell,
+
428 const dealii::AlignedVector<
+
429 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &gradPhiTotQuads,
+
430 const std::vector<unsigned int> &nonTrivialAtomIdsMacroCell,
+
431 const std::map<dealii::CellId, std::vector<int>> &bQuadAtomIdsAllAtoms,
+
432 const dealii::AlignedVector<dealii::VectorizedArray<double>>
+ +
434
+
435 void
+ +
437 std::map<unsigned int, std::vector<double>>
+ +
439 dealii::FEEvaluation<3, -1, 1, 3> & forceEval,
+
440 const dealii::MatrixFree<3, double> &matrixFreeData,
+
441 const unsigned int cell,
+
442 const dealii::AlignedVector<
+
443 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
+ +
445 const std::vector<unsigned int> &nonTrivialAtomIdsMacroCell,
+
446 const std::map<dealii::CellId, std::vector<int>> &bQuadAtomIdsAllAtoms,
+
447 const dealii::AlignedVector<dealii::VectorizedArray<double>>
+ +
449
+
450 void
+ +
452 std::map<unsigned int, std::vector<double>>
+ +
454 dealii::FEEvaluation<
+
455 3,
+
456 1,
+ +
458 3> & forceEval,
+
459 const dealii::MatrixFree<3, double> &matrixFreeData,
+
460 const unsigned int cell,
+
461 const dealii::AlignedVector<dealii::VectorizedArray<double>> &vxcQuads,
+
462 const std::map<unsigned int,
+
463 std::map<dealii::CellId, std::vector<double>>>
+ +
465
+
466
+
467 void
+ +
469 std::map<unsigned int, std::vector<double>>
+ +
471 dealii::FEEvaluation<
+
472 3,
+
473 1,
+ +
475 3> & forceEval,
+
476 const dealii::MatrixFree<3, double> &matrixFreeData,
+
477 const unsigned int cell,
+
478 const dealii::AlignedVector<
+
479 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &derExcGradRho,
+
480 const std::map<unsigned int,
+
481 std::map<dealii::CellId, std::vector<double>>>
+ +
483
+
484 void
+ +
486 std::map<unsigned int, std::vector<double>>
+ +
488 dealii::FEEvaluation<
+
489 3,
+
490 1,
+ +
492 3> & forceEval,
+
493 const dealii::MatrixFree<3, double> &matrixFreeData,
+
494 const unsigned int cell,
+
495 const dealii::AlignedVector<dealii::VectorizedArray<double>>
+ +
497 const dealii::AlignedVector<dealii::VectorizedArray<double>>
+ +
499 const dealii::AlignedVector<
+
500 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
+ +
502 const dealii::AlignedVector<
+
503 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
+ +
505 const std::map<unsigned int,
+
506 std::map<dealii::CellId, std::vector<double>>>
+ +
508 const std::map<unsigned int,
+
509 std::map<dealii::CellId, std::vector<double>>>
+ +
511 const bool isXCGGA = false);
+
512
+
513 void
+ +
515 const std::map<unsigned int, std::vector<double>>
+ +
517 const std::map<std::pair<unsigned int, unsigned int>, unsigned int>
+ +
519 const dealii::AffineConstraints<double> &constraintsNoneForce,
+ +
521
+
522 void
+ +
524 const std::map<unsigned int, std::vector<double>>
+ +
526 std::vector<double> &accumForcesVector);
+
527
+
528
+
529 void
+ +
531 std::map<unsigned int, std::vector<double>>
+ +
533 const dealii::MatrixFree<3, double> &matrixFreeData,
+
534 dealii::FEEvaluation<3,
+
535 1,
+ + +
538 3> & forceEvalNLP,
+
539 const unsigned int cell,
+
540 const std::map<dealii::CellId, unsigned int> &cellIdToCellNumberMap,
+ +
542 const std::vector<dataTypes::number>
+ +
544#endif
+
545 const std::vector<dataTypes::number> &zetaDeltaVQuadsFlattened,
+
546 const std::vector<dataTypes::number> &
+ +
548
+
549
+ +
551 dealii::AlignedVector<
+
552 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &FVectQuads,
+
553 const dealii::MatrixFree<3, double> & matrixFreeData,
+
554 const unsigned int numQuadPoints,
+
555 const unsigned int cell,
+
556 const std::map<dealii::CellId, unsigned int> &cellIdToCellNumberMap,
+
557 const std::vector<dataTypes::number> & zetaDeltaVQuadsFlattened,
+
558 const std::vector<dataTypes::number> &
+ +
560
+
561 void
+ +
563 const std::map<unsigned int, std::vector<double>>
+ +
565
+ +
567 dealii::Tensor<2, 3, double> & stressContribution,
+
568 const dealii::MatrixFree<3, double> & matrixFreeData,
+
569 const unsigned int numQuadPoints,
+
570 const std::vector<double> & jxwQuadsSubCells,
+
571 const unsigned int cell,
+
572 const std::map<dealii::CellId, unsigned int> &cellIdToCellNumberMap,
+
573 const std::vector<dataTypes::number> &zetalmDeltaVlProductDistImageAtoms,
+ +
575 const std::vector<dataTypes::number>
+ +
577#endif
+
578 const std::vector<dataTypes::number>
+ +
580 const bool isSpinPolarized);
+
581
+
582 void
+ +
584 bool allowGaussianOverlapOnAtoms = false);
+
585
+
586 void
+ +
588
+
589 void
+ +
591 const dealii::DoFHandler<3> & dofHandlerElectro,
+ +
593 const dealii::MatrixFree<3, double> & matrixFreeDataElectro,
+
594 const unsigned int smearedChargeQuadratureId);
+
595
+
596 void
+ +
598 const dealii::MatrixFree<3, double> &matrixFreeData,
+
599 const unsigned int eigenDofHandlerIndex,
+
600 const unsigned int smearedChargeQuadratureId,
+
601 const unsigned int lpspQuadratureIdElectro,
+
602 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
+
603 const unsigned int phiTotDofHandlerIndexElectro,
+ +
605 const std::vector<
+ + +
608 const std::vector<
+ + + + + + +
615 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
+
616 const std::map<unsigned int,
+
617 std::map<dealii::CellId, std::vector<double>>>
+ +
619 const std::map<dealii::CellId, std::vector<double>> &rhoCoreValues,
+
620 const std::map<dealii::CellId, std::vector<double>> &gradRhoCoreValues,
+
621 const std::map<dealii::CellId, std::vector<double>> &hessianRhoCoreValues,
+
622 const std::map<unsigned int,
+
623 std::map<dealii::CellId, std::vector<double>>>
+ +
625 const std::map<unsigned int,
+
626 std::map<dealii::CellId, std::vector<double>>>
+ + +
629
+
630 void
+ +
632 const dealii::MatrixFree<3, double> &matrixFreeDataElectro,
+
633 const unsigned int phiTotDofHandlerIndexElectro,
+
634 const unsigned int smearedChargeQuadratureId,
+
635 const unsigned int lpspQuadratureIdElectro,
+ + + + + + + + + +
645 const std::map<dealii::CellId, std::vector<double>> &pseudoVLocElectro,
+
646 const std::map<unsigned int,
+
647 std::map<dealii::CellId, std::vector<double>>>
+ + +
650
+ +
652 dealii::FEValues<3> & feValues,
+
653 dealii::FEFaceValues<3> & feFaceValues,
+
654 dealii::FEEvaluation<3,
+
655 1,
+ +
657 3> & forceEval,
+
658 const dealii::MatrixFree<3, double> &matrixFreeData,
+
659 const unsigned int phiTotDofHandlerIndexElectro,
+
660 const unsigned int cell,
+
661 const dealii::AlignedVector<dealii::VectorizedArray<double>> &rhoQuads,
+
662 const dealii::AlignedVector<
+
663 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &gradRhoQuads,
+
664 const std::map<unsigned int,
+
665 std::map<dealii::CellId, std::vector<double>>>
+ + +
668 const std::vector<std::map<dealii::CellId, unsigned int>>
+ +
670
+ +
672 dealii::FEEvaluation<
+
673 3,
+
674 1,
+ +
676 3> & forceEval,
+
677 const dealii::MatrixFree<3, double> &matrixFreeData,
+
678 const unsigned int cell,
+
679 const dealii::AlignedVector<dealii::VectorizedArray<double>> &vxcQuads,
+
680 const dealii::AlignedVector<
+
681 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &derExcGradRho,
+
682 const std::map<unsigned int,
+
683 std::map<dealii::CellId, std::vector<double>>>
+ +
685 const std::map<unsigned int,
+
686 std::map<dealii::CellId, std::vector<double>>>
+ +
688
+ +
690 dealii::FEEvaluation<
+
691 3,
+
692 1,
+ +
694 3> & forceEval,
+
695 const dealii::MatrixFree<3, double> &matrixFreeData,
+
696 const unsigned int cell,
+
697 const dealii::AlignedVector<dealii::VectorizedArray<double>>
+ +
699 const dealii::AlignedVector<dealii::VectorizedArray<double>>
+ +
701 const dealii::AlignedVector<
+
702 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
+ +
704 const dealii::AlignedVector<
+
705 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
+ +
707 const std::map<unsigned int,
+
708 std::map<dealii::CellId, std::vector<double>>>
+ +
710 const std::map<unsigned int,
+
711 std::map<dealii::CellId, std::vector<double>>>
+ +
713 const bool isXCGGA = false);
+
714
+ +
716 dealii::FEEvaluation<3, -1, 1, 3> & forceEval,
+
717 const dealii::MatrixFree<3, double> &matrixFreeData,
+
718 const unsigned int cell,
+
719 const dealii::AlignedVector<
+
720 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &gradPhiTotQuads,
+
721 const std::vector<unsigned int> &nonTrivialAtomImageIdsMacroCell,
+
722 const std::map<dealii::CellId, std::vector<int>>
+ +
724 const dealii::AlignedVector<dealii::VectorizedArray<double>>
+ +
726
+ +
728 dealii::FEEvaluation<3, -1, 1, 3> & forceEval,
+
729 const dealii::MatrixFree<3, double> &matrixFreeData,
+
730 const unsigned int cell,
+
731 const dealii::AlignedVector<
+
732 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &gradVselfQuads,
+
733 const std::vector<unsigned int> &nonTrivialAtomImageIdsMacroCell,
+
734 const std::map<dealii::CellId, std::vector<int>>
+ +
736 const dealii::AlignedVector<dealii::VectorizedArray<double>>
+ +
738
+
739 void
+ +
741
+
742
+
743 /// Parallel distributed vector field which stores the configurational force
+
744 /// for each fem node corresponding to linear shape function generator (see
+
745 /// equations 52-53 in
+
746 /// (https://link.aps.org/doi/10.1103/PhysRevB.97.165132)). This vector
+
747 /// doesn't contain contribution from terms which have sums over k points.
+ +
749
+
750 /// Parallel distributed vector field which stores the configurational force
+
751 /// for each fem node corresponding to linear shape function generator (see
+
752 /// equations 52-53 in
+
753 /// (https://link.aps.org/doi/10.1103/PhysRevB.97.165132)). This vector only
+
754 /// containts contribution from the electrostatic part.
+ +
756
+
757#ifdef USE_COMPLEX
+
758 /// Parallel distributed vector field which stores the configurational force
+
759 /// for each fem node corresponding to linear shape function generator (see
+
760 /// equations 52-53 in
+
761 /// (https://link.aps.org/doi/10.1103/PhysRevB.97.165132)). This vector only
+
762 /// contains contribution from terms which have sums over k points.
+ +
764#endif
+
765
+
766
+
767 std::vector<double> d_forceAtomsFloating;
+
768
+
769#ifdef USE_COMPLEX
+
770 std::vector<double> d_forceAtomsFloatingKPoints;
+
771#endif
+
772
+
773
+
774
+
775 /// Gaussian generator constant. Gaussian generator: Gamma(r)=
+
776 /// exp(-d_gaussianConstant*r^2)
+
777 /// FIXME: Until the hanging nodes surface integral issue is fixed use a
+
778 /// value >=4.0
+
779 // double d_gaussianConstant;
+
780
+
781 /// Storage for configurational force on all global atoms.
+
782 std::vector<double> d_globalAtomsForces;
+
783
+
784 /// Storage for configurational stress tensor
+
785 dealii::Tensor<2, 3, double> d_stress;
+
786
+
787
+
788
+
789 /* Part of the stress tensor which is summed over k points.
+
790 * It is a temporary data structure required for stress evaluation
+
791 * (d_stress) when parallization over k points is on.
+
792 */
+
793 dealii::Tensor<2, 3, double> d_stressKPoints;
+
794
+
795 /* Dont use true except for debugging forces only without mesh movement, as
+
796 * gaussian ovelap on atoms for move mesh is by default set to false
+
797 */
+ +
799
+
800 /// pointer to dft class
+ +
802
+
803 /// Finite element object for configurational force computation. Linear
+
804 /// finite elements with three force field components are used.
+
805 dealii::FESystem<3> FEForce;
+
806
+
807 /* DofHandler on which we define the configurational force field. Each
+
808 * geometric fem node has three dofs corresponding the the three force
+
809 * components. The generator for the configurational force on the fem node
+
810 * is the linear shape function attached to it. This DofHandler is based on
+
811 * the same triangulation on which we solve the dft problem.
+
812 */
+
813 dealii::DoFHandler<3> d_dofHandlerForce;
+
814
+
815 /* DofHandler on which we define the configurational force field from
+
816 * electrostatic part (without psp). Each geometric fem node has three dofs
+
817 * corresponding the the three force components. The generator for the
+
818 * configurational force on the fem node is the linear shape function
+
819 * attached to it. This DofHandler is based on the same triangulation on
+
820 * which we solve the dft problem.
+
821 */
+
822 dealii::DoFHandler<3> d_dofHandlerForceElectro;
+
823
+
824 /// Index of the d_dofHandlerForce in the MatrixFree object stored in
+
825 /// dftClass. This is required to correctly use FEEvaluation class.
+ +
827
+
828 /// Index of the d_dofHandlerForceElectro in the MatrixFree object stored in
+
829 /// dftClass. This is required to correctly use FEEvaluation class.
+ +
831
+
832 /// dealii::IndexSet of locally owned dofs of in d_dofHandlerForce the
+
833 /// current processor
+ +
835
+
836 /// dealii::IndexSet of locally owned dofs of in d_dofHandlerForceElectro
+
837 /// the current processor
+ +
839
+
840 /// dealii::IndexSet of locally relevant dofs of in d_dofHandlerForce the
+
841 /// current processor
+ +
843
+
844 /// dealii::IndexSet of locally relevant dofs of in d_dofHandlerForceElectro
+
845 /// the current processor
+ +
847
+
848 /// Constraint matrix for hanging node and periodic constaints on
+
849 /// d_dofHandlerForce.
+
850 dealii::AffineConstraints<double> d_constraintsNoneForce;
+
851
+
852 /// Constraint matrix for hanging node and periodic constaints on
+
853 /// d_dofHandlerForceElectro.
+
854 dealii::AffineConstraints<double> d_constraintsNoneForceElectro;
+
855
+
856 /// Internal data: map < <atomId,force component>, globaldof in
+
857 /// d_dofHandlerForce>
+
858 std::map<std::pair<unsigned int, unsigned int>, unsigned int>
+ +
860
+
861 /// Internal data: map < <atomId,force component>, globaldof in
+
862 /// d_dofHandlerForceElectro>
+
863 std::map<std::pair<unsigned int, unsigned int>, unsigned int>
+ +
865
+
866 /// Internal data: stores cell iterators of all cells in
+
867 /// dftPtr->d_dofHandler which are part of the vself ball. Outer vector is
+
868 /// over vself bins.
+
869 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
+ +
871
+
872 /// Internal data: stores cell iterators of all cells in d_dofHandlerForce
+
873 /// which are part of the vself ball. Outer vector is over vself bins.
+
874 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
+ +
876
+
877 /// Internal data: stores map of vself ball cell Id to the closest atom Id
+
878 /// of that cell. Outer vector over vself bins.
+
879 std::vector<std::map<dealii::CellId, unsigned int>>
+ +
881
+
882 /// Internal data: stores the map of atom Id (only in the local processor)
+
883 /// to the vself bin Id.
+
884 std::map<unsigned int, unsigned int> d_AtomIdBinIdLocalDofHandler;
+
885
+
886 /* Internal data: stores the face ids of dftPtr->d_dofHandler (single
+
887 * component field) on which to evaluate the vself ball surface integral in
+
888 * the configurational force expression. Outer vector is over the vself
+
889 * bins. Inner map is between the cell iterator and the vector of face ids
+
890 * to integrate on for that cell iterator.
+
891 */
+
892 std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator,
+
893 std::vector<unsigned int>>>
+ +
895
+
896 /* Internal data: stores the face ids of d_dofHandlerForce (three component
+
897 * field) on which to evaluate the vself ball surface integral in the
+
898 * configurational force expression. Outer vector is over the vself bins.
+
899 * Inner map is between the cell iterator and the vector of face ids to
+
900 * integrate on for that cell iterator.
+
901 */
+
902 std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator,
+
903 std::vector<unsigned int>>>
+ +
905
+
906 /// Internal data: stores cell iterators of all cells in
+
907 /// dftPtr->d_dofHandler which are part of the vself ball. Outer vector is
+
908 /// over vself bins.
+
909 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
+ +
911
+
912 /// Internal data: stores cell iterators of all cells in d_dofHandlerForce
+
913 /// which are part of the vself ball. Outer vector is over vself bins.
+
914 std::vector<std::vector<dealii::DoFHandler<3>::active_cell_iterator>>
+ +
916
+
917 /// Internal data: stores map of vself ball cell Id to the closest atom Id
+
918 /// of that cell. Outer vector over vself bins.
+
919 std::vector<std::map<dealii::CellId, unsigned int>>
+ +
921
+
922 /// Internal data: stores the map of atom Id (only in the local processor)
+
923 /// to the vself bin Id.
+
924 std::map<unsigned int, unsigned int> d_AtomIdBinIdLocalDofHandlerElectro;
+
925
+
926 /* Internal data: stores the face ids of dftPtr->d_dofHandler (single
+
927 * component field) on which to evaluate the vself ball surface integral in
+
928 * the configurational force expression. Outer vector is over the vself
+
929 * bins. Inner map is between the cell iterator and the vector of face ids
+
930 * to integrate on for that cell iterator.
+
931 */
+
932 std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator,
+
933 std::vector<unsigned int>>>
+ +
935
+
936 /* Internal data: stores the face ids of d_dofHandlerForce (three component
+
937 * field) on which to evaluate the vself ball surface integral in the
+
938 * configurational force expression. Outer vector is over the vself bins.
+
939 * Inner map is between the cell iterator and the vector of face ids to
+
940 * integrate on for that cell iterator.
+
941 */
+
942 std::vector<std::map<dealii::DoFHandler<3>::active_cell_iterator,
+
943 std::vector<unsigned int>>>
+ +
945
+
946 std::map<dealii::CellId, dealii::DoFHandler<3>::active_cell_iterator>
+ +
948
+
949 std::vector<distributedCPUVec<double>> d_gaussianWeightsVecAtoms;
+
950
+
951
+
952
+
953 /// domain decomposition mpi_communicator
+ +
955
+
956 /// domain decomposition mpi_communicator
+ +
958
+ +
960
+
961 /// number of mpi processes in the current pool
+
962 const unsigned int n_mpi_processes;
+
963
+
964 /// current mpi process id in the current pool
+
965 const unsigned int this_mpi_process;
+
966
+
967 /// conditional stream object to enable printing only on root processor
+
968 /// across all pools
+
969 dealii::ConditionalOStream pcout;
+
970 };
+
+
971
+
972} // namespace dftfe
+
973#endif
+ +
This class is the primary interface location of all other parts of the DFT-FE code for all steps invo...
Definition dft.h:109
+
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:35
+
Calculates dispersion correction to energy, force and stress.
Definition dftd.h:37
+
computes configurational forces in KSDFT
Definition force.h:52
+
std::map< unsigned int, unsigned int > d_AtomIdBinIdLocalDofHandlerElectro
Definition force.h:924
+
void addEPSPStressContribution(dealii::FEValues< 3 > &feValues, dealii::FEFaceValues< 3 > &feFaceValues, dealii::FEEvaluation< 3, 1, C_num1DQuadLPSP< FEOrder >() *C_numCopies1DQuadLPSP(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int phiTotDofHandlerIndexElectro, const unsigned int cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &rhoQuads, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradRhoQuads, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtoms, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManager, const std::vector< std::map< dealii::CellId, unsigned int > > &cellsVselfBallsClosestAtomIdDofHandler)
+
unsigned int d_forceDofHandlerIndexElectro
Definition force.h:830
+
std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< unsigned int > > > d_cellFacesVselfBallSurfacesDofHandlerForce
Definition force.h:904
+
void computeAtomsForcesGaussianGenerator(bool allowGaussianOverlapOnAtoms=false)
+
dealii::DoFHandler< 3 > d_dofHandlerForceElectro
Definition force.h:822
+
forceClass(dftClass< FEOrder, FEOrderElectro, memorySpace > *_dftPtr, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const dftParameters &dftParams)
Constructor.
+
void computeConfigurationalForceEEshelbyTensorFPSPFnlLinFE(const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int eigenDofHandlerIndex, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &hessianRhoCoreValues, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)
+
const dftParameters & d_dftParams
Definition force.h:959
+
void createBinObjectsForce(const dealii::DoFHandler< 3 > &dofHandler, const dealii::DoFHandler< 3 > &dofHandlerForce, const dealii::AffineConstraints< double > &hangingPlusPBCConstraints, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManager, std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > &cellsVselfBallsDofHandler, std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > &cellsVselfBallsDofHandlerForce, std::vector< std::map< dealii::CellId, unsigned int > > &cellsVselfBallsClosestAtomIdDofHandler, std::map< unsigned int, unsigned int > &AtomIdBinIdLocalDofHandler, std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< unsigned int > > > &cellFacesVselfBallSurfacesDofHandler, std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< unsigned int > > > &cellFacesVselfBallSurfacesDofHandlerForce)
+
std::vector< double > d_globalAtomsForces
Storage for configurational force on all global atoms.
Definition force.h:782
+
dealii::Tensor< 2, 3, double > d_stress
Storage for configurational stress tensor.
Definition force.h:785
+
void FPhiTotSmearedChargesGammaAtomsElementalContribution(std::map< unsigned int, std::vector< double > > &forceContributionSmearedChargesGammaAtoms, dealii::FEEvaluation< 3, -1, 1, 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradPhiTotQuads, const std::vector< unsigned int > &nonTrivialAtomIdsMacroCell, const std::map< dealii::CellId, std::vector< int > > &bQuadAtomIdsAllAtoms, const dealii::AlignedVector< dealii::VectorizedArray< double > > &smearedbQuads)
+
void configForceLinFEInit(const dealii::MatrixFree< 3, double > &matrixFreeData, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro)
+
void computeAtomsForces(const dealii::MatrixFree< 3, double > &matrixFreeData, const dispersionCorrection &dispersionCorr, const unsigned int eigenDofHandlerIndex, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &hessianRhoCoreValues, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const dealii::AffineConstraints< double > &hangingPlusPBCConstraintsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)
computes the configurational force on all atoms corresponding to a Gaussian generator,...
+
void computeConfigurationalForceEselfLinFE(const dealii::DoFHandler< 3 > &dofHandlerElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int smearedChargeQuadratureId)
+
const bool d_allowGaussianOverlapOnAtoms
Definition force.h:798
+
void initUnmoved(const dealii::Triangulation< 3, 3 > &triangulation, const dealii::Triangulation< 3, 3 > &serialTriangulation, const std::vector< std::vector< double > > &domainBoundingVectors, const bool isElectrostaticsMesh)
initializes data structures inside forceClass assuming unmoved triangulation.
+
dealii::ConditionalOStream pcout
Definition force.h:969
+
const unsigned int this_mpi_process
current mpi process id in the current pool
Definition force.h:965
+
std::map< std::pair< unsigned int, unsigned int >, unsigned int > d_atomsForceDofs
Definition force.h:859
+
std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< unsigned int > > > d_cellFacesVselfBallSurfacesDofHandlerElectro
Definition force.h:934
+
void addENonlinearCoreCorrectionStressContributionSpinPolarized(dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &vxcQuadsSpin0, const dealii::AlignedVector< dealii::VectorizedArray< double > > &vxcQuadsSpin1, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derExcGradRhoSpin0, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derExcGradRhoSpin1, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const bool isXCGGA=false)
+
dealii::AffineConstraints< double > d_constraintsNoneForceElectro
Definition force.h:854
+
void distributeForceContributionFnlGammaAtoms(const std::map< unsigned int, std::vector< double > > &forceContributionFnlGammaAtoms)
+
void printStress()
prints the currently stored configurational stress tensor.
+
std::vector< double > getAtomsForces()
returns a copy of the configurational force on all global atoms.
+
const unsigned int n_mpi_processes
number of mpi processes in the current pool
Definition force.h:962
+
void FnlGammaAtomsElementalContribution(std::map< unsigned int, std::vector< double > > &forceContributionFnlGammaAtoms, const dealii::MatrixFree< 3, double > &matrixFreeData, dealii::FEEvaluation< 3, 1, C_num1DQuadNLPSP< FEOrder >() *C_numCopies1DQuadNLPSP(), 3 > &forceEvalNLP, const unsigned int cell, const std::map< dealii::CellId, unsigned int > &cellIdToCellNumberMap, const std::vector< dataTypes::number > &zetaDeltaVQuadsFlattened, const std::vector< dataTypes::number > &projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened)
+
std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< unsigned int > > > d_cellFacesVselfBallSurfacesDofHandlerForceElectro
Definition force.h:944
+
void FNonlinearCoreCorrectionGammaAtomsElementalContribution(std::map< unsigned int, std::vector< double > > &forceContributionFNonlinearCoreCorrectionGammaAtoms, dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &vxcQuads, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms)
+
void computeConfigurationalForceEEshelbyEElectroPhiTot(const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)
+
void locateAtomCoreNodesForce(const dealii::DoFHandler< 3 > &dofHandlerForce, const dealii::IndexSet &locally_owned_dofsForce, std::map< std::pair< unsigned int, unsigned int >, unsigned int > &atomsForceDofs)
get the value of Gaussian generator parameter (d_gaussianConstant). Gaussian generator: Gamma(r)= exp...
+
void computeConfigurationalForceEselfNoSurfaceLinFE()
+
const MPI_Comm mpi_communicator
domain decomposition mpi_communicator
Definition force.h:957
+
void computeConfigurationalForceTotalLinFE(const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int eigenDofHandlerIndex, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &hessianRhoCoreValues, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)
+
void FNonlinearCoreCorrectionGammaAtomsElementalContributionSpinPolarized(std::map< unsigned int, std::vector< double > > &forceContributionFNonlinearCoreCorrectionGammaAtoms, dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &vxcQuadsSpin0, const dealii::AlignedVector< dealii::VectorizedArray< double > > &vxcQuadsSpin1, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derExcGradRhoSpin0, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derExcGradRhoSpin1, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const bool isXCGGA=false)
+
void stressEnlElementalContribution(dealii::Tensor< 2, 3, double > &stressContribution, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int numQuadPoints, const std::vector< double > &jxwQuadsSubCells, const unsigned int cell, const std::map< dealii::CellId, unsigned int > &cellIdToCellNumberMap, const std::vector< dataTypes::number > &zetalmDeltaVlProductDistImageAtoms, const std::vector< dataTypes::number > &projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened, const bool isSpinPolarized)
+
std::map< dealii::CellId, dealii::DoFHandler< 3 >::active_cell_iterator > d_cellIdToActiveCellIteratorMapDofHandlerRhoNodalElectro
Definition force.h:947
+
void addEVselfSmearedStressContribution(dealii::FEEvaluation< 3, -1, 1, 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradVselfQuads, const std::vector< unsigned int > &nonTrivialAtomImageIdsMacroCell, const std::map< dealii::CellId, std::vector< int > > &bQuadAtomIdsAllAtomsImages, const dealii::AlignedVector< dealii::VectorizedArray< double > > &smearedbQuads)
+
std::vector< std::map< dealii::CellId, unsigned int > > d_cellsVselfBallsClosestAtomIdDofHandlerElectro
Definition force.h:920
+
std::vector< std::map< dealii::DoFHandler< 3 >::active_cell_iterator, std::vector< unsigned int > > > d_cellFacesVselfBallSurfacesDofHandler
Definition force.h:894
+
distributedCPUVec< double > d_configForceVectorLinFEElectro
Definition force.h:755
+
const MPI_Comm d_mpiCommParent
domain decomposition mpi_communicator
Definition force.h:954
+
void computeFloatingAtomsForces()
+
dealii::AffineConstraints< double > d_constraintsNoneForce
Definition force.h:850
+
std::vector< double > d_forceAtomsFloating
Definition force.h:767
+
dealii::FESystem< 3 > FEForce
Definition force.h:805
+
dealii::Tensor< 2, 3, double > getStress()
returns a copy of the current stress tensor value.
+
unsigned int d_forceDofHandlerIndex
Definition force.h:826
+
dealii::IndexSet d_locally_owned_dofsForceElectro
Definition force.h:838
+
void computeStressEEshelbyEPSPEnlEk(const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int eigenDofHandlerIndex, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &hessianRhoCoreValues, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)
+
void accumulateForceContributionGammaAtomsFloating(const std::map< unsigned int, std::vector< double > > &forceContributionLocalGammaAtoms, std::vector< double > &accumForcesVector)
+
void computeStress(const dealii::MatrixFree< 3, double > &matrixFreeData, const dispersionCorrection &dispersionCorr, const unsigned int eigenDofHandlerIndex, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &hessianRhoCoreValues, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const dealii::AffineConstraints< double > &hangingPlusPBCConstraintsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)
Update force generator Gaussian constant.
+
dealii::DoFHandler< 3 > d_dofHandlerForce
Definition force.h:813
+
dealii::IndexSet d_locally_owned_dofsForce
Definition force.h:834
+
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_cellsVselfBallsDofHandlerForceElectro
Definition force.h:915
+
void computeElementalNonLocalPseudoOVDataForce()
+
void FPSPLocalGammaAtomsElementalContribution(std::map< unsigned int, std::vector< double > > &forceContributionFPSPLocalGammaAtoms, dealii::FEValues< 3 > &feValues, dealii::FEFaceValues< 3 > &feFaceValues, dealii::FEEvaluation< 3, 1, C_num1DQuadLPSP< FEOrder >() *C_numCopies1DQuadLPSP(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int phiTotDofHandlerIndexElectro, const unsigned int cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &rhoQuads, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradRhoQuads, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtoms, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManager, const std::vector< std::map< dealii::CellId, unsigned int > > &cellsVselfBallsClosestAtomIdDofHandler)
+
void FnlGammaxElementalContribution(dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &FVectQuads, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int numQuadPoints, const unsigned int cell, const std::map< dealii::CellId, unsigned int > &cellIdToCellNumberMap, const std::vector< dataTypes::number > &zetaDeltaVQuadsFlattened, const std::vector< dataTypes::number > &projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattened)
+
std::map< unsigned int, unsigned int > d_AtomIdBinIdLocalDofHandler
Definition force.h:884
+
void computeStressEself(const dealii::DoFHandler< 3 > &dofHandlerElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int smearedChargeQuadratureId)
+
void computeConfigurationalForcePhiExtLinFE()
+
void FVselfSmearedChargesGammaAtomsElementalContribution(std::map< unsigned int, std::vector< double > > &forceContributionSmearedChargesGammaAtoms, dealii::FEEvaluation< 3, -1, 1, 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradVselfBinQuads, const std::vector< unsigned int > &nonTrivialAtomIdsMacroCell, const std::map< dealii::CellId, std::vector< int > > &bQuadAtomIdsAllAtoms, const dealii::AlignedVector< dealii::VectorizedArray< double > > &smearedbQuads)
+
std::map< std::pair< unsigned int, unsigned int >, unsigned int > d_atomsForceDofsElectro
Definition force.h:864
+
std::vector< distributedCPUVec< double > > d_gaussianWeightsVecAtoms
Definition force.h:949
+
dftClass< FEOrder, FEOrderElectro, memorySpace > * dftPtr
pointer to dft class
Definition force.h:801
+
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_cellsVselfBallsDofHandler
Definition force.h:870
+
dealii::IndexSet d_locally_relevant_dofsForceElectro
Definition force.h:846
+
void initMoved(std::vector< const dealii::DoFHandler< 3 > * > &dofHandlerVectorMatrixFree, std::vector< const dealii::AffineConstraints< double > * > &constraintsVectorMatrixFree, const bool isElectrostaticsMesh)
initializes data structures inside forceClass which depend on the moved mesh.
+
void initPseudoData()
initializes and precomputes pseudopotential related data structuers required for configurational forc...
+
void addEPhiTotSmearedStressContribution(dealii::FEEvaluation< 3, -1, 1, 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &gradPhiTotQuads, const std::vector< unsigned int > &nonTrivialAtomImageIdsMacroCell, const std::map< dealii::CellId, std::vector< int > > &bQuadAtomIdsAllAtomsImages, const dealii::AlignedVector< dealii::VectorizedArray< double > > &smearedbQuads)
+
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_cellsVselfBallsDofHandlerElectro
Definition force.h:910
+
void FNonlinearCoreCorrectionGammaAtomsElementalContribution(std::map< unsigned int, std::vector< double > > &forceContributionFNonlinearCoreCorrectionGammaAtoms, dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derExcGradRho, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms)
+
dealii::IndexSet d_locally_relevant_dofsForce
Definition force.h:842
+
void addENonlinearCoreCorrectionStressContribution(dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &vxcQuads, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derExcGradRho, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms)
+
std::vector< std::map< dealii::CellId, unsigned int > > d_cellsVselfBallsClosestAtomIdDofHandler
Definition force.h:880
+
void computeStressEEshelbyEElectroPhiTot(const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesElectro, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesElectroLpsp, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)
+
distributedCPUVec< double > d_configForceVectorLinFE
Definition force.h:748
+
std::vector< std::vector< dealii::DoFHandler< 3 >::active_cell_iterator > > d_cellsVselfBallsDofHandlerForce
Definition force.h:875
+
dealii::Tensor< 2, 3, double > d_stressKPoints
Definition force.h:793
+
void distributeForceContributionFPSPLocalGammaAtoms(const std::map< unsigned int, std::vector< double > > &forceContributionFPSPLocalGammaAtoms, const std::map< std::pair< unsigned int, unsigned int >, unsigned int > &atomsForceDofs, const dealii::AffineConstraints< double > &constraintsNoneForce, distributedCPUVec< double > &configForceVectorLinFE)
+
void configForceLinFEFinalize()
+
void printAtomsForces()
prints the currently stored configurational forces on atoms and the Gaussian generator constant used ...
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition MemoryStorage.h:33
+
Categorizes atoms into bins for efficient solution of nuclear electrostatic self-potential....
Definition vselfBinsManager.h:36
+ + + + + +
MemorySpace
Definition MemorySpaceType.h:33
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
constexpr unsigned int C_num1DQuad()
1d quadrature rule order
Definition constants.h:39
+
constexpr unsigned int C_numCopies1DQuadNLPSP()
number of copies 1d quad rule non-local PSP
Definition constants.h:147
+
constexpr unsigned int C_numCopies1DQuadLPSP()
number of copies 1d quad rule local PSP
Definition constants.h:162
+ + +
+ + + + diff --git a/force_wfc_contractions_8h.html b/force_wfc_contractions_8h.html new file mode 100644 index 000000000..0e63f0677 --- /dev/null +++ b/force_wfc_contractions_8h.html @@ -0,0 +1,113 @@ + + + + + + + +DFT-FE: workspace/include/forceWfcContractions.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
forceWfcContractions.h File Reference
+
+ + + + + diff --git a/force_wfc_contractions_8h_source.html b/force_wfc_contractions_8h_source.html new file mode 100644 index 000000000..12a8a0366 --- /dev/null +++ b/force_wfc_contractions_8h_source.html @@ -0,0 +1,176 @@ + + + + + + + +DFT-FE: workspace/include/forceWfcContractions.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
forceWfcContractions.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#ifndef forceWfcContractions_H_
+
19#define forceWfcContractions_H_
+
20
+
21#include "headers.h"
+
22#include "dftParameters.h"
+
23#include "FEBasisOperations.h"
+
24#include "oncvClass.h"
+
25#include <memory>
+
26#include <BLASWrapper.h>
+
27
+
28namespace dftfe
+
29{
+
+
30 namespace force
+
31 {
+
32 template <dftfe::utils::MemorySpace memorySpace>
+
33 void
+ +
35 std::shared_ptr<
+ + +
38 const unsigned int densityQuadratureId,
+
39 const unsigned int nlpspQuadratureId,
+ + + + +
44 const dataTypes::number * X,
+
45 const unsigned int spinPolarizedFlag,
+
46 const unsigned int spinIndex,
+
47 const std::vector<std::vector<double>> &eigenValuesH,
+
48 const std::vector<std::vector<double>> &partialOccupanciesH,
+
49 const std::vector<double> & kPointCoordinates,
+
50 const unsigned int MLoc,
+
51 const unsigned int N,
+
52 const unsigned int numCells,
+
53 const unsigned int numQuads,
+
54 const unsigned int numQuadsNLP,
+ + + + + + +
61#endif
+
62 const MPI_Comm & mpiCommParent,
+
63 const MPI_Comm & interBandGroupComm,
+
64 const bool isPsp,
+
65 const bool isFloatingChargeForces,
+
66 const bool addEk,
+ +
68 } // namespace force
+
+
69} // namespace dftfe
+
70#endif
+ + +
Definition FEBasisOperations.h:85
+
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:35
+
Definition BLASWrapper.h:34
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ + +
void wfcContractionsForceKernelsAllH(std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, memorySpace > > &basisOperationsPtr, const unsigned int densityQuadratureId, const unsigned int nlpspQuadratureId, const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > &BLASWrapperPtr, std::shared_ptr< dftfe::oncvClass< dataTypes::number, memorySpace > > oncvClassPtr, const dataTypes::number *X, const unsigned int spinPolarizedFlag, const unsigned int spinIndex, const std::vector< std::vector< double > > &eigenValuesH, const std::vector< std::vector< double > > &partialOccupanciesH, const std::vector< double > &kPointCoordinates, const unsigned int MLoc, const unsigned int N, const unsigned int numCells, const unsigned int numQuads, const unsigned int numQuadsNLP, double *eshelbyTensorQuadValuesH, dataTypes::number *projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattenedH, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const bool isPsp, const bool isFloatingChargeForces, const bool addEk, const dftParameters &dftParams)
+
Definition pseudoPotentialToDftfeConverter.cc:34
+ +
+ + + + diff --git a/force_wfc_contractions_device_kernels_8h.html b/force_wfc_contractions_device_kernels_8h.html new file mode 100644 index 000000000..893e12520 --- /dev/null +++ b/force_wfc_contractions_device_kernels_8h.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: workspace/include/forceWfcContractionsDeviceKernels.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
forceWfcContractionsDeviceKernels.h File Reference
+
+ + + + + diff --git a/force_wfc_contractions_device_kernels_8h_source.html b/force_wfc_contractions_device_kernels_8h_source.html new file mode 100644 index 000000000..d2b2b851a --- /dev/null +++ b/force_wfc_contractions_device_kernels_8h_source.html @@ -0,0 +1,159 @@ + + + + + + + +DFT-FE: workspace/include/forceWfcContractionsDeviceKernels.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
forceWfcContractionsDeviceKernels.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#if defined(DFTFE_WITH_DEVICE)
+
19# ifndef forceWfcContractionsDeviceKernels_H_
+
20# define forceWfcContractionsDeviceKernels_H_
+
21
+
22namespace dftfe
+
23{
+
24 namespace forceDeviceKernels
+
25 {
+
26 template <typename ValueType>
+
27 void
+
28 nlpContractionContributionPsiIndex(
+
29 const unsigned int wfcBlockSize,
+
30 const unsigned int blockSizeNlp,
+
31 const unsigned int numQuadsNLP,
+
32 const unsigned int startingIdNlp,
+
33 const ValueType * projectorKetTimesVectorPar,
+
34 const ValueType * gradPsiOrPsiQuadValuesNLP,
+
35 const double * partialOccupancies,
+
36 const unsigned int *nonTrivialIdToElemIdMap,
+
37 const unsigned int *projecterKetTimesFlattenedVectorLocalIds,
+
38 ValueType * nlpContractionContribution);
+
39
+
40 template <typename ValueType>
+
41 void
+
42 computeELocWfcEshelbyTensorContributions(const unsigned int wfcBlockSize,
+
43 const unsigned int cellsBlockSize,
+
44 const unsigned int numQuads,
+
45 const ValueType * psiQuadValues,
+
46 const ValueType *gradPsiQuadValues,
+
47 const double * eigenValues,
+
48 const double *partialOccupancies,
+
49# ifdef USE_COMPLEX
+
50 const double kcoordx,
+
51 const double kcoordy,
+
52 const double kcoordz,
+
53# endif
+
54 double *eshelbyTensorContributions
+
55# ifdef USE_COMPLEX
+
56 ,
+
57 const bool addEk
+
58# endif
+
59 );
+
60
+
61
+
62 } // namespace forceDeviceKernels
+
63} // namespace dftfe
+
64# endif
+
65#endif
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/functions.html b/functions.html new file mode 100644 index 000000000..ab77dbd4d --- /dev/null +++ b/functions.html @@ -0,0 +1,148 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- a -

+
+ + + + diff --git a/functions_b.html b/functions_b.html new file mode 100644 index 000000000..91f4c28de --- /dev/null +++ b/functions_b.html @@ -0,0 +1,94 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + + + + + diff --git a/functions_c.html b/functions_c.html new file mode 100644 index 000000000..99d4430ed --- /dev/null +++ b/functions_c.html @@ -0,0 +1,259 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- c -

+
+ + + + diff --git a/functions_d.html b/functions_d.html new file mode 100644 index 000000000..43385c64a --- /dev/null +++ b/functions_d.html @@ -0,0 +1,793 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- d -

+
+ + + + diff --git a/functions_e.html b/functions_e.html new file mode 100644 index 000000000..30d5f1b06 --- /dev/null +++ b/functions_e.html @@ -0,0 +1,107 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- e -

+
+ + + + diff --git a/functions_enum.html b/functions_enum.html new file mode 100644 index 000000000..991fa55d3 --- /dev/null +++ b/functions_enum.html @@ -0,0 +1,85 @@ + + + + + + + +DFT-FE: Class Members - Enumerations + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all enums with links to the classes they belong to:
+
+ + + + diff --git a/functions_eval.html b/functions_eval.html new file mode 100644 index 000000000..f81eebd92 --- /dev/null +++ b/functions_eval.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: Class Members - Enumerator + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all enum values with links to the classes they belong to:
+
+ + + + diff --git a/functions_f.html b/functions_f.html new file mode 100644 index 000000000..3ccde23bd --- /dev/null +++ b/functions_f.html @@ -0,0 +1,116 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- f -

+
+ + + + diff --git a/functions_func.html b/functions_func.html new file mode 100644 index 000000000..3b4cd2a59 --- /dev/null +++ b/functions_func.html @@ -0,0 +1,130 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- a -

+
+ + + + diff --git a/functions_func_b.html b/functions_func_b.html new file mode 100644 index 000000000..65beb257c --- /dev/null +++ b/functions_func_b.html @@ -0,0 +1,88 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- b -

+
+ + + + diff --git a/functions_func_c.html b/functions_func_c.html new file mode 100644 index 000000000..29fb7348c --- /dev/null +++ b/functions_func_c.html @@ -0,0 +1,233 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- c -

+
+ + + + diff --git a/functions_func_d.html b/functions_func_d.html new file mode 100644 index 000000000..d812d768c --- /dev/null +++ b/functions_func_d.html @@ -0,0 +1,105 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- d -

+
+ + + + diff --git a/functions_func_e.html b/functions_func_e.html new file mode 100644 index 000000000..4e89004bb --- /dev/null +++ b/functions_func_e.html @@ -0,0 +1,103 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- e -

+
+ + + + diff --git a/functions_func_f.html b/functions_func_f.html new file mode 100644 index 000000000..e5f4f7859 --- /dev/null +++ b/functions_func_f.html @@ -0,0 +1,100 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- f -

+
+ + + + diff --git a/functions_func_g.html b/functions_func_g.html new file mode 100644 index 000000000..435641d3a --- /dev/null +++ b/functions_func_g.html @@ -0,0 +1,256 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- g -

+
+ + + + diff --git a/functions_func_h.html b/functions_func_h.html new file mode 100644 index 000000000..ab9b8d003 --- /dev/null +++ b/functions_func_h.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- h -

+
+ + + + diff --git a/functions_func_i.html b/functions_func_i.html new file mode 100644 index 000000000..bd4ba7a8a --- /dev/null +++ b/functions_func_i.html @@ -0,0 +1,148 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- i -

+
+ + + + diff --git a/functions_func_j.html b/functions_func_j.html new file mode 100644 index 000000000..6b45955f0 --- /dev/null +++ b/functions_func_j.html @@ -0,0 +1,87 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- j -

+
+ + + + diff --git a/functions_func_k.html b/functions_func_k.html new file mode 100644 index 000000000..cd02ca9c1 --- /dev/null +++ b/functions_func_k.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- k -

+
+ + + + diff --git a/functions_func_l.html b/functions_func_l.html new file mode 100644 index 000000000..8f9105bf8 --- /dev/null +++ b/functions_func_l.html @@ -0,0 +1,112 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- l -

+
+ + + + diff --git a/functions_func_m.html b/functions_func_m.html new file mode 100644 index 000000000..914083049 --- /dev/null +++ b/functions_func_m.html @@ -0,0 +1,118 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- m -

+
+ + + + diff --git a/functions_func_n.html b/functions_func_n.html new file mode 100644 index 000000000..6450ac69d --- /dev/null +++ b/functions_func_n.html @@ -0,0 +1,104 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- n -

+
+ + + + diff --git a/functions_func_o.html b/functions_func_o.html new file mode 100644 index 000000000..50279c949 --- /dev/null +++ b/functions_func_o.html @@ -0,0 +1,93 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + + + + + diff --git a/functions_func_p.html b/functions_func_p.html new file mode 100644 index 000000000..a541e01fe --- /dev/null +++ b/functions_func_p.html @@ -0,0 +1,99 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- p -

+
+ + + + diff --git a/functions_func_q.html b/functions_func_q.html new file mode 100644 index 000000000..475830756 --- /dev/null +++ b/functions_func_q.html @@ -0,0 +1,87 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- q -

+
+ + + + diff --git a/functions_func_r.html b/functions_func_r.html new file mode 100644 index 000000000..d4cf82aa0 --- /dev/null +++ b/functions_func_r.html @@ -0,0 +1,111 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- r -

+
+ + + + diff --git a/functions_func_s.html b/functions_func_s.html new file mode 100644 index 000000000..2e454ef30 --- /dev/null +++ b/functions_func_s.html @@ -0,0 +1,134 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- s -

+
+ + + + diff --git a/functions_func_t.html b/functions_func_t.html new file mode 100644 index 000000000..58647c9b2 --- /dev/null +++ b/functions_func_t.html @@ -0,0 +1,93 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- t -

+
+ + + + diff --git a/functions_func_u.html b/functions_func_u.html new file mode 100644 index 000000000..9d28b1277 --- /dev/null +++ b/functions_func_u.html @@ -0,0 +1,100 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- u -

+
+ + + + diff --git a/functions_func_v.html b/functions_func_v.html new file mode 100644 index 000000000..20558fc93 --- /dev/null +++ b/functions_func_v.html @@ -0,0 +1,89 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + + + + + diff --git a/functions_func_w.html b/functions_func_w.html new file mode 100644 index 000000000..8ec64aedf --- /dev/null +++ b/functions_func_w.html @@ -0,0 +1,95 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- w -

+
+ + + + diff --git a/functions_func_x.html b/functions_func_x.html new file mode 100644 index 000000000..93c94efec --- /dev/null +++ b/functions_func_x.html @@ -0,0 +1,95 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + + + + + diff --git a/functions_func_z.html b/functions_func_z.html new file mode 100644 index 000000000..589eab88b --- /dev/null +++ b/functions_func_z.html @@ -0,0 +1,93 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- z -

+
+ + + + diff --git a/functions_func_~.html b/functions_func_~.html new file mode 100644 index 000000000..8bebae145 --- /dev/null +++ b/functions_func_~.html @@ -0,0 +1,111 @@ + + + + + + + +DFT-FE: Class Members - Functions + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- ~ -

+
+ + + + diff --git a/functions_g.html b/functions_g.html new file mode 100644 index 000000000..7fa421ddb --- /dev/null +++ b/functions_g.html @@ -0,0 +1,266 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- g -

+
+ + + + diff --git a/functions_h.html b/functions_h.html new file mode 100644 index 000000000..9a22b1dea --- /dev/null +++ b/functions_h.html @@ -0,0 +1,94 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- h -

+
+ + + + diff --git a/functions_i.html b/functions_i.html new file mode 100644 index 000000000..18113db20 --- /dev/null +++ b/functions_i.html @@ -0,0 +1,164 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- i -

+
+ + + + diff --git a/functions_j.html b/functions_j.html new file mode 100644 index 000000000..02b534ba8 --- /dev/null +++ b/functions_j.html @@ -0,0 +1,87 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- j -

+
+ + + + diff --git a/functions_k.html b/functions_k.html new file mode 100644 index 000000000..c5627709f --- /dev/null +++ b/functions_k.html @@ -0,0 +1,97 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- k -

+
+ + + + diff --git a/functions_l.html b/functions_l.html new file mode 100644 index 000000000..53c54a64d --- /dev/null +++ b/functions_l.html @@ -0,0 +1,124 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- l -

+
+ + + + diff --git a/functions_m.html b/functions_m.html new file mode 100644 index 000000000..8e94a711d --- /dev/null +++ b/functions_m.html @@ -0,0 +1,162 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- m -

+
+ + + + diff --git a/functions_n.html b/functions_n.html new file mode 100644 index 000000000..7183dd4d8 --- /dev/null +++ b/functions_n.html @@ -0,0 +1,136 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- n -

+
+ + + + diff --git a/functions_o.html b/functions_o.html new file mode 100644 index 000000000..b8484bbc7 --- /dev/null +++ b/functions_o.html @@ -0,0 +1,105 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + + + + + diff --git a/functions_p.html b/functions_p.html new file mode 100644 index 000000000..a34846575 --- /dev/null +++ b/functions_p.html @@ -0,0 +1,113 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- p -

+
+ + + + diff --git a/functions_q.html b/functions_q.html new file mode 100644 index 000000000..3b0fcf20e --- /dev/null +++ b/functions_q.html @@ -0,0 +1,87 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- q -

+
+ + + + diff --git a/functions_r.html b/functions_r.html new file mode 100644 index 000000000..e011b9114 --- /dev/null +++ b/functions_r.html @@ -0,0 +1,139 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- r -

+
+ + + + diff --git a/functions_rela.html b/functions_rela.html new file mode 100644 index 000000000..26a837c3f --- /dev/null +++ b/functions_rela.html @@ -0,0 +1,87 @@ + + + + + + + +DFT-FE: Class Members - Related Symbols + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all related symbols with links to the classes they belong to:
+
+ + + + diff --git a/functions_s.html b/functions_s.html new file mode 100644 index 000000000..fbfba359c --- /dev/null +++ b/functions_s.html @@ -0,0 +1,169 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- s -

+
+ + + + diff --git a/functions_t.html b/functions_t.html new file mode 100644 index 000000000..689097e27 --- /dev/null +++ b/functions_t.html @@ -0,0 +1,116 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- t -

+
+ + + + diff --git a/functions_type.html b/functions_type.html new file mode 100644 index 000000000..7aec154d1 --- /dev/null +++ b/functions_type.html @@ -0,0 +1,95 @@ + + + + + + + +DFT-FE: Class Members - Typedefs + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all typedefs with links to the classes they belong to:
+
+ + + + diff --git a/functions_u.html b/functions_u.html new file mode 100644 index 000000000..112bf1564 --- /dev/null +++ b/functions_u.html @@ -0,0 +1,119 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- u -

+
+ + + + diff --git a/functions_v.html b/functions_v.html new file mode 100644 index 000000000..a949db154 --- /dev/null +++ b/functions_v.html @@ -0,0 +1,93 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + + + + + diff --git a/functions_vars.html b/functions_vars.html new file mode 100644 index 000000000..fb6a2c00a --- /dev/null +++ b/functions_vars.html @@ -0,0 +1,103 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- a -

+
+ + + + diff --git a/functions_vars_b.html b/functions_vars_b.html new file mode 100644 index 000000000..e876a2c79 --- /dev/null +++ b/functions_vars_b.html @@ -0,0 +1,91 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- b -

+
+ + + + diff --git a/functions_vars_c.html b/functions_vars_c.html new file mode 100644 index 000000000..912ef9d76 --- /dev/null +++ b/functions_vars_c.html @@ -0,0 +1,107 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- c -

+
+ + + + diff --git a/functions_vars_d.html b/functions_vars_d.html new file mode 100644 index 000000000..6216fbf6e --- /dev/null +++ b/functions_vars_d.html @@ -0,0 +1,771 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- d -

+
+ + + + diff --git a/functions_vars_e.html b/functions_vars_e.html new file mode 100644 index 000000000..31467aea0 --- /dev/null +++ b/functions_vars_e.html @@ -0,0 +1,89 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- e -

+
+ + + + diff --git a/functions_vars_f.html b/functions_vars_f.html new file mode 100644 index 000000000..e7fe4e9ce --- /dev/null +++ b/functions_vars_f.html @@ -0,0 +1,99 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + + + + + diff --git a/functions_vars_g.html b/functions_vars_g.html new file mode 100644 index 000000000..38c7cf982 --- /dev/null +++ b/functions_vars_g.html @@ -0,0 +1,93 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- g -

+
+ + + + diff --git a/functions_vars_h.html b/functions_vars_h.html new file mode 100644 index 000000000..923597f94 --- /dev/null +++ b/functions_vars_h.html @@ -0,0 +1,89 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- h -

+
+ + + + diff --git a/functions_vars_i.html b/functions_vars_i.html new file mode 100644 index 000000000..5cd3a918a --- /dev/null +++ b/functions_vars_i.html @@ -0,0 +1,100 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + + + + + diff --git a/functions_vars_k.html b/functions_vars_k.html new file mode 100644 index 000000000..8269a8653 --- /dev/null +++ b/functions_vars_k.html @@ -0,0 +1,92 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- k -

+
+ + + + diff --git a/functions_vars_l.html b/functions_vars_l.html new file mode 100644 index 000000000..a3a5d5114 --- /dev/null +++ b/functions_vars_l.html @@ -0,0 +1,96 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- l -

+
+ + + + diff --git a/functions_vars_m.html b/functions_vars_m.html new file mode 100644 index 000000000..26366b816 --- /dev/null +++ b/functions_vars_m.html @@ -0,0 +1,129 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- m -

+
+ + + + diff --git a/functions_vars_n.html b/functions_vars_n.html new file mode 100644 index 000000000..105ad76ac --- /dev/null +++ b/functions_vars_n.html @@ -0,0 +1,117 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- n -

+
+ + + + diff --git a/functions_vars_o.html b/functions_vars_o.html new file mode 100644 index 000000000..b380329de --- /dev/null +++ b/functions_vars_o.html @@ -0,0 +1,97 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- o -

+
+ + + + diff --git a/functions_vars_p.html b/functions_vars_p.html new file mode 100644 index 000000000..8d7eaeccc --- /dev/null +++ b/functions_vars_p.html @@ -0,0 +1,98 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + + + + + diff --git a/functions_vars_r.html b/functions_vars_r.html new file mode 100644 index 000000000..f9df99e92 --- /dev/null +++ b/functions_vars_r.html @@ -0,0 +1,110 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- r -

+
+ + + + diff --git a/functions_vars_s.html b/functions_vars_s.html new file mode 100644 index 000000000..7b219e4ab --- /dev/null +++ b/functions_vars_s.html @@ -0,0 +1,115 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- s -

+
+ + + + diff --git a/functions_vars_t.html b/functions_vars_t.html new file mode 100644 index 000000000..02dbe69df --- /dev/null +++ b/functions_vars_t.html @@ -0,0 +1,107 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- t -

+
+ + + + diff --git a/functions_vars_u.html b/functions_vars_u.html new file mode 100644 index 000000000..2ff1486f0 --- /dev/null +++ b/functions_vars_u.html @@ -0,0 +1,104 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- u -

+
+ + + + diff --git a/functions_vars_v.html b/functions_vars_v.html new file mode 100644 index 000000000..00c5f0f74 --- /dev/null +++ b/functions_vars_v.html @@ -0,0 +1,88 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- v -

+
+ + + + diff --git a/functions_vars_w.html b/functions_vars_w.html new file mode 100644 index 000000000..ac9aa4fe8 --- /dev/null +++ b/functions_vars_w.html @@ -0,0 +1,97 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- w -

+
+ + + + diff --git a/functions_vars_x.html b/functions_vars_x.html new file mode 100644 index 000000000..ea27ccf24 --- /dev/null +++ b/functions_vars_x.html @@ -0,0 +1,88 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- x -

+
+ + + + diff --git a/functions_vars_z.html b/functions_vars_z.html new file mode 100644 index 000000000..1f75192dd --- /dev/null +++ b/functions_vars_z.html @@ -0,0 +1,88 @@ + + + + + + + +DFT-FE: Class Members - Variables + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- z -

+
+ + + + diff --git a/functions_w.html b/functions_w.html new file mode 100644 index 000000000..6b61d3007 --- /dev/null +++ b/functions_w.html @@ -0,0 +1,107 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- w -

+
+ + + + diff --git a/functions_x.html b/functions_x.html new file mode 100644 index 000000000..f44eea601 --- /dev/null +++ b/functions_x.html @@ -0,0 +1,98 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + + + + + diff --git a/functions_z.html b/functions_z.html new file mode 100644 index 000000000..bcb903b4a --- /dev/null +++ b/functions_z.html @@ -0,0 +1,95 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + + + + + diff --git a/functions_~.html b/functions_~.html new file mode 100644 index 000000000..a39164fef --- /dev/null +++ b/functions_~.html @@ -0,0 +1,111 @@ + + + + + + + +DFT-FE: Class Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- ~ -

+
+ + + + diff --git a/geo_opt_cell_8h.html b/geo_opt_cell_8h.html new file mode 100644 index 000000000..a965ebcba --- /dev/null +++ b/geo_opt_cell_8h.html @@ -0,0 +1,110 @@ + + + + + + + +DFT-FE: workspace/include/geoOptCell.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
geoOptCell.h File Reference
+
+
+
#include "constants.h"
+#include "nonlinearSolverProblem.h"
+#include "nonLinearSolver.h"
+#include "dftBase.h"
+#include "dftfeWrapper.h"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::geoOptCell
 problem class for cell stress relaxation solver. More...
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/geo_opt_cell_8h_source.html b/geo_opt_cell_8h_source.html new file mode 100644 index 000000000..0ce6f16d9 --- /dev/null +++ b/geo_opt_cell_8h_source.html @@ -0,0 +1,301 @@ + + + + + + + +DFT-FE: workspace/include/geoOptCell.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
geoOptCell.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16
+
17#ifndef geoOptCell_H_
+
18#define geoOptCell_H_
+
19#include "constants.h"
+ +
21#include "nonLinearSolver.h"
+
22#include "dftBase.h"
+
23#include "dftfeWrapper.h"
+
24
+
25namespace dftfe
+
26{
+
27 /**
+
28 * @brief problem class for cell stress relaxation solver.
+
29 *
+
30 * @author Sambit Das
+
31 */
+
+ +
33 {
+
34 public:
+
35 /** @brief Constructor.
+
36 *
+
37 * @param _dftPtr pointer to dftClass
+
38 * @param mpi_comm_parent parent mpi_communicator
+
39 */
+ + +
42 const bool restart = false);
+
43
+
44 /**
+
45 * @brief initializes the data member d_relaxationFlags.
+
46 *
+
47 */
+
48 void
+
49 init(const std::string &restartPath);
+
50
+
51 /**
+
52 * @brief calls the cell stress relaxation solver.
+
53 *
+
54 * The Polak–Ribière nonlinear CG solver with secant based line search
+
55 * is used for the stress relaxation.
+
56 *
+
57 * @return int total geometry update calls
+
58 */
+
59 int
+
60 run();
+
61
+
62 /**
+
63 * @brief writes the current fem mesh.
+
64 *
+
65 */
+
66 void
+
67 writeMesh(std::string meshFileName);
+
68
+
69 /**
+
70 * @brief Obtain number of unknowns (depends on the stress relaxation constraint type).
+
71 *
+
72 * @return int Number of unknowns.
+
73 */
+
74 unsigned int
+ +
76
+
77 /**
+
78 * @brief Compute function gradient (stress).
+
79 *
+
80 * @param gradient STL vector for gradient values.
+
81 */
+
82 void
+
83 gradient(std::vector<double> &gradient);
+
84
+
85 /**
+
86 * @brief Update the strain tensor epsilon.
+
87 *
+
88 * The new strain tensor is epsilonNew= epsilon+ delta(epsilon). Since
+
89 * epsilon strain is already applied to the domain. The new strain to be
+
90 * applied to the domain is epsilonNew*inv(epsilon)
+
91 *
+
92 * @param solution delta(epsilon).
+
93 */
+
94 void
+
95 update(const std::vector<double> &solution,
+
96 const bool computeStress = true,
+
97 const bool useSingleAtomSolutionsInitialGuess = false);
+
98
+
99 /**
+
100 * @brief create checkpoint file for current domain bounding vectors and atomic coordinates.
+
101 *
+
102 */
+
103 void
+ +
105
+
106 /**
+
107 * @brief check for convergence.
+
108 *
+
109 */
+
110 bool
+
111 isConverged() const;
+
112
+
113 const MPI_Comm &
+ +
115
+
116 /// Not implemented
+
117 void
+
118 value(std::vector<double> &functionValue);
+
119
+
120 /// Not implemented
+
121 void
+
122 precondition(std::vector<double> &s, const std::vector<double> &gradient);
+
123
+
124 /// Not implemented
+
125 void
+
126 solution(std::vector<double> &solution);
+
127
+
128 /// Not implemented
+
129 std::vector<unsigned int>
+ +
131
+
132 private:
+
133 /// Relaxation flags which determine whether a particular stress component
+
134 /// is to be relaxed or not.
+
135 // The relaxation flags are determined based on the stress relaxation
+
136 // constraint type.
+
137 std::vector<unsigned int> d_relaxationFlags;
+
138
+
139 std::string d_restartPath;
+ + + + + +
145 /// total number of calls to update()
+ + +
148 /// current strain tensor applied on the domain
+
149 dealii::Tensor<2, 3, double> d_strainEpsilon;
+
150
+
151 /// pointer to dft class
+ +
153 std::unique_ptr<nonLinearSolver> d_nonLinearSolverPtr;
+
154
+
155 /// parallel communication objects
+ +
157 const unsigned int n_mpi_processes;
+
158 const unsigned int this_mpi_process;
+
159
+
160 /// conditional stream object
+
161 dealii::ConditionalOStream pcout;
+
162 };
+
+
163
+
164} // namespace dftfe
+
165
+
166#endif
+
abstract base class for dft
Definition dftBase.h:34
+
problem class for cell stress relaxation solver.
Definition geoOptCell.h:33
+
bool d_solverRestart
Definition geoOptCell.h:142
+
void solution(std::vector< double > &solution)
Not implemented.
+
double d_domainVolumeInitial
Definition geoOptCell.h:147
+
bool d_isScfRestart
Definition geoOptCell.h:143
+
std::vector< unsigned int > d_relaxationFlags
Definition geoOptCell.h:137
+
void value(std::vector< double > &functionValue)
Not implemented.
+
int run()
calls the cell stress relaxation solver.
+
dftBase * d_dftPtr
pointer to dft class
Definition geoOptCell.h:152
+
std::string d_solverRestartPath
Definition geoOptCell.h:140
+
int d_solver
Definition geoOptCell.h:144
+
bool d_isRestart
Definition geoOptCell.h:141
+
bool isConverged() const
check for convergence.
+
void save()
create checkpoint file for current domain bounding vectors and atomic coordinates.
+
dealii::Tensor< 2, 3, double > d_strainEpsilon
current strain tensor applied on the domain
Definition geoOptCell.h:149
+
geoOptCell(dftBase *dftPtr, const MPI_Comm &mpi_comm_parent, const bool restart=false)
Constructor.
+
dealii::ConditionalOStream pcout
conditional stream object
Definition geoOptCell.h:161
+
std::vector< unsigned int > getUnknownCountFlag() const
Not implemented.
+
const MPI_Comm & getMPICommunicator()
get MPI communicator.
+
std::string d_restartPath
Definition geoOptCell.h:139
+
int d_totalUpdateCalls
total number of calls to update()
Definition geoOptCell.h:146
+
unsigned int getNumberUnknowns() const
Obtain number of unknowns (depends on the stress relaxation constraint type).
+
void precondition(std::vector< double > &s, const std::vector< double > &gradient)
Not implemented.
+
void writeMesh(std::string meshFileName)
writes the current fem mesh.
+
std::unique_ptr< nonLinearSolver > d_nonLinearSolverPtr
Definition geoOptCell.h:153
+
const MPI_Comm mpi_communicator
parallel communication objects
Definition geoOptCell.h:156
+
void gradient(std::vector< double > &gradient)
Compute function gradient (stress).
+
void init(const std::string &restartPath)
initializes the data member d_relaxationFlags.
+
void update(const std::vector< double > &solution, const bool computeStress=true, const bool useSingleAtomSolutionsInitialGuess=false)
Update the strain tensor epsilon.
+
const unsigned int this_mpi_process
Definition geoOptCell.h:158
+
const unsigned int n_mpi_processes
Definition geoOptCell.h:157
+
Abstract class for solver functions.
Definition nonlinearSolverProblem.h:30
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ + + +
Definition pseudoPotentialToDftfeConverter.cc:34
+ + +
+ + + + diff --git a/geo_opt_ion_8h.html b/geo_opt_ion_8h.html new file mode 100644 index 000000000..77944b830 --- /dev/null +++ b/geo_opt_ion_8h.html @@ -0,0 +1,110 @@ + + + + + + + +DFT-FE: workspace/include/geoOptIon.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
geoOptIon.h File Reference
+
+
+
#include "constants.h"
+#include "nonlinearSolverProblem.h"
+#include "nonLinearSolver.h"
+#include "dftBase.h"
+#include "dftfeWrapper.h"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::geoOptIon
 problem class for atomic force relaxation solver. More...
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/geo_opt_ion_8h_source.html b/geo_opt_ion_8h_source.html new file mode 100644 index 000000000..68d740ffa --- /dev/null +++ b/geo_opt_ion_8h_source.html @@ -0,0 +1,292 @@ + + + + + + + +DFT-FE: workspace/include/geoOptIon.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
geoOptIon.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16
+
17#ifndef geoOptIon_H_
+
18#define geoOptIon_H_
+
19#include "constants.h"
+ +
21#include "nonLinearSolver.h"
+
22#include "dftBase.h"
+
23#include "dftfeWrapper.h"
+
24
+
25namespace dftfe
+
26{
+
27 /**
+
28 * @brief problem class for atomic force relaxation solver.
+
29 *
+
30 * @author Sambit Das
+
31 */
+
32
+
+ +
34 {
+
35 public:
+
36 /** @brief Constructor.
+
37 *
+
38 * @param _dftPtr pointer to dftClass
+
39 * @param mpi_comm_parent parent mpi_communicator
+
40 */
+ + +
43 const bool restart = false);
+
44
+
45 /**
+
46 * @brief initializes the data member d_relaxationFlags.
+
47 *
+
48 */
+
49 void
+
50 init(const std::string &restartPath);
+
51
+
52 /**
+
53 * @brief calls the atomic force relaxation solver.
+
54 *
+
55 * Currently we have option of one solver: Polak–Ribière nonlinear CG solver
+
56 * with secant based line search. In future releases, we will have more
+
57 * options like BFGS solver.
+
58 *
+
59 * @return int total geometry update calls
+
60 */
+
61 int
+
62 run();
+
63
+
64 /**
+
65 * @brief Obtain number of unknowns (total number of force components to be relaxed).
+
66 *
+
67 * @return int Number of unknowns.
+
68 */
+
69 unsigned int
+ +
71
+
72 /**
+
73 * @brief Compute function gradient (aka forces).
+
74 *
+
75 * @param gradient STL vector for gradient values.
+
76 */
+
77 void
+
78 gradient(std::vector<double> &gradient);
+
79
+
80 /**
+
81 * @brief Update atomic positions.
+
82 *
+
83 * @param solution displacement of the atoms with respect to their current position.
+
84 * The size of the solution vector is equal to the number of unknowns.
+
85 */
+
86 void
+
87 update(const std::vector<double> &solution,
+
88 const bool computeForces = true,
+
89 const bool useSingleAtomSolutionsInitialGuess = false);
+
90
+
91 /**
+
92 * @brief create checkpoint file for current domain bounding vectors and atomic coordinates.
+
93 *
+
94 */
+
95 void
+ +
97
+
98 /**
+
99 * @brief check for convergence.
+
100 *
+
101 */
+
102 bool
+
103 isConverged() const;
+
104
+
105 const MPI_Comm &
+ +
107
+
108 /// not implemented
+
109 void
+
110 value(std::vector<double> &functionValue);
+
111
+
112 /// not implemented
+
113 void
+
114 precondition(std::vector<double> &s, const std::vector<double> &gradient);
+
115
+
116 /// not implemented
+
117 void
+
118 solution(std::vector<double> &solution);
+
119
+
120 /// not implemented
+
121 std::vector<unsigned int>
+ +
123
+
124 private:
+
125 /// storage for relaxation flags and external force components for each
+
126 /// global atom. each atom has three flags corresponding to three components
+
127 /// (0- no relax, 1- relax) and three external force components
+
128 std::vector<unsigned int> d_relaxationFlags;
+
129 std::vector<double> d_externalForceOnAtom;
+
130 std::vector<std::vector<double>> d_atomLocationsInitial;
+
131 std::string d_restartPath;
+ + + + + +
137 /// maximum force component to be relaxed
+ +
139
+
140 /// total number of calls to update()
+ +
142
+
143 /// pointer to dft class
+ +
145 std::unique_ptr<nonLinearSolver> d_nonLinearSolverPtr;
+
146
+
147 /// parallel communication objects
+ +
149 const unsigned int n_mpi_processes;
+
150 const unsigned int this_mpi_process;
+
151
+
152 /// conditional stream object
+
153 dealii::ConditionalOStream pcout;
+
154 };
+
+
155
+
156} // namespace dftfe
+
157#endif
+
abstract base class for dft
Definition dftBase.h:34
+
problem class for atomic force relaxation solver.
Definition geoOptIon.h:34
+
bool d_solverRestart
Definition geoOptIon.h:134
+
void precondition(std::vector< double > &s, const std::vector< double > &gradient)
not implemented
+
std::vector< double > d_externalForceOnAtom
Definition geoOptIon.h:129
+
std::vector< std::vector< double > > d_atomLocationsInitial
Definition geoOptIon.h:130
+
bool isConverged() const
check for convergence.
+
bool d_isScfRestart
Definition geoOptIon.h:135
+
int d_totalUpdateCalls
total number of calls to update()
Definition geoOptIon.h:141
+
void gradient(std::vector< double > &gradient)
Compute function gradient (aka forces).
+
void solution(std::vector< double > &solution)
not implemented
+
const MPI_Comm & getMPICommunicator()
get MPI communicator.
+
std::unique_ptr< nonLinearSolver > d_nonLinearSolverPtr
Definition geoOptIon.h:145
+
int d_solver
Definition geoOptIon.h:136
+
const MPI_Comm mpi_communicator
parallel communication objects
Definition geoOptIon.h:148
+
const unsigned int this_mpi_process
Definition geoOptIon.h:150
+
bool d_isRestart
Definition geoOptIon.h:133
+
int run()
calls the atomic force relaxation solver.
+
dealii::ConditionalOStream pcout
conditional stream object
Definition geoOptIon.h:153
+
unsigned int getNumberUnknowns() const
Obtain number of unknowns (total number of force components to be relaxed).
+
std::string d_solverRestartPath
Definition geoOptIon.h:132
+
std::vector< unsigned int > getUnknownCountFlag() const
not implemented
+
dftBase * d_dftPtr
pointer to dft class
Definition geoOptIon.h:144
+
double d_maximumAtomForceToBeRelaxed
maximum force component to be relaxed
Definition geoOptIon.h:138
+
const unsigned int n_mpi_processes
Definition geoOptIon.h:149
+
void init(const std::string &restartPath)
initializes the data member d_relaxationFlags.
+
void update(const std::vector< double > &solution, const bool computeForces=true, const bool useSingleAtomSolutionsInitialGuess=false)
Update atomic positions.
+
geoOptIon(dftBase *dftPtr, const MPI_Comm &mpi_comm_parent, const bool restart=false)
Constructor.
+
std::string d_restartPath
Definition geoOptIon.h:131
+
std::vector< unsigned int > d_relaxationFlags
Definition geoOptIon.h:128
+
void save()
create checkpoint file for current domain bounding vectors and atomic coordinates.
+
void value(std::vector< double > &functionValue)
not implemented
+
Abstract class for solver functions.
Definition nonlinearSolverProblem.h:30
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ + + +
Definition pseudoPotentialToDftfeConverter.cc:34
+ + +
+ + + + diff --git a/geometry_optimization_class_8h.html b/geometry_optimization_class_8h.html new file mode 100644 index 000000000..19d73e170 --- /dev/null +++ b/geometry_optimization_class_8h.html @@ -0,0 +1,110 @@ + + + + + + + +DFT-FE: workspace/include/geometryOptimizationClass.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
geometryOptimizationClass.h File Reference
+
+
+
#include "constants.h"
+#include "headers.h"
+#include "dftBase.h"
+#include "dftfeWrapper.h"
+#include <geoOptCell.h>
+#include <geoOptIon.h>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  dftfe::geometryOptimizationClass
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/geometry_optimization_class_8h_source.html b/geometry_optimization_class_8h_source.html new file mode 100644 index 000000000..0ee8abe6e --- /dev/null +++ b/geometry_optimization_class_8h_source.html @@ -0,0 +1,200 @@ + + + + + + + +DFT-FE: workspace/include/geometryOptimizationClass.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
geometryOptimizationClass.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17// @author Nikhil Kodali
+
18//
+
19
+
20#ifndef geometryOptimizationClass_H_
+
21#define geometryOptimizationClass_H_
+
22#include "constants.h"
+
23#include "headers.h"
+
24#include "dftBase.h"
+
25#include "dftfeWrapper.h"
+
26#include <geoOptCell.h>
+
27#include <geoOptIon.h>
+
28
+
29namespace dftfe
+
30{
+
+ +
32 {
+
33 public:
+
34 /**
+
35 * @brief geometryOptimizationClass constructor: copy data from dftparameters to the memebrs of molecularDynamicsClass
+
36 *
+
37 *
+
38 * @param[in] dftBase *_dftBasePtr pointer to base class of dftClass
+
39 * @param[in] mpi_comm_parent parent mpi communicator
+
40 */
+ +
42 const std::string restartFilesPath,
+ +
44 const bool restart,
+
45 const int verbosity,
+
46 const bool useDevice);
+
47
+
48
+
49 void
+
50 init(const std::string parameter_file, const bool useDevice);
+
51
+
52 /**
+
53 * @brief runOpt:
+
54 *
+
55 *
+
56 */
+
57 void
+ +
59
+
60 private:
+
61 // pointers to dft class and optimization classes
+
62 std::unique_ptr<dftfeWrapper> d_dftfeWrapper;
+
63 std::unique_ptr<geoOptIon> d_geoOptIonPtr;
+
64 std::unique_ptr<geoOptCell> d_geoOptCellPtr;
+ +
66
+
67 // restart parameters
+
68 const bool d_isRestart;
+
69 const std::string d_restartFilesPath;
+
70 const int d_verbosity;
+
71 // status parameters
+ +
73 // parallel communication objects
+ +
75
+
76 // conditional stream object
+
77 dealii::ConditionalOStream pcout;
+
78 };
+
+
79} // namespace dftfe
+
80#endif
+
abstract base class for dft
Definition dftBase.h:34
+
Definition geometryOptimizationClass.h:32
+
geometryOptimizationClass(const std::string parameter_file, const std::string restartFilesPath, const MPI_Comm &mpi_comm_parent, const bool restart, const int verbosity, const bool useDevice)
geometryOptimizationClass constructor: copy data from dftparameters to the memebrs of molecularDynami...
+
const MPI_Comm d_mpiCommParent
Definition geometryOptimizationClass.h:74
+ +
std::unique_ptr< dftfeWrapper > d_dftfeWrapper
Definition geometryOptimizationClass.h:62
+
int d_cycle
Definition geometryOptimizationClass.h:72
+
const bool d_isRestart
Definition geometryOptimizationClass.h:68
+
const int d_verbosity
Definition geometryOptimizationClass.h:70
+
void init(const std::string parameter_file, const bool useDevice)
+
const std::string d_restartFilesPath
Definition geometryOptimizationClass.h:69
+
std::unique_ptr< geoOptCell > d_geoOptCellPtr
Definition geometryOptimizationClass.h:64
+
int d_status
Definition geometryOptimizationClass.h:72
+
dealii::ConditionalOStream pcout
Definition geometryOptimizationClass.h:77
+
int d_optMode
Definition geometryOptimizationClass.h:72
+
std::unique_ptr< geoOptIon > d_geoOptIonPtr
Definition geometryOptimizationClass.h:63
+
dftBase * d_dftPtr
Definition geometryOptimizationClass.h:65
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ + + + + + +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/globals.html b/globals.html new file mode 100644 index 000000000..f308033c3 --- /dev/null +++ b/globals.html @@ -0,0 +1,91 @@ + + + + + + + +DFT-FE: File Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+
+ + + + diff --git a/globals_defs.html b/globals_defs.html new file mode 100644 index 000000000..b2cc4efa7 --- /dev/null +++ b/globals_defs.html @@ -0,0 +1,91 @@ + + + + + + + +DFT-FE: File Members + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all macros with links to the files they belong to:
+
+ + + + diff --git a/headers_8h.html b/headers_8h.html new file mode 100644 index 000000000..3b2ecb381 --- /dev/null +++ b/headers_8h.html @@ -0,0 +1,108 @@ + + + + + + + +DFT-FE: workspace/include/headers.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
headers.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Namespaces

namespace  dftfe
 
+ + + + + + + +

+Typedefs

template<typename elem_type >
using dftfe::distributedCPUVec
 
template<typename NumberType >
using dftfe::distributedCPUMultiVec
 
+
+ + + + diff --git a/headers_8h_source.html b/headers_8h_source.html new file mode 100644 index 000000000..8182b4257 --- /dev/null +++ b/headers_8h_source.html @@ -0,0 +1,215 @@ + + + + + + + +DFT-FE: workspace/include/headers.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
headers.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17// @author Shiva Rudraraju (2016), Phani Motamarri (2016), Sambit Das (2018)
+
18//
+
19
+
20#ifndef headers_H_
+
21#define headers_H_
+
22
+
23#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
24// Include all deal.II header file
+
25# include <deal.II/base/conditional_ostream.h>
+
26# include <deal.II/base/function.h>
+
27# include <deal.II/base/logstream.h>
+
28# include <deal.II/base/point.h>
+
29# include <deal.II/base/quadrature.h>
+
30//# include <deal.II/base/quadrature_point_data.h>
+
31# include <deal.II/base/table.h>
+
32# include <deal.II/base/tensor_function.h>
+
33# include <deal.II/base/timer.h>
+
34# include <deal.II/base/utilities.h>
+
35
+
36# include <deal.II/distributed/grid_refinement.h>
+
37# include <deal.II/distributed/solution_transfer.h>
+
38# include <deal.II/distributed/tria.h>
+
39
+
40# include <deal.II/dofs/dof_accessor.h>
+
41# include <deal.II/dofs/dof_handler.h>
+
42# include <deal.II/dofs/dof_renumbering.h>
+
43# include <deal.II/dofs/dof_tools.h>
+
44
+
45# include <deal.II/fe/fe_q.h>
+
46# include <deal.II/fe/fe_system.h>
+
47# include <deal.II/fe/fe_values.h>
+
48# include <deal.II/fe/mapping_q1.h>
+
49
+
50# include <deal.II/grid/grid_generator.h>
+
51# include <deal.II/grid/grid_in.h>
+
52# include <deal.II/grid/grid_out.h>
+
53# include <deal.II/grid/grid_refinement.h>
+
54# include <deal.II/grid/grid_tools.h>
+
55# include <deal.II/grid/tria.h>
+
56# include <deal.II/grid/tria_accessor.h>
+
57# include <deal.II/grid/tria_iterator.h>
+
58
+
59# include <deal.II/lac/affine_constraints.h>
+
60# include <deal.II/lac/exceptions.h>
+
61# include <deal.II/lac/full_matrix.h>
+
62# include <deal.II/lac/la_parallel_vector.h>
+
63# include <deal.II/lac/lapack_full_matrix.h>
+
64# include <deal.II/lac/precondition.h>
+
65# include <deal.II/lac/solver_cg.h>
+
66# include <deal.II/lac/solver_gmres.h>
+
67# include <deal.II/lac/vector.h>
+
68
+
69# include <deal.II/matrix_free/fe_evaluation.h>
+
70# include <deal.II/matrix_free/matrix_free.h>
+
71
+
72# include <deal.II/numerics/data_out.h>
+
73# include <deal.II/numerics/error_estimator.h>
+
74# include <deal.II/numerics/matrix_tools.h>
+
75# include <deal.II/numerics/vector_tools.h>
+
76# ifdef USE_PETSC
+
77# include <deal.II/lac/slepc_solver.h>
+
78# endif
+
79# include <deal.II/base/config.h>
+
80
+
81# include <deal.II/base/smartpointer.h>
+
82# include <deal.II/base/types.h>
+
83
+
84# include <dftfeDataTypes.h>
+
85# include <MultiVector.h>
+
86
+
87// Include generic C++ headers
+
88# include <fstream>
+
89# include <iostream>
+
90# include <fenv.h>
+
91
+
92#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
93// commonly used typedefs used in dftfe go here
+
94namespace dftfe
+
95{
+
96 template <typename elem_type>
+ +
98 dealii::LinearAlgebra::distributed::Vector<elem_type,
+
99 dealii::MemorySpace::Host>;
+
100
+
101 template <typename NumberType>
+ + + +
105
+
106#ifdef DFTFE_WITH_DEVICE
+
107 template <typename NumberType>
+ + + +
111#endif
+
112} // namespace dftfe
+
113
+
114#endif
+ +
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition MultiVector.h:127
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ + + +
Definition pseudoPotentialToDftfeConverter.cc:34
+
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:97
+
+ + + + diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 000000000..7fd632996 --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,183 @@ + + + + + + + +DFT-FE: Class Hierarchy + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Cdftfe::AtomCenteredSphericalFunctionBase
 Cdftfe::AtomCenteredSphericalFunctionContainer
 Cdftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >
 Cdftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >
 Cdftfe::dealiiLinearSolverProblemAbstract class for linear solve problems to be used with the dealiiLinearSolver interface
 Cdftfe::dftBaseAbstract base class for dft
 Cdftfe::dftfeWrapperWrapper class for dftfe
 Cdftfe::dftParametersNamespace which declares the input parameters and the functions to parse them from the input parameter file
 Cdftfe::dftUtils::CompositeData
 Cdftfe::dftUtils::constraintMatrixInfoOverloads dealii's distribute and distribute_local_to_global functions associated with constraints class. Stores the dealii's constraint matrix data into STL vectors for faster memory access costs
 Cdftfe::dftUtils::MPIWriteOnFile
 Cdftfe::dftUtils::Pool
 Cdftfe::dispersionCorrectionCalculates dispersion correction to energy, force and stress
 Cdftfe::eigenSolverClassBase class for non-linear algebraic solver
 Cdftfe::elpaScalaManagerManager class for ELPA and ScaLAPACK
 Cdftfe::energyCalculatorCalculates the ksdft problem total energy and its components
 Cdftfe::excDensityBaseClass
 Cdftfe::excManager
 Cdftfe::excWavefunctionBaseClass
 Cdftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >Computes configurational forces in KSDFT
 Cdftfe::geometryOptimizationClass
 Cdftfe::linearAlgebra::BLASWrapper< memorySpace >
 Cdftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >
 Cdftfe::linearAlgebra::MultiVector< ValueType, memorySpace >An class template to encapsulate a MultiVector. A MultiVector is a collection of $N$ vectors belonging to the same finite-dimensional vector space, where usual notion of vector size denotes the dimension of the vector space. Note that this in the mathematical sense and not in the sense of an multi-dimensional array.The MultiVector is stored contiguously with the vector index being the fastest index, or in other words a matrix of size $M \times N$ in row major format with $M $ denoting the dimension of the vector space (size of individual vector)
 Cdftfe::linearSolverAbstract linear solver base class
 Cdftfe::meshMovementClassBase class to move triangulation vertices
 Cdftfe::MixingSchemeThis class performs the anderson mixing in a variable agnostic way This class takes can take different input variables as input in a std::vector format and computes the mixing coefficients These coefficients can then be used to compute the new variable at the start of the SCF
 Cdftfe::molecularDynamicsClass
 Cdftfe::nonLinearSolverBase class for non-linear algebraic solver
 Cdftfe::nonlinearSolverProblemAbstract class for solver functions
 Cdftfe::oncvClass< ValueType, memorySpace >
 Cdftfe::operatorDFTClass< memorySpace >Base class for building the DFT operator and the action of operator on a vector
 Cdftfe::ProcessGrid
 Cdftfe::pseudoUtils::Element
 Cdftfe::pseudoUtils::PeriodicTable
 Cdftfe::runParametersNamespace which declares the input outer run parameters
 Cdftfe::ScaLAPACKMatrix< NumberType >Scalapack wrapper adapted from dealii library and extended implementation to complex datatype
 Cdftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >Density symmetrization based on irreducible Brillouin zone calculation, only relevant for calculations using point group symmetries
 Cdftfe::triangulationManagerThis class generates and stores adaptive finite element meshes for the real-space dft problem
 Cdftfe::utils::MemoryManager< ValueType, memorySpace >
 Cdftfe::utils::MemoryManager< ValueType, MemorySpace::HOST >
 Cdftfe::utils::MemoryStorage< ValueType, memorySpace >
 Cdftfe::utils::MemoryTransfer< memorySpaceDst, memorySpaceSrc >
 Cdftfe::utils::MemoryTransfer< MemorySpace::HOST, MemorySpace::HOST >
 Cdftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >
 Cdftfe::utils::mpi::MPIPatternP2P< memorySpace >A class template to store the communication pattern (i.e., which entries/nodes to receive from which processor and which entries/nodes to send to which processor)
 Cdftfe::utils::mpi::MPIRequestersBase
 Cdftfe::utils::mpi::singlePrecType< T >
 Cdftfe::utils::mpi::singlePrecType< double >
 Cdftfe::utils::mpi::singlePrecType< std::complex< double > >
 Cdftfe::utils::MPICommunicatorP2PKernels< ValueType, memorySpace >
 Cdftfe::utils::OptimizedIndexSet< T >
 Cdftfe::vselfBinsManager< FEOrder, FEOrderElectro >Categorizes atoms into bins for efficient solution of nuclear electrostatic self-potential. template parameter FEOrderElectro is the finite element polynomial order
 Cdftfe::utils::MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOST >
 Cdftfe::utils::MemoryStorage< dataTypes::number, memorySpace >
 Cdftfe::utils::MemoryStorage< dftfe::global_size_type, dftfe::utils::MemorySpace::HOST >
 Cdftfe::utils::MemoryStorage< dftfe::global_size_type, memorySpace >
 Cdftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST >
 Cdftfe::utils::MemoryStorage< double, memorySpace >
 Cdftfe::utils::MemoryStorage< float, memorySpace >
 Cdftfe::utils::MemoryStorage< size_type, memorySpace >
 Cdftfe::utils::MemoryStorage< typename dftfe::utils::mpi::singlePrecType< ValueType >::type, memorySpace >
 Cdftfe::utils::MemoryStorage< ValueTypeBasisCoeff, memorySpace >
 Cdftfe::utils::MemoryStorage< ValueTypeBasisData, memorySpace >
 Cdftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace >
 Cdftfe::utils::OptimizedIndexSet< global_size_type >
+
+
+ + + + diff --git a/index.html b/index.html new file mode 100644 index 000000000..12c6bb118 --- /dev/null +++ b/index.html @@ -0,0 +1,141 @@ + + + + + + + +DFT-FE: DFT-FE : Density Functional Theory With Finite-Elements + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DFT-FE : Density Functional Theory With Finite-Elements
+
+
+

+

+About

+

DFT-FE is a C++ code for materials modeling from first principles using Kohn-Sham density functional theory. The origins of DFT-FE were in the Computational Materials Physics Group at the University of Michigan, Ann Arbor, with Vikram Gavini, Professor of Mechanical Engineering and Materials Science & Engineering, as the principal investigator broadly overseeing the effort. The current development efforts span across the Computational Materials Physics Group (Prof. Vikram Gavini, Dr. Sambit Das) at the University of Michigan and the MATRIX lab (Prof. Phani Motamarri) at the Indian Institute of Science.

+

DFT-FE is based on an adaptive finite-element discretization that handles pseudopotential and all-electron calculations in the same framework, and incorporates scalable and efficient solvers for the solution of the Kohn-Sham equations. Importantly, DFT-FE can handle periodic, semi-periodic and non-periodic boundary conditions and general geometries. DFT-FE can be run on massively parallel many-core CPU and hybrid CPU-GPU architectures (tested up to ~200,000 cores on many-core CPUs and ~24,000 GPUs on hybrid CPU-GPU architectures). DFT-FE is capable of fast and accurate large-scale pseudopotential DFT calculations, reaching 50,000-100,000 electrons.

+

+Installation instructions

+

DFT-FE code builds on top of the deal.II library for everything that has to do with finite elements, geometries, meshes, etc., and, through deal.II on p4est for parallel adaptive mesh handling. The steps to install the necessary dependencies and DFT-FE itself are described in the Installation section of the DFT-FE manual (compile doc/manual/manual.tex or download the development version manual here).

+

We have created several shell based installation scripts for the development version of DFT-FE (publicGithubDevelop branch) on various machines:

+

+Running DFT-FE

+

Instructions on how to run DFT-FE including demo examples can also be found in the Running DFT-FE section of the manual (compile doc/manual/manual.tex or download the development version manual here). Beyond the demo examples in the manual, we also refer to our benchmarks repository which contains several accuracy and performance benchmarks on a range of system sizes.

+

+Contributing to DFT-FE

+

Learn more about contributing to DFT-FE's development here.

+

+More information

+
    +
  • See the official website for information on code capabilities, appropriate referencing of the code, acknowledgements, and news related to DFT-FE.
  • +
  • See Doxygen generated documentation.
  • +
  • For questions about DFT-FE, installation, bugs, etc., use the DFT-FE discussion forum.
  • +
  • For latest news, updates, and release announcements about DFT-FE please send an email to dft-f.nosp@m.e.ad.nosp@m.min@u.nosp@m.mich.nosp@m..edu, and we will add you to our announcement mailing list.
  • +
  • DFT-FE is primarily based on the deal.II library. If you have particular questions about deal.II, use the deal.II discussion forum.
  • +
  • If you have specific questions about DFT-FE that are not suitable for the public and archived mailing lists, you can contact the following: +
  • +
  • The following people have significantly contributed either in the past or current and advanced DFT-FE's goals: (All the underlying lists are in alphabetical order based on last name)
      +
    • Mentors/Development leads
        +
      • Dr. Sambit Das (University of Michigan Ann Arbor, USA)
      • +
      • Prof. Vikram Gavini (University of Michigan Ann Arbor, USA)
      • +
      • Prof. Phani Motamarri (Indian Institute of Science, India)
      • +
      +
    • +
    • Principal developers
      +
        +
      • Dr. Sambit Das (University of Michigan Ann Arbor, USA)
      • +
      • Prof. Phani Motamarri (Indian Institute of Science, India)
      • +
      +
    • +
    +
  • +
  • A complete list of the many authors that have contributed to DFT-FE can be found at [authors](authors).
    +
  • +
+

+License

+

DFT-FE is published under LGPL v2.1 or newer.

+
+ +
+ + + + diff --git a/jquery.js b/jquery.js new file mode 100644 index 000000000..1dffb65b5 --- /dev/null +++ b/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/kerker_solver_problem_8h.html b/kerker_solver_problem_8h.html new file mode 100644 index 000000000..8883b4d66 --- /dev/null +++ b/kerker_solver_problem_8h.html @@ -0,0 +1,108 @@ + + + + + + + +DFT-FE: workspace/include/kerkerSolverProblem.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
kerkerSolverProblem.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::kerkerSolverProblem< FEOrderElectro >
 poisson solver problem class template. template parameter FEOrderElectro is the finite element polynomial order for electrostatics More...
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/kerker_solver_problem_8h_source.html b/kerker_solver_problem_8h_source.html new file mode 100644 index 000000000..60c22d45a --- /dev/null +++ b/kerker_solver_problem_8h_source.html @@ -0,0 +1,335 @@ + + + + + + + +DFT-FE: workspace/include/kerkerSolverProblem.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
kerkerSolverProblem.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2019-2020 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18
+ + +
21#include <FEBasisOperations.h>
+
22#ifndef kerkerSolverProblem_H_
+
23# define kerkerSolverProblem_H_
+
24
+
25namespace dftfe
+
26{
+
27 /**
+
28 * @brief poisson solver problem class template. template parameter FEOrderElectro
+
29 * is the finite element polynomial order for electrostatics
+
30 *
+
31 * @author Phani Motamarri
+
32 */
+
33 template <unsigned int FEOrderElectro>
+
+ +
35 {
+
36 public:
+
37 /// Constructor
+ + +
40
+
41
+
42
+
43 /**
+
44 * @brief initialize the matrix-free data structures
+
45 *
+
46 * @param matrixFreeData structure to hold quadrature rule, constraints vector and appropriate dofHandler
+
47 * @param constraintMatrix to hold constraints in the given problem
+
48 * @param x vector to be initialized using matrix-free object
+
49 *
+
50 */
+
51 void
+
52 init(std::shared_ptr<
+ +
54 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
+ + + + + + +
61
+
62
+
63
+
64 /**
+
65 * @brief reinitialize data structures .
+
66 *
+
67 * @param x vector to store initial guess and solution
+
68 * @param gradResidualValues stores the gradient of difference of input electron-density and output electron-density
+
69 * @param kerkerMixingParameter used in Kerker mixing scheme which usually represents Thomas Fermi wavevector (k_{TF}**2).
+
70 *
+
71 */
+
72 void
+ + + + +
77
+
78
+
79 /**
+
80 * @brief get the reference to x field
+
81 *
+
82 * @return reference to x field. Assumes x field data structure is already initialized
+
83 */
+ + +
86
+
87 /**
+
88 * @brief Compute A matrix multipled by x.
+
89 *
+
90 */
+
91 void
+ +
93
+
94 /**
+
95 * @brief Compute right hand side vector for the problem Ax = rhs.
+
96 *
+
97 * @param rhs vector for the right hand side values
+
98 */
+
99 void
+ +
101
+
102 /**
+
103 * @brief Jacobi preconditioning.
+
104 *
+
105 */
+
106 void
+ + +
109 const double omega) const;
+
110
+
111 /**
+
112 * @brief distribute x to the constrained nodes.
+
113 *
+
114 */
+
115 void
+ +
117
+
118
+
119 /// function needed by dealii to mimic SparseMatrix for Jacobi
+
120 /// preconditioning
+
121 void
+
+
122 subscribe(std::atomic<bool> *const validity,
+
123 const std::string & identifier = "") const {};
+
+
124
+
125 /// function needed by dealii to mimic SparseMatrix for Jacobi
+
126 /// preconditioning
+
127 void
+
+
128 unsubscribe(std::atomic<bool> *const validity,
+
129 const std::string & identifier = "") const {};
+
+
130
+
131 /// function needed by dealii to mimic SparseMatrix
+
132 bool
+
+
133 operator!=(double val) const
+
134 {
+
135 return true;
+
136 };
+
+
137
+
138 private:
+
139 /**
+
140 * @brief required for the cell_loop operation in dealii's MatrixFree class
+
141 *
+
142 */
+
143 void
+
144 AX(const dealii::MatrixFree<3, double> & matrixFreeData,
+ + +
147 const std::pair<unsigned int, unsigned int> &cell_range) const;
+
148
+
149
+
150 /**
+
151 * @brief Compute the diagonal of A.
+
152 *
+
153 */
+
154 void
+ +
156
+
157
+
158 /// storage for diagonal of the A matrix
+ +
160
+
161
+
162 /// pointer to the x vector being solved for
+ +
164
+
165 // kerker mixing constant
+
166 double d_gamma;
+
167
+
168 /// matrix free index required to access the DofHandler and
+
169 /// dealii::AffineConstraints<double> objects corresponding to the problem
+ +
171
+
172 /// matrix free quadrature index
+ +
174
+
175
+
176 /// pointer to electron density cell and grad residual data
+ + +
179 const dealii::DoFHandler<3> * d_dofHandlerPRefinedPtr;
+
180 const dealii::AffineConstraints<double> *d_constraintMatrixPRefinedPtr;
+
181 const dealii::MatrixFree<3, double> * d_matrixFreeDataPRefinedPtr;
+
182 std::shared_ptr<
+
183 dftfe::basis::
+
184 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
+ +
186
+
187
+ + +
190 const unsigned int n_mpi_processes;
+
191 const unsigned int this_mpi_process;
+
192 dealii::ConditionalOStream pcout;
+
193 };
+
+
194
+
195} // namespace dftfe
+
196#endif // kerkerSolverProblem_H_
+ +
Abstract class for linear solve problems to be used with the dealiiLinearSolver interface.
Definition dealiiLinearSolverProblem.h:31
+
poisson solver problem class template. template parameter FEOrderElectro is the finite element polyno...
Definition kerkerSolverProblem.h:35
+
const MPI_Comm mpi_communicator
Definition kerkerSolverProblem.h:189
+
void vmult(distributedCPUVec< double > &Ax, distributedCPUVec< double > &x)
Compute A matrix multipled by x.
+
distributedCPUVec< double > * d_xPtr
pointer to the x vector being solved for
Definition kerkerSolverProblem.h:163
+
void distributeX()
distribute x to the constrained nodes.
+
dealii::ConditionalOStream pcout
Definition kerkerSolverProblem.h:192
+
void reinit(distributedCPUVec< double > &x, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &quadPointValues)
reinitialize data structures .
+
void AX(const dealii::MatrixFree< 3, double > &matrixFreeData, distributedCPUVec< double > &dst, const distributedCPUVec< double > &src, const std::pair< unsigned int, unsigned int > &cell_range) const
required for the cell_loop operation in dealii's MatrixFree class
+
void computeDiagonalA()
Compute the diagonal of A.
+
kerkerSolverProblem(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain)
Constructor.
+
void subscribe(std::atomic< bool > *const validity, const std::string &identifier="") const
Definition kerkerSolverProblem.h:122
+
void precondition_Jacobi(distributedCPUVec< double > &dst, const distributedCPUVec< double > &src, const double omega) const
Jacobi preconditioning.
+
distributedCPUVec< double > & getX()
get the reference to x field
+
const unsigned int n_mpi_processes
Definition kerkerSolverProblem.h:190
+
const dealii::MatrixFree< 3, double > * d_matrixFreeDataPRefinedPtr
Definition kerkerSolverProblem.h:181
+
std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > d_basisOperationsPtr
Definition kerkerSolverProblem.h:185
+
bool operator!=(double val) const
function needed by dealii to mimic SparseMatrix
Definition kerkerSolverProblem.h:133
+
unsigned int d_matrixFreeQuadratureComponent
matrix free quadrature index
Definition kerkerSolverProblem.h:173
+
void init(std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, dealii::AffineConstraints< double > &constraintMatrix, distributedCPUVec< double > &x, double kerkerMixingParameter, const unsigned int matrixFreeVectorComponent, const unsigned int matrixFreeQuadratureComponent)
initialize the matrix-free data structures
+
const unsigned int this_mpi_process
Definition kerkerSolverProblem.h:191
+
distributedCPUVec< double > d_diagonalA
storage for diagonal of the A matrix
Definition kerkerSolverProblem.h:159
+
double d_gamma
Definition kerkerSolverProblem.h:166
+
const dealii::DoFHandler< 3 > * d_dofHandlerPRefinedPtr
Definition kerkerSolverProblem.h:179
+
void computeRhs(distributedCPUVec< double > &rhs)
Compute right hand side vector for the problem Ax = rhs.
+
const dealii::AffineConstraints< double > * d_constraintMatrixPRefinedPtr
Definition kerkerSolverProblem.h:180
+
const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > * d_residualQuadValuesPtr
pointer to electron density cell and grad residual data
Definition kerkerSolverProblem.h:178
+
unsigned int d_matrixFreeVectorComponent
Definition kerkerSolverProblem.h:170
+
void unsubscribe(std::atomic< bool > *const validity, const std::string &identifier="") const
Definition kerkerSolverProblem.h:128
+
const MPI_Comm d_mpiCommParent
Definition kerkerSolverProblem.h:188
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+
Definition MemoryStorage.h:33
+ +
Definition FEBasisOperations.h:31
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:97
+ +
+ + + + diff --git a/kerker_solver_problem_device_8h.html b/kerker_solver_problem_device_8h.html new file mode 100644 index 000000000..e5385b28d --- /dev/null +++ b/kerker_solver_problem_device_8h.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: workspace/include/kerkerSolverProblemDevice.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
kerkerSolverProblemDevice.h File Reference
+
+ + + + + diff --git a/kerker_solver_problem_device_8h_source.html b/kerker_solver_problem_device_8h_source.html new file mode 100644 index 000000000..bde4e6425 --- /dev/null +++ b/kerker_solver_problem_device_8h_source.html @@ -0,0 +1,356 @@ + + + + + + + +DFT-FE: workspace/include/kerkerSolverProblemDevice.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
kerkerSolverProblemDevice.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2019-2020 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18
+
19
+
20#if defined(DFTFE_WITH_DEVICE)
+
21
+
22# ifndef kerkerSolverProblemDevice_H_
+
23# define kerkerSolverProblemDevice_H_
+
24
+ +
26# include <triangulationManager.h>
+ +
28# include <deviceKernelsGeneric.h>
+
29# include <MemoryStorage.h>
+
30# include <dftUtils.h>
+
31# include <FEBasisOperations.h>
+
32
+
33
+
34namespace dftfe
+
35{
+
36 /**
+
37 * @brief helmholtz solver problem class template. template parameter FEOrderElectro
+
38 * is the finite element polynomial order for electrostatics
+
39 *
+
40 * @author Gourab Panigrahi
+
41 */
+
42 template <unsigned int FEOrderElectro>
+
43 class kerkerSolverProblemDevice : public linearSolverProblemDevice
+
44 {
+
45 public:
+
46 /// Constructor
+
47 kerkerSolverProblemDevice(const MPI_Comm &mpi_comm_parent,
+
48 const MPI_Comm &mpi_comm_domain);
+
49
+
50
+
51 /**
+
52 * @brief initialize the matrix-free data structures
+
53 *
+
54 * @param matrixFreeData structure to hold quadrature rule, constraints vector and appropriate dofHandler
+
55 * @param constraintMatrix to hold constraints in the given problem
+
56 * @param x vector to be initialized using matrix-free object
+
57 *
+
58 */
+
59 void
+
60 init(
+
61 std::shared_ptr<
+ +
63 FEBasisOperations<double, double, dftfe::utils::MemorySpace::DEVICE>>
+
64 & basisOperationsPtr,
+
65 dealii::AffineConstraints<double> &constraintMatrix,
+
66 distributedCPUVec<double> & x,
+
67 double kerkerMixingParameter,
+
68 const unsigned int matrixFreeVectorComponent,
+
69 const unsigned int matrixFreeQuadratureComponent);
+
70
+
71
+
72 /**
+
73 * @brief reinitialize data structures .
+
74 *
+
75 * @param x vector to store initial guess and solution
+
76 * @param gradResidualValues stores the gradient of difference of input electron-density and output electron-density
+
77 * @param kerkerMixingParameter used in Kerker mixing scheme which usually represents Thomas Fermi wavevector (k_{TF}**2).
+
78 *
+
79 */
+
80 void
+
81 reinit(
+
82 distributedCPUVec<double> &x,
+ +
84 &quadPointValues);
+
85
+
86
+
87 /**
+
88 * @brief get the reference to x field
+
89 *
+
90 * @return reference to x field. Assumes x field data structure is already initialized
+
91 */
+
92 distributedDeviceVec<double> &
+
93 getX();
+
94
+
95
+
96 /**
+
97 * @brief get the reference to Preconditioner
+
98 *
+
99 * @return reference to Preconditioner
+
100 */
+
101 distributedDeviceVec<double> &
+
102 getPreconditioner();
+
103
+
104
+
105 /**
+
106 * @brief Compute A matrix multipled by x.
+
107 *
+
108 */
+
109 void
+
110 computeAX(distributedDeviceVec<double> &Ax,
+
111 distributedDeviceVec<double> &x);
+
112
+
113
+
114 void
+
115 setX();
+
116
+
117
+
118 /**
+
119 * @brief Compute right hand side vector for the problem Ax = rhs.
+
120 *
+
121 * @param rhs vector for the right hand side values
+
122 */
+
123 void
+
124 computeRhs(distributedCPUVec<double> &rhs);
+
125
+
126
+
127 /**
+
128 * @brief distribute x to the constrained nodes.
+
129 *
+
130 */
+
131 void
+
132 distributeX();
+
133
+
134
+
135 /**
+
136 * @brief Copies x from Device to Host
+
137 *
+
138 */
+
139 void
+
140 copyXfromDeviceToHost();
+
141
+
142
+
143 /// function needed by dealii to mimic SparseMatrix for Jacobi
+
144 /// preconditioning
+
145 void
+
146 subscribe(std::atomic<bool> *const validity,
+
147 const std::string & identifier = "") const {};
+
148
+
149
+
150 /// function needed by dealii to mimic SparseMatrix for Jacobi
+
151 /// preconditioning
+
152 void
+
153 unsubscribe(std::atomic<bool> *const validity,
+
154 const std::string & identifier = "") const {};
+
155
+
156
+
157 /// function needed by dealii to mimic SparseMatrix
+
158 bool
+
159 operator!=(double val) const
+
160 {
+
161 return true;
+
162 };
+
163
+
164
+
165 private:
+
166 /**
+
167 * @brief Sets up the matrixfree shapefunction, gradient, jacobian and map for matrixfree computeAX
+
168 *
+
169 */
+
170 void
+
171 setupMatrixFree();
+
172
+
173 /**
+
174 * @brief Sets up the constraints matrix
+
175 *
+
176 */
+
177 void
+
178 setupconstraints();
+
179
+
180 /**
+
181 * @brief Compute the diagonal of A.
+
182 *
+
183 */
+
184 void
+
185 computeDiagonalA();
+
186
+
187
+
188 /// storage for diagonal of the A matrix
+
189 distributedCPUVec<double> d_diagonalA;
+
190 distributedDeviceVec<double> d_diagonalAdevice;
+
191
+
192 /// pointer to the x vector being solved for
+
193 distributedCPUVec<double> *d_xPtr;
+
194
+
195 /// Device x vector being solved for
+
196 distributedDeviceVec<double> d_xDevice;
+
197
+
198 // number of cells local to each mpi task, number of degrees of freedom
+
199 // locally owned and total degrees of freedom including ghost
+
200 int d_nLocalCells, d_xLocalDof, d_xLen;
+
201
+
202 // kerker mixing constant
+
203 double d_gamma;
+
204
+
205 // shape function value, gradient, jacobian and map for matrixfree
+ +
207 d_shapeFunction, d_jacobianFactor;
+ +
209
+
210 // Pointers to shape function value, gradient, jacobian and map for
+
211 // matrixfree
+
212 double *d_shapeFunctionPtr;
+
213 double *d_jacobianFactorPtr;
+
214 int * d_mapPtr;
+
215
+
216 // constraints
+
217 dftUtils::constraintMatrixInfoDevice d_constraintsTotalPotentialInfo;
+
218
+
219 /// matrix free index required to access the DofHandler and
+
220 /// dealii::AffineConstraints<double> objects corresponding to the problem
+
221 unsigned int d_matrixFreeVectorComponent;
+
222
+
223 /// matrix free quadrature index
+
224 unsigned int d_matrixFreeQuadratureComponent;
+
225
+
226
+
227 /// pointer to electron density cell and grad residual data
+ +
229 * d_residualQuadValuesPtr;
+
230 const dealii::DoFHandler<3> * d_dofHandlerPRefinedPtr;
+
231 const dealii::AffineConstraints<double> *d_constraintMatrixPRefinedPtr;
+
232 const dealii::MatrixFree<3, double> * d_matrixFreeDataPRefinedPtr;
+
233 std::shared_ptr<
+
234 dftfe::basis::
+
235 FEBasisOperations<double, double, dftfe::utils::MemorySpace::DEVICE>>
+
236 d_basisOperationsPtr;
+
237
+
238
+
239
+
240 const MPI_Comm d_mpiCommParent;
+
241 const MPI_Comm mpi_communicator;
+
242 const unsigned int n_mpi_processes;
+
243 const unsigned int this_mpi_process;
+
244 dealii::ConditionalOStream pcout;
+
245 };
+
246
+
247} // namespace dftfe
+
248# endif // kerkerSolverProblemDevice_H_
+
249#endif
+ + +
virtual void init(const std::vector< double > &kPointCoordinates, const std::vector< double > &kPointWeights)=0
+
Definition MemoryStorage.h:33
+ + + + +
Definition FEBasisOperations.h:31
+
MemorySpace
Definition MemorySpaceType.h:33
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+
dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
Definition headers.h:97
+ +
+ + + + diff --git a/lapack__support_8h.html b/lapack__support_8h.html new file mode 100644 index 000000000..78c0dfd27 --- /dev/null +++ b/lapack__support_8h.html @@ -0,0 +1,177 @@ + + + + + + + +DFT-FE: workspace/include/lapack_support.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
lapack_support.h File Reference
+
+
+
#include "headers.h"
+
+

Go to the source code of this file.

+ + + + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::types
 
namespace  dftfe::LAPACKSupport
 
+ + + +

+Typedefs

using dftfe::types::blas_int = int
 
+ + + + + +

+Enumerations

enum  dftfe::LAPACKSupport::State {
+  dftfe::LAPACKSupport::matrix +, dftfe::LAPACKSupport::inverse_matrix +, dftfe::LAPACKSupport::lu +, dftfe::LAPACKSupport::cholesky +,
+  dftfe::LAPACKSupport::eigenvalues +, dftfe::LAPACKSupport::svd +, dftfe::LAPACKSupport::inverse_svd +, dftfe::LAPACKSupport::unusable = 0x8000 +
+ }
 
enum  dftfe::LAPACKSupport::Property {
+  dftfe::LAPACKSupport::general = 0 +, dftfe::LAPACKSupport::hermitian = 1 +, dftfe::LAPACKSupport::upper_triangular = 2 +, dftfe::LAPACKSupport::lower_triangular = 4 +,
+  dftfe::LAPACKSupport::diagonal = 6 +, dftfe::LAPACKSupport::hessenberg = 8 +
+ }
 
+ + + + + + + + + + + + + +

+Functions

const chardftfe::LAPACKSupport::state_name (State s)
 
const chardftfe::LAPACKSupport::property_name (const Property s)
 
 dftfe::LAPACKSupport::DeclException2 (ExcErrorCode, std::string, types::blas_int,<< "The function "<< arg1<< " returned with an error code "<< arg2)
 
 dftfe::LAPACKSupport::DeclException1 (ExcState, State,<< "The function cannot be called while the matrix is in state "<< state_name(arg1))
 
 dftfe::LAPACKSupport::DeclException1 (ExcProperty, Property,<< "The function cannot be called with a "<< property_name(arg1)<< " matrix.")
 
 dftfe::LAPACKSupport::DeclException1 (ExcMissing, std::string,<< "When you ran 'cmake' during installation of deal.II, "<< "no suitable installation of the BLAS or LAPACK library could "<< "be found. Consequently, the function <"<< arg1<< "> can not be called. Refer to the doc/readme.html "<< "file for information on how to ensure that deal.II "<< "picks up an existing BLAS and LAPACK installation at "<< "configuration time.")
 
+ + + + + + + + + + + + + + + + + + + + + +

+Variables

static const char dftfe::LAPACKSupport::A = 'A'
 
static const char dftfe::LAPACKSupport::N = 'N'
 
static const char dftfe::LAPACKSupport::O = 'O'
 
static const char dftfe::LAPACKSupport::T = 'T'
 
static const char dftfe::LAPACKSupport::C = 'C'
 
static const char dftfe::LAPACKSupport::U = 'U'
 
static const char dftfe::LAPACKSupport::L = 'L'
 
static const char dftfe::LAPACKSupport::V = 'V'
 
static const types::blas_int dftfe::LAPACKSupport::zero = 0
 
static const types::blas_int dftfe::LAPACKSupport::one = 1
 
+
+ + + + diff --git a/lapack__support_8h_source.html b/lapack__support_8h_source.html new file mode 100644 index 000000000..86a5063f4 --- /dev/null +++ b/lapack__support_8h_source.html @@ -0,0 +1,372 @@ + + + + + + + +DFT-FE: workspace/include/lapack_support.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
lapack_support.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (C) 2005 - 2018 by the deal.II authors
+
4//
+
5// This file is part of the deal.II library.
+
6//
+
7// The deal.II library is free software; you can use it, redistribute
+
8// it, and/or modify it under the terms of the GNU Lesser General
+
9// Public License as published by the Free Software Foundation; either
+
10// version 2.1 of the License, or (at your option) any later version.
+
11// The full text of the license can be found in the file LICENSE.md at
+
12// the top level directory of deal.II.
+
13//
+
14// ---------------------------------------------------------------------
+
15
+
16#ifndef dftfe_lapack_support_h
+
17#define dftfe_lapack_support_h
+
18
+
19
+
20#include "headers.h"
+
21
+
22namespace dftfe
+
23{
+
+
24 namespace types
+
25 {
+
26#ifdef LAPACK_WITH_64BIT_BLAS_INDICES
+
27 /**
+
28 * Integer type in BLAS.
+
29 */
+
30 using blas_int = long long;
+
31#else
+
32 /**
+
33 * Integer type in BLAS.
+
34 */
+
35 using blas_int = int;
+
36#endif
+
37 } // namespace types
+
+
38
+
39 /**
+
40 * A namespace containing constants, exceptions, enumerations, and other
+
41 * utilities used by the deal.II LAPACK bindings.
+
42 */
+
+
43 namespace LAPACKSupport
+
44 {
+
45 /**
+
46 * Most of the LAPACK functions one can apply to a matrix (e.g., by calling
+
47 * the member functions of this class) change its content in some ways. For
+
48 * example, they may invert the matrix, or may replace it by a matrix whose
+
49 * columns represent the eigenvectors of the original content of the matrix.
+
50 * The elements of this enumeration are therefore used to track what is
+
51 * currently being stored by this object.
+
52 */
+
+
53 enum State
+
54 {
+
55 /// Contents is actually a matrix.
+ +
57 /// Contents is the inverse of a matrix.
+ +
59 /// Contents is an LU decomposition.
+ +
61 /// Contents is a Cholesky decomposition.
+ +
63 /// Eigenvalue vector is filled
+ +
65 /// Matrix contains singular value decomposition,
+ +
67 /// Matrix is the inverse of a singular value decomposition
+ +
69 /// Contents is something useless.
+
70 unusable = 0x8000
+
71 };
+
+
72
+
73 /**
+
74 * %Function printing the name of a State.
+
75 */
+
76 inline const char *
+
+ +
78 {
+
79 switch (s)
+
80 {
+
81 case matrix:
+
82 return "matrix";
+
83 case inverse_matrix:
+
84 return "inverse matrix";
+
85 case lu:
+
86 return "lu decomposition";
+
87 case cholesky:
+
88 return "cholesky decomposition";
+
89 case eigenvalues:
+
90 return "eigenvalues";
+
91 case svd:
+
92 return "svd";
+
93 case inverse_svd:
+
94 return "inverse_svd";
+
95 case unusable:
+
96 return "unusable";
+
97 default:
+
98 return "unknown";
+
99 }
+
100 }
+
+
101
+
102 /**
+
103 * A matrix can have certain features allowing for optimization, but hard to
+
104 * test. These are listed here.
+
105 */
+
+ +
107 {
+
108 /// No special properties
+ +
110 /// Matrix is symmetric
+ +
112 /// Matrix is upper triangular
+ +
114 /// Matrix is lower triangular
+ +
116 /// Matrix is diagonal
+ +
118 /// Matrix is in upper Hessenberg form
+
119 hessenberg = 8
+
120 };
+
+
121
+
122 /**
+
123 * %Function printing the name of a Property.
+
124 */
+
125 inline const char *
+
+ +
127 {
+
128 switch (s)
+
129 {
+
130 case general:
+
131 return "general";
+
132 case hermitian:
+
133 return "hermitian";
+
134 case upper_triangular:
+
135 return "upper triangular";
+
136 case lower_triangular:
+
137 return "lower triangular";
+
138 case diagonal:
+
139 return "diagonal";
+
140 case hessenberg:
+
141 return "Hessenberg";
+
142 }
+
143
+
144 Assert(false, dealii::ExcNotImplemented());
+
145 return "invalid";
+
146 }
+
+
147
+
148 /**
+
149 * Character constant.
+
150 */
+
151 static const char A = 'A';
+
152 /**
+
153 * Character constant.
+
154 */
+
155 static const char N = 'N';
+
156 /**
+
157 * Character constant.
+
158 */
+
159 static const char O = 'O';
+
160 /**
+
161 * Character constant.
+
162 */
+
163 static const char T = 'T';
+
164 /**
+
165 * Character constant for conjugate transpose.
+
166 */
+
167 static const char C = 'C';
+
168 /**
+
169 * Character constant.
+
170 */
+
171 static const char U = 'U';
+
172 /**
+
173 * Character constant.
+
174 */
+
175 static const char L = 'L';
+
176 /**
+
177 * Character constant.
+
178 */
+
179 static const char V = 'V';
+
180 /**
+
181 * Integer constant.
+
182 */
+
183 static const types::blas_int zero = 0;
+
184 /**
+
185 * Integer constant.
+
186 */
+
187 static const types::blas_int one = 1;
+
188
+
189 /**
+
190 * A LAPACK function returned an error code.
+
191 */
+ +
193 std::string,
+ +
195 << "The function " << arg1 << " returned with an error code "
+
196 << arg2);
+
197
+
198 /**
+
199 * Exception thrown when a matrix is not in a suitable state for an
+
200 * operation. For instance, a LAPACK routine may have left the matrix in an
+
201 * unusable state, then vmult does not make sense anymore.
+
202 */
+ +
204 ExcState,
+
205 State,
+
206 << "The function cannot be called while the matrix is in state "
+
207 << state_name(arg1));
+
208
+
209 /**
+
210 * Exception thrown when a matrix does not have suitable properties for an
+
211 * operation.
+
212 */
+ +
214 Property,
+
215 << "The function cannot be called with a "
+
216 << property_name(arg1) << " matrix.");
+
217
+
218 /**
+
219 * This exception is thrown if a certain LAPACK function is not available
+
220 * because no LAPACK installation was detected during configuration.
+
221 */
+ + +
224 std::string,
+
225 << "When you ran 'cmake' during installation of deal.II, "
+
226 << "no suitable installation of the BLAS or LAPACK library could "
+
227 << "be found. Consequently, the function <" << arg1
+
228 << "> can not be called. Refer to the doc/readme.html "
+
229 << "file for information on how to ensure that deal.II "
+
230 << "picks up an existing BLAS and LAPACK installation at "
+
231 << "configuration time.");
+
232 } // namespace LAPACKSupport
+
+
233} // namespace dftfe
+
234#endif
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ +
const char * state_name(State s)
Definition lapack_support.h:77
+
static const char V
Definition lapack_support.h:179
+
static const char T
Definition lapack_support.h:163
+
DeclException1(ExcState, State,<< "The function cannot be called while the matrix is in state "<< state_name(arg1))
+
static const char O
Definition lapack_support.h:159
+
static const char U
Definition lapack_support.h:171
+
const char * property_name(const Property s)
Definition lapack_support.h:126
+
State
Definition lapack_support.h:54
+
@ eigenvalues
Eigenvalue vector is filled.
Definition lapack_support.h:64
+
@ matrix
Contents is actually a matrix.
Definition lapack_support.h:56
+
@ svd
Matrix contains singular value decomposition,.
Definition lapack_support.h:66
+
@ unusable
Contents is something useless.
Definition lapack_support.h:70
+
@ inverse_matrix
Contents is the inverse of a matrix.
Definition lapack_support.h:58
+
@ inverse_svd
Matrix is the inverse of a singular value decomposition.
Definition lapack_support.h:68
+
@ lu
Contents is an LU decomposition.
Definition lapack_support.h:60
+
@ cholesky
Contents is a Cholesky decomposition.
Definition lapack_support.h:62
+
static const char A
Definition lapack_support.h:151
+
static const char C
Definition lapack_support.h:167
+
static const types::blas_int one
Definition lapack_support.h:187
+
static const char L
Definition lapack_support.h:175
+
static const char N
Definition lapack_support.h:155
+
DeclException2(ExcErrorCode, std::string, types::blas_int,<< "The function "<< arg1<< " returned with an error code "<< arg2)
+
Property
Definition lapack_support.h:107
+
@ lower_triangular
Matrix is lower triangular.
Definition lapack_support.h:115
+
@ general
No special properties.
Definition lapack_support.h:109
+
@ hessenberg
Matrix is in upper Hessenberg form.
Definition lapack_support.h:119
+
@ diagonal
Matrix is diagonal.
Definition lapack_support.h:117
+
@ upper_triangular
Matrix is upper triangular.
Definition lapack_support.h:113
+
@ hermitian
Matrix is symmetric.
Definition lapack_support.h:111
+
static const types::blas_int zero
Definition lapack_support.h:183
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/library_m_d_i_8h.html b/library_m_d_i_8h.html new file mode 100644 index 000000000..132f694c0 --- /dev/null +++ b/library_m_d_i_8h.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: workspace/include/libraryMDI.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
libraryMDI.h File Reference
+
+ + + + + diff --git a/library_m_d_i_8h_source.html b/library_m_d_i_8h_source.html new file mode 100644 index 000000000..6f1ee62e8 --- /dev/null +++ b/library_m_d_i_8h_source.html @@ -0,0 +1,135 @@ + + + + + + + +DFT-FE: workspace/include/libraryMDI.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
libraryMDI.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#if defined(DFTFE_WITH_MDI)
+
19# ifndef dftfeLibraryMDI_H_
+
20# define dftfeLibraryMDI_H_
+
21
+
22/* C style library calls to DFTFE when a DFTFE shared library is
+
23 * used as a plugin through MolSSI Driver Interface (MDI). */
+
24
+
25# include <mdi.h>
+
26
+
27extern "C"
+
28{
+
29 int
+
30 MDI_Plugin_init_dftfe(void *plugin_state);
+
31
+
32 int
+
33 MDI_Plugin_open_dftfe(void *plugin_state);
+
34
+
35 int
+
36 MDI_Plugin_close_dftfe();
+
37
+
38 int
+
39 dftfe_execute_mdi_command(const char *, MDI_Comm, void *);
+
40}
+
41# endif
+
42#endif
+
+ + + + diff --git a/linear_algebra_operations_8h.html b/linear_algebra_operations_8h.html new file mode 100644 index 000000000..edd95eec1 --- /dev/null +++ b/linear_algebra_operations_8h.html @@ -0,0 +1,183 @@ + + + + + + + +DFT-FE: workspace/include/linearAlgebraOperations.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
linearAlgebraOperations.h File Reference
+
+
+
#include <elpaScalaManager.h>
+#include <headers.h>
+#include <operator.h>
+#include "process_grid.h"
+#include "scalapackWrapper.h"
+#include "dftParameters.h"
+#include <BLASWrapper.h>
+
+

Go to the source code of this file.

+ + + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::linearAlgebraOperations
 Contains linear algebra functions used in the implementation of an eigen solver.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void dftfe::xgemm (const char *transA, const char *transB, const unsigned int *m, const unsigned int *n, const unsigned int *k, const double *alpha, const double *A, const unsigned int *lda, const double *B, const unsigned int *ldb, const double *beta, double *C, const unsigned int *ldc)
 
void dftfe::xgemm (const char *transA, const char *transB, const unsigned int *m, const unsigned int *n, const unsigned int *k, const float *alpha, const float *A, const unsigned int *lda, const float *B, const unsigned int *ldb, const float *beta, float *C, const unsigned int *ldc)
 
void dftfe::xgemm (const char *transA, const char *transB, const unsigned int *m, const unsigned int *n, const unsigned int *k, const std::complex< double > *alpha, const std::complex< double > *A, const unsigned int *lda, const std::complex< double > *B, const unsigned int *ldb, const std::complex< double > *beta, std::complex< double > *C, const unsigned int *ldc)
 
void dftfe::xgemm (const char *transA, const char *transB, const unsigned int *m, const unsigned int *n, const unsigned int *k, const std::complex< float > *alpha, const std::complex< float > *A, const unsigned int *lda, const std::complex< float > *B, const unsigned int *ldb, const std::complex< float > *beta, std::complex< float > *C, const unsigned int *ldc)
 
void dftfe::xscal (const unsigned int *n, const double *alpha, double *x, const unsigned int *inc)
 
void dftfe::xscal (const unsigned int *n, const std::complex< double > *alpha, std::complex< double > *x, const unsigned int *inc)
 
void dftfe::xcopy (const unsigned int *n, const double *x, const unsigned int *incx, double *y, const unsigned int *incy)
 
void dftfe::xcopy (const unsigned int *n, const std::complex< double > *x, const unsigned int *incx, std::complex< double > *y, const unsigned int *incy)
 
void dftfe::linearAlgebraOperations::inverse (double *A, int N)
 Compute inverse of serial matrix using LAPACK LU factorization.
 
template<typename T , dftfe::utils::MemorySpace memorySpace>
std::pair< double, doubledftfe::linearAlgebraOperations::lanczosLowerUpperBoundEigenSpectrum (const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > &BLASWrapperPtr, operatorDFTClass< memorySpace > &operatorMatrix, dftfe::linearAlgebra::MultiVector< T, memorySpace > &X, dftfe::linearAlgebra::MultiVector< T, memorySpace > &Y, dftfe::linearAlgebra::MultiVector< T, memorySpace > &Z, const dftParameters &dftParams)
 Calculates an estimate of lower and upper bounds of a matrix using k-step Lanczos method.
 
template<typename T , dftfe::utils::MemorySpace memorySpace>
void dftfe::linearAlgebraOperations::chebyshevFilter (operatorDFTClass< memorySpace > &operatorMatrix, dftfe::linearAlgebra::MultiVector< T, memorySpace > &X, dftfe::linearAlgebra::MultiVector< T, memorySpace > &Y, const unsigned int m, const double a, const double b, const double a0)
 Apply Chebyshev filter to a given subspace.
 
template<typename T >
void dftfe::linearAlgebraOperations::gramSchmidtOrthogonalization (T *X, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiComm)
 Orthogonalize given subspace using GramSchmidt orthogonalization.
 
unsigned int dftfe::linearAlgebraOperations::lowdenOrthogonalization (std::vector< dataTypes::number > &X, const unsigned int numberComponents, const MPI_Comm &mpiComm, const dftParameters &dftParams)
 Orthogonalize given subspace using Lowden orthogonalization for double data-type (serial version using LAPACK)
 
template<typename T >
unsigned int dftfe::linearAlgebraOperations::pseudoGramSchmidtOrthogonalization (elpaScalaManager &elpaScala, T *X, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, const bool useMixedPrec, const dftParameters &dftParams)
 Orthogonalize given subspace using Pseudo-Gram-Schmidt orthogonalization (serial version using LAPACK, parallel version using ScaLAPACK)
 
template<typename T >
void dftfe::linearAlgebraOperations::rayleighRitzGEP (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, elpaScalaManager &elpaScala, T *X, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, std::vector< double > &eigenValues, const bool useMixedPrec, const dftParameters &dftParams)
 Compute Rayleigh-Ritz projection (serial version using LAPACK, parallel version using ScaLAPACK)
 
template<typename T >
void dftfe::linearAlgebraOperations::rayleighRitz (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, elpaScalaManager &elpaScala, T *X, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, std::vector< double > &eigenValues, const dftParameters &dftParams, const bool doCommAfterBandParal=true)
 Compute Rayleigh-Ritz projection (serial version using LAPACK, parallel version using ScaLAPACK)
 
template<typename T >
void dftfe::linearAlgebraOperations::rayleighRitzGEPSpectrumSplitDirect (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, elpaScalaManager &elpaScala, T *X, T *Y, const unsigned int numberComponents, const unsigned int numberDofs, const unsigned int numberCoreStates, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, const bool useMixedPrec, std::vector< double > &eigenValues, const dftParameters &dftParams)
 Compute Rayleigh-Ritz projection in case of spectrum split using direct diagonalization (serial version using LAPACK, parallel version using ScaLAPACK)
 
template<typename T >
void dftfe::linearAlgebraOperations::rayleighRitzSpectrumSplitDirect (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, elpaScalaManager &elpaScala, const T *X, T *Y, const unsigned int numberComponents, const unsigned int numberDofs, const unsigned int numberCoreStates, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, const bool useMixedPrec, std::vector< double > &eigenValues, const dftParameters &dftParams)
 Compute Rayleigh-Ritz projection in case of spectrum split using direct diagonalization (serial version using LAPACK, parallel version using ScaLAPACK)
 
template<typename T >
void dftfe::linearAlgebraOperations::computeEigenResidualNorm (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, T *X, const std::vector< double > &eigenValues, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, std::vector< double > &residualNorm, const dftParameters &dftParams)
 Compute residual norm associated with eigenValue problem of the given operator.
 
template<typename T >
void dftfe::linearAlgebraOperations::densityMatrixEigenBasisFirstOrderResponse (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, T *X, const unsigned int N, const unsigned int numberLocalDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const std::vector< double > &eigenValues, const double fermiEnergy, std::vector< double > &densityMatDerFermiEnergy, elpaScalaManager &elpaScala, const dftParameters &dftParams)
 Compute first order response in density matrix with respect to perturbation in the Hamiltonian. Perturbation is computed in the eigenbasis.
 
void dftfe::linearAlgebraOperations::XtHX (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, std::vector< dataTypes::number > &ProjHam)
 Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj.
 
void dftfe::linearAlgebraOperations::XtHX (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
 Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj.
 
void dftfe::linearAlgebraOperations::XtHXMixedPrec (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const dataTypes::number *X, const unsigned int totalNumberComponents, const unsigned int singlePrecComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
 Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj.
 
+
+ + + + diff --git a/linear_algebra_operations_8h_source.html b/linear_algebra_operations_8h_source.html new file mode 100644 index 000000000..17894ace0 --- /dev/null +++ b/linear_algebra_operations_8h_source.html @@ -0,0 +1,1056 @@ + + + + + + + +DFT-FE: workspace/include/linearAlgebraOperations.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
linearAlgebraOperations.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16
+
17
+
18#ifndef linearAlgebraOperations_h
+
19#define linearAlgebraOperations_h
+
20
+
21#include <elpaScalaManager.h>
+
22#include <headers.h>
+
23#include <operator.h>
+
24#include "process_grid.h"
+
25#include "scalapackWrapper.h"
+
26#include "dftParameters.h"
+
27#include <BLASWrapper.h>
+
28namespace dftfe
+
29{
+
30 //
+
31 // extern declarations for blas-lapack routines
+
32 //
+
33#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
34 extern "C"
+
35 {
+
36 void
+
37 dgemv_(const char * TRANS,
+
38 const unsigned int *M,
+
39 const unsigned int *N,
+
40 const double * alpha,
+
41 const double * A,
+
42 const unsigned int *LDA,
+
43 const double * X,
+
44 const unsigned int *INCX,
+
45 const double * beta,
+
46 double * C,
+
47 const unsigned int *INCY);
+
48
+
49 void
+
50 sgemv_(const char * TRANS,
+
51 const unsigned int *M,
+
52 const unsigned int *N,
+
53 const float * alpha,
+
54 const float * A,
+
55 const unsigned int *LDA,
+
56 const float * X,
+
57 const unsigned int *INCX,
+
58 const float * beta,
+
59 float * C,
+
60 const unsigned int *INCY);
+
61
+
62 void
+
63 zgemv_(const char * TRANS,
+
64 const unsigned int * M,
+
65 const unsigned int * N,
+
66 const std::complex<double> *alpha,
+
67 const std::complex<double> *A,
+
68 const unsigned int * LDA,
+
69 const std::complex<double> *X,
+
70 const unsigned int * INCX,
+
71 const std::complex<double> *beta,
+
72 std::complex<double> * C,
+
73 const unsigned int * INCY);
+
74
+
75 void
+
76 cgemv_(const char * TRANS,
+
77 const unsigned int * M,
+
78 const unsigned int * N,
+
79 const std::complex<float> *alpha,
+
80 const std::complex<float> *A,
+
81 const unsigned int * LDA,
+
82 const std::complex<float> *X,
+
83 const unsigned int * INCX,
+
84 const std::complex<float> *beta,
+
85 std::complex<float> * C,
+
86 const unsigned int * INCY);
+
87 void
+
88 dsymv_(const char * UPLO,
+
89 const unsigned int *N,
+
90 const double * alpha,
+
91 const double * A,
+
92 const unsigned int *LDA,
+
93 const double * X,
+
94 const unsigned int *INCX,
+
95 const double * beta,
+
96 double * C,
+
97 const unsigned int *INCY);
+
98 void
+
99 dgesv_(int * n,
+
100 int * nrhs,
+
101 double *a,
+
102 int * lda,
+
103 int * ipiv,
+
104 double *b,
+
105 int * ldb,
+
106 int * info);
+
107 void
+
108 dsysv_(const char *UPLO,
+
109 const int * n,
+
110 const int * nrhs,
+
111 double * a,
+
112 const int * lda,
+
113 int * ipiv,
+
114 double * b,
+
115 const int * ldb,
+
116 double * work,
+
117 const int * lwork,
+
118 int * info);
+
119 void
+
120 dscal_(const unsigned int *n,
+
121 const double * alpha,
+
122 double * x,
+
123 const unsigned int *inc);
+
124 void
+
125 sscal_(const unsigned int *n,
+
126 const float * alpha,
+
127 float * x,
+
128 const unsigned int *inc);
+
129 void
+
130 zscal_(const unsigned int * n,
+
131 const std::complex<double> *alpha,
+
132 std::complex<double> * x,
+
133 const unsigned int * inc);
+
134 void
+
135 zdscal_(const unsigned int * n,
+
136 const double * alpha,
+
137 std::complex<double> *x,
+
138 const unsigned int * inc);
+
139 void
+
140 daxpy_(const unsigned int *n,
+
141 const double * alpha,
+
142 const double * x,
+
143 const unsigned int *incx,
+
144 double * y,
+
145 const unsigned int *incy);
+
146 void
+
147 dgemm_(const char * transA,
+
148 const char * transB,
+
149 const unsigned int *m,
+
150 const unsigned int *n,
+
151 const unsigned int *k,
+
152 const double * alpha,
+
153 const double * A,
+
154 const unsigned int *lda,
+
155 const double * B,
+
156 const unsigned int *ldb,
+
157 const double * beta,
+
158 double * C,
+
159 const unsigned int *ldc);
+
160 void
+
161 sgemm_(const char * transA,
+
162 const char * transB,
+
163 const unsigned int *m,
+
164 const unsigned int *n,
+
165 const unsigned int *k,
+
166 const float * alpha,
+
167 const float * A,
+
168 const unsigned int *lda,
+
169 const float * B,
+
170 const unsigned int *ldb,
+
171 const float * beta,
+
172 float * C,
+
173 const unsigned int *ldc);
+
174 void
+
175 dsyevd_(const char * jobz,
+
176 const char * uplo,
+
177 const unsigned int *n,
+
178 double * A,
+
179 const unsigned int *lda,
+
180 double * w,
+
181 double * work,
+
182 const unsigned int *lwork,
+
183 int * iwork,
+
184 const unsigned int *liwork,
+
185 int * info);
+
186 void
+
187 dsygvx_(const int * itype,
+
188 const char * jobz,
+
189 const char * range,
+
190 const char * uplo,
+
191 const int * n,
+
192 double * a,
+
193 const int * lda,
+
194 double * b,
+
195 const int * ldb,
+
196 const double *vl,
+
197 const double *vu,
+
198 const int * il,
+
199 const int * iu,
+
200 const double *abstol,
+
201 int * m,
+
202 double * w,
+
203 double * z,
+
204 const int * ldz,
+
205 double * work,
+
206 const int * lwork,
+
207 int * iwork,
+
208 int * ifail,
+
209 int * info);
+
210 void
+
211 dsyevx_(const char * jobz,
+
212 const char * range,
+
213 const char * uplo,
+
214 const int * n,
+
215 double * a,
+
216 const int * lda,
+
217 const double *vl,
+
218 const double *vu,
+
219 const int * il,
+
220 const int * iu,
+
221 const double *abstol,
+
222 int * m,
+
223 double * w,
+
224 double * z,
+
225 const int * ldz,
+
226 double * work,
+
227 const int * lwork,
+
228 int * iwork,
+
229 int * ifail,
+
230 int * info);
+
231 double
+
232 dlamch_(const char *cmach);
+
233 void
+
234 dsyevr_(const char * jobz,
+
235 const char * range,
+
236 const char * uplo,
+
237 const unsigned int *n,
+
238 double * A,
+
239 const unsigned int *lda,
+
240 const double * vl,
+
241 const double * vu,
+
242 const unsigned int *il,
+
243 const unsigned int *iu,
+
244 const double * abstol,
+
245 const unsigned int *m,
+
246 double * w,
+
247 double * Z,
+
248 const unsigned int *ldz,
+
249 unsigned int * isuppz,
+
250 double * work,
+
251 const int * lwork,
+
252 int * iwork,
+
253 const int * liwork,
+
254 int * info);
+
255 void
+
256 dsyrk_(const char * uplo,
+
257 const char * trans,
+
258 const unsigned int *n,
+
259 const unsigned int *k,
+
260 const double * alpha,
+
261 const double * A,
+
262 const unsigned int *lda,
+
263 const double * beta,
+
264 double * C,
+
265 const unsigned int *ldc);
+
266 void
+
267 dsyr_(const char * uplo,
+
268 const unsigned int *n,
+
269 const double * alpha,
+
270 const double * X,
+
271 const unsigned int *incx,
+
272 double * A,
+
273 const unsigned int *lda);
+
274 void
+
275 dsyr2_(const char * uplo,
+
276 const unsigned int *n,
+
277 const double * alpha,
+
278 const double * x,
+
279 const unsigned int *incx,
+
280 const double * y,
+
281 const unsigned int *incy,
+
282 double * a,
+
283 const unsigned int *lda);
+
284 void
+
285 dcopy_(const unsigned int *n,
+
286 const double * x,
+
287 const unsigned int *incx,
+
288 double * y,
+
289 const unsigned int *incy);
+
290 void
+
291 scopy_(const unsigned int *n,
+
292 const float * x,
+
293 const unsigned int *incx,
+
294 float * y,
+
295 const unsigned int *incy);
+
296 void
+
297 zgemm_(const char * transA,
+
298 const char * transB,
+
299 const unsigned int * m,
+
300 const unsigned int * n,
+
301 const unsigned int * k,
+
302 const std::complex<double> *alpha,
+
303 const std::complex<double> *A,
+
304 const unsigned int * lda,
+
305 const std::complex<double> *B,
+
306 const unsigned int * ldb,
+
307 const std::complex<double> *beta,
+
308 std::complex<double> * C,
+
309 const unsigned int * ldc);
+
310 void
+
311 cgemm_(const char * transA,
+
312 const char * transB,
+
313 const unsigned int * m,
+
314 const unsigned int * n,
+
315 const unsigned int * k,
+
316 const std::complex<float> *alpha,
+
317 const std::complex<float> *A,
+
318 const unsigned int * lda,
+
319 const std::complex<float> *B,
+
320 const unsigned int * ldb,
+
321 const std::complex<float> *beta,
+
322 std::complex<float> * C,
+
323 const unsigned int * ldc);
+
324 void
+
325 zheevd_(const char * jobz,
+
326 const char * uplo,
+
327 const unsigned int * n,
+
328 std::complex<double> *A,
+
329 const unsigned int * lda,
+
330 double * w,
+
331 std::complex<double> *work,
+
332 const unsigned int * lwork,
+
333 double * rwork,
+
334 const unsigned int * lrwork,
+
335 int * iwork,
+
336 const unsigned int * liwork,
+
337 int * info);
+
338 void
+
339 zheevr_(const char * jobz,
+
340 const char * range,
+
341 const char * uplo,
+
342 const unsigned int * n,
+
343 std::complex<double> *A,
+
344 const unsigned int * lda,
+
345 const double * vl,
+
346 const double * vu,
+
347 const unsigned int * il,
+
348 const unsigned int * iu,
+
349 const double * abstol,
+
350 const unsigned int * m,
+
351 double * w,
+
352 std::complex<double> *Z,
+
353 const unsigned int * ldz,
+
354 unsigned int * isuppz,
+
355 std::complex<double> *work,
+
356 const int * lwork,
+
357 double * rwork,
+
358 const int * lrwork,
+
359 int * iwork,
+
360 const int * liwork,
+
361 int * info);
+
362 void
+
363 zherk_(const char * uplo,
+
364 const char * trans,
+
365 const unsigned int * n,
+
366 const unsigned int * k,
+
367 const double * alpha,
+
368 const std::complex<double> *A,
+
369 const unsigned int * lda,
+
370 const double * beta,
+
371 std::complex<double> * C,
+
372 const unsigned int * ldc);
+
373 void
+
374 zcopy_(const unsigned int * n,
+
375 const std::complex<double> *x,
+
376 const unsigned int * incx,
+
377 std::complex<double> * y,
+
378 const unsigned int * incy);
+
379
+
380 void
+
381 ccopy_(const unsigned int * n,
+
382 const std::complex<float> *x,
+
383 const unsigned int * incx,
+
384 std::complex<float> * y,
+
385 const unsigned int * incy);
+
386
+
387 std::complex<double>
+
388 zdotc_(const unsigned int * N,
+
389 const std::complex<double> *X,
+
390 const unsigned int * INCX,
+
391 const std::complex<double> *Y,
+
392 const unsigned int * INCY);
+
393 double
+
394 ddot_(const unsigned int *N,
+
395 const double * X,
+
396 const unsigned int *INCX,
+
397 const double * Y,
+
398 const unsigned int *INCY);
+
399
+
400 double
+
401 dnrm2_(const unsigned int *n, const double *x, const unsigned int *incx);
+
402
+
403 double
+
404 dznrm2_(const unsigned int * n,
+
405 const std::complex<double> *x,
+
406 const unsigned int * incx);
+
407 void
+
408 zaxpy_(const unsigned int * n,
+
409 const std::complex<double> *alpha,
+
410 const std::complex<double> *x,
+
411 const unsigned int * incx,
+
412 std::complex<double> * y,
+
413 const unsigned int * incy);
+
414 void
+
415 dpotrf_(const char * uplo,
+
416 const unsigned int *n,
+
417 double * a,
+
418 const unsigned int *lda,
+
419 int * info);
+
420 void
+
421 zpotrf_(const char * uplo,
+
422 const unsigned int * n,
+
423 std::complex<double> *a,
+
424 const unsigned int * lda,
+
425 int * info);
+
426 void
+
427 dtrtri_(const char * uplo,
+
428 const char * diag,
+
429 const unsigned int *n,
+
430 double * a,
+
431 const unsigned int *lda,
+
432 int * info);
+
433 void
+
434 ztrtri_(const char * uplo,
+
435 const char * diag,
+
436 const unsigned int * n,
+
437 std::complex<double> *a,
+
438 const unsigned int * lda,
+
439 int * info);
+
440
+
441 // LU decomoposition of a general matrix
+
442 void
+
443 dgetrf_(int *M, int *N, double *A, int *lda, int *IPIV, int *INFO);
+
444
+
445 // generate inverse of a matrix given its LU decomposition
+
446 void
+
447 dgetri_(int * N,
+
448 double *A,
+
449 int * lda,
+
450 int * IPIV,
+
451 double *WORK,
+
452 int * lwork,
+
453 int * INFO);
+
454 }
+
455#endif
+
456
+
457 inline void
+
+
458 xgemm(const char * transA,
+
459 const char * transB,
+
460 const unsigned int *m,
+
461 const unsigned int *n,
+
462 const unsigned int *k,
+
463 const double * alpha,
+
464 const double * A,
+
465 const unsigned int *lda,
+
466 const double * B,
+
467 const unsigned int *ldb,
+
468 const double * beta,
+
469 double * C,
+
470 const unsigned int *ldc)
+
471 {
+
472 dgemm_(transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);
+
473 }
+
+
474
+
475 inline void
+
+
476 xgemm(const char * transA,
+
477 const char * transB,
+
478 const unsigned int *m,
+
479 const unsigned int *n,
+
480 const unsigned int *k,
+
481 const float * alpha,
+
482 const float * A,
+
483 const unsigned int *lda,
+
484 const float * B,
+
485 const unsigned int *ldb,
+
486 const float * beta,
+
487 float * C,
+
488 const unsigned int *ldc)
+
489 {
+
490 sgemm_(transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);
+
491 }
+
+
492
+
493 inline void
+
+
494 xgemm(const char * transA,
+
495 const char * transB,
+
496 const unsigned int * m,
+
497 const unsigned int * n,
+
498 const unsigned int * k,
+
499 const std::complex<double> *alpha,
+
500 const std::complex<double> *A,
+
501 const unsigned int * lda,
+
502 const std::complex<double> *B,
+
503 const unsigned int * ldb,
+
504 const std::complex<double> *beta,
+
505 std::complex<double> * C,
+
506 const unsigned int * ldc)
+
507 {
+
508 zgemm_(transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);
+
509 }
+
+
510
+
511 inline void
+
+
512 xgemm(const char * transA,
+
513 const char * transB,
+
514 const unsigned int * m,
+
515 const unsigned int * n,
+
516 const unsigned int * k,
+
517 const std::complex<float> *alpha,
+
518 const std::complex<float> *A,
+
519 const unsigned int * lda,
+
520 const std::complex<float> *B,
+
521 const unsigned int * ldb,
+
522 const std::complex<float> *beta,
+
523 std::complex<float> * C,
+
524 const unsigned int * ldc)
+
525 {
+
526 cgemm_(transA, transB, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);
+
527 }
+
+
528
+
529
+
530 inline void
+
+
531 xscal(const unsigned int *n,
+
532 const double * alpha,
+
533 double * x,
+
534 const unsigned int *inc)
+
535 {
+
536 dscal_(n, alpha, x, inc);
+
537 }
+
+
538
+
539 inline void
+
+
540 xscal(const unsigned int * n,
+
541 const std::complex<double> *alpha,
+
542 std::complex<double> * x,
+
543 const unsigned int * inc)
+
544 {
+
545 zscal_(n, alpha, x, inc);
+
546 }
+
+
547
+
548 inline void
+
+
549 xcopy(const unsigned int *n,
+
550 const double * x,
+
551 const unsigned int *incx,
+
552 double * y,
+
553 const unsigned int *incy)
+
554 {
+
555 dcopy_(n, x, incx, y, incy);
+
556 }
+
+
557
+
558 inline void
+
+
559 xcopy(const unsigned int * n,
+
560 const std::complex<double> *x,
+
561 const unsigned int * incx,
+
562 std::complex<double> * y,
+
563 const unsigned int * incy)
+
564 {
+
565 zcopy_(n, x, incx, y, incy);
+
566 }
+
+
567
+
568 /**
+
569 * @brief Contains linear algebra functions used in the implementation of an eigen solver
+
570 *
+
571 * @author Phani Motamarri, Sambit Das
+
572 */
+
+
573 namespace linearAlgebraOperations
+
574 {
+
575 /** @brief Compute inverse of serial matrix using LAPACK LU factorization
+
576 */
+
577 void
+
578 inverse(double *A, int N);
+
579
+
580 /** @brief Calculates an estimate of lower and upper bounds of a matrix using
+
581 * k-step Lanczos method.
+
582 *
+
583 * @param operatorMatrix An object which has access to the given matrix
+
584 * @param vect A dummy vector
+
585 * @return std::pair<double,double> An estimate of the lower and upper bound of the given matrix
+
586 */
+
587 template <typename T, dftfe::utils::MemorySpace memorySpace>
+
588 std::pair<double, double>
+ + + + + + + +
596 const dftParameters & dftParams);
+
597
+
598
+
599 /** @brief Apply Chebyshev filter to a given subspace
+
600 *
+
601 * @param[in] operatorMatrix An object which has access to the given matrix
+
602 * @param[in,out] X Given subspace as a dealii array representing multiple
+
603 * fields as a flattened array. In-place update of the given subspace.
+
604 * @param[in] numberComponents Number of multiple-fields
+
605 * @param[in] m Chebyshev polynomial degree
+
606 * @param[in] a lower bound of unwanted spectrum
+
607 * @param[in] b upper bound of unwanted spectrum
+
608 * @param[in] a0 lower bound of wanted spectrum
+
609 */
+
610 template <typename T, dftfe::utils::MemorySpace memorySpace>
+
611 void
+ + + +
615 const unsigned int m,
+
616 const double a,
+
617 const double b,
+
618 const double a0);
+
619
+
620
+
621
+
622 /** @brief Orthogonalize given subspace using GramSchmidt orthogonalization
+
623 *
+
624 * @param[in,out] X Given subspace as flattened array of multi-vectors.
+
625 * In-place update of the given subspace
+
626 * @param[in] numberComponents Number of multiple-fields
+
627 * @param[in] mpiComm global communicator
+
628 */
+
629 template <typename T>
+
630 void
+ +
632 const unsigned int numberComponents,
+
633 const unsigned int numberDofs,
+
634 const MPI_Comm & mpiComm);
+
635
+
636
+
637 /** @brief Orthogonalize given subspace using Lowden orthogonalization for double data-type
+
638 * (serial version using LAPACK)
+
639 *
+
640 * @param[in,out] X Given subspace as flattened array of multi-vectors.
+
641 * In-place update of the given subspace
+
642 * @param[in] numberComponents Number of multiple-fields
+
643 * @param[in] mpiComm global communicator
+
644 * @return flag indicating success/failure. 1 for failure, 0 for success
+
645 */
+
646 unsigned int
+
647 lowdenOrthogonalization(std::vector<dataTypes::number> &X,
+
648 const unsigned int numberComponents,
+
649 const MPI_Comm & mpiComm,
+
650 const dftParameters & dftParams);
+
651
+
652
+
653 /** @brief Orthogonalize given subspace using Pseudo-Gram-Schmidt orthogonalization
+
654 * (serial version using LAPACK, parallel version using ScaLAPACK)
+
655 *
+
656 * @param[in,out] X Given subspace as flattened array of multi-vectors.
+
657 * In-place update of the given subspace
+
658 * @param[in] numberComponents Number of multiple-fields
+
659 * @param[in] mpiCommParent parent communicator
+
660 * @param[in] interBandGroupComm interpool communicator for parallelization
+
661 * over band groups
+
662 * @param[in] mpiComm domain decomposition communicator
+
663 *
+
664 * @return flag indicating success/failure. 1 for failure, 0 for success
+
665 */
+
666 template <typename T>
+
667 unsigned int
+ +
669 T * X,
+
670 const unsigned int numberComponents,
+
671 const unsigned int numberDofs,
+
672 const MPI_Comm & mpiCommParent,
+
673 const MPI_Comm & interBandGroupComm,
+
674 const MPI_Comm & mpiCommDomain,
+
675 const bool useMixedPrec,
+
676 const dftParameters &dftParams);
+
677
+
678
+
679 /** @brief Compute Rayleigh-Ritz projection
+
680 * (serial version using LAPACK, parallel version using ScaLAPACK)
+
681 *
+
682 * @param[in] operatorMatrix An object which has access to the given matrix
+
683 * @param[in,out] X Given subspace as flattened array of multi-vectors.
+
684 * In-place rotated subspace
+
685 * @param[in] numberComponents Number of vectors
+
686 * @param[in] mpiCommDomain parent communicator
+
687 * @param[in] interBandGroupComm interpool communicator for parallelization
+
688 * over band groups
+
689 * @param[in] mpiCommDomain domain decomposition communicator
+
690 * @param[out] eigenValues of the Projected Hamiltonian
+
691 */
+
692 template <typename T>
+
693 void
+ + + +
697 T * X,
+
698 const unsigned int numberComponents,
+
699 const unsigned int numberDofs,
+
700 const MPI_Comm & mpiCommParent,
+
701 const MPI_Comm & interBandGroupComm,
+
702 const MPI_Comm & mpiCommDomain,
+
703 std::vector<double> & eigenValues,
+
704 const bool useMixedPrec,
+
705 const dftParameters & dftParams);
+
706
+
707
+
708 /** @brief Compute Rayleigh-Ritz projection
+
709 * (serial version using LAPACK, parallel version using ScaLAPACK)
+
710 *
+
711 * @param[in] operatorMatrix An object which has access to the given matrix
+
712 * @param[in,out] X Given subspace as flattened array of multi-vectors.
+
713 * In-place rotated subspace
+
714 * @param[in] numberComponents Number of vectors
+
715 * @param[in] mpiCommParent parent mpi communicator
+
716 * @param[in] interBandGroupComm interpool communicator for parallelization
+
717 * over band groups
+
718 * @param[in] mpiCommDomain domain decomposition communicator
+
719 * @param[out] eigenValues of the Projected Hamiltonian
+
720 */
+
721 template <typename T>
+
722 void
+ + + +
726 T * X,
+
727 const unsigned int numberComponents,
+
728 const unsigned int numberDofs,
+
729 const MPI_Comm & mpiCommParent,
+
730 const MPI_Comm & interBandGroupComm,
+
731 const MPI_Comm & mpiCommDomain,
+
732 std::vector<double> & eigenValues,
+
733 const dftParameters & dftParams,
+
734 const bool doCommAfterBandParal = true);
+
735
+
736 /** @brief Compute Rayleigh-Ritz projection in case of spectrum split using direct diagonalization
+
737 * (serial version using LAPACK, parallel version using ScaLAPACK)
+
738 *
+
739 * @param[in] operatorMatrix An object which has access to the given matrix
+
740 * @param[in] X Given subspace as flattened array of multi-vectors.
+
741 * @param[out] Y rotated subspace of top states
+
742 * @param[in] numberComponents Number of vectors
+
743 * @param[in] numberCoreStates Number of core states to be used for
+
744 * spectrum splitting
+
745 * @param[in] mpiCommParent parent mpi communicator
+
746 * @param[in] interBandGroupComm interpool communicator for parallelization
+
747 * over band groups
+
748 * @param[in] mpiCommDomain domain decomposition communicator
+
749 * @param[out] eigenValues of the Projected Hamiltonian
+
750 */
+
751 template <typename T>
+
752 void
+ + + +
756 T * X,
+
757 T * Y,
+
758 const unsigned int numberComponents,
+
759 const unsigned int numberDofs,
+
760 const unsigned int numberCoreStates,
+
761 const MPI_Comm & mpiCommParent,
+
762 const MPI_Comm & interBandGroupComm,
+
763 const MPI_Comm & mpiCommDomain,
+
764 const bool useMixedPrec,
+
765 std::vector<double> & eigenValues,
+
766 const dftParameters & dftParams);
+
767
+
768
+
769 /** @brief Compute Rayleigh-Ritz projection in case of spectrum split using direct diagonalization
+
770 * (serial version using LAPACK, parallel version using ScaLAPACK)
+
771 *
+
772 * @param[in] operatorMatrix An object which has access to the given matrix
+
773 * @param[in] X Given subspace as flattened array of multi-vectors.
+
774 * @param[out] Y rotated subspace of top states
+
775 * @param[in] numberComponents Number of vectors
+
776 * @param[in] numberCoreStates Number of core states to be used for
+
777 * spectrum splitting
+
778 * @param[in] mpiCommParent parent mpi communicator
+
779 * @param[in] interBandGroupComm interpool communicator for parallelization
+
780 * over band groups
+
781 * @param[in] mpiCommDomain domain decomposition communicator
+
782 * @param[out] eigenValues of the Projected Hamiltonian
+
783 */
+
784 template <typename T>
+
785 void
+ + + +
789 const T * X,
+
790 T * Y,
+
791 const unsigned int numberComponents,
+
792 const unsigned int numberDofs,
+
793 const unsigned int numberCoreStates,
+
794 const MPI_Comm & mpiCommParent,
+
795 const MPI_Comm & interBandGroupComm,
+
796 const MPI_Comm & mpiCommDomain,
+
797 const bool useMixedPrec,
+
798 std::vector<double> & eigenValues,
+
799 const dftParameters & dftParams);
+
800
+
801
+
802 /** @brief Compute residual norm associated with eigenValue problem of the given operator
+
803 *
+
804 * @param[in] operatorMatrix An object which has access to the given matrix
+
805 * @param[in] X Given subspace as STL vector of dealii vectors
+
806 * @param[in] eigenValues eigenValues of the operator
+
807 * @param[in] mpiCommParent parent mpi communicator
+
808 * @param[in] mpiCommDomain domain decomposition communicator
+
809 * @param[out] residualNorms of the eigen Value problem
+
810 */
+
811 template <typename T>
+
812 void
+ + +
815 T * X,
+
816 const std::vector<double> & eigenValues,
+
817 const unsigned int numberComponents,
+
818 const unsigned int numberDofs,
+
819 const MPI_Comm & mpiCommParent,
+
820 const MPI_Comm & mpiCommDomain,
+
821 const MPI_Comm & interBandGroupComm,
+
822 std::vector<double> & residualNorm,
+
823 const dftParameters & dftParams);
+
824
+
825 /** @brief Compute first order response in density matrix with respect to perturbation in the Hamiltonian.
+
826 * Perturbation is computed in the eigenbasis.
+
827 */
+
828 template <typename T>
+
829 void
+ + +
832 T * X,
+
833 const unsigned int N,
+
834 const unsigned int numberLocalDofs,
+
835 const MPI_Comm & mpiCommParent,
+
836 const MPI_Comm & mpiCommDomain,
+
837 const MPI_Comm & interBandGroupComm,
+
838 const std::vector<double> & eigenValues,
+
839 const double fermiEnergy,
+
840 std::vector<double> &densityMatDerFermiEnergy,
+ +
842 const dftParameters &dftParams);
+
843
+
844 /**
+
845 * @brief Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj
+
846 *
+
847 * @param X Vector of Vectors containing multi-wavefunction fields
+
848 * @param numberComponents number of wavefunctions associated with a given node
+
849 * @param ProjMatrix projected small matrix
+
850 */
+
851 void
+ +
853 const dataTypes::number * X,
+
854 const unsigned int numberComponents,
+
855 const unsigned int numberLocalDofs,
+
856 const MPI_Comm & mpiCommDomain,
+
857 const MPI_Comm & interBandGroupComm,
+
858 const dftParameters & dftParams,
+
859 std::vector<dataTypes::number> & ProjHam);
+
860
+
861 /**
+
862 * @brief Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj
+
863 *
+
864 * @param X Vector of Vectors containing multi-wavefunction fields
+
865 * @param numberComponents number of wavefunctions associated with a given node
+
866 * @param processGrid two-dimensional processor grid corresponding to the parallel projHamPar
+
867 * @param projHamPar parallel ScaLAPACKMatrix which stores the computed projection
+
868 * of the operation into the given subspace
+
869 */
+
870 void
+ +
872 const dataTypes::number * X,
+
873 const unsigned int numberComponents,
+
874 const unsigned int numberLocalDofs,
+
875 const std::shared_ptr<const dftfe::ProcessGrid> & processGrid,
+
876 const MPI_Comm & mpiCommDomain,
+
877 const MPI_Comm & interBandGroupComm,
+
878 const dftParameters & dftParams,
+ + +
881
+
882
+
883 /**
+
884 * @brief Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj
+
885 *
+
886 * @param X Vector of Vectors containing multi-wavefunction fields
+
887 * @param totalNumberComponents number of wavefunctions associated with a given node
+
888 * @param singlePrecComponents number of wavecfuntions starting from the first for
+
889 * which the project Hamiltionian block will be computed in single
+
890 * procession. However the cross blocks will still be computed in double
+
891 * precision.
+
892 * @param processGrid two-dimensional processor grid corresponding to the parallel projHamPar
+
893 * @param projHamPar parallel ScaLAPACKMatrix which stores the computed projection
+
894 * of the operation into the given subspace
+
895 */
+
896 void
+ + +
899 const dataTypes::number * X,
+
900 const unsigned int totalNumberComponents,
+
901 const unsigned int singlePrecComponents,
+
902 const unsigned int numberLocalDofs,
+
903 const std::shared_ptr<const dftfe::ProcessGrid> & processGrid,
+
904 const MPI_Comm & mpiCommDomain,
+
905 const MPI_Comm & interBandGroupComm,
+
906 const dftParameters & dftParams,
+ + +
909
+
910 } // namespace linearAlgebraOperations
+
+
911
+
912} // namespace dftfe
+
913#endif
+ +
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:35
+
Manager class for ELPA and ScaLAPACK.
Definition elpaScalaManager.h:38
+
Definition BLASWrapper.h:34
+
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition MultiVector.h:127
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ + + +
void dgesv_(int *N, int *NRHS, double *A, int *LDA, int *IPIV, double *B, int *LDB, int *INFO)
+
void chebyshevFilter(operatorDFTClass< memorySpace > &operatorMatrix, dftfe::linearAlgebra::MultiVector< T, memorySpace > &X, dftfe::linearAlgebra::MultiVector< T, memorySpace > &Y, const unsigned int m, const double a, const double b, const double a0)
Apply Chebyshev filter to a given subspace.
+
void computeEigenResidualNorm(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, T *X, const std::vector< double > &eigenValues, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, std::vector< double > &residualNorm, const dftParameters &dftParams)
Compute residual norm associated with eigenValue problem of the given operator.
+
void rayleighRitzGEP(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, elpaScalaManager &elpaScala, T *X, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, std::vector< double > &eigenValues, const bool useMixedPrec, const dftParameters &dftParams)
Compute Rayleigh-Ritz projection (serial version using LAPACK, parallel version using ScaLAPACK)
+
void inverse(double *A, int N)
Compute inverse of serial matrix using LAPACK LU factorization.
+
void XtHX(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, std::vector< dataTypes::number > &ProjHam)
Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T...
+
std::pair< double, double > lanczosLowerUpperBoundEigenSpectrum(const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > &BLASWrapperPtr, operatorDFTClass< memorySpace > &operatorMatrix, dftfe::linearAlgebra::MultiVector< T, memorySpace > &X, dftfe::linearAlgebra::MultiVector< T, memorySpace > &Y, dftfe::linearAlgebra::MultiVector< T, memorySpace > &Z, const dftParameters &dftParams)
Calculates an estimate of lower and upper bounds of a matrix using k-step Lanczos method.
+
void XtHXMixedPrec(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const dataTypes::number *X, const unsigned int totalNumberComponents, const unsigned int singlePrecComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T...
+
void rayleighRitz(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, elpaScalaManager &elpaScala, T *X, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, std::vector< double > &eigenValues, const dftParameters &dftParams, const bool doCommAfterBandParal=true)
Compute Rayleigh-Ritz projection (serial version using LAPACK, parallel version using ScaLAPACK)
+
void rayleighRitzGEPSpectrumSplitDirect(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, elpaScalaManager &elpaScala, T *X, T *Y, const unsigned int numberComponents, const unsigned int numberDofs, const unsigned int numberCoreStates, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, const bool useMixedPrec, std::vector< double > &eigenValues, const dftParameters &dftParams)
Compute Rayleigh-Ritz projection in case of spectrum split using direct diagonalization (serial versi...
+
void gramSchmidtOrthogonalization(T *X, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiComm)
Orthogonalize given subspace using GramSchmidt orthogonalization.
+
unsigned int lowdenOrthogonalization(std::vector< dataTypes::number > &X, const unsigned int numberComponents, const MPI_Comm &mpiComm, const dftParameters &dftParams)
Orthogonalize given subspace using Lowden orthogonalization for double data-type (serial version usin...
+
void densityMatrixEigenBasisFirstOrderResponse(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, T *X, const unsigned int N, const unsigned int numberLocalDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const std::vector< double > &eigenValues, const double fermiEnergy, std::vector< double > &densityMatDerFermiEnergy, elpaScalaManager &elpaScala, const dftParameters &dftParams)
Compute first order response in density matrix with respect to perturbation in the Hamiltonian....
+
void rayleighRitzSpectrumSplitDirect(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, elpaScalaManager &elpaScala, const T *X, T *Y, const unsigned int numberComponents, const unsigned int numberDofs, const unsigned int numberCoreStates, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, const bool useMixedPrec, std::vector< double > &eigenValues, const dftParameters &dftParams)
Compute Rayleigh-Ritz projection in case of spectrum split using direct diagonalization (serial versi...
+
unsigned int pseudoGramSchmidtOrthogonalization(elpaScalaManager &elpaScala, T *X, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, const bool useMixedPrec, const dftParameters &dftParams)
Orthogonalize given subspace using Pseudo-Gram-Schmidt orthogonalization (serial version using LAPACK...
+
Definition pseudoPotentialToDftfeConverter.cc:34
+
void xcopy(const unsigned int *n, const double *x, const unsigned int *incx, double *y, const unsigned int *incy)
Definition linearAlgebraOperations.h:549
+
void xscal(const unsigned int *n, const double *alpha, double *x, const unsigned int *inc)
Definition linearAlgebraOperations.h:531
+
void xgemm(const char *transA, const char *transB, const unsigned int *m, const unsigned int *n, const unsigned int *k, const double *alpha, const double *A, const unsigned int *lda, const double *B, const unsigned int *ldb, const double *beta, double *C, const unsigned int *ldc)
Definition linearAlgebraOperations.h:458
+ + + + +
+ + + + diff --git a/linear_algebra_operations_device_8h.html b/linear_algebra_operations_device_8h.html new file mode 100644 index 000000000..a25f8882a --- /dev/null +++ b/linear_algebra_operations_device_8h.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: workspace/include/linearAlgebraOperationsDevice.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
linearAlgebraOperationsDevice.h File Reference
+
+ + + + + diff --git a/linear_algebra_operations_device_8h_source.html b/linear_algebra_operations_device_8h_source.html new file mode 100644 index 000000000..4a4a703ff --- /dev/null +++ b/linear_algebra_operations_device_8h_source.html @@ -0,0 +1,543 @@ + + + + + + + +DFT-FE: workspace/include/linearAlgebraOperationsDevice.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
linearAlgebraOperationsDevice.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16
+
17#if defined(DFTFE_WITH_DEVICE)
+
18# ifndef linearAlgebraOperationsDevice_h
+
19# define linearAlgebraOperationsDevice_h
+
20
+
21# include <headers.h>
+
22# include <operator.h>
+
23# include "process_grid.h"
+
24# include "scalapackWrapper.h"
+
25# include "elpaScalaManager.h"
+ +
27# include "dftParameters.h"
+
28
+
29namespace dftfe
+
30{
+
31 extern "C"
+
32 {
+
33 void
+
34 dsyevd_(const char * jobz,
+
35 const char * uplo,
+
36 const unsigned int *n,
+
37 double * A,
+
38 const unsigned int *lda,
+
39 double * w,
+
40 double * work,
+
41 const unsigned int *lwork,
+
42 int * iwork,
+
43 const unsigned int *liwork,
+
44 int * info);
+
45
+
46 void
+
47 zheevd_(const char * jobz,
+
48 const char * uplo,
+
49 const unsigned int * n,
+
50 std::complex<double> *A,
+
51 const unsigned int * lda,
+
52 double * w,
+
53 std::complex<double> *work,
+
54 const unsigned int * lwork,
+
55 double * rwork,
+
56 const unsigned int * lrwork,
+
57 int * iwork,
+
58 const unsigned int * liwork,
+
59 int * info);
+
60 }
+
61
+
62
+
63 /**
+
64 * @brief Contains functions for linear algebra operations on Device
+
65 *
+
66 * @author Sambit Das
+
67 */
+
68 namespace linearAlgebraOperationsDevice
+
69 {
+
70 /** @brief Apply Chebyshev filter to a given subspace
+
71 *
+
72 * @param[in] operatorMatrix An object which has access to the given matrix
+
73 * @param[in,out] X Given subspace as a dealii array representing multiple
+
74 * fields as a flattened array. In-place update of the given subspace.
+
75 * @param[in] numberComponents Number of multiple-fields
+
76 * @param[in] m Chebyshev polynomial degree
+
77 * @param[in] a lower bound of unwanted spectrum
+
78 * @param[in] b upper bound of unwanted spectrum
+
79 * @param[in] a0 lower bound of wanted spectrum
+
80 */
+
81 void
+
82 chebyshevFilterOverlapComputeCommunication(
+
83 operatorDFTClass<dftfe::utils::MemorySpace::DEVICE> &operatorMatrix,
+ + + + + + + + +
92 const unsigned int m,
+
93 const double a,
+
94 const double b,
+
95 const double a0);
+
96
+
97 /** @brief Computes Sc=X^{T}*Xc.
+
98 *
+
99 *
+
100 */
+
101 void
+
102 fillParallelOverlapMatScalapack(
+
103 const dataTypes::number * X,
+
104 const unsigned int M,
+
105 const unsigned int N,
+ +
107 const MPI_Comm & mpiCommDomain,
+
108 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
109 const MPI_Comm & interBandGroupComm,
+
110 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+ +
112 const dftParameters & dftParams);
+
113
+
114
+
115
+
116 /** @brief Computes Sc=X^{T}*Xc.
+
117 *
+
118 *
+
119 */
+
120 void
+
121 fillParallelOverlapMatScalapackAsyncComputeCommun(
+
122 const dataTypes::number * X,
+
123 const unsigned int M,
+
124 const unsigned int N,
+ +
126 const MPI_Comm & mpiCommDomain,
+
127 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
128 const MPI_Comm & interBandGroupComm,
+
129 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+ +
131 const dftParameters & dftParams);
+
132
+
133
+
134
+
135 /** @brief Computes Sc=X^{T}*Xc.
+
136 *
+
137 *
+
138 */
+
139 void
+
140 fillParallelOverlapMatMixedPrecScalapackAsyncComputeCommun(
+
141 const dataTypes::number * X,
+
142 const unsigned int M,
+
143 const unsigned int N,
+ +
145 const MPI_Comm & mpiCommDomain,
+
146 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
147 const MPI_Comm & interBandGroupComm,
+
148 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+ +
150 const dftParameters & dftParams);
+
151
+
152 /** @brief Computes Sc=X^{T}*Xc.
+
153 *
+
154 *
+
155 */
+
156 void
+
157 fillParallelOverlapMatMixedPrecCommunScalapackAsyncComputeCommun(
+
158 const dataTypes::number * X,
+
159 const unsigned int M,
+
160 const unsigned int N,
+ +
162 const MPI_Comm & mpiCommDomain,
+
163 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
164 const MPI_Comm & interBandGroupComm,
+
165 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+ +
167 const dftParameters & dftParams);
+
168
+
169 /** @brief Computes Sc=X^{T}*Xc.
+
170 *
+
171 *
+
172 */
+
173 void
+
174 fillParallelOverlapMatMixedPrecScalapack(
+
175 const dataTypes::number * X,
+
176 const unsigned int M,
+
177 const unsigned int N,
+ +
179 const MPI_Comm & mpiCommDomain,
+
180 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
181 const MPI_Comm & interBandGroupComm,
+
182 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+ +
184 const dftParameters & dftParams);
+
185
+
186
+
187
+
188 /** @brief CGS orthogonalization
+
189 */
+
190 void
+ +
192 elpaScalaManager & elpaScala,
+ +
194 const unsigned int M,
+
195 const unsigned int N,
+
196 const MPI_Comm & mpiCommParent,
+
197 const MPI_Comm & mpiCommDomain,
+
198 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
199 const MPI_Comm & interBandGroupComm,
+ +
201 const dftParameters & dftParams,
+
202 const bool useMixedPrecOverall = false);
+
203
+
204 void
+
205 subspaceRotationScalapack(
+ +
207 const unsigned int M,
+
208 const unsigned int N,
+ +
210 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+
211 const MPI_Comm & mpiCommDomain,
+
212 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
213 const MPI_Comm & interBandGroupComm,
+
214 const dftfe::ScaLAPACKMatrix<dataTypes::number> &rotationMatPar,
+
215 const dftParameters & dftParams,
+
216 const bool rotationMatTranspose = false,
+
217 const bool isRotationMatLowerTria = false);
+
218
+
219
+
220 void
+
221 subspaceRotationSpectrumSplitScalapack(
+
222 const dataTypes::number * X,
+
223 dataTypes::number * XFrac,
+
224 const unsigned int M,
+
225 const unsigned int N,
+
226 const unsigned int Nfr,
+ +
228 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+
229 const MPI_Comm & mpiCommDomain,
+
230 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
231 const dftfe::ScaLAPACKMatrix<dataTypes::number> &rotationMatPar,
+
232 const dftParameters & dftParams,
+
233 const bool rotationMatTranspose = false);
+
234
+
235 void
+
236 subspaceRotationCGSMixedPrecScalapack(
+ +
238 const unsigned int M,
+
239 const unsigned int N,
+ +
241 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+
242 const MPI_Comm & mpiCommDomain,
+
243 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
244 const MPI_Comm & interBandGroupComm,
+
245 const dftfe::ScaLAPACKMatrix<dataTypes::number> &rotationMatPar,
+
246 const dftParameters & dftParams,
+
247 const bool rotationMatTranspose = false);
+
248
+
249
+
250 void
+
251 subspaceRotationRRMixedPrecScalapack(
+ +
253 const unsigned int M,
+
254 const unsigned int N,
+ +
256 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+
257 const MPI_Comm & mpiCommDomain,
+
258 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
259 const MPI_Comm & interBandGroupComm,
+
260 const dftfe::ScaLAPACKMatrix<dataTypes::number> &rotationMatPar,
+
261 const dftParameters & dftParams,
+
262 const bool rotationMatTranspose = false);
+
263
+
264
+
265 void
+ +
267 operatorDFTClass<dftfe::utils::MemorySpace::DEVICE> &operatorMatrix,
+
268 elpaScalaManager & elpaScala,
+ +
270 distributedDeviceVec<dataTypes::number> & Xb,
+
271 distributedDeviceVec<dataTypes::number> & HXb,
+
272 const unsigned int M,
+
273 const unsigned int N,
+
274 const MPI_Comm & mpiCommParent,
+
275 const MPI_Comm & mpiCommDomain,
+
276 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
277 const MPI_Comm & interBandGroupComm,
+
278 std::vector<double> & eigenValues,
+ +
280 const dftParameters & dftParams,
+
281 const bool useMixedPrecOverall = false);
+
282
+
283 void
+ +
285 operatorDFTClass<dftfe::utils::MemorySpace::DEVICE> &operatorMatrix,
+
286 elpaScalaManager & elpaScala,
+ +
288 distributedDeviceVec<dataTypes::number> & Xb,
+
289 distributedDeviceVec<dataTypes::number> & HXb,
+
290 const unsigned int M,
+
291 const unsigned int N,
+
292 const MPI_Comm & mpiCommParent,
+
293 const MPI_Comm & mpiCommDomain,
+
294 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
295 const MPI_Comm & interBandGroupComm,
+
296 std::vector<double> & eigenValues,
+ +
298 const dftParameters & dftParams,
+
299 const bool useMixedPrecOverall = false);
+
300
+
301 void
+ +
303 operatorDFTClass<dftfe::utils::MemorySpace::DEVICE> &operatorMatrix,
+
304 elpaScalaManager & elpaScala,
+ +
306 dataTypes::number * XFrac,
+
307 distributedDeviceVec<dataTypes::number> & Xb,
+
308 distributedDeviceVec<dataTypes::number> & HXb,
+
309 const unsigned int M,
+
310 const unsigned int N,
+
311 const unsigned int Noc,
+
312 const MPI_Comm & mpiCommParent,
+
313 const MPI_Comm & mpiCommDomain,
+
314 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
315 const MPI_Comm & interBandGroupComm,
+
316 std::vector<double> & eigenValues,
+ +
318 const dftParameters & dftParams,
+
319 const bool useMixedPrecOverall = false);
+
320
+
321
+
322 void
+ +
324 operatorDFTClass<dftfe::utils::MemorySpace::DEVICE> &operatorMatrix,
+ +
326 distributedDeviceVec<dataTypes::number> & Xb,
+
327 distributedDeviceVec<dataTypes::number> & HXb,
+
328 const unsigned int M,
+
329 const unsigned int N,
+
330 const MPI_Comm & mpiCommParent,
+
331 const MPI_Comm & mpiCommDomain,
+
332 utils::DeviceCCLWrapper & devicecclMpiCommDomain,
+
333 const MPI_Comm & interBandGroupComm,
+
334 const std::vector<double> & eigenValues,
+
335 const double fermiEnergy,
+
336 std::vector<double> & densityMatDerFermiEnergy,
+
337 dftfe::elpaScalaManager & elpaScala,
+ +
339 const dftParameters & dftParams);
+
340
+
341 void
+ +
343 operatorDFTClass<dftfe::utils::MemorySpace::DEVICE> &operatorMatrix,
+ +
345 distributedDeviceVec<dataTypes::number> & Xb,
+
346 distributedDeviceVec<dataTypes::number> & HXb,
+
347 const unsigned int M,
+
348 const unsigned int N,
+
349 const std::vector<double> & eigenValues,
+
350 const MPI_Comm & mpiCommParent,
+
351 const MPI_Comm & mpiCommDomain,
+
352 const MPI_Comm & interBandGroupComm,
+ +
354 std::vector<double> & residualNorm,
+
355 const dftParameters & dftParams,
+
356 const bool useBandParal = false);
+
357
+
358 void
+
359 XtHX(operatorDFTClass<dftfe::utils::MemorySpace::DEVICE> &operatorMatrix,
+
360 const dataTypes::number * X,
+
361 distributedDeviceVec<dataTypes::number> & XBlock,
+
362 distributedDeviceVec<dataTypes::number> & HXBlock,
+
363 const unsigned int M,
+
364 const unsigned int N,
+ +
366 const std::shared_ptr<const dftfe::ProcessGrid> & processGrid,
+ +
368 utils::DeviceCCLWrapper &devicecclMpiCommDomain,
+
369 const MPI_Comm & mpiCommDomain,
+
370 const MPI_Comm & interBandGroupComm,
+
371 const dftParameters & dftParams,
+
372 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false);
+
373
+
374 void
+
375 XtHXMixedPrecOverlapComputeCommun(
+
376 operatorDFTClass<dftfe::utils::MemorySpace::DEVICE> &operatorMatrix,
+
377 const dataTypes::number * X,
+
378 distributedDeviceVec<dataTypes::number> & XBlock,
+
379 distributedDeviceVec<dataTypes::number> & HXBlock,
+
380 const unsigned int M,
+
381 const unsigned int N,
+
382 const unsigned int Noc,
+ +
384 const std::shared_ptr<const dftfe::ProcessGrid> & processGrid,
+ +
386 utils::DeviceCCLWrapper &devicecclMpiCommDomain,
+
387 const MPI_Comm & mpiCommDomain,
+
388 const MPI_Comm & interBandGroupComm,
+
389 const dftParameters & dftParams,
+
390 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false);
+
391
+
392 void
+
393 XtHXOverlapComputeCommun(
+
394 operatorDFTClass<dftfe::utils::MemorySpace::DEVICE> &operatorMatrix,
+
395 const dataTypes::number * X,
+
396 distributedDeviceVec<dataTypes::number> & XBlock,
+
397 distributedDeviceVec<dataTypes::number> & HXBlock,
+
398 const unsigned int M,
+
399 const unsigned int N,
+ +
401 const std::shared_ptr<const dftfe::ProcessGrid> & processGrid,
+ +
403 utils::DeviceCCLWrapper &devicecclMpiCommDomain,
+
404 const MPI_Comm & mpiCommDomain,
+
405 const MPI_Comm & interBandGroupComm,
+
406 const dftParameters & dftParams,
+
407 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false);
+
408
+
409 void
+
410 XtHXMixedPrecCommunOverlapComputeCommun(
+
411 operatorDFTClass<dftfe::utils::MemorySpace::DEVICE> &operatorMatrix,
+
412 const dataTypes::number * X,
+
413 distributedDeviceVec<dataTypes::number> & XBlock,
+
414 distributedDeviceVec<dataTypes::number> & HXBlock,
+
415 const unsigned int M,
+
416 const unsigned int N,
+
417 const unsigned int Noc,
+ +
419 const std::shared_ptr<const dftfe::ProcessGrid> & processGrid,
+ +
421 utils::DeviceCCLWrapper &devicecclMpiCommDomain,
+
422 const MPI_Comm & mpiCommDomain,
+
423 const MPI_Comm & interBandGroupComm,
+
424 const dftParameters & dftParams,
+
425 const bool onlyHPrimePartForFirstOrderDensityMatResponse = false);
+
426
+
427 } // namespace linearAlgebraOperationsDevice
+
428} // namespace dftfe
+
429# endif
+
430#endif
+
Manager class for ELPA and ScaLAPACK.
Definition elpaScalaManager.h:38
+
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition MultiVector.h:127
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ + + + +
double number
Definition dftfeDataTypes.h:44
+
void computeEigenResidualNorm(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, T *X, const std::vector< double > &eigenValues, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, std::vector< double > &residualNorm, const dftParameters &dftParams)
Compute residual norm associated with eigenValue problem of the given operator.
+
void rayleighRitzGEP(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, elpaScalaManager &elpaScala, T *X, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, std::vector< double > &eigenValues, const bool useMixedPrec, const dftParameters &dftParams)
Compute Rayleigh-Ritz projection (serial version using LAPACK, parallel version using ScaLAPACK)
+
void XtHX(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, std::vector< dataTypes::number > &ProjHam)
Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T...
+
void rayleighRitz(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, elpaScalaManager &elpaScala, T *X, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, std::vector< double > &eigenValues, const dftParameters &dftParams, const bool doCommAfterBandParal=true)
Compute Rayleigh-Ritz projection (serial version using LAPACK, parallel version using ScaLAPACK)
+
void rayleighRitzGEPSpectrumSplitDirect(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, elpaScalaManager &elpaScala, T *X, T *Y, const unsigned int numberComponents, const unsigned int numberDofs, const unsigned int numberCoreStates, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, const bool useMixedPrec, std::vector< double > &eigenValues, const dftParameters &dftParams)
Compute Rayleigh-Ritz projection in case of spectrum split using direct diagonalization (serial versi...
+
void densityMatrixEigenBasisFirstOrderResponse(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, T *X, const unsigned int N, const unsigned int numberLocalDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const std::vector< double > &eigenValues, const double fermiEnergy, std::vector< double > &densityMatDerFermiEnergy, elpaScalaManager &elpaScala, const dftParameters &dftParams)
Compute first order response in density matrix with respect to perturbation in the Hamiltonian....
+
unsigned int pseudoGramSchmidtOrthogonalization(elpaScalaManager &elpaScala, T *X, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, const bool useMixedPrec, const dftParameters &dftParams)
Orthogonalize given subspace using Pseudo-Gram-Schmidt orthogonalization (serial version using LAPACK...
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+ + + +
+ + + + diff --git a/linear_algebra_operations_internal_8h.html b/linear_algebra_operations_internal_8h.html new file mode 100644 index 000000000..db53e60f1 --- /dev/null +++ b/linear_algebra_operations_internal_8h.html @@ -0,0 +1,168 @@ + + + + + + + +DFT-FE: workspace/include/linearAlgebraOperationsInternal.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
linearAlgebraOperationsInternal.h File Reference
+
+
+
#include <headers.h>
+#include <operator.h>
+#include "process_grid.h"
+#include "scalapackWrapper.h"
+#include "dftParameters.h"
+#include <elpa/elpa.h>
+#include <unordered_map>
+
+

Go to the source code of this file.

+ + + + + + + + + + +

+Namespaces

namespace  dftfe
 
namespace  dftfe::linearAlgebraOperations
 Contains linear algebra functions used in the implementation of an eigen solver.
 
namespace  dftfe::linearAlgebraOperations::internal
 Contains internal functions used in linearAlgebraOperations.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void dftfe::linearAlgebraOperations::internal::setupELPAHandleParameters (const MPI_Comm &mpi_communicator, MPI_Comm &processGridCommunicatorActive, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const unsigned int na, const unsigned int nev, const unsigned int blockSize, elpa_t &elpaHandle, const dftParameters &dftParams)
 setup ELPA parameters.
 
void dftfe::linearAlgebraOperations::internal::createProcessGridSquareMatrix (const MPI_Comm &mpi_communicator, const unsigned size, std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const dftParameters &dftParams, const bool useOnlyThumbRule=false)
 Wrapper function to create a two dimensional processor grid for a square matrix in dftfe::ScaLAPACKMatrix storage format.
 
void dftfe::linearAlgebraOperations::internal::createProcessGridRectangularMatrix (const MPI_Comm &mpi_communicator, const unsigned sizeRows, const unsigned sizeColumns, std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const dftParameters &dftParams)
 Wrapper function to create a two dimensional processor grid for a rectangular matrix in dftfe::ScaLAPACKMatrix storage format.
 
template<typename T >
void dftfe::linearAlgebraOperations::internal::createGlobalToLocalIdMapsScaLAPACKMat (const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const dftfe::ScaLAPACKMatrix< T > &mat, std::unordered_map< unsigned int, unsigned int > &globalToLocalRowIdMap, std::unordered_map< unsigned int, unsigned int > &globalToLocalColumnIdMap)
 Creates global row/column id to local row/column ids for dftfe::ScaLAPACKMatrix.
 
template<typename T >
void dftfe::linearAlgebraOperations::internal::sumAcrossInterCommScaLAPACKMat (const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< T > &mat, const MPI_Comm &interComm)
 Mpi all reduce of ScaLAPACKMat across a given inter communicator. Used for band parallelization.
 
template<typename T >
void dftfe::linearAlgebraOperations::internal::scaleScaLAPACKMat (const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< T > &mat, const T scalar)
 scale a ScaLAPACKMat with a scalar
 
template<typename T >
void dftfe::linearAlgebraOperations::internal::broadcastAcrossInterCommScaLAPACKMat (const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< T > &mat, const MPI_Comm &interComm, const unsigned int broadcastRoot)
 MPI_Bcast of ScaLAPACKMat across a given inter communicator from a given broadcast root. Used for band parallelization.
 
template<typename T >
void dftfe::linearAlgebraOperations::internal::fillParallelOverlapMatrix (const T *X, const unsigned int XLocalSize, const unsigned int numberVectors, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiComm, dftfe::ScaLAPACKMatrix< T > &overlapMatPar, const dftParameters &dftParams)
 Computes Sc=X^{T}*Xc and stores in a parallel ScaLAPACK matrix. X^{T} is the subspaceVectorsArray stored in the column major format (N x M). Sc is the overlapMatPar.
 
template<typename T , typename TLowPrec >
void dftfe::linearAlgebraOperations::internal::fillParallelOverlapMatrixMixedPrec (const T *X, const unsigned int XLocalSize, const unsigned int numberVectors, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiComm, dftfe::ScaLAPACKMatrix< T > &overlapMatPar, const dftParameters &dftParams)
 Computes Sc=X^{T}*Xc and stores in a parallel ScaLAPACK matrix. X^{T} is the subspaceVectorsArray stored in the column major format (N x M). Sc is the overlapMatPar.
 
template<typename T >
void dftfe::linearAlgebraOperations::internal::subspaceRotation (T *subspaceVectorsArray, const unsigned int subspaceVectorsArrayLocalSize, const unsigned int N, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiComm, const dftfe::ScaLAPACKMatrix< T > &rotationMatPar, const dftParameters &dftParams, const bool rotationMatTranspose=false, const bool isRotationMatLowerTria=false, const bool doCommAfterBandParal=true)
 Computes X^{T}=Q*X^{T} inplace. X^{T} is the subspaceVectorsArray stored in the column major format (N x M). Q is rotationMatPar (N x N).
 
template<typename T , typename TLowPrec >
void dftfe::linearAlgebraOperations::internal::subspaceRotationMixedPrec (T *subspaceVectorsArray, const unsigned int subspaceVectorsArrayLocalSize, const unsigned int N, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiComm, const dftfe::ScaLAPACKMatrix< T > &rotationMatPar, const dftParameters &dftParams, const bool rotationMatTranspose=false, const bool doCommAfterBandParal=true)
 Computes X^{T}=Q*X^{T} inplace. X^{T} is the subspaceVectorsArray stored in the column major format (N x M). Q is rotationMatPar (N x N).
 
template<typename T >
void dftfe::linearAlgebraOperations::internal::subspaceRotationSpectrumSplit (const T *X, T *Y, const unsigned int subspaceVectorsArrayLocalSize, const unsigned int N, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const unsigned int numberTopVectors, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiComm, const dftfe::ScaLAPACKMatrix< T > &QMat, const dftParameters &dftParams, const bool QMatTranspose=false)
 Computes Y^{T}=Q*X^{T}.
 
template<typename T , typename TLowPrec >
void dftfe::linearAlgebraOperations::internal::subspaceRotationSpectrumSplitMixedPrec (const T *X, T *Y, const unsigned int subspaceVectorsArrayLocalSize, const unsigned int N, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const unsigned int numberTopVectors, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiComm, const dftfe::ScaLAPACKMatrix< T > &QMat, const dftParameters &dftParams, const bool QMatTranspose=false)
 Computes Y^{T}=Q*X^{T}.
 
template<typename T , typename TLowPrec >
void dftfe::linearAlgebraOperations::internal::subspaceRotationCGSMixedPrec (T *subspaceVectorsArray, const unsigned int subspaceVectorsArrayLocalSize, const unsigned int N, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiComm, const dftfe::ScaLAPACKMatrix< T > &rotationMatPar, const dftParameters &dftParams, const bool rotationMatTranspose=false, const bool doCommAfterBandParal=true)
 Computes X^{T}=Q*X^{T} inplace. X^{T} is the subspaceVectorsArray stored in the column major format (N x M). Q is rotationMatPar (N x N).
 
+
+ + + + diff --git a/linear_algebra_operations_internal_8h_source.html b/linear_algebra_operations_internal_8h_source.html new file mode 100644 index 000000000..5226447f9 --- /dev/null +++ b/linear_algebra_operations_internal_8h_source.html @@ -0,0 +1,421 @@ + + + + + + + +DFT-FE: workspace/include/linearAlgebraOperationsInternal.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
linearAlgebraOperationsInternal.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16
+
17#ifndef linearAlgebraOperationsInternal_h
+
18#define linearAlgebraOperationsInternal_h
+
19
+
20#include <headers.h>
+
21#include <operator.h>
+
22#include "process_grid.h"
+
23#include "scalapackWrapper.h"
+
24#include "dftParameters.h"
+
25
+
26#include <elpa/elpa.h>
+
27#include <unordered_map>
+
28namespace dftfe
+
29{
+
30 namespace linearAlgebraOperations
+
31 {
+
32 /**
+
33 * @brief Contains internal functions used in linearAlgebraOperations
+
34 *
+
35 * @author Sambit Das
+
36 */
+
+
37 namespace internal
+
38 {
+
39 /** @brief setup ELPA parameters.
+
40 *
+
41 */
+
42 void
+ +
44 const MPI_Comm &mpi_communicator,
+ +
46 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+
47 const unsigned int na,
+
48 const unsigned int nev,
+
49 const unsigned int blockSize,
+ +
51 const dftParameters & dftParams);
+
52
+
53 /** @brief Wrapper function to create a two dimensional processor grid for a square matrix in
+
54 * dftfe::ScaLAPACKMatrix storage format.
+
55 *
+
56 */
+
57 void
+ +
59 const MPI_Comm & mpi_communicator,
+
60 const unsigned size,
+
61 std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+ +
63 const bool useOnlyThumbRule = false);
+
64
+
65 /** @brief Wrapper function to create a two dimensional processor grid for a rectangular matrix in
+
66 * dftfe::ScaLAPACKMatrix storage format.
+
67 *
+
68 */
+
69 void
+ +
71 const MPI_Comm & mpi_communicator,
+
72 const unsigned sizeRows,
+
73 const unsigned sizeColumns,
+
74 std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+
75 const dftParameters & dftParams);
+
76
+
77
+
78 /** @brief Creates global row/column id to local row/column ids for dftfe::ScaLAPACKMatrix
+
79 *
+
80 */
+
81 template <typename T>
+
82 void
+ +
84 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+ +
86 std::unordered_map<unsigned int, unsigned int> & globalToLocalRowIdMap,
+
87 std::unordered_map<unsigned int, unsigned int>
+ +
89
+
90
+
91 /** @brief Mpi all reduce of ScaLAPACKMat across a given inter communicator.
+
92 * Used for band parallelization.
+
93 *
+
94 */
+
95 template <typename T>
+
96 void
+ +
98 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+ +
100 const MPI_Comm & interComm);
+
101
+
102
+
103
+
104 /** @brief scale a ScaLAPACKMat with a scalar
+
105 *
+
106 *
+
107 */
+
108 template <typename T>
+
109 void
+ +
111 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+ +
113 const T scalar);
+
114
+
115
+
116 /** @brief MPI_Bcast of ScaLAPACKMat across a given inter communicator from a given broadcast root.
+
117 * Used for band parallelization.
+
118 *
+
119 */
+
120 template <typename T>
+
121 void
+ +
123 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+ +
125 const MPI_Comm & interComm,
+
126 const unsigned int broadcastRoot);
+
127
+
128 /** @brief Computes Sc=X^{T}*Xc and stores in a parallel ScaLAPACK matrix.
+
129 * X^{T} is the subspaceVectorsArray stored in the column major format (N
+
130 * x M). Sc is the overlapMatPar.
+
131 *
+
132 * The overlap matrix computation and filling is done in a blocked
+
133 * approach which avoids creation of full serial overlap matrix memory,
+
134 * and also avoids creation of another full X memory.
+
135 *
+
136 */
+
137 template <typename T>
+
138 void
+ +
140 const T * X,
+
141 const unsigned int XLocalSize,
+
142 const unsigned int numberVectors,
+
143 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+
144 const MPI_Comm & interBandGroupComm,
+
145 const MPI_Comm & mpiComm,
+ +
147 const dftParameters & dftParams);
+
148
+
149
+
150 /** @brief Computes Sc=X^{T}*Xc and stores in a parallel ScaLAPACK matrix.
+
151 * X^{T} is the subspaceVectorsArray stored in the column major format (N
+
152 * x M). Sc is the overlapMatPar.
+
153 *
+
154 * The overlap matrix computation and filling is done in a blocked
+
155 * approach which avoids creation of full serial overlap matrix memory,
+
156 * and also avoids creation of another full X memory.
+
157 *
+
158 */
+
159 template <typename T, typename TLowPrec>
+
160 void
+ +
162 const T * X,
+
163 const unsigned int XLocalSize,
+
164 const unsigned int numberVectors,
+
165 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+
166 const MPI_Comm & interBandGroupComm,
+
167 const MPI_Comm & mpiComm,
+ +
169 const dftParameters & dftParams);
+
170
+
171
+
172 /** @brief Computes X^{T}=Q*X^{T} inplace. X^{T} is the subspaceVectorsArray
+
173 * stored in the column major format (N x M). Q is rotationMatPar (N x N).
+
174 *
+
175 * The subspace rotation inside this function is done in a blocked
+
176 * approach which avoids creation of full serial rotation matrix memory,
+
177 * and also avoids creation of another full subspaceVectorsArray memory.
+
178 * subspaceVectorsArrayLocalSize=N*M
+
179 *
+
180 */
+
181 template <typename T>
+
182 void
+ + +
185 const unsigned int subspaceVectorsArrayLocalSize,
+
186 const unsigned int N,
+
187 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+
188 const MPI_Comm & interBandGroupComm,
+
189 const MPI_Comm & mpiComm,
+ +
191 const dftParameters & dftParams,
+
192 const bool rotationMatTranspose = false,
+
193 const bool isRotationMatLowerTria = false,
+
194 const bool doCommAfterBandParal = true);
+
195
+
196 /** @brief Computes X^{T}=Q*X^{T} inplace. X^{T} is the subspaceVectorsArray
+
197 * stored in the column major format (N x M). Q is rotationMatPar (N x N).
+
198 *
+
199 * The subspace rotation inside this function is done in a blocked
+
200 * approach which avoids creation of full serial rotation matrix memory,
+
201 * and also avoids creation of another full subspaceVectorsArray memory.
+
202 * subspaceVectorsArrayLocalSize=N*M
+
203 *
+
204 */
+
205 template <typename T, typename TLowPrec>
+
206 void
+ + +
209 const unsigned int subspaceVectorsArrayLocalSize,
+
210 const unsigned int N,
+
211 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+
212 const MPI_Comm & interBandGroupComm,
+
213 const MPI_Comm & mpiComm,
+ +
215 const dftParameters & dftParams,
+
216 const bool rotationMatTranspose = false,
+
217 const bool doCommAfterBandParal = true);
+
218
+
219
+
220 /** @brief Computes Y^{T}=Q*X^{T}.
+
221 *
+
222 * X^{T} is stored in the column major format (N x M). Q is extracted from
+
223 * the supplied QMat as Q=QMat{1:numberTopVectors}. If QMat is in column
+
224 * major format set QMatTranspose=false, otherwise set to true if in row
+
225 * major format. The dimensions (in row major format) of QMat could be
+
226 * either a) (N x numberTopVectors) or b) (N x N) where
+
227 * numberTopVectors!=N. In this case it is assumed that Q is stored in the
+
228 * first numberTopVectors columns of QMat. The subspace rotation inside
+
229 * this function is done in a blocked approach which avoids creation of
+
230 * full serial rotation matrix memory, and also avoids creation of another
+
231 * full X memory. subspaceVectorsArrayLocalSize=N*M
+
232 *
+
233 */
+
234 template <typename T>
+
235 void
+ +
237 const T * X,
+
238 T * Y,
+
239 const unsigned int subspaceVectorsArrayLocalSize,
+
240 const unsigned int N,
+
241 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+
242 const unsigned int numberTopVectors,
+
243 const MPI_Comm & interBandGroupComm,
+
244 const MPI_Comm & mpiComm,
+ +
246 const dftParameters & dftParams,
+
247 const bool QMatTranspose = false);
+
248
+
249 /** @brief Computes Y^{T}=Q*X^{T}.
+
250 *
+
251 * X^{T} is stored in the column major format (N x M). Q is extracted from
+
252 * the supplied QMat as Q=QMat{1:numberTopVectors}. If QMat is in column
+
253 * major format set QMatTranspose=false, otherwise set to true if in row
+
254 * major format. The dimensions (in row major format) of QMat could be
+
255 * either a) (N x numberTopVectors) or b) (N x N) where
+
256 * numberTopVectors!=N. In this case it is assumed that Q is stored in the
+
257 * first numberTopVectors columns of QMat. The subspace rotation inside
+
258 * this function is done in a blocked approach which avoids creation of
+
259 * full serial rotation matrix memory, and also avoids creation of another
+
260 * full X memory. subspaceVectorsArrayLocalSize=N*M
+
261 *
+
262 */
+
263 template <typename T, typename TLowPrec>
+
264 void
+ +
266 const T * X,
+
267 T * Y,
+
268 const unsigned int subspaceVectorsArrayLocalSize,
+
269 const unsigned int N,
+
270 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+
271 const unsigned int numberTopVectors,
+
272 const MPI_Comm & interBandGroupComm,
+
273 const MPI_Comm & mpiComm,
+ +
275 const dftParameters & dftParams,
+
276 const bool QMatTranspose = false);
+
277
+
278
+
279 /** @brief Computes X^{T}=Q*X^{T} inplace. X^{T} is the subspaceVectorsArray
+
280 * stored in the column major format (N x M). Q is rotationMatPar (N x N).
+
281 *
+
282 * The subspace rotation inside this function is done in a blocked
+
283 * approach which avoids creation of full serial rotation matrix memory,
+
284 * and also avoids creation of another full subspaceVectorsArray memory.
+
285 * subspaceVectorsArrayLocalSize=N*M
+
286 *
+
287 */
+
288 template <typename T, typename TLowPrec>
+
289 void
+ + +
292 const unsigned int subspaceVectorsArrayLocalSize,
+
293 const unsigned int N,
+
294 const std::shared_ptr<const dftfe::ProcessGrid> &processGrid,
+
295 const MPI_Comm & interBandGroupComm,
+
296 const MPI_Comm & mpiComm,
+ +
298 const dftParameters & dftParams,
+
299 const bool rotationMatTranspose = false,
+
300 const bool doCommAfterBandParal = true);
+
301 } // namespace internal
+
+
302 } // namespace linearAlgebraOperations
+
303} // namespace dftfe
+
304#endif
+
Namespace which declares the input parameters and the functions to parse them from the input paramete...
Definition dftParameters.h:35
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ + +
void subspaceRotationSpectrumSplit(const T *X, T *Y, const unsigned int subspaceVectorsArrayLocalSize, const unsigned int N, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const unsigned int numberTopVectors, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiComm, const dftfe::ScaLAPACKMatrix< T > &QMat, const dftParameters &dftParams, const bool QMatTranspose=false)
Computes Y^{T}=Q*X^{T}.
+
void createProcessGridSquareMatrix(const MPI_Comm &mpi_communicator, const unsigned size, std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const dftParameters &dftParams, const bool useOnlyThumbRule=false)
Wrapper function to create a two dimensional processor grid for a square matrix in dftfe::ScaLAPACKMa...
+
void subspaceRotationCGSMixedPrec(T *subspaceVectorsArray, const unsigned int subspaceVectorsArrayLocalSize, const unsigned int N, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiComm, const dftfe::ScaLAPACKMatrix< T > &rotationMatPar, const dftParameters &dftParams, const bool rotationMatTranspose=false, const bool doCommAfterBandParal=true)
Computes X^{T}=Q*X^{T} inplace. X^{T} is the subspaceVectorsArray stored in the column major format (...
+
void broadcastAcrossInterCommScaLAPACKMat(const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< T > &mat, const MPI_Comm &interComm, const unsigned int broadcastRoot)
MPI_Bcast of ScaLAPACKMat across a given inter communicator from a given broadcast root....
+
void subspaceRotation(T *subspaceVectorsArray, const unsigned int subspaceVectorsArrayLocalSize, const unsigned int N, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiComm, const dftfe::ScaLAPACKMatrix< T > &rotationMatPar, const dftParameters &dftParams, const bool rotationMatTranspose=false, const bool isRotationMatLowerTria=false, const bool doCommAfterBandParal=true)
Computes X^{T}=Q*X^{T} inplace. X^{T} is the subspaceVectorsArray stored in the column major format (...
+
void createProcessGridRectangularMatrix(const MPI_Comm &mpi_communicator, const unsigned sizeRows, const unsigned sizeColumns, std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const dftParameters &dftParams)
Wrapper function to create a two dimensional processor grid for a rectangular matrix in dftfe::ScaLAP...
+
void subspaceRotationMixedPrec(T *subspaceVectorsArray, const unsigned int subspaceVectorsArrayLocalSize, const unsigned int N, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiComm, const dftfe::ScaLAPACKMatrix< T > &rotationMatPar, const dftParameters &dftParams, const bool rotationMatTranspose=false, const bool doCommAfterBandParal=true)
Computes X^{T}=Q*X^{T} inplace. X^{T} is the subspaceVectorsArray stored in the column major format (...
+
void scaleScaLAPACKMat(const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< T > &mat, const T scalar)
scale a ScaLAPACKMat with a scalar
+
void fillParallelOverlapMatrix(const T *X, const unsigned int XLocalSize, const unsigned int numberVectors, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiComm, dftfe::ScaLAPACKMatrix< T > &overlapMatPar, const dftParameters &dftParams)
Computes Sc=X^{T}*Xc and stores in a parallel ScaLAPACK matrix. X^{T} is the subspaceVectorsArray sto...
+
void fillParallelOverlapMatrixMixedPrec(const T *X, const unsigned int XLocalSize, const unsigned int numberVectors, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiComm, dftfe::ScaLAPACKMatrix< T > &overlapMatPar, const dftParameters &dftParams)
Computes Sc=X^{T}*Xc and stores in a parallel ScaLAPACK matrix. X^{T} is the subspaceVectorsArray sto...
+
void sumAcrossInterCommScaLAPACKMat(const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< T > &mat, const MPI_Comm &interComm)
Mpi all reduce of ScaLAPACKMat across a given inter communicator. Used for band parallelization.
+
void setupELPAHandleParameters(const MPI_Comm &mpi_communicator, MPI_Comm &processGridCommunicatorActive, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const unsigned int na, const unsigned int nev, const unsigned int blockSize, elpa_t &elpaHandle, const dftParameters &dftParams)
setup ELPA parameters.
+
void createGlobalToLocalIdMapsScaLAPACKMat(const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const dftfe::ScaLAPACKMatrix< T > &mat, std::unordered_map< unsigned int, unsigned int > &globalToLocalRowIdMap, std::unordered_map< unsigned int, unsigned int > &globalToLocalColumnIdMap)
Creates global row/column id to local row/column ids for dftfe::ScaLAPACKMatrix.
+
void subspaceRotationSpectrumSplitMixedPrec(const T *X, T *Y, const unsigned int subspaceVectorsArrayLocalSize, const unsigned int N, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const unsigned int numberTopVectors, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiComm, const dftfe::ScaLAPACKMatrix< T > &QMat, const dftParameters &dftParams, const bool QMatTranspose=false)
Computes Y^{T}=Q*X^{T}.
+
Definition pseudoPotentialToDftfeConverter.cc:34
+ + + +
+ + + + diff --git a/linear_solver_8h.html b/linear_solver_8h.html new file mode 100644 index 000000000..e265f3ce8 --- /dev/null +++ b/linear_solver_8h.html @@ -0,0 +1,106 @@ + + + + + + + +DFT-FE: workspace/include/linearSolver.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
linearSolver.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  dftfe::linearSolver
 Abstract linear solver base class. More...
 
+ + + +

+Namespaces

namespace  dftfe
 
+
+ + + + diff --git a/linear_solver_8h_source.html b/linear_solver_8h_source.html new file mode 100644 index 000000000..199cdb5af --- /dev/null +++ b/linear_solver_8h_source.html @@ -0,0 +1,161 @@ + + + + + + + +DFT-FE: workspace/include/linearSolver.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
linearSolver.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18
+ +
20
+
21#ifndef linearSolver_H_
+
22# define linearSolver_H_
+
23
+
24namespace dftfe
+
25{
+
26 /**
+
27 * @brief Abstract linear solver base class.
+
28 *
+
29 * @author Sambit Das
+
30 */
+
+ +
32 {
+
33 public:
+
34 /// Constructor
+ +
36
+
37 /**
+
38 * @brief Solve linear system, A*x=Rhs
+
39 *
+
40 * @param problem linearSolverProblem object (functor) to compute Rhs and A*x, and preconditioning
+
41 * @param relTolerance Tolerance (relative) required for convergence.
+
42 * @param maxNumberIterations Maximum number of iterations.
+
43 * @param debugLevel Debug output level:
+
44 * 0 - no debug output
+
45 * 1 - limited debug output
+
46 * 2 - all debug output.
+
47 */
+
48 virtual void
+ +
50 const double relTolerance,
+
51 const unsigned int maxNumberIterations,
+
52 const int debugLevel = 0,
+
53 bool distributeFlag = true) = 0;
+
54
+
55 private:
+
56 };
+
+
57
+
58} // namespace dftfe
+
59#endif
+
Abstract class for linear solve problems to be used with the dealiiLinearSolver interface.
Definition dealiiLinearSolverProblem.h:31
+
Abstract linear solver base class.
Definition linearSolver.h:32
+
virtual void solve(dealiiLinearSolverProblem &problem, const double relTolerance, const unsigned int maxNumberIterations, const int debugLevel=0, bool distributeFlag=true)=0
Solve linear system, A*x=Rhs.
+
linearSolver()
Constructor.
+
Base class for building the DFT operator and the action of operator on a vector.
Definition operator.h:45
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/linear_solver_c_g_device_8h.html b/linear_solver_c_g_device_8h.html new file mode 100644 index 000000000..8ee574323 --- /dev/null +++ b/linear_solver_c_g_device_8h.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: workspace/include/linearSolverCGDevice.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
linearSolverCGDevice.h File Reference
+
+ + + + + diff --git a/linear_solver_c_g_device_8h_source.html b/linear_solver_c_g_device_8h_source.html new file mode 100644 index 000000000..18701e3df --- /dev/null +++ b/linear_solver_c_g_device_8h_source.html @@ -0,0 +1,221 @@ + + + + + + + +DFT-FE: workspace/include/linearSolverCGDevice.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
linearSolverCGDevice.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18
+
19#if defined(DFTFE_WITH_DEVICE)
+
20# ifndef linearSolverCGDevice_H_
+
21# define linearSolverCGDevice_H_
+
22
+
23# include <linearSolverDevice.h>
+ +
25# include <MemoryStorage.h>
+
26# include <BLASWrapper.h>
+
27namespace dftfe
+
28{
+
29 /**
+
30 * @brief conjugate gradient device linear solver class wrapper
+
31 *
+
32 * @author Gourab Panigrahi
+
33 */
+
34 class linearSolverCGDevice : public linearSolverDevice
+
35 {
+
36 public:
+
37 enum solverType
+
38 {
+
39 CG = 0,
+
40 GMRES
+
41 };
+
42
+
43 /**
+
44 * @brief Constructor
+
45 *
+
46 * @param mpi_comm_parent parent mpi communicato
+
47 * @param mpi_comm_domain domain mpi communicator
+
48 * @param type enum specifying the choice of the linear solver
+
49 */
+
50 linearSolverCGDevice(
+
51 const MPI_Comm & mpi_comm_parent,
+
52 const MPI_Comm & mpi_comm_domain,
+
53 const solverType type,
+
54 const std::shared_ptr<
+ +
56 BLASWrapperPtr);
+
57
+
58 /**
+
59 * @brief Solve linear system, A*x=Rhs
+
60 *
+
61 * @param problem linearSolverProblemDevice object (functor) to compute Rhs and A*x, and preconditioning
+
62 * @param relTolerance Tolerance (relative) required for convergence.
+
63 * @param maxNumberIterations Maximum number of iterations.
+
64 * @param debugLevel Debug output level:
+
65 * 0 - no debug output
+
66 * 1 - limited debug output
+
67 * 2 - all debug output.
+
68 */
+
69 void
+
70 solve(linearSolverProblemDevice &problem,
+
71 const double absTolerance,
+
72 const unsigned int maxNumberIterations,
+
73 const int debugLevel = 0,
+
74 bool distributeFlag = true);
+
75
+
76 private:
+
77 /// enum denoting the choice of the linear solver
+
78 const solverType d_type;
+
79
+
80 /// define some temporary vectors
+
81 distributedDeviceVec<double> d_qvec, d_rvec, d_dvec;
+
82
+
83 int d_xLocalDof;
+
84 double *d_devSumPtr;
+ +
86 d_devSum;
+
87
+
88 const MPI_Comm d_mpiCommParent;
+
89 const MPI_Comm mpi_communicator;
+
90 const unsigned int n_mpi_processes;
+
91 const unsigned int this_mpi_process;
+
92 dealii::ConditionalOStream pcout;
+
93 std::shared_ptr<
+ +
95 d_BLASWrapperPtr;
+
96
+
97 /**
+
98 * @brief Combines precondition and dot product
+
99 *
+
100 */
+
101 double
+
102 applyPreconditionAndComputeDotProduct(const double *jacobi);
+
103
+
104 /**
+
105 * @brief Combines precondition, sadd and dot product
+
106 *
+
107 */
+
108 double
+
109 applyPreconditionComputeDotProductAndSadd(const double *jacobi);
+
110
+
111 /**
+
112 * @brief Combines scaling and norm
+
113 *
+
114 */
+
115 double
+
116 scaleXRandComputeNorm(double *x, const double &alpha);
+
117 };
+
118
+
119} // namespace dftfe
+
120# endif // linearSolverCGDevice_H_
+
121#endif
+ + +
Definition BLASWrapper.h:34
+
Definition MemoryStorage.h:33
+ + +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/linear_solver_device_8h.html b/linear_solver_device_8h.html new file mode 100644 index 000000000..75b2c12f1 --- /dev/null +++ b/linear_solver_device_8h.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: workspace/include/linearSolverDevice.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
linearSolverDevice.h File Reference
+
+ + + + + diff --git a/linear_solver_device_8h_source.html b/linear_solver_device_8h_source.html new file mode 100644 index 000000000..e4f0eeefe --- /dev/null +++ b/linear_solver_device_8h_source.html @@ -0,0 +1,157 @@ + + + + + + + +DFT-FE: workspace/include/linearSolverDevice.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
linearSolverDevice.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18
+
19#if defined(DFTFE_WITH_DEVICE)
+
20# ifndef linearSolverDevice_H_
+
21# define linearSolverDevice_H_
+
22
+ +
24# include <DeviceTypeConfig.h>
+
25namespace dftfe
+
26{
+
27 /**
+
28 * @brief Abstract linear solver base class.
+
29 *
+
30 * @author Sambit Das, Gourab Panigrahi
+
31 */
+
32 class linearSolverDevice
+
33 {
+
34 public:
+
35 /// Constructor
+
36 linearSolverDevice();
+
37
+
38 /**
+
39 * @brief Solve linear system, A*x=Rhs
+
40 *
+
41 * @param problem linearSolverProblemDevice object (functor) to compute Rhs and A*x, and preconditioning
+
42 * @param relTolerance Tolerance (relative) required for convergence.
+
43 * @param maxNumberIterations Maximum number of iterations.
+
44 * @param debugLevel Debug output level:
+
45 * 0 - no debug output
+
46 * 1 - limited debug output
+
47 * 2 - all debug output.
+
48 */
+
49 virtual void
+
50 solve(linearSolverProblemDevice &problem,
+
51 const double absTolerance,
+
52 const unsigned int maxNumberIterations,
+
53 const int debugLevel = 0,
+
54 bool distributeFlag = true) = 0;
+
55
+
56 private:
+
57 };
+
58
+
59} // namespace dftfe
+
60# endif // linearSolverDevice_H_
+
61#endif
+ + +
Definition pseudoPotentialToDftfeConverter.cc:34
+
+ + + + diff --git a/linear_solver_problem_device_8h.html b/linear_solver_problem_device_8h.html new file mode 100644 index 000000000..0c793871e --- /dev/null +++ b/linear_solver_problem_device_8h.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: workspace/include/linearSolverProblemDevice.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
linearSolverProblemDevice.h File Reference
+
+ + + + + diff --git a/linear_solver_problem_device_8h_source.html b/linear_solver_problem_device_8h_source.html new file mode 100644 index 000000000..ad3dbda1b --- /dev/null +++ b/linear_solver_problem_device_8h_source.html @@ -0,0 +1,192 @@ + + + + + + + +DFT-FE: workspace/include/linearSolverProblemDevice.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
DFT-FE 1.1.0-pre +
+
Density Functional Theory With Finite-Elements
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
linearSolverProblemDevice.h
+
+
+Go to the documentation of this file.
1// ---------------------------------------------------------------------
+
2//
+
3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
+
4// authors.
+
5//
+
6// This file is part of the DFT-FE code.
+
7//
+
8// The DFT-FE code is free software; you can use it, redistribute
+
9// it, and/or modify it under the terms of the GNU Lesser General
+
10// Public License as published by the Free Software Foundation; either
+
11// version 2.1 of the License, or (at your option) any later version.
+
12// The full text of the license can be found in the file LICENSE at
+
13// the top level of the DFT-FE distribution.
+
14//
+
15// ---------------------------------------------------------------------
+
16//
+
17
+
18#if defined(DFTFE_WITH_DEVICE)
+
19# ifndef linearSolverProblemDevice_H_
+
20# define linearSolverProblemDevice_H_
+
21
+
22# include <headers.h>
+
23
+
24namespace dftfe
+
25{
+
26 /**
+
27 * @brief Abstract class for linear solver problems to be used with the linearSolverCGDevice interface.
+
28 *
+
29 * @author Phani Motamarri, Sambit Das, Gourab Panigrahi
+
30 */
+
31 class linearSolverProblemDevice
+
32 {
+
33 public:
+
34 /**
+
35 * @brief Constructor.
+
36 */
+
37 linearSolverProblemDevice();
+
38
+
39 /**
+
40 * @brief get the reference to x field
+
41 *
+
42 * @return reference to x field. Assumes x field data structure is already initialized
+
43 */
+
44 virtual distributedDeviceVec<double> &
+
45 getX() = 0;
+
46
+
47 /**
+
48 * @brief get the reference to Preconditioner
+
49 *
+
50 * @return reference to Preconditioner
+
51 */
+
52 virtual distributedDeviceVec<double> &
+
53 getPreconditioner() = 0;
+
54
+
55 /**
+
56 * @brief Compute A matrix multipled by x.
+
57 *
+
58 */
+
59 virtual void
+
60 computeAX(distributedDeviceVec<double> &dst,
+
61 distributedDeviceVec<double> &src) = 0;
+
62
+
63 /**
+
64 * @brief Compute right hand side vector for the problem Ax = rhs.
+
65 *
+
66 * @param rhs vector for the right hand side values
+
67 */
+
68 virtual void
+
69 computeRhs(distributedCPUVec<double> &rhs) = 0;
+
70
+
71 /**
+
72 * @brief distribute x to the constrained nodes.
+
73 *
+
74 */
+
75 virtual void
+
76 setX() = 0;
+
77
+
78 virtual void
+
79 distributeX() = 0;
+
80
+
81 /**
+
82 * @brief copies x from device to host
+
83 *
+
84 */
+
85 virtual void
+
86 copyXfromDeviceToHost() = 0;
+
87
+
88 // protected:
+
89
+
90 /// typedef declaration needed by dealii
+
91 typedef dealii::types::global_dof_index size_type;
+
92 };
+
93
+
94} // namespace dftfe
+
95# endif // linearSolverProblemDevice_H_
+
96#endif
+ +
Definition pseudoPotentialToDftfeConverter.cc:34
+
unsigned int size_type
Definition TypeConfig.h:6
+
+ + + + diff --git a/menu.js b/menu.js new file mode 100644 index 000000000..717761d01 --- /dev/null +++ b/menu.js @@ -0,0 +1,134 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + let result=''; + if ('children' in data) { + result+='
    '; + for (let i in data.children) { + let url; + const link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + let searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
'+ + '
'+ + '
 '+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBoxHtml='
'+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + const $mainMenuState = $('#main-menu-state'); + let prevWidth = 0; + if ($mainMenuState.length) { + const initResizableIfExists = function() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function() { + const $menu = $('#main-menu'); + let options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = () => $menu.css('display', 'block'); + $menu.hide().slideDown(options); + } else { + options['complete'] = () => $menu.css('display', 'none'); + $menu.show().slideUp(options); + } + }); + // set default menu visibility + const resetState = function() { + const $menu = $('#main-menu'); + const newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/menudata.js b/menudata.js new file mode 100644 index 000000000..0a59a7db0 --- /dev/null +++ b/menudata.js @@ -0,0 +1,118 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions_b.html#index_b"}, +{text:"c",url:"functions_c.html#index_c"}, +{text:"d",url:"functions_d.html#index_d"}, +{text:"e",url:"functions_e.html#index_e"}, +{text:"f",url:"functions_f.html#index_f"}, +{text:"g",url:"functions_g.html#index_g"}, +{text:"h",url:"functions_h.html#index_h"}, +{text:"i",url:"functions_i.html#index_i"}, +{text:"j",url:"functions_j.html#index_j"}, +{text:"k",url:"functions_k.html#index_k"}, +{text:"l",url:"functions_l.html#index_l"}, +{text:"m",url:"functions_m.html#index_m"}, +{text:"n",url:"functions_n.html#index_n"}, +{text:"o",url:"functions_o.html#index_o"}, +{text:"p",url:"functions_p.html#index_p"}, +{text:"q",url:"functions_q.html#index_q"}, +{text:"r",url:"functions_r.html#index_r"}, +{text:"s",url:"functions_s.html#index_s"}, +{text:"t",url:"functions_t.html#index_t"}, +{text:"u",url:"functions_u.html#index_u"}, +{text:"v",url:"functions_v.html#index_v"}, +{text:"w",url:"functions_w.html#index_w"}, +{text:"x",url:"functions_x.html#index_x"}, +{text:"z",url:"functions_z.html#index_z"}, +{text:"~",url:"functions_~.html#index__7E"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"b",url:"functions_func_b.html#index_b"}, +{text:"c",url:"functions_func_c.html#index_c"}, +{text:"d",url:"functions_func_d.html#index_d"}, +{text:"e",url:"functions_func_e.html#index_e"}, +{text:"f",url:"functions_func_f.html#index_f"}, +{text:"g",url:"functions_func_g.html#index_g"}, +{text:"h",url:"functions_func_h.html#index_h"}, +{text:"i",url:"functions_func_i.html#index_i"}, +{text:"j",url:"functions_func_j.html#index_j"}, +{text:"k",url:"functions_func_k.html#index_k"}, +{text:"l",url:"functions_func_l.html#index_l"}, +{text:"m",url:"functions_func_m.html#index_m"}, +{text:"n",url:"functions_func_n.html#index_n"}, +{text:"o",url:"functions_func_o.html#index_o"}, +{text:"p",url:"functions_func_p.html#index_p"}, +{text:"q",url:"functions_func_q.html#index_q"}, +{text:"r",url:"functions_func_r.html#index_r"}, +{text:"s",url:"functions_func_s.html#index_s"}, +{text:"t",url:"functions_func_t.html#index_t"}, +{text:"u",url:"functions_func_u.html#index_u"}, +{text:"v",url:"functions_func_v.html#index_v"}, +{text:"w",url:"functions_func_w.html#index_w"}, +{text:"x",url:"functions_func_x.html#index_x"}, +{text:"z",url:"functions_func_z.html#index_z"}, +{text:"~",url:"functions_func_~.html#index__7E"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"a",url:"functions_vars.html#index_a"}, +{text:"b",url:"functions_vars_b.html#index_b"}, +{text:"c",url:"functions_vars_c.html#index_c"}, +{text:"d",url:"functions_vars_d.html#index_d"}, +{text:"e",url:"functions_vars_e.html#index_e"}, +{text:"f",url:"functions_vars_f.html#index_f"}, +{text:"g",url:"functions_vars_g.html#index_g"}, +{text:"h",url:"functions_vars_h.html#index_h"}, +{text:"i",url:"functions_vars_i.html#index_i"}, +{text:"k",url:"functions_vars_k.html#index_k"}, +{text:"l",url:"functions_vars_l.html#index_l"}, +{text:"m",url:"functions_vars_m.html#index_m"}, +{text:"n",url:"functions_vars_n.html#index_n"}, +{text:"o",url:"functions_vars_o.html#index_o"}, +{text:"p",url:"functions_vars_p.html#index_p"}, +{text:"r",url:"functions_vars_r.html#index_r"}, +{text:"s",url:"functions_vars_s.html#index_s"}, +{text:"t",url:"functions_vars_t.html#index_t"}, +{text:"u",url:"functions_vars_u.html#index_u"}, +{text:"v",url:"functions_vars_v.html#index_v"}, +{text:"w",url:"functions_vars_w.html#index_w"}, +{text:"x",url:"functions_vars_x.html#index_x"}, +{text:"z",url:"functions_vars_z.html#index_z"}]}, +{text:"Typedefs",url:"functions_type.html"}, +{text:"Enumerations",url:"functions_enum.html"}, +{text:"Enumerator",url:"functions_eval.html"}, +{text:"Related Symbols",url:"functions_rela.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"File Members",url:"globals.html",children:[ +{text:"All",url:"globals.html"}, +{text:"Macros",url:"globals_defs.html"}]}]}]} diff --git a/mesh_gen_utils_8h.html b/mesh_gen_utils_8h.html new file mode 100644 index 000000000..63f9e4d92 --- /dev/null +++ b/mesh_gen_utils_8h.html @@ -0,0 +1,118 @@ + + + + + + + +DFT-FE: workspace/include/meshGenUtils.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    meshGenUtils.h File Reference
    +
    +
    +
    #include <headers.h>
    +#include "dftParameters.h"
    +
    +

    Go to the source code of this file.

    + + + + + + +

    +Namespaces

    namespace  dftfe
     
    namespace  dftfe::meshGenUtils
     
    + + + + + + + + + + + + + +

    +Functions

    void dftfe::meshGenUtils::cross_product (std::vector< double > &a, std::vector< double > &b, std::vector< double > &crossProduct)
     
    void dftfe::meshGenUtils::computePeriodicFaceNormals (std::vector< std::vector< double > > &latticeVectors, std::vector< std::vector< double > > &periodicFaceNormals)
     
    void dftfe::meshGenUtils::computeOffsetVectors (std::vector< std::vector< double > > &latticeVectors, std::vector< dealii::Tensor< 1, 3 > > &offsetVectors)
     
    double dftfe::meshGenUtils::getCosineAngle (dealii::Tensor< 1, 3 > &Vector1, std::vector< double > &Vector2)
     
    double dftfe::meshGenUtils::getCosineAngle (std::vector< double > &Vector1, std::vector< double > &Vector2)
     
    void dftfe::meshGenUtils::markPeriodicFacesNonOrthogonal (dealii::Triangulation< 3, 3 > &triangulation, std::vector< std::vector< double > > &latticeVectors, const MPI_Comm &mpiCommParent, const dftParameters &dftParams)
     
    +
    + + + + diff --git a/mesh_gen_utils_8h_source.html b/mesh_gen_utils_8h_source.html new file mode 100644 index 000000000..910c6c3f3 --- /dev/null +++ b/mesh_gen_utils_8h_source.html @@ -0,0 +1,392 @@ + + + + + + + +DFT-FE: workspace/include/meshGenUtils.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    meshGenUtils.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
    +
    4// authors.
    +
    5//
    +
    6// This file is part of the DFT-FE code.
    +
    7//
    +
    8// The DFT-FE code is free software; you can use it, redistribute
    +
    9// it, and/or modify it under the terms of the GNU Lesser General
    +
    10// Public License as published by the Free Software Foundation; either
    +
    11// version 2.1 of the License, or (at your option) any later version.
    +
    12// The full text of the license can be found in the file LICENSE at
    +
    13// the top level of the DFT-FE distribution.
    +
    14//
    +
    15// ---------------------------------------------------------------------
    +
    16//
    +
    17// @author Sambit Das, Phani Motamarri
    +
    18//
    +
    19
    +
    20#ifndef meshGenUtils_H_
    +
    21#define meshGenUtils_H_
    +
    22
    +
    23#include <headers.h>
    +
    24#include "dftParameters.h"
    +
    25
    +
    26namespace dftfe
    +
    27{
    +
    +
    28 namespace meshGenUtils
    +
    29 {
    +
    30 inline void
    +
    +
    31 cross_product(std::vector<double> &a,
    +
    32 std::vector<double> &b,
    +
    33 std::vector<double> &crossProduct)
    +
    34 {
    +
    35 crossProduct.resize(a.size(), 0.0);
    +
    36
    +
    37 crossProduct[0] = a[1] * b[2] - a[2] * b[1];
    +
    38 crossProduct[1] = a[2] * b[0] - a[0] * b[2];
    +
    39 crossProduct[2] = a[0] * b[1] - a[1] * b[0];
    +
    40 }
    +
    +
    41
    +
    42 inline void
    +
    + +
    44 std::vector<std::vector<double>> &latticeVectors,
    +
    45 std::vector<std::vector<double>> &periodicFaceNormals)
    +
    46 {
    +
    47 // resize periodic face normal
    +
    48 periodicFaceNormals.resize(3);
    +
    49
    +
    50
    +
    51 // evaluate cross product between first two lattice vectors
    + + + +
    55
    +
    56 // evaluate cross product between second two lattice vectors
    + + + +
    60
    +
    61
    +
    62 // evaluate cross product between third and first two lattice vectors
    + + + +
    66 }
    +
    +
    67
    +
    68 inline void
    +
    +
    69 computeOffsetVectors(std::vector<std::vector<double>> & latticeVectors,
    +
    70 std::vector<dealii::Tensor<1, 3>> &offsetVectors)
    +
    71 {
    +
    72 // create unitVectorsXYZ
    +
    73 std::vector<std::vector<double>> unitVectorsXYZ;
    +
    74 unitVectorsXYZ.resize(3);
    +
    75
    +
    76 for (int i = 0; i < 3; ++i)
    +
    77 {
    +
    78 unitVectorsXYZ[i].resize(3, 0.0);
    +
    79 unitVectorsXYZ[i][i] = 0.0;
    +
    80 }
    +
    81
    +
    82
    +
    83 // resize offset vectors
    +
    84 offsetVectors.resize(3);
    +
    85
    +
    86 for (int i = 0; i < 3; ++i)
    +
    87 {
    +
    88 for (int j = 0; j < 3; ++j)
    +
    89 {
    + +
    91 }
    +
    92 }
    +
    93 }
    +
    +
    94
    +
    95
    +
    +
    96 inline double getCosineAngle(dealii::Tensor<1, 3> &Vector1,
    +
    97 std::vector<double> & Vector2)
    +
    98 {
    +
    99 double dotProduct = Vector1[0] * Vector2[0] + Vector1[1] * Vector2[1] +
    +
    100 Vector1[2] * Vector2[2];
    +
    101 double lengthVector1Sq =
    +
    102 (Vector1[0] * Vector1[0] + Vector1[1] * Vector1[1] +
    +
    103 Vector1[2] * Vector1[2]);
    +
    104 double lengthVector2Sq =
    +
    105 (Vector2[0] * Vector2[0] + Vector2[1] * Vector2[1] +
    +
    106 Vector2[2] * Vector2[2]);
    +
    107
    + +
    109
    +
    110 return angle;
    +
    111 }
    +
    +
    112
    +
    113
    +
    114 inline double
    +
    +
    115 getCosineAngle(std::vector<double> &Vector1, std::vector<double> &Vector2)
    +
    116 {
    +
    117 double dotProduct = Vector1[0] * Vector2[0] + Vector1[1] * Vector2[1] +
    +
    118 Vector1[2] * Vector2[2];
    +
    119 double lengthVector1Sq =
    +
    120 (Vector1[0] * Vector1[0] + Vector1[1] * Vector1[1] +
    +
    121 Vector1[2] * Vector1[2]);
    +
    122 double lengthVector2Sq =
    +
    123 (Vector2[0] * Vector2[0] + Vector2[1] * Vector2[1] +
    +
    124 Vector2[2] * Vector2[2]);
    +
    125
    + +
    127
    +
    128 return angle;
    +
    129 }
    +
    +
    130
    +
    131
    +
    + +
    133 dealii::Triangulation<3, 3> & triangulation,
    +
    134 std::vector<std::vector<double>> &latticeVectors,
    +
    135 const MPI_Comm & mpiCommParent,
    +
    136 const dftParameters & dftParams)
    +
    137 {
    +
    138 dealii::ConditionalOStream pcout(
    +
    139 std::cout,
    +
    140 (dealii::Utilities::MPI::this_mpi_process(mpiCommParent) == 0));
    +
    141 std::vector<std::vector<double>> periodicFaceNormals;
    +
    142 std::vector<dealii::Tensor<1, 3>> offsetVectors;
    +
    143 // bool periodicX = dftParameters::periodicX, periodicY =
    +
    144 // dftParameters::periodicY, periodicZ=dftParameters::periodicZ;
    +
    145
    +
    146 // compute periodic face normals from lattice vector information
    + +
    148
    +
    149 // compute offset vectors such that lattice vectors plus offset vectors
    +
    150 // are alligned along spatial x,y,z directions
    + +
    152
    +
    153 if (dftParams.verbosity >= 4)
    +
    154 {
    +
    155 pcout << "Periodic Face Normals 1: " << periodicFaceNormals[0][0]
    +
    156 << " " << periodicFaceNormals[0][1] << " "
    +
    157 << periodicFaceNormals[0][2] << std::endl;
    +
    158 pcout << "Periodic Face Normals 2: " << periodicFaceNormals[1][0]
    +
    159 << " " << periodicFaceNormals[1][1] << " "
    +
    160 << periodicFaceNormals[1][2] << std::endl;
    +
    161 pcout << "Periodic Face Normals 3: " << periodicFaceNormals[2][0]
    +
    162 << " " << periodicFaceNormals[2][1] << " "
    +
    163 << periodicFaceNormals[2][2] << std::endl;
    +
    164 }
    +
    165
    +
    166 dealii::QGauss<2> quadratureFace_formula(2);
    +
    167 dealii::FESystem<3> FE(dealii::FE_Q<3>(dealii::QGaussLobatto<1>(2)), 1);
    +
    168 dealii::FEFaceValues<3> feFace_values(FE,
    + +
    170 dealii::update_normal_vectors);
    +
    171
    +
    172 typename dealii::Triangulation<3, 3>::active_cell_iterator cell, endc;
    +
    173 //
    +
    174 // mark faces
    +
    175 //
    +
    176 // const unsigned int px=dftParameters::periodicX,
    +
    177 // py=dftParameters::periodicX, pz=dftParameters::periodicX;
    +
    178 //
    +
    179 cell = triangulation.begin_active(), endc = triangulation.end();
    +
    180 const std::array<int, 3> periodic = {dftParams.periodicX,
    +
    181 dftParams.periodicY,
    +
    182 dftParams.periodicZ};
    +
    183 for (; cell != endc; ++cell)
    +
    184 {
    +
    185 for (unsigned int f = 0; f < dealii::GeometryInfo<3>::faces_per_cell;
    +
    186 ++f)
    +
    187 {
    +
    188 const dealii::Point<3> face_center = cell->face(f)->center();
    +
    189 if (cell->face(f)->at_boundary())
    +
    190 {
    +
    191 feFace_values.reinit(cell, f);
    +
    192 dealii::Tensor<1, 3> faceNormalVector =
    +
    193 feFace_values.normal_vector(0);
    +
    194
    +
    195 // std::cout<<"Face normal vector: "<<faceNormalVector[0]<<"
    +
    196 // "<<faceNormalVector[1]<<"
    +
    197 // "<<faceNormalVector[2]<<std::endl; pcout<<"Angle :
    +
    198 // "<<getCosineAngle(faceNormalVector,periodicFaceNormals[0])<<"
    +
    199 // "<<getCosineAngle(faceNormalVector,periodicFaceNormals[1])<<"
    +
    200 // "<<getCosineAngle(faceNormalVector,periodicFaceNormals[2])<<std::endl;
    +
    201
    +
    202 unsigned int i = 1;
    +
    203
    +
    204 for (unsigned int d = 0; d < 3; ++d)
    +
    205 {
    +
    206 if (periodic[d] == 1)
    +
    207 {
    +
    208 if (std::abs(getCosineAngle(faceNormalVector,
    + +
    210 1.0) < 1.0e-05)
    +
    211 cell->face(f)->set_boundary_id(i);
    +
    212 else if (std::abs(
    + + +
    215 1.0) < 1.0e-05)
    +
    216 cell->face(f)->set_boundary_id(i + 1);
    +
    217 i = i + 2;
    +
    218 }
    +
    219 }
    +
    220 }
    +
    221 }
    +
    222 }
    +
    223
    +
    224 std::vector<int> periodicDirectionVector;
    +
    225
    +
    226 for (unsigned int d = 0; d < 3; ++d)
    +
    227 {
    +
    228 if (periodic[d] == 1)
    +
    229 {
    +
    230 periodicDirectionVector.push_back(d);
    +
    231 }
    +
    232 }
    +
    233
    +
    234 // pcout << "Done with Boundary Flags\n";
    +
    235 std::vector<dealii::GridTools::PeriodicFacePair<
    +
    236 typename dealii::Triangulation<3, 3>::cell_iterator>>
    + +
    238 for (int i = 0; i < std::accumulate(periodic.begin(), periodic.end(), 0);
    +
    239 ++i)
    +
    240 {
    +
    241 dealii::GridTools::collect_periodic_faces(
    + +
    243 /*b_id1*/ 2 * i + 1,
    +
    244 /*b_id2*/ 2 * i + 2,
    +
    245 /*direction*/ periodicDirectionVector[i],
    + + +
    248 // dealii::GridTools::collect_periodic_faces(triangulation, /*b_id1*/
    +
    249 // 2*i+1,
    +
    250 // /*b_id2*/ 2*i+2,/*direction*/ i, periodicity_vector);
    +
    251 }
    +
    252 triangulation.add_periodicity(periodicity_vector);
    +
    253
    +
    254 if (dftParams.verbosity >= 4)
    +
    255 pcout << "Periodic Facepairs size: " << periodicity_vector.size()
    +
    256 << std::endl;
    +
    257 /*
    +
    258 for(unsigned int i=0; i< periodicity_vector.size(); ++i)
    +
    259 {
    +
    260 if (!periodicity_vector[i].cell[0]->active() ||
    +
    261 !periodicity_vector[i].cell[1]->active()) continue; if
    +
    262 (periodicity_vector[i].cell[0]->is_artificial() ||
    +
    263 periodicity_vector[i].cell[1]->is_artificial()) continue;
    +
    264
    +
    265 std::cout << "matched face pairs: "<<
    +
    266 periodicity_vector[i].cell[0]->face(periodicity_vector[i].face_idx[0])->boundary_id()
    +
    267 << " "<<
    +
    268 periodicity_vector[i].cell[1]->face(periodicity_vector[i].face_idx[1])->boundary_id()<<std::endl;
    +
    269 }
    +
    270 */
    +
    271 }
    +
    +
    272
    +
    273 } // namespace meshGenUtils
    +
    +
    274} // namespace dftfe
    +
    275#endif
    +
    Namespace which declares the input parameters and the functions to parse them from the input paramete...
    Definition dftParameters.h:35
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    + + +
    void cross_product(std::vector< double > &a, std::vector< double > &b, std::vector< double > &crossProduct)
    Definition meshGenUtils.h:31
    +
    void computeOffsetVectors(std::vector< std::vector< double > > &latticeVectors, std::vector< dealii::Tensor< 1, 3 > > &offsetVectors)
    Definition meshGenUtils.h:69
    +
    double getCosineAngle(dealii::Tensor< 1, 3 > &Vector1, std::vector< double > &Vector2)
    Definition meshGenUtils.h:96
    +
    void computePeriodicFaceNormals(std::vector< std::vector< double > > &latticeVectors, std::vector< std::vector< double > > &periodicFaceNormals)
    Definition meshGenUtils.h:43
    +
    void markPeriodicFacesNonOrthogonal(dealii::Triangulation< 3, 3 > &triangulation, std::vector< std::vector< double > > &latticeVectors, const MPI_Comm &mpiCommParent, const dftParameters &dftParams)
    Definition meshGenUtils.h:132
    +
    Definition pseudoPotentialToDftfeConverter.cc:34
    +
    + + + + diff --git a/mesh_movement_8h.html b/mesh_movement_8h.html new file mode 100644 index 000000000..4ec933670 --- /dev/null +++ b/mesh_movement_8h.html @@ -0,0 +1,108 @@ + + + + + + + +DFT-FE: workspace/include/meshMovement.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    meshMovement.h File Reference
    +
    +
    +
    #include "constants.h"
    +#include "headers.h"
    +#include "dftParameters.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  dftfe::meshMovementClass
     Base class to move triangulation vertices. More...
     
    + + + +

    +Namespaces

    namespace  dftfe
     
    +
    + + + + diff --git a/mesh_movement_8h_source.html b/mesh_movement_8h_source.html new file mode 100644 index 000000000..f6e38b5d4 --- /dev/null +++ b/mesh_movement_8h_source.html @@ -0,0 +1,269 @@ + + + + + + + +DFT-FE: workspace/include/meshMovement.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    meshMovement.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
    +
    4// authors.
    +
    5//
    +
    6// This file is part of the DFT-FE code.
    +
    7//
    +
    8// The DFT-FE code is free software; you can use it, redistribute
    +
    9// it, and/or modify it under the terms of the GNU Lesser General
    +
    10// Public License as published by the Free Software Foundation; either
    +
    11// version 2.1 of the License, or (at your option) any later version.
    +
    12// The full text of the license can be found in the file LICENSE at
    +
    13// the top level of the DFT-FE distribution.
    +
    14//
    +
    15// ---------------------------------------------------------------------
    +
    16//
    +
    17
    +
    18
    +
    19#ifndef meshMovement_H_
    +
    20#define meshMovement_H_
    +
    21#include "constants.h"
    +
    22#include "headers.h"
    +
    23#include "dftParameters.h"
    +
    24
    +
    25namespace dftfe
    +
    26{
    +
    27 /**
    +
    28 * @brief Base class to move triangulation vertices
    +
    29 *
    +
    30 * @author Sambit Das
    +
    31 */
    +
    + +
    33 {
    +
    34 public:
    +
    35 /** @brief Constructor
    +
    36 *
    +
    37 * @param[in] mpi_comm_parent parent mpi communicator
    +
    38 * @param[in] mpi_comm_domain mpi communicator for domain decomposition
    +
    39 */
    + + + +
    43
    +
    + +
    45 {}
    +
    +
    46
    +
    47 /** @brief Initializes the required data-structures for a given triangulation
    +
    48 *
    +
    49 * @param[in] triangulation triangulation object whose nodes are to be
    +
    50 * moved
    +
    51 * @param[in] serial triangulation to create constraints from serial
    +
    52 * dofHandler (temporary fix)
    +
    53 * @param[in] domainBoundingVectors domain vectors of the domain
    +
    54 * corresponding to the triangulation object.
    +
    55 */
    +
    56 void init(dealii::Triangulation<3, 3> & triangulation,
    +
    57 dealii::Triangulation<3, 3> & serialTriangulation,
    +
    58 const std::vector<std::vector<double>> &domainBoundingVectors);
    +
    59
    +
    60 /** @brief Re-initializes the required data-structures for a given triangulation
    +
    61 *
    +
    62 * @param[in] domainBoundingVectors current domain vectors of the domain
    +
    63 * corresponding to the triangulation object.
    +
    64 */
    +
    65 void
    +
    66 initMoved(const std::vector<std::vector<double>> &domainBoundingVectors);
    +
    67
    +
    68 /** @brief Finds the closest triangulation vertices to a given vector of position coordinates
    +
    69 *
    +
    70 * @param[in] destinationPoints vector of points in cartesian coordinates
    +
    71 * (origin at center of the domain) to which closest triangulation vertices
    +
    72 * are desired.
    +
    73 * @param[out] closestTriaVertexToDestPointsLocation vector of positions of
    +
    74 * the closest triangulation v vertices.
    +
    75 * @param[out] dispClosestTriaVerticesToDestPoints vector of displacements
    +
    76 * of the destinationPoints from the closest triangulation vertices.
    +
    77 */
    +
    78 void
    + +
    80 const std::vector<dealii::Point<3>> &destinationPoints,
    +
    81 std::vector<dealii::Point<3>> &closestTriaVertexToDestPointsLocation,
    +
    82 std::vector<dealii::Tensor<1, 3, double>>
    + +
    84
    +
    85 protected:
    +
    86 /// Initializes the parallel layout of d_incrementalDisplacementParallel
    +
    87 void
    + +
    89
    +
    90 /// Takes care of communicating the movement of triangulation vertices on
    +
    91 /// processor boundaries, and also takes care of hanging nodes and periodic
    +
    92 /// constraints
    +
    93 void
    + +
    95
    +
    96 /// Function which updates the locally relevant triangulation vertices
    +
    97 void
    + +
    99
    +
    100 /// Function which moves subdivided mesh
    +
    101 void
    + +
    103
    +
    104 /// Performs periodic matching sanity check and returns the pair<if negative
    +
    105 /// jacobian, maximum inverse jacobian magnitude>
    +
    106 std::pair<bool, double>
    + +
    108
    +
    109 // virtual void computeIncrement()=0;
    +
    110
    +
    111 /// vector of displacements of the triangulation vertices
    +
    112 // dealii::Vector<double> d_incrementalDisplacement;
    + +
    114
    + +
    116
    +
    117 // dealii based FE data structres
    +
    118 dealii::FESystem<3> FEMoveMesh;
    +
    119 dealii::DoFHandler<3> d_dofHandlerMoveMesh;
    +
    120 dealii::parallel::distributed::Triangulation<3> *d_triaPtr;
    +
    121 dealii::Triangulation<3, 3> * d_triaPtrSerial;
    +
    122 dealii::IndexSet d_locally_owned_dofs;
    +
    123 dealii::IndexSet d_locally_relevant_dofs;
    +
    124 dealii::AffineConstraints<double> d_constraintsMoveMesh;
    +
    125 std::vector<dealii::GridTools::PeriodicFacePair<
    +
    126 typename dealii::DoFHandler<3>::cell_iterator>>
    + +
    128 std::vector<std::vector<double>> d_domainBoundingVectors;
    +
    129
    + +
    131
    +
    132 // parallel objects
    + + +
    135 const unsigned int this_mpi_process;
    +
    136 dealii::ConditionalOStream pcout;
    +
    137 };
    +
    +
    138} // namespace dftfe
    +
    139#endif
    +
    Namespace which declares the input parameters and the functions to parse them from the input paramete...
    Definition dftParameters.h:35
    +
    Base class to move triangulation vertices.
    Definition meshMovement.h:33
    +
    MPI_Comm mpi_communicator
    Definition meshMovement.h:134
    +
    std::vector< std::vector< double > > d_domainBoundingVectors
    Definition meshMovement.h:128
    +
    dealii::AffineConstraints< double > d_constraintsMoveMesh
    Definition meshMovement.h:124
    +
    distributedCPUVec< double > d_incrementalDisplacement
    vector of displacements of the triangulation vertices
    Definition meshMovement.h:113
    +
    dealii::FESystem< 3 > FEMoveMesh
    Definition meshMovement.h:118
    +
    meshMovementClass(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const dftParameters &dftParams)
    Constructor.
    +
    void initMoved(const std::vector< std::vector< double > > &domainBoundingVectors)
    Re-initializes the required data-structures for a given triangulation.
    +
    dealii::IndexSet d_locally_relevant_dofs
    Definition meshMovement.h:123
    +
    void findClosestVerticesToDestinationPoints(const std::vector< dealii::Point< 3 > > &destinationPoints, std::vector< dealii::Point< 3 > > &closestTriaVertexToDestPointsLocation, std::vector< dealii::Tensor< 1, 3, double > > &dispClosestTriaVerticesToDestPoints)
    Finds the closest triangulation vertices to a given vector of position coordinates.
    +
    const unsigned int this_mpi_process
    Definition meshMovement.h:135
    +
    void updateTriangulationVertices()
    Function which updates the locally relevant triangulation vertices.
    +
    std::pair< bool, double > movedMeshCheck()
    +
    void init(dealii::Triangulation< 3, 3 > &triangulation, dealii::Triangulation< 3, 3 > &serialTriangulation, const std::vector< std::vector< double > > &domainBoundingVectors)
    Initializes the required data-structures for a given triangulation.
    +
    dealii::ConditionalOStream pcout
    Definition meshMovement.h:136
    +
    dealii::IndexSet d_locally_owned_dofs
    Definition meshMovement.h:122
    +
    void moveSubdividedMesh()
    Function which moves subdivided mesh.
    +
    std::vector< dealii::GridTools::PeriodicFacePair< typename dealii::DoFHandler< 3 >::cell_iterator > > d_periodicity_vector
    Definition meshMovement.h:127
    + +
    void initIncrementField()
    Initializes the parallel layout of d_incrementalDisplacementParallel.
    +
    dealii::DoFHandler< 3 > d_dofHandlerMoveMesh
    Definition meshMovement.h:119
    +
    virtual ~meshMovementClass()
    Definition meshMovement.h:44
    +
    bool d_isParallelMesh
    Definition meshMovement.h:115
    +
    dealii::parallel::distributed::Triangulation< 3 > * d_triaPtr
    Definition meshMovement.h:120
    +
    MPI_Comm d_mpiCommParent
    Definition meshMovement.h:133
    +
    const dftParameters & d_dftParams
    Definition meshMovement.h:130
    +
    dealii::Triangulation< 3, 3 > * d_triaPtrSerial
    Definition meshMovement.h:121
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    + + + +
    Definition pseudoPotentialToDftfeConverter.cc:34
    +
    + + + + diff --git a/mesh_movement_affine_transform_8h.html b/mesh_movement_affine_transform_8h.html new file mode 100644 index 000000000..5e44fb6f2 --- /dev/null +++ b/mesh_movement_affine_transform_8h.html @@ -0,0 +1,106 @@ + + + + + + + +DFT-FE: workspace/include/meshMovementAffineTransform.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    meshMovementAffineTransform.h File Reference
    +
    +
    +
    #include "meshMovement.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  dftfe::meshMovementAffineTransform
     Class to update triangulation under affine transformation. More...
     
    + + + +

    +Namespaces

    namespace  dftfe
     
    +
    + + + + diff --git a/mesh_movement_affine_transform_8h_source.html b/mesh_movement_affine_transform_8h_source.html new file mode 100644 index 000000000..6e99eb2ef --- /dev/null +++ b/mesh_movement_affine_transform_8h_source.html @@ -0,0 +1,178 @@ + + + + + + + +DFT-FE: workspace/include/meshMovementAffineTransform.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    meshMovementAffineTransform.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
    +
    4// authors.
    +
    5//
    +
    6// This file is part of the DFT-FE code.
    +
    7//
    +
    8// The DFT-FE code is free software; you can use it, redistribute
    +
    9// it, and/or modify it under the terms of the GNU Lesser General
    +
    10// Public License as published by the Free Software Foundation; either
    +
    11// version 2.1 of the License, or (at your option) any later version.
    +
    12// The full text of the license can be found in the file LICENSE at
    +
    13// the top level of the DFT-FE distribution.
    +
    14//
    +
    15// ---------------------------------------------------------------------
    +
    16
    +
    17
    +
    18#ifndef meshMovementAffineTransform_H_
    +
    19#define meshMovementAffineTransform_H_
    +
    20#include "meshMovement.h"
    +
    21
    +
    22namespace dftfe
    +
    23{
    +
    24 /**
    +
    25 * @brief Class to update triangulation under affine transformation
    +
    26 *
    +
    27 * @author Sambit Das
    +
    28 */
    +
    + +
    30 {
    +
    31 public:
    +
    32 /** @brief Constructor
    +
    33 *
    +
    34 * @param mpi_comm_parent parent mpi communicator
    +
    35 * @param mpi_comm_domain mpi communicator domain decomposition
    +
    36 */
    + + + +
    40
    +
    41 /** @brief Performs affine transformation of the triangulation
    +
    42 *
    +
    43 * @param deformationGradient
    +
    44 * @return std::pair<bool,double> mesh quality metrics
    +
    45 * pair(bool for is negative jacobian, maximum jacobian ratio)
    +
    46 */
    +
    47 std::pair<bool, double>
    +
    48 transform(const dealii::Tensor<2, 3, double> &deformationGradient);
    +
    49
    +
    50 /// Not implemented, just present to override the pure virtual from base
    +
    51 /// class
    +
    52 std::pair<bool, double>
    +
    53 moveMesh(const std::vector<dealii::Point<3>> &controlPointLocations,
    +
    54 const std::vector<dealii::Tensor<1, 3, double>>
    + +
    56 const double controllingParameter,
    +
    57 const bool moveSubdivided = false);
    +
    58
    +
    59 private:
    +
    60 /** @brief internal function which computes the nodal increment field in the local processor
    +
    61 *
    +
    62 */
    +
    63 void
    + +
    65
    +
    66 /// storage for the deformation gradient to be applied to the triangulation
    +
    67 dealii::Tensor<2, 3, double> d_deformationGradient;
    +
    68 };
    +
    +
    69
    +
    70} // namespace dftfe
    +
    71
    +
    72#endif
    +
    Namespace which declares the input parameters and the functions to parse them from the input paramete...
    Definition dftParameters.h:35
    +
    Class to update triangulation under affine transformation.
    Definition meshMovementAffineTransform.h:30
    +
    void computeIncrement()
    internal function which computes the nodal increment field in the local processor
    +
    std::pair< bool, double > transform(const dealii::Tensor< 2, 3, double > &deformationGradient)
    Performs affine transformation of the triangulation.
    +
    dealii::Tensor< 2, 3, double > d_deformationGradient
    storage for the deformation gradient to be applied to the triangulation
    Definition meshMovementAffineTransform.h:67
    +
    meshMovementAffineTransform(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const dftParameters &dftParams)
    Constructor.
    +
    std::pair< bool, double > moveMesh(const std::vector< dealii::Point< 3 > > &controlPointLocations, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements, const double controllingParameter, const bool moveSubdivided=false)
    +
    Base class to move triangulation vertices.
    Definition meshMovement.h:33
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    + +
    Definition pseudoPotentialToDftfeConverter.cc:34
    +
    + + + + diff --git a/mesh_movement_gaussian_8h.html b/mesh_movement_gaussian_8h.html new file mode 100644 index 000000000..e8498b795 --- /dev/null +++ b/mesh_movement_gaussian_8h.html @@ -0,0 +1,106 @@ + + + + + + + +DFT-FE: workspace/include/meshMovementGaussian.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    meshMovementGaussian.h File Reference
    +
    +
    +
    #include "meshMovement.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  dftfe::meshMovementGaussianClass
     Class to move triangulation nodes using Gaussian functions attached to control points. More...
     
    + + + +

    +Namespaces

    namespace  dftfe
     
    +
    + + + + diff --git a/mesh_movement_gaussian_8h_source.html b/mesh_movement_gaussian_8h_source.html new file mode 100644 index 000000000..045d9ffac --- /dev/null +++ b/mesh_movement_gaussian_8h_source.html @@ -0,0 +1,213 @@ + + + + + + + +DFT-FE: workspace/include/meshMovementGaussian.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    meshMovementGaussian.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
    +
    4// authors.
    +
    5//
    +
    6// This file is part of the DFT-FE code.
    +
    7//
    +
    8// The DFT-FE code is free software; you can use it, redistribute
    +
    9// it, and/or modify it under the terms of the GNU Lesser General
    +
    10// Public License as published by the Free Software Foundation; either
    +
    11// version 2.1 of the License, or (at your option) any later version.
    +
    12// The full text of the license can be found in the file LICENSE at
    +
    13// the top level of the DFT-FE distribution.
    +
    14//
    +
    15// ---------------------------------------------------------------------
    +
    16
    +
    17
    +
    18#ifndef meshMovementGaussian_H_
    +
    19#define meshMovementGaussian_H_
    +
    20#include "meshMovement.h"
    +
    21
    +
    22namespace dftfe
    +
    23{
    +
    24 /**
    +
    25 * @brief Class to move triangulation nodes using Gaussian functions attached to control points
    +
    26 *
    +
    27 * @author Sambit Das
    +
    28 */
    +
    + +
    30 {
    +
    31 public:
    +
    32 /** @brief Constructor
    +
    33 *
    +
    34 * @param mpi_comm_parent parent mpi communicator
    +
    35 * @param mpi_comm_domain mpi communicator for domain decomposition
    +
    36 */
    + + + +
    40
    +
    41 /** @brief Moves the triangulation corresponding to Gaussians attached to control points
    +
    42 *
    +
    43 * This functions takes into account the hanging node and periodic
    +
    44 * constraints when computing the nodal increment field.
    +
    45 *
    +
    46 * @param controlPointLocations vector of coordinates of control points
    +
    47 * @param controlPointDisplacements vector of displacements of control points
    +
    48 * @ controllingParameter constant in the Gaussian function:
    +
    49 * exp(-(r/controllingParameter)^pow) where pow is controlled via the input
    +
    50 * file parameter (.prm)
    +
    51 * @return std::pair<bool,double> mesh quality metrics
    +
    52 * pair(bool for is negative jacobian, maximum jacobian ratio)
    +
    53 */
    +
    54 std::pair<bool, double>
    +
    55 moveMesh(const std::vector<dealii::Point<3>> &controlPointLocations,
    +
    56 const std::vector<dealii::Tensor<1, 3, double>>
    + +
    58 const std::vector<double> &gaussianWidthParameter,
    +
    59 const std::vector<double> &flatTopWidthParameter,
    +
    60 const bool moveSubdivided = false);
    +
    61
    +
    62
    +
    63
    +
    64 std::pair<bool, double>
    +
    65 moveMeshTwoStep(const std::vector<dealii::Point<3>> &controlPointLocations1,
    +
    66 const std::vector<dealii::Point<3>> &controlPointLocations2,
    +
    67 const std::vector<dealii::Tensor<1, 3, double>>
    + +
    69 const std::vector<dealii::Tensor<1, 3, double>>
    + +
    71 const std::vector<double> &controllingParameter1,
    +
    72 const std::vector<double> &controllingParameter2,
    +
    73 const std::vector<double> &flatTopWidthParameter,
    +
    74 const bool moveSubdivided = false);
    +
    75
    +
    76
    +
    77 void
    + +
    79
    +
    80
    +
    81 private:
    +
    82 /** @brief internal function which computes the nodal increment field in the local processor
    +
    83 *
    +
    84 */
    +
    85 void
    +
    86 computeIncrement(const std::vector<dealii::Point<3>> &controlPointLocations,
    +
    87 const std::vector<dealii::Tensor<1, 3, double>>
    + +
    89 const std::vector<double> &gaussianWidthParameter,
    +
    90 const std::vector<double> &flatTopWidthParameter);
    +
    91
    +
    92 void
    + +
    94 const std::vector<dealii::Point<3>> &controlPointLocations1,
    +
    95 const std::vector<dealii::Point<3>> &controlPointLocations2,
    +
    96 const std::vector<dealii::Tensor<1, 3, double>>
    + +
    98 const std::vector<dealii::Tensor<1, 3, double>>
    + +
    100 const std::vector<double> &gaussianWidthParameter1,
    +
    101 const std::vector<double> &gaussianWidthParameter2,
    +
    102 const std::vector<double> &flatTopWidthParameter);
    +
    103 };
    +
    +
    104
    +
    105} // namespace dftfe
    +
    106#endif
    +
    Namespace which declares the input parameters and the functions to parse them from the input paramete...
    Definition dftParameters.h:35
    +
    Base class to move triangulation vertices.
    Definition meshMovement.h:33
    +
    Class to move triangulation nodes using Gaussian functions attached to control points.
    Definition meshMovementGaussian.h:30
    +
    std::pair< bool, double > moveMesh(const std::vector< dealii::Point< 3 > > &controlPointLocations, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements, const std::vector< double > &gaussianWidthParameter, const std::vector< double > &flatTopWidthParameter, const bool moveSubdivided=false)
    Moves the triangulation corresponding to Gaussians attached to control points.
    +
    std::pair< bool, double > moveMeshTwoStep(const std::vector< dealii::Point< 3 > > &controlPointLocations1, const std::vector< dealii::Point< 3 > > &controlPointLocations2, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements1, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements2, const std::vector< double > &controllingParameter1, const std::vector< double > &controllingParameter2, const std::vector< double > &flatTopWidthParameter, const bool moveSubdivided=false)
    + +
    void computeIncrementTwoStep(const std::vector< dealii::Point< 3 > > &controlPointLocations1, const std::vector< dealii::Point< 3 > > &controlPointLocations2, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements1, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements2, const std::vector< double > &gaussianWidthParameter1, const std::vector< double > &gaussianWidthParameter2, const std::vector< double > &flatTopWidthParameter)
    +
    meshMovementGaussianClass(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domaim, const dftParameters &dftParams)
    Constructor.
    +
    void computeIncrement(const std::vector< dealii::Point< 3 > > &controlPointLocations, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements, const std::vector< double > &gaussianWidthParameter, const std::vector< double > &flatTopWidthParameter)
    internal function which computes the nodal increment field in the local processor
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    + +
    Definition pseudoPotentialToDftfeConverter.cc:34
    +
    + + + + diff --git a/minus.svg b/minus.svg new file mode 100644 index 000000000..f70d0c1a1 --- /dev/null +++ b/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/minusd.svg b/minusd.svg new file mode 100644 index 000000000..5f8e87962 --- /dev/null +++ b/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/mixing_class_8h.html b/mixing_class_8h.html new file mode 100644 index 000000000..48cc2e295 --- /dev/null +++ b/mixing_class_8h.html @@ -0,0 +1,119 @@ + + + + + + + +DFT-FE: workspace/include/mixingClass.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    mixingClass.h File Reference
    +
    +
    +
    #include <deque>
    +#include <headers.h>
    +#include <dftParameters.h>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  dftfe::MixingScheme
     This class performs the anderson mixing in a variable agnostic way This class takes can take different input variables as input in a std::vector format and computes the mixing coefficients These coefficients can then be used to compute the new variable at the start of the SCF. More...
     
    + + + +

    +Namespaces

    namespace  dftfe
     
    + + + + +

    +Enumerations

    enum class  dftfe::mixingVariable { dftfe::rho +, dftfe::gradRho +, dftfe::magZ +, dftfe::gradMagZ + }
     Enum class that stores he list of variables that will can be used in the mixing scheme. More...
     
    +
    + + + + diff --git a/mixing_class_8h_source.html b/mixing_class_8h_source.html new file mode 100644 index 000000000..fa6c49fac --- /dev/null +++ b/mixing_class_8h_source.html @@ -0,0 +1,320 @@ + + + + + + + +DFT-FE: workspace/include/mixingClass.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    mixingClass.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
    +
    4// authors.
    +
    5//
    +
    6// This file is part of the DFT-FE code.
    +
    7//
    +
    8// The DFT-FE code is free software; you can use it, redistribute
    +
    9// it, and/or modify it under the terms of the GNU Lesser General
    +
    10// Public License as published by the Free Software Foundation; either
    +
    11// version 2.1 of the License, or (at your option) any later version.
    +
    12// The full text of the license can be found in the file LICENSE at
    +
    13// the top level of the DFT-FE distribution.
    +
    14//
    +
    15// ---------------------------------------------------------------------
    +
    16
    +
    17#ifndef DFTFE_MIXINGCLASS_H
    +
    18#define DFTFE_MIXINGCLASS_H
    +
    19
    +
    20#include <deque>
    +
    21#include <headers.h>
    +
    22#include <dftParameters.h>
    +
    23
    +
    24namespace dftfe
    +
    25{
    +
    26 /**
    +
    27 * @brief Enum class that stores he list of variables that will can be
    +
    28 * used in the mixing scheme
    +
    29 *
    +
    30 */
    +
    +
    31 enum class mixingVariable
    +
    32 {
    +
    33 rho,
    +
    34 gradRho,
    +
    35 magZ,
    + +
    37 };
    +
    +
    38
    +
    39 /**
    +
    40 * @brief This class performs the anderson mixing in a variable agnostic way
    +
    41 * This class takes can take different input variables as input in a
    +
    42 * std::vector format and computes the mixing coefficients These coefficients
    +
    43 * can then be used to compute the new variable at the start of the SCF.
    +
    44 * @author Vishal Subramanian
    +
    45 */
    +
    + +
    47 {
    +
    48 public:
    + + +
    51 const unsigned int verbosity);
    +
    52
    +
    53 unsigned int
    + +
    55
    +
    56 /**
    +
    57 * @brief Computes the mixing coefficients.
    +
    58 *
    +
    59 */
    +
    60 void
    + +
    62 const std::vector<mixingVariable> mixingVariablesList);
    +
    63
    +
    64 /**
    +
    65 * @brief Computes the adaptive mixing parameter.
    +
    66 *
    +
    67 */
    +
    68 void
    + +
    70
    +
    71 /**
    +
    72 * @brief Deletes the old history if the length exceeds max length of history
    +
    73 *
    +
    74 */
    +
    75 void
    +
    76 popOldHistory(unsigned int mixingHistory);
    +
    77
    +
    78 /**
    +
    79 * @brief Clears all the the history.
    +
    80 *
    +
    81 */
    +
    82 void
    + +
    84
    +
    85 /**
    +
    86 * @brief This function is used to add the mixing variables and its corresponding
    +
    87 * JxW values
    +
    88 * For dependent variables which are not used in mixing, the
    +
    89 * weightDotProducts is set to a vector of size zero. Later the dependent
    +
    90 * variables can be mixed with the same mixing coefficients.
    +
    91 *
    +
    92 */
    +
    93 void
    + + + + +
    98 const bool performMPIReduce,
    +
    99 const double mixingValue,
    +
    100 const bool adaptMixingValue);
    +
    101
    +
    102 /**
    +
    103 * @brief Adds to the input history
    +
    104 *
    +
    105 */
    +
    106 void
    + +
    108 const double * inputVariableToInHist,
    +
    109 const unsigned int length);
    +
    110
    +
    111 /**
    +
    112 * @brief Adds to the residual history
    +
    113 *
    +
    114 */
    +
    115 void
    + +
    117 const double * inputVariableToResidualHist,
    +
    118 const unsigned int length);
    +
    119
    +
    120 /**
    +
    121 * @brief Computes the input for the next iteration based on the anderson coefficients
    +
    122 *
    +
    123 */
    +
    124 void
    + +
    126 double * outputVariable,
    +
    127 const unsigned int lenVar);
    +
    128
    +
    129
    +
    130 private:
    +
    131 /**
    +
    132 * @brief Computes the matrix A and c vector that will be needed for anderson mixing.
    +
    133 * This function computes the A and c values for each variable which will be
    +
    134 * then added up in computeAndersonMixingCoeff()
    +
    135 */
    +
    136 void
    + +
    138 const std::deque<
    + +
    140 &inHist,
    +
    141 const std::deque<
    + +
    143 &outHist,
    + + +
    146 const bool isPerformMixing,
    +
    147 const bool isMPIAllReduce,
    +
    148 std::vector<double> &A,
    +
    149 std::vector<double> &c);
    +
    150
    +
    151 std::vector<double> d_A, d_c;
    +
    152 double d_cFinal;
    +
    153
    +
    154 std::map<
    + +
    156 std::deque<
    + + +
    159 std::map<
    + + + +
    163 std::map<mixingVariable, bool> d_performMPIReduce;
    +
    164
    + +
    166
    +
    167 std::map<mixingVariable, double> d_mixingParameter;
    +
    168 std::map<mixingVariable, bool> d_adaptMixingParameter;
    + + + + +
    173 unsigned int d_mixingHistory;
    +
    174 std::map<mixingVariable, bool> d_performMixing;
    +
    175 const int d_verbosity;
    +
    176
    +
    177
    +
    178 /// conditional stream object
    +
    179 dealii::ConditionalOStream pcout;
    +
    180 };
    +
    +
    181} // end of namespace dftfe
    +
    182#endif // DFTFE_MIXINGCLASS_H
    +
    This class performs the anderson mixing in a variable agnostic way This class takes can take differen...
    Definition mixingClass.h:47
    +
    void clearHistory()
    Clears all the the history.
    +
    std::vector< double > d_A
    Definition mixingClass.h:151
    +
    const MPI_Comm d_mpi_comm_domain
    Definition mixingClass.h:165
    +
    bool d_anyMixingParameterAdaptive
    Definition mixingClass.h:169
    +
    std::map< mixingVariable, bool > d_adaptMixingParameter
    Definition mixingClass.h:168
    +
    void mixVariable(const mixingVariable mixingVariableName, double *outputVariable, const unsigned int lenVar)
    Computes the input for the next iteration based on the anderson coefficients.
    +
    unsigned int lengthOfHistory()
    +
    void popOldHistory(unsigned int mixingHistory)
    Deletes the old history if the length exceeds max length of history.
    +
    const MPI_Comm d_mpi_comm_parent
    Definition mixingClass.h:165
    +
    void computeAndersonMixingCoeff(const std::vector< mixingVariable > mixingVariablesList)
    Computes the mixing coefficients.
    +
    void addVariableToInHist(const mixingVariable mixingVariableName, const double *inputVariableToInHist, const unsigned int length)
    Adds to the input history.
    +
    bool d_adaptiveMixingParameterDecAllIterations
    Definition mixingClass.h:171
    +
    std::vector< double > d_c
    Definition mixingClass.h:151
    +
    std::map< mixingVariable, std::deque< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > > d_variableHistoryResidual
    Definition mixingClass.h:158
    +
    dealii::ConditionalOStream pcout
    conditional stream object
    Definition mixingClass.h:179
    +
    bool d_adaptiveMixingParameterDecLastIteration
    Definition mixingClass.h:170
    +
    unsigned int d_mixingHistory
    Definition mixingClass.h:173
    +
    std::map< mixingVariable, std::deque< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > > d_variableHistoryIn
    Definition mixingClass.h:158
    +
    void addVariableToResidualHist(const mixingVariable mixingVariableName, const double *inputVariableToResidualHist, const unsigned int length)
    Adds to the residual history.
    +
    double d_cFinal
    Definition mixingClass.h:152
    +
    void addMixingVariable(const mixingVariable mixingVariableList, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &weightDotProducts, const bool performMPIReduce, const double mixingValue, const bool adaptMixingValue)
    This function is used to add the mixing variables and its corresponding JxW values For dependent vari...
    +
    bool d_adaptiveMixingParameterIncAllIterations
    Definition mixingClass.h:172
    +
    std::map< mixingVariable, bool > d_performMixing
    Definition mixingClass.h:174
    +
    void computeMixingMatrices(const std::deque< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &inHist, const std::deque< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &outHist, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &weightDotProducts, const bool isPerformMixing, const bool isMPIAllReduce, std::vector< double > &A, std::vector< double > &c)
    Computes the matrix A and c vector that will be needed for anderson mixing. This function computes th...
    +
    std::map< mixingVariable, dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > d_vectorDotProductWeights
    Definition mixingClass.h:162
    +
    void computeAdaptiveAndersonMixingParameter()
    Computes the adaptive mixing parameter.
    +
    std::map< mixingVariable, bool > d_performMPIReduce
    Definition mixingClass.h:163
    +
    std::map< mixingVariable, double > d_mixingParameter
    Definition mixingClass.h:167
    +
    MixingScheme(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const unsigned int verbosity)
    +
    const int d_verbosity
    Definition mixingClass.h:175
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    +
    Definition MemoryStorage.h:33
    + + +
    Definition pseudoPotentialToDftfeConverter.cc:34
    +
    mixingVariable
    Enum class that stores he list of variables that will can be used in the mixing scheme.
    Definition mixingClass.h:32
    + + + + +
    + + + + diff --git a/molecular_dynamics_class_8h.html b/molecular_dynamics_class_8h.html new file mode 100644 index 000000000..b66ac618f --- /dev/null +++ b/molecular_dynamics_class_8h.html @@ -0,0 +1,110 @@ + + + + + + + +DFT-FE: workspace/include/molecularDynamicsClass.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    molecularDynamicsClass.h File Reference
    +
    +
    +
    #include "constants.h"
    +#include "headers.h"
    +#include <vector>
    +#include <memory>
    +#include "dftBase.h"
    +#include "dftfeWrapper.h"
    +
    +

    Go to the source code of this file.

    + + + + +

    +Classes

    class  dftfe::molecularDynamicsClass
     
    + + + +

    +Namespaces

    namespace  dftfe
     
    +
    + + + + diff --git a/molecular_dynamics_class_8h_source.html b/molecular_dynamics_class_8h_source.html new file mode 100644 index 000000000..511c0d8d9 --- /dev/null +++ b/molecular_dynamics_class_8h_source.html @@ -0,0 +1,627 @@ + + + + + + + +DFT-FE: workspace/include/molecularDynamicsClass.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    molecularDynamicsClass.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
    +
    4// authors.
    +
    5//
    +
    6// This file is part of the DFT-FE code.
    +
    7//
    +
    8// The DFT-FE code is free software; you can use it, redistribute
    +
    9// it, and/or modify it under the terms of the GNU Lesser General
    +
    10// Public License as published by the Free Software Foundation; either
    +
    11// version 2.1 of the License, or (at your option) any later version.
    +
    12// The full text of the license can be found in the file LICENSE at
    +
    13// the top level of the DFT-FE distribution.
    +
    14//
    +
    15// ---------------------------------------------------------------------
    +
    16//
    +
    17// @author Kartick Ramakrishnan
    +
    18//
    +
    19
    +
    20#ifndef molecularDynamicsClass_H_
    +
    21#define molecularDynamicsClass_H_
    +
    22#include "constants.h"
    +
    23#include "headers.h"
    +
    24#include <vector>
    +
    25#include <memory>
    +
    26#include "dftBase.h"
    +
    27#include "dftfeWrapper.h"
    +
    28
    +
    29
    +
    30namespace dftfe
    +
    31{
    +
    + +
    33 {
    +
    34 public:
    +
    35 /**
    +
    36 * @brief molecularDynamicsClass constructor: copy data from dftparameters to the memebrs of molecularDynamicsClass
    +
    37 *
    +
    38 *
    +
    39 * @param[in] dftBase *_dftBasePtr pointer to base class of dftClass
    +
    40 * @param[in] mpi_comm_parent parent mpi communicator
    +
    41 */
    + +
    43 const std::string restartFilesPath,
    + +
    45 const bool restart,
    +
    46 const int verbosity,
    +
    47 const bool useDevice);
    +
    48
    +
    49
    +
    50 const double haPerBohrToeVPerAng = 27.211386245988 / 0.529177210903;
    +
    51 const double haToeV = 27.211386245988;
    +
    52 const double bohrToAng = 0.529177210903;
    +
    53 const double AngTobohr = 1.0 / bohrToAng;
    +
    54 const double kB = 8.617333262e-05; // eV/K **3.166811429e-6**;
    +
    55
    + +
    57 /**
    +
    58 * @brief runMD: Assign atom mass to charge. Create vectors for displacement, velocity, force.
    +
    59 * Create KE vector, TE vector, PE vector. Initialise velocities from
    +
    60 * Boltsmann distribution. Set Center of Mass velocities to be 0. Call the
    +
    61 * resepective ensemble based on input file
    +
    62 *
    +
    63 *
    +
    64 */
    +
    65 int
    + +
    67
    +
    68
    +
    69
    +
    70 private:
    +
    71 // pointer to dft class
    +
    72 std::unique_ptr<dftfeWrapper> d_dftfeWrapper;
    + +
    74
    +
    75 // parallel communication objects
    + +
    77 const unsigned int d_this_mpi_process;
    +
    78
    +
    79 // conditional stream object
    +
    80 dealii::ConditionalOStream pcout;
    +
    81
    +
    82 std::string d_restartFilesPath;
    +
    83 const int d_verbosity;
    +
    84
    +
    85 unsigned int d_restartFlag;
    + +
    87 double d_TimeStep;
    +
    88 unsigned int d_TimeIndex;
    +
    89 unsigned int d_numberofSteps;
    + + +
    92 std::string d_ThermostatType;
    + + +
    95 std::vector<std::vector<double>> d_atomFractionalunwrapped;
    +
    96 std::vector<double> d_domainLength;
    + + +
    99
    +
    100
    +
    101 /**
    +
    102 * @brief mdNVE Performs a Ccanonical Ensemble MD calculation. The inital temperature is set by runMD().
    +
    103 * Temperature is NOT_CONTROLLED. Controls the timeloop.
    +
    104
    +
    105 * @param[in] atomMass Stores the mass of each Charge.
    +
    106 * @param[out] KineticEnergyVector Stores KineticEnergy at each TimeStep
    +
    107 * @param[out] InternalEnergyVector Stores InternalEnergy at each TimeStep
    +
    108 * @param[out] EntropicEnergyVector Stores PotentialEnergy at each TimeStep
    +
    109 * @param[out] TotalEnergyVector Stores TotalEnergy at each TimeStep
    +
    110 * @param[out] displacements Stores the displacment of each Charge, updated
    +
    111 at each TimeStep
    +
    112 * @param[out] velocity Stores the velocity of each Charge, updated at each
    +
    113 TimeStep
    +
    114 * @param[out] force Stores the -ve of force on each charge, updated at each
    +
    115 TimeStep
    +
    116 *
    +
    117 *
    +
    118 *
    +
    119 */
    +
    120 int
    +
    121 mdNVE(std::vector<double> & KineticEnergyVector,
    +
    122 std::vector<double> & InternalEnergyVector,
    +
    123 std::vector<double> & EntropicEnergyVector,
    +
    124 std::vector<double> & TotalEnergyVector,
    +
    125 std::vector<dealii::Tensor<1, 3, double>> &displacements,
    +
    126 std::vector<double> & velocity,
    +
    127 std::vector<double> & force,
    +
    128 const std::vector<double> & atomMass);
    +
    129 /**
    +
    130
    +
    131 @brief mdNVTnosehoverchainsThermostat Performs a Canonical Ensemble MD calculation. The inital temperature is set by runMD().
    +
    132 * Thermostat type is NOSE_HOVER_CHAINS. Controls the timeloop.
    +
    133 *
    +
    134 * @param[in] atomMass Stores the mass of each Charge.
    +
    135 * @param[out] KineticEnergyVector Stores KineticEnergy at each TimeStep
    +
    136 * @param[out] InternalEnergyVector Stores InternalEnergy at each TimeStep
    +
    137 * @param[out] EntropicEnergyVector Stores PotentialEnergy at each TimeStep
    +
    138 * @param[out] TotalEnergyVector Stores TotalEnergy at each TimeStep
    +
    139 * @param[out] displacements Stores the displacment of each Charge, updated
    +
    140 at each TimeStep
    +
    141 * @param[out] velocity Stores the velocity of each Charge, updated at each
    +
    142 TimeStep
    +
    143 * @param[out] force Stores the -ve of force on each charge, updated at each
    +
    144 TimeStep
    +
    145 *
    +
    146 *
    +
    147 *
    +
    148 */
    +
    149 int
    + +
    151 std::vector<double> & KineticEnergyVector,
    +
    152 std::vector<double> & InternalEnergyVector,
    +
    153 std::vector<double> & EntropicEnergyVector,
    +
    154 std::vector<double> & TotalEnergyVector,
    +
    155 std::vector<dealii::Tensor<1, 3, double>> &displacements,
    +
    156 std::vector<double> & velocity,
    +
    157 std::vector<double> & force,
    +
    158 const std::vector<double> & atomMass);
    +
    159
    +
    160 /**
    +
    161
    +
    162 @brief mdNVTrescaleThermostat Performs a Constant Kinetic Energy Ensemble MD calculation. The inital temperature is set by runMD().
    +
    163 * Thermostat type is RESCALE. Controls the timeloop. At timestep which is
    +
    164 multiple of Thermostat time constatn, the veloctites are rescaled *such that
    +
    165 the temperature is set to inital temperature .
    +
    166 *
    +
    167 * @param[in] atomMass Stores the mass of each Charge.
    +
    168 * @param[out] KineticEnergyVector Stores KineticEnergy at each TimeStep
    +
    169 * @param[out] InternalEnergyVector Stores InternalEnergy at each TimeStep
    +
    170 * @param[out] EntropicEnergyVector Stores PotentialEnergy at each TimeStep
    +
    171 * @param[out] TotalEnergyVector Stores TotalEnergy at each TimeStep
    +
    172 * @param[out] displacements Stores the displacment of each Charge, updated
    +
    173 at each TimeStep
    +
    174 * @param[out] velocity Stores the velocity of each Charge, updated at each
    +
    175 TimeStep
    +
    176 * @param[out] force Stores the -ve of force on each charge, updated at each
    +
    177 TimeStep
    +
    178 *
    +
    179 *
    +
    180 *
    +
    181 */
    +
    182 int
    + +
    184 std::vector<double> & KineticEnergyVector,
    +
    185 std::vector<double> & InternalEnergyVector,
    +
    186 std::vector<double> & EntropicEnergyVector,
    +
    187 std::vector<double> & TotalEnergyVector,
    +
    188 std::vector<dealii::Tensor<1, 3, double>> &displacements,
    +
    189 std::vector<double> & velocity,
    +
    190 std::vector<double> & force,
    +
    191 const std::vector<double> & atomMass);
    +
    192
    +
    193
    +
    194 /**
    +
    195
    +
    196 @brief mdNVTsvrThermostat Performs a Canonical Ensemble MD calculation. The inital temperature is set by runMD().
    +
    197 * Thermostat type is SVR. Controls the timeloop.
    +
    198 * @param[in] massAtoms Stores the mass of each Charge. *
    +
    199 * @param[out] KineticEnergyVector Stores KineticEnergy at each TimeStep
    +
    200 * @param[out] InternalEnergyVector Stores InternalEnergy at each TimeStep
    +
    201 * @param[out] EntropicEnergyVector Stores PotentialEnergy at each TimeStep
    +
    202 * @param[out] TotalEnergyVector Stores TotalEnergy at each TimeStep
    +
    203 * @param[out] displacements Stores the displacment of each Charge, updated
    +
    204 at each TimeStep
    +
    205 * @param[out] velocity Stores the velocity of each Charge, updated at each
    +
    206 TimeStep
    +
    207 * @param[out] force Stores the -ve of force on each charge, updated at each
    +
    208 TimeStep
    +
    209 *
    +
    210 */
    +
    211 int
    + +
    213 std::vector<double> &InternalEnergyVector,
    +
    214 std::vector<double> &EntropicEnergyVector,
    +
    215 std::vector<double> &TotalEnergyVector,
    +
    216 std::vector<dealii::Tensor<1, 3, double>> &displacements,
    +
    217 std::vector<double> & velocity,
    +
    218 std::vector<double> & force,
    +
    219 const std::vector<double> & atomMass);
    +
    220
    +
    221
    +
    222 /**
    +
    223 * @brief RescaleVelocities controls the velocity at timestep t. The scaling of
    +
    224 * velocities depends on ratio of T at that timestep and inital Temperature.
    +
    225
    +
    226
    +
    227 * @param[in] M Stores the mass of each Charge.
    +
    228 * @param[in] Temperature temperature at current Timestep
    +
    229 * @param[out] v Stores the velocity of each Charge, updated at each
    +
    230 Timestep
    +
    231 *
    +
    232 * @param[return] KE Kinetic Energy at current timestp in eV
    +
    233
    +
    234 *
    +
    235 *
    +
    236 *
    +
    237 */
    +
    238 double
    +
    239 RescaleVelocities(std::vector<double> & v,
    +
    240 const std::vector<double> &M,
    +
    241 double Temperature);
    +
    242
    +
    243
    +
    244 /**
    +
    245
    +
    246 * @brief NoseHoverChains controls the velocity at timestep t. The temperature is contolled by
    +
    247 2 thermostats. Thermostat 1 contols the velocity of all Charges.
    +
    248 Thermostat 2 controls thermostat 1. Employs Extended Lagrangian approach.
    +
    249
    +
    250
    +
    251 * @param[in] Q stores mass of each Thermostat
    +
    252 * @param[in] Temperature temperature of previous timestep
    +
    253 * @param[out] v Stores the velocity of each Charge, updated at each
    +
    254 TimeStep
    +
    255 * @param[out] v_e Stores the thermostat velocity
    +
    256 * @param[out] e Stores the position of each thermosat
    +
    257 *
    +
    258 */
    +
    259 void
    +
    260 NoseHoverChains(std::vector<double> &v,
    +
    261 std::vector<double> &v_e,
    +
    262 std::vector<double> &e,
    +
    263 std::vector<double> Q,
    +
    264 double KE,
    +
    265 double Temperature);
    +
    266
    +
    267 /**
    +
    268
    +
    269 * @brief
    +
    270
    +
    271 *
    +
    272 * @param[in] KEref Target value of Kinetic Enegy from Temperature
    +
    273 * @param[out] v Stores the velocity of each Charge, updated at each
    +
    274 TimeStep
    +
    275 * @param[out] KE rescaled Kinetic Energy from svr thermostat
    +
    276 *
    +
    277 *
    +
    278 */
    +
    279 double
    +
    280 svr(std::vector<double> &v, double KE, double KEref);
    +
    281
    +
    282
    +
    283
    +
    284 /**
    +
    285
    +
    286 * @brief velocityVerlet
    +
    287
    +
    288
    +
    289 * @param[in] atomMass Stores the mass of each Charge.
    +
    290
    +
    291 *
    +
    292 * @param[return] KE Kinetic Energy at current timestp in eV
    +
    293 * @param[out] forceonAtoms Updated -ve forces on each charge.
    +
    294 * @param[out] r Updated displacement
    +
    295 * @param[out] v Updated velocity of each atom
    +
    296 *
    +
    297 *
    +
    298 *
    +
    299 */
    +
    300 double
    +
    301 velocityVerlet(std::vector<double> & v,
    +
    302 std::vector<dealii::Tensor<1, 3, double>> &r,
    +
    303 const std::vector<double> & atomMass,
    +
    304 std::vector<double> & forceOnAtoms);
    +
    305
    +
    306
    +
    307
    +
    308 /**
    +
    309 * @brief writeRestartFile: Writing files at each timestep to mdRestart
    +
    310
    +
    311 * @param[in] velocity Velocity updated from restart
    +
    312 * @param[in] force Force data at each timeStep
    +
    313 * @param[in] PE Free energy of system at current Timestep
    +
    314 * @param[in] KE Kinetic ENergy of nuclei at current Timestep
    +
    315 * @param[in] TE temperature at current Timestep
    +
    316 * @param[in] time Current TimeStep
    +
    317 *
    +
    318 *
    +
    319 */
    +
    320
    +
    321 void
    +
    322 writeRestartFile(const std::vector<dealii::Tensor<1, 3, double>> &disp,
    +
    323 const std::vector<double> & velocity,
    +
    324 const std::vector<double> & force,
    +
    325 const std::vector<double> &KineticEnergyVector,
    +
    326 const std::vector<double> &InternalEnergyVector,
    +
    327 const std::vector<double> &TotalEnergyVector,
    +
    328 int time);
    +
    329
    +
    330 /**
    +
    331
    +
    332* @brief InitialiseFromRestartFile : Initialise atomcordinates, velocity and force at restart
    +
    333
    +
    334 * @param[out] disp Displacements of previous timestep from restart
    +
    335 * @param[out] velocity Velocity updated from restart
    +
    336 * @param[out] force Force updated from dft->Solve
    +
    337 * @param[out] PE Free energy of system at current Timestep
    +
    338 * @param[out] KE Kinetic ENergy of nuclei at current Timestep
    +
    339 * @param[out] TE temperature at current Timestep
    +
    340 *
    +
    341
    +
    342 *
    +
    343 *
    +
    344 *
    +
    345 */
    +
    346 void
    +
    347 InitialiseFromRestartFile(std::vector<dealii::Tensor<1, 3, double>> &disp,
    +
    348 std::vector<double> &velocity,
    +
    349 std::vector<double> &force,
    +
    350 std::vector<double> &KE,
    +
    351 std::vector<double> &IE,
    +
    352 std::vector<double> &TE);
    +
    353
    +
    354 /**
    +
    355
    +
    356* @brief NoseHoverExtendedLagrangian Writes the NHC parameters at each timeStep
    +
    357
    +
    358 * @param[in] thermovelocity Velocity of each, updated at each TimeStep
    +
    359 * @param[in] thermoposition Position of each thermostat , updated at each
    +
    360 TimeStep
    +
    361 * @param[in] thermomass Stores the mass of each thermostat.
    +
    362 * @param[in] time Current TimeStep
    +
    363 *
    +
    364 *
    +
    365 */
    +
    366 void
    +
    367 writeRestartNHCfile(const std::vector<double> &v_e,
    +
    368 const std::vector<double> &e,
    +
    369 const std::vector<double> &Q,
    +
    370 const int time);
    +
    371
    +
    372 /**
    +
    373
    +
    374* @brief InitialiseFromRestartNHCFile: Reads the NHC parameters during restart
    +
    375
    +
    376 * @param[out] thermovelocity Velocity of each, updated at each TimeStep
    +
    377 * @param[out] thermoposition Position of each thermostat , updated at each
    +
    378 TimeStep
    +
    379 * @param[out] thermomass Stores the mass of each thermostat.
    +
    380 *
    +
    381 *
    +
    382 *
    +
    383 */
    +
    384 void
    +
    385 InitialiseFromRestartNHCFile(std::vector<double> &v_e,
    +
    386 std::vector<double> &e,
    +
    387 std::vector<double> &Q);
    +
    388
    +
    389 /**
    +
    390
    +
    391* @brief writeTotalDisplacementFile: Updates Displacement.chk and appends TotalDisplacement.chk
    +
    392
    +
    393 * @param[in] r Displacemnt of each atom, updated at each TimeStep
    +
    394 * @param[in] time each TimeStep
    +
    395
    +
    396 *
    +
    397 *
    +
    398 *
    +
    399 */
    +
    400 void
    + +
    402 const std::vector<dealii::Tensor<1, 3, double>> &r,
    +
    403 int time);
    +
    404
    +
    405 /**
    +
    406
    +
    407 * @brief NoseHoverExtendedLagrangian: Computes the Nose-Hover Hamiltonian when using NHC thermostat
    +
    408
    +
    409 * @param[in] thermovelocity Velocity of each, updated at each TimeStep
    +
    410 * @param[in] thermoposition Position of each thermostat , updated at each
    +
    411 TimeStep
    +
    412 * @param[in] thermomass Stores the mass of each thermostat.
    +
    413 * @param[in] PE Free energy of system at current Timestep
    +
    414 * @param[in] KE Kinetic ENergy of nuclei at current Timestep
    +
    415 * @param[in] Temperature temperature at current Timestep
    +
    416 *
    +
    417 * @return Hnose Nose Hamiltonian at each timestep
    +
    418 *
    +
    419 *
    +
    420 *
    +
    421 */
    +
    422
    +
    423 double
    +
    424 NoseHoverExtendedLagrangian(const std::vector<double> &thermovelocity,
    +
    425 const std::vector<double> &thermoposition,
    +
    426 const std::vector<double> &thermomass,
    +
    427 double PE,
    +
    428 double KE,
    +
    429 double T);
    +
    430 /**
    +
    431 * @brief checkRestart: Identifies the folder containing the restart file, sets the path of coordinates file and restursn the starting timestep *
    +
    432 * @return StartingTimeStep the timestep to restart the MD from.
    +
    433 *
    +
    434 *
    +
    435 *
    +
    436 */
    +
    437 int
    +
    438 checkRestart(std::string &coordinatesFile,
    +
    439 std::string &domainVectorsFile,
    +
    440 bool & scfRestart);
    +
    441
    +
    442 /**
    +
    443 * @brief DensityExtrapolation Identifies the folder containing the restart file, sets the path of coordinates file and restursn the starting timestep *
    +
    444 *
    +
    445 *
    +
    446 *
    +
    447 *
    +
    448 */
    +
    449 void
    + +
    451
    +
    452 /**
    +
    453 * @brief DensityExtrapolation calculates the t+dt density as a second order extrapolation of density from t, t-dt and t-2dt
    +
    454 *
    +
    455 *
    +
    456 *
    +
    457 *
    +
    458 *
    +
    459 */
    +
    460 void
    + +
    462
    +
    463
    +
    464 /**
    +
    465 * @brief set() initalises all the private datamembers of mdclass object from the parameters declared by user.
    +
    466 *
    +
    467 *
    +
    468 *
    +
    469 *
    +
    470 */
    +
    471 void
    + +
    473 };
    +
    +
    474} // namespace dftfe
    +
    475#endif
    +
    abstract base class for dft
    Definition dftBase.h:34
    +
    Definition molecularDynamicsClass.h:33
    +
    std::string d_ThermostatType
    Definition molecularDynamicsClass.h:92
    +
    void DensitySplitExtrapolation(int TimeStep)
    DensityExtrapolation calculates the t+dt density as a second order extrapolation of density from t,...
    +
    double velocityVerlet(std::vector< double > &v, std::vector< dealii::Tensor< 1, 3, double > > &r, const std::vector< double > &atomMass, std::vector< double > &forceOnAtoms)
    velocityVerlet
    +
    std::vector< std::vector< double > > d_atomFractionalunwrapped
    Definition molecularDynamicsClass.h:95
    +
    void writeTotalDisplacementFile(const std::vector< dealii::Tensor< 1, 3, double > > &r, int time)
    writeTotalDisplacementFile: Updates Displacement.chk and appends TotalDisplacement....
    +
    dealii::ConditionalOStream pcout
    Definition molecularDynamicsClass.h:80
    +
    const unsigned int d_this_mpi_process
    Definition molecularDynamicsClass.h:77
    +
    std::string d_restartFilesPath
    Definition molecularDynamicsClass.h:82
    +
    double svr(std::vector< double > &v, double KE, double KEref)
    +
    void DensityExtrapolation(int TimeStep)
    DensityExtrapolation Identifies the folder containing the restart file, sets the path of coordinates ...
    +
    void InitialiseFromRestartNHCFile(std::vector< double > &v_e, std::vector< double > &e, std::vector< double > &Q)
    InitialiseFromRestartNHCFile: Reads the NHC parameters during restart.
    +
    dftBase * d_dftPtr
    Definition molecularDynamicsClass.h:73
    +
    int mdNVTnosehoverchainsThermostat(std::vector< double > &KineticEnergyVector, std::vector< double > &InternalEnergyVector, std::vector< double > &EntropicEnergyVector, std::vector< double > &TotalEnergyVector, std::vector< dealii::Tensor< 1, 3, double > > &displacements, std::vector< double > &velocity, std::vector< double > &force, const std::vector< double > &atomMass)
    mdNVTnosehoverchainsThermostat Performs a Canonical Ensemble MD calculation. The inital temperature i...
    +
    distributedCPUVec< double > d_extrapDensity_tmin1
    Definition molecularDynamicsClass.h:97
    +
    void InitialiseFromRestartFile(std::vector< dealii::Tensor< 1, 3, double > > &disp, std::vector< double > &velocity, std::vector< double > &force, std::vector< double > &KE, std::vector< double > &IE, std::vector< double > &TE)
    InitialiseFromRestartFile : Initialise atomcordinates, velocity and force at restart.
    +
    double d_MDstartWallTime
    Definition molecularDynamicsClass.h:93
    +
    int mdNVTsvrThermostat(std::vector< double > &KineticEnergyVector, std::vector< double > &InternalEnergyVector, std::vector< double > &EntropicEnergyVector, std::vector< double > &TotalEnergyVector, std::vector< dealii::Tensor< 1, 3, double > > &displacements, std::vector< double > &velocity, std::vector< double > &force, const std::vector< double > &atomMass)
    mdNVTsvrThermostat Performs a Canonical Ensemble MD calculation. The inital temperature is set by run...
    +
    void writeRestartFile(const std::vector< dealii::Tensor< 1, 3, double > > &disp, const std::vector< double > &velocity, const std::vector< double > &force, const std::vector< double > &KineticEnergyVector, const std::vector< double > &InternalEnergyVector, const std::vector< double > &TotalEnergyVector, int time)
    writeRestartFile: Writing files at each timestep to mdRestart
    +
    const double kB
    Definition molecularDynamicsClass.h:54
    +
    void set()
    set() initalises all the private datamembers of mdclass object from the parameters declared by user.
    +
    const int d_verbosity
    Definition molecularDynamicsClass.h:83
    +
    distributedCPUVec< double > d_extrapDensity_tp1
    Definition molecularDynamicsClass.h:98
    +
    int d_ThermostatTimeConstant
    Definition molecularDynamicsClass.h:91
    +
    unsigned int d_restartFlag
    Definition molecularDynamicsClass.h:85
    +
    distributedCPUVec< double > d_extrapDensity_tmin2
    Definition molecularDynamicsClass.h:97
    +
    int mdNVTrescaleThermostat(std::vector< double > &KineticEnergyVector, std::vector< double > &InternalEnergyVector, std::vector< double > &EntropicEnergyVector, std::vector< double > &TotalEnergyVector, std::vector< dealii::Tensor< 1, 3, double > > &displacements, std::vector< double > &velocity, std::vector< double > &force, const std::vector< double > &atomMass)
    mdNVTrescaleThermostat Performs a Constant Kinetic Energy Ensemble MD calculation....
    +
    distributedCPUVec< double > d_extrapDensity_t0
    Definition molecularDynamicsClass.h:98
    +
    double NoseHoverExtendedLagrangian(const std::vector< double > &thermovelocity, const std::vector< double > &thermoposition, const std::vector< double > &thermomass, double PE, double KE, double T)
    NoseHoverExtendedLagrangian: Computes the Nose-Hover Hamiltonian when using NHC thermostat.
    +
    std::vector< double > d_domainLength
    Definition molecularDynamicsClass.h:96
    +
    const double AngTobohr
    Definition molecularDynamicsClass.h:53
    +
    std::unique_ptr< dftfeWrapper > d_dftfeWrapper
    Definition molecularDynamicsClass.h:72
    +
    double RescaleVelocities(std::vector< double > &v, const std::vector< double > &M, double Temperature)
    RescaleVelocities controls the velocity at timestep t. The scaling of velocities depends on ratio of ...
    +
    unsigned int d_numberGlobalCharges
    Definition molecularDynamicsClass.h:86
    +
    const double haToeV
    Definition molecularDynamicsClass.h:51
    +
    unsigned int d_TimeIndex
    Definition molecularDynamicsClass.h:88
    +
    void writeRestartNHCfile(const std::vector< double > &v_e, const std::vector< double > &e, const std::vector< double > &Q, const int time)
    NoseHoverExtendedLagrangian Writes the NHC parameters at each timeStep.
    +
    double d_MaxWallTime
    Definition molecularDynamicsClass.h:94
    +
    int mdNVE(std::vector< double > &KineticEnergyVector, std::vector< double > &InternalEnergyVector, std::vector< double > &EntropicEnergyVector, std::vector< double > &TotalEnergyVector, std::vector< dealii::Tensor< 1, 3, double > > &displacements, std::vector< double > &velocity, std::vector< double > &force, const std::vector< double > &atomMass)
    mdNVE Performs a Ccanonical Ensemble MD calculation. The inital temperature is set by runMD()....
    +
    const double bohrToAng
    Definition molecularDynamicsClass.h:52
    +
    molecularDynamicsClass(const std::string parameter_file, const std::string restartFilesPath, const MPI_Comm &mpi_comm_parent, const bool restart, const int verbosity, const bool useDevice)
    molecularDynamicsClass constructor: copy data from dftparameters to the memebrs of molecularDynamicsC...
    +
    int d_startingTimeStep
    Definition molecularDynamicsClass.h:56
    +
    int runMD()
    runMD: Assign atom mass to charge. Create vectors for displacement, velocity, force....
    +
    unsigned int d_numberofSteps
    Definition molecularDynamicsClass.h:89
    +
    void NoseHoverChains(std::vector< double > &v, std::vector< double > &v_e, std::vector< double > &e, std::vector< double > Q, double KE, double Temperature)
    NoseHoverChains controls the velocity at timestep t. The temperature is contolled by 2 thermostats....
    +
    const double haPerBohrToeVPerAng
    Definition molecularDynamicsClass.h:50
    +
    double d_TimeStep
    Definition molecularDynamicsClass.h:87
    +
    double d_startingTemperature
    Definition molecularDynamicsClass.h:90
    +
    int checkRestart(std::string &coordinatesFile, std::string &domainVectorsFile, bool &scfRestart)
    checkRestart: Identifies the folder containing the restart file, sets the path of coordinates file an...
    +
    const MPI_Comm d_mpiCommParent
    Definition molecularDynamicsClass.h:76
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    + + + + +
    Definition pseudoPotentialToDftfeConverter.cc:34
    +
    + + + + diff --git a/namespacedftfe.html b/namespacedftfe.html new file mode 100644 index 000000000..726791aa3 --- /dev/null +++ b/namespacedftfe.html @@ -0,0 +1,13202 @@ + + + + + + + +DFT-FE: dftfe Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    dftfe Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Namespaces

    namespace  AtomicCenteredNonLocalOperatorKernelsDevice
     
    namespace  basis
     
    namespace  dataTypes
     
    namespace  dftUtils
     Contains repeatedly used functions in the KSDFT calculations.
     
    namespace  eshelbyTensor
     The functions in this namespace contain the expressions for the various terms of the configurational force (https://link.aps.org/doi/10.1103/PhysRevB.97.165132) for both periodic (see Eq. 38) and non-periodic (see Eqs. 28-29) case.
     
    namespace  eshelbyTensorSP
     The functions in this namespace contain the expressions for the various terms of the configurational force (https://link.aps.org/doi/10.1103/PhysRevB.97.165132) for both periodic and non-periodic case.
     
    namespace  force
     
    namespace  LAPACKSupport
     
    namespace  linearAlgebra
     
    namespace  linearAlgebraOperations
     Contains linear algebra functions used in the implementation of an eigen solver.
     
    namespace  meshGenUtils
     
    namespace  pseudoUtils
     wrapper to convert pseudopotential file from upf to dftfe format and returns the nonlinear core correction flag
     
    namespace  sphericalHarmonicUtils
     
    namespace  types
     
    namespace  utils
     
    namespace  vectorTools
     Contains generic utils functions related to custom partitioned flattened dealii vector.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    class  AtomCenteredSphericalFunctionBase
     
    class  AtomCenteredSphericalFunctionBessel
     
    class  AtomCenteredSphericalFunctionContainer
     
    class  AtomCenteredSphericalFunctionCoreDensitySpline
     
    class  AtomCenteredSphericalFunctionGaussian
     
    class  AtomCenteredSphericalFunctionLocalPotentialSpline
     
    class  AtomCenteredSphericalFunctionProjectorSpline
     
    class  AtomCenteredSphericalFunctionSinc
     
    class  AtomCenteredSphericalFunctionSpline
     
    class  AtomCenteredSphericalFunctionValenceDensitySpline
     
    class  AtomCenteredSphericalFunctionZOverR
     
    class  AtomicCenteredNonLocalOperator
     
    class  AtomPseudoWavefunctions
     
    class  BFGSNonLinearSolver
     Class implementing a modified BFGS optimization scheme. More...
     
    class  cgPRPNonLinearSolver
     Concrete class implementing Polak-Ribiere-Polyak Conjugate Gradient non-linear algebraic solver. More...
     
    class  chebyshevOrthogonalizedSubspaceIterationSolver
     Concrete class implementing Chebyshev filtered orthogonalized subspace iteration solver. More...
     
    class  dealiiLinearSolver
     dealii linear solver class wrapper More...
     
    class  dealiiLinearSolverProblem
     Abstract class for linear solve problems to be used with the dealiiLinearSolver interface. More...
     
    class  dftBase
     abstract base class for dft More...
     
    class  dftClass
     This class is the primary interface location of all other parts of the DFT-FE code for all steps involved in obtaining the Kohn-Sham DFT ground-state solution. More...
     
    class  dftfeWrapper
     wrapper class for dftfe More...
     
    class  dftParameters
     Namespace which declares the input parameters and the functions to parse them from the input parameter file. More...
     
    class  dispersionCorrection
     Calculates dispersion correction to energy, force and stress. More...
     
    class  eigenSolverClass
     Base class for non-linear algebraic solver. More...
     
    class  elpaScalaManager
     Manager class for ELPA and ScaLAPACK. More...
     
    class  energyCalculator
     Calculates the ksdft problem total energy and its components. More...
     
    class  excDensityBaseClass
     
    class  excDensityGGAClass
     
    class  excDensityLDAClass
     
    class  excManager
     
    class  excWavefunctionBaseClass
     
    class  excWavefunctionNoneClass
     
    class  forceClass
     computes configurational forces in KSDFT More...
     
    class  geometryOptimizationClass
     
    class  geoOptCell
     problem class for cell stress relaxation solver. More...
     
    class  geoOptIon
     problem class for atomic force relaxation solver. More...
     
    class  kerkerSolverProblem
     poisson solver problem class template. template parameter FEOrderElectro is the finite element polynomial order for electrostatics More...
     
    class  KohnShamHamiltonianOperator
     
    class  LBFGSNonLinearSolver
     Class implementing LBFGS optimzation method. More...
     
    class  linearSolver
     Abstract linear solver base class. More...
     
    class  meshMovementAffineTransform
     Class to update triangulation under affine transformation. More...
     
    class  meshMovementClass
     Base class to move triangulation vertices. More...
     
    class  meshMovementGaussianClass
     Class to move triangulation nodes using Gaussian functions attached to control points. More...
     
    class  MixingScheme
     This class performs the anderson mixing in a variable agnostic way This class takes can take different input variables as input in a std::vector format and computes the mixing coefficients These coefficients can then be used to compute the new variable at the start of the SCF. More...
     
    class  molecularDynamicsClass
     
    class  nonLinearSolver
     Base class for non-linear algebraic solver. More...
     
    class  nonlinearSolverProblem
     Abstract class for solver functions. More...
     
    class  nudgedElasticBandClass
     
    class  oncvClass
     
    class  operatorDFTClass
     Base class for building the DFT operator and the action of operator on a vector. More...
     
    class  poissonSolverProblem
     poisson solver problem class template. template parameter FEOrderElectro is the finite element polynomial order. FEOrder template parameter is used in conjunction with FEOrderElectro to determine the order of the Gauss quadrature rule More...
     
    class  ProcessGrid
     
    class  runParameters
     Namespace which declares the input outer run parameters. More...
     
    class  ScaLAPACKMatrix
     Scalapack wrapper adapted from dealii library and extended implementation to complex datatype. More...
     
    class  symmetryClass
     density symmetrization based on irreducible Brillouin zone calculation, only relevant for calculations using point group symmetries More...
     
    class  triangulationManager
     This class generates and stores adaptive finite element meshes for the real-space dft problem. More...
     
    class  vselfBinsManager
     Categorizes atoms into bins for efficient solution of nuclear electrostatic self-potential. template parameter FEOrderElectro is the finite element polynomial order. More...
     
    + + + + + + + + + + + +

    +Typedefs

    template<typename elem_type >
    using distributedCPUVec
     
    template<typename NumberType >
    using distributedCPUMultiVec
     
    using size_type = unsigned int
     
    using global_size_type = unsigned long int
     
    + + + + + + + + + + + + + + + + + + + +

    +Enumerations

    enum class  CouplingStructure { diagonal +, dense +, blockDiagonal + }
     Enum class that lists used in the non-local Operator. More...
     
    enum class  densityFamilyType { LDA +, GGA + }
     
    enum class  rhoDataAttributes { values +, sigmaGradValue + }
     
    enum class  VeffOutputDataAttributes { derEnergyWithDensity +, derEnergyWithSigmaGradDensity + }
     
    enum class  fxcOutputDataAttributes { der2EnergyWithDensity +, der2EnergyWithDensitySigma +, der2EnergyWithSigma + }
     
    enum class  excDensityPositivityCheckTypes { NO_CHECK +, EXCEPTION_POSITIVE +, MAKE_POSITIVE + }
     
    enum class  wavefunctionFamilyType { NONE +, SCALED_FOCK +, HUBBARD + }
     
    enum class  mixingVariable { rho +, gradRho +, magZ +, gradMagZ + }
     Enum class that stores he list of variables that will can be used in the mixing scheme. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    template<unsigned int FEOrder>
    constexpr unsigned int C_num1DQuad ()
     1d quadrature rule order
     
    constexpr unsigned int C_num1DQuadSmearedCharge ()
     1d quad rule smeared nuclear charge
     
    constexpr unsigned int C_numCopies1DQuadSmearedCharge ()
     number of copies 1d quad rule smeared nuclear charge
     
    constexpr unsigned int C_num1DQuadSmearedChargeHigh ()
     
    constexpr unsigned int C_numCopies1DQuadSmearedChargeHigh ()
     
    constexpr unsigned int C_num1DQuadSmearedChargeStress ()
     1d quad rule smeared nuclear charge if cell stress calculation is on
     
    constexpr unsigned int C_numCopies1DQuadSmearedChargeStress ()
     
    template<unsigned int FEOrder, unsigned int FEOrderElectro>
    constexpr unsigned int C_rhoNodalPolyOrder ()
     rho nodal polynomial order
     
    template<unsigned int FEOrder>
    constexpr unsigned int C_num1DQuadNLPSP ()
     1d quadrature rule order for non-local part of pseudopotential
     
    constexpr unsigned int C_numCopies1DQuadNLPSP ()
     number of copies 1d quad rule non-local PSP
     
    template<unsigned int FEOrder>
    constexpr unsigned int C_num1DQuadLPSP ()
     1d quadrature rule order for local part of pseudopotential
     
    constexpr unsigned int C_numCopies1DQuadLPSP ()
     number of copies 1d quad rule local PSP
     
    template<typename NumberType , dftfe::utils::MemorySpace memorySpace>
    void computeRhoFromPSI (const dftfe::utils::MemoryStorage< NumberType, memorySpace > *X, const dftfe::utils::MemoryStorage< NumberType, memorySpace > *XFrac, const unsigned int totalNumWaveFunctions, const unsigned int Nfr, const std::vector< std::vector< double > > &eigenValues, const double fermiEnergy, const double fermiEnergyUp, const double fermiEnergyDown, std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, memorySpace > > &basisOperationsPtr, std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > &BLASWrapperPtr, const unsigned int matrixFreeDofhandlerIndex, const unsigned int quadratureIndex, const std::vector< double > &kPointWeights, std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &densityValues, std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradDensityValues, const bool isEvaluateGradRho, const MPI_Comm &mpiCommParent, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, const bool spectrumSplit)
     
    template<typename NumberType >
    void computeRhoGradRhoFromInterpolatedValues (std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, const std::pair< unsigned int, unsigned int > cellRange, const std::pair< unsigned int, unsigned int > vecRange, double *partialOccupVec, NumberType *wfcQuadPointData, NumberType *gradWfcQuadPointData, double *rhoCellsWfcContributions, double *gradRhoCellsWfcContributions, double *rho, double *gradRho, const bool isEvaluateGradRho)
     
    template<typename NumberType , dftfe::utils::MemorySpace memorySpace>
    void computeRhoFirstOrderResponse (const dftfe::utils::MemoryStorage< NumberType, memorySpace > &X, const dftfe::utils::MemoryStorage< NumberType, memorySpace > &XPrime, const unsigned int totalNumWaveFunctions, const std::vector< std::vector< double > > &densityMatDerFermiEnergy, std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, memorySpace > > &basisOperationsPtr, std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > &BLASWrapperPtr, const unsigned int matrixFreeDofhandlerIndex, const unsigned int quadratureIndex, const std::vector< double > &kPointWeights, std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoResponseValuesHam, std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoResponseValuesFermiEnergy, const MPI_Comm &mpiCommParent, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams)
     
    template<typename NumberType >
    void computeRhoResponseFromInterpolatedValues (std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > &BLASWrapperPtr, const std::pair< unsigned int, unsigned int > cellRange, const std::pair< unsigned int, unsigned int > vecRange, double *onesVec, double *partialOccupPrimeVec, NumberType *wfcQuadPointData, NumberType *wfcPrimeQuadPointData, double *rhoResponseHamCellsWfcContributions, double *rhoResponseFermiEnergyCellsWfcContributions, double *rhoResponseHam, double *rhoResponseFermiEnergy)
     
    void xgemm (const char *transA, const char *transB, const unsigned int *m, const unsigned int *n, const unsigned int *k, const double *alpha, const double *A, const unsigned int *lda, const double *B, const unsigned int *ldb, const double *beta, double *C, const unsigned int *ldc)
     
    void xgemm (const char *transA, const char *transB, const unsigned int *m, const unsigned int *n, const unsigned int *k, const float *alpha, const float *A, const unsigned int *lda, const float *B, const unsigned int *ldb, const float *beta, float *C, const unsigned int *ldc)
     
    void xgemm (const char *transA, const char *transB, const unsigned int *m, const unsigned int *n, const unsigned int *k, const std::complex< double > *alpha, const std::complex< double > *A, const unsigned int *lda, const std::complex< double > *B, const unsigned int *ldb, const std::complex< double > *beta, std::complex< double > *C, const unsigned int *ldc)
     
    void xgemm (const char *transA, const char *transB, const unsigned int *m, const unsigned int *n, const unsigned int *k, const std::complex< float > *alpha, const std::complex< float > *A, const unsigned int *lda, const std::complex< float > *B, const unsigned int *ldb, const std::complex< float > *beta, std::complex< float > *C, const unsigned int *ldc)
     
    void xscal (const unsigned int *n, const double *alpha, double *x, const unsigned int *inc)
     
    void xscal (const unsigned int *n, const std::complex< double > *alpha, std::complex< double > *x, const unsigned int *inc)
     
    void xcopy (const unsigned int *n, const double *x, const unsigned int *incx, double *y, const unsigned int *incy)
     
    void xcopy (const unsigned int *n, const std::complex< double > *x, const unsigned int *incx, std::complex< double > *y, const unsigned int *incy)
     
    void Cblacs_pinfo (int *rank, int *nprocs)
     
    void Cblacs_get (int icontxt, int what, int *val)
     
    void Cblacs_gridinit (int *context, const char *order, int grid_height, int grid_width)
     
    void Cblacs_gridinfo (int context, int *grid_height, int *grid_width, int *grid_row, int *grid_col)
     
    void Cblacs_pcoord (int ictxt, int pnum, int *prow, int *pcol)
     
    void Cblacs_gridexit (int context)
     
    void Cblacs_barrier (int, const char *)
     
    void Cblacs_exit (int error_code)
     
    void Cdgerv2d (int context, int M, int N, double *A, int lda, int rsrc, int csrc)
     
    void Csgerv2d (int context, int M, int N, float *A, int lda, int rsrc, int csrc)
     
    void Cdgesd2d (int context, int M, int N, double *A, int lda, int rdest, int cdest)
     
    void Csgesd2d (int context, int M, int N, float *A, int lda, int rdest, int cdest)
     
    int Csys2blacs_handle (MPI_Comm comm)
     
    int numroc_ (const int *n, const int *nb, const int *iproc, const int *isproc, const int *nprocs)
     
    void pzlacgv_ (const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const int *INCX)
     
    void pdpotrf_ (const char *UPLO, const int *N, double *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void pspotrf_ (const char *UPLO, const int *N, float *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void pzpotrf_ (const char *UPLO, const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void pdgetrf_ (const int *m, const int *n, double *A, const int *IA, const int *JA, const int *DESCA, int *ipiv, int *INFO)
     
    void psgetrf_ (const int *m, const int *n, float *A, const int *IA, const int *JA, const int *DESCA, int *ipiv, int *INFO)
     
    void pzgetrf_ (const int *m, const int *n, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *ipiv, int *INFO)
     
    void pdpotri_ (const char *UPLO, const int *N, double *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void pspotri_ (const char *UPLO, const int *N, float *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void pzpotri_ (const char *UPLO, const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void pdgetri_ (const int *N, double *A, const int *IA, const int *JA, const int *DESCA, const int *ipiv, double *work, int *lwork, int *iwork, int *liwork, int *info)
     
    void psgetri_ (const int *N, float *A, const int *IA, const int *JA, const int *DESCA, const int *ipiv, float *work, int *lwork, int *iwork, int *liwork, int *info)
     
    void pzgetri_ (const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const int *ipiv, std::complex< double > *work, int *lwork, int *iwork, int *liwork, int *info)
     
    void pdtrtri_ (const char *UPLO, const char *DIAG, const int *N, double *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void pstrtri_ (const char *UPLO, const char *DIAG, const int *N, float *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void pztrtri_ (const char *UPLO, const char *DIAG, const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void pdpocon_ (const char *uplo, const int *N, const double *A, const int *IA, const int *JA, const int *DESCA, const double *ANORM, double *RCOND, double *WORK, const int *LWORK, int *IWORK, const int *LIWORK, int *INFO)
     
    void pspocon_ (const char *uplo, const int *N, const float *A, const int *IA, const int *JA, const int *DESCA, const float *ANORM, float *RCOND, float *WORK, const int *LWORK, int *IWORK, const int *LIWORK, int *INFO)
     
    double pdlansy_ (const char *norm, const char *uplo, const int *N, const double *A, const int *IA, const int *JA, const int *DESCA, double *work)
     
    float pslansy_ (const char *norm, const char *uplo, const int *N, const float *A, const int *IA, const int *JA, const int *DESCA, float *work)
     
    int ilcm_ (const int *M, const int *N)
     
    int iceil_ (const int *i1, const int *i2)
     
    void descinit_ (int *desc, const int *m, const int *n, const int *mb, const int *nb, const int *irsrc, const int *icsrc, const int *ictxt, const int *lld, int *info)
     
    int indxl2g_ (const int *indxloc, const int *nb, const int *iproc, const int *isrcproc, const int *nprocs)
     
    void pdgesv_ (const int *n, const int *nrhs, double *A, const int *ia, const int *ja, const int *desca, int *ipiv, double *B, const int *ib, const int *jb, const int *descb, int *info)
     
    void psgesv_ (const int *n, const int *nrhs, float *A, const int *ia, const int *ja, const int *desca, int *ipiv, float *B, const int *ib, const int *jb, const int *descb, int *info)
     
    void pdgemm_ (const char *transa, const char *transb, const int *m, const int *n, const int *k, const double *alpha, const double *A, const int *IA, const int *JA, const int *DESCA, const double *B, const int *IB, const int *JB, const int *DESCB, const double *beta, double *C, const int *IC, const int *JC, const int *DESCC)
     
    void psgemm_ (const char *transa, const char *transb, const int *m, const int *n, const int *k, const float *alpha, const float *A, const int *IA, const int *JA, const int *DESCA, const float *B, const int *IB, const int *JB, const int *DESCB, const float *beta, float *C, const int *IC, const int *JC, const int *DESCC)
     
    void pzgemm_ (const char *transa, const char *transb, const int *m, const int *n, const int *k, const std::complex< double > *alpha, const std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const std::complex< double > *B, const int *IB, const int *JB, const int *DESCB, const std::complex< double > *beta, std::complex< double > *C, const int *IC, const int *JC, const int *DESCC)
     
    double pdlange_ (char const *norm, const int *m, const int *n, const double *A, const int *ia, const int *ja, const int *desca, double *work)
     
    float pslange_ (const char *norm, const int *m, const int *n, const float *A, const int *ia, const int *ja, const int *desca, float *work)
     
    int indxg2p_ (const int *glob, const int *nb, const int *iproc, const int *isproc, const int *nprocs)
     
    void pdsyev_ (const char *jobz, const char *uplo, const int *m, double *A, const int *ia, const int *ja, int *desca, double *w, double *z, const int *iz, const int *jz, int *descz, double *work, const int *lwork, int *info)
     
    void pssyev_ (const char *jobz, const char *uplo, const int *m, float *A, const int *ia, const int *ja, int *desca, float *w, float *z, const int *iz, const int *jz, int *descz, float *work, const int *lwork, int *info)
     
    void pzheev_ (const char *jobz, const char *uplo, const int *m, std::complex< double > *A, const int *ia, const int *ja, int *desca, double *w, std::complex< double > *z, const int *iz, const int *jz, int *descz, std::complex< double > *work, const int *lwork, int *info)
     
    void pdlacpy_ (const char *uplo, const int *m, const int *n, const double *A, const int *ia, const int *ja, const int *desca, double *B, const int *ib, const int *jb, const int *descb)
     
    void pslacpy_ (const char *uplo, const int *m, const int *n, const float *A, const int *ia, const int *ja, const int *desca, float *B, const int *ib, const int *jb, const int *descb)
     
    void pdgemr2d_ (const int *m, const int *n, const double *A, const int *ia, const int *ja, const int *desca, double *B, const int *ib, const int *jb, const int *descb, const int *ictxt)
     
    void psgemr2d_ (const int *m, const int *n, const float *A, const int *ia, const int *ja, const int *desca, float *B, const int *ib, const int *jb, const int *descb, const int *ictxt)
     
    double pdlamch_ (const int *ictxt, const char *cmach)
     
    float pslamch_ (const int *ictxt, const char *cmach)
     
    void pdsyevx_ (const char *jobz, const char *range, const char *uplo, const int *n, double *A, const int *ia, const int *ja, const int *desca, const double *VL, const double *VU, const int *il, const int *iu, const double *abstol, const int *m, const int *nz, double *w, double *orfac, double *Z, const int *iz, const int *jz, const int *descz, double *work, int *lwork, int *iwork, int *liwork, int *ifail, int *iclustr, double *gap, int *info)
     
    void pssyevx_ (const char *jobz, const char *range, const char *uplo, const int *n, float *A, const int *ia, const int *ja, const int *desca, const float *VL, const float *VU, const int *il, const int *iu, const float *abstol, const int *m, const int *nz, float *w, float *orfac, float *Z, const int *iz, const int *jz, const int *descz, float *work, int *lwork, int *iwork, int *liwork, int *ifail, int *iclustr, float *gap, int *info)
     
    void pzheevx_ (const char *jobz, const char *range, const char *uplo, const int *n, std::complex< double > *A, const int *ia, const int *ja, const int *desca, const double *VL, const double *VU, const int *il, const int *iu, const double *abstol, const int *m, const int *nz, double *w, double *orfac, std::complex< double > *Z, const int *iz, const int *jz, const int *descz, std::complex< double > *work, int *lwork, int *iwork, int *liwork, int *ifail, int *iclustr, double *gap, int *info)
     
    void pdgesvd_ (const char *jobu, const char *jobvt, const int *m, const int *n, double *A, const int *ia, const int *ja, const int *desca, double *S, double *U, const int *iu, const int *ju, const int *descu, double *VT, const int *ivt, const int *jvt, const int *descvt, double *work, int *lwork, int *info)
     
    void psgesvd_ (const char *jobu, const char *jobvt, const int *m, const int *n, float *A, const int *ia, const int *ja, const int *desca, float *S, float *U, const int *iu, const int *ju, const int *descu, float *VT, const int *ivt, const int *jvt, const int *descvt, float *work, int *lwork, int *info)
     
    void pdgels_ (const char *trans, const int *m, const int *n, const int *nrhs, double *A, const int *ia, const int *ja, const int *desca, double *B, const int *ib, const int *jb, const int *descb, double *work, int *lwork, int *info)
     
    void psgels_ (const char *trans, const int *m, const int *n, const int *nrhs, float *A, const int *ia, const int *ja, const int *desca, float *B, const int *ib, const int *jb, const int *descb, float *work, int *lwork, int *info)
     
    void pdgeadd_ (const char *transa, const int *m, const int *n, const double *alpha, const double *A, const int *IA, const int *JA, const int *DESCA, const double *beta, double *C, const int *IC, const int *JC, const int *DESCC)
     
    void psgeadd_ (const char *transa, const int *m, const int *n, const float *alpha, const float *A, const int *IA, const int *JA, const int *DESCA, const float *beta, float *C, const int *IC, const int *JC, const int *DESCC)
     
    void pzgeadd_ (const char *transa, const int *m, const int *n, const std::complex< double > *alpha, const std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const std::complex< double > *beta, std::complex< double > *C, const int *IC, const int *JC, const int *DESCC)
     
    void pdtran_ (const int *m, const int *n, const double *alpha, const double *A, const int *IA, const int *JA, const int *DESCA, const double *beta, double *C, const int *IC, const int *JC, const int *DESCC)
     
    void pstran_ (const int *m, const int *n, const float *alpha, const float *A, const int *IA, const int *JA, const int *DESCA, const float *beta, float *C, const int *IC, const int *JC, const int *DESCC)
     
    void pdsyevr_ (const char *jobz, const char *range, const char *uplo, const int *n, double *A, const int *IA, const int *JA, const int *DESCA, const double *VL, const double *VU, const int *IL, const int *IU, int *m, int *nz, double *w, double *Z, const int *IZ, const int *JZ, const int *DESCZ, double *work, int *lwork, int *iwork, int *liwork, int *info)
     
    void pssyevr_ (const char *jobz, const char *range, const char *uplo, const int *n, float *A, const int *IA, const int *JA, const int *DESCA, const float *VL, const float *VU, const int *IL, const int *IU, int *m, int *nz, float *w, float *Z, const int *IZ, const int *JZ, const int *DESCZ, float *work, int *lwork, int *iwork, int *liwork, int *info)
     
    void pzheevr_ (const char *jobz, const char *range, const char *uplo, const int *n, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const double *VL, const double *VU, const int *IL, const int *IU, int *m, int *nz, double *w, std::complex< double > *Z, const int *IZ, const int *JZ, const int *DESCZ, std::complex< double > *work, int *lwork, int *iwork, int *liwork, int *info)
     
    template<typename number >
    void Cgerv2d (int, int, int, number *, int, int, int)
     
    void Cgerv2d (int context, int M, int N, double *A, int lda, int rsrc, int csrc)
     
    void Cgerv2d (int context, int M, int N, float *A, int lda, int rsrc, int csrc)
     
    template<typename number >
    void Cgesd2d (int, int, int, number *, int, int, int)
     
    void Cgesd2d (int context, int M, int N, double *A, int lda, int rdest, int cdest)
     
    void Cgesd2d (int context, int M, int N, float *A, int lda, int rdest, int cdest)
     
    void pplacgv (const int *N, double *A, const int *IA, const int *JA, const int *DESCA, const int *INCX)
     
    void pplacgv (const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const int *INCX)
     
    template<typename number >
    void ppotrf (const char *, const int *, number *, const int *, const int *, const int *, int *)
     
    void ppotrf (const char *UPLO, const int *N, double *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void ppotrf (const char *UPLO, const int *N, float *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void ppotrf (const char *UPLO, const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    template<typename number >
    void pgetrf (const int *, const int *, number *, const int *, const int *, const int *, int *, int *)
     
    void pgetrf (const int *m, const int *n, double *A, const int *IA, const int *JA, const int *DESCA, int *ipiv, int *INFO)
     
    void pgetrf (const int *m, const int *n, float *A, const int *IA, const int *JA, const int *DESCA, int *ipiv, int *INFO)
     
    void pgetrf (const int *m, const int *n, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *ipiv, int *INFO)
     
    template<typename number >
    void ppotri (const char *, const int *, number *, const int *, const int *, const int *, int *)
     
    void ppotri (const char *UPLO, const int *N, double *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void ppotri (const char *UPLO, const int *N, float *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void ppotri (const char *UPLO, const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    template<typename number >
    void pgetri (const int *, number *, const int *, const int *, const int *, const int *, number *, int *, int *, int *, int *)
     
    void pgetri (const int *N, double *A, const int *IA, const int *JA, const int *DESCA, const int *ipiv, double *work, int *lwork, int *iwork, int *liwork, int *info)
     
    void pgetri (const int *N, float *A, const int *IA, const int *JA, const int *DESCA, const int *ipiv, float *work, int *lwork, int *iwork, int *liwork, int *info)
     
    void pgetri (const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const int *ipiv, std::complex< double > *work, int *lwork, int *iwork, int *liwork, int *info)
     
    template<typename number >
    void ptrtri (const char *, const char *, const int *, number *, const int *, const int *, const int *, int *)
     
    void ptrtri (const char *UPLO, const char *DIAG, const int *N, double *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void ptrtri (const char *UPLO, const char *DIAG, const int *N, float *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void ptrtri (const char *UPLO, const char *DIAG, const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    template<typename number >
    void ppocon (const char *, const int *, const number *, const int *, const int *, const int *, const number *, number *, number *, const int *, int *, const int *, int *)
     
    void ppocon (const char *uplo, const int *N, const double *A, const int *IA, const int *JA, const int *DESCA, const double *ANORM, double *RCOND, double *WORK, const int *LWORK, int *IWORK, const int *LIWORK, int *INFO)
     
    void ppocon (const char *uplo, const int *N, const float *A, const int *IA, const int *JA, const int *DESCA, const float *ANORM, float *RCOND, float *WORK, const int *LWORK, int *IWORK, const int *LIWORK, int *INFO)
     
    template<typename number >
    number plansy (const char *, const char *, const int *, const number *, const int *, const int *, const int *, number *)
     
    double plansy (const char *norm, const char *uplo, const int *N, const double *A, const int *IA, const int *JA, const int *DESCA, double *work)
     
    float plansy (const char *norm, const char *uplo, const int *N, const float *A, const int *IA, const int *JA, const int *DESCA, float *work)
     
    template<typename number >
    void pgesv (const int *, const int *, number *, const int *, const int *, const int *, int *, number *, const int *, const int *, const int *, int *)
     
    void pgesv (const int *n, const int *nrhs, double *A, const int *ia, const int *ja, const int *desca, int *ipiv, double *B, const int *ib, const int *jb, const int *descb, int *info)
     
    void pgesv (const int *n, const int *nrhs, float *A, const int *ia, const int *ja, const int *desca, int *ipiv, float *B, const int *ib, const int *jb, const int *descb, int *info)
     
    template<typename number >
    void pgemm (const char *, const char *, const int *, const int *, const int *, const number *, const number *, const int *, const int *, const int *, const number *, const int *, const int *, const int *, const number *, number *, const int *, const int *, const int *)
     
    void pgemm (const char *transa, const char *transb, const int *m, const int *n, const int *k, const double *alpha, const double *A, const int *IA, const int *JA, const int *DESCA, const double *B, const int *IB, const int *JB, const int *DESCB, const double *beta, double *C, const int *IC, const int *JC, const int *DESCC)
     
    void pgemm (const char *transa, const char *transb, const int *m, const int *n, const int *k, const float *alpha, const float *A, const int *IA, const int *JA, const int *DESCA, const float *B, const int *IB, const int *JB, const int *DESCB, const float *beta, float *C, const int *IC, const int *JC, const int *DESCC)
     
    void pgemm (const char *transa, const char *transb, const int *m, const int *n, const int *k, const std::complex< double > *alpha, const std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const std::complex< double > *B, const int *IB, const int *JB, const int *DESCB, const std::complex< double > *beta, std::complex< double > *C, const int *IC, const int *JC, const int *DESCC)
     
    template<typename number >
    number plange (const char *, const int *, const int *, const number *, const int *, const int *, const int *, number *)
     
    double plange (const char *norm, const int *m, const int *n, const double *A, const int *ia, const int *ja, const int *desca, double *work)
     
    float plange (const char *norm, const int *m, const int *n, const float *A, const int *ia, const int *ja, const int *desca, float *work)
     
    template<typename number >
    void psyev (const char *, const char *, const int *, number *, const int *, const int *, int *, number *, number *, const int *, const int *, int *, number *, const int *, int *)
     
    void psyev (const char *jobz, const char *uplo, const int *m, double *A, const int *ia, const int *ja, int *desca, double *w, double *z, const int *iz, const int *jz, int *descz, double *work, const int *lwork, int *info)
     
    void psyev (const char *jobz, const char *uplo, const int *m, float *A, const int *ia, const int *ja, int *desca, float *w, float *z, const int *iz, const int *jz, int *descz, float *work, const int *lwork, int *info)
     
    void psyev (const char *jobz, const char *uplo, const int *m, std::complex< double > *A, const int *ia, const int *ja, int *desca, double *w, std::complex< double > *z, const int *iz, const int *jz, int *descz, std::complex< double > *work, const int *lwork, int *info)
     
    template<typename number >
    void placpy (const char *, const int *, const int *, const number *, const int *, const int *, const int *, number *, const int *, const int *, const int *)
     
    void placpy (const char *uplo, const int *m, const int *n, const double *A, const int *ia, const int *ja, const int *desca, double *B, const int *ib, const int *jb, const int *descb)
     
    void placpy (const char *uplo, const int *m, const int *n, const float *A, const int *ia, const int *ja, const int *desca, float *B, const int *ib, const int *jb, const int *descb)
     
    template<typename number >
    void pgemr2d (const int *, const int *, const number *, const int *, const int *, const int *, number *, const int *, const int *, const int *, const int *)
     
    void pgemr2d (const int *m, const int *n, const double *A, const int *ia, const int *ja, const int *desca, double *B, const int *ib, const int *jb, const int *descb, const int *ictxt)
     
    void pgemr2d (const int *m, const int *n, const float *A, const int *ia, const int *ja, const int *desca, float *B, const int *ib, const int *jb, const int *descb, const int *ictxt)
     
    template<typename number >
    void plamch (const int *, const char *, number &)
     
    void plamch (const int *ictxt, const char *cmach, double &val)
     
    void plamch (const int *ictxt, const char *cmach, float &val)
     
    template<typename number >
    void psyevx (const char *, const char *, const char *, const int *, number *, const int *, const int *, const int *, number *, number *, const int *, const int *, number *, const int *, const int *, number *, number *, number *, const int *, const int *, const int *, number *, int *, int *, int *, int *, int *, number *, int *)
     
    void psyevx (const char *jobz, const char *range, const char *uplo, const int *n, double *A, const int *ia, const int *ja, const int *desca, double *VL, double *VU, const int *il, const int *iu, double *abstol, const int *m, const int *nz, double *w, double *orfac, double *Z, const int *iz, const int *jz, const int *descz, double *work, int *lwork, int *iwork, int *liwork, int *ifail, int *iclustr, double *gap, int *info)
     
    void psyevx (const char *jobz, const char *range, const char *uplo, const int *n, float *A, const int *ia, const int *ja, const int *desca, float *VL, float *VU, const int *il, const int *iu, float *abstol, const int *m, const int *nz, float *w, float *orfac, float *Z, const int *iz, const int *jz, const int *descz, float *work, int *lwork, int *iwork, int *liwork, int *ifail, int *iclustr, float *gap, int *info)
     
    void psyevx (const char *jobz, const char *range, const char *uplo, const int *n, std::complex< double > *A, const int *ia, const int *ja, const int *desca, double *VL, double *VU, const int *il, const int *iu, double *abstol, const int *m, const int *nz, double *w, double *orfac, std::complex< double > *Z, const int *iz, const int *jz, const int *descz, std::complex< double > *work, int *lwork, int *iwork, int *liwork, int *ifail, int *iclustr, double *gap, int *info)
     
    template<typename number >
    void pgesvd (const char *, const char *, const int *, const int *, number *, const int *, const int *, const int *, number *, number *, const int *, const int *, const int *, number *, const int *, const int *, const int *, number *, int *, int *)
     
    void pgesvd (const char *jobu, const char *jobvt, const int *m, const int *n, double *A, const int *ia, const int *ja, const int *desca, double *S, double *U, const int *iu, const int *ju, const int *descu, double *VT, const int *ivt, const int *jvt, const int *descvt, double *work, int *lwork, int *info)
     
    void pgesvd (const char *jobu, const char *jobvt, const int *m, const int *n, float *A, const int *ia, const int *ja, const int *desca, float *S, float *U, const int *iu, const int *ju, const int *descu, float *VT, const int *ivt, const int *jvt, const int *descvt, float *work, int *lwork, int *info)
     
    template<typename number >
    void pgels (const char *, const int *, const int *, const int *, number *, const int *, const int *, const int *, number *, const int *, const int *, const int *, number *, int *, int *)
     
    void pgels (const char *trans, const int *m, const int *n, const int *nrhs, double *A, const int *ia, const int *ja, const int *desca, double *B, const int *ib, const int *jb, const int *descb, double *work, int *lwork, int *info)
     
    void pgels (const char *trans, const int *m, const int *n, const int *nrhs, float *A, const int *ia, const int *ja, const int *desca, float *B, const int *ib, const int *jb, const int *descb, float *work, int *lwork, int *info)
     
    template<typename number >
    void pgeadd (const char *, const int *, const int *, const number *, const number *, const int *, const int *, const int *, const number *, number *, const int *, const int *, const int *)
     
    void pgeadd (const char *transa, const int *m, const int *n, const double *alpha, const double *A, const int *IA, const int *JA, const int *DESCA, const double *beta, double *C, const int *IC, const int *JC, const int *DESCC)
     
    void pgeadd (const char *transa, const int *m, const int *n, const float *alpha, const float *A, const int *IA, const int *JA, const int *DESCA, const float *beta, float *C, const int *IC, const int *JC, const int *DESCC)
     
    void pgeadd (const char *transa, const int *m, const int *n, const std::complex< double > *alpha, const std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const std::complex< double > *beta, std::complex< double > *C, const int *IC, const int *JC, const int *DESCC)
     
    template<typename number >
    void ptran (const int *, const int *, const number *, const number *, const int *, const int *, const int *, const number *, number *, const int *, const int *, const int *)
     
    void ptran (const int *m, const int *n, const double *alpha, const double *A, const int *IA, const int *JA, const int *DESCA, const double *beta, double *C, const int *IC, const int *JC, const int *DESCC)
     
    void ptran (const int *m, const int *n, const float *alpha, const float *A, const int *IA, const int *JA, const int *DESCA, const float *beta, float *C, const int *IC, const int *JC, const int *DESCC)
     
    template<typename number >
    void psyevr (const char *, const char *, const char *, const int *, number *, const int *, const int *, const int *, const number *, const number *, const int *, const int *, int *, int *, number *, number *, const int *, const int *, const int *, number *, int *, int *, int *, int *)
     
    void psyevr (const char *jobz, const char *range, const char *uplo, const int *n, double *A, const int *IA, const int *JA, const int *DESCA, const double *VL, const double *VU, const int *IL, const int *IU, int *m, int *nz, double *w, double *Z, const int *IZ, const int *JZ, const int *DESCZ, double *work, int *lwork, int *iwork, int *liwork, int *info)
     
    void psyevr (const char *jobz, const char *range, const char *uplo, const int *n, float *A, const int *IA, const int *JA, const int *DESCA, const float *VL, const float *VU, const int *IL, const int *IU, int *m, int *nz, float *w, float *Z, const int *IZ, const int *JZ, const int *DESCZ, float *work, int *lwork, int *iwork, int *liwork, int *info)
     
    void psyevr (const char *jobz, const char *range, const char *uplo, const int *n, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const double *VL, const double *VU, const int *IL, const int *IU, int *m, int *nz, double *w, std::complex< double > *Z, const int *IZ, const int *JZ, const int *DESCZ, std::complex< double > *work, int *lwork, int *iwork, int *liwork, int *info)
     
    int lworkFromWork (std::vector< double > &work)
     
    int lworkFromWork (std::vector< float > &work)
     
    int lworkFromWork (std::vector< std::complex< double > > &work)
     
    + + + + + + + + + + + + + + +

    +Variables

    const double C_kb = 3.166811429e-06
     Boltzmann constant.
     
    const double C_haPerBohrToeVPerAng = 27.211386245988 / 0.529177210903
     
    const double C_haToeV = 27.211386245988
     
    const double C_bohrToAng = 0.529177210903
     
    const double C_pi = 3.14159265359
     
    const double C_AngTobohr = 1.0 / 0.529177210903
     
    +

    Typedef Documentation

    + +

    ◆ distributedCPUMultiVec

    + +
    +
    +Initial value:
    + + +
    An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
    Definition MultiVector.h:127
    + +
    +
    +
    + +

    ◆ distributedCPUVec

    + +
    +
    +Initial value:
    +
    dealii::LinearAlgebra::distributed::Vector<elem_type,
    +
    dealii::MemorySpace::Host>
    +
    +
    +
    + +

    ◆ global_size_type

    + + + +

    ◆ size_type

    + +
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ CouplingStructure

    + +
    +
    + + + + + +
    + + + + +
    enum class dftfe::CouplingStructure
    +
    +strong
    +
    + +

    Enum class that lists used in the non-local Operator.

    + + + + +
    Enumerator
    diagonal 
    dense 
    blockDiagonal 
    + +
    +
    + +

    ◆ densityFamilyType

    + +
    +
    + + + + + +
    + + + + +
    enum class dftfe::densityFamilyType
    +
    +strong
    +
    + + + +
    Enumerator
    LDA 
    GGA 
    + +
    +
    + +

    ◆ excDensityPositivityCheckTypes

    + +
    +
    + + + + + +
    + + + + +
    enum class dftfe::excDensityPositivityCheckTypes
    +
    +strong
    +
    + + + + +
    Enumerator
    NO_CHECK 
    EXCEPTION_POSITIVE 
    MAKE_POSITIVE 
    + +
    +
    + +

    ◆ fxcOutputDataAttributes

    + +
    +
    + + + + + +
    + + + + +
    enum class dftfe::fxcOutputDataAttributes
    +
    +strong
    +
    + + + + +
    Enumerator
    der2EnergyWithDensity 
    der2EnergyWithDensitySigma 
    der2EnergyWithSigma 
    + +
    +
    + +

    ◆ mixingVariable

    + +
    +
    + + + + + +
    + + + + +
    enum class dftfe::mixingVariable
    +
    +strong
    +
    + +

    Enum class that stores he list of variables that will can be used in the mixing scheme.

    + + + + + +
    Enumerator
    rho 
    gradRho 
    magZ 
    gradMagZ 
    + +
    +
    + +

    ◆ rhoDataAttributes

    + +
    +
    + + + + + +
    + + + + +
    enum class dftfe::rhoDataAttributes
    +
    +strong
    +
    + + + +
    Enumerator
    values 
    sigmaGradValue 
    + +
    +
    + +

    ◆ VeffOutputDataAttributes

    + +
    +
    + + + + + +
    + + + + +
    enum class dftfe::VeffOutputDataAttributes
    +
    +strong
    +
    + + + +
    Enumerator
    derEnergyWithDensity 
    derEnergyWithSigmaGradDensity 
    + +
    +
    + +

    ◆ wavefunctionFamilyType

    + +
    +
    + + + + + +
    + + + + +
    enum class dftfe::wavefunctionFamilyType
    +
    +strong
    +
    + + + + +
    Enumerator
    NONE 
    SCALED_FOCK 
    HUBBARD 
    + +
    +
    +

    Function Documentation

    + +

    ◆ C_num1DQuad()

    + +
    +
    +
    +template<unsigned int FEOrder>
    + + + + + +
    + + + + + + + +
    constexpr unsigned int dftfe::C_num1DQuad ()
    +
    +constexpr
    +
    + +

    1d quadrature rule order

    + +
    +
    + +

    ◆ C_num1DQuadLPSP()

    + +
    +
    +
    +template<unsigned int FEOrder>
    + + + + + +
    + + + + + + + +
    constexpr unsigned int dftfe::C_num1DQuadLPSP ()
    +
    +constexpr
    +
    + +

    1d quadrature rule order for local part of pseudopotential

    + +
    +
    + +

    ◆ C_num1DQuadNLPSP()

    + +
    +
    +
    +template<unsigned int FEOrder>
    + + + + + +
    + + + + + + + +
    constexpr unsigned int dftfe::C_num1DQuadNLPSP ()
    +
    +constexpr
    +
    + +

    1d quadrature rule order for non-local part of pseudopotential

    + +
    +
    + +

    ◆ C_num1DQuadSmearedCharge()

    + +
    +
    + + + + + +
    + + + + + + + +
    constexpr unsigned int dftfe::C_num1DQuadSmearedCharge ()
    +
    +constexpr
    +
    + +

    1d quad rule smeared nuclear charge

    + +
    +
    + +

    ◆ C_num1DQuadSmearedChargeHigh()

    + +
    +
    + + + + + +
    + + + + + + + +
    constexpr unsigned int dftfe::C_num1DQuadSmearedChargeHigh ()
    +
    +constexpr
    +
    +

    1d quad rule smeared nuclear charge if a very coarse FE mesh is used (e.g. softer pseudopotentials)

    + +
    +
    + +

    ◆ C_num1DQuadSmearedChargeStress()

    + +
    +
    + + + + + +
    + + + + + + + +
    constexpr unsigned int dftfe::C_num1DQuadSmearedChargeStress ()
    +
    +constexpr
    +
    + +

    1d quad rule smeared nuclear charge if cell stress calculation is on

    + +
    +
    + +

    ◆ C_numCopies1DQuadLPSP()

    + +
    +
    + + + + + +
    + + + + + + + +
    constexpr unsigned int dftfe::C_numCopies1DQuadLPSP ()
    +
    +constexpr
    +
    + +

    number of copies 1d quad rule local PSP

    + +
    +
    + +

    ◆ C_numCopies1DQuadNLPSP()

    + +
    +
    + + + + + +
    + + + + + + + +
    constexpr unsigned int dftfe::C_numCopies1DQuadNLPSP ()
    +
    +constexpr
    +
    + +

    number of copies 1d quad rule non-local PSP

    + +
    +
    + +

    ◆ C_numCopies1DQuadSmearedCharge()

    + +
    +
    + + + + + +
    + + + + + + + +
    constexpr unsigned int dftfe::C_numCopies1DQuadSmearedCharge ()
    +
    +constexpr
    +
    + +

    number of copies 1d quad rule smeared nuclear charge

    + +
    +
    + +

    ◆ C_numCopies1DQuadSmearedChargeHigh()

    + +
    +
    + + + + + +
    + + + + + + + +
    constexpr unsigned int dftfe::C_numCopies1DQuadSmearedChargeHigh ()
    +
    +constexpr
    +
    +

    number of copies 1d quad rule smeared nuclear charge if a very coarse FE mesh is used (e.g. softer pseudpotentials)

    + +
    +
    + +

    ◆ C_numCopies1DQuadSmearedChargeStress()

    + +
    +
    + + + + + +
    + + + + + + + +
    constexpr unsigned int dftfe::C_numCopies1DQuadSmearedChargeStress ()
    +
    +constexpr
    +
    +

    number of copies 1d quad rule smeared nuclear charge if cell stress calculation is on

    + +
    +
    + +

    ◆ C_rhoNodalPolyOrder()

    + +
    +
    +
    +template<unsigned int FEOrder, unsigned int FEOrderElectro>
    + + + + + +
    + + + + + + + +
    constexpr unsigned int dftfe::C_rhoNodalPolyOrder ()
    +
    +constexpr
    +
    + +

    rho nodal polynomial order

    + +
    +
    + +

    ◆ Cblacs_barrier()

    + +
    +
    + + + + + + + + + + + +
    void dftfe::Cblacs_barrier (int ,
    const char *  )
    +
    +

    This routines holds up execution of all processes within the indicated scope until they have all called the routine.

    + +
    +
    + +

    ◆ Cblacs_exit()

    + +
    +
    + + + + + + + +
    void dftfe::Cblacs_exit (int error_code)
    +
    +

    Free all BLACS contexts and releases all allocated memory.

    + +
    +
    + +

    ◆ Cblacs_get()

    + +
    +
    + + + + + + + + + + + + + + + + +
    void dftfe::Cblacs_get (int icontxt,
    int what,
    int * val )
    +
    +

    Return internal BLACS value in val based on the input what and icontxt. The most common use is in retrieving a default system context (what = 0, icontxt is ignored) to be used in BLACS_GRIDINIT or BLACS_GRIDMAP.

    +

    https://www.ibm.com/support/knowledgecenter/en/SSNR5K_4.2.0/com.ibm.cluster.pessl.v4r2.pssl100.doc/am6gr_dbget.htm

    + +
    +
    + +

    ◆ Cblacs_gridexit()

    + +
    +
    + + + + + + + +
    void dftfe::Cblacs_gridexit (int context)
    +
    +

    Release a BLACS context.

    + +
    +
    + +

    ◆ Cblacs_gridinfo()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::Cblacs_gridinfo (int context,
    int * grid_height,
    int * grid_width,
    int * grid_row,
    int * grid_col )
    +
    +
    + +

    ◆ Cblacs_gridinit()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::Cblacs_gridinit (int * context,
    const char * order,
    int grid_height,
    int grid_width )
    +
    +

    Map the processes sequentially in row-major or column-major order into the process grid. Input arguments must be the same on every process.

    +

    On return, context is the integer handle to the BLACS context, whereas on entry it is a system context to be used in creating the BLACS context.

    +

    https://www.ibm.com/support/knowledgecenter/en/SSNR5K_4.2.0/com.ibm.cluster.pessl.v4r2.pssl100.doc/am6gr_dbint.htm

    + +
    +
    + +

    ◆ Cblacs_pcoord()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::Cblacs_pcoord (int ictxt,
    int pnum,
    int * prow,
    int * pcol )
    +
    +

    Given the system process number, return the row and column coordinates in the BLACS' process grid.

    + +
    +
    + +

    ◆ Cblacs_pinfo()

    + +
    +
    + + + + + + + + + + + +
    void dftfe::Cblacs_pinfo (int * rank,
    int * nprocs )
    +
    +

    Determine how many processes are available and the current process rank.

    +

    https://www.ibm.com/support/knowledgecenter/en/SSNR5K_4.2.0/com.ibm.cluster.pessl.v4r2.pssl100.doc/am6gr_dbpnf.htm

    + +
    +
    + +

    ◆ Cdgerv2d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::Cdgerv2d (int context,
    int M,
    int N,
    double * A,
    int lda,
    int rsrc,
    int csrc )
    +
    +

    Receives a message from a process @prsrc, csrc into a general rectangular matrix.

    +

    https://software.intel.com/en-us/mkl-developer-reference-c-gerv2d

    + +
    +
    + +

    ◆ Cdgesd2d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::Cdgesd2d (int context,
    int M,
    int N,
    double * A,
    int lda,
    int rdest,
    int cdest )
    +
    +

    Sends the general rectangular matrix A to the destination process rdest cdest in the process grid.

    +

    https://software.intel.com/en-us/mkl-developer-reference-c-2018-beta-gesd2d

    + +
    +
    + +

    ◆ Cgerv2d() [1/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::Cgerv2d (int context,
    int M,
    int N,
    double * A,
    int lda,
    int rsrc,
    int csrc )
    +
    +inline
    +
    + +
    +
    + +

    ◆ Cgerv2d() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::Cgerv2d (int context,
    int M,
    int N,
    float * A,
    int lda,
    int rsrc,
    int csrc )
    +
    +inline
    +
    + +
    +
    + +

    ◆ Cgerv2d() [3/3]

    + +
    +
    +
    +template<typename number >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::Cgerv2d (int ,
    int ,
    int ,
    number * ,
    int ,
    int ,
    int  )
    +
    +inline
    +
    + +
    +
    + +

    ◆ Cgesd2d() [1/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::Cgesd2d (int context,
    int M,
    int N,
    double * A,
    int lda,
    int rdest,
    int cdest )
    +
    +inline
    +
    + +
    +
    + +

    ◆ Cgesd2d() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::Cgesd2d (int context,
    int M,
    int N,
    float * A,
    int lda,
    int rdest,
    int cdest )
    +
    +inline
    +
    + +
    +
    + +

    ◆ Cgesd2d() [3/3]

    + +
    +
    +
    +template<typename number >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::Cgesd2d (int ,
    int ,
    int ,
    number * ,
    int ,
    int ,
    int  )
    +
    +inline
    +
    + +
    +
    + +

    ◆ computeRhoFirstOrderResponse()

    + +
    +
    +
    +template<typename NumberType , dftfe::utils::MemorySpace memorySpace>
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::computeRhoFirstOrderResponse (const dftfe::utils::MemoryStorage< NumberType, memorySpace > & X,
    const dftfe::utils::MemoryStorage< NumberType, memorySpace > & XPrime,
    const unsigned int totalNumWaveFunctions,
    const std::vector< std::vector< double > > & densityMatDerFermiEnergy,
    std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, memorySpace > > & basisOperationsPtr,
    std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > & BLASWrapperPtr,
    const unsigned int matrixFreeDofhandlerIndex,
    const unsigned int quadratureIndex,
    const std::vector< double > & kPointWeights,
    std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & rhoResponseValuesHam,
    std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & rhoResponseValuesFermiEnergy,
    const MPI_Comm & mpiCommParent,
    const MPI_Comm & interpoolcomm,
    const MPI_Comm & interBandGroupComm,
    const dftParameters & dftParams )
    +
    + +
    +
    + +

    ◆ computeRhoFromPSI()

    + +
    +
    +
    +template<typename NumberType , dftfe::utils::MemorySpace memorySpace>
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::computeRhoFromPSI (const dftfe::utils::MemoryStorage< NumberType, memorySpace > * X,
    const dftfe::utils::MemoryStorage< NumberType, memorySpace > * XFrac,
    const unsigned int totalNumWaveFunctions,
    const unsigned int Nfr,
    const std::vector< std::vector< double > > & eigenValues,
    const double fermiEnergy,
    const double fermiEnergyUp,
    const double fermiEnergyDown,
    std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, memorySpace > > & basisOperationsPtr,
    std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > & BLASWrapperPtr,
    const unsigned int matrixFreeDofhandlerIndex,
    const unsigned int quadratureIndex,
    const std::vector< double > & kPointWeights,
    std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & densityValues,
    std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > & gradDensityValues,
    const bool isEvaluateGradRho,
    const MPI_Comm & mpiCommParent,
    const MPI_Comm & interpoolcomm,
    const MPI_Comm & interBandGroupComm,
    const dftParameters & dftParams,
    const bool spectrumSplit )
    +
    + +
    +
    + +

    ◆ computeRhoGradRhoFromInterpolatedValues()

    + +
    +
    +
    +template<typename NumberType >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::computeRhoGradRhoFromInterpolatedValues (std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, dftfe::utils::MemorySpace::HOST > > & basisOperationsPtr,
    std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > & BLASWrapperPtr,
    const std::pair< unsigned int, unsigned int > cellRange,
    const std::pair< unsigned int, unsigned int > vecRange,
    double * partialOccupVec,
    NumberType * wfcQuadPointData,
    NumberType * gradWfcQuadPointData,
    double * rhoCellsWfcContributions,
    double * gradRhoCellsWfcContributions,
    double * rho,
    double * gradRho,
    const bool isEvaluateGradRho )
    +
    + +
    +
    + +

    ◆ computeRhoResponseFromInterpolatedValues()

    + +
    +
    +
    +template<typename NumberType >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::computeRhoResponseFromInterpolatedValues (std::shared_ptr< dftfe::basis::FEBasisOperations< NumberType, double, dftfe::utils::MemorySpace::HOST > > & basisOperationsPtr,
    std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > & BLASWrapperPtr,
    const std::pair< unsigned int, unsigned int > cellRange,
    const std::pair< unsigned int, unsigned int > vecRange,
    double * onesVec,
    double * partialOccupPrimeVec,
    NumberType * wfcQuadPointData,
    NumberType * wfcPrimeQuadPointData,
    double * rhoResponseHamCellsWfcContributions,
    double * rhoResponseFermiEnergyCellsWfcContributions,
    double * rhoResponseHam,
    double * rhoResponseFermiEnergy )
    +
    + +
    +
    + +

    ◆ Csgerv2d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::Csgerv2d (int context,
    int M,
    int N,
    float * A,
    int lda,
    int rsrc,
    int csrc )
    +
    + +
    +
    + +

    ◆ Csgesd2d()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::Csgesd2d (int context,
    int M,
    int N,
    float * A,
    int lda,
    int rdest,
    int cdest )
    +
    + +
    +
    + +

    ◆ Csys2blacs_handle()

    + +
    +
    + + + + + + + +
    int dftfe::Csys2blacs_handle (MPI_Comm comm)
    +
    +

    Get BLACS context from MPI comm.

    + +
    +
    + +

    ◆ descinit_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::descinit_ (int * desc,
    const int * m,
    const int * n,
    const int * mb,
    const int * nb,
    const int * irsrc,
    const int * icsrc,
    const int * ictxt,
    const int * lld,
    int * info )
    +
    +

    Initialize the descriptor vector with the 8 input arguments

    + +
    +
    + +

    ◆ iceil_()

    + +
    +
    + + + + + + + + + + + +
    int dftfe::iceil_ (const int * i1,
    const int * i2 )
    +
    +

    Return the ceiling of the division of two integers.

    +

    http://www.netlib.org/scalapack/explore-html/df/d07/iceil_8f_source.html

    + +
    +
    + +

    ◆ ilcm_()

    + +
    +
    + + + + + + + + + + + +
    int dftfe::ilcm_ (const int * M,
    const int * N )
    +
    +

    Compute the Least Common Multiple (LCM) of two positive integers M and N. In fact the routine Compute the greatest common divisor (GCD) and use the fact that M*N = GCD*LCM.

    +

    http://www.netlib.org/scalapack/explore-html/d0/d9b/ilcm_8f_source.html

    + +
    +
    + +

    ◆ indxg2p_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int dftfe::indxg2p_ (const int * glob,
    const int * nb,
    const int * iproc,
    const int * isproc,
    const int * nprocs )
    +
    +

    Compute the process coordinate which possesses the entry of a distributed matrix specified by a global index

    + +
    +
    + +

    ◆ indxl2g_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int dftfe::indxl2g_ (const int * indxloc,
    const int * nb,
    const int * iproc,
    const int * isrcproc,
    const int * nprocs )
    +
    +

    Compute the global index of a distributed matrix entry pointed to by the local index indxloc of the process indicated by iproc.

    +
    Parameters
    + + + + + + +
    indxlocThe local index of the distributed matrix entry.
    nbBlock size, size of the blocks the distributed matrix is split into.
    iprocThe coordinate of the process whose local array row or column is to be determined
    isrcprocThe coordinate of the process that possesses the first row/column of the distributed matrix
    nprocsThe total number processes over which the distributed matrix is distributed
    +
    +
    + +
    +
    + +

    ◆ lworkFromWork() [1/3]

    + +
    +
    + + + + + +
    + + + + + + + +
    int dftfe::lworkFromWork (std::vector< double > & work)
    +
    +inline
    +
    + +
    +
    + +

    ◆ lworkFromWork() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + +
    int dftfe::lworkFromWork (std::vector< float > & work)
    +
    +inline
    +
    + +
    +
    + +

    ◆ lworkFromWork() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + +
    int dftfe::lworkFromWork (std::vector< std::complex< double > > & work)
    +
    +inline
    +
    + +
    +
    + +

    ◆ numroc_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int dftfe::numroc_ (const int * n,
    const int * nb,
    const int * iproc,
    const int * isproc,
    const int * nprocs )
    +
    +

    Compute how many rows and columns each process owns (NUMber of Rows Or Columns).

    +

    https://www.ibm.com/support/knowledgecenter/SSNR5K_4.2.0/com.ibm.cluster.pessl.v4r2.pssl100.doc/am6gr_dnumy.htm

    + +
    +
    + +

    ◆ pdgeadd_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pdgeadd_ (const char * transa,
    const int * m,
    const int * n,
    const double * alpha,
    const double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const double * beta,
    double * C,
    const int * IC,
    const int * JC,
    const int * DESCC )
    +
    + +
    +
    + +

    ◆ pdgels_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pdgels_ (const char * trans,
    const int * m,
    const int * n,
    const int * nrhs,
    double * A,
    const int * ia,
    const int * ja,
    const int * desca,
    double * B,
    const int * ib,
    const int * jb,
    const int * descb,
    double * work,
    int * lwork,
    int * info )
    +
    + +
    +
    + +

    ◆ pdgemm_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pdgemm_ (const char * transa,
    const char * transb,
    const int * m,
    const int * n,
    const int * k,
    const double * alpha,
    const double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const double * B,
    const int * IB,
    const int * JB,
    const int * DESCB,
    const double * beta,
    double * C,
    const int * IC,
    const int * JC,
    const int * DESCC )
    +
    +

    Perform one of the matrix-matrix operations:

    +\begin{align*}
+\mathrm{sub}(C) &\dealcoloneq \alpha
+op(\mathrm{sub}(A))op(\mathrm{sub}(B))
+                           + \beta \mathrm{sub}(C), \\
+\mathrm{sub}(C) &\dealcoloneq \alpha
+op(\mathrm{sub}(A))op(\mathrm{sub}(B))
+                           + beta sub(C),
+\end{align*} +

    +

    where $\mathrm{sub}(C)$ denotes C(IC:IC+M-1,JC:JC+N-1), and, $op(X)$ is one of $op(X) = X$ or $op(X) = X^T$.

    + +
    +
    + +

    ◆ pdgemr2d_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pdgemr2d_ (const int * m,
    const int * n,
    const double * A,
    const int * ia,
    const int * ja,
    const int * desca,
    double * B,
    const int * ib,
    const int * jb,
    const int * descb,
    const int * ictxt )
    +
    +

    Copies the content of a general rectangular distributed matrix A to another distributed matrix B It is not required that the matrices A and B have the same process grid or block size, e.g. copying a matrix from a one-dimensional to a two-dimensional process grid ictxt is a context which is at least a union of all processes in context A and B

    + +
    +
    + +

    ◆ pdgesv_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pdgesv_ (const int * n,
    const int * nrhs,
    double * A,
    const int * ia,
    const int * ja,
    const int * desca,
    int * ipiv,
    double * B,
    const int * ib,
    const int * jb,
    const int * descb,
    int * info )
    +
    +

    Compute the solution to a real system of linear equations

    + +
    +
    + +

    ◆ pdgesvd_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pdgesvd_ (const char * jobu,
    const char * jobvt,
    const int * m,
    const int * n,
    double * A,
    const int * ia,
    const int * ja,
    const int * desca,
    double * S,
    double * U,
    const int * iu,
    const int * ju,
    const int * descu,
    double * VT,
    const int * ivt,
    const int * jvt,
    const int * descvt,
    double * work,
    int * lwork,
    int * info )
    +
    + +
    +
    + +

    ◆ pdgetrf_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pdgetrf_ (const int * m,
    const int * n,
    double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * ipiv,
    int * INFO )
    +
    +
    + +

    ◆ pdgetri_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pdgetri_ (const int * N,
    double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const int * ipiv,
    double * work,
    int * lwork,
    int * iwork,
    int * liwork,
    int * info )
    +
    +

    PDGETRI computes the inverse of a distributed matrix using the LU factorization computed by PDGETRF. This method inverts U and then computes the inverse of sub( A ) = A(IA:IA+N-1,JA:JA+N-1) denoted InvA by solving the system InvA*L = inv(U) for InvA.

    +

    http://www.netlib.org/scalapack/explore-html/d3/df3/pdgetri_8f_source.html https://www.ibm.com/support/knowledgecenter/SSNR5K_4.2.0/com.ibm.cluster.pessl.v4r2.pssl100.doc/am6gr_lgetri.htm

    + +
    +
    + +

    ◆ pdlacpy_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pdlacpy_ (const char * uplo,
    const int * m,
    const int * n,
    const double * A,
    const int * ia,
    const int * ja,
    const int * desca,
    double * B,
    const int * ib,
    const int * jb,
    const int * descb )
    +
    +

    Copy all or a part of a distributed matrix A to another distributed matrix B. No communication is performed, pdlacpy performs a local copy $\mathrm{sub}(A) \dealcoloneq \mathrm{sub}(B)$, where $\mathrm{sub}(A)$ denotes $A(ia:ia+m-1, ja:ja+n-1)$ and $\mathrm{sub}(B)$ denotes $B(ib:ib+m-1, jb:jb+n-1)$.

    + +
    +
    + +

    ◆ pdlamch_()

    + +
    +
    + + + + + + + + + + + +
    double dftfe::pdlamch_ (const int * ictxt,
    const char * cmach )
    +
    +

    helper routines determining machine precision

    + +
    +
    + +

    ◆ pdlange_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    double dftfe::pdlange_ (char const * norm,
    const int * m,
    const int * n,
    const double * A,
    const int * ia,
    const int * ja,
    const int * desca,
    double * work )
    +
    +

    Return the value of the one norm, or the Frobenius norm, or the infinity norm, or the element of largest absolute value of a distributed matrix

    + +
    +
    + +

    ◆ pdlansy_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    double dftfe::pdlansy_ (const char * norm,
    const char * uplo,
    const int * N,
    const double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    double * work )
    +
    +
    + +

    ◆ pdpocon_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pdpocon_ (const char * uplo,
    const int * N,
    const double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const double * ANORM,
    double * RCOND,
    double * WORK,
    const int * LWORK,
    int * IWORK,
    const int * LIWORK,
    int * INFO )
    +
    +
    + +

    ◆ pdpotrf_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pdpotrf_ (const char * UPLO,
    const int * N,
    double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * INFO )
    +
    +

    Compute the Cholesky factorization of an N-by-N real symmetric positive definite distributed matrix sub( A ) denoting A(IA:IA+N-1, JA:JA+N-1).

    +

    http://www.netlib.org/scalapack/explore-html/d5/d9e/pdpotrf_8f_source.html https://www.ibm.com/support/knowledgecenter/SSNR5K_4.2.0/com.ibm.cluster.pessl.v4r2.pssl100.doc/am6gr_lpotrf.htm

    + +
    +
    + +

    ◆ pdpotri_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pdpotri_ (const char * UPLO,
    const int * N,
    double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * INFO )
    +
    +

    Compute the inverse of a real symmetric positive definite distributed matrix sub( A ) = A(IA:IA+N-1,JA:JA+N-1) using the Cholesky factorization sub( A ) = U**T*U or L*L**T computed by PDPOTRF.

    +

    http://www.netlib.org/scalapack/explore-html/d2/d44/pdpotri_8f_source.html https://www.ibm.com/support/knowledgecenter/SSNR5K_4.2.0/com.ibm.cluster.pessl.v4r2.pssl100.doc/am6gr_lpotri.htm https://software.intel.com/en-us/mkl-developer-reference-c-p-potri

    + +
    +
    + +

    ◆ pdsyev_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pdsyev_ (const char * jobz,
    const char * uplo,
    const int * m,
    double * A,
    const int * ia,
    const int * ja,
    int * desca,
    double * w,
    double * z,
    const int * iz,
    const int * jz,
    int * descz,
    double * work,
    const int * lwork,
    int * info )
    +
    +

    Compute all eigenvalues and, optionally, eigenvectors of a real symmetric matrix A by calling the recommended sequence of ScaLAPACK routines. In its present form, the routine assumes a homogeneous system and makes no checks for consistency of the eigenvalues or eigenvectors across the different processes. Because of this, it is possible that a heterogeneous system may return incorrect results without any error messages.

    +

    http://www.netlib.org/scalapack/explore-html/d0/d1a/pdsyev_8f.html https://www.ibm.com/support/knowledgecenter/SSNR5K_4.2.0/com.ibm.cluster.pessl.v4r2.pssl100.doc/am6gr_lsyev.htm#lsyev

    + +
    +
    + +

    ◆ pdsyevr_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pdsyevr_ (const char * jobz,
    const char * range,
    const char * uplo,
    const int * n,
    double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const double * VL,
    const double * VU,
    const int * IL,
    const int * IU,
    int * m,
    int * nz,
    double * w,
    double * Z,
    const int * IZ,
    const int * JZ,
    const int * DESCZ,
    double * work,
    int * lwork,
    int * iwork,
    int * liwork,
    int * info )
    +
    +

    psyevr computes selected eigenvalues and, optionally, eigenvectors of a real symmetric matrix A using a parallel implementation of the MRR algorithm. Eigenvalues/vectors can be selected by specifying a range of values or a range of indices for the desired eigenvalues.

    + +
    +
    + +

    ◆ pdsyevx_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pdsyevx_ (const char * jobz,
    const char * range,
    const char * uplo,
    const int * n,
    double * A,
    const int * ia,
    const int * ja,
    const int * desca,
    const double * VL,
    const double * VU,
    const int * il,
    const int * iu,
    const double * abstol,
    const int * m,
    const int * nz,
    double * w,
    double * orfac,
    double * Z,
    const int * iz,
    const int * jz,
    const int * descz,
    double * work,
    int * lwork,
    int * iwork,
    int * liwork,
    int * ifail,
    int * iclustr,
    double * gap,
    int * info )
    +
    +

    psyevx computes selected eigenvalues and, optionally, eigenvectors of a real symmetric matrix A. Eigenvalues/vectors can be selected by specifying a range of values or a range of indices for the desired eigenvalues.

    + +
    +
    + +

    ◆ pdtran_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pdtran_ (const int * m,
    const int * n,
    const double * alpha,
    const double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const double * beta,
    double * C,
    const int * IC,
    const int * JC,
    const int * DESCC )
    +
    +

    Routine to transpose a matrix: C = beta C + alpha A^T

    + +
    +
    + +

    ◆ pdtrtri_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pdtrtri_ (const char * UPLO,
    const char * DIAG,
    const int * N,
    double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * INFO )
    +
    +
    + +

    ◆ pgeadd() [1/4]

    + +
    +
    +
    +template<typename number >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgeadd (const char * ,
    const int * ,
    const int * ,
    const number * ,
    const number * ,
    const int * ,
    const int * ,
    const int * ,
    const number * ,
    number * ,
    const int * ,
    const int * ,
    const int *  )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgeadd() [2/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgeadd (const char * transa,
    const int * m,
    const int * n,
    const double * alpha,
    const double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const double * beta,
    double * C,
    const int * IC,
    const int * JC,
    const int * DESCC )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgeadd() [3/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgeadd (const char * transa,
    const int * m,
    const int * n,
    const float * alpha,
    const float * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const float * beta,
    float * C,
    const int * IC,
    const int * JC,
    const int * DESCC )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgeadd() [4/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgeadd (const char * transa,
    const int * m,
    const int * n,
    const std::complex< double > * alpha,
    const std::complex< double > * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const std::complex< double > * beta,
    std::complex< double > * C,
    const int * IC,
    const int * JC,
    const int * DESCC )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgels() [1/3]

    + +
    +
    +
    +template<typename number >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgels (const char * ,
    const int * ,
    const int * ,
    const int * ,
    number * ,
    const int * ,
    const int * ,
    const int * ,
    number * ,
    const int * ,
    const int * ,
    const int * ,
    number * ,
    int * ,
    int *  )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgels() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgels (const char * trans,
    const int * m,
    const int * n,
    const int * nrhs,
    double * A,
    const int * ia,
    const int * ja,
    const int * desca,
    double * B,
    const int * ib,
    const int * jb,
    const int * descb,
    double * work,
    int * lwork,
    int * info )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgels() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgels (const char * trans,
    const int * m,
    const int * n,
    const int * nrhs,
    float * A,
    const int * ia,
    const int * ja,
    const int * desca,
    float * B,
    const int * ib,
    const int * jb,
    const int * descb,
    float * work,
    int * lwork,
    int * info )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgemm() [1/4]

    + +
    +
    +
    +template<typename number >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgemm (const char * ,
    const char * ,
    const int * ,
    const int * ,
    const int * ,
    const number * ,
    const number * ,
    const int * ,
    const int * ,
    const int * ,
    const number * ,
    const int * ,
    const int * ,
    const int * ,
    const number * ,
    number * ,
    const int * ,
    const int * ,
    const int *  )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgemm() [2/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgemm (const char * transa,
    const char * transb,
    const int * m,
    const int * n,
    const int * k,
    const double * alpha,
    const double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const double * B,
    const int * IB,
    const int * JB,
    const int * DESCB,
    const double * beta,
    double * C,
    const int * IC,
    const int * JC,
    const int * DESCC )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgemm() [3/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgemm (const char * transa,
    const char * transb,
    const int * m,
    const int * n,
    const int * k,
    const float * alpha,
    const float * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const float * B,
    const int * IB,
    const int * JB,
    const int * DESCB,
    const float * beta,
    float * C,
    const int * IC,
    const int * JC,
    const int * DESCC )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgemm() [4/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgemm (const char * transa,
    const char * transb,
    const int * m,
    const int * n,
    const int * k,
    const std::complex< double > * alpha,
    const std::complex< double > * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const std::complex< double > * B,
    const int * IB,
    const int * JB,
    const int * DESCB,
    const std::complex< double > * beta,
    std::complex< double > * C,
    const int * IC,
    const int * JC,
    const int * DESCC )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgemr2d() [1/3]

    + +
    +
    +
    +template<typename number >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgemr2d (const int * ,
    const int * ,
    const number * ,
    const int * ,
    const int * ,
    const int * ,
    number * ,
    const int * ,
    const int * ,
    const int * ,
    const int *  )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgemr2d() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgemr2d (const int * m,
    const int * n,
    const double * A,
    const int * ia,
    const int * ja,
    const int * desca,
    double * B,
    const int * ib,
    const int * jb,
    const int * descb,
    const int * ictxt )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgemr2d() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgemr2d (const int * m,
    const int * n,
    const float * A,
    const int * ia,
    const int * ja,
    const int * desca,
    float * B,
    const int * ib,
    const int * jb,
    const int * descb,
    const int * ictxt )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgesv() [1/3]

    + +
    +
    +
    +template<typename number >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgesv (const int * ,
    const int * ,
    number * ,
    const int * ,
    const int * ,
    const int * ,
    int * ,
    number * ,
    const int * ,
    const int * ,
    const int * ,
    int *  )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgesv() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgesv (const int * n,
    const int * nrhs,
    double * A,
    const int * ia,
    const int * ja,
    const int * desca,
    int * ipiv,
    double * B,
    const int * ib,
    const int * jb,
    const int * descb,
    int * info )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgesv() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgesv (const int * n,
    const int * nrhs,
    float * A,
    const int * ia,
    const int * ja,
    const int * desca,
    int * ipiv,
    float * B,
    const int * ib,
    const int * jb,
    const int * descb,
    int * info )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgesvd() [1/3]

    + +
    +
    +
    +template<typename number >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgesvd (const char * ,
    const char * ,
    const int * ,
    const int * ,
    number * ,
    const int * ,
    const int * ,
    const int * ,
    number * ,
    number * ,
    const int * ,
    const int * ,
    const int * ,
    number * ,
    const int * ,
    const int * ,
    const int * ,
    number * ,
    int * ,
    int *  )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgesvd() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgesvd (const char * jobu,
    const char * jobvt,
    const int * m,
    const int * n,
    double * A,
    const int * ia,
    const int * ja,
    const int * desca,
    double * S,
    double * U,
    const int * iu,
    const int * ju,
    const int * descu,
    double * VT,
    const int * ivt,
    const int * jvt,
    const int * descvt,
    double * work,
    int * lwork,
    int * info )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgesvd() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgesvd (const char * jobu,
    const char * jobvt,
    const int * m,
    const int * n,
    float * A,
    const int * ia,
    const int * ja,
    const int * desca,
    float * S,
    float * U,
    const int * iu,
    const int * ju,
    const int * descu,
    float * VT,
    const int * ivt,
    const int * jvt,
    const int * descvt,
    float * work,
    int * lwork,
    int * info )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgetrf() [1/4]

    + +
    +
    +
    +template<typename number >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgetrf (const int * ,
    const int * ,
    number * ,
    const int * ,
    const int * ,
    const int * ,
    int * ,
    int *  )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgetrf() [2/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgetrf (const int * m,
    const int * n,
    double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * ipiv,
    int * INFO )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgetrf() [3/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgetrf (const int * m,
    const int * n,
    float * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * ipiv,
    int * INFO )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgetrf() [4/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgetrf (const int * m,
    const int * n,
    std::complex< double > * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * ipiv,
    int * INFO )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgetri() [1/4]

    + +
    +
    +
    +template<typename number >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgetri (const int * ,
    number * ,
    const int * ,
    const int * ,
    const int * ,
    const int * ,
    number * ,
    int * ,
    int * ,
    int * ,
    int *  )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgetri() [2/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgetri (const int * N,
    double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const int * ipiv,
    double * work,
    int * lwork,
    int * iwork,
    int * liwork,
    int * info )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgetri() [3/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgetri (const int * N,
    float * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const int * ipiv,
    float * work,
    int * lwork,
    int * iwork,
    int * liwork,
    int * info )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pgetri() [4/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pgetri (const int * N,
    std::complex< double > * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const int * ipiv,
    std::complex< double > * work,
    int * lwork,
    int * iwork,
    int * liwork,
    int * info )
    +
    +inline
    +
    + +
    +
    + +

    ◆ placpy() [1/3]

    + +
    +
    +
    +template<typename number >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::placpy (const char * ,
    const int * ,
    const int * ,
    const number * ,
    const int * ,
    const int * ,
    const int * ,
    number * ,
    const int * ,
    const int * ,
    const int *  )
    +
    +inline
    +
    + +
    +
    + +

    ◆ placpy() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::placpy (const char * uplo,
    const int * m,
    const int * n,
    const double * A,
    const int * ia,
    const int * ja,
    const int * desca,
    double * B,
    const int * ib,
    const int * jb,
    const int * descb )
    +
    +inline
    +
    + +
    +
    + +

    ◆ placpy() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::placpy (const char * uplo,
    const int * m,
    const int * n,
    const float * A,
    const int * ia,
    const int * ja,
    const int * desca,
    float * B,
    const int * ib,
    const int * jb,
    const int * descb )
    +
    +inline
    +
    + +
    +
    + +

    ◆ plamch() [1/3]

    + +
    +
    +
    +template<typename number >
    + + + + + +
    + + + + + + + + + + + + + + + + +
    void dftfe::plamch (const int * ,
    const char * ,
    number &  )
    +
    +inline
    +
    + +
    +
    + +

    ◆ plamch() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + +
    void dftfe::plamch (const int * ictxt,
    const char * cmach,
    double & val )
    +
    +inline
    +
    + +
    +
    + +

    ◆ plamch() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + +
    void dftfe::plamch (const int * ictxt,
    const char * cmach,
    float & val )
    +
    +inline
    +
    + +
    +
    + +

    ◆ plange() [1/3]

    + +
    +
    +
    +template<typename number >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    number dftfe::plange (const char * ,
    const int * ,
    const int * ,
    const number * ,
    const int * ,
    const int * ,
    const int * ,
    number *  )
    +
    +inline
    +
    + +
    +
    + +

    ◆ plange() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    double dftfe::plange (const char * norm,
    const int * m,
    const int * n,
    const double * A,
    const int * ia,
    const int * ja,
    const int * desca,
    double * work )
    +
    +inline
    +
    + +
    +
    + +

    ◆ plange() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    float dftfe::plange (const char * norm,
    const int * m,
    const int * n,
    const float * A,
    const int * ia,
    const int * ja,
    const int * desca,
    float * work )
    +
    +inline
    +
    + +
    +
    + +

    ◆ plansy() [1/3]

    + +
    +
    +
    +template<typename number >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    number dftfe::plansy (const char * ,
    const char * ,
    const int * ,
    const number * ,
    const int * ,
    const int * ,
    const int * ,
    number *  )
    +
    +inline
    +
    + +
    +
    + +

    ◆ plansy() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    double dftfe::plansy (const char * norm,
    const char * uplo,
    const int * N,
    const double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    double * work )
    +
    +inline
    +
    + +
    +
    + +

    ◆ plansy() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    float dftfe::plansy (const char * norm,
    const char * uplo,
    const int * N,
    const float * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    float * work )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pplacgv() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pplacgv (const int * N,
    double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const int * INCX )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pplacgv() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pplacgv (const int * N,
    std::complex< double > * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const int * INCX )
    +
    +inline
    +
    + +
    +
    + +

    ◆ ppocon() [1/3]

    + +
    +
    +
    +template<typename number >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::ppocon (const char * ,
    const int * ,
    const number * ,
    const int * ,
    const int * ,
    const int * ,
    const number * ,
    number * ,
    number * ,
    const int * ,
    int * ,
    const int * ,
    int *  )
    +
    +inline
    +
    + +
    +
    + +

    ◆ ppocon() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::ppocon (const char * uplo,
    const int * N,
    const double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const double * ANORM,
    double * RCOND,
    double * WORK,
    const int * LWORK,
    int * IWORK,
    const int * LIWORK,
    int * INFO )
    +
    +inline
    +
    + +
    +
    + +

    ◆ ppocon() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::ppocon (const char * uplo,
    const int * N,
    const float * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const float * ANORM,
    float * RCOND,
    float * WORK,
    const int * LWORK,
    int * IWORK,
    const int * LIWORK,
    int * INFO )
    +
    +inline
    +
    + +
    +
    + +

    ◆ ppotrf() [1/4]

    + +
    +
    +
    +template<typename number >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::ppotrf (const char * ,
    const int * ,
    number * ,
    const int * ,
    const int * ,
    const int * ,
    int *  )
    +
    +inline
    +
    + +
    +
    + +

    ◆ ppotrf() [2/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::ppotrf (const char * UPLO,
    const int * N,
    double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * INFO )
    +
    +inline
    +
    + +
    +
    + +

    ◆ ppotrf() [3/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::ppotrf (const char * UPLO,
    const int * N,
    float * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * INFO )
    +
    +inline
    +
    + +
    +
    + +

    ◆ ppotrf() [4/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::ppotrf (const char * UPLO,
    const int * N,
    std::complex< double > * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * INFO )
    +
    +inline
    +
    + +
    +
    + +

    ◆ ppotri() [1/4]

    + +
    +
    +
    +template<typename number >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::ppotri (const char * ,
    const int * ,
    number * ,
    const int * ,
    const int * ,
    const int * ,
    int *  )
    +
    +inline
    +
    + +
    +
    + +

    ◆ ppotri() [2/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::ppotri (const char * UPLO,
    const int * N,
    double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * INFO )
    +
    +inline
    +
    + +
    +
    + +

    ◆ ppotri() [3/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::ppotri (const char * UPLO,
    const int * N,
    float * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * INFO )
    +
    +inline
    +
    + +
    +
    + +

    ◆ ppotri() [4/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::ppotri (const char * UPLO,
    const int * N,
    std::complex< double > * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * INFO )
    +
    +inline
    +
    + +
    +
    + +

    ◆ psgeadd_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::psgeadd_ (const char * transa,
    const int * m,
    const int * n,
    const float * alpha,
    const float * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const float * beta,
    float * C,
    const int * IC,
    const int * JC,
    const int * DESCC )
    +
    + +
    +
    + +

    ◆ psgels_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::psgels_ (const char * trans,
    const int * m,
    const int * n,
    const int * nrhs,
    float * A,
    const int * ia,
    const int * ja,
    const int * desca,
    float * B,
    const int * ib,
    const int * jb,
    const int * descb,
    float * work,
    int * lwork,
    int * info )
    +
    + +
    +
    + +

    ◆ psgemm_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::psgemm_ (const char * transa,
    const char * transb,
    const int * m,
    const int * n,
    const int * k,
    const float * alpha,
    const float * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const float * B,
    const int * IB,
    const int * JB,
    const int * DESCB,
    const float * beta,
    float * C,
    const int * IC,
    const int * JC,
    const int * DESCC )
    +
    + +
    +
    + +

    ◆ psgemr2d_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::psgemr2d_ (const int * m,
    const int * n,
    const float * A,
    const int * ia,
    const int * ja,
    const int * desca,
    float * B,
    const int * ib,
    const int * jb,
    const int * descb,
    const int * ictxt )
    +
    + +
    +
    + +

    ◆ psgesv_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::psgesv_ (const int * n,
    const int * nrhs,
    float * A,
    const int * ia,
    const int * ja,
    const int * desca,
    int * ipiv,
    float * B,
    const int * ib,
    const int * jb,
    const int * descb,
    int * info )
    +
    + +
    +
    + +

    ◆ psgesvd_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::psgesvd_ (const char * jobu,
    const char * jobvt,
    const int * m,
    const int * n,
    float * A,
    const int * ia,
    const int * ja,
    const int * desca,
    float * S,
    float * U,
    const int * iu,
    const int * ju,
    const int * descu,
    float * VT,
    const int * ivt,
    const int * jvt,
    const int * descvt,
    float * work,
    int * lwork,
    int * info )
    +
    + +
    +
    + +

    ◆ psgetrf_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::psgetrf_ (const int * m,
    const int * n,
    float * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * ipiv,
    int * INFO )
    +
    + +
    +
    + +

    ◆ psgetri_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::psgetri_ (const int * N,
    float * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const int * ipiv,
    float * work,
    int * lwork,
    int * iwork,
    int * liwork,
    int * info )
    +
    + +
    +
    + +

    ◆ pslacpy_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pslacpy_ (const char * uplo,
    const int * m,
    const int * n,
    const float * A,
    const int * ia,
    const int * ja,
    const int * desca,
    float * B,
    const int * ib,
    const int * jb,
    const int * descb )
    +
    + +
    +
    + +

    ◆ pslamch_()

    + +
    +
    + + + + + + + + + + + +
    float dftfe::pslamch_ (const int * ictxt,
    const char * cmach )
    +
    + +
    +
    + +

    ◆ pslange_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    float dftfe::pslange_ (const char * norm,
    const int * m,
    const int * n,
    const float * A,
    const int * ia,
    const int * ja,
    const int * desca,
    float * work )
    +
    + +
    +
    + +

    ◆ pslansy_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    float dftfe::pslansy_ (const char * norm,
    const char * uplo,
    const int * N,
    const float * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    float * work )
    +
    + +
    +
    + +

    ◆ pspocon_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pspocon_ (const char * uplo,
    const int * N,
    const float * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const float * ANORM,
    float * RCOND,
    float * WORK,
    const int * LWORK,
    int * IWORK,
    const int * LIWORK,
    int * INFO )
    +
    + +
    +
    + +

    ◆ pspotrf_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pspotrf_ (const char * UPLO,
    const int * N,
    float * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * INFO )
    +
    + +
    +
    + +

    ◆ pspotri_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pspotri_ (const char * UPLO,
    const int * N,
    float * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * INFO )
    +
    + +
    +
    + +

    ◆ pssyev_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pssyev_ (const char * jobz,
    const char * uplo,
    const int * m,
    float * A,
    const int * ia,
    const int * ja,
    int * desca,
    float * w,
    float * z,
    const int * iz,
    const int * jz,
    int * descz,
    float * work,
    const int * lwork,
    int * info )
    +
    + +
    +
    + +

    ◆ pssyevr_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pssyevr_ (const char * jobz,
    const char * range,
    const char * uplo,
    const int * n,
    float * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const float * VL,
    const float * VU,
    const int * IL,
    const int * IU,
    int * m,
    int * nz,
    float * w,
    float * Z,
    const int * IZ,
    const int * JZ,
    const int * DESCZ,
    float * work,
    int * lwork,
    int * iwork,
    int * liwork,
    int * info )
    +
    + +
    +
    + +

    ◆ pssyevx_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pssyevx_ (const char * jobz,
    const char * range,
    const char * uplo,
    const int * n,
    float * A,
    const int * ia,
    const int * ja,
    const int * desca,
    const float * VL,
    const float * VU,
    const int * il,
    const int * iu,
    const float * abstol,
    const int * m,
    const int * nz,
    float * w,
    float * orfac,
    float * Z,
    const int * iz,
    const int * jz,
    const int * descz,
    float * work,
    int * lwork,
    int * iwork,
    int * liwork,
    int * ifail,
    int * iclustr,
    float * gap,
    int * info )
    +
    + +
    +
    + +

    ◆ pstran_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pstran_ (const int * m,
    const int * n,
    const float * alpha,
    const float * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const float * beta,
    float * C,
    const int * IC,
    const int * JC,
    const int * DESCC )
    +
    + +
    +
    + +

    ◆ pstrtri_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pstrtri_ (const char * UPLO,
    const char * DIAG,
    const int * N,
    float * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * INFO )
    +
    + +
    +
    + +

    ◆ psyev() [1/4]

    + +
    +
    +
    +template<typename number >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::psyev (const char * ,
    const char * ,
    const int * ,
    number * ,
    const int * ,
    const int * ,
    int * ,
    number * ,
    number * ,
    const int * ,
    const int * ,
    int * ,
    number * ,
    const int * ,
    int *  )
    +
    +inline
    +
    + +
    +
    + +

    ◆ psyev() [2/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::psyev (const char * jobz,
    const char * uplo,
    const int * m,
    double * A,
    const int * ia,
    const int * ja,
    int * desca,
    double * w,
    double * z,
    const int * iz,
    const int * jz,
    int * descz,
    double * work,
    const int * lwork,
    int * info )
    +
    +inline
    +
    + +
    +
    + +

    ◆ psyev() [3/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::psyev (const char * jobz,
    const char * uplo,
    const int * m,
    float * A,
    const int * ia,
    const int * ja,
    int * desca,
    float * w,
    float * z,
    const int * iz,
    const int * jz,
    int * descz,
    float * work,
    const int * lwork,
    int * info )
    +
    +inline
    +
    + +
    +
    + +

    ◆ psyev() [4/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::psyev (const char * jobz,
    const char * uplo,
    const int * m,
    std::complex< double > * A,
    const int * ia,
    const int * ja,
    int * desca,
    double * w,
    std::complex< double > * z,
    const int * iz,
    const int * jz,
    int * descz,
    std::complex< double > * work,
    const int * lwork,
    int * info )
    +
    +inline
    +
    + +
    +
    + +

    ◆ psyevr() [1/4]

    + +
    +
    +
    +template<typename number >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::psyevr (const char * ,
    const char * ,
    const char * ,
    const int * ,
    number * ,
    const int * ,
    const int * ,
    const int * ,
    const number * ,
    const number * ,
    const int * ,
    const int * ,
    int * ,
    int * ,
    number * ,
    number * ,
    const int * ,
    const int * ,
    const int * ,
    number * ,
    int * ,
    int * ,
    int * ,
    int *  )
    +
    +inline
    +
    + +
    +
    + +

    ◆ psyevr() [2/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::psyevr (const char * jobz,
    const char * range,
    const char * uplo,
    const int * n,
    double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const double * VL,
    const double * VU,
    const int * IL,
    const int * IU,
    int * m,
    int * nz,
    double * w,
    double * Z,
    const int * IZ,
    const int * JZ,
    const int * DESCZ,
    double * work,
    int * lwork,
    int * iwork,
    int * liwork,
    int * info )
    +
    +inline
    +
    + +
    +
    + +

    ◆ psyevr() [3/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::psyevr (const char * jobz,
    const char * range,
    const char * uplo,
    const int * n,
    float * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const float * VL,
    const float * VU,
    const int * IL,
    const int * IU,
    int * m,
    int * nz,
    float * w,
    float * Z,
    const int * IZ,
    const int * JZ,
    const int * DESCZ,
    float * work,
    int * lwork,
    int * iwork,
    int * liwork,
    int * info )
    +
    +inline
    +
    + +
    +
    + +

    ◆ psyevr() [4/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::psyevr (const char * jobz,
    const char * range,
    const char * uplo,
    const int * n,
    std::complex< double > * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const double * VL,
    const double * VU,
    const int * IL,
    const int * IU,
    int * m,
    int * nz,
    double * w,
    std::complex< double > * Z,
    const int * IZ,
    const int * JZ,
    const int * DESCZ,
    std::complex< double > * work,
    int * lwork,
    int * iwork,
    int * liwork,
    int * info )
    +
    +inline
    +
    + +
    +
    + +

    ◆ psyevx() [1/4]

    + +
    +
    +
    +template<typename number >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::psyevx (const char * ,
    const char * ,
    const char * ,
    const int * ,
    number * ,
    const int * ,
    const int * ,
    const int * ,
    number * ,
    number * ,
    const int * ,
    const int * ,
    number * ,
    const int * ,
    const int * ,
    number * ,
    number * ,
    number * ,
    const int * ,
    const int * ,
    const int * ,
    number * ,
    int * ,
    int * ,
    int * ,
    int * ,
    int * ,
    number * ,
    int *  )
    +
    +inline
    +
    + +
    +
    + +

    ◆ psyevx() [2/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::psyevx (const char * jobz,
    const char * range,
    const char * uplo,
    const int * n,
    double * A,
    const int * ia,
    const int * ja,
    const int * desca,
    double * VL,
    double * VU,
    const int * il,
    const int * iu,
    double * abstol,
    const int * m,
    const int * nz,
    double * w,
    double * orfac,
    double * Z,
    const int * iz,
    const int * jz,
    const int * descz,
    double * work,
    int * lwork,
    int * iwork,
    int * liwork,
    int * ifail,
    int * iclustr,
    double * gap,
    int * info )
    +
    +inline
    +
    + +
    +
    + +

    ◆ psyevx() [3/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::psyevx (const char * jobz,
    const char * range,
    const char * uplo,
    const int * n,
    float * A,
    const int * ia,
    const int * ja,
    const int * desca,
    float * VL,
    float * VU,
    const int * il,
    const int * iu,
    float * abstol,
    const int * m,
    const int * nz,
    float * w,
    float * orfac,
    float * Z,
    const int * iz,
    const int * jz,
    const int * descz,
    float * work,
    int * lwork,
    int * iwork,
    int * liwork,
    int * ifail,
    int * iclustr,
    float * gap,
    int * info )
    +
    +inline
    +
    + +
    +
    + +

    ◆ psyevx() [4/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::psyevx (const char * jobz,
    const char * range,
    const char * uplo,
    const int * n,
    std::complex< double > * A,
    const int * ia,
    const int * ja,
    const int * desca,
    double * VL,
    double * VU,
    const int * il,
    const int * iu,
    double * abstol,
    const int * m,
    const int * nz,
    double * w,
    double * orfac,
    std::complex< double > * Z,
    const int * iz,
    const int * jz,
    const int * descz,
    std::complex< double > * work,
    int * lwork,
    int * iwork,
    int * liwork,
    int * ifail,
    int * iclustr,
    double * gap,
    int * info )
    +
    +inline
    +
    + +
    +
    + +

    ◆ ptran() [1/3]

    + +
    +
    +
    +template<typename number >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::ptran (const int * ,
    const int * ,
    const number * ,
    const number * ,
    const int * ,
    const int * ,
    const int * ,
    const number * ,
    number * ,
    const int * ,
    const int * ,
    const int *  )
    +
    +inline
    +
    + +
    +
    + +

    ◆ ptran() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::ptran (const int * m,
    const int * n,
    const double * alpha,
    const double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const double * beta,
    double * C,
    const int * IC,
    const int * JC,
    const int * DESCC )
    +
    +inline
    +
    + +
    +
    + +

    ◆ ptran() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::ptran (const int * m,
    const int * n,
    const float * alpha,
    const float * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const float * beta,
    float * C,
    const int * IC,
    const int * JC,
    const int * DESCC )
    +
    +inline
    +
    + +
    +
    + +

    ◆ ptrtri() [1/4]

    + +
    +
    +
    +template<typename number >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::ptrtri (const char * ,
    const char * ,
    const int * ,
    number * ,
    const int * ,
    const int * ,
    const int * ,
    int *  )
    +
    +inline
    +
    + +
    +
    + +

    ◆ ptrtri() [2/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::ptrtri (const char * UPLO,
    const char * DIAG,
    const int * N,
    double * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * INFO )
    +
    +inline
    +
    + +
    +
    + +

    ◆ ptrtri() [3/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::ptrtri (const char * UPLO,
    const char * DIAG,
    const int * N,
    float * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * INFO )
    +
    +inline
    +
    + +
    +
    + +

    ◆ ptrtri() [4/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::ptrtri (const char * UPLO,
    const char * DIAG,
    const int * N,
    std::complex< double > * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * INFO )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pzgeadd_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pzgeadd_ (const char * transa,
    const int * m,
    const int * n,
    const std::complex< double > * alpha,
    const std::complex< double > * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const std::complex< double > * beta,
    std::complex< double > * C,
    const int * IC,
    const int * JC,
    const int * DESCC )
    +
    + +
    +
    + +

    ◆ pzgemm_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pzgemm_ (const char * transa,
    const char * transb,
    const int * m,
    const int * n,
    const int * k,
    const std::complex< double > * alpha,
    const std::complex< double > * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const std::complex< double > * B,
    const int * IB,
    const int * JB,
    const int * DESCB,
    const std::complex< double > * beta,
    std::complex< double > * C,
    const int * IC,
    const int * JC,
    const int * DESCC )
    +
    + +
    +
    + +

    ◆ pzgetrf_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pzgetrf_ (const int * m,
    const int * n,
    std::complex< double > * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * ipiv,
    int * INFO )
    +
    + +
    +
    + +

    ◆ pzgetri_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pzgetri_ (const int * N,
    std::complex< double > * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const int * ipiv,
    std::complex< double > * work,
    int * lwork,
    int * iwork,
    int * liwork,
    int * info )
    +
    + +
    +
    + +

    ◆ pzheev_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pzheev_ (const char * jobz,
    const char * uplo,
    const int * m,
    std::complex< double > * A,
    const int * ia,
    const int * ja,
    int * desca,
    double * w,
    std::complex< double > * z,
    const int * iz,
    const int * jz,
    int * descz,
    std::complex< double > * work,
    const int * lwork,
    int * info )
    +
    + +
    +
    + +

    ◆ pzheevr_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pzheevr_ (const char * jobz,
    const char * range,
    const char * uplo,
    const int * n,
    std::complex< double > * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const double * VL,
    const double * VU,
    const int * IL,
    const int * IU,
    int * m,
    int * nz,
    double * w,
    std::complex< double > * Z,
    const int * IZ,
    const int * JZ,
    const int * DESCZ,
    std::complex< double > * work,
    int * lwork,
    int * iwork,
    int * liwork,
    int * info )
    +
    + +
    +
    + +

    ◆ pzheevx_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pzheevx_ (const char * jobz,
    const char * range,
    const char * uplo,
    const int * n,
    std::complex< double > * A,
    const int * ia,
    const int * ja,
    const int * desca,
    const double * VL,
    const double * VU,
    const int * il,
    const int * iu,
    const double * abstol,
    const int * m,
    const int * nz,
    double * w,
    double * orfac,
    std::complex< double > * Z,
    const int * iz,
    const int * jz,
    const int * descz,
    std::complex< double > * work,
    int * lwork,
    int * iwork,
    int * liwork,
    int * ifail,
    int * iclustr,
    double * gap,
    int * info )
    +
    + +
    +
    + +

    ◆ pzlacgv_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pzlacgv_ (const int * N,
    std::complex< double > * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    const int * INCX )
    +
    +

    Compute complex conjugate

    + +
    +
    + +

    ◆ pzpotrf_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pzpotrf_ (const char * UPLO,
    const int * N,
    std::complex< double > * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * INFO )
    +
    + +
    +
    + +

    ◆ pzpotri_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pzpotri_ (const char * UPLO,
    const int * N,
    std::complex< double > * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * INFO )
    +
    + +
    +
    + +

    ◆ pztrtri_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pztrtri_ (const char * UPLO,
    const char * DIAG,
    const int * N,
    std::complex< double > * A,
    const int * IA,
    const int * JA,
    const int * DESCA,
    int * INFO )
    +
    + +
    +
    + +

    ◆ xcopy() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::xcopy (const unsigned int * n,
    const double * x,
    const unsigned int * incx,
    double * y,
    const unsigned int * incy )
    +
    +inline
    +
    + +
    +
    + +

    ◆ xcopy() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::xcopy (const unsigned int * n,
    const std::complex< double > * x,
    const unsigned int * incx,
    std::complex< double > * y,
    const unsigned int * incy )
    +
    +inline
    +
    + +
    +
    + +

    ◆ xgemm() [1/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::xgemm (const char * transA,
    const char * transB,
    const unsigned int * m,
    const unsigned int * n,
    const unsigned int * k,
    const double * alpha,
    const double * A,
    const unsigned int * lda,
    const double * B,
    const unsigned int * ldb,
    const double * beta,
    double * C,
    const unsigned int * ldc )
    +
    +inline
    +
    + +
    +
    + +

    ◆ xgemm() [2/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::xgemm (const char * transA,
    const char * transB,
    const unsigned int * m,
    const unsigned int * n,
    const unsigned int * k,
    const float * alpha,
    const float * A,
    const unsigned int * lda,
    const float * B,
    const unsigned int * ldb,
    const float * beta,
    float * C,
    const unsigned int * ldc )
    +
    +inline
    +
    + +
    +
    + +

    ◆ xgemm() [3/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::xgemm (const char * transA,
    const char * transB,
    const unsigned int * m,
    const unsigned int * n,
    const unsigned int * k,
    const std::complex< double > * alpha,
    const std::complex< double > * A,
    const unsigned int * lda,
    const std::complex< double > * B,
    const unsigned int * ldb,
    const std::complex< double > * beta,
    std::complex< double > * C,
    const unsigned int * ldc )
    +
    +inline
    +
    + +
    +
    + +

    ◆ xgemm() [4/4]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::xgemm (const char * transA,
    const char * transB,
    const unsigned int * m,
    const unsigned int * n,
    const unsigned int * k,
    const std::complex< float > * alpha,
    const std::complex< float > * A,
    const unsigned int * lda,
    const std::complex< float > * B,
    const unsigned int * ldb,
    const std::complex< float > * beta,
    std::complex< float > * C,
    const unsigned int * ldc )
    +
    +inline
    +
    + +
    +
    + +

    ◆ xscal() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::xscal (const unsigned int * n,
    const double * alpha,
    double * x,
    const unsigned int * inc )
    +
    +inline
    +
    + +
    +
    + +

    ◆ xscal() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::xscal (const unsigned int * n,
    const std::complex< double > * alpha,
    std::complex< double > * x,
    const unsigned int * inc )
    +
    +inline
    +
    + +
    +
    +

    Variable Documentation

    + +

    ◆ C_AngTobohr

    + +
    +
    + + + + +
    const double dftfe::C_AngTobohr = 1.0 / 0.529177210903
    +
    + +
    +
    + +

    ◆ C_bohrToAng

    + +
    +
    + + + + +
    const double dftfe::C_bohrToAng = 0.529177210903
    +
    + +
    +
    + +

    ◆ C_haPerBohrToeVPerAng

    + +
    +
    + + + + +
    const double dftfe::C_haPerBohrToeVPerAng = 27.211386245988 / 0.529177210903
    +
    + +
    +
    + +

    ◆ C_haToeV

    + +
    +
    + + + + +
    const double dftfe::C_haToeV = 27.211386245988
    +
    + +
    +
    + +

    ◆ C_kb

    + +
    +
    + + + + +
    const double dftfe::C_kb = 3.166811429e-06
    +
    + +

    Boltzmann constant.

    + +
    +
    + +

    ◆ C_pi

    + +
    +
    + + + + +
    const double dftfe::C_pi = 3.14159265359
    +
    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1_atomic_centered_non_local_operator_kernels_device.html b/namespacedftfe_1_1_atomic_centered_non_local_operator_kernels_device.html new file mode 100644 index 000000000..9c6d4b2a9 --- /dev/null +++ b/namespacedftfe_1_1_atomic_centered_non_local_operator_kernels_device.html @@ -0,0 +1,233 @@ + + + + + + + +DFT-FE: dftfe::AtomicCenteredNonLocalOperatorKernelsDevice Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::AtomicCenteredNonLocalOperatorKernelsDevice Namespace Reference
    +
    +
    + + + + + + + + + + + +

    +Functions

    template<typename ValueType >
    void copyFromParallelNonLocalVecToAllCellsVec (const unsigned int numWfcs, const unsigned int numNonLocalCells, const unsigned int maxSingleAtomPseudoWfc, const ValueType *sphericalFnTimesWfcParallelVec, ValueType *sphericalFnTimesWfcAllCellsVec, const int *indexMapPaddedToParallelVec)
     
    template<typename ValueType >
    void copyToDealiiParallelNonLocalVec (const unsigned int numWfcs, const unsigned int totalEntries, const ValueType *sphericalFnTimesWfcParallelVec, ValueType *sphericalFnTimesWfcDealiiParallelVec, const unsigned int *indexMapDealiiParallelNumbering)
     
    template<typename ValueType >
    void addNonLocalContribution (const unsigned int numberCellsForAtom, const unsigned int numberNodesPerElement, const unsigned int numberWfc, const unsigned int numberCellsTraversed, const dftfe::utils::MemoryStorage< ValueType, dftfe::utils::MemorySpace::DEVICE > &nonLocalContribution, ValueType *TotalContribution, const dftfe::utils::MemoryStorage< unsigned int, dftfe::utils::MemorySpace::DEVICE > &cellNodeIdMapNonLocalToLocal)
     
    +

    Function Documentation

    + +

    ◆ addNonLocalContribution()

    + +
    +
    +
    +template<typename ValueType >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::AtomicCenteredNonLocalOperatorKernelsDevice::addNonLocalContribution (const unsigned int numberCellsForAtom,
    const unsigned int numberNodesPerElement,
    const unsigned int numberWfc,
    const unsigned int numberCellsTraversed,
    const dftfe::utils::MemoryStorage< ValueType, dftfe::utils::MemorySpace::DEVICE > & nonLocalContribution,
    ValueType * TotalContribution,
    const dftfe::utils::MemoryStorage< unsigned int, dftfe::utils::MemorySpace::DEVICE > & cellNodeIdMapNonLocalToLocal )
    +
    + +
    +
    + +

    ◆ copyFromParallelNonLocalVecToAllCellsVec()

    + +
    +
    +
    +template<typename ValueType >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::AtomicCenteredNonLocalOperatorKernelsDevice::copyFromParallelNonLocalVecToAllCellsVec (const unsigned int numWfcs,
    const unsigned int numNonLocalCells,
    const unsigned int maxSingleAtomPseudoWfc,
    const ValueType * sphericalFnTimesWfcParallelVec,
    ValueType * sphericalFnTimesWfcAllCellsVec,
    const int * indexMapPaddedToParallelVec )
    +
    + +
    +
    + +

    ◆ copyToDealiiParallelNonLocalVec()

    + +
    +
    +
    +template<typename ValueType >
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::AtomicCenteredNonLocalOperatorKernelsDevice::copyToDealiiParallelNonLocalVec (const unsigned int numWfcs,
    const unsigned int totalEntries,
    const ValueType * sphericalFnTimesWfcParallelVec,
    ValueType * sphericalFnTimesWfcDealiiParallelVec,
    const unsigned int * indexMapDealiiParallelNumbering )
    +
    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1_l_a_p_a_c_k_support.html b/namespacedftfe_1_1_l_a_p_a_c_k_support.html new file mode 100644 index 000000000..aed2cb7b4 --- /dev/null +++ b/namespacedftfe_1_1_l_a_p_a_c_k_support.html @@ -0,0 +1,625 @@ + + + + + + + +DFT-FE: dftfe::LAPACKSupport Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::LAPACKSupport Namespace Reference
    +
    +
    + + + + + + +

    +Enumerations

    enum  State {
    +  matrix +, inverse_matrix +, lu +, cholesky +,
    +  eigenvalues +, svd +, inverse_svd +, unusable = 0x8000 +
    + }
     
    enum  Property {
    +  general = 0 +, hermitian = 1 +, upper_triangular = 2 +, lower_triangular = 4 +,
    +  diagonal = 6 +, hessenberg = 8 +
    + }
     
    + + + + + + + + + + + + + +

    +Functions

    const charstate_name (State s)
     
    const charproperty_name (const Property s)
     
     DeclException2 (ExcErrorCode, std::string, types::blas_int,<< "The function "<< arg1<< " returned with an error code "<< arg2)
     
     DeclException1 (ExcState, State,<< "The function cannot be called while the matrix is in state "<< state_name(arg1))
     
     DeclException1 (ExcProperty, Property,<< "The function cannot be called with a "<< property_name(arg1)<< " matrix.")
     
     DeclException1 (ExcMissing, std::string,<< "When you ran 'cmake' during installation of deal.II, "<< "no suitable installation of the BLAS or LAPACK library could "<< "be found. Consequently, the function <"<< arg1<< "> can not be called. Refer to the doc/readme.html "<< "file for information on how to ensure that deal.II "<< "picks up an existing BLAS and LAPACK installation at "<< "configuration time.")
     
    + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    static const char A = 'A'
     
    static const char N = 'N'
     
    static const char O = 'O'
     
    static const char T = 'T'
     
    static const char C = 'C'
     
    static const char U = 'U'
     
    static const char L = 'L'
     
    static const char V = 'V'
     
    static const types::blas_int zero = 0
     
    static const types::blas_int one = 1
     
    +

    Detailed Description

    +

    A namespace containing constants, exceptions, enumerations, and other utilities used by the deal.II LAPACK bindings.

    +

    Enumeration Type Documentation

    + +

    ◆ Property

    + +
    +
    +

    A matrix can have certain features allowing for optimization, but hard to test. These are listed here.

    + + + + + + + +
    Enumerator
    general 

    No special properties.

    +
    hermitian 

    Matrix is symmetric.

    +
    upper_triangular 

    Matrix is upper triangular.

    +
    lower_triangular 

    Matrix is lower triangular.

    +
    diagonal 

    Matrix is diagonal.

    +
    hessenberg 

    Matrix is in upper Hessenberg form.

    +
    + +
    +
    + +

    ◆ State

    + +
    +
    +

    Most of the LAPACK functions one can apply to a matrix (e.g., by calling the member functions of this class) change its content in some ways. For example, they may invert the matrix, or may replace it by a matrix whose columns represent the eigenvectors of the original content of the matrix. The elements of this enumeration are therefore used to track what is currently being stored by this object.

    + + + + + + + + + +
    Enumerator
    matrix 

    Contents is actually a matrix.

    +
    inverse_matrix 

    Contents is the inverse of a matrix.

    +
    lu 

    Contents is an LU decomposition.

    +
    cholesky 

    Contents is a Cholesky decomposition.

    +
    eigenvalues 

    Eigenvalue vector is filled.

    +
    svd 

    Matrix contains singular value decomposition,.

    +
    inverse_svd 

    Matrix is the inverse of a singular value decomposition.

    +
    unusable 

    Contents is something useless.

    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ DeclException1() [1/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    dftfe::LAPACKSupport::DeclException1 (ExcMissing ,
    std::string ,
    << "When you ran 'cmake' during installation of deal. II,
    "<< "no suitable installation of the BLAS or LAPACK library could "<< "be found. Consequently )
    +
    +

    This exception is thrown if a certain LAPACK function is not available because no LAPACK installation was detected during configuration.

    + +
    +
    + +

    ◆ DeclException1() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + +
    dftfe::LAPACKSupport::DeclException1 (ExcProperty ,
    Property ,
    << "The function cannot be called with a "<< property_name(arg1)<< " matrix."  )
    +
    +

    Exception thrown when a matrix does not have suitable properties for an operation.

    + +
    +
    + +

    ◆ DeclException1() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + +
    dftfe::LAPACKSupport::DeclException1 (ExcState ,
    State ,
    << "The function cannot be called while the matrix is in state "<< state_namearg1 )
    +
    +

    Exception thrown when a matrix is not in a suitable state for an operation. For instance, a LAPACK routine may have left the matrix in an unusable state, then vmult does not make sense anymore.

    + +
    +
    + +

    ◆ DeclException2()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    dftfe::LAPACKSupport::DeclException2 (ExcErrorCode ,
    std::string ,
    types::blas_int ,
    << "The function "<< arg1<< " returned with an error code "<< arg2 )
    +
    +

    A LAPACK function returned an error code.

    + +
    +
    + +

    ◆ property_name()

    + +
    +
    + + + + + +
    + + + + + + + +
    const char * dftfe::LAPACKSupport::property_name (const Property s)
    +
    +inline
    +
    +

    Function printing the name of a Property.

    + +
    +
    + +

    ◆ state_name()

    + +
    +
    + + + + + +
    + + + + + + + +
    const char * dftfe::LAPACKSupport::state_name (State s)
    +
    +inline
    +
    +

    Function printing the name of a State.

    + +
    +
    +

    Variable Documentation

    + +

    ◆ A

    + +
    +
    + + + + + +
    + + + + +
    const char dftfe::LAPACKSupport::A = 'A'
    +
    +static
    +
    +

    Character constant.

    + +
    +
    + +

    ◆ C

    + +
    +
    + + + + + +
    + + + + +
    const char dftfe::LAPACKSupport::C = 'C'
    +
    +static
    +
    +

    Character constant for conjugate transpose.

    + +
    +
    + +

    ◆ L

    + +
    +
    + + + + + +
    + + + + +
    const char dftfe::LAPACKSupport::L = 'L'
    +
    +static
    +
    +

    Character constant.

    + +
    +
    + +

    ◆ N

    + +
    +
    + + + + + +
    + + + + +
    const char dftfe::LAPACKSupport::N = 'N'
    +
    +static
    +
    +

    Character constant.

    + +
    +
    + +

    ◆ O

    + +
    +
    + + + + + +
    + + + + +
    const char dftfe::LAPACKSupport::O = 'O'
    +
    +static
    +
    +

    Character constant.

    + +
    +
    + +

    ◆ one

    + +
    +
    + + + + + +
    + + + + +
    const types::blas_int dftfe::LAPACKSupport::one = 1
    +
    +static
    +
    +

    Integer constant.

    + +
    +
    + +

    ◆ T

    + +
    +
    + + + + + +
    + + + + +
    const char dftfe::LAPACKSupport::T = 'T'
    +
    +static
    +
    +

    Character constant.

    + +
    +
    + +

    ◆ U

    + +
    +
    + + + + + +
    + + + + +
    const char dftfe::LAPACKSupport::U = 'U'
    +
    +static
    +
    +

    Character constant.

    + +
    +
    + +

    ◆ V

    + +
    +
    + + + + + +
    + + + + +
    const char dftfe::LAPACKSupport::V = 'V'
    +
    +static
    +
    +

    Character constant.

    + +
    +
    + +

    ◆ zero

    + +
    +
    + + + + + +
    + + + + +
    const types::blas_int dftfe::LAPACKSupport::zero = 0
    +
    +static
    +
    +

    Integer constant.

    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1basis.html b/namespacedftfe_1_1basis.html new file mode 100644 index 000000000..6fc9ad37b --- /dev/null +++ b/namespacedftfe_1_1basis.html @@ -0,0 +1,271 @@ + + + + + + + +DFT-FE: dftfe::basis Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::basis Namespace Reference
    +
    +
    + + + + +

    +Namespaces

    namespace  FEBasisOperationsKernelsInternal
     
    + + + +

    +Classes

    class  FEBasisOperations
     
    + + + +

    +Enumerations

    enum  UpdateFlags {
    +  update_default = 0 +, update_values = 0x0001 +, update_gradients = 0x0002 +, update_transpose = 0x0004 +,
    +  update_quadpoints = 0x0008 +, update_inversejacobians = 0x0010 +, update_jxw = 0x0020 +
    + }
     
    + + + + + + + + + +

    +Functions

    UpdateFlags operator| (const UpdateFlags f1, const UpdateFlags f2)
     
    UpdateFlagsoperator|= (UpdateFlags &f1, const UpdateFlags f2)
     
    UpdateFlags operator& (const UpdateFlags f1, const UpdateFlags f2)
     
    UpdateFlagsoperator&= (UpdateFlags &f1, const UpdateFlags f2)
     
    +

    Enumeration Type Documentation

    + +

    ◆ UpdateFlags

    + +
    +
    + + + + + + + + +
    Enumerator
    update_default 
    update_values 
    update_gradients 
    update_transpose 
    update_quadpoints 
    update_inversejacobians 
    update_jxw 
    + +
    +
    +

    Function Documentation

    + +

    ◆ operator&()

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    UpdateFlags dftfe::basis::operator& (const UpdateFlags f1,
    const UpdateFlags f2 )
    +
    +inline
    +
    + +
    +
    + +

    ◆ operator&=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    UpdateFlags & dftfe::basis::operator&= (UpdateFlags & f1,
    const UpdateFlags f2 )
    +
    +inline
    +
    + +
    +
    + +

    ◆ operator|()

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    UpdateFlags dftfe::basis::operator| (const UpdateFlags f1,
    const UpdateFlags f2 )
    +
    +inline
    +
    + +
    +
    + +

    ◆ operator|=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    UpdateFlags & dftfe::basis::operator|= (UpdateFlags & f1,
    const UpdateFlags f2 )
    +
    +inline
    +
    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1basis_1_1_f_e_basis_operations_kernels_internal.html b/namespacedftfe_1_1basis_1_1_f_e_basis_operations_kernels_internal.html new file mode 100644 index 000000000..f02465739 --- /dev/null +++ b/namespacedftfe_1_1basis_1_1_f_e_basis_operations_kernels_internal.html @@ -0,0 +1,285 @@ + + + + + + + +DFT-FE: dftfe::basis::FEBasisOperationsKernelsInternal Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::basis::FEBasisOperationsKernelsInternal Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Functions

    template<typename ValueType >
    void reshapeFromNonAffineLayoutDevice (const dftfe::size_type numVecs, const dftfe::size_type numQuads, const dftfe::size_type numCells, const ValueType *copyFromVec, ValueType *copyToVec)
     rehsape gradient data from [iCell * 3 * d_nQuadsPerCell * d_nVectors + iQuad * 3 * d_nVectors + iDim * d_nVectors + iVec] to [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
     
    template<typename ValueType >
    void reshapeFromNonAffineLayoutHost (const dftfe::size_type numVecs, const dftfe::size_type numQuads, const dftfe::size_type numCells, const ValueType *copyFromVec, ValueType *copyToVec)
     
    template<typename ValueType >
    void reshapeToNonAffineLayoutDevice (const dftfe::size_type numVecs, const dftfe::size_type numQuads, const dftfe::size_type numCells, const ValueType *copyFromVec, ValueType *copyToVec)
     rehsape gradient data to [iCell * 3 * d_nQuadsPerCell * d_nVectors + iQuad * 3 * d_nVectors + iDim * d_nVectors + iVec] from [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].
     
    template<typename ValueType >
    void reshapeToNonAffineLayoutHost (const dftfe::size_type numVecs, const dftfe::size_type numQuads, const dftfe::size_type numCells, const ValueType *copyFromVec, ValueType *copyToVec)
     
    +

    Function Documentation

    + +

    ◆ reshapeFromNonAffineLayoutDevice()

    + +
    +
    +
    +template<typename ValueType >
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::basis::FEBasisOperationsKernelsInternal::reshapeFromNonAffineLayoutDevice (const dftfe::size_type numVecs,
    const dftfe::size_type numQuads,
    const dftfe::size_type numCells,
    const ValueType * copyFromVec,
    ValueType * copyToVec )
    +
    + +

    rehsape gradient data from [iCell * 3 * d_nQuadsPerCell * d_nVectors + iQuad * 3 * d_nVectors + iDim * d_nVectors + iVec] to [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].

    +
    Parameters
    + + + + + + +
    [in]numVecsnumber of vectors.
    [in]numQuadsnumber of quadrature points per cell.
    [in]numCellsnumber of locally owned cells.
    [in]copyFromVecsource data pointer.
    [out]copyToVecdestination data pointer.
    +
    +
    + +
    +
    + +

    ◆ reshapeFromNonAffineLayoutHost()

    + +
    +
    +
    +template<typename ValueType >
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::basis::FEBasisOperationsKernelsInternal::reshapeFromNonAffineLayoutHost (const dftfe::size_type numVecs,
    const dftfe::size_type numQuads,
    const dftfe::size_type numCells,
    const ValueType * copyFromVec,
    ValueType * copyToVec )
    +
    + +
    +
    + +

    ◆ reshapeToNonAffineLayoutDevice()

    + +
    +
    +
    +template<typename ValueType >
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::basis::FEBasisOperationsKernelsInternal::reshapeToNonAffineLayoutDevice (const dftfe::size_type numVecs,
    const dftfe::size_type numQuads,
    const dftfe::size_type numCells,
    const ValueType * copyFromVec,
    ValueType * copyToVec )
    +
    + +

    rehsape gradient data to [iCell * 3 * d_nQuadsPerCell * d_nVectors + iQuad * 3 * d_nVectors + iDim * d_nVectors + iVec] from [iCell * 3 * d_nQuadsPerCell * d_nVectors + iDim * d_nQuadsPerCell * d_nVectors + iQuad * d_nVectors + iVec].

    +
    Parameters
    + + + + + + +
    [in]numVecsnumber of vectors.
    [in]numQuadsnumber of quadrature points per cell.
    [in]numCellsnumber of locally owned cells.
    [in]copyFromVecsource data pointer.
    [out]copyToVecdestination data pointer.
    +
    +
    + +
    +
    + +

    ◆ reshapeToNonAffineLayoutHost()

    + +
    +
    +
    +template<typename ValueType >
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::basis::FEBasisOperationsKernelsInternal::reshapeToNonAffineLayoutHost (const dftfe::size_type numVecs,
    const dftfe::size_type numQuads,
    const dftfe::size_type numCells,
    const ValueType * copyFromVec,
    ValueType * copyToVec )
    +
    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1data_types.html b/namespacedftfe_1_1data_types.html new file mode 100644 index 000000000..14002ac1d --- /dev/null +++ b/namespacedftfe_1_1data_types.html @@ -0,0 +1,466 @@ + + + + + + + +DFT-FE: dftfe::dataTypes Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::dataTypes Namespace Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Typedefs

    typedef dealii::types::global_dof_index global_size_type
     
    typedef unsigned int local_size_type
     
    typedef double number
     
    typedef float numberFP32
     
    typedef double numberValueType
     
    typedef float numberFP32ValueType
     
    + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    MPI_Datatype mpi_type_id (const int *)
     
    MPI_Datatype mpi_type_id (const long int *)
     
    MPI_Datatype mpi_type_id (const unsigned int *)
     
    MPI_Datatype mpi_type_id (const unsigned long int *)
     
    MPI_Datatype mpi_type_id (const unsigned long long int *)
     
    MPI_Datatype mpi_type_id (const float *)
     
    MPI_Datatype mpi_type_id (const double *)
     
    MPI_Datatype mpi_type_id (const long double *)
     
    MPI_Datatype mpi_type_id (const std::complex< float > *)
     
    MPI_Datatype mpi_type_id (const std::complex< double > *)
     
    +

    Typedef Documentation

    + +

    ◆ global_size_type

    + +
    +
    + + + + +
    typedef dealii::types::global_dof_index dftfe::dataTypes::global_size_type
    +
    + +
    +
    + +

    ◆ local_size_type

    + + + +

    ◆ number

    + + + +

    ◆ numberFP32

    + + + +

    ◆ numberFP32ValueType

    + + + +

    ◆ numberValueType

    + + +

    Function Documentation

    + +

    ◆ mpi_type_id() [1/10]

    + +
    +
    + + + + + +
    + + + + + + + +
    MPI_Datatype dftfe::dataTypes::mpi_type_id (const double * )
    +
    +inline
    +
    + +
    +
    + +

    ◆ mpi_type_id() [2/10]

    + +
    +
    + + + + + +
    + + + + + + + +
    MPI_Datatype dftfe::dataTypes::mpi_type_id (const float * )
    +
    +inline
    +
    + +
    +
    + +

    ◆ mpi_type_id() [3/10]

    + +
    +
    + + + + + +
    + + + + + + + +
    MPI_Datatype dftfe::dataTypes::mpi_type_id (const int * )
    +
    +inline
    +
    + +
    +
    + +

    ◆ mpi_type_id() [4/10]

    + +
    +
    + + + + + +
    + + + + + + + +
    MPI_Datatype dftfe::dataTypes::mpi_type_id (const long double * )
    +
    +inline
    +
    + +
    +
    + +

    ◆ mpi_type_id() [5/10]

    + +
    +
    + + + + + +
    + + + + + + + +
    MPI_Datatype dftfe::dataTypes::mpi_type_id (const long int * )
    +
    +inline
    +
    + +
    +
    + +

    ◆ mpi_type_id() [6/10]

    + +
    +
    + + + + + +
    + + + + + + + +
    MPI_Datatype dftfe::dataTypes::mpi_type_id (const std::complex< double > * )
    +
    +inline
    +
    + +
    +
    + +

    ◆ mpi_type_id() [7/10]

    + +
    +
    + + + + + +
    + + + + + + + +
    MPI_Datatype dftfe::dataTypes::mpi_type_id (const std::complex< float > * )
    +
    +inline
    +
    + +
    +
    + +

    ◆ mpi_type_id() [8/10]

    + +
    +
    + + + + + +
    + + + + + + + +
    MPI_Datatype dftfe::dataTypes::mpi_type_id (const unsigned int * )
    +
    +inline
    +
    + +
    +
    + +

    ◆ mpi_type_id() [9/10]

    + +
    +
    + + + + + +
    + + + + + + + +
    MPI_Datatype dftfe::dataTypes::mpi_type_id (const unsigned long int * )
    +
    +inline
    +
    + +
    +
    + +

    ◆ mpi_type_id() [10/10]

    + +
    +
    + + + + + +
    + + + + + + + +
    MPI_Datatype dftfe::dataTypes::mpi_type_id (const unsigned long long int * )
    +
    +inline
    +
    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1dft_utils.html b/namespacedftfe_1_1dft_utils.html new file mode 100644 index 000000000..aac18378a --- /dev/null +++ b/namespacedftfe_1_1dft_utils.html @@ -0,0 +1,1018 @@ + + + + + + + +DFT-FE: dftfe::dftUtils Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::dftUtils Namespace Reference
    +
    +
    + +

    Contains repeatedly used functions in the KSDFT calculations. +More...

    + + + + + + + + + + + + + +

    +Classes

    class  CompositeData
     
    class  constraintMatrixInfo
     Overloads dealii's distribute and distribute_local_to_global functions associated with constraints class. Stores the dealii's constraint matrix data into STL vectors for faster memory access costs. More...
     
    class  MPIWriteOnFile
     
    class  Pool
     
    class  QuadDataCompositeWrite
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void dgesv_ (int *N, int *NRHS, double *A, int *LDA, int *IPIV, double *B, int *LDB, int *INFO)
     
    double smearedCharge (double r, double rc)
     
    double smearedChargeDr (double r, double rc)
     
    double smearedPot (double r, double rc)
     
    double smearedPotDr (double r, double rc)
     
    std::vector< doublegetFractionalCoordinates (const std::vector< double > &latticeVectorsFlattened, const std::vector< double > &coordWithRespectToCellCorner)
     
    double getCompositeGeneratorVal (const double rc, const double r, const double a0, const double power)
     Calculates value of composite generator.
     
    dealii::BoundingBox< 3 > createBoundingBoxForSphere (const dealii::Point< 3 > &center, const double sphereRadius)
     Create bounding box around a sphere.
     
    double getPartialOccupancy (const double eigenValue, const double fermiEnergy, const double kb, const double T)
     Calculates partial occupancy of the atomic orbital using Fermi-Dirac smearing.
     
    double getPartialOccupancyDer (const double eigenValue, const double fermiEnergy, const double kb, const double T)
     Calculates the derivative of the partial occupancy of the atomic orbital with respect to (x=eigenvalue-fermiEnergy) using Fermi-Dirac smearing.
     
    void cross_product (const std::vector< double > &a, const std::vector< double > &b, std::vector< double > &crossProductVector)
     Calculates cross product of two vectors.
     
    void transformDomainBoundingVectors (std::vector< std::vector< double > > &domainBoundingVectors, const dealii::Tensor< 2, 3, double > &deformationGradient)
     Applies an affine transformation to the domain bounding vectors.
     
    void writeDataVTUParallelLowestPoolId (const dealii::DoFHandler< 3 > &dofHandler, const dealii::DataOut< 3 > &dataOut, const MPI_Comm &mpiCommParent, const MPI_Comm &mpiCommDomain, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const std::string &folderName, const std::string &fileName)
     Writes to vtu file only from the lowest pool id.
     
    void createBandParallelizationIndices (const MPI_Comm &interBandGroupComm, const unsigned int numBands, std::vector< unsigned int > &bandGroupLowHighPlusOneIndices)
     Create index vector which is used for band parallelization.
     
    void createKpointParallelizationIndices (const MPI_Comm &interKptPoolComm, const int numberIndices, std::vector< int > &kptGroupLowHighPlusOneIndices)
     
    void printCurrentMemoryUsage (const MPI_Comm &mpiComm, const std::string message)
     Wrapper to print current memory usage (prints only the maximum across mpiComm) using PetscMemoryGetCurrentUsage.
     
     DeclExceptionMsg (ExcNotImplementedYet, "This functionality is not implemented yet or not needed to be implemented.")
     Exception handler for not implemented functionality.
     
     DeclExceptionMsg (ExcInternalError, "DFT-FE internal error.")
     Exception handler for DFT-FE internal error.
     
    void readFile (const unsigned int numColumns, std::vector< std::vector< double > > &data, const std::string &fileName)
     Read from file containing only double data in columns.
     
    int readPsiFile (const unsigned int numColumns, std::vector< std::vector< double > > &data, const std::string &fileName)
     Read from file containing only double data in columns.
     
    void writeDataIntoFile (const std::vector< std::vector< double > > &data, const std::string &fileName, const MPI_Comm &mpi_comm_parent)
     Write data into file containing only double data in rows and columns.
     
    void writeDataIntoFile (const std::vector< std::vector< double > > &data, const std::string &fileName)
     Write data into file containing only double data in rows and columns.
     
    void readRelaxationFlagsFile (const unsigned int numColumns, std::vector< std::vector< int > > &data, std::vector< std::vector< double > > &forceData, const std::string &fileName)
     Read from file containing only integer data in columns.
     
    void moveFile (const std::string &old_name, const std::string &new_name)
     Move/rename checkpoint file.
     
    void copyFile (const std::string &pathold, const std::string &pathnew)
     copy file.
     
    void verifyCheckpointFileExists (const std::string &filename)
     Verify if checkpoint file exists.
     
    +

    Detailed Description

    +

    Contains repeatedly used functions in the KSDFT calculations.

    +
    Author
    Sambit Das, Krishnendu Ghosh, Phani Motamarri
    +

    Function Documentation

    + +

    ◆ copyFile()

    + +
    +
    + + + + + + + + + + + +
    void dftfe::dftUtils::copyFile (const std::string & pathold,
    const std::string & pathnew )
    +
    + +

    copy file.

    + +
    +
    + +

    ◆ createBandParallelizationIndices()

    + +
    +
    + + + + + + + + + + + + + + + + +
    void dftfe::dftUtils::createBandParallelizationIndices (const MPI_Comm & interBandGroupComm,
    const unsigned int numBands,
    std::vector< unsigned int > & bandGroupLowHighPlusOneIndices )
    +
    + +

    Create index vector which is used for band parallelization.

    +

    @[in]param interBandGroupComm mpi communicator across band groups @[in]param numBands @[out]param bandGroupLowHighPlusOneIndices

    + +
    +
    + +

    ◆ createBoundingBoxForSphere()

    + +
    +
    + + + + + + + + + + + +
    dealii::BoundingBox< 3 > dftfe::dftUtils::createBoundingBoxForSphere (const dealii::Point< 3 > & center,
    const double sphereRadius )
    +
    + +

    Create bounding box around a sphere.

    +
    Parameters
    + + + +
    spherecenter
    sphereradius
    +
    +
    +
    Returns
    bounding box
    + +
    +
    + +

    ◆ createKpointParallelizationIndices()

    + +
    +
    + + + + + + + + + + + + + + + + +
    void dftfe::dftUtils::createKpointParallelizationIndices (const MPI_Comm & interKptPoolComm,
    const int numberIndices,
    std::vector< int > & kptGroupLowHighPlusOneIndices )
    +
    + +
    +
    + +

    ◆ cross_product()

    + +
    +
    + + + + + + + + + + + + + + + + +
    void dftfe::dftUtils::cross_product (const std::vector< double > & a,
    const std::vector< double > & b,
    std::vector< double > & crossProductVector )
    +
    + +

    Calculates cross product of two vectors.

    +
    Parameters
    + + + + +
    afirst vector
    bsecond vector
    crossProductVectorcross product of a and b
    +
    +
    +
    Returns
    void
    + +
    +
    + +

    ◆ DeclExceptionMsg() [1/2]

    + +
    +
    + + + + + + + + + + + +
    dftfe::dftUtils::DeclExceptionMsg (ExcInternalError ,
    "DFT-FE internal error."  )
    +
    + +

    Exception handler for DFT-FE internal error.

    + +
    +
    + +

    ◆ DeclExceptionMsg() [2/2]

    + +
    +
    + + + + + + + + + + + +
    dftfe::dftUtils::DeclExceptionMsg (ExcNotImplementedYet ,
    "This functionality is not implemented yet or not needed to be implemented."  )
    +
    + +

    Exception handler for not implemented functionality.

    + +
    +
    + +

    ◆ dgesv_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::dftUtils::dgesv_ (int * N,
    int * NRHS,
    double * A,
    int * LDA,
    int * IPIV,
    double * B,
    int * LDB,
    int * INFO )
    +
    + +
    +
    + +

    ◆ getCompositeGeneratorVal()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    double dftfe::dftUtils::getCompositeGeneratorVal (const double rc,
    const double r,
    const double a0,
    const double power )
    +
    + +

    Calculates value of composite generator.

    + +
    +
    + +

    ◆ getFractionalCoordinates()

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    std::vector< double > dftfe::dftUtils::getFractionalCoordinates (const std::vector< double > & latticeVectorsFlattened,
    const std::vector< double > & coordWithRespectToCellCorner )
    +
    +inline
    +
    + +
    +
    + +

    ◆ getPartialOccupancy()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    double dftfe::dftUtils::getPartialOccupancy (const double eigenValue,
    const double fermiEnergy,
    const double kb,
    const double T )
    +
    + +

    Calculates partial occupancy of the atomic orbital using Fermi-Dirac smearing.

    +
    Parameters
    + + + + + +
    eigenValue
    fermiEnergy
    kbBoltzmann constant
    Tsmearing temperature
    +
    +
    +
    Returns
    double The partial occupancy of the orbital
    + +
    +
    + +

    ◆ getPartialOccupancyDer()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    double dftfe::dftUtils::getPartialOccupancyDer (const double eigenValue,
    const double fermiEnergy,
    const double kb,
    const double T )
    +
    + +

    Calculates the derivative of the partial occupancy of the atomic orbital with respect to (x=eigenvalue-fermiEnergy) using Fermi-Dirac smearing.

    +
    Parameters
    + + + + + +
    eigenValue
    fermiEnergy
    kbBoltzmann constant
    Tsmearing temperature
    +
    +
    +
    Returns
    double The partial occupancy derivative of the orbital
    + +
    +
    + +

    ◆ moveFile()

    + +
    +
    + + + + + + + + + + + +
    void dftfe::dftUtils::moveFile (const std::string & old_name,
    const std::string & new_name )
    +
    + +

    Move/rename checkpoint file.

    + +
    +
    + +

    ◆ printCurrentMemoryUsage()

    + +
    +
    + + + + + + + + + + + +
    void dftfe::dftUtils::printCurrentMemoryUsage (const MPI_Comm & mpiComm,
    const std::string message )
    +
    + +

    Wrapper to print current memory usage (prints only the maximum across mpiComm) using PetscMemoryGetCurrentUsage.

    +

    @[in]param mpiComm mpi communicator across which the memory printing will be synchronized @[in]param message message to be printed alongwith the memory usage

    + +
    +
    + +

    ◆ readFile()

    + +
    +
    + + + + + + + + + + + + + + + + +
    void dftfe::dftUtils::readFile (const unsigned int numColumns,
    std::vector< std::vector< double > > & data,
    const std::string & fileName )
    +
    + +

    Read from file containing only double data in columns.

    +
    Parameters
    + + + + +
    [in]numColumnsnumber of data columsn in the file to be read
    [out]dataoutput double data in [rows][columns] format
    [in]fileName
    +
    +
    + +
    +
    + +

    ◆ readPsiFile()

    + +
    +
    + + + + + + + + + + + + + + + + +
    int dftfe::dftUtils::readPsiFile (const unsigned int numColumns,
    std::vector< std::vector< double > > & data,
    const std::string & fileName )
    +
    + +

    Read from file containing only double data in columns.

    + +
    +
    + +

    ◆ readRelaxationFlagsFile()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::dftUtils::readRelaxationFlagsFile (const unsigned int numColumns,
    std::vector< std::vector< int > > & data,
    std::vector< std::vector< double > > & forceData,
    const std::string & fileName )
    +
    + +

    Read from file containing only integer data in columns.

    + +
    +
    + +

    ◆ smearedCharge()

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    double dftfe::dftUtils::smearedCharge (double r,
    double rc )
    +
    +inline
    +
    + +
    +
    + +

    ◆ smearedChargeDr()

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    double dftfe::dftUtils::smearedChargeDr (double r,
    double rc )
    +
    +inline
    +
    + +
    +
    + +

    ◆ smearedPot()

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    double dftfe::dftUtils::smearedPot (double r,
    double rc )
    +
    +inline
    +
    + +
    +
    + +

    ◆ smearedPotDr()

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    double dftfe::dftUtils::smearedPotDr (double r,
    double rc )
    +
    +inline
    +
    + +
    +
    + +

    ◆ transformDomainBoundingVectors()

    + +
    +
    + + + + + + + + + + + +
    void dftfe::dftUtils::transformDomainBoundingVectors (std::vector< std::vector< double > > & domainBoundingVectors,
    const dealii::Tensor< 2, 3, double > & deformationGradient )
    +
    + +

    Applies an affine transformation to the domain bounding vectors.

    +
    Parameters
    + + + +
    d_domainBoundingVectorsthe bounding vectors of the domain given as a 2d array
    deformationGradient
    +
    +
    +
    Returns
    void.
    + +
    +
    + +

    ◆ verifyCheckpointFileExists()

    + +
    +
    + + + + + + + +
    void dftfe::dftUtils::verifyCheckpointFileExists (const std::string & filename)
    +
    + +

    Verify if checkpoint file exists.

    + +
    +
    + +

    ◆ writeDataIntoFile() [1/2]

    + +
    +
    + + + + + + + + + + + +
    void dftfe::dftUtils::writeDataIntoFile (const std::vector< std::vector< double > > & data,
    const std::string & fileName )
    +
    + +

    Write data into file containing only double data in rows and columns.

    +
    Parameters
    + + + +
    [in]datainput double data in [rows][columns] format
    [in]fileName
    +
    +
    + +
    +
    + +

    ◆ writeDataIntoFile() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + +
    void dftfe::dftUtils::writeDataIntoFile (const std::vector< std::vector< double > > & data,
    const std::string & fileName,
    const MPI_Comm & mpi_comm_parent )
    +
    + +

    Write data into file containing only double data in rows and columns.

    +
    Parameters
    + + + + +
    [in]datainput double data in [rows][columns] format
    [in]fileName
    [in]mpi_comm_parentparent communicator
    +
    +
    + +
    +
    + +

    ◆ writeDataVTUParallelLowestPoolId()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::dftUtils::writeDataVTUParallelLowestPoolId (const dealii::DoFHandler< 3 > & dofHandler,
    const dealii::DataOut< 3 > & dataOut,
    const MPI_Comm & mpiCommParent,
    const MPI_Comm & mpiCommDomain,
    const MPI_Comm & interpoolcomm,
    const MPI_Comm & interBandGroupComm,
    const std::string & folderName,
    const std::string & fileName )
    +
    + +

    Writes to vtu file only from the lowest pool id.

    +
    Parameters
    + + + + + + + +
    dataOutDataOut class object
    mpiCommParentparent mpi communicator
    mpiCommDomainmpi communicator of domain decomposition inside each pool
    interpoolcommmpi communicator across k point pools
    interBandGroupCommmpi communicator across band groups
    fileName
    +
    +
    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1eshelby_tensor.html b/namespacedftfe_1_1eshelby_tensor.html new file mode 100644 index 000000000..7d296b3e6 --- /dev/null +++ b/namespacedftfe_1_1eshelby_tensor.html @@ -0,0 +1,349 @@ + + + + + + + +DFT-FE: dftfe::eshelbyTensor Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::eshelbyTensor Namespace Reference
    +
    +
    + +

    The functions in this namespace contain the expressions for the various terms of the configurational force (https://link.aps.org/doi/10.1103/PhysRevB.97.165132) for both periodic (see Eq. 38) and non-periodic (see Eqs. 28-29) case. +More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > getPhiExtEshelbyTensor (const dealii::VectorizedArray< double > &phiExt, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradPhiExt)
     
    dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > getVselfBallEshelbyTensor (const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradVself)
     
    dealii::Tensor< 2, 3, doublegetVselfBallEshelbyTensor (const dealii::Tensor< 1, 3, double > &gradVself)
     Eshelby tensor corresponding to nuclear self energy.
     
    dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > getEElectroEshelbyTensor (const dealii::VectorizedArray< double > &phiTot, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradPhiTot, const dealii::VectorizedArray< double > &rho)
     All-electron electrostatic part of the Eshelby tensor.
     
    dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > getELocXcEshelbyTensor (const dealii::VectorizedArray< double > &rho, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradRho, const dealii::VectorizedArray< double > &exc, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derExcGradRho)
     exchange-correlation part of the ELoc Eshelby tensor
     
    dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > getELocPspEshelbyTensor (const dealii::VectorizedArray< double > &rho, const dealii::VectorizedArray< double > &pseudoVLoc, const dealii::VectorizedArray< double > &phiExt)
     psp part of the ELoc Eshelby tensor
     
    dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > getFPSPLocal (const dealii::VectorizedArray< double > rho, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradPseudoVLoc, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradPhiExt)
     Local pseudopotential force contribution.
     
    dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > getFNonlinearCoreCorrection (const dealii::VectorizedArray< double > &vxc, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradRhoCore)
     Nonlocal core correction pseudopotential force contribution.
     
    dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > getFNonlinearCoreCorrection (const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derExcGradRho, const dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > &hessianRhoCore)
     Nonlocal core correction pseudopotential force contribution.
     
    +

    Detailed Description

    +

    The functions in this namespace contain the expressions for the various terms of the configurational force (https://link.aps.org/doi/10.1103/PhysRevB.97.165132) for both periodic (see Eq. 38) and non-periodic (see Eqs. 28-29) case.

    +

    Basically, the configurational force is the Gateaux derivative of the Kohn-Sham saddle point problem with respect to perturbations of the underlying space due to generic generator (which can be affine perturbation in case of stress computation or an atom centered generator with a compact support for computing the forces). The terms in the configurational force can be grouped into two types: one type can be written as contraction of Eshelby tensors (second order tensor) with the gradient of the Generator. Another type involves contraction of first order tensors with the Generator. The functions in this class provide expressions for the left side of the contraction operation- the second order Eshelby tensors (denoted by E*) and the first order force tensors (denoted by F*). General nomenclature of the input arguments: a) phiTot- total electrostatic potential b) phiExt- sum of electrostatic potential from all nuclear charges c) rho- electron density d) gradRho- gradient of electron density e) exc- exchange correlation energy f) derExcGradRho- derivative of exc with gradient of rho g) psiBegin- begin iterator to vector eigenvectors stored as a flattened array over k points and number of eigenvectors for each k point (periodic case has complex valued eigenvectors which is why dealii::Tensor<1,2,dealii::VectorizedArray<double> is used in functions for periodic case) h) gradPsiBegin- gradient of eigenvectors i) eigenValues- Kohn sham grounstate eigenvalues stored in a vector. For periodic problems with multiple k points the outer vector should be over k points j) tVal- smearing temperature in K k) pseudoVLoc- local part of the pseudopotential l) gradPseudoVLoc- gradient of local part of pseudopotential m) ZetaDeltaV- nonlocal pseudowavefunctions times deltaV (see Eq. 11 in https://link.aps.org/doi/10.1103/PhysRevB.97.165132) n) gradZetaDeltaV- gradient of ZetaDeltaV o) projectorKetTimesPsiTimesV- nonlocal pseudopotential projector ket times eigenvectors which are precomputed. The nonlocal pseudopotential constants are also multiplied to this quantity. (see Eq. 11 in https://link.aps.org/doi/10.1103/PhysRevB.97.165132)

    +
    Author
    Sambit Das
    +

    Function Documentation

    + +

    ◆ getEElectroEshelbyTensor()

    + +
    +
    + + + + + + + + + + + + + + + + +
    dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > dftfe::eshelbyTensor::getEElectroEshelbyTensor (const dealii::VectorizedArray< double > & phiTot,
    const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > & gradPhiTot,
    const dealii::VectorizedArray< double > & rho )
    +
    + +

    All-electron electrostatic part of the Eshelby tensor.

    + +
    +
    + +

    ◆ getELocPspEshelbyTensor()

    + +
    +
    + + + + + + + + + + + + + + + + +
    dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > dftfe::eshelbyTensor::getELocPspEshelbyTensor (const dealii::VectorizedArray< double > & rho,
    const dealii::VectorizedArray< double > & pseudoVLoc,
    const dealii::VectorizedArray< double > & phiExt )
    +
    + +

    psp part of the ELoc Eshelby tensor

    + +
    +
    + +

    ◆ getELocXcEshelbyTensor()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > dftfe::eshelbyTensor::getELocXcEshelbyTensor (const dealii::VectorizedArray< double > & rho,
    const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > & gradRho,
    const dealii::VectorizedArray< double > & exc,
    const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > & derExcGradRho )
    +
    + +

    exchange-correlation part of the ELoc Eshelby tensor

    + +
    +
    + +

    ◆ getFNonlinearCoreCorrection() [1/2]

    + +
    +
    + + + + + + + + + + + +
    dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > dftfe::eshelbyTensor::getFNonlinearCoreCorrection (const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > & derExcGradRho,
    const dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > & hessianRhoCore )
    +
    + +

    Nonlocal core correction pseudopotential force contribution.

    + +
    +
    + +

    ◆ getFNonlinearCoreCorrection() [2/2]

    + +
    +
    + + + + + + + + + + + +
    dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > dftfe::eshelbyTensor::getFNonlinearCoreCorrection (const dealii::VectorizedArray< double > & vxc,
    const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > & gradRhoCore )
    +
    + +

    Nonlocal core correction pseudopotential force contribution.

    + +
    +
    + +

    ◆ getFPSPLocal()

    + +
    +
    + + + + + + + + + + + + + + + + +
    dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > dftfe::eshelbyTensor::getFPSPLocal (const dealii::VectorizedArray< double > rho,
    const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > & gradPseudoVLoc,
    const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > & gradPhiExt )
    +
    + +

    Local pseudopotential force contribution.

    + +
    +
    + +

    ◆ getPhiExtEshelbyTensor()

    + +
    +
    + + + + + + + + + + + +
    dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > dftfe::eshelbyTensor::getPhiExtEshelbyTensor (const dealii::VectorizedArray< double > & phiExt,
    const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > & gradPhiExt )
    +
    +

    Eshelby tensor from sum of electrostatic potential from all nuclear charges (only used for testing purpose)

    + +
    +
    + +

    ◆ getVselfBallEshelbyTensor() [1/2]

    + +
    +
    + + + + + + + +
    dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > dftfe::eshelbyTensor::getVselfBallEshelbyTensor (const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > & gradVself)
    +
    +

    Eshelby tensor corresponding to nuclear self energy (only used for testing purpose)

    + +
    +
    + +

    ◆ getVselfBallEshelbyTensor() [2/2]

    + +
    +
    + + + + + + + +
    dealii::Tensor< 2, 3, double > dftfe::eshelbyTensor::getVselfBallEshelbyTensor (const dealii::Tensor< 1, 3, double > & gradVself)
    +
    + +

    Eshelby tensor corresponding to nuclear self energy.

    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1eshelby_tensor_s_p.html b/namespacedftfe_1_1eshelby_tensor_s_p.html new file mode 100644 index 000000000..4cc633f67 --- /dev/null +++ b/namespacedftfe_1_1eshelby_tensor_s_p.html @@ -0,0 +1,199 @@ + + + + + + + +DFT-FE: dftfe::eshelbyTensorSP Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::eshelbyTensorSP Namespace Reference
    +
    +
    + +

    The functions in this namespace contain the expressions for the various terms of the configurational force (https://link.aps.org/doi/10.1103/PhysRevB.97.165132) for both periodic and non-periodic case. +More...

    + + + + + + + + +

    +Functions

    dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > getELocXcEshelbyTensor (const dealii::VectorizedArray< double > &rho, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradRhoSpin0, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradRhoSpin1, const dealii::VectorizedArray< double > &exc, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derExcGradRhoSpin0, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derExcGradRhoSpin1)
     exchange-correlation and psp part of the ELoc Eshelby tensor
     
    dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > getFNonlinearCoreCorrection (const dealii::VectorizedArray< double > &vxcSpin0, const dealii::VectorizedArray< double > &vxcSpin1, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derExcGradRhoSpin0, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derExcGradRhoSpin1, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradRhoCore, const dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > &hessianRhoCore, const bool isXCGGA)
     Nonlocal core correction pseudopotential force contribution.
     
    +

    Detailed Description

    +

    The functions in this namespace contain the expressions for the various terms of the configurational force (https://link.aps.org/doi/10.1103/PhysRevB.97.165132) for both periodic and non-periodic case.

    +

    The functions in this namespace are similar to the ones in eshelbyTensor.h except the ones here are specialized for spin polarized case. Spin0 and Spin1 refer to up and down spins respectively. General nomenclature of the input arguments: a) phiTot- total electrostatic potential b) phiExt- sum of electrostatic potential from all nuclear charges c) rho- electron density d) gradRho- gradient of electron density e) exc- exchange correlation energy f) derExcGradRho- derivative of exc with gradient of rho g) psiBegin- begin iterator to vector eigenvectors stored as a flattened array over k points and number of eigenvectors for each k point (periodic case has complex valued eigenvectors which is why dealii::Tensor<1,2,dealii::VectorizedArray<double> is used in functions for periodic case) h) gradPsiBegin- gradient of eigenvectors i) eigenValues- Kohn sham grounstate eigenvalues stored in a vector. For periodic problems with multiple k points the outer vector should be over k points j) tVal- smearing temperature in K k) pseudoVLoc- local part of the pseuodopotential l) gradPseudoVLoc- gradient of local part of pseudopotential m) ZetaDeltaV- nonlocal pseudowavefunctions times deltaV (see Eq. 11 in https://link.aps.org/doi/10.1103/PhysRevB.97.165132) n) gradZetaDeltaV- gradient of ZetaDeltaV o) projectorKetTimesPsiTimesV- nonlocal pseudopotential projector ket times eigenvectors which are precomputed. The nonlocal pseudopotential constants are also multiplied to this quantity. (see Eq. 11 in https://link.aps.org/doi/10.1103/PhysRevB.97.165132)

    +
    Author
    Sambit Das
    +

    Function Documentation

    + +

    ◆ getELocXcEshelbyTensor()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > dftfe::eshelbyTensorSP::getELocXcEshelbyTensor (const dealii::VectorizedArray< double > & rho,
    const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > & gradRhoSpin0,
    const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > & gradRhoSpin1,
    const dealii::VectorizedArray< double > & exc,
    const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > & derExcGradRhoSpin0,
    const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > & derExcGradRhoSpin1 )
    +
    + +

    exchange-correlation and psp part of the ELoc Eshelby tensor

    + +
    +
    + +

    ◆ getFNonlinearCoreCorrection()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > dftfe::eshelbyTensorSP::getFNonlinearCoreCorrection (const dealii::VectorizedArray< double > & vxcSpin0,
    const dealii::VectorizedArray< double > & vxcSpin1,
    const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > & derExcGradRhoSpin0,
    const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > & derExcGradRhoSpin1,
    const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > & gradRhoCore,
    const dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > & hessianRhoCore,
    const bool isXCGGA )
    +
    + +

    Nonlocal core correction pseudopotential force contribution.

    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1force.html b/namespacedftfe_1_1force.html new file mode 100644 index 000000000..f3bacfc49 --- /dev/null +++ b/namespacedftfe_1_1force.html @@ -0,0 +1,231 @@ + + + + + + + +DFT-FE: dftfe::force Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::force Namespace Reference
    +
    +
    + + + + + +

    +Functions

    template<dftfe::utils::MemorySpace memorySpace>
    void wfcContractionsForceKernelsAllH (std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, memorySpace > > &basisOperationsPtr, const unsigned int densityQuadratureId, const unsigned int nlpspQuadratureId, const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > &BLASWrapperPtr, std::shared_ptr< dftfe::oncvClass< dataTypes::number, memorySpace > > oncvClassPtr, const dataTypes::number *X, const unsigned int spinPolarizedFlag, const unsigned int spinIndex, const std::vector< std::vector< double > > &eigenValuesH, const std::vector< std::vector< double > > &partialOccupanciesH, const std::vector< double > &kPointCoordinates, const unsigned int MLoc, const unsigned int N, const unsigned int numCells, const unsigned int numQuads, const unsigned int numQuadsNLP, double *eshelbyTensorQuadValuesH, dataTypes::number *projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattenedH, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const bool isPsp, const bool isFloatingChargeForces, const bool addEk, const dftParameters &dftParams)
     
    +

    Function Documentation

    + +

    ◆ wfcContractionsForceKernelsAllH()

    + +
    +
    +
    +template<dftfe::utils::MemorySpace memorySpace>
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::force::wfcContractionsForceKernelsAllH (std::shared_ptr< dftfe::basis::FEBasisOperations< dataTypes::number, double, memorySpace > > & basisOperationsPtr,
    const unsigned int densityQuadratureId,
    const unsigned int nlpspQuadratureId,
    const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > & BLASWrapperPtr,
    std::shared_ptr< dftfe::oncvClass< dataTypes::number, memorySpace > > oncvClassPtr,
    const dataTypes::number * X,
    const unsigned int spinPolarizedFlag,
    const unsigned int spinIndex,
    const std::vector< std::vector< double > > & eigenValuesH,
    const std::vector< std::vector< double > > & partialOccupanciesH,
    const std::vector< double > & kPointCoordinates,
    const unsigned int MLoc,
    const unsigned int N,
    const unsigned int numCells,
    const unsigned int numQuads,
    const unsigned int numQuadsNLP,
    double * eshelbyTensorQuadValuesH,
    dataTypes::number * projectorKetTimesPsiTimesVTimesPartOccContractionGradPsiQuadsFlattenedH,
    const MPI_Comm & mpiCommParent,
    const MPI_Comm & interBandGroupComm,
    const bool isPsp,
    const bool isFloatingChargeForces,
    const bool addEk,
    const dftParameters & dftParams )
    +
    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1linear_algebra.html b/namespacedftfe_1_1linear_algebra.html new file mode 100644 index 000000000..a6d59a351 --- /dev/null +++ b/namespacedftfe_1_1linear_algebra.html @@ -0,0 +1,137 @@ + + + + + + + +DFT-FE: dftfe::linearAlgebra Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::linearAlgebra Namespace Reference
    +
    +
    + + + + + + + + + +

    +Classes

    class  BLASWrapper
     
    class  BLASWrapper< dftfe::utils::MemorySpace::HOST >
     
    class  MultiVector
     An class template to encapsulate a MultiVector. A MultiVector is a collection of $N$ vectors belonging to the same finite-dimensional vector space, where usual notion of vector size denotes the dimension of the vector space. Note that this in the mathematical sense and not in the sense of an multi-dimensional array.The MultiVector is stored contiguously with the vector index being the fastest index, or in other words a matrix of size $M \times N$ in row major format with $M $ denoting the dimension of the vector space (size of individual vector). More...
     
    + + + + +

    +Functions

    template<typename ValueType , utils::MemorySpace memorySpace>
    void createMultiVectorFromDealiiPartitioner (const std::shared_ptr< const dealii::Utilities::MPI::Partitioner > &partitioner, const size_type numVectors, MultiVector< ValueType, memorySpace > &multiVector)
     
    +

    Function Documentation

    + +

    ◆ createMultiVectorFromDealiiPartitioner()

    + +
    +
    +
    +template<typename ValueType , utils::MemorySpace memorySpace>
    + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebra::createMultiVectorFromDealiiPartitioner (const std::shared_ptr< const dealii::Utilities::MPI::Partitioner > & partitioner,
    const size_type numVectors,
    MultiVector< ValueType, memorySpace > & multiVector )
    +
    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1linear_algebra_operations.html b/namespacedftfe_1_1linear_algebra_operations.html new file mode 100644 index 000000000..a80d49e10 --- /dev/null +++ b/namespacedftfe_1_1linear_algebra_operations.html @@ -0,0 +1,1171 @@ + + + + + + + +DFT-FE: dftfe::linearAlgebraOperations Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::linearAlgebraOperations Namespace Reference
    +
    +
    + +

    Contains linear algebra functions used in the implementation of an eigen solver. +More...

    + + + + + +

    +Namespaces

    namespace  internal
     Contains internal functions used in linearAlgebraOperations.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void inverse (double *A, int N)
     Compute inverse of serial matrix using LAPACK LU factorization.
     
    template<typename T , dftfe::utils::MemorySpace memorySpace>
    std::pair< double, doublelanczosLowerUpperBoundEigenSpectrum (const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > &BLASWrapperPtr, operatorDFTClass< memorySpace > &operatorMatrix, dftfe::linearAlgebra::MultiVector< T, memorySpace > &X, dftfe::linearAlgebra::MultiVector< T, memorySpace > &Y, dftfe::linearAlgebra::MultiVector< T, memorySpace > &Z, const dftParameters &dftParams)
     Calculates an estimate of lower and upper bounds of a matrix using k-step Lanczos method.
     
    template<typename T , dftfe::utils::MemorySpace memorySpace>
    void chebyshevFilter (operatorDFTClass< memorySpace > &operatorMatrix, dftfe::linearAlgebra::MultiVector< T, memorySpace > &X, dftfe::linearAlgebra::MultiVector< T, memorySpace > &Y, const unsigned int m, const double a, const double b, const double a0)
     Apply Chebyshev filter to a given subspace.
     
    template<typename T >
    void gramSchmidtOrthogonalization (T *X, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiComm)
     Orthogonalize given subspace using GramSchmidt orthogonalization.
     
    unsigned int lowdenOrthogonalization (std::vector< dataTypes::number > &X, const unsigned int numberComponents, const MPI_Comm &mpiComm, const dftParameters &dftParams)
     Orthogonalize given subspace using Lowden orthogonalization for double data-type (serial version using LAPACK)
     
    template<typename T >
    unsigned int pseudoGramSchmidtOrthogonalization (elpaScalaManager &elpaScala, T *X, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, const bool useMixedPrec, const dftParameters &dftParams)
     Orthogonalize given subspace using Pseudo-Gram-Schmidt orthogonalization (serial version using LAPACK, parallel version using ScaLAPACK)
     
    template<typename T >
    void rayleighRitzGEP (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, elpaScalaManager &elpaScala, T *X, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, std::vector< double > &eigenValues, const bool useMixedPrec, const dftParameters &dftParams)
     Compute Rayleigh-Ritz projection (serial version using LAPACK, parallel version using ScaLAPACK)
     
    template<typename T >
    void rayleighRitz (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, elpaScalaManager &elpaScala, T *X, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, std::vector< double > &eigenValues, const dftParameters &dftParams, const bool doCommAfterBandParal=true)
     Compute Rayleigh-Ritz projection (serial version using LAPACK, parallel version using ScaLAPACK)
     
    template<typename T >
    void rayleighRitzGEPSpectrumSplitDirect (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, elpaScalaManager &elpaScala, T *X, T *Y, const unsigned int numberComponents, const unsigned int numberDofs, const unsigned int numberCoreStates, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, const bool useMixedPrec, std::vector< double > &eigenValues, const dftParameters &dftParams)
     Compute Rayleigh-Ritz projection in case of spectrum split using direct diagonalization (serial version using LAPACK, parallel version using ScaLAPACK)
     
    template<typename T >
    void rayleighRitzSpectrumSplitDirect (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, elpaScalaManager &elpaScala, const T *X, T *Y, const unsigned int numberComponents, const unsigned int numberDofs, const unsigned int numberCoreStates, const MPI_Comm &mpiCommParent, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, const bool useMixedPrec, std::vector< double > &eigenValues, const dftParameters &dftParams)
     Compute Rayleigh-Ritz projection in case of spectrum split using direct diagonalization (serial version using LAPACK, parallel version using ScaLAPACK)
     
    template<typename T >
    void computeEigenResidualNorm (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, T *X, const std::vector< double > &eigenValues, const unsigned int numberComponents, const unsigned int numberDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, std::vector< double > &residualNorm, const dftParameters &dftParams)
     Compute residual norm associated with eigenValue problem of the given operator.
     
    template<typename T >
    void densityMatrixEigenBasisFirstOrderResponse (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, T *X, const unsigned int N, const unsigned int numberLocalDofs, const MPI_Comm &mpiCommParent, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const std::vector< double > &eigenValues, const double fermiEnergy, std::vector< double > &densityMatDerFermiEnergy, elpaScalaManager &elpaScala, const dftParameters &dftParams)
     Compute first order response in density matrix with respect to perturbation in the Hamiltonian. Perturbation is computed in the eigenbasis.
     
    void XtHX (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, std::vector< dataTypes::number > &ProjHam)
     Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj.
     
    void XtHX (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
     Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj.
     
    void XtHXMixedPrec (operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const dataTypes::number *X, const unsigned int totalNumberComponents, const unsigned int singlePrecComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)
     Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj.
     
    +

    Detailed Description

    +

    Contains linear algebra functions used in the implementation of an eigen solver.

    +
    Author
    Phani Motamarri, Sambit Das
    +

    Function Documentation

    + +

    ◆ chebyshevFilter()

    + +
    +
    +
    +template<typename T , dftfe::utils::MemorySpace memorySpace>
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::chebyshevFilter (operatorDFTClass< memorySpace > & operatorMatrix,
    dftfe::linearAlgebra::MultiVector< T, memorySpace > & X,
    dftfe::linearAlgebra::MultiVector< T, memorySpace > & Y,
    const unsigned int m,
    const double a,
    const double b,
    const double a0 )
    +
    + +

    Apply Chebyshev filter to a given subspace.

    +
    Parameters
    + + + + + + + + +
    [in]operatorMatrixAn object which has access to the given matrix
    [in,out]XGiven subspace as a dealii array representing multiple fields as a flattened array. In-place update of the given subspace.
    [in]numberComponentsNumber of multiple-fields
    [in]mChebyshev polynomial degree
    [in]alower bound of unwanted spectrum
    [in]bupper bound of unwanted spectrum
    [in]a0lower bound of wanted spectrum
    +
    +
    + +
    +
    + +

    ◆ computeEigenResidualNorm()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::computeEigenResidualNorm (operatorDFTClass< dftfe::utils::MemorySpace::HOST > & operatorMatrix,
    T * X,
    const std::vector< double > & eigenValues,
    const unsigned int numberComponents,
    const unsigned int numberDofs,
    const MPI_Comm & mpiCommParent,
    const MPI_Comm & mpiCommDomain,
    const MPI_Comm & interBandGroupComm,
    std::vector< double > & residualNorm,
    const dftParameters & dftParams )
    +
    + +

    Compute residual norm associated with eigenValue problem of the given operator.

    +
    Parameters
    + + + + + + + +
    [in]operatorMatrixAn object which has access to the given matrix
    [in]XGiven subspace as STL vector of dealii vectors
    [in]eigenValueseigenValues of the operator
    [in]mpiCommParentparent mpi communicator
    [in]mpiCommDomaindomain decomposition communicator
    [out]residualNormsof the eigen Value problem
    +
    +
    + +
    +
    + +

    ◆ densityMatrixEigenBasisFirstOrderResponse()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::densityMatrixEigenBasisFirstOrderResponse (operatorDFTClass< dftfe::utils::MemorySpace::HOST > & operatorMatrix,
    T * X,
    const unsigned int N,
    const unsigned int numberLocalDofs,
    const MPI_Comm & mpiCommParent,
    const MPI_Comm & mpiCommDomain,
    const MPI_Comm & interBandGroupComm,
    const std::vector< double > & eigenValues,
    const double fermiEnergy,
    std::vector< double > & densityMatDerFermiEnergy,
    elpaScalaManager & elpaScala,
    const dftParameters & dftParams )
    +
    + +

    Compute first order response in density matrix with respect to perturbation in the Hamiltonian. Perturbation is computed in the eigenbasis.

    + +
    +
    + +

    ◆ gramSchmidtOrthogonalization()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::gramSchmidtOrthogonalization (T * X,
    const unsigned int numberComponents,
    const unsigned int numberDofs,
    const MPI_Comm & mpiComm )
    +
    + +

    Orthogonalize given subspace using GramSchmidt orthogonalization.

    +
    Parameters
    + + + + +
    [in,out]XGiven subspace as flattened array of multi-vectors. In-place update of the given subspace
    [in]numberComponentsNumber of multiple-fields
    [in]mpiCommglobal communicator
    +
    +
    + +
    +
    + +

    ◆ inverse()

    + +
    +
    + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::inverse (double * A,
    int N )
    +
    + +

    Compute inverse of serial matrix using LAPACK LU factorization.

    + +
    +
    + +

    ◆ lanczosLowerUpperBoundEigenSpectrum()

    + +
    +
    +
    +template<typename T , dftfe::utils::MemorySpace memorySpace>
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::pair< double, double > dftfe::linearAlgebraOperations::lanczosLowerUpperBoundEigenSpectrum (const std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< memorySpace > > & BLASWrapperPtr,
    operatorDFTClass< memorySpace > & operatorMatrix,
    dftfe::linearAlgebra::MultiVector< T, memorySpace > & X,
    dftfe::linearAlgebra::MultiVector< T, memorySpace > & Y,
    dftfe::linearAlgebra::MultiVector< T, memorySpace > & Z,
    const dftParameters & dftParams )
    +
    + +

    Calculates an estimate of lower and upper bounds of a matrix using k-step Lanczos method.

    +
    Parameters
    + + + +
    operatorMatrixAn object which has access to the given matrix
    vectA dummy vector
    +
    +
    +
    Returns
    std::pair<double,double> An estimate of the lower and upper bound of the given matrix
    + +
    +
    + +

    ◆ lowdenOrthogonalization()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    unsigned int dftfe::linearAlgebraOperations::lowdenOrthogonalization (std::vector< dataTypes::number > & X,
    const unsigned int numberComponents,
    const MPI_Comm & mpiComm,
    const dftParameters & dftParams )
    +
    + +

    Orthogonalize given subspace using Lowden orthogonalization for double data-type (serial version using LAPACK)

    +
    Parameters
    + + + + +
    [in,out]XGiven subspace as flattened array of multi-vectors. In-place update of the given subspace
    [in]numberComponentsNumber of multiple-fields
    [in]mpiCommglobal communicator
    +
    +
    +
    Returns
    flag indicating success/failure. 1 for failure, 0 for success
    + +
    +
    + +

    ◆ pseudoGramSchmidtOrthogonalization()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    unsigned int dftfe::linearAlgebraOperations::pseudoGramSchmidtOrthogonalization (elpaScalaManager & elpaScala,
    T * X,
    const unsigned int numberComponents,
    const unsigned int numberDofs,
    const MPI_Comm & mpiCommParent,
    const MPI_Comm & interBandGroupComm,
    const MPI_Comm & mpiCommDomain,
    const bool useMixedPrec,
    const dftParameters & dftParams )
    +
    + +

    Orthogonalize given subspace using Pseudo-Gram-Schmidt orthogonalization (serial version using LAPACK, parallel version using ScaLAPACK)

    +
    Parameters
    + + + + + + +
    [in,out]XGiven subspace as flattened array of multi-vectors. In-place update of the given subspace
    [in]numberComponentsNumber of multiple-fields
    [in]mpiCommParentparent communicator
    [in]interBandGroupComminterpool communicator for parallelization over band groups
    [in]mpiCommdomain decomposition communicator
    +
    +
    +
    Returns
    flag indicating success/failure. 1 for failure, 0 for success
    + +
    +
    + +

    ◆ rayleighRitz()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::rayleighRitz (operatorDFTClass< dftfe::utils::MemorySpace::HOST > & operatorMatrix,
    elpaScalaManager & elpaScala,
    T * X,
    const unsigned int numberComponents,
    const unsigned int numberDofs,
    const MPI_Comm & mpiCommParent,
    const MPI_Comm & interBandGroupComm,
    const MPI_Comm & mpiCommDomain,
    std::vector< double > & eigenValues,
    const dftParameters & dftParams,
    const bool doCommAfterBandParal = true )
    +
    + +

    Compute Rayleigh-Ritz projection (serial version using LAPACK, parallel version using ScaLAPACK)

    +
    Parameters
    + + + + + + + + +
    [in]operatorMatrixAn object which has access to the given matrix
    [in,out]XGiven subspace as flattened array of multi-vectors. In-place rotated subspace
    [in]numberComponentsNumber of vectors
    [in]mpiCommParentparent mpi communicator
    [in]interBandGroupComminterpool communicator for parallelization over band groups
    [in]mpiCommDomaindomain decomposition communicator
    [out]eigenValuesof the Projected Hamiltonian
    +
    +
    + +
    +
    + +

    ◆ rayleighRitzGEP()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::rayleighRitzGEP (operatorDFTClass< dftfe::utils::MemorySpace::HOST > & operatorMatrix,
    elpaScalaManager & elpaScala,
    T * X,
    const unsigned int numberComponents,
    const unsigned int numberDofs,
    const MPI_Comm & mpiCommParent,
    const MPI_Comm & interBandGroupComm,
    const MPI_Comm & mpiCommDomain,
    std::vector< double > & eigenValues,
    const bool useMixedPrec,
    const dftParameters & dftParams )
    +
    + +

    Compute Rayleigh-Ritz projection (serial version using LAPACK, parallel version using ScaLAPACK)

    +
    Parameters
    + + + + + + + + +
    [in]operatorMatrixAn object which has access to the given matrix
    [in,out]XGiven subspace as flattened array of multi-vectors. In-place rotated subspace
    [in]numberComponentsNumber of vectors
    [in]mpiCommDomainparent communicator
    [in]interBandGroupComminterpool communicator for parallelization over band groups
    [in]mpiCommDomaindomain decomposition communicator
    [out]eigenValuesof the Projected Hamiltonian
    +
    +
    + +
    +
    + +

    ◆ rayleighRitzGEPSpectrumSplitDirect()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::rayleighRitzGEPSpectrumSplitDirect (operatorDFTClass< dftfe::utils::MemorySpace::HOST > & operatorMatrix,
    elpaScalaManager & elpaScala,
    T * X,
    T * Y,
    const unsigned int numberComponents,
    const unsigned int numberDofs,
    const unsigned int numberCoreStates,
    const MPI_Comm & mpiCommParent,
    const MPI_Comm & interBandGroupComm,
    const MPI_Comm & mpiCommDomain,
    const bool useMixedPrec,
    std::vector< double > & eigenValues,
    const dftParameters & dftParams )
    +
    + +

    Compute Rayleigh-Ritz projection in case of spectrum split using direct diagonalization (serial version using LAPACK, parallel version using ScaLAPACK)

    +
    Parameters
    + + + + + + + + + + +
    [in]operatorMatrixAn object which has access to the given matrix
    [in]XGiven subspace as flattened array of multi-vectors.
    [out]Yrotated subspace of top states
    [in]numberComponentsNumber of vectors
    [in]numberCoreStatesNumber of core states to be used for spectrum splitting
    [in]mpiCommParentparent mpi communicator
    [in]interBandGroupComminterpool communicator for parallelization over band groups
    [in]mpiCommDomaindomain decomposition communicator
    [out]eigenValuesof the Projected Hamiltonian
    +
    +
    + +
    +
    + +

    ◆ rayleighRitzSpectrumSplitDirect()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::rayleighRitzSpectrumSplitDirect (operatorDFTClass< dftfe::utils::MemorySpace::HOST > & operatorMatrix,
    elpaScalaManager & elpaScala,
    const T * X,
    T * Y,
    const unsigned int numberComponents,
    const unsigned int numberDofs,
    const unsigned int numberCoreStates,
    const MPI_Comm & mpiCommParent,
    const MPI_Comm & interBandGroupComm,
    const MPI_Comm & mpiCommDomain,
    const bool useMixedPrec,
    std::vector< double > & eigenValues,
    const dftParameters & dftParams )
    +
    + +

    Compute Rayleigh-Ritz projection in case of spectrum split using direct diagonalization (serial version using LAPACK, parallel version using ScaLAPACK)

    +
    Parameters
    + + + + + + + + + + +
    [in]operatorMatrixAn object which has access to the given matrix
    [in]XGiven subspace as flattened array of multi-vectors.
    [out]Yrotated subspace of top states
    [in]numberComponentsNumber of vectors
    [in]numberCoreStatesNumber of core states to be used for spectrum splitting
    [in]mpiCommParentparent mpi communicator
    [in]interBandGroupComminterpool communicator for parallelization over band groups
    [in]mpiCommDomaindomain decomposition communicator
    [out]eigenValuesof the Projected Hamiltonian
    +
    +
    + +
    +
    + +

    ◆ XtHX() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::XtHX (operatorDFTClass< dftfe::utils::MemorySpace::HOST > & operatorMatrix,
    const dataTypes::number * X,
    const unsigned int numberComponents,
    const unsigned int numberLocalDofs,
    const MPI_Comm & mpiCommDomain,
    const MPI_Comm & interBandGroupComm,
    const dftParameters & dftParams,
    std::vector< dataTypes::number > & ProjHam )
    +
    + +

    Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj.

    +
    Parameters
    + + + + +
    XVector of Vectors containing multi-wavefunction fields
    numberComponentsnumber of wavefunctions associated with a given node
    ProjMatrixprojected small matrix
    +
    +
    + +
    +
    + +

    ◆ XtHX() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::XtHX (operatorDFTClass< dftfe::utils::MemorySpace::HOST > & operatorMatrix,
    const dataTypes::number * X,
    const unsigned int numberComponents,
    const unsigned int numberLocalDofs,
    const std::shared_ptr< const dftfe::ProcessGrid > & processGrid,
    const MPI_Comm & mpiCommDomain,
    const MPI_Comm & interBandGroupComm,
    const dftParameters & dftParams,
    dftfe::ScaLAPACKMatrix< dataTypes::number > & projHamPar,
    const bool onlyHPrimePartForFirstOrderDensityMatResponse = false )
    +
    + +

    Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj.

    +
    Parameters
    + + + + + +
    XVector of Vectors containing multi-wavefunction fields
    numberComponentsnumber of wavefunctions associated with a given node
    processGridtwo-dimensional processor grid corresponding to the parallel projHamPar
    projHamParparallel ScaLAPACKMatrix which stores the computed projection of the operation into the given subspace
    +
    +
    + +
    +
    + +

    ◆ XtHXMixedPrec()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::XtHXMixedPrec (operatorDFTClass< dftfe::utils::MemorySpace::HOST > & operatorMatrix,
    const dataTypes::number * X,
    const unsigned int totalNumberComponents,
    const unsigned int singlePrecComponents,
    const unsigned int numberLocalDofs,
    const std::shared_ptr< const dftfe::ProcessGrid > & processGrid,
    const MPI_Comm & mpiCommDomain,
    const MPI_Comm & interBandGroupComm,
    const dftParameters & dftParams,
    dftfe::ScaLAPACKMatrix< dataTypes::number > & projHamPar,
    const bool onlyHPrimePartForFirstOrderDensityMatResponse = false )
    +
    + +

    Compute projection of the operator into a subspace spanned by a given orthogonal basis HProjConj=X^{T}*HConj*XConj.

    +
    Parameters
    + + + + + + +
    XVector of Vectors containing multi-wavefunction fields
    totalNumberComponentsnumber of wavefunctions associated with a given node
    singlePrecComponentsnumber of wavecfuntions starting from the first for which the project Hamiltionian block will be computed in single procession. However the cross blocks will still be computed in double precision.
    processGridtwo-dimensional processor grid corresponding to the parallel projHamPar
    projHamParparallel ScaLAPACKMatrix which stores the computed projection of the operation into the given subspace
    +
    +
    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1linear_algebra_operations_1_1internal.html b/namespacedftfe_1_1linear_algebra_operations_1_1internal.html new file mode 100644 index 000000000..6269c35f5 --- /dev/null +++ b/namespacedftfe_1_1linear_algebra_operations_1_1internal.html @@ -0,0 +1,870 @@ + + + + + + + +DFT-FE: dftfe::linearAlgebraOperations::internal Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::linearAlgebraOperations::internal Namespace Reference
    +
    +
    + +

    Contains internal functions used in linearAlgebraOperations. +More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void setupELPAHandleParameters (const MPI_Comm &mpi_communicator, MPI_Comm &processGridCommunicatorActive, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const unsigned int na, const unsigned int nev, const unsigned int blockSize, elpa_t &elpaHandle, const dftParameters &dftParams)
     setup ELPA parameters.
     
    void createProcessGridSquareMatrix (const MPI_Comm &mpi_communicator, const unsigned size, std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const dftParameters &dftParams, const bool useOnlyThumbRule=false)
     Wrapper function to create a two dimensional processor grid for a square matrix in dftfe::ScaLAPACKMatrix storage format.
     
    void createProcessGridRectangularMatrix (const MPI_Comm &mpi_communicator, const unsigned sizeRows, const unsigned sizeColumns, std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const dftParameters &dftParams)
     Wrapper function to create a two dimensional processor grid for a rectangular matrix in dftfe::ScaLAPACKMatrix storage format.
     
    template<typename T >
    void createGlobalToLocalIdMapsScaLAPACKMat (const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const dftfe::ScaLAPACKMatrix< T > &mat, std::unordered_map< unsigned int, unsigned int > &globalToLocalRowIdMap, std::unordered_map< unsigned int, unsigned int > &globalToLocalColumnIdMap)
     Creates global row/column id to local row/column ids for dftfe::ScaLAPACKMatrix.
     
    template<typename T >
    void sumAcrossInterCommScaLAPACKMat (const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< T > &mat, const MPI_Comm &interComm)
     Mpi all reduce of ScaLAPACKMat across a given inter communicator. Used for band parallelization.
     
    template<typename T >
    void scaleScaLAPACKMat (const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< T > &mat, const T scalar)
     scale a ScaLAPACKMat with a scalar
     
    template<typename T >
    void broadcastAcrossInterCommScaLAPACKMat (const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, dftfe::ScaLAPACKMatrix< T > &mat, const MPI_Comm &interComm, const unsigned int broadcastRoot)
     MPI_Bcast of ScaLAPACKMat across a given inter communicator from a given broadcast root. Used for band parallelization.
     
    template<typename T >
    void fillParallelOverlapMatrix (const T *X, const unsigned int XLocalSize, const unsigned int numberVectors, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiComm, dftfe::ScaLAPACKMatrix< T > &overlapMatPar, const dftParameters &dftParams)
     Computes Sc=X^{T}*Xc and stores in a parallel ScaLAPACK matrix. X^{T} is the subspaceVectorsArray stored in the column major format (N x M). Sc is the overlapMatPar.
     
    template<typename T , typename TLowPrec >
    void fillParallelOverlapMatrixMixedPrec (const T *X, const unsigned int XLocalSize, const unsigned int numberVectors, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiComm, dftfe::ScaLAPACKMatrix< T > &overlapMatPar, const dftParameters &dftParams)
     Computes Sc=X^{T}*Xc and stores in a parallel ScaLAPACK matrix. X^{T} is the subspaceVectorsArray stored in the column major format (N x M). Sc is the overlapMatPar.
     
    template<typename T >
    void subspaceRotation (T *subspaceVectorsArray, const unsigned int subspaceVectorsArrayLocalSize, const unsigned int N, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiComm, const dftfe::ScaLAPACKMatrix< T > &rotationMatPar, const dftParameters &dftParams, const bool rotationMatTranspose=false, const bool isRotationMatLowerTria=false, const bool doCommAfterBandParal=true)
     Computes X^{T}=Q*X^{T} inplace. X^{T} is the subspaceVectorsArray stored in the column major format (N x M). Q is rotationMatPar (N x N).
     
    template<typename T , typename TLowPrec >
    void subspaceRotationMixedPrec (T *subspaceVectorsArray, const unsigned int subspaceVectorsArrayLocalSize, const unsigned int N, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiComm, const dftfe::ScaLAPACKMatrix< T > &rotationMatPar, const dftParameters &dftParams, const bool rotationMatTranspose=false, const bool doCommAfterBandParal=true)
     Computes X^{T}=Q*X^{T} inplace. X^{T} is the subspaceVectorsArray stored in the column major format (N x M). Q is rotationMatPar (N x N).
     
    template<typename T >
    void subspaceRotationSpectrumSplit (const T *X, T *Y, const unsigned int subspaceVectorsArrayLocalSize, const unsigned int N, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const unsigned int numberTopVectors, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiComm, const dftfe::ScaLAPACKMatrix< T > &QMat, const dftParameters &dftParams, const bool QMatTranspose=false)
     Computes Y^{T}=Q*X^{T}.
     
    template<typename T , typename TLowPrec >
    void subspaceRotationSpectrumSplitMixedPrec (const T *X, T *Y, const unsigned int subspaceVectorsArrayLocalSize, const unsigned int N, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const unsigned int numberTopVectors, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiComm, const dftfe::ScaLAPACKMatrix< T > &QMat, const dftParameters &dftParams, const bool QMatTranspose=false)
     Computes Y^{T}=Q*X^{T}.
     
    template<typename T , typename TLowPrec >
    void subspaceRotationCGSMixedPrec (T *subspaceVectorsArray, const unsigned int subspaceVectorsArrayLocalSize, const unsigned int N, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiComm, const dftfe::ScaLAPACKMatrix< T > &rotationMatPar, const dftParameters &dftParams, const bool rotationMatTranspose=false, const bool doCommAfterBandParal=true)
     Computes X^{T}=Q*X^{T} inplace. X^{T} is the subspaceVectorsArray stored in the column major format (N x M). Q is rotationMatPar (N x N).
     
    +

    Detailed Description

    +

    Contains internal functions used in linearAlgebraOperations.

    +
    Author
    Sambit Das
    +

    Function Documentation

    + +

    ◆ broadcastAcrossInterCommScaLAPACKMat()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::internal::broadcastAcrossInterCommScaLAPACKMat (const std::shared_ptr< const dftfe::ProcessGrid > & processGrid,
    dftfe::ScaLAPACKMatrix< T > & mat,
    const MPI_Comm & interComm,
    const unsigned int broadcastRoot )
    +
    + +

    MPI_Bcast of ScaLAPACKMat across a given inter communicator from a given broadcast root. Used for band parallelization.

    + +
    +
    + +

    ◆ createGlobalToLocalIdMapsScaLAPACKMat()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::internal::createGlobalToLocalIdMapsScaLAPACKMat (const std::shared_ptr< const dftfe::ProcessGrid > & processGrid,
    const dftfe::ScaLAPACKMatrix< T > & mat,
    std::unordered_map< unsigned int, unsigned int > & globalToLocalRowIdMap,
    std::unordered_map< unsigned int, unsigned int > & globalToLocalColumnIdMap )
    +
    + +

    Creates global row/column id to local row/column ids for dftfe::ScaLAPACKMatrix.

    + +
    +
    + +

    ◆ createProcessGridRectangularMatrix()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::internal::createProcessGridRectangularMatrix (const MPI_Comm & mpi_communicator,
    const unsigned sizeRows,
    const unsigned sizeColumns,
    std::shared_ptr< const dftfe::ProcessGrid > & processGrid,
    const dftParameters & dftParams )
    +
    + +

    Wrapper function to create a two dimensional processor grid for a rectangular matrix in dftfe::ScaLAPACKMatrix storage format.

    + +
    +
    + +

    ◆ createProcessGridSquareMatrix()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::internal::createProcessGridSquareMatrix (const MPI_Comm & mpi_communicator,
    const unsigned size,
    std::shared_ptr< const dftfe::ProcessGrid > & processGrid,
    const dftParameters & dftParams,
    const bool useOnlyThumbRule = false )
    +
    + +

    Wrapper function to create a two dimensional processor grid for a square matrix in dftfe::ScaLAPACKMatrix storage format.

    + +
    +
    + +

    ◆ fillParallelOverlapMatrix()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::internal::fillParallelOverlapMatrix (const T * X,
    const unsigned int XLocalSize,
    const unsigned int numberVectors,
    const std::shared_ptr< const dftfe::ProcessGrid > & processGrid,
    const MPI_Comm & interBandGroupComm,
    const MPI_Comm & mpiComm,
    dftfe::ScaLAPACKMatrix< T > & overlapMatPar,
    const dftParameters & dftParams )
    +
    + +

    Computes Sc=X^{T}*Xc and stores in a parallel ScaLAPACK matrix. X^{T} is the subspaceVectorsArray stored in the column major format (N x M). Sc is the overlapMatPar.

    +

    The overlap matrix computation and filling is done in a blocked approach which avoids creation of full serial overlap matrix memory, and also avoids creation of another full X memory.

    + +
    +
    + +

    ◆ fillParallelOverlapMatrixMixedPrec()

    + +
    +
    +
    +template<typename T , typename TLowPrec >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::internal::fillParallelOverlapMatrixMixedPrec (const T * X,
    const unsigned int XLocalSize,
    const unsigned int numberVectors,
    const std::shared_ptr< const dftfe::ProcessGrid > & processGrid,
    const MPI_Comm & interBandGroupComm,
    const MPI_Comm & mpiComm,
    dftfe::ScaLAPACKMatrix< T > & overlapMatPar,
    const dftParameters & dftParams )
    +
    + +

    Computes Sc=X^{T}*Xc and stores in a parallel ScaLAPACK matrix. X^{T} is the subspaceVectorsArray stored in the column major format (N x M). Sc is the overlapMatPar.

    +

    The overlap matrix computation and filling is done in a blocked approach which avoids creation of full serial overlap matrix memory, and also avoids creation of another full X memory.

    + +
    +
    + +

    ◆ scaleScaLAPACKMat()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::internal::scaleScaLAPACKMat (const std::shared_ptr< const dftfe::ProcessGrid > & processGrid,
    dftfe::ScaLAPACKMatrix< T > & mat,
    const T scalar )
    +
    + +

    scale a ScaLAPACKMat with a scalar

    + +
    +
    + +

    ◆ setupELPAHandleParameters()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::internal::setupELPAHandleParameters (const MPI_Comm & mpi_communicator,
    MPI_Comm & processGridCommunicatorActive,
    const std::shared_ptr< const dftfe::ProcessGrid > & processGrid,
    const unsigned int na,
    const unsigned int nev,
    const unsigned int blockSize,
    elpa_t & elpaHandle,
    const dftParameters & dftParams )
    +
    + +

    setup ELPA parameters.

    + +
    +
    + +

    ◆ subspaceRotation()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::internal::subspaceRotation (T * subspaceVectorsArray,
    const unsigned int subspaceVectorsArrayLocalSize,
    const unsigned int N,
    const std::shared_ptr< const dftfe::ProcessGrid > & processGrid,
    const MPI_Comm & interBandGroupComm,
    const MPI_Comm & mpiComm,
    const dftfe::ScaLAPACKMatrix< T > & rotationMatPar,
    const dftParameters & dftParams,
    const bool rotationMatTranspose = false,
    const bool isRotationMatLowerTria = false,
    const bool doCommAfterBandParal = true )
    +
    + +

    Computes X^{T}=Q*X^{T} inplace. X^{T} is the subspaceVectorsArray stored in the column major format (N x M). Q is rotationMatPar (N x N).

    +

    The subspace rotation inside this function is done in a blocked approach which avoids creation of full serial rotation matrix memory, and also avoids creation of another full subspaceVectorsArray memory. subspaceVectorsArrayLocalSize=N*M

    + +
    +
    + +

    ◆ subspaceRotationCGSMixedPrec()

    + +
    +
    +
    +template<typename T , typename TLowPrec >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::internal::subspaceRotationCGSMixedPrec (T * subspaceVectorsArray,
    const unsigned int subspaceVectorsArrayLocalSize,
    const unsigned int N,
    const std::shared_ptr< const dftfe::ProcessGrid > & processGrid,
    const MPI_Comm & interBandGroupComm,
    const MPI_Comm & mpiComm,
    const dftfe::ScaLAPACKMatrix< T > & rotationMatPar,
    const dftParameters & dftParams,
    const bool rotationMatTranspose = false,
    const bool doCommAfterBandParal = true )
    +
    + +

    Computes X^{T}=Q*X^{T} inplace. X^{T} is the subspaceVectorsArray stored in the column major format (N x M). Q is rotationMatPar (N x N).

    +

    The subspace rotation inside this function is done in a blocked approach which avoids creation of full serial rotation matrix memory, and also avoids creation of another full subspaceVectorsArray memory. subspaceVectorsArrayLocalSize=N*M

    + +
    +
    + +

    ◆ subspaceRotationMixedPrec()

    + +
    +
    +
    +template<typename T , typename TLowPrec >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::internal::subspaceRotationMixedPrec (T * subspaceVectorsArray,
    const unsigned int subspaceVectorsArrayLocalSize,
    const unsigned int N,
    const std::shared_ptr< const dftfe::ProcessGrid > & processGrid,
    const MPI_Comm & interBandGroupComm,
    const MPI_Comm & mpiComm,
    const dftfe::ScaLAPACKMatrix< T > & rotationMatPar,
    const dftParameters & dftParams,
    const bool rotationMatTranspose = false,
    const bool doCommAfterBandParal = true )
    +
    + +

    Computes X^{T}=Q*X^{T} inplace. X^{T} is the subspaceVectorsArray stored in the column major format (N x M). Q is rotationMatPar (N x N).

    +

    The subspace rotation inside this function is done in a blocked approach which avoids creation of full serial rotation matrix memory, and also avoids creation of another full subspaceVectorsArray memory. subspaceVectorsArrayLocalSize=N*M

    + +
    +
    + +

    ◆ subspaceRotationSpectrumSplit()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::internal::subspaceRotationSpectrumSplit (const T * X,
    T * Y,
    const unsigned int subspaceVectorsArrayLocalSize,
    const unsigned int N,
    const std::shared_ptr< const dftfe::ProcessGrid > & processGrid,
    const unsigned int numberTopVectors,
    const MPI_Comm & interBandGroupComm,
    const MPI_Comm & mpiComm,
    const dftfe::ScaLAPACKMatrix< T > & QMat,
    const dftParameters & dftParams,
    const bool QMatTranspose = false )
    +
    + +

    Computes Y^{T}=Q*X^{T}.

    +

    X^{T} is stored in the column major format (N x M). Q is extracted from the supplied QMat as Q=QMat{1:numberTopVectors}. If QMat is in column major format set QMatTranspose=false, otherwise set to true if in row major format. The dimensions (in row major format) of QMat could be either a) (N x numberTopVectors) or b) (N x N) where numberTopVectors!=N. In this case it is assumed that Q is stored in the first numberTopVectors columns of QMat. The subspace rotation inside this function is done in a blocked approach which avoids creation of full serial rotation matrix memory, and also avoids creation of another full X memory. subspaceVectorsArrayLocalSize=N*M

    + +
    +
    + +

    ◆ subspaceRotationSpectrumSplitMixedPrec()

    + +
    +
    +
    +template<typename T , typename TLowPrec >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::internal::subspaceRotationSpectrumSplitMixedPrec (const T * X,
    T * Y,
    const unsigned int subspaceVectorsArrayLocalSize,
    const unsigned int N,
    const std::shared_ptr< const dftfe::ProcessGrid > & processGrid,
    const unsigned int numberTopVectors,
    const MPI_Comm & interBandGroupComm,
    const MPI_Comm & mpiComm,
    const dftfe::ScaLAPACKMatrix< T > & QMat,
    const dftParameters & dftParams,
    const bool QMatTranspose = false )
    +
    + +

    Computes Y^{T}=Q*X^{T}.

    +

    X^{T} is stored in the column major format (N x M). Q is extracted from the supplied QMat as Q=QMat{1:numberTopVectors}. If QMat is in column major format set QMatTranspose=false, otherwise set to true if in row major format. The dimensions (in row major format) of QMat could be either a) (N x numberTopVectors) or b) (N x N) where numberTopVectors!=N. In this case it is assumed that Q is stored in the first numberTopVectors columns of QMat. The subspace rotation inside this function is done in a blocked approach which avoids creation of full serial rotation matrix memory, and also avoids creation of another full X memory. subspaceVectorsArrayLocalSize=N*M

    + +
    +
    + +

    ◆ sumAcrossInterCommScaLAPACKMat()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + +
    void dftfe::linearAlgebraOperations::internal::sumAcrossInterCommScaLAPACKMat (const std::shared_ptr< const dftfe::ProcessGrid > & processGrid,
    dftfe::ScaLAPACKMatrix< T > & mat,
    const MPI_Comm & interComm )
    +
    + +

    Mpi all reduce of ScaLAPACKMat across a given inter communicator. Used for band parallelization.

    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1mesh_gen_utils.html b/namespacedftfe_1_1mesh_gen_utils.html new file mode 100644 index 000000000..fe97797bc --- /dev/null +++ b/namespacedftfe_1_1mesh_gen_utils.html @@ -0,0 +1,296 @@ + + + + + + + +DFT-FE: dftfe::meshGenUtils Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::meshGenUtils Namespace Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Functions

    void cross_product (std::vector< double > &a, std::vector< double > &b, std::vector< double > &crossProduct)
     
    void computePeriodicFaceNormals (std::vector< std::vector< double > > &latticeVectors, std::vector< std::vector< double > > &periodicFaceNormals)
     
    void computeOffsetVectors (std::vector< std::vector< double > > &latticeVectors, std::vector< dealii::Tensor< 1, 3 > > &offsetVectors)
     
    double getCosineAngle (dealii::Tensor< 1, 3 > &Vector1, std::vector< double > &Vector2)
     
    double getCosineAngle (std::vector< double > &Vector1, std::vector< double > &Vector2)
     
    void markPeriodicFacesNonOrthogonal (dealii::Triangulation< 3, 3 > &triangulation, std::vector< std::vector< double > > &latticeVectors, const MPI_Comm &mpiCommParent, const dftParameters &dftParams)
     
    +

    Function Documentation

    + +

    ◆ computeOffsetVectors()

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    void dftfe::meshGenUtils::computeOffsetVectors (std::vector< std::vector< double > > & latticeVectors,
    std::vector< dealii::Tensor< 1, 3 > > & offsetVectors )
    +
    +inline
    +
    + +
    +
    + +

    ◆ computePeriodicFaceNormals()

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    void dftfe::meshGenUtils::computePeriodicFaceNormals (std::vector< std::vector< double > > & latticeVectors,
    std::vector< std::vector< double > > & periodicFaceNormals )
    +
    +inline
    +
    + +
    +
    + +

    ◆ cross_product()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + +
    void dftfe::meshGenUtils::cross_product (std::vector< double > & a,
    std::vector< double > & b,
    std::vector< double > & crossProduct )
    +
    +inline
    +
    + +
    +
    + +

    ◆ getCosineAngle() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    double dftfe::meshGenUtils::getCosineAngle (dealii::Tensor< 1, 3 > & Vector1,
    std::vector< double > & Vector2 )
    +
    +inline
    +
    + +
    +
    + +

    ◆ getCosineAngle() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + +
    double dftfe::meshGenUtils::getCosineAngle (std::vector< double > & Vector1,
    std::vector< double > & Vector2 )
    +
    +inline
    +
    + +
    +
    + +

    ◆ markPeriodicFacesNonOrthogonal()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::meshGenUtils::markPeriodicFacesNonOrthogonal (dealii::Triangulation< 3, 3 > & triangulation,
    std::vector< std::vector< double > > & latticeVectors,
    const MPI_Comm & mpiCommParent,
    const dftParameters & dftParams )
    +
    +inline
    +
    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1pseudo_utils.html b/namespacedftfe_1_1pseudo_utils.html new file mode 100644 index 000000000..cca7bd0a0 --- /dev/null +++ b/namespacedftfe_1_1pseudo_utils.html @@ -0,0 +1,631 @@ + + + + + + + +DFT-FE: dftfe::pseudoUtils Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::pseudoUtils Namespace Reference
    +
    +
    + +

    wrapper to convert pseudopotential file from upf to dftfe format and returns the nonlinear core correction flag +More...

    + + + + + + +

    +Classes

    struct  Element
     
    class  PeriodicTable
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    std::vector< doubleXmlTagReaderMain (std::vector< std::string > tag_name, std::string file_path_in)
     
    void XmlTagReaderAttr (std::vector< std::string > tag_name, std::string file_path_in, std::vector< std::string > *attr_type, std::vector< std::string > *attr_value)
     
    int xmlNodeChildCount (std::vector< std::string > tag_name, std::string file_path_in)
     
    void xmltoSummaryFile (std::string file_path_in, std::string file_path_out)
     
    void xmltoProjectorFile (std::string file_path_in, std::string file_path_out)
     
    void xmltoLocalPotential (std::string file_path_in, std::string file_path_out)
     
    void xmltoDenomFile (std::string file_path_in, std::string file_path_out)
     
    void xmltoCoreDensityFile (std::string file_path_in, std::string file_path_out)
     
    void xmltoDensityFile (std::string file_path_in, std::string file_path_out)
     
    void xmltoOrbitalFile (std::string file_path_in, std::string file_path_out)
     
    int pseudoPotentialToDftfeParser (const std::string file_path_in, const std::string file_path_out, const int verbosity, unsigned int &nlccFlag, unsigned int &socFlag, unsigned int &pawFlag)
     
    std::vector< intconvert (const std::string &file, const std::string &dftfeScratchFolderName, const int verbosity, const unsigned natomTypes, const bool pseudoTestsFlag)
     
    void exchangeLocalList (const std::vector< unsigned int > &masterNodeIdList, std::vector< unsigned int > &globalMasterNodeIdList, unsigned int numMeshPartitions, const MPI_Comm &mpi_communicator)
     
    void exchangeNumberingMap (std::map< int, int > &localMap, unsigned int numMeshPartitions, const MPI_Comm &mpi_communicator)
     
    void getRadialFunctionVal (const double radialCoordinate, double &splineVal, const alglib::spline1dinterpolant *spline)
     
    void getSphericalHarmonicVal (const double theta, const double phi, const int l, const int m, double &sphericalHarmonicVal)
     
    void convertCartesianToSpherical (double *x, double &r, double &theta, double &phi)
     
    +

    Detailed Description

    +

    wrapper to convert pseudopotential file from upf to dftfe format and returns the nonlinear core correction flag

    +

    The functionality reads a file containing list of pseudopotential files in upf format and converts into into dftfe format -via- xml file format

    +
    Author
    Phani Motamarri
    +

    Function Documentation

    + +

    ◆ convert()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    std::vector< int > dftfe::pseudoUtils::convert (const std::string & file,
    const std::string & dftfeScratchFolderName,
    const int verbosity,
    const unsigned natomTypes,
    const bool pseudoTestsFlag )
    +
    + +
    +
    + +

    ◆ convertCartesianToSpherical()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pseudoUtils::convertCartesianToSpherical (double * x,
    double & r,
    double & theta,
    double & phi )
    +
    +inline
    +
    + +
    +
    + +

    ◆ exchangeLocalList()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pseudoUtils::exchangeLocalList (const std::vector< unsigned int > & masterNodeIdList,
    std::vector< unsigned int > & globalMasterNodeIdList,
    unsigned int numMeshPartitions,
    const MPI_Comm & mpi_communicator )
    +
    +inline
    +
    + +
    +
    + +

    ◆ exchangeNumberingMap()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + +
    void dftfe::pseudoUtils::exchangeNumberingMap (std::map< int, int > & localMap,
    unsigned int numMeshPartitions,
    const MPI_Comm & mpi_communicator )
    +
    +inline
    +
    + +
    +
    + +

    ◆ getRadialFunctionVal()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + +
    void dftfe::pseudoUtils::getRadialFunctionVal (const double radialCoordinate,
    double & splineVal,
    const alglib::spline1dinterpolant * spline )
    +
    +inline
    +
    + +
    +
    + +

    ◆ getSphericalHarmonicVal()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pseudoUtils::getSphericalHarmonicVal (const double theta,
    const double phi,
    const int l,
    const int m,
    double & sphericalHarmonicVal )
    +
    +inline
    +
    + +
    +
    + +

    ◆ pseudoPotentialToDftfeParser()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int dftfe::pseudoUtils::pseudoPotentialToDftfeParser (const std::string file_path_in,
    const std::string file_path_out,
    const int verbosity,
    unsigned int & nlccFlag,
    unsigned int & socFlag,
    unsigned int & pawFlag )
    +
    + +
    +
    + +

    ◆ xmlNodeChildCount()

    + +
    +
    + + + + + + + + + + + +
    int dftfe::pseudoUtils::xmlNodeChildCount (std::vector< std::string > tag_name,
    std::string file_path_in )
    +
    + +
    +
    + +

    ◆ XmlTagReaderAttr()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::pseudoUtils::XmlTagReaderAttr (std::vector< std::string > tag_name,
    std::string file_path_in,
    std::vector< std::string > * attr_type,
    std::vector< std::string > * attr_value )
    +
    + +
    +
    + +

    ◆ XmlTagReaderMain()

    + +
    +
    + + + + + + + + + + + +
    std::vector< double > dftfe::pseudoUtils::XmlTagReaderMain (std::vector< std::string > tag_name,
    std::string file_path_in )
    +
    + +
    +
    + +

    ◆ xmltoCoreDensityFile()

    + +
    +
    + + + + + + + + + + + +
    void dftfe::pseudoUtils::xmltoCoreDensityFile (std::string file_path_in,
    std::string file_path_out )
    +
    + +
    +
    + +

    ◆ xmltoDenomFile()

    + +
    +
    + + + + + + + + + + + +
    void dftfe::pseudoUtils::xmltoDenomFile (std::string file_path_in,
    std::string file_path_out )
    +
    + +
    +
    + +

    ◆ xmltoDensityFile()

    + +
    +
    + + + + + + + + + + + +
    void dftfe::pseudoUtils::xmltoDensityFile (std::string file_path_in,
    std::string file_path_out )
    +
    + +
    +
    + +

    ◆ xmltoLocalPotential()

    + +
    +
    + + + + + + + + + + + +
    void dftfe::pseudoUtils::xmltoLocalPotential (std::string file_path_in,
    std::string file_path_out )
    +
    + +
    +
    + +

    ◆ xmltoOrbitalFile()

    + +
    +
    + + + + + + + + + + + +
    void dftfe::pseudoUtils::xmltoOrbitalFile (std::string file_path_in,
    std::string file_path_out )
    +
    + +
    +
    + +

    ◆ xmltoProjectorFile()

    + +
    +
    + + + + + + + + + + + +
    void dftfe::pseudoUtils::xmltoProjectorFile (std::string file_path_in,
    std::string file_path_out )
    +
    + +
    +
    + +

    ◆ xmltoSummaryFile()

    + +
    +
    + + + + + + + + + + + +
    void dftfe::pseudoUtils::xmltoSummaryFile (std::string file_path_in,
    std::string file_path_out )
    +
    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1spherical_harmonic_utils.html b/namespacedftfe_1_1spherical_harmonic_utils.html new file mode 100644 index 000000000..a00f4ad39 --- /dev/null +++ b/namespacedftfe_1_1spherical_harmonic_utils.html @@ -0,0 +1,218 @@ + + + + + + + +DFT-FE: dftfe::sphericalHarmonicUtils Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::sphericalHarmonicUtils Namespace Reference
    +
    +
    + + + + + + + + +

    +Functions

    void getRadialFunctionVal (const double radialCoordinate, double &splineVal, const alglib::spline1dinterpolant *spline)
     
    void getSphericalHarmonicVal (const double theta, const double phi, const int l, const int m, double &sphericalHarmonicVal)
     
    void convertCartesianToSpherical (double *x, double &r, double &theta, double &phi)
     
    +

    Function Documentation

    + +

    ◆ convertCartesianToSpherical()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::sphericalHarmonicUtils::convertCartesianToSpherical (double * x,
    double & r,
    double & theta,
    double & phi )
    +
    +inline
    +
    + +
    +
    + +

    ◆ getRadialFunctionVal()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + +
    void dftfe::sphericalHarmonicUtils::getRadialFunctionVal (const double radialCoordinate,
    double & splineVal,
    const alglib::spline1dinterpolant * spline )
    +
    +inline
    +
    + +
    +
    + +

    ◆ getSphericalHarmonicVal()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::sphericalHarmonicUtils::getSphericalHarmonicVal (const double theta,
    const double phi,
    const int l,
    const int m,
    double & sphericalHarmonicVal )
    +
    +inline
    +
    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1types.html b/namespacedftfe_1_1types.html new file mode 100644 index 000000000..35cf4d66d --- /dev/null +++ b/namespacedftfe_1_1types.html @@ -0,0 +1,112 @@ + + + + + + + +DFT-FE: dftfe::types Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::types Namespace Reference
    +
    +
    + + + + +

    +Typedefs

    using blas_int = int
     
    +

    Typedef Documentation

    + +

    ◆ blas_int

    + +
    +
    +

    Integer type in BLAS.

    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1utils.html b/namespacedftfe_1_1utils.html new file mode 100644 index 000000000..83ace5e8a --- /dev/null +++ b/namespacedftfe_1_1utils.html @@ -0,0 +1,4483 @@ + + + + + + + +DFT-FE: dftfe::utils Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::utils Namespace Reference
    +
    +
    + + + + +

    +Namespaces

    namespace  mpi
     
    + + + + + + + + + + + + + + + +

    +Classes

    class  MemoryManager
     
    class  MemoryManager< ValueType, MemorySpace::HOST >
     
    class  MemoryStorage
     
    class  MemoryTransfer
     
    class  MemoryTransfer< MemorySpace::HOST, MemorySpace::HOST >
     
    class  MPICommunicatorP2PKernels
     
    class  OptimizedIndexSet
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    typedef cudaError_t deviceError_t
     
    typedef cudaStream_t deviceStream_t
     
    typedef cudaEvent_t deviceEvent_t
     
    typedef cuDoubleComplex deviceDoubleComplex
     
    typedef cuFloatComplex deviceFloatComplex
     
    typedef cublasHandle_t deviceBlasHandle_t
     
    typedef cublasOperation_t deviceBlasOperation_t
     
    typedef cublasStatus_t deviceBlasStatus_t
     
    typedef cublasMath_t deviceBlasMath_t
     
    typedef std::logic_error LogicError
     
    typedef std::invalid_argument InvalidArgument
     
    typedef std::domain_error DomainError
     
    typedef std::length_error LengthError
     
    typedef std::out_of_range OutOfRangeError
     
    typedef std::runtime_error RuntimeError
     
    typedef std::overflow_error OverflowError
     
    typedef std::underflow_error UnderflowError
     
    + + + +

    +Enumerations

    enum class  MemorySpace { HOST +, HOST_PINNED +, DEVICE + }
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    double realPart (const double x)
     
    float realPart (const float x)
     
    double realPart (const std::complex< double > x)
     
    float realPart (const std::complex< float > x)
     
    double imagPart (const double x)
     
    float imagPart (const float x)
     
    double imagPart (const std::complex< double > x)
     
    float imagPart (const std::complex< float > x)
     
    double complexConj (const double x)
     
    float complexConj (const float x)
     
    std::complex< doublecomplexConj (const std::complex< double > x)
     
    std::complex< floatcomplexConj (const std::complex< float > x)
     
    __forceinline__ __device__ cuDoubleComplex makeComplex (double realPart, double imagPart)
     
    __forceinline__ __device__ cuFloatComplex makeComplex (float realPart, float imagPart)
     
    __forceinline__ __device__ void copyValue (double *a, const double b)
     
    __forceinline__ __device__ void copyValue (float *a, const float b)
     
    __forceinline__ __device__ void copyValue (cuDoubleComplex *a, const cuDoubleComplex b)
     
    __forceinline__ __device__ void copyValue (cuFloatComplex *a, const cuFloatComplex b)
     
    __forceinline__ __device__ void copyValue (float *a, const double b)
     
    __forceinline__ __device__ void copyValue (double *a, const float b)
     
    __forceinline__ __device__ void copyValue (cuDoubleComplex *a, const cuFloatComplex b)
     
    __forceinline__ __device__ void copyValue (cuFloatComplex *a, const cuDoubleComplex b)
     
    __forceinline__ __device__ void copyValue (cuDoubleComplex *a, const double b)
     
    __forceinline__ __device__ void copyValue (cuFloatComplex *a, const float b)
     
    __forceinline__ __device__ void copyValue (cuDoubleComplex *a, const float b)
     
    __forceinline__ __device__ void copyValue (cuFloatComplex *a, const double b)
     
    __forceinline__ __device__ double realPartDevice (double a)
     
    __forceinline__ __device__ float realPartDevice (float a)
     
    __forceinline__ __device__ double realPartDevice (cuDoubleComplex a)
     
    __forceinline__ __device__ float realPartDevice (cuFloatComplex a)
     
    __forceinline__ __device__ double imagPartDevice (double a)
     
    __forceinline__ __device__ float imagPartDevice (float a)
     
    __forceinline__ __device__ double imagPartDevice (cuDoubleComplex a)
     
    __forceinline__ __device__ float imagPartDevice (cuFloatComplex a)
     
    __forceinline__ __device__ double abs (double a)
     
    __forceinline__ __device__ float abs (float a)
     
    __forceinline__ __device__ double abs (cuDoubleComplex a)
     
    __forceinline__ __device__ float abs (cuFloatComplex a)
     
    __forceinline__ __device__ unsigned int conj (unsigned int a)
     
    __forceinline__ __device__ unsigned long int conj (unsigned long int a)
     
    __forceinline__ __device__ int conj (int a)
     
    __forceinline__ __device__ float conj (float a)
     
    __forceinline__ __device__ double conj (double a)
     
    __forceinline__ __device__ cuDoubleComplex conj (cuDoubleComplex a)
     
    __forceinline__ __device__ cuFloatComplex conj (cuFloatComplex a)
     
    __forceinline__ __device__ unsigned int mult (unsigned int a, unsigned int b)
     
    __forceinline__ __device__ unsigned long int mult (unsigned long int a, unsigned long int b)
     
    __forceinline__ __device__ int mult (int a, int b)
     
    __forceinline__ __device__ double mult (double a, double b)
     
    __forceinline__ __device__ float mult (float a, float b)
     
    __forceinline__ __device__ double mult (float a, double b)
     
    __forceinline__ __device__ double mult (double a, float b)
     
    __forceinline__ __device__ cuDoubleComplex mult (cuDoubleComplex a, cuDoubleComplex b)
     
    __forceinline__ __device__ cuFloatComplex mult (cuFloatComplex a, cuFloatComplex b)
     
    __forceinline__ __device__ cuDoubleComplex mult (cuFloatComplex a, cuDoubleComplex b)
     
    __forceinline__ __device__ cuDoubleComplex mult (cuDoubleComplex a, cuFloatComplex b)
     
    __forceinline__ __device__ cuDoubleComplex mult (double a, cuDoubleComplex b)
     
    __forceinline__ __device__ cuDoubleComplex mult (cuDoubleComplex a, double b)
     
    __forceinline__ __device__ cuFloatComplex mult (float a, cuFloatComplex b)
     
    __forceinline__ __device__ cuFloatComplex mult (cuFloatComplex a, float b)
     
    __forceinline__ __device__ cuDoubleComplex mult (double a, cuFloatComplex b)
     
    __forceinline__ __device__ cuDoubleComplex mult (cuFloatComplex a, double b)
     
    __forceinline__ __device__ unsigned int add (unsigned int a, unsigned int b)
     
    __forceinline__ __device__ unsigned long int add (unsigned long int a, unsigned long int b)
     
    __forceinline__ __device__ int add (int a, int b)
     
    __forceinline__ __device__ double add (double a, double b)
     
    __forceinline__ __device__ float add (float a, float b)
     
    __forceinline__ __device__ cuDoubleComplex add (cuDoubleComplex a, cuDoubleComplex b)
     
    __forceinline__ __device__ cuFloatComplex add (cuFloatComplex a, cuFloatComplex b)
     
    __forceinline__ __device__ double add (double a, float b)
     
    __forceinline__ __device__ double add (float a, double b)
     
    __forceinline__ __device__ cuDoubleComplex add (cuDoubleComplex a, cuFloatComplex b)
     
    __forceinline__ __device__ cuDoubleComplex add (cuFloatComplex a, cuDoubleComplex b)
     
    __forceinline__ __device__ unsigned int sub (unsigned int a, unsigned int b)
     
    __forceinline__ __device__ unsigned long int sub (unsigned long int a, unsigned long int b)
     
    __forceinline__ __device__ int sub (int a, int b)
     
    __forceinline__ __device__ double sub (double a, double b)
     
    __forceinline__ __device__ float sub (float a, float b)
     
    __forceinline__ __device__ cuDoubleComplex sub (cuDoubleComplex a, cuDoubleComplex b)
     
    __forceinline__ __device__ cuFloatComplex sub (cuFloatComplex a, cuFloatComplex b)
     
    __forceinline__ __device__ unsigned int div (unsigned int a, unsigned int b)
     
    __forceinline__ __device__ unsigned long int div (unsigned long int a, unsigned long int b)
     
    __forceinline__ __device__ int div (int a, int b)
     
    __forceinline__ __device__ double div (double a, double b)
     
    __forceinline__ __device__ float div (float a, float b)
     
    __forceinline__ __device__ cuDoubleComplex div (cuDoubleComplex a, cuDoubleComplex b)
     
    __forceinline__ __device__ cuFloatComplex div (cuFloatComplex a, cuFloatComplex b)
     
    __forceinline__ __device__ cuDoubleComplex div (cuFloatComplex a, cuDoubleComplex b)
     
    __forceinline__ __device__ cuDoubleComplex div (cuDoubleComplex a, cuFloatComplex b)
     
    __forceinline__ __device__ cuDoubleComplex div (double a, cuDoubleComplex b)
     
    __forceinline__ __device__ cuDoubleComplex div (cuDoubleComplex a, double b)
     
    __forceinline__ __device__ cuFloatComplex div (float a, cuFloatComplex b)
     
    __forceinline__ __device__ cuFloatComplex div (cuFloatComplex a, float b)
     
    __forceinline__ __device__ cuDoubleComplex div (double a, cuFloatComplex b)
     
    __forceinline__ __device__ cuDoubleComplex div (cuFloatComplex a, double b)
     
    intmakeDataTypeDeviceCompatible (int *a)
     
    const intmakeDataTypeDeviceCompatible (const int *a)
     
    long intmakeDataTypeDeviceCompatible (long int *a)
     
    const long intmakeDataTypeDeviceCompatible (const long int *a)
     
    unsigned intmakeDataTypeDeviceCompatible (unsigned int *a)
     
    const unsigned intmakeDataTypeDeviceCompatible (const unsigned int *a)
     
    unsigned long intmakeDataTypeDeviceCompatible (unsigned long int *a)
     
    const unsigned long intmakeDataTypeDeviceCompatible (const unsigned long int *a)
     
    doublemakeDataTypeDeviceCompatible (double *a)
     
    const doublemakeDataTypeDeviceCompatible (const double *a)
     
    floatmakeDataTypeDeviceCompatible (float *a)
     
    const floatmakeDataTypeDeviceCompatible (const float *a)
     
    cuDoubleComplexmakeDataTypeDeviceCompatible (std::complex< double > *a)
     
    const cuDoubleComplexmakeDataTypeDeviceCompatible (const std::complex< double > *a)
     
    cuFloatComplexmakeDataTypeDeviceCompatible (std::complex< float > *a)
     
    const cuFloatComplexmakeDataTypeDeviceCompatible (const std::complex< float > *a)
     
    int makeDataTypeDeviceCompatible (int a)
     
    long int makeDataTypeDeviceCompatible (long int a)
     
    unsigned int makeDataTypeDeviceCompatible (unsigned int a)
     
    unsigned long int makeDataTypeDeviceCompatible (unsigned long int a)
     
    double makeDataTypeDeviceCompatible (double a)
     
    float makeDataTypeDeviceCompatible (float a)
     
    cuDoubleComplex makeDataTypeDeviceCompatible (std::complex< double > a)
     
    cuFloatComplex makeDataTypeDeviceCompatible (std::complex< float > a)
     
    __forceinline__ __device__ void copyValue (hipDoubleComplex *a, const hipDoubleComplex b)
     
    __forceinline__ __device__ void copyValue (hipFloatComplex *a, const hipFloatComplex b)
     
    __forceinline__ __device__ void copyValue (hipDoubleComplex *a, const hipFloatComplex b)
     
    __forceinline__ __device__ void copyValue (hipFloatComplex *a, const hipDoubleComplex b)
     
    __forceinline__ __device__ void copyValue (hipDoubleComplex *a, const double b)
     
    __forceinline__ __device__ void copyValue (hipFloatComplex *a, const float b)
     
    __forceinline__ __device__ void copyValue (hipDoubleComplex *a, const float b)
     
    __forceinline__ __device__ void copyValue (hipFloatComplex *a, const double b)
     
    __forceinline__ __device__ double realPartDevice (hipDoubleComplex a)
     
    __forceinline__ __device__ float realPartDevice (hipFloatComplex a)
     
    __forceinline__ __device__ double imagPartDevice (hipDoubleComplex a)
     
    __forceinline__ __device__ float imagPartDevice (hipFloatComplex a)
     
    __forceinline__ __device__ double abs (hipDoubleComplex a)
     
    __forceinline__ __device__ float abs (hipFloatComplex a)
     
    __forceinline__ __device__ hipDoubleComplex conj (hipDoubleComplex a)
     
    __forceinline__ __device__ hipFloatComplex conj (hipFloatComplex a)
     
    __forceinline__ __device__ hipDoubleComplex mult (hipDoubleComplex a, hipDoubleComplex b)
     
    __forceinline__ __device__ hipFloatComplex mult (hipFloatComplex a, hipFloatComplex b)
     
    __forceinline__ __device__ hipDoubleComplex mult (hipFloatComplex a, hipDoubleComplex b)
     
    __forceinline__ __device__ hipDoubleComplex mult (hipDoubleComplex a, hipFloatComplex b)
     
    __forceinline__ __device__ hipDoubleComplex mult (double a, hipDoubleComplex b)
     
    __forceinline__ __device__ hipDoubleComplex mult (hipDoubleComplex a, double b)
     
    __forceinline__ __device__ hipFloatComplex mult (float a, hipFloatComplex b)
     
    __forceinline__ __device__ hipFloatComplex mult (hipFloatComplex a, float b)
     
    __forceinline__ __device__ hipDoubleComplex mult (double a, hipFloatComplex b)
     
    __forceinline__ __device__ hipDoubleComplex mult (hipFloatComplex a, double b)
     
    __forceinline__ __device__ hipDoubleComplex add (hipDoubleComplex a, hipDoubleComplex b)
     
    __forceinline__ __device__ hipFloatComplex add (hipFloatComplex a, hipFloatComplex b)
     
    __forceinline__ __device__ hipDoubleComplex add (hipDoubleComplex a, hipFloatComplex b)
     
    __forceinline__ __device__ hipDoubleComplex add (hipFloatComplex a, hipDoubleComplex b)
     
    __forceinline__ __device__ hipDoubleComplex sub (hipDoubleComplex a, hipDoubleComplex b)
     
    __forceinline__ __device__ hipFloatComplex sub (hipFloatComplex a, hipFloatComplex b)
     
    __forceinline__ __device__ hipDoubleComplex div (hipDoubleComplex a, hipDoubleComplex b)
     
    __forceinline__ __device__ hipFloatComplex div (hipFloatComplex a, hipFloatComplex b)
     
    __forceinline__ __device__ hipDoubleComplex div (hipFloatComplex a, hipDoubleComplex b)
     
    __forceinline__ __device__ hipDoubleComplex div (hipDoubleComplex a, hipFloatComplex b)
     
    __forceinline__ __device__ hipDoubleComplex div (double a, hipDoubleComplex b)
     
    __forceinline__ __device__ hipDoubleComplex div (hipDoubleComplex a, double b)
     
    __forceinline__ __device__ hipFloatComplex div (float a, hipFloatComplex b)
     
    __forceinline__ __device__ hipFloatComplex div (hipFloatComplex a, float b)
     
    __forceinline__ __device__ hipDoubleComplex div (double a, hipFloatComplex b)
     
    __forceinline__ __device__ hipDoubleComplex div (hipFloatComplex a, double b)
     
    void throwException (bool condition, std::string msg="")
     
    template<class T >
    void throwException (bool condition, std::string msg="")
     
    template<typename ValueType , utils::MemorySpace memorySpaceDst>
    MemoryStorage< ValueType, memorySpaceDstmemoryStorageFromSTL (const std::vector< ValueType > &src)
     Create a MemoryStorage object from an input C++ STL vector.
     
    + + + + + + + + + + + + + + + + + + + +

    +Variables

    static const deviceError_t deviceSuccess = cudaSuccess
     
    static const cublasOperation_t DEVICEBLAS_OP_N = CUBLAS_OP_N
     
    static const cublasOperation_t DEVICEBLAS_OP_T = CUBLAS_OP_T
     
    static const cublasOperation_t DEVICEBLAS_OP_C = CUBLAS_OP_C
     
    static const cublasMath_t DEVICEBLAS_TF32_TENSOR_OP_MATH
     
    static const deviceError_t deviceSuccess = hipSuccess
     
    static const hipblasOperation_t DEVICEBLAS_OP_N = HIPBLAS_OP_N
     
    static const hipblasOperation_t DEVICEBLAS_OP_T = HIPBLAS_OP_T
     
    static const hipblasOperation_t DEVICEBLAS_OP_C = HIPBLAS_OP_C
     
    +

    Typedef Documentation

    + +

    ◆ deviceBlasHandle_t

    + + + +

    ◆ deviceBlasMath_t

    + + + +

    ◆ deviceBlasOperation_t

    + + + +

    ◆ deviceBlasStatus_t

    + + + +

    ◆ deviceDoubleComplex

    + + + +

    ◆ deviceError_t

    + + + +

    ◆ deviceEvent_t

    + + + +

    ◆ deviceFloatComplex

    + + + +

    ◆ deviceStream_t

    + + + +

    ◆ DomainError

    + +
    +
    + + + + +
    typedef std::domain_error dftfe::utils::DomainError
    +
    + +
    +
    + +

    ◆ InvalidArgument

    + +
    +
    + + + + +
    typedef std::invalid_argument dftfe::utils::InvalidArgument
    +
    + +
    +
    + +

    ◆ LengthError

    + +
    +
    + + + + +
    typedef std::length_error dftfe::utils::LengthError
    +
    + +
    +
    + +

    ◆ LogicError

    + +
    +
    + + + + +
    typedef std::logic_error dftfe::utils::LogicError
    +
    + +
    +
    + +

    ◆ OutOfRangeError

    + +
    +
    + + + + +
    typedef std::out_of_range dftfe::utils::OutOfRangeError
    +
    + +
    +
    + +

    ◆ OverflowError

    + +
    +
    + + + + +
    typedef std::overflow_error dftfe::utils::OverflowError
    +
    + +
    +
    + +

    ◆ RuntimeError

    + +
    +
    + + + + +
    typedef std::runtime_error dftfe::utils::RuntimeError
    +
    + +
    +
    + +

    ◆ UnderflowError

    + +
    +
    + + + + +
    typedef std::underflow_error dftfe::utils::UnderflowError
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ MemorySpace

    + +
    +
    + + + + + +
    + + + + +
    enum class dftfe::utils::MemorySpace
    +
    +strong
    +
    + + + + +
    Enumerator
    HOST 
    HOST_PINNED 
    DEVICE 
    + +
    +
    +

    Function Documentation

    + +

    ◆ abs() [1/6]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ double dftfe::utils::abs (cuDoubleComplex a)
    +
    + +
    +
    + +

    ◆ abs() [2/6]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ float dftfe::utils::abs (cuFloatComplex a)
    +
    + +
    +
    + +

    ◆ abs() [3/6]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ double dftfe::utils::abs (double a)
    +
    + +
    +
    + +

    ◆ abs() [4/6]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ float dftfe::utils::abs (float a)
    +
    + +
    +
    + +

    ◆ abs() [5/6]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ double dftfe::utils::abs (hipDoubleComplex a)
    +
    + +
    +
    + +

    ◆ abs() [6/6]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ float dftfe::utils::abs (hipFloatComplex a)
    +
    + +
    +
    + +

    ◆ add() [1/15]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuDoubleComplex dftfe::utils::add (cuDoubleComplex a,
    cuDoubleComplex b )
    +
    + +
    +
    + +

    ◆ add() [2/15]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuDoubleComplex dftfe::utils::add (cuDoubleComplex a,
    cuFloatComplex b )
    +
    + +
    +
    + +

    ◆ add() [3/15]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuDoubleComplex dftfe::utils::add (cuFloatComplex a,
    cuDoubleComplex b )
    +
    + +
    +
    + +

    ◆ add() [4/15]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuFloatComplex dftfe::utils::add (cuFloatComplex a,
    cuFloatComplex b )
    +
    + +
    +
    + +

    ◆ add() [5/15]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ double dftfe::utils::add (double a,
    double b )
    +
    + +
    +
    + +

    ◆ add() [6/15]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ double dftfe::utils::add (double a,
    float b )
    +
    + +
    +
    + +

    ◆ add() [7/15]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ double dftfe::utils::add (float a,
    double b )
    +
    + +
    +
    + +

    ◆ add() [8/15]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ float dftfe::utils::add (float a,
    float b )
    +
    + +
    +
    + +

    ◆ add() [9/15]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipDoubleComplex dftfe::utils::add (hipDoubleComplex a,
    hipDoubleComplex b )
    +
    + +
    +
    + +

    ◆ add() [10/15]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipDoubleComplex dftfe::utils::add (hipDoubleComplex a,
    hipFloatComplex b )
    +
    + +
    +
    + +

    ◆ add() [11/15]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipDoubleComplex dftfe::utils::add (hipFloatComplex a,
    hipDoubleComplex b )
    +
    + +
    +
    + +

    ◆ add() [12/15]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipFloatComplex dftfe::utils::add (hipFloatComplex a,
    hipFloatComplex b )
    +
    + +
    +
    + +

    ◆ add() [13/15]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ int dftfe::utils::add (int a,
    int b )
    +
    + +
    +
    + +

    ◆ add() [14/15]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ unsigned int dftfe::utils::add (unsigned int a,
    unsigned int b )
    +
    + +
    +
    + +

    ◆ add() [15/15]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ unsigned long int dftfe::utils::add (unsigned long int a,
    unsigned long int b )
    +
    + +
    +
    + +

    ◆ complexConj() [1/4]

    + +
    +
    + + + + + +
    + + + + + + + +
    double dftfe::utils::complexConj (const double x)
    +
    +inline
    +
    + +
    +
    + +

    ◆ complexConj() [2/4]

    + +
    +
    + + + + + +
    + + + + + + + +
    float dftfe::utils::complexConj (const float x)
    +
    +inline
    +
    + +
    +
    + +

    ◆ complexConj() [3/4]

    + +
    +
    + + + + + +
    + + + + + + + +
    std::complex< double > dftfe::utils::complexConj (const std::complex< double > x)
    +
    +inline
    +
    + +
    +
    + +

    ◆ complexConj() [4/4]

    + +
    +
    + + + + + +
    + + + + + + + +
    std::complex< float > dftfe::utils::complexConj (const std::complex< float > x)
    +
    +inline
    +
    + +
    +
    + +

    ◆ conj() [1/9]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ cuDoubleComplex dftfe::utils::conj (cuDoubleComplex a)
    +
    + +
    +
    + +

    ◆ conj() [2/9]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ cuFloatComplex dftfe::utils::conj (cuFloatComplex a)
    +
    + +
    +
    + +

    ◆ conj() [3/9]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ double dftfe::utils::conj (double a)
    +
    + +
    +
    + +

    ◆ conj() [4/9]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ float dftfe::utils::conj (float a)
    +
    + +
    +
    + +

    ◆ conj() [5/9]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ hipDoubleComplex dftfe::utils::conj (hipDoubleComplex a)
    +
    + +
    +
    + +

    ◆ conj() [6/9]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ hipFloatComplex dftfe::utils::conj (hipFloatComplex a)
    +
    + +
    +
    + +

    ◆ conj() [7/9]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ int dftfe::utils::conj (int a)
    +
    + +
    +
    + +

    ◆ conj() [8/9]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ unsigned int dftfe::utils::conj (unsigned int a)
    +
    + +
    +
    + +

    ◆ conj() [9/9]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ unsigned long int dftfe::utils::conj (unsigned long int a)
    +
    + +
    +
    + +

    ◆ copyValue() [1/20]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ void dftfe::utils::copyValue (cuDoubleComplex * a,
    const cuDoubleComplex b )
    +
    + +
    +
    + +

    ◆ copyValue() [2/20]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ void dftfe::utils::copyValue (cuDoubleComplex * a,
    const cuFloatComplex b )
    +
    + +
    +
    + +

    ◆ copyValue() [3/20]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ void dftfe::utils::copyValue (cuDoubleComplex * a,
    const double b )
    +
    + +
    +
    + +

    ◆ copyValue() [4/20]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ void dftfe::utils::copyValue (cuDoubleComplex * a,
    const float b )
    +
    + +
    +
    + +

    ◆ copyValue() [5/20]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ void dftfe::utils::copyValue (cuFloatComplex * a,
    const cuDoubleComplex b )
    +
    + +
    +
    + +

    ◆ copyValue() [6/20]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ void dftfe::utils::copyValue (cuFloatComplex * a,
    const cuFloatComplex b )
    +
    + +
    +
    + +

    ◆ copyValue() [7/20]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ void dftfe::utils::copyValue (cuFloatComplex * a,
    const double b )
    +
    + +
    +
    + +

    ◆ copyValue() [8/20]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ void dftfe::utils::copyValue (cuFloatComplex * a,
    const float b )
    +
    + +
    +
    + +

    ◆ copyValue() [9/20]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ void dftfe::utils::copyValue (double * a,
    const double b )
    +
    + +
    +
    + +

    ◆ copyValue() [10/20]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ void dftfe::utils::copyValue (double * a,
    const float b )
    +
    + +
    +
    + +

    ◆ copyValue() [11/20]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ void dftfe::utils::copyValue (float * a,
    const double b )
    +
    + +
    +
    + +

    ◆ copyValue() [12/20]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ void dftfe::utils::copyValue (float * a,
    const float b )
    +
    + +
    +
    + +

    ◆ copyValue() [13/20]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ void dftfe::utils::copyValue (hipDoubleComplex * a,
    const double b )
    +
    + +
    +
    + +

    ◆ copyValue() [14/20]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ void dftfe::utils::copyValue (hipDoubleComplex * a,
    const float b )
    +
    + +
    +
    + +

    ◆ copyValue() [15/20]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ void dftfe::utils::copyValue (hipDoubleComplex * a,
    const hipDoubleComplex b )
    +
    + +
    +
    + +

    ◆ copyValue() [16/20]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ void dftfe::utils::copyValue (hipDoubleComplex * a,
    const hipFloatComplex b )
    +
    + +
    +
    + +

    ◆ copyValue() [17/20]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ void dftfe::utils::copyValue (hipFloatComplex * a,
    const double b )
    +
    + +
    +
    + +

    ◆ copyValue() [18/20]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ void dftfe::utils::copyValue (hipFloatComplex * a,
    const float b )
    +
    + +
    +
    + +

    ◆ copyValue() [19/20]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ void dftfe::utils::copyValue (hipFloatComplex * a,
    const hipDoubleComplex b )
    +
    + +
    +
    + +

    ◆ copyValue() [20/20]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ void dftfe::utils::copyValue (hipFloatComplex * a,
    const hipFloatComplex b )
    +
    + +
    +
    + +

    ◆ div() [1/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuDoubleComplex dftfe::utils::div (cuDoubleComplex a,
    cuDoubleComplex b )
    +
    + +
    +
    + +

    ◆ div() [2/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuDoubleComplex dftfe::utils::div (cuDoubleComplex a,
    cuFloatComplex b )
    +
    + +
    +
    + +

    ◆ div() [3/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuDoubleComplex dftfe::utils::div (cuDoubleComplex a,
    double b )
    +
    + +
    +
    + +

    ◆ div() [4/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuDoubleComplex dftfe::utils::div (cuFloatComplex a,
    cuDoubleComplex b )
    +
    + +
    +
    + +

    ◆ div() [5/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuFloatComplex dftfe::utils::div (cuFloatComplex a,
    cuFloatComplex b )
    +
    + +
    +
    + +

    ◆ div() [6/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuDoubleComplex dftfe::utils::div (cuFloatComplex a,
    double b )
    +
    + +
    +
    + +

    ◆ div() [7/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuFloatComplex dftfe::utils::div (cuFloatComplex a,
    float b )
    +
    + +
    +
    + +

    ◆ div() [8/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuDoubleComplex dftfe::utils::div (double a,
    cuDoubleComplex b )
    +
    + +
    +
    + +

    ◆ div() [9/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuDoubleComplex dftfe::utils::div (double a,
    cuFloatComplex b )
    +
    + +
    +
    + +

    ◆ div() [10/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ double dftfe::utils::div (double a,
    double b )
    +
    + +
    +
    + +

    ◆ div() [11/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipDoubleComplex dftfe::utils::div (double a,
    hipDoubleComplex b )
    +
    + +
    +
    + +

    ◆ div() [12/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipDoubleComplex dftfe::utils::div (double a,
    hipFloatComplex b )
    +
    + +
    +
    + +

    ◆ div() [13/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuFloatComplex dftfe::utils::div (float a,
    cuFloatComplex b )
    +
    + +
    +
    + +

    ◆ div() [14/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ float dftfe::utils::div (float a,
    float b )
    +
    + +
    +
    + +

    ◆ div() [15/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipFloatComplex dftfe::utils::div (float a,
    hipFloatComplex b )
    +
    + +
    +
    + +

    ◆ div() [16/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipDoubleComplex dftfe::utils::div (hipDoubleComplex a,
    double b )
    +
    + +
    +
    + +

    ◆ div() [17/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipDoubleComplex dftfe::utils::div (hipDoubleComplex a,
    hipDoubleComplex b )
    +
    + +
    +
    + +

    ◆ div() [18/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipDoubleComplex dftfe::utils::div (hipDoubleComplex a,
    hipFloatComplex b )
    +
    + +
    +
    + +

    ◆ div() [19/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipDoubleComplex dftfe::utils::div (hipFloatComplex a,
    double b )
    +
    + +
    +
    + +

    ◆ div() [20/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipFloatComplex dftfe::utils::div (hipFloatComplex a,
    float b )
    +
    + +
    +
    + +

    ◆ div() [21/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipDoubleComplex dftfe::utils::div (hipFloatComplex a,
    hipDoubleComplex b )
    +
    + +
    +
    + +

    ◆ div() [22/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipFloatComplex dftfe::utils::div (hipFloatComplex a,
    hipFloatComplex b )
    +
    + +
    +
    + +

    ◆ div() [23/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ int dftfe::utils::div (int a,
    int b )
    +
    + +
    +
    + +

    ◆ div() [24/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ unsigned int dftfe::utils::div (unsigned int a,
    unsigned int b )
    +
    + +
    +
    + +

    ◆ div() [25/25]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ unsigned long int dftfe::utils::div (unsigned long int a,
    unsigned long int b )
    +
    + +
    +
    + +

    ◆ imagPart() [1/4]

    + +
    +
    + + + + + +
    + + + + + + + +
    double dftfe::utils::imagPart (const double x)
    +
    +inline
    +
    + +
    +
    + +

    ◆ imagPart() [2/4]

    + +
    +
    + + + + + +
    + + + + + + + +
    float dftfe::utils::imagPart (const float x)
    +
    +inline
    +
    + +
    +
    + +

    ◆ imagPart() [3/4]

    + +
    +
    + + + + + +
    + + + + + + + +
    double dftfe::utils::imagPart (const std::complex< double > x)
    +
    +inline
    +
    + +
    +
    + +

    ◆ imagPart() [4/4]

    + +
    +
    + + + + + +
    + + + + + + + +
    float dftfe::utils::imagPart (const std::complex< float > x)
    +
    +inline
    +
    + +
    +
    + +

    ◆ imagPartDevice() [1/6]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ double dftfe::utils::imagPartDevice (cuDoubleComplex a)
    +
    + +
    +
    + +

    ◆ imagPartDevice() [2/6]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ float dftfe::utils::imagPartDevice (cuFloatComplex a)
    +
    + +
    +
    + +

    ◆ imagPartDevice() [3/6]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ double dftfe::utils::imagPartDevice (double a)
    +
    + +
    +
    + +

    ◆ imagPartDevice() [4/6]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ float dftfe::utils::imagPartDevice (float a)
    +
    + +
    +
    + +

    ◆ imagPartDevice() [5/6]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ double dftfe::utils::imagPartDevice (hipDoubleComplex a)
    +
    + +
    +
    + +

    ◆ imagPartDevice() [6/6]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ float dftfe::utils::imagPartDevice (hipFloatComplex a)
    +
    + +
    +
    + +

    ◆ makeComplex() [1/2]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipDoubleComplex dftfe::utils::makeComplex (double realPart,
    double imagPart )
    +
    + +
    +
    + +

    ◆ makeComplex() [2/2]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipFloatComplex dftfe::utils::makeComplex (float realPart,
    float imagPart )
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [1/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    const double * dftfe::utils::makeDataTypeDeviceCompatible (const double * a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [2/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    const float * dftfe::utils::makeDataTypeDeviceCompatible (const float * a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [3/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    const int * dftfe::utils::makeDataTypeDeviceCompatible (const int * a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [4/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    const long int * dftfe::utils::makeDataTypeDeviceCompatible (const long int * a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [5/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    const hipDoubleComplex * dftfe::utils::makeDataTypeDeviceCompatible (const std::complex< double > * a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [6/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    const hipFloatComplex * dftfe::utils::makeDataTypeDeviceCompatible (const std::complex< float > * a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [7/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    const unsigned int * dftfe::utils::makeDataTypeDeviceCompatible (const unsigned int * a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [8/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    const unsigned long int * dftfe::utils::makeDataTypeDeviceCompatible (const unsigned long int * a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [9/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    double * dftfe::utils::makeDataTypeDeviceCompatible (double * a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [10/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    double dftfe::utils::makeDataTypeDeviceCompatible (double a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [11/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    float * dftfe::utils::makeDataTypeDeviceCompatible (float * a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [12/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    float dftfe::utils::makeDataTypeDeviceCompatible (float a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [13/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    int * dftfe::utils::makeDataTypeDeviceCompatible (int * a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [14/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    int dftfe::utils::makeDataTypeDeviceCompatible (int a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [15/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    long int * dftfe::utils::makeDataTypeDeviceCompatible (long int * a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [16/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    long int dftfe::utils::makeDataTypeDeviceCompatible (long int a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [17/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    hipDoubleComplex * dftfe::utils::makeDataTypeDeviceCompatible (std::complex< double > * a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [18/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    hipDoubleComplex dftfe::utils::makeDataTypeDeviceCompatible (std::complex< double > a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [19/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    hipFloatComplex * dftfe::utils::makeDataTypeDeviceCompatible (std::complex< float > * a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [20/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    hipFloatComplex dftfe::utils::makeDataTypeDeviceCompatible (std::complex< float > a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [21/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    unsigned int * dftfe::utils::makeDataTypeDeviceCompatible (unsigned int * a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [22/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    unsigned int dftfe::utils::makeDataTypeDeviceCompatible (unsigned int a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [23/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    unsigned long int * dftfe::utils::makeDataTypeDeviceCompatible (unsigned long int * a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ makeDataTypeDeviceCompatible() [24/24]

    + +
    +
    + + + + + +
    + + + + + + + +
    unsigned long int dftfe::utils::makeDataTypeDeviceCompatible (unsigned long int a)
    +
    +inline
    +
    + +
    +
    + +

    ◆ memoryStorageFromSTL()

    + +
    +
    +
    +template<typename ValueType , utils::MemorySpace memorySpaceDst>
    + + + + + + + +
    MemoryStorage< ValueType, memorySpaceDst > dftfe::utils::memoryStorageFromSTL (const std::vector< ValueType > & src)
    +
    + +

    Create a MemoryStorage object from an input C++ STL vector.

    +
    Parameters
    + + +
    [in]srcInput C++ STL vector from which the MemoryStorage object is to be created
    +
    +
    +
    Returns
    A MemoryStorage object containing the data in the input C++ STL vector
    +
    Template Parameters
    + + + +
    ValueTypeDatatype of the underlying data in MemoryStorage as well as C++ STL vector (e.g., int, double, float, complex<double>, etc)
    memorySpaceDstMemorySpace (e.g. HOST, DEVICE, HOST_PINNED, etc) where the output MemoryStorage object should reside
    +
    +
    + +
    +
    + +

    ◆ mult() [1/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuDoubleComplex dftfe::utils::mult (cuDoubleComplex a,
    cuDoubleComplex b )
    +
    + +
    +
    + +

    ◆ mult() [2/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuDoubleComplex dftfe::utils::mult (cuDoubleComplex a,
    cuFloatComplex b )
    +
    + +
    +
    + +

    ◆ mult() [3/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuDoubleComplex dftfe::utils::mult (cuDoubleComplex a,
    double b )
    +
    + +
    +
    + +

    ◆ mult() [4/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuDoubleComplex dftfe::utils::mult (cuFloatComplex a,
    cuDoubleComplex b )
    +
    + +
    +
    + +

    ◆ mult() [5/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuFloatComplex dftfe::utils::mult (cuFloatComplex a,
    cuFloatComplex b )
    +
    + +
    +
    + +

    ◆ mult() [6/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuDoubleComplex dftfe::utils::mult (cuFloatComplex a,
    double b )
    +
    + +
    +
    + +

    ◆ mult() [7/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuFloatComplex dftfe::utils::mult (cuFloatComplex a,
    float b )
    +
    + +
    +
    + +

    ◆ mult() [8/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuDoubleComplex dftfe::utils::mult (double a,
    cuDoubleComplex b )
    +
    + +
    +
    + +

    ◆ mult() [9/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuDoubleComplex dftfe::utils::mult (double a,
    cuFloatComplex b )
    +
    + +
    +
    + +

    ◆ mult() [10/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ double dftfe::utils::mult (double a,
    double b )
    +
    + +
    +
    + +

    ◆ mult() [11/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ double dftfe::utils::mult (double a,
    float b )
    +
    + +
    +
    + +

    ◆ mult() [12/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipDoubleComplex dftfe::utils::mult (double a,
    hipDoubleComplex b )
    +
    + +
    +
    + +

    ◆ mult() [13/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipDoubleComplex dftfe::utils::mult (double a,
    hipFloatComplex b )
    +
    + +
    +
    + +

    ◆ mult() [14/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuFloatComplex dftfe::utils::mult (float a,
    cuFloatComplex b )
    +
    + +
    +
    + +

    ◆ mult() [15/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ double dftfe::utils::mult (float a,
    double b )
    +
    + +
    +
    + +

    ◆ mult() [16/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ float dftfe::utils::mult (float a,
    float b )
    +
    + +
    +
    + +

    ◆ mult() [17/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipFloatComplex dftfe::utils::mult (float a,
    hipFloatComplex b )
    +
    + +
    +
    + +

    ◆ mult() [18/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipDoubleComplex dftfe::utils::mult (hipDoubleComplex a,
    double b )
    +
    + +
    +
    + +

    ◆ mult() [19/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipDoubleComplex dftfe::utils::mult (hipDoubleComplex a,
    hipDoubleComplex b )
    +
    + +
    +
    + +

    ◆ mult() [20/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipDoubleComplex dftfe::utils::mult (hipDoubleComplex a,
    hipFloatComplex b )
    +
    + +
    +
    + +

    ◆ mult() [21/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipDoubleComplex dftfe::utils::mult (hipFloatComplex a,
    double b )
    +
    + +
    +
    + +

    ◆ mult() [22/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipFloatComplex dftfe::utils::mult (hipFloatComplex a,
    float b )
    +
    + +
    +
    + +

    ◆ mult() [23/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipDoubleComplex dftfe::utils::mult (hipFloatComplex a,
    hipDoubleComplex b )
    +
    + +
    +
    + +

    ◆ mult() [24/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipFloatComplex dftfe::utils::mult (hipFloatComplex a,
    hipFloatComplex b )
    +
    + +
    +
    + +

    ◆ mult() [25/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ int dftfe::utils::mult (int a,
    int b )
    +
    + +
    +
    + +

    ◆ mult() [26/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ unsigned int dftfe::utils::mult (unsigned int a,
    unsigned int b )
    +
    + +
    +
    + +

    ◆ mult() [27/27]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ unsigned long int dftfe::utils::mult (unsigned long int a,
    unsigned long int b )
    +
    + +
    +
    + +

    ◆ realPart() [1/4]

    + +
    +
    + + + + + +
    + + + + + + + +
    double dftfe::utils::realPart (const double x)
    +
    +inline
    +
    + +
    +
    + +

    ◆ realPart() [2/4]

    + +
    +
    + + + + + +
    + + + + + + + +
    float dftfe::utils::realPart (const float x)
    +
    +inline
    +
    + +
    +
    + +

    ◆ realPart() [3/4]

    + +
    +
    + + + + + +
    + + + + + + + +
    double dftfe::utils::realPart (const std::complex< double > x)
    +
    +inline
    +
    + +
    +
    + +

    ◆ realPart() [4/4]

    + +
    +
    + + + + + +
    + + + + + + + +
    float dftfe::utils::realPart (const std::complex< float > x)
    +
    +inline
    +
    + +
    +
    + +

    ◆ realPartDevice() [1/6]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ double dftfe::utils::realPartDevice (cuDoubleComplex a)
    +
    + +
    +
    + +

    ◆ realPartDevice() [2/6]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ float dftfe::utils::realPartDevice (cuFloatComplex a)
    +
    + +
    +
    + +

    ◆ realPartDevice() [3/6]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ double dftfe::utils::realPartDevice (double a)
    +
    + +
    +
    + +

    ◆ realPartDevice() [4/6]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ float dftfe::utils::realPartDevice (float a)
    +
    + +
    +
    + +

    ◆ realPartDevice() [5/6]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ double dftfe::utils::realPartDevice (hipDoubleComplex a)
    +
    + +
    +
    + +

    ◆ realPartDevice() [6/6]

    + +
    +
    + + + + + + + +
    __forceinline__ __device__ float dftfe::utils::realPartDevice (hipFloatComplex a)
    +
    + +
    +
    + +

    ◆ sub() [1/9]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuDoubleComplex dftfe::utils::sub (cuDoubleComplex a,
    cuDoubleComplex b )
    +
    + +
    +
    + +

    ◆ sub() [2/9]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ cuFloatComplex dftfe::utils::sub (cuFloatComplex a,
    cuFloatComplex b )
    +
    + +
    +
    + +

    ◆ sub() [3/9]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ double dftfe::utils::sub (double a,
    double b )
    +
    + +
    +
    + +

    ◆ sub() [4/9]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ float dftfe::utils::sub (float a,
    float b )
    +
    + +
    +
    + +

    ◆ sub() [5/9]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipDoubleComplex dftfe::utils::sub (hipDoubleComplex a,
    hipDoubleComplex b )
    +
    + +
    +
    + +

    ◆ sub() [6/9]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ hipFloatComplex dftfe::utils::sub (hipFloatComplex a,
    hipFloatComplex b )
    +
    + +
    +
    + +

    ◆ sub() [7/9]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ int dftfe::utils::sub (int a,
    int b )
    +
    + +
    +
    + +

    ◆ sub() [8/9]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ unsigned int dftfe::utils::sub (unsigned int a,
    unsigned int b )
    +
    + +
    +
    + +

    ◆ sub() [9/9]

    + +
    +
    + + + + + + + + + + + +
    __forceinline__ __device__ unsigned long int dftfe::utils::sub (unsigned long int a,
    unsigned long int b )
    +
    + +
    +
    + +

    ◆ throwException() [1/2]

    + +
    +
    + + + + + + + + + + + +
    void dftfe::utils::throwException (bool condition,
    std::string msg = "" )
    +
    + +
    +
    + +

    ◆ throwException() [2/2]

    + +
    +
    +
    +template<class T >
    + + + + + + + + + + + +
    void dftfe::utils::throwException (bool condition,
    std::string msg = "" )
    +
    + +
    +
    +

    Variable Documentation

    + +

    ◆ DEVICEBLAS_OP_C [1/2]

    + +
    +
    + + + + + +
    + + + + +
    const cublasOperation_t dftfe::utils::DEVICEBLAS_OP_C = CUBLAS_OP_C
    +
    +static
    +
    + +
    +
    + +

    ◆ DEVICEBLAS_OP_C [2/2]

    + +
    +
    + + + + + +
    + + + + +
    const hipblasOperation_t dftfe::utils::DEVICEBLAS_OP_C = HIPBLAS_OP_C
    +
    +static
    +
    + +
    +
    + +

    ◆ DEVICEBLAS_OP_N [1/2]

    + +
    +
    + + + + + +
    + + + + +
    const cublasOperation_t dftfe::utils::DEVICEBLAS_OP_N = CUBLAS_OP_N
    +
    +static
    +
    + +
    +
    + +

    ◆ DEVICEBLAS_OP_N [2/2]

    + +
    +
    + + + + + +
    + + + + +
    const hipblasOperation_t dftfe::utils::DEVICEBLAS_OP_N = HIPBLAS_OP_N
    +
    +static
    +
    + +
    +
    + +

    ◆ DEVICEBLAS_OP_T [1/2]

    + +
    +
    + + + + + +
    + + + + +
    const cublasOperation_t dftfe::utils::DEVICEBLAS_OP_T = CUBLAS_OP_T
    +
    +static
    +
    + +
    +
    + +

    ◆ DEVICEBLAS_OP_T [2/2]

    + +
    +
    + + + + + +
    + + + + +
    const hipblasOperation_t dftfe::utils::DEVICEBLAS_OP_T = HIPBLAS_OP_T
    +
    +static
    +
    + +
    +
    + +

    ◆ DEVICEBLAS_TF32_TENSOR_OP_MATH

    + +
    +
    + + + + + +
    + + + + +
    const cublasMath_t dftfe::utils::DEVICEBLAS_TF32_TENSOR_OP_MATH
    +
    +static
    +
    +Initial value:
    =
    +
    CUBLAS_TF32_TENSOR_OP_MATH
    +
    +
    +
    + +

    ◆ deviceSuccess [1/2]

    + +
    +
    + + + + + +
    + + + + +
    const deviceError_t dftfe::utils::deviceSuccess = cudaSuccess
    +
    +static
    +
    + +
    +
    + +

    ◆ deviceSuccess [2/2]

    + +
    +
    + + + + + +
    + + + + +
    const deviceError_t dftfe::utils::deviceSuccess = hipSuccess
    +
    +static
    +
    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1utils_1_1mpi.html b/namespacedftfe_1_1utils_1_1mpi.html new file mode 100644 index 000000000..f5d7641a2 --- /dev/null +++ b/namespacedftfe_1_1utils_1_1mpi.html @@ -0,0 +1,215 @@ + + + + + + + +DFT-FE: dftfe::utils::mpi Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::utils::mpi Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + +

    +Classes

    class  MPICommunicatorP2P
     
    class  MPIPatternP2P
     A class template to store the communication pattern (i.e., which entries/nodes to receive from which processor and which entries/nodes to send to which processor). More...
     
    class  MPIRequestersBase
     
    class  MPIRequestersNBX
     
    struct  singlePrecType
     
    struct  singlePrecType< double >
     
    struct  singlePrecType< std::complex< double > >
     
    + + + + + + + +

    +Enumerations

    enum class  communicationProtocol { mpiHost +, mpiDevice +, nccl + }
     
    enum class  communicationPrecision { single +, full + }
     
    enum class  MPITags : std::uint16_t {
    +  DUMMY_MPI_TAG = 100 +, MPI_REQUESTERS_NBX_TAG +, MPI_P2P_PATTERN_TAG +, MPI_P2P_COMMUNICATOR_SCATTER_TAG +,
    +  MPI_P2P_COMMUNICATOR_GATHER_TAG = MPI_P2P_COMMUNICATOR_SCATTER_TAG + 200 +
    + }
     
    +

    Enumeration Type Documentation

    + +

    ◆ communicationPrecision

    + +
    +
    + + + + + +
    + + + + +
    enum class dftfe::utils::mpi::communicationPrecision
    +
    +strong
    +
    + + + +
    Enumerator
    single 
    full 
    + +
    +
    + +

    ◆ communicationProtocol

    + +
    +
    + + + + + +
    + + + + +
    enum class dftfe::utils::mpi::communicationProtocol
    +
    +strong
    +
    + + + + +
    Enumerator
    mpiHost 
    mpiDevice 
    nccl 
    + +
    +
    + +

    ◆ MPITags

    + +
    +
    + + + + + +
    + + + + +
    enum class dftfe::utils::mpi::MPITags : std::uint16_t
    +
    +strong
    +
    + + + + + + +
    Enumerator
    DUMMY_MPI_TAG 
    MPI_REQUESTERS_NBX_TAG 
    MPI_P2P_PATTERN_TAG 
    MPI_P2P_COMMUNICATOR_SCATTER_TAG 
    MPI_P2P_COMMUNICATOR_GATHER_TAG 
    + +
    +
    +
    + + + + diff --git a/namespacedftfe_1_1vector_tools.html b/namespacedftfe_1_1vector_tools.html new file mode 100644 index 000000000..fb42b9c4d --- /dev/null +++ b/namespacedftfe_1_1vector_tools.html @@ -0,0 +1,675 @@ + + + + + + + +DFT-FE: dftfe::vectorTools Namespace Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::vectorTools Namespace Reference
    +
    +
    + +

    Contains generic utils functions related to custom partitioned flattened dealii vector. +More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void createParallelConstraintMatrixFromSerial (const dealii::Triangulation< 3, 3 > &serTria, const dealii::DoFHandler< 3 > &dofHandlerPar, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const std::vector< std::vector< double > > &domainBoundingVectors, dealii::AffineConstraints< double > &periodicHangingConstraints, dealii::AffineConstraints< double > &onlyHangingConstraints, const int verbosity, const bool periodicX, const bool periodicY, const bool periodicZ)
     Create constraint matrix using serial mesh. Temporary fix for a bug (Issue #7053) in deal.ii until it is resolved.
     
    template<typename T >
    void createDealiiVector (const std::shared_ptr< const dealii::Utilities::MPI::Partitioner > &partitioner, const unsigned int blockSize, distributedCPUVec< T > &flattenedArray)
     Creates a custom partitioned flattened dealii vector. stores multiple components asociated with a node sequentially.
     
    void computeCellLocalIndexSetMap (const std::shared_ptr< const utils::mpi::MPIPatternP2P< dftfe::utils::MemorySpace::HOST > > &partitioner, const dealii::MatrixFree< 3, double > &matrix_free_data, const unsigned int mfDofHandlerIndex, const unsigned int blockSize, std::vector< std::vector< dealii::types::global_dof_index > > &flattenedArrayMacroCellLocalProcIndexId, std::vector< std::vector< dealii::types::global_dof_index > > &flattenedArrayCellLocalProcIndexId)
     Creates a cell local index set map for flattened array.
     
    void computeCellLocalIndexSetMap (const std::shared_ptr< const utils::mpi::MPIPatternP2P< dftfe::utils::MemorySpace::HOST > > &partitioner, const dealii::MatrixFree< 3, double > &matrix_free_data, const unsigned int mfDofHandlerIndex, const unsigned int blockSize, std::vector< dealii::types::global_dof_index > &flattenedArrayMacroCellLocalProcIndexId, std::vector< unsigned int > &normalCellIdToMacroCellIdMap, std::vector< unsigned int > &macroCellIdToNormalCellIdMap, std::vector< dealii::types::global_dof_index > &flattenedArrayCellLocalProcIndexId)
     Creates a cell local index set map for flattened array.
     
    void computeCellLocalIndexSetMap (const std::shared_ptr< const utils::mpi::MPIPatternP2P< dftfe::utils::MemorySpace::HOST > > &partitioner, const dealii::MatrixFree< 3, double > &matrix_free_data, const unsigned int mfDofHandlerIndex, const unsigned int blockSize, std::vector< dealii::types::global_dof_index > &flattenedArrayCellLocalProcIndexId)
     Creates a cell local index set map for flattened array.
     
    void copyFlattenedSTLVecToSingleCompVec (const double *flattenedArray, const unsigned int totalNumberComponents, const unsigned int localVectorSize, const std::pair< unsigned int, unsigned int > componentIndexRange, std::vector< distributedCPUVec< double > > &componentVectors)
     Copies a single field component from a flattenedArray STL vector containing multiple component fields to a single field parallel distributed vector.
     
    void copyFlattenedDealiiVecToSingleCompVec (const distributedCPUVec< double > &flattenedArray, const unsigned int totalNumberComponents, const std::pair< unsigned int, unsigned int > componentIndexRange, std::vector< distributedCPUVec< double > > &componentVectors, const bool isFlattenedDealiiGhostValuesUpdated=false)
     Copies a single field component from a flattenedArray parallel distributed vector containing multiple component fields to a single field parallel distributed vector.
     
    void copySingleCompVecToFlattenedDealiiVec (distributedCPUVec< double > &flattenedArray, const unsigned int totalNumberComponents, const std::pair< unsigned int, unsigned int > componentIndexRange, const std::vector< distributedCPUVec< double > > &componentVectors)
     Copies to a flattenedArray parallel distributed vector containing multiple component fields from a single field parallel distributed vector.
     
    void copySingleCompVecToFlattenedSTLVec (std::vector< double > &flattenedArray, const unsigned int totalNumberComponents, const std::pair< unsigned int, unsigned int > componentIndexRange, const std::vector< distributedCPUVec< double > > &componentVectors)
     Copies to a flattenedArray stl vector containing multiple component fields from a single field parallel distributed vector.
     
    std::pair< dealii::Point< 3 >, dealii::Point< 3 > > createBoundingBoxTriaLocallyOwned (const dealii::DoFHandler< 3 > &dofHandler)
     
    void classifyInteriorSurfaceNodesInCell (const dealii::MatrixFree< 3, double > &matrix_free_data, const unsigned int mfDofHandlerIndex, std::vector< unsigned int > &nodesPerCellClassificationMap)
     
    void classifyInteriorSurfaceNodesInGlobalArray (const dealii::MatrixFree< 3, double > &matrix_free_data, const unsigned int mfDofHandlerIndex, const dealii::AffineConstraints< double > &constraintMatrix, std::vector< unsigned int > &nodesPerCellClassificationMap, std::vector< unsigned int > &globalArrayClassificationMap)
     
    +

    Detailed Description

    +

    Contains generic utils functions related to custom partitioned flattened dealii vector.

    +
    Author
    Phani Motamarri, Sambit Das
    +

    Function Documentation

    + +

    ◆ classifyInteriorSurfaceNodesInCell()

    + +
    +
    + + + + + + + + + + + + + + + + +
    void dftfe::vectorTools::classifyInteriorSurfaceNodesInCell (const dealii::MatrixFree< 3, double > & matrix_free_data,
    const unsigned int mfDofHandlerIndex,
    std::vector< unsigned int > & nodesPerCellClassificationMap )
    +
    + +
    +
    + +

    ◆ classifyInteriorSurfaceNodesInGlobalArray()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::vectorTools::classifyInteriorSurfaceNodesInGlobalArray (const dealii::MatrixFree< 3, double > & matrix_free_data,
    const unsigned int mfDofHandlerIndex,
    const dealii::AffineConstraints< double > & constraintMatrix,
    std::vector< unsigned int > & nodesPerCellClassificationMap,
    std::vector< unsigned int > & globalArrayClassificationMap )
    +
    + +
    +
    + +

    ◆ computeCellLocalIndexSetMap() [1/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::vectorTools::computeCellLocalIndexSetMap (const std::shared_ptr< const utils::mpi::MPIPatternP2P< dftfe::utils::MemorySpace::HOST > > & partitioner,
    const dealii::MatrixFree< 3, double > & matrix_free_data,
    const unsigned int mfDofHandlerIndex,
    const unsigned int blockSize,
    std::vector< dealii::types::global_dof_index > & flattenedArrayCellLocalProcIndexId )
    +
    + +

    Creates a cell local index set map for flattened array.

    +
    Parameters
    + + + + +
    partitionerassociated with the flattened array
    matrix_free_dataobject pointer associated with the matrix free data structure
    blockSizenumber of components associated with each node
    +
    +
    +
    Returns
    flattenedArrayMacroCellLocalProcIndexId macrocell's subcell local proc index map
    +
    +flattenedArrayCellLocalProcIndexId cell local proc index map
    + +
    +
    + +

    ◆ computeCellLocalIndexSetMap() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::vectorTools::computeCellLocalIndexSetMap (const std::shared_ptr< const utils::mpi::MPIPatternP2P< dftfe::utils::MemorySpace::HOST > > & partitioner,
    const dealii::MatrixFree< 3, double > & matrix_free_data,
    const unsigned int mfDofHandlerIndex,
    const unsigned int blockSize,
    std::vector< dealii::types::global_dof_index > & flattenedArrayMacroCellLocalProcIndexId,
    std::vector< unsigned int > & normalCellIdToMacroCellIdMap,
    std::vector< unsigned int > & macroCellIdToNormalCellIdMap,
    std::vector< dealii::types::global_dof_index > & flattenedArrayCellLocalProcIndexId )
    +
    + +

    Creates a cell local index set map for flattened array.

    +
    Parameters
    + + + + +
    partitionerassociated with the flattened array
    matrix_free_dataobject pointer associated with the matrix free data structure
    blockSizenumber of components associated with each node
    +
    +
    +
    Returns
    flattenedArrayMacroCellLocalProcIndexId macrocell's subcell local proc index map
    +
    +flattenedArrayCellLocalProcIndexId cell local proc index map
    + +
    +
    + +

    ◆ computeCellLocalIndexSetMap() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::vectorTools::computeCellLocalIndexSetMap (const std::shared_ptr< const utils::mpi::MPIPatternP2P< dftfe::utils::MemorySpace::HOST > > & partitioner,
    const dealii::MatrixFree< 3, double > & matrix_free_data,
    const unsigned int mfDofHandlerIndex,
    const unsigned int blockSize,
    std::vector< std::vector< dealii::types::global_dof_index > > & flattenedArrayMacroCellLocalProcIndexId,
    std::vector< std::vector< dealii::types::global_dof_index > > & flattenedArrayCellLocalProcIndexId )
    +
    + +

    Creates a cell local index set map for flattened array.

    +
    Parameters
    + + + + +
    partitionerassociated with the flattened array
    matrix_free_dataobject pointer associated with the matrix free data structure
    blockSizenumber of components associated with each node
    +
    +
    +
    Returns
    flattenedArrayMacroCellLocalProcIndexId macrocell's subcell local proc index map
    +
    +flattenedArrayCellLocalProcIndexId cell local proc index map
    + +
    +
    + +

    ◆ copyFlattenedDealiiVecToSingleCompVec()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::vectorTools::copyFlattenedDealiiVecToSingleCompVec (const distributedCPUVec< double > & flattenedArray,
    const unsigned int totalNumberComponents,
    const std::pair< unsigned int, unsigned int > componentIndexRange,
    std::vector< distributedCPUVec< double > > & componentVectors,
    const bool isFlattenedDealiiGhostValuesUpdated = false )
    +
    + +

    Copies a single field component from a flattenedArray parallel distributed vector containing multiple component fields to a single field parallel distributed vector.

    +
    Parameters
    + + + + + + +
    [in]flattenedArrayflattened parallel distributed vector with multiple component fields
    [in]totalNumberComponentstotal number of component fiels in flattenedArray
    [in]componentIndexRangedesired range field components [componentIndexRange.first,componentIndexRange.second)
    [out]componentVectorsvector of parallel distributed vectors with fields corresponding to componentIndexRange. componentVectors is expected to be of the size componentIndexRange.second-componentIndexRange.first. Further, each entry of componentVectors is assumed to be already initialized with the same single component partitioner used in the creation of the flattenedArray partitioner.
    [in]isFlattenedDealiiGhostValuesUpdateddefault is false. Use true for optimization if update ghost values has already been called in the flattened dealii vec.
    +
    +
    + +
    +
    + +

    ◆ copyFlattenedSTLVecToSingleCompVec()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::vectorTools::copyFlattenedSTLVecToSingleCompVec (const double * flattenedArray,
    const unsigned int totalNumberComponents,
    const unsigned int localVectorSize,
    const std::pair< unsigned int, unsigned int > componentIndexRange,
    std::vector< distributedCPUVec< double > > & componentVectors )
    +
    + +

    Copies a single field component from a flattenedArray STL vector containing multiple component fields to a single field parallel distributed vector.

    +
    Parameters
    + + + + + +
    [in]flattenedArrayflattened STL vector with multiple component fields
    [in]totalNumberComponentstotal number of component fiels in flattenedArray
    [in]componentIndexRangedesired range field components [componentIndexRange.first,componentIndexRange.second)
    [out]componentVectorsvector of parallel distributed vectors with fields corresponding to componentIndexRange. componentVectors is expected to be of the size componentIndexRange.second-componentIndexRange.first. Further, each entry of componentVectors is assumed to be already initialized with the same single component partitioner used in the creation of the flattenedArray partitioner.
    +
    +
    + +
    +
    + +

    ◆ copySingleCompVecToFlattenedDealiiVec()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::vectorTools::copySingleCompVecToFlattenedDealiiVec (distributedCPUVec< double > & flattenedArray,
    const unsigned int totalNumberComponents,
    const std::pair< unsigned int, unsigned int > componentIndexRange,
    const std::vector< distributedCPUVec< double > > & componentVectors )
    +
    + +

    Copies to a flattenedArray parallel distributed vector containing multiple component fields from a single field parallel distributed vector.

    +
    Parameters
    + + + + + +
    [out]flattenedArrayflattened parallel distributed vector with multiple component fields
    [in]totalNumberComponentstotal number of component fiels in flattenedArray
    [in]componentIndexRangedesired range field components [componentIndexRange.first,componentIndexRange.second)
    [in]componentVectorsvector of parallel distributed vectors with fields corresponding to componentIndexRange. componentVectors is expected to be of the size componentIndexRange.second-componentIndexRange.first. Further, each entry of componentVectors is assumed to be already initialized with the same single component partitioner used in the creation of the flattenedArray partitioner.
    +
    +
    + +
    +
    + +

    ◆ copySingleCompVecToFlattenedSTLVec()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::vectorTools::copySingleCompVecToFlattenedSTLVec (std::vector< double > & flattenedArray,
    const unsigned int totalNumberComponents,
    const std::pair< unsigned int, unsigned int > componentIndexRange,
    const std::vector< distributedCPUVec< double > > & componentVectors )
    +
    + +

    Copies to a flattenedArray stl vector containing multiple component fields from a single field parallel distributed vector.

    +
    Parameters
    + + + + + +
    [out]flattenedArrayflattened stl vector with multiple component fields
    [in]totalNumberComponentstotal number of component fiels in flattenedArray
    [in]componentIndexRangedesired range field components [componentIndexRange.first,componentIndexRange.second)
    [in]componentVectorsvector of parallel distributed vectors with fields corresponding to componentIndexRange. componentVectors is expected to be of the size componentIndexRange.second-componentIndexRange.first. Further, each entry of componentVectors is assumed to be already initialized with the same single component partitioner used in the creation of the flattenedArray partitioner.
    +
    +
    + +
    +
    + +

    ◆ createBoundingBoxTriaLocallyOwned()

    + +
    +
    + + + + + + + +
    std::pair< dealii::Point< 3 >, dealii::Point< 3 > > dftfe::vectorTools::createBoundingBoxTriaLocallyOwned (const dealii::DoFHandler< 3 > & dofHandler)
    +
    + +
    +
    + +

    ◆ createDealiiVector()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + +
    void dftfe::vectorTools::createDealiiVector (const std::shared_ptr< const dealii::Utilities::MPI::Partitioner > & partitioner,
    const unsigned int blockSize,
    distributedCPUVec< T > & flattenedArray )
    +
    + +

    Creates a custom partitioned flattened dealii vector. stores multiple components asociated with a node sequentially.

    +
    Parameters
    + + + +
    partitionerassociated with single component vector
    blockSizenumber of components associated with each node
    +
    +
    +
    Returns
    flattenedArray custom partitioned dealii vector
    + +
    +
    + +

    ◆ createParallelConstraintMatrixFromSerial()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void dftfe::vectorTools::createParallelConstraintMatrixFromSerial (const dealii::Triangulation< 3, 3 > & serTria,
    const dealii::DoFHandler< 3 > & dofHandlerPar,
    const MPI_Comm & mpi_comm_parent,
    const MPI_Comm & mpi_comm_domain,
    const std::vector< std::vector< double > > & domainBoundingVectors,
    dealii::AffineConstraints< double > & periodicHangingConstraints,
    dealii::AffineConstraints< double > & onlyHangingConstraints,
    const int verbosity,
    const bool periodicX,
    const bool periodicY,
    const bool periodicZ )
    +
    + +

    Create constraint matrix using serial mesh. Temporary fix for a bug (Issue #7053) in deal.ii until it is resolved.

    +
    Parameters
    + + + + + +
    [in]serialTriangulation which must be exactly same as the parallel triangulation associated with dofHandlerPar
    [in]parallelDofHandler
    [out]periodichanging constraints.
    [out]onlyhanging constraints
    +
    +
    + +
    +
    +
    + + + + diff --git a/namespacemembers.html b/namespacemembers.html new file mode 100644 index 000000000..20df07965 --- /dev/null +++ b/namespacemembers.html @@ -0,0 +1,89 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - a -

    +
    + + + + diff --git a/namespacemembers_b.html b/namespacemembers_b.html new file mode 100644 index 000000000..683c98d57 --- /dev/null +++ b/namespacemembers_b.html @@ -0,0 +1,87 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - b -

    +
    + + + + diff --git a/namespacemembers_c.html b/namespacemembers_c.html new file mode 100644 index 000000000..69a8f8de6 --- /dev/null +++ b/namespacemembers_c.html @@ -0,0 +1,157 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - c -

    +
    + + + + diff --git a/namespacemembers_d.html b/namespacemembers_d.html new file mode 100644 index 000000000..404054cbc --- /dev/null +++ b/namespacemembers_d.html @@ -0,0 +1,111 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - d -

    +
    + + + + diff --git a/namespacemembers_e.html b/namespacemembers_e.html new file mode 100644 index 000000000..3478e9629 --- /dev/null +++ b/namespacemembers_e.html @@ -0,0 +1,89 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - e -

    +
    + + + + diff --git a/namespacemembers_enum.html b/namespacemembers_enum.html new file mode 100644 index 000000000..b5628c3c7 --- /dev/null +++ b/namespacemembers_enum.html @@ -0,0 +1,98 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace enums with links to the namespace documentation for each enum:
    +
    + + + + diff --git a/namespacemembers_eval.html b/namespacemembers_eval.html new file mode 100644 index 000000000..5c6c486c8 --- /dev/null +++ b/namespacemembers_eval.html @@ -0,0 +1,104 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace enum values with links to the namespace documentation for each enum value:
    +
    + + + + diff --git a/namespacemembers_f.html b/namespacemembers_f.html new file mode 100644 index 000000000..8cebe2221 --- /dev/null +++ b/namespacemembers_f.html @@ -0,0 +1,88 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - f -

    +
    + + + + diff --git a/namespacemembers_func.html b/namespacemembers_func.html new file mode 100644 index 000000000..b53af5905 --- /dev/null +++ b/namespacemembers_func.html @@ -0,0 +1,88 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    + +

    - a -

    +
    + + + + diff --git a/namespacemembers_func_b.html b/namespacemembers_func_b.html new file mode 100644 index 000000000..a8c30487e --- /dev/null +++ b/namespacemembers_func_b.html @@ -0,0 +1,86 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    + +

    - b -

    +
    + + + + diff --git a/namespacemembers_func_c.html b/namespacemembers_func_c.html new file mode 100644 index 000000000..baa97d636 --- /dev/null +++ b/namespacemembers_func_c.html @@ -0,0 +1,146 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    + +

    - c -

    +
    + + + + diff --git a/namespacemembers_func_d.html b/namespacemembers_func_d.html new file mode 100644 index 000000000..4f94c97a3 --- /dev/null +++ b/namespacemembers_func_d.html @@ -0,0 +1,92 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    + +

    - d -

    +
    + + + + diff --git a/namespacemembers_func_e.html b/namespacemembers_func_e.html new file mode 100644 index 000000000..aa704610d --- /dev/null +++ b/namespacemembers_func_e.html @@ -0,0 +1,87 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    + +

    - e -

    +
    + + + + diff --git a/namespacemembers_func_f.html b/namespacemembers_func_f.html new file mode 100644 index 000000000..a788a8782 --- /dev/null +++ b/namespacemembers_func_f.html @@ -0,0 +1,87 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    + +

    - f -

    +
    + + + + diff --git a/namespacemembers_func_g.html b/namespacemembers_func_g.html new file mode 100644 index 000000000..367b26e11 --- /dev/null +++ b/namespacemembers_func_g.html @@ -0,0 +1,100 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    + +

    - g -

    +
    + + + + diff --git a/namespacemembers_func_i.html b/namespacemembers_func_i.html new file mode 100644 index 000000000..8637094dc --- /dev/null +++ b/namespacemembers_func_i.html @@ -0,0 +1,92 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    + +

    - i -

    +
    + + + + diff --git a/namespacemembers_func_l.html b/namespacemembers_func_l.html new file mode 100644 index 000000000..c87d21f98 --- /dev/null +++ b/namespacemembers_func_l.html @@ -0,0 +1,88 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    + +

    - l -

    +
    + + + + diff --git a/namespacemembers_func_m.html b/namespacemembers_func_m.html new file mode 100644 index 000000000..4c145873e --- /dev/null +++ b/namespacemembers_func_m.html @@ -0,0 +1,92 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    + +

    - m -

    +
    + + + + diff --git a/namespacemembers_func_n.html b/namespacemembers_func_n.html new file mode 100644 index 000000000..ed58b304b --- /dev/null +++ b/namespacemembers_func_n.html @@ -0,0 +1,86 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    + +

    - n -

    +
    + + + + diff --git a/namespacemembers_func_o.html b/namespacemembers_func_o.html new file mode 100644 index 000000000..86f57ac8e --- /dev/null +++ b/namespacemembers_func_o.html @@ -0,0 +1,89 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    + +

    - o -

    +
    + + + + diff --git a/namespacemembers_func_p.html b/namespacemembers_func_p.html new file mode 100644 index 000000000..d23ebb9a5 --- /dev/null +++ b/namespacemembers_func_p.html @@ -0,0 +1,161 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    + +

    - p -

    +
    + + + + diff --git a/namespacemembers_func_r.html b/namespacemembers_func_r.html new file mode 100644 index 000000000..5db9e6cdd --- /dev/null +++ b/namespacemembers_func_r.html @@ -0,0 +1,98 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    + +

    - r -

    +
    + + + + diff --git a/namespacemembers_func_s.html b/namespacemembers_func_s.html new file mode 100644 index 000000000..d56b1a7a0 --- /dev/null +++ b/namespacemembers_func_s.html @@ -0,0 +1,99 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    + +

    - s -

    +
    + + + + diff --git a/namespacemembers_func_t.html b/namespacemembers_func_t.html new file mode 100644 index 000000000..1a5a3817a --- /dev/null +++ b/namespacemembers_func_t.html @@ -0,0 +1,87 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    + +

    - t -

    +
    + + + + diff --git a/namespacemembers_func_v.html b/namespacemembers_func_v.html new file mode 100644 index 000000000..deee05676 --- /dev/null +++ b/namespacemembers_func_v.html @@ -0,0 +1,86 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    + +

    - v -

    +
    + + + + diff --git a/namespacemembers_func_w.html b/namespacemembers_func_w.html new file mode 100644 index 000000000..306e0ce5b --- /dev/null +++ b/namespacemembers_func_w.html @@ -0,0 +1,88 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    + +

    - w -

    +
    + + + + diff --git a/namespacemembers_func_x.html b/namespacemembers_func_x.html new file mode 100644 index 000000000..8377df3ad --- /dev/null +++ b/namespacemembers_func_x.html @@ -0,0 +1,100 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    + +

    - x -

    +
    + + + + diff --git a/namespacemembers_g.html b/namespacemembers_g.html new file mode 100644 index 000000000..7a1e99616 --- /dev/null +++ b/namespacemembers_g.html @@ -0,0 +1,102 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - g -

    +
    + + + + diff --git a/namespacemembers_h.html b/namespacemembers_h.html new file mode 100644 index 000000000..7e6a7d27f --- /dev/null +++ b/namespacemembers_h.html @@ -0,0 +1,87 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - h -

    +
    + + + + diff --git a/namespacemembers_i.html b/namespacemembers_i.html new file mode 100644 index 000000000..3d1828174 --- /dev/null +++ b/namespacemembers_i.html @@ -0,0 +1,95 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - i -

    +
    + + + + diff --git a/namespacemembers_l.html b/namespacemembers_l.html new file mode 100644 index 000000000..76ca3b8c5 --- /dev/null +++ b/namespacemembers_l.html @@ -0,0 +1,94 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - l -

    +
    + + + + diff --git a/namespacemembers_m.html b/namespacemembers_m.html new file mode 100644 index 000000000..86bc923a4 --- /dev/null +++ b/namespacemembers_m.html @@ -0,0 +1,96 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - m -

    +
    + + + + diff --git a/namespacemembers_n.html b/namespacemembers_n.html new file mode 100644 index 000000000..60138ae16 --- /dev/null +++ b/namespacemembers_n.html @@ -0,0 +1,91 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - n -

    +
    + + + + diff --git a/namespacemembers_o.html b/namespacemembers_o.html new file mode 100644 index 000000000..120524a8c --- /dev/null +++ b/namespacemembers_o.html @@ -0,0 +1,93 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - o -

    +
    + + + + diff --git a/namespacemembers_p.html b/namespacemembers_p.html new file mode 100644 index 000000000..14e6c64fd --- /dev/null +++ b/namespacemembers_p.html @@ -0,0 +1,162 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - p -

    +
    + + + + diff --git a/namespacemembers_r.html b/namespacemembers_r.html new file mode 100644 index 000000000..50db4aa16 --- /dev/null +++ b/namespacemembers_r.html @@ -0,0 +1,100 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - r -

    +
    + + + + diff --git a/namespacemembers_s.html b/namespacemembers_s.html new file mode 100644 index 000000000..357ca1b0f --- /dev/null +++ b/namespacemembers_s.html @@ -0,0 +1,102 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - s -

    +
    + + + + diff --git a/namespacemembers_t.html b/namespacemembers_t.html new file mode 100644 index 000000000..11ad40a70 --- /dev/null +++ b/namespacemembers_t.html @@ -0,0 +1,88 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - t -

    +
    + + + + diff --git a/namespacemembers_type.html b/namespacemembers_type.html new file mode 100644 index 000000000..a8a0c7cd9 --- /dev/null +++ b/namespacemembers_type.html @@ -0,0 +1,110 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace typedefs with links to the namespace documentation for each typedef:
    +
    + + + + diff --git a/namespacemembers_u.html b/namespacemembers_u.html new file mode 100644 index 000000000..66fb83370 --- /dev/null +++ b/namespacemembers_u.html @@ -0,0 +1,97 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - u -

    +
    + + + + diff --git a/namespacemembers_v.html b/namespacemembers_v.html new file mode 100644 index 000000000..311bab3eb --- /dev/null +++ b/namespacemembers_v.html @@ -0,0 +1,88 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - v -

    +
    + + + + diff --git a/namespacemembers_vars.html b/namespacemembers_vars.html new file mode 100644 index 000000000..8a1c45ead --- /dev/null +++ b/namespacemembers_vars.html @@ -0,0 +1,104 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace variables with links to the namespace documentation for each variable:
    +
    + + + + diff --git a/namespacemembers_w.html b/namespacemembers_w.html new file mode 100644 index 000000000..1a86823a0 --- /dev/null +++ b/namespacemembers_w.html @@ -0,0 +1,89 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - w -

    +
    + + + + diff --git a/namespacemembers_x.html b/namespacemembers_x.html new file mode 100644 index 000000000..26f6c2fd8 --- /dev/null +++ b/namespacemembers_x.html @@ -0,0 +1,100 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - x -

    +
    + + + + diff --git a/namespacemembers_z.html b/namespacemembers_z.html new file mode 100644 index 000000000..01a818720 --- /dev/null +++ b/namespacemembers_z.html @@ -0,0 +1,86 @@ + + + + + + + +DFT-FE: Namespace Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - z -

    +
    + + + + diff --git a/nav_f.png b/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/nav_fd.png b/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/nav_g.png b/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/non_linear_solver_8h.html b/non_linear_solver_8h.html new file mode 100644 index 000000000..f62b3b129 --- /dev/null +++ b/non_linear_solver_8h.html @@ -0,0 +1,106 @@ + + + + + + + +DFT-FE: workspace/include/nonLinearSolver.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    nonLinearSolver.h File Reference
    +
    +
    +
    #include "headers.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  dftfe::nonLinearSolver
     Base class for non-linear algebraic solver. More...
     
    + + + +

    +Namespaces

    namespace  dftfe
     
    +
    + + + + diff --git a/non_linear_solver_8h_source.html b/non_linear_solver_8h_source.html new file mode 100644 index 000000000..352321bdc --- /dev/null +++ b/non_linear_solver_8h_source.html @@ -0,0 +1,246 @@ + + + + + + + +DFT-FE: workspace/include/nonLinearSolver.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    nonLinearSolver.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
    +
    4// authors.
    +
    5//
    +
    6// This file is part of the DFT-FE code.
    +
    7//
    +
    8// The DFT-FE code is free software; you can use it, redistribute
    +
    9// it, and/or modify it under the terms of the GNU Lesser General
    +
    10// Public License as published by the Free Software Foundation; either
    +
    11// version 2.1 of the License, or (at your option) any later version.
    +
    12// The full text of the license can be found in the file LICENSE at
    +
    13// the top level of the DFT-FE distribution.
    +
    14//
    +
    15// ---------------------------------------------------------------------
    +
    16//
    +
    17
    +
    18
    +
    19
    +
    20#ifndef NonLinearSolver_h
    +
    21#define NonLinearSolver_h
    +
    22
    +
    23
    +
    24#include "headers.h"
    +
    25
    +
    26namespace dftfe
    +
    27{
    +
    28 //
    +
    29 // forward declarations
    +
    30 //
    +
    31 class nonlinearSolverProblem;
    +
    32
    +
    33 /**
    +
    34 * @brief Base class for non-linear algebraic solver.
    +
    35 *
    +
    36 * @author Sambit Das
    +
    37 */
    +
    + +
    39 {
    +
    40 //
    +
    41 // types
    +
    42 //
    +
    43 public:
    + +
    52
    +
    53 //
    +
    54 // methods
    +
    55 //
    +
    56 public:
    +
    57 /**
    +
    58 * @brief Destructor.
    +
    59 */
    +
    60 virtual ~nonLinearSolver() = 0;
    +
    61
    +
    62 /**
    +
    63 * @brief Solve non-linear algebraic equation.
    +
    64 *
    +
    65 * @param problem[in] nonlinearSolverProblem object.
    +
    66 * @param checkpointFileName[in] if string is non-empty, creates checkpoint file
    +
    67 * named checkpointFileName for every nonlinear iteration.
    +
    68 * @param restart[in] boolean specifying whether this is a restart solve.
    +
    69 * @return Return value indicating success or failure.
    +
    70 */
    +
    71 virtual ReturnValueType
    + +
    73 const std::string checkpointFileName = "",
    +
    74 const bool restart = false) = 0;
    +
    75
    +
    76 virtual void
    +
    77 save(const std::string &checkpointFileName) = 0;
    +
    78
    +
    79
    +
    80 protected:
    +
    81 /**
    +
    82 * @brief Constructor.
    +
    83 *
    +
    84 */
    +
    85 nonLinearSolver(const unsigned int debugLevel,
    +
    86 const unsigned int maxNumberIterations,
    +
    87 const double tolerance = 0);
    +
    88
    +
    89
    +
    90 protected:
    +
    91 /**
    +
    92 * @brief Get tolerance.
    +
    93 *
    +
    94 * @return Value of the tolerance.
    +
    95 */
    +
    96 double
    +
    97 getTolerance() const;
    +
    98
    +
    99 /**
    +
    100 * @brief Get maximum number of iterations.
    +
    101 *
    +
    102 * @return Maximum number of iterations.
    +
    103 */
    +
    104 unsigned int
    + +
    106
    +
    107 /**
    +
    108 * @brief Get debug level.
    +
    109 *
    +
    110 * @return Debug level.
    +
    111 */
    +
    112 unsigned int
    + +
    114
    +
    115
    +
    116 /// controls the verbosity of the printing
    +
    117 const unsigned int d_debugLevel;
    +
    118
    +
    119 /// maximum number of nonlinear solve iterations
    +
    120 const unsigned int d_maxNumberIterations;
    +
    121
    +
    122 /// nonlinear solve stopping tolerance
    +
    123 const double d_tolerance;
    +
    124 };
    +
    +
    125
    +
    126} // namespace dftfe
    +
    127
    +
    128#endif // NonLinearSolver_h
    +
    Base class for non-linear algebraic solver.
    Definition nonLinearSolver.h:39
    +
    const double d_tolerance
    nonlinear solve stopping tolerance
    Definition nonLinearSolver.h:123
    +
    virtual ReturnValueType solve(nonlinearSolverProblem &problem, const std::string checkpointFileName="", const bool restart=false)=0
    Solve non-linear algebraic equation.
    +
    unsigned int getMaximumNumberIterations() const
    Get maximum number of iterations.
    +
    double getTolerance() const
    Get tolerance.
    +
    const unsigned int d_debugLevel
    controls the verbosity of the printing
    Definition nonLinearSolver.h:117
    +
    virtual ~nonLinearSolver()=0
    Destructor.
    +
    virtual void save(const std::string &checkpointFileName)=0
    +
    nonLinearSolver(const unsigned int debugLevel, const unsigned int maxNumberIterations, const double tolerance=0)
    Constructor.
    +
    unsigned int getDebugLevel() const
    Get debug level.
    +
    ReturnValueType
    Definition nonLinearSolver.h:45
    +
    @ MAX_ITER_REACHED
    Definition nonLinearSolver.h:49
    +
    @ RESTART
    Definition nonLinearSolver.h:50
    +
    @ FAILURE
    Definition nonLinearSolver.h:47
    +
    @ LINESEARCH_FAILED
    Definition nonLinearSolver.h:48
    +
    @ SUCCESS
    Definition nonLinearSolver.h:46
    +
    const unsigned int d_maxNumberIterations
    maximum number of nonlinear solve iterations
    Definition nonLinearSolver.h:120
    +
    Abstract class for solver functions.
    Definition nonlinearSolverProblem.h:30
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    + +
    Definition pseudoPotentialToDftfeConverter.cc:34
    +
    + + + + diff --git a/nonlinear_solver_problem_8h.html b/nonlinear_solver_problem_8h.html new file mode 100644 index 000000000..7a1ca944d --- /dev/null +++ b/nonlinear_solver_problem_8h.html @@ -0,0 +1,106 @@ + + + + + + + +DFT-FE: workspace/include/nonlinearSolverProblem.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    nonlinearSolverProblem.h File Reference
    +
    +
    +
    #include "headers.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  dftfe::nonlinearSolverProblem
     Abstract class for solver functions. More...
     
    + + + +

    +Namespaces

    namespace  dftfe
     
    +
    + + + + diff --git a/nonlinear_solver_problem_8h_source.html b/nonlinear_solver_problem_8h_source.html new file mode 100644 index 000000000..19b54093b --- /dev/null +++ b/nonlinear_solver_problem_8h_source.html @@ -0,0 +1,244 @@ + + + + + + + +DFT-FE: workspace/include/nonlinearSolverProblem.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    nonlinearSolverProblem.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
    +
    4// authors.
    +
    5//
    +
    6// This file is part of the DFT-FE code.
    +
    7//
    +
    8// The DFT-FE code is free software; you can use it, redistribute
    +
    9// it, and/or modify it under the terms of the GNU Lesser General
    +
    10// Public License as published by the Free Software Foundation; either
    +
    11// version 2.1 of the License, or (at your option) any later version.
    +
    12// The full text of the license can be found in the file LICENSE at
    +
    13// the top level of the DFT-FE distribution.
    +
    14//
    +
    15// ---------------------------------------------------------------------
    +
    16//
    +
    17
    +
    18#ifndef nonlinearSolverProblem_H_
    +
    19#define nonlinearSolverProblem_H_
    +
    20#include "headers.h"
    +
    21
    +
    22namespace dftfe
    +
    23{
    +
    24 /**
    +
    25 * @brief Abstract class for solver functions.
    +
    26 *
    +
    27 * @author Sambit Das
    +
    28 */
    +
    + +
    30 {
    +
    31 public:
    +
    32 /**
    +
    33 * @brief Constructor.
    +
    34 */
    + +
    36
    +
    37 /**
    +
    38 * @brief Destructor.
    +
    39 */
    + +
    41
    +
    42 /**
    +
    43 * @brief Obtain number of unknowns.
    +
    44 *
    +
    45 * @return Number of unknowns.
    +
    46 */
    +
    47 virtual unsigned int
    +
    48 getNumberUnknowns() const = 0;
    +
    49
    +
    50 /**
    +
    51 * @brief Compute function value (aka energy).
    +
    52 *
    +
    53 *
    +
    54 * @return Function value.
    +
    55 */
    +
    56 virtual void
    +
    57 value(std::vector<double> &functionValue) = 0;
    +
    58
    +
    59
    +
    60 /**
    +
    61 * @brief Compute function gradient (aka forces).
    +
    62 *
    +
    63 * @param gradient STL vector for gradient values.
    +
    64 */
    +
    65 virtual void
    +
    66 gradient(std::vector<double> &gradient) = 0;
    +
    67
    +
    68 /**
    +
    69 * @brief Apply preconditioner to function gradient.
    +
    70 *
    +
    71 * @param s STL vector for s=-M^{-1} gradient.
    +
    72 * @param gradient STL vector for gradient values.
    +
    73 */
    +
    74 virtual void
    +
    75 precondition(std::vector<double> & s,
    +
    76 const std::vector<double> &gradient) = 0;
    +
    77
    +
    78 /**
    +
    79 * @brief Update solution.
    +
    80 *
    +
    81 * @param solution Updated solution.
    +
    82 */
    +
    83 virtual void
    +
    84 update(const std::vector<double> &solution,
    +
    85 const bool computeForces = true,
    +
    86 const bool useSingleAtomSolutionsInitialGuess = false) = 0;
    +
    87
    +
    88 /**
    +
    89 * @brief Obtain current solution.
    +
    90 *
    +
    91 * @param solution Space for current solution.
    +
    92 */
    +
    93 virtual void
    +
    94 solution(std::vector<double> &solution) = 0;
    +
    95
    +
    96 /**
    +
    97 * @brief For each unknown indicate whether that unknown should
    +
    98 * be accumulated. This functionality is needed in the case of
    +
    99 * parallel execution when domain decomposition is
    +
    100 * employed. Unknowns residing on processor boundary should only
    +
    101 * be accumulated once when dot products of vertex fields are
    +
    102 * computed (e.g. residual).
    +
    103 *
    +
    104 * @return A vector of int values for each unknown. Value of 1
    +
    105 * indicates that the unknown should be counted and 0 otherwise.
    +
    106 */
    +
    107 virtual std::vector<unsigned int>
    + +
    109
    +
    110 /**
    +
    111 * @brief check for convergence.
    +
    112 *
    +
    113 */
    +
    114 virtual bool
    +
    115 isConverged() const = 0;
    +
    116
    +
    117 /**
    +
    118 * @brief create checkpoint for the current state of the problem i.e problem domain and solution.
    +
    119 *
    +
    120 */
    +
    121 virtual void
    +
    122 save() = 0;
    +
    123
    +
    124 /**
    +
    125 * @brief get MPI communicator.
    +
    126 *
    +
    127 */
    +
    128 virtual const MPI_Comm &
    + +
    130 };
    +
    +
    131
    +
    132} // namespace dftfe
    +
    133#endif // nonlinearSolverProblem_H_
    +
    Abstract class for solver functions.
    Definition nonlinearSolverProblem.h:30
    +
    virtual void value(std::vector< double > &functionValue)=0
    Compute function value (aka energy).
    +
    virtual bool isConverged() const =0
    check for convergence.
    +
    virtual void solution(std::vector< double > &solution)=0
    Obtain current solution.
    +
    nonlinearSolverProblem()
    Constructor.
    +
    virtual std::vector< unsigned int > getUnknownCountFlag() const =0
    For each unknown indicate whether that unknown should be accumulated. This functionality is needed in...
    +
    virtual void update(const std::vector< double > &solution, const bool computeForces=true, const bool useSingleAtomSolutionsInitialGuess=false)=0
    Update solution.
    +
    virtual ~nonlinearSolverProblem()=0
    Destructor.
    +
    virtual const MPI_Comm & getMPICommunicator()=0
    get MPI communicator.
    +
    virtual unsigned int getNumberUnknowns() const =0
    Obtain number of unknowns.
    +
    virtual void gradient(std::vector< double > &gradient)=0
    Compute function gradient (aka forces).
    +
    virtual void precondition(std::vector< double > &s, const std::vector< double > &gradient)=0
    Apply preconditioner to function gradient.
    +
    virtual void save()=0
    create checkpoint for the current state of the problem i.e problem domain and solution.
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    + +
    Definition pseudoPotentialToDftfeConverter.cc:34
    +
    + + + + diff --git a/nudged_elastic_band_class_8h.html b/nudged_elastic_band_class_8h.html new file mode 100644 index 000000000..44a2c1ed2 --- /dev/null +++ b/nudged_elastic_band_class_8h.html @@ -0,0 +1,120 @@ + + + + + + + +DFT-FE: workspace/include/nudgedElasticBandClass.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    nudgedElasticBandClass.h File Reference
    +
    +
    +
    #include <vector>
    +#include "nonlinearSolverProblem.h"
    +#include "nonLinearSolver.h"
    +#include "dftBase.h"
    +#include "dftfeWrapper.h"
    +#include "headers.h"
    +#include "constants.h"
    +#include <cgPRPNonLinearSolver.h>
    +#include <BFGSNonLinearSolver.h>
    +#include <LBFGSNonLinearSolver.h>
    +#include <dft.h>
    +#include <dftUtils.h>
    +#include <fileReaders.h>
    +#include <force.h>
    +#include <iomanip>
    +#include <sys/stat.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Classes

    class  dftfe::nudgedElasticBandClass
     
    + + + +

    +Namespaces

    namespace  dftfe
     
    +
    + + + + diff --git a/nudged_elastic_band_class_8h_source.html b/nudged_elastic_band_class_8h_source.html new file mode 100644 index 000000000..5c7403602 --- /dev/null +++ b/nudged_elastic_band_class_8h_source.html @@ -0,0 +1,449 @@ + + + + + + + +DFT-FE: workspace/include/nudgedElasticBandClass.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    nudgedElasticBandClass.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
    +
    4// authors.
    +
    5//
    +
    6// This file is part of the DFT-FE code.
    +
    7//
    +
    8// The DFT-FE code is free software; you can use it, redistribute
    +
    9// it, and/or modify it under the terms of the GNU Lesser General
    +
    10// Public License as published by the Free Software Foundation; either
    +
    11// version 2.1 of the License, or (at your option) any later version.
    +
    12// The full text of the license can be found in the file LICENSE at
    +
    13// the top level of the DFT-FE distribution.
    +
    14//
    +
    15// ---------------------------------------------------------------------
    +
    16
    +
    17
    +
    18
    +
    19#ifndef nudgedElasticBandClass_H_
    +
    20#define nudgedElasticBandClass_H_
    +
    21#include <vector>
    + +
    23#include "nonLinearSolver.h"
    +
    24#include "dftBase.h"
    +
    25#include "dftfeWrapper.h"
    +
    26#include "headers.h"
    +
    27#include "constants.h"
    + +
    29#include <BFGSNonLinearSolver.h>
    + +
    31#include <dft.h>
    +
    32#include <dftUtils.h>
    +
    33#include <fileReaders.h>
    +
    34#include <force.h>
    +
    35#include <iomanip>
    +
    36#include <sys/stat.h>
    +
    37namespace dftfe
    +
    38{
    +
    + +
    40 {
    +
    41 public:
    +
    42 /**
    +
    43 * @brief First, sets the nebRestart path. Second, creates Step0 folder with coordinaes and domainVectors file.
    +
    44 * Third, creates the array of pointers of dftClass for each image.
    +
    45 * If in restart mode, calls function to read coordinates and initialise
    +
    46 * parameters Sets solvermode: CGPT, LBFGS, BFGS
    +
    47 */
    +
    48
    + +
    50 const std::string restartFilesPath,
    + +
    52 const bool restart,
    +
    53 const int verbosity,
    +
    54 const bool useDevice,
    +
    55 const int d_numberOfImages,
    +
    56 const bool imageFreeze,
    +
    57 double Kmax,
    +
    58 double Kmin,
    +
    59 const double pathThreshold,
    +
    60 const int maximumNEBIteration,
    +
    61 const unsigned int _maxLineSearchIterCGPRP,
    +
    62 const unsigned int _lbfgsNumPastSteps,
    +
    63 const std::string &_bfgsStepMethod,
    +
    64 const double optimizermaxIonUpdateStep,
    +
    65 const std::string &optimizationSolver,
    +
    66 const std::string &coordinatesFileNEB,
    +
    67 const std::string &domainVectorsFileNEB,
    +
    68 const std::string &ionRelaxFlagsFile);
    +
    69
    +
    70 //~nudgedElasticBandClass();
    +
    71
    +
    72 double d_kmax = 0.1; // 0.1 Ha/bohr
    +
    73 double d_kmin = 0.1; // 0.1Ha/bohr
    + +
    75 /**
    +
    76 * @brief Calls optimizer(nonLinearClass) solve. Prints the Final NEB energies and forces.
    +
    77 * References:
    +
    78 * 1.
    +
    79 * https://pubs.aip.org/aip/jcp/article/113/22/9978/184858/Improved-tangent-estimate-in-the-nudged-elastic
    +
    80 * 2.
    +
    81 * https://pubs.aip.org/aip/jcp/article/128/13/134106/977389/Optimization-methods-for-finding-minimum-energy
    +
    82 */
    +
    83 int
    + +
    85 /**
    +
    86 * @brief Returns the Normed vetor satistfying ||v||_2 = 1
    +
    87 */
    +
    88 void
    +
    89 ReturnNormedVector(std::vector<double> &, int);
    +
    90 /**
    +
    91 * @brief Calculates the L-norm of a vector
    +
    92 */
    +
    93 void
    +
    94 LNorm(double &, std::vector<double>, int, int);
    +
    95 /**
    +
    96 * @brief Identifies the images to freeze, calculates gradient.
    +
    97 * First prints the Image No., free energy and force error of each image
    +
    98 * Prints activation energy of current step
    +
    99 */
    +
    100 void
    +
    101 gradient(std::vector<double> &gradient);
    +
    102 /**
    +
    103 * @brief Returns the total DoFs of the optimizer problem.
    +
    104 */
    +
    105 unsigned int
    + +
    107 /**
    +
    108 * @brief Updates the positions of atoms and the total step count.
    +
    109 * Calls dftPtr colve to compute eenergy and force for current step.
    +
    110 */
    +
    111 void
    +
    112 update(const std::vector<double> &solution,
    +
    113 const bool computeForces = true,
    +
    114 const bool useSingleAtomSolutionsInitialGuess = false);
    +
    115 /**
    +
    116 * @brief Saves the output files for restart.
    +
    117 */
    +
    118 void
    + +
    120 /**
    +
    121 * @brief initializes the data member d_relaxationFlags, nonlinearSolver,
    +
    122 *
    +
    123 */
    +
    124 void
    + +
    126 /**
    +
    127 * @brief Not working. Finds the saddle point energy.
    +
    128 */
    +
    129 void
    +
    130 value(std::vector<double> &functionValue);
    +
    131
    +
    132 /// not implemented
    +
    133 void
    +
    134 precondition(std::vector<double> &s, const std::vector<double> &gradient);
    +
    135 /// not implemented
    +
    136 void
    +
    137 solution(std::vector<double> &solution);
    +
    138 /// not implemented
    +
    139 std::vector<unsigned int>
    + +
    141
    +
    142 private:
    +
    143 std::vector<std::unique_ptr<dftfeWrapper>> d_dftfeWrapper;
    + +
    145 std::unique_ptr<nonLinearSolver> d_nonLinearSolverPtr;
    +
    146 // parallel communication objects
    + +
    148 // const unsigned int n_mpi_processes;
    +
    149 const unsigned int d_this_mpi_process;
    +
    150
    +
    151 // conditional stream object
    +
    152 dealii::ConditionalOStream pcout;
    +
    153
    + + + +
    157
    +
    158 /// total number of calls to update()
    + + + + + +
    164 unsigned int d_restartFlag;
    + + +
    167 unsigned int d_numberOfImages;
    + +
    169 // Solver Details
    + + + +
    173 std::string bfgsStepMethod;
    + +
    175 unsigned int lbfgsNumPastSteps;
    + + +
    178
    +
    179
    +
    180 std::map<int, std::vector<std::vector<double>>> d_atomLocationsInitial;
    +
    181 std::vector<unsigned int> d_relaxationFlags;
    +
    182 std::vector<double> d_externalForceOnAtom;
    +
    183 std::vector<double> d_ImageError;
    +
    184 std::vector<double> d_Length;
    + +
    186 const MPI_Comm &
    + +
    188
    +
    189 /**
    +
    190 * @brief Calculate the tangent between each image
    +
    191 */
    +
    192 void
    +
    193 CalculatePathTangent(int, std::vector<double> &);
    +
    194
    +
    195 /**
    +
    196 * @brief Calculates the force on atom along the tangent between images
    +
    197 */
    +
    198 void
    + +
    200 std::vector<double> &,
    +
    201 const std::vector<double> &);
    +
    202 /**
    +
    203 * @brief Calculates force perpendicular to the tangent
    +
    204 */
    +
    205 void
    + +
    207 std::vector<double> &,
    +
    208 const std::vector<double> &,
    +
    209 const std::vector<double> &);
    +
    210
    +
    211
    +
    212 /**
    +
    213 * @brief Calculates the force due to the spring.
    +
    214 */
    +
    215 void
    +
    216 CalculateSpringForce(int, std::vector<double> &, std::vector<double>);
    +
    217
    +
    218 /**
    +
    219 * @brief Calculates F_NEB = G_per+ F_spring
    +
    220 */
    +
    221 void
    +
    222 CalculateForceonImage(const std::vector<double> &,
    +
    223 const std::vector<double> &,
    +
    224 std::vector<double> &);
    +
    225
    +
    226 /**
    +
    227 * @brief Calculate path length: max diaplacement of atoms
    +
    228 */
    +
    229 double
    + +
    231
    +
    232 /**
    +
    233 * @brief Write Restart files
    +
    234 */
    +
    235 void
    + +
    237
    +
    238
    +
    239 /**
    +
    240 * @brief Find spring constant based on k_max and k_min.
    +
    241 */
    +
    242 void
    + +
    244
    +
    245 /**
    +
    246 * @brief Calculate F_per norm
    +
    247 */
    +
    248 void
    +
    249 ImageError(int image, double &Force);
    +
    250
    +
    251 /**
    +
    252 * @brief set() initalises all the private datamembers of nudgedElasticBandClass object from the parameters declared by user.
    +
    253 */
    +
    254 void
    + +
    256
    +
    257 /**
    +
    258 * @brief check for convergence.
    +
    259 *
    +
    260 */
    +
    261 bool
    +
    262 isConverged() const;
    +
    263 /**
    +
    264 * @brief Check the restart files.
    +
    265 */
    +
    266 int
    + +
    268 };
    +
    +
    269
    +
    270
    +
    271} // namespace dftfe
    +
    272#endif
    + + + +
    abstract base class for dft
    Definition dftBase.h:34
    +
    Abstract class for solver functions.
    Definition nonlinearSolverProblem.h:30
    +
    Definition nudgedElasticBandClass.h:40
    +
    void solution(std::vector< double > &solution)
    not implemented
    +
    std::unique_ptr< nonLinearSolver > d_nonLinearSolverPtr
    Definition nudgedElasticBandClass.h:145
    +
    std::string d_optimizationSolver
    Definition nudgedElasticBandClass.h:176
    +
    std::map< int, std::vector< std::vector< double > > > d_atomLocationsInitial
    Definition nudgedElasticBandClass.h:180
    +
    bool d_solverRestart
    Definition nudgedElasticBandClass.h:163
    +
    dftBase * d_dftPtr
    Definition nudgedElasticBandClass.h:144
    +
    int d_NEBImageno
    Definition nudgedElasticBandClass.h:74
    +
    double d_kmin
    Definition nudgedElasticBandClass.h:73
    +
    void WriteRestartFiles(int step)
    Write Restart files.
    +
    void LNorm(double &, std::vector< double >, int, int)
    Calculates the L-norm of a vector.
    +
    std::string d_restartFilesPath
    Definition nudgedElasticBandClass.h:155
    +
    dealii::ConditionalOStream pcout
    Definition nudgedElasticBandClass.h:152
    +
    unsigned int d_countrelaxationFlags
    Definition nudgedElasticBandClass.h:168
    +
    void precondition(std::vector< double > &s, const std::vector< double > &gradient)
    not implemented
    +
    const unsigned int d_this_mpi_process
    Definition nudgedElasticBandClass.h:149
    +
    unsigned int maxLineSearchIterCGPRP
    Definition nudgedElasticBandClass.h:172
    +
    int findMEP()
    Calls optimizer(nonLinearClass) solve. Prints the Final NEB energies and forces. References: 1....
    +
    unsigned int getNumberUnknowns() const
    Returns the total DoFs of the optimizer problem.
    +
    void value(std::vector< double > &functionValue)
    Not working. Finds the saddle point energy.
    +
    int d_startStep
    Definition nudgedElasticBandClass.h:160
    +
    unsigned int d_maximumNEBIteration
    Definition nudgedElasticBandClass.h:170
    +
    double d_kmax
    Definition nudgedElasticBandClass.h:72
    +
    unsigned int d_numberOfImages
    Definition nudgedElasticBandClass.h:167
    +
    void set()
    set() initalises all the private datamembers of nudgedElasticBandClass object from the parameters dec...
    +
    unsigned int lbfgsNumPastSteps
    Definition nudgedElasticBandClass.h:175
    +
    void CalculateForceperpendicular(int, std::vector< double > &, const std::vector< double > &, const std::vector< double > &)
    Calculates force perpendicular to the tangent.
    +
    void update(const std::vector< double > &solution, const bool computeForces=true, const bool useSingleAtomSolutionsInitialGuess=false)
    Updates the positions of atoms and the total step count. Calls dftPtr colve to compute eenergy and fo...
    +
    std::vector< unsigned int > getUnknownCountFlag() const
    not implemented
    +
    std::string d_domainVectorsFileNEB
    Definition nudgedElasticBandClass.h:185
    +
    void CalculateSpringForce(int, std::vector< double > &, std::vector< double >)
    Calculates the force due to the spring.
    +
    void gradient(std::vector< double > &gradient)
    Identifies the images to freeze, calculates gradient. First prints the Image No., free energy and for...
    +
    nudgedElasticBandClass(const std::string parameter_file, const std::string restartFilesPath, const MPI_Comm &mpi_comm_parent, const bool restart, const int verbosity, const bool useDevice, const int d_numberOfImages, const bool imageFreeze, double Kmax, double Kmin, const double pathThreshold, const int maximumNEBIteration, const unsigned int _maxLineSearchIterCGPRP, const unsigned int _lbfgsNumPastSteps, const std::string &_bfgsStepMethod, const double optimizermaxIonUpdateStep, const std::string &optimizationSolver, const std::string &coordinatesFileNEB, const std::string &domainVectorsFileNEB, const std::string &ionRelaxFlagsFile)
    First, sets the nebRestart path. Second, creates Step0 folder with coordinaes and domainVectors file....
    +
    void CalculateForceparallel(int, std::vector< double > &, const std::vector< double > &)
    Calculates the force on atom along the tangent between images.
    +
    int checkRestart(bool &periodic)
    Check the restart files.
    +
    double d_optimizermaxIonUpdateStep
    Definition nudgedElasticBandClass.h:174
    +
    void CalculateSpringConstant(int, double &)
    Find spring constant based on k_max and k_min.
    +
    double d_maximumAtomForceToBeRelaxed
    Definition nudgedElasticBandClass.h:166
    +
    unsigned int d_numberGlobalCharges
    Definition nudgedElasticBandClass.h:165
    +
    bool isConverged() const
    check for convergence.
    +
    unsigned int d_restartFlag
    Definition nudgedElasticBandClass.h:164
    +
    void CalculatePathTangent(int, std::vector< double > &)
    Calculate the tangent between each image.
    +
    void CalculateForceonImage(const std::vector< double > &, const std::vector< double > &, std::vector< double > &)
    Calculates F_NEB = G_per+ F_spring.
    +
    int d_totalUpdateCalls
    total number of calls to update()
    Definition nudgedElasticBandClass.h:159
    +
    double d_optimizertolerance
    Definition nudgedElasticBandClass.h:171
    +
    std::vector< double > d_ImageError
    Definition nudgedElasticBandClass.h:183
    +
    void init()
    initializes the data member d_relaxationFlags, nonlinearSolver,
    +
    const MPI_Comm & getMPICommunicator()
    get MPI communicator.
    +
    std::vector< double > d_externalForceOnAtom
    Definition nudgedElasticBandClass.h:182
    +
    std::vector< unsigned int > d_relaxationFlags
    Definition nudgedElasticBandClass.h:181
    +
    std::string bfgsStepMethod
    Definition nudgedElasticBandClass.h:173
    +
    bool d_isRestart
    Definition nudgedElasticBandClass.h:162
    +
    std::string d_ionRelaxFlagsFile
    Definition nudgedElasticBandClass.h:177
    +
    bool d_imageFreeze
    Definition nudgedElasticBandClass.h:156
    +
    std::string d_solverRestartPath
    Definition nudgedElasticBandClass.h:155
    +
    std::vector< double > d_Length
    Definition nudgedElasticBandClass.h:184
    +
    void ImageError(int image, double &Force)
    Calculate F_per norm.
    +
    double CalculatePathLength(bool flag) const
    Calculate path length: max diaplacement of atoms.
    +
    int d_solver
    Definition nudgedElasticBandClass.h:161
    +
    std::vector< std::unique_ptr< dftfeWrapper > > d_dftfeWrapper
    Definition nudgedElasticBandClass.h:143
    +
    const MPI_Comm d_mpiCommParent
    Definition nudgedElasticBandClass.h:147
    +
    int d_verbosity
    Definition nudgedElasticBandClass.h:154
    +
    std::string d_coordinatesFileNEB
    Definition nudgedElasticBandClass.h:185
    +
    void ReturnNormedVector(std::vector< double > &, int)
    Returns the Normed vetor satistfying ||v||_2 = 1.
    +
    void save()
    Saves the output files for restart.
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    + + + + + +
    Contains commonly used I/O file utils functions.
    + + +
    Definition pseudoPotentialToDftfeConverter.cc:34
    + + +
    + + + + diff --git a/oncv_class_8h.html b/oncv_class_8h.html new file mode 100644 index 000000000..752ff3720 --- /dev/null +++ b/oncv_class_8h.html @@ -0,0 +1,146 @@ + + + + + + + +DFT-FE: workspace/include/oncvClass.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    oncvClass.h File Reference
    +
    +
    +
    #include "vector"
    +#include "map"
    +#include "AtomCenteredSphericalFunctionValenceDensitySpline.h"
    +#include "AtomCenteredSphericalFunctionCoreDensitySpline.h"
    +#include "AtomCenteredSphericalFunctionLocalPotentialSpline.h"
    +#include "AtomCenteredSphericalFunctionProjectorSpline.h"
    +#include "AtomCenteredSphericalFunctionContainer.h"
    +#include "AtomicCenteredNonLocalOperator.h"
    +#include <memory>
    +#include <MemorySpaceType.h>
    +#include <headers.h>
    +#include <TypeConfig.h>
    +#include <dftUtils.h>
    +#include "FEBasisOperations.h"
    +#include <BLASWrapper.h>
    +#include <xc.h>
    +#include <excManager.h>
    +#include "../src/pseudo/oncv/oncvClass.t.cc"
    +
    +

    Go to the source code of this file.

    + + + + +

    +Classes

    class  dftfe::oncvClass< ValueType, memorySpace >
     
    + + + +

    +Namespaces

    namespace  dftfe
     
    + + + +

    +Macros

    #define omp_get_thread_num()   0
     
    +

    Macro Definition Documentation

    + +

    ◆ omp_get_thread_num

    + +
    +
    + + + + + + + +
    #define omp_get_thread_num()   0
    +
    + +
    +
    +
    + + + + diff --git a/oncv_class_8h_source.html b/oncv_class_8h_source.html new file mode 100644 index 000000000..7d93e3f09 --- /dev/null +++ b/oncv_class_8h_source.html @@ -0,0 +1,495 @@ + + + + + + + +DFT-FE: workspace/include/oncvClass.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    oncvClass.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
    +
    4// authors.
    +
    5//
    +
    6// This file is part of the DFT-FE code.
    +
    7//
    +
    8// The DFT-FE code is free software; you can use it, redistribute
    +
    9// it, and/or modify it under the terms of the GNU Lesser General
    +
    10// Public License as published by the Free Software Foundation; either
    +
    11// version 2.1 of the License, or (at your option) any later version.
    +
    12// The full text of the license can be found in the file LICENSE at
    +
    13// the top level of the DFT-FE distribution.
    +
    14//
    +
    15// ---------------------------------------------------------------------
    +
    16//
    +
    17// @author Kartick Ramakrishnan, Sambit Das
    +
    18//
    +
    19
    +
    20#ifndef DFTFE_ONCVCLASS_H
    +
    21#define DFTFE_ONCVCLASS_H
    +
    22
    +
    23#include "vector"
    +
    24#include "map"
    + + + + + + +
    31#include <memory>
    +
    32#include <MemorySpaceType.h>
    +
    33#include <headers.h>
    +
    34#include <TypeConfig.h>
    +
    35#include <dftUtils.h>
    +
    36#include "FEBasisOperations.h"
    +
    37#include <BLASWrapper.h>
    +
    38#include <xc.h>
    +
    39#include <excManager.h>
    +
    40#ifdef _OPENMP
    +
    41# include <omp.h>
    +
    42#else
    +
    43# define omp_get_thread_num() 0
    +
    44#endif
    +
    45namespace dftfe
    +
    46{
    +
    47 template <typename ValueType, dftfe::utils::MemorySpace memorySpace>
    +
    + +
    49 {
    +
    50 public:
    + +
    52 const std::string & scratchFolderName,
    +
    53 const std::set<unsigned int> &atomTypes,
    +
    54 const bool floatingNuclearCharges,
    +
    55 const unsigned int nOMPThreads,
    +
    56 const std::map<unsigned int, unsigned int> &atomAttributes,
    +
    57 const bool reproducibleOutput,
    +
    58 const int verbosity,
    +
    59 const bool useDevice);
    +
    60 /**
    +
    61 * @brief Initialises all the data members with addresses/values to/of dftClass.
    +
    62 * @param[in] densityQuadratureId quadratureId for density.
    +
    63 * @param[in] localContributionQuadratureId quadratureId for local/zero
    +
    64 * potential
    +
    65 * @param[in] nuclearChargeQuadratureIdElectro quadratureId for nuclear
    +
    66 * charges
    +
    67 * @param[in] densityQuadratureIdElectro quadratureId for density in
    +
    68 * Electrostatics mesh
    +
    69 * @param[in] excFunctionalPtr address XC functional pointer
    +
    70 * @param[in] numEigenValues number of eigenvalues
    +
    71 * @param[in] atomLocations atomic Coordinates
    +
    72 * @param[in] imageIds image IDs of periodic cell
    +
    73 * @param[in] periodicCoords coordinates of image atoms
    +
    74 */
    +
    75
    +
    76 void
    + +
    78 std::shared_ptr<
    + +
    80 FEBasisOperations<ValueType, double, dftfe::utils::MemorySpace::HOST>>
    + + + +
    84 dftfe::basis::FEBasisOperations<ValueType,
    +
    85 double,
    +
    86 dftfe::utils::MemorySpace::DEVICE>>
    + +
    88#endif
    + +
    90 dftfe::linearAlgebra::BLASWrapper<dftfe::utils::MemorySpace::HOST>>
    + + + +
    94 dftfe::linearAlgebra::BLASWrapper<dftfe::utils::MemorySpace::DEVICE>>
    + +
    96#endif
    + + + + + + +
    103 const std::vector<std::vector<double>> &atomLocations,
    + +
    105
    +
    106 /**
    +
    107 * @brief Initialises all the data members with addresses/values to/of dftClass.
    +
    108 * @param[in] densityQuadratureId quadratureId for density.
    +
    109 * @param[in] localContributionQuadratureId quadratureId for local/zero
    +
    110 * potential
    +
    111 * @param[in] nuclearChargeQuadratureIdElectro quadratureId for nuclear
    +
    112 * charges
    +
    113 * @param[in] densityQuadratureIdElectro quadratureId for density in
    +
    114 * Electrostatics mesh
    +
    115 * @param[in] bQuadValuesAllAtoms address of nuclear charge field
    +
    116 * @param[in] excFunctionalPtr address XC functional pointer
    +
    117 * @param[in] numEigenValues number of eigenvalues
    +
    118 * @param[in] atomLocations atomic Coordinates
    +
    119 * @param[in] imageIds image IDs of periodic cell
    +
    120 * @param[in] periodicCoords coordinates of image atoms
    +
    121 */
    +
    122 void
    + +
    124 const std::vector<std::vector<double>> &atomLocations,
    +
    125 const std::vector<int> & imageIds,
    +
    126 const std::vector<std::vector<double>> &periodicCoords,
    +
    127 const std::vector<double> & kPointWeights,
    +
    128 const std::vector<double> & kPointCoordinates,
    +
    129 const bool updateNonlocalSparsity);
    +
    130
    +
    131
    +
    132 void
    + +
    134 const std::vector<std::vector<double>> & atomLocations,
    +
    135 const std::vector<int> & imageIds,
    +
    136 const std::vector<std::vector<double>> & periodicCoords,
    +
    137 const std::vector<double> & kPointWeights,
    +
    138 const std::vector<double> & kPointCoordinates,
    +
    139 const bool updateNonlocalSparsity,
    +
    140 const std::map<unsigned int, std::vector<int>> &sparsityPattern,
    +
    141 const std::vector<std::vector<dealii::CellId>>
    + +
    143 const std::vector<std::vector<unsigned int>>
    + +
    145 const std::vector<unsigned int> &atomIdsInCurrentProcess,
    +
    146 unsigned int numberElements);
    +
    147
    +
    148
    +
    149 /**
    +
    150 * @brief Initialises local potential
    +
    151 */
    +
    152 void
    + +
    154
    +
    155 void
    + +
    157 double rad,
    +
    158 std::vector<double> &Val);
    +
    159
    +
    160 double
    +
    161 getRadialValenceDensity(unsigned int Znum, double rad);
    +
    162
    +
    163 double
    + +
    165
    +
    166 void
    + +
    168 double rad,
    +
    169 std::vector<double> &Val);
    +
    170
    +
    171 double
    +
    172 getRadialCoreDensity(unsigned int Znum, double rad);
    +
    173
    +
    174 double
    + +
    176
    +
    177 double
    +
    178 getRadialLocalPseudo(unsigned int Znum, double rad);
    +
    179
    +
    180 double
    +
    181 getRmaxLocalPot(unsigned int Znum);
    +
    182
    +
    183 bool
    + +
    185 // Returns the number of Projectors for the given atomID in cooridnates List
    +
    186 unsigned int
    + +
    188 // Returns the Total Number of atoms with support in the processor
    +
    189 unsigned int
    + +
    191 // Returns the atomID in coordinates list for the iAtom index.
    +
    192 unsigned int
    + +
    194
    +
    195
    + + +
    198
    +
    199
    +
    200 const std::shared_ptr<
    + + +
    203
    +
    204 private:
    +
    205 /**
    +
    206 * @brief Converts the periodic image data structure to relevant form for the container class
    +
    207 * @param[in] atomLocations atomic Coordinates
    +
    208 * @param[in] imageIds image IDs of periodic cell
    +
    209 * @param[in] periodicCoords coordinates of image atoms
    +
    210 * @param[out] imageIdsTemp image IDs of periodic cell
    +
    211 * @param[out] imageCoordsTemp coordinates of image atoms
    +
    212 */
    +
    213 void
    +
    214 setImageCoordinates(const std::vector<std::vector<double>> &atomLocations,
    +
    215 const std::vector<int> & imageIds,
    +
    216 const std::vector<std::vector<double>> &periodicCoords,
    +
    217 std::vector<unsigned int> & imageIdsTemp,
    +
    218 std::vector<double> &imageCoordsTemp);
    +
    219 /**
    +
    220 * @brief Creating Density splines for all atomTypes
    +
    221 */
    +
    222 void
    + +
    224
    +
    225 void
    + +
    227 void
    + +
    229 void
    + +
    231
    +
    232 std::shared_ptr<
    + + +
    235#if defined(DFTFE_WITH_DEVICE)
    +
    236 std::shared_ptr<
    + + +
    239#endif
    +
    240 std::vector<std::vector<double>> d_nonLocalPseudoPotentialConstants;
    +
    241 std::map<unsigned int, std::vector<double>>
    + + +
    244
    + +
    246 std::vector<std::shared_ptr<AtomCenteredSphericalFunctionBase>>
    + +
    248 std::shared_ptr<AtomCenteredSphericalFunctionContainer>
    + +
    250 std::map<std::pair<unsigned int, unsigned int>,
    +
    251 std::shared_ptr<AtomCenteredSphericalFunctionBase>>
    + +
    253
    +
    254 // parallel communication objects
    + +
    256 const unsigned int d_this_mpi_process;
    +
    257
    +
    258 // conditional stream object
    +
    259 dealii::ConditionalOStream pcout;
    + + + + + + + +
    267 std::shared_ptr<excManager> d_excManagerPtr;
    +
    268 std::shared_ptr<
    +
    269 dftfe::basis::
    +
    270 FEBasisOperations<ValueType, double, dftfe::utils::MemorySpace::HOST>>
    + +
    272#if defined(DFTFE_WITH_DEVICE)
    +
    273 std::shared_ptr<
    +
    274 dftfe::basis::
    +
    275 FEBasisOperations<ValueType, double, dftfe::utils::MemorySpace::DEVICE>>
    + +
    277#endif
    +
    278
    +
    279 std::map<unsigned int, bool> d_atomTypeCoreFlagMap;
    + + +
    282 std::vector<std::vector<double>> d_atomLocations;
    +
    283 std::set<unsigned int> d_atomTypes;
    +
    284 std::map<unsigned int, std::vector<unsigned int>> d_atomTypesList;
    + +
    286 std::vector<int> d_imageIds;
    +
    287 std::vector<std::vector<double>> d_imagePositions;
    +
    288 unsigned int d_numEigenValues;
    +
    289 unsigned int d_nOMPThreads;
    +
    290
    +
    291 // Creating Object for Atom Centerd Nonlocal Operator
    +
    292 std::shared_ptr<AtomicCenteredNonLocalOperator<ValueType, memorySpace>>
    + +
    294
    +
    295
    +
    296 std::vector<std::shared_ptr<AtomCenteredSphericalFunctionBase>>
    + +
    298 std::vector<std::map<unsigned int,
    +
    299 std::shared_ptr<AtomCenteredSphericalFunctionBase>>>
    + +
    301 std::vector<std::map<unsigned int,
    +
    302 std::shared_ptr<AtomCenteredSphericalFunctionBase>>>
    + +
    304 std::vector<std::map<unsigned int,
    +
    305 std::shared_ptr<AtomCenteredSphericalFunctionBase>>>
    + + +
    308 /// FIXME: eventually it should be a map of atomic number to struct-
    +
    309 /// {valence number, mesh input etc}
    +
    310 std::map<unsigned int, unsigned int> d_atomTypeAtributes;
    +
    311
    +
    312
    +
    313
    +
    314 }; // end of class
    +
    +
    315
    +
    316} // end of namespace dftfe
    +
    317#include "../src/pseudo/oncv/oncvClass.t.cc"
    +
    318#endif // DFTFE_PSEUDOPOTENTIALBASE_H
    + + + + + + + + + + +
    Definition excManager.h:27
    +
    Definition BLASWrapper.h:34
    +
    Definition oncvClass.h:49
    +
    std::map< unsigned int, unsigned int > d_atomTypeAtributes
    Definition oncvClass.h:310
    +
    int d_verbosity
    Definition oncvClass.h:281
    +
    void createAtomCenteredSphericalFunctionsForDensities()
    Creating Density splines for all atomTypes.
    +
    void computeNonlocalPseudoPotentialConstants()
    +
    std::shared_ptr< excManager > d_excManagerPtr
    Definition oncvClass.h:267
    +
    const std::shared_ptr< AtomicCenteredNonLocalOperator< ValueType, memorySpace > > getNonLocalOperator()
    +
    std::vector< std::vector< double > > d_nonLocalPseudoPotentialConstants
    Definition oncvClass.h:240
    +
    unsigned int getAtomIdInCurrentProcessor(unsigned int iAtom)
    +
    const unsigned int d_this_mpi_process
    Definition oncvClass.h:256
    +
    std::map< unsigned int, bool > d_atomTypeCoreFlagMap
    Definition oncvClass.h:279
    +
    void initialiseNonLocalContribution(const std::vector< std::vector< double > > &atomLocations, const std::vector< int > &imageIds, const std::vector< std::vector< double > > &periodicCoords, const std::vector< double > &kPointWeights, const std::vector< double > &kPointCoordinates, const bool updateNonlocalSparsity)
    Initialises all the data members with addresses/values to/of dftClass.
    +
    oncvClass(const MPI_Comm &mpi_comm_parent, const std::string &scratchFolderName, const std::set< unsigned int > &atomTypes, const bool floatingNuclearCharges, const unsigned int nOMPThreads, const std::map< unsigned int, unsigned int > &atomAttributes, const bool reproducibleOutput, const int verbosity, const bool useDevice)
    +
    std::shared_ptr< AtomicCenteredNonLocalOperator< ValueType, memorySpace > > d_nonLocalOperator
    Definition oncvClass.h:293
    +
    unsigned int getTotalNumberOfSphericalFunctionsForAtomId(unsigned int atomId)
    +
    void createAtomCenteredSphericalFunctionsForLocalPotential()
    +
    void initialise(std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, dftfe::utils::MemorySpace::HOST > > basisOperationsHostPtr, std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > BLASWrapperPtrHost, unsigned int densityQuadratureId, unsigned int localContributionQuadratureId, unsigned int sparsityPatternQuadratureId, unsigned int nlpspQuadratureId, unsigned int densityQuadratureIdElectro, std::shared_ptr< excManager > excFunctionalPtr, const std::vector< std::vector< double > > &atomLocations, unsigned int numEigenValues)
    Initialises all the data members with addresses/values to/of dftClass.
    +
    unsigned int d_nlpspQuadratureId
    Definition oncvClass.h:266
    +
    std::vector< std::vector< double > > d_atomLocations
    Definition oncvClass.h:282
    +
    void setImageCoordinates(const std::vector< std::vector< double > > &atomLocations, const std::vector< int > &imageIds, const std::vector< std::vector< double > > &periodicCoords, std::vector< unsigned int > &imageIdsTemp, std::vector< double > &imageCoordsTemp)
    Converts the periodic image data structure to relevant form for the container class.
    +
    double getRmaxLocalPot(unsigned int Znum)
    +
    double getRadialValenceDensity(unsigned int Znum, double rad)
    +
    unsigned int d_localContributionQuadratureId
    Definition oncvClass.h:262
    +
    std::vector< std::vector< double > > d_imagePositions
    Definition oncvClass.h:287
    +
    dftfe::utils::MemoryStorage< ValueType, memorySpace > d_couplingMatrixEntries
    Definition oncvClass.h:243
    +
    void getRadialValenceDensity(unsigned int Znum, double rad, std::vector< double > &Val)
    +
    const MPI_Comm d_mpiCommParent
    Definition oncvClass.h:255
    +
    unsigned int d_nuclearChargeQuadratureIdElectro
    Definition oncvClass.h:263
    +
    std::shared_ptr< AtomCenteredSphericalFunctionContainer > d_atomicProjectorFnsContainer
    Definition oncvClass.h:249
    +
    double getRmaxValenceDensity(unsigned int Znum)
    +
    std::vector< std::shared_ptr< AtomCenteredSphericalFunctionBase > > d_atomicProjectorFnsVector
    Definition oncvClass.h:297
    +
    unsigned int d_sparsityPatternQuadratureId
    Definition oncvClass.h:265
    +
    bool d_HamiltonianCouplingMatrixEntriesUpdated
    Definition oncvClass.h:245
    +
    bool d_floatingNuclearCharges
    Definition oncvClass.h:280
    +
    bool coreNuclearDensityPresent(unsigned int Znum)
    +
    std::set< unsigned int > d_atomTypes
    Definition oncvClass.h:283
    +
    std::vector< std::map< unsigned int, std::shared_ptr< AtomCenteredSphericalFunctionBase > > > d_atomicCoreDensityVector
    Definition oncvClass.h:306
    +
    unsigned int d_densityQuadratureId
    Definition oncvClass.h:261
    +
    void initialiseNonLocalContribution(const std::vector< std::vector< double > > &atomLocations, const std::vector< int > &imageIds, const std::vector< std::vector< double > > &periodicCoords, const std::vector< double > &kPointWeights, const std::vector< double > &kPointCoordinates, const bool updateNonlocalSparsity, const std::map< unsigned int, std::vector< int > > &sparsityPattern, const std::vector< std::vector< dealii::CellId > > &elementIdsInAtomCompactSupport, const std::vector< std::vector< unsigned int > > &elementIndexesInAtomCompactSupport, const std::vector< unsigned int > &atomIdsInCurrentProcess, unsigned int numberElements)
    +
    unsigned int getTotalNumberOfAtomsInCurrentProcessor()
    +
    std::vector< int > d_imageIds
    Definition oncvClass.h:286
    +
    const dftfe::utils::MemoryStorage< ValueType, memorySpace > & getCouplingMatrix()
    +
    std::vector< std::shared_ptr< AtomCenteredSphericalFunctionBase > > d_atomicWaveFnsVector
    Definition oncvClass.h:247
    +
    std::shared_ptr< dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST > > d_BLASWrapperHostPtr
    Definition oncvClass.h:234
    +
    void initLocalPotential()
    Initialises local potential.
    +
    dealii::ConditionalOStream pcout
    Definition oncvClass.h:259
    +
    unsigned int d_densityQuadratureIdElectro
    Definition oncvClass.h:264
    +
    std::map< unsigned int, std::vector< unsigned int > > d_atomTypesList
    Definition oncvClass.h:284
    +
    double getRadialCoreDensity(unsigned int Znum, double rad)
    +
    std::map< unsigned int, std::vector< double > > d_atomicNonLocalPseudoPotentialConstants
    Definition oncvClass.h:242
    +
    unsigned int d_numEigenValues
    Definition oncvClass.h:288
    +
    void createAtomCenteredSphericalFunctionsForProjectors()
    +
    std::vector< std::map< unsigned int, std::shared_ptr< AtomCenteredSphericalFunctionBase > > > d_atomicValenceDensityVector
    Definition oncvClass.h:303
    +
    bool d_reproducible_output
    Definition oncvClass.h:307
    +
    bool d_useDevice
    Definition oncvClass.h:260
    +
    std::vector< std::map< unsigned int, std::shared_ptr< AtomCenteredSphericalFunctionBase > > > d_atomicLocalPotVector
    Definition oncvClass.h:300
    +
    std::shared_ptr< dftfe::basis::FEBasisOperations< ValueType, double, dftfe::utils::MemorySpace::HOST > > d_BasisOperatorHostPtr
    Definition oncvClass.h:271
    +
    double getRmaxCoreDensity(unsigned int Znum)
    +
    std::map< std::pair< unsigned int, unsigned int >, std::shared_ptr< AtomCenteredSphericalFunctionBase > > d_atomicProjectorFnsMap
    Definition oncvClass.h:252
    +
    void getRadialCoreDensity(unsigned int Znum, double rad, std::vector< double > &Val)
    +
    unsigned int d_nOMPThreads
    Definition oncvClass.h:289
    +
    std::string d_dftfeScratchFolderName
    Definition oncvClass.h:285
    +
    double getRadialLocalPseudo(unsigned int Znum, double rad)
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    +
    Definition MemoryStorage.h:33
    + + + +
    Definition FEBasisOperations.h:31
    +
    Definition pseudoPotentialToDftfeConverter.cc:34
    +
    + + + + diff --git a/open.png b/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +DFT-FE: workspace/include/operator.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    operator.h File Reference
    +
    +
    +
    #include "constraintMatrixInfo.h"
    +#include "headers.h"
    +#include "process_grid.h"
    +#include "scalapackWrapper.h"
    +#include "elpaScalaManager.h"
    +#include <vector>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  dftfe::operatorDFTClass< memorySpace >
     Base class for building the DFT operator and the action of operator on a vector. More...
     
    + + + +

    +Namespaces

    namespace  dftfe
     
    +
    + + + + diff --git a/operator_8h_source.html b/operator_8h_source.html new file mode 100644 index 000000000..29ededda2 --- /dev/null +++ b/operator_8h_source.html @@ -0,0 +1,239 @@ + + + + + + + +DFT-FE: workspace/include/operator.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    operator.h
    +
    +
    +Go to the documentation of this file.
    1//
    +
    2// -------------------------------------------------------------------------------------
    +
    3//
    +
    4// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
    +
    5// authors.
    +
    6//
    +
    7// This file is part of the DFT-FE code.
    +
    8//
    +
    9// The DFT-FE code is free software; you can use it, redistribute
    +
    10// it, and/or modify it under the terms of the GNU Lesser General
    +
    11// Public License as published by the Free Software Foundation; either
    +
    12// version 2.1 of the License, or (at your option) any later version.
    +
    13// The full text of the license can be found in the file LICENSE at
    +
    14// the top level of the DFT-FE distribution.
    +
    15//
    +
    16// --------------------------------------------------------------------------------------
    +
    17//
    +
    18// @author Phani Motamarri
    +
    19//
    +
    20#ifndef operatorDFTClass_h
    +
    21#define operatorDFTClass_h
    +
    22
    + +
    24#include "headers.h"
    +
    25#include "process_grid.h"
    +
    26#include "scalapackWrapper.h"
    +
    27#include "elpaScalaManager.h"
    +
    28
    +
    29#include <vector>
    +
    30#if defined(DFTFE_WITH_DEVICE)
    + +
    32# include <DeviceBlasWrapper.h> //FIX ME
    + +
    34#endif
    +
    35
    +
    36namespace dftfe
    +
    37{
    +
    38 /**
    +
    39 * @brief Base class for building the DFT operator and the action of operator on a vector
    +
    40 *
    +
    41 * @author Phani Motamarri, Sambit Das
    +
    42 */
    +
    43 template <dftfe::utils::MemorySpace memorySpace>
    +
    + +
    45 {
    +
    46 //
    +
    47 // methods
    +
    48 //
    +
    49 public:
    +
    50 /**
    +
    51 * @brief Destructor.
    +
    52 */
    +
    53 virtual ~operatorDFTClass(){};
    +
    54
    +
    55#if defined(DFTFE_WITH_DEVICE)
    + +
    57 typename std::conditional<memorySpace ==
    + +
    59 dftUtils::constraintMatrixInfoDevice,
    + +
    61#else
    + +
    63#endif
    +
    64
    + +
    66 getScratchFEMultivector(const unsigned int numVectors,
    +
    67 const unsigned int index) = 0;
    +
    68
    +
    69 virtual void
    +
    70 init(const std::vector<double> &kPointCoordinates,
    +
    71 const std::vector<double> &kPointWeights) = 0;
    +
    72
    +
    73 virtual void
    + +
    75 const unsigned int spinIndex) = 0;
    +
    76
    +
    77 virtual void
    +
    78 reinitNumberWavefunctions(const unsigned int numWfc) = 0;
    +
    79
    +
    80
    +
    81 virtual void
    + +
    83 const double scalarHX,
    +
    84 const double scalarY,
    +
    85 const double scalarX,
    + + +
    88
    +
    89 virtual void
    + + +
    92 const double scalarHX,
    +
    93 const double scalarY,
    +
    94 const double scalarX,
    + + +
    97 const bool skip1 = false,
    +
    98 const bool skip2 = false,
    +
    99 const bool skip3 = false) = 0;
    +
    100
    + + +
    103
    +
    104 virtual constraintInfoClass *
    + +
    106
    +
    107 virtual const MPI_Comm &
    + +
    109
    + + +
    112
    + + +
    115 };
    +
    +
    116} // namespace dftfe
    +
    117#endif
    + +
    Overloads dealii's distribute and distribute_local_to_global functions associated with constraints cl...
    Definition constraintMatrixInfo.h:42
    +
    An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
    Definition MultiVector.h:127
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    +
    virtual void HX(dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &src, const double scalarHX, const double scalarY, const double scalarX, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dst, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)=0
    +
    virtual const dftfe::utils::MemoryStorage< double, memorySpace > & getSqrtMassVector()=0
    +
    virtual void init(const std::vector< double > &kPointCoordinates, const std::vector< double > &kPointWeights)=0
    +
    virtual dftUtils::constraintMatrixInfo * getOverloadedConstraintMatrixHost() const =0
    +
    dftUtils::constraintMatrixInfo constraintInfoClass
    Definition operator.h:62
    +
    virtual void HXCheby(dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &src, const double scalarHX, const double scalarY, const double scalarX, dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > &dst, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false, const bool skip1=false, const bool skip2=false, const bool skip3=false)=0
    +
    virtual void reinitkPointSpinIndex(const unsigned int kPointIndex, const unsigned int spinIndex)=0
    +
    virtual ~operatorDFTClass()
    Destructor.
    Definition operator.h:53
    +
    virtual constraintInfoClass * getOverloadedConstraintMatrix() const =0
    +
    virtual void reinitNumberWavefunctions(const unsigned int numWfc)=0
    +
    virtual const MPI_Comm & getMPICommunicatorDomain()=0
    +
    virtual const dftfe::utils::MemoryStorage< double, memorySpace > & getInverseSqrtMassVector()=0
    +
    virtual dftfe::linearAlgebra::MultiVector< dataTypes::number, memorySpace > & getScratchFEMultivector(const unsigned int numVectors, const unsigned int index)=0
    +
    Definition MemoryStorage.h:33
    + + + + + + +
    Definition pseudoPotentialToDftfeConverter.cc:34
    + + +
    + + + + diff --git a/plus.svg b/plus.svg new file mode 100644 index 000000000..075201655 --- /dev/null +++ b/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/plusd.svg b/plusd.svg new file mode 100644 index 000000000..0c65bfe94 --- /dev/null +++ b/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/poisson_solver_problem_8h.html b/poisson_solver_problem_8h.html new file mode 100644 index 000000000..aa78d8fb7 --- /dev/null +++ b/poisson_solver_problem_8h.html @@ -0,0 +1,108 @@ + + + + + + + +DFT-FE: workspace/include/poissonSolverProblem.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    poissonSolverProblem.h File Reference
    +
    +
    + +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >
     poisson solver problem class template. template parameter FEOrderElectro is the finite element polynomial order. FEOrder template parameter is used in conjunction with FEOrderElectro to determine the order of the Gauss quadrature rule More...
     
    + + + +

    +Namespaces

    namespace  dftfe
     
    +
    + + + + diff --git a/poisson_solver_problem_8h_source.html b/poisson_solver_problem_8h_source.html new file mode 100644 index 000000000..e4635e154 --- /dev/null +++ b/poisson_solver_problem_8h_source.html @@ -0,0 +1,439 @@ + + + + + + + +DFT-FE: workspace/include/poissonSolverProblem.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    poissonSolverProblem.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
    +
    4// authors.
    +
    5//
    +
    6// This file is part of the DFT-FE code.
    +
    7//
    +
    8// The DFT-FE code is free software; you can use it, redistribute
    +
    9// it, and/or modify it under the terms of the GNU Lesser General
    +
    10// Public License as published by the Free Software Foundation; either
    +
    11// version 2.1 of the License, or (at your option) any later version.
    +
    12// The full text of the license can be found in the file LICENSE at
    +
    13// the top level of the DFT-FE distribution.
    +
    14//
    +
    15// ---------------------------------------------------------------------
    +
    16//
    +
    17
    +
    18
    +
    19#ifndef poissonSolverProblem_H_
    +
    20#define poissonSolverProblem_H_
    +
    21
    + + +
    24#include "FEBasisOperations.h"
    +
    25
    +
    26namespace dftfe
    +
    27{
    +
    28 /**
    +
    29 * @brief poisson solver problem class template. template parameter FEOrderElectro
    +
    30 * is the finite element polynomial order. FEOrder template parameter is used
    +
    31 * in conjunction with FEOrderElectro to determine the order of the Gauss
    +
    32 * quadrature rule
    +
    33 *
    +
    34 * @author Shiva Rudraraju, Phani Motamarri, Sambit Das
    +
    35 */
    +
    36 template <unsigned int FEOrder, unsigned int FEOrderElectro>
    +
    + +
    38 {
    +
    39 public:
    +
    40 /// Constructor
    + +
    42
    +
    43
    +
    44 /**
    +
    45 * @brief clears all datamembers and reset to original state.
    +
    46 *
    +
    47 *
    +
    48 */
    +
    49 void
    + +
    51
    +
    52
    +
    53 /**
    +
    54 * @brief reinitialize data structures for total electrostatic potential solve.
    +
    55 *
    +
    56 * For Hartree electrostatic potential solve give an empty map to the atoms
    +
    57 * parameter.
    +
    58 *
    +
    59 */
    +
    60 void
    + +
    62 const std::shared_ptr<
    + +
    64 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
    + + + + + + + + + +
    74 const dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>
    +
    75 & rhoValues,
    + + +
    78 const bool smearedNuclearCharges = false,
    + + + + + + +
    85
    +
    86
    +
    87 /**
    +
    88 * @brief get the reference to x field
    +
    89 *
    +
    90 * @return reference to x field. Assumes x field data structure is already initialized
    +
    91 */
    + + +
    94
    +
    95 /**
    +
    96 * @brief Compute A matrix multipled by x.
    +
    97 *
    +
    98 */
    +
    99 void
    + +
    101
    +
    102 /**
    +
    103 * @brief Compute right hand side vector for the problem Ax = rhs.
    +
    104 *
    +
    105 * @param rhs vector for the right hand side values
    +
    106 */
    +
    107 void
    + +
    109
    +
    110 /**
    +
    111 * @brief Jacobi preconditioning.
    +
    112 *
    +
    113 */
    +
    114 void
    + + +
    117 const double omega) const;
    +
    118
    +
    119 /**
    +
    120 * @brief distribute x to the constrained nodes.
    +
    121 *
    +
    122 */
    +
    123 void
    + +
    125
    +
    126 /// function needed by dealii to mimic SparseMatrix for Jacobi
    +
    127 /// preconditioning
    +
    128 void
    +
    +
    129 subscribe(std::atomic<bool> *const validity,
    +
    130 const std::string & identifier = "") const {};
    +
    +
    131
    +
    132 /// function needed by dealii to mimic SparseMatrix for Jacobi
    +
    133 /// preconditioning
    +
    134 void
    +
    +
    135 unsubscribe(std::atomic<bool> *const validity,
    +
    136 const std::string & identifier = "") const {};
    +
    +
    137
    +
    138 /// function needed by dealii to mimic SparseMatrix
    +
    139 bool
    +
    +
    140 operator!=(double val) const
    +
    141 {
    +
    142 return true;
    +
    143 };
    +
    +
    144
    +
    145 private:
    +
    146 /**
    +
    147 * @brief required for the cell_loop operation in dealii's MatrixFree class
    +
    148 *
    +
    149 */
    +
    150 void
    +
    151 AX(const dealii::MatrixFree<3, double> & matrixFreeData,
    + + +
    154 const std::pair<unsigned int, unsigned int> &cell_range) const;
    +
    155
    +
    156
    +
    157 /**
    +
    158 * @brief Compute the diagonal of A.
    +
    159 *
    +
    160 */
    +
    161 void
    + +
    163
    +
    164 /**
    +
    165 * @brief Compute mean value constraint which is required in case of fully periodic
    +
    166 * boundary conditions.
    +
    167 *
    +
    168 */
    +
    169 void
    + +
    171
    +
    172
    +
    173 /**
    +
    174 * @brief Mean value constraint distibute
    +
    175 *
    +
    176 */
    +
    177 void
    + +
    179
    +
    180 /**
    +
    181 * @brief Mean value constraint distibute slave to master
    +
    182 *
    +
    183 */
    +
    184 void
    + + +
    187
    +
    188
    +
    189 /**
    +
    190 * @brief Mean value constraint set zero
    +
    191 *
    +
    192 */
    +
    193 void
    + +
    195
    +
    196
    +
    197 /// storage for diagonal of the A matrix
    + +
    199
    +
    200 /// storage for smeared charge rhs in case of total potential solve (doesn't
    +
    201 /// change every scf)
    + +
    203
    +
    204 /// pointer to dealii MatrixFree object
    +
    205 const dealii::MatrixFree<3, double> *d_matrixFreeDataPtr;
    +
    206
    +
    207 /// pointer to the x vector being solved for
    + +
    209
    +
    210 /// pointer to dealii dealii::AffineConstraints<double> object
    +
    211 const dealii::AffineConstraints<double> *d_constraintMatrixPtr;
    +
    212
    +
    213 /// matrix free index required to access the DofHandler and
    +
    214 /// dealii::AffineConstraints<double> objects corresponding to the problem
    + +
    216
    +
    217 /// matrix free quadrature index
    + +
    219
    +
    220 /// matrix free quadrature index
    + +
    222
    +
    223 /// pointer to electron density cell quadrature data
    + + +
    226 /// pointer to smeared charge cell quadrature data
    +
    227 const std::map<dealii::CellId, std::vector<double>>
    + +
    229
    +
    230 ///
    + +
    232
    +
    233 /// pointer to map between global dof index in current processor and the
    +
    234 /// atomic charge on that dof
    +
    235 const std::map<dealii::types::global_dof_index, double> *d_atomsPtr;
    +
    236
    +
    237 /// shape function gradient integral storage
    + +
    239
    +
    240 /// storage for mean value constraint vector
    + +
    242
    +
    243 /// boolean flag to query if mean value constraint datastructures are
    +
    244 /// precomputed
    + +
    246
    +
    247 ///
    + +
    249
    +
    250 ///
    + +
    252
    +
    253 ///
    + +
    255
    +
    256 ///
    + +
    258
    +
    259 /// mean value constraints: mean value constrained node
    +
    260 dealii::types::global_dof_index d_meanValueConstraintNodeId;
    +
    261
    +
    262 /// mean value constraints: constrained proc id containing the mean value
    +
    263 /// constrained node
    + +
    265
    +
    266 /// duplicate constraints object with flattened maps for faster access
    + +
    268 std::shared_ptr<
    +
    269 dftfe::basis::
    +
    270 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
    + +
    272 ///
    + +
    274
    + +
    276 const unsigned int n_mpi_processes;
    +
    277 const unsigned int this_mpi_process;
    +
    278 dealii::ConditionalOStream pcout;
    +
    279 };
    +
    +
    280
    +
    281} // namespace dftfe
    +
    282#endif // poissonSolverProblem_H_
    + +
    Abstract class for linear solve problems to be used with the dealiiLinearSolver interface.
    Definition dealiiLinearSolverProblem.h:31
    +
    Overloads dealii's distribute and distribute_local_to_global functions associated with constraints cl...
    Definition constraintMatrixInfo.h:42
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    +
    poisson solver problem class template. template parameter FEOrderElectro is the finite element polyno...
    Definition poissonSolverProblem.h:38
    +
    unsigned int d_matrixFreeQuadratureComponentAX
    matrix free quadrature index
    Definition poissonSolverProblem.h:221
    +
    const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > * d_rhoValuesPtr
    pointer to electron density cell quadrature data
    Definition poissonSolverProblem.h:225
    +
    distributedCPUVec< double > & getX()
    get the reference to x field
    +
    void AX(const dealii::MatrixFree< 3, double > &matrixFreeData, distributedCPUVec< double > &dst, const distributedCPUVec< double > &src, const std::pair< unsigned int, unsigned int > &cell_range) const
    required for the cell_loop operation in dealii's MatrixFree class
    +
    void subscribe(std::atomic< bool > *const validity, const std::string &identifier="") const
    Definition poissonSolverProblem.h:129
    +
    const dealii::AffineConstraints< double > * d_constraintMatrixPtr
    pointer to dealii dealii::AffineConstraints<double> object
    Definition poissonSolverProblem.h:211
    +
    bool d_isFastConstraintsInitialized
    Definition poissonSolverProblem.h:273
    +
    void clear()
    clears all datamembers and reset to original state.
    +
    const MPI_Comm mpi_communicator
    Definition poissonSolverProblem.h:275
    +
    unsigned int d_matrixFreeVectorComponent
    Definition poissonSolverProblem.h:215
    +
    void computeMeanValueConstraint()
    Compute mean value constraint which is required in case of fully periodic boundary conditions.
    +
    void distributeX()
    distribute x to the constrained nodes.
    +
    void computeDiagonalA()
    Compute the diagonal of A.
    +
    distributedCPUVec< double > d_diagonalA
    storage for diagonal of the A matrix
    Definition poissonSolverProblem.h:198
    +
    void meanValueConstraintDistributeSlaveToMaster(distributedCPUVec< double > &vec) const
    Mean value constraint distibute slave to master.
    +
    void meanValueConstraintSetZero(distributedCPUVec< double > &vec) const
    Mean value constraint set zero.
    +
    unsigned int d_smearedChargeQuadratureId
    Definition poissonSolverProblem.h:231
    +
    void computeRhs(distributedCPUVec< double > &rhs)
    Compute right hand side vector for the problem Ax = rhs.
    +
    void meanValueConstraintDistribute(distributedCPUVec< double > &vec) const
    Mean value constraint distibute.
    +
    bool d_isStoreSmearedChargeRhs
    Definition poissonSolverProblem.h:251
    +
    unsigned int d_meanValueConstraintProcId
    Definition poissonSolverProblem.h:264
    +
    dealii::ConditionalOStream pcout
    Definition poissonSolverProblem.h:278
    +
    std::vector< double > d_cellShapeFunctionGradientIntegralFlattened
    shape function gradient integral storage
    Definition poissonSolverProblem.h:238
    +
    distributedCPUVec< double > d_rhsSmearedCharge
    Definition poissonSolverProblem.h:202
    +
    const dealii::MatrixFree< 3, double > * d_matrixFreeDataPtr
    pointer to dealii MatrixFree object
    Definition poissonSolverProblem.h:205
    +
    const unsigned int n_mpi_processes
    Definition poissonSolverProblem.h:276
    +
    const std::map< dealii::CellId, std::vector< double > > * d_smearedChargeValuesPtr
    pointer to smeared charge cell quadrature data
    Definition poissonSolverProblem.h:228
    +
    std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > d_basisOperationsPtr
    Definition poissonSolverProblem.h:271
    +
    void reinit(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, distributedCPUVec< double > &x, const dealii::AffineConstraints< double > &constraintMatrix, const unsigned int matrixFreeVectorComponent, const unsigned int matrixFreeQuadratureComponentRhsDensity, const unsigned int matrixFreeQuadratureComponentAX, const std::map< dealii::types::global_dof_index, double > &atoms, const std::map< dealii::CellId, std::vector< double > > &smearedChargeValues, const unsigned int smearedChargeQuadratureId, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoValues, const bool isComputeDiagonalA=true, const bool isComputeMeanValueConstraints=false, const bool smearedNuclearCharges=false, const bool isRhoValues=true, const bool isGradSmearedChargeRhs=false, const unsigned int smearedChargeGradientComponentId=0, const bool storeSmearedChargeRhs=false, const bool reuseSmearedChargeRhs=false, const bool reinitializeFastConstraints=false)
    reinitialize data structures for total electrostatic potential solve.
    +
    bool d_isMeanValueConstraintComputed
    Definition poissonSolverProblem.h:245
    +
    void vmult(distributedCPUVec< double > &Ax, distributedCPUVec< double > &x)
    Compute A matrix multipled by x.
    +
    bool operator!=(double val) const
    function needed by dealii to mimic SparseMatrix
    Definition poissonSolverProblem.h:140
    +
    dealii::types::global_dof_index d_meanValueConstraintNodeId
    mean value constraints: mean value constrained node
    Definition poissonSolverProblem.h:260
    +
    void unsubscribe(std::atomic< bool > *const validity, const std::string &identifier="") const
    Definition poissonSolverProblem.h:135
    +
    distributedCPUVec< double > d_meanValueConstraintVec
    storage for mean value constraint vector
    Definition poissonSolverProblem.h:241
    +
    distributedCPUVec< double > * d_xPtr
    pointer to the x vector being solved for
    Definition poissonSolverProblem.h:208
    +
    unsigned int d_matrixFreeQuadratureComponentRhsDensity
    matrix free quadrature index
    Definition poissonSolverProblem.h:218
    +
    unsigned int d_smearedChargeGradientComponentId
    Definition poissonSolverProblem.h:257
    +
    bool d_isReuseSmearedChargeRhs
    Definition poissonSolverProblem.h:254
    +
    poissonSolverProblem(const MPI_Comm &mpi_comm)
    Constructor.
    +
    dftUtils::constraintMatrixInfo d_constraintsInfo
    duplicate constraints object with flattened maps for faster access
    Definition poissonSolverProblem.h:267
    +
    bool d_isGradSmearedChargeRhs
    Definition poissonSolverProblem.h:248
    +
    const std::map< dealii::types::global_dof_index, double > * d_atomsPtr
    Definition poissonSolverProblem.h:235
    +
    const unsigned int this_mpi_process
    Definition poissonSolverProblem.h:277
    +
    void precondition_Jacobi(distributedCPUVec< double > &dst, const distributedCPUVec< double > &src, const double omega) const
    Jacobi preconditioning.
    +
    Definition MemoryStorage.h:33
    + + +
    Definition FEBasisOperations.h:31
    +
    Definition pseudoPotentialToDftfeConverter.cc:34
    +
    dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
    Definition headers.h:97
    +
    + + + + diff --git a/poisson_solver_problem_device_8h.html b/poisson_solver_problem_device_8h.html new file mode 100644 index 000000000..71896d59c --- /dev/null +++ b/poisson_solver_problem_device_8h.html @@ -0,0 +1,90 @@ + + + + + + + +DFT-FE: workspace/include/poissonSolverProblemDevice.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    poissonSolverProblemDevice.h File Reference
    +
    + + + + + diff --git a/poisson_solver_problem_device_8h_source.html b/poisson_solver_problem_device_8h_source.html new file mode 100644 index 000000000..3924234ab --- /dev/null +++ b/poisson_solver_problem_device_8h_source.html @@ -0,0 +1,449 @@ + + + + + + + +DFT-FE: workspace/include/poissonSolverProblemDevice.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    poissonSolverProblemDevice.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
    +
    4// authors.
    +
    5//
    +
    6// This file is part of the DFT-FE code.
    +
    7//
    +
    8// The DFT-FE code is free software; you can use it, redistribute
    +
    9// it, and/or modify it under the terms of the GNU Lesser General
    +
    10// Public License as published by the Free Software Foundation; either
    +
    11// version 2.1 of the License, or (at your option) any later version.
    +
    12// The full text of the license can be found in the file LICENSE at
    +
    13// the top level of the DFT-FE distribution.
    +
    14//
    +
    15// ---------------------------------------------------------------------
    +
    16//
    +
    17
    +
    18#if defined(DFTFE_WITH_DEVICE)
    +
    19# ifndef poissonSolverProblemDevice_H_
    +
    20# define poissonSolverProblemDevice_H_
    +
    21
    + + +
    24# include <constraintMatrixInfo.h>
    +
    25# include <constants.h>
    +
    26# include <dftUtils.h>
    +
    27# include <headers.h>
    +
    28# include "FEBasisOperations.h"
    +
    29# include "BLASWrapper.h"
    +
    30
    +
    31namespace dftfe
    +
    32{
    +
    33 /**
    +
    34 * @brief poisson solver problem device class template. template parameter FEOrderElectro
    +
    35 * is the finite element polynomial order. FEOrder template parameter is used
    +
    36 * in conjunction with FEOrderElectro to determine the order of the Gauss
    +
    37 * quadrature rule. The class should not be used with FLOATING NUCLEAR
    +
    38 * CHARGES = false or POINT WISE DIRICHLET CONSTRAINT = true
    +
    39 *
    +
    40 * @author Gourab Panigrahi
    +
    41 */
    +
    42 template <unsigned int FEOrder, unsigned int FEOrderElectro>
    +
    43 class poissonSolverProblemDevice : public linearSolverProblemDevice
    +
    44 {
    +
    45 public:
    +
    46 /// Constructor
    +
    47 poissonSolverProblemDevice(const MPI_Comm &mpi_comm);
    +
    48
    +
    49 /**
    +
    50 * @brief clears all datamembers and reset to original state.
    +
    51 *
    +
    52 *
    +
    53 */
    +
    54 void
    +
    55 clear();
    +
    56
    +
    57 /**
    +
    58 * @brief reinitialize data structures for total electrostatic potential solve.
    +
    59 *
    +
    60 * For Hartree electrostatic potential solve give an empty map to the atoms
    +
    61 * parameter.
    +
    62 *
    +
    63 */
    +
    64 void
    +
    65 reinit(
    +
    66 const std::shared_ptr<
    + +
    68 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
    +
    69 & basisOperationsPtr,
    +
    70 distributedCPUVec<double> & x,
    +
    71 const dealii::AffineConstraints<double> &constraintMatrix,
    +
    72 const unsigned int matrixFreeVectorComponent,
    +
    73 const unsigned int matrixFreeQuadratureComponentRhsDensity,
    +
    74 const unsigned int matrixFreeQuadratureComponentAX,
    +
    75 const std::map<dealii::types::global_dof_index, double> &atoms,
    +
    76 const std::map<dealii::CellId, std::vector<double>> &smearedChargeValues,
    +
    77 const unsigned int smearedChargeQuadratureId,
    +
    78 const dftfe::utils::MemoryStorage<double, dftfe::utils::MemorySpace::HOST>
    +
    79 &rhoValues,
    +
    80 const std::shared_ptr<
    +
    81 dftfe::linearAlgebra::BLASWrapper<dftfe::utils::MemorySpace::DEVICE>>
    +
    82 BLASWrapperPtr,
    +
    83 const bool isComputeDiagonalA = true,
    +
    84 const bool isComputeMeanValueConstraints = false,
    +
    85 const bool smearedNuclearCharges = false,
    +
    86 const bool isRhoValues = true,
    +
    87 const bool isGradSmearedChargeRhs = false,
    +
    88 const unsigned int smearedChargeGradientComponentId = 0,
    +
    89 const bool storeSmearedChargeRhs = false,
    +
    90 const bool reuseSmearedChargeRhs = false,
    +
    91 const bool reinitializeFastConstraints = false);
    +
    92
    +
    93 /**
    +
    94 * @brief Compute A matrix multipled by x.
    +
    95 *
    +
    96 */
    +
    97 void
    +
    98 computeAX(distributedDeviceVec<double> &Ax,
    +
    99 distributedDeviceVec<double> &x);
    +
    100
    +
    101 /**
    +
    102 * @brief Compute right hand side vector for the problem Ax = rhs.
    +
    103 *
    +
    104 * @param rhs vector for the right hand side values
    +
    105 */
    +
    106 void
    +
    107 computeRhs(distributedCPUVec<double> &rhs);
    +
    108
    +
    109 /**
    +
    110 * @brief get the reference to x field
    +
    111 *
    +
    112 * @return reference to x field. Assumes x field data structure is already initialized
    +
    113 */
    +
    114 distributedDeviceVec<double> &
    +
    115 getX();
    +
    116
    +
    117 /**
    +
    118 * @brief get the reference to Preconditioner
    +
    119 *
    +
    120 * @return reference to Preconditioner
    +
    121 */
    +
    122 distributedDeviceVec<double> &
    +
    123 getPreconditioner();
    +
    124
    +
    125 /**
    +
    126 * @brief Copies x from Device to Host
    +
    127 *
    +
    128 */
    +
    129 void
    +
    130 copyXfromDeviceToHost();
    +
    131
    +
    132 /**
    +
    133 * @brief distribute x to the constrained nodes.
    +
    134 *
    +
    135 */
    +
    136 void
    +
    137 distributeX();
    +
    138
    +
    139 /// function needed by dealii to mimic SparseMatrix for Jacobi
    +
    140 /// preconditioning
    +
    141 void
    +
    142 subscribe(std::atomic<bool> *const validity,
    +
    143 const std::string & identifier = "") const {};
    +
    144
    +
    145 /// function needed by dealii to mimic SparseMatrix for Jacobi
    +
    146 /// preconditioning
    +
    147 void
    +
    148 unsubscribe(std::atomic<bool> *const validity,
    +
    149 const std::string & identifier = "") const {};
    +
    150
    +
    151 /// function needed by dealii to mimic SparseMatrix
    +
    152 bool
    +
    153 operator!=(double val) const
    +
    154 {
    +
    155 return true;
    +
    156 };
    +
    157
    +
    158 void
    +
    159 setX();
    +
    160
    +
    161
    +
    162 private:
    +
    163 /**
    +
    164 * @brief Sets up the matrixfree shapefunction, gradient, jacobian and map for matrixfree computeAX
    +
    165 *
    +
    166 */
    +
    167 void
    +
    168 setupMatrixFree();
    +
    169
    +
    170 /**
    +
    171 * @brief Sets up the constraints matrix
    +
    172 *
    +
    173 */
    +
    174 void
    +
    175 setupconstraints();
    +
    176
    +
    177 /**
    +
    178 * @brief Compute the diagonal of A.
    +
    179 *
    +
    180 */
    +
    181 void
    +
    182 computeDiagonalA();
    +
    183
    +
    184 /**
    +
    185 * @brief Compute mean value constraint which is required in case of fully periodic
    +
    186 * boundary conditions.
    +
    187 *
    +
    188 */
    +
    189 void
    +
    190 computeMeanValueConstraint();
    +
    191
    +
    192 /**
    +
    193 * @brief Mean value constraint distibute
    +
    194 *
    +
    195 */
    +
    196 void
    +
    197 meanValueConstraintDistribute(distributedDeviceVec<double> &vec) const;
    +
    198
    +
    199 /**
    +
    200 * @brief Mean value constraint distibute slave to master
    +
    201 *
    +
    202 */
    +
    203 void
    +
    204 meanValueConstraintDistributeSlaveToMaster(
    +
    205 distributedDeviceVec<double> &vec) const;
    +
    206
    +
    207 void
    +
    208 meanValueConstraintDistributeSlaveToMaster(
    +
    209 distributedCPUVec<double> &vec) const;
    +
    210
    +
    211 /**
    +
    212 * @brief Mean value constraint set zero
    +
    213 *
    +
    214 */
    +
    215 void
    +
    216 meanValueConstraintSetZero(distributedDeviceVec<double> &vec) const;
    +
    217
    +
    218 void
    +
    219 meanValueConstraintSetZero(distributedCPUVec<double> &vec) const;
    +
    220
    +
    221 /// storage for diagonal of the A matrix
    +
    222 distributedCPUVec<double> d_diagonalA;
    +
    223 distributedDeviceVec<double> d_diagonalAdevice;
    +
    224
    +
    225 /// storage for smeared charge rhs in case of total potential solve (doesn't
    +
    226 /// change every scf)
    +
    227 distributedCPUVec<double> d_rhsSmearedCharge;
    +
    228
    +
    229 /// pointer to dealii MatrixFree object
    +
    230 const dealii::MatrixFree<3, double> *d_matrixFreeDataPtr;
    +
    231
    +
    232 /// pointer to the x vector being solved for
    +
    233 distributedCPUVec<double> * d_xPtr;
    +
    234 distributedDeviceVec<double> d_xDevice;
    +
    235
    +
    236 // number of cells local to each mpi task, number of degrees of freedom
    +
    237 // locally owned and total degrees of freedom including ghost
    +
    238 int d_nLocalCells, d_xLocalDof, d_xLen;
    +
    239
    +
    240 // shape function value, gradient, jacobian and map for matrixfree
    + +
    242 d_shapeFunction, d_jacobianFactor;
    + +
    244
    +
    245 // Pointers to shape function value, gradient, jacobian and map for
    +
    246 // matrixfree
    +
    247 double *d_shapeFunctionPtr;
    +
    248 double *d_jacobianFactorPtr;
    +
    249 int * d_mapPtr;
    +
    250
    +
    251
    +
    252 // constraints
    +
    253 dftUtils::constraintMatrixInfoDevice d_constraintsTotalPotentialInfo,
    +
    254 d_inhomogenousConstraintsTotalPotentialInfo;
    +
    255
    +
    256 /// pointer to dealii dealii::AffineConstraints<double> object
    +
    257 const dealii::AffineConstraints<double> *d_constraintMatrixPtr;
    +
    258
    +
    259 /// matrix free index required to access the DofHandler and
    +
    260 /// dealii::AffineConstraints<double> objects corresponding to the problem
    +
    261 unsigned int d_matrixFreeVectorComponent;
    +
    262
    +
    263 /// matrix free quadrature index
    +
    264 unsigned int d_matrixFreeQuadratureComponentRhsDensity;
    +
    265
    +
    266 /// matrix free quadrature index
    +
    267 unsigned int d_matrixFreeQuadratureComponentAX;
    +
    268
    +
    269 /// pointer to electron density cell quadrature data
    + +
    271 *d_rhoValuesPtr;
    +
    272
    +
    273 /// pointer to smeared charge cell quadrature data
    +
    274 const std::map<dealii::CellId, std::vector<double>>
    +
    275 *d_smearedChargeValuesPtr;
    +
    276
    +
    277 ///
    +
    278 unsigned int d_smearedChargeQuadratureId;
    +
    279
    +
    280 /// pointer to map between global dof index in current processor and the
    +
    281 /// atomic charge on that dof
    +
    282 const std::map<dealii::types::global_dof_index, double> *d_atomsPtr;
    +
    283
    +
    284 /// shape function gradient integral storage
    +
    285 std::vector<double> d_cellShapeFunctionGradientIntegralFlattened;
    +
    286
    +
    287 /// storage for mean value constraint vector
    +
    288 distributedCPUVec<double> d_meanValueConstraintVec;
    +
    289
    +
    290 /// storage for mean value constraint device vector
    +
    291 distributedDeviceVec<double> d_meanValueConstraintDeviceVec;
    +
    292
    +
    293 /// boolean flag to query if mean value constraint datastructures are
    +
    294 /// precomputed
    +
    295 bool d_isMeanValueConstraintComputed;
    +
    296
    +
    297 ///
    +
    298 bool d_isGradSmearedChargeRhs;
    +
    299
    +
    300 ///
    +
    301 bool d_isStoreSmearedChargeRhs;
    +
    302
    +
    303 ///
    +
    304 bool d_isReuseSmearedChargeRhs;
    +
    305
    +
    306 ///
    +
    307 unsigned int d_smearedChargeGradientComponentId;
    +
    308
    +
    309 /// mean value constraints: mean value constrained node
    +
    310 dealii::types::global_dof_index d_meanValueConstraintNodeId;
    +
    311
    +
    312 /// mean value constrained node local id
    +
    313 dealii::types::global_dof_index d_meanValueConstraintNodeIdLocal;
    +
    314
    +
    315 /// mean value constraints: constrained proc id containing the mean value
    +
    316 /// constrained node
    +
    317 unsigned int d_meanValueConstraintProcId;
    +
    318
    +
    319 /// duplicate constraints object with flattened maps for faster access
    +
    320 dftUtils::constraintMatrixInfo d_constraintsInfo;
    +
    321 std::shared_ptr<
    +
    322 dftfe::basis::
    +
    323 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
    +
    324 d_basisOperationsPtr;
    +
    325 ///
    +
    326 std::shared_ptr<
    + +
    328 d_BLASWrapperPtr;
    +
    329 bool d_isFastConstraintsInitialized;
    +
    330 bool d_isHomogenousConstraintsInitialized;
    +
    331
    +
    332 const MPI_Comm mpi_communicator;
    +
    333 const unsigned int n_mpi_processes;
    +
    334 const unsigned int this_mpi_process;
    +
    335 dealii::ConditionalOStream pcout;
    +
    336 };
    +
    337
    +
    338} // namespace dftfe
    +
    339# endif // poissonSolverProblemDevice_H_
    +
    340#endif
    + + +
    Definition BLASWrapper.h:34
    +
    Definition MemoryStorage.h:33
    + + + + + + +
    Definition FEBasisOperations.h:31
    +
    MemorySpace
    Definition MemorySpaceType.h:33
    + + +
    Definition pseudoPotentialToDftfeConverter.cc:34
    +
    dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
    Definition headers.h:97
    +
    + + + + diff --git a/process__grid_8h.html b/process__grid_8h.html new file mode 100644 index 000000000..c35a96c7c --- /dev/null +++ b/process__grid_8h.html @@ -0,0 +1,105 @@ + + + + + + + +DFT-FE: workspace/include/process_grid.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    process_grid.h File Reference
    +
    +
    +
    #include "headers.h"
    +
    +

    Go to the source code of this file.

    + + + + +

    +Classes

    class  dftfe::ProcessGrid
     
    + + + +

    +Namespaces

    namespace  dftfe
     
    +
    + + + + diff --git a/process__grid_8h_source.html b/process__grid_8h_source.html new file mode 100644 index 000000000..bf8a66b19 --- /dev/null +++ b/process__grid_8h_source.html @@ -0,0 +1,382 @@ + + + + + + + +DFT-FE: workspace/include/process_grid.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    process_grid.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (C) 2017 - 2019 by the deal.II authors
    +
    4//
    +
    5// This file is part of the deal.II library.
    +
    6//
    +
    7// The deal.II library is free software; you can use it, redistribute
    +
    8// it, and/or modify it under the terms of the GNU Lesser General
    +
    9// Public License as published by the Free Software Foundation; either
    +
    10// version 2.1 of the License, or (at your option) any later version.
    +
    11// The full text of the license can be found in the file LICENSE.md at
    +
    12// the top level directory of deal.II.
    +
    13//
    +
    14// ---------------------------------------------------------------------
    +
    15
    +
    16#ifndef dftfe_process_grid_h
    +
    17#define dftfe_process_grid_h
    +
    18
    +
    19#include "headers.h"
    +
    20
    +
    21
    +
    22namespace dftfe
    +
    23{
    +
    24// Forward declaration of class ScaLAPACKMatrix for ProcessGrid
    +
    25#ifndef DOXYGEN
    +
    26 template <typename NumberType>
    +
    27 class ScaLAPACKMatrix;
    +
    28#endif
    +
    29
    +
    30 /**
    +
    31 * A class taking care of setting up a two-dimensional processor grid.
    +
    32 * For example an MPI communicator with 5 processes can be arranged into a
    +
    33 * 2x2 grid with the 5-th processor being inactive:
    +
    34 * @code
    +
    35 * | 0 | 1
    +
    36 * -----| ------- |-----
    +
    37 * 0 | P0 | P1
    +
    38 * | |
    +
    39 * -----| ------- |-----
    +
    40 * 1 | P2 | P3
    +
    41 * @endcode
    +
    42 *
    +
    43 * A shared pointer to this class is provided to ScaLAPACKMatrix matrices to
    +
    44 * perform block-cyclic distribution.
    +
    45 *
    +
    46 * Note that this class allows to setup a process grid which has fewer
    +
    47 * MPI cores than the total number of cores in the communicator.
    +
    48 *
    +
    49 * Currently the only place where one would use a ProcessGrid object is
    +
    50 * in connection with a ScaLAPACKMatrix object.
    +
    51 */
    +
    + +
    53 {
    +
    54 public:
    +
    55 // Declare class ScaLAPACK as friend to provide access to private members.
    +
    56 template <typename NumberType>
    + +
    58
    +
    59 /**
    +
    60 * Constructor for a process grid with @p n_rows and @p n_columns for a given @p mpi_communicator.
    +
    61 * The product of rows and columns should be less or equal to the total
    +
    62 * number of cores
    +
    63 * in the @p mpi_communicator.
    +
    64 */
    + +
    66 const unsigned int n_rows,
    +
    67 const unsigned int n_columns);
    +
    68
    +
    69 /**
    +
    70 * Constructor for a process grid for a given @p mpi_communicator.
    +
    71 * In this case the process grid is heuristically chosen based on the
    +
    72 * dimensions and block-cyclic distribution of a target matrix provided
    +
    73 * in @p n_rows_matrix, @p n_columns_matrix, @p row_block_size and @p column_block_size.
    +
    74 *
    +
    75 * The maximum number of MPI cores one can utilize is
    +
    76 * $\min\{\frac{M}{MB}\frac{N}{NB}, Np\}$, where $M,N$ are the matrix
    +
    77 * dimension and $MB,NB$ are the block sizes and $Np$ is the number of
    +
    78 * processes in the @p mpi_communicator. This function then creates a 2D processor grid
    +
    79 * assuming the ratio between number of process row $p$ and columns $q$ to
    +
    80 * be equal the ratio between matrix dimensions $M$ and $N$.
    +
    81 *
    +
    82 * For example, a square matrix $640x640$ with the block size $32$
    +
    83 * and the @p mpi_communicator with 11 cores will result in the $3x3$
    +
    84 * process grid.
    +
    85 */
    + +
    87 const unsigned int n_rows_matrix,
    +
    88 const unsigned int n_columns_matrix,
    +
    89 const unsigned int row_block_size,
    +
    90 const unsigned int column_block_size);
    +
    91
    +
    92 /**
    +
    93 * Destructor.
    +
    94 */
    + +
    96
    +
    97 /**
    +
    98 * Return the number of rows in the processes grid.
    +
    99 */
    +
    100 unsigned int
    +
    101 get_process_grid_rows() const;
    +
    102
    +
    103 /**
    +
    104 * Return the number of columns in the processes grid.
    +
    105 */
    +
    106 unsigned int
    + +
    108
    +
    109 /**
    +
    110 * Return row of this process in the process grid.
    +
    111 *
    +
    112 * It's negative for inactive processes.
    +
    113 */
    +
    114 int
    +
    115 get_this_process_row() const;
    +
    116
    +
    117 /**
    +
    118 * Return column of this process in the process grid.
    +
    119 *
    +
    120 * It's negative for inactive processes.
    +
    121 */
    +
    122 int
    + +
    124
    +
    125 /**
    +
    126 * Send @p count values stored consequently starting at @p value from
    +
    127 * the process with rank zero to processes which
    +
    128 * are not in the process grid.
    +
    129 */
    +
    130 template <typename NumberType>
    +
    131 void
    +
    132 send_to_inactive(NumberType *value, const int count = 1) const;
    +
    133
    +
    134 /**
    +
    135 * Return <code>true</code> if the process is active within the grid.
    +
    136 */
    +
    137 bool
    +
    138 is_process_active() const;
    +
    139
    +
    140 private:
    +
    141 /**
    +
    142 * A private constructor which takes grid dimensions as an
    +
    143 * <code>std::pair</code>.
    +
    144 */
    + +
    146 const std::pair<unsigned int, unsigned int> &grid_dimensions);
    +
    147
    +
    148 /**
    +
    149 * An MPI communicator with all processes (active and inactive).
    +
    150 */
    + +
    152
    +
    153 /**
    +
    154 * An MPI communicator with inactive processes and the process with rank
    +
    155 * zero.
    +
    156 */
    + +
    158
    +
    159 /**
    +
    160 * BLACS context. This is equivalent to MPI communicators and is
    +
    161 * used by ScaLAPACK.
    +
    162 */
    + +
    164
    +
    165 /**
    +
    166 * Rank of this MPI process.
    +
    167 */
    +
    168 const unsigned int this_mpi_process;
    +
    169
    +
    170 /**
    +
    171 * Total number of MPI processes.
    +
    172 */
    +
    173 const unsigned int n_mpi_processes;
    +
    174
    +
    175 /**
    +
    176 * Number of rows in the processes grid.
    +
    177 */
    + +
    179
    +
    180 /**
    +
    181 * Number of columns in the processes grid.
    +
    182 */
    + +
    184
    +
    185 /**
    +
    186 * Row of this process in the grid.
    +
    187 *
    +
    188 * It's negative for in-active processes.
    +
    189 */
    + +
    191
    +
    192 /**
    +
    193 * Column of this process in the grid.
    +
    194 *
    +
    195 * It's negative for in-active processes.
    +
    196 */
    + +
    198
    +
    199 /**
    +
    200 * A flag which is true for processes within the 2D process grid.
    +
    201 */
    + +
    203 };
    +
    +
    204
    +
    205 /*--------------------- Inline functions --------------------------------*/
    +
    206
    +
    207#ifndef DOXYGEN
    +
    208
    +
    209 inline unsigned int
    +
    + +
    211 {
    +
    212 return n_process_rows;
    +
    213 }
    +
    +
    214
    +
    215
    +
    216
    +
    217 inline unsigned int
    +
    + +
    219 {
    +
    220 return n_process_columns;
    +
    221 }
    +
    +
    222
    +
    223
    +
    224
    +
    225 inline int
    +
    + +
    227 {
    +
    228 return this_process_row;
    +
    229 }
    +
    +
    230
    +
    231
    +
    232
    +
    233 inline int
    +
    + +
    235 {
    +
    236 return this_process_column;
    +
    237 }
    +
    +
    238
    +
    239
    +
    240
    +
    241 inline bool
    +
    + +
    243 {
    + +
    245 }
    +
    +
    246
    +
    247
    +
    248#endif // ifndef DOXYGEN
    +
    249
    +
    250} // end of namespace dftfe
    +
    251
    +
    252#endif
    +
    Definition process_grid.h:53
    +
    unsigned int get_process_grid_rows() const
    Definition process_grid.h:210
    +
    int get_this_process_row() const
    Definition process_grid.h:226
    +
    int n_process_columns
    Definition process_grid.h:183
    +
    bool is_process_active() const
    Definition process_grid.h:242
    +
    MPI_Comm mpi_communicator
    Definition process_grid.h:151
    +
    int this_process_column
    Definition process_grid.h:197
    +
    const unsigned int n_mpi_processes
    Definition process_grid.h:173
    +
    int blacs_context
    Definition process_grid.h:163
    +
    int this_process_row
    Definition process_grid.h:190
    +
    int n_process_rows
    Definition process_grid.h:178
    +
    ProcessGrid(const MPI_Comm &mpi_communicator, const std::pair< unsigned int, unsigned int > &grid_dimensions)
    +
    void send_to_inactive(NumberType *value, const int count=1) const
    +
    bool mpi_process_is_active
    Definition process_grid.h:202
    +
    int get_this_process_column() const
    Definition process_grid.h:234
    + +
    unsigned int get_process_grid_columns() const
    Definition process_grid.h:218
    +
    MPI_Comm mpi_communicator_inactive_with_root
    Definition process_grid.h:157
    +
    ProcessGrid(const MPI_Comm &mpi_communicator, const unsigned int n_rows_matrix, const unsigned int n_columns_matrix, const unsigned int row_block_size, const unsigned int column_block_size)
    +
    ProcessGrid(const MPI_Comm &mpi_communicator, const unsigned int n_rows, const unsigned int n_columns)
    +
    const unsigned int this_mpi_process
    Definition process_grid.h:168
    +
    Scalapack wrapper adapted from dealii library and extended implementation to complex datatype.
    Definition scalapackWrapper.h:37
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    + +
    Definition pseudoPotentialToDftfeConverter.cc:34
    +
    + + + + diff --git a/pseudo_converter_8h.html b/pseudo_converter_8h.html new file mode 100644 index 000000000..418d6621e --- /dev/null +++ b/pseudo_converter_8h.html @@ -0,0 +1,109 @@ + + + + + + + +DFT-FE: workspace/include/pseudoConverter.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    pseudoConverter.h File Reference
    +
    +
    +
    #include <string>
    +#include "string.h"
    +
    +

    Go to the source code of this file.

    + + + + + + + +

    +Namespaces

    namespace  dftfe
     
    namespace  dftfe::pseudoUtils
     wrapper to convert pseudopotential file from upf to dftfe format and returns the nonlinear core correction flag
     
    + + + +

    +Functions

    std::vector< intdftfe::pseudoUtils::convert (const std::string &file, const std::string &dftfeScratchFolderName, const int verbosity, const unsigned natomTypes, const bool pseudoTestsFlag)
     
    +
    + + + + diff --git a/pseudo_converter_8h_source.html b/pseudo_converter_8h_source.html new file mode 100644 index 000000000..4d55be836 --- /dev/null +++ b/pseudo_converter_8h_source.html @@ -0,0 +1,146 @@ + + + + + + + +DFT-FE: workspace/include/pseudoConverter.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    pseudoConverter.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
    +
    4// authors.
    +
    5//
    +
    6// This file is part of the DFT-FE code.
    +
    7//
    +
    8// The DFT-FE code is free software; you can use it, redistribute
    +
    9// it, and/or modify it under the terms of the GNU Lesser General
    +
    10// Public License as published by the Free Software Foundation; either
    +
    11// version 2.1 of the License, or (at your option) any later version.
    +
    12// The full text of the license can be found in the file LICENSE at
    +
    13// the top level of the DFT-FE distribution.
    +
    14//
    +
    15// ---------------------------------------------------------------------
    +
    16//
    +
    17//
    +
    18
    +
    19#ifndef converter_h
    +
    20#define converter_h
    +
    21#include <string>
    +
    22
    +
    23#include "string.h"
    +
    24namespace dftfe
    +
    25{
    +
    26 //
    +
    27 // Declare pseudoUtils function
    +
    28 //
    +
    29
    +
    30 /**
    +
    31 * @brief wrapper to convert pseudopotential file from upf to dftfe format and returns the nonlinear core correction
    +
    32 * flag
    +
    33 *
    +
    34 * The functionality reads a file containing list of pseudopotential files in
    +
    35 * upf format and converts into into dftfe format -via- xml file format
    +
    36 *
    +
    37 * @author Phani Motamarri
    +
    38 */
    +
    39
    +
    40 namespace pseudoUtils
    +
    41 {
    +
    42 std::vector<int>
    +
    43 convert(const std::string &file,
    +
    44 const std::string &dftfeScratchFolderName,
    +
    45 const int verbosity,
    +
    46 const unsigned natomTypes,
    +
    47 const bool pseudoTestsFlag);
    +
    48 }
    +
    49} // namespace dftfe
    +
    50#endif
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    +
    std::vector< int > convert(const std::string &file, const std::string &dftfeScratchFolderName, const int verbosity, const unsigned natomTypes, const bool pseudoTestsFlag)
    +
    Definition pseudoPotentialToDftfeConverter.cc:34
    +
    + + + + diff --git a/pseudo_potential_to_dftfe_converter_8cc.html b/pseudo_potential_to_dftfe_converter_8cc.html new file mode 100644 index 000000000..46a88e0e8 --- /dev/null +++ b/pseudo_potential_to_dftfe_converter_8cc.html @@ -0,0 +1,137 @@ + + + + + + + +DFT-FE: workspace/pseudoConverters/pseudoPotentialToDftfeConverter.cc File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    pseudoPotentialToDftfeConverter.cc File Reference
    +
    +
    +
    #include <iostream>
    +#include <vector>
    +#include <libxml/parser.h>
    +#include <libxml/tree.h>
    +#include <fstream>
    +#include <sstream>
    +#include <cstdlib>
    +#include <algorithm>
    +#include <iterator>
    +#include <iomanip>
    +#include <stdexcept>
    +#include <cmath>
    +
    + + + + + + +

    +Namespaces

    namespace  dftfe
     
    namespace  dftfe::pseudoUtils
     wrapper to convert pseudopotential file from upf to dftfe format and returns the nonlinear core correction flag
     
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    std::vector< doubledftfe::pseudoUtils::XmlTagReaderMain (std::vector< std::string > tag_name, std::string file_path_in)
     
    void dftfe::pseudoUtils::XmlTagReaderAttr (std::vector< std::string > tag_name, std::string file_path_in, std::vector< std::string > *attr_type, std::vector< std::string > *attr_value)
     
    int dftfe::pseudoUtils::xmlNodeChildCount (std::vector< std::string > tag_name, std::string file_path_in)
     
    void dftfe::pseudoUtils::xmltoSummaryFile (std::string file_path_in, std::string file_path_out)
     
    void dftfe::pseudoUtils::xmltoProjectorFile (std::string file_path_in, std::string file_path_out)
     
    void dftfe::pseudoUtils::xmltoLocalPotential (std::string file_path_in, std::string file_path_out)
     
    void dftfe::pseudoUtils::xmltoDenomFile (std::string file_path_in, std::string file_path_out)
     
    void dftfe::pseudoUtils::xmltoCoreDensityFile (std::string file_path_in, std::string file_path_out)
     
    void dftfe::pseudoUtils::xmltoDensityFile (std::string file_path_in, std::string file_path_out)
     
    void dftfe::pseudoUtils::xmltoOrbitalFile (std::string file_path_in, std::string file_path_out)
     
    int dftfe::pseudoUtils::pseudoPotentialToDftfeParser (const std::string file_path_in, const std::string file_path_out, const int verbosity, unsigned int &nlccFlag, unsigned int &socFlag, unsigned int &pawFlag)
     
    +
    + + + + diff --git a/pseudo_utils_8h.html b/pseudo_utils_8h.html new file mode 100644 index 000000000..66e0686f0 --- /dev/null +++ b/pseudo_utils_8h.html @@ -0,0 +1,120 @@ + + + + + + + +DFT-FE: workspace/include/pseudoUtils.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    pseudoUtils.h File Reference
    +
    +
    +
    #include <headers.h>
    +#include <mpi.h>
    +#include <boost/math/distributions/normal.hpp>
    +#include <boost/math/special_functions/spherical_harmonic.hpp>
    +#include <boost/random/normal_distribution.hpp>
    +
    +

    Go to the source code of this file.

    + + + + + + + +

    +Namespaces

    namespace  dftfe
     
    namespace  dftfe::pseudoUtils
     wrapper to convert pseudopotential file from upf to dftfe format and returns the nonlinear core correction flag
     
    + + + + + + + + + + + +

    +Functions

    void dftfe::pseudoUtils::exchangeLocalList (const std::vector< unsigned int > &masterNodeIdList, std::vector< unsigned int > &globalMasterNodeIdList, unsigned int numMeshPartitions, const MPI_Comm &mpi_communicator)
     
    void dftfe::pseudoUtils::exchangeNumberingMap (std::map< int, int > &localMap, unsigned int numMeshPartitions, const MPI_Comm &mpi_communicator)
     
    void dftfe::pseudoUtils::getRadialFunctionVal (const double radialCoordinate, double &splineVal, const alglib::spline1dinterpolant *spline)
     
    void dftfe::pseudoUtils::getSphericalHarmonicVal (const double theta, const double phi, const int l, const int m, double &sphericalHarmonicVal)
     
    void dftfe::pseudoUtils::convertCartesianToSpherical (double *x, double &r, double &theta, double &phi)
     
    +
    + + + + diff --git a/pseudo_utils_8h_source.html b/pseudo_utils_8h_source.html new file mode 100644 index 000000000..c2cc828d1 --- /dev/null +++ b/pseudo_utils_8h_source.html @@ -0,0 +1,322 @@ + + + + + + + +DFT-FE: workspace/include/pseudoUtils.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    pseudoUtils.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
    +
    4// authors.
    +
    5//
    +
    6// This file is part of the DFT-FE code.
    +
    7//
    +
    8// The DFT-FE code is free software; you can use it, redistribute
    +
    9// it, and/or modify it under the terms of the GNU Lesser General
    +
    10// Public License as published by the Free Software Foundation; either
    +
    11// version 2.1 of the License, or (at your option) any later version.
    +
    12// The full text of the license can be found in the file LICENSE at
    +
    13// the top level of the DFT-FE distribution.
    +
    14//
    +
    15// ---------------------------------------------------------------------
    +
    16//
    +
    17// @author Sambit Das
    +
    18//
    +
    19
    +
    20#ifndef pseudoUtils_H_
    +
    21#define pseudoUtils_H_
    +
    22
    +
    23#include <headers.h>
    +
    24#include <mpi.h>
    +
    25#include <boost/math/distributions/normal.hpp>
    +
    26#include <boost/math/special_functions/spherical_harmonic.hpp>
    +
    27#include <boost/random/normal_distribution.hpp>
    +
    28
    +
    29
    +
    30namespace dftfe
    +
    31{
    +
    32 namespace pseudoUtils
    +
    33 {
    +
    34 // some inline functions
    +
    35 inline void
    +
    +
    36 exchangeLocalList(const std::vector<unsigned int> &masterNodeIdList,
    +
    37 std::vector<unsigned int> & globalMasterNodeIdList,
    +
    38 unsigned int numMeshPartitions,
    +
    39 const MPI_Comm & mpi_communicator)
    +
    40 {
    + +
    42
    + +
    44
    + +
    46 1,
    +
    47 MPI_INT,
    + +
    49 1,
    +
    50 MPI_INT,
    +
    51 mpi_communicator);
    +
    52
    + +
    54 std::accumulate(&(masterNodeIdListSizes[0]),
    + +
    56 0);
    +
    57
    + +
    59
    +
    60 int *mpiOffsets = new int[numMeshPartitions];
    +
    61
    +
    62 mpiOffsets[0] = 0;
    +
    63
    +
    64 for (int i = 1; i < numMeshPartitions; ++i)
    + +
    66
    + + +
    69 MPI_INT,
    + + +
    72 &(mpiOffsets[0]),
    +
    73 MPI_INT,
    +
    74 mpi_communicator);
    +
    75
    +
    76
    +
    77 delete[] masterNodeIdListSizes;
    +
    78 delete[] mpiOffsets;
    +
    79
    +
    80 return;
    +
    81 }
    +
    +
    82
    +
    83
    +
    84 inline void
    +
    +
    85 exchangeNumberingMap(std::map<int, int> &localMap,
    +
    86 unsigned int numMeshPartitions,
    +
    87 const MPI_Comm & mpi_communicator)
    +
    88
    +
    89 {
    +
    90 std::map<int, int>::iterator iter;
    +
    91
    +
    92 std::vector<int> localSpreadVec;
    +
    93
    +
    94 iter = localMap.begin();
    +
    95 while (iter != localMap.end())
    +
    96 {
    +
    97 localSpreadVec.push_back(iter->first);
    +
    98 localSpreadVec.push_back(iter->second);
    +
    99
    +
    100 ++iter;
    +
    101 }
    + +
    103
    +
    104 int *spreadVecSizes = new int[numMeshPartitions];
    +
    105
    + +
    107 1,
    +
    108 MPI_INT,
    + +
    110 1,
    +
    111 MPI_INT,
    +
    112 mpi_communicator);
    +
    113
    + +
    115 std::accumulate(&(spreadVecSizes[0]),
    + +
    117 0);
    +
    118
    +
    119 std::vector<int> globalSpreadVec(globalSpreadVecSize);
    +
    120
    +
    121 int *mpiOffsets = new int[numMeshPartitions];
    +
    122
    +
    123 mpiOffsets[0] = 0;
    +
    124
    +
    125 for (int i = 1; i < numMeshPartitions; ++i)
    +
    126 mpiOffsets[i] = spreadVecSizes[i - 1] + mpiOffsets[i - 1];
    +
    127
    + + +
    130 MPI_INT,
    +
    131 &(globalSpreadVec[0]),
    +
    132 &(spreadVecSizes[0]),
    +
    133 &(mpiOffsets[0]),
    +
    134 MPI_INT,
    +
    135 mpi_communicator);
    +
    136
    +
    137 for (int i = 0; i < globalSpreadVecSize; i = i + 2)
    + +
    139
    +
    140
    +
    141 delete[] spreadVecSizes;
    +
    142 delete[] mpiOffsets;
    +
    143
    +
    144 return;
    +
    145 }
    +
    +
    146
    +
    147 inline void
    +
    + +
    149 double & splineVal,
    +
    150 const alglib::spline1dinterpolant *spline)
    +
    151 {
    +
    152 splineVal = alglib::spline1dcalc(*spline, radialCoordinate);
    +
    153 return;
    +
    154 }
    +
    +
    155
    +
    156 inline void
    +
    + +
    158 const double phi,
    +
    159 const int l,
    +
    160 const int m,
    +
    161 double & sphericalHarmonicVal)
    +
    162 {
    +
    163 if (m < 0)
    + +
    165 std::sqrt(2.0) * boost::math::spherical_harmonic_i(l, -m, theta, phi);
    +
    166
    +
    167 else if (m == 0)
    + +
    169 boost::math::spherical_harmonic_r(l, m, theta, phi);
    +
    170
    +
    171 else if (m > 0)
    + +
    173 std::sqrt(2.0) * boost::math::spherical_harmonic_r(l, m, theta, phi);
    +
    174
    +
    175 return;
    +
    176 }
    +
    +
    177
    +
    178 inline void
    +
    + +
    180 double &r,
    +
    181 double &theta,
    +
    182 double &phi)
    +
    183 {
    +
    184 double tolerance = 1e-12;
    +
    185 r = std::sqrt(x[0] * x[0] + x[1] * x[1] + x[2] * x[2]);
    +
    186
    +
    187 if (std::fabs(r - 0.0) <= tolerance)
    +
    188 {
    +
    189 theta = 0.0;
    +
    190 phi = 0.0;
    +
    191 }
    +
    192 else
    +
    193 {
    +
    194 theta = std::acos(x[2] / r);
    +
    195 //
    +
    196 // check if theta = 0 or PI (i.e, whether the point is on the Z-axis)
    +
    197 // If yes, assign phi = 0.0.
    +
    198 // NOTE: In case theta = 0 or PI, phi is undetermined. The actual
    +
    199 // value of phi doesn't matter in computing the enriched function
    +
    200 // value or its gradient. We assign phi = 0.0 here just as a dummy
    +
    201 // value
    +
    202 //
    +
    203 if (fabs(theta - 0.0) >= tolerance && fabs(theta - M_PI) >= tolerance)
    +
    204 phi = std::atan2(x[1], x[0]);
    +
    205 else
    +
    206 phi = 0.0;
    +
    207 }
    +
    208 }
    +
    +
    209 } // namespace pseudoUtils
    +
    210} // namespace dftfe
    +
    211#endif
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    + +
    void exchangeLocalList(const std::vector< unsigned int > &masterNodeIdList, std::vector< unsigned int > &globalMasterNodeIdList, unsigned int numMeshPartitions, const MPI_Comm &mpi_communicator)
    Definition pseudoUtils.h:36
    +
    void getRadialFunctionVal(const double radialCoordinate, double &splineVal, const alglib::spline1dinterpolant *spline)
    Definition pseudoUtils.h:148
    +
    void convertCartesianToSpherical(double *x, double &r, double &theta, double &phi)
    Definition pseudoUtils.h:179
    +
    void exchangeNumberingMap(std::map< int, int > &localMap, unsigned int numMeshPartitions, const MPI_Comm &mpi_communicator)
    Definition pseudoUtils.h:85
    +
    void getSphericalHarmonicVal(const double theta, const double phi, const int l, const int m, double &sphericalHarmonicVal)
    Definition pseudoUtils.h:157
    +
    Definition pseudoPotentialToDftfeConverter.cc:34
    +
    + + + + diff --git a/run_parameters_8h.html b/run_parameters_8h.html new file mode 100644 index 000000000..c1cb888c9 --- /dev/null +++ b/run_parameters_8h.html @@ -0,0 +1,110 @@ + + + + + + + +DFT-FE: workspace/include/runParameters.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    runParameters.h File Reference
    +
    +
    +
    #include <deal.II/base/data_out_base.h>
    +#include <deal.II/base/parameter_handler.h>
    +#include <string>
    +#include <fstream>
    +#include <iostream>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  dftfe::runParameters
     Namespace which declares the input outer run parameters. More...
     
    + + + +

    +Namespaces

    namespace  dftfe
     
    +
    + + + + diff --git a/run_parameters_8h_source.html b/run_parameters_8h_source.html new file mode 100644 index 000000000..55e2b1e19 --- /dev/null +++ b/run_parameters_8h_source.html @@ -0,0 +1,196 @@ + + + + + + + +DFT-FE: workspace/include/runParameters.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    runParameters.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
    +
    4// authors.
    +
    5//
    +
    6// This file is part of the DFT-FE code.
    +
    7//
    +
    8// The DFT-FE code is free software; you can use it, redistribute
    +
    9// it, and/or modify it under the terms of the GNU Lesser General
    +
    10// Public License as published by the Free Software Foundation; either
    +
    11// version 2.1 of the License, or (at your option) any later version.
    +
    12// The full text of the license can be found in the file LICENSE at
    +
    13// the top level of the DFT-FE distribution.
    +
    14//
    +
    15// ---------------------------------------------------------------------
    +
    16//
    +
    17
    +
    18
    +
    19
    +
    20#ifndef runParameters_H_
    +
    21#define runParameters_H_
    +
    22#include <deal.II/base/data_out_base.h>
    +
    23#include <deal.II/base/parameter_handler.h>
    +
    24#include <string>
    +
    25#include <fstream>
    +
    26#include <iostream>
    +
    27namespace dftfe
    +
    28{
    +
    29 /**
    +
    30 * @brief Namespace which declares the input outer run parameters
    +
    31 *
    +
    32 * @author Sambit Das
    +
    33 */
    +
    + +
    35 {
    +
    36 public:
    + +
    38 std::string solvermode;
    +
    39 bool restart;
    +
    40 std::string restartFilesPath;
    + + +
    43 double Kmax;
    +
    44 double Kmin;
    + + + +
    48
    + +
    50 std::string bfgsStepMethod;
    + +
    52 unsigned int lbfgsNumPastSteps;
    +
    53 std::string optimizationSolver;
    +
    54 std::string ionRelaxFlagsFile;
    +
    55
    + +
    57 runParameters() = default;
    +
    58
    +
    59 /**
    +
    60 * Parse parameters.
    +
    61 */
    +
    62 void
    +
    63 parse_parameters(const std::string &parameter_file);
    +
    64 void
    + +
    66
    +
    67 private:
    +
    68 dealii::ParameterHandler prm;
    +
    69
    +
    70
    +
    71
    +
    72 }; // class runParameters
    +
    +
    73
    +
    74} // namespace dftfe
    +
    75#endif
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    +
    Namespace which declares the input outer run parameters.
    Definition runParameters.h:35
    +
    dealii::ParameterHandler prm
    Definition runParameters.h:68
    +
    double Kmax
    Definition runParameters.h:43
    +
    unsigned int maxLineSearchIterCGPRP
    Definition runParameters.h:49
    +
    unsigned int lbfgsNumPastSteps
    Definition runParameters.h:52
    +
    std::string solvermode
    Definition runParameters.h:38
    +
    void parse_parameters(const std::string &parameter_file)
    +
    double Kmin
    Definition runParameters.h:44
    +
    bool restart
    Definition runParameters.h:39
    +
    int maximumNEBiteration
    Definition runParameters.h:46
    +
    std::string optimizationSolver
    Definition runParameters.h:53
    +
    std::string restartFilesPath
    Definition runParameters.h:40
    +
    std::string bfgsStepMethod
    Definition runParameters.h:50
    +
    bool useDevice
    Definition runParameters.h:47
    +
    int numberOfImages
    Definition runParameters.h:41
    +
    std::string coordinatesFileNEB
    Definition runParameters.h:56
    +
    std::string domainVectorsFileNEB
    Definition runParameters.h:56
    + +
    int verbosity
    Definition runParameters.h:37
    + +
    double pathThreshold
    Definition runParameters.h:45
    +
    std::string ionRelaxFlagsFile
    Definition runParameters.h:54
    +
    bool imageFreeze
    Definition runParameters.h:42
    +
    double optimizermaxIonUpdateStep
    Definition runParameters.h:51
    +
    Definition pseudoPotentialToDftfeConverter.cc:34
    +
    + + + + diff --git a/scalapack_8templates_8h.html b/scalapack_8templates_8h.html new file mode 100644 index 000000000..aca78fb52 --- /dev/null +++ b/scalapack_8templates_8h.html @@ -0,0 +1,427 @@ + + + + + + + +DFT-FE: workspace/include/scalapack.templates.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    scalapack.templates.h File Reference
    +
    +
    +
    #include "headers.h"
    +
    +

    Go to the source code of this file.

    + + + + +

    +Namespaces

    namespace  dftfe
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void dftfe::Cblacs_pinfo (int *rank, int *nprocs)
     
    void dftfe::Cblacs_get (int icontxt, int what, int *val)
     
    void dftfe::Cblacs_gridinit (int *context, const char *order, int grid_height, int grid_width)
     
    void dftfe::Cblacs_gridinfo (int context, int *grid_height, int *grid_width, int *grid_row, int *grid_col)
     
    void dftfe::Cblacs_pcoord (int ictxt, int pnum, int *prow, int *pcol)
     
    void dftfe::Cblacs_gridexit (int context)
     
    void dftfe::Cblacs_barrier (int, const char *)
     
    void dftfe::Cblacs_exit (int error_code)
     
    void dftfe::Cdgerv2d (int context, int M, int N, double *A, int lda, int rsrc, int csrc)
     
    void dftfe::Csgerv2d (int context, int M, int N, float *A, int lda, int rsrc, int csrc)
     
    void dftfe::Cdgesd2d (int context, int M, int N, double *A, int lda, int rdest, int cdest)
     
    void dftfe::Csgesd2d (int context, int M, int N, float *A, int lda, int rdest, int cdest)
     
    int dftfe::Csys2blacs_handle (MPI_Comm comm)
     
    int dftfe::numroc_ (const int *n, const int *nb, const int *iproc, const int *isproc, const int *nprocs)
     
    void dftfe::pzlacgv_ (const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const int *INCX)
     
    void dftfe::pdpotrf_ (const char *UPLO, const int *N, double *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void dftfe::pspotrf_ (const char *UPLO, const int *N, float *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void dftfe::pzpotrf_ (const char *UPLO, const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void dftfe::pdgetrf_ (const int *m, const int *n, double *A, const int *IA, const int *JA, const int *DESCA, int *ipiv, int *INFO)
     
    void dftfe::psgetrf_ (const int *m, const int *n, float *A, const int *IA, const int *JA, const int *DESCA, int *ipiv, int *INFO)
     
    void dftfe::pzgetrf_ (const int *m, const int *n, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *ipiv, int *INFO)
     
    void dftfe::pdpotri_ (const char *UPLO, const int *N, double *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void dftfe::pspotri_ (const char *UPLO, const int *N, float *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void dftfe::pzpotri_ (const char *UPLO, const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void dftfe::pdgetri_ (const int *N, double *A, const int *IA, const int *JA, const int *DESCA, const int *ipiv, double *work, int *lwork, int *iwork, int *liwork, int *info)
     
    void dftfe::psgetri_ (const int *N, float *A, const int *IA, const int *JA, const int *DESCA, const int *ipiv, float *work, int *lwork, int *iwork, int *liwork, int *info)
     
    void dftfe::pzgetri_ (const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const int *ipiv, std::complex< double > *work, int *lwork, int *iwork, int *liwork, int *info)
     
    void dftfe::pdtrtri_ (const char *UPLO, const char *DIAG, const int *N, double *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void dftfe::pstrtri_ (const char *UPLO, const char *DIAG, const int *N, float *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void dftfe::pztrtri_ (const char *UPLO, const char *DIAG, const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void dftfe::pdpocon_ (const char *uplo, const int *N, const double *A, const int *IA, const int *JA, const int *DESCA, const double *ANORM, double *RCOND, double *WORK, const int *LWORK, int *IWORK, const int *LIWORK, int *INFO)
     
    void dftfe::pspocon_ (const char *uplo, const int *N, const float *A, const int *IA, const int *JA, const int *DESCA, const float *ANORM, float *RCOND, float *WORK, const int *LWORK, int *IWORK, const int *LIWORK, int *INFO)
     
    double dftfe::pdlansy_ (const char *norm, const char *uplo, const int *N, const double *A, const int *IA, const int *JA, const int *DESCA, double *work)
     
    float dftfe::pslansy_ (const char *norm, const char *uplo, const int *N, const float *A, const int *IA, const int *JA, const int *DESCA, float *work)
     
    int dftfe::ilcm_ (const int *M, const int *N)
     
    int dftfe::iceil_ (const int *i1, const int *i2)
     
    void dftfe::descinit_ (int *desc, const int *m, const int *n, const int *mb, const int *nb, const int *irsrc, const int *icsrc, const int *ictxt, const int *lld, int *info)
     
    int dftfe::indxl2g_ (const int *indxloc, const int *nb, const int *iproc, const int *isrcproc, const int *nprocs)
     
    void dftfe::pdgesv_ (const int *n, const int *nrhs, double *A, const int *ia, const int *ja, const int *desca, int *ipiv, double *B, const int *ib, const int *jb, const int *descb, int *info)
     
    void dftfe::psgesv_ (const int *n, const int *nrhs, float *A, const int *ia, const int *ja, const int *desca, int *ipiv, float *B, const int *ib, const int *jb, const int *descb, int *info)
     
    void dftfe::pdgemm_ (const char *transa, const char *transb, const int *m, const int *n, const int *k, const double *alpha, const double *A, const int *IA, const int *JA, const int *DESCA, const double *B, const int *IB, const int *JB, const int *DESCB, const double *beta, double *C, const int *IC, const int *JC, const int *DESCC)
     
    void dftfe::psgemm_ (const char *transa, const char *transb, const int *m, const int *n, const int *k, const float *alpha, const float *A, const int *IA, const int *JA, const int *DESCA, const float *B, const int *IB, const int *JB, const int *DESCB, const float *beta, float *C, const int *IC, const int *JC, const int *DESCC)
     
    void dftfe::pzgemm_ (const char *transa, const char *transb, const int *m, const int *n, const int *k, const std::complex< double > *alpha, const std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const std::complex< double > *B, const int *IB, const int *JB, const int *DESCB, const std::complex< double > *beta, std::complex< double > *C, const int *IC, const int *JC, const int *DESCC)
     
    double dftfe::pdlange_ (char const *norm, const int *m, const int *n, const double *A, const int *ia, const int *ja, const int *desca, double *work)
     
    float dftfe::pslange_ (const char *norm, const int *m, const int *n, const float *A, const int *ia, const int *ja, const int *desca, float *work)
     
    int dftfe::indxg2p_ (const int *glob, const int *nb, const int *iproc, const int *isproc, const int *nprocs)
     
    void dftfe::pdsyev_ (const char *jobz, const char *uplo, const int *m, double *A, const int *ia, const int *ja, int *desca, double *w, double *z, const int *iz, const int *jz, int *descz, double *work, const int *lwork, int *info)
     
    void dftfe::pssyev_ (const char *jobz, const char *uplo, const int *m, float *A, const int *ia, const int *ja, int *desca, float *w, float *z, const int *iz, const int *jz, int *descz, float *work, const int *lwork, int *info)
     
    void dftfe::pzheev_ (const char *jobz, const char *uplo, const int *m, std::complex< double > *A, const int *ia, const int *ja, int *desca, double *w, std::complex< double > *z, const int *iz, const int *jz, int *descz, std::complex< double > *work, const int *lwork, int *info)
     
    void dftfe::pdlacpy_ (const char *uplo, const int *m, const int *n, const double *A, const int *ia, const int *ja, const int *desca, double *B, const int *ib, const int *jb, const int *descb)
     
    void dftfe::pslacpy_ (const char *uplo, const int *m, const int *n, const float *A, const int *ia, const int *ja, const int *desca, float *B, const int *ib, const int *jb, const int *descb)
     
    void dftfe::pdgemr2d_ (const int *m, const int *n, const double *A, const int *ia, const int *ja, const int *desca, double *B, const int *ib, const int *jb, const int *descb, const int *ictxt)
     
    void dftfe::psgemr2d_ (const int *m, const int *n, const float *A, const int *ia, const int *ja, const int *desca, float *B, const int *ib, const int *jb, const int *descb, const int *ictxt)
     
    double dftfe::pdlamch_ (const int *ictxt, const char *cmach)
     
    float dftfe::pslamch_ (const int *ictxt, const char *cmach)
     
    void dftfe::pdsyevx_ (const char *jobz, const char *range, const char *uplo, const int *n, double *A, const int *ia, const int *ja, const int *desca, const double *VL, const double *VU, const int *il, const int *iu, const double *abstol, const int *m, const int *nz, double *w, double *orfac, double *Z, const int *iz, const int *jz, const int *descz, double *work, int *lwork, int *iwork, int *liwork, int *ifail, int *iclustr, double *gap, int *info)
     
    void dftfe::pssyevx_ (const char *jobz, const char *range, const char *uplo, const int *n, float *A, const int *ia, const int *ja, const int *desca, const float *VL, const float *VU, const int *il, const int *iu, const float *abstol, const int *m, const int *nz, float *w, float *orfac, float *Z, const int *iz, const int *jz, const int *descz, float *work, int *lwork, int *iwork, int *liwork, int *ifail, int *iclustr, float *gap, int *info)
     
    void dftfe::pzheevx_ (const char *jobz, const char *range, const char *uplo, const int *n, std::complex< double > *A, const int *ia, const int *ja, const int *desca, const double *VL, const double *VU, const int *il, const int *iu, const double *abstol, const int *m, const int *nz, double *w, double *orfac, std::complex< double > *Z, const int *iz, const int *jz, const int *descz, std::complex< double > *work, int *lwork, int *iwork, int *liwork, int *ifail, int *iclustr, double *gap, int *info)
     
    void dftfe::pdgesvd_ (const char *jobu, const char *jobvt, const int *m, const int *n, double *A, const int *ia, const int *ja, const int *desca, double *S, double *U, const int *iu, const int *ju, const int *descu, double *VT, const int *ivt, const int *jvt, const int *descvt, double *work, int *lwork, int *info)
     
    void dftfe::psgesvd_ (const char *jobu, const char *jobvt, const int *m, const int *n, float *A, const int *ia, const int *ja, const int *desca, float *S, float *U, const int *iu, const int *ju, const int *descu, float *VT, const int *ivt, const int *jvt, const int *descvt, float *work, int *lwork, int *info)
     
    void dftfe::pdgels_ (const char *trans, const int *m, const int *n, const int *nrhs, double *A, const int *ia, const int *ja, const int *desca, double *B, const int *ib, const int *jb, const int *descb, double *work, int *lwork, int *info)
     
    void dftfe::psgels_ (const char *trans, const int *m, const int *n, const int *nrhs, float *A, const int *ia, const int *ja, const int *desca, float *B, const int *ib, const int *jb, const int *descb, float *work, int *lwork, int *info)
     
    void dftfe::pdgeadd_ (const char *transa, const int *m, const int *n, const double *alpha, const double *A, const int *IA, const int *JA, const int *DESCA, const double *beta, double *C, const int *IC, const int *JC, const int *DESCC)
     
    void dftfe::psgeadd_ (const char *transa, const int *m, const int *n, const float *alpha, const float *A, const int *IA, const int *JA, const int *DESCA, const float *beta, float *C, const int *IC, const int *JC, const int *DESCC)
     
    void dftfe::pzgeadd_ (const char *transa, const int *m, const int *n, const std::complex< double > *alpha, const std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const std::complex< double > *beta, std::complex< double > *C, const int *IC, const int *JC, const int *DESCC)
     
    void dftfe::pdtran_ (const int *m, const int *n, const double *alpha, const double *A, const int *IA, const int *JA, const int *DESCA, const double *beta, double *C, const int *IC, const int *JC, const int *DESCC)
     
    void dftfe::pstran_ (const int *m, const int *n, const float *alpha, const float *A, const int *IA, const int *JA, const int *DESCA, const float *beta, float *C, const int *IC, const int *JC, const int *DESCC)
     
    void dftfe::pdsyevr_ (const char *jobz, const char *range, const char *uplo, const int *n, double *A, const int *IA, const int *JA, const int *DESCA, const double *VL, const double *VU, const int *IL, const int *IU, int *m, int *nz, double *w, double *Z, const int *IZ, const int *JZ, const int *DESCZ, double *work, int *lwork, int *iwork, int *liwork, int *info)
     
    void dftfe::pssyevr_ (const char *jobz, const char *range, const char *uplo, const int *n, float *A, const int *IA, const int *JA, const int *DESCA, const float *VL, const float *VU, const int *IL, const int *IU, int *m, int *nz, float *w, float *Z, const int *IZ, const int *JZ, const int *DESCZ, float *work, int *lwork, int *iwork, int *liwork, int *info)
     
    void dftfe::pzheevr_ (const char *jobz, const char *range, const char *uplo, const int *n, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const double *VL, const double *VU, const int *IL, const int *IU, int *m, int *nz, double *w, std::complex< double > *Z, const int *IZ, const int *JZ, const int *DESCZ, std::complex< double > *work, int *lwork, int *iwork, int *liwork, int *info)
     
    template<typename number >
    void dftfe::Cgerv2d (int, int, int, number *, int, int, int)
     
    void dftfe::Cgerv2d (int context, int M, int N, double *A, int lda, int rsrc, int csrc)
     
    void dftfe::Cgerv2d (int context, int M, int N, float *A, int lda, int rsrc, int csrc)
     
    template<typename number >
    void dftfe::Cgesd2d (int, int, int, number *, int, int, int)
     
    void dftfe::Cgesd2d (int context, int M, int N, double *A, int lda, int rdest, int cdest)
     
    void dftfe::Cgesd2d (int context, int M, int N, float *A, int lda, int rdest, int cdest)
     
    void dftfe::pplacgv (const int *N, double *A, const int *IA, const int *JA, const int *DESCA, const int *INCX)
     
    void dftfe::pplacgv (const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const int *INCX)
     
    template<typename number >
    void dftfe::ppotrf (const char *, const int *, number *, const int *, const int *, const int *, int *)
     
    void dftfe::ppotrf (const char *UPLO, const int *N, double *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void dftfe::ppotrf (const char *UPLO, const int *N, float *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void dftfe::ppotrf (const char *UPLO, const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    template<typename number >
    void dftfe::pgetrf (const int *, const int *, number *, const int *, const int *, const int *, int *, int *)
     
    void dftfe::pgetrf (const int *m, const int *n, double *A, const int *IA, const int *JA, const int *DESCA, int *ipiv, int *INFO)
     
    void dftfe::pgetrf (const int *m, const int *n, float *A, const int *IA, const int *JA, const int *DESCA, int *ipiv, int *INFO)
     
    void dftfe::pgetrf (const int *m, const int *n, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *ipiv, int *INFO)
     
    template<typename number >
    void dftfe::ppotri (const char *, const int *, number *, const int *, const int *, const int *, int *)
     
    void dftfe::ppotri (const char *UPLO, const int *N, double *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void dftfe::ppotri (const char *UPLO, const int *N, float *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void dftfe::ppotri (const char *UPLO, const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    template<typename number >
    void dftfe::pgetri (const int *, number *, const int *, const int *, const int *, const int *, number *, int *, int *, int *, int *)
     
    void dftfe::pgetri (const int *N, double *A, const int *IA, const int *JA, const int *DESCA, const int *ipiv, double *work, int *lwork, int *iwork, int *liwork, int *info)
     
    void dftfe::pgetri (const int *N, float *A, const int *IA, const int *JA, const int *DESCA, const int *ipiv, float *work, int *lwork, int *iwork, int *liwork, int *info)
     
    void dftfe::pgetri (const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const int *ipiv, std::complex< double > *work, int *lwork, int *iwork, int *liwork, int *info)
     
    template<typename number >
    void dftfe::ptrtri (const char *, const char *, const int *, number *, const int *, const int *, const int *, int *)
     
    void dftfe::ptrtri (const char *UPLO, const char *DIAG, const int *N, double *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void dftfe::ptrtri (const char *UPLO, const char *DIAG, const int *N, float *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    void dftfe::ptrtri (const char *UPLO, const char *DIAG, const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
     
    template<typename number >
    void dftfe::ppocon (const char *, const int *, const number *, const int *, const int *, const int *, const number *, number *, number *, const int *, int *, const int *, int *)
     
    void dftfe::ppocon (const char *uplo, const int *N, const double *A, const int *IA, const int *JA, const int *DESCA, const double *ANORM, double *RCOND, double *WORK, const int *LWORK, int *IWORK, const int *LIWORK, int *INFO)
     
    void dftfe::ppocon (const char *uplo, const int *N, const float *A, const int *IA, const int *JA, const int *DESCA, const float *ANORM, float *RCOND, float *WORK, const int *LWORK, int *IWORK, const int *LIWORK, int *INFO)
     
    template<typename number >
    number dftfe::plansy (const char *, const char *, const int *, const number *, const int *, const int *, const int *, number *)
     
    double dftfe::plansy (const char *norm, const char *uplo, const int *N, const double *A, const int *IA, const int *JA, const int *DESCA, double *work)
     
    float dftfe::plansy (const char *norm, const char *uplo, const int *N, const float *A, const int *IA, const int *JA, const int *DESCA, float *work)
     
    template<typename number >
    void dftfe::pgesv (const int *, const int *, number *, const int *, const int *, const int *, int *, number *, const int *, const int *, const int *, int *)
     
    void dftfe::pgesv (const int *n, const int *nrhs, double *A, const int *ia, const int *ja, const int *desca, int *ipiv, double *B, const int *ib, const int *jb, const int *descb, int *info)
     
    void dftfe::pgesv (const int *n, const int *nrhs, float *A, const int *ia, const int *ja, const int *desca, int *ipiv, float *B, const int *ib, const int *jb, const int *descb, int *info)
     
    template<typename number >
    void dftfe::pgemm (const char *, const char *, const int *, const int *, const int *, const number *, const number *, const int *, const int *, const int *, const number *, const int *, const int *, const int *, const number *, number *, const int *, const int *, const int *)
     
    void dftfe::pgemm (const char *transa, const char *transb, const int *m, const int *n, const int *k, const double *alpha, const double *A, const int *IA, const int *JA, const int *DESCA, const double *B, const int *IB, const int *JB, const int *DESCB, const double *beta, double *C, const int *IC, const int *JC, const int *DESCC)
     
    void dftfe::pgemm (const char *transa, const char *transb, const int *m, const int *n, const int *k, const float *alpha, const float *A, const int *IA, const int *JA, const int *DESCA, const float *B, const int *IB, const int *JB, const int *DESCB, const float *beta, float *C, const int *IC, const int *JC, const int *DESCC)
     
    void dftfe::pgemm (const char *transa, const char *transb, const int *m, const int *n, const int *k, const std::complex< double > *alpha, const std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const std::complex< double > *B, const int *IB, const int *JB, const int *DESCB, const std::complex< double > *beta, std::complex< double > *C, const int *IC, const int *JC, const int *DESCC)
     
    template<typename number >
    number dftfe::plange (const char *, const int *, const int *, const number *, const int *, const int *, const int *, number *)
     
    double dftfe::plange (const char *norm, const int *m, const int *n, const double *A, const int *ia, const int *ja, const int *desca, double *work)
     
    float dftfe::plange (const char *norm, const int *m, const int *n, const float *A, const int *ia, const int *ja, const int *desca, float *work)
     
    template<typename number >
    void dftfe::psyev (const char *, const char *, const int *, number *, const int *, const int *, int *, number *, number *, const int *, const int *, int *, number *, const int *, int *)
     
    void dftfe::psyev (const char *jobz, const char *uplo, const int *m, double *A, const int *ia, const int *ja, int *desca, double *w, double *z, const int *iz, const int *jz, int *descz, double *work, const int *lwork, int *info)
     
    void dftfe::psyev (const char *jobz, const char *uplo, const int *m, float *A, const int *ia, const int *ja, int *desca, float *w, float *z, const int *iz, const int *jz, int *descz, float *work, const int *lwork, int *info)
     
    void dftfe::psyev (const char *jobz, const char *uplo, const int *m, std::complex< double > *A, const int *ia, const int *ja, int *desca, double *w, std::complex< double > *z, const int *iz, const int *jz, int *descz, std::complex< double > *work, const int *lwork, int *info)
     
    template<typename number >
    void dftfe::placpy (const char *, const int *, const int *, const number *, const int *, const int *, const int *, number *, const int *, const int *, const int *)
     
    void dftfe::placpy (const char *uplo, const int *m, const int *n, const double *A, const int *ia, const int *ja, const int *desca, double *B, const int *ib, const int *jb, const int *descb)
     
    void dftfe::placpy (const char *uplo, const int *m, const int *n, const float *A, const int *ia, const int *ja, const int *desca, float *B, const int *ib, const int *jb, const int *descb)
     
    template<typename number >
    void dftfe::pgemr2d (const int *, const int *, const number *, const int *, const int *, const int *, number *, const int *, const int *, const int *, const int *)
     
    void dftfe::pgemr2d (const int *m, const int *n, const double *A, const int *ia, const int *ja, const int *desca, double *B, const int *ib, const int *jb, const int *descb, const int *ictxt)
     
    void dftfe::pgemr2d (const int *m, const int *n, const float *A, const int *ia, const int *ja, const int *desca, float *B, const int *ib, const int *jb, const int *descb, const int *ictxt)
     
    template<typename number >
    void dftfe::plamch (const int *, const char *, number &)
     
    void dftfe::plamch (const int *ictxt, const char *cmach, double &val)
     
    void dftfe::plamch (const int *ictxt, const char *cmach, float &val)
     
    template<typename number >
    void dftfe::psyevx (const char *, const char *, const char *, const int *, number *, const int *, const int *, const int *, number *, number *, const int *, const int *, number *, const int *, const int *, number *, number *, number *, const int *, const int *, const int *, number *, int *, int *, int *, int *, int *, number *, int *)
     
    void dftfe::psyevx (const char *jobz, const char *range, const char *uplo, const int *n, double *A, const int *ia, const int *ja, const int *desca, double *VL, double *VU, const int *il, const int *iu, double *abstol, const int *m, const int *nz, double *w, double *orfac, double *Z, const int *iz, const int *jz, const int *descz, double *work, int *lwork, int *iwork, int *liwork, int *ifail, int *iclustr, double *gap, int *info)
     
    void dftfe::psyevx (const char *jobz, const char *range, const char *uplo, const int *n, float *A, const int *ia, const int *ja, const int *desca, float *VL, float *VU, const int *il, const int *iu, float *abstol, const int *m, const int *nz, float *w, float *orfac, float *Z, const int *iz, const int *jz, const int *descz, float *work, int *lwork, int *iwork, int *liwork, int *ifail, int *iclustr, float *gap, int *info)
     
    void dftfe::psyevx (const char *jobz, const char *range, const char *uplo, const int *n, std::complex< double > *A, const int *ia, const int *ja, const int *desca, double *VL, double *VU, const int *il, const int *iu, double *abstol, const int *m, const int *nz, double *w, double *orfac, std::complex< double > *Z, const int *iz, const int *jz, const int *descz, std::complex< double > *work, int *lwork, int *iwork, int *liwork, int *ifail, int *iclustr, double *gap, int *info)
     
    template<typename number >
    void dftfe::pgesvd (const char *, const char *, const int *, const int *, number *, const int *, const int *, const int *, number *, number *, const int *, const int *, const int *, number *, const int *, const int *, const int *, number *, int *, int *)
     
    void dftfe::pgesvd (const char *jobu, const char *jobvt, const int *m, const int *n, double *A, const int *ia, const int *ja, const int *desca, double *S, double *U, const int *iu, const int *ju, const int *descu, double *VT, const int *ivt, const int *jvt, const int *descvt, double *work, int *lwork, int *info)
     
    void dftfe::pgesvd (const char *jobu, const char *jobvt, const int *m, const int *n, float *A, const int *ia, const int *ja, const int *desca, float *S, float *U, const int *iu, const int *ju, const int *descu, float *VT, const int *ivt, const int *jvt, const int *descvt, float *work, int *lwork, int *info)
     
    template<typename number >
    void dftfe::pgels (const char *, const int *, const int *, const int *, number *, const int *, const int *, const int *, number *, const int *, const int *, const int *, number *, int *, int *)
     
    void dftfe::pgels (const char *trans, const int *m, const int *n, const int *nrhs, double *A, const int *ia, const int *ja, const int *desca, double *B, const int *ib, const int *jb, const int *descb, double *work, int *lwork, int *info)
     
    void dftfe::pgels (const char *trans, const int *m, const int *n, const int *nrhs, float *A, const int *ia, const int *ja, const int *desca, float *B, const int *ib, const int *jb, const int *descb, float *work, int *lwork, int *info)
     
    template<typename number >
    void dftfe::pgeadd (const char *, const int *, const int *, const number *, const number *, const int *, const int *, const int *, const number *, number *, const int *, const int *, const int *)
     
    void dftfe::pgeadd (const char *transa, const int *m, const int *n, const double *alpha, const double *A, const int *IA, const int *JA, const int *DESCA, const double *beta, double *C, const int *IC, const int *JC, const int *DESCC)
     
    void dftfe::pgeadd (const char *transa, const int *m, const int *n, const float *alpha, const float *A, const int *IA, const int *JA, const int *DESCA, const float *beta, float *C, const int *IC, const int *JC, const int *DESCC)
     
    void dftfe::pgeadd (const char *transa, const int *m, const int *n, const std::complex< double > *alpha, const std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const std::complex< double > *beta, std::complex< double > *C, const int *IC, const int *JC, const int *DESCC)
     
    template<typename number >
    void dftfe::ptran (const int *, const int *, const number *, const number *, const int *, const int *, const int *, const number *, number *, const int *, const int *, const int *)
     
    void dftfe::ptran (const int *m, const int *n, const double *alpha, const double *A, const int *IA, const int *JA, const int *DESCA, const double *beta, double *C, const int *IC, const int *JC, const int *DESCC)
     
    void dftfe::ptran (const int *m, const int *n, const float *alpha, const float *A, const int *IA, const int *JA, const int *DESCA, const float *beta, float *C, const int *IC, const int *JC, const int *DESCC)
     
    template<typename number >
    void dftfe::psyevr (const char *, const char *, const char *, const int *, number *, const int *, const int *, const int *, const number *, const number *, const int *, const int *, int *, int *, number *, number *, const int *, const int *, const int *, number *, int *, int *, int *, int *)
     
    void dftfe::psyevr (const char *jobz, const char *range, const char *uplo, const int *n, double *A, const int *IA, const int *JA, const int *DESCA, const double *VL, const double *VU, const int *IL, const int *IU, int *m, int *nz, double *w, double *Z, const int *IZ, const int *JZ, const int *DESCZ, double *work, int *lwork, int *iwork, int *liwork, int *info)
     
    void dftfe::psyevr (const char *jobz, const char *range, const char *uplo, const int *n, float *A, const int *IA, const int *JA, const int *DESCA, const float *VL, const float *VU, const int *IL, const int *IU, int *m, int *nz, float *w, float *Z, const int *IZ, const int *JZ, const int *DESCZ, float *work, int *lwork, int *iwork, int *liwork, int *info)
     
    void dftfe::psyevr (const char *jobz, const char *range, const char *uplo, const int *n, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const double *VL, const double *VU, const int *IL, const int *IU, int *m, int *nz, double *w, std::complex< double > *Z, const int *IZ, const int *JZ, const int *DESCZ, std::complex< double > *work, int *lwork, int *iwork, int *liwork, int *info)
     
    int dftfe::lworkFromWork (std::vector< double > &work)
     
    int dftfe::lworkFromWork (std::vector< float > &work)
     
    int dftfe::lworkFromWork (std::vector< std::complex< double > > &work)
     
    +
    + + + + diff --git a/scalapack_8templates_8h_source.html b/scalapack_8templates_8h_source.html new file mode 100644 index 000000000..e1ea6d7e0 --- /dev/null +++ b/scalapack_8templates_8h_source.html @@ -0,0 +1,3153 @@ + + + + + + + +DFT-FE: workspace/include/scalapack.templates.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    scalapack.templates.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (C) 2017 - 2019 by the deal.II authors
    +
    4//
    +
    5// This file is part of the deal.II library.
    +
    6//
    +
    7// The deal.II library is free software; you can use it, redistribute
    +
    8// it, and/or modify it under the terms of the GNU Lesser General
    +
    9// Public License as published by the Free Software Foundation; either
    +
    10// version 2.1 of the License, or (at your option) any later version.
    +
    11// The full text of the license can be found in the file LICENSE.md at
    +
    12// the top level directory of deal.II.
    +
    13//
    +
    14// ---------------------------------------------------------------------
    +
    15
    +
    16#ifndef dftfe_scalapack_templates_h
    +
    17#define dftfe_scalapack_templates_h
    +
    18
    +
    19
    +
    20#include "headers.h"
    +
    21
    +
    22
    +
    23#ifdef DEAL_II_HAVE_FP_EXCEPTIONS
    +
    24# include <cfenv>
    +
    25#endif
    +
    26
    +
    27// useful examples:
    +
    28// https://stackoverflow.com/questions/14147705/cholesky-decomposition-scalapack-error/14203864
    +
    29// http://icl.cs.utk.edu/lapack-forum/viewtopic.php?t=139 // second post by
    +
    30// Julien Langou
    +
    31// https://andyspiros.wordpress.com/2011/07/08/an-example-of-blacs-with-c/
    +
    32// http://qboxcode.org/trac/browser/qb/tags/rel1_63_4/src/Matrix.C
    +
    33// https://gitlab.phys.ethz.ch/lwossnig/lecture/blob/a534f562dfb2ad5c564abe5c2356d5d956fb7218/examples/mpi/scalapack.cpp
    +
    34// https://github.com/elemental/Elemental/blob/master/src/core/imports/scalapack.cpp
    +
    35// https://scicomp.stackexchange.com/questions/7766/performance-optimization-or-tuning-possible-for-scalapack-gemm
    +
    36//
    +
    37// info:
    +
    38// http://www.netlib.org/scalapack/slug/index.html // User guide
    +
    39// http://www.netlib.org/scalapack/slug/node135.html // How to Measure Errors
    +
    40// NOTE: Non-templated functions are chosen over templated functions if their
    +
    41// names match and template function is not explicitly called
    +
    42namespace dftfe
    +
    43{
    +
    44 extern "C"
    +
    45 {
    +
    46 /* Basic Linear Algebra Communication Subprograms (BLACS) declarations */
    +
    47 // https://www.ibm.com/support/knowledgecenter/SSNR5K_4.2.0/com.ibm.cluster.pessl.v4r2.pssl100.doc/am6gr_dinitb.htm#dinitb
    +
    48
    +
    49 /**
    +
    50 * Determine how many processes are available and the current process rank.
    +
    51 *
    +
    52 * https://www.ibm.com/support/knowledgecenter/en/SSNR5K_4.2.0/com.ibm.cluster.pessl.v4r2.pssl100.doc/am6gr_dbpnf.htm
    +
    53 */
    +
    54 void
    + +
    56
    +
    57 /**
    +
    58 * Return internal BLACS value in @p val based on the input @p what and @p icontxt.
    +
    59 * The most common use is in retrieving a default system context (@p what = 0, @p icontxt is ignored)
    +
    60 * to be used in BLACS_GRIDINIT or BLACS_GRIDMAP.
    +
    61 *
    +
    62 * https://www.ibm.com/support/knowledgecenter/en/SSNR5K_4.2.0/com.ibm.cluster.pessl.v4r2.pssl100.doc/am6gr_dbget.htm
    +
    63 */
    +
    64 void
    +
    65 Cblacs_get(int icontxt, int what, int *val);
    +
    66
    +
    67 /**
    +
    68 * Map the processes sequentially in row-major or column-major order
    +
    69 * into the process grid. Input arguments must be the same on every process.
    +
    70 *
    +
    71 * On return, @p context is the integer handle to the BLACS context,
    +
    72 * whereas on entry it is a system context to be used in creating the
    +
    73 * BLACS context.
    +
    74 *
    +
    75 * https://www.ibm.com/support/knowledgecenter/en/SSNR5K_4.2.0/com.ibm.cluster.pessl.v4r2.pssl100.doc/am6gr_dbint.htm
    +
    76 */
    +
    77 void
    + +
    79 const char *order,
    +
    80 int grid_height,
    +
    81 int grid_width);
    +
    82
    +
    83 /**
    +
    84 * Return the process row and column index.
    +
    85 *
    +
    86 * https://www.ibm.com/support/knowledgecenter/en/SSNR5K_4.2.0/com.ibm.cluster.pessl.v4r2.pssl100.doc/am6gr_dbinfo.htm
    +
    87 */
    +
    88 void
    + +
    90 int *grid_height,
    +
    91 int *grid_width,
    +
    92 int *grid_row,
    +
    93 int *grid_col);
    +
    94
    +
    95 /**
    +
    96 * Given the system process number, return the row and column coordinates in
    +
    97 * the BLACS' process grid.
    +
    98 */
    +
    99 void
    +
    100 Cblacs_pcoord(int ictxt, int pnum, int *prow, int *pcol);
    +
    101
    +
    102 /**
    +
    103 * Release a BLACS context.
    +
    104 */
    +
    105 void
    + +
    107
    +
    108 /**
    +
    109 * This routines holds up execution of all processes within the indicated
    +
    110 * scope until they have all called the routine.
    +
    111 */
    +
    112 void
    +
    113 Cblacs_barrier(int, const char *);
    +
    114
    +
    115 /**
    +
    116 * Free all BLACS contexts and releases all allocated memory.
    +
    117 */
    +
    118 void
    + +
    120
    +
    121 /**
    +
    122 * Receives a message from a process @prsrc, @p csrc into a general rectangular matrix.
    +
    123 *
    +
    124 * https://software.intel.com/en-us/mkl-developer-reference-c-gerv2d
    +
    125 */
    +
    126 void
    +
    127 Cdgerv2d(int context, int M, int N, double *A, int lda, int rsrc, int csrc);
    +
    128 void
    +
    129 Csgerv2d(int context, int M, int N, float *A, int lda, int rsrc, int csrc);
    +
    130
    +
    131 /**
    +
    132 * Sends the general rectangular matrix A to the destination
    +
    133 * process @p rdest @p cdest in the process grid.
    +
    134 *
    +
    135 * https://software.intel.com/en-us/mkl-developer-reference-c-2018-beta-gesd2d
    +
    136 */
    +
    137 void
    + +
    139 int M,
    +
    140 int N,
    +
    141 double *A,
    +
    142 int lda,
    +
    143 int rdest,
    +
    144 int cdest);
    +
    145 void
    + +
    147 int M,
    +
    148 int N,
    +
    149 float *A,
    +
    150 int lda,
    +
    151 int rdest,
    +
    152 int cdest);
    +
    153
    +
    154 /**
    +
    155 * Get BLACS context from MPI @p comm.
    +
    156 */
    +
    157 int
    + +
    159
    +
    160 /**
    +
    161 * Compute how many rows and columns each process owns (NUMber of Rows Or
    +
    162 * Columns).
    +
    163 *
    +
    164 * https://www.ibm.com/support/knowledgecenter/SSNR5K_4.2.0/com.ibm.cluster.pessl.v4r2.pssl100.doc/am6gr_dnumy.htm
    +
    165 */
    +
    166 int
    +
    167 numroc_(const int *n,
    +
    168 const int *nb,
    +
    169 const int *iproc,
    +
    170 const int *isproc,
    +
    171 const int *nprocs);
    +
    172 /**
    +
    173 * Compute complex conjugate
    +
    174 */
    +
    175 void
    +
    176 pzlacgv_(const int * N,
    +
    177 std::complex<double> *A,
    +
    178 const int * IA,
    +
    179 const int * JA,
    +
    180 const int * DESCA,
    +
    181 const int * INCX);
    +
    182
    +
    183 /**
    +
    184 * Compute the Cholesky factorization of an N-by-N real
    +
    185 * symmetric positive definite distributed matrix sub( A ) denoting
    +
    186 * A(IA:IA+N-1, JA:JA+N-1).
    +
    187 *
    +
    188 * http://www.netlib.org/scalapack/explore-html/d5/d9e/pdpotrf_8f_source.html
    +
    189 * https://www.ibm.com/support/knowledgecenter/SSNR5K_4.2.0/com.ibm.cluster.pessl.v4r2.pssl100.doc/am6gr_lpotrf.htm
    +
    190 */
    +
    191 void
    +
    192 pdpotrf_(const char *UPLO,
    +
    193 const int * N,
    +
    194 double * A,
    +
    195 const int * IA,
    +
    196 const int * JA,
    +
    197 const int * DESCA,
    +
    198 int * INFO);
    +
    199 void
    +
    200 pspotrf_(const char *UPLO,
    +
    201 const int * N,
    +
    202 float * A,
    +
    203 const int * IA,
    +
    204 const int * JA,
    +
    205 const int * DESCA,
    +
    206 int * INFO);
    +
    207 void
    +
    208 pzpotrf_(const char * UPLO,
    +
    209 const int * N,
    +
    210 std::complex<double> *A,
    +
    211 const int * IA,
    +
    212 const int * JA,
    +
    213 const int * DESCA,
    +
    214 int * INFO);
    +
    215
    +
    216 /**
    +
    217 * Computes an LU factorization of a general distributed matrix sub( A )
    +
    218 * using partial pivoting with row interchanges.
    +
    219 *
    +
    220 * http://www.netlib.org/scalapack/explore-html/df/dfe/pdgetrf_8f_source.html
    +
    221 * https://www.ibm.com/support/knowledgecenter/en/SSNR5K_4.2.0/com.ibm.cluster.pessl.v4r2.pssl100.doc/am6gr_lgetrf.htm
    +
    222 */
    +
    223 void
    +
    224 pdgetrf_(const int *m,
    +
    225 const int *n,
    +
    226 double * A,
    +
    227 const int *IA,
    +
    228 const int *JA,
    +
    229 const int *DESCA,
    +
    230 int * ipiv,
    +
    231 int * INFO);
    +
    232 void
    +
    233 psgetrf_(const int *m,
    +
    234 const int *n,
    +
    235 float * A,
    +
    236 const int *IA,
    +
    237 const int *JA,
    +
    238 const int *DESCA,
    +
    239 int * ipiv,
    +
    240 int * INFO);
    +
    241 void
    +
    242 pzgetrf_(const int * m,
    +
    243 const int * n,
    +
    244 std::complex<double> *A,
    +
    245 const int * IA,
    +
    246 const int * JA,
    +
    247 const int * DESCA,
    +
    248 int * ipiv,
    +
    249 int * INFO);
    +
    250 /**
    +
    251 * Compute the inverse of a real symmetric positive definite
    +
    252 * distributed matrix sub( A ) = A(IA:IA+N-1,JA:JA+N-1) using the
    +
    253 * Cholesky factorization sub( A ) = U**T*U or L*L**T computed by
    +
    254 * PDPOTRF.
    +
    255 *
    +
    256 * http://www.netlib.org/scalapack/explore-html/d2/d44/pdpotri_8f_source.html
    +
    257 * https://www.ibm.com/support/knowledgecenter/SSNR5K_4.2.0/com.ibm.cluster.pessl.v4r2.pssl100.doc/am6gr_lpotri.htm
    +
    258 * https://software.intel.com/en-us/mkl-developer-reference-c-p-potri
    +
    259 */
    +
    260 void
    +
    261 pdpotri_(const char *UPLO,
    +
    262 const int * N,
    +
    263 double * A,
    +
    264 const int * IA,
    +
    265 const int * JA,
    +
    266 const int * DESCA,
    +
    267 int * INFO);
    +
    268 void
    +
    269 pspotri_(const char *UPLO,
    +
    270 const int * N,
    +
    271 float * A,
    +
    272 const int * IA,
    +
    273 const int * JA,
    +
    274 const int * DESCA,
    +
    275 int * INFO);
    +
    276 void
    +
    277 pzpotri_(const char * UPLO,
    +
    278 const int * N,
    +
    279 std::complex<double> *A,
    +
    280 const int * IA,
    +
    281 const int * JA,
    +
    282 const int * DESCA,
    +
    283 int * INFO);
    +
    284
    +
    285 /**
    +
    286 * PDGETRI computes the inverse of a distributed matrix using the LU
    +
    287 * factorization computed by PDGETRF. This method inverts U and then
    +
    288 * computes the inverse of sub( A ) = A(IA:IA+N-1,JA:JA+N-1) denoted
    +
    289 * InvA by solving the system InvA*L = inv(U) for InvA.
    +
    290 *
    +
    291 * http://www.netlib.org/scalapack/explore-html/d3/df3/pdgetri_8f_source.html
    +
    292 * https://www.ibm.com/support/knowledgecenter/SSNR5K_4.2.0/com.ibm.cluster.pessl.v4r2.pssl100.doc/am6gr_lgetri.htm
    +
    293 */
    +
    294 void
    +
    295 pdgetri_(const int *N,
    +
    296 double * A,
    +
    297 const int *IA,
    +
    298 const int *JA,
    +
    299 const int *DESCA,
    +
    300 const int *ipiv,
    +
    301 double * work,
    +
    302 int * lwork,
    +
    303 int * iwork,
    +
    304 int * liwork,
    +
    305 int * info);
    +
    306 void
    +
    307 psgetri_(const int *N,
    +
    308 float * A,
    +
    309 const int *IA,
    +
    310 const int *JA,
    +
    311 const int *DESCA,
    +
    312 const int *ipiv,
    +
    313 float * work,
    +
    314 int * lwork,
    +
    315 int * iwork,
    +
    316 int * liwork,
    +
    317 int * info);
    +
    318 void
    +
    319 pzgetri_(const int * N,
    +
    320 std::complex<double> *A,
    +
    321 const int * IA,
    +
    322 const int * JA,
    +
    323 const int * DESCA,
    +
    324 const int * ipiv,
    +
    325 std::complex<double> *work,
    +
    326 int * lwork,
    +
    327 int * iwork,
    +
    328 int * liwork,
    +
    329 int * info);
    +
    330
    +
    331 /**
    +
    332 * PDTRTRI computes the inverse of a upper or lower triangular
    +
    333 * distributed matrix sub( A ) = A(IA:IA+N-1,JA:JA+N-1).
    +
    334 *
    +
    335 * http://www.netlib.org/scalapack/explore-html/d9/dc0/pdtrtri_8f_source.html
    +
    336 * https://www.ibm.com/support/knowledgecenter/SSNR5K_4.2.0/com.ibm.cluster.pessl.v4r2.pssl100.doc/am6gr_lpdtri.htm
    +
    337 * https://software.intel.com/en-us/mkl-developer-reference-c-p-trtri
    +
    338 */
    +
    339 void
    +
    340 pdtrtri_(const char *UPLO,
    +
    341 const char *DIAG,
    +
    342 const int * N,
    +
    343 double * A,
    +
    344 const int * IA,
    +
    345 const int * JA,
    +
    346 const int * DESCA,
    +
    347 int * INFO);
    +
    348 void
    +
    349 pstrtri_(const char *UPLO,
    +
    350 const char *DIAG,
    +
    351 const int * N,
    +
    352 float * A,
    +
    353 const int * IA,
    +
    354 const int * JA,
    +
    355 const int * DESCA,
    +
    356 int * INFO);
    +
    357
    +
    358 void
    +
    359 pztrtri_(const char * UPLO,
    +
    360 const char * DIAG,
    +
    361 const int * N,
    +
    362 std::complex<double> *A,
    +
    363 const int * IA,
    +
    364 const int * JA,
    +
    365 const int * DESCA,
    +
    366 int * INFO);
    +
    367
    +
    368 /**
    +
    369 * Estimate the reciprocal of the condition number (in the
    +
    370 * l1-norm) of a real symmetric positive definite distributed matrix
    +
    371 * using the Cholesky factorization.
    +
    372 *
    +
    373 * https://www.ibm.com/support/knowledgecenter/SSNR5K_4.2.0/com.ibm.cluster.pessl.v4r2.pssl100.doc/am6gr_lpocon.htm#lpocon
    +
    374 * http://www.netlib.org/scalapack/explore-html/d4/df7/pdpocon_8f.html
    +
    375 * https://software.intel.com/en-us/mkl-developer-reference-fortran-pocon
    +
    376 */
    +
    377 void
    +
    378 pdpocon_(const char * uplo,
    +
    379 const int * N,
    +
    380 const double *A,
    +
    381 const int * IA,
    +
    382 const int * JA,
    +
    383 const int * DESCA,
    +
    384 const double *ANORM,
    +
    385 double * RCOND,
    +
    386 double * WORK,
    +
    387 const int * LWORK,
    +
    388 int * IWORK,
    +
    389 const int * LIWORK,
    +
    390 int * INFO);
    +
    391 void
    +
    392 pspocon_(const char * uplo,
    +
    393 const int * N,
    +
    394 const float *A,
    +
    395 const int * IA,
    +
    396 const int * JA,
    +
    397 const int * DESCA,
    +
    398 const float *ANORM,
    +
    399 float * RCOND,
    +
    400 float * WORK,
    +
    401 const int * LWORK,
    +
    402 int * IWORK,
    +
    403 const int * LIWORK,
    +
    404 int * INFO);
    +
    405
    +
    406 /**
    +
    407 * Norm of a real symmetric matrix
    +
    408 *
    +
    409 * http://www.netlib.org/scalapack/explore-html/dd/d12/pdlansy_8f_source.html
    +
    410 * https://www.ibm.com/support/knowledgecenter/SSNR5K_4.2.0/com.ibm.cluster.pessl.v4r2.pssl100.doc/am6gr_pdlansy.htm#pdlansy
    +
    411 */
    +
    412 double
    +
    413 pdlansy_(const char * norm,
    +
    414 const char * uplo,
    +
    415 const int * N,
    +
    416 const double *A,
    +
    417 const int * IA,
    +
    418 const int * JA,
    +
    419 const int * DESCA,
    +
    420 double * work);
    +
    421 float
    +
    422 pslansy_(const char * norm,
    +
    423 const char * uplo,
    +
    424 const int * N,
    +
    425 const float *A,
    +
    426 const int * IA,
    +
    427 const int * JA,
    +
    428 const int * DESCA,
    +
    429 float * work);
    +
    430
    +
    431 /**
    +
    432 * Compute the Least Common Multiple (LCM) of two positive integers @p M and @p N.
    +
    433 * In fact the routine Compute the greatest common divisor (GCD) and
    +
    434 * use the fact that M*N = GCD*LCM.
    +
    435 *
    +
    436 * http://www.netlib.org/scalapack/explore-html/d0/d9b/ilcm_8f_source.html
    +
    437 */
    +
    438 int
    +
    439 ilcm_(const int *M, const int *N);
    +
    440
    +
    441 /**
    +
    442 * Return the ceiling of the division of two integers.
    +
    443 *
    +
    444 * http://www.netlib.org/scalapack/explore-html/df/d07/iceil_8f_source.html
    +
    445 */
    +
    446 int
    +
    447 iceil_(const int *i1, const int *i2);
    +
    448
    +
    449 /**
    +
    450 * Initialize the descriptor vector with the 8 input arguments
    +
    451 */
    +
    452 void
    + +
    454 const int *m,
    +
    455 const int *n,
    +
    456 const int *mb,
    +
    457 const int *nb,
    +
    458 const int *irsrc,
    +
    459 const int *icsrc,
    +
    460 const int *ictxt,
    +
    461 const int *lld,
    +
    462 int * info);
    +
    463
    +
    464 /**
    +
    465 * Compute the global index of a distributed matrix entry
    +
    466 * pointed to by the local index @p indxloc of the process indicated by
    +
    467 * @p iproc.
    +
    468 *
    +
    469 * @param indxloc The local index of the distributed matrix entry.
    +
    470 * @param nb Block size, size of the blocks the distributed matrix is split
    +
    471 * into.
    +
    472 * @param iproc The coordinate of the process whose local array row or column
    +
    473 * is to be determined
    +
    474 * @param isrcproc The coordinate of the process that possesses the first
    +
    475 * row/column of the distributed matrix
    +
    476 * @param nprocs The total number processes over which the distributed matrix
    +
    477 * is distributed
    +
    478 */
    +
    479 int
    +
    480 indxl2g_(const int *indxloc,
    +
    481 const int *nb,
    +
    482 const int *iproc,
    +
    483 const int *isrcproc,
    +
    484 const int *nprocs);
    +
    485
    +
    486 /**
    +
    487 * Compute the solution to a real system of linear equations
    +
    488 */
    +
    489 void
    +
    490 pdgesv_(const int *n,
    +
    491 const int *nrhs,
    +
    492 double * A,
    +
    493 const int *ia,
    +
    494 const int *ja,
    +
    495 const int *desca,
    +
    496 int * ipiv,
    +
    497 double * B,
    +
    498 const int *ib,
    +
    499 const int *jb,
    +
    500 const int *descb,
    +
    501 int * info);
    +
    502 void
    +
    503 psgesv_(const int *n,
    +
    504 const int *nrhs,
    +
    505 float * A,
    +
    506 const int *ia,
    +
    507 const int *ja,
    +
    508 const int *desca,
    +
    509 int * ipiv,
    +
    510 float * B,
    +
    511 const int *ib,
    +
    512 const int *jb,
    +
    513 const int *descb,
    +
    514 int * info);
    +
    515
    +
    516 /**
    +
    517 * Perform one of the matrix-matrix operations:
    +
    518 * @f{align*}{
    +
    519 * \mathrm{sub}(C) &\dealcoloneq \alpha
    +
    520 * op(\mathrm{sub}(A))op(\mathrm{sub}(B))
    +
    521 * + \beta \mathrm{sub}(C), \\
    +
    522 * \mathrm{sub}(C) &\dealcoloneq \alpha
    +
    523 * op(\mathrm{sub}(A))op(\mathrm{sub}(B))
    +
    524 * + beta sub(C),
    +
    525 * @f}
    +
    526 * where
    +
    527 * $\mathrm{sub}(C)$ denotes C(IC:IC+M-1,JC:JC+N-1), and, $op(X)$ is one of
    +
    528 * $op(X) = X$ or $op(X) = X^T$.
    +
    529 */
    +
    530 void
    +
    531 pdgemm_(const char * transa,
    +
    532 const char * transb,
    +
    533 const int * m,
    +
    534 const int * n,
    +
    535 const int * k,
    +
    536 const double *alpha,
    +
    537 const double *A,
    +
    538 const int * IA,
    +
    539 const int * JA,
    +
    540 const int * DESCA,
    +
    541 const double *B,
    +
    542 const int * IB,
    +
    543 const int * JB,
    +
    544 const int * DESCB,
    +
    545 const double *beta,
    +
    546 double * C,
    +
    547 const int * IC,
    +
    548 const int * JC,
    +
    549 const int * DESCC);
    +
    550 void
    +
    551 psgemm_(const char * transa,
    +
    552 const char * transb,
    +
    553 const int * m,
    +
    554 const int * n,
    +
    555 const int * k,
    +
    556 const float *alpha,
    +
    557 const float *A,
    +
    558 const int * IA,
    +
    559 const int * JA,
    +
    560 const int * DESCA,
    +
    561 const float *B,
    +
    562 const int * IB,
    +
    563 const int * JB,
    +
    564 const int * DESCB,
    +
    565 const float *beta,
    +
    566 float * C,
    +
    567 const int * IC,
    +
    568 const int * JC,
    +
    569 const int * DESCC);
    +
    570
    +
    571 void
    +
    572 pzgemm_(const char * transa,
    +
    573 const char * transb,
    +
    574 const int * m,
    +
    575 const int * n,
    +
    576 const int * k,
    +
    577 const std::complex<double> *alpha,
    +
    578 const std::complex<double> *A,
    +
    579 const int * IA,
    +
    580 const int * JA,
    +
    581 const int * DESCA,
    +
    582 const std::complex<double> *B,
    +
    583 const int * IB,
    +
    584 const int * JB,
    +
    585 const int * DESCB,
    +
    586 const std::complex<double> *beta,
    +
    587 std::complex<double> * C,
    +
    588 const int * IC,
    +
    589 const int * JC,
    +
    590 const int * DESCC);
    +
    591
    +
    592 /**
    +
    593 * Return the value of the one norm, or the Frobenius norm, or the infinity
    +
    594 * norm, or the element of largest absolute value of a distributed matrix
    +
    595 */
    +
    596 double
    +
    597 pdlange_(char const * norm,
    +
    598 const int * m,
    +
    599 const int * n,
    +
    600 const double *A,
    +
    601 const int * ia,
    +
    602 const int * ja,
    +
    603 const int * desca,
    +
    604 double * work);
    +
    605 float
    +
    606 pslange_(const char * norm,
    +
    607 const int * m,
    +
    608 const int * n,
    +
    609 const float *A,
    +
    610 const int * ia,
    +
    611 const int * ja,
    +
    612 const int * desca,
    +
    613 float * work);
    +
    614
    +
    615 /**
    +
    616 * Compute the process coordinate which possesses the entry of a
    +
    617 * distributed matrix specified by a global index
    +
    618 */
    +
    619 int
    +
    620 indxg2p_(const int *glob,
    +
    621 const int *nb,
    +
    622 const int *iproc,
    +
    623 const int *isproc,
    +
    624 const int *nprocs);
    +
    625
    +
    626 /**
    +
    627 * Compute all eigenvalues and, optionally, eigenvectors of a real symmetric
    +
    628 * matrix A by calling the recommended sequence of ScaLAPACK routines. In
    +
    629 * its present form, the routine assumes a homogeneous system and makes no
    +
    630 * checks for consistency of the eigenvalues or eigenvectors across the
    +
    631 * different processes. Because of this, it is possible that a heterogeneous
    +
    632 * system may return incorrect results without any error messages.
    +
    633 *
    +
    634 * http://www.netlib.org/scalapack/explore-html/d0/d1a/pdsyev_8f.html
    +
    635 * https://www.ibm.com/support/knowledgecenter/SSNR5K_4.2.0/com.ibm.cluster.pessl.v4r2.pssl100.doc/am6gr_lsyev.htm#lsyev
    +
    636 */
    +
    637 void
    +
    638 pdsyev_(const char *jobz,
    +
    639 const char *uplo,
    +
    640 const int * m,
    +
    641 double * A,
    +
    642 const int * ia,
    +
    643 const int * ja,
    +
    644 int * desca,
    +
    645 double * w,
    +
    646 double * z,
    +
    647 const int * iz,
    +
    648 const int * jz,
    +
    649 int * descz,
    +
    650 double * work,
    +
    651 const int * lwork,
    +
    652 int * info);
    +
    653 void
    +
    654 pssyev_(const char *jobz,
    +
    655 const char *uplo,
    +
    656 const int * m,
    +
    657 float * A,
    +
    658 const int * ia,
    +
    659 const int * ja,
    +
    660 int * desca,
    +
    661 float * w,
    +
    662 float * z,
    +
    663 const int * iz,
    +
    664 const int * jz,
    +
    665 int * descz,
    +
    666 float * work,
    +
    667 const int * lwork,
    +
    668 int * info);
    +
    669 void
    +
    670 pzheev_(const char * jobz,
    +
    671 const char * uplo,
    +
    672 const int * m,
    +
    673 std::complex<double> *A,
    +
    674 const int * ia,
    +
    675 const int * ja,
    +
    676 int * desca,
    +
    677 double * w,
    +
    678 std::complex<double> *z,
    +
    679 const int * iz,
    +
    680 const int * jz,
    +
    681 int * descz,
    +
    682 std::complex<double> *work,
    +
    683 const int * lwork,
    +
    684 int * info);
    +
    685
    +
    686 /**
    +
    687 * Copy all or a part of a distributed matrix A to another distributed
    +
    688 * matrix B. No communication is performed, pdlacpy performs a local copy
    +
    689 * $\mathrm{sub}(A) \dealcoloneq \mathrm{sub}(B)$, where $\mathrm{sub}(A)$
    +
    690 * denotes $A(ia:ia+m-1, ja:ja+n-1)$ and $\mathrm{sub}(B)$ denotes
    +
    691 * $B(ib:ib+m-1, jb:jb+n-1)$.
    +
    692 */
    +
    693 void
    +
    694 pdlacpy_(const char * uplo,
    +
    695 const int * m,
    +
    696 const int * n,
    +
    697 const double *A,
    +
    698 const int * ia,
    +
    699 const int * ja,
    +
    700 const int * desca,
    +
    701 double * B,
    +
    702 const int * ib,
    +
    703 const int * jb,
    +
    704 const int * descb);
    +
    705 void
    +
    706 pslacpy_(const char * uplo,
    +
    707 const int * m,
    +
    708 const int * n,
    +
    709 const float *A,
    +
    710 const int * ia,
    +
    711 const int * ja,
    +
    712 const int * desca,
    +
    713 float * B,
    +
    714 const int * ib,
    +
    715 const int * jb,
    +
    716 const int * descb);
    +
    717
    +
    718 /**
    +
    719 * Copies the content of a general rectangular distributed matrix @p A to another distributed matrix @p B
    +
    720 * It is not required that the matrices A and B have the same process grid
    +
    721 * or block size, e.g. copying a matrix from a one-dimensional to a
    +
    722 * two-dimensional process grid
    +
    723 * @p ictxt is a context which is at least a union of all processes in
    +
    724 * context A and B
    +
    725 */
    +
    726 void
    +
    727 pdgemr2d_(const int * m,
    +
    728 const int * n,
    +
    729 const double *A,
    +
    730 const int * ia,
    +
    731 const int * ja,
    +
    732 const int * desca,
    +
    733 double * B,
    +
    734 const int * ib,
    +
    735 const int * jb,
    +
    736 const int * descb,
    +
    737 const int * ictxt);
    +
    738 void
    +
    739 psgemr2d_(const int * m,
    +
    740 const int * n,
    +
    741 const float *A,
    +
    742 const int * ia,
    +
    743 const int * ja,
    +
    744 const int * desca,
    +
    745 float * B,
    +
    746 const int * ib,
    +
    747 const int * jb,
    +
    748 const int * descb,
    +
    749 const int * ictxt);
    +
    750
    +
    751 /**
    +
    752 * helper routines determining machine precision
    +
    753 */
    +
    754 double
    +
    755 pdlamch_(const int *ictxt, const char *cmach);
    +
    756 float
    +
    757 pslamch_(const int *ictxt, const char *cmach);
    +
    758
    +
    759
    +
    760 /**
    +
    761 * psyevx computes selected eigenvalues and, optionally, eigenvectors
    +
    762 * of a real symmetric matrix A. Eigenvalues/vectors can be selected by
    +
    763 * specifying a range of values or a range of indices for the desired
    +
    764 * eigenvalues.
    +
    765 */
    +
    766 void
    +
    767 pdsyevx_(const char * jobz,
    +
    768 const char * range,
    +
    769 const char * uplo,
    +
    770 const int * n,
    +
    771 double * A,
    +
    772 const int * ia,
    +
    773 const int * ja,
    +
    774 const int * desca,
    +
    775 const double *VL,
    +
    776 const double *VU,
    +
    777 const int * il,
    +
    778 const int * iu,
    +
    779 const double *abstol,
    +
    780 const int * m,
    +
    781 const int * nz,
    +
    782 double * w,
    +
    783 double * orfac,
    +
    784 double * Z,
    +
    785 const int * iz,
    +
    786 const int * jz,
    +
    787 const int * descz,
    +
    788 double * work,
    +
    789 int * lwork,
    +
    790 int * iwork,
    +
    791 int * liwork,
    +
    792 int * ifail,
    +
    793 int * iclustr,
    +
    794 double * gap,
    +
    795 int * info);
    +
    796 void
    +
    797 pssyevx_(const char * jobz,
    +
    798 const char * range,
    +
    799 const char * uplo,
    +
    800 const int * n,
    +
    801 float * A,
    +
    802 const int * ia,
    +
    803 const int * ja,
    +
    804 const int * desca,
    +
    805 const float *VL,
    +
    806 const float *VU,
    +
    807 const int * il,
    +
    808 const int * iu,
    +
    809 const float *abstol,
    +
    810 const int * m,
    +
    811 const int * nz,
    +
    812 float * w,
    +
    813 float * orfac,
    +
    814 float * Z,
    +
    815 const int * iz,
    +
    816 const int * jz,
    +
    817 const int * descz,
    +
    818 float * work,
    +
    819 int * lwork,
    +
    820 int * iwork,
    +
    821 int * liwork,
    +
    822 int * ifail,
    +
    823 int * iclustr,
    +
    824 float * gap,
    +
    825 int * info);
    +
    826 void
    +
    827 pzheevx_(const char * jobz,
    +
    828 const char * range,
    +
    829 const char * uplo,
    +
    830 const int * n,
    +
    831 std::complex<double> *A,
    +
    832 const int * ia,
    +
    833 const int * ja,
    +
    834 const int * desca,
    +
    835 const double * VL,
    +
    836 const double * VU,
    +
    837 const int * il,
    +
    838 const int * iu,
    +
    839 const double * abstol,
    +
    840 const int * m,
    +
    841 const int * nz,
    +
    842 double * w,
    +
    843 double * orfac,
    +
    844 std::complex<double> *Z,
    +
    845 const int * iz,
    +
    846 const int * jz,
    +
    847 const int * descz,
    +
    848 std::complex<double> *work,
    +
    849 int * lwork,
    +
    850 int * iwork,
    +
    851 int * liwork,
    +
    852 int * ifail,
    +
    853 int * iclustr,
    +
    854 double * gap,
    +
    855 int * info);
    +
    856
    +
    857 /*
    +
    858 * PDGESVD computes the singular value decomposition (SVD) of an
    +
    859 * M-by-N matrix A, optionally computing the left and/or right
    +
    860 * singular vectors
    +
    861 */
    +
    862 void
    +
    863 pdgesvd_(const char *jobu,
    +
    864 const char *jobvt,
    +
    865 const int * m,
    +
    866 const int * n,
    +
    867 double * A,
    +
    868 const int * ia,
    +
    869 const int * ja,
    +
    870 const int * desca,
    +
    871 double * S,
    +
    872 double * U,
    +
    873 const int * iu,
    +
    874 const int * ju,
    +
    875 const int * descu,
    +
    876 double * VT,
    +
    877 const int * ivt,
    +
    878 const int * jvt,
    +
    879 const int * descvt,
    +
    880 double * work,
    +
    881 int * lwork,
    +
    882 int * info);
    +
    883 void
    +
    884 psgesvd_(const char *jobu,
    +
    885 const char *jobvt,
    +
    886 const int * m,
    +
    887 const int * n,
    +
    888 float * A,
    +
    889 const int * ia,
    +
    890 const int * ja,
    +
    891 const int * desca,
    +
    892 float * S,
    +
    893 float * U,
    +
    894 const int * iu,
    +
    895 const int * ju,
    +
    896 const int * descu,
    +
    897 float * VT,
    +
    898 const int * ivt,
    +
    899 const int * jvt,
    +
    900 const int * descvt,
    +
    901 float * work,
    +
    902 int * lwork,
    +
    903 int * info);
    +
    904
    +
    905 /*
    +
    906 * P_GELS solves overdetermined or underdetermined real linear
    +
    907 * systems involving an M-by-N matrix A, or its transpose,
    +
    908 * using a QR or LQ factorization of A. It is assumed that A has full rank.
    +
    909 */
    +
    910 void
    +
    911 pdgels_(const char *trans,
    +
    912 const int * m,
    +
    913 const int * n,
    +
    914 const int * nrhs,
    +
    915 double * A,
    +
    916 const int * ia,
    +
    917 const int * ja,
    +
    918 const int * desca,
    +
    919 double * B,
    +
    920 const int * ib,
    +
    921 const int * jb,
    +
    922 const int * descb,
    +
    923 double * work,
    +
    924 int * lwork,
    +
    925 int * info);
    +
    926 void
    +
    927 psgels_(const char *trans,
    +
    928 const int * m,
    +
    929 const int * n,
    +
    930 const int * nrhs,
    +
    931 float * A,
    +
    932 const int * ia,
    +
    933 const int * ja,
    +
    934 const int * desca,
    +
    935 float * B,
    +
    936 const int * ib,
    +
    937 const int * jb,
    +
    938 const int * descb,
    +
    939 float * work,
    +
    940 int * lwork,
    +
    941 int * info);
    +
    942
    +
    943 /*
    +
    944 * Perform matrix sum:
    +
    945 * @f{equation*}
    +
    946 * C \dealcoloneq \beta C + \alpha op(A),
    +
    947 * @f
    +
    948 * where $op(A)$ denotes either $op(A) = A$ or $op(A)=A^T$.
    +
    949 */
    +
    950 void
    +
    951 pdgeadd_(const char * transa,
    +
    952 const int * m,
    +
    953 const int * n,
    +
    954 const double *alpha,
    +
    955 const double *A,
    +
    956 const int * IA,
    +
    957 const int * JA,
    +
    958 const int * DESCA,
    +
    959 const double *beta,
    +
    960 double * C,
    +
    961 const int * IC,
    +
    962 const int * JC,
    +
    963 const int * DESCC);
    +
    964 void
    +
    965 psgeadd_(const char * transa,
    +
    966 const int * m,
    +
    967 const int * n,
    +
    968 const float *alpha,
    +
    969 const float *A,
    +
    970 const int * IA,
    +
    971 const int * JA,
    +
    972 const int * DESCA,
    +
    973 const float *beta,
    +
    974 float * C,
    +
    975 const int * IC,
    +
    976 const int * JC,
    +
    977 const int * DESCC);
    +
    978 void
    +
    979 pzgeadd_(const char * transa,
    +
    980 const int * m,
    +
    981 const int * n,
    +
    982 const std::complex<double> *alpha,
    +
    983 const std::complex<double> *A,
    +
    984 const int * IA,
    +
    985 const int * JA,
    +
    986 const int * DESCA,
    +
    987 const std::complex<double> *beta,
    +
    988 std::complex<double> * C,
    +
    989 const int * IC,
    +
    990 const int * JC,
    +
    991 const int * DESCC);
    +
    992
    +
    993 /**
    +
    994 * Routine to transpose a matrix:
    +
    995 * C = beta C + alpha A^T
    +
    996 */
    +
    997 void
    +
    998 pdtran_(const int * m,
    +
    999 const int * n,
    +
    1000 const double *alpha,
    +
    1001 const double *A,
    +
    1002 const int * IA,
    +
    1003 const int * JA,
    +
    1004 const int * DESCA,
    +
    1005 const double *beta,
    +
    1006 double * C,
    +
    1007 const int * IC,
    +
    1008 const int * JC,
    +
    1009 const int * DESCC);
    +
    1010 void
    +
    1011 pstran_(const int * m,
    +
    1012 const int * n,
    +
    1013 const float *alpha,
    +
    1014 const float *A,
    +
    1015 const int * IA,
    +
    1016 const int * JA,
    +
    1017 const int * DESCA,
    +
    1018 const float *beta,
    +
    1019 float * C,
    +
    1020 const int * IC,
    +
    1021 const int * JC,
    +
    1022 const int * DESCC);
    +
    1023
    +
    1024 /**
    +
    1025 * psyevr computes selected eigenvalues and, optionally, eigenvectors
    +
    1026 * of a real symmetric matrix A using a parallel implementation of the MRR
    +
    1027 * algorithm. Eigenvalues/vectors can be selected by specifying a range of
    +
    1028 * values or a range of indices for the desired eigenvalues.
    +
    1029 */
    +
    1030 void
    +
    1031 pdsyevr_(const char * jobz,
    +
    1032 const char * range,
    +
    1033 const char * uplo,
    +
    1034 const int * n,
    +
    1035 double * A,
    +
    1036 const int * IA,
    +
    1037 const int * JA,
    +
    1038 const int * DESCA,
    +
    1039 const double *VL,
    +
    1040 const double *VU,
    +
    1041 const int * IL,
    +
    1042 const int * IU,
    +
    1043 int * m,
    +
    1044 int * nz,
    +
    1045 double * w,
    +
    1046 double * Z,
    +
    1047 const int * IZ,
    +
    1048 const int * JZ,
    +
    1049 const int * DESCZ,
    +
    1050 double * work,
    +
    1051 int * lwork,
    +
    1052 int * iwork,
    +
    1053 int * liwork,
    +
    1054 int * info);
    +
    1055 void
    +
    1056 pssyevr_(const char * jobz,
    +
    1057 const char * range,
    +
    1058 const char * uplo,
    +
    1059 const int * n,
    +
    1060 float * A,
    +
    1061 const int * IA,
    +
    1062 const int * JA,
    +
    1063 const int * DESCA,
    +
    1064 const float *VL,
    +
    1065 const float *VU,
    +
    1066 const int * IL,
    +
    1067 const int * IU,
    +
    1068 int * m,
    +
    1069 int * nz,
    +
    1070 float * w,
    +
    1071 float * Z,
    +
    1072 const int * IZ,
    +
    1073 const int * JZ,
    +
    1074 const int * DESCZ,
    +
    1075 float * work,
    +
    1076 int * lwork,
    +
    1077 int * iwork,
    +
    1078 int * liwork,
    +
    1079 int * info);
    +
    1080 void
    +
    1081 pzheevr_(const char * jobz,
    +
    1082 const char * range,
    +
    1083 const char * uplo,
    +
    1084 const int * n,
    +
    1085 std::complex<double> *A,
    +
    1086 const int * IA,
    +
    1087 const int * JA,
    +
    1088 const int * DESCA,
    +
    1089 const double * VL,
    +
    1090 const double * VU,
    +
    1091 const int * IL,
    +
    1092 const int * IU,
    +
    1093 int * m,
    +
    1094 int * nz,
    +
    1095 double * w,
    +
    1096 std::complex<double> *Z,
    +
    1097 const int * IZ,
    +
    1098 const int * JZ,
    +
    1099 const int * DESCZ,
    +
    1100 std::complex<double> *work,
    +
    1101 int * lwork,
    +
    1102 int * iwork,
    +
    1103 int * liwork,
    +
    1104 int * info);
    +
    1105 }
    +
    1106
    +
    1107
    +
    1108
    +
    1109 /*
    +
    1110 * In the following we have template wrappers for the ScaLAPACK routines
    +
    1111 * wrappers for other numeric types can be added in the future
    +
    1112 */
    +
    1113 template <typename number>
    +
    1114 inline void
    +
    +
    1115 Cgerv2d(int /*context*/,
    +
    1116 int /*M*/,
    +
    1117 int /*N*/,
    +
    1118 number * /*A*/,
    +
    1119 int /*lda*/,
    +
    1120 int /*rsrc*/,
    +
    1121 int /*csrc*/)
    +
    1122 {
    +
    1123 AssertThrow(false, dealii::ExcNotImplemented());
    +
    1124 }
    +
    +
    1125
    +
    1126 inline void
    +
    +
    1127 Cgerv2d(int context, int M, int N, double *A, int lda, int rsrc, int csrc)
    +
    1128 {
    +
    1129 Cdgerv2d(context, M, N, A, lda, rsrc, csrc);
    +
    1130 }
    +
    +
    1131
    +
    1132 inline void
    +
    +
    1133 Cgerv2d(int context, int M, int N, float *A, int lda, int rsrc, int csrc)
    +
    1134 {
    +
    1135 Csgerv2d(context, M, N, A, lda, rsrc, csrc);
    +
    1136 }
    +
    +
    1137
    +
    1138
    +
    1139 template <typename number>
    +
    1140 inline void
    +
    +
    1141 Cgesd2d(int /*context*/,
    +
    1142 int /*M*/,
    +
    1143 int /*N*/,
    +
    1144 number * /*A*/,
    +
    1145 int /*lda*/,
    +
    1146 int /*rdest*/,
    +
    1147 int /*cdest*/)
    +
    1148 {
    +
    1149 AssertThrow(false, dealii::ExcNotImplemented());
    +
    1150 }
    +
    +
    1151
    +
    1152 inline void
    +
    +
    1153 Cgesd2d(int context, int M, int N, double *A, int lda, int rdest, int cdest)
    +
    1154 {
    +
    1155 Cdgesd2d(context, M, N, A, lda, rdest, cdest);
    +
    1156 }
    +
    +
    1157
    +
    1158 inline void
    +
    +
    1159 Cgesd2d(int context, int M, int N, float *A, int lda, int rdest, int cdest)
    +
    1160 {
    +
    1161 Csgesd2d(context, M, N, A, lda, rdest, cdest);
    +
    1162 }
    +
    +
    1163
    +
    1164 inline void
    +
    +
    1165 pplacgv(const int *N,
    +
    1166 double * A,
    +
    1167 const int *IA,
    +
    1168 const int *JA,
    +
    1169 const int *DESCA,
    +
    1170 const int *INCX)
    +
    1171 {}
    +
    +
    1172
    +
    1173 inline void
    +
    +
    1174 pplacgv(const int * N,
    +
    1175 std::complex<double> *A,
    +
    1176 const int * IA,
    +
    1177 const int * JA,
    +
    1178 const int * DESCA,
    +
    1179 const int * INCX)
    +
    1180 {
    +
    1181 pzlacgv_(N, A, IA, JA, DESCA, INCX);
    +
    1182 }
    +
    +
    1183
    +
    1184 template <typename number>
    +
    1185 inline void
    +
    +
    1186 ppotrf(const char * /*UPLO*/,
    +
    1187 const int * /*N*/,
    +
    1188 number * /*A*/,
    +
    1189 const int * /*IA*/,
    +
    1190 const int * /*JA*/,
    +
    1191 const int * /*DESCA*/,
    +
    1192 int * /*INFO*/)
    +
    1193 {
    +
    1194 AssertThrow(false, dealii::ExcNotImplemented());
    +
    1195 }
    +
    +
    1196
    +
    1197 inline void
    +
    +
    1198 ppotrf(const char *UPLO,
    +
    1199 const int * N,
    +
    1200 double * A,
    +
    1201 const int * IA,
    +
    1202 const int * JA,
    +
    1203 const int * DESCA,
    +
    1204 int * INFO)
    +
    1205 {
    +
    1206 pdpotrf_(UPLO, N, A, IA, JA, DESCA, INFO);
    +
    1207 }
    +
    +
    1208
    +
    1209 inline void
    +
    +
    1210 ppotrf(const char *UPLO,
    +
    1211 const int * N,
    +
    1212 float * A,
    +
    1213 const int * IA,
    +
    1214 const int * JA,
    +
    1215 const int * DESCA,
    +
    1216 int * INFO)
    +
    1217 {
    +
    1218 pspotrf_(UPLO, N, A, IA, JA, DESCA, INFO);
    +
    1219 }
    +
    +
    1220
    +
    1221 inline void
    +
    +
    1222 ppotrf(const char * UPLO,
    +
    1223 const int * N,
    +
    1224 std::complex<double> *A,
    +
    1225 const int * IA,
    +
    1226 const int * JA,
    +
    1227 const int * DESCA,
    +
    1228 int * INFO)
    +
    1229 {
    +
    1230 pzpotrf_(UPLO, N, A, IA, JA, DESCA, INFO);
    +
    1231 }
    +
    +
    1232
    +
    1233 template <typename number>
    +
    1234 inline void
    +
    +
    1235 pgetrf(const int * /*m*/,
    +
    1236 const int * /*n*/,
    +
    1237 number * /*A*/,
    +
    1238 const int * /*IA*/,
    +
    1239 const int * /*JA*/,
    +
    1240 const int * /*DESCA*/,
    +
    1241 int * /*ipiv*/,
    +
    1242 int * /*INFO*/)
    +
    1243 {
    +
    1244 AssertThrow(false, dealii::ExcNotImplemented());
    +
    1245 }
    +
    +
    1246
    +
    1247 inline void
    +
    +
    1248 pgetrf(const int *m,
    +
    1249 const int *n,
    +
    1250 double * A,
    +
    1251 const int *IA,
    +
    1252 const int *JA,
    +
    1253 const int *DESCA,
    +
    1254 int * ipiv,
    +
    1255 int * INFO)
    +
    1256 {
    +
    1257 pdgetrf_(m, n, A, IA, JA, DESCA, ipiv, INFO);
    +
    1258 }
    +
    +
    1259
    +
    1260 inline void
    +
    +
    1261 pgetrf(const int *m,
    +
    1262 const int *n,
    +
    1263 float * A,
    +
    1264 const int *IA,
    +
    1265 const int *JA,
    +
    1266 const int *DESCA,
    +
    1267 int * ipiv,
    +
    1268 int * INFO)
    +
    1269 {
    +
    1270 psgetrf_(m, n, A, IA, JA, DESCA, ipiv, INFO);
    +
    1271 }
    +
    +
    1272
    +
    1273 inline void
    +
    +
    1274 pgetrf(const int * m,
    +
    1275 const int * n,
    +
    1276 std::complex<double> *A,
    +
    1277 const int * IA,
    +
    1278 const int * JA,
    +
    1279 const int * DESCA,
    +
    1280 int * ipiv,
    +
    1281 int * INFO)
    +
    1282 {
    +
    1283 pzgetrf_(m, n, A, IA, JA, DESCA, ipiv, INFO);
    +
    1284 }
    +
    +
    1285
    +
    1286 template <typename number>
    +
    1287 inline void
    +
    +
    1288 ppotri(const char * /*UPLO*/,
    +
    1289 const int * /*N*/,
    +
    1290 number * /*A*/,
    +
    1291 const int * /*IA*/,
    +
    1292 const int * /*JA*/,
    +
    1293 const int * /*DESCA*/,
    +
    1294 int * /*INFO*/)
    +
    1295 {
    +
    1296 AssertThrow(false, dealii::ExcNotImplemented());
    +
    1297 }
    +
    +
    1298
    +
    1299 inline void
    +
    +
    1300 ppotri(const char *UPLO,
    +
    1301 const int * N,
    +
    1302 double * A,
    +
    1303 const int * IA,
    +
    1304 const int * JA,
    +
    1305 const int * DESCA,
    +
    1306 int * INFO)
    +
    1307 {
    +
    1308 pdpotri_(UPLO, N, A, IA, JA, DESCA, INFO);
    +
    1309 }
    +
    +
    1310
    +
    1311 inline void
    +
    +
    1312 ppotri(const char *UPLO,
    +
    1313 const int * N,
    +
    1314 float * A,
    +
    1315 const int * IA,
    +
    1316 const int * JA,
    +
    1317 const int * DESCA,
    +
    1318 int * INFO)
    +
    1319 {
    +
    1320 pspotri_(UPLO, N, A, IA, JA, DESCA, INFO);
    +
    1321 }
    +
    +
    1322
    +
    1323 inline void
    +
    +
    1324 ppotri(const char * UPLO,
    +
    1325 const int * N,
    +
    1326 std::complex<double> *A,
    +
    1327 const int * IA,
    +
    1328 const int * JA,
    +
    1329 const int * DESCA,
    +
    1330 int * INFO)
    +
    1331 {
    +
    1332 pzpotri_(UPLO, N, A, IA, JA, DESCA, INFO);
    +
    1333 }
    +
    +
    1334
    +
    1335 template <typename number>
    +
    1336 inline void
    +
    +
    1337 pgetri(const int * /*N*/,
    +
    1338 number * /*A*/,
    +
    1339 const int * /*IA*/,
    +
    1340 const int * /*JA*/,
    +
    1341 const int * /*DESCA*/,
    +
    1342 const int * /*ipiv*/,
    +
    1343 number * /*work*/,
    +
    1344 int * /*lwork*/,
    +
    1345 int * /*iwork*/,
    +
    1346 int * /*liwork*/,
    +
    1347 int * /*info*/)
    +
    1348 {
    +
    1349 AssertThrow(false, dealii::ExcNotImplemented());
    +
    1350 }
    +
    +
    1351
    +
    1352 inline void
    +
    +
    1353 pgetri(const int *N,
    +
    1354 double * A,
    +
    1355 const int *IA,
    +
    1356 const int *JA,
    +
    1357 const int *DESCA,
    +
    1358 const int *ipiv,
    +
    1359 double * work,
    +
    1360 int * lwork,
    +
    1361 int * iwork,
    +
    1362 int * liwork,
    +
    1363 int * info)
    +
    1364 {
    +
    1365 pdgetri_(N, A, IA, JA, DESCA, ipiv, work, lwork, iwork, liwork, info);
    +
    1366 }
    +
    +
    1367
    +
    1368 inline void
    +
    +
    1369 pgetri(const int *N,
    +
    1370 float * A,
    +
    1371 const int *IA,
    +
    1372 const int *JA,
    +
    1373 const int *DESCA,
    +
    1374 const int *ipiv,
    +
    1375 float * work,
    +
    1376 int * lwork,
    +
    1377 int * iwork,
    +
    1378 int * liwork,
    +
    1379 int * info)
    +
    1380 {
    +
    1381 psgetri_(N, A, IA, JA, DESCA, ipiv, work, lwork, iwork, liwork, info);
    +
    1382 }
    +
    +
    1383
    +
    1384 inline void
    +
    +
    1385 pgetri(const int * N,
    +
    1386 std::complex<double> *A,
    +
    1387 const int * IA,
    +
    1388 const int * JA,
    +
    1389 const int * DESCA,
    +
    1390 const int * ipiv,
    +
    1391 std::complex<double> *work,
    +
    1392 int * lwork,
    +
    1393 int * iwork,
    +
    1394 int * liwork,
    +
    1395 int * info)
    +
    1396 {
    +
    1397 pzgetri_(N, A, IA, JA, DESCA, ipiv, work, lwork, iwork, liwork, info);
    +
    1398 }
    +
    +
    1399
    +
    1400
    +
    1401
    +
    1402 template <typename number>
    +
    1403 inline void
    +
    +
    1404 ptrtri(const char * /*UPLO*/,
    +
    1405 const char * /*DIAG*/,
    +
    1406 const int * /*N*/,
    +
    1407 number * /*A*/,
    +
    1408 const int * /*IA*/,
    +
    1409 const int * /*JA*/,
    +
    1410 const int * /*DESCA*/,
    +
    1411 int * /*INFO*/)
    +
    1412 {
    +
    1413 AssertThrow(false, dealii::ExcNotImplemented());
    +
    1414 }
    +
    +
    1415
    +
    1416 inline void
    +
    +
    1417 ptrtri(const char *UPLO,
    +
    1418 const char *DIAG,
    +
    1419 const int * N,
    +
    1420 double * A,
    +
    1421 const int * IA,
    +
    1422 const int * JA,
    +
    1423 const int * DESCA,
    +
    1424 int * INFO)
    +
    1425 {
    +
    1426 pdtrtri_(UPLO, DIAG, N, A, IA, JA, DESCA, INFO);
    +
    1427 }
    +
    +
    1428
    +
    1429 inline void
    +
    +
    1430 ptrtri(const char *UPLO,
    +
    1431 const char *DIAG,
    +
    1432 const int * N,
    +
    1433 float * A,
    +
    1434 const int * IA,
    +
    1435 const int * JA,
    +
    1436 const int * DESCA,
    +
    1437 int * INFO)
    +
    1438 {
    +
    1439 pstrtri_(UPLO, DIAG, N, A, IA, JA, DESCA, INFO);
    +
    1440 }
    +
    +
    1441
    +
    1442 inline void
    +
    +
    1443 ptrtri(const char * UPLO,
    +
    1444 const char * DIAG,
    +
    1445 const int * N,
    +
    1446 std::complex<double> *A,
    +
    1447 const int * IA,
    +
    1448 const int * JA,
    +
    1449 const int * DESCA,
    +
    1450 int * INFO)
    +
    1451 {
    +
    1452 pztrtri_(UPLO, DIAG, N, A, IA, JA, DESCA, INFO);
    +
    1453 }
    +
    +
    1454
    +
    1455 template <typename number>
    +
    1456 inline void
    +
    +
    1457 ppocon(const char * /*uplo*/,
    +
    1458 const int * /*N*/,
    +
    1459 const number * /*A*/,
    +
    1460 const int * /*IA*/,
    +
    1461 const int * /*JA*/,
    +
    1462 const int * /*DESCA*/,
    +
    1463 const number * /*ANORM*/,
    +
    1464 number * /*RCOND*/,
    +
    1465 number * /*WORK*/,
    +
    1466 const int * /*LWORK*/,
    +
    1467 int * /*IWORK*/,
    +
    1468 const int * /*LIWORK*/,
    +
    1469 int * /*INFO*/)
    +
    1470 {
    +
    1471 AssertThrow(false, dealii::ExcNotImplemented());
    +
    1472 }
    +
    +
    1473
    +
    1474 inline void
    +
    +
    1475 ppocon(const char * uplo,
    +
    1476 const int * N,
    +
    1477 const double *A,
    +
    1478 const int * IA,
    +
    1479 const int * JA,
    +
    1480 const int * DESCA,
    +
    1481 const double *ANORM,
    +
    1482 double * RCOND,
    +
    1483 double * WORK,
    +
    1484 const int * LWORK,
    +
    1485 int * IWORK,
    +
    1486 const int * LIWORK,
    +
    1487 int * INFO)
    +
    1488 {
    +
    1489 pdpocon_(uplo,
    +
    1490 N,
    +
    1491 A,
    +
    1492 IA,
    +
    1493 JA,
    +
    1494 DESCA,
    +
    1495 ANORM,
    +
    1496 RCOND,
    +
    1497 WORK,
    +
    1498 LWORK,
    +
    1499 IWORK,
    +
    1500 LIWORK,
    +
    1501 INFO);
    +
    1502 }
    +
    +
    1503
    +
    1504 inline void
    +
    +
    1505 ppocon(const char * uplo,
    +
    1506 const int * N,
    +
    1507 const float *A,
    +
    1508 const int * IA,
    +
    1509 const int * JA,
    +
    1510 const int * DESCA,
    +
    1511 const float *ANORM,
    +
    1512 float * RCOND,
    +
    1513 float * WORK,
    +
    1514 const int * LWORK,
    +
    1515 int * IWORK,
    +
    1516 const int * LIWORK,
    +
    1517 int * INFO)
    +
    1518 {
    +
    1519 pspocon_(uplo,
    +
    1520 N,
    +
    1521 A,
    +
    1522 IA,
    +
    1523 JA,
    +
    1524 DESCA,
    +
    1525 ANORM,
    +
    1526 RCOND,
    +
    1527 WORK,
    +
    1528 LWORK,
    +
    1529 IWORK,
    +
    1530 LIWORK,
    +
    1531 INFO);
    +
    1532 }
    +
    +
    1533
    +
    1534
    +
    1535 template <typename number>
    +
    1536 inline number
    +
    +
    1537 plansy(const char * /*norm*/,
    +
    1538 const char * /*uplo*/,
    +
    1539 const int * /*N*/,
    +
    1540 const number * /*A*/,
    +
    1541 const int * /*IA*/,
    +
    1542 const int * /*JA*/,
    +
    1543 const int * /*DESCA*/,
    +
    1544 number * /*work*/)
    +
    1545 {
    +
    1546 AssertThrow(false, dealii::ExcNotImplemented());
    +
    1547 }
    +
    +
    1548
    +
    1549 inline double
    +
    +
    1550 plansy(const char * norm,
    +
    1551 const char * uplo,
    +
    1552 const int * N,
    +
    1553 const double *A,
    +
    1554 const int * IA,
    +
    1555 const int * JA,
    +
    1556 const int * DESCA,
    +
    1557 double * work)
    +
    1558 {
    +
    1559 return pdlansy_(norm, uplo, N, A, IA, JA, DESCA, work);
    +
    1560 }
    +
    +
    1561
    +
    1562 inline float
    +
    +
    1563 plansy(const char * norm,
    +
    1564 const char * uplo,
    +
    1565 const int * N,
    +
    1566 const float *A,
    +
    1567 const int * IA,
    +
    1568 const int * JA,
    +
    1569 const int * DESCA,
    +
    1570 float * work)
    +
    1571 {
    +
    1572 return pslansy_(norm, uplo, N, A, IA, JA, DESCA, work);
    +
    1573 }
    +
    +
    1574
    +
    1575
    +
    1576 template <typename number>
    +
    1577 inline void
    +
    +
    1578 pgesv(const int * /*n*/,
    +
    1579 const int * /*nrhs*/,
    +
    1580 number * /*A*/,
    +
    1581 const int * /*ia*/,
    +
    1582 const int * /*ja*/,
    +
    1583 const int * /*desca*/,
    +
    1584 int * /*ipiv*/,
    +
    1585 number * /*B*/,
    +
    1586 const int * /*ib*/,
    +
    1587 const int * /*jb*/,
    +
    1588 const int * /*descb*/,
    +
    1589 int * /*info*/)
    +
    1590 {
    +
    1591 AssertThrow(false, dealii::ExcNotImplemented());
    +
    1592 }
    +
    +
    1593
    +
    1594 inline void
    +
    +
    1595 pgesv(const int *n,
    +
    1596 const int *nrhs,
    +
    1597 double * A,
    +
    1598 const int *ia,
    +
    1599 const int *ja,
    +
    1600 const int *desca,
    +
    1601 int * ipiv,
    +
    1602 double * B,
    +
    1603 const int *ib,
    +
    1604 const int *jb,
    +
    1605 const int *descb,
    +
    1606 int * info)
    +
    1607 {
    +
    1608 pdgesv_(n, nrhs, A, ia, ja, desca, ipiv, B, ib, jb, descb, info);
    +
    1609 }
    +
    +
    1610
    +
    1611 inline void
    +
    +
    1612 pgesv(const int *n,
    +
    1613 const int *nrhs,
    +
    1614 float * A,
    +
    1615 const int *ia,
    +
    1616 const int *ja,
    +
    1617 const int *desca,
    +
    1618 int * ipiv,
    +
    1619 float * B,
    +
    1620 const int *ib,
    +
    1621 const int *jb,
    +
    1622 const int *descb,
    +
    1623 int * info)
    +
    1624 {
    +
    1625 psgesv_(n, nrhs, A, ia, ja, desca, ipiv, B, ib, jb, descb, info);
    +
    1626 }
    +
    +
    1627
    +
    1628
    +
    1629 template <typename number>
    +
    1630 inline void
    +
    +
    1631 pgemm(const char * /*transa*/,
    +
    1632 const char * /*transb*/,
    +
    1633 const int * /*m*/,
    +
    1634 const int * /*n*/,
    +
    1635 const int * /*k*/,
    +
    1636 const number * /*alpha*/,
    +
    1637 const number * /*A*/,
    +
    1638 const int * /*IA*/,
    +
    1639 const int * /*JA*/,
    +
    1640 const int * /*DESCA*/,
    +
    1641 const number * /*B*/,
    +
    1642 const int * /*IB*/,
    +
    1643 const int * /*JB*/,
    +
    1644 const int * /*DESCB*/,
    +
    1645 const number * /*beta*/,
    +
    1646 number * /*C*/,
    +
    1647 const int * /*IC*/,
    +
    1648 const int * /*JC*/,
    +
    1649 const int * /*DESCC*/)
    +
    1650 {
    +
    1651 AssertThrow(false, dealii::ExcNotImplemented());
    +
    1652 }
    +
    +
    1653
    +
    1654 inline void
    +
    +
    1655 pgemm(const char * transa,
    +
    1656 const char * transb,
    +
    1657 const int * m,
    +
    1658 const int * n,
    +
    1659 const int * k,
    +
    1660 const double *alpha,
    +
    1661 const double *A,
    +
    1662 const int * IA,
    +
    1663 const int * JA,
    +
    1664 const int * DESCA,
    +
    1665 const double *B,
    +
    1666 const int * IB,
    +
    1667 const int * JB,
    +
    1668 const int * DESCB,
    +
    1669 const double *beta,
    +
    1670 double * C,
    +
    1671 const int * IC,
    +
    1672 const int * JC,
    +
    1673 const int * DESCC)
    +
    1674 {
    + +
    1676 transb,
    +
    1677 m,
    +
    1678 n,
    +
    1679 k,
    +
    1680 alpha,
    +
    1681 A,
    +
    1682 IA,
    +
    1683 JA,
    +
    1684 DESCA,
    +
    1685 B,
    +
    1686 IB,
    +
    1687 JB,
    +
    1688 DESCB,
    +
    1689 beta,
    +
    1690 C,
    +
    1691 IC,
    +
    1692 JC,
    +
    1693 DESCC);
    +
    1694 }
    +
    +
    1695
    +
    1696 inline void
    +
    +
    1697 pgemm(const char * transa,
    +
    1698 const char * transb,
    +
    1699 const int * m,
    +
    1700 const int * n,
    +
    1701 const int * k,
    +
    1702 const float *alpha,
    +
    1703 const float *A,
    +
    1704 const int * IA,
    +
    1705 const int * JA,
    +
    1706 const int * DESCA,
    +
    1707 const float *B,
    +
    1708 const int * IB,
    +
    1709 const int * JB,
    +
    1710 const int * DESCB,
    +
    1711 const float *beta,
    +
    1712 float * C,
    +
    1713 const int * IC,
    +
    1714 const int * JC,
    +
    1715 const int * DESCC)
    +
    1716 {
    + +
    1718 transb,
    +
    1719 m,
    +
    1720 n,
    +
    1721 k,
    +
    1722 alpha,
    +
    1723 A,
    +
    1724 IA,
    +
    1725 JA,
    +
    1726 DESCA,
    +
    1727 B,
    +
    1728 IB,
    +
    1729 JB,
    +
    1730 DESCB,
    +
    1731 beta,
    +
    1732 C,
    +
    1733 IC,
    +
    1734 JC,
    +
    1735 DESCC);
    +
    1736 }
    +
    +
    1737
    +
    1738
    +
    1739 inline void
    +
    +
    1740 pgemm(const char * transa,
    +
    1741 const char * transb,
    +
    1742 const int * m,
    +
    1743 const int * n,
    +
    1744 const int * k,
    +
    1745 const std::complex<double> *alpha,
    +
    1746 const std::complex<double> *A,
    +
    1747 const int * IA,
    +
    1748 const int * JA,
    +
    1749 const int * DESCA,
    +
    1750 const std::complex<double> *B,
    +
    1751 const int * IB,
    +
    1752 const int * JB,
    +
    1753 const int * DESCB,
    +
    1754 const std::complex<double> *beta,
    +
    1755 std::complex<double> * C,
    +
    1756 const int * IC,
    +
    1757 const int * JC,
    +
    1758 const int * DESCC)
    +
    1759 {
    + +
    1761 transb,
    +
    1762 m,
    +
    1763 n,
    +
    1764 k,
    +
    1765 alpha,
    +
    1766 A,
    +
    1767 IA,
    +
    1768 JA,
    +
    1769 DESCA,
    +
    1770 B,
    +
    1771 IB,
    +
    1772 JB,
    +
    1773 DESCB,
    +
    1774 beta,
    +
    1775 C,
    +
    1776 IC,
    +
    1777 JC,
    +
    1778 DESCC);
    +
    1779 }
    +
    +
    1780
    +
    1781 template <typename number>
    +
    1782 inline number
    +
    +
    1783 plange(const char * /*norm*/,
    +
    1784 const int * /*m*/,
    +
    1785 const int * /*n*/,
    +
    1786 const number * /*A*/,
    +
    1787 const int * /*ia*/,
    +
    1788 const int * /*ja*/,
    +
    1789 const int * /*desca*/,
    +
    1790 number * /*work*/)
    +
    1791 {
    +
    1792 AssertThrow(false, dealii::ExcNotImplemented());
    +
    1793 }
    +
    +
    1794
    +
    1795 inline double
    +
    +
    1796 plange(const char * norm,
    +
    1797 const int * m,
    +
    1798 const int * n,
    +
    1799 const double *A,
    +
    1800 const int * ia,
    +
    1801 const int * ja,
    +
    1802 const int * desca,
    +
    1803 double * work)
    +
    1804 {
    +
    1805 return pdlange_(norm, m, n, A, ia, ja, desca, work);
    +
    1806 }
    +
    +
    1807
    +
    1808 inline float
    +
    +
    1809 plange(const char * norm,
    +
    1810 const int * m,
    +
    1811 const int * n,
    +
    1812 const float *A,
    +
    1813 const int * ia,
    +
    1814 const int * ja,
    +
    1815 const int * desca,
    +
    1816 float * work)
    +
    1817 {
    +
    1818 return pslange_(norm, m, n, A, ia, ja, desca, work);
    +
    1819 }
    +
    +
    1820
    +
    1821
    +
    1822 template <typename number>
    +
    1823 inline void
    +
    +
    1824 psyev(const char * /*jobz*/,
    +
    1825 const char * /*uplo*/,
    +
    1826 const int * /*m*/,
    +
    1827 number * /*A*/,
    +
    1828 const int * /*ia*/,
    +
    1829 const int * /*ja*/,
    +
    1830 int * /*desca*/,
    +
    1831 number * /*w*/,
    +
    1832 number * /*z*/,
    +
    1833 const int * /*iz*/,
    +
    1834 const int * /*jz*/,
    +
    1835 int * /*descz*/,
    +
    1836 number * /*work*/,
    +
    1837 const int * /*lwork*/,
    +
    1838 int * /*info*/)
    +
    1839 {
    +
    1840 AssertThrow(false, dealii::ExcNotImplemented());
    +
    1841 }
    +
    +
    1842
    +
    1843 inline void
    +
    +
    1844 psyev(const char *jobz,
    +
    1845 const char *uplo,
    +
    1846 const int * m,
    +
    1847 double * A,
    +
    1848 const int * ia,
    +
    1849 const int * ja,
    +
    1850 int * desca,
    +
    1851 double * w,
    +
    1852 double * z,
    +
    1853 const int * iz,
    +
    1854 const int * jz,
    +
    1855 int * descz,
    +
    1856 double * work,
    +
    1857 const int * lwork,
    +
    1858 int * info)
    +
    1859 {
    +
    1860 pdsyev_(
    +
    1861 jobz, uplo, m, A, ia, ja, desca, w, z, iz, jz, descz, work, lwork, info);
    +
    1862 }
    +
    +
    1863
    +
    1864 inline void
    +
    +
    1865 psyev(const char *jobz,
    +
    1866 const char *uplo,
    +
    1867 const int * m,
    +
    1868 float * A,
    +
    1869 const int * ia,
    +
    1870 const int * ja,
    +
    1871 int * desca,
    +
    1872 float * w,
    +
    1873 float * z,
    +
    1874 const int * iz,
    +
    1875 const int * jz,
    +
    1876 int * descz,
    +
    1877 float * work,
    +
    1878 const int * lwork,
    +
    1879 int * info)
    +
    1880 {
    +
    1881 pssyev_(
    +
    1882 jobz, uplo, m, A, ia, ja, desca, w, z, iz, jz, descz, work, lwork, info);
    +
    1883 }
    +
    +
    1884
    +
    1885 inline void
    +
    +
    1886 psyev(const char * jobz,
    +
    1887 const char * uplo,
    +
    1888 const int * m,
    +
    1889 std::complex<double> *A,
    +
    1890 const int * ia,
    +
    1891 const int * ja,
    +
    1892 int * desca,
    +
    1893 double * w,
    +
    1894 std::complex<double> *z,
    +
    1895 const int * iz,
    +
    1896 const int * jz,
    +
    1897 int * descz,
    +
    1898 std::complex<double> *work,
    +
    1899 const int * lwork,
    +
    1900 int * info)
    +
    1901 {
    +
    1902 pzheev_(
    +
    1903 jobz, uplo, m, A, ia, ja, desca, w, z, iz, jz, descz, work, lwork, info);
    +
    1904 }
    +
    +
    1905
    +
    1906 template <typename number>
    +
    1907 inline void
    +
    +
    1908 placpy(const char * /*uplo*/,
    +
    1909 const int * /*m*/,
    +
    1910 const int * /*n*/,
    +
    1911 const number * /*A*/,
    +
    1912 const int * /*ia*/,
    +
    1913 const int * /*ja*/,
    +
    1914 const int * /*desca*/,
    +
    1915 number * /*B*/,
    +
    1916 const int * /*ib*/,
    +
    1917 const int * /*jb*/,
    +
    1918 const int * /*descb*/)
    +
    1919 {
    +
    1920 AssertThrow(false, dealii::ExcNotImplemented());
    +
    1921 }
    +
    +
    1922
    +
    1923 inline void
    +
    +
    1924 placpy(const char * uplo,
    +
    1925 const int * m,
    +
    1926 const int * n,
    +
    1927 const double *A,
    +
    1928 const int * ia,
    +
    1929 const int * ja,
    +
    1930 const int * desca,
    +
    1931 double * B,
    +
    1932 const int * ib,
    +
    1933 const int * jb,
    +
    1934 const int * descb)
    +
    1935 {
    +
    1936 pdlacpy_(uplo, m, n, A, ia, ja, desca, B, ib, jb, descb);
    +
    1937 }
    +
    +
    1938
    +
    1939 inline void
    +
    +
    1940 placpy(const char * uplo,
    +
    1941 const int * m,
    +
    1942 const int * n,
    +
    1943 const float *A,
    +
    1944 const int * ia,
    +
    1945 const int * ja,
    +
    1946 const int * desca,
    +
    1947 float * B,
    +
    1948 const int * ib,
    +
    1949 const int * jb,
    +
    1950 const int * descb)
    +
    1951 {
    +
    1952 pslacpy_(uplo, m, n, A, ia, ja, desca, B, ib, jb, descb);
    +
    1953 }
    +
    +
    1954
    +
    1955
    +
    1956 template <typename number>
    +
    1957 inline void
    +
    +
    1958 pgemr2d(const int * /*m*/,
    +
    1959 const int * /*n*/,
    +
    1960 const number * /*A*/,
    +
    1961 const int * /*ia*/,
    +
    1962 const int * /*ja*/,
    +
    1963 const int * /*desca*/,
    +
    1964 number * /*B*/,
    +
    1965 const int * /*ib*/,
    +
    1966 const int * /*jb*/,
    +
    1967 const int * /*descb*/,
    +
    1968 const int * /*ictxt*/)
    +
    1969 {
    +
    1970 AssertThrow(false, dealii::ExcNotImplemented());
    +
    1971 }
    +
    +
    1972
    +
    1973 inline void
    +
    +
    1974 pgemr2d(const int * m,
    +
    1975 const int * n,
    +
    1976 const double *A,
    +
    1977 const int * ia,
    +
    1978 const int * ja,
    +
    1979 const int * desca,
    +
    1980 double * B,
    +
    1981 const int * ib,
    +
    1982 const int * jb,
    +
    1983 const int * descb,
    +
    1984 const int * ictxt)
    +
    1985 {
    +
    1986 pdgemr2d_(m, n, A, ia, ja, desca, B, ib, jb, descb, ictxt);
    +
    1987 }
    +
    +
    1988
    +
    1989 inline void
    +
    +
    1990 pgemr2d(const int * m,
    +
    1991 const int * n,
    +
    1992 const float *A,
    +
    1993 const int * ia,
    +
    1994 const int * ja,
    +
    1995 const int * desca,
    +
    1996 float * B,
    +
    1997 const int * ib,
    +
    1998 const int * jb,
    +
    1999 const int * descb,
    +
    2000 const int * ictxt)
    +
    2001 {
    +
    2002 psgemr2d_(m, n, A, ia, ja, desca, B, ib, jb, descb, ictxt);
    +
    2003 }
    +
    +
    2004
    +
    2005
    +
    2006 template <typename number>
    +
    2007 inline void
    +
    +
    2008 plamch(const int * /*ictxt*/, const char * /*cmach*/, number & /*val*/)
    +
    2009 {
    +
    2010 AssertThrow(false, dealii::ExcNotImplemented());
    +
    2011 }
    +
    +
    2012
    +
    2013 inline void
    +
    +
    2014 plamch(const int *ictxt, const char *cmach, double &val)
    +
    2015 {
    +
    2016 val = pdlamch_(ictxt, cmach);
    +
    2017 }
    +
    +
    2018
    +
    2019 inline void
    +
    +
    2020 plamch(const int *ictxt, const char *cmach, float &val)
    +
    2021 {
    +
    2022 val = pslamch_(ictxt, cmach);
    +
    2023 }
    +
    +
    2024
    +
    2025
    +
    2026 template <typename number>
    +
    2027 inline void
    +
    +
    2028 psyevx(const char * /*jobz*/,
    +
    2029 const char * /*range*/,
    +
    2030 const char * /*uplo*/,
    +
    2031 const int * /*n*/,
    +
    2032 number * /*A*/,
    +
    2033 const int * /*ia*/,
    +
    2034 const int * /*ja*/,
    +
    2035 const int * /*desca*/,
    +
    2036 number * /*VL*/,
    +
    2037 number * /*VU*/,
    +
    2038 const int * /*il*/,
    +
    2039 const int * /*iu*/,
    +
    2040 number * /*abstol*/,
    +
    2041 const int * /*m*/,
    +
    2042 const int * /*nz*/,
    +
    2043 number * /*w*/,
    +
    2044 number * /*orfac*/,
    +
    2045 number * /*Z*/,
    +
    2046 const int * /*iz*/,
    +
    2047 const int * /*jz*/,
    +
    2048 const int * /*descz*/,
    +
    2049 number * /*work*/,
    +
    2050 int * /*lwork*/,
    +
    2051 int * /*iwork*/,
    +
    2052 int * /*liwork*/,
    +
    2053 int * /*ifail*/,
    +
    2054 int * /*iclustr*/,
    +
    2055 number * /*gap*/,
    +
    2056 int * /*info*/)
    +
    2057 {
    +
    2058 AssertThrow(false, dealii::ExcNotImplemented());
    +
    2059 }
    +
    +
    2060
    +
    2061 inline void
    +
    +
    2062 psyevx(const char *jobz,
    +
    2063 const char *range,
    +
    2064 const char *uplo,
    +
    2065 const int * n,
    +
    2066 double * A,
    +
    2067 const int * ia,
    +
    2068 const int * ja,
    +
    2069 const int * desca,
    +
    2070 double * VL,
    +
    2071 double * VU,
    +
    2072 const int * il,
    +
    2073 const int * iu,
    +
    2074 double * abstol,
    +
    2075 const int * m,
    +
    2076 const int * nz,
    +
    2077 double * w,
    +
    2078 double * orfac,
    +
    2079 double * Z,
    +
    2080 const int * iz,
    +
    2081 const int * jz,
    +
    2082 const int * descz,
    +
    2083 double * work,
    +
    2084 int * lwork,
    +
    2085 int * iwork,
    +
    2086 int * liwork,
    +
    2087 int * ifail,
    +
    2088 int * iclustr,
    +
    2089 double * gap,
    +
    2090 int * info)
    +
    2091 {
    +
    2092 pdsyevx_(jobz,
    +
    2093 range,
    +
    2094 uplo,
    +
    2095 n,
    +
    2096 A,
    +
    2097 ia,
    +
    2098 ja,
    +
    2099 desca,
    +
    2100 VL,
    +
    2101 VU,
    +
    2102 il,
    +
    2103 iu,
    +
    2104 abstol,
    +
    2105 m,
    +
    2106 nz,
    +
    2107 w,
    +
    2108 orfac,
    +
    2109 Z,
    +
    2110 iz,
    +
    2111 jz,
    +
    2112 descz,
    +
    2113 work,
    +
    2114 lwork,
    +
    2115 iwork,
    +
    2116 liwork,
    +
    2117 ifail,
    +
    2118 iclustr,
    +
    2119 gap,
    +
    2120 info);
    +
    2121 }
    +
    +
    2122
    +
    2123 inline void
    +
    +
    2124 psyevx(const char *jobz,
    +
    2125 const char *range,
    +
    2126 const char *uplo,
    +
    2127 const int * n,
    +
    2128 float * A,
    +
    2129 const int * ia,
    +
    2130 const int * ja,
    +
    2131 const int * desca,
    +
    2132 float * VL,
    +
    2133 float * VU,
    +
    2134 const int * il,
    +
    2135 const int * iu,
    +
    2136 float * abstol,
    +
    2137 const int * m,
    +
    2138 const int * nz,
    +
    2139 float * w,
    +
    2140 float * orfac,
    +
    2141 float * Z,
    +
    2142 const int * iz,
    +
    2143 const int * jz,
    +
    2144 const int * descz,
    +
    2145 float * work,
    +
    2146 int * lwork,
    +
    2147 int * iwork,
    +
    2148 int * liwork,
    +
    2149 int * ifail,
    +
    2150 int * iclustr,
    +
    2151 float * gap,
    +
    2152 int * info)
    +
    2153 {
    +
    2154 pssyevx_(jobz,
    +
    2155 range,
    +
    2156 uplo,
    +
    2157 n,
    +
    2158 A,
    +
    2159 ia,
    +
    2160 ja,
    +
    2161 desca,
    +
    2162 VL,
    +
    2163 VU,
    +
    2164 il,
    +
    2165 iu,
    +
    2166 abstol,
    +
    2167 m,
    +
    2168 nz,
    +
    2169 w,
    +
    2170 orfac,
    +
    2171 Z,
    +
    2172 iz,
    +
    2173 jz,
    +
    2174 descz,
    +
    2175 work,
    +
    2176 lwork,
    +
    2177 iwork,
    +
    2178 liwork,
    +
    2179 ifail,
    +
    2180 iclustr,
    +
    2181 gap,
    +
    2182 info);
    +
    2183 }
    +
    +
    2184
    +
    2185 inline void
    +
    +
    2186 psyevx(const char * jobz,
    +
    2187 const char * range,
    +
    2188 const char * uplo,
    +
    2189 const int * n,
    +
    2190 std::complex<double> *A,
    +
    2191 const int * ia,
    +
    2192 const int * ja,
    +
    2193 const int * desca,
    +
    2194 double * VL,
    +
    2195 double * VU,
    +
    2196 const int * il,
    +
    2197 const int * iu,
    +
    2198 double * abstol,
    +
    2199 const int * m,
    +
    2200 const int * nz,
    +
    2201 double * w,
    +
    2202 double * orfac,
    +
    2203 std::complex<double> *Z,
    +
    2204 const int * iz,
    +
    2205 const int * jz,
    +
    2206 const int * descz,
    +
    2207 std::complex<double> *work,
    +
    2208 int * lwork,
    +
    2209 int * iwork,
    +
    2210 int * liwork,
    +
    2211 int * ifail,
    +
    2212 int * iclustr,
    +
    2213 double * gap,
    +
    2214 int * info)
    +
    2215 {
    +
    2216 pzheevx_(jobz,
    +
    2217 range,
    +
    2218 uplo,
    +
    2219 n,
    +
    2220 A,
    +
    2221 ia,
    +
    2222 ja,
    +
    2223 desca,
    +
    2224 VL,
    +
    2225 VU,
    +
    2226 il,
    +
    2227 iu,
    +
    2228 abstol,
    +
    2229 m,
    +
    2230 nz,
    +
    2231 w,
    +
    2232 orfac,
    +
    2233 Z,
    +
    2234 iz,
    +
    2235 jz,
    +
    2236 descz,
    +
    2237 work,
    +
    2238 lwork,
    +
    2239 iwork,
    +
    2240 liwork,
    +
    2241 ifail,
    +
    2242 iclustr,
    +
    2243 gap,
    +
    2244 info);
    +
    2245 }
    +
    +
    2246
    +
    2247 template <typename number>
    +
    2248 inline void
    +
    +
    2249 pgesvd(const char * /*jobu*/,
    +
    2250 const char * /*jobvt*/,
    +
    2251 const int * /*m*/,
    +
    2252 const int * /*n*/,
    +
    2253 number * /*A*/,
    +
    2254 const int * /*ia*/,
    +
    2255 const int * /*ja*/,
    +
    2256 const int * /*desca*/,
    +
    2257 number * /*S*/,
    +
    2258 number * /*U*/,
    +
    2259 const int * /*iu*/,
    +
    2260 const int * /*ju*/,
    +
    2261 const int * /*descu*/,
    +
    2262 number * /*VT*/,
    +
    2263 const int * /*ivt*/,
    +
    2264 const int * /*jvt*/,
    +
    2265 const int * /*descvt*/,
    +
    2266 number * /*work*/,
    +
    2267 int * /*lwork*/,
    +
    2268 int * /*info*/)
    +
    2269 {
    +
    2270 AssertThrow(false, dealii::ExcNotImplemented());
    +
    2271 }
    +
    +
    2272
    +
    2273 inline void
    +
    +
    2274 pgesvd(const char *jobu,
    +
    2275 const char *jobvt,
    +
    2276 const int * m,
    +
    2277 const int * n,
    +
    2278 double * A,
    +
    2279 const int * ia,
    +
    2280 const int * ja,
    +
    2281 const int * desca,
    +
    2282 double * S,
    +
    2283 double * U,
    +
    2284 const int * iu,
    +
    2285 const int * ju,
    +
    2286 const int * descu,
    +
    2287 double * VT,
    +
    2288 const int * ivt,
    +
    2289 const int * jvt,
    +
    2290 const int * descvt,
    +
    2291 double * work,
    +
    2292 int * lwork,
    +
    2293 int * info)
    +
    2294 {
    +
    2295 pdgesvd_(jobu,
    +
    2296 jobvt,
    +
    2297 m,
    +
    2298 n,
    +
    2299 A,
    +
    2300 ia,
    +
    2301 ja,
    +
    2302 desca,
    +
    2303 S,
    +
    2304 U,
    +
    2305 iu,
    +
    2306 ju,
    +
    2307 descu,
    +
    2308 VT,
    +
    2309 ivt,
    +
    2310 jvt,
    +
    2311 descvt,
    +
    2312 work,
    +
    2313 lwork,
    +
    2314 info);
    +
    2315 }
    +
    +
    2316
    +
    2317 inline void
    +
    +
    2318 pgesvd(const char *jobu,
    +
    2319 const char *jobvt,
    +
    2320 const int * m,
    +
    2321 const int * n,
    +
    2322 float * A,
    +
    2323 const int * ia,
    +
    2324 const int * ja,
    +
    2325 const int * desca,
    +
    2326 float * S,
    +
    2327 float * U,
    +
    2328 const int * iu,
    +
    2329 const int * ju,
    +
    2330 const int * descu,
    +
    2331 float * VT,
    +
    2332 const int * ivt,
    +
    2333 const int * jvt,
    +
    2334 const int * descvt,
    +
    2335 float * work,
    +
    2336 int * lwork,
    +
    2337 int * info)
    +
    2338 {
    +
    2339 psgesvd_(jobu,
    +
    2340 jobvt,
    +
    2341 m,
    +
    2342 n,
    +
    2343 A,
    +
    2344 ia,
    +
    2345 ja,
    +
    2346 desca,
    +
    2347 S,
    +
    2348 U,
    +
    2349 iu,
    +
    2350 ju,
    +
    2351 descu,
    +
    2352 VT,
    +
    2353 ivt,
    +
    2354 jvt,
    +
    2355 descvt,
    +
    2356 work,
    +
    2357 lwork,
    +
    2358 info);
    +
    2359 }
    +
    +
    2360
    +
    2361
    +
    2362 template <typename number>
    +
    2363 inline void
    +
    +
    2364 pgels(const char * /*trans*/,
    +
    2365 const int * /*m*/,
    +
    2366 const int * /*n*/,
    +
    2367 const int * /*nrhs*/,
    +
    2368 number * /*A*/,
    +
    2369 const int * /*ia*/,
    +
    2370 const int * /*ja*/,
    +
    2371 const int * /*desca*/,
    +
    2372 number * /*B*/,
    +
    2373 const int * /*ib*/,
    +
    2374 const int * /*jb*/,
    +
    2375 const int * /*descb*/,
    +
    2376 number * /*work*/,
    +
    2377 int * /*lwork*/,
    +
    2378 int * /*info*/)
    +
    2379 {
    +
    2380 AssertThrow(false, dealii::ExcNotImplemented());
    +
    2381 }
    +
    +
    2382
    +
    2383 inline void
    +
    +
    2384 pgels(const char *trans,
    +
    2385 const int * m,
    +
    2386 const int * n,
    +
    2387 const int * nrhs,
    +
    2388 double * A,
    +
    2389 const int * ia,
    +
    2390 const int * ja,
    +
    2391 const int * desca,
    +
    2392 double * B,
    +
    2393 const int * ib,
    +
    2394 const int * jb,
    +
    2395 const int * descb,
    +
    2396 double * work,
    +
    2397 int * lwork,
    +
    2398 int * info)
    +
    2399 {
    +
    2400 pdgels_(
    +
    2401 trans, m, n, nrhs, A, ia, ja, desca, B, ib, jb, descb, work, lwork, info);
    +
    2402 }
    +
    +
    2403
    +
    2404 inline void
    +
    +
    2405 pgels(const char *trans,
    +
    2406 const int * m,
    +
    2407 const int * n,
    +
    2408 const int * nrhs,
    +
    2409 float * A,
    +
    2410 const int * ia,
    +
    2411 const int * ja,
    +
    2412 const int * desca,
    +
    2413 float * B,
    +
    2414 const int * ib,
    +
    2415 const int * jb,
    +
    2416 const int * descb,
    +
    2417 float * work,
    +
    2418 int * lwork,
    +
    2419 int * info)
    +
    2420 {
    +
    2421 psgels_(
    +
    2422 trans, m, n, nrhs, A, ia, ja, desca, B, ib, jb, descb, work, lwork, info);
    +
    2423 }
    +
    +
    2424
    +
    2425
    +
    2426 template <typename number>
    +
    2427 inline void
    +
    +
    2428 pgeadd(const char * /*transa*/,
    +
    2429 const int * /*m*/,
    +
    2430 const int * /*n*/,
    +
    2431 const number * /*alpha*/,
    +
    2432 const number * /*A*/,
    +
    2433 const int * /*IA*/,
    +
    2434 const int * /*JA*/,
    +
    2435 const int * /*DESCA*/,
    +
    2436 const number * /*beta*/,
    +
    2437 number * /*C*/,
    +
    2438 const int * /*IC*/,
    +
    2439 const int * /*JC*/,
    +
    2440 const int * /*DESCC*/)
    +
    2441 {
    +
    2442 AssertThrow(false, dealii::ExcNotImplemented());
    +
    2443 }
    +
    +
    2444
    +
    2445 inline void
    +
    +
    2446 pgeadd(const char * transa,
    +
    2447 const int * m,
    +
    2448 const int * n,
    +
    2449 const double *alpha,
    +
    2450 const double *A,
    +
    2451 const int * IA,
    +
    2452 const int * JA,
    +
    2453 const int * DESCA,
    +
    2454 const double *beta,
    +
    2455 double * C,
    +
    2456 const int * IC,
    +
    2457 const int * JC,
    +
    2458 const int * DESCC)
    +
    2459 {
    +
    2460 pdgeadd_(transa, m, n, alpha, A, IA, JA, DESCA, beta, C, IC, JC, DESCC);
    +
    2461 }
    +
    +
    2462
    +
    2463 inline void
    +
    +
    2464 pgeadd(const char * transa,
    +
    2465 const int * m,
    +
    2466 const int * n,
    +
    2467 const float *alpha,
    +
    2468 const float *A,
    +
    2469 const int * IA,
    +
    2470 const int * JA,
    +
    2471 const int * DESCA,
    +
    2472 const float *beta,
    +
    2473 float * C,
    +
    2474 const int * IC,
    +
    2475 const int * JC,
    +
    2476 const int * DESCC)
    +
    2477 {
    +
    2478 psgeadd_(transa, m, n, alpha, A, IA, JA, DESCA, beta, C, IC, JC, DESCC);
    +
    2479 }
    +
    +
    2480
    +
    2481 inline void
    +
    +
    2482 pgeadd(const char * transa,
    +
    2483 const int * m,
    +
    2484 const int * n,
    +
    2485 const std::complex<double> *alpha,
    +
    2486 const std::complex<double> *A,
    +
    2487 const int * IA,
    +
    2488 const int * JA,
    +
    2489 const int * DESCA,
    +
    2490 const std::complex<double> *beta,
    +
    2491 std::complex<double> * C,
    +
    2492 const int * IC,
    +
    2493 const int * JC,
    +
    2494 const int * DESCC)
    +
    2495 {
    +
    2496 pzgeadd_(transa, m, n, alpha, A, IA, JA, DESCA, beta, C, IC, JC, DESCC);
    +
    2497 }
    +
    +
    2498
    +
    2499 template <typename number>
    +
    2500 inline void
    +
    +
    2501 ptran(const int * /*m*/,
    +
    2502 const int * /*n*/,
    +
    2503 const number * /*alpha*/,
    +
    2504 const number * /*A*/,
    +
    2505 const int * /*IA*/,
    +
    2506 const int * /*JA*/,
    +
    2507 const int * /*DESCA*/,
    +
    2508 const number * /*beta*/,
    +
    2509 number * /*C*/,
    +
    2510 const int * /*IC*/,
    +
    2511 const int * /*JC*/,
    +
    2512 const int * /*DESCC*/)
    +
    2513 {
    +
    2514 AssertThrow(false, dealii::ExcNotImplemented());
    +
    2515 }
    +
    +
    2516
    +
    2517 inline void
    +
    +
    2518 ptran(const int * m,
    +
    2519 const int * n,
    +
    2520 const double *alpha,
    +
    2521 const double *A,
    +
    2522 const int * IA,
    +
    2523 const int * JA,
    +
    2524 const int * DESCA,
    +
    2525 const double *beta,
    +
    2526 double * C,
    +
    2527 const int * IC,
    +
    2528 const int * JC,
    +
    2529 const int * DESCC)
    +
    2530 {
    +
    2531 pdtran_(m, n, alpha, A, IA, JA, DESCA, beta, C, IC, JC, DESCC);
    +
    2532 }
    +
    +
    2533
    +
    2534 inline void
    +
    +
    2535 ptran(const int * m,
    +
    2536 const int * n,
    +
    2537 const float *alpha,
    +
    2538 const float *A,
    +
    2539 const int * IA,
    +
    2540 const int * JA,
    +
    2541 const int * DESCA,
    +
    2542 const float *beta,
    +
    2543 float * C,
    +
    2544 const int * IC,
    +
    2545 const int * JC,
    +
    2546 const int * DESCC)
    +
    2547 {
    +
    2548 pstran_(m, n, alpha, A, IA, JA, DESCA, beta, C, IC, JC, DESCC);
    +
    2549 }
    +
    +
    2550
    +
    2551
    +
    2552 template <typename number>
    +
    2553 inline void
    +
    +
    2554 psyevr(const char * /*jobz*/,
    +
    2555 const char * /*range*/,
    +
    2556 const char * /*uplo*/,
    +
    2557 const int * /*n*/,
    +
    2558 number * /*A*/,
    +
    2559 const int * /*IA*/,
    +
    2560 const int * /*JA*/,
    +
    2561 const int * /*DESCA*/,
    +
    2562 const number * /*VL*/,
    +
    2563 const number * /*VU*/,
    +
    2564 const int * /*IL*/,
    +
    2565 const int * /*IU*/,
    +
    2566 int * /*m*/,
    +
    2567 int * /*nz*/,
    +
    2568 number * /*w*/,
    +
    2569 number * /*Z*/,
    +
    2570 const int * /*IZ*/,
    +
    2571 const int * /*JZ*/,
    +
    2572 const int * /*DESCZ*/,
    +
    2573 number * /*work*/,
    +
    2574 int * /*lwork*/,
    +
    2575 int * /*iwork*/,
    +
    2576 int * /*liwork*/,
    +
    2577 int * /*info*/)
    +
    2578 {
    +
    2579 AssertThrow(false, dealii::ExcNotImplemented());
    +
    2580 }
    +
    +
    2581
    +
    2582 inline void
    +
    +
    2583 psyevr(const char * jobz,
    +
    2584 const char * range,
    +
    2585 const char * uplo,
    +
    2586 const int * n,
    +
    2587 double * A,
    +
    2588 const int * IA,
    +
    2589 const int * JA,
    +
    2590 const int * DESCA,
    +
    2591 const double *VL,
    +
    2592 const double *VU,
    +
    2593 const int * IL,
    +
    2594 const int * IU,
    +
    2595 int * m,
    +
    2596 int * nz,
    +
    2597 double * w,
    +
    2598 double * Z,
    +
    2599 const int * IZ,
    +
    2600 const int * JZ,
    +
    2601 const int * DESCZ,
    +
    2602 double * work,
    +
    2603 int * lwork,
    +
    2604 int * iwork,
    +
    2605 int * liwork,
    +
    2606 int * info)
    +
    2607 {
    +
    2608 /*
    +
    2609 * Netlib ScaLAPACK performs floating point tests (e.g. divide-by-zero)
    +
    2610 * within the call to pdsyevr causing floating point exceptions to be thrown
    +
    2611 * (at least in debug mode). Therefore, we wrap the calls to pdsyevr into
    +
    2612 * the following code to suppress the exception.
    +
    2613 */
    +
    2614#ifdef DEAL_II_HAVE_FP_EXCEPTIONS
    + + +
    2617#endif
    +
    2618
    +
    2619 pdsyevr_(jobz,
    +
    2620 range,
    +
    2621 uplo,
    +
    2622 n,
    +
    2623 A,
    +
    2624 IA,
    +
    2625 JA,
    +
    2626 DESCA,
    +
    2627 VL,
    +
    2628 VU,
    +
    2629 IL,
    +
    2630 IU,
    +
    2631 m,
    +
    2632 nz,
    +
    2633 w,
    +
    2634 Z,
    +
    2635 IZ,
    +
    2636 JZ,
    +
    2637 DESCZ,
    +
    2638 work,
    +
    2639 lwork,
    +
    2640 iwork,
    +
    2641 liwork,
    +
    2642 info);
    +
    2643
    +
    2644#ifdef DEAL_II_HAVE_FP_EXCEPTIONS
    + +
    2646#endif
    +
    2647 }
    +
    +
    2648
    +
    2649 inline void
    +
    +
    2650 psyevr(const char * jobz,
    +
    2651 const char * range,
    +
    2652 const char * uplo,
    +
    2653 const int * n,
    +
    2654 float * A,
    +
    2655 const int * IA,
    +
    2656 const int * JA,
    +
    2657 const int * DESCA,
    +
    2658 const float *VL,
    +
    2659 const float *VU,
    +
    2660 const int * IL,
    +
    2661 const int * IU,
    +
    2662 int * m,
    +
    2663 int * nz,
    +
    2664 float * w,
    +
    2665 float * Z,
    +
    2666 const int * IZ,
    +
    2667 const int * JZ,
    +
    2668 const int * DESCZ,
    +
    2669 float * work,
    +
    2670 int * lwork,
    +
    2671 int * iwork,
    +
    2672 int * liwork,
    +
    2673 int * info)
    +
    2674 {
    +
    2675 /*
    +
    2676 * Netlib ScaLAPACK performs floating point tests (e.g. divide-by-zero)
    +
    2677 * within the call to pssyevr causing floating point exceptions to be thrown
    +
    2678 * (at least in debug mode). Therefore, we wrap the calls to pssyevr into
    +
    2679 * the following code to suppress the exception.
    +
    2680 */
    +
    2681#ifdef DEAL_II_HAVE_FP_EXCEPTIONS
    + + +
    2684#endif
    +
    2685
    +
    2686 pssyevr_(jobz,
    +
    2687 range,
    +
    2688 uplo,
    +
    2689 n,
    +
    2690 A,
    +
    2691 IA,
    +
    2692 JA,
    +
    2693 DESCA,
    +
    2694 VL,
    +
    2695 VU,
    +
    2696 IL,
    +
    2697 IU,
    +
    2698 m,
    +
    2699 nz,
    +
    2700 w,
    +
    2701 Z,
    +
    2702 IZ,
    +
    2703 JZ,
    +
    2704 DESCZ,
    +
    2705 work,
    +
    2706 lwork,
    +
    2707 iwork,
    +
    2708 liwork,
    +
    2709 info);
    +
    2710
    +
    2711#ifdef DEAL_II_HAVE_FP_EXCEPTIONS
    + +
    2713#endif
    +
    2714 }
    +
    +
    2715
    +
    2716 inline void
    +
    +
    2717 psyevr(const char * jobz,
    +
    2718 const char * range,
    +
    2719 const char * uplo,
    +
    2720 const int * n,
    +
    2721 std::complex<double> *A,
    +
    2722 const int * IA,
    +
    2723 const int * JA,
    +
    2724 const int * DESCA,
    +
    2725 const double * VL,
    +
    2726 const double * VU,
    +
    2727 const int * IL,
    +
    2728 const int * IU,
    +
    2729 int * m,
    +
    2730 int * nz,
    +
    2731 double * w,
    +
    2732 std::complex<double> *Z,
    +
    2733 const int * IZ,
    +
    2734 const int * JZ,
    +
    2735 const int * DESCZ,
    +
    2736 std::complex<double> *work,
    +
    2737 int * lwork,
    +
    2738 int * iwork,
    +
    2739 int * liwork,
    +
    2740 int * info)
    +
    2741 {
    +
    2742 /*
    +
    2743 * Netlib ScaLAPACK performs floating point tests (e.g. divide-by-zero)
    +
    2744 * within the call to pdsyevr causing floating point exceptions to be thrown
    +
    2745 * (at least in debug mode). Therefore, we wrap the calls to pdsyevr into
    +
    2746 * the following code to suppress the exception.
    +
    2747 */
    +
    2748#ifdef DEAL_II_HAVE_FP_EXCEPTIONS
    + + +
    2751#endif
    +
    2752
    +
    2753 pzheevr_(jobz,
    +
    2754 range,
    +
    2755 uplo,
    +
    2756 n,
    +
    2757 A,
    +
    2758 IA,
    +
    2759 JA,
    +
    2760 DESCA,
    +
    2761 VL,
    +
    2762 VU,
    +
    2763 IL,
    +
    2764 IU,
    +
    2765 m,
    +
    2766 nz,
    +
    2767 w,
    +
    2768 Z,
    +
    2769 IZ,
    +
    2770 JZ,
    +
    2771 DESCZ,
    +
    2772 work,
    +
    2773 lwork,
    +
    2774 iwork,
    +
    2775 liwork,
    +
    2776 info);
    +
    2777
    +
    2778#ifdef DEAL_II_HAVE_FP_EXCEPTIONS
    + +
    2780#endif
    +
    2781 }
    +
    +
    2782
    +
    2783 inline int
    +
    +
    2784 lworkFromWork(std::vector<double> &work)
    +
    2785 {
    +
    2786 return static_cast<int>(work[0]);
    +
    2787 }
    +
    +
    2788
    +
    2789 inline int
    +
    +
    2790 lworkFromWork(std::vector<float> &work)
    +
    2791 {
    +
    2792 return static_cast<int>(work[0]);
    +
    2793 }
    +
    +
    2794
    +
    2795 inline int
    +
    +
    2796 lworkFromWork(std::vector<std::complex<double>> &work)
    +
    2797 {
    +
    2798 return static_cast<int>(work[0].real());
    +
    2799 }
    +
    +
    2800} // namespace dftfe
    +
    2801#endif // dftfe_scalapack_templates_h
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    + +
    Definition pseudoPotentialToDftfeConverter.cc:34
    +
    void pdgetri_(const int *N, double *A, const int *IA, const int *JA, const int *DESCA, const int *ipiv, double *work, int *lwork, int *iwork, int *liwork, int *info)
    +
    void pdtran_(const int *m, const int *n, const double *alpha, const double *A, const int *IA, const int *JA, const int *DESCA, const double *beta, double *C, const int *IC, const int *JC, const int *DESCC)
    +
    void Cgerv2d(int, int, int, number *, int, int, int)
    Definition scalapack.templates.h:1115
    +
    number plansy(const char *, const char *, const int *, const number *, const int *, const int *, const int *, number *)
    Definition scalapack.templates.h:1537
    +
    void pgetrf(const int *, const int *, number *, const int *, const int *, const int *, int *, int *)
    Definition scalapack.templates.h:1235
    +
    void psgesvd_(const char *jobu, const char *jobvt, const int *m, const int *n, float *A, const int *ia, const int *ja, const int *desca, float *S, float *U, const int *iu, const int *ju, const int *descu, float *VT, const int *ivt, const int *jvt, const int *descvt, float *work, int *lwork, int *info)
    +
    void psgemr2d_(const int *m, const int *n, const float *A, const int *ia, const int *ja, const int *desca, float *B, const int *ib, const int *jb, const int *descb, const int *ictxt)
    +
    void pdsyevx_(const char *jobz, const char *range, const char *uplo, const int *n, double *A, const int *ia, const int *ja, const int *desca, const double *VL, const double *VU, const int *il, const int *iu, const double *abstol, const int *m, const int *nz, double *w, double *orfac, double *Z, const int *iz, const int *jz, const int *descz, double *work, int *lwork, int *iwork, int *liwork, int *ifail, int *iclustr, double *gap, int *info)
    +
    void pgels(const char *, const int *, const int *, const int *, number *, const int *, const int *, const int *, number *, const int *, const int *, const int *, number *, int *, int *)
    Definition scalapack.templates.h:2364
    +
    void Cblacs_barrier(int, const char *)
    +
    double pdlange_(char const *norm, const int *m, const int *n, const double *A, const int *ia, const int *ja, const int *desca, double *work)
    +
    void pdgeadd_(const char *transa, const int *m, const int *n, const double *alpha, const double *A, const int *IA, const int *JA, const int *DESCA, const double *beta, double *C, const int *IC, const int *JC, const int *DESCC)
    +
    void psgeadd_(const char *transa, const int *m, const int *n, const float *alpha, const float *A, const int *IA, const int *JA, const int *DESCA, const float *beta, float *C, const int *IC, const int *JC, const int *DESCC)
    +
    void pdgesv_(const int *n, const int *nrhs, double *A, const int *ia, const int *ja, const int *desca, int *ipiv, double *B, const int *ib, const int *jb, const int *descb, int *info)
    +
    void pgemr2d(const int *, const int *, const number *, const int *, const int *, const int *, number *, const int *, const int *, const int *, const int *)
    Definition scalapack.templates.h:1958
    +
    void pgetri(const int *, number *, const int *, const int *, const int *, const int *, number *, int *, int *, int *, int *)
    Definition scalapack.templates.h:1337
    +
    void Csgerv2d(int context, int M, int N, float *A, int lda, int rsrc, int csrc)
    +
    void pdgetrf_(const int *m, const int *n, double *A, const int *IA, const int *JA, const int *DESCA, int *ipiv, int *INFO)
    +
    void pslacpy_(const char *uplo, const int *m, const int *n, const float *A, const int *ia, const int *ja, const int *desca, float *B, const int *ib, const int *jb, const int *descb)
    +
    int Csys2blacs_handle(MPI_Comm comm)
    +
    void pdgesvd_(const char *jobu, const char *jobvt, const int *m, const int *n, double *A, const int *ia, const int *ja, const int *desca, double *S, double *U, const int *iu, const int *ju, const int *descu, double *VT, const int *ivt, const int *jvt, const int *descvt, double *work, int *lwork, int *info)
    +
    void pzgetri_(const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const int *ipiv, std::complex< double > *work, int *lwork, int *iwork, int *liwork, int *info)
    +
    void pzpotri_(const char *UPLO, const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
    +
    void psyevr(const char *, const char *, const char *, const int *, number *, const int *, const int *, const int *, const number *, const number *, const int *, const int *, int *, int *, number *, number *, const int *, const int *, const int *, number *, int *, int *, int *, int *)
    Definition scalapack.templates.h:2554
    +
    void pstrtri_(const char *UPLO, const char *DIAG, const int *N, float *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
    +
    void pzheev_(const char *jobz, const char *uplo, const int *m, std::complex< double > *A, const int *ia, const int *ja, int *desca, double *w, std::complex< double > *z, const int *iz, const int *jz, int *descz, std::complex< double > *work, const int *lwork, int *info)
    +
    void pdpotri_(const char *UPLO, const int *N, double *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
    +
    void pzheevx_(const char *jobz, const char *range, const char *uplo, const int *n, std::complex< double > *A, const int *ia, const int *ja, const int *desca, const double *VL, const double *VU, const int *il, const int *iu, const double *abstol, const int *m, const int *nz, double *w, double *orfac, std::complex< double > *Z, const int *iz, const int *jz, const int *descz, std::complex< double > *work, int *lwork, int *iwork, int *liwork, int *ifail, int *iclustr, double *gap, int *info)
    +
    void plamch(const int *, const char *, number &)
    Definition scalapack.templates.h:2008
    +
    int lworkFromWork(std::vector< double > &work)
    Definition scalapack.templates.h:2784
    +
    void Csgesd2d(int context, int M, int N, float *A, int lda, int rdest, int cdest)
    +
    float pslansy_(const char *norm, const char *uplo, const int *N, const float *A, const int *IA, const int *JA, const int *DESCA, float *work)
    +
    void Cblacs_get(int icontxt, int what, int *val)
    +
    void psgemm_(const char *transa, const char *transb, const int *m, const int *n, const int *k, const float *alpha, const float *A, const int *IA, const int *JA, const int *DESCA, const float *B, const int *IB, const int *JB, const int *DESCB, const float *beta, float *C, const int *IC, const int *JC, const int *DESCC)
    +
    void pgesvd(const char *, const char *, const int *, const int *, number *, const int *, const int *, const int *, number *, number *, const int *, const int *, const int *, number *, const int *, const int *, const int *, number *, int *, int *)
    Definition scalapack.templates.h:2249
    +
    void pspotrf_(const char *UPLO, const int *N, float *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
    +
    void pzgetrf_(const int *m, const int *n, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *ipiv, int *INFO)
    +
    float pslamch_(const int *ictxt, const char *cmach)
    +
    void pdtrtri_(const char *UPLO, const char *DIAG, const int *N, double *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
    +
    void ppotri(const char *, const int *, number *, const int *, const int *, const int *, int *)
    Definition scalapack.templates.h:1288
    +
    void Cblacs_gridinit(int *context, const char *order, int grid_height, int grid_width)
    +
    void ppotrf(const char *, const int *, number *, const int *, const int *, const int *, int *)
    Definition scalapack.templates.h:1186
    +
    void pplacgv(const int *N, double *A, const int *IA, const int *JA, const int *DESCA, const int *INCX)
    Definition scalapack.templates.h:1165
    +
    void pdpocon_(const char *uplo, const int *N, const double *A, const int *IA, const int *JA, const int *DESCA, const double *ANORM, double *RCOND, double *WORK, const int *LWORK, int *IWORK, const int *LIWORK, int *INFO)
    +
    void pzpotrf_(const char *UPLO, const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
    +
    void Cdgesd2d(int context, int M, int N, double *A, int lda, int rdest, int cdest)
    +
    void pgemm(const char *, const char *, const int *, const int *, const int *, const number *, const number *, const int *, const int *, const int *, const number *, const int *, const int *, const int *, const number *, number *, const int *, const int *, const int *)
    Definition scalapack.templates.h:1631
    +
    void Cblacs_pcoord(int ictxt, int pnum, int *prow, int *pcol)
    +
    void psyev(const char *, const char *, const int *, number *, const int *, const int *, int *, number *, number *, const int *, const int *, int *, number *, const int *, int *)
    Definition scalapack.templates.h:1824
    +
    int indxl2g_(const int *indxloc, const int *nb, const int *iproc, const int *isrcproc, const int *nprocs)
    +
    void pspocon_(const char *uplo, const int *N, const float *A, const int *IA, const int *JA, const int *DESCA, const float *ANORM, float *RCOND, float *WORK, const int *LWORK, int *IWORK, const int *LIWORK, int *INFO)
    +
    void Cdgerv2d(int context, int M, int N, double *A, int lda, int rsrc, int csrc)
    +
    void psgetri_(const int *N, float *A, const int *IA, const int *JA, const int *DESCA, const int *ipiv, float *work, int *lwork, int *iwork, int *liwork, int *info)
    +
    void ppocon(const char *, const int *, const number *, const int *, const int *, const int *, const number *, number *, number *, const int *, int *, const int *, int *)
    Definition scalapack.templates.h:1457
    +
    void pdsyev_(const char *jobz, const char *uplo, const int *m, double *A, const int *ia, const int *ja, int *desca, double *w, double *z, const int *iz, const int *jz, int *descz, double *work, const int *lwork, int *info)
    +
    void ptran(const int *, const int *, const number *, const number *, const int *, const int *, const int *, const number *, number *, const int *, const int *, const int *)
    Definition scalapack.templates.h:2501
    +
    void pzgeadd_(const char *transa, const int *m, const int *n, const std::complex< double > *alpha, const std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const std::complex< double > *beta, std::complex< double > *C, const int *IC, const int *JC, const int *DESCC)
    +
    void pssyev_(const char *jobz, const char *uplo, const int *m, float *A, const int *ia, const int *ja, int *desca, float *w, float *z, const int *iz, const int *jz, int *descz, float *work, const int *lwork, int *info)
    +
    int numroc_(const int *n, const int *nb, const int *iproc, const int *isproc, const int *nprocs)
    +
    void ptrtri(const char *, const char *, const int *, number *, const int *, const int *, const int *, int *)
    Definition scalapack.templates.h:1404
    +
    double pdlansy_(const char *norm, const char *uplo, const int *N, const double *A, const int *IA, const int *JA, const int *DESCA, double *work)
    +
    void pdgemr2d_(const int *m, const int *n, const double *A, const int *ia, const int *ja, const int *desca, double *B, const int *ib, const int *jb, const int *descb, const int *ictxt)
    +
    void psgetrf_(const int *m, const int *n, float *A, const int *IA, const int *JA, const int *DESCA, int *ipiv, int *INFO)
    +
    void pdsyevr_(const char *jobz, const char *range, const char *uplo, const int *n, double *A, const int *IA, const int *JA, const int *DESCA, const double *VL, const double *VU, const int *IL, const int *IU, int *m, int *nz, double *w, double *Z, const int *IZ, const int *JZ, const int *DESCZ, double *work, int *lwork, int *iwork, int *liwork, int *info)
    +
    double pdlamch_(const int *ictxt, const char *cmach)
    +
    int iceil_(const int *i1, const int *i2)
    +
    int indxg2p_(const int *glob, const int *nb, const int *iproc, const int *isproc, const int *nprocs)
    +
    void pzlacgv_(const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const int *INCX)
    +
    void Cblacs_gridexit(int context)
    +
    void pzgemm_(const char *transa, const char *transb, const int *m, const int *n, const int *k, const std::complex< double > *alpha, const std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const std::complex< double > *B, const int *IB, const int *JB, const int *DESCB, const std::complex< double > *beta, std::complex< double > *C, const int *IC, const int *JC, const int *DESCC)
    +
    void pssyevr_(const char *jobz, const char *range, const char *uplo, const int *n, float *A, const int *IA, const int *JA, const int *DESCA, const float *VL, const float *VU, const int *IL, const int *IU, int *m, int *nz, float *w, float *Z, const int *IZ, const int *JZ, const int *DESCZ, float *work, int *lwork, int *iwork, int *liwork, int *info)
    +
    void Cblacs_pinfo(int *rank, int *nprocs)
    +
    number plange(const char *, const int *, const int *, const number *, const int *, const int *, const int *, number *)
    Definition scalapack.templates.h:1783
    +
    void Cblacs_gridinfo(int context, int *grid_height, int *grid_width, int *grid_row, int *grid_col)
    +
    void pdgels_(const char *trans, const int *m, const int *n, const int *nrhs, double *A, const int *ia, const int *ja, const int *desca, double *B, const int *ib, const int *jb, const int *descb, double *work, int *lwork, int *info)
    +
    void pzheevr_(const char *jobz, const char *range, const char *uplo, const int *n, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const double *VL, const double *VU, const int *IL, const int *IU, int *m, int *nz, double *w, std::complex< double > *Z, const int *IZ, const int *JZ, const int *DESCZ, std::complex< double > *work, int *lwork, int *iwork, int *liwork, int *info)
    +
    void pdpotrf_(const char *UPLO, const int *N, double *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
    +
    void placpy(const char *, const int *, const int *, const number *, const int *, const int *, const int *, number *, const int *, const int *, const int *)
    Definition scalapack.templates.h:1908
    +
    void psyevx(const char *, const char *, const char *, const int *, number *, const int *, const int *, const int *, number *, number *, const int *, const int *, number *, const int *, const int *, number *, number *, number *, const int *, const int *, const int *, number *, int *, int *, int *, int *, int *, number *, int *)
    Definition scalapack.templates.h:2028
    +
    void pztrtri_(const char *UPLO, const char *DIAG, const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
    +
    void pgesv(const int *, const int *, number *, const int *, const int *, const int *, int *, number *, const int *, const int *, const int *, int *)
    Definition scalapack.templates.h:1578
    +
    int ilcm_(const int *M, const int *N)
    +
    void psgesv_(const int *n, const int *nrhs, float *A, const int *ia, const int *ja, const int *desca, int *ipiv, float *B, const int *ib, const int *jb, const int *descb, int *info)
    +
    void descinit_(int *desc, const int *m, const int *n, const int *mb, const int *nb, const int *irsrc, const int *icsrc, const int *ictxt, const int *lld, int *info)
    +
    void pdlacpy_(const char *uplo, const int *m, const int *n, const double *A, const int *ia, const int *ja, const int *desca, double *B, const int *ib, const int *jb, const int *descb)
    +
    float pslange_(const char *norm, const int *m, const int *n, const float *A, const int *ia, const int *ja, const int *desca, float *work)
    +
    void Cblacs_exit(int error_code)
    +
    void Cgesd2d(int, int, int, number *, int, int, int)
    Definition scalapack.templates.h:1141
    +
    void pssyevx_(const char *jobz, const char *range, const char *uplo, const int *n, float *A, const int *ia, const int *ja, const int *desca, const float *VL, const float *VU, const int *il, const int *iu, const float *abstol, const int *m, const int *nz, float *w, float *orfac, float *Z, const int *iz, const int *jz, const int *descz, float *work, int *lwork, int *iwork, int *liwork, int *ifail, int *iclustr, float *gap, int *info)
    +
    void pstran_(const int *m, const int *n, const float *alpha, const float *A, const int *IA, const int *JA, const int *DESCA, const float *beta, float *C, const int *IC, const int *JC, const int *DESCC)
    +
    void pdgemm_(const char *transa, const char *transb, const int *m, const int *n, const int *k, const double *alpha, const double *A, const int *IA, const int *JA, const int *DESCA, const double *B, const int *IB, const int *JB, const int *DESCB, const double *beta, double *C, const int *IC, const int *JC, const int *DESCC)
    +
    void psgels_(const char *trans, const int *m, const int *n, const int *nrhs, float *A, const int *ia, const int *ja, const int *desca, float *B, const int *ib, const int *jb, const int *descb, float *work, int *lwork, int *info)
    +
    void pgeadd(const char *, const int *, const int *, const number *, const number *, const int *, const int *, const int *, const number *, number *, const int *, const int *, const int *)
    Definition scalapack.templates.h:2428
    +
    void pspotri_(const char *UPLO, const int *N, float *A, const int *IA, const int *JA, const int *DESCA, int *INFO)
    +
    + + + + diff --git a/scalapack_wrapper_8h.html b/scalapack_wrapper_8h.html new file mode 100644 index 000000000..239e1b6a7 --- /dev/null +++ b/scalapack_wrapper_8h.html @@ -0,0 +1,108 @@ + + + + + + + +DFT-FE: workspace/include/scalapackWrapper.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    scalapackWrapper.h File Reference
    +
    +
    +
    #include "headers.h"
    +#include "process_grid.h"
    +#include "lapack_support.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  dftfe::ScaLAPACKMatrix< NumberType >
     Scalapack wrapper adapted from dealii library and extended implementation to complex datatype. More...
     
    + + + +

    +Namespaces

    namespace  dftfe
     
    +
    + + + + diff --git a/scalapack_wrapper_8h_source.html b/scalapack_wrapper_8h_source.html new file mode 100644 index 000000000..162e51aa0 --- /dev/null +++ b/scalapack_wrapper_8h_source.html @@ -0,0 +1,1018 @@ + + + + + + + +DFT-FE: workspace/include/scalapackWrapper.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    scalapackWrapper.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (c) 2019-2020 The Regents of the University of Michigan and DFT-FE
    +
    4// authors.
    +
    5//
    +
    6// This file is part of the DFT-FE code.
    +
    7//
    +
    8// The DFT-FE code is free software; you can use it, redistribute
    +
    9// it, and/or modify it under the terms of the GNU Lesser General
    +
    10// Public License as published by the Free Software Foundation; either
    +
    11// version 2.1 of the License, or (at your option) any later version.
    +
    12// The full text of the license can be found in the file LICENSE at
    +
    13// the top level of the DFT-FE distribution.
    +
    14//
    +
    15// ---------------------------------------------------------------------
    +
    16//
    +
    17
    +
    18
    +
    19
    +
    20#ifndef ScaLAPACKMatrix_H_
    +
    21#define ScaLAPACKMatrix_H_
    +
    22
    +
    23#include "headers.h"
    +
    24#include "process_grid.h"
    +
    25#include "lapack_support.h"
    +
    26
    +
    27
    +
    28namespace dftfe
    +
    29{
    +
    30 /**
    +
    31 * @brief Scalapack wrapper adapted from dealii library and extended implementation to complex datatype
    +
    32 *
    +
    33 * @author Sambit Das
    +
    34 */
    +
    35 template <typename NumberType>
    +
    + +
    37 {
    +
    38 public:
    +
    39 /**
    +
    40 * Declare the type for container size.
    +
    41 */
    +
    42 using size_type = unsigned int;
    +
    43
    +
    44 /**
    +
    45 * Constructor for a rectangular matrix with @p n_rows and @p n_cols
    +
    46 * and distributed using the grid @p process_grid.
    +
    47 *
    +
    48 * The parameters @p row_block_size and @p column_block_size are the block sizes used
    +
    49 * for the block-cyclic distribution of the matrix.
    +
    50 * In general, it is recommended to use powers of $2$, e.g. $16,32,64,
    +
    51 * \dots$.
    +
    52 */
    + +
    54 const size_type n_rows,
    +
    55 const size_type n_columns,
    +
    56 const std::shared_ptr<const dftfe::ProcessGrid> &process_grid,
    +
    57 const size_type row_block_size = 32,
    + + + +
    61
    +
    62 /**
    +
    63 * Constructor for a square matrix of size @p size, and distributed
    +
    64 * using the process grid in @p process_grid.
    +
    65 *
    +
    66 * The parameter @p block_size is used for the block-cyclic distribution of the matrix.
    +
    67 * An identical block size is used for the rows and columns of the matrix.
    +
    68 * In general, it is recommended to use powers of $2$, e.g. $16,32,64,
    +
    69 * \dots$.
    +
    70 */
    + +
    72 const size_type size,
    +
    73 const std::shared_ptr<const dftfe::ProcessGrid> &process_grid,
    +
    74 const size_type block_size = 32,
    + + +
    77
    +
    78
    +
    79 /**
    +
    80 * Initialize the rectangular matrix with @p n_rows and @p n_cols
    +
    81 * and distributed using the grid @p process_grid.
    +
    82 *
    +
    83 * The parameters @p row_block_size and @p column_block_size are the block sizes used
    +
    84 * for the block-cyclic distribution of the matrix.
    +
    85 * In general, it is recommended to use powers of $2$, e.g. $16,32,64,
    +
    86 * \dots$.
    +
    87 */
    +
    88 void
    + +
    90 const size_type n_columns,
    +
    91 const std::shared_ptr<const dftfe::ProcessGrid> &process_grid,
    +
    92 const size_type row_block_size = 32,
    + + + +
    96
    +
    97 /**
    +
    98 * Initialize the square matrix of size @p size and distributed using the grid @p process_grid.
    +
    99 *
    +
    100 * The parameter @p block_size is used for the block-cyclic distribution of the matrix.
    +
    101 * An identical block size is used for the rows and columns of the matrix.
    +
    102 * In general, it is recommended to use powers of $2$, e.g. $16,32,64,
    +
    103 * \dots$.
    +
    104 */
    +
    105 void
    +
    106 reinit(const size_type size,
    +
    107 const std::shared_ptr<const dftfe::ProcessGrid> &process_grid,
    +
    108 const size_type block_size = 32,
    + + +
    111
    +
    112
    +
    113 /**
    +
    114 * Assign @p property to this matrix.
    +
    115 */
    +
    116 void
    + +
    118
    +
    119 /**
    +
    120 * Return current @p property of this matrix
    +
    121 */
    + + +
    124
    +
    125 /**
    +
    126 * Return current @p state of this matrix
    +
    127 */
    + +
    129 get_state() const;
    +
    130
    +
    131
    +
    132 /**
    +
    133 * Copy the contents of the distributed matrix into a differently distributed matrix @p dest.
    +
    134 * The function also works for matrices with different process grids
    +
    135 * or block-cyclic distributions.
    +
    136 */
    +
    137 void
    + +
    139
    +
    140
    +
    141 /**
    +
    142 * Complex conjugate.
    +
    143 */
    +
    144 void
    + +
    146
    +
    147
    +
    148 /**
    +
    149 * The operations based on the input parameter @p transpose_B and the
    +
    150 * alignment conditions are summarized in the following table:
    +
    151 *
    +
    152 * | transpose_B | Block Sizes | Operation |
    +
    153 * | :---------: | :--------------------------: | :-------------------------------------------: |
    +
    154 * | false | $MB_A=MB_B$ <br> $NB_A=NB_B$ | $\mathbf{A} = a \mathbf{A} + b \mathbf{B}$ |
    +
    155 * | true | $MB_A=NB_B$ <br> $NB_A=MB_B$ | $\mathbf{A} = a \mathbf{A} + b \mathbf{B}^T$ |
    +
    156 *
    +
    157 * The matrices $\mathbf{A}$ and $\mathbf{B}$ must have the same process
    +
    158 * grid.
    +
    159 */
    +
    160 void
    + +
    162 const NumberType a = 0.,
    +
    163 const NumberType b = 1.,
    +
    164 const bool transpose_B = false);
    +
    165
    +
    166
    +
    167 /**
    +
    168 * The operations based on the input parameter @p conjugate_transpose_B and the
    +
    169 * alignment conditions are summarized in the following table:
    +
    170 *
    +
    171 * | transpose_B | Block Sizes | Operation |
    +
    172 * | :---------: | :--------------------------: | :-------------------------------------------: |
    +
    173 * | false | $MB_A=MB_B$ <br> $NB_A=NB_B$ | $\mathbf{A} = a \mathbf{A} + b \mathbf{B}$ |
    +
    174 * | true | $MB_A=NB_B$ <br> $NB_A=MB_B$ | $\mathbf{A} = a \mathbf{A} + b \mathbf{B}^C$ |
    +
    175 *
    +
    176 * The matrices $\mathbf{A}$ and $\mathbf{B}$ must have the same process
    +
    177 * grid.
    +
    178 */
    +
    179 void
    + +
    181 const NumberType a = 0.,
    +
    182 const NumberType b = 1.,
    +
    183 const bool conjugate_transpose_B = false);
    +
    184
    +
    185 /**
    +
    186 * Transposing assignment: $\mathbf{A} = \mathbf{B}^T$
    +
    187 *
    +
    188 * The matrices $\mathbf{A}$ and $\mathbf{B}$ must have the same process
    +
    189 * grid.
    +
    190 *
    +
    191 * The following alignment conditions have to be fulfilled: $MB_A=NB_B$ and
    +
    192 * $NB_A=MB_B$.
    +
    193 */
    +
    194 void
    + +
    196
    +
    197
    +
    198 /**
    +
    199 * Transposing assignment: $\mathbf{A} = \mathbf{B}^C$
    +
    200 *
    +
    201 * The matrices $\mathbf{A}$ and $\mathbf{B}$ must have the same process
    +
    202 * grid.
    +
    203 *
    +
    204 * The following alignment conditions have to be fulfilled: $MB_A=NB_B$ and
    +
    205 * $NB_A=MB_B$.
    +
    206 */
    +
    207 void
    + +
    209
    +
    210 /**
    +
    211 * Matrix-matrix-multiplication:
    +
    212 *
    +
    213 * The operations based on the input parameters and the alignment conditions
    +
    214 * are summarized in the following table:
    +
    215 *
    +
    216 * | transpose_A | transpose_B | Block Sizes | Operation |
    +
    217 * | :---------: | :---------: | :-------------------------------------------: | :-------------------------------------------------------------: |
    +
    218 * | false | false | $MB_A=MB_C$ <br> $NB_A=MB_B$ <br> $NB_B=NB_C$ | $\mathbf{C} = b \mathbf{A} \cdot \mathbf{B} + c \mathbf{C}$ |
    +
    219 * | false | true | $MB_A=MB_C$ <br> $NB_A=NB_B$ <br> $MB_B=NB_C$ | $\mathbf{C} = b \mathbf{A} \cdot \mathbf{B}^T + c \mathbf{C}$ |
    +
    220 * | true | false | $MB_A=MB_B$ <br> $NB_A=MB_C$ <br> $NB_B=NB_C$ | $\mathbf{C} = b \mathbf{A}^T \cdot \mathbf{B} + c \mathbf{C}$ |
    +
    221 * | true | true | $MB_A=NB_B$ <br> $NB_A=MB_C$ <br> $MB_B=NB_C$ | $\mathbf{C} = b \mathbf{A}^T \cdot \mathbf{B}^T + c \mathbf{C}$ |
    +
    222 *
    +
    223 * It is assumed that $\mathbf{A}$ and $\mathbf{B}$ have compatible sizes
    +
    224 * and that
    +
    225 * $\mathbf{C}$ already has the right size.
    +
    226 *
    +
    227 * The matrices $\mathbf{A}$, $\mathbf{B}$ and $\mathbf{C}$ must have the
    +
    228 * same process grid.
    +
    229 */
    +
    230 void
    + + +
    233 const NumberType c,
    + +
    235 const bool transpose_A = false,
    +
    236 const bool transpose_B = false) const;
    +
    237
    +
    238
    +
    239 /**
    +
    240 * Matrix-matrix-multiplication:
    +
    241 *
    +
    242 * The operations based on the input parameters and the alignment conditions
    +
    243 * are summarized in the following table:
    +
    244 *
    +
    245 * | conjugate_transpose_A | conjugate_transpose_B | Block Sizes | Operation |
    +
    246 * | :---------: | :---------: | :-------------------------------------------: | :-------------------------------------------------------------: |
    +
    247 * | false | false | $MB_A=MB_C$ <br> $NB_A=MB_B$ <br> $NB_B=NB_C$ | $\mathbf{C} = b \mathbf{A} \cdot \mathbf{B} + c \mathbf{C}$ |
    +
    248 * | false | true | $MB_A=MB_C$ <br> $NB_A=NB_B$ <br> $MB_B=NB_C$ | $\mathbf{C} = b \mathbf{A} \cdot \mathbf{B}^C + c \mathbf{C}$ |
    +
    249 * | true | false | $MB_A=MB_B$ <br> $NB_A=MB_C$ <br> $NB_B=NB_C$ | $\mathbf{C} = b \mathbf{A}^C \cdot \mathbf{B} + c \mathbf{C}$ |
    +
    250 * | true | true | $MB_A=NB_B$ <br> $NB_A=MB_C$ <br> $MB_B=NB_C$ | $\mathbf{C} = b \mathbf{A}^C \cdot \mathbf{B}^C + c \mathbf{C}$ |
    +
    251 *
    +
    252 * It is assumed that $\mathbf{A}$ and $\mathbf{B}$ have compatible sizes
    +
    253 * and that
    +
    254 * $\mathbf{C}$ already has the right size.
    +
    255 *
    +
    256 * The matrices $\mathbf{A}$, $\mathbf{B}$ and $\mathbf{C}$ must have the
    +
    257 * same process grid.
    +
    258 */
    +
    259 void
    + + +
    262 const NumberType c,
    + +
    264 const bool conjugate_transpose_A = false,
    +
    265 const bool conjugate_transpose_B = false) const;
    +
    266
    +
    267
    +
    268 /**
    +
    269 * Matrix-matrix-multiplication.
    +
    270 *
    +
    271 * The optional parameter @p adding determines whether the result is
    +
    272 * stored in $\mathbf{C}$ or added to $\mathbf{C}$.
    +
    273 *
    +
    274 * if (@p adding) $\mathbf{C} = \mathbf{C} + \mathbf{A} \cdot \mathbf{B}$
    +
    275 *
    +
    276 * else $\mathbf{C} = \mathbf{A} \cdot \mathbf{B}$
    +
    277 *
    +
    278 * It is assumed that $\mathbf{A}$ and $\mathbf{B}$ have compatible sizes
    +
    279 * and that
    +
    280 * $\mathbf{C}$ already has the right size.
    +
    281 *
    +
    282 * The following alignment conditions have to be fulfilled: $MB_A=MB_C$,
    +
    283 * $NB_A=MB_B$ and $NB_B=NB_C$.
    +
    284 */
    +
    285 void
    + + +
    288 const bool adding = false) const;
    +
    289
    +
    290 /**
    +
    291 * Matrix-matrix-multiplication using transpose of $\mathbf{A}$.
    +
    292 *
    +
    293 * The optional parameter @p adding determines whether the result is
    +
    294 * stored in $\mathbf{C}$ or added to $\mathbf{C}$.
    +
    295 *
    +
    296 * if (@p adding) $\mathbf{C} = \mathbf{C} + \mathbf{A}^T \cdot \mathbf{B}$
    +
    297 *
    +
    298 * else $\mathbf{C} = \mathbf{A}^T \cdot \mathbf{B}$
    +
    299 *
    +
    300 * It is assumed that $\mathbf{A}$ and $\mathbf{B}$ have compatible sizes
    +
    301 * and that
    +
    302 * $\mathbf{C}$ already has the right size.
    +
    303 *
    +
    304 * The following alignment conditions have to be fulfilled: $MB_A=MB_B$,
    +
    305 * $NB_A=MB_C$ and $NB_B=NB_C$.
    +
    306 */
    +
    307 void
    + + +
    310 const bool adding = false) const;
    +
    311
    +
    312 /**
    +
    313 * Matrix-matrix-multiplication using the transpose of $\mathbf{B}$.
    +
    314 *
    +
    315 * The optional parameter @p adding determines whether the result is
    +
    316 * stored in $\mathbf{C}$ or added to $\mathbf{C}$.
    +
    317 *
    +
    318 * if (@p adding) $\mathbf{C} = \mathbf{C} + \mathbf{A} \cdot \mathbf{B}^T$
    +
    319 *
    +
    320 * else $\mathbf{C} = \mathbf{A} \cdot \mathbf{B}^T$
    +
    321 *
    +
    322 * It is assumed that $\mathbf{A}$ and $\mathbf{B}$ have compatible sizes
    +
    323 * and that
    +
    324 * $\mathbf{C}$ already has the right size.
    +
    325 *
    +
    326 * The following alignment conditions have to be fulfilled: $MB_A=MB_C$,
    +
    327 * $NB_A=NB_B$ and $MB_B=NB_C$.
    +
    328 */
    +
    329 void
    + + +
    332 const bool adding = false) const;
    +
    333
    +
    334 /**
    +
    335 * Matrix-matrix-multiplication using transpose of $\mathbf{A}$ and
    +
    336 * $\mathbf{B}$.
    +
    337 *
    +
    338 * The optional parameter @p adding determines whether the result is
    +
    339 * stored in $\mathbf{C}$ or added to $\mathbf{C}$.
    +
    340 *
    +
    341 * if (@p adding) $\mathbf{C} = \mathbf{C} + \mathbf{A}^T \cdot
    +
    342 * \mathbf{B}^T$
    +
    343 *
    +
    344 * else $\mathbf{C} = \mathbf{A}^T \cdot \mathbf{B}^T$
    +
    345 *
    +
    346 * It is assumed that $\mathbf{A}$ and $\mathbf{B}$ have compatible sizes
    +
    347 * and that
    +
    348 * $\mathbf{C}$ already has the right size.
    +
    349 *
    +
    350 * The following alignment conditions have to be fulfilled: $MB_A=NB_B$,
    +
    351 * $NB_A=MB_C$ and $MB_B=NB_C$.
    +
    352 */
    +
    353 void
    + + +
    356 const bool adding = false) const;
    +
    357
    +
    358
    +
    359 /**
    +
    360 * Matrix-matrix-multiplication.
    +
    361 *
    +
    362 * The optional parameter @p adding determines whether the result is
    +
    363 * stored in $\mathbf{C}$ or added to $\mathbf{C}$.
    +
    364 *
    +
    365 * if (@p adding) $\mathbf{C} = \mathbf{C} + \mathbf{A} \cdot \mathbf{B}$
    +
    366 *
    +
    367 * else $\mathbf{C} = \mathbf{A} \cdot \mathbf{B}$
    +
    368 *
    +
    369 * It is assumed that $\mathbf{A}$ and $\mathbf{B}$ have compatible sizes
    +
    370 * and that
    +
    371 * $\mathbf{C}$ already has the right size.
    +
    372 *
    +
    373 * The following alignment conditions have to be fulfilled: $MB_A=MB_C$,
    +
    374 * $NB_A=MB_B$ and $NB_B=NB_C$.
    +
    375 */
    +
    376 void
    + + +
    379 const bool adding = false) const;
    +
    380
    +
    381 /**
    +
    382 * Matrix-matrix-multiplication using conjugate transpose of $\mathbf{A}$.
    +
    383 *
    +
    384 * The optional parameter @p adding determines whether the result is
    +
    385 * stored in $\mathbf{C}$ or added to $\mathbf{C}$.
    +
    386 *
    +
    387 * if (@p adding) $\mathbf{C} = \mathbf{C} + \mathbf{A}^C \cdot \mathbf{B}$
    +
    388 *
    +
    389 * else $\mathbf{C} = \mathbf{A}^C \cdot \mathbf{B}$
    +
    390 *
    +
    391 * It is assumed that $\mathbf{A}$ and $\mathbf{B}$ have compatible sizes
    +
    392 * and that
    +
    393 * $\mathbf{C}$ already has the right size.
    +
    394 *
    +
    395 * The following alignment conditions have to be fulfilled: $MB_A=MB_B$,
    +
    396 * $NB_A=MB_C$ and $NB_B=NB_C$.
    +
    397 */
    +
    398 void
    + + +
    401 const bool adding = false) const;
    +
    402
    +
    403 /**
    +
    404 * Matrix-matrix-multiplication using the conjugate transpose of
    +
    405 * $\mathbf{B}$.
    +
    406 *
    +
    407 * The optional parameter @p adding determines whether the result is
    +
    408 * stored in $\mathbf{C}$ or added to $\mathbf{C}$.
    +
    409 *
    +
    410 * if (@p adding) $\mathbf{C} = \mathbf{C} + \mathbf{A} \cdot \mathbf{B}^C$
    +
    411 *
    +
    412 * else $\mathbf{C} = \mathbf{A} \cdot \mathbf{B}^C$
    +
    413 *
    +
    414 * It is assumed that $\mathbf{A}$ and $\mathbf{B}$ have compatible sizes
    +
    415 * and that
    +
    416 * $\mathbf{C}$ already has the right size.
    +
    417 *
    +
    418 * The following alignment conditions have to be fulfilled: $MB_A=MB_C$,
    +
    419 * $NB_A=NB_B$ and $MB_B=NB_C$.
    +
    420 */
    +
    421 void
    + + +
    424 const bool adding = false) const;
    +
    425
    +
    426 /**
    +
    427 * Matrix-matrix-multiplication using conjugate transpose of $\mathbf{A}$
    +
    428 * and
    +
    429 * $\mathbf{B}$.
    +
    430 *
    +
    431 * The optional parameter @p adding determines whether the result is
    +
    432 * stored in $\mathbf{C}$ or added to $\mathbf{C}$.
    +
    433 *
    +
    434 * if (@p adding) $\mathbf{C} = \mathbf{C} + \mathbf{A}^C \cdot
    +
    435 * \mathbf{B}^T$
    +
    436 *
    +
    437 * else $\mathbf{C} = \mathbf{A}^C \cdot \mathbf{B}^C$
    +
    438 *
    +
    439 * It is assumed that $\mathbf{A}$ and $\mathbf{B}$ have compatible sizes
    +
    440 * and that
    +
    441 * $\mathbf{C}$ already has the right size.
    +
    442 *
    +
    443 * The following alignment conditions have to be fulfilled: $MB_A=NB_B$,
    +
    444 * $NB_A=MB_C$ and $MB_B=NB_C$.
    +
    445 */
    +
    446 void
    + + +
    449 const bool adding = false) const;
    +
    450
    +
    451
    +
    452 /**
    +
    453 * Number of rows of the $M \times N$ matrix.
    +
    454 */
    + +
    456 m() const;
    +
    457
    +
    458 /**
    +
    459 * Number of columns of the $M \times N$ matrix.
    +
    460 */
    + +
    462 n() const;
    +
    463
    +
    464 /**
    +
    465 * Number of local rows on this MPI processes.
    +
    466 */
    +
    467 unsigned int
    +
    468 local_m() const;
    +
    469
    +
    470 /**
    +
    471 * Number of local columns on this MPI process.
    +
    472 */
    +
    473 unsigned int
    +
    474 local_n() const;
    +
    475
    +
    476 /**
    +
    477 * Return the global row number for the given local row @p loc_row .
    +
    478 */
    +
    479 unsigned int
    +
    480 global_row(const unsigned int loc_row) const;
    +
    481
    +
    482 /**
    +
    483 * Return the global column number for the given local column @p loc_column.
    +
    484 */
    +
    485 unsigned int
    +
    486 global_column(const unsigned int loc_column) const;
    +
    487
    +
    488 /**
    +
    489 * Read access to local element.
    +
    490 */
    + +
    492 local_el(const unsigned int loc_row, const unsigned int loc_column) const;
    +
    493
    +
    494 /**
    +
    495 * Write access to local element.
    +
    496 */
    +
    497 NumberType &
    +
    498 local_el(const unsigned int loc_row, const unsigned int loc_column);
    +
    499
    +
    500 /**
    +
    501 * Compute the Cholesky factorization of the matrix using ScaLAPACK
    +
    502 * function <code>pXpotrf</code>. The result of the factorization is stored
    +
    503 * in this object.
    +
    504 */
    +
    505 void
    + +
    507
    +
    508 /**
    +
    509 * Compute the LU factorization of the matrix using ScaLAPACK
    +
    510 * function <code>pXgetrf</code> and partial pivoting with row interchanges.
    +
    511 * The result of the factorization is stored in this object.
    +
    512 */
    +
    513 void
    + +
    515
    +
    516 /**
    +
    517 * Invert the matrix by first computing a Cholesky for hermitian matrices
    +
    518 * or a LU factorization for general matrices and then
    +
    519 * building the actual inverse using <code>pXpotri</code> or
    +
    520 * <code>pXgetri</code>. If the matrix is triangular, the LU factorization
    +
    521 * step is skipped, and <code>pXtrtri</code> is used directly.
    +
    522 *
    +
    523 * If a Cholesky or LU factorization has been applied previously,
    +
    524 * <code>pXpotri</code> or <code>pXgetri</code> are called directly.
    +
    525 *
    +
    526 * The inverse is stored in this object.
    +
    527 */
    +
    528 void
    + +
    530
    +
    531 /**
    +
    532 * Scale the columns of the distributed matrix by the scalars provided in the array @p factors.
    +
    533 *
    +
    534 * The array @p factors must have as many entries as the matrix columns.
    +
    535 *
    +
    536 * Copies of @p factors have to be available on all processes of the underlying MPI communicator.
    +
    537 */
    +
    538 void
    +
    539 scale_columns(const std::vector<NumberType> &factors);
    +
    540
    +
    541 /**
    +
    542 * Scale the rows of the distributed matrix by the scalars provided in the array @p factors.
    +
    543 *
    +
    544 * The array @p factors must have as many entries as the matrix rows.
    +
    545 *
    +
    546 * Copies of @p factors have to be available on all processes of the underlying MPI communicator.
    +
    547 */
    +
    548 void
    +
    549 scale_rows(const std::vector<NumberType> &factors);
    +
    550
    +
    551
    +
    552 /**
    +
    553 * Scale the columns of the distributed matrix by the scalars provided in the array @p factors.
    +
    554 *
    +
    555 * The array @p factors must have as many entries as the matrix columns.
    +
    556 *
    +
    557 * Copies of @p factors have to be available on all processes of the underlying MPI communicator.
    +
    558 */
    +
    559 void
    +
    560 scale_columns_realfactors(const std::vector<double> &factors);
    +
    561
    +
    562 /**
    +
    563 * Scale the rows of the distributed matrix by the scalars provided in the array @p factors.
    +
    564 *
    +
    565 * The array @p factors must have as many entries as the matrix rows.
    +
    566 *
    +
    567 * Copies of @p factors have to be available on all processes of the underlying MPI communicator.
    +
    568 */
    +
    569 void
    +
    570 scale_rows_realfactors(const std::vector<double> &factors);
    +
    571
    +
    572 /**
    +
    573 * Computing selected eigenvalues and, optionally, the eigenvectors of the
    +
    574 * real hermitian matrix $\mathbf{A} \in \mathbb{R}^{M \times M}$.
    +
    575 *
    +
    576 * The eigenvalues/eigenvectors are selected by prescribing a range of indices @p index_limits.
    +
    577 *
    +
    578 * If successful, the computed eigenvalues are arranged in ascending order.
    +
    579 * The eigenvectors are stored in the columns of the matrix, thereby
    +
    580 * overwriting the original content of the matrix.
    +
    581 *
    +
    582 * If all eigenvalues/eigenvectors have to be computed, pass the closed interval $ \left[ 0, M-1 \right] $ in @p index_limits.
    +
    583 *
    +
    584 * Pass the closed interval $ \left[ M-r, M-1 \right] $ if the $r$ largest
    +
    585 * eigenvalues/eigenvectors are desired.
    +
    586 */
    +
    587 std::vector<double>
    + +
    589 const std::pair<unsigned int, unsigned int> &index_limits,
    +
    590 const bool compute_eigenvectors);
    +
    591
    +
    592 /**
    +
    593 * Computing selected eigenvalues and, optionally, the eigenvectors of the
    +
    594 * real hermitian matrix $\mathbf{A} \in \mathbb{R}^{M \times M}$ using the
    +
    595 * MRRR algorithm.
    +
    596 *
    +
    597 * The eigenvalues/eigenvectors are selected by prescribing a range of indices @p index_limits.
    +
    598 *
    +
    599 * If successful, the computed eigenvalues are arranged in ascending order.
    +
    600 * The eigenvectors are stored in the columns of the matrix, thereby
    +
    601 * overwriting the original content of the matrix.
    +
    602 *
    +
    603 * If all eigenvalues/eigenvectors have to be computed, pass the closed interval $ \left[ 0, M-1 \right] $ in @p index_limits.
    +
    604 *
    +
    605 * Pass the closed interval $ \left[ M-r, M-1 \right] $ if the $r$ largest
    +
    606 * eigenvalues/eigenvectors are desired.
    +
    607 */
    +
    608 std::vector<double>
    + +
    610 const std::pair<unsigned int, unsigned int> &index_limits,
    +
    611 const bool compute_eigenvectors);
    +
    612
    +
    613 private:
    +
    614 /**
    +
    615 * Computing selected eigenvalues and, optionally, the eigenvectors.
    +
    616 * The eigenvalues/eigenvectors are selected by either prescribing a range of indices @p index_limits
    +
    617 * or a range of values @p value_limits for the eigenvalues. The function will throw an exception
    +
    618 * if both ranges are prescribed (meaning that both ranges differ from the
    +
    619 * default value) as this ambiguity is prohibited. If successful, the
    +
    620 * computed eigenvalues are arranged in ascending order. The eigenvectors
    +
    621 * are stored in the columns of the matrix, thereby overwriting the original
    +
    622 * content of the matrix.
    +
    623 */
    +
    624 std::vector<double>
    + +
    626 const bool compute_eigenvectors,
    +
    627 const std::pair<unsigned int, unsigned int> &index_limits =
    +
    628 std::make_pair(dealii::numbers::invalid_unsigned_int,
    +
    629 dealii::numbers::invalid_unsigned_int),
    +
    630 const std::pair<double, double> &value_limits =
    +
    631 std::make_pair(std::numeric_limits<double>::quiet_NaN(),
    +
    632 std::numeric_limits<double>::quiet_NaN()));
    +
    633
    +
    634 /**
    +
    635 * Computing selected eigenvalues and, optionally, the eigenvectors of the
    +
    636 * real hermitian matrix $\mathbf{A} \in \mathbb{R}^{M \times M}$ using the
    +
    637 * MRRR algorithm.
    +
    638 * The eigenvalues/eigenvectors are selected by either prescribing a range of indices @p index_limits
    +
    639 * or a range of values @p value_limits for the eigenvalues. The function will throw an exception
    +
    640 * if both ranges are prescribed (meaning that both ranges differ from the
    +
    641 * default value) as this ambiguity is prohibited.
    +
    642 *
    +
    643 * By calling this function the original content of the matrix will be
    +
    644 * overwritten. If requested, the eigenvectors are stored in the columns of
    +
    645 * the matrix. Also in the case that just the eigenvalues are required, the
    +
    646 * content of the matrix will be overwritten.
    +
    647 *
    +
    648 * If successful, the computed eigenvalues are arranged in ascending order.
    +
    649 *
    +
    650 * @note Due to a bug in Netlib-ScaLAPACK, either all or no eigenvectors can be computed.
    +
    651 * Therefore, the input @p index_limits has to be set accordingly. Using Intel-MKL this restriction is not required.
    +
    652 */
    +
    653 std::vector<double>
    + +
    655 const bool compute_eigenvectors,
    +
    656 const std::pair<unsigned int, unsigned int> &index_limits =
    +
    657 std::make_pair(dealii::numbers::invalid_unsigned_int,
    +
    658 dealii::numbers::invalid_unsigned_int),
    +
    659 const std::pair<double, double> &value_limits =
    +
    660 std::make_pair(std::numeric_limits<double>::quiet_NaN(),
    +
    661 std::numeric_limits<double>::quiet_NaN()));
    +
    662
    +
    663
    +
    664 /**
    +
    665 * local storage
    +
    666 */
    +
    667 std::vector<NumberType> values;
    +
    668
    +
    669 /**
    +
    670 * Since ScaLAPACK operations notoriously change the meaning of the matrix
    +
    671 * entries, we record the current state after the last operation here.
    +
    672 */
    + +
    674
    +
    675 /**
    +
    676 * Additional property of the matrix which may help to select more
    +
    677 * efficient ScaLAPACK functions.
    +
    678 */
    + +
    680
    +
    681 /**
    +
    682 * A shared pointer to a dealii::Utilities::MPI::ProcessGrid object which
    +
    683 * contains a BLACS context and a MPI communicator, as well as other
    +
    684 * necessary data structures.
    +
    685 */
    +
    686 std::shared_ptr<const dftfe::ProcessGrid> grid;
    +
    687
    +
    688 /**
    +
    689 * Number of rows in the matrix.
    +
    690 */
    + +
    692
    +
    693 /**
    +
    694 * Number of columns in the matrix.
    +
    695 */
    + +
    697
    +
    698 /**
    +
    699 * Row block size.
    +
    700 */
    + +
    702
    +
    703 /**
    +
    704 * Column block size.
    +
    705 */
    + +
    707
    +
    708 /**
    +
    709 * Number of rows in the matrix owned by the current process.
    +
    710 */
    + +
    712
    +
    713 /**
    +
    714 * Number of columns in the matrix owned by the current process.
    +
    715 */
    + +
    717
    +
    718 /**
    +
    719 * ScaLAPACK description vector.
    +
    720 */
    + +
    722
    +
    723 /**
    +
    724 * Workspace array.
    +
    725 */
    +
    726 mutable std::vector<NumberType> work;
    +
    727
    +
    728 /**
    +
    729 * Integer workspace array.
    +
    730 */
    +
    731 mutable std::vector<int> iwork;
    +
    732
    +
    733 /**
    +
    734 * Integer array holding pivoting information required
    +
    735 * by ScaLAPACK's matrix factorization routines.
    +
    736 */
    +
    737 std::vector<int> ipiv;
    +
    738
    +
    739 /**
    +
    740 * A character to define where elements are stored in case
    +
    741 * ScaLAPACK operations support this.
    +
    742 */
    +
    743 const char uplo;
    +
    744
    +
    745 /**
    +
    746 * The process row of the process grid over which the first row
    +
    747 * of the global matrix is distributed.
    +
    748 */
    + +
    750
    +
    751 /**
    +
    752 * The process column of the process grid over which the first column
    +
    753 * of the global matrix is distributed.
    +
    754 */
    + +
    756
    +
    757 /**
    +
    758 * Global row index that determines where to start a submatrix.
    +
    759 * Currently this equals unity, as we don't use submatrices.
    +
    760 */
    +
    761 const int submatrix_row;
    +
    762
    +
    763 /**
    +
    764 * Global column index that determines where to start a submatrix.
    +
    765 * Currently this equals unity, as we don't use submatrices.
    +
    766 */
    + +
    768
    +
    769 /**
    +
    770 * Thread mutex.
    +
    771 */
    +
    772 mutable dealii::Threads::Mutex mutex;
    +
    773 };
    +
    +
    774
    +
    775 // ----------------------- inline functions ----------------------------
    +
    776
    +
    777#ifndef DOXYGEN
    +
    778
    +
    779 template <typename NumberType>
    +
    780 inline NumberType
    +
    + +
    782 const unsigned int loc_column) const
    +
    783 {
    +
    784 return values[loc_column * n_local_rows + loc_row];
    +
    785 // return (*this)(loc_row, loc_column);
    +
    786 }
    +
    +
    787
    +
    788
    +
    789
    +
    790 template <typename NumberType>
    +
    791 inline NumberType &
    +
    + +
    793 const unsigned int loc_column)
    +
    794 {
    +
    795 return values[loc_column * n_local_rows + loc_row];
    +
    796 // return (*this)(loc_row, loc_column);
    +
    797 }
    +
    +
    798
    +
    799
    +
    800 template <typename NumberType>
    +
    801 inline unsigned int
    +
    + +
    803 {
    +
    804 return n_rows;
    +
    805 }
    +
    +
    806
    +
    807
    +
    808
    +
    809 template <typename NumberType>
    +
    810 inline unsigned int
    +
    + +
    812 {
    +
    813 return n_columns;
    +
    814 }
    +
    +
    815
    +
    816
    +
    817
    +
    818 template <typename NumberType>
    +
    819 unsigned int
    +
    + +
    821 {
    +
    822 return n_local_rows;
    +
    823 }
    +
    +
    824
    +
    825
    +
    826
    +
    827 template <typename NumberType>
    +
    828 unsigned int
    +
    + +
    830 {
    +
    831 return n_local_columns;
    +
    832 }
    +
    +
    833
    +
    834
    +
    835#endif // DOXYGEN
    +
    836
    +
    837
    +
    838} // namespace dftfe
    +
    839#endif // ScaLAPACKMatrix_H_
    +
    Scalapack wrapper adapted from dealii library and extended implementation to complex datatype.
    Definition scalapackWrapper.h:37
    +
    void copy_conjugate_transposed(const ScaLAPACKMatrix< NumberType > &B)
    +
    std::vector< NumberType > work
    Definition scalapackWrapper.h:726
    +
    NumberType local_el(const unsigned int loc_row, const unsigned int loc_column) const
    Definition scalapackWrapper.h:781
    +
    dftfe::LAPACKSupport::Property property
    Definition scalapackWrapper.h:679
    +
    unsigned int local_n() const
    Definition scalapackWrapper.h:829
    +
    void reinit(const size_type size, const std::shared_ptr< const dftfe::ProcessGrid > &process_grid, const size_type block_size=32, const dftfe::LAPACKSupport::Property property=dftfe::LAPACKSupport::Property::hermitian)
    +
    unsigned int global_column(const unsigned int loc_column) const
    +
    std::vector< NumberType > values
    Definition scalapackWrapper.h:667
    +
    void reinit(const size_type n_rows, const size_type n_columns, const std::shared_ptr< const dftfe::ProcessGrid > &process_grid, const size_type row_block_size=32, const size_type column_block_size=32, const dftfe::LAPACKSupport::Property property=dftfe::LAPACKSupport::Property::general)
    +
    dftfe::LAPACKSupport::State get_state() const
    +
    std::vector< int > ipiv
    Definition scalapackWrapper.h:737
    +
    void mult(const NumberType b, const ScaLAPACKMatrix< NumberType > &B, const NumberType c, ScaLAPACKMatrix< NumberType > &C, const bool transpose_A=false, const bool transpose_B=false) const
    +
    std::shared_ptr< const dftfe::ProcessGrid > grid
    Definition scalapackWrapper.h:686
    +
    void copy_to(ScaLAPACKMatrix< NumberType > &dest) const
    +
    void zmmult(ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) const
    +
    unsigned int local_m() const
    Definition scalapackWrapper.h:820
    +
    size_type n() const
    Definition scalapackWrapper.h:811
    +
    void add(const ScaLAPACKMatrix< NumberType > &B, const NumberType a=0., const NumberType b=1., const bool transpose_B=false)
    +
    int n_rows
    Definition scalapackWrapper.h:691
    + +
    std::vector< double > eigenpairs_hermitian_by_index_MRRR(const std::pair< unsigned int, unsigned int > &index_limits, const bool compute_eigenvectors)
    +
    size_type m() const
    Definition scalapackWrapper.h:802
    +
    void set_property(const dftfe::LAPACKSupport::Property property)
    +
    ScaLAPACKMatrix(const size_type size, const std::shared_ptr< const dftfe::ProcessGrid > &process_grid, const size_type block_size=32, const dftfe::LAPACKSupport::Property property=dftfe::LAPACKSupport::Property::hermitian)
    +
    dftfe::LAPACKSupport::Property get_property() const
    +
    void zCmmult(ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) const
    +
    int n_columns
    Definition scalapackWrapper.h:696
    +
    dealii::Threads::Mutex mutex
    Definition scalapackWrapper.h:772
    +
    void zadd(const ScaLAPACKMatrix< NumberType > &B, const NumberType a=0., const NumberType b=1., const bool conjugate_transpose_B=false)
    +
    int n_local_columns
    Definition scalapackWrapper.h:716
    +
    void compute_cholesky_factorization()
    +
    void Tmmult(ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) const
    +
    void mTmult(ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) const
    +
    std::vector< int > iwork
    Definition scalapackWrapper.h:731
    + +
    void zmCmult(ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) const
    +
    ScaLAPACKMatrix(const size_type n_rows, const size_type n_columns, const std::shared_ptr< const dftfe::ProcessGrid > &process_grid, const size_type row_block_size=32, const size_type column_block_size=32, const dftfe::LAPACKSupport::Property property=dftfe::LAPACKSupport::Property::general)
    +
    void zmult(const NumberType b, const ScaLAPACKMatrix< NumberType > &B, const NumberType c, ScaLAPACKMatrix< NumberType > &C, const bool conjugate_transpose_A=false, const bool conjugate_transpose_B=false) const
    +
    void scale_columns_realfactors(const std::vector< double > &factors)
    + +
    const int submatrix_row
    Definition scalapackWrapper.h:761
    +
    void scale_rows_realfactors(const std::vector< double > &factors)
    +
    dftfe::LAPACKSupport::State state
    Definition scalapackWrapper.h:673
    +
    std::vector< double > eigenpairs_hermitian_by_index(const std::pair< unsigned int, unsigned int > &index_limits, const bool compute_eigenvectors)
    +
    void scale_columns(const std::vector< NumberType > &factors)
    +
    void TmTmult(ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) const
    +
    const int submatrix_column
    Definition scalapackWrapper.h:767
    +
    int column_block_size
    Definition scalapackWrapper.h:706
    +
    unsigned int global_row(const unsigned int loc_row) const
    +
    std::vector< double > eigenpairs_hermitian_MRRR(const bool compute_eigenvectors, const std::pair< unsigned int, unsigned int > &index_limits=std::make_pair(dealii::numbers::invalid_unsigned_int, dealii::numbers::invalid_unsigned_int), const std::pair< double, double > &value_limits=std::make_pair(std::numeric_limits< double >::quiet_NaN(), std::numeric_limits< double >::quiet_NaN()))
    +
    void copy_transposed(const ScaLAPACKMatrix< NumberType > &B)
    +
    void mmult(ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) const
    +
    int n_local_rows
    Definition scalapackWrapper.h:711
    +
    const int first_process_column
    Definition scalapackWrapper.h:755
    +
    int row_block_size
    Definition scalapackWrapper.h:701
    +
    int descriptor[9]
    Definition scalapackWrapper.h:721
    +
    const char uplo
    Definition scalapackWrapper.h:743
    +
    void zCmCmult(ScaLAPACKMatrix< NumberType > &C, const ScaLAPACKMatrix< NumberType > &B, const bool adding=false) const
    +
    const int first_process_row
    Definition scalapackWrapper.h:749
    +
    void scale_rows(const std::vector< NumberType > &factors)
    +
    std::vector< double > eigenpairs_hermitian(const bool compute_eigenvectors, const std::pair< unsigned int, unsigned int > &index_limits=std::make_pair(dealii::numbers::invalid_unsigned_int, dealii::numbers::invalid_unsigned_int), const std::pair< double, double > &value_limits=std::make_pair(std::numeric_limits< double >::quiet_NaN(), std::numeric_limits< double >::quiet_NaN()))
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    + + +
    State
    Definition lapack_support.h:54
    +
    Property
    Definition lapack_support.h:107
    +
    @ general
    No special properties.
    Definition lapack_support.h:109
    +
    @ hermitian
    Matrix is symmetric.
    Definition lapack_support.h:111
    +
    Definition pseudoPotentialToDftfeConverter.cc:34
    + + +
    + + + + diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 000000000..01a296cfc --- /dev/null +++ b/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_3a_20density_20functional_20theory_20with_20finite_20elements_0',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]] +]; diff --git a/search/all_1.js b/search/all_1.js new file mode 100644 index 000000000..08c857ace --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,88 @@ +var searchData= +[ + ['a_0',['A',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a65bbfb25273f2c047a37302cab576aa9',1,'dftfe::LAPACKSupport']]], + ['a0_1',['a0',['../classdftfe_1_1dft_class.html#a86543e9d7b4d803fad619e36c0d51206',1,'dftfe::dftClass']]], + ['about_2',['About',['../index.html#autotoc_md0',1,'']]], + ['abs_3',['abs',['../namespacedftfe_1_1utils.html#ad4552f7270a0d908717d8773a15c426d',1,'dftfe::utils::abs(double a)'],['../namespacedftfe_1_1utils.html#ad5f75e28a1997f91f2e31ad20bc52658',1,'dftfe::utils::abs(float a)'],['../namespacedftfe_1_1utils.html#aac862b56ee93ec676261fd3b30d0eb72',1,'dftfe::utils::abs(cuDoubleComplex a)'],['../namespacedftfe_1_1utils.html#ac210a8f535f05ab1217533db3f485875',1,'dftfe::utils::abs(cuFloatComplex a)'],['../namespacedftfe_1_1utils.html#a38216533205864c03370f088aea62d1c',1,'dftfe::utils::abs(hipDoubleComplex a)'],['../namespacedftfe_1_1utils.html#a8b7003ef5691229b2d0d72d599723da0',1,'dftfe::utils::abs(hipFloatComplex a)']]], + ['abslinearsolvertolerance_4',['absLinearSolverTolerance',['../classdftfe_1_1dft_parameters.html#a402d6a6709fccbd8e959074a60493330',1,'dftfe::dftParameters']]], + ['abslinearsolvertolerancehelmholtz_5',['absLinearSolverToleranceHelmholtz',['../classdftfe_1_1dft_parameters.html#a1684d75d45b963a44412817777951eb6',1,'dftfe::dftParameters']]], + ['abspoissonsolvertolerancelrd_6',['absPoissonSolverToleranceLRD',['../classdftfe_1_1dft_parameters.html#ad7cbe04ea4d188239c949d944e84b338',1,'dftfe::dftParameters']]], + ['accumaddlocallyownedcontrrecvbufferfromtargetprocs_7',['accumAddLocallyOwnedContrRecvBufferFromTargetProcs',['../classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels.html#a6c316c5616cd424ad17ce9eb1b0ac822',1,'dftfe::utils::MPICommunicatorP2PKernels']]], + ['accumulateaddlocallyowned_8',['accumulateAddLocallyOwned',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#ade408c71328c67f07f1c39b2856e23e3',1,'dftfe::utils::mpi::MPICommunicatorP2P::accumulateAddLocallyOwned()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ab203446168a9aa0d7e87c60840552689',1,'dftfe::linearAlgebra::MultiVector::accumulateAddLocallyOwned()']]], + ['accumulateaddlocallyownedbegin_9',['accumulateAddLocallyOwnedBegin',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#ae8d232988ecd860b3e2142cc009a3a04',1,'dftfe::utils::mpi::MPICommunicatorP2P::accumulateAddLocallyOwnedBegin()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ad7a36d116aa000cbcd0bf0e5a5129c68',1,'dftfe::linearAlgebra::MultiVector::accumulateAddLocallyOwnedBegin()']]], + ['accumulateaddlocallyownedend_10',['accumulateAddLocallyOwnedEnd',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a200dacffba340cafbc9de789221bd65a',1,'dftfe::utils::mpi::MPICommunicatorP2P::accumulateAddLocallyOwnedEnd()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a694fae78f2e2e396682f10366f4052ab',1,'dftfe::linearAlgebra::MultiVector::accumulateAddLocallyOwnedEnd()']]], + ['accumulateforcecontributiongammaatomsfloating_11',['accumulateForceContributionGammaAtomsFloating',['../classdftfe_1_1force_class.html#a9d1d00f812ff11a9595a931cc5d30120',1,'dftfe::forceClass']]], + ['accumulatefromcellnodaldata_12',['accumulateFromCellNodalData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a5fdc7f28aaeab8d6a5b6fc2482983f63',1,'dftfe::basis::FEBasisOperations']]], + ['accumulatefromcellnodaldatakernel_13',['accumulateFromCellNodalDataKernel',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aa3a7b0385930e82c2215848351767f1f',1,'dftfe::basis::FEBasisOperations']]], + ['adaptandersonmixingparameter_14',['adaptAndersonMixingParameter',['../classdftfe_1_1dft_parameters.html#a55babd0916263f0c5ac0648877280f2b',1,'dftfe::dftParameters']]], + ['adaptiverankreltollrd_15',['adaptiveRankRelTolLRD',['../classdftfe_1_1dft_parameters.html#a9c175299d9cf1d8f126a43cfa5b21879',1,'dftfe::dftParameters']]], + ['add_16',['add',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a5b52d14c34a928dc597f25ee92cb4f42',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::add()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#aca286dacf130ec5477f447685f6d1c81',1,'dftfe::linearAlgebra::MultiVector::add(const ValueBaseType *valVec, const MultiVector &u)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#abc6647144c62132f41fead1ae79977e2',1,'dftfe::linearAlgebra::MultiVector::add(const ValueBaseType val, const MultiVector &u)'],['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a42d20c5ad908996be22d9bc6a452e5d4',1,'dftfe::ScaLAPACKMatrix::add()'],['../namespacedftfe_1_1utils.html#a573791729c93ac30cec9f7af5e1e8b0f',1,'dftfe::utils::add(unsigned int a, unsigned int b)'],['../namespacedftfe_1_1utils.html#a2623da22f7339d437a74d522f82de091',1,'dftfe::utils::add(unsigned long int a, unsigned long int b)'],['../namespacedftfe_1_1utils.html#ac443f7bad8b193e75bce01aa7e78c0ac',1,'dftfe::utils::add(int a, int b)'],['../namespacedftfe_1_1utils.html#a8ccd8a376c30e8fc684b8e5127610c94',1,'dftfe::utils::add(double a, double b)'],['../namespacedftfe_1_1utils.html#aef51a86e8e4694d81ec922228d4533d2',1,'dftfe::utils::add(float a, float b)'],['../namespacedftfe_1_1utils.html#a52224f6d3e567218e6d58a3bd2249d2d',1,'dftfe::utils::add(cuDoubleComplex a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#abbf68a475588415614dabd9492947c57',1,'dftfe::utils::add(cuFloatComplex a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#af5a26b2a5f36e02618d8f74023aebdf2',1,'dftfe::utils::add(double a, float b)'],['../namespacedftfe_1_1utils.html#ab61300f5261d90f8ea1e4545016caaaa',1,'dftfe::utils::add(float a, double b)'],['../namespacedftfe_1_1utils.html#a9f874d61b3ce99f7b7e8202c15e39ba5',1,'dftfe::utils::add(cuDoubleComplex a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#a5070f39e31a2a8ac91e16dec44eb156c',1,'dftfe::utils::add(cuFloatComplex a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#aed45a5e1885f96aab3f3c193b754e1a9',1,'dftfe::utils::add(hipDoubleComplex a, hipDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a0356ce0a2d8daa0789de0113bc35cc50',1,'dftfe::utils::add(hipFloatComplex a, hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#a8a5387ad002218f88a45d47044d088c9',1,'dftfe::utils::add(hipDoubleComplex a, hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#a7014a60efa2f43b3b9fdf472fb6d4b84',1,'dftfe::utils::add(hipFloatComplex a, hipDoubleComplex b)']]], + ['addandscale_17',['addAndScale',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a771707a4824859b04fc8fc507c4a1526',1,'dftfe::linearAlgebra::MultiVector']]], + ['addatomicrhoquadvaluesgradients_18',['addAtomicRhoQuadValuesGradients',['../classdftfe_1_1dft_class.html#a63cc1d4f225905e62d69f4615eb0442e',1,'dftfe::dftClass']]], + ['addenonlinearcorecorrectionstresscontribution_19',['addENonlinearCoreCorrectionStressContribution',['../classdftfe_1_1force_class.html#ae261f11c045b2f017434091972495abd',1,'dftfe::forceClass']]], + ['addenonlinearcorecorrectionstresscontributionspinpolarized_20',['addENonlinearCoreCorrectionStressContributionSpinPolarized',['../classdftfe_1_1force_class.html#a4a76b3d36612b8b3768adc25c8de83bc',1,'dftfe::forceClass']]], + ['addephitotsmearedstresscontribution_21',['addEPhiTotSmearedStressContribution',['../classdftfe_1_1force_class.html#ae0371481dc0415522475f6b0279adbb4',1,'dftfe::forceClass']]], + ['addepspstresscontribution_22',['addEPSPStressContribution',['../classdftfe_1_1force_class.html#a034ecf5674eebf76a7304936052a652d',1,'dftfe::forceClass']]], + ['addevselfsmearedstresscontribution_23',['addEVselfSmearedStressContribution',['../classdftfe_1_1force_class.html#a757557bbad7fa42a58c04579d7eb9b8b',1,'dftfe::forceClass']]], + ['addmixingvariable_24',['addMixingVariable',['../classdftfe_1_1_mixing_scheme.html#a7fbd7a3ab7ed2b6386cbdf6656318beb',1,'dftfe::MixingScheme']]], + ['addnonlocalcontribution_25',['addNonLocalContribution',['../namespacedftfe_1_1_atomic_centered_non_local_operator_kernels_device.html#a85eae2829aa518965850d0c29c9f7dbd',1,'dftfe::AtomicCenteredNonLocalOperatorKernelsDevice']]], + ['addvariabletoinhist_26',['addVariableToInHist',['../classdftfe_1_1_mixing_scheme.html#a490a9e2d06eff41f5e79e590f9928d43',1,'dftfe::MixingScheme']]], + ['addvariabletoresidualhist_27',['addVariableToResidualHist',['../classdftfe_1_1_mixing_scheme.html#a7752db5a71fed915e2f0d723a4c40f17',1,'dftfe::MixingScheme']]], + ['algotype_28',['algoType',['../classdftfe_1_1dft_parameters.html#a40fb2d3380832b149dd90523b1747616',1,'dftfe::dftParameters']]], + ['allocate_29',['allocate',['../classdftfe_1_1utils_1_1_memory_manager.html#a981500905019ef9b78e56d5713aade52',1,'dftfe::utils::MemoryManager::allocate()'],['../classdftfe_1_1utils_1_1_memory_manager_3_01_value_type_00_01_memory_space_1_1_h_o_s_t_01_4.html#af201536ce4ca5abc9a6dca688881817a',1,'dftfe::utils::MemoryManager< ValueType, MemorySpace::HOST >::allocate()']]], + ['allowfullcpumemsubspacerot_30',['allowFullCPUMemSubspaceRot',['../classdftfe_1_1dft_parameters.html#a497d496bcf9221c1b0964e614933a5ea',1,'dftfe::dftParameters']]], + ['allowmultiplefilteringpassesafterfirstscf_31',['allowMultipleFilteringPassesAfterFirstScf',['../classdftfe_1_1dft_parameters.html#a638d63fe92653d90795ee8a8725b8991',1,'dftfe::dftParameters']]], + ['angtobohr_32',['AngTobohr',['../classdftfe_1_1molecular_dynamics_class.html#a9329c04b16c9e50a77afe8004e099e7c',1,'dftfe::molecularDynamicsClass']]], + ['aposteriorimeshgenerate_33',['aposterioriMeshGenerate',['../classdftfe_1_1dft_class.html#aa2db3a35f38977768e09cc214d7bcc91',1,'dftfe::dftClass']]], + ['applyallreduceoncconjtransx_34',['applyAllReduceOnCconjtransX',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a8b735c24d3d0c32f4ec903d374fc7c41',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['applycconjtransonx_35',['applyCconjtransOnX',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a128b581e50cb3d8c0d676494f20148e7',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['applyconvcconjtransx_36',['applyCOnVCconjtransX',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a593657a354eea1110e2c70ccec119341',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['applycvcconjtransonx_37',['applyCVCconjtransOnX',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a3fc8c55e25cf56a9488af87fc4d01456',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['applyhomogeneousdirichletbc_38',['applyHomogeneousDirichletBC',['../classdftfe_1_1dft_class.html#a1e31a4e4affb182a1043e7ebc0ecb89b',1,'dftfe::dftClass']]], + ['applykerkerpreconditionertototaldensityresidual_39',['applyKerkerPreconditionerToTotalDensityResidual',['../classdftfe_1_1dft_class.html#a6c48849dbb4d9b15c9f742587c90fcb8',1,'dftfe::dftClass']]], + ['applymultipoledirichletbc_40',['applyMultipoleDirichletBC',['../classdftfe_1_1dft_class.html#ab1c71723b87ddd2d6f5e791b9e79a0ea',1,'dftfe::dftClass']]], + ['applyperiodicbchigherordernodes_41',['applyPeriodicBCHigherOrderNodes',['../classdftfe_1_1dft_class.html#a2e1ed95d5c8e435864c3fd1ba4ee0be7',1,'dftfe::dftClass']]], + ['applyvcconjtransonx_42',['applyVCconjtransOnX',['../classdftfe_1_1_atomic_centered_non_local_operator.html#af2d45da243c92a979c321e14d8c0068a',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['applyvoncconjtransx_43',['applyVOnCconjtransX',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a9f19d62d13a0a006da7d6cfd33edbb07',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['applywavefunctiondependentvxc_44',['applyWaveFunctionDependentVxc',['../classdftfe_1_1exc_wavefunction_base_class.html#a5290a31b8b9289da921fa5a12220d337',1,'dftfe::excWavefunctionBaseClass::applyWaveFunctionDependentVxc()'],['../classdftfe_1_1exc_wavefunction_none_class.html#aaf4405c5e15b70d82bfe12b9642ccd65',1,'dftfe::excWavefunctionNoneClass::applyWaveFunctionDependentVxc()']]], + ['areallcellsaffine_45',['areAllCellsAffine',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a1424645e0b762a66472682fd64df14a7',1,'dftfe::basis::FEBasisOperations']]], + ['areallcellscartesian_46',['areAllCellsCartesian',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aca9e6e3a1024e9ace1a34e6a3584987f',1,'dftfe::basis::FEBasisOperations']]], + ['atomcenteredsphericalfunctionbase_47',['AtomCenteredSphericalFunctionBase',['../classdftfe_1_1_atom_centered_spherical_function_base.html',1,'dftfe']]], + ['atomcenteredsphericalfunctionbase_2eh_48',['AtomCenteredSphericalFunctionBase.h',['../_atom_centered_spherical_function_base_8h.html',1,'']]], + ['atomcenteredsphericalfunctionbessel_49',['AtomCenteredSphericalFunctionBessel',['../classdftfe_1_1_atom_centered_spherical_function_bessel.html',1,'dftfe::AtomCenteredSphericalFunctionBessel'],['../classdftfe_1_1_atom_centered_spherical_function_bessel.html#a0d17636c0858e1db7a030ea5af2a352f',1,'dftfe::AtomCenteredSphericalFunctionBessel::AtomCenteredSphericalFunctionBessel()']]], + ['atomcenteredsphericalfunctionbessel_2eh_50',['AtomCenteredSphericalFunctionBessel.h',['../_atom_centered_spherical_function_bessel_8h.html',1,'']]], + ['atomcenteredsphericalfunctioncontainer_51',['AtomCenteredSphericalFunctionContainer',['../classdftfe_1_1_atom_centered_spherical_function_container.html',1,'dftfe']]], + ['atomcenteredsphericalfunctioncontainer_2eh_52',['AtomCenteredSphericalFunctionContainer.h',['../_atom_centered_spherical_function_container_8h.html',1,'']]], + ['atomcenteredsphericalfunctioncoredensityspline_53',['AtomCenteredSphericalFunctionCoreDensitySpline',['../classdftfe_1_1_atom_centered_spherical_function_core_density_spline.html',1,'dftfe::AtomCenteredSphericalFunctionCoreDensitySpline'],['../classdftfe_1_1_atom_centered_spherical_function_core_density_spline.html#a373536a0dd2d86bd51f56a1cdc8eccba',1,'dftfe::AtomCenteredSphericalFunctionCoreDensitySpline::AtomCenteredSphericalFunctionCoreDensitySpline()']]], + ['atomcenteredsphericalfunctioncoredensityspline_2eh_54',['AtomCenteredSphericalFunctionCoreDensitySpline.h',['../_atom_centered_spherical_function_core_density_spline_8h.html',1,'']]], + ['atomcenteredsphericalfunctiongaussian_55',['AtomCenteredSphericalFunctionGaussian',['../classdftfe_1_1_atom_centered_spherical_function_gaussian.html',1,'dftfe::AtomCenteredSphericalFunctionGaussian'],['../classdftfe_1_1_atom_centered_spherical_function_gaussian.html#af2bf10390ff5f2ab9f22d639acada402',1,'dftfe::AtomCenteredSphericalFunctionGaussian::AtomCenteredSphericalFunctionGaussian()']]], + ['atomcenteredsphericalfunctiongaussian_2eh_56',['AtomCenteredSphericalFunctionGaussian.h',['../_atom_centered_spherical_function_gaussian_8h.html',1,'']]], + ['atomcenteredsphericalfunctionlocalpotentialspline_57',['AtomCenteredSphericalFunctionLocalPotentialSpline',['../classdftfe_1_1_atom_centered_spherical_function_local_potential_spline.html',1,'dftfe::AtomCenteredSphericalFunctionLocalPotentialSpline'],['../classdftfe_1_1_atom_centered_spherical_function_local_potential_spline.html#a33cb3d06e7e929fe7fae5a07fd35e2ae',1,'dftfe::AtomCenteredSphericalFunctionLocalPotentialSpline::AtomCenteredSphericalFunctionLocalPotentialSpline()']]], + ['atomcenteredsphericalfunctionlocalpotentialspline_2eh_58',['AtomCenteredSphericalFunctionLocalPotentialSpline.h',['../_atom_centered_spherical_function_local_potential_spline_8h.html',1,'']]], + ['atomcenteredsphericalfunctiononeoverr_59',['AtomCenteredSphericalFunctionOneOverR',['../classdftfe_1_1_atom_centered_spherical_function_z_over_r.html#ae2e6fec8ccd97352d456cd0a4e8a5272',1,'dftfe::AtomCenteredSphericalFunctionZOverR']]], + ['atomcenteredsphericalfunctionprojectorspline_60',['AtomCenteredSphericalFunctionProjectorSpline',['../classdftfe_1_1_atom_centered_spherical_function_projector_spline.html',1,'dftfe::AtomCenteredSphericalFunctionProjectorSpline'],['../classdftfe_1_1_atom_centered_spherical_function_projector_spline.html#ae3ec1777699a250084ddcb85d3bafbae',1,'dftfe::AtomCenteredSphericalFunctionProjectorSpline::AtomCenteredSphericalFunctionProjectorSpline()']]], + ['atomcenteredsphericalfunctionprojectorspline_2eh_61',['AtomCenteredSphericalFunctionProjectorSpline.h',['../_atom_centered_spherical_function_projector_spline_8h.html',1,'']]], + ['atomcenteredsphericalfunctionsinc_62',['AtomCenteredSphericalFunctionSinc',['../classdftfe_1_1_atom_centered_spherical_function_sinc.html',1,'dftfe::AtomCenteredSphericalFunctionSinc'],['../classdftfe_1_1_atom_centered_spherical_function_sinc.html#a64123e195517f7833a3b3b16dd7e12f9',1,'dftfe::AtomCenteredSphericalFunctionSinc::AtomCenteredSphericalFunctionSinc()']]], + ['atomcenteredsphericalfunctionsinc_2eh_63',['AtomCenteredSphericalFunctionSinc.h',['../_atom_centered_spherical_function_sinc_8h.html',1,'']]], + ['atomcenteredsphericalfunctionspline_64',['AtomCenteredSphericalFunctionSpline',['../classdftfe_1_1_atom_centered_spherical_function_spline.html',1,'dftfe']]], + ['atomcenteredsphericalfunctionspline_2eh_65',['AtomCenteredSphericalFunctionSpline.h',['../_atom_centered_spherical_function_spline_8h.html',1,'']]], + ['atomcenteredsphericalfunctionvalencedensityspline_66',['AtomCenteredSphericalFunctionValenceDensitySpline',['../classdftfe_1_1_atom_centered_spherical_function_valence_density_spline.html',1,'dftfe::AtomCenteredSphericalFunctionValenceDensitySpline'],['../classdftfe_1_1_atom_centered_spherical_function_valence_density_spline.html#a105e14f3121d48910e50439a50b9f0d1',1,'dftfe::AtomCenteredSphericalFunctionValenceDensitySpline::AtomCenteredSphericalFunctionValenceDensitySpline()']]], + ['atomcenteredsphericalfunctionvalencedensityspline_2eh_67',['AtomCenteredSphericalFunctionValenceDensitySpline.h',['../_atom_centered_spherical_function_valence_density_spline_8h.html',1,'']]], + ['atomcenteredsphericalfunctionzoverr_68',['AtomCenteredSphericalFunctionZOverR',['../classdftfe_1_1_atom_centered_spherical_function_z_over_r.html',1,'dftfe']]], + ['atomcenteredsphericalfunctionzoverr_2eh_69',['AtomCenteredSphericalFunctionZOverR.h',['../_atom_centered_spherical_function_z_over_r_8h.html',1,'']]], + ['atomiccenterednonlocaloperator_70',['AtomicCenteredNonLocalOperator',['../classdftfe_1_1_atomic_centered_non_local_operator.html',1,'dftfe::AtomicCenteredNonLocalOperator< ValueType, memorySpace >'],['../classdftfe_1_1_atomic_centered_non_local_operator.html#a99d27e7123147c740707647893a5e7a5',1,'dftfe::AtomicCenteredNonLocalOperator::AtomicCenteredNonLocalOperator()']]], + ['atomiccenterednonlocaloperator_2eh_71',['AtomicCenteredNonLocalOperator.h',['../_atomic_centered_non_local_operator_8h.html',1,'']]], + ['atomiccenterednonlocaloperatorkernelsdevice_2eh_72',['AtomicCenteredNonLocalOperatorKernelsDevice.h',['../_atomic_centered_non_local_operator_kernels_device_8h.html',1,'']]], + ['atomicmassesfile_73',['atomicMassesFile',['../classdftfe_1_1dft_parameters.html#a6cc82f371365551da05d3cfea5687716',1,'dftfe::dftParameters']]], + ['atomlocations_74',['atomLocations',['../classdftfe_1_1dft_class.html#a2da1ee7221aa1ae95ded1dd5f784dd71',1,'dftfe::dftClass']]], + ['atomlocationsfractional_75',['atomLocationsFractional',['../classdftfe_1_1dft_class.html#a0b14012b6867570cfd7c303fd0a24efc',1,'dftfe::dftClass']]], + ['atompseudowavefunctions_76',['AtomPseudoWavefunctions',['../classdftfe_1_1_atom_pseudo_wavefunctions.html',1,'dftfe::AtomPseudoWavefunctions'],['../classdftfe_1_1_atom_pseudo_wavefunctions.html#ac25f8f36e022c138dc0853bde42de731',1,'dftfe::AtomPseudoWavefunctions::AtomPseudoWavefunctions()']]], + ['atompseudowavefunctions_2eh_77',['AtomPseudoWavefunctions.h',['../_atom_pseudo_wavefunctions_8h.html',1,'']]], + ['atomsupportinelement_78',['atomSupportInElement',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a13eb26af02aeccbf0ff3efc6a2925ba0',1,'dftfe::AtomCenteredSphericalFunctionContainer::atomSupportInElement()'],['../classdftfe_1_1_atomic_centered_non_local_operator.html#aa7d5113d2b676c3b8a35675e7fd52377',1,'dftfe::AtomicCenteredNonLocalOperator::atomSupportInElement()']]], + ['atomtypes_79',['atomTypes',['../classdftfe_1_1dft_class.html#aeaf41a588180be4774af860c798160c3',1,'dftfe::dftClass']]], + ['autoadaptbasemeshsize_80',['autoAdaptBaseMeshSize',['../classdftfe_1_1dft_parameters.html#a56b4fc41868709c7f427299e6d3df482',1,'dftfe::dftParameters']]], + ['autodeviceblocksizes_81',['autoDeviceBlockSizes',['../classdftfe_1_1dft_parameters.html#ae5c023b60b3fe965e0ce886091973a31',1,'dftfe::dftParameters']]], + ['ax_82',['AX',['../classdftfe_1_1kerker_solver_problem.html#a32839116a83e5a699408bdf46944a0d8',1,'dftfe::kerkerSolverProblem::AX()'],['../classdftfe_1_1poisson_solver_problem.html#a080f87858752f6e4e1df13c8531e310c',1,'dftfe::poissonSolverProblem::AX()']]], + ['axpby_83',['axpby',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a001bb5b32ff6ea27a64fa2e884a0b2c0',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['axpystridedblockatomicadd_84',['axpyStridedBlockAtomicAdd',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#aabb2fbf74b5650f72728675b8335e7ac',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::axpyStridedBlockAtomicAdd(const dftfe::size_type contiguousBlockSize, const dftfe::size_type numContiguousBlocks, const ValueType *addFromVec, ValueType *addToVec, const dftfe::global_size_type *addToVecStartingContiguousBlockIds) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a8b1efa28fd5d35be4337bc9b400a93e2',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::axpyStridedBlockAtomicAdd(const dftfe::size_type contiguousBlockSize, const dftfe::size_type numContiguousBlocks, const ValueType1 a, const ValueType1 *s, const ValueType2 *addFromVec, ValueType2 *addToVec, const dftfe::global_size_type *addToVecStartingContiguousBlockIds) const']]] +]; diff --git a/search/all_10.js b/search/all_10.js new file mode 100644 index 000000000..d46a8d83b --- /dev/null +++ b/search/all_10.js @@ -0,0 +1,115 @@ +var searchData= +[ + ['parse_5fparameters_0',['parse_parameters',['../classdftfe_1_1dft_parameters.html#ad2c123d6b835c6f891773455f2e58890',1,'dftfe::dftParameters::parse_parameters()'],['../classdftfe_1_1run_parameters.html#a2e398eed3eafd1748e44dcc9b73c74e9',1,'dftfe::runParameters::parse_parameters(const std::string &parameter_file)']]], + ['paththreshold_1',['pathThreshold',['../classdftfe_1_1run_parameters.html#ad08be79f22a7dfec817bb56ec7b6b849',1,'dftfe::runParameters']]], + ['pcout_2',['pcout',['../classdftfe_1_1_atomic_centered_non_local_operator.html#ab6dc947a12a94a21ea520f416843abe9',1,'dftfe::AtomicCenteredNonLocalOperator::pcout'],['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a06c53bd709044e5e36745ead8eb2cf6d',1,'dftfe::BFGSNonLinearSolver::pcout'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a9c4c297c5a84d7b5b0a152213b1bd601',1,'dftfe::cgPRPNonLinearSolver::pcout'],['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#aafde4dcf28e61ef1330dd1f7d5b1fc36',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::pcout'],['../classdftfe_1_1dealii_linear_solver.html#a05213637c64633bcfca2964b84666140',1,'dftfe::dealiiLinearSolver::pcout'],['../classdftfe_1_1dft_class.html#a8c2ca368f54fbdbcfe16fcf2ab02d0c5',1,'dftfe::dftClass::pcout'],['../classdftfe_1_1energy_calculator.html#a5e844a8417fc8d2af6b8a5df62db1fed',1,'dftfe::energyCalculator::pcout'],['../classdftfe_1_1force_class.html#a433105e9cc48e25f507e684efd50bdcb',1,'dftfe::forceClass::pcout'],['../classdftfe_1_1geometry_optimization_class.html#aca62620fb0d7e56e382c60b2c946cfd1',1,'dftfe::geometryOptimizationClass::pcout'],['../classdftfe_1_1geo_opt_cell.html#a9979567120cc38ffe6732b36c7826a09',1,'dftfe::geoOptCell::pcout'],['../classdftfe_1_1geo_opt_ion.html#a7da83cd686146cc98a9ee22981336de8',1,'dftfe::geoOptIon::pcout'],['../classdftfe_1_1kerker_solver_problem.html#a1eeb9797f3c816982a449b923757bfe9',1,'dftfe::kerkerSolverProblem::pcout'],['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a95ddca1afae44b222b488ca804b27e61',1,'dftfe::KohnShamHamiltonianOperator::pcout'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a434fe3f057b9589cb5b2fb5387e877b1',1,'dftfe::LBFGSNonLinearSolver::pcout'],['../classdftfe_1_1mesh_movement_class.html#a40e9d0087d0e8cf67c6d792c7677f31c',1,'dftfe::meshMovementClass::pcout'],['../classdftfe_1_1_mixing_scheme.html#a6d87d9658386c8bafcc0558218abcc37',1,'dftfe::MixingScheme::pcout'],['../classdftfe_1_1molecular_dynamics_class.html#a0ef6927dd007a4311fc95889b63b9c43',1,'dftfe::molecularDynamicsClass::pcout'],['../classdftfe_1_1nudged_elastic_band_class.html#a3878589f97e41ed2ad8bb2a694038875',1,'dftfe::nudgedElasticBandClass::pcout'],['../classdftfe_1_1oncv_class.html#aba0940f60ee3c9e7edcd107c81ead622',1,'dftfe::oncvClass::pcout'],['../classdftfe_1_1poisson_solver_problem.html#a7251bebe2be06bbe022100b30d4cc191',1,'dftfe::poissonSolverProblem::pcout'],['../classdftfe_1_1symmetry_class.html#a55cff1c962e2802258c04a21373e07f8',1,'dftfe::symmetryClass::pcout'],['../classdftfe_1_1triangulation_manager.html#a72776d0b60f11e1bf59380c58f13899a',1,'dftfe::triangulationManager::pcout'],['../classdftfe_1_1vself_bins_manager.html#a919a4af250666aa72f596e03aaebf193',1,'dftfe::vselfBinsManager::pcout']]], + ['pdgeadd_5f_3',['pdgeadd_',['../namespacedftfe.html#a221815568916358c46a411f2eaf8a622',1,'dftfe']]], + ['pdgels_5f_4',['pdgels_',['../namespacedftfe.html#adaa498bcbb07c15a2d5be67a678b63a0',1,'dftfe']]], + ['pdgemm_5f_5',['pdgemm_',['../namespacedftfe.html#afcd4617f3c829f0e97e950caf20324af',1,'dftfe']]], + ['pdgemr2d_5f_6',['pdgemr2d_',['../namespacedftfe.html#ab6a7b32848fa87d641a74bac65272d2b',1,'dftfe']]], + ['pdgesv_5f_7',['pdgesv_',['../namespacedftfe.html#a24d2ddff1d3f167c76d65b35a5e5b6b8',1,'dftfe']]], + ['pdgesvd_5f_8',['pdgesvd_',['../namespacedftfe.html#a3828b64eb1e8fb649d3c25da1614e384',1,'dftfe']]], + ['pdgetrf_5f_9',['pdgetrf_',['../namespacedftfe.html#a2fc8e14dce993b4584b79ac2c3c3b71f',1,'dftfe']]], + ['pdgetri_5f_10',['pdgetri_',['../namespacedftfe.html#a002f688ca93979940594131a843fdfd4',1,'dftfe']]], + ['pdlacpy_5f_11',['pdlacpy_',['../namespacedftfe.html#af38708a1d214262c1cee343f229abb50',1,'dftfe']]], + ['pdlamch_5f_12',['pdlamch_',['../namespacedftfe.html#abe6d16eb94b0fae6f7a1d1451c14fc92',1,'dftfe']]], + ['pdlange_5f_13',['pdlange_',['../namespacedftfe.html#a129935f715565db171f51520d37c82c4',1,'dftfe']]], + ['pdlansy_5f_14',['pdlansy_',['../namespacedftfe.html#ab5a9ea1c809dbc2b0b8b432a1b87e27f',1,'dftfe']]], + ['pdpocon_5f_15',['pdpocon_',['../namespacedftfe.html#a8bf82b760bdb3444929c5af5d27dd6ac',1,'dftfe']]], + ['pdpotrf_5f_16',['pdpotrf_',['../namespacedftfe.html#ae253dc496641780227d5acaab9c8c0ce',1,'dftfe']]], + ['pdpotri_5f_17',['pdpotri_',['../namespacedftfe.html#a52e4e94cb6d6249b0f172d6154da1511',1,'dftfe']]], + ['pdsyev_5f_18',['pdsyev_',['../namespacedftfe.html#aa7486105b406d173f93a86a6cf1eca74',1,'dftfe']]], + ['pdsyevr_5f_19',['pdsyevr_',['../namespacedftfe.html#abe69a61918297c8a21e31f773208c864',1,'dftfe']]], + ['pdsyevx_5f_20',['pdsyevx_',['../namespacedftfe.html#a10d901b8632df151002719691be7cc6c',1,'dftfe']]], + ['pdtran_5f_21',['pdtran_',['../namespacedftfe.html#a03f4d6b17504d2d3a551f5d24ecc7f42',1,'dftfe']]], + ['pdtrtri_5f_22',['pdtrtri_',['../namespacedftfe.html#a7d5dca590290c8d280d24bec6dd2ab8a',1,'dftfe']]], + ['periodictable_23',['PeriodicTable',['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html',1,'dftfe::pseudoUtils::PeriodicTable'],['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#a36d2c3f1a82480a1508892e68836246f',1,'dftfe::pseudoUtils::PeriodicTable::PeriodicTable()']]], + ['periodictable_2eh_24',['PeriodicTable.h',['../_periodic_table_8h.html',1,'']]], + ['periodicx_25',['periodicX',['../classdftfe_1_1dft_parameters.html#a133388b8aba995f0e6c02d2fa5532ab8',1,'dftfe::dftParameters']]], + ['periodicy_26',['periodicY',['../classdftfe_1_1dft_parameters.html#a2c140828677fda45b0b7f5d5fc084279',1,'dftfe::dftParameters']]], + ['periodicz_27',['periodicZ',['../classdftfe_1_1dft_parameters.html#aac98da4a3110ae8cb5d1d1db258f0764',1,'dftfe::dftParameters']]], + ['pgeadd_28',['pgeadd',['../namespacedftfe.html#afdd26b38e3abc3ad89e430d2a53536a7',1,'dftfe::pgeadd(const char *, const int *, const int *, const number *, const number *, const int *, const int *, const int *, const number *, number *, const int *, const int *, const int *)'],['../namespacedftfe.html#a91b91b634ef14b719abdcbef5eaaad96',1,'dftfe::pgeadd(const char *transa, const int *m, const int *n, const double *alpha, const double *A, const int *IA, const int *JA, const int *DESCA, const double *beta, double *C, const int *IC, const int *JC, const int *DESCC)'],['../namespacedftfe.html#a84a7dd6cf4fd128ee1d34fb47058b7fe',1,'dftfe::pgeadd(const char *transa, const int *m, const int *n, const float *alpha, const float *A, const int *IA, const int *JA, const int *DESCA, const float *beta, float *C, const int *IC, const int *JC, const int *DESCC)'],['../namespacedftfe.html#ad39ada61604562f57251ff1e558715b2',1,'dftfe::pgeadd(const char *transa, const int *m, const int *n, const std::complex< double > *alpha, const std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const std::complex< double > *beta, std::complex< double > *C, const int *IC, const int *JC, const int *DESCC)']]], + ['pgels_29',['pgels',['../namespacedftfe.html#a112407716e799336e6b3ad50a5efdfc0',1,'dftfe::pgels(const char *, const int *, const int *, const int *, number *, const int *, const int *, const int *, number *, const int *, const int *, const int *, number *, int *, int *)'],['../namespacedftfe.html#aea79ff1e095a9afb70318d2735a38f2f',1,'dftfe::pgels(const char *trans, const int *m, const int *n, const int *nrhs, double *A, const int *ia, const int *ja, const int *desca, double *B, const int *ib, const int *jb, const int *descb, double *work, int *lwork, int *info)'],['../namespacedftfe.html#a2e5a1f4b7c53f2b2dafa96b49dc13eb8',1,'dftfe::pgels(const char *trans, const int *m, const int *n, const int *nrhs, float *A, const int *ia, const int *ja, const int *desca, float *B, const int *ib, const int *jb, const int *descb, float *work, int *lwork, int *info)']]], + ['pgemm_30',['pgemm',['../namespacedftfe.html#a8d336cef46adcf6849917899962d692d',1,'dftfe::pgemm(const char *, const char *, const int *, const int *, const int *, const number *, const number *, const int *, const int *, const int *, const number *, const int *, const int *, const int *, const number *, number *, const int *, const int *, const int *)'],['../namespacedftfe.html#a2c210836f55cb564535dad222ae661f7',1,'dftfe::pgemm(const char *transa, const char *transb, const int *m, const int *n, const int *k, const double *alpha, const double *A, const int *IA, const int *JA, const int *DESCA, const double *B, const int *IB, const int *JB, const int *DESCB, const double *beta, double *C, const int *IC, const int *JC, const int *DESCC)'],['../namespacedftfe.html#a8f4f52028ff3bd8f536c29b24cf3f241',1,'dftfe::pgemm(const char *transa, const char *transb, const int *m, const int *n, const int *k, const float *alpha, const float *A, const int *IA, const int *JA, const int *DESCA, const float *B, const int *IB, const int *JB, const int *DESCB, const float *beta, float *C, const int *IC, const int *JC, const int *DESCC)'],['../namespacedftfe.html#afc75a88042e8f1ee4c221ca9c4df1d41',1,'dftfe::pgemm(const char *transa, const char *transb, const int *m, const int *n, const int *k, const std::complex< double > *alpha, const std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const std::complex< double > *B, const int *IB, const int *JB, const int *DESCB, const std::complex< double > *beta, std::complex< double > *C, const int *IC, const int *JC, const int *DESCC)']]], + ['pgemr2d_31',['pgemr2d',['../namespacedftfe.html#a272ad794eff91576c54c419065248b92',1,'dftfe::pgemr2d(const int *, const int *, const number *, const int *, const int *, const int *, number *, const int *, const int *, const int *, const int *)'],['../namespacedftfe.html#a0d41de33f389e36adbde65ed72d17080',1,'dftfe::pgemr2d(const int *m, const int *n, const double *A, const int *ia, const int *ja, const int *desca, double *B, const int *ib, const int *jb, const int *descb, const int *ictxt)'],['../namespacedftfe.html#a65e5019f3cc820c91a9e14557462eb24',1,'dftfe::pgemr2d(const int *m, const int *n, const float *A, const int *ia, const int *ja, const int *desca, float *B, const int *ib, const int *jb, const int *descb, const int *ictxt)']]], + ['pgesv_32',['pgesv',['../namespacedftfe.html#aed108ac8e3143e165daa3283371cab92',1,'dftfe::pgesv(const int *, const int *, number *, const int *, const int *, const int *, int *, number *, const int *, const int *, const int *, int *)'],['../namespacedftfe.html#a43ed640aef24c39d75b50e56a9973306',1,'dftfe::pgesv(const int *n, const int *nrhs, double *A, const int *ia, const int *ja, const int *desca, int *ipiv, double *B, const int *ib, const int *jb, const int *descb, int *info)'],['../namespacedftfe.html#af7b90ddff0648b33530802fe0e185940',1,'dftfe::pgesv(const int *n, const int *nrhs, float *A, const int *ia, const int *ja, const int *desca, int *ipiv, float *B, const int *ib, const int *jb, const int *descb, int *info)']]], + ['pgesvd_33',['pgesvd',['../namespacedftfe.html#a78a21f07e26ab56ae98447575766d710',1,'dftfe::pgesvd(const char *, const char *, const int *, const int *, number *, const int *, const int *, const int *, number *, number *, const int *, const int *, const int *, number *, const int *, const int *, const int *, number *, int *, int *)'],['../namespacedftfe.html#a702d07195b3c4de1fd2fb6edadd45f6b',1,'dftfe::pgesvd(const char *jobu, const char *jobvt, const int *m, const int *n, double *A, const int *ia, const int *ja, const int *desca, double *S, double *U, const int *iu, const int *ju, const int *descu, double *VT, const int *ivt, const int *jvt, const int *descvt, double *work, int *lwork, int *info)'],['../namespacedftfe.html#ade8c7099b967d41bdd95dc4c2fc6084b',1,'dftfe::pgesvd(const char *jobu, const char *jobvt, const int *m, const int *n, float *A, const int *ia, const int *ja, const int *desca, float *S, float *U, const int *iu, const int *ju, const int *descu, float *VT, const int *ivt, const int *jvt, const int *descvt, float *work, int *lwork, int *info)']]], + ['pgetrf_34',['pgetrf',['../namespacedftfe.html#a0bfc1b810074011bfc368e0d5d4a6775',1,'dftfe::pgetrf(const int *, const int *, number *, const int *, const int *, const int *, int *, int *)'],['../namespacedftfe.html#a0b5c7ebe9617b7312adf84ae9d1e542a',1,'dftfe::pgetrf(const int *m, const int *n, double *A, const int *IA, const int *JA, const int *DESCA, int *ipiv, int *INFO)'],['../namespacedftfe.html#a15525b6afbf5973ebf1441f9889e3906',1,'dftfe::pgetrf(const int *m, const int *n, float *A, const int *IA, const int *JA, const int *DESCA, int *ipiv, int *INFO)'],['../namespacedftfe.html#a58920373808ba6a67aed71aa2b8d7296',1,'dftfe::pgetrf(const int *m, const int *n, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *ipiv, int *INFO)']]], + ['pgetri_35',['pgetri',['../namespacedftfe.html#a2a82c250c7cbedc80087765993a11c35',1,'dftfe::pgetri(const int *, number *, const int *, const int *, const int *, const int *, number *, int *, int *, int *, int *)'],['../namespacedftfe.html#ac8a67b3750253f78fc52ba35ae3f324a',1,'dftfe::pgetri(const int *N, double *A, const int *IA, const int *JA, const int *DESCA, const int *ipiv, double *work, int *lwork, int *iwork, int *liwork, int *info)'],['../namespacedftfe.html#aa8c6870c06ad57f04670dc1a2c79fb99',1,'dftfe::pgetri(const int *N, float *A, const int *IA, const int *JA, const int *DESCA, const int *ipiv, float *work, int *lwork, int *iwork, int *liwork, int *info)'],['../namespacedftfe.html#ae27b54f2104e5e68e64a93a5debadd4d',1,'dftfe::pgetri(const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const int *ipiv, std::complex< double > *work, int *lwork, int *iwork, int *liwork, int *info)']]], + ['pinnednodeforpbc_36',['pinnedNodeForPBC',['../classdftfe_1_1dft_parameters.html#a9423331ee0aebf60200c0c4225075535',1,'dftfe::dftParameters']]], + ['placpy_37',['placpy',['../namespacedftfe.html#ae3cb1e0e295bca56859a16490440a325',1,'dftfe::placpy(const char *, const int *, const int *, const number *, const int *, const int *, const int *, number *, const int *, const int *, const int *)'],['../namespacedftfe.html#adfad87ce6d870ce68f891d9f78259f99',1,'dftfe::placpy(const char *uplo, const int *m, const int *n, const double *A, const int *ia, const int *ja, const int *desca, double *B, const int *ib, const int *jb, const int *descb)'],['../namespacedftfe.html#aebf89d4c7cf4bd70b5a00aa17d9fe465',1,'dftfe::placpy(const char *uplo, const int *m, const int *n, const float *A, const int *ia, const int *ja, const int *desca, float *B, const int *ib, const int *jb, const int *descb)']]], + ['plamch_38',['plamch',['../namespacedftfe.html#a55e6fd19ddc6233eb3ac483ba1070182',1,'dftfe::plamch(const int *, const char *, number &)'],['../namespacedftfe.html#ab781cc657bbeef30b13a2d518b791d4c',1,'dftfe::plamch(const int *ictxt, const char *cmach, double &val)'],['../namespacedftfe.html#a296ef8e4e175fcafc09da6c7290a9af2',1,'dftfe::plamch(const int *ictxt, const char *cmach, float &val)']]], + ['plange_39',['plange',['../namespacedftfe.html#ad23cd959a767d2f7b4b4aeebe0495138',1,'dftfe::plange(const char *, const int *, const int *, const number *, const int *, const int *, const int *, number *)'],['../namespacedftfe.html#abaabb5a8fc7eb54497850ad8c4d52ca5',1,'dftfe::plange(const char *norm, const int *m, const int *n, const double *A, const int *ia, const int *ja, const int *desca, double *work)'],['../namespacedftfe.html#a6b807efc4c3b3401f93481e7234e0b56',1,'dftfe::plange(const char *norm, const int *m, const int *n, const float *A, const int *ia, const int *ja, const int *desca, float *work)']]], + ['plansy_40',['plansy',['../namespacedftfe.html#a097c1dee8268bf876a177fa6d43c8fe3',1,'dftfe::plansy(const char *, const char *, const int *, const number *, const int *, const int *, const int *, number *)'],['../namespacedftfe.html#ae0c1473f1b617c8fd4a576670d5c4844',1,'dftfe::plansy(const char *norm, const char *uplo, const int *N, const double *A, const int *IA, const int *JA, const int *DESCA, double *work)'],['../namespacedftfe.html#adad36b88d98e9f19f2cb68231acf62dd',1,'dftfe::plansy(const char *norm, const char *uplo, const int *N, const float *A, const int *IA, const int *JA, const int *DESCA, float *work)']]], + ['pointer_41',['pointer',['../classdftfe_1_1utils_1_1_memory_storage.html#a922fa608ce2a2e4b1e2e91616d3f09f0',1,'dftfe::utils::MemoryStorage::pointer'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ad353c903ffc473ca6c9bac280ded910d',1,'dftfe::linearAlgebra::MultiVector::pointer']]], + ['poissongpu_42',['poissonGPU',['../classdftfe_1_1dft_parameters.html#a881c0723e5092869f59c9c2285a3e799',1,'dftfe::dftParameters']]], + ['poissonsolverproblem_43',['poissonSolverProblem',['../classdftfe_1_1poisson_solver_problem.html',1,'dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >'],['../classdftfe_1_1poisson_solver_problem.html#ad04efb96d4e69c663f8a13605a80ea5f',1,'dftfe::poissonSolverProblem::poissonSolverProblem()']]], + ['poissonsolverproblem_2eh_44',['poissonSolverProblem.h',['../poisson_solver_problem_8h.html',1,'']]], + ['poissonsolverproblemdevice_2eh_45',['poissonSolverProblemDevice.h',['../poisson_solver_problem_device_8h.html',1,'']]], + ['pool_46',['Pool',['../classdftfe_1_1dft_utils_1_1_pool.html',1,'dftfe::dftUtils::Pool'],['../classdftfe_1_1dft_utils_1_1_pool.html#ab25f9a7e1ce0aa8ca1a13601af0c5c16',1,'dftfe::dftUtils::Pool::Pool()']]], + ['popoldhistory_47',['popOldHistory',['../classdftfe_1_1_mixing_scheme.html#a366b186ea5c549d5b7fa8b8f8d03a942',1,'dftfe::MixingScheme']]], + ['pplacgv_48',['pplacgv',['../namespacedftfe.html#a8b096c1092d1287ee77384a89bf2f622',1,'dftfe::pplacgv(const int *N, double *A, const int *IA, const int *JA, const int *DESCA, const int *INCX)'],['../namespacedftfe.html#aea3bd3b855a2e41f9f6bd33bd58c0384',1,'dftfe::pplacgv(const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const int *INCX)']]], + ['ppocon_49',['ppocon',['../namespacedftfe.html#aa5927e9c2685f74fa2aecba7c72c59eb',1,'dftfe::ppocon(const char *, const int *, const number *, const int *, const int *, const int *, const number *, number *, number *, const int *, int *, const int *, int *)'],['../namespacedftfe.html#ae11e2bff9e957910e53bc176d74d678a',1,'dftfe::ppocon(const char *uplo, const int *N, const double *A, const int *IA, const int *JA, const int *DESCA, const double *ANORM, double *RCOND, double *WORK, const int *LWORK, int *IWORK, const int *LIWORK, int *INFO)'],['../namespacedftfe.html#a4c3ea15b6ab2a3eeace2183891710395',1,'dftfe::ppocon(const char *uplo, const int *N, const float *A, const int *IA, const int *JA, const int *DESCA, const float *ANORM, float *RCOND, float *WORK, const int *LWORK, int *IWORK, const int *LIWORK, int *INFO)']]], + ['ppotrf_50',['ppotrf',['../namespacedftfe.html#a82f094d35499ff5b5111b4e567f6fd2b',1,'dftfe::ppotrf(const char *, const int *, number *, const int *, const int *, const int *, int *)'],['../namespacedftfe.html#aa9ae2dfa7b85d40116af4811b157aeda',1,'dftfe::ppotrf(const char *UPLO, const int *N, double *A, const int *IA, const int *JA, const int *DESCA, int *INFO)'],['../namespacedftfe.html#a5a5d3bf0beda03b448c0a852c5b5476b',1,'dftfe::ppotrf(const char *UPLO, const int *N, float *A, const int *IA, const int *JA, const int *DESCA, int *INFO)'],['../namespacedftfe.html#ae4b3104b0ac41519ef30bedb200b15c2',1,'dftfe::ppotrf(const char *UPLO, const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *INFO)']]], + ['ppotri_51',['ppotri',['../namespacedftfe.html#a80d803b1a175c1b084d5d3cefe51d0ea',1,'dftfe::ppotri(const char *, const int *, number *, const int *, const int *, const int *, int *)'],['../namespacedftfe.html#aeecde09b5a36c746f0302d74202d4162',1,'dftfe::ppotri(const char *UPLO, const int *N, double *A, const int *IA, const int *JA, const int *DESCA, int *INFO)'],['../namespacedftfe.html#a98edc4289f32ac1fc0aa859b7abd0f93',1,'dftfe::ppotri(const char *UPLO, const int *N, float *A, const int *IA, const int *JA, const int *DESCA, int *INFO)'],['../namespacedftfe.html#aa5dda9c735f776cde314186b94e4f6f9',1,'dftfe::ppotri(const char *UPLO, const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *INFO)']]], + ['precondition_52',['precondition',['../classdftfe_1_1geo_opt_cell.html#ac89fb1efead7b14abc19cc67e5a719df',1,'dftfe::geoOptCell::precondition()'],['../classdftfe_1_1geo_opt_ion.html#a16e8a34fdb36346a775a400e8dc9909a',1,'dftfe::geoOptIon::precondition()'],['../classdftfe_1_1nonlinear_solver_problem.html#ab69b0c16859fddb24baafb6c514a2612',1,'dftfe::nonlinearSolverProblem::precondition()'],['../classdftfe_1_1nudged_elastic_band_class.html#a3c0151986f8e1654aac12331dd96afd9',1,'dftfe::nudgedElasticBandClass::precondition()']]], + ['precondition_5fjacobi_53',['precondition_Jacobi',['../classdftfe_1_1dealii_linear_solver_problem.html#a2541479df511b5944bc50bdc84220af1',1,'dftfe::dealiiLinearSolverProblem::precondition_Jacobi()'],['../classdftfe_1_1kerker_solver_problem.html#a6fa5d47c3621b14a018c889ed585e2ff',1,'dftfe::kerkerSolverProblem::precondition_Jacobi()'],['../classdftfe_1_1poisson_solver_problem.html#afe95860f258b4ed2a56dedb3fc1ecd61',1,'dftfe::poissonSolverProblem::precondition_Jacobi()']]], + ['print_5fparameters_54',['print_parameters',['../classdftfe_1_1run_parameters.html#a9cb638fb2ddc454b9719df55156de137',1,'dftfe::runParameters']]], + ['printatomsforces_55',['printAtomsForces',['../classdftfe_1_1force_class.html#afe454b4a084001b8f063505a701c5f75',1,'dftfe::forceClass']]], + ['printcurrentmemoryusage_56',['printCurrentMemoryUsage',['../namespacedftfe_1_1dft_utils.html#aa50216d4c39752e65055aff5ec377421',1,'dftfe::dftUtils']]], + ['printstress_57',['printStress',['../classdftfe_1_1force_class.html#a52cd02f7190c7df0a35accb7f5563b75',1,'dftfe::forceClass']]], + ['prm_58',['prm',['../classdftfe_1_1run_parameters.html#a00b6289661bf222c616e2632157a6276',1,'dftfe::runParameters']]], + ['probeandreceiveincomingmsg_59',['probeAndReceiveIncomingMsg',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#acfdf3a750a9e5d713eab717ad2247377',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['process_5fgrid_2eh_60',['process_grid.h',['../process__grid_8h.html',1,'']]], + ['processgrid_61',['ProcessGrid',['../classdftfe_1_1_process_grid.html',1,'dftfe::ProcessGrid'],['../classdftfe_1_1_process_grid.html#ad69936ac27b59ff0da6e79ab82b8458d',1,'dftfe::ProcessGrid::ProcessGrid(const MPI_Comm &mpi_communicator, const unsigned int n_rows, const unsigned int n_columns)'],['../classdftfe_1_1_process_grid.html#ac9d06ef72e49506314f77ebd06ad2880',1,'dftfe::ProcessGrid::ProcessGrid(const MPI_Comm &mpi_communicator, const unsigned int n_rows_matrix, const unsigned int n_columns_matrix, const unsigned int row_block_size, const unsigned int column_block_size)'],['../classdftfe_1_1_process_grid.html#a50c2fee674f7f9d7d9473d023b8158a4',1,'dftfe::ProcessGrid::ProcessGrid(const MPI_Comm &mpi_communicator, const std::pair< unsigned int, unsigned int > &grid_dimensions)']]], + ['processgridelpasetup_62',['processGridELPASetup',['../classdftfe_1_1elpa_scala_manager.html#a8e659cb2f7aab167c168269aadd9c25c',1,'dftfe::elpaScalaManager']]], + ['projectpreviousgroundstaterho_63',['projectPreviousGroundStateRho',['../classdftfe_1_1dft_class.html#aa1d8f721637c84e6676435baedf97b51',1,'dftfe::dftClass']]], + ['property_64',['property',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a0c818961322247597311ada36af4c6b7',1,'dftfe::ScaLAPACKMatrix']]], + ['property_65',['Property',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#af3c45dcea64890f047b4dca87fdde9ac',1,'dftfe::LAPACKSupport']]], + ['property_5fname_66',['property_name',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a4f0bba6ecbb502d68dbe13ec7b8e3852',1,'dftfe::LAPACKSupport']]], + ['pseudoconverter_2eh_67',['pseudoConverter.h',['../pseudo_converter_8h.html',1,'']]], + ['pseudogramschmidtorthogonalization_68',['pseudoGramSchmidtOrthogonalization',['../namespacedftfe_1_1linear_algebra_operations.html#aece2d5de1c664b00010ff47f5633e6af',1,'dftfe::linearAlgebraOperations']]], + ['pseudopotentialfile_69',['pseudoPotentialFile',['../classdftfe_1_1dft_parameters.html#a1f64a5581f6d416bfeb10c0c21b8cb44',1,'dftfe::dftParameters']]], + ['pseudopotentialtodftfeconverter_2ecc_70',['pseudoPotentialToDftfeConverter.cc',['../pseudo_potential_to_dftfe_converter_8cc.html',1,'']]], + ['pseudopotentialtodftfeparser_71',['pseudoPotentialToDftfeParser',['../namespacedftfe_1_1pseudo_utils.html#ac8685a900ed9ef8301bb7a892df2179b',1,'dftfe::pseudoUtils']]], + ['pseudotestsflag_72',['pseudoTestsFlag',['../classdftfe_1_1dft_parameters.html#a0ca8da48b8bdd3ae7658d405acc14f49',1,'dftfe::dftParameters']]], + ['pseudoutils_2eh_73',['pseudoUtils.h',['../pseudo_utils_8h.html',1,'']]], + ['psgeadd_5f_74',['psgeadd_',['../namespacedftfe.html#a233629b7a5e4d911de61898d349c6832',1,'dftfe']]], + ['psgels_5f_75',['psgels_',['../namespacedftfe.html#afd819e4e2c97e5a87871f0b3ef4fbf31',1,'dftfe']]], + ['psgemm_5f_76',['psgemm_',['../namespacedftfe.html#a712e6c38908c491a443b52778df44966',1,'dftfe']]], + ['psgemr2d_5f_77',['psgemr2d_',['../namespacedftfe.html#a0f575fdd814ce60d6c1b281159982ff6',1,'dftfe']]], + ['psgesv_5f_78',['psgesv_',['../namespacedftfe.html#aef3583562b2a9bb4a4470be8bf13927e',1,'dftfe']]], + ['psgesvd_5f_79',['psgesvd_',['../namespacedftfe.html#a0e761ff7b7e2af56709a3810a9328c30',1,'dftfe']]], + ['psgetrf_5f_80',['psgetrf_',['../namespacedftfe.html#abde5ab01317e19ac8feeca5602339d51',1,'dftfe']]], + ['psgetri_5f_81',['psgetri_',['../namespacedftfe.html#a9e0a4b60e5d7a3a2d9c56d7bcca7b3a1',1,'dftfe']]], + ['pslacpy_5f_82',['pslacpy_',['../namespacedftfe.html#a341659efbe4ac80f340443830891e557',1,'dftfe']]], + ['pslamch_5f_83',['pslamch_',['../namespacedftfe.html#a7c61818e9eb2bdbcfb0d8ebdb1945c12',1,'dftfe']]], + ['pslange_5f_84',['pslange_',['../namespacedftfe.html#af4b521c6694c2682ef70694b20f8ec6d',1,'dftfe']]], + ['pslansy_5f_85',['pslansy_',['../namespacedftfe.html#a619f9a1e5a3dc5e2542db2542ea4159b',1,'dftfe']]], + ['pspcutoffimagecharges_86',['pspCutoffImageCharges',['../classdftfe_1_1dft_parameters.html#a592ceb4c131074c5c053e96b5c942f97',1,'dftfe::dftParameters']]], + ['pspocon_5f_87',['pspocon_',['../namespacedftfe.html#a9bd6a7d349646376a1d62ba9decf7212',1,'dftfe']]], + ['pspotrf_5f_88',['pspotrf_',['../namespacedftfe.html#a7b312f4ec912904f739e3884959ae74f',1,'dftfe']]], + ['pspotri_5f_89',['pspotri_',['../namespacedftfe.html#aff107ce3bc9296f14c90a2577146aa94',1,'dftfe']]], + ['pssyev_5f_90',['pssyev_',['../namespacedftfe.html#aafa91b6b369496e0a7507d591ee82705',1,'dftfe']]], + ['pssyevr_5f_91',['pssyevr_',['../namespacedftfe.html#accde1d8ea16247a5878e9e56e1fa3ad0',1,'dftfe']]], + ['pssyevx_5f_92',['pssyevx_',['../namespacedftfe.html#af7898cfd26024e906c28470ee08d0bd2',1,'dftfe']]], + ['pstran_5f_93',['pstran_',['../namespacedftfe.html#af852f56eb67805d3bda3a2eef708c5bf',1,'dftfe']]], + ['pstrtri_5f_94',['pstrtri_',['../namespacedftfe.html#a44af8d71d934a11b0d3606bf008f7b7b',1,'dftfe']]], + ['psyev_95',['psyev',['../namespacedftfe.html#a9212c7fb18bf41e1c82806c961723eb1',1,'dftfe::psyev(const char *, const char *, const int *, number *, const int *, const int *, int *, number *, number *, const int *, const int *, int *, number *, const int *, int *)'],['../namespacedftfe.html#af884916c0085983907eea996a93a03b7',1,'dftfe::psyev(const char *jobz, const char *uplo, const int *m, double *A, const int *ia, const int *ja, int *desca, double *w, double *z, const int *iz, const int *jz, int *descz, double *work, const int *lwork, int *info)'],['../namespacedftfe.html#a5d0daa3e23f36e0fd27e377764eadf91',1,'dftfe::psyev(const char *jobz, const char *uplo, const int *m, float *A, const int *ia, const int *ja, int *desca, float *w, float *z, const int *iz, const int *jz, int *descz, float *work, const int *lwork, int *info)'],['../namespacedftfe.html#ac27316aba8c7537bafd262860944315f',1,'dftfe::psyev(const char *jobz, const char *uplo, const int *m, std::complex< double > *A, const int *ia, const int *ja, int *desca, double *w, std::complex< double > *z, const int *iz, const int *jz, int *descz, std::complex< double > *work, const int *lwork, int *info)']]], + ['psyevr_96',['psyevr',['../namespacedftfe.html#a44550e6398adcb9da90a7a65b752f4ee',1,'dftfe::psyevr(const char *, const char *, const char *, const int *, number *, const int *, const int *, const int *, const number *, const number *, const int *, const int *, int *, int *, number *, number *, const int *, const int *, const int *, number *, int *, int *, int *, int *)'],['../namespacedftfe.html#acd965b3bbe4dde64598a6ed3dc46e5b8',1,'dftfe::psyevr(const char *jobz, const char *range, const char *uplo, const int *n, double *A, const int *IA, const int *JA, const int *DESCA, const double *VL, const double *VU, const int *IL, const int *IU, int *m, int *nz, double *w, double *Z, const int *IZ, const int *JZ, const int *DESCZ, double *work, int *lwork, int *iwork, int *liwork, int *info)'],['../namespacedftfe.html#a4b2dcc4078e80bc55b24ff266a1b8f0d',1,'dftfe::psyevr(const char *jobz, const char *range, const char *uplo, const int *n, float *A, const int *IA, const int *JA, const int *DESCA, const float *VL, const float *VU, const int *IL, const int *IU, int *m, int *nz, float *w, float *Z, const int *IZ, const int *JZ, const int *DESCZ, float *work, int *lwork, int *iwork, int *liwork, int *info)'],['../namespacedftfe.html#a34d5ce5825e4e308f2b1347788bdbe39',1,'dftfe::psyevr(const char *jobz, const char *range, const char *uplo, const int *n, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const double *VL, const double *VU, const int *IL, const int *IU, int *m, int *nz, double *w, std::complex< double > *Z, const int *IZ, const int *JZ, const int *DESCZ, std::complex< double > *work, int *lwork, int *iwork, int *liwork, int *info)']]], + ['psyevx_97',['psyevx',['../namespacedftfe.html#ae6b3f7a14db57859c2170e4989be43a5',1,'dftfe::psyevx(const char *, const char *, const char *, const int *, number *, const int *, const int *, const int *, number *, number *, const int *, const int *, number *, const int *, const int *, number *, number *, number *, const int *, const int *, const int *, number *, int *, int *, int *, int *, int *, number *, int *)'],['../namespacedftfe.html#a4dc0fcbc7223c16144ba443a7647f792',1,'dftfe::psyevx(const char *jobz, const char *range, const char *uplo, const int *n, double *A, const int *ia, const int *ja, const int *desca, double *VL, double *VU, const int *il, const int *iu, double *abstol, const int *m, const int *nz, double *w, double *orfac, double *Z, const int *iz, const int *jz, const int *descz, double *work, int *lwork, int *iwork, int *liwork, int *ifail, int *iclustr, double *gap, int *info)'],['../namespacedftfe.html#a0006c6888819df527ff7b92e4145fdb8',1,'dftfe::psyevx(const char *jobz, const char *range, const char *uplo, const int *n, float *A, const int *ia, const int *ja, const int *desca, float *VL, float *VU, const int *il, const int *iu, float *abstol, const int *m, const int *nz, float *w, float *orfac, float *Z, const int *iz, const int *jz, const int *descz, float *work, int *lwork, int *iwork, int *liwork, int *ifail, int *iclustr, float *gap, int *info)'],['../namespacedftfe.html#a1a33afc6f2d7c215d7c2d113c37f5301',1,'dftfe::psyevx(const char *jobz, const char *range, const char *uplo, const int *n, std::complex< double > *A, const int *ia, const int *ja, const int *desca, double *VL, double *VU, const int *il, const int *iu, double *abstol, const int *m, const int *nz, double *w, double *orfac, std::complex< double > *Z, const int *iz, const int *jz, const int *descz, std::complex< double > *work, int *lwork, int *iwork, int *liwork, int *ifail, int *iclustr, double *gap, int *info)']]], + ['ptable_98',['ptable',['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#a26c6e2598bece56f45cfc79a4e5a279d',1,'dftfe::pseudoUtils::PeriodicTable']]], + ['ptran_99',['ptran',['../namespacedftfe.html#aaa18ee2e667e738f05105ba1979c395e',1,'dftfe::ptran(const int *, const int *, const number *, const number *, const int *, const int *, const int *, const number *, number *, const int *, const int *, const int *)'],['../namespacedftfe.html#a98685733ad047591946bd51a8844b7e8',1,'dftfe::ptran(const int *m, const int *n, const double *alpha, const double *A, const int *IA, const int *JA, const int *DESCA, const double *beta, double *C, const int *IC, const int *JC, const int *DESCC)'],['../namespacedftfe.html#a7ab71b8b4cfaac911ab85653483f4f16',1,'dftfe::ptran(const int *m, const int *n, const float *alpha, const float *A, const int *IA, const int *JA, const int *DESCA, const float *beta, float *C, const int *IC, const int *JC, const int *DESCC)']]], + ['ptrtri_100',['ptrtri',['../namespacedftfe.html#ab4f556dfb6d365a893dd2f7f00e1ba62',1,'dftfe::ptrtri(const char *, const char *, const int *, number *, const int *, const int *, const int *, int *)'],['../namespacedftfe.html#a2046eb0b50ef0d58d9d489a5bc03ce58',1,'dftfe::ptrtri(const char *UPLO, const char *DIAG, const int *N, double *A, const int *IA, const int *JA, const int *DESCA, int *INFO)'],['../namespacedftfe.html#aa83bcf277f70cb2d021b3bba42a6dcb9',1,'dftfe::ptrtri(const char *UPLO, const char *DIAG, const int *N, float *A, const int *IA, const int *JA, const int *DESCA, int *INFO)'],['../namespacedftfe.html#a08023849926ba95ad99ad39f7ffc0c62',1,'dftfe::ptrtri(const char *UPLO, const char *DIAG, const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *INFO)']]], + ['pzgeadd_5f_101',['pzgeadd_',['../namespacedftfe.html#aaf96e3cb8da123837a2377856357f67e',1,'dftfe']]], + ['pzgemm_5f_102',['pzgemm_',['../namespacedftfe.html#ac983f66dcae225deff57ab9240317432',1,'dftfe']]], + ['pzgetrf_5f_103',['pzgetrf_',['../namespacedftfe.html#a7c568a3b74e953fcf5b3e42a9a88e5aa',1,'dftfe']]], + ['pzgetri_5f_104',['pzgetri_',['../namespacedftfe.html#a3c535a126efb2a7819e59c35d2f5ba43',1,'dftfe']]], + ['pzheev_5f_105',['pzheev_',['../namespacedftfe.html#a4c528a0b8b8e334819754e69c8481299',1,'dftfe']]], + ['pzheevr_5f_106',['pzheevr_',['../namespacedftfe.html#ae0e0243bcf842451ed42faba81fb2c4a',1,'dftfe']]], + ['pzheevx_5f_107',['pzheevx_',['../namespacedftfe.html#a53980a0e19402e09d15af41be52cd979',1,'dftfe']]], + ['pzlacgv_5f_108',['pzlacgv_',['../namespacedftfe.html#ac6a9217aa19c7367285078037d4f5583',1,'dftfe']]], + ['pzpotrf_5f_109',['pzpotrf_',['../namespacedftfe.html#a8c350b90b550b87a811af738e9dccb64',1,'dftfe']]], + ['pzpotri_5f_110',['pzpotri_',['../namespacedftfe.html#a3f7be7ce745104479b872684e5cd467c',1,'dftfe']]], + ['pztrtri_5f_111',['pztrtri_',['../namespacedftfe.html#aea480fc447349ffb0996fb46220cabd8',1,'dftfe']]] +]; diff --git a/search/all_11.js b/search/all_11.js new file mode 100644 index 000000000..3d0293632 --- /dev/null +++ b/search/all_11.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['quaddatacompositewrite_0',['QuadDataCompositeWrite',['../classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html',1,'dftfe::dftUtils::QuadDataCompositeWrite'],['../classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html#a706fe0ad27eec6e077ce483cf8b9f40b',1,'dftfe::dftUtils::QuadDataCompositeWrite::QuadDataCompositeWrite()']]], + ['quaddatacompositewrite_2eh_1',['QuadDataCompositeWrite.h',['../_quad_data_composite_write_8h.html',1,'']]], + ['quadpoints_2',['quadPoints',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a0835948b8ed283252d137bea307ca3e0',1,'dftfe::basis::FEBasisOperations']]] +]; diff --git a/search/all_12.js b/search/all_12.js new file mode 100644 index 000000000..c2aeb8003 --- /dev/null +++ b/search/all_12.js @@ -0,0 +1,76 @@ +var searchData= +[ + ['radiusatomball_0',['radiusAtomBall',['../classdftfe_1_1dft_parameters.html#a61aeeaf83366820db300f6ba0e6b4a1b',1,'dftfe::dftParameters']]], + ['radvalues_1',['radValues',['../classdftfe_1_1dft_class.html#aea2892e87aee873c511a8b20e573644a',1,'dftfe::dftClass']]], + ['rayleighritz_2',['rayleighRitz',['../namespacedftfe_1_1linear_algebra_operations.html#a6d413e7fa9852584fe53464b4c52b917',1,'dftfe::linearAlgebraOperations']]], + ['rayleighritzgep_3',['rayleighRitzGEP',['../namespacedftfe_1_1linear_algebra_operations.html#a1e50d3a2a5f747e04587bf6a651f97d4',1,'dftfe::linearAlgebraOperations']]], + ['rayleighritzgepspectrumsplitdirect_4',['rayleighRitzGEPSpectrumSplitDirect',['../namespacedftfe_1_1linear_algebra_operations.html#a6fecb8b6d7675660b6d9591ae7da2060',1,'dftfe::linearAlgebraOperations']]], + ['rayleighritzspectrumsplitdirect_5',['rayleighRitzSpectrumSplitDirect',['../namespacedftfe_1_1linear_algebra_operations.html#ae4021b3e2cbeae96bdbe4ca9ea11405b',1,'dftfe::linearAlgebraOperations']]], + ['readfile_6',['readFile',['../namespacedftfe_1_1dft_utils.html#a8c6d0d0249775853719a1e599f8fa707',1,'dftfe::dftUtils']]], + ['readkpointdata_7',['readkPointData',['../classdftfe_1_1dft_class.html#a8596fcae2fb3a3d83e78fdc308f2e204',1,'dftfe::dftClass']]], + ['readme_2emd_8',['README.md',['../_r_e_a_d_m_e_8md.html',1,'']]], + ['readpsi_9',['readPSI',['../classdftfe_1_1dft_class.html#a6c33260b6f302f475d5c6db342434ca3',1,'dftfe::dftClass']]], + ['readpsifile_10',['readPsiFile',['../namespacedftfe_1_1dft_utils.html#a9cd072ebfa9f0046d25fb14684398796',1,'dftfe::dftUtils']]], + ['readpsiradialvalues_11',['readPSIRadialValues',['../classdftfe_1_1dft_class.html#a4acf0e880792b3652ce955762ad9d733',1,'dftfe::dftClass']]], + ['readrelaxationflagsfile_12',['readRelaxationFlagsFile',['../namespacedftfe_1_1dft_utils.html#aa5f6ccd68e9c4b58e055d60cf7d639fc',1,'dftfe::dftUtils']]], + ['readwfcforpdospspfile_13',['readWfcForPdosPspFile',['../classdftfe_1_1dft_parameters.html#a4b82897e3c35617887a47d22becd7f98',1,'dftfe::dftParameters']]], + ['realpart_14',['realPart',['../namespacedftfe_1_1utils.html#af397c74986c0a3da6b343a3f8cfb3d27',1,'dftfe::utils::realPart(const double x)'],['../namespacedftfe_1_1utils.html#a329fee6055d6ab0349e28d73e2cc39cb',1,'dftfe::utils::realPart(const float x)'],['../namespacedftfe_1_1utils.html#a17e0aa81a720251abed8169ac0270117',1,'dftfe::utils::realPart(const std::complex< double > x)'],['../namespacedftfe_1_1utils.html#ac842eff416fd8183670411de8a30bfc4',1,'dftfe::utils::realPart(const std::complex< float > x)']]], + ['realpartdevice_15',['realPartDevice',['../namespacedftfe_1_1utils.html#a7f189677d8a881de936a196765025e32',1,'dftfe::utils::realPartDevice(double a)'],['../namespacedftfe_1_1utils.html#a7ac38ab177210ca02e546c0db8101f5c',1,'dftfe::utils::realPartDevice(float a)'],['../namespacedftfe_1_1utils.html#ae98b64c742276241ee15b1973725ecbd',1,'dftfe::utils::realPartDevice(cuDoubleComplex a)'],['../namespacedftfe_1_1utils.html#a802442d76e55dbea34797983807d3671',1,'dftfe::utils::realPartDevice(cuFloatComplex a)'],['../namespacedftfe_1_1utils.html#a55f60c6c5b9896ac149b5949123b2996',1,'dftfe::utils::realPartDevice(hipDoubleComplex a)'],['../namespacedftfe_1_1utils.html#aa84ed5d5f5aaa9693e423ed1023edaff',1,'dftfe::utils::realPartDevice(hipFloatComplex a)']]], + ['recomputekpointcoordinates_16',['recomputeKPointCoordinates',['../classdftfe_1_1dft_class.html#aa44c7e39b2f8892809421fec346eb1ef',1,'dftfe::dftClass']]], + ['recv_5fbuf_5fsize_17',['recv_buf_size',['../classdftfe_1_1symmetry_class.html#a52c783f143e964c4d720a485a252a04d',1,'dftfe::symmetryClass']]], + ['recv_5fsize_18',['recv_size',['../classdftfe_1_1symmetry_class.html#a326bbe30b56f3bfeb906d837523a737d',1,'dftfe::symmetryClass']]], + ['recv_5fsize0_19',['recv_size0',['../classdftfe_1_1symmetry_class.html#a919a6f64aa29b24b66fd94ce924f56f9',1,'dftfe::symmetryClass']]], + ['recv_5fsize1_20',['recv_size1',['../classdftfe_1_1symmetry_class.html#af7f98af34dd8c2bbc2809fdbfe29add6',1,'dftfe::symmetryClass']]], + ['recvddata0_21',['recvdData0',['../classdftfe_1_1symmetry_class.html#ae46fe44eaf2ff6bcb5ef9d8b5378d34f',1,'dftfe::symmetryClass']]], + ['recvddata1_22',['recvdData1',['../classdftfe_1_1symmetry_class.html#a22a15085d2893da7151ed2ec4740021e',1,'dftfe::symmetryClass']]], + ['recvddata2_23',['recvdData2',['../classdftfe_1_1symmetry_class.html#a0fe8790a704e53aa67fa857da93b55b2',1,'dftfe::symmetryClass']]], + ['recvddata3_24',['recvdData3',['../classdftfe_1_1symmetry_class.html#a2819e3c472ea569cac3cb56f898947cd',1,'dftfe::symmetryClass']]], + ['recvgrad_5fsize1_25',['recvGrad_size1',['../classdftfe_1_1symmetry_class.html#a7c55f29c431dfc2b38a50fbcc97bb4b7',1,'dftfe::symmetryClass']]], + ['reference_26',['reference',['../classdftfe_1_1utils_1_1_memory_storage.html#a2f15bec864198b311348b924d8e81eb9',1,'dftfe::utils::MemoryStorage::reference'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#aeea85bae38644c63b80fb6ba6d695a5f',1,'dftfe::linearAlgebra::MultiVector::reference']]], + ['refinementalgorithma_27',['refinementAlgorithmA',['../classdftfe_1_1triangulation_manager.html#a8141ec28ab876d9b78f0e53c6f929e98',1,'dftfe::triangulationManager']]], + ['refineserialmesh_28',['refineSerialMesh',['../classdftfe_1_1triangulation_manager.html#a48ab7214b9743b44274cafc2040d20ba',1,'dftfe::triangulationManager']]], + ['reinit_29',['reinit',['../classdftfe_1_1dftfe_wrapper.html#a223674f555fdac2a0575a997bec81a62',1,'dftfe::dftfeWrapper::reinit(const std::string parameter_file, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const bool setDeviceToMPITaskBindingInternally=false, const std::string solverMode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool useDevice=false)'],['../classdftfe_1_1dftfe_wrapper.html#a80575d34c9b4c151630c6379973dee9a',1,'dftfe::dftfeWrapper::reinit(const std::string parameter_file, const std::string restartCoordsFile, const std::string restartDomainVectorsFile, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const bool setDeviceToMPITaskBindingInternally=false, const std::string solverMode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool useDevice=false, const bool isScfRestart=true)'],['../classdftfe_1_1dftfe_wrapper.html#a2553fb5e2318ca2ea3648d3b15e6f7c5',1,'dftfe::dftfeWrapper::reinit(const MPI_Comm &mpi_comm_parent, const bool useDevice, const std::vector< std::vector< double > > atomicPositionsCart, const std::vector< unsigned int > atomicNumbers, const std::vector< std::vector< double > > cell, const std::vector< bool > pbc, const std::vector< unsigned int > mpGrid=std::vector< unsigned int >{1, 1, 1}, const std::vector< bool > mpGridShift=std::vector< bool >{false, false, false}, const bool spinPolarizedDFT=false, const double startMagnetization=0.0, const double fermiDiracSmearingTemp=500.0, const unsigned int npkpt=0, const double meshSize=0.8, const double scfMixingParameter=0.2, const int verbosity=-1, const bool setDeviceToMPITaskBindingInternally=false)'],['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a2555fdd844fad949d7d75a841ec9cbad',1,'dftfe::basis::FEBasisOperations::reinit()'],['../classdftfe_1_1kerker_solver_problem.html#a298cf5c87f77192ab5bac2e68c21a357',1,'dftfe::kerkerSolverProblem::reinit()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a724dec06ae4d8a465390f9167e487159',1,'dftfe::linearAlgebra::MultiVector::reinit(std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P, const size_type numVectors, const ValueType initVal=0)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a347e3c4efbb0501729f5e38f74993ef3',1,'dftfe::linearAlgebra::MultiVector::reinit(const MultiVector &u)'],['../classdftfe_1_1poisson_solver_problem.html#a9c21522795634534fc53bcc14255d493',1,'dftfe::poissonSolverProblem::reinit()'],['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a1a08450144cb221e7ebaa5cf0ba1a02b',1,'dftfe::ScaLAPACKMatrix::reinit(const size_type n_rows, const size_type n_columns, const std::shared_ptr< const dftfe::ProcessGrid > &process_grid, const size_type row_block_size=32, const size_type column_block_size=32, const dftfe::LAPACKSupport::Property property=dftfe::LAPACKSupport::Property::general)'],['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a1144c2f751a2e2d6245dcde85d9958d1',1,'dftfe::ScaLAPACKMatrix::reinit(const size_type size, const std::shared_ptr< const dftfe::ProcessGrid > &process_grid, const size_type block_size=32, const dftfe::LAPACKSupport::Property property=dftfe::LAPACKSupport::Property::hermitian)']]], + ['reinitializeconstraints_30',['reinitializeConstraints',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a6026d5afb2ab06ce56e99998079cd1d9',1,'dftfe::basis::FEBasisOperations']]], + ['reinitializekohnshamdftoperator_31',['reInitializeKohnShamDFTOperator',['../classdftfe_1_1dft_class.html#aba391a33f542093d6c8f41ff3f212dd5',1,'dftfe::dftClass']]], + ['reinitkpointspinindex_32',['reinitkPointSpinIndex',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a0fbe3c558527a4dff6c59d66996f0874',1,'dftfe::KohnShamHamiltonianOperator::reinitkPointSpinIndex()'],['../classdftfe_1_1operator_d_f_t_class.html#a9a4a04e828f75df6a46e256686ca9540',1,'dftfe::operatorDFTClass::reinitkPointSpinIndex()']]], + ['reinitnumberwavefunctions_33',['reinitNumberWavefunctions',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a9188e221451eac13c160b1c51daf5bc9',1,'dftfe::KohnShamHamiltonianOperator::reinitNumberWavefunctions()'],['../classdftfe_1_1operator_d_f_t_class.html#abd939e3a66659160b7905cbfa6bc9054',1,'dftfe::operatorDFTClass::reinitNumberWavefunctions()']]], + ['reinitspectrumbounds_34',['reinitSpectrumBounds',['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#a34cc1a9a57e84e79e392841219886fff',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver']]], + ['reproducible_5foutput_35',['reproducible_output',['../classdftfe_1_1dft_parameters.html#a513bf52c61ae46bd22ae9b4472dc09f4',1,'dftfe::dftParameters']]], + ['rescalevelocities_36',['RescaleVelocities',['../classdftfe_1_1molecular_dynamics_class.html#a9f064dae8f3c00a23ba58b69c88609cd',1,'dftfe::molecularDynamicsClass']]], + ['resetextpothamflag_37',['resetExtPotHamFlag',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#afdbddb11a3ace28ad6952fad4079e0e4',1,'dftfe::KohnShamHamiltonianOperator']]], + ['resetmesh_38',['resetMesh',['../classdftfe_1_1triangulation_manager.html#a8d10e3842e326bd523d3d9401038ce32',1,'dftfe::triangulationManager']]], + ['resetrhonodalin_39',['resetRhoNodalIn',['../classdftfe_1_1dft_class.html#ac26846b6572f55561d77c40012d1c190',1,'dftfe::dftClass::resetRhoNodalIn()'],['../classdftfe_1_1dft_base.html#afb55667a7521ffe8a6b6aebce139ebc3',1,'dftfe::dftBase::resetRhoNodalIn()']]], + ['resetrhonodalsplitin_40',['resetRhoNodalSplitIn',['../classdftfe_1_1dft_class.html#a53e2f7fa31f3e73abb7363f956940630',1,'dftfe::dftClass::resetRhoNodalSplitIn()'],['../classdftfe_1_1dft_base.html#a62350a0841630fdbebac2931d15439da',1,'dftfe::dftBase::resetRhoNodalSplitIn()']]], + ['reshapefromnonaffinelayoutdevice_41',['reshapeFromNonAffineLayoutDevice',['../namespacedftfe_1_1basis_1_1_f_e_basis_operations_kernels_internal.html#aee12d773ebf2949e76d8f40b3fac02b1',1,'dftfe::basis::FEBasisOperationsKernelsInternal']]], + ['reshapefromnonaffinelayouthost_42',['reshapeFromNonAffineLayoutHost',['../namespacedftfe_1_1basis_1_1_f_e_basis_operations_kernels_internal.html#a0a3bc76ad5707d45ce032980d19495da',1,'dftfe::basis::FEBasisOperationsKernelsInternal']]], + ['reshapetononaffinelayoutdevice_43',['reshapeToNonAffineLayoutDevice',['../namespacedftfe_1_1basis_1_1_f_e_basis_operations_kernels_internal.html#a81d330766db87e6886c37fea075f1c66',1,'dftfe::basis::FEBasisOperationsKernelsInternal']]], + ['reshapetononaffinelayouthost_44',['reshapeToNonAffineLayoutHost',['../namespacedftfe_1_1basis_1_1_f_e_basis_operations_kernels_internal.html#a334ae3fcc83b7cd866c84b991d91c824',1,'dftfe::basis::FEBasisOperationsKernelsInternal']]], + ['resize_45',['resize',['../classdftfe_1_1utils_1_1_memory_storage.html#a444af8c7c6a92f83b0db6422075ac9b8',1,'dftfe::utils::MemoryStorage']]], + ['resizetempstorage_46',['resizeTempStorage',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a486122211d001f6d82c77176540784f6',1,'dftfe::basis::FEBasisOperations']]], + ['restafermiwavevector_47',['restaFermiWavevector',['../classdftfe_1_1dft_parameters.html#aaac8ec0693f2589d2ac09c5833f1545f',1,'dftfe::dftParameters']]], + ['restart_48',['RESTART',['../classdftfe_1_1non_linear_solver.html#ae0e20e973c1797bd9ea9d06fb2aff9e7a393d5137bf83313de43e0ffdb59513b4',1,'dftfe::nonLinearSolver']]], + ['restart_49',['restart',['../classdftfe_1_1run_parameters.html#a38dfa64b3247e99c00b27913fcbea56b',1,'dftfe::runParameters']]], + ['restartfilespath_50',['restartFilesPath',['../classdftfe_1_1run_parameters.html#a4c21c57289a6a9ef4081ffe67e2e54f8',1,'dftfe::runParameters']]], + ['restartfolder_51',['restartFolder',['../classdftfe_1_1dft_parameters.html#a718dcc9b1c7852e42a4208720b7882a7',1,'dftfe::dftParameters']]], + ['restartspinfromnospin_52',['restartSpinFromNoSpin',['../classdftfe_1_1dft_parameters.html#a332d14ebec3bf0c268cad02086407627',1,'dftfe::dftParameters']]], + ['restascreeninglength_53',['restaScreeningLength',['../classdftfe_1_1dft_parameters.html#aa3be2853a108846598e897e7a07dbe42',1,'dftfe::dftParameters']]], + ['restricttoonepass_54',['restrictToOnePass',['../classdftfe_1_1dft_parameters.html#ad5c5310cc43c2b02b00875f54bc95a46',1,'dftfe::dftParameters']]], + ['returnnormedvector_55',['ReturnNormedVector',['../classdftfe_1_1nudged_elastic_band_class.html#af06d3ee71b8a7e14e22ad540b6bf0950',1,'dftfe::nudgedElasticBandClass']]], + ['returnvaluetype_56',['ReturnValueType',['../classdftfe_1_1eigen_solver_class.html#a9c442ebbb90a179cba7e4889d7fdd700',1,'dftfe::eigenSolverClass::ReturnValueType'],['../classdftfe_1_1non_linear_solver.html#ae0e20e973c1797bd9ea9d06fb2aff9e7',1,'dftfe::nonLinearSolver::ReturnValueType']]], + ['reusedensitygeoopt_57',['reuseDensityGeoOpt',['../classdftfe_1_1dft_parameters.html#a49a2478c31af6ed725e925ef5f83037b',1,'dftfe::dftParameters']]], + ['reuselanczosupperboundfromfirstcall_58',['reuseLanczosUpperBoundFromFirstCall',['../classdftfe_1_1dft_parameters.html#a3d580e11010c8b30bf2a97b9b237af63',1,'dftfe::dftParameters']]], + ['reusewfcgeoopt_59',['reuseWfcGeoOpt',['../classdftfe_1_1dft_parameters.html#a9419961b863a64dcfdc2ca48791a8499',1,'dftfe::dftParameters']]], + ['rho_60',['rho',['../namespacedftfe.html#a55e98bd838d76f5c67d7d7bc1cccee84a843a28dfdc5b2d5463ba2a7b83fdec7c',1,'dftfe']]], + ['rhodataattributes_61',['rhoDataAttributes',['../namespacedftfe.html#aca06a56192ad7c2be3b45fbddef239a7',1,'dftfe']]], + ['rhofieldinnerproduct_62',['rhofieldInnerProduct',['../classdftfe_1_1dft_class.html#a018c5f6c8e157fb0514bc4fe164fd718',1,'dftfe::dftClass']]], + ['rhofieldl2norm_63',['rhofieldl2Norm',['../classdftfe_1_1dft_class.html#a5fea4f6d292db28e63027eae61039503',1,'dftfe::dftClass']]], + ['rhorecvd_64',['rhoRecvd',['../classdftfe_1_1symmetry_class.html#af00dcd10a171d869b4131e4317806e0e',1,'dftfe::symmetryClass']]], + ['row_5fblock_5fsize_65',['row_block_size',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ac49f03ec236b08f7670343cf072f912d',1,'dftfe::ScaLAPACKMatrix']]], + ['run_66',['run',['../classdftfe_1_1dft_class.html#a4e674d1a1b488744ce10ba62e34d3dde',1,'dftfe::dftClass::run()'],['../classdftfe_1_1dft_base.html#a6a270166bb2f8dabcefa1cb7fabe58f9',1,'dftfe::dftBase::run()'],['../classdftfe_1_1dftfe_wrapper.html#a2d719af7bc23d4e4f471f9844f65074b',1,'dftfe::dftfeWrapper::run()'],['../classdftfe_1_1geo_opt_cell.html#a535b250bcee9c5f61a778238bd8a520a',1,'dftfe::geoOptCell::run()'],['../classdftfe_1_1geo_opt_ion.html#a75dbb301294056cd8e231513ffdb3984',1,'dftfe::geoOptIon::run()']]], + ['runmd_67',['runMD',['../classdftfe_1_1molecular_dynamics_class.html#ad50b54b4bc6f8afc490783ca7e92ad44',1,'dftfe::molecularDynamicsClass']]], + ['running_20dft_20fe_68',['Running DFT-FE',['../index.html#autotoc_md2',1,'']]], + ['runopt_69',['runOpt',['../classdftfe_1_1geometry_optimization_class.html#a654861464517f6da7cb0be690bf1d2a7',1,'dftfe::geometryOptimizationClass']]], + ['runparameters_70',['runParameters',['../classdftfe_1_1run_parameters.html',1,'dftfe::runParameters'],['../classdftfe_1_1run_parameters.html#ace05f085e50a0485502d8103cf6aa060',1,'dftfe::runParameters::runParameters()']]], + ['runparameters_2eh_71',['runParameters.h',['../run_parameters_8h.html',1,'']]], + ['runtimeerror_72',['RuntimeError',['../namespacedftfe_1_1utils.html#af8c031cb849ea3c4006ddfc5f1af7833',1,'dftfe::utils']]] +]; diff --git a/search/all_13.js b/search/all_13.js new file mode 100644 index 000000000..555f38b00 --- /dev/null +++ b/search/all_13.js @@ -0,0 +1,114 @@ +var searchData= +[ + ['sadd_0',['sadd',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#aec239aa3014c3d36113e399632af8d13',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['save_1',['save',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a6d8501e5df74bcb6c921272fcb3b1936',1,'dftfe::BFGSNonLinearSolver::save()'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a189f6b2553901b5c64160b0b7be40f9a',1,'dftfe::cgPRPNonLinearSolver::save()'],['../classdftfe_1_1geo_opt_cell.html#a889f90082046defab1e68c1ff044c5ce',1,'dftfe::geoOptCell::save()'],['../classdftfe_1_1geo_opt_ion.html#afd5d287723853e77bf8411904cecd8da',1,'dftfe::geoOptIon::save()'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a35ce4645d180db0f1df68f38b8656bae',1,'dftfe::LBFGSNonLinearSolver::save()'],['../classdftfe_1_1non_linear_solver.html#aa81440478681e39d87f3665e4a62b7c6',1,'dftfe::nonLinearSolver::save()'],['../classdftfe_1_1nonlinear_solver_problem.html#aef5a7d70f38f60fc254553b3cf42c12d',1,'dftfe::nonlinearSolverProblem::save()'],['../classdftfe_1_1nudged_elastic_band_class.html#af51109e0dd719061f6032f308045e17e',1,'dftfe::nudgedElasticBandClass::save()']]], + ['saverhodata_2',['saveRhoData',['../classdftfe_1_1dft_parameters.html#a23a0e981382ae02fbc3d9290fe5bde9f',1,'dftfe::dftParameters']]], + ['savesupporttriangulations_3',['saveSupportTriangulations',['../classdftfe_1_1triangulation_manager.html#a5403284760785c6ce4c9ea9a92c7d296',1,'dftfe::triangulationManager']]], + ['savetriainfoandrhonodaldata_4',['saveTriaInfoAndRhoNodalData',['../classdftfe_1_1dft_class.html#a1c12b12cc1ed6b7b3ff78cdadef22130',1,'dftfe::dftClass']]], + ['savetriangulationssolutionvectors_5',['saveTriangulationsSolutionVectors',['../classdftfe_1_1triangulation_manager.html#a40210727e959e453c3f51950816a4a27',1,'dftfe::triangulationManager']]], + ['scalapack_2etemplates_2eh_6',['scalapack.templates.h',['../scalapack_8templates_8h.html',1,'']]], + ['scalapackblocksize_7',['scalapackBlockSize',['../classdftfe_1_1dft_parameters.html#a1d568905b0fb58c9d29b92a2ebb0d8e9',1,'dftfe::dftParameters']]], + ['scalapackmatrix_8',['ScaLAPACKMatrix',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html',1,'dftfe::ScaLAPACKMatrix< NumberType >'],['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a877a61dc7a8aa371b9f7655268cf4cd3',1,'dftfe::ScaLAPACKMatrix::ScaLAPACKMatrix(const size_type n_rows, const size_type n_columns, const std::shared_ptr< const dftfe::ProcessGrid > &process_grid, const size_type row_block_size=32, const size_type column_block_size=32, const dftfe::LAPACKSupport::Property property=dftfe::LAPACKSupport::Property::general)'],['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a6025e77abed29ca914a56ae5e11f00e0',1,'dftfe::ScaLAPACKMatrix::ScaLAPACKMatrix(const size_type size, const std::shared_ptr< const dftfe::ProcessGrid > &process_grid, const size_type block_size=32, const dftfe::LAPACKSupport::Property property=dftfe::LAPACKSupport::Property::hermitian)']]], + ['scalapackparalprocs_9',['scalapackParalProcs',['../classdftfe_1_1dft_parameters.html#a69e15d4de72201067bd32709068c1aba',1,'dftfe::dftParameters']]], + ['scalapackwrapper_2eh_10',['scalapackWrapper.h',['../scalapack_wrapper_8h.html',1,'']]], + ['scale_11',['scale',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a38f37020fabce832e4420917297a8c13',1,'dftfe::linearAlgebra::MultiVector']]], + ['scale_5fcolumns_12',['scale_columns',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#aab1e407c313486935ec3721ab3a964f8',1,'dftfe::ScaLAPACKMatrix']]], + ['scale_5fcolumns_5frealfactors_13',['scale_columns_realfactors',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a8bc3849a2ce63c21eff33ed6c31ce0b3',1,'dftfe::ScaLAPACKMatrix']]], + ['scale_5frows_14',['scale_rows',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#af2a0e3fdc8f1fd82872b936b8f411512',1,'dftfe::ScaLAPACKMatrix']]], + ['scale_5frows_5frealfactors_15',['scale_rows_realfactors',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a9281a7b0cfbe3a779e09aa5312229488',1,'dftfe::ScaLAPACKMatrix']]], + ['scaleandadd_16',['scaleAndAdd',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a9ce3abbe60bf23a9fc6007bed302251b',1,'dftfe::linearAlgebra::MultiVector']]], + ['scaled_5ffock_17',['SCALED_FOCK',['../namespacedftfe.html#aec9f58557c36d1bd23430bc23568c800aa78ddbc9f811a897f116a3d8a324a3a1',1,'dftfe']]], + ['scalehessian_18',['scaleHessian',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a0ee49a85038fccb65c54130e438e41e9',1,'dftfe::BFGSNonLinearSolver']]], + ['scalepreconditioner_19',['scalePreconditioner',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#aa2573093fc0b5b767e2163821b9fa76f',1,'dftfe::LBFGSNonLinearSolver']]], + ['scalescalapackmat_20',['scaleScaLAPACKMat',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a735a697df81b760e87196b3e137420e8',1,'dftfe::linearAlgebraOperations::internal']]], + ['scfconverged_21',['scfConverged',['../classdftfe_1_1dft_class.html#ac440fcec5889fbe97a2b7e9e4a823986',1,'dftfe::dftClass']]], + ['scratchmultivectors_22',['scratchMultiVectors',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aec528cf08aacb3ab02fb11a13968dbce',1,'dftfe::basis::FEBasisOperations']]], + ['selecteddofshanging_23',['selectedDofsHanging',['../classdftfe_1_1dft_class.html#a4cfdaee6d74f12a7c401efdd99e46680',1,'dftfe::dftClass']]], + ['selfconsistentsolvertolerance_24',['selfConsistentSolverTolerance',['../classdftfe_1_1dft_parameters.html#a8d70f5af96eea70b8559b10833efeac0',1,'dftfe::dftParameters']]], + ['send_5fbuf_5fsize_25',['send_buf_size',['../classdftfe_1_1symmetry_class.html#a7f5ab4c05dd25bf1b576bb30a626fc42',1,'dftfe::symmetryClass']]], + ['send_5fscatter_5fsize_26',['send_scatter_size',['../classdftfe_1_1symmetry_class.html#aa9fb3877dbb6912aecb8abf37b1f9ff5',1,'dftfe::symmetryClass']]], + ['send_5fscattergrad_5fsize_27',['send_scatterGrad_size',['../classdftfe_1_1symmetry_class.html#a22639f9e288ab00c01e5bb4360368352',1,'dftfe::symmetryClass']]], + ['send_5fto_5finactive_28',['send_to_inactive',['../classdftfe_1_1_process_grid.html#a525019deaeb398b8b9e954bad8a6eae6',1,'dftfe::ProcessGrid']]], + ['set_29',['set',['../classdftfe_1_1dft_class.html#af80af253ca8d462a2cb4ebbf8ebb9f67',1,'dftfe::dftClass::set()'],['../classdftfe_1_1dft_base.html#abc1f4594ddf0955da8e160b054e44a38',1,'dftfe::dftBase::set()'],['../classdftfe_1_1utils_1_1_memory_manager.html#ad5d17986a3964b33f5aa37d15e4ccce7',1,'dftfe::utils::MemoryManager::set()'],['../classdftfe_1_1utils_1_1_memory_manager_3_01_value_type_00_01_memory_space_1_1_h_o_s_t_01_4.html#aff907288187735001abc95b677255651',1,'dftfe::utils::MemoryManager< ValueType, MemorySpace::HOST >::set()'],['../classdftfe_1_1molecular_dynamics_class.html#a5d9444743904b5a324352e68de6c98b4',1,'dftfe::molecularDynamicsClass::set()'],['../classdftfe_1_1nudged_elastic_band_class.html#a62c297ceaf7e870e89559802abdd8580',1,'dftfe::nudgedElasticBandClass::set()']]], + ['set_5fproperty_30',['set_property',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a5c7da23c4243e9ace668a66239039bed',1,'dftfe::ScaLAPACKMatrix']]], + ['set_5fzero_31',['set_zero',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a857dd4a4d359b78e4a9ad64443bfa024',1,'dftfe::dftUtils::constraintMatrixInfo::set_zero(distributedCPUVec< T > &fieldVector, const unsigned int blockSize) const'],['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a618f6a084061f21f792c4dc764d73a2d',1,'dftfe::dftUtils::constraintMatrixInfo::set_zero(distributedCPUMultiVec< T > &fieldVector) const']]], + ['setautoparameters_32',['setAutoParameters',['../classdftfe_1_1dft_parameters.html#a4eb986c625ed4f9d706634d028ae4812',1,'dftfe::dftParameters']]], + ['setcommunicationprecision_33',['setCommunicationPrecision',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a3c90763aa8e044d4daa30aaa256e4502',1,'dftfe::utils::mpi::MPICommunicatorP2P::setCommunicationPrecision()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a24faaf13496ca9aafbf73796d29e6a9b',1,'dftfe::linearAlgebra::MultiVector::setCommunicationPrecision()']]], + ['setimagecoordinates_34',['setImageCoordinates',['../classdftfe_1_1_atom_centered_spherical_function_container.html#ae522ff49322e46da45bf6b1c967d7829',1,'dftfe::AtomCenteredSphericalFunctionContainer::setImageCoordinates()'],['../classdftfe_1_1oncv_class.html#a614b124743e0d485d7d64b878e426a1e',1,'dftfe::oncvClass::setImageCoordinates()']]], + ['setupelpahandleparameters_35',['setupELPAHandleParameters',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#af89cc23ee6f73c883aa9118a960de7a3',1,'dftfe::linearAlgebraOperations::internal']]], + ['setvalue_36',['setValue',['../classdftfe_1_1utils_1_1_memory_storage.html#ac04a60dba8d4cda976bcad4c1af8c4d5',1,'dftfe::utils::MemoryStorage::setValue()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a00bc8e3854065e263e3a6551310088fc',1,'dftfe::linearAlgebra::MultiVector::setValue()']]], + ['shapefunctionbasisdata_37',['shapeFunctionBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a4c39e8dc65470249cc63a83053443859',1,'dftfe::basis::FEBasisOperations']]], + ['shapefunctiondata_38',['shapeFunctionData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#af1c510984eb0b62540b6a3fd321babe5',1,'dftfe::basis::FEBasisOperations']]], + ['shapefunctiongradientbasisdata_39',['shapeFunctionGradientBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#af6e5362d54d03bd387b8cb12447b851e',1,'dftfe::basis::FEBasisOperations']]], + ['shapefunctiongradientdata_40',['shapeFunctionGradientData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a6d30e6517f8eb90d6ba6c4ff19b5932f',1,'dftfe::basis::FEBasisOperations']]], + ['sigmagradvalue_41',['sigmaGradValue',['../namespacedftfe.html#aca06a56192ad7c2be3b45fbddef239a7a3751137a69e981a5b124cc00959cb39d',1,'dftfe']]], + ['signallocalsendcompletion_42',['signalLocalSendCompletion',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#ae6eb820306e12ee181fed52c1436acf7',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['single_43',['single',['../namespacedftfe_1_1utils_1_1mpi.html#a0210bc35f26587376caf48af1eeb137aadd5c07036f2975ff4bce568b6511d3bc',1,'dftfe::utils::mpi']]], + ['singlepreclrd_44',['singlePrecLRD',['../classdftfe_1_1dft_parameters.html#a3bbb1aa3d2d952a4ef0b04dcd010fbfd',1,'dftfe::dftParameters']]], + ['singleprectype_45',['singlePrecType',['../structdftfe_1_1utils_1_1mpi_1_1single_prec_type.html',1,'dftfe::utils::mpi']]], + ['singleprectype_3c_20double_20_3e_46',['singlePrecType< double >',['../structdftfe_1_1utils_1_1mpi_1_1single_prec_type_3_01double_01_4.html',1,'dftfe::utils::mpi']]], + ['singleprectype_3c_20std_3a_3acomplex_3c_20double_20_3e_20_3e_47',['singlePrecType< std::complex< double > >',['../structdftfe_1_1utils_1_1mpi_1_1single_prec_type_3_01std_1_1complex_3_01double_01_4_01_4.html',1,'dftfe::utils::mpi']]], + ['size_48',['size',['../classdftfe_1_1utils_1_1_memory_storage.html#a8eb4504f8bee0b28881f0d65604f9f7e',1,'dftfe::utils::MemoryStorage::size()'],['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#ab2f86bd20cdb8d62c3d90555d274aafc',1,'dftfe::pseudoUtils::PeriodicTable::size()']]], + ['size_5ftype_49',['size_type',['../classdftfe_1_1dealii_linear_solver_problem.html#a96907b7dde61d2be894abfe09d4c0a75',1,'dftfe::dealiiLinearSolverProblem::size_type'],['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a4caf4c02adc2c4ab39026a39be6b243a',1,'dftfe::ScaLAPACKMatrix::size_type'],['../namespacedftfe.html#a576159ff5163d650fdf5bc5e75d35597',1,'dftfe::size_type']]], + ['sizetypevector_50',['SizeTypeVector',['../classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels.html#a99e21c46f9ab35c86231b4ec5737fc65',1,'dftfe::utils::MPICommunicatorP2PKernels::SizeTypeVector'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a249679d90cda79b3c0512032704dfef0',1,'dftfe::utils::mpi::MPIPatternP2P::SizeTypeVector']]], + ['smearedcharge_51',['smearedCharge',['../namespacedftfe_1_1dft_utils.html#ab40366b16eed96067c605074c9ed4f07',1,'dftfe::dftUtils']]], + ['smearedchargedr_52',['smearedChargeDr',['../namespacedftfe_1_1dft_utils.html#a46110cc38e1a2d4cccfa5fcad5969791',1,'dftfe::dftUtils']]], + ['smearednuclearcharges_53',['smearedNuclearCharges',['../classdftfe_1_1dft_parameters.html#a24a908b53cd2c5c793bafeafad111060',1,'dftfe::dftParameters']]], + ['smearedpot_54',['smearedPot',['../namespacedftfe_1_1dft_utils.html#a15c9bd0524aa6c965278c90c8ff0d18c',1,'dftfe::dftUtils']]], + ['smearedpotdr_55',['smearedPotDr',['../namespacedftfe_1_1dft_utils.html#a209b19b28e8259ac7e0cd5dcc99704ac',1,'dftfe::dftUtils']]], + ['solution_56',['solution',['../classdftfe_1_1geo_opt_cell.html#a0b63235c81c90ac29c3cf07ff5b496d7',1,'dftfe::geoOptCell::solution()'],['../classdftfe_1_1geo_opt_ion.html#a513ee21951cdd9114752f43e6b045010',1,'dftfe::geoOptIon::solution()'],['../classdftfe_1_1nonlinear_solver_problem.html#a57432a0cd4697e3af47a04923c481ef9',1,'dftfe::nonlinearSolverProblem::solution()'],['../classdftfe_1_1nudged_elastic_band_class.html#a0980b28edb852b0b34a31d55c060b896',1,'dftfe::nudgedElasticBandClass::solution()']]], + ['solve_57',['solve',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a4834be342d730c5536c1c60c4b457bf4',1,'dftfe::BFGSNonLinearSolver::solve()'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a978ed675629e3570f2e6702a5d9bfcef',1,'dftfe::cgPRPNonLinearSolver::solve()'],['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#a09742c63c594a478ccaddc4412e7734a',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::solve(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, elpaScalaManager &elpaScala, dataTypes::number *eigenVectorsFlattened, dataTypes::number *eigenVectorsRotFracDensityFlattened, const unsigned int totalNumberWaveFunctions, const unsigned int localVectorSize, std::vector< double > &eigenValues, std::vector< double > &residuals, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, const bool computeResidual, const bool useMixedPrec=false, const bool isFirstScf=false)'],['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#a2f88acd848cb89f098ddc82799da0325',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::solve(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, std::vector< distributedCPUVec< double > > &eigenVectors, std::vector< double > &eigenValues, std::vector< double > &residuals)'],['../classdftfe_1_1dealii_linear_solver.html#afeb3a3fd987a6c8dbfd070511edc11a5',1,'dftfe::dealiiLinearSolver::solve()'],['../classdftfe_1_1dft_class.html#a44c4ac530ac581a68d4aebba4dfefc4b',1,'dftfe::dftClass::solve()'],['../classdftfe_1_1dft_base.html#abd320fa08778b4b1bc46e837b5f1ccbb',1,'dftfe::dftBase::solve()'],['../classdftfe_1_1eigen_solver_class.html#acca612f89cfdedc15809d8e496592b9a',1,'dftfe::eigenSolverClass::solve()'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#afad3f1e3e7313d118fc1d2a124b2e10f',1,'dftfe::LBFGSNonLinearSolver::solve()'],['../classdftfe_1_1linear_solver.html#a1408df7f509ce8bdd7dad94ff19b6050',1,'dftfe::linearSolver::solve()'],['../classdftfe_1_1non_linear_solver.html#a2e2d921bc700a699ba30165cf78d212a',1,'dftfe::nonLinearSolver::solve()']]], + ['solvenoscf_58',['solveNoSCF',['../classdftfe_1_1dft_class.html#a6bdb1e539086424659b69727b89d1a19',1,'dftfe::dftClass']]], + ['solvermode_59',['solvermode',['../classdftfe_1_1run_parameters.html#a26aaba1ee86e0b57a17822d21183f2b0',1,'dftfe::runParameters']]], + ['solvermode_60',['solverMode',['../classdftfe_1_1dft_parameters.html#a91f881759a11ff4b08d2c9bc4ef41102',1,'dftfe::dftParameters']]], + ['solvertype_61',['solverType',['../classdftfe_1_1dealii_linear_solver.html#a34362ec759485d82dd86681c37130bc2',1,'dftfe::dealiiLinearSolver']]], + ['solvevselfinbins_62',['solveVselfInBins',['../classdftfe_1_1vself_bins_manager.html#a59cb9728687be03b06be69786ef5ec64',1,'dftfe::vselfBinsManager']]], + ['solvevselfinbinsdevice_2eh_63',['solveVselfInBinsDevice.h',['../solve_vself_in_bins_device_8h.html',1,'']]], + ['solvevselfinbinsperturbeddomain_64',['solveVselfInBinsPerturbedDomain',['../classdftfe_1_1vself_bins_manager.html#ac07ffae341183478cedc5d94dd007720',1,'dftfe::vselfBinsManager']]], + ['spectrumsplitstartingscfiter_65',['spectrumSplitStartingScfIter',['../classdftfe_1_1dft_parameters.html#aa590e5f13af6576a1dd8324bf12233f5',1,'dftfe::dftParameters']]], + ['sphericalharmonicutils_2eh_66',['sphericalHarmonicUtils.h',['../spherical_harmonic_utils_8h.html',1,'']]], + ['spinmixingenhancementfactor_67',['spinMixingEnhancementFactor',['../classdftfe_1_1dft_parameters.html#a60ed5604832e2f14e17b65b9c26e501d',1,'dftfe::dftParameters']]], + ['spinpolarized_68',['spinPolarized',['../classdftfe_1_1dft_parameters.html#a6cb31b5acd2a52f5445850d0bfb4fa7f',1,'dftfe::dftParameters']]], + ['sqrtmassvector_69',['sqrtMassVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a7aaf5c5d938594f16b9d59cc2ac4cd98',1,'dftfe::basis::FEBasisOperations']]], + ['sqrtmassvectorbasisdata_70',['sqrtMassVectorBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ae1f68723dc3a7c14b7dac7f97be56eee',1,'dftfe::basis::FEBasisOperations']]], + ['start_5fmagnetization_71',['start_magnetization',['../classdftfe_1_1dft_parameters.html#a50bdd409e495e8e88d03eea25a24f1ca',1,'dftfe::dftParameters']]], + ['startingnormlrdlargedamping_72',['startingNormLRDLargeDamping',['../classdftfe_1_1dft_parameters.html#afa14d903aa8597cc3c37682db1d2703b',1,'dftfe::dftParameters']]], + ['startingtempbomd_73',['startingTempBOMD',['../classdftfe_1_1dft_parameters.html#a0efb0fc7288c93d2ec21257eedaebe09',1,'dftfe::dftParameters']]], + ['startingwfctype_74',['startingWFCType',['../classdftfe_1_1dft_parameters.html#a7f3eb4176f12016b5b03f9e10da961ac',1,'dftfe::dftParameters']]], + ['startlocalsend_75',['startLocalSend',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#aaa5098493d6e441db02af3e9c3e58315',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['state_76',['state',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a92f0c297eb4bf18aabc413b2b698c5af',1,'dftfe::ScaLAPACKMatrix']]], + ['state_77',['State',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06',1,'dftfe::LAPACKSupport']]], + ['state_5fname_78',['state_name',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a1ad6cab489e9639b5217b1d344e4ca7a',1,'dftfe::LAPACKSupport']]], + ['storage_79',['Storage',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ae010c684c6667ef6ffa3db74b6413fef',1,'dftfe::linearAlgebra::MultiVector']]], + ['stressenlelementalcontribution_80',['stressEnlElementalContribution',['../classdftfe_1_1force_class.html#a72c6d9d107c5def20b29a335f2376456',1,'dftfe::forceClass']]], + ['stressrelaxtol_81',['stressRelaxTol',['../classdftfe_1_1dft_parameters.html#a21f6d95865a474ee1877d0ffe6bb5607',1,'dftfe::dftParameters']]], + ['stridedblockscale_82',['stridedBlockScale',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a470fcd5d521b497846e7add1803c25d2',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['stridedblockscalecopy_83',['stridedBlockScaleCopy',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#ab2af86eb85f5738fd3648f4b577f3a3f',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['stridedcopyconstantstride_84',['stridedCopyConstantStride',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#aeb37641a405cfb850658204f3706c33d',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['stridedcopyfromblock_85',['stridedCopyFromBlock',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#ad3fea279c3f93e2f5e13fe06faf8e043',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['stridedcopyfromblockconstantstride_86',['stridedCopyFromBlockConstantStride',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a9714f4fec3365cf4448895d0df17ba39',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['stridedcopytoblock_87',['stridedCopyToBlock',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a2f053b099d89a66b57aadf216994c869',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['stridedcopytoblockconstantstride_88',['stridedCopyToBlockConstantStride',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#ae81ecddd6a8a9df62283a11a548ab8e6',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['sub_89',['sub',['../namespacedftfe_1_1utils.html#af285b0f352d9ea596a066217c1dea45c',1,'dftfe::utils::sub(unsigned int a, unsigned int b)'],['../namespacedftfe_1_1utils.html#a1699f57dc042ff557bbfa7a4e7e23df4',1,'dftfe::utils::sub(unsigned long int a, unsigned long int b)'],['../namespacedftfe_1_1utils.html#a744899fe3b270ebc6edb4b69e421f388',1,'dftfe::utils::sub(int a, int b)'],['../namespacedftfe_1_1utils.html#aa6d08db45bf1cf423ffa40bac9ce9d81',1,'dftfe::utils::sub(double a, double b)'],['../namespacedftfe_1_1utils.html#aef3b80be11f8a00381b3ebceda0c624c',1,'dftfe::utils::sub(float a, float b)'],['../namespacedftfe_1_1utils.html#a4579dcf361aa52d65dcc250cde628587',1,'dftfe::utils::sub(cuDoubleComplex a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#ad93526c8e042450872672c296ba335ec',1,'dftfe::utils::sub(cuFloatComplex a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#a56029a4638d183d7e4ed7738dd0ddf44',1,'dftfe::utils::sub(hipDoubleComplex a, hipDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a139302928ca4fa468b8ddbf545ff385b',1,'dftfe::utils::sub(hipFloatComplex a, hipFloatComplex b)']]], + ['submatrix_5fcolumn_90',['submatrix_column',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#aac8bdfe5c541d0464e16ed95c56b00e0',1,'dftfe::ScaLAPACKMatrix']]], + ['submatrix_5frow_91',['submatrix_row',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a8d0ce8a69e77fa11614929042bd3e276',1,'dftfe::ScaLAPACKMatrix']]], + ['subscribe_92',['subscribe',['../classdftfe_1_1dealii_linear_solver_problem.html#abe9cc5ee76771f260dc527db4b4dc159',1,'dftfe::dealiiLinearSolverProblem::subscribe()'],['../classdftfe_1_1kerker_solver_problem.html#a6a60087b1bb2c42fe475276086bd92ab',1,'dftfe::kerkerSolverProblem::subscribe()'],['../classdftfe_1_1poisson_solver_problem.html#a0a57b1ab7a21ed34cd62c73ce3cc2404',1,'dftfe::poissonSolverProblem::subscribe()']]], + ['subspacerotation_93',['subspaceRotation',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a68bad9fd7afb389abf78b37629efd9e5',1,'dftfe::linearAlgebraOperations::internal']]], + ['subspacerotationcgsmixedprec_94',['subspaceRotationCGSMixedPrec',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a23ba10da48e0fb28d232bee3c9df411f',1,'dftfe::linearAlgebraOperations::internal']]], + ['subspacerotationmixedprec_95',['subspaceRotationMixedPrec',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a6d03dd66f5aaf2768bc1af6f8362cf3d',1,'dftfe::linearAlgebraOperations::internal']]], + ['subspacerotationspectrumsplit_96',['subspaceRotationSpectrumSplit',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a0905baf1d7c457180580c64f1a57d2ed',1,'dftfe::linearAlgebraOperations::internal']]], + ['subspacerotationspectrumsplitmixedprec_97',['subspaceRotationSpectrumSplitMixedPrec',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#afbf8d821857e0f111897ecdb8ce4db5a',1,'dftfe::linearAlgebraOperations::internal']]], + ['subspacerotdofsblocksize_98',['subspaceRotDofsBlockSize',['../classdftfe_1_1dft_parameters.html#a5e290b67a03d5243ba31d215be254e4c',1,'dftfe::dftParameters']]], + ['success_99',['SUCCESS',['../classdftfe_1_1non_linear_solver.html#ae0e20e973c1797bd9ea9d06fb2aff9e7ac3eb2ff0ea3ba5a2fd29f81d5dd21e3a',1,'dftfe::nonLinearSolver::SUCCESS'],['../classdftfe_1_1eigen_solver_class.html#a9c442ebbb90a179cba7e4889d7fdd700ad0749aaba8b833466dfcbb0428e4f89c',1,'dftfe::eigenSolverClass::SUCCESS']]], + ['sumacrossintercommscalapackmat_100',['sumAcrossInterCommScaLAPACKMat',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#abbb04264506d10f84faf370ff41e9622',1,'dftfe::linearAlgebraOperations::internal']]], + ['svd_101',['svd',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06a497aadc9a46708ab7fb255c9e44800e1',1,'dftfe::LAPACKSupport']]], + ['svr_102',['svr',['../classdftfe_1_1molecular_dynamics_class.html#a252129e528db8582e34c17d0213bde86',1,'dftfe::molecularDynamicsClass']]], + ['swap_103',['swap',['../classdftfe_1_1utils_1_1_memory_storage.html#a673649b25448f73587021f756761aea0',1,'dftfe::utils::MemoryStorage::swap()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ac32ddffd17246347c688558d7cd48800',1,'dftfe::linearAlgebra::MultiVector::swap()']]], + ['symbol_104',['symbol',['../structdftfe_1_1pseudo_utils_1_1_element.html#ad68eca304b2068af76052ea80b7e19cc',1,'dftfe::pseudoUtils::Element::symbol'],['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#a56c0dd3d4fba24fc42ec38e9311b2b4e',1,'dftfe::pseudoUtils::PeriodicTable::symbol()']]], + ['symmetry_2eh_105',['symmetry.h',['../symmetry_8h.html',1,'']]], + ['symmetryclass_106',['symmetryClass',['../classdftfe_1_1symmetry_class.html',1,'dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >'],['../classdftfe_1_1symmetry_class.html#a556d7787d6fddc47747b3f1322865ae8',1,'dftfe::symmetryClass::symmetryClass()']]], + ['symmetryclass_3c_20feorder_2c_20feorderelectro_2c_20memoryspace_20_3e_107',['symmetryClass< FEOrder, FEOrderElectro, memorySpace >',['../classdftfe_1_1dft_class.html#ab86ed7b4ddca96789d09f5a3d7e82bd8',1,'dftfe::dftClass']]], + ['symmetryptr_108',['symmetryPtr',['../classdftfe_1_1dft_class.html#a39be18d50506c560491d09d8be7ce7fc',1,'dftfe::dftClass']]], + ['symmmat_109',['symmMat',['../classdftfe_1_1symmetry_class.html#a290a69bbe903b6609d89e6511b83cf25',1,'dftfe::symmetryClass']]], + ['symmundergroup_110',['symmUnderGroup',['../classdftfe_1_1symmetry_class.html#a46466852e99f377c56a1c34704fa7e4a',1,'dftfe::symmetryClass']]] +]; diff --git a/search/all_14.js b/search/all_14.js new file mode 100644 index 000000000..a0332bcbb --- /dev/null +++ b/search/all_14.js @@ -0,0 +1,41 @@ +var searchData= +[ + ['t_0',['T',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a23abbc89484eac7485f14aa3428577ed',1,'dftfe::LAPACKSupport']]], + ['tempcellgradientsblock_1',['tempCellGradientsBlock',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a228ab89933cd47940c6f08960db2a8cd',1,'dftfe::basis::FEBasisOperations']]], + ['tempcellgradientsblock2_2',['tempCellGradientsBlock2',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a4d30aed0667d4d5a4d6599d8f5aa7097',1,'dftfe::basis::FEBasisOperations']]], + ['tempcellmatrixblock_3',['tempCellMatrixBlock',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#adfe8a8befcd60346d266771f7a7fd34a',1,'dftfe::basis::FEBasisOperations']]], + ['tempcellnodaldata_4',['tempCellNodalData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#acc268d98b40e5f269e206a868430aa68',1,'dftfe::basis::FEBasisOperations']]], + ['tempcellvaluesblock_5',['tempCellValuesBlock',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ab22a3238bb47ebd6aae92ab85b149925',1,'dftfe::basis::FEBasisOperations']]], + ['tempcontrollertypebomd_6',['tempControllerTypeBOMD',['../classdftfe_1_1dft_parameters.html#ae22f7484bbfe9eff7d43ffe7958606cb',1,'dftfe::dftParameters']]], + ['temphammatriximagblock_7',['tempHamMatrixImagBlock',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a3f7298b2fb596a56e02e902f8d1ad3db',1,'dftfe::KohnShamHamiltonianOperator']]], + ['temphammatrixrealblock_8',['tempHamMatrixRealBlock',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a36d1332e1047956727ef4ba6fe753f9d',1,'dftfe::KohnShamHamiltonianOperator']]], + ['tempquadraturegradientsdata_9',['tempQuadratureGradientsData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a9e2e8d2e8e874783a09ba5a22a2483da',1,'dftfe::basis::FEBasisOperations']]], + ['tempquadraturegradientsdatanonaffine_10',['tempQuadratureGradientsDataNonAffine',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aecfc883a9da0d63b45f3f2357a39e936',1,'dftfe::basis::FEBasisOperations']]], + ['theory_20with_20finite_20elements_11',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['thermostattimeconstantbomd_12',['thermostatTimeConstantBOMD',['../classdftfe_1_1dft_parameters.html#a5a023d54f4b97002a7c777509cc460c1',1,'dftfe::dftParameters']]], + ['this_5fmpi_5fprocess_13',['this_mpi_process',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a6795bd86340932e093734407d7fbb380',1,'dftfe::cgPRPNonLinearSolver::this_mpi_process'],['../classdftfe_1_1dealii_linear_solver.html#aa74cf02cb97cbd6e16b30f614570c594',1,'dftfe::dealiiLinearSolver::this_mpi_process'],['../classdftfe_1_1dft_class.html#ae96dd08c6eb726f53ed6a7d58e9125be',1,'dftfe::dftClass::this_mpi_process'],['../classdftfe_1_1force_class.html#a44d2837f1e5f4fb39f29ac82c43d31ed',1,'dftfe::forceClass::this_mpi_process'],['../classdftfe_1_1geo_opt_cell.html#af6650f4b024049748d224b01f68e0166',1,'dftfe::geoOptCell::this_mpi_process'],['../classdftfe_1_1geo_opt_ion.html#a682487493133d34d190405fd6fc7630c',1,'dftfe::geoOptIon::this_mpi_process'],['../classdftfe_1_1kerker_solver_problem.html#abe4425e156034c37dfa830d692840265',1,'dftfe::kerkerSolverProblem::this_mpi_process'],['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a0f6163c24043b2bd3db70e8172bac510',1,'dftfe::KohnShamHamiltonianOperator::this_mpi_process'],['../classdftfe_1_1mesh_movement_class.html#a3656cf4f689d2025fd4c5dbc8da87a7e',1,'dftfe::meshMovementClass::this_mpi_process'],['../classdftfe_1_1poisson_solver_problem.html#af3b44da31ac6d0225db855250722c92a',1,'dftfe::poissonSolverProblem::this_mpi_process'],['../classdftfe_1_1_process_grid.html#af9a5841fc68f1977ce209095726d5e06',1,'dftfe::ProcessGrid::this_mpi_process'],['../classdftfe_1_1symmetry_class.html#af63a8a4d81770793af41defa7a8b74e2',1,'dftfe::symmetryClass::this_mpi_process'],['../classdftfe_1_1triangulation_manager.html#a58a4dc9645a643fc91f99882e12e9692',1,'dftfe::triangulationManager::this_mpi_process'],['../classdftfe_1_1vself_bins_manager.html#af41dd68b7d4bda12037b4bd652e4af19',1,'dftfe::vselfBinsManager::this_mpi_process']]], + ['this_5fprocess_5fcolumn_14',['this_process_column',['../classdftfe_1_1_process_grid.html#a332830e158b698289d1ced6f97cb212f',1,'dftfe::ProcessGrid']]], + ['this_5fprocess_5frow_15',['this_process_row',['../classdftfe_1_1_process_grid.html#a3e1a43e08f7254b408e008fb39e0a352',1,'dftfe::ProcessGrid']]], + ['thisprocessid_16',['thisProcessId',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a2c31fb840cc600d3bceeacb368869b5c',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['throwexception_17',['throwException',['../namespacedftfe_1_1utils.html#a1e850c2ac1993e0c5b5677ecb4a49cd2',1,'dftfe::utils::throwException(bool condition, std::string msg="")'],['../namespacedftfe_1_1utils.html#ac54eca2707f27846f6964e10d603688e',1,'dftfe::utils::throwException(bool condition, std::string msg="")']]], + ['timereversal_18',['timeReversal',['../classdftfe_1_1dft_parameters.html#ad892483cedcc119fae135e785869beb0',1,'dftfe::dftParameters']]], + ['timestepbomd_19',['timeStepBOMD',['../classdftfe_1_1dft_parameters.html#a606916170785aa3470a84322100be401',1,'dftfe::dftParameters']]], + ['tmmult_20',['Tmmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a6f9a582f73de96239b2ffa4ead2934cd',1,'dftfe::ScaLAPACKMatrix']]], + ['tmtmult_21',['TmTmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#aac663b0fe6a673b3fef08226fdd24d9b',1,'dftfe::ScaLAPACKMatrix']]], + ['to_20dft_20fe_22',['Contributing to DFT-FE',['../index.html#autotoc_md3',1,'']]], + ['tolerancekinetic_23',['toleranceKinetic',['../classdftfe_1_1dft_parameters.html#ad848edfd3de5ed1e1890565fd2d79663',1,'dftfe::dftParameters']]], + ['topfrac_24',['topfrac',['../classdftfe_1_1dft_parameters.html#a6bf721c3fe4e6bcfad460e6eabd99cfe',1,'dftfe::dftParameters']]], + ['totalcharge_25',['totalCharge',['../classdftfe_1_1dft_class.html#aa6cd3e25aadba469e06f1c48f436d33a',1,'dftfe::dftClass::totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const distributedCPUVec< double > &rhoNodalField)'],['../classdftfe_1_1dft_class.html#a4898cf7ada220657c49787b354195d1b',1,'dftfe::dftClass::totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const std::map< dealii::CellId, std::vector< double > > *rhoQuadValues)'],['../classdftfe_1_1dft_class.html#a216a212b614055c667e1abab31655bc1',1,'dftfe::dftClass::totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoQuadValues)'],['../classdftfe_1_1dft_class.html#a6359281a53ca834231d91c5a64666e4f',1,'dftfe::dftClass::totalCharge(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField)']]], + ['totalimages_26',['TotalImages',['../classdftfe_1_1dft_parameters.html#af0da06ffc63762055c41b44342424622',1,'dftfe::dftParameters']]], + ['totalmagnetization_27',['totalMagnetization',['../classdftfe_1_1dft_class.html#aa09751f6845b52d425bdbe757f1087f8',1,'dftfe::dftClass']]], + ['totpoints_28',['totPoints',['../classdftfe_1_1symmetry_class.html#ad99163d42de55e3611d84bc6c82fa3b4',1,'dftfe::symmetryClass']]], + ['transform_29',['transform',['../classdftfe_1_1mesh_movement_affine_transform.html#a6385bbaa67561110576ecf617d59a05d',1,'dftfe::meshMovementAffineTransform']]], + ['transformdomainboundingvectors_30',['transformDomainBoundingVectors',['../namespacedftfe_1_1dft_utils.html#a1f7afbc91240286b736b7d5b8b44114c',1,'dftfe::dftUtils']]], + ['translation_31',['translation',['../classdftfe_1_1symmetry_class.html#a0bf8137b0bf69eacd60417cc53a3f83e',1,'dftfe::symmetryClass']]], + ['triangulationmanager_32',['triangulationManager',['../classdftfe_1_1triangulation_manager.html',1,'dftfe::triangulationManager'],['../classdftfe_1_1triangulation_manager.html#a17674b06487db0d720498947732c0f18',1,'dftfe::triangulationManager::triangulationManager()']]], + ['triangulationmanager_2eh_33',['triangulationManager.h',['../triangulation_manager_8h.html',1,'']]], + ['trivialsolveforstress_34',['trivialSolveForStress',['../classdftfe_1_1dft_class.html#a44940d629d757b238a3aaf2e90cb4f5f',1,'dftfe::dftClass::trivialSolveForStress()'],['../classdftfe_1_1dft_base.html#ab876a152d60a2dcd491f5f308226d947',1,'dftfe::dftBase::trivialSolveForStress()']]], + ['tval_35',['TVal',['../classdftfe_1_1dft_parameters.html#a7cc2b83e99ac1faecfa02ce8bea846ff',1,'dftfe::dftParameters']]], + ['type_36',['type',['../structdftfe_1_1utils_1_1mpi_1_1single_prec_type.html#af79fe06043bf2ed35c5247aaa08ac6e9',1,'dftfe::utils::mpi::singlePrecType::type'],['../structdftfe_1_1utils_1_1mpi_1_1single_prec_type_3_01double_01_4.html#ae2089ac87f5ca9db30d8cb33269f3436',1,'dftfe::utils::mpi::singlePrecType< double >::type'],['../structdftfe_1_1utils_1_1mpi_1_1single_prec_type_3_01std_1_1complex_3_01double_01_4_01_4.html#aff11997afb9bfdfa7aa46b73ed9bf757',1,'dftfe::utils::mpi::singlePrecType< std::complex< double > >::type']]], + ['typeconfig_2eh_37',['TypeConfig.h',['../_type_config_8h.html',1,'']]] +]; diff --git a/search/all_15.js b/search/all_15.js new file mode 100644 index 000000000..ce346a2fe --- /dev/null +++ b/search/all_15.js @@ -0,0 +1,49 @@ +var searchData= +[ + ['u_0',['U',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a3442c760d6e88e14ba44ddf6e253a0fc',1,'dftfe::LAPACKSupport']]], + ['underflowerror_1',['UnderflowError',['../namespacedftfe_1_1utils.html#a5eb1a1242f3b893582a11d8cc2913422',1,'dftfe::utils']]], + ['unsubscribe_2',['unsubscribe',['../classdftfe_1_1dealii_linear_solver_problem.html#a2adfa6e44f7621deee1024fd19d43cc6',1,'dftfe::dealiiLinearSolverProblem::unsubscribe()'],['../classdftfe_1_1kerker_solver_problem.html#afc73ee344193c5b99b52b344b2a8b1dc',1,'dftfe::kerkerSolverProblem::unsubscribe()'],['../classdftfe_1_1poisson_solver_problem.html#aac807806fb5ed86456b47b8b2898a729',1,'dftfe::poissonSolverProblem::unsubscribe()']]], + ['unusable_3',['unusable',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06a73076b6e7d4e1526cddaa7423b108080',1,'dftfe::LAPACKSupport']]], + ['update_4',['update',['../classdftfe_1_1geo_opt_cell.html#af2cf10b9c50558d82db94539ec927383',1,'dftfe::geoOptCell::update()'],['../classdftfe_1_1geo_opt_ion.html#ac3241159eaff329289b6f0a78d84ebde',1,'dftfe::geoOptIon::update()'],['../classdftfe_1_1nonlinear_solver_problem.html#a81ca4f3595908a92b64750edcd6b1068',1,'dftfe::nonlinearSolverProblem::update()'],['../classdftfe_1_1nudged_elastic_band_class.html#a6d2d620d1855c1bf06764c5999e24823',1,'dftfe::nudgedElasticBandClass::update()']]], + ['update_5fdefault_5',['update_default',['../namespacedftfe_1_1basis.html#a59b594d5c0c4deefb65e504b45207898af4af425a714895abadf66ecf04c5c1a0',1,'dftfe::basis']]], + ['update_5fgradients_6',['update_gradients',['../namespacedftfe_1_1basis.html#a59b594d5c0c4deefb65e504b45207898aff140305bf0ad0a32a592251cd5799c5',1,'dftfe::basis']]], + ['update_5finversejacobians_7',['update_inversejacobians',['../namespacedftfe_1_1basis.html#a59b594d5c0c4deefb65e504b45207898ac84d0cdf144a28bc6d7c753a4264ea49',1,'dftfe::basis']]], + ['update_5fjxw_8',['update_jxw',['../namespacedftfe_1_1basis.html#a59b594d5c0c4deefb65e504b45207898aee5ee7a0292e2d74dca40a7df4d79002',1,'dftfe::basis']]], + ['update_5fquadpoints_9',['update_quadpoints',['../namespacedftfe_1_1basis.html#a59b594d5c0c4deefb65e504b45207898a54200e0d4b3813bf7d51fa7e40d99d9b',1,'dftfe::basis']]], + ['update_5ftranspose_10',['update_transpose',['../namespacedftfe_1_1basis.html#a59b594d5c0c4deefb65e504b45207898aa5dfe1fc7ae4c74d7cf29a46cf9dd752',1,'dftfe::basis']]], + ['update_5fvalues_11',['update_values',['../namespacedftfe_1_1basis.html#a59b594d5c0c4deefb65e504b45207898a095fedfd2ca7d7f5e9a7763b85034463',1,'dftfe::basis']]], + ['updateatompositions_12',['updateAtomPositions',['../classdftfe_1_1dftfe_wrapper.html#a26c0c96d12c27974a83df8ef07f79c57',1,'dftfe::dftfeWrapper']]], + ['updateatompositionsandmovemesh_13',['updateAtomPositionsAndMoveMesh',['../classdftfe_1_1dft_class.html#a3d22fd6c8d30e469545ed8ad23b96554',1,'dftfe::dftClass::updateAtomPositionsAndMoveMesh()'],['../classdftfe_1_1dft_base.html#a141f823163a2e85369902c4b9dd67b1a',1,'dftfe::dftBase::updateAtomPositionsAndMoveMesh()']]], + ['updatebinsbc_14',['updateBinsBc',['../classdftfe_1_1vself_bins_manager.html#ae1227aa5898f520d3551197a986830ec',1,'dftfe::vselfBinsManager']]], + ['updatedirection_15',['updateDirection',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#ab7a2a4652b7421c2e990c6949de40ba5',1,'dftfe::cgPRPNonLinearSolver']]], + ['updateflags_16',['UpdateFlags',['../namespacedftfe_1_1basis.html#a59b594d5c0c4deefb65e504b45207898',1,'dftfe::basis']]], + ['updateghostvalues_17',['updateGhostValues',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#af58c204da503454f522e84a50cb36298',1,'dftfe::utils::mpi::MPICommunicatorP2P::updateGhostValues()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ab399344072370e4a44f9f10d3ad86078',1,'dftfe::linearAlgebra::MultiVector::updateGhostValues()']]], + ['updateghostvaluesbegin_18',['updateGhostValuesBegin',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a7b196d90bc4055d62ea776ca92405d61',1,'dftfe::utils::mpi::MPICommunicatorP2P::updateGhostValuesBegin()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a15b81174350826d4fb17daa2d647b283',1,'dftfe::linearAlgebra::MultiVector::updateGhostValuesBegin()']]], + ['updateghostvaluesend_19',['updateGhostValuesEnd',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#ad94b8d8494b97a202315dfb6cb5cf2da',1,'dftfe::utils::mpi::MPICommunicatorP2P::updateGhostValuesEnd()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ab4f724ffa1de3a529952337d29b52a4c',1,'dftfe::linearAlgebra::MultiVector::updateGhostValuesEnd()']]], + ['updatehessian_20',['updateHessian',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#ab93ec934e140490c13187f971e9ccab6',1,'dftfe::BFGSNonLinearSolver']]], + ['updatehistory_21',['updateHistory',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a2c934cdf608b9ddb6be3a6cacc9c61bf',1,'dftfe::LBFGSNonLinearSolver']]], + ['updateprefinedconstraints_22',['updatePRefinedConstraints',['../classdftfe_1_1dft_class.html#a61c479407cab991f2a711b5c0347e868',1,'dftfe::dftClass']]], + ['updatesolution_23',['updateSolution',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a315d10d82309b48b1ad0ac3511bb42c7',1,'dftfe::BFGSNonLinearSolver::updateSolution()'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#ad10d1d9390073a7ad836f7a3dc9b24dc',1,'dftfe::cgPRPNonLinearSolver::updateSolution()'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#add50753c3cdc48bd5142d2130d1e109c',1,'dftfe::LBFGSNonLinearSolver::updateSolution()']]], + ['updatetriangulationvertices_24',['updateTriangulationVertices',['../classdftfe_1_1mesh_movement_class.html#a392861a690db2ee6bf4e35163f8a9593',1,'dftfe::meshMovementClass']]], + ['updatewavefunctiondependentvxc_25',['updateWaveFunctionDependentVxc',['../classdftfe_1_1exc_wavefunction_base_class.html#a8a585768d28efc491d74ea4824d7d989',1,'dftfe::excWavefunctionBaseClass::updateWaveFunctionDependentVxc()'],['../classdftfe_1_1exc_wavefunction_none_class.html#aa2166320920b4fb3387f69a63df979a8',1,'dftfe::excWavefunctionNoneClass::updateWaveFunctionDependentVxc()']]], + ['uplo_26',['uplo',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ad47f6241046a290b56afe3015f68d562',1,'dftfe::ScaLAPACKMatrix']]], + ['upper_5ftriangular_27',['upper_triangular',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#af3c45dcea64890f047b4dca87fdde9acab99738c18bb979ff47b22d1cac0d0727',1,'dftfe::LAPACKSupport']]], + ['usedccl_28',['useDCCL',['../classdftfe_1_1dft_parameters.html#a341353c0f29e842541c36d37736bfbcb',1,'dftfe::dftParameters']]], + ['usedensitymatrixperturbationrankupdates_29',['useDensityMatrixPerturbationRankUpdates',['../classdftfe_1_1dft_parameters.html#abafa118ebce2caee310f26902b548a83',1,'dftfe::dftParameters']]], + ['usedevice_30',['useDevice',['../classdftfe_1_1dft_parameters.html#abedadd43c574cee4d2a731659ecd1b8d',1,'dftfe::dftParameters::useDevice'],['../classdftfe_1_1run_parameters.html#a7279888ba717ef9d7cd68f0c45f3bfc0',1,'dftfe::runParameters::useDevice']]], + ['usedevicedirectallreduce_31',['useDeviceDirectAllReduce',['../classdftfe_1_1dft_parameters.html#a0a584f99f20df9cd76aeb2b718652bcd',1,'dftfe::dftParameters']]], + ['useelpa_32',['useELPA',['../classdftfe_1_1dft_parameters.html#a7f58747474f485c64f6793550b0ddcb3',1,'dftfe::dftParameters']]], + ['useelpadevicekernel_33',['useELPADeviceKernel',['../classdftfe_1_1dft_parameters.html#ad91b4178dfc161875564aff8d47a2b9b',1,'dftfe::dftParameters']]], + ['useflattopgenerator_34',['useFlatTopGenerator',['../classdftfe_1_1dft_parameters.html#adb98f25931bbaf8de75083dc2e6f7b33',1,'dftfe::dftParameters']]], + ['usemeshsizesfromatomsfile_35',['useMeshSizesFromAtomsFile',['../classdftfe_1_1dft_parameters.html#aa36dcdd671fb3cf8b09c088cc74fa65c',1,'dftfe::dftParameters']]], + ['usemixedpreccgs_5fo_36',['useMixedPrecCGS_O',['../classdftfe_1_1dft_parameters.html#aaf58230e59c5d155c0a4d841e768f44c',1,'dftfe::dftParameters']]], + ['usemixedpreccgs_5fsr_37',['useMixedPrecCGS_SR',['../classdftfe_1_1dft_parameters.html#aea8caf1c9c7ede3402edd1ee12ad1436',1,'dftfe::dftParameters']]], + ['usemixedpreccheby_38',['useMixedPrecCheby',['../classdftfe_1_1dft_parameters.html#a4709454ee314715801c9abe2def8a908',1,'dftfe::dftParameters']]], + ['usemixedpreccommunonlyxthxcgso_39',['useMixedPrecCommunOnlyXTHXCGSO',['../classdftfe_1_1dft_parameters.html#ac12986180a7830b5cc1d21644c0cd571',1,'dftfe::dftParameters']]], + ['usemixedprecsubspacerotrr_40',['useMixedPrecSubspaceRotRR',['../classdftfe_1_1dft_parameters.html#adaa5ba04d6ae96ab175927b1eb46c60f',1,'dftfe::dftParameters']]], + ['usemixedprecxthxspectrumsplit_41',['useMixedPrecXTHXSpectrumSplit',['../classdftfe_1_1dft_parameters.html#a87b8f0d35e69e5bb6d332015b2b2957f',1,'dftfe::dftParameters']]], + ['usepreconditioner_42',['usePreconditioner',['../classdftfe_1_1dft_parameters.html#a16e64002ad1c6a69535013f37d5a0a15',1,'dftfe::dftParameters']]], + ['usesubspaceprojectedshepgpu_43',['useSubspaceProjectedSHEPGPU',['../classdftfe_1_1dft_parameters.html#a48ba12508568fe9092b7f7d00951e909',1,'dftfe::dftParameters']]], + ['usesymm_44',['useSymm',['../classdftfe_1_1dft_parameters.html#a87d3c90c6a7deaec4e6a21e2bcfb2d03',1,'dftfe::dftParameters']]], + ['usetf32device_45',['useTF32Device',['../classdftfe_1_1dft_parameters.html#a4d830662ad7a66be172a0a7ea1aaf87e',1,'dftfe::dftParameters']]] +]; diff --git a/search/all_16.js b/search/all_16.js new file mode 100644 index 000000000..879b572ea --- /dev/null +++ b/search/all_16.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['v_0',['V',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a237a7c9ba09c079dac9f927ffb3106ce',1,'dftfe::LAPACKSupport']]], + ['value_1',['value',['../classdftfe_1_1geo_opt_cell.html#a4c8bab0fb3292edf21e95b2f98ce6666',1,'dftfe::geoOptCell::value()'],['../classdftfe_1_1geo_opt_ion.html#afdee89ce7340c9c604658b85a8ccf2d2',1,'dftfe::geoOptIon::value()'],['../classdftfe_1_1nonlinear_solver_problem.html#a3448d983593e8e98ee594e4285f1f465',1,'dftfe::nonlinearSolverProblem::value()'],['../classdftfe_1_1nudged_elastic_band_class.html#a4ff4c252d4769546fe6a23bd8f83880d',1,'dftfe::nudgedElasticBandClass::value()']]], + ['value_5ftype_2',['value_type',['../classdftfe_1_1utils_1_1_memory_storage.html#a97c178a2da2ff077b51f84b5fbf33003',1,'dftfe::utils::MemoryStorage::value_type'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#adf02402cff1443685e5843f22b97b1d5',1,'dftfe::linearAlgebra::MultiVector::value_type']]], + ['values_3',['values',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a17d00924f0fcea84daf1de84d669654f',1,'dftfe::ScaLAPACKMatrix::values'],['../namespacedftfe.html#aca06a56192ad7c2be3b45fbddef239a7af09cc7ee3a9a93273f4b80601cafb00c',1,'dftfe::values']]], + ['vectorutilities_2eh_4',['vectorUtilities.h',['../vector_utilities_8h.html',1,'']]], + ['veffoutputdataattributes_5',['VeffOutputDataAttributes',['../namespacedftfe.html#a1cf71a04b97ce9006b74b518c985238e',1,'dftfe']]], + ['velocityverlet_6',['velocityVerlet',['../classdftfe_1_1molecular_dynamics_class.html#a055c38d818be180209967c1f3ac74050',1,'dftfe::molecularDynamicsClass']]], + ['verbosity_7',['verbosity',['../classdftfe_1_1dft_parameters.html#ac51c7e1ce7b785fcf261f89928c03162',1,'dftfe::dftParameters::verbosity'],['../classdftfe_1_1run_parameters.html#ab314512c525e384fc68e75d9346faaa4',1,'dftfe::runParameters::verbosity']]], + ['verifycheckpointfileexists_8',['verifyCheckpointFileExists',['../namespacedftfe_1_1dft_utils.html#afbe78d7b628af457584ee707df366389',1,'dftfe::dftUtils']]], + ['vmult_9',['vmult',['../classdftfe_1_1dealii_linear_solver_problem.html#a03582fba7da4265a5f0e7352b65e5f6a',1,'dftfe::dealiiLinearSolverProblem::vmult()'],['../classdftfe_1_1kerker_solver_problem.html#a06bf14022e33615f5110a837d2660089',1,'dftfe::kerkerSolverProblem::vmult()'],['../classdftfe_1_1poisson_solver_problem.html#aa2752779731f4902b07ec96fa4b941e9',1,'dftfe::poissonSolverProblem::vmult()']]], + ['vselfbinsmanager_10',['vselfBinsManager',['../classdftfe_1_1vself_bins_manager.html',1,'dftfe::vselfBinsManager< FEOrder, FEOrderElectro >'],['../classdftfe_1_1vself_bins_manager.html#ac1d6f042d3dc7994a99ee3ef3bdfb7b9',1,'dftfe::vselfBinsManager::vselfBinsManager()']]], + ['vselfbinsmanager_2eh_11',['vselfBinsManager.h',['../vself_bins_manager_8h.html',1,'']]], + ['vselfgpu_12',['vselfGPU',['../classdftfe_1_1dft_parameters.html#a28b2f9d1a812653fb910c48541270902',1,'dftfe::dftParameters']]] +]; diff --git a/search/all_17.js b/search/all_17.js new file mode 100644 index 000000000..06cb9f5f9 --- /dev/null +++ b/search/all_17.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['wavefunctionfamilytype_0',['wavefunctionFamilyType',['../namespacedftfe.html#aec9f58557c36d1bd23430bc23568c800',1,'dftfe']]], + ['wavefunctionsvector_1',['waveFunctionsVector',['../classdftfe_1_1dft_class.html#a62829693307a8f5f028a3f70fc52d6ba',1,'dftfe::dftClass']]], + ['wfcblocksize_2',['wfcBlockSize',['../classdftfe_1_1dft_parameters.html#a5a10ed5eb0e0459582765f71b60a8754',1,'dftfe::dftParameters']]], + ['wfccontractionsforcekernelsallh_3',['wfcContractionsForceKernelsAllH',['../namespacedftfe_1_1force.html#a294d942d6dd7f9cc3b96a52ca8a2cf22',1,'dftfe::force']]], + ['with_20finite_20elements_4',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['work_5',['work',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a09defcc09c77964515a883863d4db5d2',1,'dftfe::ScaLAPACKMatrix']]], + ['writebands_6',['writeBands',['../classdftfe_1_1dft_class.html#adadb52f82725a15c06a575cf7630c9e9',1,'dftfe::dftClass']]], + ['writebandsfile_7',['writeBandsFile',['../classdftfe_1_1dft_parameters.html#a8152a9ea257c85fcfc108cd05403eb54',1,'dftfe::dftParameters']]], + ['writedata_8',['writeData',['../classdftfe_1_1dft_utils_1_1_m_p_i_write_on_file.html#a6ae19a4cb6c3303caf0a22caeed07e2e',1,'dftfe::dftUtils::MPIWriteOnFile']]], + ['writedataintofile_9',['writeDataIntoFile',['../namespacedftfe_1_1dft_utils.html#ab7d8213bb53782772df6daaaddcc3fc5',1,'dftfe::dftUtils::writeDataIntoFile(const std::vector< std::vector< double > > &data, const std::string &fileName, const MPI_Comm &mpi_comm_parent)'],['../namespacedftfe_1_1dft_utils.html#a9ba81968d244114bab6bbaccbe64bdfd',1,'dftfe::dftUtils::writeDataIntoFile(const std::vector< std::vector< double > > &data, const std::string &fileName)']]], + ['writedatavtuparallellowestpoolid_10',['writeDataVTUParallelLowestPoolId',['../namespacedftfe_1_1dft_utils.html#ab2d0c7684eb485e417ddfb8a1c945836',1,'dftfe::dftUtils']]], + ['writedensityquaddata_11',['writeDensityQuadData',['../classdftfe_1_1dft_parameters.html#afb5c7bf291da1511e7c78a877a14bf4c',1,'dftfe::dftParameters']]], + ['writedensitysolutionfields_12',['writeDensitySolutionFields',['../classdftfe_1_1dft_parameters.html#a9dd1b3d5cdf5735f88d0f197e952af6d',1,'dftfe::dftParameters']]], + ['writedomainandatomcoordinates_13',['writeDomainAndAtomCoordinates',['../classdftfe_1_1dft_class.html#a3918d3472b084f92f7dd8735461a0daa',1,'dftfe::dftClass::writeDomainAndAtomCoordinates()'],['../classdftfe_1_1dft_class.html#a21182a87d79cef7d6100bde2bf9c436e',1,'dftfe::dftClass::writeDomainAndAtomCoordinates(const std::string Path) const'],['../classdftfe_1_1dft_base.html#a73d4175a99cc0ab5375bc71e46aea450',1,'dftfe::dftBase::writeDomainAndAtomCoordinates()=0'],['../classdftfe_1_1dft_base.html#ac7b6118827a36904146178af3426c3ef',1,'dftfe::dftBase::writeDomainAndAtomCoordinates(const std::string Path) const =0'],['../classdftfe_1_1dftfe_wrapper.html#ace395ea4730e404be8549f8b47108692',1,'dftfe::dftfeWrapper::writeDomainAndAtomCoordinates()']]], + ['writedosfile_14',['writeDosFile',['../classdftfe_1_1dft_parameters.html#a1cf5c739efa2668b8d1a2805b028e01b',1,'dftfe::dftParameters']]], + ['writegselectrondensity_15',['writeGSElectronDensity',['../classdftfe_1_1dft_class.html#ae05e3d3e395a0c7195a408905abd5b30',1,'dftfe::dftClass::writeGSElectronDensity()'],['../classdftfe_1_1dft_base.html#a81e929d95a1e7eef56246ccb57fe7ceb',1,'dftfe::dftBase::writeGSElectronDensity()']]], + ['writeldosfile_16',['writeLdosFile',['../classdftfe_1_1dft_parameters.html#ab9aa148f1f1052e7bc7583363296d8ce',1,'dftfe::dftParameters']]], + ['writelocalizationlengths_17',['writeLocalizationLengths',['../classdftfe_1_1dft_parameters.html#a53245e5390e98162efec089c9e1f2ea5',1,'dftfe::dftParameters']]], + ['writemesh_18',['writeMesh',['../classdftfe_1_1dft_class.html#a12b4792692756f063516c270ff340192',1,'dftfe::dftClass::writeMesh()'],['../classdftfe_1_1dft_class.html#a535298615877f8f3adcae606b7f2b602',1,'dftfe::dftClass::writeMesh(std::string meshFileName)'],['../classdftfe_1_1dft_base.html#addd8918b0a2b31a20979686ab946375e',1,'dftfe::dftBase::writeMesh()'],['../classdftfe_1_1dftfe_wrapper.html#a53ae029e8da83f2e19620ef26f94e58b',1,'dftfe::dftfeWrapper::writeMesh()'],['../classdftfe_1_1geo_opt_cell.html#ae033e40f4a9baf62f194329e87b43e21',1,'dftfe::geoOptCell::writeMesh()']]], + ['writepdosfile_19',['writePdosFile',['../classdftfe_1_1dft_parameters.html#a19ce296acdd83e90d39fad7b1d652416',1,'dftfe::dftParameters']]], + ['writerestartfile_20',['writeRestartFile',['../classdftfe_1_1molecular_dynamics_class.html#a5190cef17b529388a3f78d103c1725c3',1,'dftfe::molecularDynamicsClass']]], + ['writerestartfiles_21',['WriteRestartFiles',['../classdftfe_1_1nudged_elastic_band_class.html#a32ca91d23647f1f9cb204ec424249666',1,'dftfe::nudgedElasticBandClass']]], + ['writerestartnhcfile_22',['writeRestartNHCfile',['../classdftfe_1_1molecular_dynamics_class.html#ab55628281f9424ac22d9bc8d66934d2b',1,'dftfe::molecularDynamicsClass']]], + ['writestructreenergyforcesfileforpostprocess_23',['writeStructreEnergyForcesFileForPostProcess',['../classdftfe_1_1dft_parameters.html#a9ede5a4bc015130016910db984c04776',1,'dftfe::dftParameters']]], + ['writestructureenergyforcesdatapostprocess_24',['writeStructureEnergyForcesDataPostProcess',['../classdftfe_1_1dft_class.html#a2963e94fb9ac07e2dc10782c0a2223b3',1,'dftfe::dftClass::writeStructureEnergyForcesDataPostProcess()'],['../classdftfe_1_1dft_base.html#aba7ac87ecba1851b2f38bd313c14b8dc',1,'dftfe::dftBase::writeStructureEnergyForcesDataPostProcess()']]], + ['writetotaldisplacementfile_25',['writeTotalDisplacementFile',['../classdftfe_1_1molecular_dynamics_class.html#a0b01a063127c2986f9eea12b6ce707d0',1,'dftfe::molecularDynamicsClass']]], + ['writewfcsolutionfields_26',['writeWfcSolutionFields',['../classdftfe_1_1dft_parameters.html#afcb13680c1238192eeb7684321b44770',1,'dftfe::dftParameters']]] +]; diff --git a/search/all_18.js b/search/all_18.js new file mode 100644 index 000000000..7ba586387 --- /dev/null +++ b/search/all_18.js @@ -0,0 +1,28 @@ +var searchData= +[ + ['xaxpy_0',['xaxpy',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#aaa04524c2ad4501b3986c17737bc6852',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xaxpy(const unsigned int n, const double *alpha, const double *x, const unsigned int incx, double *y, const unsigned int incy) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a15812023a16467b0dba46d0e1af75377',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xaxpy(const unsigned int n, const std::complex< double > *alpha, const std::complex< double > *x, const unsigned int incx, std::complex< double > *y, const unsigned int incy) const']]], + ['xc_5fid_1',['xc_id',['../classdftfe_1_1dft_parameters.html#ae31688817ffb5b5dfb9ff5baa6587af7',1,'dftfe::dftParameters']]], + ['xcopy_2',['xcopy',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a32133d48e20a6be740e93816cc5c7a26',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xcopy(const unsigned int n, const double *x, const unsigned int incx, double *y, const unsigned int incy) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a65635da5382de6307612acb1e8776a33',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xcopy(const unsigned int n, const std::complex< double > *x, const unsigned int incx, std::complex< double > *y, const unsigned int incy) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#aee9c0d4bb0d7bc7ab2c814a63a7f3dcf',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xcopy(const unsigned int n, const float *x, const unsigned int incx, float *y, const unsigned int incy) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a7f58797ff65e87c032e63a60bee1a7eb',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xcopy(const unsigned int n, const std::complex< float > *x, const unsigned int incx, std::complex< float > *y, const unsigned int incy) const'],['../namespacedftfe.html#a0d322b954a8fb2c1281080253b7a82d2',1,'dftfe::xcopy(const unsigned int *n, const double *x, const unsigned int *incx, double *y, const unsigned int *incy)'],['../namespacedftfe.html#a4b20c20260a74738a998d138a073c159',1,'dftfe::xcopy(const unsigned int *n, const std::complex< double > *x, const unsigned int *incx, std::complex< double > *y, const unsigned int *incy)']]], + ['xdot_3',['xdot',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#aa8da547405625bda32add79f9ec7c0f9',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xdot(const unsigned int N, const double *X, const unsigned int INCX, const double *Y, const unsigned int INCY, double *result) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a3e18b8b504dc3aac3ab66b5f70648d7c',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xdot(const unsigned int N, const double *X, const unsigned int INCX, const double *Y, const unsigned int INCY, const MPI_Comm &mpi_communicator, double *result) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a5412caefd4823e7bf8d8fedf1b9e40ea',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xdot(const unsigned int N, const std::complex< double > *X, const unsigned int INCX, const std::complex< double > *Y, const unsigned int INCY, std::complex< double > *result) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a0f4db4a3e9c01364b6e09e5b2a108480',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xdot(const unsigned int N, const std::complex< double > *X, const unsigned int INCX, const std::complex< double > *Y, const unsigned int INCY, const MPI_Comm &mpi_communicator, std::complex< double > *result) const']]], + ['xgemm_4',['xgemm',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#aaaa5d342f964de874f7d8d141ec78717',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemm(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const float *alpha, const float *A, const unsigned int lda, const float *B, const unsigned int ldb, const float *beta, float *C, const unsigned int ldc) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a45ca0c2171da0e267cac7dc809169942',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemm(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< float > *alpha, const std::complex< float > *A, const unsigned int lda, const std::complex< float > *B, const unsigned int ldb, const std::complex< float > *beta, std::complex< float > *C, const unsigned int ldc) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a14c01d7bffb6d5700fbd0efea98a1ee8',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemm(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const double *alpha, const double *A, const unsigned int lda, const double *B, const unsigned int ldb, const double *beta, double *C, const unsigned int ldc) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#ad88c2fa3b749605b354c4a2658e963af',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemm(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< double > *alpha, const std::complex< double > *A, const unsigned int lda, const std::complex< double > *B, const unsigned int ldb, const std::complex< double > *beta, std::complex< double > *C, const unsigned int ldc) const'],['../namespacedftfe.html#a828f84688b0712b000dc44a95959d8e1',1,'dftfe::xgemm(const char *transA, const char *transB, const unsigned int *m, const unsigned int *n, const unsigned int *k, const double *alpha, const double *A, const unsigned int *lda, const double *B, const unsigned int *ldb, const double *beta, double *C, const unsigned int *ldc)'],['../namespacedftfe.html#a2dadfd9db8344c3f3678dec16f847ac1',1,'dftfe::xgemm(const char *transA, const char *transB, const unsigned int *m, const unsigned int *n, const unsigned int *k, const float *alpha, const float *A, const unsigned int *lda, const float *B, const unsigned int *ldb, const float *beta, float *C, const unsigned int *ldc)'],['../namespacedftfe.html#aa8e18f003e5d8812e4010339fff58b2f',1,'dftfe::xgemm(const char *transA, const char *transB, const unsigned int *m, const unsigned int *n, const unsigned int *k, const std::complex< double > *alpha, const std::complex< double > *A, const unsigned int *lda, const std::complex< double > *B, const unsigned int *ldb, const std::complex< double > *beta, std::complex< double > *C, const unsigned int *ldc)'],['../namespacedftfe.html#aef71ffd789e0a80b219b0a56927b135a',1,'dftfe::xgemm(const char *transA, const char *transB, const unsigned int *m, const unsigned int *n, const unsigned int *k, const std::complex< float > *alpha, const std::complex< float > *A, const unsigned int *lda, const std::complex< float > *B, const unsigned int *ldb, const std::complex< float > *beta, std::complex< float > *C, const unsigned int *ldc)']]], + ['xgemmbatched_5',['xgemmBatched',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a77e2597e311f16648370478009e2bfd6',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const double *alpha, const double *A[], const unsigned int lda, const double *B[], const unsigned int ldb, const double *beta, double *C[], const unsigned int ldc, const int batchCount) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#ac52a2d8a0ebe05b612433aa25af4e3ef',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< double > *alpha, const std::complex< double > *A[], const unsigned int lda, const std::complex< double > *B[], const unsigned int ldb, const std::complex< double > *beta, std::complex< double > *C[], const unsigned int ldc, const int batchCount) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#ae5c8331067dd669013be2bb600f4ccd4',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const float *alpha, const float *A[], const unsigned int lda, const float *B[], const unsigned int ldb, const float *beta, float *C[], const unsigned int ldc, const int batchCount) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a6eb406a2db22241ce98f7d026a40996a',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< float > *alpha, const std::complex< float > *A[], const unsigned int lda, const std::complex< float > *B[], const unsigned int ldb, const std::complex< float > *beta, std::complex< float > *C[], const unsigned int ldc, const int batchCount) const']]], + ['xgemmstridedbatched_6',['xgemmStridedBatched',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a28ab57e0bccafc4fcfab2c08a3755c85',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmStridedBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const double *alpha, const double *A, const unsigned int lda, long long int strideA, const double *B, const unsigned int ldb, long long int strideB, const double *beta, double *C, const unsigned int ldc, long long int strideC, const int batchCount) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a44b7839a93d68dc27dd1ccfe3b0dca0e',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmStridedBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< double > *alpha, const std::complex< double > *A, const unsigned int lda, long long int strideA, const std::complex< double > *B, const unsigned int ldb, long long int strideB, const std::complex< double > *beta, std::complex< double > *C, const unsigned int ldc, long long int strideC, const int batchCount) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a7c3d815ef554733ff006d8cc0109c9b8',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmStridedBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< float > *alpha, const std::complex< float > *A, const unsigned int lda, long long int strideA, const std::complex< float > *B, const unsigned int ldb, long long int strideB, const std::complex< float > *beta, std::complex< float > *C, const unsigned int ldc, long long int strideC, const int batchCount) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a51edff5dcfb7f70540e52169ef0e2642',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmStridedBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const float *alpha, const float *A, const unsigned int lda, long long int strideA, const float *B, const unsigned int ldb, long long int strideB, const float *beta, float *C, const unsigned int ldc, long long int strideC, const int batchCount) const']]], + ['xgemv_7',['xgemv',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a08ed9136db6617eb2ebb287e09d58867',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemv(const char transA, const unsigned int m, const unsigned int n, const double *alpha, const double *A, const unsigned int lda, const double *x, const unsigned int incx, const double *beta, double *y, const unsigned int incy) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a0281a84fc6dad783fa4ce5ac6e5dfaa6',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemv(const char transA, const unsigned int m, const unsigned int n, const float *alpha, const float *A, const unsigned int lda, const float *x, const unsigned int incx, const float *beta, float *y, const unsigned int incy) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a15cd5b9284040b42a822b21597fcc3c4',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemv(const char transA, const unsigned int m, const unsigned int n, const std::complex< double > *alpha, const std::complex< double > *A, const unsigned int lda, const std::complex< double > *x, const unsigned int incx, const std::complex< double > *beta, std::complex< double > *y, const unsigned int incy) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#ae4c13162872db4d012699930a9022683',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemv(const char transA, const unsigned int m, const unsigned int n, const std::complex< float > *alpha, const std::complex< float > *A, const unsigned int lda, const std::complex< float > *x, const unsigned int incx, const std::complex< float > *beta, std::complex< float > *y, const unsigned int incy) const']]], + ['xlbomdkernelrankupdatefdparameter_8',['xlbomdKernelRankUpdateFDParameter',['../classdftfe_1_1dft_parameters.html#a7ffcfa3038392ef5168156e6dfa6fdde',1,'dftfe::dftParameters']]], + ['xlbomdrestartchebytol_9',['xlbomdRestartChebyTol',['../classdftfe_1_1dft_parameters.html#a30514c087d6cdbaf769caeb4021d5e58',1,'dftfe::dftParameters']]], + ['xmlnodechildcount_10',['xmlNodeChildCount',['../namespacedftfe_1_1pseudo_utils.html#adcd1e13d9f23318a856d7fd419cec9de',1,'dftfe::pseudoUtils']]], + ['xmltagreaderattr_11',['XmlTagReaderAttr',['../namespacedftfe_1_1pseudo_utils.html#a75a8233dcc3a128d15abdf3533c83049',1,'dftfe::pseudoUtils']]], + ['xmltagreadermain_12',['XmlTagReaderMain',['../namespacedftfe_1_1pseudo_utils.html#a41aa029491b427fc0b872524d4d09f14',1,'dftfe::pseudoUtils']]], + ['xmltocoredensityfile_13',['xmltoCoreDensityFile',['../namespacedftfe_1_1pseudo_utils.html#a34d23bb0ab288d03aaaf3fb428ccb113',1,'dftfe::pseudoUtils']]], + ['xmltodenomfile_14',['xmltoDenomFile',['../namespacedftfe_1_1pseudo_utils.html#a7183d2fd2951b1888a6ec155323f5527',1,'dftfe::pseudoUtils']]], + ['xmltodensityfile_15',['xmltoDensityFile',['../namespacedftfe_1_1pseudo_utils.html#aa0bd155b029e18c2a87b2cfd258f31e5',1,'dftfe::pseudoUtils']]], + ['xmltolocalpotential_16',['xmltoLocalPotential',['../namespacedftfe_1_1pseudo_utils.html#acf9b5d684bea023db3e8521b757ebaaa',1,'dftfe::pseudoUtils']]], + ['xmltoorbitalfile_17',['xmltoOrbitalFile',['../namespacedftfe_1_1pseudo_utils.html#a79681219fa8dee1a8417571d1a04ab4b',1,'dftfe::pseudoUtils']]], + ['xmltoprojectorfile_18',['xmltoProjectorFile',['../namespacedftfe_1_1pseudo_utils.html#abbb6b8ca243c6057166cb3199d2f895e',1,'dftfe::pseudoUtils']]], + ['xmltosummaryfile_19',['xmltoSummaryFile',['../namespacedftfe_1_1pseudo_utils.html#a1518b8505a8bc835eb318a24167cceee',1,'dftfe::pseudoUtils']]], + ['xnrm2_20',['xnrm2',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#acd9ed1f7d17862914b249e9305bc61c9',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xnrm2(const unsigned int n, const double *x, const unsigned int incx, const MPI_Comm &mpi_communicator, double *result) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a1a273a27eebfc9d757b24b173cb93214',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xnrm2(const unsigned int n, const std::complex< double > *x, const unsigned int incx, const MPI_Comm &mpi_communicator, double *result) const']]], + ['xscal_21',['xscal',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#af4f37ff18fda1200acacd53caa5ac709',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xscal()'],['../namespacedftfe.html#a28ef5d3da7aac5f881ec00d1a40d5614',1,'dftfe::xscal(const unsigned int *n, const double *alpha, double *x, const unsigned int *inc)'],['../namespacedftfe.html#ad580fa3f6ab6426c92d6818b2326803d',1,'dftfe::xscal(const unsigned int *n, const std::complex< double > *alpha, std::complex< double > *x, const unsigned int *inc)']]], + ['xsymv_22',['xsymv',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#aae25438bd34c0b4a6291721b603d3297',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['xthx_23',['XtHX',['../namespacedftfe_1_1linear_algebra_operations.html#a2eb9fbf18509b95d0892fc25c7aa7496',1,'dftfe::linearAlgebraOperations::XtHX(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, std::vector< dataTypes::number > &ProjHam)'],['../namespacedftfe_1_1linear_algebra_operations.html#acae01905e82bfa7979ef685989bf0f63',1,'dftfe::linearAlgebraOperations::XtHX(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)']]], + ['xthxmixedprec_24',['XtHXMixedPrec',['../namespacedftfe_1_1linear_algebra_operations.html#a6999b6c6820532b37a4716a01c53e365',1,'dftfe::linearAlgebraOperations']]] +]; diff --git a/search/all_19.js b/search/all_19.js new file mode 100644 index 000000000..934758555 --- /dev/null +++ b/search/all_19.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['z_0',['z',['../structdftfe_1_1pseudo_utils_1_1_element.html#a57b522545ebb7f00ab8823658a5a4717',1,'dftfe::pseudoUtils::Element::z'],['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#aac0bf60a213cb4b098b624bcf8580203',1,'dftfe::pseudoUtils::PeriodicTable::z()']]], + ['zadd_1',['zadd',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a6b2ff1dc6410222c2fca0d20fe8ef983',1,'dftfe::ScaLAPACKMatrix']]], + ['zcmcmult_2',['zCmCmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ae3aeb1d84498e30020980c34e3612ea9',1,'dftfe::ScaLAPACKMatrix']]], + ['zcmmult_3',['zCmmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a63411b9232cad71c462c8fa9e057bd56',1,'dftfe::ScaLAPACKMatrix']]], + ['zero_4',['zero',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#aff8c5b593ecccc46db719f98cfab793b',1,'dftfe::LAPACKSupport']]], + ['zeroindexvec_5',['zeroIndexVec',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a9f19fc44456e7d05d31fbb5876ee0768',1,'dftfe::basis::FEBasisOperations']]], + ['zerooutghosts_6',['zeroOutGhosts',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#aa3f9c23298e7d13556da4a32de9c0def',1,'dftfe::linearAlgebra::MultiVector']]], + ['zmap_7',['zmap',['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#a6e916b4910e1efc6c8434a701b3b7865',1,'dftfe::pseudoUtils::PeriodicTable']]], + ['zmcmult_8',['zmCmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a86f3f5e5913f82d3e303e55728179b90',1,'dftfe::ScaLAPACKMatrix']]], + ['zmmult_9',['zmmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a2dce63d8bd4dccf4624d41350398107e',1,'dftfe::ScaLAPACKMatrix']]], + ['zmult_10',['zmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a88d041424c4ab89f58557c1c92e167c0',1,'dftfe::ScaLAPACKMatrix']]] +]; diff --git a/search/all_1a.js b/search/all_1a.js new file mode 100644 index 000000000..447f9adb9 --- /dev/null +++ b/search/all_1a.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['_7ebfgsnonlinearsolver_0',['~BFGSNonLinearSolver',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a0af0dce1ac0530187951b34d40dbe939',1,'dftfe::BFGSNonLinearSolver']]], + ['_7ecgprpnonlinearsolver_1',['~cgPRPNonLinearSolver',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a2d423b349da3e8ef803f704c0aa7d1f5',1,'dftfe::cgPRPNonLinearSolver']]], + ['_7echebyshevorthogonalizedsubspaceiterationsolver_2',['~chebyshevOrthogonalizedSubspaceIterationSolver',['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#ab48a466ffbe1cdfdd2662e821dcdd286',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver']]], + ['_7econstraintmatrixinfo_3',['~constraintMatrixInfo',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#afd96470c437cb192b72b41ffe423835d',1,'dftfe::dftUtils::constraintMatrixInfo']]], + ['_7edftbase_4',['~dftBase',['../classdftfe_1_1dft_base.html#a4dafda7f84155a31232f9f486c007988',1,'dftfe::dftBase']]], + ['_7edftclass_5',['~dftClass',['../classdftfe_1_1dft_class.html#a4b4f091db0ae2c72fcdf4a4b205372cf',1,'dftfe::dftClass']]], + ['_7edftfewrapper_6',['~dftfeWrapper',['../classdftfe_1_1dftfe_wrapper.html#acdb094872fec08447e6d508bea09549f',1,'dftfe::dftfeWrapper']]], + ['_7eeigensolverclass_7',['~eigenSolverClass',['../classdftfe_1_1eigen_solver_class.html#a2cfd349bac52c217c964afd00410ca9a',1,'dftfe::eigenSolverClass']]], + ['_7eelpascalamanager_8',['~elpaScalaManager',['../classdftfe_1_1elpa_scala_manager.html#af581fa155fe65e25a5c2949a48fbf30f',1,'dftfe::elpaScalaManager']]], + ['_7eexcdensityggaclass_9',['~excDensityGGAClass',['../classdftfe_1_1exc_density_g_g_a_class.html#a9c1b9d85b9fa1912d29f603ceed2db33',1,'dftfe::excDensityGGAClass']]], + ['_7eexcdensityldaclass_10',['~excDensityLDAClass',['../classdftfe_1_1exc_density_l_d_a_class.html#a27c8a894cc14c5db9c25fec22939b47c',1,'dftfe::excDensityLDAClass']]], + ['_7eexcmanager_11',['~excManager',['../classdftfe_1_1exc_manager.html#a2c1c882fed406b750f88144231cc5a9b',1,'dftfe::excManager']]], + ['_7eexcwavefunctionbaseclass_12',['~excWavefunctionBaseClass',['../classdftfe_1_1exc_wavefunction_base_class.html#a98e3d223e71bb66fa177c753601b73ba',1,'dftfe::excWavefunctionBaseClass']]], + ['_7efebasisoperations_13',['~FEBasisOperations',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a3536f38c5667cfdac1718efdc70f162d',1,'dftfe::basis::FEBasisOperations']]], + ['_7elbfgsnonlinearsolver_14',['~LBFGSNonLinearSolver',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#adbf97527c3394b91e07ad0012376f4ab',1,'dftfe::LBFGSNonLinearSolver']]], + ['_7ememorystorage_15',['~MemoryStorage',['../classdftfe_1_1utils_1_1_memory_storage.html#a5a81d138956b331642b19958251138e2',1,'dftfe::utils::MemoryStorage']]], + ['_7emeshmovementclass_16',['~meshMovementClass',['../classdftfe_1_1mesh_movement_class.html#a7b3820b3fbf12ddc1a497557c9a2a789',1,'dftfe::meshMovementClass']]], + ['_7empipatternp2p_17',['~MPIPatternP2P',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a0cf00e673b5fa956e42fdcb52165404b',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['_7empirequestersbase_18',['~MPIRequestersBase',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base.html#a181c8cb807d38305dafb0eeb3ef92308',1,'dftfe::utils::mpi::MPIRequestersBase']]], + ['_7emultivector_19',['~MultiVector',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a87a40ed298ce1f602e794a4e64b20981',1,'dftfe::linearAlgebra::MultiVector']]], + ['_7enonlinearsolver_20',['~nonLinearSolver',['../classdftfe_1_1non_linear_solver.html#aa2245adca4f04b972cdb9715769b405f',1,'dftfe::nonLinearSolver']]], + ['_7enonlinearsolverproblem_21',['~nonlinearSolverProblem',['../classdftfe_1_1nonlinear_solver_problem.html#a859578af1f37f26d4a5e2d5481c4ceab',1,'dftfe::nonlinearSolverProblem']]], + ['_7eoperatordftclass_22',['~operatorDFTClass',['../classdftfe_1_1operator_d_f_t_class.html#a9eed6c9d44eacadf603bc9bb5bda6cc8',1,'dftfe::operatorDFTClass']]], + ['_7eoptimizedindexset_23',['~OptimizedIndexSet',['../classdftfe_1_1utils_1_1_optimized_index_set.html#a7131d9ad589b09d6429b530d8f037c35',1,'dftfe::utils::OptimizedIndexSet']]], + ['_7eprocessgrid_24',['~ProcessGrid',['../classdftfe_1_1_process_grid.html#a89ae9102265a4950855f93db673fef17',1,'dftfe::ProcessGrid']]], + ['_7etriangulationmanager_25',['~triangulationManager',['../classdftfe_1_1triangulation_manager.html#aeeeb378e19dc801a35671951bbfb9a66',1,'dftfe::triangulationManager']]] +]; diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 000000000..7c8a15eb3 --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['bandparalopt_0',['bandParalOpt',['../classdftfe_1_1dft_parameters.html#aa4fe36d23263644ac872258927d03e92',1,'dftfe::dftParameters']]], + ['begin_1',['begin',['../classdftfe_1_1utils_1_1_memory_storage.html#aeae2e55c0e10f389bc65f700c6611719',1,'dftfe::utils::MemoryStorage::begin()'],['../classdftfe_1_1utils_1_1_memory_storage.html#a4ce210642221751dccbecd13fe305b4d',1,'dftfe::utils::MemoryStorage::begin() const'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#af8a4c6b84e2352de812cdae573757ad3',1,'dftfe::linearAlgebra::MultiVector::begin()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a60089cfc883178ee65d984e30b85fdd0',1,'dftfe::linearAlgebra::MultiVector::begin() const']]], + ['betatol_2',['betaTol',['../classdftfe_1_1dft_parameters.html#ac6e1f8444a5ea78a20a6c517263c502e',1,'dftfe::dftParameters']]], + ['bfgsnonlinearsolver_3',['BFGSNonLinearSolver',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html',1,'dftfe::BFGSNonLinearSolver'],['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a7c779acbcd088400feb144b0f19f57c4',1,'dftfe::BFGSNonLinearSolver::BFGSNonLinearSolver()']]], + ['bfgsnonlinearsolver_2eh_4',['BFGSNonLinearSolver.h',['../_b_f_g_s_non_linear_solver_8h.html',1,'']]], + ['bfgsstepmethod_5',['bfgsStepMethod',['../classdftfe_1_1dft_parameters.html#a2ba952eaa8a068c93a44e6e525f3cc11',1,'dftfe::dftParameters::bfgsStepMethod'],['../classdftfe_1_1nudged_elastic_band_class.html#ab5f347c4c0f185723a1fc29c9d441341',1,'dftfe::nudgedElasticBandClass::bfgsStepMethod'],['../classdftfe_1_1run_parameters.html#a5ca3cf11f7de236f33e8cc81406fa4f2',1,'dftfe::runParameters::bfgsStepMethod']]], + ['blacs_5fcontext_6',['blacs_context',['../classdftfe_1_1_process_grid.html#a36e29408bd08e1957900970d51306fe2',1,'dftfe::ProcessGrid']]], + ['blas_5fint_7',['blas_int',['../namespacedftfe_1_1types.html#a1fb67fad6746b9b9fd0a49533986f502',1,'dftfe::types']]], + ['blaswrapper_8',['BLASWrapper',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper.html',1,'dftfe::linearAlgebra::BLASWrapper< memorySpace >'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#abc0b5c6e2945e72a5f1d8cc8b6e5023d',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::BLASWrapper()']]], + ['blaswrapper_2eh_9',['BLASWrapper.h',['../_b_l_a_s_wrapper_8h.html',1,'']]], + ['blaswrapper_3c_20dftfe_3a_3autils_3a_3amemoryspace_3a_3ahost_20_3e_10',['BLASWrapper< dftfe::utils::MemorySpace::HOST >',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html',1,'dftfe::linearAlgebra']]], + ['blockdiagonal_11',['blockDiagonal',['../namespacedftfe.html#a45fd2d39284f0103960f3dd8b7e6bb9fa47647a2acac5f8d4315bd358f9a7ea75',1,'dftfe']]], + ['blow_12',['bLow',['../classdftfe_1_1dft_class.html#a38f5c1429bb399a79cf2b6f80ef9b00e',1,'dftfe::dftClass']]], + ['bohrtoang_13',['bohrToAng',['../classdftfe_1_1molecular_dynamics_class.html#abc558788de8d87fb53ce7f0912e7ad35',1,'dftfe::molecularDynamicsClass']]], + ['broadcastacrossintercommscalapackmat_14',['broadcastAcrossInterCommScaLAPACKMat',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a2558aa96842fff7e5a16c12a5bc92d23',1,'dftfe::linearAlgebraOperations::internal']]] +]; diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 000000000..be81d9fcd --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,257 @@ +var searchData= +[ + ['c_0',['C',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a866966202f3f8d936337fdea02017729',1,'dftfe::LAPACKSupport']]], + ['c_5fangtobohr_1',['C_AngTobohr',['../namespacedftfe.html#a4a8e90f8c19ad48a58b381c76d84cc48',1,'dftfe']]], + ['c_5fbohrtoang_2',['C_bohrToAng',['../namespacedftfe.html#aafda11c00d071c97a585e6734f5fd226',1,'dftfe']]], + ['c_5fhaperbohrtoevperang_3',['C_haPerBohrToeVPerAng',['../namespacedftfe.html#a4dab20ec1eee7c60a80cdaac77153a6d',1,'dftfe']]], + ['c_5fhatoev_4',['C_haToeV',['../namespacedftfe.html#a9171ef90bbda5e1e15402e434d1bbafc',1,'dftfe']]], + ['c_5fkb_5',['C_kb',['../namespacedftfe.html#ac89889966e83c2758bce2b11e7dc6575',1,'dftfe']]], + ['c_5fnum1dquad_6',['C_num1DQuad',['../namespacedftfe.html#a13fd02a4baac4d585d5b300bde905b89',1,'dftfe']]], + ['c_5fnum1dquadlpsp_7',['C_num1DQuadLPSP',['../namespacedftfe.html#af693a6d78be136c07aa0c6c3f0c25857',1,'dftfe']]], + ['c_5fnum1dquadnlpsp_8',['C_num1DQuadNLPSP',['../namespacedftfe.html#a73e2b419210f295d4c10c14bf6423dd5',1,'dftfe']]], + ['c_5fnum1dquadsmearedcharge_9',['C_num1DQuadSmearedCharge',['../namespacedftfe.html#a18bee64f59323bdde50df548fe343f2c',1,'dftfe']]], + ['c_5fnum1dquadsmearedchargehigh_10',['C_num1DQuadSmearedChargeHigh',['../namespacedftfe.html#a2df356a3cb539b2e94ecd296c0ad0614',1,'dftfe']]], + ['c_5fnum1dquadsmearedchargestress_11',['C_num1DQuadSmearedChargeStress',['../namespacedftfe.html#a2c811742344823fdee164771e83c7e43',1,'dftfe']]], + ['c_5fnumcopies1dquadlpsp_12',['C_numCopies1DQuadLPSP',['../namespacedftfe.html#ade137f80833458700db8be2681468570',1,'dftfe']]], + ['c_5fnumcopies1dquadnlpsp_13',['C_numCopies1DQuadNLPSP',['../namespacedftfe.html#a7c7b12a9d172ba6c66e1918f2211bbaf',1,'dftfe']]], + ['c_5fnumcopies1dquadsmearedcharge_14',['C_numCopies1DQuadSmearedCharge',['../namespacedftfe.html#a96bc2959bb3156f527ac197a8c87ea7a',1,'dftfe']]], + ['c_5fnumcopies1dquadsmearedchargehigh_15',['C_numCopies1DQuadSmearedChargeHigh',['../namespacedftfe.html#a8fccd69337c40ea6362df163ae76a044',1,'dftfe']]], + ['c_5fnumcopies1dquadsmearedchargestress_16',['C_numCopies1DQuadSmearedChargeStress',['../namespacedftfe.html#a257dbf1bba01657662104f4f96bfc25e',1,'dftfe']]], + ['c_5fpi_17',['C_pi',['../namespacedftfe.html#a46d16f7c8a45d4c11cd1ff6626047c39',1,'dftfe']]], + ['c_5frhonodalpolyorder_18',['C_rhoNodalPolyOrder',['../namespacedftfe.html#a99864c153f664843edc7a27b70ac61f7',1,'dftfe']]], + ['calculateforceonimage_19',['CalculateForceonImage',['../classdftfe_1_1nudged_elastic_band_class.html#a9257d35d3b5ad9345f284edd578679cb',1,'dftfe::nudgedElasticBandClass']]], + ['calculateforceparallel_20',['CalculateForceparallel',['../classdftfe_1_1nudged_elastic_band_class.html#a7f0d81485ce18a331f66f01588af1068',1,'dftfe::nudgedElasticBandClass']]], + ['calculateforceperpendicular_21',['CalculateForceperpendicular',['../classdftfe_1_1nudged_elastic_band_class.html#a650d1350971f9941c2bb3f152e63ceba',1,'dftfe::nudgedElasticBandClass']]], + ['calculatenearestatomdistances_22',['calculateNearestAtomDistances',['../classdftfe_1_1dft_class.html#a8c401f173a72b692faa749ec49727939',1,'dftfe::dftClass']]], + ['calculatepathlength_23',['CalculatePathLength',['../classdftfe_1_1nudged_elastic_band_class.html#acd23065753962817bd09473b5aa8107b',1,'dftfe::nudgedElasticBandClass']]], + ['calculatepathtangent_24',['CalculatePathTangent',['../classdftfe_1_1nudged_elastic_band_class.html#a90a3e1c746f57c4f4f5ba8e82948738f',1,'dftfe::nudgedElasticBandClass']]], + ['calculatesmearedchargewidths_25',['calculateSmearedChargeWidths',['../classdftfe_1_1dft_class.html#a9fcbac29b3b715625df69b0283532427',1,'dftfe::dftClass']]], + ['calculatespringconstant_26',['CalculateSpringConstant',['../classdftfe_1_1nudged_elastic_band_class.html#a8287c47bc8392739cf1785a836b12681',1,'dftfe::nudgedElasticBandClass']]], + ['calculatespringforce_27',['CalculateSpringForce',['../classdftfe_1_1nudged_elastic_band_class.html#a70b97382141db346d572f186c16349b3',1,'dftfe::nudgedElasticBandClass']]], + ['cblacs_5fbarrier_28',['Cblacs_barrier',['../namespacedftfe.html#a122fdeeeb461620a39514f6290974842',1,'dftfe']]], + ['cblacs_5fexit_29',['Cblacs_exit',['../namespacedftfe.html#af5be78ddd85c3714b11426a499022b76',1,'dftfe']]], + ['cblacs_5fget_30',['Cblacs_get',['../namespacedftfe.html#a6534b08c9b44db85ee4de8af83ae12c6',1,'dftfe']]], + ['cblacs_5fgridexit_31',['Cblacs_gridexit',['../namespacedftfe.html#ac84a2cf440974178b487348e7cb647f9',1,'dftfe']]], + ['cblacs_5fgridinfo_32',['Cblacs_gridinfo',['../namespacedftfe.html#ad80e8232a1fc7714ba24f0abf8b2e6e4',1,'dftfe']]], + ['cblacs_5fgridinit_33',['Cblacs_gridinit',['../namespacedftfe.html#a8291e8e1a7605bb83408f110e6c0b847',1,'dftfe']]], + ['cblacs_5fpcoord_34',['Cblacs_pcoord',['../namespacedftfe.html#a9096c8d6eac258020bec18cd92dee80f',1,'dftfe']]], + ['cblacs_5fpinfo_35',['Cblacs_pinfo',['../namespacedftfe.html#acf540037d656215dc022bf05e5255f73',1,'dftfe']]], + ['cdgerv2d_36',['Cdgerv2d',['../namespacedftfe.html#a9c433c9c02a7293856090940a621c103',1,'dftfe']]], + ['cdgesd2d_37',['Cdgesd2d',['../namespacedftfe.html#a8d23816d4e244802afbe4c0f0540e105',1,'dftfe']]], + ['cellconstrainttype_38',['cellConstraintType',['../classdftfe_1_1dft_parameters.html#a0e385f4f7a1aaf0047d2d0395a52dbd6',1,'dftfe::dftParameters']]], + ['cellid_39',['cellID',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ae9d20b98e43a508cb788c9b0a534455d',1,'dftfe::basis::FEBasisOperations']]], + ['cellindex_40',['cellIndex',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a8a5d936dc321091af299af8cbac95709',1,'dftfe::basis::FEBasisOperations']]], + ['cellinversemassvector_41',['cellInverseMassVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a1a694c059ab6fb49f3201e3151a8ce43',1,'dftfe::basis::FEBasisOperations']]], + ['cellinversemassvectorbasisdata_42',['cellInverseMassVectorBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a2fcc54a125ce588c675d745dfc4b5a33',1,'dftfe::basis::FEBasisOperations']]], + ['cellinversesqrtmassvector_43',['cellInverseSqrtMassVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ad4cbee2f9a4488be086275e2e0a4e1ae',1,'dftfe::basis::FEBasisOperations']]], + ['cellinversesqrtmassvectorbasisdata_44',['cellInverseSqrtMassVectorBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#af89a33eaaae5b085c52ce16accc1d642',1,'dftfe::basis::FEBasisOperations']]], + ['cellmaptable_45',['cellMapTable',['../classdftfe_1_1symmetry_class.html#a6200868efbeb3c1c71602a39857e341f',1,'dftfe::symmetryClass']]], + ['cellmassmatrix_46',['cellMassMatrix',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#af5fd76f49f5b308de43079d8861b14bc',1,'dftfe::basis::FEBasisOperations']]], + ['cellmassmatrixbasisdata_47',['cellMassMatrixBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#af8b7671a4af85082fba467da36bbcde7',1,'dftfe::basis::FEBasisOperations']]], + ['cellmassvector_48',['cellMassVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a0c84683ff1123333bb30b3baf44fb01c',1,'dftfe::basis::FEBasisOperations']]], + ['cellmassvectorbasisdata_49',['cellMassVectorBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aa92a7d44f550136f11d2ee4892b55769',1,'dftfe::basis::FEBasisOperations']]], + ['celloptsolver_50',['cellOptSolver',['../classdftfe_1_1dft_parameters.html#a205d2f2fe0f21a6f555c986160888f92',1,'dftfe::dftParameters']]], + ['cellsqrtmassvector_51',['cellSqrtMassVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a979356785aeb651740daf3ff953255e0',1,'dftfe::basis::FEBasisOperations']]], + ['cellsqrtmassvectorbasisdata_52',['cellSqrtMassVectorBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a957416b5d5a1cc03c1531d09aca60338',1,'dftfe::basis::FEBasisOperations']]], + ['cellstiffnessmatrix_53',['cellStiffnessMatrix',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a466e44a3c795df64bc010c3ba4b633f6',1,'dftfe::basis::FEBasisOperations']]], + ['cellstiffnessmatrixbasisdata_54',['cellStiffnessMatrixBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a2eb2f4a9551c21f7717ce63cdfb1eac9',1,'dftfe::basis::FEBasisOperations']]], + ['cellstypeflag_55',['cellsTypeFlag',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a182ad4e188808b47c915c1205660a2ed',1,'dftfe::basis::FEBasisOperations']]], + ['cg_56',['CG',['../classdftfe_1_1dealii_linear_solver.html#a34362ec759485d82dd86681c37130bc2a883a7e31d18eec587cbd5c3b051458f9',1,'dftfe::dealiiLinearSolver']]], + ['cgerv2d_57',['Cgerv2d',['../namespacedftfe.html#a04e4d97f239e0b9956f4845bee81977e',1,'dftfe::Cgerv2d(int, int, int, number *, int, int, int)'],['../namespacedftfe.html#a98a1ccbf0216f537b9de25a185d1558e',1,'dftfe::Cgerv2d(int context, int M, int N, double *A, int lda, int rsrc, int csrc)'],['../namespacedftfe.html#a6bf86fc7fe8ae20e11a768bd7c332ada',1,'dftfe::Cgerv2d(int context, int M, int N, float *A, int lda, int rsrc, int csrc)']]], + ['cgesd2d_58',['Cgesd2d',['../namespacedftfe.html#af61adbd56f59e8e2edc437eb48e9b9b8',1,'dftfe::Cgesd2d(int, int, int, number *, int, int, int)'],['../namespacedftfe.html#ae8fc4c48a94e2448534ca8b76a52790a',1,'dftfe::Cgesd2d(int context, int M, int N, double *A, int lda, int rdest, int cdest)'],['../namespacedftfe.html#aa2e0cbd48e31b670d39a253eecff8866',1,'dftfe::Cgesd2d(int context, int M, int N, float *A, int lda, int rdest, int cdest)']]], + ['cgprpnonlinearsolver_59',['cgPRPNonLinearSolver',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html',1,'dftfe::cgPRPNonLinearSolver'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#aac1c94491ec3af84a823082eac62e856',1,'dftfe::cgPRPNonLinearSolver::cgPRPNonLinearSolver()']]], + ['cgprpnonlinearsolver_2eh_60',['cgPRPNonLinearSolver.h',['../cg_p_r_p_non_linear_solver_8h.html',1,'']]], + ['chebyshevfilter_61',['chebyshevFilter',['../namespacedftfe_1_1linear_algebra_operations.html#a11c562ce1dd29e6ab95d6087d8f125b7',1,'dftfe::linearAlgebraOperations']]], + ['chebyshevfilterpolydegreefirstscfscalingfactor_62',['chebyshevFilterPolyDegreeFirstScfScalingFactor',['../classdftfe_1_1dft_parameters.html#a43f51b3966bed047170a2943183d74da',1,'dftfe::dftParameters']]], + ['chebyshevorder_63',['chebyshevOrder',['../classdftfe_1_1dft_parameters.html#af4bc86c7dd5fd54bcd8d713f0251b52d',1,'dftfe::dftParameters']]], + ['chebyshevorthogonalizedsubspaceiterationsolver_64',['chebyshevOrthogonalizedSubspaceIterationSolver',['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver'],['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#a89c63d828f3841b92e2e13b1675d39ed',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::chebyshevOrthogonalizedSubspaceIterationSolver()']]], + ['chebyshevorthogonalizedsubspaceiterationsolver_2eh_65',['chebyshevOrthogonalizedSubspaceIterationSolver.h',['../chebyshev_orthogonalized_subspace_iteration_solver_8h.html',1,'']]], + ['chebyshevorthogonalizedsubspaceiterationsolverdevice_2eh_66',['chebyshevOrthogonalizedSubspaceIterationSolverDevice.h',['../chebyshev_orthogonalized_subspace_iteration_solver_device_8h.html',1,'']]], + ['chebyshevtolerance_67',['chebyshevTolerance',['../classdftfe_1_1dft_parameters.html#acb6168d145afa1ba83fe63881eefabf0',1,'dftfe::dftParameters']]], + ['chebywfcblocksize_68',['chebyWfcBlockSize',['../classdftfe_1_1dft_parameters.html#a267accfb7898b561519dee248a98e9c8',1,'dftfe::dftParameters']]], + ['check_5fparameters_69',['check_parameters',['../classdftfe_1_1dft_parameters.html#a166f01e993b958c7eec268548241d415',1,'dftfe::dftParameters']]], + ['checkconstraintsconsistency_70',['checkConstraintsConsistency',['../classdftfe_1_1triangulation_manager.html#a5f788b4faeea455b1d920b401c1bbad7',1,'dftfe::triangulationManager']]], + ['checkperiodicsurfacerefinementconsistency_71',['checkPeriodicSurfaceRefinementConsistency',['../classdftfe_1_1triangulation_manager.html#a565b8a3f11c4962037a7c40898785278',1,'dftfe::triangulationManager']]], + ['checkrestart_72',['checkRestart',['../classdftfe_1_1molecular_dynamics_class.html#af45d01df8cecc83bc29edd04cc1cba98',1,'dftfe::molecularDynamicsClass::checkRestart()'],['../classdftfe_1_1nudged_elastic_band_class.html#a7f179324e5c2d39426ee1d3a05dba36e',1,'dftfe::nudgedElasticBandClass::checkRestart()']]], + ['checkwolfe_73',['checkWolfe',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a0afeac45ca2c95573eb520c506b9bc2c',1,'dftfe::BFGSNonLinearSolver::checkWolfe()'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#ae780b063ee580cad94cda91b626f3769',1,'dftfe::LBFGSNonLinearSolver::checkWolfe()']]], + ['cholesky_74',['cholesky',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06af99d44552a6f8796d2c9c44443c7aa0a',1,'dftfe::LAPACKSupport']]], + ['classifyinteriorsurfacenodesincell_75',['classifyInteriorSurfaceNodesInCell',['../namespacedftfe_1_1vector_tools.html#aef36d37d346a77547ebbfdad6ff975c9',1,'dftfe::vectorTools']]], + ['classifyinteriorsurfacenodesinglobalarray_76',['classifyInteriorSurfaceNodesInGlobalArray',['../namespacedftfe_1_1vector_tools.html#abe2433fc07b81e4cdfb66067f9264647',1,'dftfe::vectorTools']]], + ['clear_77',['clear',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a1abbc8b2e08f82ce118afce518629a62',1,'dftfe::dftUtils::constraintMatrixInfo::clear()'],['../classdftfe_1_1dftfe_wrapper.html#af7953d12570966cd8c714ca100d6b220',1,'dftfe::dftfeWrapper::clear()'],['../classdftfe_1_1exc_manager.html#ab757060667a98e7fe4bdf7b8991fe33e',1,'dftfe::excManager::clear()'],['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a8e5c3636aa3796d457ee5abbf6132f28',1,'dftfe::basis::FEBasisOperations::clear()'],['../classdftfe_1_1utils_1_1_memory_storage.html#a998f773c54881aa83edf83a21bf7d4a5',1,'dftfe::utils::MemoryStorage::clear()'],['../classdftfe_1_1poisson_solver_problem.html#a208add694f68451e4d7dadb63ee24782',1,'dftfe::poissonSolverProblem::clear()']]], + ['clearhistory_78',['clearHistory',['../classdftfe_1_1_mixing_scheme.html#a05f44fc9c96365483edf66f9546777c2',1,'dftfe::MixingScheme']]], + ['clearmaps_79',['clearMaps',['../classdftfe_1_1symmetry_class.html#a8d58acc3cbc12c3bfd33a4da5f5576b2',1,'dftfe::symmetryClass']]], + ['clearrhodata_80',['clearRhoData',['../classdftfe_1_1dft_class.html#aef8ce36a5ec9aa30f121f6bbea3fc519',1,'dftfe::dftClass']]], + ['clearscratchmultivectors_81',['clearScratchMultiVectors',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a72e7e61c341668f67ee7e654156cf0f7',1,'dftfe::basis::FEBasisOperations']]], + ['column_5fblock_5fsize_82',['column_block_size',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ab16408c54c2082adfbca8c7a143f5028',1,'dftfe::ScaLAPACKMatrix']]], + ['communicationprecision_83',['communicationPrecision',['../namespacedftfe_1_1utils_1_1mpi.html#a0210bc35f26587376caf48af1eeb137a',1,'dftfe::utils::mpi']]], + ['communicationprotocol_84',['communicationProtocol',['../namespacedftfe_1_1utils_1_1mpi.html#aa9619263248b5e1feb33f75c9f6d911b',1,'dftfe::utils::mpi']]], + ['complexconj_85',['complexConj',['../namespacedftfe_1_1utils.html#a053e2c730762866c294a4f28ab31b2b9',1,'dftfe::utils::complexConj(const double x)'],['../namespacedftfe_1_1utils.html#ac352935e73b5afc211a924fa31515b7f',1,'dftfe::utils::complexConj(const float x)'],['../namespacedftfe_1_1utils.html#a673e365a8a9717b15757d5c55860b866',1,'dftfe::utils::complexConj(const std::complex< double > x)'],['../namespacedftfe_1_1utils.html#a4fd343c51fbbe126391b3fbbbcaa111e',1,'dftfe::utils::complexConj(const std::complex< float > x)']]], + ['compositedata_86',['CompositeData',['../classdftfe_1_1dft_utils_1_1_composite_data.html',1,'dftfe::dftUtils::CompositeData'],['../classdftfe_1_1dft_utils_1_1_composite_data.html#abf075a97ea1ac713b7ecfbbc33c95e8b',1,'dftfe::dftUtils::CompositeData::CompositeData()']]], + ['compositedata_2eh_87',['CompositeData.h',['../_composite_data_8h.html',1,'']]], + ['compute_5fcholesky_5ffactorization_88',['compute_cholesky_factorization',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a6e90313134e463ddf7374ee2023ba032',1,'dftfe::ScaLAPACKMatrix']]], + ['compute_5ffermienergy_89',['compute_fermienergy',['../classdftfe_1_1dft_class.html#ab1ea643191363b0c341204e8eac60076',1,'dftfe::dftClass']]], + ['compute_5ffermienergy_5fconstraintmagnetization_90',['compute_fermienergy_constraintMagnetization',['../classdftfe_1_1dft_class.html#ad25b1640ed3e3e232caeccb6dbaab11f',1,'dftfe::dftClass']]], + ['compute_5fldos_91',['compute_ldos',['../classdftfe_1_1dft_class.html#ad6253bc9fcf9dc36d0efbdae2e1f0dcb',1,'dftfe::dftClass']]], + ['compute_5flocalizationlength_92',['compute_localizationLength',['../classdftfe_1_1dft_class.html#a6f0f7e67103124bc348ffce471640b60',1,'dftfe::dftClass']]], + ['compute_5flu_5ffactorization_93',['compute_lu_factorization',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a8ce68e532d59d501135b8c49f0ad174f',1,'dftfe::ScaLAPACKMatrix']]], + ['compute_5fpdos_94',['compute_pdos',['../classdftfe_1_1dft_class.html#a95a8ba5326648defc9ae4c04cd3ca3e6',1,'dftfe::dftClass']]], + ['compute_5frhoout_95',['compute_rhoOut',['../classdftfe_1_1dft_class.html#aa00581f29262e212b41b91488fee4222',1,'dftfe::dftClass']]], + ['compute_5ftdos_96',['compute_tdos',['../classdftfe_1_1dft_class.html#a668a1681a61baa1a91e134bc68fbc633',1,'dftfe::dftClass']]], + ['computeadaptiveandersonmixingparameter_97',['computeAdaptiveAndersonMixingParameter',['../classdftfe_1_1_mixing_scheme.html#ad9e56f3e3f0003039168d2e624d42c44',1,'dftfe::MixingScheme']]], + ['computeandersonmixingcoeff_98',['computeAndersonMixingCoeff',['../classdftfe_1_1_mixing_scheme.html#a3e841e62f6e56306f5dd1cb3a1f53e72',1,'dftfe::MixingScheme']]], + ['computeandsymmetrize_5frhoout_99',['computeAndSymmetrize_rhoOut',['../classdftfe_1_1symmetry_class.html#a923fb69cbaf84f938713a65e4c96f65a',1,'dftfe::symmetryClass']]], + ['computeatomsforces_100',['computeAtomsForces',['../classdftfe_1_1force_class.html#a289d10877381adba3597723949aaeeb4',1,'dftfe::forceClass']]], + ['computeatomsforcesgaussiangenerator_101',['computeAtomsForcesGaussianGenerator',['../classdftfe_1_1force_class.html#a0c1baf34cf773178c7f2b651eeeb5dfd',1,'dftfe::forceClass']]], + ['computecellhamiltonianmatrix_102',['computeCellHamiltonianMatrix',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a65903ad4f66834bfb8a67f99707279f2',1,'dftfe::KohnShamHamiltonianOperator']]], + ['computecellhamiltonianmatrixextpotcontribution_103',['computeCellHamiltonianMatrixExtPotContribution',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a60e16f6dfe75a0d09e86d9b1a2548c17',1,'dftfe::KohnShamHamiltonianOperator']]], + ['computecelllocalindexsetmap_104',['computeCellLocalIndexSetMap',['../namespacedftfe_1_1vector_tools.html#a4910f06c8ad4251d016ee8a6b31ce04b',1,'dftfe::vectorTools::computeCellLocalIndexSetMap(const std::shared_ptr< const utils::mpi::MPIPatternP2P< dftfe::utils::MemorySpace::HOST > > &partitioner, const dealii::MatrixFree< 3, double > &matrix_free_data, const unsigned int mfDofHandlerIndex, const unsigned int blockSize, std::vector< std::vector< dealii::types::global_dof_index > > &flattenedArrayMacroCellLocalProcIndexId, std::vector< std::vector< dealii::types::global_dof_index > > &flattenedArrayCellLocalProcIndexId)'],['../namespacedftfe_1_1vector_tools.html#a2940dd81fe18f9b90a9778bb52d792a6',1,'dftfe::vectorTools::computeCellLocalIndexSetMap(const std::shared_ptr< const utils::mpi::MPIPatternP2P< dftfe::utils::MemorySpace::HOST > > &partitioner, const dealii::MatrixFree< 3, double > &matrix_free_data, const unsigned int mfDofHandlerIndex, const unsigned int blockSize, std::vector< dealii::types::global_dof_index > &flattenedArrayMacroCellLocalProcIndexId, std::vector< unsigned int > &normalCellIdToMacroCellIdMap, std::vector< unsigned int > &macroCellIdToNormalCellIdMap, std::vector< dealii::types::global_dof_index > &flattenedArrayCellLocalProcIndexId)'],['../namespacedftfe_1_1vector_tools.html#a2ddde54e6720c5a521c7c8ab57a0dfb1',1,'dftfe::vectorTools::computeCellLocalIndexSetMap(const std::shared_ptr< const utils::mpi::MPIPatternP2P< dftfe::utils::MemorySpace::HOST > > &partitioner, const dealii::MatrixFree< 3, double > &matrix_free_data, const unsigned int mfDofHandlerIndex, const unsigned int blockSize, std::vector< dealii::types::global_dof_index > &flattenedArrayCellLocalProcIndexId)']]], + ['computecellmassmatrix_105',['computeCellMassMatrix',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a12dfe49ca3c3793a0ed3c490fa4927e2',1,'dftfe::basis::FEBasisOperations']]], + ['computecellstiffnessmatrix_106',['computeCellStiffnessMatrix',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aaea1d90d6abba6687b0d064949b75396',1,'dftfe::basis::FEBasisOperations']]], + ['computecmatrixentries_107',['computeCMatrixEntries',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a7d0a8b8dc53a13c91990cb8702797b5c',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['computeconfigurationalforceeeshelbyeelectrophitot_108',['computeConfigurationalForceEEshelbyEElectroPhiTot',['../classdftfe_1_1force_class.html#a5b6229382c439086ea7bcff3d6d432d0',1,'dftfe::forceClass']]], + ['computeconfigurationalforceeeshelbytensorfpspfnllinfe_109',['computeConfigurationalForceEEshelbyTensorFPSPFnlLinFE',['../classdftfe_1_1force_class.html#a18b750d31d30f24e50d9b3f08164082f',1,'dftfe::forceClass']]], + ['computeconfigurationalforceeselflinfe_110',['computeConfigurationalForceEselfLinFE',['../classdftfe_1_1force_class.html#a2c29256e4705b43622af0f73cb3c7f37',1,'dftfe::forceClass']]], + ['computeconfigurationalforceeselfnosurfacelinfe_111',['computeConfigurationalForceEselfNoSurfaceLinFE',['../classdftfe_1_1force_class.html#a6661a80d363012653f41add13aac4619',1,'dftfe::forceClass']]], + ['computeconfigurationalforcephiextlinfe_112',['computeConfigurationalForcePhiExtLinFE',['../classdftfe_1_1force_class.html#ac30a961cd15b4731246d3f814ccd595e',1,'dftfe::forceClass']]], + ['computeconfigurationalforcetotallinfe_113',['computeConfigurationalForceTotalLinFE',['../classdftfe_1_1force_class.html#a6af45423fcb64c23b82bdea992226d8a',1,'dftfe::forceClass']]], + ['computedeltad_114',['computeDeltaD',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a7e148abbafa347569ce898ee0252c5af',1,'dftfe::cgPRPNonLinearSolver']]], + ['computedeltas_115',['computeDeltas',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a26f389399477411e2bd73cc0434442bf',1,'dftfe::cgPRPNonLinearSolver']]], + ['computedensitybasedenergydensity_116',['computeDensityBasedEnergyDensity',['../classdftfe_1_1exc_density_base_class.html#a86691254caff4cbc82ea2a5300f8c3dc',1,'dftfe::excDensityBaseClass::computeDensityBasedEnergyDensity()'],['../classdftfe_1_1exc_density_g_g_a_class.html#a47d9245c0218f296212e3b619339f45d',1,'dftfe::excDensityGGAClass::computeDensityBasedEnergyDensity()'],['../classdftfe_1_1exc_density_l_d_a_class.html#a211cba15562570d14f0dc1939245b426',1,'dftfe::excDensityLDAClass::computeDensityBasedEnergyDensity()']]], + ['computedensitybasedfxc_117',['computeDensityBasedFxc',['../classdftfe_1_1exc_density_base_class.html#ae4c3fb6a4e629abd478353c9a927bd12',1,'dftfe::excDensityBaseClass::computeDensityBasedFxc()'],['../classdftfe_1_1exc_density_g_g_a_class.html#a7c17e563a21fe71e85c2c7b32fd76af5',1,'dftfe::excDensityGGAClass::computeDensityBasedFxc()'],['../classdftfe_1_1exc_density_l_d_a_class.html#ae989036a9c41bae6608e42b10a5b5a79',1,'dftfe::excDensityLDAClass::computeDensityBasedFxc()']]], + ['computedensitybasedvxc_118',['computeDensityBasedVxc',['../classdftfe_1_1exc_density_base_class.html#a8f53adc86d6f28ec0ca340120dac7070',1,'dftfe::excDensityBaseClass::computeDensityBasedVxc()'],['../classdftfe_1_1exc_density_g_g_a_class.html#a1abd24bdd7e5221a62a11e78f82a4377',1,'dftfe::excDensityGGAClass::computeDensityBasedVxc()'],['../classdftfe_1_1exc_density_l_d_a_class.html#af135a1d6ae95e20b76f038afae56f539',1,'dftfe::excDensityLDAClass::computeDensityBasedVxc()']]], + ['computedftdcorrection_119',['computeDFTDCorrection',['../classdftfe_1_1dispersion_correction.html#a9678ff2882412d84267d8256bd2bf234',1,'dftfe::dispersionCorrection']]], + ['computedftfreeenergy_120',['computeDFTFreeEnergy',['../classdftfe_1_1dftfe_wrapper.html#aeecf15844b4e6fc0005f8a5ba321a1da',1,'dftfe::dftfeWrapper']]], + ['computediagonala_121',['computeDiagonalA',['../classdftfe_1_1kerker_solver_problem.html#a5db62e0f9189cc375a1f13bb071a4ce0',1,'dftfe::kerkerSolverProblem::computeDiagonalA()'],['../classdftfe_1_1poisson_solver_problem.html#a2db6195ac0129cd852cff44c06262965',1,'dftfe::poissonSolverProblem::computeDiagonalA()']]], + ['computedispresioncorrection_122',['computeDispresionCorrection',['../classdftfe_1_1dispersion_correction.html#ad07f240b59b757a39b913611fa7597b0',1,'dftfe::dispersionCorrection']]], + ['computeeigenresidualnorm_123',['computeEigenResidualNorm',['../namespacedftfe_1_1linear_algebra_operations.html#a1a9d6fec142e95c8885cd2e4f2ddc697',1,'dftfe::linearAlgebraOperations']]], + ['computeelementalnonlocalpseudoovdataforce_124',['computeElementalNonLocalPseudoOVDataForce',['../classdftfe_1_1force_class.html#ab2b773e679ab8e27e665096c658f8179',1,'dftfe::forceClass']]], + ['computeenergy_125',['computeEnergy',['../classdftfe_1_1energy_calculator.html#ad280192d061adcaff751e50959b2cc0f',1,'dftfe::energyCalculator']]], + ['computeenergyeveryscf_126',['computeEnergyEverySCF',['../classdftfe_1_1dft_parameters.html#a802cf41fa22e01e0ff4f4eec1bb47ea0',1,'dftfe::dftParameters']]], + ['computeentropicenergy_127',['computeEntropicEnergy',['../classdftfe_1_1energy_calculator.html#a1f47ac488d9823bb083a31bb6730e8b3',1,'dftfe::energyCalculator']]], + ['computeeta_128',['computeEta',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#ae775910470c51a65a373b4ff70011ad5',1,'dftfe::cgPRPNonLinearSolver']]], + ['computefloatingatomsforces_129',['computeFloatingAtomsForces',['../classdftfe_1_1force_class.html#a850c9d90e38060347cda17702e36e071',1,'dftfe::forceClass']]], + ['computehx_130',['computeHx',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#ad38d152f3b493423b7a643ba80232311',1,'dftfe::LBFGSNonLinearSolver']]], + ['computeincrement_131',['computeIncrement',['../classdftfe_1_1mesh_movement_affine_transform.html#a3bee91967e0e4f6fae3676c83d583b66',1,'dftfe::meshMovementAffineTransform::computeIncrement()'],['../classdftfe_1_1mesh_movement_gaussian_class.html#ae3bdfb1d098b810a802f8cb9931c3a25',1,'dftfe::meshMovementGaussianClass::computeIncrement(const std::vector< dealii::Point< 3 > > &controlPointLocations, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements, const std::vector< double > &gaussianWidthParameter, const std::vector< double > &flatTopWidthParameter)']]], + ['computeincrementtwostep_132',['computeIncrementTwoStep',['../classdftfe_1_1mesh_movement_gaussian_class.html#ab9a2bcda8b4c09c32454323277b379a6',1,'dftfe::meshMovementGaussianClass']]], + ['computeinversesqrtmassvector_133',['computeInverseSqrtMassVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a52706ca06f68ff021f4a29c64705c472',1,'dftfe::basis::FEBasisOperations']]], + ['computelocalrhoout_134',['computeLocalrhoOut',['../classdftfe_1_1symmetry_class.html#acfa44b9463428b03aea8d9046005f6b3',1,'dftfe::symmetryClass']]], + ['computemaximumhighestoccupiedstateresidualnorm_135',['computeMaximumHighestOccupiedStateResidualNorm',['../classdftfe_1_1dft_class.html#ae640a2abd1c3f9a6df5e9af53b82ec78',1,'dftfe::dftClass::computeMaximumHighestOccupiedStateResidualNorm(const std::vector< std::vector< double > > &residualNormWaveFunctionsAllkPoints, const std::vector< std::vector< double > > &eigenValuesAllkPoints, const double _fermiEnergy)'],['../classdftfe_1_1dft_class.html#a0761e0cda6b9f9a37b52245bbf1ebb17',1,'dftfe::dftClass::computeMaximumHighestOccupiedStateResidualNorm(const std::vector< std::vector< double > > &residualNormWaveFunctionsAllkPoints, const std::vector< std::vector< double > > &eigenValuesAllkPoints, const unsigned int highestState)']]], + ['computemeanvalueconstraint_136',['computeMeanValueConstraint',['../classdftfe_1_1poisson_solver_problem.html#a281466439e2358bbe58bafea27f61c06',1,'dftfe::poissonSolverProblem']]], + ['computemixingmatrices_137',['computeMixingMatrices',['../classdftfe_1_1_mixing_scheme.html#abb845cb32f3c910b7677c5266625f3a9',1,'dftfe::MixingScheme']]], + ['computemultipolemoments_138',['computeMultipoleMoments',['../classdftfe_1_1dft_class.html#a3714ddc8856200c7787bbd5466e902d2',1,'dftfe::dftClass']]], + ['computenewtonstep_139',['computeNewtonStep',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a55dbb50629e2baef41ccbbe8da63622a',1,'dftfe::BFGSNonLinearSolver']]], + ['computenonlocalpseudopotentialconstants_140',['computeNonlocalPseudoPotentialConstants',['../classdftfe_1_1oncv_class.html#a244be0f11494bbe292c8709ecdfc0898',1,'dftfe::oncvClass']]], + ['computeoffsetvectors_141',['computeOffsetVectors',['../namespacedftfe_1_1mesh_gen_utils.html#a4c04260faf47b3fc3b2990ca52b2ebf2',1,'dftfe::meshGenUtils']]], + ['computeoutputdensitydirectionalderivative_142',['computeOutputDensityDirectionalDerivative',['../classdftfe_1_1dft_class.html#acdefebabc3b1ec12db8c077c1e92b79a',1,'dftfe::dftClass']]], + ['computeperiodicfacenormals_143',['computePeriodicFaceNormals',['../namespacedftfe_1_1mesh_gen_utils.html#a8cd97500e6d1b1fcf250a0069bd68eb8',1,'dftfe::meshGenUtils']]], + ['computeresiduall2norm_144',['computeResidualL2Norm',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a124bb0c681b685fa3ccff00b8dc1d4d2',1,'dftfe::cgPRPNonLinearSolver']]], + ['computeresidualnodaldata_145',['computeResidualNodalData',['../classdftfe_1_1dft_class.html#a1e8592a69e1d772c5089f5a8bc8f99ca',1,'dftfe::dftClass']]], + ['computeresidualquaddata_146',['computeResidualQuadData',['../classdftfe_1_1dft_class.html#ac8dbae492f3f47c14cde2e57048e6a2f',1,'dftfe::dftClass']]], + ['computerfostep_147',['computeRFOStep',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#af138aa8db7da640b332f4b431714118b',1,'dftfe::BFGSNonLinearSolver']]], + ['computerhofirstorderresponse_148',['computeRhoFirstOrderResponse',['../namespacedftfe.html#afc3b2b8e94afc34a6303794cec0129b4',1,'dftfe']]], + ['computerhofrompsi_149',['computeRhoFromPSI',['../namespacedftfe.html#a50de40abd5bf9905f6d9107dfa02f291',1,'dftfe']]], + ['computerhogradrhofrominterpolatedvalues_150',['computeRhoGradRhoFromInterpolatedValues',['../namespacedftfe.html#ada3763aeaa732c641870f3c46a64968b',1,'dftfe']]], + ['computerhoinitialguessfrompsi_151',['computeRhoInitialGuessFromPSI',['../classdftfe_1_1dft_class.html#a547e20a49731c01009d4ed937c5bb18e',1,'dftfe::dftClass']]], + ['computerhonodalfirstorderresponsefrompsiandpsiprime_152',['computeRhoNodalFirstOrderResponseFromPSIAndPSIPrime',['../classdftfe_1_1dft_class.html#ac919adb07b374148118eff897e7b48fc',1,'dftfe::dftClass']]], + ['computerhonodalfrompsi_153',['computeRhoNodalFromPSI',['../classdftfe_1_1dft_class.html#a988133cac136e9cacf691b259e96127a',1,'dftfe::dftClass']]], + ['computerhonodalmassvector_154',['computeRhoNodalMassVector',['../classdftfe_1_1dft_class.html#ac94d727b8ebe8274dd9e697e2d88abc0',1,'dftfe::dftClass']]], + ['computerhoresponsefrominterpolatedvalues_155',['computeRhoResponseFromInterpolatedValues',['../namespacedftfe.html#a3a890cb7cabff57e0f089b301d38aacc',1,'dftfe']]], + ['computerhs_156',['computeRhs',['../classdftfe_1_1dealii_linear_solver_problem.html#a4edad82ddfed26efcc1d242ca4bf698e',1,'dftfe::dealiiLinearSolverProblem::computeRhs()'],['../classdftfe_1_1kerker_solver_problem.html#acb14312aef422e11b21070d9342ff8b9',1,'dftfe::kerkerSolverProblem::computeRhs()'],['../classdftfe_1_1poisson_solver_problem.html#a4bd27843fa4d2ff0927abc5a0b93eb2d',1,'dftfe::poissonSolverProblem::computeRhs()']]], + ['computesparsestructure_157',['computeSparseStructure',['../classdftfe_1_1_atom_centered_spherical_function_container.html#ad5bfe7302c2ba29f9e6e194bb01447ec',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['computestep_158',['computeStep',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a8eabd0433a0564f247ebe3e7e60ed89c',1,'dftfe::BFGSNonLinearSolver::computeStep()'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a5d2d2d2e0b9e9e86063ccaf9d812c29d',1,'dftfe::LBFGSNonLinearSolver::computeStep()']]], + ['computestepscale_159',['computeStepScale',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a0dcf24f75956fc467c1788d40969d73e',1,'dftfe::LBFGSNonLinearSolver']]], + ['computestress_160',['computeStress',['../classdftfe_1_1dft_class.html#ad4a66cc1d352fca53cfbf42dd4276972',1,'dftfe::dftClass::computeStress()'],['../classdftfe_1_1dft_base.html#a6b9faf3b6e83f93f4871b6cd2ed5fac6',1,'dftfe::dftBase::computeStress()'],['../classdftfe_1_1dftfe_wrapper.html#ad188c1077830a41b10b6c94d5a43f8e1',1,'dftfe::dftfeWrapper::computeStress()'],['../classdftfe_1_1force_class.html#aa19c28a56fed696796af7ba3b8a5b9ef',1,'dftfe::forceClass::computeStress(const dealii::MatrixFree< 3, double > &matrixFreeData, const dispersionCorrection &dispersionCorr, const unsigned int eigenDofHandlerIndex, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &hessianRhoCoreValues, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const dealii::AffineConstraints< double > &hangingPlusPBCConstraintsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)']]], + ['computestresseeshelbyeelectrophitot_161',['computeStressEEshelbyEElectroPhiTot',['../classdftfe_1_1force_class.html#af1d241edc5c6ae87a0557d5c15d2981c',1,'dftfe::forceClass']]], + ['computestresseeshelbyepspenlek_162',['computeStressEEshelbyEPSPEnlEk',['../classdftfe_1_1force_class.html#a9c1284f33dc5fadd746f0e9c732cddd4',1,'dftfe::forceClass']]], + ['computestresseself_163',['computeStressEself',['../classdftfe_1_1force_class.html#ac209810cecc13ce01f99b0ecea551262',1,'dftfe::forceClass']]], + ['computetotalnumberunknowns_164',['computeTotalNumberUnknowns',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a7bb90f7e15efc7aad6a2ddab565eb60a',1,'dftfe::cgPRPNonLinearSolver']]], + ['computetracexthx_165',['computeTraceXtHX',['../classdftfe_1_1dft_class.html#ab8a2284b0304e6e20d85b7ef98e379c1',1,'dftfe::dftClass']]], + ['computetracextkx_166',['computeTraceXtKX',['../classdftfe_1_1dft_class.html#aaccec3a8909f5d2bbb9263abf5631988',1,'dftfe::dftClass']]], + ['computetrustradius_167',['computeTrustRadius',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#ae933250fa74d21f28232979c2b8b748a',1,'dftfe::BFGSNonLinearSolver']]], + ['computeupdatestep_168',['computeUpdateStep',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a4a4c929d27e3f9a31a057f3264c8ed92',1,'dftfe::LBFGSNonLinearSolver']]], + ['computeveff_169',['computeVEff',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#ad2af084a460515f3615ec6a61a3f2273',1,'dftfe::KohnShamHamiltonianOperator']]], + ['computeveffexternalpotcorr_170',['computeVEffExternalPotCorr',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a882c8711bcd25886854c9b3edf4dac21',1,'dftfe::KohnShamHamiltonianOperator']]], + ['computeveffprime_171',['computeVEffPrime',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#aae03af07f6451f3f7939d20e3e74911b',1,'dftfe::KohnShamHamiltonianOperator']]], + ['computevolume_172',['computeVolume',['../classdftfe_1_1dft_class.html#a4094d121bc42b6237cbdffeb4e289e32',1,'dftfe::dftClass']]], + ['computevselffieldgateauxderfd_173',['computeVselfFieldGateauxDerFD',['../classdftfe_1_1dft_class.html#a6484a9f68e5aa6f4ce73843ab5dcb842',1,'dftfe::dftClass']]], + ['computewavefunctiondependentexcenergy_174',['computeWaveFunctionDependentExcEnergy',['../classdftfe_1_1exc_wavefunction_base_class.html#af68e3fda8e202c167a35fadd778de170',1,'dftfe::excWavefunctionBaseClass::computeWaveFunctionDependentExcEnergy()'],['../classdftfe_1_1exc_wavefunction_none_class.html#aed45b4171bbd0bb8fefe5f84c6eb4dc0',1,'dftfe::excWavefunctionNoneClass::computeWaveFunctionDependentExcEnergy()']]], + ['computeweightedcellmassmatrix_175',['computeWeightedCellMassMatrix',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a2ee61fb405bd52f8879de11a312335cc',1,'dftfe::basis::FEBasisOperations']]], + ['computeweightedcellnjgradnimatrix_176',['computeWeightedCellNjGradNiMatrix',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a71a0d1f34faa95585415244991913626',1,'dftfe::basis::FEBasisOperations']]], + ['computeweightedcellnjgradniplusnigradnjmatrix_177',['computeWeightedCellNjGradNiPlusNiGradNjMatrix',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a9c13d83fbd89cec84ee6fcc5065f6bee',1,'dftfe::basis::FEBasisOperations']]], + ['computexcenergyterms_178',['computeXCEnergyTerms',['../classdftfe_1_1energy_calculator.html#afd64fdb6845dc5c9c4e5e41264cc1314',1,'dftfe::energyCalculator']]], + ['computexcenergytermsspinpolarized_179',['computeXCEnergyTermsSpinPolarized',['../classdftfe_1_1energy_calculator.html#a4cdda59d285916318065c10827cedf46',1,'dftfe::energyCalculator']]], + ['computing_5ftimer_180',['computing_timer',['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#a180d28207594ab792123c79c280e7a14',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::computing_timer'],['../classdftfe_1_1dft_class.html#a650143a551a02c0c53ba4662a70de4c7',1,'dftfe::dftClass::computing_timer'],['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#ab458c85a0b3d3bdbb433b895e52b0e0c',1,'dftfe::KohnShamHamiltonianOperator::computing_timer'],['../classdftfe_1_1symmetry_class.html#a639abcf56fda05e893f91de5fd425bb1',1,'dftfe::symmetryClass::computing_timer'],['../classdftfe_1_1triangulation_manager.html#aa90dac50d71790340cf4c329d247167a',1,'dftfe::triangulationManager::computing_timer']]], + ['computingtimerstandard_181',['computingTimerStandard',['../classdftfe_1_1dft_class.html#aba9bbb803e8872ea2620d7e7f0a4ef47',1,'dftfe::dftClass']]], + ['config_182',['config',['../structdftfe_1_1pseudo_utils_1_1_element.html#a9859a80c4ee044adff1433f2d4eb422a',1,'dftfe::pseudoUtils::Element']]], + ['configforcelinfefinalize_183',['configForceLinFEFinalize',['../classdftfe_1_1force_class.html#afa2ea536e29cb75ad160235f1b809d3d',1,'dftfe::forceClass']]], + ['configforcelinfeinit_184',['configForceLinFEInit',['../classdftfe_1_1force_class.html#a2842351f2741f6edacd137b2c2e13ac8',1,'dftfe::forceClass']]], + ['configuration_185',['configuration',['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#a5803e1ede7d82bd940e5abe3c0478bdf',1,'dftfe::pseudoUtils::PeriodicTable::configuration(int zval) const'],['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#a6051c728fcc0368aa816ec889b412e08',1,'dftfe::pseudoUtils::PeriodicTable::configuration(std::string symbol) const']]], + ['conj_186',['conj',['../namespacedftfe_1_1utils.html#ac7bf278127718832990825160c58fdc1',1,'dftfe::utils::conj(unsigned int a)'],['../namespacedftfe_1_1utils.html#a8217fa4de50b36f38dd6a8f06a77ca09',1,'dftfe::utils::conj(unsigned long int a)'],['../namespacedftfe_1_1utils.html#a6f5e0d52f3c1b6adefbf0981d32cdd27',1,'dftfe::utils::conj(int a)'],['../namespacedftfe_1_1utils.html#aea1debf65a9b4b656ce9fb003fff0573',1,'dftfe::utils::conj(float a)'],['../namespacedftfe_1_1utils.html#aa030736e1b3c288db0a57d8ad720cb21',1,'dftfe::utils::conj(double a)'],['../namespacedftfe_1_1utils.html#af3493ccad6dd3f957073ac9035e0b0c5',1,'dftfe::utils::conj(cuDoubleComplex a)'],['../namespacedftfe_1_1utils.html#a112447bc04ec4868dc5c702a40d6ea72',1,'dftfe::utils::conj(cuFloatComplex a)'],['../namespacedftfe_1_1utils.html#a6f36b79ad7ccb0c2abac7dcaebcc81d7',1,'dftfe::utils::conj(hipDoubleComplex a)'],['../namespacedftfe_1_1utils.html#a5984dc0c102d2ebd7281ee3c76400628',1,'dftfe::utils::conj(hipFloatComplex a)']]], + ['conjugate_187',['conjugate',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a46ffac5802f6c8aa4e4f8faf739b85f7',1,'dftfe::ScaLAPACKMatrix']]], + ['consistentperiodicboundaryrefinement_188',['consistentPeriodicBoundaryRefinement',['../classdftfe_1_1triangulation_manager.html#a662de7ec8d3fbe57cdb460133871d803',1,'dftfe::triangulationManager']]], + ['const_5fiterator_189',['const_iterator',['../classdftfe_1_1utils_1_1_memory_storage.html#ac513760c004d528c08047207c4e08974',1,'dftfe::utils::MemoryStorage::const_iterator'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#abf5239a637f4c71499d80dc3a06600ed',1,'dftfe::linearAlgebra::MultiVector::const_iterator']]], + ['const_5freference_190',['const_reference',['../classdftfe_1_1utils_1_1_memory_storage.html#aaee050daa72355825f91816d3b938e3b',1,'dftfe::utils::MemoryStorage::const_reference'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a2bf4b104f134d0b779481b45a09c1068',1,'dftfe::linearAlgebra::MultiVector::const_reference']]], + ['constants_2eh_191',['constants.h',['../constants_8h.html',1,'']]], + ['constraintinfoclass_192',['constraintInfoClass',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#abb88f25ba1c89bb8792fc86e15764f34',1,'dftfe::basis::FEBasisOperations::constraintInfoClass'],['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a439640e982495e3505eeffce8dae8dc8',1,'dftfe::KohnShamHamiltonianOperator::constraintInfoClass'],['../classdftfe_1_1operator_d_f_t_class.html#a8428e6915917d467ff0d6e4261a864b4',1,'dftfe::operatorDFTClass::constraintInfoClass']]], + ['constraintmagnetization_193',['constraintMagnetization',['../classdftfe_1_1dft_parameters.html#a9262ed79b6bc10ba8c2ab5eaa50f0a71',1,'dftfe::dftParameters']]], + ['constraintmatrixinfo_194',['constraintMatrixInfo',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html',1,'dftfe::dftUtils::constraintMatrixInfo'],['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#ab0064a774fc33fea62956386123f8579',1,'dftfe::dftUtils::constraintMatrixInfo::constraintMatrixInfo()']]], + ['constraintmatrixinfo_2eh_195',['constraintMatrixInfo.h',['../constraint_matrix_info_8h.html',1,'']]], + ['constraintmatrixinfodevice_2eh_196',['constraintMatrixInfoDevice.h',['../constraint_matrix_info_device_8h.html',1,'']]], + ['constraintsnone_197',['constraintsNone',['../classdftfe_1_1dft_class.html#a1d4ec246a66791e27ec3bab4a12d9da9',1,'dftfe::dftClass']]], + ['constraintsnonedatainfo_198',['constraintsNoneDataInfo',['../classdftfe_1_1dft_class.html#a4a213ffbb8e0501e4a9f01bdaaefa53a',1,'dftfe::dftClass']]], + ['constraintsnoneeigen_199',['constraintsNoneEigen',['../classdftfe_1_1dft_class.html#acedd131117e8c7213468b9bed2b5fd78',1,'dftfe::dftClass']]], + ['constraintsnoneeigendatainfo_200',['constraintsNoneEigenDataInfo',['../classdftfe_1_1dft_class.html#a94ce80933fe52a291dbef96e3389c5d7',1,'dftfe::dftClass']]], + ['constraintsparallelcheck_201',['constraintsParallelCheck',['../classdftfe_1_1dft_parameters.html#a4fde431f4729c4272886c298b22316fc',1,'dftfe::dftParameters']]], + ['contributing_20to_20dft_20fe_202',['Contributing to DFT-FE',['../index.html#autotoc_md3',1,'']]], + ['convert_203',['convert',['../namespacedftfe_1_1pseudo_utils.html#a553b785560dfddab9f1716e5d0f1d595',1,'dftfe::pseudoUtils']]], + ['convertcartesiantospherical_204',['convertCartesianToSpherical',['../namespacedftfe_1_1pseudo_utils.html#aade7fcbd6b4fce4925871823d2b76127',1,'dftfe::pseudoUtils::convertCartesianToSpherical()'],['../namespacedftfe_1_1spherical_harmonic_utils.html#a183c632ed23df58d62b186ea349207aa',1,'dftfe::sphericalHarmonicUtils::convertCartesianToSpherical()']]], + ['coordinatesfile_205',['coordinatesFile',['../classdftfe_1_1dft_parameters.html#a1262ce6a105979cc0cb8d8fcf1cdf99b',1,'dftfe::dftParameters']]], + ['coordinatesfileneb_206',['coordinatesFileNEB',['../classdftfe_1_1run_parameters.html#a809225cf95b6c503dbd14b71180501de',1,'dftfe::runParameters']]], + ['coordinatesgaussiandispfile_207',['coordinatesGaussianDispFile',['../classdftfe_1_1dft_parameters.html#af5dd7944084dcb7ef2b61f22ca6e2fb4',1,'dftfe::dftParameters']]], + ['copy_208',['copy',['../classdftfe_1_1utils_1_1_memory_transfer.html#a243d3f87405eb1503456f85ab9d1fbd1',1,'dftfe::utils::MemoryTransfer::copy()'],['../classdftfe_1_1utils_1_1_memory_transfer_3_01_memory_space_1_1_h_o_s_t_00_01_memory_space_1_1_h_o_s_t_01_4.html#a336d7a356fef3808cfef07baecb9931e',1,'dftfe::utils::MemoryTransfer< MemorySpace::HOST, MemorySpace::HOST >::copy()']]], + ['copy_5fconjugate_5ftransposed_209',['copy_conjugate_transposed',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a04dd4e08159c26e5fae262f9ca8dc183',1,'dftfe::ScaLAPACKMatrix']]], + ['copy_5fto_210',['copy_to',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a2b846add6ba88a8e9b1f1af7750e3a9c',1,'dftfe::ScaLAPACKMatrix']]], + ['copy_5ftransposed_211',['copy_transposed',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ab607c0944accd8bc9b549e43c57f695a',1,'dftfe::ScaLAPACKMatrix']]], + ['copycomplexarrtorealarrs_212',['copyComplexArrToRealArrs',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#ab1a8289a2de109f862563cd7943fe18f',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['copyfile_213',['copyFile',['../namespacedftfe_1_1dft_utils.html#afdf53b76635604e4d222e23d82c54a95',1,'dftfe::dftUtils']]], + ['copyflatteneddealiivectosinglecompvec_214',['copyFlattenedDealiiVecToSingleCompVec',['../namespacedftfe_1_1vector_tools.html#ad8be7e32b2490c9d3211293ea4367b7c',1,'dftfe::vectorTools']]], + ['copyflattenedstlvectosinglecompvec_215',['copyFlattenedSTLVecToSingleCompVec',['../namespacedftfe_1_1vector_tools.html#ae9e994d96e1fbae2e10b12c1b77ed399',1,'dftfe::vectorTools']]], + ['copyfrom_216',['copyFrom',['../classdftfe_1_1utils_1_1_memory_storage.html#af9ade9288f870cce7544f80003760b26',1,'dftfe::utils::MemoryStorage::copyFrom(const MemoryStorage< ValueType, memorySpaceSrc > &srcMemoryStorage)'],['../classdftfe_1_1utils_1_1_memory_storage.html#aa75314324b8f615f44076c05d14548e4',1,'dftfe::utils::MemoryStorage::copyFrom(const MemoryStorage< ValueType, memorySpaceSrc > &srcMemoryStorage, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset)'],['../classdftfe_1_1utils_1_1_memory_storage.html#a9657794073bad0c6084e8c07c14bda52',1,'dftfe::utils::MemoryStorage::copyFrom(const ValueType *src)'],['../classdftfe_1_1utils_1_1_memory_storage.html#a8686cf2bd24fbeffbaf9c98a842dddea',1,'dftfe::utils::MemoryStorage::copyFrom(const ValueType *src, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset)'],['../classdftfe_1_1utils_1_1_memory_storage.html#aa4943b20cfcde137c1258950ded0b6ce',1,'dftfe::utils::MemoryStorage::copyFrom(const std::vector< ValueType > &src)'],['../classdftfe_1_1utils_1_1_memory_storage.html#a994cab8adfaf2185ea6cc428d7d76011',1,'dftfe::utils::MemoryStorage::copyFrom(const std::vector< ValueType > &src, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset)']]], + ['copyfromparallelnonlocalvectoallcellsvec_217',['copyFromParallelNonLocalVecToAllCellsVec',['../namespacedftfe_1_1_atomic_centered_non_local_operator_kernels_device.html#a3fca39e2db42311bf90e5364ea7ddce3',1,'dftfe::AtomicCenteredNonLocalOperatorKernelsDevice']]], + ['copyrealarrstocomplexarr_218',['copyRealArrsToComplexArr',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#aff4aa2f1cd6be7d5892f3ace03f29515',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['copysinglecompvectoflatteneddealiivec_219',['copySingleCompVecToFlattenedDealiiVec',['../namespacedftfe_1_1vector_tools.html#a0920ffac60d8dc52a5d0854f5a9a410b',1,'dftfe::vectorTools']]], + ['copysinglecompvectoflattenedstlvec_220',['copySingleCompVecToFlattenedSTLVec',['../namespacedftfe_1_1vector_tools.html#ab5808aada14eb28ffc011775be52e072',1,'dftfe::vectorTools']]], + ['copyto_221',['copyTo',['../classdftfe_1_1utils_1_1_memory_storage.html#ae58b42050a422a237bd2c93ff22414bb',1,'dftfe::utils::MemoryStorage::copyTo(MemoryStorage< ValueType, memorySpaceDst > &dstMemoryStorage) const'],['../classdftfe_1_1utils_1_1_memory_storage.html#ad64d52585f5234363ed700f06ff03e8f',1,'dftfe::utils::MemoryStorage::copyTo(MemoryStorage< ValueType, memorySpaceDst > &dstMemoryStorage, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset) const'],['../classdftfe_1_1utils_1_1_memory_storage.html#ae809a6c181b268ab01db861062cfc7df',1,'dftfe::utils::MemoryStorage::copyTo(ValueType *dst) const'],['../classdftfe_1_1utils_1_1_memory_storage.html#a3f8379532d334499cbd863fa0021fd2b',1,'dftfe::utils::MemoryStorage::copyTo(ValueType *dst, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset) const'],['../classdftfe_1_1utils_1_1_memory_storage.html#a520ba319687f1105bf4a6f5ae1ffc759',1,'dftfe::utils::MemoryStorage::copyTo(std::vector< ValueType > &dst) const'],['../classdftfe_1_1utils_1_1_memory_storage.html#afc3b0a0320dc03097b77a2182259eda3',1,'dftfe::utils::MemoryStorage::copyTo(std::vector< ValueType > &dst, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset) const']]], + ['copytodealiiparallelnonlocalvec_222',['copyToDealiiParallelNonLocalVec',['../namespacedftfe_1_1_atomic_centered_non_local_operator_kernels_device.html#a7838441a85f29f713acf91123c2df2a7',1,'dftfe::AtomicCenteredNonLocalOperatorKernelsDevice']]], + ['copyvalue_223',['copyValue',['../namespacedftfe_1_1utils.html#a5b54b8d954cf7f7a6fefce0adffc03ec',1,'dftfe::utils::copyValue(double *a, const double b)'],['../namespacedftfe_1_1utils.html#aa62ba3f486de8602c6714ad814ac8b7d',1,'dftfe::utils::copyValue(float *a, const float b)'],['../namespacedftfe_1_1utils.html#abbd62a194d6e755b4244990590514771',1,'dftfe::utils::copyValue(cuDoubleComplex *a, const cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#ad642a6592074ff59592a482383d19240',1,'dftfe::utils::copyValue(cuFloatComplex *a, const cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#a4854f3648ec34c4df9a4b546eade78c5',1,'dftfe::utils::copyValue(float *a, const double b)'],['../namespacedftfe_1_1utils.html#a7cfc456950459801afaf21bf2b03e470',1,'dftfe::utils::copyValue(double *a, const float b)'],['../namespacedftfe_1_1utils.html#a97b7ee5b1ba526695fa88a591ddbd6d8',1,'dftfe::utils::copyValue(cuDoubleComplex *a, const cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#adc6b68aa7d6871a7a255c164b3468028',1,'dftfe::utils::copyValue(cuFloatComplex *a, const cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a79f307f373152b7a11b3cb370114c310',1,'dftfe::utils::copyValue(cuDoubleComplex *a, const double b)'],['../namespacedftfe_1_1utils.html#a1ea0aa4dc8f973de69fffcb53eb6d100',1,'dftfe::utils::copyValue(cuFloatComplex *a, const float b)'],['../namespacedftfe_1_1utils.html#ab0bae0eb8544b97400b79d90a88e1ef1',1,'dftfe::utils::copyValue(cuDoubleComplex *a, const float b)'],['../namespacedftfe_1_1utils.html#a52c374519930b83c7ee4f8fa15f6122d',1,'dftfe::utils::copyValue(cuFloatComplex *a, const double b)'],['../namespacedftfe_1_1utils.html#a6b32016979c35c9db3ecc0d615da0f54',1,'dftfe::utils::copyValue(hipDoubleComplex *a, const hipDoubleComplex b)'],['../namespacedftfe_1_1utils.html#aa8ff6c588a5deeb8e4a64f67213b3de1',1,'dftfe::utils::copyValue(hipFloatComplex *a, const hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#a15c61796cb013d60792251b6ae98ad44',1,'dftfe::utils::copyValue(hipDoubleComplex *a, const hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#ae069d8f151e70bc33d195047361b7109',1,'dftfe::utils::copyValue(hipFloatComplex *a, const hipDoubleComplex b)'],['../namespacedftfe_1_1utils.html#ae5dc95d6bd1ef5866f0ca72732da8952',1,'dftfe::utils::copyValue(hipDoubleComplex *a, const double b)'],['../namespacedftfe_1_1utils.html#a8c5170550280d38ca53ac66ea08ae986',1,'dftfe::utils::copyValue(hipFloatComplex *a, const float b)'],['../namespacedftfe_1_1utils.html#aeab4326566543eb367099e762e65cd11',1,'dftfe::utils::copyValue(hipDoubleComplex *a, const float b)'],['../namespacedftfe_1_1utils.html#a20f425804df75df7a9aa0adaf6d3e2f3',1,'dftfe::utils::copyValue(hipFloatComplex *a, const double b)']]], + ['copyvaluetype1arrtovaluetype2arr_224',['copyValueType1ArrToValueType2Arr',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#aac089d7846e364a3f9b96360b5c35bf2',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::copyValueType1ArrToValueType2Arr()'],['../classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels.html#a097cad60d91ece603253bfe014cf7d63',1,'dftfe::utils::MPICommunicatorP2PKernels::copyValueType1ArrToValueType2Arr()']]], + ['corenucleardensitypresent_225',['coreNuclearDensityPresent',['../classdftfe_1_1oncv_class.html#a94fe3b90df923da245c7cea8e1929ea0',1,'dftfe::oncvClass']]], + ['couplingstructure_226',['CouplingStructure',['../namespacedftfe.html#a45fd2d39284f0103960f3dd8b7e6bb9f',1,'dftfe']]], + ['createatombins_227',['createAtomBins',['../classdftfe_1_1vself_bins_manager.html#a22bf860da00a54ad61404ec1d8cb1e8c',1,'dftfe::vselfBinsManager']]], + ['createatombinssanitycheck_228',['createAtomBinsSanityCheck',['../classdftfe_1_1vself_bins_manager.html#ad6061e11aa96ae2515c432b0cfee1e4e',1,'dftfe::vselfBinsManager']]], + ['createatomcenteredsphericalfunctionsfordensities_229',['createAtomCenteredSphericalFunctionsForDensities',['../classdftfe_1_1oncv_class.html#a18ff60320230b2b007c1f8c1ab9637d4',1,'dftfe::oncvClass']]], + ['createatomcenteredsphericalfunctionsforlocalpotential_230',['createAtomCenteredSphericalFunctionsForLocalPotential',['../classdftfe_1_1oncv_class.html#a454c2aa42259ac1802a9f5ec1e4cb0a2',1,'dftfe::oncvClass']]], + ['createatomcenteredsphericalfunctionsforprojectors_231',['createAtomCenteredSphericalFunctionsForProjectors',['../classdftfe_1_1oncv_class.html#ac4b2ead17fb2889606d7e7b4df45ad73',1,'dftfe::oncvClass']]], + ['createbandparallelizationindices_232',['createBandParallelizationIndices',['../namespacedftfe_1_1dft_utils.html#a9b61065c8203ed68095edcf1ae5cfc09',1,'dftfe::dftUtils']]], + ['createbinobjectsforce_233',['createBinObjectsForce',['../classdftfe_1_1force_class.html#a1bf2297f8ea44ad0858b987dabb0702a',1,'dftfe::forceClass']]], + ['createboundingboxforsphere_234',['createBoundingBoxForSphere',['../namespacedftfe_1_1dft_utils.html#aa26c95fb5d563176b7f5deb897febaa9',1,'dftfe::dftUtils']]], + ['createboundingboxtrialocallyowned_235',['createBoundingBoxTriaLocallyOwned',['../namespacedftfe_1_1vector_tools.html#a94de11beb762513ccc8a67a135488399',1,'dftfe::vectorTools']]], + ['createconstraintsfromserialdofhandler_236',['createConstraintsFromSerialDofhandler',['../classdftfe_1_1dft_parameters.html#a24feae6c0b4d8ed6233d67a2b54c72ed',1,'dftfe::dftParameters']]], + ['createdealiivector_237',['createDealiiVector',['../namespacedftfe_1_1vector_tools.html#a2ceeb70d960a91711970d88de99b0146',1,'dftfe::vectorTools']]], + ['createglobaltolocalidmapsscalapackmat_238',['createGlobalToLocalIdMapsScaLAPACKMat',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#afaed6d79685ef81cd4312ed4ac61c158',1,'dftfe::linearAlgebraOperations::internal']]], + ['createkpointparallelizationindices_239',['createKpointParallelizationIndices',['../namespacedftfe_1_1dft_utils.html#aa4eb730fa103524c924c0e0860ade0b8',1,'dftfe::dftUtils']]], + ['createmasterchargeidtoimageidmaps_240',['createMasterChargeIdToImageIdMaps',['../classdftfe_1_1dft_class.html#a3585251402041d382edbe690e9ba17cb',1,'dftfe::dftClass']]], + ['createmultivector_241',['createMultiVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aeca3d40cc4d4671698e7fd3d1beac265',1,'dftfe::basis::FEBasisOperations']]], + ['createmultivectorfromdealiipartitioner_242',['createMultiVectorFromDealiiPartitioner',['../namespacedftfe_1_1linear_algebra.html#a80a955ddf22b83a2c100b958504010f2',1,'dftfe::linearAlgebra']]], + ['createparallelconstraintmatrixfromserial_243',['createParallelConstraintMatrixFromSerial',['../namespacedftfe_1_1vector_tools.html#a977b9d4c44854ce9555eaa4f57857c03',1,'dftfe::vectorTools']]], + ['createprefineddofhandler_244',['createpRefinedDofHandler',['../classdftfe_1_1dft_class.html#a6b537567bdf342769b03303a4788e62d',1,'dftfe::dftClass']]], + ['createprocessgridrectangularmatrix_245',['createProcessGridRectangularMatrix',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a6a31afb29381fc4e6b6fcefccaaedd17',1,'dftfe::linearAlgebraOperations::internal']]], + ['createprocessgridsquarematrix_246',['createProcessGridSquareMatrix',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a0bdaa7479769cdd6a30ab41d702f1fb9',1,'dftfe::linearAlgebraOperations::internal']]], + ['createscratchfolder_247',['createScratchFolder',['../classdftfe_1_1dftfe_wrapper.html#a810e943c0e3d9766360ad06e9b1d2d3a',1,'dftfe::dftfeWrapper']]], + ['createscratchmultivectors_248',['createScratchMultiVectors',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#accf06cffc1c3c03ad2ce259c588dafae',1,'dftfe::basis::FEBasisOperations']]], + ['cross_5fproduct_249',['cross_product',['../namespacedftfe_1_1dft_utils.html#ad782f8ca76042839b133fb34ad6ec681',1,'dftfe::dftUtils::cross_product()'],['../namespacedftfe_1_1mesh_gen_utils.html#a04c37654934c494e6bbd51777bcc8446',1,'dftfe::meshGenUtils::cross_product()']]], + ['crys2cart_250',['crys2cart',['../classdftfe_1_1symmetry_class.html#a1585560991e1d68f7918a845d4d324e2',1,'dftfe::symmetryClass']]], + ['csgerv2d_251',['Csgerv2d',['../namespacedftfe.html#a2dc58bb0b7f30e064c2fa44117c7d623',1,'dftfe']]], + ['csgesd2d_252',['Csgesd2d',['../namespacedftfe.html#a60f9d5cb0924f7a150d178001cb4e58b',1,'dftfe']]], + ['csys2blacs_5fhandle_253',['Csys2blacs_handle',['../namespacedftfe.html#a35a97131f618f7447b8d8177e89b515e',1,'dftfe']]] +]; diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 000000000..34c3cca14 --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,799 @@ +var searchData= +[ + ['d_5fa_0',['d_A',['../classdftfe_1_1_mixing_scheme.html#a0bde59882d9dedb7ac7caa8c851054b9',1,'dftfe::MixingScheme']]], + ['d_5fadaptivemixingparameterdecalliterations_1',['d_adaptiveMixingParameterDecAllIterations',['../classdftfe_1_1_mixing_scheme.html#a58cad338830dd0d0fa7e7bc661b28fd5',1,'dftfe::MixingScheme']]], + ['d_5fadaptivemixingparameterdeclastiteration_2',['d_adaptiveMixingParameterDecLastIteration',['../classdftfe_1_1_mixing_scheme.html#a72c895083084600e2d0784bfdac8ed35',1,'dftfe::MixingScheme']]], + ['d_5fadaptivemixingparameterincalliterations_3',['d_adaptiveMixingParameterIncAllIterations',['../classdftfe_1_1_mixing_scheme.html#a9aca75502df53d119957f82b608b0d7a',1,'dftfe::MixingScheme']]], + ['d_5fadaptmixingparameter_4',['d_adaptMixingParameter',['../classdftfe_1_1_mixing_scheme.html#a243fbf95ac95da612f9f188e5a39eb13',1,'dftfe::MixingScheme']]], + ['d_5faffinetransformmesh_5',['d_affineTransformMesh',['../classdftfe_1_1dft_class.html#abb3f57468b2002ab62deb0fcc7914f01',1,'dftfe::dftClass']]], + ['d_5fallowgaussianoverlaponatoms_6',['d_allowGaussianOverlapOnAtoms',['../classdftfe_1_1force_class.html#a379686f32f304210a52bdff9280c83ac',1,'dftfe::forceClass']]], + ['d_5fallownedranges_7',['d_allOwnedRanges',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a81f9493179a3fadaba40ba45c9c03942',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fallreducecompleted_8',['d_AllReduceCompleted',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a278e8342a3c761eb4e9116a3c6a99738',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5falpha_9',['d_alpha',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a7a204d605305c382ddf991f97b992762',1,'dftfe::LBFGSNonLinearSolver']]], + ['d_5falphachk_10',['d_alphaChk',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a631af583436505c49bef2ab2c9ab6428',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fanymixingparameteradaptive_11',['d_anyMixingParameterAdaptive',['../classdftfe_1_1_mixing_scheme.html#a1794164d4d93ce85f9c2544d23064e2b',1,'dftfe::MixingScheme']]], + ['d_5fatomcenteredfnidsnumberingmapcurrentprocess_12',['d_AtomCenteredFnIdsNumberingMapCurrentProcess',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a77cc8f09887959a5c36f3817625a5c93',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fatomcenteredkpointindexedsphericalfnquadvalues_13',['d_atomCenteredKpointIndexedSphericalFnQuadValues',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a04defe344a33a9609c9027905ff4608d',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fatomcenteredkpointtimessphericalfntimesdistfromatomquadvalues_14',['d_atomCenteredKpointTimesSphericalFnTimesDistFromAtomQuadValues',['../classdftfe_1_1_atomic_centered_non_local_operator.html#af9a209e110e6e49652b1e4fafb6df666',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fatomcenteredsphericalfunctioncontainer_15',['d_atomCenteredSphericalFunctionContainer',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a9d782b57137af2402904db39adb9d2b0',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fatomcoordinates_16',['d_atomCoordinates',['../classdftfe_1_1dispersion_correction.html#acd133719e97eeb0df3b16ef9a61213be',1,'dftfe::dispersionCorrection']]], + ['d_5fatomcoords_17',['d_atomCoords',['../classdftfe_1_1_atom_centered_spherical_function_container.html#aa5474a0b2b48afb7900fd96ecf007fb6',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['d_5fatomfractionalunwrapped_18',['d_atomFractionalunwrapped',['../classdftfe_1_1molecular_dynamics_class.html#a07ec8500d986d0851806ef7d969e687c',1,'dftfe::molecularDynamicsClass']]], + ['d_5fatomiccoredensityvector_19',['d_atomicCoreDensityVector',['../classdftfe_1_1oncv_class.html#a9a7a48b8dbe4a8f3e1dd03f85f0a5d6d',1,'dftfe::oncvClass']]], + ['d_5fatomiclocalpotvector_20',['d_atomicLocalPotVector',['../classdftfe_1_1oncv_class.html#accfa27393408cdd01fc62335ec4aa91a',1,'dftfe::oncvClass']]], + ['d_5fatomicnonlocalpseudopotentialconstants_21',['d_atomicNonLocalPseudoPotentialConstants',['../classdftfe_1_1oncv_class.html#ac262da90e04d3805d5e5edc0490d9596',1,'dftfe::oncvClass']]], + ['d_5fatomicnumbers_22',['d_atomicNumbers',['../classdftfe_1_1_atom_centered_spherical_function_container.html#af1008b877d74018f21c12998c70a2ae2',1,'dftfe::AtomCenteredSphericalFunctionContainer::d_atomicNumbers'],['../classdftfe_1_1dispersion_correction.html#ac6cee391e56cb0308700e3b67b7751f5',1,'dftfe::dispersionCorrection::d_atomicNumbers']]], + ['d_5fatomicprojectorfnscontainer_23',['d_atomicProjectorFnsContainer',['../classdftfe_1_1oncv_class.html#a7b032b0e88aa786a91adb6a2f83d6d60',1,'dftfe::oncvClass']]], + ['d_5fatomicprojectorfnsmap_24',['d_atomicProjectorFnsMap',['../classdftfe_1_1oncv_class.html#ad22c07bc6faafb7914f8f9769921f76f',1,'dftfe::oncvClass']]], + ['d_5fatomicprojectorfnsvector_25',['d_atomicProjectorFnsVector',['../classdftfe_1_1oncv_class.html#a818cf37106b4b91703460e31da7fd2d9',1,'dftfe::oncvClass']]], + ['d_5fatomicrhoscalingfac_26',['d_atomicRhoScalingFac',['../classdftfe_1_1dft_class.html#a007c060c61de790b7fd9948b7dc2b516',1,'dftfe::dftClass']]], + ['d_5fatomicvalencedensityvector_27',['d_atomicValenceDensityVector',['../classdftfe_1_1oncv_class.html#ac548fe15ac89e596b3b38f72952ed862',1,'dftfe::oncvClass']]], + ['d_5fatomicwavefnsvector_28',['d_atomicWaveFnsVector',['../classdftfe_1_1oncv_class.html#ab2cd3503a80623aa64077448377d0912',1,'dftfe::oncvClass']]], + ['d_5fatomidbinidlocaldofhandler_29',['d_AtomIdBinIdLocalDofHandler',['../classdftfe_1_1force_class.html#abed1278671214674809aa079c17cce48',1,'dftfe::forceClass']]], + ['d_5fatomidbinidlocaldofhandlerelectro_30',['d_AtomIdBinIdLocalDofHandlerElectro',['../classdftfe_1_1force_class.html#a02d233c7468c68f88f1a8ae93dc61a64',1,'dftfe::forceClass']]], + ['d_5fatomidbinidmaplocalallimages_31',['d_atomIdBinIdMapLocalAllImages',['../classdftfe_1_1vself_bins_manager.html#ae2c6fab008cb86a67f1237524f8fbfaa',1,'dftfe::vselfBinsManager']]], + ['d_5fatomidpseudopotentialinteresttoglobalid_32',['d_atomIdPseudopotentialInterestToGlobalId',['../classdftfe_1_1dft_class.html#a4c2db42cc615210b16cb1d15f0b78d10',1,'dftfe::dftClass']]], + ['d_5fatomidsincurrentprocess_33',['d_AtomIdsInCurrentProcess',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a77ded61372eb250cb2514b9367525e7e',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['d_5fatomidsinelement_34',['d_AtomIdsInElement',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a8fb060be662c57aa4876c4c8fafa49e5',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['d_5fatomidtonontrivialsphericalfncellstartindex_35',['d_atomIdToNonTrivialSphericalFnCellStartIndex',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a8da2c3d38d823d2f16dd4eea903876b0',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fatomlocations_36',['d_atomLocations',['../classdftfe_1_1oncv_class.html#a5ed7f127eb1d8848c23e90105c3b09dd',1,'dftfe::oncvClass::d_atomLocations'],['../classdftfe_1_1vself_bins_manager.html#adf4e2683d85cf1cf886f112b35b79d83',1,'dftfe::vselfBinsManager::d_atomLocations']]], + ['d_5fatomlocationsautomesh_37',['d_atomLocationsAutoMesh',['../classdftfe_1_1dft_class.html#a6e32eb42afb3e8e05bdd24150f40b246',1,'dftfe::dftClass']]], + ['d_5fatomlocationsinitial_38',['d_atomLocationsInitial',['../classdftfe_1_1geo_opt_ion.html#a36c7a42ed96589bedb556e5212798d4a',1,'dftfe::geoOptIon::d_atomLocationsInitial'],['../classdftfe_1_1nudged_elastic_band_class.html#a1ee6a488f4a18ce15846f21c6746e23f',1,'dftfe::nudgedElasticBandClass::d_atomLocationsInitial']]], + ['d_5fatomlocationsinterestpseudopotential_39',['d_atomLocationsInterestPseudopotential',['../classdftfe_1_1dft_class.html#aba84ebabab6b8725306bd973d6606e7d',1,'dftfe::dftClass']]], + ['d_5fatomnodeidtochargemap_40',['d_atomNodeIdToChargeMap',['../classdftfe_1_1dft_class.html#a89762fe9cb0be2d7822bcc5ff79de5b3',1,'dftfe::dftClass']]], + ['d_5fatompositions_41',['d_atomPositions',['../classdftfe_1_1triangulation_manager.html#a2d1473eae700b826bdbb23fe0cf57924',1,'dftfe::triangulationManager']]], + ['d_5fatomsdisplacementsgaussianread_42',['d_atomsDisplacementsGaussianRead',['../classdftfe_1_1dft_class.html#a8994e2a09678b7e04ef033daa1fc2483',1,'dftfe::dftClass']]], + ['d_5fatomsforcedofs_43',['d_atomsForceDofs',['../classdftfe_1_1force_class.html#a4614f103ab7f487a18de7c828c6b4729',1,'dftfe::forceClass']]], + ['d_5fatomsforcedofselectro_44',['d_atomsForceDofsElectro',['../classdftfe_1_1force_class.html#ac86def9030a9caabd61d53b2ae50c2f1',1,'dftfe::forceClass']]], + ['d_5fatomsinbin_45',['d_atomsInBin',['../classdftfe_1_1vself_bins_manager.html#a28b74bc16c90abd791a722aecfd4cb59',1,'dftfe::vselfBinsManager']]], + ['d_5fatomsptr_46',['d_atomsPtr',['../classdftfe_1_1poisson_solver_problem.html#aecb72c6cc135ac8c37f232dd341a41c9',1,'dftfe::poissonSolverProblem']]], + ['d_5fatomtypeatributes_47',['d_atomTypeAtributes',['../classdftfe_1_1dft_class.html#a4be4ea29bbc88c56272773a1620faa63',1,'dftfe::dftClass::d_atomTypeAtributes'],['../classdftfe_1_1oncv_class.html#a0650e7b66328292ca34bb294c2ec3c6e',1,'dftfe::oncvClass::d_atomTypeAtributes']]], + ['d_5fatomtypecoreflagmap_48',['d_atomTypeCoreFlagMap',['../classdftfe_1_1oncv_class.html#a3a4a71e6ac7add40006e04176e3c8050',1,'dftfe::oncvClass']]], + ['d_5fatomtypes_49',['d_atomTypes',['../classdftfe_1_1oncv_class.html#a96c931f44ed32297bda0461278636145',1,'dftfe::oncvClass']]], + ['d_5fatomtypeslist_50',['d_atomTypesList',['../classdftfe_1_1oncv_class.html#ac07e0f1752b3a37bb90cc37f972f310a',1,'dftfe::oncvClass']]], + ['d_5fautomesh_51',['d_autoMesh',['../classdftfe_1_1dft_class.html#ae004efa3ef575a475cbe15f405039244',1,'dftfe::dftClass']]], + ['d_5fautomeshmaxjacobianratio_52',['d_autoMeshMaxJacobianRatio',['../classdftfe_1_1dft_class.html#a6ee1f69b7f3e8aa41019ee1a384e4012',1,'dftfe::dftClass']]], + ['d_5fbarrierrequest_53',['d_barrierRequest',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#af44d9360cc05201f6921c4450a4b6f18',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['d_5fbasedofhandlerindexelectro_54',['d_baseDofHandlerIndexElectro',['../classdftfe_1_1dft_class.html#a58d4674b2a65adeabaf9ddcb7686ec9e',1,'dftfe::dftClass']]], + ['d_5fbasisoperationsptr_55',['d_basisOperationsPtr',['../classdftfe_1_1kerker_solver_problem.html#a97cf53538ee8d7df185f73f5e9259a79',1,'dftfe::kerkerSolverProblem::d_basisOperationsPtr'],['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a05d87c409173a3b71ece719fc61af721',1,'dftfe::KohnShamHamiltonianOperator::d_basisOperationsPtr'],['../classdftfe_1_1poisson_solver_problem.html#a9586ff4f6b76d49f335a82e29f84db10',1,'dftfe::poissonSolverProblem::d_basisOperationsPtr']]], + ['d_5fbasisoperationsptrelectrohost_56',['d_basisOperationsPtrElectroHost',['../classdftfe_1_1dft_class.html#a89749566d78c3fb046b4eb04be544fb8',1,'dftfe::dftClass']]], + ['d_5fbasisoperationsptrhost_57',['d_basisOperationsPtrHost',['../classdftfe_1_1dft_class.html#afd04ff21f10629adaafeb29024498f73',1,'dftfe::dftClass::d_basisOperationsPtrHost'],['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a9dab46a52dfe205e5d9a2baccd7d604c',1,'dftfe::KohnShamHamiltonianOperator::d_basisOperationsPtrHost']]], + ['d_5fbasisoperatorhostptr_58',['d_BasisOperatorHostPtr',['../classdftfe_1_1oncv_class.html#ace4ca67be90a43940f0ffdd66ef64405',1,'dftfe::oncvClass']]], + ['d_5fbasisoperatorptr_59',['d_basisOperatorPtr',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a9712c7481d93a9adf4b4d75330c64d0c',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fbcellnontrivialatomids_60',['d_bCellNonTrivialAtomIds',['../classdftfe_1_1dft_class.html#a22d2fb1ea7e0e3bafc59bb56e61bcc6f',1,'dftfe::dftClass']]], + ['d_5fbcellnontrivialatomidsbins_61',['d_bCellNonTrivialAtomIdsBins',['../classdftfe_1_1dft_class.html#af69baadfb432ba5cece287bf80f80786',1,'dftfe::dftClass']]], + ['d_5fbcellnontrivialatomimageids_62',['d_bCellNonTrivialAtomImageIds',['../classdftfe_1_1dft_class.html#a073e00e92d193c605d6a74c5babd53b5',1,'dftfe::dftClass']]], + ['d_5fbcellnontrivialatomimageidsbins_63',['d_bCellNonTrivialAtomImageIdsBins',['../classdftfe_1_1dft_class.html#a62dfb08531a645cbbd6a5c3e4c79731d',1,'dftfe::dftClass']]], + ['d_5fbeta_64',['d_beta',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a2bbbe4de7f78e7167eee8bc6912724d5',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fbins_65',['d_bins',['../classdftfe_1_1vself_bins_manager.html#a7b505327d1408e681bb2f3dcf6715bd0',1,'dftfe::vselfBinsManager']]], + ['d_5fbinsimages_66',['d_binsImages',['../classdftfe_1_1vself_bins_manager.html#a5315714963c5b459d8bb572e9644edfb',1,'dftfe::vselfBinsManager']]], + ['d_5fbinsstartdofhandlerindexelectro_67',['d_binsStartDofHandlerIndexElectro',['../classdftfe_1_1dft_class.html#ae6c13f8b6820e72ffa664d1c9397791b',1,'dftfe::dftClass']]], + ['d_5fblaswrapperhostptr_68',['d_BLASWrapperHostPtr',['../classdftfe_1_1oncv_class.html#ab4d7de88095d1bfd631d2d2d11518b7b',1,'dftfe::oncvClass']]], + ['d_5fblaswrapperptr_69',['d_BLASWrapperPtr',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a915eb13ca7a7ef016f936ff135891b02',1,'dftfe::AtomicCenteredNonLocalOperator::d_BLASWrapperPtr'],['../classdftfe_1_1dft_class.html#a56c13e9b2b5e26114983ab88974bd7b9',1,'dftfe::dftClass::d_BLASWrapperPtr'],['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a47e769f046a0cc59e6459a454da6db36',1,'dftfe::basis::FEBasisOperations::d_BLASWrapperPtr'],['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a7ecb1b070aa89e9c5600980197653410',1,'dftfe::KohnShamHamiltonianOperator::d_BLASWrapperPtr']]], + ['d_5fblaswrapperptrhost_70',['d_BLASWrapperPtrHost',['../classdftfe_1_1dft_class.html#aa3e7913988992c27bf416c374cc48741',1,'dftfe::dftClass']]], + ['d_5fblocksize_71',['d_blockSize',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#ad237f51a1ded1b82abafbc1aaa23542e',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['d_5fboundaryflag_72',['d_boundaryFlag',['../classdftfe_1_1vself_bins_manager.html#a8be997c5a81cf19061d5790ce8dd5bac',1,'dftfe::vselfBinsManager']]], + ['d_5fboundaryflagonlychargeid_73',['d_boundaryFlagOnlyChargeId',['../classdftfe_1_1vself_bins_manager.html#a12800ef9cf62378cadb5aab5cec4948d',1,'dftfe::vselfBinsManager']]], + ['d_5fbquadatomidsallatoms_74',['d_bQuadAtomIdsAllAtoms',['../classdftfe_1_1dft_class.html#ae9ca1006bcbd6e8000f25bc4c7cbc9e0',1,'dftfe::dftClass']]], + ['d_5fbquadatomidsallatomsimages_75',['d_bQuadAtomIdsAllAtomsImages',['../classdftfe_1_1dft_class.html#ae0a2c45d4c0ca616abdac0e61ad686fc',1,'dftfe::dftClass']]], + ['d_5fbquadvaluesallatoms_76',['d_bQuadValuesAllAtoms',['../classdftfe_1_1dft_class.html#a297a88111b37dc7f57f1133c1fd36484',1,'dftfe::dftClass']]], + ['d_5fc_77',['d_c',['../classdftfe_1_1_mixing_scheme.html#a5c68b8e34a2dc021dd36c7cc97881344',1,'dftfe::MixingScheme']]], + ['d_5fcelldofindextoprocessdofindexmap_78',['d_cellDofIndexToProcessDofIndexMap',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a164c6e44df33271c7e8325b7cdfe16de',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fcellfacesvselfballsurfacesdofhandler_79',['d_cellFacesVselfBallSurfacesDofHandler',['../classdftfe_1_1force_class.html#a77212bc7e20020951da93706ff752396',1,'dftfe::forceClass']]], + ['d_5fcellfacesvselfballsurfacesdofhandlerelectro_80',['d_cellFacesVselfBallSurfacesDofHandlerElectro',['../classdftfe_1_1force_class.html#a4716bc336170e1e4649de746d66df645',1,'dftfe::forceClass']]], + ['d_5fcellfacesvselfballsurfacesdofhandlerforce_81',['d_cellFacesVselfBallSurfacesDofHandlerForce',['../classdftfe_1_1force_class.html#a06d60f5c9acb9bfbd342d4c1b79e126b',1,'dftfe::forceClass']]], + ['d_5fcellfacesvselfballsurfacesdofhandlerforceelectro_82',['d_cellFacesVselfBallSurfacesDofHandlerForceElectro',['../classdftfe_1_1force_class.html#a5804478646cab43e681239dc2b7fabc4',1,'dftfe::forceClass']]], + ['d_5fcellhamiltonianmatrix_83',['d_cellHamiltonianMatrix',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#ae5510d01a5211e3c6762d383798b0dd3',1,'dftfe::KohnShamHamiltonianOperator']]], + ['d_5fcellhamiltonianmatrixextpot_84',['d_cellHamiltonianMatrixExtPot',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#ae7017b12b5a36ca1c4823213a7c81c0d',1,'dftfe::KohnShamHamiltonianOperator']]], + ['d_5fcellidtoactivecelliteratormapdofhandlerrhonodalelectro_85',['d_cellIdToActiveCellIteratorMapDofHandlerRhoNodalElectro',['../classdftfe_1_1force_class.html#a73ea37f370a3ae8ce11ed1cfc0824306',1,'dftfe::forceClass']]], + ['d_5fcellidtoatomidslocalcompactsupportmap_86',['d_cellIdToAtomIdsLocalCompactSupportMap',['../classdftfe_1_1_atomic_centered_non_local_operator.html#aa8cee6f43e556441d6e52350ed203735',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fcellidtocellindexmap_87',['d_cellIdToCellIndexMap',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a290d68bb7630238c6dbb21f5a0e47bdb',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fcellindextocellidmap_88',['d_cellIndexToCellIdMap',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a6f0d14225d381da9d3b40aa7ee4a233f',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fcellinversemassvectorbasistype_89',['d_cellInverseMassVectorBasisType',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a22a8f925123b12941e311c915a6e8564',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fcellinversemassvectorcoefftype_90',['d_cellInverseMassVectorCoeffType',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#abbc5934631220b69d512534c10e61bb0',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fcellinversesqrtmassvectorbasistype_91',['d_cellInverseSqrtMassVectorBasisType',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a8942e4508271f0b2bee1d49811bf3472',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fcellinversesqrtmassvectorcoefftype_92',['d_cellInverseSqrtMassVectorCoeffType',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aaa6cf9f43835c85c46aa32b7a9eb4cd9',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fcellmassmatrixbasistype_93',['d_cellMassMatrixBasisType',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ae248ec33a47b783acfd25d5fede4ddde',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fcellmassmatrixcoefftype_94',['d_cellMassMatrixCoeffType',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a66f3e7039c5e43a6dc5ed64770f76957',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fcellmassvectorbasistype_95',['d_cellMassVectorBasisType',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ad1f7afe9f90ea8f2efeb22a5bf969c38',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fcellmassvectorcoefftype_96',['d_cellMassVectorCoeffType',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#adcffa45b4861272c129663d87af9d73b',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fcellsblocksize_97',['d_cellsBlockSize',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aadcf48566551d0652e20a7da68522dd0',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fcellsblocksizehamiltonianconstruction_98',['d_cellsBlockSizeHamiltonianConstruction',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#aebec324e3734ca7211537eac5ca26297',1,'dftfe::KohnShamHamiltonianOperator']]], + ['d_5fcellsblocksizehx_99',['d_cellsBlockSizeHX',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a41f295b3e71afa26864b05b24e028e60',1,'dftfe::KohnShamHamiltonianOperator']]], + ['d_5fcellshapefunctiongradientintegralflattened_100',['d_cellShapeFunctionGradientIntegralFlattened',['../classdftfe_1_1poisson_solver_problem.html#a7d5c4d33b09ce10f9547caf885995d76',1,'dftfe::poissonSolverProblem']]], + ['d_5fcellsqrtmassvectorbasistype_101',['d_cellSqrtMassVectorBasisType',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ab5f6b317705a512845970014529a6b3c',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fcellsqrtmassvectorcoefftype_102',['d_cellSqrtMassVectorCoeffType',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a195add194bd17f43288b8b337d6600ed',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fcellstiffnessmatrixbasistype_103',['d_cellStiffnessMatrixBasisType',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a8479807a48a48fea052eb8477444c3a1',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fcellstiffnessmatrixcoefftype_104',['d_cellStiffnessMatrixCoeffType',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aa5f0cdeb79b01c6157f62247312d1a27',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fcellsvselfballsclosestatomiddofhandler_105',['d_cellsVselfBallsClosestAtomIdDofHandler',['../classdftfe_1_1force_class.html#ae52a8a67d46f56fc2b84a8bd65bcd481',1,'dftfe::forceClass']]], + ['d_5fcellsvselfballsclosestatomiddofhandlerelectro_106',['d_cellsVselfBallsClosestAtomIdDofHandlerElectro',['../classdftfe_1_1force_class.html#a7692699ab574d1023bc526bee3d6f2c9',1,'dftfe::forceClass']]], + ['d_5fcellsvselfballsdofhandler_107',['d_cellsVselfBallsDofHandler',['../classdftfe_1_1force_class.html#ad925d170054fd4be29398241a050207c',1,'dftfe::forceClass']]], + ['d_5fcellsvselfballsdofhandlerelectro_108',['d_cellsVselfBallsDofHandlerElectro',['../classdftfe_1_1force_class.html#ae04b18e926151d756bf33938819b8ad0',1,'dftfe::forceClass']]], + ['d_5fcellsvselfballsdofhandlerforce_109',['d_cellsVselfBallsDofHandlerForce',['../classdftfe_1_1force_class.html#af5004829c8a7762cb185cb280393361d',1,'dftfe::forceClass']]], + ['d_5fcellsvselfballsdofhandlerforceelectro_110',['d_cellsVselfBallsDofHandlerForceElectro',['../classdftfe_1_1force_class.html#ab038d0a21df2e772916767b0139f66df',1,'dftfe::forceClass']]], + ['d_5fcellwavefunctionmatrixdst_111',['d_cellWaveFunctionMatrixDst',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#ac3dcf5f6f51d20b803eb646f8acaf6d5',1,'dftfe::KohnShamHamiltonianOperator']]], + ['d_5fcellwavefunctionmatrixsrc_112',['d_cellWaveFunctionMatrixSrc',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a0bcd66bfd28c7315620d9803540354c8',1,'dftfe::KohnShamHamiltonianOperator']]], + ['d_5fcfinal_113',['d_cFinal',['../classdftfe_1_1_mixing_scheme.html#a7942d39e0d5c1227a6011048f52e1c1a',1,'dftfe::MixingScheme']]], + ['d_5fcharspernum_114',['d_charspernum',['../classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html#a2f53e0f552908bb27ece4b68d9a765e1',1,'dftfe::dftUtils::QuadDataCompositeWrite']]], + ['d_5fclosestatombin_115',['d_closestAtomBin',['../classdftfe_1_1vself_bins_manager.html#a923bdc04447ec16c3b884b40ff2dd17a',1,'dftfe::vselfBinsManager']]], + ['d_5fclosesttriavertextoatomslocation_116',['d_closestTriaVertexToAtomsLocation',['../classdftfe_1_1dft_class.html#a240d6717878c94bc2142ade0b780b275',1,'dftfe::dftClass']]], + ['d_5fcmatrixentries_117',['d_CMatrixEntries',['../classdftfe_1_1_atomic_centered_non_local_operator.html#aab01fde145b89e0407d32b42829b615b',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fcmatrixentriesconjugate_118',['d_CMatrixEntriesConjugate',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a634e7ab2583865c1e76a0277c448da07',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fcmatrixentriestranspose_119',['d_CMatrixEntriesTranspose',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a7065da4c487f144a148bbe68be024c9c',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fcolumnidsglobal_120',['d_columnIdsGlobal',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a5ac9a307f90e86c9bc4bcf1b5d8b8fbb',1,'dftfe::dftUtils::constraintMatrixInfo']]], + ['d_5fcolumnidslocal_121',['d_columnIdsLocal',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a162db453c7274789b45dfb768f8f69c5',1,'dftfe::dftUtils::constraintMatrixInfo']]], + ['d_5fcolumnvalues_122',['d_columnValues',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#ad8b867d66792fb8983d22c48833e7f9e',1,'dftfe::dftUtils::constraintMatrixInfo']]], + ['d_5fcomm_123',['d_comm',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a88a2988910178add2d1c8c0cc4baf19b',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['d_5fcommprecision_124',['d_commPrecision',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#ae26d754fd950456f0ac3f3662ca11578',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['d_5fcommprotocol_125',['d_commProtocol',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#ac93120900d8769cc2abdfd74919fdda9',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['d_5fconfigforcevectorlinfe_126',['d_configForceVectorLinFE',['../classdftfe_1_1force_class.html#af27b2346c6a37980b2d383d5715607e8',1,'dftfe::forceClass']]], + ['d_5fconfigforcevectorlinfeelectro_127',['d_configForceVectorLinFEElectro',['../classdftfe_1_1force_class.html#a79283c54c001778c74a39de9bc4bc67c',1,'dftfe::forceClass']]], + ['d_5fconjugatedirection_128',['d_conjugateDirection',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a1e07d27c3d258364f2a3ac8fcb4a8369',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fconstraintinfo_129',['d_constraintInfo',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a25646371b538c77a873af0c1da6f37c0',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fconstraintmatrixprefinedptr_130',['d_constraintMatrixPRefinedPtr',['../classdftfe_1_1kerker_solver_problem.html#ad34a1224070c89988a951a9ed86405e5',1,'dftfe::kerkerSolverProblem']]], + ['d_5fconstraintmatrixptr_131',['d_constraintMatrixPtr',['../classdftfe_1_1poisson_solver_problem.html#a0bebde2d89f987624a1d003148517d5e',1,'dftfe::poissonSolverProblem']]], + ['d_5fconstraintsforhelmholtzrhonodal_132',['d_constraintsForHelmholtzRhoNodal',['../classdftfe_1_1dft_class.html#aad3b062bc631436b6f970b66fb0f0eaf',1,'dftfe::dftClass']]], + ['d_5fconstraintsforphiprimeelectro_133',['d_constraintsForPhiPrimeElectro',['../classdftfe_1_1dft_class.html#a77fc8729fd1812e5289464f2bda83230',1,'dftfe::dftClass']]], + ['d_5fconstraintsfortotalpotentialelectro_134',['d_constraintsForTotalPotentialElectro',['../classdftfe_1_1dft_class.html#aba14985a955c13b4e037c6765680b439',1,'dftfe::dftClass']]], + ['d_5fconstraintsinfo_135',['d_constraintsInfo',['../classdftfe_1_1poisson_solver_problem.html#ad768657044931ff12825f612053f14d1',1,'dftfe::poissonSolverProblem']]], + ['d_5fconstraintsmovemesh_136',['d_constraintsMoveMesh',['../classdftfe_1_1mesh_movement_class.html#a09af6643c39bca76a6b71ec283468e06',1,'dftfe::meshMovementClass']]], + ['d_5fconstraintsnoneforce_137',['d_constraintsNoneForce',['../classdftfe_1_1force_class.html#a875d4e64b7f6f78546a360242212cff8',1,'dftfe::forceClass']]], + ['d_5fconstraintsnoneforceelectro_138',['d_constraintsNoneForceElectro',['../classdftfe_1_1force_class.html#a4ff8afdd42b2d171959a8dff841ff54d',1,'dftfe::forceClass']]], + ['d_5fconstraintsonlyhanginginfo_139',['d_constraintsOnlyHangingInfo',['../classdftfe_1_1vself_bins_manager.html#afe7f09f230aec374f0a9ec2e04dbeebd',1,'dftfe::vselfBinsManager']]], + ['d_5fconstraintsprefined_140',['d_constraintsPRefined',['../classdftfe_1_1dft_class.html#a7443ba6defd3eb6ff9a0b9897dfc1371',1,'dftfe::dftClass']]], + ['d_5fconstraintsprefinedonlyhanging_141',['d_constraintsPRefinedOnlyHanging',['../classdftfe_1_1dft_class.html#a9156607b55d1ed375f83458c3a08fbc5',1,'dftfe::dftClass']]], + ['d_5fconstraintsrhonodal_142',['d_constraintsRhoNodal',['../classdftfe_1_1dft_class.html#a339bb1bd4fb4bf3a1cdb257705d0685a',1,'dftfe::dftClass']]], + ['d_5fconstraintsrhonodalinfo_143',['d_constraintsRhoNodalInfo',['../classdftfe_1_1dft_class.html#aa3c54e2271212b2d788dc240f6dc4dab',1,'dftfe::dftClass']]], + ['d_5fconstraintsrhonodalonlyhanging_144',['d_constraintsRhoNodalOnlyHanging',['../classdftfe_1_1dft_class.html#a9ba8f665db9cdde48f0d7768b5863583',1,'dftfe::dftClass']]], + ['d_5fconstraintsvector_145',['d_constraintsVector',['../classdftfe_1_1dft_class.html#a49af6efaf0323a028fd871e36aafd06f',1,'dftfe::dftClass::d_constraintsVector'],['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aaa973fd189ac2847924239b5e4481684',1,'dftfe::basis::FEBasisOperations::d_constraintsVector']]], + ['d_5fconstraintsvectorelectro_146',['d_constraintsVectorElectro',['../classdftfe_1_1dft_class.html#a4e9719a5f9e5e0d51969451bc34e5c09',1,'dftfe::dftClass']]], + ['d_5fcontiguousranges_147',['d_contiguousRanges',['../classdftfe_1_1utils_1_1_optimized_index_set.html#aac2a050921795d97ada193197f440117',1,'dftfe::utils::OptimizedIndexSet']]], + ['d_5fcontrolpointlocationscurrentmove_148',['d_controlPointLocationsCurrentMove',['../classdftfe_1_1dft_class.html#acc7f901acaf877a9c62ba9014def0dd4',1,'dftfe::dftClass']]], + ['d_5fcoordinatesfileneb_149',['d_coordinatesFileNEB',['../classdftfe_1_1nudged_elastic_band_class.html#aebea41fb0529dd4b0fdb506e801c3a8e',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fcountrelaxationflags_150',['d_countrelaxationFlags',['../classdftfe_1_1nudged_elastic_band_class.html#a38e4b9b90b4e3a9271ed478ca866decd',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fcouplingmatrixentries_151',['d_couplingMatrixEntries',['../classdftfe_1_1oncv_class.html#a6d2cac1e3a407762b12bd71ccc86203d',1,'dftfe::oncvClass']]], + ['d_5fcutoff_152',['d_cutOff',['../classdftfe_1_1_atom_centered_spherical_function_base.html#a6614271c483ada12974c1e44b442595b',1,'dftfe::AtomCenteredSphericalFunctionBase']]], + ['d_5fcycle_153',['d_cycle',['../classdftfe_1_1geometry_optimization_class.html#a7ded5a973ea3f134964e89fc85f251f0',1,'dftfe::geometryOptimizationClass']]], + ['d_5fdata_154',['d_data',['../classdftfe_1_1utils_1_1_memory_storage.html#a9099d9430af7f5dfb9c3ffbdead39adb',1,'dftfe::utils::MemoryStorage']]], + ['d_5fdatapresent_155',['d_DataPresent',['../classdftfe_1_1_atom_centered_spherical_function_base.html#a39a7039d488d032e2a690880fa87d6ed',1,'dftfe::AtomCenteredSphericalFunctionBase']]], + ['d_5fdebuglevel_156',['d_debugLevel',['../classdftfe_1_1non_linear_solver.html#a96f539da01e5c25ba4dbde71a378f2c4',1,'dftfe::nonLinearSolver']]], + ['d_5fdeformationgradient_157',['d_deformationGradient',['../classdftfe_1_1mesh_movement_affine_transform.html#a875175e0b9e6d330bb03b8d7c0a2ea37',1,'dftfe::meshMovementAffineTransform']]], + ['d_5fdeltagq_158',['d_deltaGq',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#ac5763a4074a9390bae5e8fd693c90d88',1,'dftfe::LBFGSNonLinearSolver']]], + ['d_5fdeltamid_159',['d_deltaMid',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#aa8b5eb8db4a2bef62b290e77ef579b62',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fdeltanew_160',['d_deltaNew',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a92100670185950b1999ef4b6440e7976',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fdeltaold_161',['d_deltaOld',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a2ee7dacce21c26cc4c4f3902612e6940',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fdeltax_162',['d_deltaX',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#af3e9b228c6028e2be412be12150fde33',1,'dftfe::BFGSNonLinearSolver::d_deltaX'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#ad25a41d776938c48eeafe49b4d7b8aad',1,'dftfe::LBFGSNonLinearSolver::d_deltaX']]], + ['d_5fdeltaxnew_163',['d_deltaXNew',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a2cb93d0137febe53615507d88ea40a12',1,'dftfe::BFGSNonLinearSolver::d_deltaXNew'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#ad5c7a1ec51f97c3164dc7f1ea7339142',1,'dftfe::LBFGSNonLinearSolver::d_deltaXNew']]], + ['d_5fdeltaxq_164',['d_deltaXq',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#aef7b4034dff2b96fcfc83c015f51b833',1,'dftfe::LBFGSNonLinearSolver']]], + ['d_5fdensitydofhandlerindex_165',['d_densityDofHandlerIndex',['../classdftfe_1_1dft_class.html#a09d1bcd50e2de914f0a5eb45f937f0a2',1,'dftfe::dftClass']]], + ['d_5fdensitydofhandlerindexelectro_166',['d_densityDofHandlerIndexElectro',['../classdftfe_1_1dft_class.html#a323b1438955ebeadf981e793e638af94',1,'dftfe::dftClass']]], + ['d_5fdensityinnodalvalues_167',['d_densityInNodalValues',['../classdftfe_1_1dft_class.html#a471420e8e16557a788d0058e7b00d9f5',1,'dftfe::dftClass']]], + ['d_5fdensityinquadvalues_168',['d_densityInQuadValues',['../classdftfe_1_1dft_class.html#abdec5532c4f26792a06e1753b5787100',1,'dftfe::dftClass']]], + ['d_5fdensitymatderfermienergy_169',['d_densityMatDerFermiEnergy',['../classdftfe_1_1dft_class.html#a262693c667b29c4ff1a4ad86638726bf',1,'dftfe::dftClass']]], + ['d_5fdensityoutnodalvalues_170',['d_densityOutNodalValues',['../classdftfe_1_1dft_class.html#a534a26ad9aa68270c802b1e8bb433fc0',1,'dftfe::dftClass']]], + ['d_5fdensityoutquadvalues_171',['d_densityOutQuadValues',['../classdftfe_1_1dft_class.html#a8b42cd1e123e5743e525eedc04cd6bde',1,'dftfe::dftClass']]], + ['d_5fdensityquadratureid_172',['d_densityQuadratureId',['../classdftfe_1_1dft_class.html#a9e28c13c4c9e471e75d1d3b63f11bd14',1,'dftfe::dftClass::d_densityQuadratureId'],['../classdftfe_1_1oncv_class.html#a9a8422e6cbc8baa0428fbc2efa2c316c',1,'dftfe::oncvClass::d_densityQuadratureId']]], + ['d_5fdensityquadratureid_173',['d_densityQuadratureID',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a0c7e044595e0f70700e6849d64286800',1,'dftfe::KohnShamHamiltonianOperator']]], + ['d_5fdensityquadratureidelectro_174',['d_densityQuadratureIdElectro',['../classdftfe_1_1dft_class.html#a29fc28f17f2827f1bed79c6e12240e40',1,'dftfe::dftClass::d_densityQuadratureIdElectro'],['../classdftfe_1_1oncv_class.html#ac009aaf7e4c27ec774355426c00ca950',1,'dftfe::oncvClass::d_densityQuadratureIdElectro']]], + ['d_5fdensityresidualnodalvalues_175',['d_densityResidualNodalValues',['../classdftfe_1_1dft_class.html#a9cbcac4f2a55da3cdb8f247e2418a52d',1,'dftfe::dftClass']]], + ['d_5fdensityresidualquadvalues_176',['d_densityResidualQuadValues',['../classdftfe_1_1dft_class.html#aa7b3827e6f3fe0aed010a1674ea251b9',1,'dftfe::dftClass']]], + ['d_5fdensitytotalinvalueslpspquad_177',['d_densityTotalInValuesLpspQuad',['../classdftfe_1_1dft_class.html#aafeb484f2945e9a0ea6a998d8f58e17f',1,'dftfe::dftClass']]], + ['d_5fdensitytotaloutvalueslpspquad_178',['d_densityTotalOutValuesLpspQuad',['../classdftfe_1_1dft_class.html#aca759d0f3d3bd0002915a9a04fe8a568',1,'dftfe::dftClass']]], + ['d_5fdftfebaseptr_179',['d_dftfeBasePtr',['../classdftfe_1_1dftfe_wrapper.html#acfe9bd2d593a1dd8b0641a589a204eac',1,'dftfe::dftfeWrapper']]], + ['d_5fdftfeparamsptr_180',['d_dftfeParamsPtr',['../classdftfe_1_1dftfe_wrapper.html#abe5abb0c86996fafaf648e44e0c6cb9d',1,'dftfe::dftfeWrapper']]], + ['d_5fdftfescratchfoldername_181',['d_dftfeScratchFolderName',['../classdftfe_1_1dft_class.html#a016462ce2e630846af5d59adeb237af9',1,'dftfe::dftClass::d_dftfeScratchFolderName'],['../classdftfe_1_1oncv_class.html#af0fba53b6fe939ddae72135ae0fb51ee',1,'dftfe::oncvClass::d_dftfeScratchFolderName']]], + ['d_5fdftfewrapper_182',['d_dftfeWrapper',['../classdftfe_1_1geometry_optimization_class.html#a73bd43a7fa34c6213159dc48b150cc7f',1,'dftfe::geometryOptimizationClass::d_dftfeWrapper'],['../classdftfe_1_1molecular_dynamics_class.html#a93a0ec34bbda52f3ffe712d9e0f3bb07',1,'dftfe::molecularDynamicsClass::d_dftfeWrapper'],['../classdftfe_1_1nudged_elastic_band_class.html#ad2133656cfd9d5bf22b87c98b7e7dd9f',1,'dftfe::nudgedElasticBandClass::d_dftfeWrapper']]], + ['d_5fdftparams_183',['d_dftParams',['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#a2e8212ba31d2867b59c1597cdd050e30',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::d_dftParams'],['../classdftfe_1_1dispersion_correction.html#a1dbeccd5aa7435cf664360997221de0a',1,'dftfe::dispersionCorrection::d_dftParams'],['../classdftfe_1_1energy_calculator.html#a26fd1b1a0475afbf9d5f9e744a56a397',1,'dftfe::energyCalculator::d_dftParams'],['../classdftfe_1_1force_class.html#a1a63f5536cc11ad44271a032dd945675',1,'dftfe::forceClass::d_dftParams'],['../classdftfe_1_1mesh_movement_class.html#acc884bb850def34135deeb7b73783c33',1,'dftfe::meshMovementClass::d_dftParams'],['../classdftfe_1_1triangulation_manager.html#a43aa4bd97498497a974f27a63c24ea10',1,'dftfe::triangulationManager::d_dftParams'],['../classdftfe_1_1vself_bins_manager.html#ab1398d25c9781dd8cec6b7332ee93914',1,'dftfe::vselfBinsManager::d_dftParams']]], + ['d_5fdftparamsptr_184',['d_dftParamsPtr',['../classdftfe_1_1dft_class.html#aeb1755ca41f944220cb7eda37e71dfd7',1,'dftfe::dftClass::d_dftParamsPtr'],['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a43ca0e3cf9228f13bbf390a2ada6cdef',1,'dftfe::KohnShamHamiltonianOperator::d_dftParamsPtr']]], + ['d_5fdftptr_185',['d_dftPtr',['../classdftfe_1_1geometry_optimization_class.html#af69c46d30156aedc53c40bb2a8da9d8f',1,'dftfe::geometryOptimizationClass::d_dftPtr'],['../classdftfe_1_1geo_opt_cell.html#a59e3d8bc4c77148f9b9489fac2b9c06d',1,'dftfe::geoOptCell::d_dftPtr'],['../classdftfe_1_1geo_opt_ion.html#aa90d910e25e037cdc0448c889e90814b',1,'dftfe::geoOptIon::d_dftPtr'],['../classdftfe_1_1molecular_dynamics_class.html#a33dacfa4869efa446126f7ebfcbfee52',1,'dftfe::molecularDynamicsClass::d_dftPtr'],['../classdftfe_1_1nudged_elastic_band_class.html#a23d6ebb90e7de9fdf3dc1b826d610fd6',1,'dftfe::nudgedElasticBandClass::d_dftPtr']]], + ['d_5fdiagonala_186',['d_diagonalA',['../classdftfe_1_1kerker_solver_problem.html#ac644337541c29cea1343617afd260a1a',1,'dftfe::kerkerSolverProblem::d_diagonalA'],['../classdftfe_1_1poisson_solver_problem.html#a3140e231162eb49dda0e4a5a65836b53',1,'dftfe::poissonSolverProblem::d_diagonalA']]], + ['d_5fdipole_187',['d_dipole',['../classdftfe_1_1dft_class.html#a57b47faf64cd6b6ef147dbd3c8cbb5a8',1,'dftfe::dftClass']]], + ['d_5fdispclosesttriaverticestoatoms_188',['d_dispClosestTriaVerticesToAtoms',['../classdftfe_1_1dft_class.html#af01a791c3ea81dbb4bac3494da1f4432',1,'dftfe::dftClass']]], + ['d_5fdispersioncorr_189',['d_dispersionCorr',['../classdftfe_1_1dft_class.html#aba3562baa285a9e01c8eab511a20e79b',1,'dftfe::dftClass']]], + ['d_5fdofclosestchargelocationmap_190',['d_dofClosestChargeLocationMap',['../classdftfe_1_1vself_bins_manager.html#af97a02ff3063f6af077f651c8c5f55f0',1,'dftfe::vselfBinsManager']]], + ['d_5fdofhandlerforce_191',['d_dofHandlerForce',['../classdftfe_1_1force_class.html#aa5a4298dee898fa424b4d7961632762c',1,'dftfe::forceClass']]], + ['d_5fdofhandlerforceelectro_192',['d_dofHandlerForceElectro',['../classdftfe_1_1force_class.html#a10e3cf6d63f110f89436d127479725e9',1,'dftfe::forceClass']]], + ['d_5fdofhandlerid_193',['d_dofHandlerID',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a99d9043f22a29c2802d7e57ea8d4fe90',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fdofhandlermovemesh_194',['d_dofHandlerMoveMesh',['../classdftfe_1_1mesh_movement_class.html#a7741e2b93dd558e3aa8fa9d0ec98c316',1,'dftfe::meshMovementClass']]], + ['d_5fdofhandlerprefined_195',['d_dofHandlerPRefined',['../classdftfe_1_1dft_class.html#a1f4ae428cb463619caae47fd399ae08e',1,'dftfe::dftClass']]], + ['d_5fdofhandlerprefinedptr_196',['d_dofHandlerPRefinedPtr',['../classdftfe_1_1kerker_solver_problem.html#ac94909b7a89cd20dea56fed886657397',1,'dftfe::kerkerSolverProblem']]], + ['d_5fdofhandlerrhonodal_197',['d_dofHandlerRhoNodal',['../classdftfe_1_1dft_class.html#a192ff7961c8d1fd7584e59fc6b42a15e',1,'dftfe::dftClass']]], + ['d_5fdomainboundingvectors_198',['d_domainBoundingVectors',['../classdftfe_1_1dft_class.html#a1c3b497537e81b17407ed9927e1d5c4c',1,'dftfe::dftClass::d_domainBoundingVectors'],['../classdftfe_1_1mesh_movement_class.html#a030936e48e58a28aad31b767db80b0ac',1,'dftfe::meshMovementClass::d_domainBoundingVectors'],['../classdftfe_1_1triangulation_manager.html#a2b18b24ae519a7428280fe7eb21aaa12',1,'dftfe::triangulationManager::d_domainBoundingVectors']]], + ['d_5fdomainlength_199',['d_domainLength',['../classdftfe_1_1molecular_dynamics_class.html#a8ed8e5904bab49712d3e674a2a5aa25e',1,'dftfe::molecularDynamicsClass']]], + ['d_5fdomainvectorsfileneb_200',['d_domainVectorsFileNEB',['../classdftfe_1_1nudged_elastic_band_class.html#a7079ad9d44cb663380f1756ee34486f6',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fdomainvolume_201',['d_domainVolume',['../classdftfe_1_1dft_class.html#a8a6bd750b6fb1081ac21fd53dd85d2f6',1,'dftfe::dftClass']]], + ['d_5fdomainvolumeinitial_202',['d_domainVolumeInitial',['../classdftfe_1_1geo_opt_cell.html#a12dbbce9ea2824adefec883a36ec786c',1,'dftfe::geoOptCell']]], + ['d_5feigendofhandlerindex_203',['d_eigenDofHandlerIndex',['../classdftfe_1_1dft_class.html#a29723cf9a806a4862ecc56920903c398',1,'dftfe::dftClass']]], + ['d_5feigenvectorsdensitymatrixprimehost_204',['d_eigenVectorsDensityMatrixPrimeHost',['../classdftfe_1_1dft_class.html#aa3a5be71d2cdfb701bbb78356468ddd4',1,'dftfe::dftClass']]], + ['d_5feigenvectorsflattenedhost_205',['d_eigenVectorsFlattenedHost',['../classdftfe_1_1dft_class.html#ab7cee2e03b589e6f2f68ad64aff19cd6',1,'dftfe::dftClass']]], + ['d_5feigenvectorsrotfracdensityflattenedhost_206',['d_eigenVectorsRotFracDensityFlattenedHost',['../classdftfe_1_1dft_class.html#a67722b7768258d9f3d6ec27e259fcd18',1,'dftfe::dftClass']]], + ['d_5felementidsinatomcompactsupport_207',['d_elementIdsInAtomCompactSupport',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a0ec84533d1d663e8547a9fd30fbf55ca',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['d_5felementindexesinatomcompactsupport_208',['d_elementIndexesInAtomCompactSupport',['../classdftfe_1_1_atom_centered_spherical_function_container.html#ae70c3a3ea8fcc61cd6a8f7cf1ee54c1e',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['d_5felementonefielditeratorsinatomcompactsupport_209',['d_elementOneFieldIteratorsInAtomCompactSupport',['../classdftfe_1_1_atom_centered_spherical_function_container.html#afe85b319effc9a56311c25d85faeb0dd',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['d_5felpaautotunehandle_210',['d_elpaAutoTuneHandle',['../classdftfe_1_1elpa_scala_manager.html#aa9869e548886c095212f38a6018220eb',1,'dftfe::elpaScalaManager']]], + ['d_5felpahandle_211',['d_elpaHandle',['../classdftfe_1_1elpa_scala_manager.html#a3b9c25fbce1c79e0f9574b280d73b370',1,'dftfe::elpaScalaManager']]], + ['d_5felpahandlepartialeigenvec_212',['d_elpaHandlePartialEigenVec',['../classdftfe_1_1elpa_scala_manager.html#a6468feddead89df77bd7488cbf459d22',1,'dftfe::elpaScalaManager']]], + ['d_5felpascala_213',['d_elpaScala',['../classdftfe_1_1dft_class.html#abdb9e503d2e158fc88ec518110bd0647',1,'dftfe::dftClass']]], + ['d_5fenergydispersion_214',['d_energyDispersion',['../classdftfe_1_1dispersion_correction.html#a4be5e12dbd849702578ea1ca5d91f8cc',1,'dftfe::dispersionCorrection']]], + ['d_5fentropicenergy_215',['d_entropicEnergy',['../classdftfe_1_1dft_class.html#a0cd0886f759e54f07d7e6e3219233251',1,'dftfe::dftClass']]], + ['d_5feta_216',['d_eta',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a75443c183389a12a699ff6ef877104c7',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fetaalphazerochk_217',['d_etaAlphaZeroChk',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a199816c55b7c868101570a2de47ac09d',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fetachk_218',['d_etaChk',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a2f0125f79752692319953f719bac2c8d',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fetapchk_219',['d_etaPChk',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#ad9872f6748abe451b429876608c5b7bc',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fexcdensityobjptr_220',['d_excDensityObjPtr',['../classdftfe_1_1exc_manager.html#a0373d0ec7f9264f7bdd09accd83a927d',1,'dftfe::excManager']]], + ['d_5fexcmanagerptr_221',['d_excManagerPtr',['../classdftfe_1_1dft_class.html#a482c90e76115238fffb99932d7f39298',1,'dftfe::dftClass::d_excManagerPtr'],['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#aacfc4151a68ecc97960a6b886f4455c5',1,'dftfe::KohnShamHamiltonianOperator::d_excManagerPtr'],['../classdftfe_1_1oncv_class.html#a2738e2bf3c4dc8f7442b33ab046ce8da',1,'dftfe::oncvClass::d_excManagerPtr']]], + ['d_5fexcwavefunctionobjptr_222',['d_excWavefunctionObjPtr',['../classdftfe_1_1exc_manager.html#a3b91244f66e77473a0c459429cb72eca',1,'dftfe::excManager']]], + ['d_5fexternalforceonatom_223',['d_externalForceOnAtom',['../classdftfe_1_1geo_opt_ion.html#a27beac3d1bee61189811e30d1e39e6a6',1,'dftfe::geoOptIon::d_externalForceOnAtom'],['../classdftfe_1_1nudged_elastic_band_class.html#aa2d65005c0516e7674d57724bf2f8fdd',1,'dftfe::nudgedElasticBandClass::d_externalForceOnAtom']]], + ['d_5fextrapdensity_5ft0_224',['d_extrapDensity_t0',['../classdftfe_1_1molecular_dynamics_class.html#a8bde636796b49365cdc3a215ddfdb9c2',1,'dftfe::molecularDynamicsClass']]], + ['d_5fextrapdensity_5ftmin1_225',['d_extrapDensity_tmin1',['../classdftfe_1_1molecular_dynamics_class.html#a37316e763f3c708d775a7432040c6575',1,'dftfe::molecularDynamicsClass']]], + ['d_5fextrapdensity_5ftmin2_226',['d_extrapDensity_tmin2',['../classdftfe_1_1molecular_dynamics_class.html#a8ada6a69d199ad492f72448696d26c28',1,'dftfe::molecularDynamicsClass']]], + ['d_5fextrapdensity_5ftp1_227',['d_extrapDensity_tp1',['../classdftfe_1_1molecular_dynamics_class.html#a657743da1abca53b39457e5143ea0262',1,'dftfe::molecularDynamicsClass']]], + ['d_5ffamilytype_228',['d_familyType',['../classdftfe_1_1exc_density_base_class.html#ad216c19787dbf919828579db6c22147f',1,'dftfe::excDensityBaseClass']]], + ['d_5ffeorder_229',['d_FEOrder',['../classdftfe_1_1triangulation_manager.html#a46a63ae6926ead6c1705e070fae8d2d3',1,'dftfe::triangulationManager']]], + ['d_5ffeorderplusonequadratureid_230',['d_feOrderPlusOneQuadratureId',['../classdftfe_1_1dft_class.html#a336ba8b2f95384b8bd0d68693dc27bd7',1,'dftfe::dftClass']]], + ['d_5ffeorderplusonequadratureid_231',['d_feOrderPlusOneQuadratureID',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a70b3e3b146adea376177866682bb2426',1,'dftfe::KohnShamHamiltonianOperator']]], + ['d_5fflattenedcelldofindextoprocessdofindexmap_232',['d_flattenedCellDofIndexToProcessDofIndexMap',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a04816960baf839a3f2e969234fac9372',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fflattenedlocalghostindices_233',['d_flattenedLocalGhostIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a7b63b985635c654ff1854e3a6269b11d',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fflattenedlocaltargetindices_234',['d_flattenedLocalTargetIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a337d4240b8dda304237f4ca0e5a2f48e',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fflattenednonlocalcelldofindextoprocessdofindexmap_235',['d_flattenedNonLocalCellDofIndexToProcessDofIndexMap',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a496e1ec27c6d20a7f311da1553db9fe6',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fflattenednonlocalcelldofindextoprocessdofindexvector_236',['d_flattenedNonLocalCellDofIndexToProcessDofIndexVector',['../classdftfe_1_1_atomic_centered_non_local_operator.html#ac923bdf319d7ccad31f79b727be78a35',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fflattopwidthsautomeshmove_237',['d_flatTopWidthsAutoMeshMove',['../classdftfe_1_1dft_class.html#a883df10abd5f57e5b6cf9c5235157bb1',1,'dftfe::dftClass']]], + ['d_5ffloatingnuclearcharges_238',['d_floatingNuclearCharges',['../classdftfe_1_1oncv_class.html#a8ebeccc08a262e72b97892cb3529b4ba',1,'dftfe::oncvClass']]], + ['d_5fforceatomsfloating_239',['d_forceAtomsFloating',['../classdftfe_1_1force_class.html#a87659785db429ed309bb0b618465147c',1,'dftfe::forceClass']]], + ['d_5fforcedispersion_240',['d_forceDispersion',['../classdftfe_1_1dispersion_correction.html#a3fdc1b5970428d99496cf74f76c2ddac',1,'dftfe::dispersionCorrection']]], + ['d_5fforcedofhandlerindex_241',['d_forceDofHandlerIndex',['../classdftfe_1_1dft_class.html#a671c2ba43181ee6d84be5befe38d5fac',1,'dftfe::dftClass::d_forceDofHandlerIndex'],['../classdftfe_1_1force_class.html#a9846537fe37ef12d969ed1fae292e050',1,'dftfe::forceClass::d_forceDofHandlerIndex']]], + ['d_5fforcedofhandlerindexelectro_242',['d_forceDofHandlerIndexElectro',['../classdftfe_1_1dft_class.html#ac0453761dd1b5b2d060f3dee33612659',1,'dftfe::dftClass::d_forceDofHandlerIndexElectro'],['../classdftfe_1_1force_class.html#a047aeb91f0e6369eb681f9bf85aca34b',1,'dftfe::forceClass::d_forceDofHandlerIndexElectro']]], + ['d_5ffreeenergy_243',['d_freeEnergy',['../classdftfe_1_1dft_class.html#a02c7c252ab62832173e398b486969b8d',1,'dftfe::dftClass']]], + ['d_5ffreeenergyinitial_244',['d_freeEnergyInitial',['../classdftfe_1_1dft_class.html#a75d60db7637b22b58e725139233981f2',1,'dftfe::dftClass']]], + ['d_5ffunccptr_245',['d_funcCPtr',['../classdftfe_1_1exc_density_g_g_a_class.html#a17d3e0016d39543da8ddfe8bc8e7e0dd',1,'dftfe::excDensityGGAClass::d_funcCPtr'],['../classdftfe_1_1exc_density_l_d_a_class.html#a2576c1af9bc8a54fc24cc212ab644de1',1,'dftfe::excDensityLDAClass::d_funcCPtr'],['../classdftfe_1_1exc_manager.html#a199ab9aacf7bb1a16820e8fbda1d76aa',1,'dftfe::excManager::d_funcCPtr']]], + ['d_5ffunctionalvalueafteralphupdatechk_246',['d_functionalValueAfterAlphUpdateChk',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a4a9a3d7790de5e021ebed763d18860c6',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5ffunctionvaluechk_247',['d_functionValueChk',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a1f96a445239776cfffdba6ec989726ab',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5ffuncxptr_248',['d_funcXPtr',['../classdftfe_1_1exc_density_g_g_a_class.html#a1e07c2543a430bb0557c128abef3080e',1,'dftfe::excDensityGGAClass::d_funcXPtr'],['../classdftfe_1_1exc_density_l_d_a_class.html#ac209e690fa6c1d235cbe5846dfe3aa98',1,'dftfe::excDensityLDAClass::d_funcXPtr'],['../classdftfe_1_1exc_manager.html#a7fb0af37538a1ace097224b00f229b50',1,'dftfe::excManager::d_funcXPtr']]], + ['d_5ffvcontainervals_249',['d_fvcontainerVals',['../classdftfe_1_1dft_class.html#a24b78b9b0d6814ba2a05e143e34e703b',1,'dftfe::dftClass']]], + ['d_5ffvspin0containervals_250',['d_fvSpin0containerVals',['../classdftfe_1_1dft_class.html#ade7a232c78ea7c5bd06380e4e780d6a8',1,'dftfe::dftClass']]], + ['d_5ffvspin1containervals_251',['d_fvSpin1containerVals',['../classdftfe_1_1dft_class.html#aa9a022aeca3e855b9da2806bac854115',1,'dftfe::dftClass']]], + ['d_5fgamma_252',['d_gamma',['../classdftfe_1_1kerker_solver_problem.html#ac770e9465e5a9e6ac0aaacf4ebb79fe6',1,'dftfe::kerkerSolverProblem']]], + ['d_5fgaussianconstantsautomesh_253',['d_gaussianConstantsAutoMesh',['../classdftfe_1_1dft_class.html#a0d50c2fae94b598ff411042fe5eb47ab',1,'dftfe::dftClass']]], + ['d_5fgaussianconstantsforce_254',['d_gaussianConstantsForce',['../classdftfe_1_1dft_class.html#a594a254262432e134dc160aad61cb30e',1,'dftfe::dftClass']]], + ['d_5fgaussianmovementatomsnetdisplacements_255',['d_gaussianMovementAtomsNetDisplacements',['../classdftfe_1_1dft_class.html#ad2a9784d708c2272e76216545465bb47',1,'dftfe::dftClass']]], + ['d_5fgaussianmovepar_256',['d_gaussianMovePar',['../classdftfe_1_1dft_class.html#ab6a9731bb5024d791410a53a9fa0c8a1',1,'dftfe::dftClass']]], + ['d_5fgaussianweightsvecatoms_257',['d_gaussianWeightsVecAtoms',['../classdftfe_1_1force_class.html#acc00594003ae6a4f7290f431e497e0d0',1,'dftfe::forceClass']]], + ['d_5fgeneratorflattopwidths_258',['d_generatorFlatTopWidths',['../classdftfe_1_1dft_class.html#ad1565e5aa7de006a87353291527c3481',1,'dftfe::dftClass']]], + ['d_5fgeooptcellptr_259',['d_geoOptCellPtr',['../classdftfe_1_1geometry_optimization_class.html#aa2a0b2dc0b2a9a0d174e02103bbcc938',1,'dftfe::geometryOptimizationClass']]], + ['d_5fgeooptionptr_260',['d_geoOptIonPtr',['../classdftfe_1_1geometry_optimization_class.html#aee795c99093b17544f4a01988ed8094d',1,'dftfe::geometryOptimizationClass']]], + ['d_5fghostatomcenteredfnidscurrentprocess_261',['d_ghostAtomCenteredFnIdsCurrentProcess',['../classdftfe_1_1_atomic_centered_non_local_operator.html#afb26fae76f9f5059ac3ad616e1aa6c71',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fghostdatacopysingleprec_262',['d_ghostDataCopySinglePrec',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a0322c0ac2392404e26af06bf2b04e89d',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['d_5fghostindices_263',['d_ghostIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#abbcf5235cccbcf54a141af1ee76b5e33',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fghostindicesoptimizedindexset_264',['d_ghostIndicesOptimizedIndexSet',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a3445a9a657fb1fc1c2ef508c549eb116',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fghostindicessetstl_265',['d_ghostIndicesSetSTL',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a51ea76e1a0c02cbfe11a885cf7f62b58',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fghostprocids_266',['d_ghostProcIds',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#ac06633929a7d7e1b456f9086533c4039',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fghostsize_267',['d_ghostSize',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a150e2e3ad77ead1a4ac5ff400e66b666',1,'dftfe::utils::mpi::MPICommunicatorP2P::d_ghostSize'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a426be4dbcedf0f7d910459c99ea8cc6f',1,'dftfe::linearAlgebra::MultiVector::d_ghostSize']]], + ['d_5fghostsphericalfunctionidscurrentprocess_268',['d_ghostSphericalFunctionIdsCurrentProcess',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a62d14c069ebed2e922f2059247719caf',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fgllquadratureid_269',['d_gllQuadratureId',['../classdftfe_1_1dft_class.html#af6e9eb7392e7f564fa7fcfadf8a7460d',1,'dftfe::dftClass']]], + ['d_5fglobalatomsforces_270',['d_globalAtomsForces',['../classdftfe_1_1force_class.html#a204c44dd2f864a6c5232c06d1b43cb25',1,'dftfe::forceClass']]], + ['d_5fglobalchargeidtoimageidmap_271',['d_globalChargeIdToImageIdMap',['../classdftfe_1_1dft_class.html#ad76ed8f8a99211075579a5afbf0da7a8',1,'dftfe::dftClass']]], + ['d_5fglobalchargeidtoimageidmaptrunc_272',['d_globalChargeIdToImageIdMapTrunc',['../classdftfe_1_1dft_class.html#a219a5febbb5adb6ad6cbe874e2b55a6a',1,'dftfe::dftClass']]], + ['d_5fglobalsize_273',['d_globalSize',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ad492e621daee826eb4a2958007784461',1,'dftfe::linearAlgebra::MultiVector']]], + ['d_5fglobaltimer_274',['d_globalTimer',['../classdftfe_1_1dft_class.html#a8659226718bed0ecfe02036d403b2df1',1,'dftfe::dftClass']]], + ['d_5fgradbquadvaluesallatoms_275',['d_gradbQuadValuesAllAtoms',['../classdftfe_1_1dft_class.html#aef610773dc9874b384d1f83a04cb33b0',1,'dftfe::dftClass']]], + ['d_5fgraddensityinquadvalues_276',['d_gradDensityInQuadValues',['../classdftfe_1_1dft_class.html#abcb758848bc5ed1b4cac153e9893ed0d',1,'dftfe::dftClass']]], + ['d_5fgraddensityoutquadvalues_277',['d_gradDensityOutQuadValues',['../classdftfe_1_1dft_class.html#a8ec82b2b3b0ffcddcd5d1ad0a77f946e',1,'dftfe::dftClass']]], + ['d_5fgraddensityresidualquadvalues_278',['d_gradDensityResidualQuadValues',['../classdftfe_1_1dft_class.html#a2a6b61d57bd3350fb64b188cbb30b74f',1,'dftfe::dftClass']]], + ['d_5fgraddensitytotalinvalueslpspquad_279',['d_gradDensityTotalInValuesLpspQuad',['../classdftfe_1_1dft_class.html#a550d0ce90e9bdb77aaae710d0ba4afcb',1,'dftfe::dftClass']]], + ['d_5fgraddensitytotaloutvalueslpspquad_280',['d_gradDensityTotalOutValuesLpspQuad',['../classdftfe_1_1dft_class.html#aede871a660ba81cfd15a278b0d2f6d5d',1,'dftfe::dftClass']]], + ['d_5fgradient_281',['d_gradient',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#af0f57d0bce993e73c58b7c64093f1ead',1,'dftfe::BFGSNonLinearSolver::d_gradient'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#ad53a9cda238ee0d2d8cf69051e9163dc',1,'dftfe::cgPRPNonLinearSolver::d_gradient'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a7c5d486398e0716ca74522b1816f5030',1,'dftfe::LBFGSNonLinearSolver::d_gradient']]], + ['d_5fgradientnew_282',['d_gradientNew',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a1529cb9e6a96a3572368d143c5a72ff4',1,'dftfe::BFGSNonLinearSolver::d_gradientNew'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a53ac5521d92033613d74fdbb05e5067b',1,'dftfe::LBFGSNonLinearSolver::d_gradientNew']]], + ['d_5fgradmax_283',['d_gradMax',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a19e32314d9a5b17267e5d5aef39c7f9d',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fgradrhoatomsvalues_284',['d_gradRhoAtomsValues',['../classdftfe_1_1dft_class.html#aa71b55ec13de53830302b76f043a5fbe',1,'dftfe::dftClass']]], + ['d_5fgradrhoatomsvaluesseparate_285',['d_gradRhoAtomsValuesSeparate',['../classdftfe_1_1dft_class.html#a218bb3d2d5c42a7f53e1ca282f417de0',1,'dftfe::dftClass']]], + ['d_5fgradrhocore_286',['d_gradRhoCore',['../classdftfe_1_1dft_class.html#a8f42b97e9101af78bf62cecc05dbb79f',1,'dftfe::dftClass']]], + ['d_5fgradrhocoreatoms_287',['d_gradRhoCoreAtoms',['../classdftfe_1_1dft_class.html#a28090da5dc0bd826f4c649d22716cbc2',1,'dftfe::dftClass']]], + ['d_5fgroundstatedensityhistory_288',['d_groundStateDensityHistory',['../classdftfe_1_1dft_class.html#a636cbd24eacb02bf20f451171629eedf',1,'dftfe::dftClass']]], + ['d_5fgroundstateenergy_289',['d_groundStateEnergy',['../classdftfe_1_1dft_class.html#a3b97815dc0b13e8a04e821e682b8a2ad',1,'dftfe::dftClass']]], + ['d_5fhamiltoniancouplingmatrixentriesupdated_290',['d_HamiltonianCouplingMatrixEntriesUpdated',['../classdftfe_1_1oncv_class.html#a8ca482794f227efab454a99eda661b8c',1,'dftfe::oncvClass']]], + ['d_5fhamiltonianindex_291',['d_HamiltonianIndex',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a145e27bead04530cddf0c19e8c801b82',1,'dftfe::KohnShamHamiltonianOperator']]], + ['d_5fhelmholtzdofhandlerindexelectro_292',['d_helmholtzDofHandlerIndexElectro',['../classdftfe_1_1dft_class.html#ae6772f3b8e1aab08b3ee0aaac1b5b0d8',1,'dftfe::dftClass']]], + ['d_5fhessian_293',['d_hessian',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#aeb1227cca7dfda527559169a7b8a11dc',1,'dftfe::BFGSNonLinearSolver']]], + ['d_5fhessianrhoatomsvalues_294',['d_hessianRhoAtomsValues',['../classdftfe_1_1dft_class.html#a442460b9d3ff02798df282ae90c616a8',1,'dftfe::dftClass']]], + ['d_5fhessianrhoatomsvaluesseparate_295',['d_hessianRhoAtomsValuesSeparate',['../classdftfe_1_1dft_class.html#ab610bb08ff662fffab80d0962a92de35',1,'dftfe::dftClass']]], + ['d_5fhessianrhocore_296',['d_hessianRhoCore',['../classdftfe_1_1dft_class.html#a10812785d680913b518880afb32956dd',1,'dftfe::dftClass']]], + ['d_5fhessianrhocoreatoms_297',['d_hessianRhoCoreAtoms',['../classdftfe_1_1dft_class.html#a5df068f5db4c2574467f7957f1a894fe',1,'dftfe::dftClass']]], + ['d_5fhessianscaled_298',['d_hessianScaled',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#ae8b2eabdf6b4c3de9e676cd0dc8d5563',1,'dftfe::BFGSNonLinearSolver']]], + ['d_5fimageatompositions_299',['d_imageAtomPositions',['../classdftfe_1_1triangulation_manager.html#ad8d8dd15417c5dec2f6e63ca316268ae',1,'dftfe::triangulationManager']]], + ['d_5fimagecharges_300',['d_imageCharges',['../classdftfe_1_1dft_class.html#a6027f7e869d90695a5c2c11f960118a6',1,'dftfe::dftClass']]], + ['d_5fimagechargestrunc_301',['d_imageChargesTrunc',['../classdftfe_1_1dft_class.html#a65f3070df26e891972a591ade4fc12c2',1,'dftfe::dftClass']]], + ['d_5fimageerror_302',['d_ImageError',['../classdftfe_1_1nudged_elastic_band_class.html#a962c6bfb54d7d3a789010cfae0141134',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fimagefreeze_303',['d_imageFreeze',['../classdftfe_1_1nudged_elastic_band_class.html#abe6ef3969fd3e7dbf4045432b272b53a',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fimageids_304',['d_imageIds',['../classdftfe_1_1dft_class.html#aaaef770c3b16536363a0504050eb2f36',1,'dftfe::dftClass::d_imageIds'],['../classdftfe_1_1oncv_class.html#aad1ba1a5e18d3ec784fd93e38c9ac508',1,'dftfe::oncvClass::d_imageIds'],['../classdftfe_1_1triangulation_manager.html#a13ef0f0ec4ac277f48e58e1727354d1d',1,'dftfe::triangulationManager::d_imageIds']]], + ['d_5fimageidstrunc_305',['d_imageIdsTrunc',['../classdftfe_1_1dft_class.html#a9638ae4f5312995755f856135456bb3b',1,'dftfe::dftClass']]], + ['d_5fimagepositions_306',['d_imagePositions',['../classdftfe_1_1dft_class.html#a7155834f651c4ee462ad31d9fbec308d',1,'dftfe::dftClass::d_imagePositions'],['../classdftfe_1_1oncv_class.html#a6b635304de3012a25a92bc675dc86cd0',1,'dftfe::oncvClass::d_imagePositions']]], + ['d_5fimagepositionsautomesh_307',['d_imagePositionsAutoMesh',['../classdftfe_1_1dft_class.html#aba949adc18df7b2bc1963b17a0834040',1,'dftfe::dftClass']]], + ['d_5fimagepositionstrunc_308',['d_imagePositionsTrunc',['../classdftfe_1_1dft_class.html#a39f276a9f3ea627bf032e08648dccc9e',1,'dftfe::dftClass']]], + ['d_5fincrementaldisplacement_309',['d_incrementalDisplacement',['../classdftfe_1_1mesh_movement_class.html#a0b26796ff4b8c0273f9e7031a3193b54',1,'dftfe::meshMovementClass']]], + ['d_5finhomogenities_310',['d_inhomogenities',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#aa6b6125cf2d8df946e76f9253d8b4b4e',1,'dftfe::dftUtils::constraintMatrixInfo']]], + ['d_5finversejacobianbasisdata_311',['d_inverseJacobianBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ae1b66a03fb2865602c6d25980e711062',1,'dftfe::basis::FEBasisOperations']]], + ['d_5finversejacobiandata_312',['d_inverseJacobianData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ad9501d82d85fef0f6c6bb9b0ec710eed',1,'dftfe::basis::FEBasisOperations']]], + ['d_5finversemassvectorbasistype_313',['d_inverseMassVectorBasisType',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a977447dca3eed9fc1d7aa19be27ec978',1,'dftfe::basis::FEBasisOperations']]], + ['d_5finversemassvectorcoefftype_314',['d_inverseMassVectorCoeffType',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a0d2423fcc165f62d886b2f8a5352744a',1,'dftfe::basis::FEBasisOperations']]], + ['d_5finversesqrtmassvectorbasistype_315',['d_inverseSqrtMassVectorBasisType',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a4fd9de851528ff56497f625902a8576f',1,'dftfe::basis::FEBasisOperations']]], + ['d_5finversesqrtmassvectorcoefftype_316',['d_inverseSqrtMassVectorCoeffType',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a15028dbbf5215f6d3cd65a5666e62e6a',1,'dftfe::basis::FEBasisOperations']]], + ['d_5finvjacderexcwithsigmatimesgradrhojxw_317',['d_invJacderExcWithSigmaTimesGradRhoJxW',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a06eed73a165deafcd29d253fe0abb483',1,'dftfe::KohnShamHamiltonianOperator']]], + ['d_5finvjackpointtimesjxw_318',['d_invJacKPointTimesJxW',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#ad3c831b07758d00e6a951cd4ae471b89',1,'dftfe::KohnShamHamiltonianOperator']]], + ['d_5fionrelaxflagsfile_319',['d_ionRelaxFlagsFile',['../classdftfe_1_1nudged_elastic_band_class.html#ab7936651f089adf79d6e669b2f6e8a2f',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fisatomsgaussiandisplacementsreadfromfile_320',['d_isAtomsGaussianDisplacementsReadFromFile',['../classdftfe_1_1dft_class.html#a569901ed4c38e980d12d0d6a3e9ffc6f',1,'dftfe::dftClass']]], + ['d_5fiscgrestartduetolargeincrement_321',['d_isCGRestartDueToLargeIncrement',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#abe84a79c9cd09527fa5ec9e55f180ed2',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fiscurvatureonlylinesearchstoppingcondition_322',['d_isCurvatureOnlyLineSearchStoppingCondition',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#af45e762c2c0ba0d2f9f949e4dd16e933',1,'dftfe::BFGSNonLinearSolver::d_isCurvatureOnlyLineSearchStoppingCondition'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a93a473fa34cd529ee78531857241369f',1,'dftfe::cgPRPNonLinearSolver::d_isCurvatureOnlyLineSearchStoppingCondition'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#ad74170653511af8302966b8a157f443f',1,'dftfe::LBFGSNonLinearSolver::d_isCurvatureOnlyLineSearchStoppingCondition']]], + ['d_5fisdevicetompitaskbindingsetinternally_323',['d_isDeviceToMPITaskBindingSetInternally',['../classdftfe_1_1dftfe_wrapper.html#af16d96e8b2ed6fef3a74c3ae8efe8fe5',1,'dftfe::dftfeWrapper']]], + ['d_5fisexternalpotcorrhamiltoniancomputed_324',['d_isExternalPotCorrHamiltonianComputed',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#ac9ed164dbdb8ec359093854a0179626a',1,'dftfe::KohnShamHamiltonianOperator']]], + ['d_5fisfastconstraintsinitialized_325',['d_isFastConstraintsInitialized',['../classdftfe_1_1poisson_solver_problem.html#a1bcb5a0b762691c3fe701a159516a914',1,'dftfe::poissonSolverProblem']]], + ['d_5fisfirstfilteringcall_326',['d_isFirstFilteringCall',['../classdftfe_1_1dft_class.html#a4c756cef31551c3b06cdd9e9a57e094a',1,'dftfe::dftClass']]], + ['d_5fisgradsmearedchargerhs_327',['d_isGradSmearedChargeRhs',['../classdftfe_1_1poisson_solver_problem.html#ae1d7d5d864f8ea8f7d8be4b31cc3febe',1,'dftfe::poissonSolverProblem']]], + ['d_5fismalloccalled_328',['d_isMallocCalled',['../classdftfe_1_1_atomic_centered_non_local_operator.html#aaeb4042ecf72f7be111c61008304ddca',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fismeanvalueconstraintcomputed_329',['d_isMeanValueConstraintComputed',['../classdftfe_1_1poisson_solver_problem.html#aa15288b47a579269d5cd69d78742b089',1,'dftfe::poissonSolverProblem']]], + ['d_5fisparallelmesh_330',['d_isParallelMesh',['../classdftfe_1_1mesh_movement_class.html#a875c0410f0da9f9b9aa7ce14ef21653d',1,'dftfe::meshMovementClass']]], + ['d_5fisreset_331',['d_isReset',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#ac47fa73a5e7b24cabecaaa33d327856b',1,'dftfe::BFGSNonLinearSolver']]], + ['d_5fisrestart_332',['d_isRestart',['../classdftfe_1_1geometry_optimization_class.html#a8217db24c89ff2578923e29340cc4084',1,'dftfe::geometryOptimizationClass::d_isRestart'],['../classdftfe_1_1geo_opt_cell.html#a82b1268f5d9704970a98561787dcdbcb',1,'dftfe::geoOptCell::d_isRestart'],['../classdftfe_1_1geo_opt_ion.html#a6b353f6e55df8777d6ca0c718db54b87',1,'dftfe::geoOptIon::d_isRestart'],['../classdftfe_1_1nudged_elastic_band_class.html#ab68f815c98b88a920b18faca4835f2f0',1,'dftfe::nudgedElasticBandClass::d_isRestart']]], + ['d_5fisrestartgroundstatecalcfromchk_333',['d_isRestartGroundStateCalcFromChk',['../classdftfe_1_1dft_class.html#a8aeedc5b34df146be5feeeae8362e386',1,'dftfe::dftClass']]], + ['d_5fisreusesmearedchargerhs_334',['d_isReuseSmearedChargeRhs',['../classdftfe_1_1poisson_solver_problem.html#ac776ac9d1cfe1542abf5570f358a1862',1,'dftfe::poissonSolverProblem']]], + ['d_5fisscfrestart_335',['d_isScfRestart',['../classdftfe_1_1geo_opt_cell.html#a2f922fd6b6d94bdeadb8962f8003cdd5',1,'dftfe::geoOptCell::d_isScfRestart'],['../classdftfe_1_1geo_opt_ion.html#a3df897fe10878115f14970e8a75182a3',1,'dftfe::geoOptIon::d_isScfRestart']]], + ['d_5fisspinpolarized_336',['d_isSpinPolarized',['../classdftfe_1_1exc_density_base_class.html#ad3d25095266a10622860e3ef598a04bc',1,'dftfe::excDensityBaseClass::d_isSpinPolarized'],['../classdftfe_1_1exc_wavefunction_base_class.html#a059aa323a2a2f091e475a4acbce68169',1,'dftfe::excWavefunctionBaseClass::d_isSpinPolarized']]], + ['d_5fisstoresmearedchargerhs_337',['d_isStoreSmearedChargeRhs',['../classdftfe_1_1poisson_solver_problem.html#a60a7df343df3d2f3a78aa7a1f4001672',1,'dftfe::poissonSolverProblem']]], + ['d_5fiter_338',['d_iter',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a718c3bd54ee6c725299a3e9bf3dc9cf6',1,'dftfe::BFGSNonLinearSolver::d_iter'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a6b0321afee22f5656aed55945e0237c6',1,'dftfe::cgPRPNonLinearSolver::d_iter'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#acc7dfc313f4fddb4d4dcf7d2f0588f43',1,'dftfe::LBFGSNonLinearSolver::d_iter']]], + ['d_5fjxwbasisdata_339',['d_JxWBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aac62adc59654093c9e5038ca67f52048',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fjxwdata_340',['d_JxWData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a352d87046945ee787cbc1b5537562665',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fkmax_341',['d_kmax',['../classdftfe_1_1nudged_elastic_band_class.html#a5b41557b3143f60e07012215c0a238c7',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fkmin_342',['d_kmin',['../classdftfe_1_1nudged_elastic_band_class.html#a2a1a50bac3f5908ef4e1689c08800541',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fkohnshamdftoperatorptr_343',['d_kohnShamDFTOperatorPtr',['../classdftfe_1_1dft_class.html#a9d98e71aed72faef7a00b3104d8f4efe',1,'dftfe::dftClass']]], + ['d_5fkohnshamdftoperatorsinitialized_344',['d_kohnShamDFTOperatorsInitialized',['../classdftfe_1_1dft_class.html#aa0f56e5a21608c436818c0a180af4e51',1,'dftfe::dftClass']]], + ['d_5fkpointcoordinates_345',['d_kPointCoordinates',['../classdftfe_1_1_atomic_centered_non_local_operator.html#adb4685a852ee35b327c389b2d9dad935',1,'dftfe::AtomicCenteredNonLocalOperator::d_kPointCoordinates'],['../classdftfe_1_1dft_class.html#a2e262405171475be8b65d72541d24681',1,'dftfe::dftClass::d_kPointCoordinates'],['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a107b1c5fd384cfc8b0ffee574c79a495',1,'dftfe::KohnShamHamiltonianOperator::d_kPointCoordinates']]], + ['d_5fkpointindex_346',['d_kPointIndex',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a5e76be5e6a79e26b9da9e2e2c5b2e4cd',1,'dftfe::AtomicCenteredNonLocalOperator::d_kPointIndex'],['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a6e133840ab3df9511eeb73b5191065de',1,'dftfe::KohnShamHamiltonianOperator::d_kPointIndex']]], + ['d_5fkpointweights_347',['d_kPointWeights',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a22986f4db5a676baefc06e6f007a3971',1,'dftfe::AtomicCenteredNonLocalOperator::d_kPointWeights'],['../classdftfe_1_1dft_class.html#a7e60c141495589213db9b7c01f2d4c50',1,'dftfe::dftClass::d_kPointWeights'],['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#ac21b6e6e5aa155a9e4573488539244b9',1,'dftfe::KohnShamHamiltonianOperator::d_kPointWeights']]], + ['d_5flatticevectors_348',['d_latticeVectors',['../classdftfe_1_1dispersion_correction.html#a50a8f0425aff0f2f44774992f1c0b0ef',1,'dftfe::dispersionCorrection']]], + ['d_5flength_349',['d_Length',['../classdftfe_1_1nudged_elastic_band_class.html#acb1cb7a6d1d6576dbc5297ac6d387ac0',1,'dftfe::nudgedElasticBandClass']]], + ['d_5flinesearchdampingparameter_350',['d_lineSearchDampingParameter',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#aa9ab3ee1426bbc28ccf09d76fc45bfc8',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5flinesearchmaxiterations_351',['d_lineSearchMaxIterations',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a7e22714dbd8a2aa6e7cb031850501f0e',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5flinesearchrestartiterchk_352',['d_lineSearchRestartIterChk',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a9239f33841bba07d23cd225069f345d1',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5flinesearchtolerance_353',['d_lineSearchTolerance',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a4546110c4fbe7f1c698592c737dde676',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5flocalcontributionquadratureid_354',['d_localContributionQuadratureId',['../classdftfe_1_1oncv_class.html#a6aeed0a559268316259ae9acf8d77f0a',1,'dftfe::oncvClass']]], + ['d_5flocalghostindicesranges_355',['d_localGhostIndicesRanges',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#ad47babcd45738e8339fd59fad47254b4',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5flocalindexmapunflattenedtoflattened_356',['d_localIndexMapUnflattenedToFlattened',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#ac3d1ba5f64e850c14c2727c1d99fe7e7',1,'dftfe::dftUtils::constraintMatrixInfo']]], + ['d_5flocally_5fowned_5fdofs_357',['d_locally_owned_dofs',['../classdftfe_1_1mesh_movement_class.html#a43df4250323f8df5949c6b5aa0368d5c',1,'dftfe::meshMovementClass']]], + ['d_5flocally_5fowned_5fdofsforce_358',['d_locally_owned_dofsForce',['../classdftfe_1_1force_class.html#aaee4fe06b33971d1fa79499b9276eeac',1,'dftfe::forceClass']]], + ['d_5flocally_5fowned_5fdofsforceelectro_359',['d_locally_owned_dofsForceElectro',['../classdftfe_1_1force_class.html#a9bf44409aa1737463dcda02fd5ba6b42',1,'dftfe::forceClass']]], + ['d_5flocally_5frelevant_5fdofs_360',['d_locally_relevant_dofs',['../classdftfe_1_1mesh_movement_class.html#a1f6612ccd78e8842b414b05305be919b',1,'dftfe::meshMovementClass']]], + ['d_5flocally_5frelevant_5fdofsforce_361',['d_locally_relevant_dofsForce',['../classdftfe_1_1force_class.html#ae0d4f29e68ff8ee38a7fd35ec6139f5b',1,'dftfe::forceClass']]], + ['d_5flocally_5frelevant_5fdofsforceelectro_362',['d_locally_relevant_dofsForceElectro',['../classdftfe_1_1force_class.html#adab0cf4089dfbad4e2467a994637b84c',1,'dftfe::forceClass']]], + ['d_5flocallyownedatomcenteredfnidscurrentprocess_363',['d_locallyOwnedAtomCenteredFnIdsCurrentProcess',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a18f5c354739c0e139e2f8d31b07eb0be',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5flocallyownedcells_364',['d_locallyOwnedCells',['../classdftfe_1_1_atomic_centered_non_local_operator.html#ac2ca9ba0fa578a7fa8487b1b7d60ba64',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5flocallyownedrange_365',['d_locallyOwnedRange',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a8ce1d236d9221c7907081c63bfea882d',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5flocallyownedsize_366',['d_locallyOwnedSize',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a9b9bfaab9fbe825ed03696d81eb50e9d',1,'dftfe::basis::FEBasisOperations::d_locallyOwnedSize'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#ab6228c7bfe1c3b9769fc6d9216ffa299',1,'dftfe::utils::mpi::MPICommunicatorP2P::d_locallyOwnedSize'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a570b3bc1a9aebb0ef254f921f86e7c75',1,'dftfe::linearAlgebra::MultiVector::d_locallyOwnedSize']]], + ['d_5flocallyownedsphericalfunctionidscurrentprocess_367',['d_locallyOwnedSphericalFunctionIdsCurrentProcess',['../classdftfe_1_1_atomic_centered_non_local_operator.html#aef76186855b8984ff8cc211c9e9e30e0',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5flocallyrelevantdofsprefined_368',['d_locallyRelevantDofsPRefined',['../classdftfe_1_1dft_class.html#a97bd50af5677776dbba2b3f8bd098bd0',1,'dftfe::dftClass']]], + ['d_5flocallyrelevantdofsrhonodal_369',['d_locallyRelevantDofsRhoNodal',['../classdftfe_1_1dft_class.html#a8b70a2acac6e535661ee2e9e47e7430b',1,'dftfe::dftClass']]], + ['d_5flocalsize_370',['d_localSize',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ad019a2bb7c896cb1ccd5b20259588302',1,'dftfe::basis::FEBasisOperations::d_localSize'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a6afa6ecf193e5843a5aa6b1ee00b1d08',1,'dftfe::linearAlgebra::MultiVector::d_localSize']]], + ['d_5flocalvselfs_371',['d_localVselfs',['../classdftfe_1_1dft_class.html#a9aaeb24b1fc261f4dc3ff01b0613d4cf',1,'dftfe::dftClass']]], + ['d_5flowerboundunwantedspectrum_372',['d_lowerBoundUnWantedSpectrum',['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#a8cb760ab7fd8b527ab710f0328447195',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver']]], + ['d_5flowerboundwantedspectrum_373',['d_lowerBoundWantedSpectrum',['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#ac30968f1172a04229462ad8e1f8c1786',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver']]], + ['d_5flpspquadratureid_374',['d_lpspQuadratureId',['../classdftfe_1_1dft_class.html#ab24ca6c5c00e03dfbf48ffdcdfe82180',1,'dftfe::dftClass']]], + ['d_5flpspquadratureid_375',['d_lpspQuadratureID',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#ab1dde385854ad05e1f8479c28655ca19',1,'dftfe::KohnShamHamiltonianOperator']]], + ['d_5flpspquadratureidelectro_376',['d_lpspQuadratureIdElectro',['../classdftfe_1_1dft_class.html#accb4a3bca89d442e1b58230e87b075ad',1,'dftfe::dftClass']]], + ['d_5flquantumnumber_377',['d_lQuantumNumber',['../classdftfe_1_1_atom_centered_spherical_function_base.html#ae57d5fc1c2283a6d0054a1737047990d',1,'dftfe::AtomCenteredSphericalFunctionBase::d_lQuantumNumber'],['../classdftfe_1_1_atom_pseudo_wavefunctions.html#aabd3f022a6ad08305c9f247cb06c3156',1,'dftfe::AtomPseudoWavefunctions::d_lQuantumNumber']]], + ['d_5fmaginnodalvaluesread_378',['d_magInNodalValuesRead',['../classdftfe_1_1dft_class.html#a83bb13789dd8e52d36670892005e5b4f',1,'dftfe::dftClass']]], + ['d_5fmassvectorbasistype_379',['d_massVectorBasisType',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#afb99ecdad54055682651032641aeb862',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fmassvectorcoefftype_380',['d_massVectorCoeffType',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a2c9148f697611468cade15e51bb5185e',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fmatrixfreedataprefined_381',['d_matrixFreeDataPRefined',['../classdftfe_1_1dft_class.html#a60d5498d60241935f07a89b124713d4c',1,'dftfe::dftClass']]], + ['d_5fmatrixfreedataprefinedptr_382',['d_matrixFreeDataPRefinedPtr',['../classdftfe_1_1kerker_solver_problem.html#a930ce1f10eea6aa5b1ce43a39069b16b',1,'dftfe::kerkerSolverProblem']]], + ['d_5fmatrixfreedataptr_383',['d_matrixFreeDataPtr',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a1a4b151b04347eaf2e8f3d0ef2c2cda5',1,'dftfe::basis::FEBasisOperations::d_matrixFreeDataPtr'],['../classdftfe_1_1poisson_solver_problem.html#a8aa614c653bd31d05e6629ef3361539a',1,'dftfe::poissonSolverProblem::d_matrixFreeDataPtr']]], + ['d_5fmatrixfreequadraturecomponent_384',['d_matrixFreeQuadratureComponent',['../classdftfe_1_1kerker_solver_problem.html#ab544d2a6318a518f86da4379b7fa8a3c',1,'dftfe::kerkerSolverProblem']]], + ['d_5fmatrixfreequadraturecomponentax_385',['d_matrixFreeQuadratureComponentAX',['../classdftfe_1_1poisson_solver_problem.html#a015e7f776db9fbc999af2c484fb73240',1,'dftfe::poissonSolverProblem']]], + ['d_5fmatrixfreequadraturecomponentrhsdensity_386',['d_matrixFreeQuadratureComponentRhsDensity',['../classdftfe_1_1poisson_solver_problem.html#ac032e893676a48e03ed99e2b9ef88c70',1,'dftfe::poissonSolverProblem']]], + ['d_5fmatrixfreevectorcomponent_387',['d_matrixFreeVectorComponent',['../classdftfe_1_1kerker_solver_problem.html#af9b1a26fb749e5095f4df2e48cddb87e',1,'dftfe::kerkerSolverProblem::d_matrixFreeVectorComponent'],['../classdftfe_1_1poisson_solver_problem.html#a258bc9b794467342e66483c731828bf1',1,'dftfe::poissonSolverProblem::d_matrixFreeVectorComponent']]], + ['d_5fmax_5frefinement_5fsteps_388',['d_max_refinement_steps',['../classdftfe_1_1triangulation_manager.html#a9feefd6d3da3f8af09485fad39f24af3',1,'dftfe::triangulationManager']]], + ['d_5fmaximumatomforcetoberelaxed_389',['d_maximumAtomForceToBeRelaxed',['../classdftfe_1_1geo_opt_ion.html#aba5316a313daa4cebf9902d682d8c502',1,'dftfe::geoOptIon::d_maximumAtomForceToBeRelaxed'],['../classdftfe_1_1nudged_elastic_band_class.html#a8356b6070aba09e4165e621d6db2e7cb',1,'dftfe::nudgedElasticBandClass::d_maximumAtomForceToBeRelaxed']]], + ['d_5fmaximumnebiteration_390',['d_maximumNEBIteration',['../classdftfe_1_1nudged_elastic_band_class.html#a53d09a3950b79e31236335be16e4bcd7',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fmaxnumberiterations_391',['d_maxNumberIterations',['../classdftfe_1_1non_linear_solver.html#ae5a39fa69e5e7a0d7e691a323d60d7c5',1,'dftfe::nonLinearSolver']]], + ['d_5fmaxnumpaststeps_392',['d_maxNumPastSteps',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#abe1666323dc47f7572ae3aba1bc7529a',1,'dftfe::LBFGSNonLinearSolver']]], + ['d_5fmaxsingleatomcontribution_393',['d_maxSingleAtomContribution',['../classdftfe_1_1_atomic_centered_non_local_operator.html#ab9099ad236e119002f8d3d05420abbef',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fmaxsolutionincrementlinf_394',['d_maxSolutionIncrementLinf',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a3dcc22256c9459a63d2282c1b337efca',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fmaxsteplength_395',['d_maxStepLength',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#afce586958619c458c9ee1eaa1f6ca9b1',1,'dftfe::LBFGSNonLinearSolver']]], + ['d_5fmaxwalltime_396',['d_MaxWallTime',['../classdftfe_1_1molecular_dynamics_class.html#ab60987d5d3ad4394735b905b6b8e34ea',1,'dftfe::molecularDynamicsClass']]], + ['d_5fmdstartwalltime_397',['d_MDstartWallTime',['../classdftfe_1_1molecular_dynamics_class.html#a3f0340a036ac99035095bc36d8e41302',1,'dftfe::molecularDynamicsClass']]], + ['d_5fmeanvalueconstraintnodeid_398',['d_meanValueConstraintNodeId',['../classdftfe_1_1poisson_solver_problem.html#aa7a78180a6978150595909fd80b17793',1,'dftfe::poissonSolverProblem']]], + ['d_5fmeanvalueconstraintprocid_399',['d_meanValueConstraintProcId',['../classdftfe_1_1poisson_solver_problem.html#a6d95149e3191d1602e627fe77347c465',1,'dftfe::poissonSolverProblem']]], + ['d_5fmeanvalueconstraintvec_400',['d_meanValueConstraintVec',['../classdftfe_1_1poisson_solver_problem.html#aaffe5cee1178daa53bed85e43ffcb8bc',1,'dftfe::poissonSolverProblem']]], + ['d_5fmesh_401',['d_mesh',['../classdftfe_1_1dft_class.html#a73b1c25a6e797dc0fc735c2fa91c7780',1,'dftfe::dftClass']]], + ['d_5fmindist_402',['d_minDist',['../classdftfe_1_1dft_class.html#ad6b5c78f8e310ae895646006ef06ea64',1,'dftfe::dftClass']]], + ['d_5fmixinghistory_403',['d_mixingHistory',['../classdftfe_1_1_mixing_scheme.html#a74a4db0b761489bd0630acc49e99bb50',1,'dftfe::MixingScheme']]], + ['d_5fmixingparameter_404',['d_mixingParameter',['../classdftfe_1_1_mixing_scheme.html#addea341a108cef5b018816a8c845acfa',1,'dftfe::MixingScheme']]], + ['d_5fmixingscheme_405',['d_mixingScheme',['../classdftfe_1_1dft_class.html#aed9a70dfc8304ae446ba8e33e85b1b0d',1,'dftfe::dftClass']]], + ['d_5fmonopole_406',['d_monopole',['../classdftfe_1_1dft_class.html#a16dd5d49d9dcffe45810247233f583ae',1,'dftfe::dftClass']]], + ['d_5fmpi_5fcomm_5fdomain_407',['d_mpi_comm_domain',['../classdftfe_1_1_mixing_scheme.html#a176e558e0e3988b4d94ca07dab57b8c1',1,'dftfe::MixingScheme']]], + ['d_5fmpi_5fcomm_5fparent_408',['d_mpi_comm_parent',['../classdftfe_1_1dftfe_wrapper.html#ae78abac49d454592d4c731a5089d523a',1,'dftfe::dftfeWrapper::d_mpi_comm_parent'],['../classdftfe_1_1_mixing_scheme.html#a3a329fb91bb3c26ea4cad2de7c3191f1',1,'dftfe::MixingScheme::d_mpi_comm_parent']]], + ['d_5fmpi_5fcommunicator_409',['d_mpi_communicator',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a41a54d52aa7b420ecb2f00c8514f18ff',1,'dftfe::AtomicCenteredNonLocalOperator::d_mpi_communicator'],['../classdftfe_1_1elpa_scala_manager.html#a9cc7b6cbe08105d7b55e08e9ae2f54f4',1,'dftfe::elpaScalaManager::d_mpi_communicator']]], + ['d_5fmpicomm_410',['d_mpiComm',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#adabbb8f4b98d8dee27e57109ae646176',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fmpicommdomain_411',['d_mpiCommDomain',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a6444c6669cf9a5947f4ccc53583eaa13',1,'dftfe::KohnShamHamiltonianOperator']]], + ['d_5fmpicommparent_412',['d_mpiCommParent',['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#a8b5ca06477f15c51462872176b302d3b',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::d_mpiCommParent'],['../classdftfe_1_1dealii_linear_solver.html#a841f49c1dce2cbb93a1175d588ca3e86',1,'dftfe::dealiiLinearSolver::d_mpiCommParent'],['../classdftfe_1_1dft_class.html#a09b07547e0eaee1c1342f02842bc3ca7',1,'dftfe::dftClass::d_mpiCommParent'],['../classdftfe_1_1energy_calculator.html#a11079032ba12a67208ec91c097b8c4c5',1,'dftfe::energyCalculator::d_mpiCommParent'],['../classdftfe_1_1force_class.html#a7b391910d0c87744bd2dae5791efc711',1,'dftfe::forceClass::d_mpiCommParent'],['../classdftfe_1_1geometry_optimization_class.html#a204f898de4b7824aa11027c018ab6076',1,'dftfe::geometryOptimizationClass::d_mpiCommParent'],['../classdftfe_1_1kerker_solver_problem.html#afcae328d1e9fe37ea230d1add707e07c',1,'dftfe::kerkerSolverProblem::d_mpiCommParent'],['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#aca83eff4e259ac395fcad67b73751563',1,'dftfe::KohnShamHamiltonianOperator::d_mpiCommParent'],['../classdftfe_1_1mesh_movement_class.html#abb7a0c9acce31edcbdf43c4df9c613c7',1,'dftfe::meshMovementClass::d_mpiCommParent'],['../classdftfe_1_1molecular_dynamics_class.html#af811ba25df12b4ee5d78f60740fac47f',1,'dftfe::molecularDynamicsClass::d_mpiCommParent'],['../classdftfe_1_1nudged_elastic_band_class.html#ae1ea6dd0940f428b81ee77571ddeeffa',1,'dftfe::nudgedElasticBandClass::d_mpiCommParent'],['../classdftfe_1_1oncv_class.html#a6e9da80974a710bb8aacc9fd0b5897a0',1,'dftfe::oncvClass::d_mpiCommParent'],['../classdftfe_1_1symmetry_class.html#aa4439cb1cb4336c38849f5a5dcd7dbe6',1,'dftfe::symmetryClass::d_mpiCommParent'],['../classdftfe_1_1triangulation_manager.html#ad0a4176cce3cd85089b0ec956ced8a6a',1,'dftfe::triangulationManager::d_mpiCommParent'],['../classdftfe_1_1vself_bins_manager.html#a99e67ab70d28e5e88fae92bc6cf75156',1,'dftfe::vselfBinsManager::d_mpiCommParent']]], + ['d_5fmpicommunicator_413',['d_mpiCommunicator',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a64c5d3e109234e1a27714491a96e2f66',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['d_5fmpicommunicatorp2p_414',['d_mpiCommunicatorP2P',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a545b7608701e51a9266e7931f3e7f171',1,'dftfe::linearAlgebra::MultiVector']]], + ['d_5fmpiintercommkpts_415',['d_mpiInterCommKpts',['../classdftfe_1_1vself_bins_manager.html#a0ba6354893119d01250c50ed95fec07a',1,'dftfe::vselfBinsManager']]], + ['d_5fmpipatternp2p_416',['d_mpiPatternP2P',['../classdftfe_1_1_atomic_centered_non_local_operator.html#ab03822f62ed593e51cfd551063df80e7',1,'dftfe::AtomicCenteredNonLocalOperator::d_mpiPatternP2P'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a7588012a0911973ce6b8f37471c63f3d',1,'dftfe::utils::mpi::MPICommunicatorP2P::d_mpiPatternP2P'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a1768b1bc69805c7678e18e3ab083af6e',1,'dftfe::linearAlgebra::MultiVector::d_mpiPatternP2P']]], + ['d_5fmyrank_417',['d_myRank',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a3dbe6ad87aefe9f6fa77e57291d84b40',1,'dftfe::utils::mpi::MPIPatternP2P::d_myRank'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#afa9579e24b14a4838f791f54ccd8fd6b',1,'dftfe::utils::mpi::MPIRequestersNBX::d_myRank']]], + ['d_5fn_5fmpi_5fprocesses_418',['d_n_mpi_processes',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a494d366619dbfdff8d6b2b74296c3ba7',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fnatoms_419',['d_natoms',['../classdftfe_1_1dispersion_correction.html#a11194cfb4c6d88353d0edaf81e6d6c56',1,'dftfe::dispersionCorrection']]], + ['d_5fncells_420',['d_nCells',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#acee161af9afa4353f5f86ef3aee75357',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fndofspercell_421',['d_nDofsPerCell',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a1b9891ed9115b502b7dffe7626185a75',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fnearestatomdistances_422',['d_nearestAtomDistances',['../classdftfe_1_1dft_class.html#a9a64e0f5df3846c5c98741c04e7b4066',1,'dftfe::dftClass::d_nearestAtomDistances'],['../classdftfe_1_1triangulation_manager.html#af10e6e70c694c568d134b544db077beb',1,'dftfe::triangulationManager::d_nearestAtomDistances']]], + ['d_5fnearestatomids_423',['d_nearestAtomIds',['../classdftfe_1_1dft_class.html#a05f683a62b13fee2eb08d85f6d478992',1,'dftfe::dftClass']]], + ['d_5fnebimageno_424',['d_NEBImageno',['../classdftfe_1_1nudged_elastic_band_class.html#a254bee45ca7620bedbe88905cfbaea5a',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fnetfloatingdispsincelastbinsupdate_425',['d_netFloatingDispSinceLastBinsUpdate',['../classdftfe_1_1dft_class.html#aad0be10acbd2fc3e81e8ba912893b4b4',1,'dftfe::dftClass']]], + ['d_5fnetfloatingdispsincelastcheckforsmearedchargeoverlaps_426',['d_netFloatingDispSinceLastCheckForSmearedChargeOverlaps',['../classdftfe_1_1dft_class.html#aac08ce58c970bc8ce9500600dd1f977e',1,'dftfe::dftClass']]], + ['d_5fnglobalindices_427',['d_nGlobalIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a5ce017253677905b9764b9467e7b5ae5',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fnlpspcutoff_428',['d_nlPSPCutOff',['../classdftfe_1_1dft_class.html#a5166bbbc0a34ff21dd812f5011570c6a',1,'dftfe::dftClass']]], + ['d_5fnlpspquadratureid_429',['d_nlpspQuadratureId',['../classdftfe_1_1dft_class.html#ab729b8950cb8b0bd2f6483fe4ccfa7a9',1,'dftfe::dftClass::d_nlpspQuadratureId'],['../classdftfe_1_1oncv_class.html#a55c2903d5287cee0a8b7509011ab63a3',1,'dftfe::oncvClass::d_nlpspQuadratureId']]], + ['d_5fnnggaptr_430',['d_NNGGAPtr',['../classdftfe_1_1exc_density_g_g_a_class.html#ac9bfea193be431af9c0d758e29328719',1,'dftfe::excDensityGGAClass']]], + ['d_5fnnldaptr_431',['d_NNLDAPtr',['../classdftfe_1_1exc_density_l_d_a_class.html#acb12cd960799bf3752fabb344da73df6',1,'dftfe::excDensityLDAClass']]], + ['d_5fnoconstraints_432',['d_noConstraints',['../classdftfe_1_1dft_class.html#ab680212c1d8ada40434d71592215ba11',1,'dftfe::dftClass']]], + ['d_5fnohistory_433',['d_noHistory',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#ae9b00b28be777d9fffde48d9747f7dd3',1,'dftfe::LBFGSNonLinearSolver']]], + ['d_5fnompthreads_434',['d_nOMPThreads',['../classdftfe_1_1dft_class.html#a4c5cd9560f1b4c6df0acfa99f69be7ed',1,'dftfe::dftClass::d_nOMPThreads'],['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#af78bf5c15f93b21fc6dacacb82aa8cd1',1,'dftfe::basis::FEBasisOperations::d_nOMPThreads'],['../classdftfe_1_1oncv_class.html#add8351afa43934871ee87f88528738f2',1,'dftfe::oncvClass::d_nOMPThreads']]], + ['d_5fnonatomicwavefunctions_435',['d_nonAtomicWaveFunctions',['../classdftfe_1_1dft_class.html#a8ef1408341304ab0789c79b180e3cda4',1,'dftfe::dftClass']]], + ['d_5fnonlinearsolverptr_436',['d_nonLinearSolverPtr',['../classdftfe_1_1geo_opt_cell.html#ae0bce252b6520a3cc7369f56071a87f5',1,'dftfe::geoOptCell::d_nonLinearSolverPtr'],['../classdftfe_1_1geo_opt_ion.html#a60155b26ab4f7e4908d5fd51435f30d6',1,'dftfe::geoOptIon::d_nonLinearSolverPtr'],['../classdftfe_1_1nudged_elastic_band_class.html#a1206b0aa6bfd1bf606ff5174b732849a',1,'dftfe::nudgedElasticBandClass::d_nonLinearSolverPtr']]], + ['d_5fnonlocalelemidtocellidvector_437',['d_nonlocalElemIdToCellIdVector',['../classdftfe_1_1_atomic_centered_non_local_operator.html#aa5a8f8c7a651ff3455c2ac3187ef1918',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fnonlocaloperator_438',['d_nonLocalOperator',['../classdftfe_1_1oncv_class.html#a408dddade5687b6b6ce79466a5770031',1,'dftfe::oncvClass']]], + ['d_5fnonlocalpseudopotentialconstants_439',['d_nonLocalPseudoPotentialConstants',['../classdftfe_1_1oncv_class.html#a2bb7fb6a248eeacd45d53aebd4b4580c',1,'dftfe::oncvClass']]], + ['d_5fnonperiodicdensitydofhandlerindexelectro_440',['d_nonPeriodicDensityDofHandlerIndexElectro',['../classdftfe_1_1dft_class.html#a89d149242d903880a0cb8e85df0137be',1,'dftfe::dftClass']]], + ['d_5fnontrivialallcellssphericalfnalphatoelemidmap_441',['d_nonTrivialAllCellsSphericalFnAlphaToElemIdMap',['../classdftfe_1_1_atomic_centered_non_local_operator.html#afc99d31f53b841276418d8e0f7bea7e1',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fnontrivialsphericalfnpercell_442',['d_nonTrivialSphericalFnPerCell',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a8ea5c5653b918ca0818b8fa322056c16',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fnontrivialsphericalfnscellstartindex_443',['d_nonTrivialSphericalFnsCellStartIndex',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a466936c9114ebb35714af2bd88eeb1a3',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fnormalizationconstant_444',['d_NormalizationConstant',['../classdftfe_1_1_atom_centered_spherical_function_bessel.html#abf4f42fb4dffcc3f095603ca6a3ae04d',1,'dftfe::AtomCenteredSphericalFunctionBessel::d_NormalizationConstant'],['../classdftfe_1_1_atom_centered_spherical_function_gaussian.html#ae9b7017b2ef3f3cd1b35e3bda5acdfbf',1,'dftfe::AtomCenteredSphericalFunctionGaussian::d_NormalizationConstant'],['../classdftfe_1_1_atom_centered_spherical_function_sinc.html#a6e30fb733607296c2ac6d851b3a04265',1,'dftfe::AtomCenteredSphericalFunctionSinc::d_NormalizationConstant']]], + ['d_5fnormdeltaxnew_445',['d_normDeltaXnew',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#aea8f48d819f7bb57069c3cff8f4e995b',1,'dftfe::BFGSNonLinearSolver::d_normDeltaXnew'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a68416410054d92217fb2cf5ddbdd2bea',1,'dftfe::LBFGSNonLinearSolver::d_normDeltaXnew']]], + ['d_5fnprocs_446',['d_nprocs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a4042ea44feb3eef4995519f8e49232a0',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fnquadspercell_447',['d_nQuadsPerCell',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#af254f8776e44345e54ba42af30054473',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fnquantumnumber_448',['d_nQuantumNumber',['../classdftfe_1_1_atom_pseudo_wavefunctions.html#a3d6a9c9e64b92fafd42f99f88e4c50fb',1,'dftfe::AtomPseudoWavefunctions']]], + ['d_5fnuclearchargequadratureidelectro_449',['d_nuclearChargeQuadratureIdElectro',['../classdftfe_1_1oncv_class.html#a76afe24947f2b7a476a70396c8ac4d88',1,'dftfe::oncvClass']]], + ['d_5fnumbercellsaccumnonlocalatoms_450',['d_numberCellsAccumNonLocalAtoms',['../classdftfe_1_1_atomic_centered_non_local_operator.html#ac55773c544949ec6d80f464fde445c93',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fnumbercellsforeachatom_451',['d_numberCellsForEachAtom',['../classdftfe_1_1_atomic_centered_non_local_operator.html#aadf6e2a9a0dea26611bda11646eb8dbd',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fnumberglobalcharges_452',['d_numberGlobalCharges',['../classdftfe_1_1molecular_dynamics_class.html#aa2b9f2e415d422c97b528b4fe8b8d407',1,'dftfe::molecularDynamicsClass::d_numberGlobalCharges'],['../classdftfe_1_1nudged_elastic_band_class.html#a879b013f2d1ed953e7a377bc3550d5ee',1,'dftfe::nudgedElasticBandClass::d_numberGlobalCharges']]], + ['d_5fnumbernodesperelement_453',['d_numberNodesPerElement',['../classdftfe_1_1_atomic_centered_non_local_operator.html#ade8e032c6f30378c31bc6787a0360892',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fnumberofimages_454',['d_numberOfImages',['../classdftfe_1_1nudged_elastic_band_class.html#a5d6d53ead1f39d280a2c6fea6d420a04',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fnumberofsteps_455',['d_numberofSteps',['../classdftfe_1_1molecular_dynamics_class.html#ad997d731747e9324ebf4d5a69f6d5cbe',1,'dftfe::molecularDynamicsClass']]], + ['d_5fnumberunknowns_456',['d_numberUnknowns',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a71ab9d52b4d07a23014cf4963ed3cb81',1,'dftfe::BFGSNonLinearSolver::d_numberUnknowns'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#af7d8a883dc0daa96af10c157d6dadb8f',1,'dftfe::cgPRPNonLinearSolver::d_numberUnknowns'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#aa6533d0ce835610dfc32d4ae1289d19f',1,'dftfe::LBFGSNonLinearSolver::d_numberUnknowns']]], + ['d_5fnumberwavefunctions_457',['d_numberWaveFunctions',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a6d30940456111448106fe12010aca73a',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fnumcontiguousranges_458',['d_numContiguousRanges',['../classdftfe_1_1utils_1_1_optimized_index_set.html#a17de4b23bb168d8ed37ba7aeab70737c',1,'dftfe::utils::OptimizedIndexSet']]], + ['d_5fnumeigenvalues_459',['d_numEigenValues',['../classdftfe_1_1dft_class.html#abe0de5558bf26ad09ee487d4c87e5068',1,'dftfe::dftClass::d_numEigenValues'],['../classdftfe_1_1oncv_class.html#ac33ddb8c9a905e62d647f9cb1e2c9fdd',1,'dftfe::oncvClass::d_numEigenValues']]], + ['d_5fnumeigenvaluesrr_460',['d_numEigenValuesRR',['../classdftfe_1_1dft_class.html#a33de6e068f610eeebd4f2098cfaae27c',1,'dftfe::dftClass']]], + ['d_5fnumentriesbefore_461',['d_numEntriesBefore',['../classdftfe_1_1utils_1_1_optimized_index_set.html#a2781e7bb5a00b4070d2763faeb4bf1f6',1,'dftfe::utils::OptimizedIndexSet']]], + ['d_5fnumghostindices_462',['d_numGhostIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a740ed90d1fffb4125f7525bacaa16215',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fnumghostindicesinghostprocs_463',['d_numGhostIndicesInGhostProcs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a8792c5aff7312adb801f76a2171137d8',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fnumghostprocs_464',['d_numGhostProcs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a5b47f067d5b11c867306e29219fdfc9d',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fnumlocallyownedindices_465',['d_numLocallyOwnedIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#abf8e6ac472f892abcda0f6c896070ff8',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fnumownedindicesfortargetprocs_466',['d_numOwnedIndicesForTargetProcs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#ab511a6d8eff3bdea79fc1b54338c419f',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fnumpaststeps_467',['d_numPastSteps',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a9a7e524c7194c300fcfb6ad01ea9210d',1,'dftfe::LBFGSNonLinearSolver']]], + ['d_5fnumprocessors_468',['d_numProcessors',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a9e68d7e9d19fede69f3d74090bb136de',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['d_5fnumradialsphericalfunctions_469',['d_numRadialSphericalFunctions',['../classdftfe_1_1_atom_centered_spherical_function_container.html#abbf0bdfa7784298d1392be1a616950cd',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['d_5fnumsphericalfunctions_470',['d_numSphericalFunctions',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a77269574e812177291c6368ed78e9bab',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['d_5fnumtargetprocs_471',['d_numTargetProcs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a0f897b13e30392681614a75e08d83f1e',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5fnumvectors_472',['d_numVectors',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a30c65fafd196ca11edc0e51e37b1a963',1,'dftfe::linearAlgebra::MultiVector']]], + ['d_5fnumvectorsinternal_473',['d_numVectorsInternal',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a37e7a5ecf99646dc4a341c2429fafab3',1,'dftfe::KohnShamHamiltonianOperator']]], + ['d_5fnvectors_474',['d_nVectors',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a1f709bb1976395e42296b72f55b7225b',1,'dftfe::basis::FEBasisOperations']]], + ['d_5foncvclassptr_475',['d_oncvClassPtr',['../classdftfe_1_1dft_class.html#a6fb0a53f5e3a611766046f411ed0cd2a',1,'dftfe::dftClass::d_oncvClassPtr'],['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a0d3cf9aae2649e402122b37e531da28b',1,'dftfe::KohnShamHamiltonianOperator::d_oncvClassPtr']]], + ['d_5foncvnonlocaloperator_476',['d_ONCVnonLocalOperator',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a163723bc5ec24aa0c19a43227ab2a845',1,'dftfe::KohnShamHamiltonianOperator']]], + ['d_5foncvnonlocalprojectortimesvectorblock_477',['d_ONCVNonLocalProjectorTimesVectorBlock',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#abfedea1896921b544a2e2abb797b8900',1,'dftfe::KohnShamHamiltonianOperator']]], + ['d_5foptimizationsolver_478',['d_optimizationSolver',['../classdftfe_1_1nudged_elastic_band_class.html#a193e2c6433108f755fe4953ea2486052',1,'dftfe::nudgedElasticBandClass']]], + ['d_5foptimizermaxionupdatestep_479',['d_optimizermaxIonUpdateStep',['../classdftfe_1_1nudged_elastic_band_class.html#a815a698b2a662da92f259cd4c60db84b',1,'dftfe::nudgedElasticBandClass']]], + ['d_5foptimizertolerance_480',['d_optimizertolerance',['../classdftfe_1_1nudged_elastic_band_class.html#a94ff51154576b59ee71626caf881e6cb',1,'dftfe::nudgedElasticBandClass']]], + ['d_5foptmode_481',['d_optMode',['../classdftfe_1_1geometry_optimization_class.html#aec8daebd141b1c1a08b2bc4a911c03ce',1,'dftfe::geometryOptimizationClass']]], + ['d_5fparalleltriacurrentrefinement_482',['d_parallelTriaCurrentRefinement',['../classdftfe_1_1triangulation_manager.html#a15ae414eb53bdbc0c6299cd93a2d50d6',1,'dftfe::triangulationManager']]], + ['d_5fparalleltriangulationmoved_483',['d_parallelTriangulationMoved',['../classdftfe_1_1triangulation_manager.html#af848e84bbbbf907e2376833985ed0c6e',1,'dftfe::triangulationManager']]], + ['d_5fparalleltriangulationunmoved_484',['d_parallelTriangulationUnmoved',['../classdftfe_1_1triangulation_manager.html#a8e378e596831bf6e65f80e7c9a4e082a',1,'dftfe::triangulationManager']]], + ['d_5fperformmixing_485',['d_performMixing',['../classdftfe_1_1_mixing_scheme.html#aa93f3a5ce7e3465503d21662452dc4a7',1,'dftfe::MixingScheme']]], + ['d_5fperformmpireduce_486',['d_performMPIReduce',['../classdftfe_1_1_mixing_scheme.html#ad9eeca363d6df6bd2c85e382a28c2ea5',1,'dftfe::MixingScheme']]], + ['d_5fperiodicimagecoord_487',['d_periodicImageCoord',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a24b0d5d730629fb9c7d7c02bc3fb0e5f',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['d_5fperiodicity_5fvector_488',['d_periodicity_vector',['../classdftfe_1_1mesh_movement_class.html#a49552db7090bead1d950d34bcb953c14',1,'dftfe::meshMovementClass']]], + ['d_5fphiext_489',['d_phiExt',['../classdftfe_1_1dft_class.html#a8f867325a36a9a3d434f59fbcea9eede',1,'dftfe::dftClass']]], + ['d_5fphiextdofhandlerindexelectro_490',['d_phiExtDofHandlerIndexElectro',['../classdftfe_1_1dft_class.html#a031a845678da650a5f0ce2b9afabe7e4',1,'dftfe::dftClass']]], + ['d_5fphiinquadvalues_491',['d_phiInQuadValues',['../classdftfe_1_1dft_class.html#aafaa3608dae2d7d496d34618ea94aa14',1,'dftfe::dftClass']]], + ['d_5fphioutquadvalues_492',['d_phiOutQuadValues',['../classdftfe_1_1dft_class.html#a4610779d5c116b91355ef726c8a507bb',1,'dftfe::dftClass']]], + ['d_5fphiprime_493',['d_phiPrime',['../classdftfe_1_1dft_class.html#ac043deff965a3543c591aebb476b94cb',1,'dftfe::dftClass']]], + ['d_5fphiprimedofhandlerindexelectro_494',['d_phiPrimeDofHandlerIndexElectro',['../classdftfe_1_1dft_class.html#a1cfc05a8e84d96f4536f346b875afc24',1,'dftfe::dftClass']]], + ['d_5fphiprimesolverproblem_495',['d_phiPrimeSolverProblem',['../classdftfe_1_1dft_class.html#a9eed5666c24babd2ddbbc22f2d0ddf91',1,'dftfe::dftClass']]], + ['d_5fphitotalsolverproblem_496',['d_phiTotalSolverProblem',['../classdftfe_1_1dft_class.html#a28053790675dbee2b5d38f952303c733',1,'dftfe::dftClass']]], + ['d_5fphitotaxquadratureidelectro_497',['d_phiTotAXQuadratureIdElectro',['../classdftfe_1_1dft_class.html#a0918c9f98173741b9fa8d774ca7ff0e9',1,'dftfe::dftClass']]], + ['d_5fphitotdofhandlerindexelectro_498',['d_phiTotDofHandlerIndexElectro',['../classdftfe_1_1dft_class.html#a961dbed4f99c690dbb39351e57aacd8c',1,'dftfe::dftClass']]], + ['d_5fphitotrhoin_499',['d_phiTotRhoIn',['../classdftfe_1_1dft_class.html#acb869e3a39d249b3c8a4312410d6e002',1,'dftfe::dftClass']]], + ['d_5fphitotrhoout_500',['d_phiTotRhoOut',['../classdftfe_1_1dft_class.html#a09e442d4dfdfd8095f44e0c349428b3c',1,'dftfe::dftClass']]], + ['d_5fpreconditioner_501',['d_preconditioner',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a1982c49104564b0e9a19e9dd8d012738',1,'dftfe::LBFGSNonLinearSolver']]], + ['d_5fprecondtotaldensityresidualvector_502',['d_preCondTotalDensityResidualVector',['../classdftfe_1_1dft_class.html#a8312ef49cdf4f06ef73ece9c6b42ce5e',1,'dftfe::dftClass']]], + ['d_5fprocessgridcommunicatoractive_503',['d_processGridCommunicatorActive',['../classdftfe_1_1elpa_scala_manager.html#afc28d83833b89cac1471761b05e1eae5',1,'dftfe::elpaScalaManager']]], + ['d_5fprocessgridcommunicatoractivepartial_504',['d_processGridCommunicatorActivePartial',['../classdftfe_1_1elpa_scala_manager.html#a8c499af7fcbffeb5e483447fe27efc87',1,'dftfe::elpaScalaManager']]], + ['d_5fprocessgriddftfewrapper_505',['d_processGridDftfeWrapper',['../classdftfe_1_1elpa_scala_manager.html#ae29d540cb029b0f916cc832505f8e874',1,'dftfe::elpaScalaManager']]], + ['d_5fpseudovloc_506',['d_pseudoVLoc',['../classdftfe_1_1dft_class.html#ab76fc04f101391c9ec1e698a163c0a22',1,'dftfe::dftClass']]], + ['d_5fpseudovlocatoms_507',['d_pseudoVLocAtoms',['../classdftfe_1_1dft_class.html#abc506b04163e4673a4cd9da9a7416c7c',1,'dftfe::dftClass']]], + ['d_5fpspcutoff_508',['d_pspCutOff',['../classdftfe_1_1dft_class.html#adcb8429c36c6b93accfa018a473a4761',1,'dftfe::dftClass']]], + ['d_5fpspcutofftrunc_509',['d_pspCutOffTrunc',['../classdftfe_1_1dft_class.html#ab2ca14b336c9c6a112e372277779e26e',1,'dftfe::dftClass']]], + ['d_5fquadpoints_510',['d_quadPoints',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a92eb0587d380756113dc5b409a62e018',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fquadratureid_511',['d_quadratureID',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a440e198ab6c1838d9cf7f730ff7c8173',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fquadratureidsvector_512',['d_quadratureIDsVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a0fc157e7e94163abdd553ee53b344673',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fquadratureindex_513',['d_quadratureIndex',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a02b17a57e84b41d4568f0a6dc6d8a10b',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fquadrupole_514',['d_quadrupole',['../classdftfe_1_1dft_class.html#aff851f165c260fe9e3df0f69d73f3427',1,'dftfe::dftClass']]], + ['d_5fradialsplineobject_515',['d_radialSplineObject',['../classdftfe_1_1_atom_centered_spherical_function_spline.html#ac222c8e8d0e0c7ea949a7de2b3909ceb',1,'dftfe::AtomCenteredSphericalFunctionSpline::d_radialSplineObject'],['../classdftfe_1_1_atom_pseudo_wavefunctions.html#a59231822cd8d8e1e3c18aec9cd4f5bbb',1,'dftfe::AtomPseudoWavefunctions::d_radialSplineObject']]], + ['d_5frankcurrentlrd_516',['d_rankCurrentLRD',['../classdftfe_1_1dft_class.html#a7c66612f606ea28c83b6ff8d75bf3339',1,'dftfe::dftClass']]], + ['d_5frc_517',['d_Rc',['../classdftfe_1_1_atom_centered_spherical_function_bessel.html#a19dde64b9eb69611212cc9d5e68d4afe',1,'dftfe::AtomCenteredSphericalFunctionBessel::d_Rc'],['../classdftfe_1_1_atom_centered_spherical_function_gaussian.html#a4162ce0d3aad6749d500a1d35a3c772e',1,'dftfe::AtomCenteredSphericalFunctionGaussian::d_Rc'],['../classdftfe_1_1_atom_centered_spherical_function_sinc.html#a184e560b7a316f8b519e5deedf5bd0c7',1,'dftfe::AtomCenteredSphericalFunctionSinc::d_Rc']]], + ['d_5freciprocallatticevectors_518',['d_reciprocalLatticeVectors',['../classdftfe_1_1dft_class.html#ad6015c848a8996fb5e284fb25d675ef2',1,'dftfe::dftClass']]], + ['d_5frecvbuffers_519',['d_recvBuffers',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#ae6fd6034fdd78867323c4307f29fada6',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['d_5frecvrequests_520',['d_recvRequests',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a134c739435c152b72ca800529851da6d',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['d_5frelativeerrorjacinvapproxprevscflrd_521',['d_relativeErrorJacInvApproxPrevScfLRD',['../classdftfe_1_1dft_class.html#a56f4185e8413e1c2726fab5763ef8757',1,'dftfe::dftClass']]], + ['d_5frelaxationflags_522',['d_relaxationFlags',['../classdftfe_1_1geo_opt_cell.html#a3b06b0e863475e7dbfb99ba914c48bfb',1,'dftfe::geoOptCell::d_relaxationFlags'],['../classdftfe_1_1geo_opt_ion.html#af8765c7e7469e61051882a8ba1afd98c',1,'dftfe::geoOptIon::d_relaxationFlags'],['../classdftfe_1_1nudged_elastic_band_class.html#ab1ef2becefbd70c5d43349321725deef',1,'dftfe::nudgedElasticBandClass::d_relaxationFlags']]], + ['d_5freproducible_5foutput_523',['d_reproducible_output',['../classdftfe_1_1oncv_class.html#ac6308555ef3feac3a3da0c3ad5f8f51f',1,'dftfe::oncvClass']]], + ['d_5frequestingprocesses_524',['d_requestingProcesses',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a37d15703d5e925a20ed8b6a9c4ac5555',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['d_5frequestsaccumulateaddlocallyowned_525',['d_requestsAccumulateAddLocallyOwned',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a3ce4e3db4d5a02913d75ae5d91874fa6',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['d_5frequestsupdateghostvalues_526',['d_requestsUpdateGhostValues',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a7a138a61d0a23f609841162df00172eb',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['d_5fresidualnormpredicted_527',['d_residualNormPredicted',['../classdftfe_1_1dft_class.html#a34732b7ecb9dbab907f57583f310ec2e',1,'dftfe::dftClass']]], + ['d_5fresidualpredicted_528',['d_residualPredicted',['../classdftfe_1_1dft_class.html#a86501ba5295a6b1be83a99eccd548193',1,'dftfe::dftClass']]], + ['d_5fresidualquadvaluesptr_529',['d_residualQuadValuesPtr',['../classdftfe_1_1kerker_solver_problem.html#aebd17c996e8855e7fab76b371d883d7e',1,'dftfe::kerkerSolverProblem']]], + ['d_5frestartfilespath_530',['d_restartFilesPath',['../classdftfe_1_1geometry_optimization_class.html#a8e9828031bbaf8b69a58d03e02b26a02',1,'dftfe::geometryOptimizationClass::d_restartFilesPath'],['../classdftfe_1_1molecular_dynamics_class.html#a1db224832f4906c74d0e5ada7fa1593b',1,'dftfe::molecularDynamicsClass::d_restartFilesPath'],['../classdftfe_1_1nudged_elastic_band_class.html#a37fd4f2bb8b833b932b331659ba3d254',1,'dftfe::nudgedElasticBandClass::d_restartFilesPath']]], + ['d_5frestartflag_531',['d_restartFlag',['../classdftfe_1_1molecular_dynamics_class.html#a8331a505be25200d83804a4e4773959a',1,'dftfe::molecularDynamicsClass::d_restartFlag'],['../classdftfe_1_1nudged_elastic_band_class.html#a8edeefad251ebed37f02a9626438c82e',1,'dftfe::nudgedElasticBandClass::d_restartFlag']]], + ['d_5frestartpath_532',['d_restartPath',['../classdftfe_1_1geo_opt_cell.html#aac789c63ec9233e932960c417f8ea3a9',1,'dftfe::geoOptCell::d_restartPath'],['../classdftfe_1_1geo_opt_ion.html#af6839e4278d65fbae7e7508b392e09e7',1,'dftfe::geoOptIon::d_restartPath']]], + ['d_5frhoatomsvalues_533',['d_rhoAtomsValues',['../classdftfe_1_1dft_class.html#a5c53e5fec248a696bb1a5ccc90c10cae',1,'dftfe::dftClass']]], + ['d_5frhoatomsvaluesseparate_534',['d_rhoAtomsValuesSeparate',['../classdftfe_1_1dft_class.html#a2fa4d6cc069da6acfd0a696496a53918',1,'dftfe::dftClass']]], + ['d_5frhocore_535',['d_rhoCore',['../classdftfe_1_1dft_class.html#abf9fec77894364989c19acc2cd14bc21',1,'dftfe::dftClass']]], + ['d_5frhoinnodalvaluesread_536',['d_rhoInNodalValuesRead',['../classdftfe_1_1dft_class.html#a64eeb123019a15c8d10e39760d762dcf',1,'dftfe::dftClass']]], + ['d_5frhonodalfieldrefined_537',['d_rhoNodalFieldRefined',['../classdftfe_1_1dft_class.html#a4b9516cd029580c6f503d7249d089ce8',1,'dftfe::dftClass']]], + ['d_5frhooutnodalvaluesdistributed_538',['d_rhoOutNodalValuesDistributed',['../classdftfe_1_1dft_class.html#ac5a8e1ac17cfd38e8daf2e2ab380caea',1,'dftfe::dftClass']]], + ['d_5frhooutnodalvaluessplit_539',['d_rhoOutNodalValuesSplit',['../classdftfe_1_1dft_class.html#a3f01f3de4f55b62d7440bdde6aeb3778',1,'dftfe::dftClass']]], + ['d_5frhoq_540',['d_rhoq',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#afaa2425eac3fc483dadec8ad14aa1a2a',1,'dftfe::LBFGSNonLinearSolver']]], + ['d_5frhovaluesptr_541',['d_rhoValuesPtr',['../classdftfe_1_1poisson_solver_problem.html#a02364d3c7af2f3b51389e744599ca2eb',1,'dftfe::poissonSolverProblem']]], + ['d_5frhssmearedcharge_542',['d_rhsSmearedCharge',['../classdftfe_1_1poisson_solver_problem.html#a8125cb7bcdb6d845e91bf69126fe283d',1,'dftfe::poissonSolverProblem']]], + ['d_5frmin_543',['d_rMin',['../classdftfe_1_1_atom_centered_spherical_function_spline.html#ac4b25cbf2dc4f7ef2ab578b484953897',1,'dftfe::AtomCenteredSphericalFunctionSpline::d_rMin'],['../classdftfe_1_1_atom_centered_spherical_function_z_over_r.html#a76030f4fdd136c8fa0725887072a0012',1,'dftfe::AtomCenteredSphericalFunctionZOverR::d_rMin'],['../classdftfe_1_1_atom_pseudo_wavefunctions.html#a68230b10dc7972710ae08c634e6c5ac2',1,'dftfe::AtomPseudoWavefunctions::d_rMin']]], + ['d_5frminval_544',['d_rMinVal',['../classdftfe_1_1_atom_centered_spherical_function_bessel.html#a5609d82b980486a4d354a4ffcea63f36',1,'dftfe::AtomCenteredSphericalFunctionBessel::d_rMinVal'],['../classdftfe_1_1_atom_centered_spherical_function_gaussian.html#aa0ef9eb00904bb57b113511ff43ba772',1,'dftfe::AtomCenteredSphericalFunctionGaussian::d_rMinVal'],['../classdftfe_1_1_atom_centered_spherical_function_sinc.html#ae787a12a284f2516369ae4ce23242c5c',1,'dftfe::AtomCenteredSphericalFunctionSinc::d_rMinVal']]], + ['d_5frowidsglobal_545',['d_rowIdsGlobal',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a1b0ccb6b3e6398e82d13c39455318508',1,'dftfe::dftUtils::constraintMatrixInfo']]], + ['d_5frowidslocal_546',['d_rowIdsLocal',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a21c370cf151fda92c53ba6884a67248a',1,'dftfe::dftUtils::constraintMatrixInfo']]], + ['d_5frowsizes_547',['d_rowSizes',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a8641c32deae9ff7bcf3231b5463366f5',1,'dftfe::dftUtils::constraintMatrixInfo']]], + ['d_5fscalapackblocksize_548',['d_scalapackBlockSize',['../classdftfe_1_1elpa_scala_manager.html#a96b89758861ee97c9bbf6afbd7b04188',1,'dftfe::elpaScalaManager']]], + ['d_5fscratchfoldername_549',['d_scratchFolderName',['../classdftfe_1_1dftfe_wrapper.html#aad256b7ea420fb1d1514ca407ea2650b',1,'dftfe::dftfeWrapper']]], + ['d_5fsendbuffers_550',['d_sendBuffers',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a80c3ddada24f55799061bdaf38db4cb8',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['d_5fsendrecvbuffer_551',['d_sendRecvBuffer',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a2a05c78d79292d1cac94670c42c8e40f',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['d_5fsendrecvbuffersingleprec_552',['d_sendRecvBufferSinglePrec',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#ad3801c63c4a9825b1a48cbf72e98a1c5',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['d_5fsendrequests_553',['d_sendRequests',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a67be2152c97e45e556c0e865bdfa569a',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['d_5fserialtriacurrentrefinement_554',['d_serialTriaCurrentRefinement',['../classdftfe_1_1triangulation_manager.html#a961687232b06e134ea227a6150e5f63e',1,'dftfe::triangulationManager']]], + ['d_5fserialtriangulationunmoved_555',['d_serialTriangulationUnmoved',['../classdftfe_1_1triangulation_manager.html#ab38608e407114cee6e0367a7e72abaf0',1,'dftfe::triangulationManager']]], + ['d_5fshapefunctionbasisdata_556',['d_shapeFunctionBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ac2d2a2bfb434f15a5082feef102e5815',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fshapefunctionbasisdatatranspose_557',['d_shapeFunctionBasisDataTranspose',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#afe863f23b945b6f698994da0ecd481d3',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fshapefunctiondata_558',['d_shapeFunctionData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aa73e4b5778e261d41d1eef52d645d721',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fshapefunctiondatatranspose_559',['d_shapeFunctionDataTranspose',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ad90033cf29e9de18e0d61ad0312dfda9',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fshapefunctiongradientbasisdata_560',['d_shapeFunctionGradientBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a9a0d7bb14b2d23a1348885dcc2d8beed',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fshapefunctiongradientbasisdatatranspose_561',['d_shapeFunctionGradientBasisDataTranspose',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a917664aa715bf37f4f5a107586549b4d',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fshapefunctiongradientdata_562',['d_shapeFunctionGradientData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a3d06a629bacfddba8c4c1ce87913e049',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fshapefunctiongradientdatainternallayout_563',['d_shapeFunctionGradientDataInternalLayout',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aa22dca224c2cf04fb764553e1a5b9698',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fshapefunctiongradientdatatranspose_564',['d_shapeFunctionGradientDataTranspose',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#af1df3c89362e6c44a60cfa00cd82850c',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fsize_565',['d_size',['../classdftfe_1_1utils_1_1_memory_storage.html#a56dcd948533b248845d62b3e28fab890',1,'dftfe::utils::MemoryStorage']]], + ['d_5fsmearedchargegradientcomponentid_566',['d_smearedChargeGradientComponentId',['../classdftfe_1_1poisson_solver_problem.html#ac5a3c7d45bfbca3c4e87cd13da4b4023',1,'dftfe::poissonSolverProblem']]], + ['d_5fsmearedchargemoments_567',['d_smearedChargeMoments',['../classdftfe_1_1dft_class.html#a5ab9a8cada40663f988e242eb630f261',1,'dftfe::dftClass']]], + ['d_5fsmearedchargemomentscomputed_568',['d_smearedChargeMomentsComputed',['../classdftfe_1_1dft_class.html#a5f0a54d0fa4400d6cca1f884c732f809',1,'dftfe::dftClass']]], + ['d_5fsmearedchargequadratureid_569',['d_smearedChargeQuadratureId',['../classdftfe_1_1poisson_solver_problem.html#a4040c3b5ef8912e51cad6bcf07b36ceb',1,'dftfe::poissonSolverProblem']]], + ['d_5fsmearedchargequadratureidelectro_570',['d_smearedChargeQuadratureIdElectro',['../classdftfe_1_1dft_class.html#a427a6f75c8d02a93e2b3e75ede67f534',1,'dftfe::dftClass']]], + ['d_5fsmearedchargescaling_571',['d_smearedChargeScaling',['../classdftfe_1_1dft_class.html#af39f672c0162e54c077e279ccb2e7c31',1,'dftfe::dftClass']]], + ['d_5fsmearedchargevaluesptr_572',['d_smearedChargeValuesPtr',['../classdftfe_1_1poisson_solver_problem.html#a91a7089ec839e13a203dae71ab6ac00e',1,'dftfe::poissonSolverProblem']]], + ['d_5fsmearedchargewidthmin_573',['d_smearedChargeWidthMin',['../classdftfe_1_1dft_class.html#a98eaf644db48bb34b7897affbcd7e51f',1,'dftfe::dftClass']]], + ['d_5fsmearedchargewidths_574',['d_smearedChargeWidths',['../classdftfe_1_1dft_class.html#a3b257da36fae465dee7ef7cfeea08834',1,'dftfe::dftClass']]], + ['d_5fsolver_575',['d_solver',['../classdftfe_1_1geo_opt_cell.html#a7903376e67369a376b85c0b07d5dc6fd',1,'dftfe::geoOptCell::d_solver'],['../classdftfe_1_1geo_opt_ion.html#a610b86dbd01b25c3031c0637b677ee28',1,'dftfe::geoOptIon::d_solver'],['../classdftfe_1_1nudged_elastic_band_class.html#acee16349cbba9823de49dee833688df6',1,'dftfe::nudgedElasticBandClass::d_solver']]], + ['d_5fsolverrestart_576',['d_solverRestart',['../classdftfe_1_1geo_opt_cell.html#a058774f6262da2d80f361ad6b92bd8d1',1,'dftfe::geoOptCell::d_solverRestart'],['../classdftfe_1_1geo_opt_ion.html#a14127f79d0de5c60743d489906c2b55f',1,'dftfe::geoOptIon::d_solverRestart'],['../classdftfe_1_1nudged_elastic_band_class.html#a22ae18363e08cdc7fa10eadb84c4bffa',1,'dftfe::nudgedElasticBandClass::d_solverRestart']]], + ['d_5fsolverrestartpath_577',['d_solverRestartPath',['../classdftfe_1_1geo_opt_cell.html#a74afc9a61133ea4fe2ceb3748e9b9af7',1,'dftfe::geoOptCell::d_solverRestartPath'],['../classdftfe_1_1geo_opt_ion.html#a93c3a778b9b34dbf34c7a2b17cec5e2f',1,'dftfe::geoOptIon::d_solverRestartPath'],['../classdftfe_1_1nudged_elastic_band_class.html#ac7ccecfbe95f5a081dc9165bca0e8bb1',1,'dftfe::nudgedElasticBandClass::d_solverRestartPath']]], + ['d_5fsparsitypattern_578',['d_sparsityPattern',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a228420859b96f15f0ff6a40394afe0a6',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['d_5fsparsitypatternquadratureid_579',['d_sparsityPatternQuadratureId',['../classdftfe_1_1dft_class.html#aff6000c0ae43ca8326bc61e71262ad82',1,'dftfe::dftClass::d_sparsityPatternQuadratureId'],['../classdftfe_1_1oncv_class.html#a8448c90ddd813d9c7786d1fea7b7aee5',1,'dftfe::oncvClass::d_sparsityPatternQuadratureId']]], + ['d_5fsphericalfntimesvectorflattenedvectorlocalids_580',['d_sphericalFnTimesVectorFlattenedVectorLocalIds',['../classdftfe_1_1_atomic_centered_non_local_operator.html#ab30d3775b3968d0f861dff5f034beb64',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fsphericalfntimeswavefunmatrix_581',['d_sphericalFnTimesWavefunMatrix',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a17bc3e42a96b77aa6c333990ba8fce52',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fsphericalfunctionidsnumberingmapcurrentprocess_582',['d_sphericalFunctionIdsNumberingMapCurrentProcess',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a404f8b561d9661029eda4b3f6913a157',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fsphericalfunctionkettimesvectorpar_583',['d_SphericalFunctionKetTimesVectorPar',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a773044a338178e79eb492162b901157d',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fsphericalfunctionscontainer_584',['d_sphericalFunctionsContainer',['../classdftfe_1_1_atom_centered_spherical_function_container.html#ae49dc9b11f643672f81097adfe3a1f98',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['d_5fspinindex_585',['d_spinIndex',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a175ebda9ac277c16bd9cb60dd74fe5b7',1,'dftfe::KohnShamHamiltonianOperator']]], + ['d_5fsqrtmassvectorbasistype_586',['d_sqrtMassVectorBasisType',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a6b92365a09b17a5df561f0fbaca49fcd',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fsqrtmassvectorcoefftype_587',['d_sqrtMassVectorCoeffType',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a5bde6758412b58e3e33da3acd0765620',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fsrfo_588',['d_Srfo',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#ae7e15436c1eaa4b2d5e0bb72812db131',1,'dftfe::BFGSNonLinearSolver']]], + ['d_5fstartingtemperature_589',['d_startingTemperature',['../classdftfe_1_1molecular_dynamics_class.html#af05abe909bc1560322e75d6c99c72b1e',1,'dftfe::molecularDynamicsClass']]], + ['d_5fstartingtimestep_590',['d_startingTimeStep',['../classdftfe_1_1molecular_dynamics_class.html#ad2bcabef3672789d19b111c08394693e',1,'dftfe::molecularDynamicsClass']]], + ['d_5fstartstep_591',['d_startStep',['../classdftfe_1_1nudged_elastic_band_class.html#a5108b3c0fd69b5abe79f181098dc7732',1,'dftfe::nudgedElasticBandClass']]], + ['d_5fstatus_592',['d_status',['../classdftfe_1_1geometry_optimization_class.html#ac05d0d69ed27ea93b416bcdd0db6f259',1,'dftfe::geometryOptimizationClass']]], + ['d_5fsteepestdirectionold_593',['d_steepestDirectionOld',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a616647c3f1d5ea38a7ba386fe7e12041',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fstepaccepted_594',['d_stepAccepted',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a34b5489b80104b592b88e03c3ebee208',1,'dftfe::BFGSNonLinearSolver::d_stepAccepted'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#ad67dd840c2d267be02678357bd7b5d8a',1,'dftfe::LBFGSNonLinearSolver::d_stepAccepted']]], + ['d_5fstorage_595',['d_storage',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a522b067c042c33b939ea343d7c33c722',1,'dftfe::linearAlgebra::MultiVector']]], + ['d_5fstoredadaptiveballradius_596',['d_storedAdaptiveBallRadius',['../classdftfe_1_1vself_bins_manager.html#ab2a0e04f6fa5757b6a33e19baac589bf',1,'dftfe::vselfBinsManager']]], + ['d_5fstrainepsilon_597',['d_strainEpsilon',['../classdftfe_1_1geo_opt_cell.html#a88bfe00b950cb384805654e042e25134',1,'dftfe::geoOptCell']]], + ['d_5fstress_598',['d_stress',['../classdftfe_1_1force_class.html#a2575c210cffba1947e7652569d100602',1,'dftfe::forceClass']]], + ['d_5fstressdispersion_599',['d_stressDispersion',['../classdftfe_1_1dispersion_correction.html#a98e42b0e07134a8e493cc687be3723da',1,'dftfe::dispersionCorrection']]], + ['d_5fstresskpoints_600',['d_stressKPoints',['../classdftfe_1_1force_class.html#af5e3b6427522b5b6ca8ba23266612185',1,'dftfe::forceClass']]], + ['d_5fsubspaceiterationsolver_601',['d_subspaceIterationSolver',['../classdftfe_1_1dft_class.html#a7e2a952bd59645e0c75c99d31e388a3e',1,'dftfe::dftClass']]], + ['d_5fsumnontrivialsphericalfnoverallcells_602',['d_sumNonTrivialSphericalFnOverAllCells',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a15f7e443bcdcc817bd72f0785ccf8e9a',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5fsupportpoints_603',['d_supportPoints',['../classdftfe_1_1dft_class.html#a8067d6ad6d2361a917c0cb84dd713d66',1,'dftfe::dftClass']]], + ['d_5fsupportpointseigen_604',['d_supportPointsEigen',['../classdftfe_1_1dft_class.html#a740408eef9713e864efff14d604b3128',1,'dftfe::dftClass']]], + ['d_5fsupportpointsprefined_605',['d_supportPointsPRefined',['../classdftfe_1_1dft_class.html#a5267dfc9b5ad12c014273ebf42e5c340',1,'dftfe::dftClass']]], + ['d_5ftargetids_606',['d_targetIDs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a9eccf7d344d6bca7739c628f1d88ba3d',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['d_5ftargetprocids_607',['d_targetProcIds',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a7dcb16c07d7c9a49262cf0ef4e1493c4',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['d_5ftempdoubleimagarrayforatomics_608',['d_tempDoubleImagArrayForAtomics',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a4b1469521606f86c1ba1c526e53211fa',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['d_5ftempdoublerealarrayforatomics_609',['d_tempDoubleRealArrayForAtomics',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a9f8d8712e2174899cb6c03540a4e3db7',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['d_5ftempeigenvec_610',['d_tempEigenVec',['../classdftfe_1_1dft_class.html#ad8f2cb515d949051884ff0079a5802f0',1,'dftfe::dftClass']]], + ['d_5ftempfloatimagarrayforatomics_611',['d_tempFloatImagArrayForAtomics',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#ad8dd322d519b54fc57797b722c4d27da',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['d_5ftempfloatrealarrayforatomics_612',['d_tempFloatRealArrayForAtomics',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a6e38fde48ff0553c6504c4420bc97378',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['d_5fthermostattimeconstant_613',['d_ThermostatTimeConstant',['../classdftfe_1_1molecular_dynamics_class.html#a6884926c0df4ca164710fffe8f589529',1,'dftfe::molecularDynamicsClass']]], + ['d_5fthermostattype_614',['d_ThermostatType',['../classdftfe_1_1molecular_dynamics_class.html#a0169df1b43165aa42da43b06fa23c57d',1,'dftfe::molecularDynamicsClass']]], + ['d_5fthis_5fmpi_5fprocess_615',['d_this_mpi_process',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a821f6c423cbcde997a6178d43283cafa',1,'dftfe::AtomicCenteredNonLocalOperator::d_this_mpi_process'],['../classdftfe_1_1molecular_dynamics_class.html#a1c23e8b7304d4dbc98f37dcea62b0524',1,'dftfe::molecularDynamicsClass::d_this_mpi_process'],['../classdftfe_1_1nudged_elastic_band_class.html#a44531dc0481f1d3a5bb8bd3d8c6c9bbd',1,'dftfe::nudgedElasticBandClass::d_this_mpi_process'],['../classdftfe_1_1oncv_class.html#a399ccc145b57bf27c377c526508a8939',1,'dftfe::oncvClass::d_this_mpi_process']]], + ['d_5ftimeindex_616',['d_TimeIndex',['../classdftfe_1_1molecular_dynamics_class.html#aac93e51c2356ab94634386760c46aef2',1,'dftfe::molecularDynamicsClass']]], + ['d_5ftimestep_617',['d_TimeStep',['../classdftfe_1_1molecular_dynamics_class.html#aef240d4e530efd2ef2188db40ef3e5d2',1,'dftfe::molecularDynamicsClass']]], + ['d_5ftolerance_618',['d_tolerance',['../classdftfe_1_1non_linear_solver.html#a2cd121c1f5cf1df5fbd1b01b3d605ccc',1,'dftfe::nonLinearSolver']]], + ['d_5ftolreached_619',['d_tolReached',['../classdftfe_1_1dft_class.html#adb2d91b0d8e528fc126f2d6f2c6a12bd',1,'dftfe::dftClass']]], + ['d_5ftotalatomsincurrentproc_620',['d_totalAtomsInCurrentProc',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a29a2312504da253bbebe2aa0ac2423b3',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5ftotalnonlocalelems_621',['d_totalNonlocalElems',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a192483a9a5c9f4130fe51d56d71dc79d',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5ftotalnonlocalentries_622',['d_totalNonLocalEntries',['../classdftfe_1_1_atomic_centered_non_local_operator.html#ac572dabc9768a3f30787d8bd31471241',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['d_5ftotalsphericalfunctionindexstart_623',['d_totalSphericalFunctionIndexStart',['../classdftfe_1_1_atom_centered_spherical_function_container.html#ada1ac0e215e40e566060b004d0d505d9',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['d_5ftotalupdatecalls_624',['d_totalUpdateCalls',['../classdftfe_1_1geo_opt_cell.html#ab3da9ac4da6a018124fb452e47c773a0',1,'dftfe::geoOptCell::d_totalUpdateCalls'],['../classdftfe_1_1geo_opt_ion.html#a3e89e99967abfaab25b8b65cd5366b64',1,'dftfe::geoOptIon::d_totalUpdateCalls'],['../classdftfe_1_1nudged_elastic_band_class.html#a94e827ce5baa1b76916b11351515d691',1,'dftfe::nudgedElasticBandClass::d_totalUpdateCalls']]], + ['d_5ftriaptr_625',['d_triaPtr',['../classdftfe_1_1mesh_movement_class.html#aa183e127ce47363636936816aa2cb6f5',1,'dftfe::meshMovementClass']]], + ['d_5ftriaptrserial_626',['d_triaPtrSerial',['../classdftfe_1_1mesh_movement_class.html#aff22b153ada325f840842c47f5e8da4f',1,'dftfe::meshMovementClass']]], + ['d_5ftrustradius_627',['d_trustRadius',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a6984823aa35e215c58071ebbbeb9c878',1,'dftfe::BFGSNonLinearSolver']]], + ['d_5ftrustradiusinitial_628',['d_trustRadiusInitial',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a39e9ad460b95bb2357b41ced1097b9ae',1,'dftfe::BFGSNonLinearSolver']]], + ['d_5ftrustradiusmax_629',['d_trustRadiusMax',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a6d4b07e11ddb5ec583c070b3394fccf5',1,'dftfe::BFGSNonLinearSolver']]], + ['d_5ftrustradiusmin_630',['d_trustRadiusMin',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#ab077ed027febe65d5d625459d8b486bf',1,'dftfe::BFGSNonLinearSolver']]], + ['d_5ftype_631',['d_type',['../classdftfe_1_1dealii_linear_solver.html#a93af6465939f325d8f189bf6e617ef27',1,'dftfe::dealiiLinearSolver']]], + ['d_5funknowncountflag_632',['d_unknownCountFlag',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#ad2d102da90772d1ad75e0e00e275c5cc',1,'dftfe::cgPRPNonLinearSolver']]], + ['d_5fupdateflags_633',['d_updateFlags',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a7427a1ecd87ab437a32aa8019e5a62f8',1,'dftfe::basis::FEBasisOperations']]], + ['d_5fupdatevector_634',['d_updateVector',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#abd02dcf8f9c244557ecc0e4e139d9275',1,'dftfe::BFGSNonLinearSolver::d_updateVector'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a6535dfb4907295a2eb01f47c5f2adc5c',1,'dftfe::LBFGSNonLinearSolver::d_updateVector']]], + ['d_5fupperboundunwantedspectrum_635',['d_upperBoundUnWantedSpectrum',['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#aefeb52292083b3b6d78d26a8348aa07c',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver']]], + ['d_5fupperboundunwantedspectrumvalues_636',['d_upperBoundUnwantedSpectrumValues',['../classdftfe_1_1dft_class.html#a0921a2c3d3ce677b733997410a08d972',1,'dftfe::dftClass']]], + ['d_5fusedevice_637',['d_useDevice',['../classdftfe_1_1oncv_class.html#aca7c5e3da2335f18ed8f9ba7e3e5461e',1,'dftfe::oncvClass']]], + ['d_5fusepreconditioner_638',['d_usePreconditioner',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a6776d5c0f5552fcdedbf524cf45d467b',1,'dftfe::BFGSNonLinearSolver::d_usePreconditioner'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a98091d73833af0408398ba20eb94d1c5',1,'dftfe::LBFGSNonLinearSolver::d_usePreconditioner']]], + ['d_5fuserfostep_639',['d_useRFOStep',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a0c9a7a916905ef1504b1483103f44ab3',1,'dftfe::BFGSNonLinearSolver']]], + ['d_5fusesingleatomsolutionsinitialguess_640',['d_useSingleAtomSolutionsInitialGuess',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#ad2b85b3a228b9e25ff81b130cd15c97a',1,'dftfe::BFGSNonLinearSolver::d_useSingleAtomSolutionsInitialGuess'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a76eb505985431b805caec2dda244c8ee',1,'dftfe::cgPRPNonLinearSolver::d_useSingleAtomSolutionsInitialGuess'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a5b3cfa36ce43b24ceffe1048d6ed77a7',1,'dftfe::LBFGSNonLinearSolver::d_useSingleAtomSolutionsInitialGuess']]], + ['d_5fvals_641',['d_vals',['../classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html#a0044120435d32992d97964a3d9bbf14a',1,'dftfe::dftUtils::QuadDataCompositeWrite']]], + ['d_5fvalue_642',['d_value',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a591d021f5606e050c1aab9f143a06970',1,'dftfe::BFGSNonLinearSolver::d_value'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a7653727506a511f6bcf888ce9ecd2b2d',1,'dftfe::LBFGSNonLinearSolver::d_value']]], + ['d_5fvaluenew_643',['d_valueNew',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a26b184b182121b13cb655f76efc600d1',1,'dftfe::BFGSNonLinearSolver::d_valueNew'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#ae16e3f4dd91ea1b7ecf0027e24ddc320',1,'dftfe::LBFGSNonLinearSolver::d_valueNew']]], + ['d_5fvariablehistoryin_644',['d_variableHistoryIn',['../classdftfe_1_1_mixing_scheme.html#a7722d7caad1d5b90fd879597403e512c',1,'dftfe::MixingScheme']]], + ['d_5fvariablehistoryresidual_645',['d_variableHistoryResidual',['../classdftfe_1_1_mixing_scheme.html#a5efc0d1f8771e48f2338d49f416d24ad',1,'dftfe::MixingScheme']]], + ['d_5fvcontainervals_646',['d_vcontainerVals',['../classdftfe_1_1dft_class.html#a8504723c176650b7be8930a2373c8a80',1,'dftfe::dftClass']]], + ['d_5fvectordotproductweights_647',['d_vectorDotProductWeights',['../classdftfe_1_1_mixing_scheme.html#acf93869d4448ce493da40cd052e1e38a',1,'dftfe::MixingScheme']]], + ['d_5fveffextpotjxw_648',['d_VeffExtPotJxW',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#add4e153bf3faea13207b265dd5847504',1,'dftfe::KohnShamHamiltonianOperator']]], + ['d_5fveffjxw_649',['d_VeffJxW',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a52c00c8f942827f0ce99c59bbfec782f',1,'dftfe::KohnShamHamiltonianOperator']]], + ['d_5fverbosity_650',['d_verbosity',['../classdftfe_1_1geometry_optimization_class.html#a882cb5bee74f7e4ba3842d44c6202a94',1,'dftfe::geometryOptimizationClass::d_verbosity'],['../classdftfe_1_1_mixing_scheme.html#af5503e990a53f6b303d21cecb004a3cc',1,'dftfe::MixingScheme::d_verbosity'],['../classdftfe_1_1molecular_dynamics_class.html#a65465da82cf13144754cd988d9b6b3dd',1,'dftfe::molecularDynamicsClass::d_verbosity'],['../classdftfe_1_1nudged_elastic_band_class.html#ae7978bde1958fb3c3d176aa5aef75a83',1,'dftfe::nudgedElasticBandClass::d_verbosity'],['../classdftfe_1_1oncv_class.html#a0ab4d3ee166eafe76c5cd59df099658f',1,'dftfe::oncvClass::d_verbosity']]], + ['d_5fvselfbinconstraintmatrices_651',['d_vselfBinConstraintMatrices',['../classdftfe_1_1vself_bins_manager.html#a1bc91d04fc02aa4e0b2296781c0af1cd',1,'dftfe::vselfBinsManager']]], + ['d_5fvselfbinfield_652',['d_vselfBinField',['../classdftfe_1_1vself_bins_manager.html#a5f7af2fa2c935dd29d77c97cd166c55e',1,'dftfe::vselfBinsManager']]], + ['d_5fvselfbinsmanager_653',['d_vselfBinsManager',['../classdftfe_1_1dft_class.html#a54206e45b7117b4046043ff9b78abc79',1,'dftfe::dftClass']]], + ['d_5fvselffieldbins_654',['d_vselfFieldBins',['../classdftfe_1_1vself_bins_manager.html#adeea81b54823aef5cc7396e65a38b68e',1,'dftfe::vselfBinsManager']]], + ['d_5fvselffieldderrbins_655',['d_vselfFieldDerRBins',['../classdftfe_1_1vself_bins_manager.html#ab1823427be014f89e099551ac9a1a004',1,'dftfe::vselfBinsManager']]], + ['d_5fvselffieldgateauxderstrainfdbins_656',['d_vselfFieldGateauxDerStrainFDBins',['../classdftfe_1_1dft_class.html#add96c634324105cb6147b9bd83d37b82',1,'dftfe::dftClass']]], + ['d_5fvselffieldperturbedbins_657',['d_vselfFieldPerturbedBins',['../classdftfe_1_1vself_bins_manager.html#a697d19a037d588bbaaa031a3399051cc',1,'dftfe::vselfBinsManager']]], + ['d_5fvspin0containervals_658',['d_vSpin0containerVals',['../classdftfe_1_1dft_class.html#a000b2f07684508d7d31542780beca10f',1,'dftfe::dftClass']]], + ['d_5fvspin1containervals_659',['d_vSpin1containerVals',['../classdftfe_1_1dft_class.html#aec55133801f74f3e5ea54bc7df5d8b92',1,'dftfe::dftClass']]], + ['d_5fwavefunctionfamilytype_660',['d_wavefunctionFamilyType',['../classdftfe_1_1exc_wavefunction_base_class.html#a94d7a8affdc9deea29574d636898f6d5',1,'dftfe::excWavefunctionBaseClass']]], + ['d_5fwfcinittruncation_661',['d_wfcInitTruncation',['../classdftfe_1_1dft_class.html#a3a3c6423dbb6a95d239efe7067badf3a',1,'dftfe::dftClass']]], + ['d_5fwolfecurvature_662',['d_wolfeCurvature',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a0eb06ce8e6964c797e0a04b619c485a7',1,'dftfe::BFGSNonLinearSolver::d_wolfeCurvature'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#af549a80c4893b0e634dcfdc84e332b25',1,'dftfe::LBFGSNonLinearSolver::d_wolfeCurvature']]], + ['d_5fwolfesatisfied_663',['d_wolfeSatisfied',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#ad525080ddd90f2c9b3b5c5ba30b61b54',1,'dftfe::BFGSNonLinearSolver::d_wolfeSatisfied'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a7d363249f0c714ecdbb1829971b4793c',1,'dftfe::LBFGSNonLinearSolver::d_wolfeSatisfied']]], + ['d_5fwolfesufficientdec_664',['d_wolfeSufficientDec',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#ac5e70b73f891f409f87c4b82b5181bb5',1,'dftfe::BFGSNonLinearSolver::d_wolfeSufficientDec'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a152d6cc6ab8d3cc19a95a724645f9ee2',1,'dftfe::LBFGSNonLinearSolver::d_wolfeSufficientDec']]], + ['d_5fxptr_665',['d_xPtr',['../classdftfe_1_1kerker_solver_problem.html#a0e9ae22e5302ebf80d929a17a203ec62',1,'dftfe::kerkerSolverProblem::d_xPtr'],['../classdftfe_1_1poisson_solver_problem.html#ab9ba8054394cc54c8ba3db3075b65979',1,'dftfe::poissonSolverProblem::d_xPtr']]], + ['d_5fzval_666',['d_Zval',['../classdftfe_1_1_atom_centered_spherical_function_z_over_r.html#ad6e9fe2d6630fbc3ac8c4c27ee5acb4e',1,'dftfe::AtomCenteredSphericalFunctionZOverR']]], + ['data_667',['data',['../classdftfe_1_1utils_1_1_memory_storage.html#aac3f583e6cc54e0deaf65d8ef6a23c59',1,'dftfe::utils::MemoryStorage::data() noexcept'],['../classdftfe_1_1utils_1_1_memory_storage.html#aae2837b289ac474e333828e48c9aa2d4',1,'dftfe::utils::MemoryStorage::data() const noexcept'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ac1095f6e9be655b2ff885c0c2a8d2880',1,'dftfe::linearAlgebra::MultiVector::data()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a7d040bd7787f972dbd45d4d97edf87a3',1,'dftfe::linearAlgebra::MultiVector::data() const']]], + ['datatypeoverloads_2eh_668',['DataTypeOverloads.h',['../_data_type_overloads_8h.html',1,'']]], + ['dc_5fd3atm_669',['dc_d3ATM',['../classdftfe_1_1dft_parameters.html#ac1eda09954750e2a6e4b60f203ab4039',1,'dftfe::dftParameters']]], + ['dc_5fd3cutoff2_670',['dc_d3cutoff2',['../classdftfe_1_1dft_parameters.html#a1a3c70a292cf7da3952a5618ad9b9301',1,'dftfe::dftParameters']]], + ['dc_5fd3cutoff3_671',['dc_d3cutoff3',['../classdftfe_1_1dft_parameters.html#a697d5794a313cab20190eaa57c469a97',1,'dftfe::dftParameters']]], + ['dc_5fd3cutoffcn_672',['dc_d3cutoffCN',['../classdftfe_1_1dft_parameters.html#ac8a378332dc47af5c0f052d40e8b0093',1,'dftfe::dftParameters']]], + ['dc_5fd3dampingtype_673',['dc_d3dampingtype',['../classdftfe_1_1dft_parameters.html#af27e7bb0146d8defa59a8f15bd6d8458',1,'dftfe::dftParameters']]], + ['dc_5fd4mbd_674',['dc_d4MBD',['../classdftfe_1_1dft_parameters.html#a35ef6998bf791b9627d413e04ce90792',1,'dftfe::dftParameters']]], + ['dc_5fdampingparameterfilename_675',['dc_dampingParameterFilename',['../classdftfe_1_1dft_parameters.html#a899485928aa6aa92b1b06ac6165e8477',1,'dftfe::dftParameters']]], + ['dc_5fdispersioncorrectiontype_676',['dc_dispersioncorrectiontype',['../classdftfe_1_1dft_parameters.html#aa2ef4a8a131534f030f9f682c1bb6dd2',1,'dftfe::dftParameters']]], + ['dealiicellid_677',['dealIICellId',['../classdftfe_1_1symmetry_class.html#a54ce05613be0900329e5c5be0d5aa599',1,'dftfe::symmetryClass']]], + ['dealiilinearsolver_678',['dealiiLinearSolver',['../classdftfe_1_1dealii_linear_solver.html',1,'dftfe::dealiiLinearSolver'],['../classdftfe_1_1dealii_linear_solver.html#a9586538036013497a0649a30265a8827',1,'dftfe::dealiiLinearSolver::dealiiLinearSolver()']]], + ['dealiilinearsolver_2eh_679',['dealiiLinearSolver.h',['../dealii_linear_solver_8h.html',1,'']]], + ['dealiilinearsolver_5fh_5f_680',['dealiiLinearSolver_H_',['../dealii_linear_solver_8h.html#aa5b9cc07939b7ae9abf1fcfd3a86c7a9',1,'dealiiLinearSolver.h']]], + ['dealiilinearsolverproblem_681',['dealiiLinearSolverProblem',['../classdftfe_1_1dealii_linear_solver_problem.html',1,'dftfe::dealiiLinearSolverProblem'],['../classdftfe_1_1dealii_linear_solver_problem.html#a97a0ecea80b757eeac064ea65c613644',1,'dftfe::dealiiLinearSolverProblem::dealiiLinearSolverProblem()']]], + ['dealiilinearsolverproblem_2eh_682',['dealiiLinearSolverProblem.h',['../dealii_linear_solver_problem_8h.html',1,'']]], + ['deallocate_683',['deallocate',['../classdftfe_1_1utils_1_1_memory_manager.html#a767c87fd102f8ad10e29a5e62aec0a53',1,'dftfe::utils::MemoryManager::deallocate()'],['../classdftfe_1_1utils_1_1_memory_manager_3_01_value_type_00_01_memory_space_1_1_h_o_s_t_01_4.html#ae104e0f016121fb3f39a2da72e6330d7',1,'dftfe::utils::MemoryManager< ValueType, MemorySpace::HOST >::deallocate()']]], + ['declexception1_684',['DeclException1',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a27b32f617606bdae5aa6fdab7dce23db',1,'dftfe::LAPACKSupport::DeclException1(ExcState, State,<< "The function cannot be called while the matrix is in state "<< state_name(arg1))'],['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a5cd8c229bdd3d04bf33365a8b98fbe3e',1,'dftfe::LAPACKSupport::DeclException1(ExcProperty, Property,<< "The function cannot be called with a "<< property_name(arg1)<< " matrix.")'],['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a6b4983d15660f64ef45e694a1e728440',1,'dftfe::LAPACKSupport::DeclException1(ExcMissing, std::string,<< "When you ran 'cmake' during installation of deal.II, "<< "no suitable installation of the BLAS or LAPACK library could "<< "be found. Consequently, the function <"<< arg1<< "> can not be called. Refer to the doc/readme.html "<< "file for information on how to ensure that deal.II "<< "picks up an existing BLAS and LAPACK installation at "<< "configuration time.")']]], + ['declexception2_685',['DeclException2',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#aef82ce9af9dc80dd3462be0800624348',1,'dftfe::LAPACKSupport']]], + ['declexceptionmsg_686',['DeclExceptionMsg',['../namespacedftfe_1_1dft_utils.html#adfc4fda60705bb297d20f1ed78ec2155',1,'dftfe::dftUtils::DeclExceptionMsg(ExcNotImplementedYet, "This functionality is not implemented yet or not needed to be implemented.")'],['../namespacedftfe_1_1dft_utils.html#af6662a00711ddc0f6bc8e37ab112ed5d',1,'dftfe::dftUtils::DeclExceptionMsg(ExcInternalError, "DFT-FE internal error.")']]], + ['deformcell_687',['deformCell',['../classdftfe_1_1dftfe_wrapper.html#ab0c58280c0480e66037638ffc2d51986',1,'dftfe::dftfeWrapper']]], + ['deformdomain_688',['deformDomain',['../classdftfe_1_1dft_class.html#a3092cea7c73c7b83cad342cb7f791ab7',1,'dftfe::dftClass::deformDomain()'],['../classdftfe_1_1dft_base.html#a4d292401c658852ccec9289136cd4a61',1,'dftfe::dftBase::deformDomain()']]], + ['dense_689',['dense',['../namespacedftfe.html#a45fd2d39284f0103960f3dd8b7e6bb9fa0eccef1fe0100f85b12e6eabe08eaff6',1,'dftfe']]], + ['density_20functional_20theory_20with_20finite_20elements_690',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['densitycalculator_2eh_691',['densityCalculator.h',['../density_calculator_8h.html',1,'']]], + ['densityextrapolation_692',['DensityExtrapolation',['../classdftfe_1_1molecular_dynamics_class.html#a2dfec9cd88235861d9fed750220355b9',1,'dftfe::molecularDynamicsClass']]], + ['densityfamilytype_693',['densityFamilyType',['../namespacedftfe.html#a84a62c8946b5674c77a7d7d55de1be4b',1,'dftfe']]], + ['densityfirstorderresponsecalculator_2eh_694',['densityFirstOrderResponseCalculator.h',['../density_first_order_response_calculator_8h.html',1,'']]], + ['densitymatrixeigenbasisfirstorderresponse_695',['densityMatrixEigenBasisFirstOrderResponse',['../namespacedftfe_1_1linear_algebra_operations.html#a9012f161a67342f72010e3e47e661c85',1,'dftfe::linearAlgebraOperations']]], + ['densitysplitextrapolation_696',['DensitySplitExtrapolation',['../classdftfe_1_1molecular_dynamics_class.html#a01734279e03fbe1e269b7abf3137ad0a',1,'dftfe::molecularDynamicsClass']]], + ['der2energywithdensity_697',['der2EnergyWithDensity',['../namespacedftfe.html#a4fa68bb7b2c5cb5edbe73ced50300475a6d74ee91791d12a6d1aec6e6d09d1188',1,'dftfe']]], + ['der2energywithdensitysigma_698',['der2EnergyWithDensitySigma',['../namespacedftfe.html#a4fa68bb7b2c5cb5edbe73ced50300475ae904f928241e314eb0dad7989f79d367',1,'dftfe']]], + ['der2energywithsigma_699',['der2EnergyWithSigma',['../namespacedftfe.html#a4fa68bb7b2c5cb5edbe73ced50300475ac3dc879502e28bc2e08c9c8c4915970d',1,'dftfe']]], + ['derenergywithdensity_700',['derEnergyWithDensity',['../namespacedftfe.html#a1cf71a04b97ce9006b74b518c985238ea7fa7b35baa55d216aa46c6862aa08d25',1,'dftfe']]], + ['derenergywithsigmagraddensity_701',['derEnergyWithSigmaGradDensity',['../namespacedftfe.html#a1cf71a04b97ce9006b74b518c985238eab0c327071aa3ac496cade6b801299895',1,'dftfe']]], + ['descinit_5f_702',['descinit_',['../namespacedftfe.html#af106f0c84c4a7b69fc89bf9602d59c13',1,'dftfe']]], + ['descriptor_703',['descriptor',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ad1e8ef421c85085add7e872f8f909f64',1,'dftfe::ScaLAPACKMatrix']]], + ['determineatomsofinterstpseudopotential_704',['determineAtomsOfInterstPseudopotential',['../classdftfe_1_1dft_class.html#ad420bf2a3e2c1ca648820f698f6ffef9',1,'dftfe::dftClass']]], + ['determineorbitalfilling_705',['determineOrbitalFilling',['../classdftfe_1_1dft_class.html#acb2b928891df533b6eec8405dcebc2a9',1,'dftfe::dftClass']]], + ['device_706',['DEVICE',['../namespacedftfe_1_1utils.html#a70cf7f171e9701571a428ad0fa1bf341ae10b6ab6a278644ce40631f62f360b6d',1,'dftfe::utils']]], + ['device_5fapi_5fcheck_707',['DEVICE_API_CHECK',['../_device_exceptions_8cu_8h.html#a7af4832fd5ec8debc6777849ce590049',1,'DEVICE_API_CHECK: DeviceExceptions.cu.h'],['../_device_exceptions_8hip_8h.html#a7af4832fd5ec8debc6777849ce590049',1,'DEVICE_API_CHECK: DeviceExceptions.hip.h']]], + ['deviceapicalls_2eh_708',['DeviceAPICalls.h',['../_device_a_p_i_calls_8h.html',1,'']]], + ['deviceblas_5fapi_5fcheck_709',['DEVICEBLAS_API_CHECK',['../_device_exceptions_8cu_8h.html#a1b7519f5a5552d276aaf023cab03577f',1,'DEVICEBLAS_API_CHECK: DeviceExceptions.cu.h'],['../_device_exceptions_8hip_8h.html#a1b7519f5a5552d276aaf023cab03577f',1,'DEVICEBLAS_API_CHECK: DeviceExceptions.hip.h']]], + ['deviceblas_5fop_5fc_710',['DEVICEBLAS_OP_C',['../namespacedftfe_1_1utils.html#ad21faec73a3e5d45d4493e0ded833787',1,'dftfe::utils::DEVICEBLAS_OP_C'],['../namespacedftfe_1_1utils.html#a62ea98711615c259fd670dc0c69ffe37',1,'dftfe::utils::DEVICEBLAS_OP_C']]], + ['deviceblas_5fop_5fn_711',['DEVICEBLAS_OP_N',['../namespacedftfe_1_1utils.html#a6a6641412752ba1e4390e61d3932e058',1,'dftfe::utils::DEVICEBLAS_OP_N'],['../namespacedftfe_1_1utils.html#afe668ed3ac4ebae144744db47a1be0ea',1,'dftfe::utils::DEVICEBLAS_OP_N']]], + ['deviceblas_5fop_5ft_712',['DEVICEBLAS_OP_T',['../namespacedftfe_1_1utils.html#aab95236791c659bd2d4c011e297306a0',1,'dftfe::utils::DEVICEBLAS_OP_T'],['../namespacedftfe_1_1utils.html#a0b20df63b111ba28a8fc6c0ef83f07f4',1,'dftfe::utils::DEVICEBLAS_OP_T']]], + ['deviceblas_5ftf32_5ftensor_5fop_5fmath_713',['DEVICEBLAS_TF32_TENSOR_OP_MATH',['../namespacedftfe_1_1utils.html#a2c76eb2d5702fabd79e5ee2c54a1a774',1,'dftfe::utils']]], + ['deviceblashandle_5ft_714',['deviceBlasHandle_t',['../namespacedftfe_1_1utils.html#a92924aae85b78ecddfe040d9748b31df',1,'dftfe::utils']]], + ['deviceblasmath_5ft_715',['deviceBlasMath_t',['../namespacedftfe_1_1utils.html#a895e3006047ff83b9c8d797d714f988d',1,'dftfe::utils']]], + ['deviceblasoperation_5ft_716',['deviceBlasOperation_t',['../namespacedftfe_1_1utils.html#ae50147b81ceec05b392e1ef929a70b34',1,'dftfe::utils']]], + ['deviceblasstatus_5ft_717',['deviceBlasStatus_t',['../namespacedftfe_1_1utils.html#a372360055d05c634e3656e4dc4e8982d',1,'dftfe::utils']]], + ['deviceblaswrapper_2eh_718',['DeviceBlasWrapper.h',['../_device_blas_wrapper_8h.html',1,'']]], + ['devicedatatypeoverloads_2ecu_2eh_719',['DeviceDataTypeOverloads.cu.h',['../_device_data_type_overloads_8cu_8h.html',1,'']]], + ['devicedatatypeoverloads_2eh_720',['DeviceDataTypeOverloads.h',['../_device_data_type_overloads_8h.html',1,'']]], + ['devicedatatypeoverloads_2ehip_2eh_721',['DeviceDataTypeOverloads.hip.h',['../_device_data_type_overloads_8hip_8h.html',1,'']]], + ['devicedirectcclwrapper_2eh_722',['deviceDirectCCLWrapper.h',['../device_direct_c_c_l_wrapper_8h.html',1,'']]], + ['devicedoublecomplex_723',['deviceDoubleComplex',['../namespacedftfe_1_1utils.html#a66db66fec052d05c21406331c4e24a0d',1,'dftfe::utils']]], + ['deviceerror_5ft_724',['deviceError_t',['../namespacedftfe_1_1utils.html#a2b2a1a01dc4a11ca4e17c2db2f6fc47c',1,'dftfe::utils']]], + ['deviceevent_5ft_725',['deviceEvent_t',['../namespacedftfe_1_1utils.html#ac35c66ab86da7f663b20739f01edf548',1,'dftfe::utils']]], + ['deviceexceptions_2ecu_2eh_726',['DeviceExceptions.cu.h',['../_device_exceptions_8cu_8h.html',1,'']]], + ['deviceexceptions_2ehip_2eh_727',['DeviceExceptions.hip.h',['../_device_exceptions_8hip_8h.html',1,'']]], + ['devicefinegrainedtimings_728',['deviceFineGrainedTimings',['../classdftfe_1_1dft_parameters.html#ad494b26cce36ae31ed9880be1e7b39f7',1,'dftfe::dftParameters']]], + ['devicefloatcomplex_729',['deviceFloatComplex',['../namespacedftfe_1_1utils.html#aaea6a5b69584a976fcfae7a185f5de42',1,'dftfe::utils']]], + ['devicekernellauncherconstants_2eh_730',['DeviceKernelLauncherConstants.h',['../_device_kernel_launcher_constants_8h.html',1,'']]], + ['devicekernelsgeneric_2eh_731',['deviceKernelsGeneric.h',['../device_kernels_generic_8h.html',1,'']]], + ['devicestream_5ft_732',['deviceStream_t',['../namespacedftfe_1_1utils.html#a362c66eeb8e42fff4c502fa634674ca7',1,'dftfe::utils']]], + ['devicesuccess_733',['deviceSuccess',['../namespacedftfe_1_1utils.html#a479131b3c583941bf438c4e788d5fdf0',1,'dftfe::utils::deviceSuccess'],['../namespacedftfe_1_1utils.html#a479131b3c583941bf438c4e788d5fdf0',1,'dftfe::utils::deviceSuccess']]], + ['devicetypeconfig_2ecu_2eh_734',['DeviceTypeConfig.cu.h',['../_device_type_config_8cu_8h.html',1,'']]], + ['devicetypeconfig_2eh_735',['DeviceTypeConfig.h',['../_device_type_config_8h.html',1,'']]], + ['devicetypeconfig_2ehip_2eh_736',['DeviceTypeConfig.hip.h',['../_device_type_config_8hip_8h.html',1,'']]], + ['dft_20fe_737',['DFT FE',['../index.html#autotoc_md3',1,'Contributing to DFT-FE'],['../index.html#autotoc_md2',1,'Running DFT-FE']]], + ['dft_20fe_20_3a_20density_20functional_20theory_20with_20finite_20elements_738',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['dft_2eh_739',['dft.h',['../dft_8h.html',1,'']]], + ['dftbase_740',['dftBase',['../classdftfe_1_1dft_base.html',1,'dftfe']]], + ['dftbase_2eh_741',['dftBase.h',['../dft_base_8h.html',1,'']]], + ['dftclass_742',['dftClass',['../classdftfe_1_1dft_class.html',1,'dftfe::dftClass< FEOrder, FEOrderElectro, memorySpace >'],['../classdftfe_1_1dft_class.html#a7ec2a2356b29e896301a343d0606bdc9',1,'dftfe::dftClass::dftClass()']]], + ['dftclass_3c_20feorder_2c_20feorderelectro_2c_20memoryspace_20_3e_743',['dftClass< FEOrder, FEOrderElectro, memorySpace >',['../classdftfe_1_1force_class.html#a1d36a89b82e9854f2cc09882b337012b',1,'dftfe::forceClass::dftClass< FEOrder, FEOrderElectro, memorySpace >'],['../classdftfe_1_1symmetry_class.html#a1d36a89b82e9854f2cc09882b337012b',1,'dftfe::symmetryClass::dftClass< FEOrder, FEOrderElectro, memorySpace >']]], + ['dftd_2eh_744',['dftd.h',['../dftd_8h.html',1,'']]], + ['dftfe_745',['dftfe',['../namespacedftfe.html',1,'']]], + ['dftfe_3a_3aatomiccenterednonlocaloperatorkernelsdevice_746',['AtomicCenteredNonLocalOperatorKernelsDevice',['../namespacedftfe_1_1_atomic_centered_non_local_operator_kernels_device.html',1,'dftfe']]], + ['dftfe_3a_3abasis_747',['basis',['../namespacedftfe_1_1basis.html',1,'dftfe']]], + ['dftfe_3a_3abasis_3a_3afebasisoperationskernelsinternal_748',['FEBasisOperationsKernelsInternal',['../namespacedftfe_1_1basis_1_1_f_e_basis_operations_kernels_internal.html',1,'dftfe::basis']]], + ['dftfe_3a_3adatatypes_749',['dataTypes',['../namespacedftfe_1_1data_types.html',1,'dftfe']]], + ['dftfe_3a_3adftutils_750',['dftUtils',['../namespacedftfe_1_1dft_utils.html',1,'dftfe']]], + ['dftfe_3a_3aeshelbytensor_751',['eshelbyTensor',['../namespacedftfe_1_1eshelby_tensor.html',1,'dftfe']]], + ['dftfe_3a_3aeshelbytensorsp_752',['eshelbyTensorSP',['../namespacedftfe_1_1eshelby_tensor_s_p.html',1,'dftfe']]], + ['dftfe_3a_3aforce_753',['force',['../namespacedftfe_1_1force.html',1,'dftfe']]], + ['dftfe_3a_3alapacksupport_754',['LAPACKSupport',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html',1,'dftfe']]], + ['dftfe_3a_3alinearalgebra_755',['linearAlgebra',['../namespacedftfe_1_1linear_algebra.html',1,'dftfe']]], + ['dftfe_3a_3alinearalgebraoperations_756',['linearAlgebraOperations',['../namespacedftfe_1_1linear_algebra_operations.html',1,'dftfe']]], + ['dftfe_3a_3alinearalgebraoperations_3a_3ainternal_757',['internal',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html',1,'dftfe::linearAlgebraOperations']]], + ['dftfe_3a_3ameshgenutils_758',['meshGenUtils',['../namespacedftfe_1_1mesh_gen_utils.html',1,'dftfe']]], + ['dftfe_3a_3apseudoutils_759',['pseudoUtils',['../namespacedftfe_1_1pseudo_utils.html',1,'dftfe']]], + ['dftfe_3a_3ascalapackmatrix_760',['ScaLAPACKMatrix',['../classdftfe_1_1_process_grid.html#a1091e8c7fbacd2a5c44a470826d17f83',1,'dftfe::ProcessGrid']]], + ['dftfe_3a_3asphericalharmonicutils_761',['sphericalHarmonicUtils',['../namespacedftfe_1_1spherical_harmonic_utils.html',1,'dftfe']]], + ['dftfe_3a_3atypes_762',['types',['../namespacedftfe_1_1types.html',1,'dftfe']]], + ['dftfe_3a_3autils_763',['utils',['../namespacedftfe_1_1utils.html',1,'dftfe']]], + ['dftfe_3a_3autils_3a_3ampi_764',['mpi',['../namespacedftfe_1_1utils_1_1mpi.html',1,'dftfe::utils']]], + ['dftfe_3a_3avectortools_765',['vectorTools',['../namespacedftfe_1_1vector_tools.html',1,'dftfe']]], + ['dftfe_5fassert_766',['DFTFE_Assert',['../_exceptions_8h.html#a62be5192be4135c752f0522f127bd3b8',1,'Exceptions.h']]], + ['dftfe_5fassertwithmsg_767',['DFTFE_AssertWithMsg',['../_exceptions_8h.html#a2530a17dcdf9fe37ee288cf3f887e644',1,'Exceptions.h']]], + ['dftfedatatypes_2eh_768',['dftfeDataTypes.h',['../dftfe_data_types_8h.html',1,'']]], + ['dftfewrapper_769',['dftfeWrapper',['../classdftfe_1_1dftfe_wrapper.html',1,'dftfe::dftfeWrapper'],['../classdftfe_1_1dftfe_wrapper.html#a6f5e5a2f056a41b18ddffbd7de0a7483',1,'dftfe::dftfeWrapper::dftfeWrapper()'],['../classdftfe_1_1dftfe_wrapper.html#a9d5fd78c228751bf5e1fc819fda4b5b5',1,'dftfe::dftfeWrapper::dftfeWrapper(const std::string parameter_file, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const bool setDeviceToMPITaskBindingInternally=false, const std::string solverMode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool useDevice=false)'],['../classdftfe_1_1dftfe_wrapper.html#a3af7188c8d2626b13e3692e47fb6032d',1,'dftfe::dftfeWrapper::dftfeWrapper(const std::string parameter_file, const std::string restartCoordsFile, const std::string restartDomainVectorsFile, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const bool setDeviceToMPITaskBindingInternally=false, const std::string solverMode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool useDevice=false, const bool isScfRestart=true)'],['../classdftfe_1_1dftfe_wrapper.html#aa13ae8595df02e6cd38ea572ea7f6993',1,'dftfe::dftfeWrapper::dftfeWrapper(const MPI_Comm &mpi_comm_parent, const bool useDevice, const std::vector< std::vector< double > > atomicPositionsCart, const std::vector< unsigned int > atomicNumbers, const std::vector< std::vector< double > > cell, const std::vector< bool > pbc, const std::vector< unsigned int > mpGrid=std::vector< unsigned int >{1, 1, 1}, const std::vector< bool > mpGridShift=std::vector< bool >{false, false, false}, const bool spinPolarizedDFT=false, const double startMagnetization=0.0, const double fermiDiracSmearingTemp=500.0, const unsigned int npkpt=0, const double meshSize=0.8, const double scfMixingParameter=0.2, const int verbosity=-1, const bool setDeviceToMPITaskBindingInternally=false)']]], + ['dftfewrapper_2eh_770',['dftfeWrapper.h',['../dftfe_wrapper_8h.html',1,'']]], + ['dftparameters_771',['dftParameters',['../classdftfe_1_1dft_parameters.html',1,'dftfe::dftParameters'],['../classdftfe_1_1dft_parameters.html#a649ae12e0807df03af06561d13e9a27a',1,'dftfe::dftParameters::dftParameters()']]], + ['dftparameters_2eh_772',['dftParameters.h',['../dft_parameters_8h.html',1,'']]], + ['dftptr_773',['dftPtr',['../classdftfe_1_1force_class.html#ad0cd4b73d770233e6d1ed0596ee92979',1,'dftfe::forceClass::dftPtr'],['../classdftfe_1_1symmetry_class.html#a0fc954e6110d64b5b49d8c01caade3cc',1,'dftfe::symmetryClass::dftPtr']]], + ['dftutils_2eh_774',['dftUtils.h',['../dft_utils_8h.html',1,'']]], + ['dgesv_5f_775',['dgesv_',['../namespacedftfe_1_1dft_utils.html#a2a7c59f741f731f16db9771b470e66c7',1,'dftfe::dftUtils']]], + ['diagonal_776',['diagonal',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#af3c45dcea64890f047b4dca87fdde9aca87d8c9354f8b729ca3177c5cc8ab567d',1,'dftfe::LAPACKSupport::diagonal'],['../namespacedftfe.html#a45fd2d39284f0103960f3dd8b7e6bb9faa0e17e2709a0404ae3d7de03b8ea9093',1,'dftfe::diagonal']]], + ['diracdeltakernelscalingconstant_777',['diracDeltaKernelScalingConstant',['../classdftfe_1_1dft_parameters.html#a0e3ed166bc1a90db714915f34a575d75',1,'dftfe::dftParameters']]], + ['dispersioncorrection_778',['dispersionCorrection',['../classdftfe_1_1dispersion_correction.html',1,'dftfe::dispersionCorrection'],['../classdftfe_1_1dispersion_correction.html#a7b944c8421d038ba9359ed675462518e',1,'dftfe::dispersionCorrection::dispersionCorrection()']]], + ['dispersioncorrection_5fh_5f_779',['dispersionCorrection_H_',['../dftd_8h.html#aa7b569d42313e3af67e206f868669dba',1,'dftd.h']]], + ['distribute_780',['distribute',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#aae5b940241c022ac24e9c546a91f8cec',1,'dftfe::dftUtils::constraintMatrixInfo::distribute(distributedCPUVec< double > &fieldVector) const'],['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#aa8163dcab4764a016cc44fc2cecab0f5',1,'dftfe::dftUtils::constraintMatrixInfo::distribute(distributedCPUVec< T > &fieldVector, const unsigned int blockSize) const'],['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#af84f162f7e533fa1220d17882fd983f0',1,'dftfe::dftUtils::constraintMatrixInfo::distribute(distributedCPUMultiVec< T > &fieldVector) const'],['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a93ba35427b353d630dd46081a1437953',1,'dftfe::basis::FEBasisOperations::distribute()']]], + ['distribute_5fslave_5fto_5fmaster_781',['distribute_slave_to_master',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a95f1b2fadecdf98b4e283e0c770ab083',1,'dftfe::dftUtils::constraintMatrixInfo::distribute_slave_to_master(distributedCPUVec< T > &fieldVector, const unsigned int blockSize) const'],['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#ab3d5fb04ba78076f35d0df66a52ece46',1,'dftfe::dftUtils::constraintMatrixInfo::distribute_slave_to_master(distributedCPUMultiVec< T > &fieldVector) const']]], + ['distributedcpumultivec_782',['distributedCPUMultiVec',['../namespacedftfe.html#abf19fe9839b2896078b0f9991efa69a4',1,'dftfe']]], + ['distributedcpuvec_783',['distributedCPUVec',['../namespacedftfe.html#a6eb5a6a7b90fcfe5728075ad0ac84961',1,'dftfe']]], + ['distributeforcecontributionfnlgammaatoms_784',['distributeForceContributionFnlGammaAtoms',['../classdftfe_1_1force_class.html#a51d92c2bcfe34d233d86dac3b01ac9e8',1,'dftfe::forceClass']]], + ['distributeforcecontributionfpsplocalgammaatoms_785',['distributeForceContributionFPSPLocalGammaAtoms',['../classdftfe_1_1force_class.html#af92c2aed2fe12b37821f91467bcf454d',1,'dftfe::forceClass']]], + ['distributex_786',['distributeX',['../classdftfe_1_1dealii_linear_solver_problem.html#a55759d651b4bcadf7eb57b0b83d546a0',1,'dftfe::dealiiLinearSolverProblem::distributeX()'],['../classdftfe_1_1kerker_solver_problem.html#a1265745147339654ba0b60b2247ba3cd',1,'dftfe::kerkerSolverProblem::distributeX()'],['../classdftfe_1_1poisson_solver_problem.html#a298666149f5621be3454f5866e92cb54',1,'dftfe::poissonSolverProblem::distributeX()']]], + ['div_787',['div',['../namespacedftfe_1_1utils.html#a5e7b3752fb30f9f76173179dd8f50eaf',1,'dftfe::utils::div(unsigned int a, unsigned int b)'],['../namespacedftfe_1_1utils.html#afbe3ab98871188f2072f0c8ae8ce0ea5',1,'dftfe::utils::div(unsigned long int a, unsigned long int b)'],['../namespacedftfe_1_1utils.html#aaaa3834250738a4e827f814afe9d1ef6',1,'dftfe::utils::div(int a, int b)'],['../namespacedftfe_1_1utils.html#a2279979c305e7d21536f97cdaba40025',1,'dftfe::utils::div(double a, double b)'],['../namespacedftfe_1_1utils.html#a5e6b0c385de12d535e094888f26c3b39',1,'dftfe::utils::div(float a, float b)'],['../namespacedftfe_1_1utils.html#adee51576c4cec1272ee43678ccda2637',1,'dftfe::utils::div(cuDoubleComplex a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a8517d2be1bf5a5ed00e292cec4bfc038',1,'dftfe::utils::div(cuFloatComplex a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#afff417d04e7f7dc68b6a663e270f6d78',1,'dftfe::utils::div(cuFloatComplex a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a5805153eea93d364381bb618daed0675',1,'dftfe::utils::div(cuDoubleComplex a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#a58c915984c57daa85d959c27ac1493ae',1,'dftfe::utils::div(double a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#add50b4aa742683c688bd2aa4a71cc83d',1,'dftfe::utils::div(cuDoubleComplex a, double b)'],['../namespacedftfe_1_1utils.html#aba5a41a6b9590be1de7f01addc594a3c',1,'dftfe::utils::div(float a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#adc7df416cd2b5ebcbb944fe3a5d28fae',1,'dftfe::utils::div(cuFloatComplex a, float b)'],['../namespacedftfe_1_1utils.html#a71589022ae85f478dd3bc5828c3fc0d5',1,'dftfe::utils::div(double a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#a1a5344bc85ff5cc1b09add9f3a016522',1,'dftfe::utils::div(cuFloatComplex a, double b)'],['../namespacedftfe_1_1utils.html#a7eecc9b01172a90214946be2cd7dffda',1,'dftfe::utils::div(hipDoubleComplex a, hipDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a39b510a8ea8527c2f70f8a43a1acc357',1,'dftfe::utils::div(hipFloatComplex a, hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#a60b06facec462bb99acfdf559ecf3d56',1,'dftfe::utils::div(hipFloatComplex a, hipDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a562ebcb1fb1192686e175614441bf5da',1,'dftfe::utils::div(hipDoubleComplex a, hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#a3143124849ead17287fb565341948e8a',1,'dftfe::utils::div(double a, hipDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a6047b562aa109fbfa1aad70953c7e173',1,'dftfe::utils::div(hipDoubleComplex a, double b)'],['../namespacedftfe_1_1utils.html#ac5ff5557ea0542c30fcc135f62b42400',1,'dftfe::utils::div(float a, hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#aa6071619fb3cb1846241afbe4bba8a0a',1,'dftfe::utils::div(hipFloatComplex a, float b)'],['../namespacedftfe_1_1utils.html#a8ad3162b0dfcd5afd9d994480eff9642',1,'dftfe::utils::div(double a, hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#a95ee3e40cd60d2ebf89db7174038dd92',1,'dftfe::utils::div(hipFloatComplex a, double b)']]], + ['dofhandler_788',['dofHandler',['../classdftfe_1_1dft_class.html#a53d8f166d0fe89d975a2282c40cab43f',1,'dftfe::dftClass']]], + ['dofhandlereigen_789',['dofHandlerEigen',['../classdftfe_1_1dft_class.html#aff4daedf36758aef9b149c0a6c66c311',1,'dftfe::dftClass']]], + ['domainboundingvectorsfile_790',['domainBoundingVectorsFile',['../classdftfe_1_1dft_parameters.html#a9947ddb5e69ad0c7d2cafdc81a3c22cd',1,'dftfe::dftParameters']]], + ['domainerror_791',['DomainError',['../namespacedftfe_1_1utils.html#a1471d04b800b32a7d64f40fb4109b3fa',1,'dftfe::utils']]], + ['domainvectorsfileneb_792',['domainVectorsFileNEB',['../classdftfe_1_1run_parameters.html#a93e92d346d201681aae27ebc762c20dc',1,'dftfe::runParameters']]], + ['dot_793',['dot',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ad0d448da6d814b92517c6f07ff7969f4',1,'dftfe::linearAlgebra::MultiVector']]], + ['dummy_5fmpi_5ftag_794',['DUMMY_MPI_TAG',['../namespacedftfe_1_1utils_1_1mpi.html#a0de142e88f623d0095015e05b96808f5aca6c6d77288fa7def2204455ba7a47fb',1,'dftfe::utils::mpi']]], + ['dvec_795',['dvec',['../classdftfe_1_1dealii_linear_solver.html#afa5a2dccc6af13bfd58fbe1c4c713e70',1,'dftfe::dealiiLinearSolver']]] +]; diff --git a/search/all_5.js b/search/all_5.js new file mode 100644 index 000000000..f0213c6b2 --- /dev/null +++ b/search/all_5.js @@ -0,0 +1,44 @@ +var searchData= +[ + ['eigenpairs_5fhermitian_0',['eigenpairs_hermitian',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#af889f3eab21c47bee9dd4019a5db9c5a',1,'dftfe::ScaLAPACKMatrix']]], + ['eigenpairs_5fhermitian_5fby_5findex_1',['eigenpairs_hermitian_by_index',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#aa81dd4d98eafdd4fe40db0b0133f2165',1,'dftfe::ScaLAPACKMatrix']]], + ['eigenpairs_5fhermitian_5fby_5findex_5fmrrr_2',['eigenpairs_hermitian_by_index_MRRR',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a5599c27fc237ac7e69999ba6d7d913d9',1,'dftfe::ScaLAPACKMatrix']]], + ['eigenpairs_5fhermitian_5fmrrr_3',['eigenpairs_hermitian_MRRR',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ab4ae288a0acc2add361f98cfe8312aa8',1,'dftfe::ScaLAPACKMatrix']]], + ['eigensolver_2eh_4',['eigenSolver.h',['../eigen_solver_8h.html',1,'']]], + ['eigensolverclass_5',['eigenSolverClass',['../classdftfe_1_1eigen_solver_class.html',1,'dftfe::eigenSolverClass'],['../classdftfe_1_1eigen_solver_class.html#add942b58e705efcd44067ca8ae932d40',1,'dftfe::eigenSolverClass::eigenSolverClass()']]], + ['eigenvalues_6',['eigenValues',['../classdftfe_1_1dft_class.html#ad190d0def7c316dda3afea1ade0c8440',1,'dftfe::dftClass']]], + ['eigenvalues_7',['eigenvalues',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06a119d774c7aeee24e20c41a0947abf1b3',1,'dftfe::LAPACKSupport']]], + ['eigenvaluesrrsplit_8',['eigenValuesRRSplit',['../classdftfe_1_1dft_class.html#a2da58a9055e355443671463aa891f564',1,'dftfe::dftClass']]], + ['element_9',['Element',['../structdftfe_1_1pseudo_utils_1_1_element.html',1,'dftfe::pseudoUtils::Element'],['../structdftfe_1_1pseudo_utils_1_1_element.html#ad8152975474dc567546eaac70229110f',1,'dftfe::pseudoUtils::Element::Element()']]], + ['elements_10',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['elpadeallocatehandles_11',['elpaDeallocateHandles',['../classdftfe_1_1elpa_scala_manager.html#a7b4b6d4a97b0a608d8ba2c5534b6b371',1,'dftfe::elpaScalaManager']]], + ['elpascalamanager_12',['elpaScalaManager',['../classdftfe_1_1elpa_scala_manager.html',1,'dftfe::elpaScalaManager'],['../classdftfe_1_1elpa_scala_manager.html#a2ca0b6089b3f59a2d0e42f918e7ce9b2',1,'dftfe::elpaScalaManager::elpaScalaManager()']]], + ['elpascalamanager_2eh_13',['elpaScalaManager.h',['../elpa_scala_manager_8h.html',1,'']]], + ['end_14',['end',['../classdftfe_1_1utils_1_1_memory_storage.html#a6cfcdefa08c9fe96f230a1bd97b9e881',1,'dftfe::utils::MemoryStorage::end()'],['../classdftfe_1_1utils_1_1_memory_storage.html#a018363f19becdf162dc02901cfda21a8',1,'dftfe::utils::MemoryStorage::end() const'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a896eb2bbc51a5b7a6b700117443e6932',1,'dftfe::linearAlgebra::MultiVector::end()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a4d008ff333f0ab43a21b25f76f81c516',1,'dftfe::linearAlgebra::MultiVector::end() const']]], + ['energycalculator_15',['energyCalculator',['../classdftfe_1_1energy_calculator.html',1,'dftfe::energyCalculator'],['../classdftfe_1_1energy_calculator.html#ac44a9e03a54412aebb79fbab5582879e',1,'dftfe::energyCalculator::energyCalculator()']]], + ['energycalculator_2eh_16',['energyCalculator.h',['../energy_calculator_8h.html',1,'']]], + ['eshelbytensor_2eh_17',['eshelbyTensor.h',['../eshelby_tensor_8h.html',1,'']]], + ['eshelbytensorspinpolarized_2eh_18',['eshelbyTensorSpinPolarized.h',['../eshelby_tensor_spin_polarized_8h.html',1,'']]], + ['estimatejaccondnofinalscfiter_19',['estimateJacCondNoFinalSCFIter',['../classdftfe_1_1dft_parameters.html#af258937427b4d8fca5cd838cef583796',1,'dftfe::dftParameters']]], + ['excdensitybaseclass_20',['excDensityBaseClass',['../classdftfe_1_1exc_density_base_class.html',1,'dftfe::excDensityBaseClass'],['../classdftfe_1_1exc_density_base_class.html#a99433e2dcb5c164d2df7bb2870db8c43',1,'dftfe::excDensityBaseClass::excDensityBaseClass()']]], + ['excdensitybaseclass_2eh_21',['excDensityBaseClass.h',['../exc_density_base_class_8h.html',1,'']]], + ['excdensityggaclass_22',['excDensityGGAClass',['../classdftfe_1_1exc_density_g_g_a_class.html',1,'dftfe::excDensityGGAClass'],['../classdftfe_1_1exc_density_g_g_a_class.html#abea3bf26e00a36a9f85671be95979d65',1,'dftfe::excDensityGGAClass::excDensityGGAClass(xc_func_type *funcXPtr, xc_func_type *funcCPtr, bool isSpinPolarized, bool scaleExchange, bool computeCorrelation, double scaleExchangeFactor)'],['../classdftfe_1_1exc_density_g_g_a_class.html#ae802a501a958de43cebcf057bbc81bca',1,'dftfe::excDensityGGAClass::excDensityGGAClass(xc_func_type *funcXPtr, xc_func_type *funcCPtr, bool isSpinPolarized, std::string modelXCInputFile, bool scaleExchange, bool computeCorrelation, double scaleExchangeFactor)']]], + ['excdensityggaclass_2eh_23',['excDensityGGAClass.h',['../exc_density_g_g_a_class_8h.html',1,'']]], + ['excdensityldaclass_24',['excDensityLDAClass',['../classdftfe_1_1exc_density_l_d_a_class.html',1,'dftfe::excDensityLDAClass'],['../classdftfe_1_1exc_density_l_d_a_class.html#a69cefe1e33ae070448ed32c34aa71939',1,'dftfe::excDensityLDAClass::excDensityLDAClass(xc_func_type *funcXPtr, xc_func_type *funcCPtr, bool isSpinPolarized, bool scaleExchange, bool computeCorrelation, double scaleExchangeFactor)'],['../classdftfe_1_1exc_density_l_d_a_class.html#a1fc2b191d178dd3046127dfca8664705',1,'dftfe::excDensityLDAClass::excDensityLDAClass(xc_func_type *funcXPtr, xc_func_type *funcCPtr, bool isSpinPolarized, std::string modelXCInputFile, bool scaleExchange, bool computeCorrelation, double scaleExchangeFactor)']]], + ['excdensityldaclass_2eh_25',['excDensityLDAClass.h',['../exc_density_l_d_a_class_8h.html',1,'']]], + ['excdensitypositivitychecktypes_26',['excDensityPositivityCheckTypes',['../namespacedftfe.html#a954ce72efb7db01d751b54db20ccf00d',1,'dftfe']]], + ['excdensitypositivitychecktypes_2eh_27',['excDensityPositivityCheckTypes.h',['../exc_density_positivity_check_types_8h.html',1,'']]], + ['exception_5fpositive_28',['EXCEPTION_POSITIVE',['../namespacedftfe.html#a954ce72efb7db01d751b54db20ccf00da3148d0720d4e71e66555af7d5c53dafa',1,'dftfe']]], + ['exceptions_2eh_29',['Exceptions.h',['../_exceptions_8h.html',1,'']]], + ['exchangelocallist_30',['exchangeLocalList',['../namespacedftfe_1_1pseudo_utils.html#a632cef0d925994de3ee116e41bd113a4',1,'dftfe::pseudoUtils']]], + ['exchangenumberingmap_31',['exchangeNumberingMap',['../namespacedftfe_1_1pseudo_utils.html#ab7952c0e9cd4cf03cf387aded99fc5d7',1,'dftfe::pseudoUtils']]], + ['excmanager_32',['excManager',['../classdftfe_1_1exc_manager.html',1,'dftfe::excManager'],['../classdftfe_1_1exc_manager.html#aa920e72cc6c3e25ead723ab1ca185d18',1,'dftfe::excManager::excManager()']]], + ['excmanager_2eh_33',['excManager.h',['../exc_manager_8h.html',1,'']]], + ['excwavefunctionbaseclass_34',['excWavefunctionBaseClass',['../classdftfe_1_1exc_wavefunction_base_class.html',1,'dftfe::excWavefunctionBaseClass'],['../classdftfe_1_1exc_wavefunction_base_class.html#aedada949ec36757aef0d9fa0764edf42',1,'dftfe::excWavefunctionBaseClass::excWavefunctionBaseClass()']]], + ['excwavefunctionbaseclass_2eh_35',['excWavefunctionBaseClass.h',['../exc_wavefunction_base_class_8h.html',1,'']]], + ['excwavefunctionnoneclass_36',['excWavefunctionNoneClass',['../classdftfe_1_1exc_wavefunction_none_class.html',1,'dftfe::excWavefunctionNoneClass'],['../classdftfe_1_1exc_wavefunction_none_class.html#a6b8be2a5fb57ff0ed99968fd8c015ce1',1,'dftfe::excWavefunctionNoneClass::excWavefunctionNoneClass()']]], + ['excwavefunctionnoneclass_2eh_37',['excWavefunctionNoneClass.h',['../exc_wavefunction_none_class_8h.html',1,'']]], + ['extracttocellnodaldata_38',['extractToCellNodalData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a41ce1d0901d1a1ab161ad2ca23c1656b',1,'dftfe::basis::FEBasisOperations']]], + ['extracttocellnodaldatakernel_39',['extractToCellNodalDataKernel',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#af869ccd152a4c2bfdc69ecc5436a36d9',1,'dftfe::basis::FEBasisOperations']]], + ['extrapolatedensity_40',['extrapolateDensity',['../classdftfe_1_1dft_parameters.html#a9d859d8c839358fb6c5f22d0efc76a48',1,'dftfe::dftParameters']]] +]; diff --git a/search/all_6.js b/search/all_6.js new file mode 100644 index 000000000..2517cce14 --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['failure_0',['FAILURE',['../classdftfe_1_1non_linear_solver.html#ae0e20e973c1797bd9ea9d06fb2aff9e7a611ee8ff0567d79090641884e465f110',1,'dftfe::nonLinearSolver::FAILURE'],['../classdftfe_1_1eigen_solver_class.html#a9c442ebbb90a179cba7e4889d7fdd700a36fc6065a3e970bc3e6b2e59da52bf2a',1,'dftfe::eigenSolverClass::FAILURE']]], + ['fe_1',['FE',['../index.html#autotoc_md3',1,'Contributing to DFT-FE'],['../classdftfe_1_1dft_class.html#af1612ad0f3be5f09edd19c311d77617e',1,'dftfe::dftClass::FE'],['../classdftfe_1_1symmetry_class.html#a8428d82272aedc9144733b23121f75c4',1,'dftfe::symmetryClass::FE'],['../index.html#autotoc_md2',1,'Running DFT-FE']]], + ['fe_20_3a_20density_20functional_20theory_20with_20finite_20elements_2',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['febasisoperations_3',['FEBasisOperations',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html',1,'dftfe::basis::FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpace >'],['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#adbb30c93ec2d8500c5d731fb6d77be4d',1,'dftfe::basis::FEBasisOperations::FEBasisOperations()']]], + ['febasisoperations_2eh_4',['FEBasisOperations.h',['../_f_e_basis_operations_8h.html',1,'']]], + ['febasisoperationskernelsinternal_2eh_5',['FEBasisOperationsKernelsInternal.h',['../_f_e_basis_operations_kernels_internal_8h.html',1,'']]], + ['feeigen_6',['FEEigen',['../classdftfe_1_1dft_class.html#a3e52c6ffc2d315bb8fcad461582f55f4',1,'dftfe::dftClass']]], + ['feforce_7',['FEForce',['../classdftfe_1_1force_class.html#a89123c63740f5781c70567976409fb53',1,'dftfe::forceClass']]], + ['femovemesh_8',['FEMoveMesh',['../classdftfe_1_1mesh_movement_class.html#a0df44499e64912ea65685803512874d4',1,'dftfe::meshMovementClass']]], + ['fermienergy_9',['fermiEnergy',['../classdftfe_1_1dft_class.html#aab20dd4296fc3debaaec6d0f088ba797',1,'dftfe::dftClass']]], + ['fermienergydown_10',['fermiEnergyDown',['../classdftfe_1_1dft_class.html#a2fd5c513233dad1680783771b979867f',1,'dftfe::dftClass']]], + ['fermienergyup_11',['fermiEnergyUp',['../classdftfe_1_1dft_class.html#a25e19340bca90437ab47951337dba59f',1,'dftfe::dftClass']]], + ['fieldgradl2norm_12',['fieldGradl2Norm',['../classdftfe_1_1dft_class.html#a81387e05d7fe52554c2aba25dbfba0d1',1,'dftfe::dftClass']]], + ['filereaders_2eh_13',['fileReaders.h',['../file_readers_8h.html',1,'']]], + ['fillparalleloverlapmatrix_14',['fillParallelOverlapMatrix',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a7374662bbb8cb4f1f06934af68f1b9d8',1,'dftfe::linearAlgebraOperations::internal']]], + ['fillparalleloverlapmatrixmixedprec_15',['fillParallelOverlapMatrixMixedPrec',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a88f2d97c179cd7082c44efd4bfc8a7db',1,'dftfe::linearAlgebraOperations::internal']]], + ['finalizeincrementfield_16',['finalizeIncrementField',['../classdftfe_1_1mesh_movement_class.html#a601dbcee450a5780fc95fd0aa1b858c5',1,'dftfe::meshMovementClass']]], + ['finalizekohnshamdftoperator_17',['finalizeKohnShamDFTOperator',['../classdftfe_1_1dft_class.html#a5557fffd3f96fa47f91dfad2bd3acf95',1,'dftfe::dftClass']]], + ['findclosestverticestodestinationpoints_18',['findClosestVerticesToDestinationPoints',['../classdftfe_1_1mesh_movement_class.html#a2e907489e90ae799d57c97b278da1207',1,'dftfe::meshMovementClass']]], + ['findmep_19',['findMEP',['../classdftfe_1_1nudged_elastic_band_class.html#a4a5bdb8cf2cfd7bed8705436f020f57d',1,'dftfe::nudgedElasticBandClass']]], + ['finish_20',['finish',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a8024f9fd7a865d33a1fed31e10555a84',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['finite_20elements_21',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['finiteelementpolynomialorder_22',['finiteElementPolynomialOrder',['../classdftfe_1_1dft_parameters.html#a898b8a65b5805df9cb48f8e5e7be551b',1,'dftfe::dftParameters']]], + ['finiteelementpolynomialorderelectrostatics_23',['finiteElementPolynomialOrderElectrostatics',['../classdftfe_1_1dft_parameters.html#a05d9c7e145ab7ff223b48e0d70ef7f37',1,'dftfe::dftParameters']]], + ['first_5fprocess_5fcolumn_24',['first_process_column',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ac3182cb7ef74187d6653acf1a0f631a5',1,'dftfe::ScaLAPACKMatrix']]], + ['first_5fprocess_5frow_25',['first_process_row',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ae97503a5c7979bb0dc1fb4255c261f4a',1,'dftfe::ScaLAPACKMatrix']]], + ['floatingnuclearcharges_26',['floatingNuclearCharges',['../classdftfe_1_1dft_parameters.html#a07731afe186b8b443cb8d0da82405fca',1,'dftfe::dftParameters']]], + ['fnlgammaatomselementalcontribution_27',['FnlGammaAtomsElementalContribution',['../classdftfe_1_1force_class.html#a57c273d5e3ceed5fc754068a4ef89bf1',1,'dftfe::forceClass']]], + ['fnlgammaxelementalcontribution_28',['FnlGammaxElementalContribution',['../classdftfe_1_1force_class.html#ab8307626a162a73df1210865551ff53a',1,'dftfe::forceClass']]], + ['fnonlinearcorecorrectiongammaatomselementalcontribution_29',['FNonlinearCoreCorrectionGammaAtomsElementalContribution',['../classdftfe_1_1force_class.html#a5a0d4d6108e9caffd3ff9862b5444543',1,'dftfe::forceClass::FNonlinearCoreCorrectionGammaAtomsElementalContribution(std::map< unsigned int, std::vector< double > > &forceContributionFNonlinearCoreCorrectionGammaAtoms, dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &vxcQuads, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms)'],['../classdftfe_1_1force_class.html#ae0ce682396c01b28d8d9701be7c99227',1,'dftfe::forceClass::FNonlinearCoreCorrectionGammaAtomsElementalContribution(std::map< unsigned int, std::vector< double > > &forceContributionFNonlinearCoreCorrectionGammaAtoms, dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derExcGradRho, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms)']]], + ['fnonlinearcorecorrectiongammaatomselementalcontributionspinpolarized_30',['FNonlinearCoreCorrectionGammaAtomsElementalContributionSpinPolarized',['../classdftfe_1_1force_class.html#a6f338532c0a381c9c13c3b7c62dc3fe0',1,'dftfe::forceClass']]], + ['force_2eh_31',['force.h',['../force_8h.html',1,'']]], + ['forceclass_32',['forceClass',['../classdftfe_1_1force_class.html',1,'dftfe::forceClass< FEOrder, FEOrderElectro, memorySpace >'],['../classdftfe_1_1force_class.html#a14b0b7000a00710a35dd8327e806fa74',1,'dftfe::forceClass::forceClass()']]], + ['forceclass_3c_20feorder_2c_20feorderelectro_2c_20memoryspace_20_3e_33',['forceClass< FEOrder, FEOrderElectro, memorySpace >',['../classdftfe_1_1dft_class.html#ab89cd27acacc873f839fdb1bef63a322',1,'dftfe::dftClass']]], + ['forceptr_34',['forcePtr',['../classdftfe_1_1dft_class.html#ad91780dc421439e559d181043163c3dc',1,'dftfe::dftClass']]], + ['forcerelaxtol_35',['forceRelaxTol',['../classdftfe_1_1dft_parameters.html#a1ada5303b4fd3c21f697826062e9050e',1,'dftfe::dftParameters']]], + ['forcewfccontractions_2eh_36',['forceWfcContractions.h',['../force_wfc_contractions_8h.html',1,'']]], + ['forcewfccontractionsdevicekernels_2eh_37',['forceWfcContractionsDeviceKernels.h',['../force_wfc_contractions_device_kernels_8h.html',1,'']]], + ['fphitotsmearedchargesgammaatomselementalcontribution_38',['FPhiTotSmearedChargesGammaAtomsElementalContribution',['../classdftfe_1_1force_class.html#a27ce759c41077b9232c80ae9825d7ec4',1,'dftfe::forceClass']]], + ['fpsplocalgammaatomselementalcontribution_39',['FPSPLocalGammaAtomsElementalContribution',['../classdftfe_1_1force_class.html#ab469d7e8b6ef893de79c06aec80e8f6a',1,'dftfe::forceClass']]], + ['full_40',['full',['../namespacedftfe_1_1utils_1_1mpi.html#a0210bc35f26587376caf48af1eeb137aae9dc924f238fa6cc29465942875fe8f0',1,'dftfe::utils::mpi']]], + ['functional_20theory_20with_20finite_20elements_41',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['fvselfsmearedchargesgammaatomselementalcontribution_42',['FVselfSmearedChargesGammaAtomsElementalContribution',['../classdftfe_1_1force_class.html#ac7a6b13b799ce3a8d6ea4de02ce9bae0',1,'dftfe::forceClass']]], + ['fxcoutputdataattributes_43',['fxcOutputDataAttributes',['../namespacedftfe.html#a4fa68bb7b2c5cb5edbe73ced50300475',1,'dftfe']]] +]; diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 000000000..ab9cb8bdf --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,207 @@ +var searchData= +[ + ['gatherlocallyownedentriessendbuffertotargetprocs_0',['gatherLocallyOwnedEntriesSendBufferToTargetProcs',['../classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels.html#ae1c332046bba50331d950e87f0049248',1,'dftfe::utils::MPICommunicatorP2PKernels']]], + ['gaussianconstantforce_1',['gaussianConstantForce',['../classdftfe_1_1dft_parameters.html#a1960b6a1e3c485d25abe340c31989553',1,'dftfe::dftParameters']]], + ['gaussianorderforce_2',['gaussianOrderForce',['../classdftfe_1_1dft_parameters.html#a6c5b28f50bf563cd4ef5197bda503d12',1,'dftfe::dftParameters']]], + ['gaussianordermovemeshtoatoms_3',['gaussianOrderMoveMeshToAtoms',['../classdftfe_1_1dft_parameters.html#ac9302095e3a347e3e62550f7a63b02df',1,'dftfe::dftParameters']]], + ['general_4',['general',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#af3c45dcea64890f047b4dca87fdde9aca63df404db8dd3aaa130bb72937c25107',1,'dftfe::LAPACKSupport']]], + ['generateautomaticmeshapriori_5',['generateAutomaticMeshApriori',['../classdftfe_1_1triangulation_manager.html#a6db96c0b47b43986e69ad03e5a067fd9',1,'dftfe::triangulationManager']]], + ['generatecoarsemesh_6',['generateCoarseMesh',['../classdftfe_1_1triangulation_manager.html#a63613fb68f1bf29670d7c094cc117fde',1,'dftfe::triangulationManager']]], + ['generatecoarsemeshesforrestart_7',['generateCoarseMeshesForRestart',['../classdftfe_1_1triangulation_manager.html#a35ab10e7f2b9c99ed596ede370916b16',1,'dftfe::triangulationManager']]], + ['generateimagecharges_8',['generateImageCharges',['../classdftfe_1_1dft_class.html#a31f6cd17e2dd532fe945e502a25f936d',1,'dftfe::dftClass']]], + ['generatemesh_9',['generateMesh',['../classdftfe_1_1triangulation_manager.html#ae298d2a96256b8bd015c597049d33303',1,'dftfe::triangulationManager']]], + ['generatempgrid_10',['generateMPGrid',['../classdftfe_1_1dft_class.html#a19961529f3d534fa18298f7f76e99531',1,'dftfe::dftClass']]], + ['generateresetmeshes_11',['generateResetMeshes',['../classdftfe_1_1triangulation_manager.html#a5e8b6aaf180aba7d8e3182786f676e7a',1,'dftfe::triangulationManager']]], + ['generateserialunmovedandparallelmovedunmovedmesh_12',['generateSerialUnmovedAndParallelMovedUnmovedMesh',['../classdftfe_1_1triangulation_manager.html#ae604ea69dd2af486a4b0dfe81588e85e',1,'dftfe::triangulationManager']]], + ['geometryoptimizationclass_13',['geometryOptimizationClass',['../classdftfe_1_1geometry_optimization_class.html',1,'dftfe::geometryOptimizationClass'],['../classdftfe_1_1geometry_optimization_class.html#a05c3cfd77ad33cb7758b9a488ac0ed07',1,'dftfe::geometryOptimizationClass::geometryOptimizationClass()']]], + ['geometryoptimizationclass_2eh_14',['geometryOptimizationClass.h',['../geometry_optimization_class_8h.html',1,'']]], + ['geooptcell_15',['geoOptCell',['../classdftfe_1_1geo_opt_cell.html',1,'dftfe::geoOptCell'],['../classdftfe_1_1geo_opt_cell.html#a9725a2266871b35b8d5535c5a3448ce2',1,'dftfe::geoOptCell::geoOptCell()']]], + ['geooptcell_2eh_16',['geoOptCell.h',['../geo_opt_cell_8h.html',1,'']]], + ['geooption_17',['geoOptIon',['../classdftfe_1_1geo_opt_ion.html',1,'dftfe::geoOptIon'],['../classdftfe_1_1geo_opt_ion.html#ae95c55c80eab3491fe60988fa22f75af',1,'dftfe::geoOptIon::geoOptIon()']]], + ['geooption_2eh_18',['geoOptIon.h',['../geo_opt_ion_8h.html',1,'']]], + ['get_5finterpool_5fcomm_19',['get_interpool_comm',['../classdftfe_1_1dft_utils_1_1_pool.html#a3c9a67abe1e1a8310cad03f46b4af4bd',1,'dftfe::dftUtils::Pool']]], + ['get_5fintrapool_5fcomm_20',['get_intrapool_comm',['../classdftfe_1_1dft_utils_1_1_pool.html#a16e43d70ad01abc5d84180e2d404da38',1,'dftfe::dftUtils::Pool']]], + ['get_5fprocess_5fgrid_5fcolumns_21',['get_process_grid_columns',['../classdftfe_1_1_process_grid.html#ac0f46f07c2de3b6564b8793d629e1bf3',1,'dftfe::ProcessGrid']]], + ['get_5fprocess_5fgrid_5frows_22',['get_process_grid_rows',['../classdftfe_1_1_process_grid.html#a070f58a1dd24772ba335fd6e0bf7116e',1,'dftfe::ProcessGrid']]], + ['get_5fproperty_23',['get_property',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a6213590579de7473604c7b7fc7fb1dcc',1,'dftfe::ScaLAPACKMatrix']]], + ['get_5fstate_24',['get_state',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a1b6277fcc0a927bb6bed309eaaef18cc',1,'dftfe::ScaLAPACKMatrix']]], + ['get_5fthis_5fprocess_5fcolumn_25',['get_this_process_column',['../classdftfe_1_1_process_grid.html#a7e3e0a60c5cdb5af1f705fc5574ef707',1,'dftfe::ProcessGrid']]], + ['get_5fthis_5fprocess_5frow_26',['get_this_process_row',['../classdftfe_1_1_process_grid.html#a0a402b73111bcf3639467bf70514143a',1,'dftfe::ProcessGrid']]], + ['getatomcenteredkpointindexedsphericalfnquadvalues_27',['getAtomCenteredKpointIndexedSphericalFnQuadValues',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a84f83b46caca0bfb80f788191bbcd54e',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getatomcenteredkpointtimessphericalfntimesdistfromatomquadvalues_28',['getAtomCenteredKpointTimesSphericalFnTimesDistFromAtomQuadValues',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a2f1d0336492e5eaa5918feeff5f275fb',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getatomcoordinates_29',['getAtomCoordinates',['../classdftfe_1_1_atom_centered_spherical_function_container.html#aa7d11836691e8c9729013e3abe3616fa',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['getatomicnumbers_30',['getAtomicNumbers',['../classdftfe_1_1_atom_centered_spherical_function_container.html#ae0d266ca2268a95e340b349c4a193841',1,'dftfe::AtomCenteredSphericalFunctionContainer::getAtomicNumbers()'],['../classdftfe_1_1dftfe_wrapper.html#a4bb128c03ef09e1b4bd1a3dca2e9b8b2',1,'dftfe::dftfeWrapper::getAtomicNumbers()']]], + ['getatomidbinidmaplocalallimages_31',['getAtomIdBinIdMapLocalAllImages',['../classdftfe_1_1vself_bins_manager.html#adb96700444c2a24e822808bb890ff509',1,'dftfe::vselfBinsManager']]], + ['getatomidincurrentprocessor_32',['getAtomIdInCurrentProcessor',['../classdftfe_1_1oncv_class.html#a2fa66c12a14bdce8840c7c6a95905814',1,'dftfe::oncvClass']]], + ['getatomidsbins_33',['getAtomIdsBins',['../classdftfe_1_1vself_bins_manager.html#ad7dc16b81e6779100b6231e6cc918bec',1,'dftfe::vselfBinsManager']]], + ['getatomidsincurrentprocess_34',['getAtomIdsInCurrentProcess',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a7c7ef4d53a0e4d88413bc7659ac2a3bb',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['getatomidsinelement_35',['getAtomIdsInElement',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a7d36e0177c10d0c493acf9140627b39d',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['getatomidtonontrivialsphericalfncellstartindex_36',['getAtomIdToNonTrivialSphericalFnCellStartIndex',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a028998f189c8c3c59f80c7a310e9a27b',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getatomimageidsbins_37',['getAtomImageIdsBins',['../classdftfe_1_1vself_bins_manager.html#a84a105106f0c8bde2eff23107cc731b4',1,'dftfe::vselfBinsManager']]], + ['getatomlocationscart_38',['getAtomLocationsCart',['../classdftfe_1_1dft_class.html#aef0c823cff5dab701dea490607d51364',1,'dftfe::dftClass::getAtomLocationsCart()'],['../classdftfe_1_1dft_base.html#a7d88b379db559eaeb4bf4a91e66567c5',1,'dftfe::dftBase::getAtomLocationsCart()']]], + ['getatomlocationsfrac_39',['getAtomLocationsFrac',['../classdftfe_1_1dft_class.html#aec3dcbf0cf1a7c84a51e18452aaa02f0',1,'dftfe::dftClass::getAtomLocationsFrac()'],['../classdftfe_1_1dft_base.html#a4263546ddfcd61bbd9a0b02d2e731c57',1,'dftfe::dftBase::getAtomLocationsFrac()']]], + ['getatompositionscart_40',['getAtomPositionsCart',['../classdftfe_1_1dftfe_wrapper.html#ad8882d3dc76b1b34893500c44a7d9a70',1,'dftfe::dftfeWrapper']]], + ['getatompositionsfrac_41',['getAtomPositionsFrac',['../classdftfe_1_1dftfe_wrapper.html#a043df110bc86ac36e0a6dd6e3eb65f83',1,'dftfe::dftfeWrapper']]], + ['getatomsforces_42',['getAtomsForces',['../classdftfe_1_1force_class.html#a561a0d1c86dc8af0ef9861f17615f26c',1,'dftfe::forceClass']]], + ['getatomtypes_43',['getAtomTypes',['../classdftfe_1_1dft_class.html#a1455926c513cbce6275d70b52740245a',1,'dftfe::dftClass::getAtomTypes()'],['../classdftfe_1_1dft_base.html#a901acff26b3f2059540ae6a9a50331f7',1,'dftfe::dftBase::getAtomTypes()']]], + ['getatomwisenumbercellsaccumulated_44',['getAtomWiseNumberCellsAccumulated',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a73690822ed01e25794e375699f4b8cc9',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getatomwisenumbercellsincompactsupport_45',['getAtomWiseNumberCellsInCompactSupport',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a3ca152279542abc052ea9dc9d111d3b3',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getblocksize_46',['getBlockSize',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#aa361225f97c01df823a0916696501878',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['getboundaryflagsbins_47',['getBoundaryFlagsBins',['../classdftfe_1_1vself_bins_manager.html#a4887d6b82123f485217d83d36adea58c',1,'dftfe::vselfBinsManager']]], + ['getboundaryflagsbinsonlychargeid_48',['getBoundaryFlagsBinsOnlyChargeId',['../classdftfe_1_1vself_bins_manager.html#a440a6efe552e14880fe777e052643f9d',1,'dftfe::vselfBinsManager']]], + ['getcell_49',['getCell',['../classdftfe_1_1dft_class.html#a67cd18b3b95bbc7b7403c7a7a127fe98',1,'dftfe::dftClass::getCell()'],['../classdftfe_1_1dft_base.html#ae8894911ab9825182f4c062b5ad619e0',1,'dftfe::dftBase::getCell()'],['../classdftfe_1_1dftfe_wrapper.html#ad3f6b5d56090f30005da6b13951f1fa1',1,'dftfe::dftfeWrapper::getCell()']]], + ['getcellidtoatomidslocalcompactsupportmap_50',['getCellIdToAtomIdsLocalCompactSupportMap',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a83d4a00e59959fa2b2e849eeae684e02',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getcellstress_51',['getCellStress',['../classdftfe_1_1dft_class.html#aba05e61c6786a517ce5dc07ceaa93acf',1,'dftfe::dftClass::getCellStress()'],['../classdftfe_1_1dft_base.html#af42b1f2a799a1c16d2a71770b9b656bb',1,'dftfe::dftBase::getCellStress()'],['../classdftfe_1_1dftfe_wrapper.html#a405a6bc429fb96ab5c5f86b3ec70fb57',1,'dftfe::dftfeWrapper::getCellStress()']]], + ['getcellvolume_52',['getCellVolume',['../classdftfe_1_1dft_class.html#add2ffcb7c3b99a19904aee11f557b902',1,'dftfe::dftClass::getCellVolume()'],['../classdftfe_1_1dft_base.html#a9be899150f9aef815cc7870d21d7dd0d',1,'dftfe::dftBase::getCellVolume()']]], + ['getchararray_53',['getCharArray',['../classdftfe_1_1dft_utils_1_1_composite_data.html#a1702165bc6bd0098bab2034e88cba916',1,'dftfe::dftUtils::CompositeData::getCharArray()'],['../classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html#a1e2a2262c38e84d7315a8029e0d30bd8',1,'dftfe::dftUtils::QuadDataCompositeWrite::getCharArray()']]], + ['getclosestatomidsbins_54',['getClosestAtomIdsBins',['../classdftfe_1_1vself_bins_manager.html#abd6af334d47707a3b9b1c665b29615e9',1,'dftfe::vselfBinsManager']]], + ['getclosestatomlocationsbins_55',['getClosestAtomLocationsBins',['../classdftfe_1_1vself_bins_manager.html#ae5c142f1d7129aaf3aeca200109d06c4',1,'dftfe::vselfBinsManager']]], + ['getcompositegeneratorval_56',['getCompositeGeneratorVal',['../namespacedftfe_1_1dft_utils.html#a41080f57d452717c89539d41150c991b',1,'dftfe::dftUtils']]], + ['getcosineangle_57',['getCosineAngle',['../namespacedftfe_1_1mesh_gen_utils.html#a526475d2e36bd9b6df44f734ede9ebbc',1,'dftfe::meshGenUtils::getCosineAngle(dealii::Tensor< 1, 3 > &Vector1, std::vector< double > &Vector2)'],['../namespacedftfe_1_1mesh_gen_utils.html#a7ba642c4d16ac2399e72ac5ad50112ff',1,'dftfe::meshGenUtils::getCosineAngle(std::vector< double > &Vector1, std::vector< double > &Vector2)']]], + ['getcouplingmatrix_58',['getCouplingMatrix',['../classdftfe_1_1oncv_class.html#ab03967e14c183bf089c35645259085b6',1,'dftfe::oncvClass']]], + ['getdataforsparsestructure_59',['getDataForSparseStructure',['../classdftfe_1_1_atom_centered_spherical_function_container.html#afe9ecb1443bbbf0190143c0b0f141912',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['getdebuglevel_60',['getDebugLevel',['../classdftfe_1_1non_linear_solver.html#ad03efe1123327c6f3fb0e6751bc389a1',1,'dftfe::nonLinearSolver']]], + ['getdensitybasedfamilytype_61',['getDensityBasedFamilyType',['../classdftfe_1_1exc_density_base_class.html#a9b5ca7a22a8dde0649ef0bceae56875c',1,'dftfe::excDensityBaseClass::getDensityBasedFamilyType()'],['../classdftfe_1_1exc_manager.html#a184b92ea85cc12067e65004de966c368',1,'dftfe::excManager::getDensityBasedFamilyType()']]], + ['getderivativevalue_62',['getDerivativeValue',['../classdftfe_1_1_atom_centered_spherical_function_base.html#aacef72bd797f7f027a74a94f1133d435',1,'dftfe::AtomCenteredSphericalFunctionBase::getDerivativeValue()'],['../classdftfe_1_1_atom_centered_spherical_function_bessel.html#a0617dac3c3acc96a365ca534f0a63dc8',1,'dftfe::AtomCenteredSphericalFunctionBessel::getDerivativeValue()'],['../classdftfe_1_1_atom_centered_spherical_function_gaussian.html#ac5bdf42dcd93117309887ad3157246fe',1,'dftfe::AtomCenteredSphericalFunctionGaussian::getDerivativeValue()'],['../classdftfe_1_1_atom_centered_spherical_function_sinc.html#a50207210a59eef866d1a09c82501b28a',1,'dftfe::AtomCenteredSphericalFunctionSinc::getDerivativeValue()'],['../classdftfe_1_1_atom_centered_spherical_function_spline.html#a7673d220d1e2b8ac5e75159158f6c607',1,'dftfe::AtomCenteredSphericalFunctionSpline::getDerivativeValue()'],['../classdftfe_1_1_atom_centered_spherical_function_z_over_r.html#a808107dbab0531ae86f12e8c853279c6',1,'dftfe::AtomCenteredSphericalFunctionZOverR::getDerivativeValue()']]], + ['getdftfebaseptr_63',['getDftfeBasePtr',['../classdftfe_1_1dftfe_wrapper.html#a540e44c8269a2cd921817030c8e05c7f',1,'dftfe::dftfeWrapper']]], + ['getdftfreeenergy_64',['getDFTFreeEnergy',['../classdftfe_1_1dftfe_wrapper.html#ab963656ed167b1b3f2b2cfe934108beb',1,'dftfe::dftfeWrapper']]], + ['getdofhandler_65',['getDofHandler',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a26ca26086d706e46309c84761e6aecfd',1,'dftfe::basis::FEBasisOperations']]], + ['geteelectroeshelbytensor_66',['getEElectroEshelbyTensor',['../namespacedftfe_1_1eshelby_tensor.html#aa5eed0a1e4289ecfd22f664d3cd2ce95',1,'dftfe::eshelbyTensor']]], + ['getelectronicentropicenergy_67',['getElectronicEntropicEnergy',['../classdftfe_1_1dftfe_wrapper.html#ae7c9171fef582de5f07cb28fe58e5740',1,'dftfe::dftfeWrapper']]], + ['getelocpspeshelbytensor_68',['getELocPspEshelbyTensor',['../namespacedftfe_1_1eshelby_tensor.html#af556efee5e4f8140193f973cb6f47eff',1,'dftfe::eshelbyTensor']]], + ['getelocxceshelbytensor_69',['getELocXcEshelbyTensor',['../namespacedftfe_1_1eshelby_tensor.html#af5829f7396d35efb69917e608caedf5d',1,'dftfe::eshelbyTensor::getELocXcEshelbyTensor()'],['../namespacedftfe_1_1eshelby_tensor_s_p.html#aca6760ff37ac8ce369016a1d4fed25b4',1,'dftfe::eshelbyTensorSP::getELocXcEshelbyTensor()']]], + ['getelpaautotunehandle_70',['getElpaAutoTuneHandle',['../classdftfe_1_1elpa_scala_manager.html#a4f33402d6657c3fafce8ca660b0f63f5',1,'dftfe::elpaScalaManager']]], + ['getelpahandle_71',['getElpaHandle',['../classdftfe_1_1elpa_scala_manager.html#abfb7e48e8d49f605b12a05ad961da8f5',1,'dftfe::elpaScalaManager']]], + ['getelpahandlepartialeigenvec_72',['getElpaHandlePartialEigenVec',['../classdftfe_1_1elpa_scala_manager.html#aa2100b8b390adb1a69ad77cd483767f3',1,'dftfe::elpaScalaManager']]], + ['getenergycorrection_73',['getEnergyCorrection',['../classdftfe_1_1dispersion_correction.html#a27f0e12a156fdcee6ed5ae425bb9b9e2',1,'dftfe::dispersionCorrection']]], + ['getentropicenergy_74',['getEntropicEnergy',['../classdftfe_1_1dft_class.html#a98f8c1f5830f7e1cfffb80b097e53cd4',1,'dftfe::dftClass::getEntropicEnergy()'],['../classdftfe_1_1dft_base.html#a9ac9d5a46e02de6f0ad10b2e430d563a',1,'dftfe::dftBase::getEntropicEnergy()']]], + ['getexcdensityobj_75',['getExcDensityObj',['../classdftfe_1_1exc_manager.html#a5816a49dfd654776d02fd6f086d7e92f',1,'dftfe::excManager::getExcDensityObj()'],['../classdftfe_1_1exc_manager.html#a800046c51d5e1c7e8dd5129cfc55d918',1,'dftfe::excManager::getExcDensityObj() const']]], + ['getexcwavefunctionobj_76',['getExcWavefunctionObj',['../classdftfe_1_1exc_manager.html#aa285dc0dc1c88ee87d037827f4754836',1,'dftfe::excManager::getExcWavefunctionObj()'],['../classdftfe_1_1exc_manager.html#a1c68b33e1927e8aaa7a75c3240f25298',1,'dftfe::excManager::getExcWavefunctionObj() const']]], + ['getflattenednonlocalcelldofindextoprocessdofindexmap_77',['getFlattenedNonLocalCellDofIndexToProcessDofIndexMap',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a37819b2af29cd711245075471543bfae',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getfnonlinearcorecorrection_78',['getFNonlinearCoreCorrection',['../namespacedftfe_1_1eshelby_tensor.html#a2bd9402ed74fe001f8c3bb6b7b9db768',1,'dftfe::eshelbyTensor::getFNonlinearCoreCorrection(const dealii::VectorizedArray< double > &vxc, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradRhoCore)'],['../namespacedftfe_1_1eshelby_tensor.html#a917d8da89f1bff8bb3283d29ba407705',1,'dftfe::eshelbyTensor::getFNonlinearCoreCorrection(const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derExcGradRho, const dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > &hessianRhoCore)'],['../namespacedftfe_1_1eshelby_tensor_s_p.html#af4ce2768abbdf57cad862817e9da5c98',1,'dftfe::eshelbyTensorSP::getFNonlinearCoreCorrection()']]], + ['getforcecorrection_79',['getForceCorrection',['../classdftfe_1_1dispersion_correction.html#a3f197f9d375f671a056108ef0f02fac7',1,'dftfe::dispersionCorrection']]], + ['getforceonatoms_80',['getForceonAtoms',['../classdftfe_1_1dft_class.html#a438c8de7ce0dc4413d8e9708c7af6fe3',1,'dftfe::dftClass::getForceonAtoms()'],['../classdftfe_1_1dft_base.html#ab4c604becc53153486be44ef1eb17c24',1,'dftfe::dftBase::getForceonAtoms()']]], + ['getforcesatoms_81',['getForcesAtoms',['../classdftfe_1_1dftfe_wrapper.html#aba23244f85c7a6cd6371a473729e041b',1,'dftfe::dftfeWrapper']]], + ['getfpsplocal_82',['getFPSPLocal',['../namespacedftfe_1_1eshelby_tensor.html#acb8868b38c81bb95905042fcc488a132',1,'dftfe::eshelbyTensor']]], + ['getfractionalcoordinates_83',['getFractionalCoordinates',['../namespacedftfe_1_1dft_utils.html#aeac281264238a68abaf9dd7be44a6d3e',1,'dftfe::dftUtils']]], + ['getfreeenergy_84',['getFreeEnergy',['../classdftfe_1_1dft_class.html#a1b7ad06e558e64f1c1fd344614bb607c',1,'dftfe::dftClass::getFreeEnergy()'],['../classdftfe_1_1dft_base.html#ac80b75566ece1b6ef1f1b3dc05407d4f',1,'dftfe::dftBase::getFreeEnergy()']]], + ['getghostindices_85',['getGhostIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#afc0d9e1d3a74ac5b4e47606c350d01f7',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getghostlocalindices_86',['getGhostLocalIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#abcd7af0f089f1eb739da32f4f2550a2d',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getghostlocalindicesranges_87',['getGhostLocalIndicesRanges',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a088145e75e35c68f77486d144f4e0d77',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getghostprocids_88',['getGhostProcIds',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a4332a5faecf748b236d583c56feb5e54',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getglobaldofatomidsphericalfnpair_89',['getGlobalDofAtomIdSphericalFnPair',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a10004e7f4c59c343e30c3c91443e3fef',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getintegralvalue_90',['getIntegralValue',['../classdftfe_1_1_atom_centered_spherical_function_base.html#a98dd30e81e121516e20a6c76b08dedb0',1,'dftfe::AtomCenteredSphericalFunctionBase']]], + ['getinternalenergy_91',['getInternalEnergy',['../classdftfe_1_1dft_class.html#ab36b6254b95baa538706158037607f8e',1,'dftfe::dftClass::getInternalEnergy()'],['../classdftfe_1_1dft_base.html#a01e8b55e51c7a8990185951e6341fa9d',1,'dftfe::dftBase::getInternalEnergy()']]], + ['getinversesqrtmassvector_92',['getInverseSqrtMassVector',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#aaac572173e5012b84c322672b5b7b022',1,'dftfe::KohnShamHamiltonianOperator::getInverseSqrtMassVector()'],['../classdftfe_1_1operator_d_f_t_class.html#af104701d3ac79f47543f6b825824e39e',1,'dftfe::operatorDFTClass::getInverseSqrtMassVector()']]], + ['getlocaldofindicesimag_93',['getLocalDofIndicesImag',['../classdftfe_1_1dft_class.html#ad18bad34001ab8d6b15ffaaa0d0e0a13',1,'dftfe::dftClass']]], + ['getlocaldofindicesreal_94',['getLocalDofIndicesReal',['../classdftfe_1_1dft_class.html#a6b79aeb0e60d013af40a9541f3702812',1,'dftfe::dftClass']]], + ['getlocalidofdistributedvec_95',['getLocalIdOfDistributedVec',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a70dcd73bd9afb0ae902eaaa6c3ce3e23',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getlocallyownedrange_96',['getLocallyOwnedRange',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a4352ee360a8f7be1ea03d0e4cbf629e8',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getlocalprocdofindicesimag_97',['getLocalProcDofIndicesImag',['../classdftfe_1_1dft_class.html#ae38cfe44dca47e54a58bbf28dfb40f91',1,'dftfe::dftClass']]], + ['getlocalprocdofindicesreal_98',['getLocalProcDofIndicesReal',['../classdftfe_1_1dft_class.html#a3f6df1ec1b63b5c2ed40f79c816d65bf',1,'dftfe::dftClass']]], + ['getmatrixfreedata_99',['getMatrixFreeData',['../classdftfe_1_1dft_class.html#ad1793ad9ed5222692eebb6f1ed69c361',1,'dftfe::dftClass']]], + ['getmaximumnumberiterations_100',['getMaximumNumberIterations',['../classdftfe_1_1non_linear_solver.html#a6bd53949604d87d3ebd24802155a0289',1,'dftfe::nonLinearSolver']]], + ['getmaximumnumberofsphericalfunctions_101',['getMaximumNumberOfSphericalFunctions',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a24b37aab0dd6443a9c4c869311ed042a',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['getmaxsingleatomentries_102',['getMaxSingleAtomEntries',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a761bbbe738c725db2a12f32174d75f01',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getmpicommunicator_103',['getMPICommunicator',['../classdftfe_1_1elpa_scala_manager.html#a9fc7ce986a761710aebd003aaf0e3715',1,'dftfe::elpaScalaManager::getMPICommunicator()'],['../classdftfe_1_1geo_opt_cell.html#aa92ad2dd7b55f1159002473d9419f8f1',1,'dftfe::geoOptCell::getMPICommunicator()'],['../classdftfe_1_1geo_opt_ion.html#a5f528a5c71d21eec9dcdf6466d42003e',1,'dftfe::geoOptIon::getMPICommunicator()'],['../classdftfe_1_1nonlinear_solver_problem.html#aa7975ffa832002cd2ae29185590775be',1,'dftfe::nonlinearSolverProblem::getMPICommunicator()'],['../classdftfe_1_1nudged_elastic_band_class.html#aa1a4ac64243daaead4171b23c874da6e',1,'dftfe::nudgedElasticBandClass::getMPICommunicator()']]], + ['getmpicommunicatordomain_104',['getMPICommunicatorDomain',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#aedfdf03e94c426b9c20d028d027a92a2',1,'dftfe::KohnShamHamiltonianOperator::getMPICommunicatorDomain()'],['../classdftfe_1_1operator_d_f_t_class.html#aef2dab467472730486e6b55a843e3959',1,'dftfe::operatorDFTClass::getMPICommunicatorDomain()']]], + ['getmpidatatype_105',['getMPIDataType',['../classdftfe_1_1dft_utils_1_1_composite_data.html#ab637524ec4fa72ee7fd108069ac48f71',1,'dftfe::dftUtils::CompositeData::getMPIDataType()'],['../classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html#a3b4dfe355e570925189815808c225a16',1,'dftfe::dftUtils::QuadDataCompositeWrite::getMPIDataType()']]], + ['getmpipatternp2p_106',['getMPIPatternP2P',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a14c223b2f88ed4a122fb9da5f762812a',1,'dftfe::utils::mpi::MPICommunicatorP2P::getMPIPatternP2P()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a33ce66548bbeb927bea3cfd1212d0a16',1,'dftfe::linearAlgebra::MultiVector::getMPIPatternP2P()']]], + ['getmultivector_107',['getMultiVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#add25136d4af4af94a9d884d5a5260d34',1,'dftfe::basis::FEBasisOperations']]], + ['getnonlocalelementtocellidvector_108',['getNonlocalElementToCellIdVector',['../classdftfe_1_1_atomic_centered_non_local_operator.html#aa6dbeab0ff3b0813d630ac8d8868671d',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getnonlocalelemidtolocalelemidmap_109',['getNonLocalElemIdToLocalElemIdMap',['../classdftfe_1_1_atomic_centered_non_local_operator.html#abb6330c167135fd110694be7bfd56fd3',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getnonlocaloperator_110',['getNonLocalOperator',['../classdftfe_1_1oncv_class.html#a2a4317dbef1da3cbe10eaa2f7705fe99',1,'dftfe::oncvClass']]], + ['getnontrivialallcellssphericalfnalphatoelemidmap_111',['getNonTrivialAllCellsSphericalFnAlphaToElemIdMap',['../classdftfe_1_1_atomic_centered_non_local_operator.html#aadd594648d8829bc1b9dc45676ab40cd',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getnontrivialsphericalfnscellstartindex_112',['getNonTrivialSphericalFnsCellStartIndex',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a42a63f86e880d795acff1173cd248693',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getnontrivialsphericalfnspercell_113',['getNonTrivialSphericalFnsPerCell',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a829a5d022586e9c3d03bacb1e6b8b62e',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getnumatomcenterssize_114',['getNumAtomCentersSize',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a411f556a781f31f28182df749defdad8',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['getnumbercharspercompositedata_115',['getNumberCharsPerCompositeData',['../classdftfe_1_1dft_utils_1_1_composite_data.html#a9a498eb8ee84ea740302d8953d1103b0',1,'dftfe::dftUtils::CompositeData::getNumberCharsPerCompositeData()'],['../classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html#aedc374ba0b3d26525dd56aa28a99cacc',1,'dftfe::dftUtils::QuadDataCompositeWrite::getNumberCharsPerCompositeData()']]], + ['getnumberunknowns_116',['getNumberUnknowns',['../classdftfe_1_1geo_opt_cell.html#ab7a19d891948b672f1549898ba1ab143',1,'dftfe::geoOptCell::getNumberUnknowns()'],['../classdftfe_1_1geo_opt_ion.html#a83543f9a545ab663f5b080b4c2e7fb74',1,'dftfe::geoOptIon::getNumberUnknowns()'],['../classdftfe_1_1nonlinear_solver_problem.html#ab1d9fe730067d7e7f920b26daf06f117',1,'dftfe::nonlinearSolverProblem::getNumberUnknowns()'],['../classdftfe_1_1nudged_elastic_band_class.html#a4d3a72449fd22ec8186fa9cafdcdba78',1,'dftfe::nudgedElasticBandClass::getNumberUnknowns()']]], + ['getnumghostindicesinproc_117',['getNumGhostIndicesInProc',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a08afcd2b84f7250d8c9601b8187828ed',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getnumghostindicesinprocs_118',['getNumGhostIndicesInProcs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a98c66a9f2536eef72d7fdbfb08a1f3f2',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getnumownedindicesfortargetproc_119',['getNumOwnedIndicesForTargetProc',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a110721b1e6aea0e08dca76d8d959f0ae',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getnumownedindicesfortargetprocs_120',['getNumOwnedIndicesForTargetProcs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a6ee60981b6d41cd29394724e4c582af7',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getoverloadedconstraintmatrix_121',['getOverloadedConstraintMatrix',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a8f714b841381b2ee941bc2340e148855',1,'dftfe::KohnShamHamiltonianOperator::getOverloadedConstraintMatrix()'],['../classdftfe_1_1operator_d_f_t_class.html#abc1e4a9596aa573ad651cd0d0224ea5e',1,'dftfe::operatorDFTClass::getOverloadedConstraintMatrix()']]], + ['getoverloadedconstraintmatrixhost_122',['getOverloadedConstraintMatrixHost',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a7edbb384a976347ff0ae928a5adf947e',1,'dftfe::KohnShamHamiltonianOperator::getOverloadedConstraintMatrixHost()'],['../classdftfe_1_1operator_d_f_t_class.html#a821a2bd837c1d9e3946badaac6a02b92',1,'dftfe::operatorDFTClass::getOverloadedConstraintMatrixHost()']]], + ['getownedlocalindices_123',['getOwnedLocalIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a52e89faee260fddee14fd8c6412d1056',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getownedlocalindicesfortargetprocs_124',['getOwnedLocalIndicesForTargetProcs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a300070950255d96542870b84dc94f194',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getparallelmeshmoved_125',['getParallelMeshMoved',['../classdftfe_1_1triangulation_manager.html#a0e8b0eff1f03b6da4e2bd43fdf97744f',1,'dftfe::triangulationManager']]], + ['getparallelmeshunmoved_126',['getParallelMeshUnmoved',['../classdftfe_1_1triangulation_manager.html#a5390458da1af98472f7aaaf579fa25e8',1,'dftfe::triangulationManager']]], + ['getparametersobject_127',['getParametersObject',['../classdftfe_1_1dft_class.html#aab44255fa568411595ffc8ddf2c278e4',1,'dftfe::dftClass::getParametersObject()'],['../classdftfe_1_1dft_base.html#a0c4905daf2f1014991196d1711a3c3d2',1,'dftfe::dftBase::getParametersObject()']]], + ['getpartialoccupancy_128',['getPartialOccupancy',['../namespacedftfe_1_1dft_utils.html#a3b1d6099a85fe1168b8f7fd56b1a646d',1,'dftfe::dftUtils']]], + ['getpartialoccupancyder_129',['getPartialOccupancyDer',['../namespacedftfe_1_1dft_utils.html#aca959162fdbd949b5a6c8a24b5ff452f',1,'dftfe::dftUtils']]], + ['getpbc_130',['getPBC',['../classdftfe_1_1dftfe_wrapper.html#a57374f5f734264a67d2f3c9241f715ec',1,'dftfe::dftfeWrapper']]], + ['getperiodicimagecoordinateslist_131',['getPeriodicImageCoordinatesList',['../classdftfe_1_1_atom_centered_spherical_function_container.html#ab68ef8a09cd27367b8979e11c12b3ea9',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['getperturbedvselffieldbins_132',['getPerturbedVselfFieldBins',['../classdftfe_1_1vself_bins_manager.html#aa5d89fc0d05a58d01c4ec6957e4ede40',1,'dftfe::vselfBinsManager']]], + ['getphiexteshelbytensor_133',['getPhiExtEshelbyTensor',['../namespacedftfe_1_1eshelby_tensor.html#ae4943ba115afd83f3e7a0025780a2b3b',1,'dftfe::eshelbyTensor']]], + ['getposition_134',['getPosition',['../classdftfe_1_1utils_1_1_optimized_index_set.html#accc081bd8fccbdfd2158dc0be623571e',1,'dftfe::utils::OptimizedIndexSet::getPosition(const T &index, size_type &pos, bool &found) const'],['../classdftfe_1_1utils_1_1_optimized_index_set.html#a34d8be4f57a3e57a161eaee9e78c8077',1,'dftfe::utils::OptimizedIndexSet::getPosition(const OptimizedIndexSet< T > &rhs) const']]], + ['getprocessgriddftfescalawrapper_135',['getProcessGridDftfeScalaWrapper',['../classdftfe_1_1elpa_scala_manager.html#a03ef49385d301a5ca4080137f318f38c',1,'dftfe::elpaScalaManager']]], + ['getquantumnumberl_136',['getQuantumNumberl',['../classdftfe_1_1_atom_centered_spherical_function_base.html#a4e6d9ea3af31ac9a2b16b2e7a2dd4f25',1,'dftfe::AtomCenteredSphericalFunctionBase']]], + ['getquantumnumbern_137',['getQuantumNumbern',['../classdftfe_1_1_atom_centered_spherical_function_bessel.html#a389b7fc60bc9adf621abd0d9b4308fe2',1,'dftfe::AtomCenteredSphericalFunctionBessel::getQuantumNumbern()'],['../classdftfe_1_1_atom_centered_spherical_function_gaussian.html#ac5c831d74e7aaafebb3a101c62daff62',1,'dftfe::AtomCenteredSphericalFunctionGaussian::getQuantumNumbern()'],['../classdftfe_1_1_atom_centered_spherical_function_sinc.html#ac5fa6bb15c6a27eee070355cb578c1c8',1,'dftfe::AtomCenteredSphericalFunctionSinc::getQuantumNumbern()'],['../classdftfe_1_1_atom_pseudo_wavefunctions.html#a9991c3f263f7ac2e549ae64b1bcdfa0c',1,'dftfe::AtomPseudoWavefunctions::getQuantumNumbern()']]], + ['getradialcoredensity_138',['getRadialCoreDensity',['../classdftfe_1_1oncv_class.html#adbc0aa4980fec0e849cf543a8fd6aaae',1,'dftfe::oncvClass::getRadialCoreDensity(unsigned int Znum, double rad, std::vector< double > &Val)'],['../classdftfe_1_1oncv_class.html#ac12226142a9128cfe0c2e036b6afa4a9',1,'dftfe::oncvClass::getRadialCoreDensity(unsigned int Znum, double rad)']]], + ['getradialcutoff_139',['getRadialCutOff',['../classdftfe_1_1_atom_centered_spherical_function_base.html#a8f1ae34454f5b92a36c669b02f790c00',1,'dftfe::AtomCenteredSphericalFunctionBase']]], + ['getradialfunctionval_140',['getRadialFunctionVal',['../namespacedftfe_1_1pseudo_utils.html#a92c8700497662dd7074f4ada5f245a3a',1,'dftfe::pseudoUtils::getRadialFunctionVal()'],['../namespacedftfe_1_1spherical_harmonic_utils.html#a3ae5ab3a86d4bd9a292de6aa296c5504',1,'dftfe::sphericalHarmonicUtils::getRadialFunctionVal()']]], + ['getradiallocalpseudo_141',['getRadialLocalPseudo',['../classdftfe_1_1oncv_class.html#af3616fdfa7949d0443b0bd9880051e58',1,'dftfe::oncvClass']]], + ['getradialvalencedensity_142',['getRadialValenceDensity',['../classdftfe_1_1oncv_class.html#a6e86b53a87b21d0983740ed360b683f5',1,'dftfe::oncvClass::getRadialValenceDensity(unsigned int Znum, double rad, std::vector< double > &Val)'],['../classdftfe_1_1oncv_class.html#a69b1241cd6fc86f6198878d60279dfda',1,'dftfe::oncvClass::getRadialValenceDensity(unsigned int Znum, double rad)']]], + ['getradialvalue_143',['getRadialValue',['../classdftfe_1_1_atom_centered_spherical_function_base.html#a54078bc5daee9372852cb2e98882857c',1,'dftfe::AtomCenteredSphericalFunctionBase::getRadialValue()'],['../classdftfe_1_1_atom_centered_spherical_function_bessel.html#aec98ce0d41c048c58cfa842179715ea9',1,'dftfe::AtomCenteredSphericalFunctionBessel::getRadialValue()'],['../classdftfe_1_1_atom_centered_spherical_function_gaussian.html#ad2e49e21ca2d62f36e342c882a9581e7',1,'dftfe::AtomCenteredSphericalFunctionGaussian::getRadialValue()'],['../classdftfe_1_1_atom_centered_spherical_function_sinc.html#aaae97f41c916e578ae7d71c8e77f7dc2',1,'dftfe::AtomCenteredSphericalFunctionSinc::getRadialValue()'],['../classdftfe_1_1_atom_centered_spherical_function_spline.html#a51c6ceba09faf571b76194cec6b824a2',1,'dftfe::AtomCenteredSphericalFunctionSpline::getRadialValue()'],['../classdftfe_1_1_atom_centered_spherical_function_z_over_r.html#ac11de97fc708939047499e413f681501',1,'dftfe::AtomCenteredSphericalFunctionZOverR::getRadialValue()'],['../classdftfe_1_1_atom_pseudo_wavefunctions.html#af90de2553f63b35f26fe85cf4d995330',1,'dftfe::AtomPseudoWavefunctions::getRadialValue()']]], + ['getrequestingrankids_144',['getRequestingRankIds',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base.html#a7e390ee3eacecc00e4968829fa21bd9f',1,'dftfe::utils::mpi::MPIRequestersBase::getRequestingRankIds()'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a7def9c106f88f6e3e9806b7a96ffb6bd',1,'dftfe::utils::mpi::MPIRequestersNBX::getRequestingRankIds()']]], + ['getrhonodalout_145',['getRhoNodalOut',['../classdftfe_1_1dft_class.html#ab20867aefbbce9ac36b7d4d8d4f06ce1',1,'dftfe::dftClass::getRhoNodalOut()'],['../classdftfe_1_1dft_base.html#a4b49c03e2c305ce7319a1f2dda1483df',1,'dftfe::dftBase::getRhoNodalOut()']]], + ['getrhonodalsplitout_146',['getRhoNodalSplitOut',['../classdftfe_1_1dft_class.html#ab14771c1444085d2bbb89c7c5e062daa',1,'dftfe::dftClass::getRhoNodalSplitOut()'],['../classdftfe_1_1dft_base.html#a28c0349208b040d8e5401e9e70f4e653',1,'dftfe::dftBase::getRhoNodalSplitOut()']]], + ['getrmaxcoredensity_147',['getRmaxCoreDensity',['../classdftfe_1_1oncv_class.html#ace9648cbfebefb97aa190afcb098a300',1,'dftfe::oncvClass']]], + ['getrmaxlocalpot_148',['getRmaxLocalPot',['../classdftfe_1_1oncv_class.html#a6622f839568e32485ed07bb5f66fd08a',1,'dftfe::oncvClass']]], + ['getrmaxvalencedensity_149',['getRmaxValenceDensity',['../classdftfe_1_1oncv_class.html#a7d3800e72b1e78b374a4b9ac706029c1',1,'dftfe::oncvClass']]], + ['getrminval_150',['getrMinVal',['../classdftfe_1_1_atom_centered_spherical_function_bessel.html#ab7c93b2386d19e74139e9e6d1362980a',1,'dftfe::AtomCenteredSphericalFunctionBessel::getrMinVal()'],['../classdftfe_1_1_atom_centered_spherical_function_gaussian.html#a1af26024c1a0aa01425b8dcf32404cb1',1,'dftfe::AtomCenteredSphericalFunctionGaussian::getrMinVal()'],['../classdftfe_1_1_atom_centered_spherical_function_sinc.html#a0ac165aea58013c0043863529850f3d8',1,'dftfe::AtomCenteredSphericalFunctionSinc::getrMinVal()'],['../classdftfe_1_1_atom_centered_spherical_function_spline.html#a9a5c598613f9d34f3c42562a077c4b33',1,'dftfe::AtomCenteredSphericalFunctionSpline::getrMinVal()'],['../classdftfe_1_1_atom_centered_spherical_function_z_over_r.html#af1c164f4c22a2ad36d44ea4884f1ca10',1,'dftfe::AtomCenteredSphericalFunctionZOverR::getrMinVal()'],['../classdftfe_1_1_atom_pseudo_wavefunctions.html#a789676ddf3ac735027a0e706e563c3c7',1,'dftfe::AtomPseudoWavefunctions::getrMinVal()']]], + ['getscalapackblocksize_151',['getScalapackBlockSize',['../classdftfe_1_1elpa_scala_manager.html#a8f5ddee28fdf6d685d3789bd54f51da2',1,'dftfe::elpaScalaManager']]], + ['getscratchfemultivector_152',['getScratchFEMultivector',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#af2a722bb5785ef1bd7a589858d62c3e3',1,'dftfe::KohnShamHamiltonianOperator::getScratchFEMultivector()'],['../classdftfe_1_1operator_d_f_t_class.html#afd86771e68ce670c5fd7b89a2aa4e62c',1,'dftfe::operatorDFTClass::getScratchFEMultivector()']]], + ['getserialmeshunmoved_153',['getSerialMeshUnmoved',['../classdftfe_1_1triangulation_manager.html#ad9084fa7531268e66d8b14735e1dbd73',1,'dftfe::triangulationManager']]], + ['getsparsitypattern_154',['getSparsityPattern',['../classdftfe_1_1_atom_centered_spherical_function_container.html#ae2967faf3fa3dbad592b72738458d121',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['getsphericalfntimesvectorflattenedvectorlocalids_155',['getSphericalFnTimesVectorFlattenedVectorLocalIds',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a78887f0a45b28315ecab16988bee3bec',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getsphericalfunctions_156',['getSphericalFunctions',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a159dfbec61f522c436e7ac29ac0b53ab',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['getsphericalharmonicval_157',['getSphericalHarmonicVal',['../namespacedftfe_1_1pseudo_utils.html#ab994c096d849a2c2ea597c48cd3120ad',1,'dftfe::pseudoUtils::getSphericalHarmonicVal()'],['../namespacedftfe_1_1spherical_harmonic_utils.html#ac399cab41887c46f0e0cb997bd88a9b5',1,'dftfe::sphericalHarmonicUtils::getSphericalHarmonicVal()']]], + ['getsqrtmassvector_158',['getSqrtMassVector',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a0d6749960ffb28d97361958d864a6aa9',1,'dftfe::KohnShamHamiltonianOperator::getSqrtMassVector()'],['../classdftfe_1_1operator_d_f_t_class.html#a2e92ba54b33ac2e90d705c2d4ecdee9c',1,'dftfe::operatorDFTClass::getSqrtMassVector()']]], + ['getstoredadaptiveballradius_159',['getStoredAdaptiveBallRadius',['../classdftfe_1_1vself_bins_manager.html#a597b20011ff3b55472cd08adbd275a4a',1,'dftfe::vselfBinsManager']]], + ['getstress_160',['getStress',['../classdftfe_1_1force_class.html#a89300d1cc577e78e381e29426a8e981f',1,'dftfe::forceClass']]], + ['getstresscorrection_161',['getStressCorrection',['../classdftfe_1_1dispersion_correction.html#a29557331a7c21cacc72363349568546f',1,'dftfe::dispersionCorrection']]], + ['gettargetprocids_162',['getTargetProcIds',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a68fb7688f3dbfa750e5c40ef192a7464',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['gettolerance_163',['getTolerance',['../classdftfe_1_1non_linear_solver.html#a86a71cd616e82b4fc4a010447ae4cb0b',1,'dftfe::nonLinearSolver']]], + ['gettotalatomincurrentprocessor_164',['getTotalAtomInCurrentProcessor',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a85225288ce9c0c27ece5ac9f9c936b88',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['gettotalatomsandnonlocalelementsincurrentprocessor_165',['getTotalAtomsAndNonLocalElementsInCurrentProcessor',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a040a18a001d4feac841e90f110cac2fc',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['gettotalchargeforrhosplit_166',['getTotalChargeforRhoSplit',['../classdftfe_1_1dft_class.html#aeca29d52a809fbaa8ebebfdf89778796',1,'dftfe::dftClass::getTotalChargeforRhoSplit()'],['../classdftfe_1_1dft_base.html#ac755de640ef6723cdeb031e038b580b9',1,'dftfe::dftBase::getTotalChargeforRhoSplit()']]], + ['gettotalnonlocalelementsincurrentprocessor_167',['getTotalNonLocalElementsInCurrentProcessor',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a53d6e0d3a5dc54c2b33df787f79878a5',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['gettotalnonlocalentriescurrentprocessor_168',['getTotalNonLocalEntriesCurrentProcessor',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a5b0a3b6c488de3d4034f40800e05e9ab',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['gettotalnontrivialsphericalfnsoverallcells_169',['getTotalNonTrivialSphericalFnsOverAllCells',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a698e1189ab6b233dda83087473de645d',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['gettotalnumberofatomsincurrentprocessor_170',['getTotalNumberOfAtomsInCurrentProcessor',['../classdftfe_1_1oncv_class.html#aaad17813401b342aeed93c3007cc8691',1,'dftfe::oncvClass']]], + ['gettotalnumberofradialsphericalfunctions_171',['getTotalNumberOfRadialSphericalFunctions',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a31434cc00c7afe7807ae5ef1a17a5b1c',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['gettotalnumberofradialsphericalfunctionsperatom_172',['getTotalNumberOfRadialSphericalFunctionsPerAtom',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a1eee13633a46976ea10cd0e442bb9c04',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['gettotalnumberofsphericalfunctionsforatomid_173',['getTotalNumberOfSphericalFunctionsForAtomId',['../classdftfe_1_1oncv_class.html#a414a78c70dc7a9aaddf68781e8f357b4',1,'dftfe::oncvClass']]], + ['gettotalnumberofsphericalfunctionsincurrentprocessor_174',['getTotalNumberOfSphericalFunctionsInCurrentProcessor',['../classdftfe_1_1_atom_centered_spherical_function_container.html#ab6cb7ca667f673e5674b923cd9c355a9',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['gettotalnumberofsphericalfunctionsperatom_175',['getTotalNumberOfSphericalFunctionsPerAtom',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a339257c42991553326de1a8b3b9f57cd',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['gettotalsphericalfunctionindexstart_176',['getTotalSphericalFunctionIndexStart',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a08cf85e2c80b37bd7733822f96e8d518',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['getunknowncountflag_177',['getUnknownCountFlag',['../classdftfe_1_1geo_opt_cell.html#a9a68cbbd70a82f45996f1467c9ed0208',1,'dftfe::geoOptCell::getUnknownCountFlag()'],['../classdftfe_1_1geo_opt_ion.html#a956ddc51474b65d51e631e2acb355bf3',1,'dftfe::geoOptIon::getUnknownCountFlag()'],['../classdftfe_1_1nonlinear_solver_problem.html#a8199691b5b2cb164c078be900440a659',1,'dftfe::nonlinearSolverProblem::getUnknownCountFlag()'],['../classdftfe_1_1nudged_elastic_band_class.html#a6fa4140e9abab6987bb0e377fbc74e78',1,'dftfe::nudgedElasticBandClass::getUnknownCountFlag()']]], + ['getvalenceelectronnumbers_178',['getValenceElectronNumbers',['../classdftfe_1_1dftfe_wrapper.html#a73025873e24f3c62dc566dee33556d31',1,'dftfe::dftfeWrapper']]], + ['getvselfballeshelbytensor_179',['getVselfBallEshelbyTensor',['../namespacedftfe_1_1eshelby_tensor.html#a398a9349d9d31e7b17b86dbc80d25125',1,'dftfe::eshelbyTensor::getVselfBallEshelbyTensor(const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradVself)'],['../namespacedftfe_1_1eshelby_tensor.html#a632760011a8dc6401a95e074ad6cddcc',1,'dftfe::eshelbyTensor::getVselfBallEshelbyTensor(const dealii::Tensor< 1, 3, double > &gradVself)']]], + ['getvselffieldbins_180',['getVselfFieldBins',['../classdftfe_1_1vself_bins_manager.html#acfcb9299ef59b63e4b3b350a30923e80',1,'dftfe::vselfBinsManager']]], + ['getvselffieldderrbins_181',['getVselfFieldDerRBins',['../classdftfe_1_1vself_bins_manager.html#a813f7b3e680b81d674c1454cf2d0fca0',1,'dftfe::vselfBinsManager']]], + ['getwavefunctionbasedfamilytype_182',['getWavefunctionBasedFamilyType',['../classdftfe_1_1exc_manager.html#a2c87a6c0f6fc4b892814c422ecdfac4a',1,'dftfe::excManager::getWavefunctionBasedFamilyType()'],['../classdftfe_1_1exc_wavefunction_base_class.html#a83fc31bce9a012e0466c8a282cbe7a1a',1,'dftfe::excWavefunctionBaseClass::getWavefunctionBasedFamilyType()']]], + ['getx_183',['getX',['../classdftfe_1_1dealii_linear_solver_problem.html#a7814f5c0a0aa3ce01057acd4d29f560c',1,'dftfe::dealiiLinearSolverProblem::getX()'],['../classdftfe_1_1kerker_solver_problem.html#a77a0aafdca2c7726a24288a4821a7acc',1,'dftfe::kerkerSolverProblem::getX()'],['../classdftfe_1_1poisson_solver_problem.html#a07e8773c4f5c9c0bbf58452fc817611b',1,'dftfe::poissonSolverProblem::getX()']]], + ['gga_184',['GGA',['../namespacedftfe.html#a84a62c8946b5674c77a7d7d55de1be4ba5d71fd547f20684c4f5463766c0f2b04',1,'dftfe']]], + ['ghostsize_185',['ghostSize',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#aac29fcb8f5ca940da0c86cda2497f43f',1,'dftfe::linearAlgebra::MultiVector']]], + ['global_5fcolumn_186',['global_column',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a11af4d9095e63de77c07fbcf1b34f367',1,'dftfe::ScaLAPACKMatrix']]], + ['global_5frow_187',['global_row',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ab49c06fe686f8b2de01a1cec28a3afb2',1,'dftfe::ScaLAPACKMatrix']]], + ['global_5fsize_5ftype_188',['global_size_type',['../namespacedftfe_1_1data_types.html#a8105119c4ab84f3725e29104255b7dc2',1,'dftfe::dataTypes::global_size_type'],['../namespacedftfe.html#a6dc934cc55e22c1fb3da05a9a03352d8',1,'dftfe::global_size_type']]], + ['globalcellid_189',['globalCellId',['../classdftfe_1_1symmetry_class.html#aefd2a33e36f1bbc9c79fc4be89b8208a',1,'dftfe::symmetryClass']]], + ['globalhandlesfinalize_190',['globalHandlesFinalize',['../classdftfe_1_1dftfe_wrapper.html#a6edc85d8ba059cb72698758d952444c9',1,'dftfe::dftfeWrapper']]], + ['globalhandlesinitialize_191',['globalHandlesInitialize',['../classdftfe_1_1dftfe_wrapper.html#a2eb91eab3aca3e592ce3fb8e53d01ac0',1,'dftfe::dftfeWrapper']]], + ['globalsize_192',['globalSize',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a89c298a1b9a03a6728f6fd26f25667d5',1,'dftfe::linearAlgebra::MultiVector']]], + ['globalsizetypevector_193',['GlobalSizeTypeVector',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a1c1660c94f8520d19aa2d67ce0067ecb',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['globaltolocal_194',['globalToLocal',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a01ee60d4c7ba6011513140d34adc4e4b',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['gmres_195',['GMRES',['../classdftfe_1_1dealii_linear_solver.html#a34362ec759485d82dd86681c37130bc2a803ab643d1056d42f27c626f15168337',1,'dftfe::dealiiLinearSolver']]], + ['gradient_196',['gradient',['../classdftfe_1_1geo_opt_cell.html#aeb71bf02a24e6b2e20de6bcf591ac0cf',1,'dftfe::geoOptCell::gradient()'],['../classdftfe_1_1geo_opt_ion.html#a4432b75f262f587ced47c2ec74289968',1,'dftfe::geoOptIon::gradient()'],['../classdftfe_1_1nonlinear_solver_problem.html#ab4406839bedb92f39ac663738c699bf1',1,'dftfe::nonlinearSolverProblem::gradient()'],['../classdftfe_1_1nudged_elastic_band_class.html#a70c9164a5d245c869a6c5c337210b9e7',1,'dftfe::nudgedElasticBandClass::gradient()']]], + ['gradmagz_197',['gradMagZ',['../namespacedftfe.html#a55e98bd838d76f5c67d7d7bc1cccee84a44c91dc9989fbf97d16850c0584296ac',1,'dftfe']]], + ['gradrho_198',['gradRho',['../namespacedftfe.html#a55e98bd838d76f5c67d7d7bc1cccee84a7912d60631352c04fdc4ce430fa04e51',1,'dftfe']]], + ['gradrhorecvd_199',['gradRhoRecvd',['../classdftfe_1_1symmetry_class.html#ae9524c9a0f054549613223b4cdbc1e73',1,'dftfe::symmetryClass']]], + ['gramschmidtorthogonalization_200',['gramSchmidtOrthogonalization',['../namespacedftfe_1_1linear_algebra_operations.html#a7c42c60cf8378c3d8bdb8d2d6a97cf00',1,'dftfe::linearAlgebraOperations']]], + ['grid_201',['grid',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a2b6dd32bd3f44887d3833ee19fcc44bd',1,'dftfe::ScaLAPACKMatrix']]], + ['groupoffsets_202',['groupOffsets',['../classdftfe_1_1symmetry_class.html#af060f172599f57841611d1b188b910f4',1,'dftfe::symmetryClass']]], + ['gvec_203',['gvec',['../classdftfe_1_1dealii_linear_solver.html#a1274745314b61692d261a17ca335e833',1,'dftfe::dealiiLinearSolver']]] +]; diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 000000000..4549e200c --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['haperbohrtoevperang_0',['haPerBohrToeVPerAng',['../classdftfe_1_1molecular_dynamics_class.html#ae6facb80fc18889cada2d2f0b548527d',1,'dftfe::molecularDynamicsClass']]], + ['hatoev_1',['haToeV',['../classdftfe_1_1molecular_dynamics_class.html#aa4ff0cbe5e3e00d1b3284d9fbdf3a5b5',1,'dftfe::molecularDynamicsClass']]], + ['haveallincomingmsgsreceived_2',['haveAllIncomingMsgsReceived',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a9976370f3a761778aa4f93a219696ddb',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['havealllocalsendreceived_3',['haveAllLocalSendReceived',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#afe6d8fea4abc84150e1fbc00967d60bf',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['headers_2eh_4',['headers.h',['../headers_8h.html',1,'']]], + ['hermitian_5',['hermitian',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#af3c45dcea64890f047b4dca87fdde9acacb022b5e749ecd8aded585fa69365425',1,'dftfe::LAPACKSupport']]], + ['hessenberg_6',['hessenberg',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#af3c45dcea64890f047b4dca87fdde9aca7c62e84843fe08403ca442daf6d76bd3',1,'dftfe::LAPACKSupport']]], + ['higheststateofinterestforchebfiltering_7',['highestStateOfInterestForChebFiltering',['../classdftfe_1_1dft_parameters.html#a8edabe09740d03d7368e5a7731bc2539',1,'dftfe::dftParameters']]], + ['host_8',['HOST',['../namespacedftfe_1_1utils.html#a70cf7f171e9701571a428ad0fa1bf341ab9361011891280a44d85b967739cc6a5',1,'dftfe::utils']]], + ['host_5fpinned_9',['HOST_PINNED',['../namespacedftfe_1_1utils.html#a70cf7f171e9701571a428ad0fa1bf341ac018c446839606eb033754630abaf31a',1,'dftfe::utils']]], + ['hubbard_10',['HUBBARD',['../namespacedftfe.html#aec9f58557c36d1bd23430bc23568c800a499b1eab54c72369d29e962da3c6e59c',1,'dftfe']]], + ['hvec_11',['hvec',['../classdftfe_1_1dealii_linear_solver.html#acb4b656e30476b8c7d49347ceafbba60',1,'dftfe::dealiiLinearSolver']]], + ['hx_12',['HX',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a8384aba434a02f5ad9f3214448ffb6eb',1,'dftfe::KohnShamHamiltonianOperator::HX()'],['../classdftfe_1_1operator_d_f_t_class.html#a0ec07e3744bb2b31f0cbc40ba7338efa',1,'dftfe::operatorDFTClass::HX()']]], + ['hxcheby_13',['HXCheby',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a1cc721aeeb002c69fa219fde4891e337',1,'dftfe::KohnShamHamiltonianOperator::HXCheby()'],['../classdftfe_1_1operator_d_f_t_class.html#a99ecf915c45c626b10cbc1d433fa0821',1,'dftfe::operatorDFTClass::HXCheby()']]], + ['hxrr_14',['HXRR',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a206ad76824e002d9b62df28f4717c4bc',1,'dftfe::KohnShamHamiltonianOperator']]] +]; diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 000000000..50d8de2c6 --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,95 @@ +var searchData= +[ + ['iceil_5f_0',['iceil_',['../namespacedftfe.html#ac4070a1a5dc2bc96914c31be13b98037',1,'dftfe']]], + ['ilcm_5f_1',['ilcm_',['../namespacedftfe.html#aed3afb027370255ff9fb964eca4ec4ce',1,'dftfe']]], + ['imageerror_2',['ImageError',['../classdftfe_1_1nudged_elastic_band_class.html#acc92144acefe48137b54d9bf2c832a3e',1,'dftfe::nudgedElasticBandClass']]], + ['imagefreeze_3',['imageFreeze',['../classdftfe_1_1run_parameters.html#aee92558a58911e7248717bb76e2ee904',1,'dftfe::runParameters']]], + ['imagpart_4',['imagPart',['../namespacedftfe_1_1utils.html#aed61a5800334465a12d3b74a1d05e276',1,'dftfe::utils::imagPart(const double x)'],['../namespacedftfe_1_1utils.html#ab16e4e326821b23e375effb6110d9e8c',1,'dftfe::utils::imagPart(const float x)'],['../namespacedftfe_1_1utils.html#ae35ca17dde4837542c9a9ed655127fb0',1,'dftfe::utils::imagPart(const std::complex< double > x)'],['../namespacedftfe_1_1utils.html#a67ad4aadd9aae23351fae41a01e3545a',1,'dftfe::utils::imagPart(const std::complex< float > x)']]], + ['imagpartdevice_5',['imagPartDevice',['../namespacedftfe_1_1utils.html#ac495c3ee3482c45e4f7329ac1c873d9c',1,'dftfe::utils::imagPartDevice(double a)'],['../namespacedftfe_1_1utils.html#abeb54dc4120086f8f229e70c3b17f018',1,'dftfe::utils::imagPartDevice(float a)'],['../namespacedftfe_1_1utils.html#a0b3337020d958b4d0502192cc844f6d7',1,'dftfe::utils::imagPartDevice(cuDoubleComplex a)'],['../namespacedftfe_1_1utils.html#aa9ba4a8a0b7a5ee4808e84cbf398efaa',1,'dftfe::utils::imagPartDevice(cuFloatComplex a)'],['../namespacedftfe_1_1utils.html#ab4b591cf0ee10862af17814b05ced86b',1,'dftfe::utils::imagPartDevice(hipDoubleComplex a)'],['../namespacedftfe_1_1utils.html#af09a337b3066e3da64c3fc94795ae60e',1,'dftfe::utils::imagPartDevice(hipFloatComplex a)']]], + ['indxg2p_5f_6',['indxg2p_',['../namespacedftfe.html#ac42ff14b5f31ba507af7c3c2480a3089',1,'dftfe']]], + ['indxl2g_5f_7',['indxl2g_',['../namespacedftfe.html#a92144825dfcfd18241d585a3d3ca6e50',1,'dftfe']]], + ['information_8',['More information',['../index.html#autotoc_md4',1,'']]], + ['init_9',['init',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a05f2d1f56bcc4e02720ee36fab987128',1,'dftfe::AtomCenteredSphericalFunctionContainer::init()'],['../classdftfe_1_1dft_class.html#ad4499dece23f162aac7473a285733b9c',1,'dftfe::dftClass::init()'],['../classdftfe_1_1dft_base.html#a958ca745a65c58b46a4adc933494d354',1,'dftfe::dftBase::init()'],['../classdftfe_1_1exc_manager.html#afe95bcfcdb880be57fe39cc65c74d4a3',1,'dftfe::excManager::init()'],['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aab844ef88af3deb52f82464d79d73c17',1,'dftfe::basis::FEBasisOperations::init(dealii::MatrixFree< 3, ValueTypeBasisData > &matrixFreeData, std::vector< const dealii::AffineConstraints< ValueTypeBasisData > * > &constraintsVector, const unsigned int &dofHandlerID, const std::vector< unsigned int > &quadratureID, const std::vector< UpdateFlags > updateFlags)'],['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ac55998b99e5823d76c16395cae010aa6',1,'dftfe::basis::FEBasisOperations::init(const FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpaceSrc > &basisOperationsSrc)'],['../classdftfe_1_1geometry_optimization_class.html#a8d8f59d0c7eb723eb69330d71edae3a2',1,'dftfe::geometryOptimizationClass::init()'],['../classdftfe_1_1geo_opt_cell.html#aef69c41c505114e8d698b13afd3c1e19',1,'dftfe::geoOptCell::init()'],['../classdftfe_1_1geo_opt_ion.html#ac0981793678f96961d982e3db9580b93',1,'dftfe::geoOptIon::init()'],['../classdftfe_1_1kerker_solver_problem.html#ab9b1e4c4099bf59192456f8ccf25adfa',1,'dftfe::kerkerSolverProblem::init()'],['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a46173d1e757bbeb61d1e238dd202fd8b',1,'dftfe::KohnShamHamiltonianOperator::init()'],['../classdftfe_1_1mesh_movement_class.html#a40257c449540ad14736c736c1eb1e27a',1,'dftfe::meshMovementClass::init()'],['../classdftfe_1_1nudged_elastic_band_class.html#a9921e5bd4953e173828cba20dc22d7bf',1,'dftfe::nudgedElasticBandClass::init()'],['../classdftfe_1_1operator_d_f_t_class.html#a673a9561bfee91a0d9b5754b10a143f3',1,'dftfe::operatorDFTClass::init()']]], + ['initalisecoordinates_10',['initaliseCoordinates',['../classdftfe_1_1_atom_centered_spherical_function_container.html#acd99b65cf6846390a4f0c51ee17f0e7a',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['initatomicrho_11',['initAtomicRho',['../classdftfe_1_1dft_class.html#a104763dfc2f40f21092300649eee7e6e',1,'dftfe::dftClass']]], + ['initboundaryconditions_12',['initBoundaryConditions',['../classdftfe_1_1dft_class.html#a0de1d9dd1b030bbc307a4d1a498c7926',1,'dftfe::dftClass']]], + ['initcorerho_13',['initCoreRho',['../classdftfe_1_1dft_class.html#a21130962085838fdf9c6fda4f9b77e3a',1,'dftfe::dftClass']]], + ['initdispersioncorrection_14',['initDispersionCorrection',['../classdftfe_1_1dispersion_correction.html#ad90170234d82c2abccdccd7ed626c7f2',1,'dftfe::dispersionCorrection']]], + ['initelectronicfields_15',['initElectronicFields',['../classdftfe_1_1dft_class.html#ab99264a6ced16003de321e730f385e4e',1,'dftfe::dftClass']]], + ['initialise_16',['initialise',['../classdftfe_1_1oncv_class.html#a54f3323bf59153052adf3059c171ed26',1,'dftfe::oncvClass']]], + ['initialiseflatteneddatastructure_17',['initialiseFlattenedDataStructure',['../classdftfe_1_1_atomic_centered_non_local_operator.html#afa3e39974ad698d3eb2dab9890744940',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['initialisefromrestartfile_18',['InitialiseFromRestartFile',['../classdftfe_1_1molecular_dynamics_class.html#a3be147b30d8a5074ca15595b9653034c',1,'dftfe::molecularDynamicsClass']]], + ['initialisefromrestartnhcfile_19',['InitialiseFromRestartNHCFile',['../classdftfe_1_1molecular_dynamics_class.html#a2fafc367a2bb14a75265111de3827d0a',1,'dftfe::molecularDynamicsClass']]], + ['initialisenonlocalcontribution_20',['initialiseNonLocalContribution',['../classdftfe_1_1oncv_class.html#a3bc3752e65bdd86742b773baef80a51c',1,'dftfe::oncvClass::initialiseNonLocalContribution(const std::vector< std::vector< double > > &atomLocations, const std::vector< int > &imageIds, const std::vector< std::vector< double > > &periodicCoords, const std::vector< double > &kPointWeights, const std::vector< double > &kPointCoordinates, const bool updateNonlocalSparsity)'],['../classdftfe_1_1oncv_class.html#a9fa5d93e74cfe3a8ded4ab8c189652e6',1,'dftfe::oncvClass::initialiseNonLocalContribution(const std::vector< std::vector< double > > &atomLocations, const std::vector< int > &imageIds, const std::vector< std::vector< double > > &periodicCoords, const std::vector< double > &kPointWeights, const std::vector< double > &kPointCoordinates, const bool updateNonlocalSparsity, const std::map< unsigned int, std::vector< int > > &sparsityPattern, const std::vector< std::vector< dealii::CellId > > &elementIdsInAtomCompactSupport, const std::vector< std::vector< unsigned int > > &elementIndexesInAtomCompactSupport, const std::vector< unsigned int > &atomIdsInCurrentProcess, unsigned int numberElements)']]], + ['initialiseoperatoractiononx_21',['initialiseOperatorActionOnX',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a7ce46b4b1fd39e63e89e7131bc7ae710',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['initialisepartitioner_22',['initialisePartitioner',['../classdftfe_1_1_atomic_centered_non_local_operator.html#aa07c86020e01273f15525639d5dc55e6',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['initialize_23',['initialize',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a9db89413f0cdaa5d656a498f001f2dff',1,'dftfe::dftUtils::constraintMatrixInfo::initialize()'],['../classdftfe_1_1dftfe_wrapper.html#a286748c16a6b353aaf2cd30196a370c0',1,'dftfe::dftfeWrapper::initialize()']]], + ['initializeconstraints_24',['initializeConstraints',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a309cbe7cc8637063880fd934b43c139c',1,'dftfe::basis::FEBasisOperations']]], + ['initializedirection_25',['initializeDirection',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a9b7d95a108a92a9f36ce976bf0d781f5',1,'dftfe::cgPRPNonLinearSolver']]], + ['initializeflattenedindexmaps_26',['initializeFlattenedIndexMaps',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ad23d66c29a340d766151d415145e260b',1,'dftfe::basis::FEBasisOperations']]], + ['initializehessian_27',['initializeHessian',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a992f4a89d42c6b7f74ecf820fc1b335b',1,'dftfe::BFGSNonLinearSolver']]], + ['initializeindexmaps_28',['initializeIndexMaps',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ad5942afe149a14f20b9909cadc48b014',1,'dftfe::basis::FEBasisOperations']]], + ['initializekohnshamdftoperator_29',['initializeKohnShamDFTOperator',['../classdftfe_1_1dft_class.html#aaef9ab3d3aeeb2138dc2026fdbb1807f',1,'dftfe::dftClass']]], + ['initializempipattern_30',['initializeMPIPattern',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a1de6b0d13f6040140452081df5b50b16',1,'dftfe::basis::FEBasisOperations']]], + ['initializepreconditioner_31',['initializePreconditioner',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a3c41f3e300ce422a08a0d9ba26b1b716',1,'dftfe::LBFGSNonLinearSolver']]], + ['initializescaledconstraints_32',['initializeScaledConstraints',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a9579996fae6fb8e87005adb0435e5e3e',1,'dftfe::dftUtils::constraintMatrixInfo::initializeScaledConstraints(const distributedCPUVec< double > &invSqrtMassVec)'],['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#ae99ae4a0f73af19662477b3d9fd42766',1,'dftfe::dftUtils::constraintMatrixInfo::initializeScaledConstraints(const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &invSqrtMassVec)']]], + ['initializeshapefunctionandjacobianbasisdata_33',['initializeShapeFunctionAndJacobianBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aba877d7052542a0ca452a8793c3cfcc9',1,'dftfe::basis::FEBasisOperations']]], + ['initializeshapefunctionandjacobiandata_34',['initializeShapeFunctionAndJacobianData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ab3e94bdf3482ef18d7344d23666cb006',1,'dftfe::basis::FEBasisOperations']]], + ['initimagechargesupdatekpoints_35',['initImageChargesUpdateKPoints',['../classdftfe_1_1dft_class.html#a803d068a0fdc0c21ef9ac3442c67d51d',1,'dftfe::dftClass']]], + ['initincrementfield_36',['initIncrementField',['../classdftfe_1_1mesh_movement_class.html#a68ff885f785f2f2cae50f6771024c843',1,'dftfe::meshMovementClass']]], + ['initkpoints_37',['initKpoints',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a0356889f92f29412388eb11dc2588df9',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['initlocalpotential_38',['initLocalPotential',['../classdftfe_1_1oncv_class.html#ab649f3ce7e8f7140673d9fbdd6f0069e',1,'dftfe::oncvClass']]], + ['initlocalpseudopotential_39',['initLocalPseudoPotential',['../classdftfe_1_1dft_class.html#a3f6bc7dcae0520b81a2b6487cc6f9671',1,'dftfe::dftClass']]], + ['initmoved_40',['initMoved',['../classdftfe_1_1force_class.html#adad153c519abad59aa25cab0b7de7e21',1,'dftfe::forceClass::initMoved()'],['../classdftfe_1_1mesh_movement_class.html#a1331833cc5f77c2ef8b4ae84a1e74f16',1,'dftfe::meshMovementClass::initMoved()']]], + ['initnoremesh_41',['initNoRemesh',['../classdftfe_1_1dft_class.html#aa72c6260d7536b50f1923ca41da326eb',1,'dftfe::dftClass']]], + ['initnscf_42',['initnscf',['../classdftfe_1_1dft_class.html#a369876f5f352e0c43f1bbd0eece4c9c5',1,'dftfe::dftClass']]], + ['initprefinedobjects_43',['initpRefinedObjects',['../classdftfe_1_1dft_class.html#a676d1e02218d26db361ce7fca06c3d72',1,'dftfe::dftClass']]], + ['initpseudodata_44',['initPseudoData',['../classdftfe_1_1force_class.html#add8242f2c10d9a7e33a959228e155cff',1,'dftfe::forceClass']]], + ['initpseudopotentialall_45',['initPseudoPotentialAll',['../classdftfe_1_1dft_class.html#ae7b278acb1eb7b10283318cc2c4e6a5c',1,'dftfe::dftClass']]], + ['initrho_46',['initRho',['../classdftfe_1_1dft_class.html#a8aef7a8490035bef07a7bf1ea43a1414',1,'dftfe::dftClass']]], + ['initsymmetry_47',['initSymmetry',['../classdftfe_1_1symmetry_class.html#a4eb709ef846654d529d871d4f28fa30a',1,'dftfe::symmetryClass']]], + ['initunmoved_48',['initUnmoved',['../classdftfe_1_1force_class.html#a384f85ba12982346cfd0870e49439846',1,'dftfe::forceClass']]], + ['initunmovedtriangulation_49',['initUnmovedTriangulation',['../classdftfe_1_1dft_class.html#a8c9b3f798b88659f406f873cc8f54f3d',1,'dftfe::dftClass']]], + ['inlocallyownedrange_50',['inLocallyOwnedRange',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#aa5c2eb07ba77efe1c676c31677ecb5c6',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['inneratomballradius_51',['innerAtomBallRadius',['../classdftfe_1_1dft_parameters.html#a14122952a8edbc41b5adaa1830a5b45f',1,'dftfe::dftParameters']]], + ['installation_20instructions_52',['Installation instructions',['../index.html#autotoc_md1',1,'']]], + ['instructions_53',['Installation instructions',['../index.html#autotoc_md1',1,'']]], + ['integratewithbasis_54',['integrateWithBasis',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a272c71dd38da86d603e24334d2bc7593',1,'dftfe::basis::FEBasisOperations']]], + ['integratewithbasiskernel_55',['integrateWithBasisKernel',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a86511d0a5562d4e44594ca9f86c7b91c',1,'dftfe::basis::FEBasisOperations']]], + ['interbandgroupcomm_56',['interBandGroupComm',['../classdftfe_1_1dft_class.html#a2d5b00efea0c1b9c8d46f5e8e242ab33',1,'dftfe::dftClass::interBandGroupComm'],['../classdftfe_1_1dispersion_correction.html#acd55995ec286935e9d769d7cfa978192',1,'dftfe::dispersionCorrection::interBandGroupComm'],['../classdftfe_1_1energy_calculator.html#a0243ca08b6409435a60660953ddda4a2',1,'dftfe::energyCalculator::interBandGroupComm'],['../classdftfe_1_1triangulation_manager.html#a7bc5ece7beae224ae659dc10a9b033ea',1,'dftfe::triangulationManager::interBandGroupComm']]], + ['interpolate_57',['interpolate',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a202b1890c0ea94db65a9d55655c52891',1,'dftfe::basis::FEBasisOperations']]], + ['interpolatedensitynodaldatatoquadraturedatageneral_58',['interpolateDensityNodalDataToQuadratureDataGeneral',['../classdftfe_1_1dft_class.html#a9570883ffa4d543cd4867ba40ded0e83',1,'dftfe::dftClass']]], + ['interpolatedensitynodaldatatoquadraturedatalpsp_59',['interpolateDensityNodalDataToQuadratureDataLpsp',['../classdftfe_1_1dft_class.html#aa96455392f0961f9812944bbab9133a1',1,'dftfe::dftClass']]], + ['interpolateelectronodaldatatoquadraturedatageneral_60',['interpolateElectroNodalDataToQuadratureDataGeneral',['../classdftfe_1_1dft_class.html#aed1fbb745aa0bf8b74bafe367794931a',1,'dftfe::dftClass']]], + ['interpolatekernel_61',['interpolateKernel',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#afcd968fdd6426a5ae17019fd72820f5a',1,'dftfe::basis::FEBasisOperations::interpolateKernel(const dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData, ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients, const std::pair< unsigned int, unsigned int > cellRange) const'],['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a76b6b0ec3e442acf25a6ca43dd32162c',1,'dftfe::basis::FEBasisOperations::interpolateKernel(const ValueTypeBasisCoeff *nodalData, ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients, const std::pair< unsigned int, unsigned int > cellRange) const']]], + ['interpoolcomm_62',['interpoolcomm',['../classdftfe_1_1dft_class.html#a63fdb43bc8fe5eaf8dccbf8cf753e0aa',1,'dftfe::dftClass::interpoolcomm'],['../classdftfe_1_1dispersion_correction.html#ada4c59c7adac52a432d3ad3c3387ccfb',1,'dftfe::dispersionCorrection::interpoolcomm'],['../classdftfe_1_1dft_utils_1_1_pool.html#a76a35fe0aab1b1f3f12ad90ffb399495',1,'dftfe::dftUtils::Pool::interpoolcomm'],['../classdftfe_1_1energy_calculator.html#a41ec32dc83b3a8b479fbdd93ca195a98',1,'dftfe::energyCalculator::interpoolcomm'],['../classdftfe_1_1symmetry_class.html#a050daa7d50c190253aa27bc457fab848',1,'dftfe::symmetryClass::interpoolcomm'],['../classdftfe_1_1triangulation_manager.html#a1954e08d84b8b81a0b18c64ec6fbe319',1,'dftfe::triangulationManager::interpoolcomm']]], + ['intitialisepartitionerkpointsandcomputecmatrixentries_63',['intitialisePartitionerKPointsAndComputeCMatrixEntries',['../classdftfe_1_1_atomic_centered_non_local_operator.html#aeb5a9096d8ffca7811dd078b542a05c8',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['intrapoolcomm_64',['intrapoolcomm',['../classdftfe_1_1dft_utils_1_1_pool.html#af439a9ab17f312365f4a205f9235f370',1,'dftfe::dftUtils::Pool']]], + ['invalidargument_65',['InvalidArgument',['../namespacedftfe_1_1utils.html#aaae0795e8e681ca41c28a327428a7f37',1,'dftfe::utils']]], + ['inverse_66',['inverse',['../namespacedftfe_1_1linear_algebra_operations.html#a23f3bab0880944554667262d1ce5b359',1,'dftfe::linearAlgebraOperations']]], + ['inverse_5fmatrix_67',['inverse_matrix',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06ac88730880d15c57da31f903746c1deec',1,'dftfe::LAPACKSupport']]], + ['inverse_5fsvd_68',['inverse_svd',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06ae4a1f4347768b85c5437bd74cd95cc18',1,'dftfe::LAPACKSupport']]], + ['inversejacobians_69',['inverseJacobians',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a41bc92182d3bf1269f5417797f7d7536',1,'dftfe::basis::FEBasisOperations']]], + ['inversejacobiansbasisdata_70',['inverseJacobiansBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a461f57651be421aa539432f2412860b7',1,'dftfe::basis::FEBasisOperations']]], + ['inversemassvector_71',['inverseMassVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aab1158bee90ca82f173b4f217e305751',1,'dftfe::basis::FEBasisOperations']]], + ['inversemassvectorbasisdata_72',['inverseMassVectorBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#adf406f0b0bab3d1544750ec80588e7b7',1,'dftfe::basis::FEBasisOperations']]], + ['inversemassvectorscaledconstraintsnonedatainfoptr_73',['inverseMassVectorScaledConstraintsNoneDataInfoPtr',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a26af98dbd31541edac99d8c07b3905a8',1,'dftfe::KohnShamHamiltonianOperator']]], + ['inversesqrtmassvector_74',['inverseSqrtMassVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a10148c4fc69b04325bb72bf95898b7ff',1,'dftfe::basis::FEBasisOperations']]], + ['inversesqrtmassvectorbasisdata_75',['inverseSqrtMassVectorBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a0a3362bf22d011d318b6824146b23c02',1,'dftfe::basis::FEBasisOperations']]], + ['inversesqrtmassvectorscaledconstraintsnonedatainfoptr_76',['inverseSqrtMassVectorScaledConstraintsNoneDataInfoPtr',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#ac1d6f56ff4e14de77f9b9f273463f169',1,'dftfe::KohnShamHamiltonianOperator']]], + ['invert_77',['invert',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a86e064ead5d748e9bfab51124535c735',1,'dftfe::ScaLAPACKMatrix']]], + ['ionoptsolver_78',['ionOptSolver',['../classdftfe_1_1dft_parameters.html#a71824922b64eb0c464ef2080c8b1781f',1,'dftfe::dftParameters']]], + ['ionrelaxflagsfile_79',['ionRelaxFlagsFile',['../classdftfe_1_1dft_parameters.html#ab3ad2a383b92fc7d4c89556e7bdbcbac',1,'dftfe::dftParameters::ionRelaxFlagsFile'],['../classdftfe_1_1run_parameters.html#ae97220db8e513d3f161b292d2b7b0d06',1,'dftfe::runParameters::ionRelaxFlagsFile']]], + ['ipiv_80',['ipiv',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a2005c068c6ebfb84b9b96827e40675d6',1,'dftfe::ScaLAPACKMatrix']]], + ['is_5fprocess_5factive_81',['is_process_active',['../classdftfe_1_1_process_grid.html#a291c7432cd6a8b215a9ff18d8721f693',1,'dftfe::ProcessGrid']]], + ['isbomd_82',['isBOMD',['../classdftfe_1_1dft_parameters.html#a47001959cd3860328119ab9ec2966e2d',1,'dftfe::dftParameters']]], + ['iscellstress_83',['isCellStress',['../classdftfe_1_1dft_parameters.html#ab1e0f6fd150f730c6306c0ef684676a0',1,'dftfe::dftParameters']]], + ['iscompatible_84',['isCompatible',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a773f40a3792564b4e57f1071e656a958',1,'dftfe::utils::mpi::MPIPatternP2P::isCompatible()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a2e1624b7163deb96a26d747b62e8b82b',1,'dftfe::linearAlgebra::MultiVector::isCompatible()']]], + ['isconverged_85',['isConverged',['../classdftfe_1_1geo_opt_cell.html#a88304029eedfadb7ba9f4c37f56e6932',1,'dftfe::geoOptCell::isConverged()'],['../classdftfe_1_1geo_opt_ion.html#a3a665f5b328cb5b01792664780bb2524',1,'dftfe::geoOptIon::isConverged()'],['../classdftfe_1_1nonlinear_solver_problem.html#a4fe8570a516d3fc119c460c9530bb390',1,'dftfe::nonlinearSolverProblem::isConverged()'],['../classdftfe_1_1nudged_elastic_band_class.html#a8e25700ef519442e7dffd4bd54967799',1,'dftfe::nudgedElasticBandClass::isConverged()']]], + ['isdatapresent_86',['isDataPresent',['../classdftfe_1_1_atom_centered_spherical_function_base.html#ad4219e32dfd703afd00edeac4f5adac6',1,'dftfe::AtomCenteredSphericalFunctionBase']]], + ['isghostentry_87',['isGhostEntry',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#aa9c323f0037592f1fcf8a9d3ff886f28',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['isionforce_88',['isIonForce',['../classdftfe_1_1dft_parameters.html#a8658bb75527cb70972751020e2d12184',1,'dftfe::dftParameters']]], + ['ispseudopotential_89',['isPseudopotential',['../classdftfe_1_1dft_parameters.html#aa2d71539a32d57c06c169ad1c342da25',1,'dftfe::dftParameters']]], + ['iterator_90',['iterator',['../classdftfe_1_1utils_1_1_memory_storage.html#a24dd6fe5c4072fc009b6714e5ee36006',1,'dftfe::utils::MemoryStorage::iterator'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a68ade957d1d1d3dff51c24f3e3095366',1,'dftfe::linearAlgebra::MultiVector::iterator']]], + ['iwork_91',['iwork',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a73b06a7b0b749dda371a610d5ef31b3b',1,'dftfe::ScaLAPACKMatrix']]] +]; diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 000000000..852896f6f --- /dev/null +++ b/search/all_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['jxw_0',['JxW',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a801f0d7f73b94cf4d8bbb8e60f6d9088',1,'dftfe::basis::FEBasisOperations']]], + ['jxwbasisdata_1',['JxWBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ac2bf2d374394255639a0a7650112c11a',1,'dftfe::basis::FEBasisOperations']]] +]; diff --git a/search/all_b.js b/search/all_b.js new file mode 100644 index 000000000..f974f8c55 --- /dev/null +++ b/search/all_b.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['kb_0',['kB',['../classdftfe_1_1molecular_dynamics_class.html#a5a71f8f4417fc8220e809bfdee2e92c1',1,'dftfe::molecularDynamicsClass']]], + ['keepscratchfolder_1',['keepScratchFolder',['../classdftfe_1_1dft_parameters.html#a8dc7728b4ef32505043df4630b6e54e3',1,'dftfe::dftParameters']]], + ['kerkerparameter_2',['kerkerParameter',['../classdftfe_1_1dft_parameters.html#a400f51776bf99376ff4b38f1c5d526f9',1,'dftfe::dftParameters']]], + ['kerkersolverproblem_3',['kerkerSolverProblem',['../classdftfe_1_1kerker_solver_problem.html',1,'dftfe::kerkerSolverProblem< FEOrderElectro >'],['../classdftfe_1_1kerker_solver_problem.html#a5ee1ec2f9a2950e4deeeb6edc118b348',1,'dftfe::kerkerSolverProblem::kerkerSolverProblem()']]], + ['kerkersolverproblem_2eh_4',['kerkerSolverProblem.h',['../kerker_solver_problem_8h.html',1,'']]], + ['kerkersolverproblemdevice_2eh_5',['kerkerSolverProblemDevice.h',['../kerker_solver_problem_device_8h.html',1,'']]], + ['kmax_6',['Kmax',['../classdftfe_1_1run_parameters.html#a05ee90aab7964ae1fd61059ec6f20cdd',1,'dftfe::runParameters']]], + ['kmin_7',['Kmin',['../classdftfe_1_1run_parameters.html#a3119159055927934f8026a0a8d7747b8',1,'dftfe::runParameters']]], + ['kohnshameigenspacecompute_8',['kohnShamEigenSpaceCompute',['../classdftfe_1_1dft_class.html#a10771c7d818e35f064d578e57d9754ec',1,'dftfe::dftClass']]], + ['kohnshameigenspacecomputenscf_9',['kohnShamEigenSpaceComputeNSCF',['../classdftfe_1_1dft_class.html#aed13f777722756e2c6c8ec50345098a8',1,'dftfe::dftClass']]], + ['kohnshameigenspacefirstorderdensitymatresponse_10',['kohnShamEigenSpaceFirstOrderDensityMatResponse',['../classdftfe_1_1dft_class.html#a36fda91987804120234a19934f14a74c',1,'dftfe::dftClass']]], + ['kohnshamhamiltonianoperator_11',['KohnShamHamiltonianOperator',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html',1,'dftfe::KohnShamHamiltonianOperator< memorySpace >'],['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a1df48594f4bedf91cad0dbb46a0bfbc3',1,'dftfe::KohnShamHamiltonianOperator::KohnShamHamiltonianOperator()']]], + ['kohnshamhamiltonianoperator_2eh_12',['KohnShamHamiltonianOperator.h',['../_kohn_sham_hamiltonian_operator_8h.html',1,'']]], + ['kpointdatafile_13',['kPointDataFile',['../classdftfe_1_1dft_parameters.html#abd346febbdb6ff2aff7235feaaf261b3',1,'dftfe::dftParameters']]], + ['kpointreducedcoordinates_14',['kPointReducedCoordinates',['../classdftfe_1_1dft_class.html#a704fb8d5bc4900a8832a22a097d6d1f7',1,'dftfe::dftClass']]] +]; diff --git a/search/all_c.js b/search/all_c.js new file mode 100644 index 000000000..4aee6fc9a --- /dev/null +++ b/search/all_c.js @@ -0,0 +1,63 @@ +var searchData= +[ + ['l_0',['L',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#ab15119670c346dc06775fbbb0c6d2468',1,'dftfe::LAPACKSupport']]], + ['l2norm_1',['l2Norm',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a9ac79ee1dc416decda9c75162fca20eb',1,'dftfe::linearAlgebra::MultiVector']]], + ['l2projectionquaddensityminusatomicdensity_2',['l2ProjectionQuadDensityMinusAtomicDensity',['../classdftfe_1_1dft_class.html#a273909c752d6f0fc80e794b5ccf0075b',1,'dftfe::dftClass']]], + ['l2projectionquadtonodal_3',['l2ProjectionQuadToNodal',['../classdftfe_1_1dft_class.html#ac898e6ba67d97e38b9be439ecabae409',1,'dftfe::dftClass']]], + ['lanczoslowerupperboundeigenspectrum_4',['lanczosLowerUpperBoundEigenSpectrum',['../namespacedftfe_1_1linear_algebra_operations.html#a322502c3bf760cabc91854f8331fa71e',1,'dftfe::linearAlgebraOperations']]], + ['lapack_5fsupport_2eh_5',['lapack_support.h',['../lapack__support_8h.html',1,'']]], + ['lbfgsnonlinearsolver_6',['LBFGSNonLinearSolver',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html',1,'dftfe::LBFGSNonLinearSolver'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a95795c23b5180958e2147849442de2ac',1,'dftfe::LBFGSNonLinearSolver::LBFGSNonLinearSolver()']]], + ['lbfgsnonlinearsolver_2eh_7',['LBFGSNonLinearSolver.h',['../_l_b_f_g_s_non_linear_solver_8h.html',1,'']]], + ['lbfgsnumpaststeps_8',['lbfgsNumPastSteps',['../classdftfe_1_1dft_parameters.html#ab1cf39e9ce04478d5b637b5010ed4944',1,'dftfe::dftParameters::lbfgsNumPastSteps'],['../classdftfe_1_1nudged_elastic_band_class.html#a64c3040d72dd9884195e018a3b57c2cc',1,'dftfe::nudgedElasticBandClass::lbfgsNumPastSteps'],['../classdftfe_1_1run_parameters.html#a23a478aacf39c03d0a7d9803afa3fe9d',1,'dftfe::runParameters::lbfgsNumPastSteps']]], + ['lda_9',['LDA',['../namespacedftfe.html#a84a62c8946b5674c77a7d7d55de1be4bad67a2b071440202a4daa9c2c8bd718c7',1,'dftfe']]], + ['lengtherror_10',['LengthError',['../namespacedftfe_1_1utils.html#ab8f54b4afe20ba29b5518547371cde40',1,'dftfe::utils']]], + ['lengthofhistory_11',['lengthOfHistory',['../classdftfe_1_1_mixing_scheme.html#a33e3e4d30549f45298088889341dab8e',1,'dftfe::MixingScheme']]], + ['librarymdi_2eh_12',['libraryMDI.h',['../library_m_d_i_8h.html',1,'']]], + ['license_13',['License',['../index.html#autotoc_md5',1,'']]], + ['linearalgebraoperations_2eh_14',['linearAlgebraOperations.h',['../linear_algebra_operations_8h.html',1,'']]], + ['linearalgebraoperationsdevice_2eh_15',['linearAlgebraOperationsDevice.h',['../linear_algebra_operations_device_8h.html',1,'']]], + ['linearalgebraoperationsinternal_2eh_16',['linearAlgebraOperationsInternal.h',['../linear_algebra_operations_internal_8h.html',1,'']]], + ['linearsolver_17',['linearSolver',['../classdftfe_1_1linear_solver.html',1,'dftfe::linearSolver'],['../classdftfe_1_1linear_solver.html#a33487090706c6ea4df5b550843aa608d',1,'dftfe::linearSolver::linearSolver()']]], + ['linearsolver_2eh_18',['linearSolver.h',['../linear_solver_8h.html',1,'']]], + ['linearsolvercgdevice_2eh_19',['linearSolverCGDevice.h',['../linear_solver_c_g_device_8h.html',1,'']]], + ['linearsolverdevice_2eh_20',['linearSolverDevice.h',['../linear_solver_device_8h.html',1,'']]], + ['linearsolverproblemdevice_2eh_21',['linearSolverProblemDevice.h',['../linear_solver_problem_device_8h.html',1,'']]], + ['linesearch_22',['lineSearch',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a20da76a8080aeaf04af92bf1cb83b5dd',1,'dftfe::cgPRPNonLinearSolver']]], + ['linesearch_5ffailed_23',['LINESEARCH_FAILED',['../classdftfe_1_1non_linear_solver.html#ae0e20e973c1797bd9ea9d06fb2aff9e7a78ffc2d02aa9fcc54c3a28e2aab47728',1,'dftfe::nonLinearSolver']]], + ['lnorm_24',['LNorm',['../classdftfe_1_1nudged_elastic_band_class.html#a3593fe4caca6c5c316e73d257d98c535',1,'dftfe::nudgedElasticBandClass']]], + ['load_25',['load',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a65a35df9a0a6ccaa03497ae646fa5e19',1,'dftfe::BFGSNonLinearSolver::load()'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#ad8fbc76d611accc76c20c3901a8ccb52',1,'dftfe::cgPRPNonLinearSolver::load()'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a42c8eee573df2a9b4fe1e09a5c3d9bc1',1,'dftfe::LBFGSNonLinearSolver::load()']]], + ['loadpsifiles_26',['loadPSIFiles',['../classdftfe_1_1dft_class.html#a31da94dd22dfbbc3136588d8977d4260',1,'dftfe::dftClass']]], + ['loadrhodata_27',['loadRhoData',['../classdftfe_1_1dft_parameters.html#a8acf68f17d1766b507161475cc672fd8',1,'dftfe::dftParameters']]], + ['loadsupporttriangulations_28',['loadSupportTriangulations',['../classdftfe_1_1triangulation_manager.html#a6b6fe245e9ffd6a9f5e278e7e2436805',1,'dftfe::triangulationManager']]], + ['loadtriainfoandrhonodaldata_29',['loadTriaInfoAndRhoNodalData',['../classdftfe_1_1dft_class.html#add854078fa83e7a8462373923c4d4ea0',1,'dftfe::dftClass']]], + ['loadtriangulationssolutionvectors_30',['loadTriangulationsSolutionVectors',['../classdftfe_1_1triangulation_manager.html#a00b82059f0d591e5a7cbf4bf949f229c',1,'dftfe::triangulationManager']]], + ['local_5fdof_5findicesimag_31',['local_dof_indicesImag',['../classdftfe_1_1dft_class.html#a152778073e37c6ded6948149a2dd56c3',1,'dftfe::dftClass']]], + ['local_5fdof_5findicesreal_32',['local_dof_indicesReal',['../classdftfe_1_1dft_class.html#a2d5ef77490be916085f36fc10c1f36ab',1,'dftfe::dftClass']]], + ['local_5fel_33',['local_el',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a0b8c6ee8de8a5891548743f50325b48d',1,'dftfe::ScaLAPACKMatrix::local_el(const unsigned int loc_row, const unsigned int loc_column) const'],['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a112944e3abfbe79f60b311a170a60de9',1,'dftfe::ScaLAPACKMatrix::local_el(const unsigned int loc_row, const unsigned int loc_column)']]], + ['local_5fm_34',['local_m',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a34aea7e92abd44b2a47142f2fa546671',1,'dftfe::ScaLAPACKMatrix']]], + ['local_5fn_35',['local_n',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a1022e93c172ae09f9f976f769435dc82',1,'dftfe::ScaLAPACKMatrix']]], + ['local_5fsize_5ftype_36',['local_size_type',['../namespacedftfe_1_1data_types.html#a90afd2e755c16836bd428bc7cf2e8774',1,'dftfe::dataTypes']]], + ['localghostsize_37',['localGhostSize',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#aad7f0c3a7d06dbe6e3f95b6803a2e370',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['locally_5fowned_5fdofs_38',['locally_owned_dofs',['../classdftfe_1_1dft_class.html#a183cb2f48d86dacf52f0ed138d9adf33',1,'dftfe::dftClass']]], + ['locally_5fowned_5fdofseigen_39',['locally_owned_dofsEigen',['../classdftfe_1_1dft_class.html#a21703693bb727fb5cc30d936686c286b',1,'dftfe::dftClass']]], + ['locally_5frelevant_5fdofs_40',['locally_relevant_dofs',['../classdftfe_1_1dft_class.html#ae43a01811776419d36056b4532045342',1,'dftfe::dftClass']]], + ['locally_5frelevant_5fdofseigen_41',['locally_relevant_dofsEigen',['../classdftfe_1_1dft_class.html#ae43955efb442c0e0402047876577cad7',1,'dftfe::dftClass']]], + ['locallyownedsize_42',['locallyOwnedSize',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#abda14af1c27877b59b8da19dd8236a7c',1,'dftfe::linearAlgebra::MultiVector']]], + ['localownedsize_43',['localOwnedSize',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a5a04593d736021b0e1b4f39f29faa13c',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['localproc_5fdof_5findicesimag_44',['localProc_dof_indicesImag',['../classdftfe_1_1dft_class.html#a6d32d56a35a26d23b1c7af04f76cc174',1,'dftfe::dftClass']]], + ['localproc_5fdof_5findicesreal_45',['localProc_dof_indicesReal',['../classdftfe_1_1dft_class.html#ad81ed2be9a6d53368eba41c3ca4767d9',1,'dftfe::dftClass']]], + ['localsize_46',['localSize',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a95ee5193650150d642b7f751ec71c134',1,'dftfe::linearAlgebra::MultiVector']]], + ['localtoglobal_47',['localToGlobal',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a0aae8dcbce38023d86848b2532fcdd61',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['locateatomcorenodes_48',['locateAtomCoreNodes',['../classdftfe_1_1dft_class.html#a111f62935e76686ae3ed8a73cacefb90',1,'dftfe::dftClass']]], + ['locateatomcorenodesforce_49',['locateAtomCoreNodesForce',['../classdftfe_1_1force_class.html#a62018391fc6cd3b2ea1c19b8d6b02e90',1,'dftfe::forceClass']]], + ['locateatomsinbins_50',['locateAtomsInBins',['../classdftfe_1_1vself_bins_manager.html#a872f830ddc0d284b8194ef221e8ec1f3',1,'dftfe::vselfBinsManager']]], + ['locateperiodicpinnednodes_51',['locatePeriodicPinnedNodes',['../classdftfe_1_1dft_class.html#a20047365b4686ee2e01651418ce6176b',1,'dftfe::dftClass']]], + ['logicerror_52',['LogicError',['../namespacedftfe_1_1utils.html#ac14217af2ed8ec238a9e8174ef0e9990',1,'dftfe::utils']]], + ['lowdenorthogonalization_53',['lowdenOrthogonalization',['../namespacedftfe_1_1linear_algebra_operations.html#a7fbcfc34fd019e4704b2a8ddf4b1bd94',1,'dftfe::linearAlgebraOperations']]], + ['lower_5ftriangular_54',['lower_triangular',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#af3c45dcea64890f047b4dca87fdde9aca5cabb2a79e8f6e35216f706d4d5b431a',1,'dftfe::LAPACKSupport']]], + ['lowerboundkindex_55',['lowerBoundKindex',['../classdftfe_1_1dft_class.html#a3b57f2cf872b0939f2614b830be83b6e',1,'dftfe::dftClass']]], + ['lowrankapproxscfdielectricmatrixinv_56',['lowrankApproxScfDielectricMatrixInv',['../classdftfe_1_1dft_class.html#a6380af9e40e56f2d4365e8aa208b0719',1,'dftfe::dftClass']]], + ['lowrankapproxscfdielectricmatrixinvspinpolarized_57',['lowrankApproxScfDielectricMatrixInvSpinPolarized',['../classdftfe_1_1dft_class.html#a34f2ada95a1c1a7a20b3a9d911366804',1,'dftfe::dftClass']]], + ['lu_58',['lu',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06af7657b06d9b721ff8fb58812ac335cfa',1,'dftfe::LAPACKSupport']]], + ['lworkfromwork_59',['lworkFromWork',['../namespacedftfe.html#a5a9de5077c14618313dfa884a65c59db',1,'dftfe::lworkFromWork(std::vector< double > &work)'],['../namespacedftfe.html#a2bf7d4cacec598f188429ed1518475fb',1,'dftfe::lworkFromWork(std::vector< float > &work)'],['../namespacedftfe.html#a402d4494c85423bbdf6676a14ed42562',1,'dftfe::lworkFromWork(std::vector< std::complex< double > > &work)']]] +]; diff --git a/search/all_d.js b/search/all_d.js new file mode 100644 index 000000000..1266a7974 --- /dev/null +++ b/search/all_d.js @@ -0,0 +1,139 @@ +var searchData= +[ + ['m_0',['m',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a58e8a50bfee69f4bf767b41fd4621f52',1,'dftfe::ScaLAPACKMatrix']]], + ['magz_1',['magZ',['../namespacedftfe.html#a55e98bd838d76f5c67d7d7bc1cccee84a28a2a8c254011401c195a2b09542c18b',1,'dftfe']]], + ['make_5fpositive_2',['MAKE_POSITIVE',['../namespacedftfe.html#a954ce72efb7db01d751b54db20ccf00da42e202f66aeadd5ca1dbce7bb91b417f',1,'dftfe']]], + ['makecomplex_3',['makeComplex',['../namespacedftfe_1_1utils.html#aaacbda8d186e1962f22208254b090057',1,'dftfe::utils::makeComplex(double realPart, double imagPart)'],['../namespacedftfe_1_1utils.html#a8ac6e6cb2cd0588d689befc8ef434e04',1,'dftfe::utils::makeComplex(float realPart, float imagPart)']]], + ['makedatatypedevicecompatible_4',['makeDataTypeDeviceCompatible',['../namespacedftfe_1_1utils.html#a7a1cd29b80e3fe5d280420de996315e8',1,'dftfe::utils::makeDataTypeDeviceCompatible(int *a)'],['../namespacedftfe_1_1utils.html#a08df0cd4aadf5df82cec12e103e8e8b9',1,'dftfe::utils::makeDataTypeDeviceCompatible(const int *a)'],['../namespacedftfe_1_1utils.html#ae303cc24132199268684f6f3253ba75f',1,'dftfe::utils::makeDataTypeDeviceCompatible(long int *a)'],['../namespacedftfe_1_1utils.html#aaa3f9c9491ab01be2f4d640b978ec3a2',1,'dftfe::utils::makeDataTypeDeviceCompatible(const long int *a)'],['../namespacedftfe_1_1utils.html#ad038cfc024c68794ab17ad3733959c4e',1,'dftfe::utils::makeDataTypeDeviceCompatible(unsigned int *a)'],['../namespacedftfe_1_1utils.html#a5b40c4124ecb41075e58807876c4da30',1,'dftfe::utils::makeDataTypeDeviceCompatible(const unsigned int *a)'],['../namespacedftfe_1_1utils.html#a97060128d2bcb54fe8953ca50a76cac5',1,'dftfe::utils::makeDataTypeDeviceCompatible(unsigned long int *a)'],['../namespacedftfe_1_1utils.html#a4ba5fd4ed7fe3832648ce3396e43c950',1,'dftfe::utils::makeDataTypeDeviceCompatible(const unsigned long int *a)'],['../namespacedftfe_1_1utils.html#a94b19bd8c7f3f4e8559d086805b1b2ae',1,'dftfe::utils::makeDataTypeDeviceCompatible(double *a)'],['../namespacedftfe_1_1utils.html#ae0133aebc103be688f0bb66a8204e941',1,'dftfe::utils::makeDataTypeDeviceCompatible(const double *a)'],['../namespacedftfe_1_1utils.html#a0537eb04643a83ced090a5a58cd4eea6',1,'dftfe::utils::makeDataTypeDeviceCompatible(float *a)'],['../namespacedftfe_1_1utils.html#ac40d9c1e4801701da9b1696d2819a220',1,'dftfe::utils::makeDataTypeDeviceCompatible(const float *a)'],['../namespacedftfe_1_1utils.html#a744e1645d9ef70875849ae6f4cdfd885',1,'dftfe::utils::makeDataTypeDeviceCompatible(std::complex< double > *a)'],['../namespacedftfe_1_1utils.html#aa2cd60a5b28347f01607d8b8624519a0',1,'dftfe::utils::makeDataTypeDeviceCompatible(const std::complex< double > *a)'],['../namespacedftfe_1_1utils.html#af6b64fe1e29492b52d98e01a5d1d1102',1,'dftfe::utils::makeDataTypeDeviceCompatible(std::complex< float > *a)'],['../namespacedftfe_1_1utils.html#a49256422281abd832bf025f9b3eec849',1,'dftfe::utils::makeDataTypeDeviceCompatible(const std::complex< float > *a)'],['../namespacedftfe_1_1utils.html#a543a5f6ce66449bc8a1932838adf9b7e',1,'dftfe::utils::makeDataTypeDeviceCompatible(int a)'],['../namespacedftfe_1_1utils.html#a23866963f61b778806b3bffe55733340',1,'dftfe::utils::makeDataTypeDeviceCompatible(long int a)'],['../namespacedftfe_1_1utils.html#adc50be81ab053cacbfc8d5b64183765b',1,'dftfe::utils::makeDataTypeDeviceCompatible(unsigned int a)'],['../namespacedftfe_1_1utils.html#ab163913b740eca35cca68a544f63b343',1,'dftfe::utils::makeDataTypeDeviceCompatible(unsigned long int a)'],['../namespacedftfe_1_1utils.html#a04950f81160aea55fd7f1fbce050e957',1,'dftfe::utils::makeDataTypeDeviceCompatible(double a)'],['../namespacedftfe_1_1utils.html#a03c49012882dfbd45b7dab77ce1d69fc',1,'dftfe::utils::makeDataTypeDeviceCompatible(float a)'],['../namespacedftfe_1_1utils.html#a7bcf7b985ffed5cbcacbaf2891fb3823',1,'dftfe::utils::makeDataTypeDeviceCompatible(std::complex< double > a)'],['../namespacedftfe_1_1utils.html#ac7a04746273fda89ec15451cc9e75f9c',1,'dftfe::utils::makeDataTypeDeviceCompatible(std::complex< float > a)']]], + ['mappedgroup_5',['mappedGroup',['../classdftfe_1_1symmetry_class.html#a6e8f4bc5aafc5a0743f2bfffbee484ad',1,'dftfe::symmetryClass']]], + ['mappedgrouprecvd0_6',['mappedGroupRecvd0',['../classdftfe_1_1symmetry_class.html#ae51d7383fdd64f35f7c1804d05d11a4b',1,'dftfe::symmetryClass']]], + ['mappedgrouprecvd1_7',['mappedGroupRecvd1',['../classdftfe_1_1symmetry_class.html#a31ff35cc1724d819a43ccb33a0511f99',1,'dftfe::symmetryClass']]], + ['mappedgrouprecvd2_8',['mappedGroupRecvd2',['../classdftfe_1_1symmetry_class.html#ab7ac9004941a068371251cc4cb61d695',1,'dftfe::symmetryClass']]], + ['mappedgroupsend0_9',['mappedGroupSend0',['../classdftfe_1_1symmetry_class.html#a4a6d28c8f74d8d4c50992389fc1d0450',1,'dftfe::symmetryClass']]], + ['mappedgroupsend1_10',['mappedGroupSend1',['../classdftfe_1_1symmetry_class.html#a181c9a2b5802e17f43e106723dc4b812',1,'dftfe::symmetryClass']]], + ['mappedgroupsend2_11',['mappedGroupSend2',['../classdftfe_1_1symmetry_class.html#a70645e6919511fc3d2aaa15952e31b09',1,'dftfe::symmetryClass']]], + ['markperiodicfacesnonorthogonal_12',['markPeriodicFacesNonOrthogonal',['../namespacedftfe_1_1mesh_gen_utils.html#a93d6f8f8f6598611e357f7d3d32c090c',1,'dftfe::meshGenUtils']]], + ['mass_13',['mass',['../structdftfe_1_1pseudo_utils_1_1_element.html#abd2a9c35aecb4529a17db70da80daf3f',1,'dftfe::pseudoUtils::Element::mass'],['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#a161c2d6fee63f2bbe38eca17cc9f8daa',1,'dftfe::pseudoUtils::PeriodicTable::mass(int zval) const'],['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#ac327939e53776d2fa9b8736042b4f181',1,'dftfe::pseudoUtils::PeriodicTable::mass(std::string symbol) const']]], + ['massvector_14',['massVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a0689af03d17d42c4a1b1e30a0902dfe2',1,'dftfe::basis::FEBasisOperations']]], + ['massvectorbasisdata_15',['massVectorBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a60133f0eed7281470f267b18bf584696',1,'dftfe::basis::FEBasisOperations']]], + ['matrix_16',['matrix',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06a12b38d25fc5ef7deb25cd97a21bccc32',1,'dftfe::LAPACKSupport']]], + ['matrix_5ffree_5fdata_17',['matrix_free_data',['../classdftfe_1_1dft_class.html#ab1493ef3ad972c851654a8ef640c73f8',1,'dftfe::dftClass']]], + ['matrixfreedata_18',['matrixFreeData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#af7bd51a3a6146ec5d94bf4de738ec6e8',1,'dftfe::basis::FEBasisOperations']]], + ['max_5fiter_5freached_19',['MAX_ITER_REACHED',['../classdftfe_1_1non_linear_solver.html#ae0e20e973c1797bd9ea9d06fb2aff9e7a364cd1ba783ad19d4ab2b2ef394de085',1,'dftfe::nonLinearSolver::MAX_ITER_REACHED'],['../classdftfe_1_1eigen_solver_class.html#a9c442ebbb90a179cba7e4889d7fdd700a166fdb12611b864605b50bcb6ef3c185',1,'dftfe::eigenSolverClass::MAX_ITER_REACHED']]], + ['maxcellupdatestep_20',['maxCellUpdateStep',['../classdftfe_1_1dft_parameters.html#a6448c676ac51d1a8525f216d9ff9e76a',1,'dftfe::dftParameters']]], + ['maximumnebiteration_21',['maximumNEBiteration',['../classdftfe_1_1run_parameters.html#a4804eeb599b316cc54ed5ddbd6d79168',1,'dftfe::runParameters']]], + ['maxionupdatestep_22',['maxIonUpdateStep',['../classdftfe_1_1dft_parameters.html#a645816312e33f264f3871741995ee87f',1,'dftfe::dftParameters']]], + ['maxjacobianratiofactorformd_23',['maxJacobianRatioFactorForMD',['../classdftfe_1_1dft_parameters.html#a90c1b53f11be5b2e7382778a030d271b',1,'dftfe::dftParameters']]], + ['maxlinearsolveriterations_24',['maxLinearSolverIterations',['../classdftfe_1_1dft_parameters.html#ada27a2576c3d82e1b00538821ef74203',1,'dftfe::dftParameters']]], + ['maxlinearsolveriterationshelmholtz_25',['maxLinearSolverIterationsHelmholtz',['../classdftfe_1_1dft_parameters.html#af51b1073e94542b1c85231f384be6142',1,'dftfe::dftParameters']]], + ['maxlinesearchitercgprp_26',['maxLineSearchIterCGPRP',['../classdftfe_1_1dft_parameters.html#a731348021334d1c0b21f27343d3e0acd',1,'dftfe::dftParameters::maxLineSearchIterCGPRP'],['../classdftfe_1_1nudged_elastic_band_class.html#a498bb5e8bd62b10af0191d6b160f9a35',1,'dftfe::nudgedElasticBandClass::maxLineSearchIterCGPRP'],['../classdftfe_1_1run_parameters.html#a1ee3061048f7f61d7bd499f68b48f7f6',1,'dftfe::runParameters::maxLineSearchIterCGPRP']]], + ['maxoptiter_27',['maxOptIter',['../classdftfe_1_1dft_parameters.html#a0f3f1ee3a008530b268de7b0ac8d99c7',1,'dftfe::dftParameters']]], + ['maxstaggeredcycles_28',['maxStaggeredCycles',['../classdftfe_1_1dft_parameters.html#aa94cca27de7a4ccfbc9630ecd5093b48',1,'dftfe::dftParameters']]], + ['maxwalltime_29',['MaxWallTime',['../classdftfe_1_1dft_parameters.html#a754eabf05f3b6b41ee234081e53e3f1c',1,'dftfe::dftParameters']]], + ['mdiengine_2eh_30',['MDIEngine.h',['../_m_d_i_engine_8h.html',1,'']]], + ['mdnve_31',['mdNVE',['../classdftfe_1_1molecular_dynamics_class.html#aba514f7d8f632ae1870d1f5de6ec5386',1,'dftfe::molecularDynamicsClass']]], + ['mdnvtnosehoverchainsthermostat_32',['mdNVTnosehoverchainsThermostat',['../classdftfe_1_1molecular_dynamics_class.html#a35109ee98ca2960c784b13f56fa27bad',1,'dftfe::molecularDynamicsClass']]], + ['mdnvtrescalethermostat_33',['mdNVTrescaleThermostat',['../classdftfe_1_1molecular_dynamics_class.html#a8b7eafdd02eb5c99fc4674bcb9ed8c1d',1,'dftfe::molecularDynamicsClass']]], + ['mdnvtsvrthermostat_34',['mdNVTsvrThermostat',['../classdftfe_1_1molecular_dynamics_class.html#a4a9b377819e099986c44bf04c0d468a6',1,'dftfe::molecularDynamicsClass']]], + ['mdtrack_35',['MDTrack',['../classdftfe_1_1dft_parameters.html#ac47f9ddfcb70b3a3ab7938d176473bb9',1,'dftfe::dftParameters']]], + ['meanvalueconstraintdistribute_36',['meanValueConstraintDistribute',['../classdftfe_1_1poisson_solver_problem.html#a5bb985e12bbb1a453d10590799aa97e6',1,'dftfe::poissonSolverProblem']]], + ['meanvalueconstraintdistributeslavetomaster_37',['meanValueConstraintDistributeSlaveToMaster',['../classdftfe_1_1poisson_solver_problem.html#a35336e7f3879e35944e15d1b87908fb2',1,'dftfe::poissonSolverProblem']]], + ['meanvalueconstraintsetzero_38',['meanValueConstraintSetZero',['../classdftfe_1_1poisson_solver_problem.html#a38551ba64c40ea985b96df83ceb0a676',1,'dftfe::poissonSolverProblem']]], + ['memoptmode_39',['memOptMode',['../classdftfe_1_1dft_parameters.html#ad272e2d7f0df3103096ef39612ad8c6e',1,'dftfe::dftParameters']]], + ['memorymanager_40',['MemoryManager',['../classdftfe_1_1utils_1_1_memory_manager.html',1,'dftfe::utils']]], + ['memorymanager_2eh_41',['MemoryManager.h',['../_memory_manager_8h.html',1,'']]], + ['memorymanager_3c_20valuetype_2c_20memoryspace_3a_3ahost_20_3e_42',['MemoryManager< ValueType, MemorySpace::HOST >',['../classdftfe_1_1utils_1_1_memory_manager_3_01_value_type_00_01_memory_space_1_1_h_o_s_t_01_4.html',1,'dftfe::utils']]], + ['memoryspace_43',['MemorySpace',['../namespacedftfe_1_1utils.html#a70cf7f171e9701571a428ad0fa1bf341',1,'dftfe::utils']]], + ['memoryspacetype_2eh_44',['MemorySpaceType.h',['../_memory_space_type_8h.html',1,'']]], + ['memorystorage_45',['MemoryStorage',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils::MemoryStorage< ValueType, memorySpace >'],['../classdftfe_1_1utils_1_1_memory_storage.html#a816f1f06c424a9ec07b0eab4d265cad5',1,'dftfe::utils::MemoryStorage::MemoryStorage()=default'],['../classdftfe_1_1utils_1_1_memory_storage.html#af890cefee7279d03543554a16d313a95',1,'dftfe::utils::MemoryStorage::MemoryStorage(const MemoryStorage &u)'],['../classdftfe_1_1utils_1_1_memory_storage.html#ac37d91fae881c7aaffae5661c90a2910',1,'dftfe::utils::MemoryStorage::MemoryStorage(MemoryStorage &&u) noexcept'],['../classdftfe_1_1utils_1_1_memory_storage.html#a6889f89771c30ae23fe588ff35c63bb3',1,'dftfe::utils::MemoryStorage::MemoryStorage(std::size_t size, ValueType initVal=0)']]], + ['memorystorage_2eh_46',['MemoryStorage.h',['../_memory_storage_8h.html',1,'']]], + ['memorystorage_3c_20datatypes_3a_3anumber_2c_20dftfe_3a_3autils_3a_3amemoryspace_3a_3ahost_20_3e_47',['MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOST >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20datatypes_3a_3anumber_2c_20memoryspace_20_3e_48',['MemoryStorage< dataTypes::number, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20dftfe_3a_3aglobal_5fsize_5ftype_2c_20dftfe_3a_3autils_3a_3amemoryspace_3a_3ahost_20_3e_49',['MemoryStorage< dftfe::global_size_type, dftfe::utils::MemorySpace::HOST >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20dftfe_3a_3aglobal_5fsize_5ftype_2c_20memoryspace_20_3e_50',['MemoryStorage< dftfe::global_size_type, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20double_2c_20dftfe_3a_3autils_3a_3amemoryspace_3a_3ahost_20_3e_51',['MemoryStorage< double, dftfe::utils::MemorySpace::HOST >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20double_2c_20memoryspace_20_3e_52',['MemoryStorage< double, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20float_2c_20memoryspace_20_3e_53',['MemoryStorage< float, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20size_5ftype_2c_20memoryspace_20_3e_54',['MemoryStorage< size_type, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20typename_20dftfe_3a_3autils_3a_3ampi_3a_3asingleprectype_3c_20valuetype_20_3e_3a_3atype_2c_20memoryspace_20_3e_55',['MemoryStorage< typename dftfe::utils::mpi::singlePrecType< ValueType >::type, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20valuetypebasiscoeff_2c_20memoryspace_20_3e_56',['MemoryStorage< ValueTypeBasisCoeff, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20valuetypebasisdata_2c_20memoryspace_20_3e_57',['MemoryStorage< ValueTypeBasisData, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystoragefromstl_58',['memoryStorageFromSTL',['../namespacedftfe_1_1utils.html#ac07cb0a5493ca0895396e428081a1cfe',1,'dftfe::utils']]], + ['memorytransfer_59',['MemoryTransfer',['../classdftfe_1_1utils_1_1_memory_transfer.html',1,'dftfe::utils']]], + ['memorytransfer_2eh_60',['MemoryTransfer.h',['../_memory_transfer_8h.html',1,'']]], + ['memorytransfer_3c_20memoryspace_3a_3ahost_2c_20memoryspace_3a_3ahost_20_3e_61',['MemoryTransfer< MemorySpace::HOST, MemorySpace::HOST >',['../classdftfe_1_1utils_1_1_memory_transfer_3_01_memory_space_1_1_h_o_s_t_00_01_memory_space_1_1_h_o_s_t_01_4.html',1,'dftfe::utils']]], + ['memorytransferkernelsdevice_2eh_62',['MemoryTransferKernelsDevice.h',['../_memory_transfer_kernels_device_8h.html',1,'']]], + ['meshadaption_63',['meshAdaption',['../classdftfe_1_1dft_parameters.html#a6b8cc0d451f3844f704e008f74ed93fb',1,'dftfe::dftParameters']]], + ['meshgenutils_2eh_64',['meshGenUtils.h',['../mesh_gen_utils_8h.html',1,'']]], + ['meshmovement_2eh_65',['meshMovement.h',['../mesh_movement_8h.html',1,'']]], + ['meshmovementaffinetransform_66',['meshMovementAffineTransform',['../classdftfe_1_1mesh_movement_affine_transform.html',1,'dftfe::meshMovementAffineTransform'],['../classdftfe_1_1mesh_movement_affine_transform.html#aa82504dd00a1727527eb8487bee90d70',1,'dftfe::meshMovementAffineTransform::meshMovementAffineTransform()']]], + ['meshmovementaffinetransform_2eh_67',['meshMovementAffineTransform.h',['../mesh_movement_affine_transform_8h.html',1,'']]], + ['meshmovementclass_68',['meshMovementClass',['../classdftfe_1_1mesh_movement_class.html',1,'dftfe::meshMovementClass'],['../classdftfe_1_1mesh_movement_class.html#a11a93ca35ca3de8b60db373cf0cf2501',1,'dftfe::meshMovementClass::meshMovementClass()']]], + ['meshmovementgaussian_2eh_69',['meshMovementGaussian.h',['../mesh_movement_gaussian_8h.html',1,'']]], + ['meshmovementgaussianclass_70',['meshMovementGaussianClass',['../classdftfe_1_1mesh_movement_gaussian_class.html',1,'dftfe::meshMovementGaussianClass'],['../classdftfe_1_1mesh_movement_gaussian_class.html#ad87c0589fd2775b847d33f97bdb65914',1,'dftfe::meshMovementGaussianClass::meshMovementGaussianClass()']]], + ['meshsizeinnerball_71',['meshSizeInnerBall',['../classdftfe_1_1dft_parameters.html#a597581e8dac9ea69f7a5ddbc9deaf476',1,'dftfe::dftParameters']]], + ['meshsizeouterball_72',['meshSizeOuterBall',['../classdftfe_1_1dft_parameters.html#af87a79e095a9b0cd8f3c0b25e1e9310c',1,'dftfe::dftParameters']]], + ['meshsizeouterdomain_73',['meshSizeOuterDomain',['../classdftfe_1_1dft_parameters.html#af85678dbe1ce046b64a1a1e6a396d680',1,'dftfe::dftParameters']]], + ['methodsubtypelrd_74',['methodSubTypeLRD',['../classdftfe_1_1dft_parameters.html#ad19e5331e64d5974bc64a6d87b1e600a',1,'dftfe::dftParameters']]], + ['mixingclass_2eh_75',['mixingClass.h',['../mixing_class_8h.html',1,'']]], + ['mixinghistory_76',['mixingHistory',['../classdftfe_1_1dft_parameters.html#a5f543eaa5970df1aba338d3e63f80e45',1,'dftfe::dftParameters']]], + ['mixingmethod_77',['mixingMethod',['../classdftfe_1_1dft_parameters.html#a5fc3e15c8d7ddfe0ec93d4f9fee1cb74',1,'dftfe::dftParameters']]], + ['mixingparameter_78',['mixingParameter',['../classdftfe_1_1dft_parameters.html#a4ac992289a85a2b0c78d77940f29ca62',1,'dftfe::dftParameters']]], + ['mixingscheme_79',['MixingScheme',['../classdftfe_1_1_mixing_scheme.html',1,'dftfe::MixingScheme'],['../classdftfe_1_1_mixing_scheme.html#aea80fc781ba944e73a4be8c36f8ee55b',1,'dftfe::MixingScheme::MixingScheme()']]], + ['mixingvariable_80',['mixingVariable',['../namespacedftfe.html#a55e98bd838d76f5c67d7d7bc1cccee84',1,'dftfe']]], + ['mixvariable_81',['mixVariable',['../classdftfe_1_1_mixing_scheme.html#a2cd7a278514a64b881634eb39132d13c',1,'dftfe::MixingScheme']]], + ['mmult_82',['mmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ab9cde52bed9faa050dce904c96eebce0',1,'dftfe::ScaLAPACKMatrix']]], + ['modelxcinputfile_83',['modelXCInputFile',['../classdftfe_1_1dft_parameters.html#a400c36031e1513af91d2673da5b4e48a',1,'dftfe::dftParameters']]], + ['moleculardynamicsclass_84',['molecularDynamicsClass',['../classdftfe_1_1molecular_dynamics_class.html',1,'dftfe::molecularDynamicsClass'],['../classdftfe_1_1molecular_dynamics_class.html#accaf2f7c9ba1ee6c5155a8dd3088533c',1,'dftfe::molecularDynamicsClass::molecularDynamicsClass()']]], + ['moleculardynamicsclass_2eh_85',['molecularDynamicsClass.h',['../molecular_dynamics_class_8h.html',1,'']]], + ['more_20information_86',['More information',['../index.html#autotoc_md4',1,'']]], + ['movedmeshcheck_87',['movedMeshCheck',['../classdftfe_1_1mesh_movement_class.html#a3f6575159e4616a7cc1c9bfaf14d521d',1,'dftfe::meshMovementClass']]], + ['movefile_88',['moveFile',['../namespacedftfe_1_1dft_utils.html#ab276c85aa00451fe23367a4bda8b48c2',1,'dftfe::dftUtils']]], + ['movemesh_89',['moveMesh',['../classdftfe_1_1mesh_movement_affine_transform.html#af5389b0b653a2aa2204f32129f8b9bde',1,'dftfe::meshMovementAffineTransform::moveMesh()'],['../classdftfe_1_1mesh_movement_gaussian_class.html#a01f8043c0910aa892d4c003fea0b1fd8',1,'dftfe::meshMovementGaussianClass::moveMesh()']]], + ['movemeshtoatoms_90',['moveMeshToAtoms',['../classdftfe_1_1dft_class.html#adc7fd80efeaa869d464a2c5d2705b130',1,'dftfe::dftClass']]], + ['movemeshtwolevelelectro_91',['moveMeshTwoLevelElectro',['../classdftfe_1_1mesh_movement_gaussian_class.html#a2457759f5a0c300cc4b25e025e2dc032',1,'dftfe::meshMovementGaussianClass']]], + ['movemeshtwostep_92',['moveMeshTwoStep',['../classdftfe_1_1mesh_movement_gaussian_class.html#a10a91c70be4057aeaf005574b273daaa',1,'dftfe::meshMovementGaussianClass']]], + ['movesubdividedmesh_93',['moveSubdividedMesh',['../classdftfe_1_1mesh_movement_class.html#a46ffb5b9220045f23513f1ef7d4e7d98',1,'dftfe::meshMovementClass']]], + ['mpi_5fcommunicator_94',['mpi_communicator',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#aedb63f983848dd29a876511efbfb6eaf',1,'dftfe::BFGSNonLinearSolver::mpi_communicator'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a96944d9e79bf6ccf38e86b6da366e190',1,'dftfe::cgPRPNonLinearSolver::mpi_communicator'],['../classdftfe_1_1dealii_linear_solver.html#a930436ff320469e4f231f2a988e8b691',1,'dftfe::dealiiLinearSolver::mpi_communicator'],['../classdftfe_1_1dft_class.html#a166aa5ba1e66fa8980c615bd4574c459',1,'dftfe::dftClass::mpi_communicator'],['../classdftfe_1_1energy_calculator.html#a9f3a459deb097a947ab704d1557c43c5',1,'dftfe::energyCalculator::mpi_communicator'],['../classdftfe_1_1force_class.html#a6843685a409b73da7bf97d87b687d40a',1,'dftfe::forceClass::mpi_communicator'],['../classdftfe_1_1geo_opt_cell.html#ae7348b709510b4070a5dbbded9c55ee3',1,'dftfe::geoOptCell::mpi_communicator'],['../classdftfe_1_1geo_opt_ion.html#a62e16b8abf4499926af3b71ef686a3b3',1,'dftfe::geoOptIon::mpi_communicator'],['../classdftfe_1_1kerker_solver_problem.html#a05a9507e00859c1865fddf4468bb55d4',1,'dftfe::kerkerSolverProblem::mpi_communicator'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#afffe0fc3ebaaabbdce739cf5efb17246',1,'dftfe::LBFGSNonLinearSolver::mpi_communicator'],['../classdftfe_1_1mesh_movement_class.html#a0138597e94e587818185cb216a152f61',1,'dftfe::meshMovementClass::mpi_communicator'],['../classdftfe_1_1poisson_solver_problem.html#a24e1fc185ed789c3dc45ab2fbf500d52',1,'dftfe::poissonSolverProblem::mpi_communicator'],['../classdftfe_1_1_process_grid.html#a2aebe1774b1c600153ad689f0af7f23d',1,'dftfe::ProcessGrid::mpi_communicator'],['../classdftfe_1_1symmetry_class.html#aaa6d79b71219ac3a3d8681ec616396fb',1,'dftfe::symmetryClass::mpi_communicator'],['../classdftfe_1_1triangulation_manager.html#ac7a0f860d42e7828312e2511785deb69',1,'dftfe::triangulationManager::mpi_communicator'],['../classdftfe_1_1vself_bins_manager.html#ae472e9ef7d89e4d634944a1e77905b07',1,'dftfe::vselfBinsManager::mpi_communicator']]], + ['mpi_5fcommunicator_5fdomain_95',['mpi_communicator_domain',['../classdftfe_1_1dispersion_correction.html#a5772fac7a8f42323194c22408e0d65ef',1,'dftfe::dispersionCorrection']]], + ['mpi_5fcommunicator_5fglobal_96',['mpi_communicator_global',['../classdftfe_1_1dispersion_correction.html#a327788ff8d9d1f38d0a0f4f7ddc8fe78',1,'dftfe::dispersionCorrection']]], + ['mpi_5fcommunicator_5finactive_5fwith_5froot_97',['mpi_communicator_inactive_with_root',['../classdftfe_1_1_process_grid.html#ac5e5714b57352fd0f5e03b0b10076c4f',1,'dftfe::ProcessGrid']]], + ['mpi_5foffsets0_98',['mpi_offsets0',['../classdftfe_1_1symmetry_class.html#ac40154f02e5751d14f9cbd72c510b19e',1,'dftfe::symmetryClass']]], + ['mpi_5foffsets1_99',['mpi_offsets1',['../classdftfe_1_1symmetry_class.html#a34ae8add8583a57b9019fd5c46f1b452',1,'dftfe::symmetryClass']]], + ['mpi_5fp2p_5fcommunicator_5fgather_5ftag_100',['MPI_P2P_COMMUNICATOR_GATHER_TAG',['../namespacedftfe_1_1utils_1_1mpi.html#a0de142e88f623d0095015e05b96808f5a0f1d6e66b71390d689d95d500b20df13',1,'dftfe::utils::mpi']]], + ['mpi_5fp2p_5fcommunicator_5fscatter_5ftag_101',['MPI_P2P_COMMUNICATOR_SCATTER_TAG',['../namespacedftfe_1_1utils_1_1mpi.html#a0de142e88f623d0095015e05b96808f5af02ebfce5378ba6102d041f3b917247d',1,'dftfe::utils::mpi']]], + ['mpi_5fp2p_5fpattern_5ftag_102',['MPI_P2P_PATTERN_TAG',['../namespacedftfe_1_1utils_1_1mpi.html#a0de142e88f623d0095015e05b96808f5a64d36eadb62e3a3d13e9829ad3df9d93',1,'dftfe::utils::mpi']]], + ['mpi_5fprocess_5fis_5factive_103',['mpi_process_is_active',['../classdftfe_1_1_process_grid.html#a774db762c206f5586db85011e9832826',1,'dftfe::ProcessGrid']]], + ['mpi_5frequesters_5fnbx_5ftag_104',['MPI_REQUESTERS_NBX_TAG',['../namespacedftfe_1_1utils_1_1mpi.html#a0de142e88f623d0095015e05b96808f5a5c507bae40f4bed228358a245fad9c5d',1,'dftfe::utils::mpi']]], + ['mpi_5fscatter_5foffset_105',['mpi_scatter_offset',['../classdftfe_1_1symmetry_class.html#a4c2c5835debfa6aa3ff5a3768d0ad556',1,'dftfe::symmetryClass']]], + ['mpi_5fscattergrad_5foffset_106',['mpi_scatterGrad_offset',['../classdftfe_1_1symmetry_class.html#af2ef6dbf70bb8373b6e6dffdacbeec2b',1,'dftfe::symmetryClass']]], + ['mpi_5ftype_5fid_107',['mpi_type_id',['../namespacedftfe_1_1data_types.html#aeb14c95c8bc2a7a3d73ecb906a910914',1,'dftfe::dataTypes::mpi_type_id(const int *)'],['../namespacedftfe_1_1data_types.html#a69e9bd7ebf1f1e8f934019710897ec72',1,'dftfe::dataTypes::mpi_type_id(const long int *)'],['../namespacedftfe_1_1data_types.html#ad291a8a271c285c921e8db948ee9dbe3',1,'dftfe::dataTypes::mpi_type_id(const unsigned int *)'],['../namespacedftfe_1_1data_types.html#a71fa81cb88b2486d7feb79344ef2040f',1,'dftfe::dataTypes::mpi_type_id(const unsigned long int *)'],['../namespacedftfe_1_1data_types.html#a457b289255a9d71261309106c5d05b5c',1,'dftfe::dataTypes::mpi_type_id(const unsigned long long int *)'],['../namespacedftfe_1_1data_types.html#a569414bed95910467a2f2a72b6aaecce',1,'dftfe::dataTypes::mpi_type_id(const float *)'],['../namespacedftfe_1_1data_types.html#ac6a44437a6b6e883343401a9f26d5b24',1,'dftfe::dataTypes::mpi_type_id(const double *)'],['../namespacedftfe_1_1data_types.html#ad063442c3676df51ab9e633b8c22e394',1,'dftfe::dataTypes::mpi_type_id(const long double *)'],['../namespacedftfe_1_1data_types.html#a38807d2c7cb531423cc87e2f8290bb41',1,'dftfe::dataTypes::mpi_type_id(const std::complex< float > *)'],['../namespacedftfe_1_1data_types.html#ad766a182f5638ff13983cd9ad66ce0bb',1,'dftfe::dataTypes::mpi_type_id(const std::complex< double > *)']]], + ['mpiallreducemessageblocksizemb_108',['mpiAllReduceMessageBlockSizeMB',['../classdftfe_1_1dft_parameters.html#a8ddf2f86639ef7ae8e0398172d8d1675',1,'dftfe::dftParameters']]], + ['mpicheck_109',['MPICHECK',['../_exceptions_8h.html#a788dc5a587af46da3f3779520bd150c7',1,'Exceptions.h']]], + ['mpicommunicator_110',['mpiCommunicator',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#ab4d284d924bc3917ea71f52e40d8d44e',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['mpicommunicatorp2p_111',['MPICommunicatorP2P',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html',1,'dftfe::utils::mpi::MPICommunicatorP2P< ValueType, memorySpace >'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#adc62184cc187b4167239df3feee5dc6f',1,'dftfe::utils::mpi::MPICommunicatorP2P::MPICommunicatorP2P()']]], + ['mpicommunicatorp2p_2eh_112',['MPICommunicatorP2P.h',['../_m_p_i_communicator_p2_p_8h.html',1,'']]], + ['mpicommunicatorp2pkernels_113',['MPICommunicatorP2PKernels',['../classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels.html',1,'dftfe::utils']]], + ['mpicommunicatorp2pkernels_2eh_114',['MPICommunicatorP2PKernels.h',['../_m_p_i_communicator_p2_p_kernels_8h.html',1,'']]], + ['mpidevice_115',['mpiDevice',['../namespacedftfe_1_1utils_1_1mpi.html#aa9619263248b5e1feb33f75c9f6d911ba542a8ae96a564ae7a9051d62969c28b2',1,'dftfe::utils::mpi']]], + ['mpigrad_5foffsets1_116',['mpiGrad_offsets1',['../classdftfe_1_1symmetry_class.html#a6be55f547bbf5354210a1921ec9d985e',1,'dftfe::symmetryClass']]], + ['mpihost_117',['mpiHost',['../namespacedftfe_1_1utils_1_1mpi.html#aa9619263248b5e1feb33f75c9f6d911ba6a24e056ee4358e0cac169755ac9de8d',1,'dftfe::utils::mpi']]], + ['mpipatternp2p_118',['MPIPatternP2P',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html',1,'dftfe::utils::mpi::MPIPatternP2P< memorySpace >'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a0a8db9b51b0fd6fa4170e4b0a2aa24e1',1,'dftfe::utils::mpi::MPIPatternP2P::MPIPatternP2P(const std::pair< global_size_type, global_size_type > &locallyOwnedRange, const std::vector< dftfe::global_size_type > &ghostIndices, const MPI_Comm &mpiComm)'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a279c39f8272d4df97504081292914605',1,'dftfe::utils::mpi::MPIPatternP2P::MPIPatternP2P(const size_type size)']]], + ['mpipatternp2p_119',['mpiPatternP2P',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a50c1c1003522041ecbddd4ee2655b0f5',1,'dftfe::basis::FEBasisOperations']]], + ['mpipatternp2p_2eh_120',['MPIPatternP2P.h',['../_m_p_i_pattern_p2_p_8h.html',1,'']]], + ['mpirequestersbase_121',['MPIRequestersBase',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base.html',1,'dftfe::utils::mpi']]], + ['mpirequestersbase_2eh_122',['MPIRequestersBase.h',['../_m_p_i_requesters_base_8h.html',1,'']]], + ['mpirequestersnbx_123',['MPIRequestersNBX',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html',1,'dftfe::utils::mpi::MPIRequestersNBX'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a3c226ee125cca7b99659fea6fe44876b',1,'dftfe::utils::mpi::MPIRequestersNBX::MPIRequestersNBX(const std::vector< size_type > &targetIDs, const MPI_Comm &comm)'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a63da5b468e92b01eb7bd529b50fae7b4',1,'dftfe::utils::mpi::MPIRequestersNBX::MPIRequestersNBX()=default']]], + ['mpirequestersnbx_2eh_124',['MPIRequestersNBX.h',['../_m_p_i_requesters_n_b_x_8h.html',1,'']]], + ['mpitags_125',['MPITags',['../namespacedftfe_1_1utils_1_1mpi.html#a0de142e88f623d0095015e05b96808f5',1,'dftfe::utils::mpi']]], + ['mpitags_2eh_126',['MPITags.h',['../_m_p_i_tags_8h.html',1,'']]], + ['mpiwriteonfile_127',['MPIWriteOnFile',['../classdftfe_1_1dft_utils_1_1_m_p_i_write_on_file.html',1,'dftfe::dftUtils']]], + ['mpiwriteonfile_2eh_128',['MPIWriteOnFile.h',['../_m_p_i_write_on_file_8h.html',1,'']]], + ['mtmult_129',['mTmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a707a28c545abba69394929b0ff934fdd',1,'dftfe::ScaLAPACKMatrix']]], + ['mult_130',['mult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a245caef57db69751ecdebc120ff4b456',1,'dftfe::ScaLAPACKMatrix::mult()'],['../namespacedftfe_1_1utils.html#ad361e6bfe0d291045938225ecd3dd6ea',1,'dftfe::utils::mult(unsigned int a, unsigned int b)'],['../namespacedftfe_1_1utils.html#adcda956285358e48e0c816e0724ce0e0',1,'dftfe::utils::mult(unsigned long int a, unsigned long int b)'],['../namespacedftfe_1_1utils.html#a3026372ab6ab0625ee78b56505cd4520',1,'dftfe::utils::mult(int a, int b)'],['../namespacedftfe_1_1utils.html#afb52371cacad3bbd6f7d7a1066cda349',1,'dftfe::utils::mult(double a, double b)'],['../namespacedftfe_1_1utils.html#a0ecbb7d7ee9ef5b7c940c2ca8c72fa6c',1,'dftfe::utils::mult(float a, float b)'],['../namespacedftfe_1_1utils.html#ae5c706e906bb78fa6967057ce9ee4486',1,'dftfe::utils::mult(float a, double b)'],['../namespacedftfe_1_1utils.html#a4dca74c83a4e7f6888558c68d68913d8',1,'dftfe::utils::mult(double a, float b)'],['../namespacedftfe_1_1utils.html#aedb9ad40e707fe086a4e91668bafba3a',1,'dftfe::utils::mult(cuDoubleComplex a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a374ca5a1a4ffd39b8d515e7fd87f68f3',1,'dftfe::utils::mult(cuFloatComplex a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#a72b128596ee1a77af07d94093bfa111f',1,'dftfe::utils::mult(cuFloatComplex a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a612a0c9d9e701debb83e871bcd2ca8ce',1,'dftfe::utils::mult(cuDoubleComplex a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#ac36334b69f52959d0b239df89f442e47',1,'dftfe::utils::mult(double a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#aeb1e15224578717c7339307a78876021',1,'dftfe::utils::mult(cuDoubleComplex a, double b)'],['../namespacedftfe_1_1utils.html#a6583040a0867baf045ac03dbf8517d5e',1,'dftfe::utils::mult(float a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#a3670a509193257192d8c11e7d66a2a30',1,'dftfe::utils::mult(cuFloatComplex a, float b)'],['../namespacedftfe_1_1utils.html#adc2942c935ac70e8033df8dc5f11a740',1,'dftfe::utils::mult(double a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#a6bf7537ab0a41ee8982926efe3656365',1,'dftfe::utils::mult(cuFloatComplex a, double b)'],['../namespacedftfe_1_1utils.html#a60f42650f74eb6c378cae84c3c4b5b5c',1,'dftfe::utils::mult(hipDoubleComplex a, hipDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a260c252a26dedb4f5b12e558640cdc85',1,'dftfe::utils::mult(hipFloatComplex a, hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#a0dd4bbce759b46bd0428fa761ccab4ea',1,'dftfe::utils::mult(hipFloatComplex a, hipDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a3d313cf2e8a50f795fd0ac1d7cc73019',1,'dftfe::utils::mult(hipDoubleComplex a, hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#aa308830bb180cf7ea120f3ee8273c755',1,'dftfe::utils::mult(double a, hipDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a31dde47f526d95f0c3aa76f2e2beef3f',1,'dftfe::utils::mult(hipDoubleComplex a, double b)'],['../namespacedftfe_1_1utils.html#ae3e3b0bd17bff0e2eac1ddab6ed847d6',1,'dftfe::utils::mult(float a, hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#ab04109eaf432a8726ac78e6d01b760c5',1,'dftfe::utils::mult(hipFloatComplex a, float b)'],['../namespacedftfe_1_1utils.html#a62f12f2d1f412c6a7ddab59ca3790528',1,'dftfe::utils::mult(double a, hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#a76bfd1ab9791f496a60aad3e1054a537',1,'dftfe::utils::mult(hipFloatComplex a, double b)']]], + ['multipoleboundaryconditions_131',['multipoleBoundaryConditions',['../classdftfe_1_1dft_parameters.html#a198af6aea40456d3e2eb62245cfa91af',1,'dftfe::dftParameters']]], + ['multivector_132',['MultiVector',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html',1,'dftfe::linearAlgebra::MultiVector< ValueType, memorySpace >'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a9df1033e595ed9efe7ff76c17b486565',1,'dftfe::linearAlgebra::MultiVector::MultiVector()=default'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a3fed8a898375baa72b4893812938291c',1,'dftfe::linearAlgebra::MultiVector::MultiVector(const size_type size, const size_type numVectors, const ValueType initVal=0)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#adc396828ef298de8c6bcad7a04e87375',1,'dftfe::linearAlgebra::MultiVector::MultiVector(std::unique_ptr< typename MultiVector< ValueType, memorySpace >::Storage > storage, size_type numVectors)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a63d7db19987c9f2b9b41824f22f86e7d',1,'dftfe::linearAlgebra::MultiVector::MultiVector(std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P, const size_type numVectors, const ValueType initVal=0)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#af08086ba7cb2c37c63e7ae9ff64ec465',1,'dftfe::linearAlgebra::MultiVector::MultiVector(std::unique_ptr< typename MultiVector< ValueType, memorySpace >::Storage > &storage, std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P, const size_type numVectors)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a81170404c7cd6f2a226fe4fd09455c3d',1,'dftfe::linearAlgebra::MultiVector::MultiVector(const std::pair< global_size_type, global_size_type > locallyOwnedRange, const std::vector< global_size_type > &ghostIndices, const MPI_Comm &mpiComm, const size_type numVectors, ValueType initVal=0)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a1ac941c1afb8eebd2dc35db4ea3945b6',1,'dftfe::linearAlgebra::MultiVector::MultiVector(const std::pair< global_size_type, global_size_type > locallyOwnedRange, const MPI_Comm &mpiComm, const size_type numVectors, const ValueType initVal=0)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#adbf7fc76824da2a7540df1d4a2f6dfb5',1,'dftfe::linearAlgebra::MultiVector::MultiVector(const global_size_type globalSize, const MPI_Comm &mpiComm, const size_type numVectors, const ValueType initVal=0)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ae4ff9bc39e8df13bce72f6cde957a003',1,'dftfe::linearAlgebra::MultiVector::MultiVector(const MultiVector &u)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#aeef426256413c1d82318d49038914705',1,'dftfe::linearAlgebra::MultiVector::MultiVector(const MultiVector &u, const ValueType initVal=0)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a5b25af355ea6306c7dc8f21dd6683145',1,'dftfe::linearAlgebra::MultiVector::MultiVector(MultiVector &&u) noexcept']]], + ['multivector_2eh_133',['MultiVector.h',['../_multi_vector_8h.html',1,'']]], + ['multivector_3c_20datatypes_3a_3anumber_2c_20memoryspace_20_3e_134',['MultiVector< dataTypes::number, memorySpace >',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html',1,'dftfe::linearAlgebra']]], + ['mutex_135',['mutex',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a69ba2bb657ecfddf57a777ef0b15ccab',1,'dftfe::ScaLAPACKMatrix']]] +]; diff --git a/search/all_e.js b/search/all_e.js new file mode 100644 index 000000000..d56a00429 --- /dev/null +++ b/search/all_e.js @@ -0,0 +1,68 @@ +var searchData= +[ + ['n_0',['n',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a41c494fd3964387d621a45c8f25e664d',1,'dftfe::ScaLAPACKMatrix']]], + ['n_1',['N',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#ac110e26736d1c19b8e0f7acbc6e38b8f',1,'dftfe::LAPACKSupport']]], + ['n_5fcolumns_2',['n_columns',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a63d09a13a0bedeeb0e38abc743584d2c',1,'dftfe::ScaLAPACKMatrix']]], + ['n_5flocal_5fcolumns_3',['n_local_columns',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a6d39f988166252b4f4a3347ea9bb97e6',1,'dftfe::ScaLAPACKMatrix']]], + ['n_5flocal_5frows_4',['n_local_rows',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ac2cb492c0c59c42dcc736ed44e51bd19',1,'dftfe::ScaLAPACKMatrix']]], + ['n_5fmpi_5fprocesses_5',['n_mpi_processes',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a734b7f3dca0af43a51171dde38813feb',1,'dftfe::cgPRPNonLinearSolver::n_mpi_processes'],['../classdftfe_1_1dealii_linear_solver.html#a4f7f3676b226e67a1b7366159d92c2f0',1,'dftfe::dealiiLinearSolver::n_mpi_processes'],['../classdftfe_1_1dft_class.html#a5d9ce6c007ae91bb3b4426e8afba0b13',1,'dftfe::dftClass::n_mpi_processes'],['../classdftfe_1_1force_class.html#a565498c6cbf8c046c8864861c197f43e',1,'dftfe::forceClass::n_mpi_processes'],['../classdftfe_1_1geo_opt_cell.html#afc0ae256aafc7e1efb012aa73e968e1a',1,'dftfe::geoOptCell::n_mpi_processes'],['../classdftfe_1_1geo_opt_ion.html#abe281983d56f026ded3c833bfc9c3e9a',1,'dftfe::geoOptIon::n_mpi_processes'],['../classdftfe_1_1kerker_solver_problem.html#a7f72144d70661f9a7614da1c377a3c74',1,'dftfe::kerkerSolverProblem::n_mpi_processes'],['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a3ad8757d449d4f674f9816d0b8b114ad',1,'dftfe::KohnShamHamiltonianOperator::n_mpi_processes'],['../classdftfe_1_1poisson_solver_problem.html#a8c1d87f1b68f2837dcbc6dcf2093de30',1,'dftfe::poissonSolverProblem::n_mpi_processes'],['../classdftfe_1_1_process_grid.html#a33e5699c2cca8bb64d417b4960f6c2e4',1,'dftfe::ProcessGrid::n_mpi_processes'],['../classdftfe_1_1symmetry_class.html#a1305e069102045fb4decf3a36f96b638',1,'dftfe::symmetryClass::n_mpi_processes'],['../classdftfe_1_1triangulation_manager.html#abe2ac751c2ed525e55e34fce1d071f3b',1,'dftfe::triangulationManager::n_mpi_processes'],['../classdftfe_1_1vself_bins_manager.html#aae13fb031774ac9e602fbce9dd77e2e9',1,'dftfe::vselfBinsManager::n_mpi_processes']]], + ['n_5fprocess_5fcolumns_6',['n_process_columns',['../classdftfe_1_1_process_grid.html#a2352a26d9d63e3e045c8706a6a7bcf3d',1,'dftfe::ProcessGrid']]], + ['n_5fprocess_5frows_7',['n_process_rows',['../classdftfe_1_1_process_grid.html#a49e1e092e3ebd0c81c65eb6c9c09ebd7',1,'dftfe::ProcessGrid']]], + ['n_5frefinement_5fsteps_8',['n_refinement_steps',['../classdftfe_1_1dft_parameters.html#a043778f9c1b5ab2eaa6ef4004555ecb7',1,'dftfe::dftParameters']]], + ['n_5frows_9',['n_rows',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a45b24efb278a43b1696a379a2b332bab',1,'dftfe::ScaLAPACKMatrix']]], + ['natoms_10',['natoms',['../classdftfe_1_1dft_parameters.html#ab7158d579cdec773142127159d4f13d8',1,'dftfe::dftParameters']]], + ['natomtypes_11',['natomTypes',['../classdftfe_1_1dft_parameters.html#a413ac553c42abd627c6895f0a49e653f',1,'dftfe::dftParameters']]], + ['nbandgrps_12',['nbandGrps',['../classdftfe_1_1dft_parameters.html#a2b05448b25c6d87e843055fcd52a3461',1,'dftfe::dftParameters']]], + ['nccl_13',['nccl',['../namespacedftfe_1_1utils_1_1mpi.html#aa9619263248b5e1feb33f75c9f6d911ba3d78fd82ff84926e806d44c172466be9',1,'dftfe::utils::mpi']]], + ['ncells_14',['nCells',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a8038aba6dff161be6faa2dffe0cd7aed',1,'dftfe::basis::FEBasisOperations']]], + ['ndofspercell_15',['nDofsPerCell',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#abf087d5350a4a461df31596570eeb529',1,'dftfe::basis::FEBasisOperations']]], + ['netcharge_16',['netCharge',['../classdftfe_1_1dft_parameters.html#a62300c42fd9740014b1197e8646a9036',1,'dftfe::dftParameters']]], + ['nglobalindices_17',['nGlobalIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a82b80390d551c7cb29d42206f08cc044',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['nkx_18',['nkx',['../classdftfe_1_1dft_parameters.html#ac0d1ad2326dc4132990b67ae301f89a4',1,'dftfe::dftParameters']]], + ['nky_19',['nky',['../classdftfe_1_1dft_parameters.html#a582c49281298861ffcbf56d5e4b4e6a3',1,'dftfe::dftParameters']]], + ['nkz_20',['nkz',['../classdftfe_1_1dft_parameters.html#a5f46e5ac67aa1a305c65811b52ea737f',1,'dftfe::dftParameters']]], + ['nmpiprocesses_21',['nmpiProcesses',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#aa2f96b19290ef765ff84ca46ef0a23f1',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['nngga_2eh_22',['NNGGA.h',['../_n_n_g_g_a_8h.html',1,'']]], + ['nnlda_2eh_23',['NNLDA.h',['../_n_n_l_d_a_8h.html',1,'']]], + ['no_5fcheck_24',['NO_CHECK',['../namespacedftfe.html#a954ce72efb7db01d751b54db20ccf00da6bf6e695293507a237fe65e10a4ba2e8',1,'dftfe']]], + ['none_25',['NONE',['../namespacedftfe.html#aec9f58557c36d1bd23430bc23568c800ab50339a10e1de285ac99d4c3990b8693',1,'dftfe']]], + ['nonlinearcorecorrection_26',['nonLinearCoreCorrection',['../classdftfe_1_1dft_parameters.html#a8c4279efe140a446c0c3043f20f395d2',1,'dftfe::dftParameters']]], + ['nonlinearsolver_27',['nonLinearSolver',['../classdftfe_1_1non_linear_solver.html',1,'dftfe::nonLinearSolver'],['../classdftfe_1_1non_linear_solver.html#acb2fee7d397c0f1fcca01edff29bc1dc',1,'dftfe::nonLinearSolver::nonLinearSolver()']]], + ['nonlinearsolver_2eh_28',['nonLinearSolver.h',['../non_linear_solver_8h.html',1,'']]], + ['nonlinearsolverproblem_29',['nonlinearSolverProblem',['../classdftfe_1_1nonlinear_solver_problem.html',1,'dftfe::nonlinearSolverProblem'],['../classdftfe_1_1nonlinear_solver_problem.html#a6f468b90032ab9339b639b20109706f5',1,'dftfe::nonlinearSolverProblem::nonlinearSolverProblem()']]], + ['nonlinearsolverproblem_2eh_30',['nonlinearSolverProblem.h',['../nonlinear_solver_problem_8h.html',1,'']]], + ['nonselfconsistentforce_31',['nonSelfConsistentForce',['../classdftfe_1_1dft_parameters.html#a287ea09bc4cf525d3de1d2ad5cf5d5d3',1,'dftfe::dftParameters']]], + ['noremeshrhodatainit_32',['noRemeshRhoDataInit',['../classdftfe_1_1dft_class.html#a8700a1fe1f162afd6f700665e2e6db01',1,'dftfe::dftClass']]], + ['normalizeatomicrhoquadvalues_33',['normalizeAtomicRhoQuadValues',['../classdftfe_1_1dft_class.html#a7c4b33d6f4abd6d43d60d64e0f58970d',1,'dftfe::dftClass']]], + ['normalizerhoinquadvalues_34',['normalizeRhoInQuadValues',['../classdftfe_1_1dft_class.html#a780c37bcf31872e66eaed0c483cbc7b4',1,'dftfe::dftClass']]], + ['normalizerhooutquadvalues_35',['normalizeRhoOutQuadValues',['../classdftfe_1_1dft_class.html#adc0168fbf67ed4d6548d763260237372',1,'dftfe::dftClass']]], + ['nosehoverchains_36',['NoseHoverChains',['../classdftfe_1_1molecular_dynamics_class.html#ada336d8717658e87d6b7436443b9b252',1,'dftfe::molecularDynamicsClass']]], + ['nosehoverextendedlagrangian_37',['NoseHoverExtendedLagrangian',['../classdftfe_1_1molecular_dynamics_class.html#a8c5b0138a53a601f7e7e9c8998c7668d',1,'dftfe::molecularDynamicsClass']]], + ['nowneddofs_38',['nOwnedDofs',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#affa4970ca92f2e17df8666042aac7b8a',1,'dftfe::basis::FEBasisOperations']]], + ['npool_39',['npool',['../classdftfe_1_1dft_parameters.html#a29bf831f7e14f799077431ce4a759e7d',1,'dftfe::dftParameters']]], + ['nquadspercell_40',['nQuadsPerCell',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a11e568f61bd04e68e6cc855ca9f446cd',1,'dftfe::basis::FEBasisOperations']]], + ['nrelaventdofs_41',['nRelaventDofs',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aa3a9e40ced6c16218300fd906d89bf6c',1,'dftfe::basis::FEBasisOperations']]], + ['nscf_42',['nscf',['../classdftfe_1_1dft_class.html#a6154e277f8cd6b1fb06f0c7efde6a9cf',1,'dftfe::dftClass']]], + ['nudgedelasticbandclass_43',['nudgedElasticBandClass',['../classdftfe_1_1nudged_elastic_band_class.html',1,'dftfe::nudgedElasticBandClass'],['../classdftfe_1_1nudged_elastic_band_class.html#a7d68888d8bc88ed6efdd698683c92b34',1,'dftfe::nudgedElasticBandClass::nudgedElasticBandClass()']]], + ['nudgedelasticbandclass_2eh_44',['nudgedElasticBandClass.h',['../nudged_elastic_band_class_8h.html',1,'']]], + ['number_45',['number',['../namespacedftfe_1_1data_types.html#ae16b50f6fbf917006c2e4078cf81e274',1,'dftfe::dataTypes']]], + ['numbereigenvalues_46',['numberEigenValues',['../classdftfe_1_1dft_parameters.html#a6425e76c6b0e545e8bf57e8a31440f0e',1,'dftfe::dftParameters']]], + ['numberfp32_47',['numberFP32',['../namespacedftfe_1_1data_types.html#afe5d7e0a13ee0a005bffd9a3529b16ea',1,'dftfe::dataTypes']]], + ['numberfp32valuetype_48',['numberFP32ValueType',['../namespacedftfe_1_1data_types.html#a97b0ce72cb321e15de84ee86399193a4',1,'dftfe::dataTypes']]], + ['numberofimages_49',['numberOfImages',['../classdftfe_1_1run_parameters.html#a7d32818828532bb9bdf809cd2a58a9e8',1,'dftfe::runParameters']]], + ['numberstepsbomd_50',['numberStepsBOMD',['../classdftfe_1_1dft_parameters.html#a05c417dbf391c3b4c5bccf7f40a3bdd5',1,'dftfe::dftParameters']]], + ['numbervaluetype_51',['numberValueType',['../namespacedftfe_1_1data_types.html#a519f5c925e03c2b044becee02e7aff4b',1,'dftfe::dataTypes']]], + ['numberwavefunctionsforestimate_52',['numberWaveFunctionsForEstimate',['../classdftfe_1_1dft_parameters.html#ae5083a2788335f4c48f4bc09a8bbacf9',1,'dftfe::dftParameters']]], + ['numcorewfcrr_53',['numCoreWfcRR',['../classdftfe_1_1dft_parameters.html#a0ce81552be8483b510660ee587031991',1,'dftfe::dftParameters']]], + ['numcorewfcxthx_54',['numCoreWfcXtHX',['../classdftfe_1_1dft_parameters.html#af66c14504fbf271cc6f1a63ed1f4d84f',1,'dftfe::dftParameters']]], + ['numelectrons_55',['numElectrons',['../classdftfe_1_1dft_class.html#af71ecf376d25fdb65bfa47b974b70426',1,'dftfe::dftClass']]], + ['numelectronsdown_56',['numElectronsDown',['../classdftfe_1_1dft_class.html#ad647b65f778c1ae924ba84eba0aa512b',1,'dftfe::dftClass']]], + ['numelectronsup_57',['numElectronsUp',['../classdftfe_1_1dft_class.html#ac46a30a04f7a7056b3b7227367d9d0fb',1,'dftfe::dftClass']]], + ['numlevels_58',['numLevels',['../classdftfe_1_1dft_class.html#aae70859e90cbbab668fdba9207ced669',1,'dftfe::dftClass::numLevels'],['../classdftfe_1_1dft_parameters.html#a52b4e2872fb286473ac4aac2c2bfbdbb',1,'dftfe::dftParameters::numLevels']]], + ['numpass_59',['numPass',['../classdftfe_1_1dft_parameters.html#a0412a932e3e3cb5c96df987d6373aee0',1,'dftfe::dftParameters']]], + ['numroc_5f_60',['numroc_',['../namespacedftfe.html#ab4551d8b31f0faf036189b071760a55e',1,'dftfe']]], + ['numscfiterations_61',['numSCFIterations',['../classdftfe_1_1dft_parameters.html#ab1ea947fa06a01a3a2a0823c02393523',1,'dftfe::dftParameters']]], + ['numsymm_62',['numSymm',['../classdftfe_1_1symmetry_class.html#ae61cbeff4f8597b5a4ba8b163c44256a',1,'dftfe::symmetryClass']]], + ['numsymmundergroup_63',['numSymmUnderGroup',['../classdftfe_1_1symmetry_class.html#a415d0dafdf0a0c9f4ce99b79c2064aa8',1,'dftfe::symmetryClass']]], + ['numvectors_64',['numVectors',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#af0e04101e332772819e1860193c549f6',1,'dftfe::linearAlgebra::MultiVector']]] +]; diff --git a/search/all_f.js b/search/all_f.js new file mode 100644 index 000000000..7c861c625 --- /dev/null +++ b/search/all_f.js @@ -0,0 +1,37 @@ +var searchData= +[ + ['o_0',['O',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a33d1ebff1bf95c193da512f5a86a1495',1,'dftfe::LAPACKSupport']]], + ['offsetflagx_1',['offsetFlagX',['../classdftfe_1_1dft_parameters.html#a3819cddd01c3064106f811c13cecd2c6',1,'dftfe::dftParameters']]], + ['offsetflagy_2',['offsetFlagY',['../classdftfe_1_1dft_parameters.html#ac2ab80f8fb177194a6ca51d04b856fb7',1,'dftfe::dftParameters']]], + ['offsetflagz_3',['offsetFlagZ',['../classdftfe_1_1dft_parameters.html#ad91eb278f205313b5b3918cef6531703',1,'dftfe::dftParameters']]], + ['omp_5fget_5fthread_5fnum_4',['omp_get_thread_num',['../oncv_class_8h.html#a889ec205c635b219999c761b28cc39ba',1,'oncvClass.h']]], + ['oncvclass_5',['oncvClass',['../classdftfe_1_1oncv_class.html',1,'dftfe::oncvClass< ValueType, memorySpace >'],['../classdftfe_1_1oncv_class.html#a3c6f58b62a3100ebd6e3e0978f5bf2df',1,'dftfe::oncvClass::oncvClass()']]], + ['oncvclass_2eh_6',['oncvClass.h',['../oncv_class_8h.html',1,'']]], + ['one_7',['one',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a90d2387cf428fc1e8c4c17a567551891',1,'dftfe::LAPACKSupport']]], + ['operator_21_3d_8',['operator!=',['../classdftfe_1_1dealii_linear_solver_problem.html#ab505308c2a47b84efddc2298f5d0b141',1,'dftfe::dealiiLinearSolverProblem::operator!=()'],['../classdftfe_1_1kerker_solver_problem.html#ab434f839021844216ceaa1bce2d84bf4',1,'dftfe::kerkerSolverProblem::operator!=()'],['../classdftfe_1_1poisson_solver_problem.html#aa4252fce0d7ccd44f2220aef7a217521',1,'dftfe::poissonSolverProblem::operator!=()']]], + ['operator_26_9',['operator&',['../namespacedftfe_1_1basis.html#a968aecdead1f0467074cacbbedc3492c',1,'dftfe::basis']]], + ['operator_26_3d_10',['operator&=',['../namespacedftfe_1_1basis.html#aae43e26dc49262b93899c9a9edccc420',1,'dftfe::basis']]], + ['operator_2eh_11',['operator.h',['../operator_8h.html',1,'']]], + ['operator_3d_12',['operator=',['../classdftfe_1_1utils_1_1_memory_storage.html#ac4e3dd36624251164ff929fe6e67a71b',1,'dftfe::utils::MemoryStorage::operator=(const MemoryStorage &rhs)'],['../classdftfe_1_1utils_1_1_memory_storage.html#a0c57b7d1e9e4c9f95c3dbdd73fff9f0a',1,'dftfe::utils::MemoryStorage::operator=(MemoryStorage &&rhs) noexcept'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#add96302dfff873a70466a452066fbad1',1,'dftfe::linearAlgebra::MultiVector::operator=(const MultiVector &u)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#af882bffcec0872a8b97ab7530eaabeb3',1,'dftfe::linearAlgebra::MultiVector::operator=(MultiVector &&u)']]], + ['operator_3d_3d_13',['operator==',['../classdftfe_1_1utils_1_1_optimized_index_set.html#a53dfa9d6fd66e0ca486d2d7158ccc2ef',1,'dftfe::utils::OptimizedIndexSet']]], + ['operator_5b_5d_14',['operator[]',['../classdftfe_1_1utils_1_1_memory_storage.html#abea95dd493fb885a5e5cc04d4dcb6a9a',1,'dftfe::utils::MemoryStorage::operator[](std::size_t i)'],['../classdftfe_1_1utils_1_1_memory_storage.html#a67dd18067d1916d6cbb2f43e188854e8',1,'dftfe::utils::MemoryStorage::operator[](std::size_t i) const']]], + ['operatordftclass_15',['operatorDFTClass',['../classdftfe_1_1operator_d_f_t_class.html',1,'dftfe']]], + ['operator_7c_16',['operator|',['../namespacedftfe_1_1basis.html#a1e087bcab2de5ca7747d1d306c752a29',1,'dftfe::basis']]], + ['operator_7c_3d_17',['operator|=',['../namespacedftfe_1_1basis.html#a2cc9c04d0f959faadd30c609ced094f6',1,'dftfe::basis']]], + ['optimizationmode_18',['optimizationMode',['../classdftfe_1_1dft_parameters.html#ad67a16954e339f095f4ed40433a6b4d7',1,'dftfe::dftParameters']]], + ['optimizationsolver_19',['optimizationSolver',['../classdftfe_1_1run_parameters.html#a48f7a2b6445cb1f82a40c7ce86b9a28a',1,'dftfe::runParameters']]], + ['optimizedindexset_20',['OptimizedIndexSet',['../classdftfe_1_1utils_1_1_optimized_index_set.html',1,'dftfe::utils::OptimizedIndexSet< T >'],['../classdftfe_1_1utils_1_1_optimized_index_set.html#ae1cdc43da5fc7bfc110dde70d2833d53',1,'dftfe::utils::OptimizedIndexSet::OptimizedIndexSet()']]], + ['optimizedindexset_2eh_21',['OptimizedIndexSet.h',['../_optimized_index_set_8h.html',1,'']]], + ['optimizedindexset_3c_20global_5fsize_5ftype_20_3e_22',['OptimizedIndexSet< global_size_type >',['../classdftfe_1_1utils_1_1_optimized_index_set.html',1,'dftfe::utils']]], + ['optimizermaxionupdatestep_23',['optimizermaxIonUpdateStep',['../classdftfe_1_1run_parameters.html#afacaaa04872f004f99a13f2b772aabcc',1,'dftfe::runParameters']]], + ['orthogtype_24',['orthogType',['../classdftfe_1_1dft_parameters.html#a10fe92305b1d87156a56e2304b895e81',1,'dftfe::dftParameters']]], + ['outeratomballradius_25',['outerAtomBallRadius',['../classdftfe_1_1dft_parameters.html#a84bc480b8838d8570cc6d96cba28c3e2',1,'dftfe::dftParameters']]], + ['outervalues_26',['outerValues',['../classdftfe_1_1dft_class.html#ac735e02b3795d32f1eace4ed332dff19',1,'dftfe::dftClass']]], + ['outofrangeerror_27',['OutOfRangeError',['../namespacedftfe_1_1utils.html#affdcb5d1a7aac285a5f6b3139b8da32c',1,'dftfe::utils']]], + ['outputdensity_28',['outputDensity',['../classdftfe_1_1dft_class.html#a322b869a95fb23bac01545b9674e6231',1,'dftfe::dftClass']]], + ['outputwfc_29',['outputWfc',['../classdftfe_1_1dft_class.html#aa98dec6aabc64f3712e1b95efe685928',1,'dftfe::dftClass']]], + ['overflowerror_30',['OverflowError',['../namespacedftfe_1_1utils.html#a22befb8b6cd118fe3528b83c869767e8',1,'dftfe::utils']]], + ['overlapcomputecommuncheby_31',['overlapComputeCommunCheby',['../classdftfe_1_1dft_parameters.html#a63b367f44db2c5ea013f5305b399528a',1,'dftfe::dftParameters']]], + ['overlapcomputecommunorthorr_32',['overlapComputeCommunOrthoRR',['../classdftfe_1_1dft_parameters.html#afdd820ba75e3ca5eedb81e566c389175',1,'dftfe::dftParameters']]], + ['ownerprocglobal_33',['ownerProcGlobal',['../classdftfe_1_1symmetry_class.html#ab43f2d1d1e5e559c30e345ce42c8d2f2',1,'dftfe::symmetryClass']]] +]; diff --git a/search/classes_0.js b/search/classes_0.js new file mode 100644 index 000000000..5c63a59de --- /dev/null +++ b/search/classes_0.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['atomcenteredsphericalfunctionbase_0',['AtomCenteredSphericalFunctionBase',['../classdftfe_1_1_atom_centered_spherical_function_base.html',1,'dftfe']]], + ['atomcenteredsphericalfunctionbessel_1',['AtomCenteredSphericalFunctionBessel',['../classdftfe_1_1_atom_centered_spherical_function_bessel.html',1,'dftfe']]], + ['atomcenteredsphericalfunctioncontainer_2',['AtomCenteredSphericalFunctionContainer',['../classdftfe_1_1_atom_centered_spherical_function_container.html',1,'dftfe']]], + ['atomcenteredsphericalfunctioncoredensityspline_3',['AtomCenteredSphericalFunctionCoreDensitySpline',['../classdftfe_1_1_atom_centered_spherical_function_core_density_spline.html',1,'dftfe']]], + ['atomcenteredsphericalfunctiongaussian_4',['AtomCenteredSphericalFunctionGaussian',['../classdftfe_1_1_atom_centered_spherical_function_gaussian.html',1,'dftfe']]], + ['atomcenteredsphericalfunctionlocalpotentialspline_5',['AtomCenteredSphericalFunctionLocalPotentialSpline',['../classdftfe_1_1_atom_centered_spherical_function_local_potential_spline.html',1,'dftfe']]], + ['atomcenteredsphericalfunctionprojectorspline_6',['AtomCenteredSphericalFunctionProjectorSpline',['../classdftfe_1_1_atom_centered_spherical_function_projector_spline.html',1,'dftfe']]], + ['atomcenteredsphericalfunctionsinc_7',['AtomCenteredSphericalFunctionSinc',['../classdftfe_1_1_atom_centered_spherical_function_sinc.html',1,'dftfe']]], + ['atomcenteredsphericalfunctionspline_8',['AtomCenteredSphericalFunctionSpline',['../classdftfe_1_1_atom_centered_spherical_function_spline.html',1,'dftfe']]], + ['atomcenteredsphericalfunctionvalencedensityspline_9',['AtomCenteredSphericalFunctionValenceDensitySpline',['../classdftfe_1_1_atom_centered_spherical_function_valence_density_spline.html',1,'dftfe']]], + ['atomcenteredsphericalfunctionzoverr_10',['AtomCenteredSphericalFunctionZOverR',['../classdftfe_1_1_atom_centered_spherical_function_z_over_r.html',1,'dftfe']]], + ['atomiccenterednonlocaloperator_11',['AtomicCenteredNonLocalOperator',['../classdftfe_1_1_atomic_centered_non_local_operator.html',1,'dftfe']]], + ['atompseudowavefunctions_12',['AtomPseudoWavefunctions',['../classdftfe_1_1_atom_pseudo_wavefunctions.html',1,'dftfe']]] +]; diff --git a/search/classes_1.js b/search/classes_1.js new file mode 100644 index 000000000..7a79e12df --- /dev/null +++ b/search/classes_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['bfgsnonlinearsolver_0',['BFGSNonLinearSolver',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html',1,'dftfe']]], + ['blaswrapper_1',['BLASWrapper',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper.html',1,'dftfe::linearAlgebra']]], + ['blaswrapper_3c_20dftfe_3a_3autils_3a_3amemoryspace_3a_3ahost_20_3e_2',['BLASWrapper< dftfe::utils::MemorySpace::HOST >',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html',1,'dftfe::linearAlgebra']]] +]; diff --git a/search/classes_10.js b/search/classes_10.js new file mode 100644 index 000000000..4a74f9850 --- /dev/null +++ b/search/classes_10.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['triangulationmanager_0',['triangulationManager',['../classdftfe_1_1triangulation_manager.html',1,'dftfe']]] +]; diff --git a/search/classes_11.js b/search/classes_11.js new file mode 100644 index 000000000..543fe3ede --- /dev/null +++ b/search/classes_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vselfbinsmanager_0',['vselfBinsManager',['../classdftfe_1_1vself_bins_manager.html',1,'dftfe']]] +]; diff --git a/search/classes_2.js b/search/classes_2.js new file mode 100644 index 000000000..3247d7a8b --- /dev/null +++ b/search/classes_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['cgprpnonlinearsolver_0',['cgPRPNonLinearSolver',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html',1,'dftfe']]], + ['chebyshevorthogonalizedsubspaceiterationsolver_1',['chebyshevOrthogonalizedSubspaceIterationSolver',['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html',1,'dftfe']]], + ['compositedata_2',['CompositeData',['../classdftfe_1_1dft_utils_1_1_composite_data.html',1,'dftfe::dftUtils']]], + ['constraintmatrixinfo_3',['constraintMatrixInfo',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html',1,'dftfe::dftUtils']]] +]; diff --git a/search/classes_3.js b/search/classes_3.js new file mode 100644 index 000000000..bb1350c0e --- /dev/null +++ b/search/classes_3.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['dealiilinearsolver_0',['dealiiLinearSolver',['../classdftfe_1_1dealii_linear_solver.html',1,'dftfe']]], + ['dealiilinearsolverproblem_1',['dealiiLinearSolverProblem',['../classdftfe_1_1dealii_linear_solver_problem.html',1,'dftfe']]], + ['dftbase_2',['dftBase',['../classdftfe_1_1dft_base.html',1,'dftfe']]], + ['dftclass_3',['dftClass',['../classdftfe_1_1dft_class.html',1,'dftfe']]], + ['dftfewrapper_4',['dftfeWrapper',['../classdftfe_1_1dftfe_wrapper.html',1,'dftfe']]], + ['dftparameters_5',['dftParameters',['../classdftfe_1_1dft_parameters.html',1,'dftfe']]], + ['dispersioncorrection_6',['dispersionCorrection',['../classdftfe_1_1dispersion_correction.html',1,'dftfe']]] +]; diff --git a/search/classes_4.js b/search/classes_4.js new file mode 100644 index 000000000..29d271691 --- /dev/null +++ b/search/classes_4.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['eigensolverclass_0',['eigenSolverClass',['../classdftfe_1_1eigen_solver_class.html',1,'dftfe']]], + ['element_1',['Element',['../structdftfe_1_1pseudo_utils_1_1_element.html',1,'dftfe::pseudoUtils']]], + ['elpascalamanager_2',['elpaScalaManager',['../classdftfe_1_1elpa_scala_manager.html',1,'dftfe']]], + ['energycalculator_3',['energyCalculator',['../classdftfe_1_1energy_calculator.html',1,'dftfe']]], + ['excdensitybaseclass_4',['excDensityBaseClass',['../classdftfe_1_1exc_density_base_class.html',1,'dftfe']]], + ['excdensityggaclass_5',['excDensityGGAClass',['../classdftfe_1_1exc_density_g_g_a_class.html',1,'dftfe']]], + ['excdensityldaclass_6',['excDensityLDAClass',['../classdftfe_1_1exc_density_l_d_a_class.html',1,'dftfe']]], + ['excmanager_7',['excManager',['../classdftfe_1_1exc_manager.html',1,'dftfe']]], + ['excwavefunctionbaseclass_8',['excWavefunctionBaseClass',['../classdftfe_1_1exc_wavefunction_base_class.html',1,'dftfe']]], + ['excwavefunctionnoneclass_9',['excWavefunctionNoneClass',['../classdftfe_1_1exc_wavefunction_none_class.html',1,'dftfe']]] +]; diff --git a/search/classes_5.js b/search/classes_5.js new file mode 100644 index 000000000..38afbc171 --- /dev/null +++ b/search/classes_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['febasisoperations_0',['FEBasisOperations',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html',1,'dftfe::basis']]], + ['forceclass_1',['forceClass',['../classdftfe_1_1force_class.html',1,'dftfe']]] +]; diff --git a/search/classes_6.js b/search/classes_6.js new file mode 100644 index 000000000..003647f65 --- /dev/null +++ b/search/classes_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['geometryoptimizationclass_0',['geometryOptimizationClass',['../classdftfe_1_1geometry_optimization_class.html',1,'dftfe']]], + ['geooptcell_1',['geoOptCell',['../classdftfe_1_1geo_opt_cell.html',1,'dftfe']]], + ['geooption_2',['geoOptIon',['../classdftfe_1_1geo_opt_ion.html',1,'dftfe']]] +]; diff --git a/search/classes_7.js b/search/classes_7.js new file mode 100644 index 000000000..cc3204669 --- /dev/null +++ b/search/classes_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['kerkersolverproblem_0',['kerkerSolverProblem',['../classdftfe_1_1kerker_solver_problem.html',1,'dftfe']]], + ['kohnshamhamiltonianoperator_1',['KohnShamHamiltonianOperator',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html',1,'dftfe']]] +]; diff --git a/search/classes_8.js b/search/classes_8.js new file mode 100644 index 000000000..73e2cff73 --- /dev/null +++ b/search/classes_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['lbfgsnonlinearsolver_0',['LBFGSNonLinearSolver',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html',1,'dftfe']]], + ['linearsolver_1',['linearSolver',['../classdftfe_1_1linear_solver.html',1,'dftfe']]] +]; diff --git a/search/classes_9.js b/search/classes_9.js new file mode 100644 index 000000000..6d761d022 --- /dev/null +++ b/search/classes_9.js @@ -0,0 +1,32 @@ +var searchData= +[ + ['memorymanager_0',['MemoryManager',['../classdftfe_1_1utils_1_1_memory_manager.html',1,'dftfe::utils']]], + ['memorymanager_3c_20valuetype_2c_20memoryspace_3a_3ahost_20_3e_1',['MemoryManager< ValueType, MemorySpace::HOST >',['../classdftfe_1_1utils_1_1_memory_manager_3_01_value_type_00_01_memory_space_1_1_h_o_s_t_01_4.html',1,'dftfe::utils']]], + ['memorystorage_2',['MemoryStorage',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20datatypes_3a_3anumber_2c_20dftfe_3a_3autils_3a_3amemoryspace_3a_3ahost_20_3e_3',['MemoryStorage< dataTypes::number, dftfe::utils::MemorySpace::HOST >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20datatypes_3a_3anumber_2c_20memoryspace_20_3e_4',['MemoryStorage< dataTypes::number, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20dftfe_3a_3aglobal_5fsize_5ftype_2c_20dftfe_3a_3autils_3a_3amemoryspace_3a_3ahost_20_3e_5',['MemoryStorage< dftfe::global_size_type, dftfe::utils::MemorySpace::HOST >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20dftfe_3a_3aglobal_5fsize_5ftype_2c_20memoryspace_20_3e_6',['MemoryStorage< dftfe::global_size_type, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20double_2c_20dftfe_3a_3autils_3a_3amemoryspace_3a_3ahost_20_3e_7',['MemoryStorage< double, dftfe::utils::MemorySpace::HOST >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20double_2c_20memoryspace_20_3e_8',['MemoryStorage< double, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20float_2c_20memoryspace_20_3e_9',['MemoryStorage< float, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20size_5ftype_2c_20memoryspace_20_3e_10',['MemoryStorage< size_type, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20typename_20dftfe_3a_3autils_3a_3ampi_3a_3asingleprectype_3c_20valuetype_20_3e_3a_3atype_2c_20memoryspace_20_3e_11',['MemoryStorage< typename dftfe::utils::mpi::singlePrecType< ValueType >::type, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20valuetypebasiscoeff_2c_20memoryspace_20_3e_12',['MemoryStorage< ValueTypeBasisCoeff, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorystorage_3c_20valuetypebasisdata_2c_20memoryspace_20_3e_13',['MemoryStorage< ValueTypeBasisData, memorySpace >',['../classdftfe_1_1utils_1_1_memory_storage.html',1,'dftfe::utils']]], + ['memorytransfer_14',['MemoryTransfer',['../classdftfe_1_1utils_1_1_memory_transfer.html',1,'dftfe::utils']]], + ['memorytransfer_3c_20memoryspace_3a_3ahost_2c_20memoryspace_3a_3ahost_20_3e_15',['MemoryTransfer< MemorySpace::HOST, MemorySpace::HOST >',['../classdftfe_1_1utils_1_1_memory_transfer_3_01_memory_space_1_1_h_o_s_t_00_01_memory_space_1_1_h_o_s_t_01_4.html',1,'dftfe::utils']]], + ['meshmovementaffinetransform_16',['meshMovementAffineTransform',['../classdftfe_1_1mesh_movement_affine_transform.html',1,'dftfe']]], + ['meshmovementclass_17',['meshMovementClass',['../classdftfe_1_1mesh_movement_class.html',1,'dftfe']]], + ['meshmovementgaussianclass_18',['meshMovementGaussianClass',['../classdftfe_1_1mesh_movement_gaussian_class.html',1,'dftfe']]], + ['mixingscheme_19',['MixingScheme',['../classdftfe_1_1_mixing_scheme.html',1,'dftfe']]], + ['moleculardynamicsclass_20',['molecularDynamicsClass',['../classdftfe_1_1molecular_dynamics_class.html',1,'dftfe']]], + ['mpicommunicatorp2p_21',['MPICommunicatorP2P',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html',1,'dftfe::utils::mpi']]], + ['mpicommunicatorp2pkernels_22',['MPICommunicatorP2PKernels',['../classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels.html',1,'dftfe::utils']]], + ['mpipatternp2p_23',['MPIPatternP2P',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html',1,'dftfe::utils::mpi']]], + ['mpirequestersbase_24',['MPIRequestersBase',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base.html',1,'dftfe::utils::mpi']]], + ['mpirequestersnbx_25',['MPIRequestersNBX',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html',1,'dftfe::utils::mpi']]], + ['mpiwriteonfile_26',['MPIWriteOnFile',['../classdftfe_1_1dft_utils_1_1_m_p_i_write_on_file.html',1,'dftfe::dftUtils']]], + ['multivector_27',['MultiVector',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html',1,'dftfe::linearAlgebra']]], + ['multivector_3c_20datatypes_3a_3anumber_2c_20memoryspace_20_3e_28',['MultiVector< dataTypes::number, memorySpace >',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html',1,'dftfe::linearAlgebra']]] +]; diff --git a/search/classes_a.js b/search/classes_a.js new file mode 100644 index 000000000..158f665c2 --- /dev/null +++ b/search/classes_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['nonlinearsolver_0',['nonLinearSolver',['../classdftfe_1_1non_linear_solver.html',1,'dftfe']]], + ['nonlinearsolverproblem_1',['nonlinearSolverProblem',['../classdftfe_1_1nonlinear_solver_problem.html',1,'dftfe']]], + ['nudgedelasticbandclass_2',['nudgedElasticBandClass',['../classdftfe_1_1nudged_elastic_band_class.html',1,'dftfe']]] +]; diff --git a/search/classes_b.js b/search/classes_b.js new file mode 100644 index 000000000..65b64c723 --- /dev/null +++ b/search/classes_b.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['oncvclass_0',['oncvClass',['../classdftfe_1_1oncv_class.html',1,'dftfe']]], + ['operatordftclass_1',['operatorDFTClass',['../classdftfe_1_1operator_d_f_t_class.html',1,'dftfe']]], + ['optimizedindexset_2',['OptimizedIndexSet',['../classdftfe_1_1utils_1_1_optimized_index_set.html',1,'dftfe::utils']]], + ['optimizedindexset_3c_20global_5fsize_5ftype_20_3e_3',['OptimizedIndexSet< global_size_type >',['../classdftfe_1_1utils_1_1_optimized_index_set.html',1,'dftfe::utils']]] +]; diff --git a/search/classes_c.js b/search/classes_c.js new file mode 100644 index 000000000..187e9c899 --- /dev/null +++ b/search/classes_c.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['periodictable_0',['PeriodicTable',['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html',1,'dftfe::pseudoUtils']]], + ['poissonsolverproblem_1',['poissonSolverProblem',['../classdftfe_1_1poisson_solver_problem.html',1,'dftfe']]], + ['pool_2',['Pool',['../classdftfe_1_1dft_utils_1_1_pool.html',1,'dftfe::dftUtils']]], + ['processgrid_3',['ProcessGrid',['../classdftfe_1_1_process_grid.html',1,'dftfe']]] +]; diff --git a/search/classes_d.js b/search/classes_d.js new file mode 100644 index 000000000..fca506a4c --- /dev/null +++ b/search/classes_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['quaddatacompositewrite_0',['QuadDataCompositeWrite',['../classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html',1,'dftfe::dftUtils']]] +]; diff --git a/search/classes_e.js b/search/classes_e.js new file mode 100644 index 000000000..d7e6eb347 --- /dev/null +++ b/search/classes_e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['runparameters_0',['runParameters',['../classdftfe_1_1run_parameters.html',1,'dftfe']]] +]; diff --git a/search/classes_f.js b/search/classes_f.js new file mode 100644 index 000000000..fa805af44 --- /dev/null +++ b/search/classes_f.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['scalapackmatrix_0',['ScaLAPACKMatrix',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html',1,'dftfe']]], + ['singleprectype_1',['singlePrecType',['../structdftfe_1_1utils_1_1mpi_1_1single_prec_type.html',1,'dftfe::utils::mpi']]], + ['singleprectype_3c_20double_20_3e_2',['singlePrecType< double >',['../structdftfe_1_1utils_1_1mpi_1_1single_prec_type_3_01double_01_4.html',1,'dftfe::utils::mpi']]], + ['singleprectype_3c_20std_3a_3acomplex_3c_20double_20_3e_20_3e_3',['singlePrecType< std::complex< double > >',['../structdftfe_1_1utils_1_1mpi_1_1single_prec_type_3_01std_1_1complex_3_01double_01_4_01_4.html',1,'dftfe::utils::mpi']]], + ['symmetryclass_4',['symmetryClass',['../classdftfe_1_1symmetry_class.html',1,'dftfe']]] +]; diff --git a/search/close.svg b/search/close.svg new file mode 100644 index 000000000..337d6cc13 --- /dev/null +++ b/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/search/defines_0.js b/search/defines_0.js new file mode 100644 index 000000000..0626f19f9 --- /dev/null +++ b/search/defines_0.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['dealiilinearsolver_5fh_5f_0',['dealiiLinearSolver_H_',['../dealii_linear_solver_8h.html#aa5b9cc07939b7ae9abf1fcfd3a86c7a9',1,'dealiiLinearSolver.h']]], + ['device_5fapi_5fcheck_1',['DEVICE_API_CHECK',['../_device_exceptions_8cu_8h.html#a7af4832fd5ec8debc6777849ce590049',1,'DEVICE_API_CHECK: DeviceExceptions.cu.h'],['../_device_exceptions_8hip_8h.html#a7af4832fd5ec8debc6777849ce590049',1,'DEVICE_API_CHECK: DeviceExceptions.hip.h']]], + ['deviceblas_5fapi_5fcheck_2',['DEVICEBLAS_API_CHECK',['../_device_exceptions_8cu_8h.html#a1b7519f5a5552d276aaf023cab03577f',1,'DEVICEBLAS_API_CHECK: DeviceExceptions.cu.h'],['../_device_exceptions_8hip_8h.html#a1b7519f5a5552d276aaf023cab03577f',1,'DEVICEBLAS_API_CHECK: DeviceExceptions.hip.h']]], + ['dftfe_5fassert_3',['DFTFE_Assert',['../_exceptions_8h.html#a62be5192be4135c752f0522f127bd3b8',1,'Exceptions.h']]], + ['dftfe_5fassertwithmsg_4',['DFTFE_AssertWithMsg',['../_exceptions_8h.html#a2530a17dcdf9fe37ee288cf3f887e644',1,'Exceptions.h']]], + ['dispersioncorrection_5fh_5f_5',['dispersionCorrection_H_',['../dftd_8h.html#aa7b569d42313e3af67e206f868669dba',1,'dftd.h']]] +]; diff --git a/search/defines_1.js b/search/defines_1.js new file mode 100644 index 000000000..21f5cdbeb --- /dev/null +++ b/search/defines_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['mpicheck_0',['MPICHECK',['../_exceptions_8h.html#a788dc5a587af46da3f3779520bd150c7',1,'Exceptions.h']]] +]; diff --git a/search/defines_2.js b/search/defines_2.js new file mode 100644 index 000000000..7f757dab9 --- /dev/null +++ b/search/defines_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['omp_5fget_5fthread_5fnum_0',['omp_get_thread_num',['../oncv_class_8h.html#a889ec205c635b219999c761b28cc39ba',1,'oncvClass.h']]] +]; diff --git a/search/enums_0.js b/search/enums_0.js new file mode 100644 index 000000000..0890cb8cb --- /dev/null +++ b/search/enums_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['communicationprecision_0',['communicationPrecision',['../namespacedftfe_1_1utils_1_1mpi.html#a0210bc35f26587376caf48af1eeb137a',1,'dftfe::utils::mpi']]], + ['communicationprotocol_1',['communicationProtocol',['../namespacedftfe_1_1utils_1_1mpi.html#aa9619263248b5e1feb33f75c9f6d911b',1,'dftfe::utils::mpi']]], + ['couplingstructure_2',['CouplingStructure',['../namespacedftfe.html#a45fd2d39284f0103960f3dd8b7e6bb9f',1,'dftfe']]] +]; diff --git a/search/enums_1.js b/search/enums_1.js new file mode 100644 index 000000000..f2bf5ff9f --- /dev/null +++ b/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['densityfamilytype_0',['densityFamilyType',['../namespacedftfe.html#a84a62c8946b5674c77a7d7d55de1be4b',1,'dftfe']]] +]; diff --git a/search/enums_2.js b/search/enums_2.js new file mode 100644 index 000000000..345225328 --- /dev/null +++ b/search/enums_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['excdensitypositivitychecktypes_0',['excDensityPositivityCheckTypes',['../namespacedftfe.html#a954ce72efb7db01d751b54db20ccf00d',1,'dftfe']]] +]; diff --git a/search/enums_3.js b/search/enums_3.js new file mode 100644 index 000000000..ad1f5d730 --- /dev/null +++ b/search/enums_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fxcoutputdataattributes_0',['fxcOutputDataAttributes',['../namespacedftfe.html#a4fa68bb7b2c5cb5edbe73ced50300475',1,'dftfe']]] +]; diff --git a/search/enums_4.js b/search/enums_4.js new file mode 100644 index 000000000..3792901cf --- /dev/null +++ b/search/enums_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['memoryspace_0',['MemorySpace',['../namespacedftfe_1_1utils.html#a70cf7f171e9701571a428ad0fa1bf341',1,'dftfe::utils']]], + ['mixingvariable_1',['mixingVariable',['../namespacedftfe.html#a55e98bd838d76f5c67d7d7bc1cccee84',1,'dftfe']]], + ['mpitags_2',['MPITags',['../namespacedftfe_1_1utils_1_1mpi.html#a0de142e88f623d0095015e05b96808f5',1,'dftfe::utils::mpi']]] +]; diff --git a/search/enums_5.js b/search/enums_5.js new file mode 100644 index 000000000..e59a8f294 --- /dev/null +++ b/search/enums_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['property_0',['Property',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#af3c45dcea64890f047b4dca87fdde9ac',1,'dftfe::LAPACKSupport']]] +]; diff --git a/search/enums_6.js b/search/enums_6.js new file mode 100644 index 000000000..8bbe9364d --- /dev/null +++ b/search/enums_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['returnvaluetype_0',['ReturnValueType',['../classdftfe_1_1eigen_solver_class.html#a9c442ebbb90a179cba7e4889d7fdd700',1,'dftfe::eigenSolverClass::ReturnValueType'],['../classdftfe_1_1non_linear_solver.html#ae0e20e973c1797bd9ea9d06fb2aff9e7',1,'dftfe::nonLinearSolver::ReturnValueType']]], + ['rhodataattributes_1',['rhoDataAttributes',['../namespacedftfe.html#aca06a56192ad7c2be3b45fbddef239a7',1,'dftfe']]] +]; diff --git a/search/enums_7.js b/search/enums_7.js new file mode 100644 index 000000000..4ca888efd --- /dev/null +++ b/search/enums_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['solvertype_0',['solverType',['../classdftfe_1_1dealii_linear_solver.html#a34362ec759485d82dd86681c37130bc2',1,'dftfe::dealiiLinearSolver']]], + ['state_1',['State',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06',1,'dftfe::LAPACKSupport']]] +]; diff --git a/search/enums_8.js b/search/enums_8.js new file mode 100644 index 000000000..f18ff8073 --- /dev/null +++ b/search/enums_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['updateflags_0',['UpdateFlags',['../namespacedftfe_1_1basis.html#a59b594d5c0c4deefb65e504b45207898',1,'dftfe::basis']]] +]; diff --git a/search/enums_9.js b/search/enums_9.js new file mode 100644 index 000000000..1771a1e14 --- /dev/null +++ b/search/enums_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['veffoutputdataattributes_0',['VeffOutputDataAttributes',['../namespacedftfe.html#a1cf71a04b97ce9006b74b518c985238e',1,'dftfe']]] +]; diff --git a/search/enums_a.js b/search/enums_a.js new file mode 100644 index 000000000..3ace2d25d --- /dev/null +++ b/search/enums_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['wavefunctionfamilytype_0',['wavefunctionFamilyType',['../namespacedftfe.html#aec9f58557c36d1bd23430bc23568c800',1,'dftfe']]] +]; diff --git a/search/enumvalues_0.js b/search/enumvalues_0.js new file mode 100644 index 000000000..ff67026ad --- /dev/null +++ b/search/enumvalues_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['blockdiagonal_0',['blockDiagonal',['../namespacedftfe.html#a45fd2d39284f0103960f3dd8b7e6bb9fa47647a2acac5f8d4315bd358f9a7ea75',1,'dftfe']]] +]; diff --git a/search/enumvalues_1.js b/search/enumvalues_1.js new file mode 100644 index 000000000..b8b3aca86 --- /dev/null +++ b/search/enumvalues_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['cg_0',['CG',['../classdftfe_1_1dealii_linear_solver.html#a34362ec759485d82dd86681c37130bc2a883a7e31d18eec587cbd5c3b051458f9',1,'dftfe::dealiiLinearSolver']]], + ['cholesky_1',['cholesky',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06af99d44552a6f8796d2c9c44443c7aa0a',1,'dftfe::LAPACKSupport']]] +]; diff --git a/search/enumvalues_2.js b/search/enumvalues_2.js new file mode 100644 index 000000000..60314986f --- /dev/null +++ b/search/enumvalues_2.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['dense_0',['dense',['../namespacedftfe.html#a45fd2d39284f0103960f3dd8b7e6bb9fa0eccef1fe0100f85b12e6eabe08eaff6',1,'dftfe']]], + ['der2energywithdensity_1',['der2EnergyWithDensity',['../namespacedftfe.html#a4fa68bb7b2c5cb5edbe73ced50300475a6d74ee91791d12a6d1aec6e6d09d1188',1,'dftfe']]], + ['der2energywithdensitysigma_2',['der2EnergyWithDensitySigma',['../namespacedftfe.html#a4fa68bb7b2c5cb5edbe73ced50300475ae904f928241e314eb0dad7989f79d367',1,'dftfe']]], + ['der2energywithsigma_3',['der2EnergyWithSigma',['../namespacedftfe.html#a4fa68bb7b2c5cb5edbe73ced50300475ac3dc879502e28bc2e08c9c8c4915970d',1,'dftfe']]], + ['derenergywithdensity_4',['derEnergyWithDensity',['../namespacedftfe.html#a1cf71a04b97ce9006b74b518c985238ea7fa7b35baa55d216aa46c6862aa08d25',1,'dftfe']]], + ['derenergywithsigmagraddensity_5',['derEnergyWithSigmaGradDensity',['../namespacedftfe.html#a1cf71a04b97ce9006b74b518c985238eab0c327071aa3ac496cade6b801299895',1,'dftfe']]], + ['device_6',['DEVICE',['../namespacedftfe_1_1utils.html#a70cf7f171e9701571a428ad0fa1bf341ae10b6ab6a278644ce40631f62f360b6d',1,'dftfe::utils']]], + ['diagonal_7',['diagonal',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#af3c45dcea64890f047b4dca87fdde9aca87d8c9354f8b729ca3177c5cc8ab567d',1,'dftfe::LAPACKSupport::diagonal'],['../namespacedftfe.html#a45fd2d39284f0103960f3dd8b7e6bb9faa0e17e2709a0404ae3d7de03b8ea9093',1,'dftfe::diagonal']]], + ['dummy_5fmpi_5ftag_8',['DUMMY_MPI_TAG',['../namespacedftfe_1_1utils_1_1mpi.html#a0de142e88f623d0095015e05b96808f5aca6c6d77288fa7def2204455ba7a47fb',1,'dftfe::utils::mpi']]] +]; diff --git a/search/enumvalues_3.js b/search/enumvalues_3.js new file mode 100644 index 000000000..533c8686f --- /dev/null +++ b/search/enumvalues_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['eigenvalues_0',['eigenvalues',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06a119d774c7aeee24e20c41a0947abf1b3',1,'dftfe::LAPACKSupport']]], + ['exception_5fpositive_1',['EXCEPTION_POSITIVE',['../namespacedftfe.html#a954ce72efb7db01d751b54db20ccf00da3148d0720d4e71e66555af7d5c53dafa',1,'dftfe']]] +]; diff --git a/search/enumvalues_4.js b/search/enumvalues_4.js new file mode 100644 index 000000000..0b25cc416 --- /dev/null +++ b/search/enumvalues_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['failure_0',['FAILURE',['../classdftfe_1_1non_linear_solver.html#ae0e20e973c1797bd9ea9d06fb2aff9e7a611ee8ff0567d79090641884e465f110',1,'dftfe::nonLinearSolver::FAILURE'],['../classdftfe_1_1eigen_solver_class.html#a9c442ebbb90a179cba7e4889d7fdd700a36fc6065a3e970bc3e6b2e59da52bf2a',1,'dftfe::eigenSolverClass::FAILURE']]], + ['full_1',['full',['../namespacedftfe_1_1utils_1_1mpi.html#a0210bc35f26587376caf48af1eeb137aae9dc924f238fa6cc29465942875fe8f0',1,'dftfe::utils::mpi']]] +]; diff --git a/search/enumvalues_5.js b/search/enumvalues_5.js new file mode 100644 index 000000000..182556ebf --- /dev/null +++ b/search/enumvalues_5.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['general_0',['general',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#af3c45dcea64890f047b4dca87fdde9aca63df404db8dd3aaa130bb72937c25107',1,'dftfe::LAPACKSupport']]], + ['gga_1',['GGA',['../namespacedftfe.html#a84a62c8946b5674c77a7d7d55de1be4ba5d71fd547f20684c4f5463766c0f2b04',1,'dftfe']]], + ['gmres_2',['GMRES',['../classdftfe_1_1dealii_linear_solver.html#a34362ec759485d82dd86681c37130bc2a803ab643d1056d42f27c626f15168337',1,'dftfe::dealiiLinearSolver']]], + ['gradmagz_3',['gradMagZ',['../namespacedftfe.html#a55e98bd838d76f5c67d7d7bc1cccee84a44c91dc9989fbf97d16850c0584296ac',1,'dftfe']]], + ['gradrho_4',['gradRho',['../namespacedftfe.html#a55e98bd838d76f5c67d7d7bc1cccee84a7912d60631352c04fdc4ce430fa04e51',1,'dftfe']]] +]; diff --git a/search/enumvalues_6.js b/search/enumvalues_6.js new file mode 100644 index 000000000..7fe653db0 --- /dev/null +++ b/search/enumvalues_6.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['hermitian_0',['hermitian',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#af3c45dcea64890f047b4dca87fdde9acacb022b5e749ecd8aded585fa69365425',1,'dftfe::LAPACKSupport']]], + ['hessenberg_1',['hessenberg',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#af3c45dcea64890f047b4dca87fdde9aca7c62e84843fe08403ca442daf6d76bd3',1,'dftfe::LAPACKSupport']]], + ['host_2',['HOST',['../namespacedftfe_1_1utils.html#a70cf7f171e9701571a428ad0fa1bf341ab9361011891280a44d85b967739cc6a5',1,'dftfe::utils']]], + ['host_5fpinned_3',['HOST_PINNED',['../namespacedftfe_1_1utils.html#a70cf7f171e9701571a428ad0fa1bf341ac018c446839606eb033754630abaf31a',1,'dftfe::utils']]], + ['hubbard_4',['HUBBARD',['../namespacedftfe.html#aec9f58557c36d1bd23430bc23568c800a499b1eab54c72369d29e962da3c6e59c',1,'dftfe']]] +]; diff --git a/search/enumvalues_7.js b/search/enumvalues_7.js new file mode 100644 index 000000000..845aacc93 --- /dev/null +++ b/search/enumvalues_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['inverse_5fmatrix_0',['inverse_matrix',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06ac88730880d15c57da31f903746c1deec',1,'dftfe::LAPACKSupport']]], + ['inverse_5fsvd_1',['inverse_svd',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06ae4a1f4347768b85c5437bd74cd95cc18',1,'dftfe::LAPACKSupport']]] +]; diff --git a/search/enumvalues_8.js b/search/enumvalues_8.js new file mode 100644 index 000000000..b088f60f0 --- /dev/null +++ b/search/enumvalues_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['lda_0',['LDA',['../namespacedftfe.html#a84a62c8946b5674c77a7d7d55de1be4bad67a2b071440202a4daa9c2c8bd718c7',1,'dftfe']]], + ['linesearch_5ffailed_1',['LINESEARCH_FAILED',['../classdftfe_1_1non_linear_solver.html#ae0e20e973c1797bd9ea9d06fb2aff9e7a78ffc2d02aa9fcc54c3a28e2aab47728',1,'dftfe::nonLinearSolver']]], + ['lower_5ftriangular_2',['lower_triangular',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#af3c45dcea64890f047b4dca87fdde9aca5cabb2a79e8f6e35216f706d4d5b431a',1,'dftfe::LAPACKSupport']]], + ['lu_3',['lu',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06af7657b06d9b721ff8fb58812ac335cfa',1,'dftfe::LAPACKSupport']]] +]; diff --git a/search/enumvalues_9.js b/search/enumvalues_9.js new file mode 100644 index 000000000..b0a882ff0 --- /dev/null +++ b/search/enumvalues_9.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['magz_0',['magZ',['../namespacedftfe.html#a55e98bd838d76f5c67d7d7bc1cccee84a28a2a8c254011401c195a2b09542c18b',1,'dftfe']]], + ['make_5fpositive_1',['MAKE_POSITIVE',['../namespacedftfe.html#a954ce72efb7db01d751b54db20ccf00da42e202f66aeadd5ca1dbce7bb91b417f',1,'dftfe']]], + ['matrix_2',['matrix',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06a12b38d25fc5ef7deb25cd97a21bccc32',1,'dftfe::LAPACKSupport']]], + ['max_5fiter_5freached_3',['MAX_ITER_REACHED',['../classdftfe_1_1non_linear_solver.html#ae0e20e973c1797bd9ea9d06fb2aff9e7a364cd1ba783ad19d4ab2b2ef394de085',1,'dftfe::nonLinearSolver::MAX_ITER_REACHED'],['../classdftfe_1_1eigen_solver_class.html#a9c442ebbb90a179cba7e4889d7fdd700a166fdb12611b864605b50bcb6ef3c185',1,'dftfe::eigenSolverClass::MAX_ITER_REACHED']]], + ['mpi_5fp2p_5fcommunicator_5fgather_5ftag_4',['MPI_P2P_COMMUNICATOR_GATHER_TAG',['../namespacedftfe_1_1utils_1_1mpi.html#a0de142e88f623d0095015e05b96808f5a0f1d6e66b71390d689d95d500b20df13',1,'dftfe::utils::mpi']]], + ['mpi_5fp2p_5fcommunicator_5fscatter_5ftag_5',['MPI_P2P_COMMUNICATOR_SCATTER_TAG',['../namespacedftfe_1_1utils_1_1mpi.html#a0de142e88f623d0095015e05b96808f5af02ebfce5378ba6102d041f3b917247d',1,'dftfe::utils::mpi']]], + ['mpi_5fp2p_5fpattern_5ftag_6',['MPI_P2P_PATTERN_TAG',['../namespacedftfe_1_1utils_1_1mpi.html#a0de142e88f623d0095015e05b96808f5a64d36eadb62e3a3d13e9829ad3df9d93',1,'dftfe::utils::mpi']]], + ['mpi_5frequesters_5fnbx_5ftag_7',['MPI_REQUESTERS_NBX_TAG',['../namespacedftfe_1_1utils_1_1mpi.html#a0de142e88f623d0095015e05b96808f5a5c507bae40f4bed228358a245fad9c5d',1,'dftfe::utils::mpi']]], + ['mpidevice_8',['mpiDevice',['../namespacedftfe_1_1utils_1_1mpi.html#aa9619263248b5e1feb33f75c9f6d911ba542a8ae96a564ae7a9051d62969c28b2',1,'dftfe::utils::mpi']]], + ['mpihost_9',['mpiHost',['../namespacedftfe_1_1utils_1_1mpi.html#aa9619263248b5e1feb33f75c9f6d911ba6a24e056ee4358e0cac169755ac9de8d',1,'dftfe::utils::mpi']]] +]; diff --git a/search/enumvalues_a.js b/search/enumvalues_a.js new file mode 100644 index 000000000..d775b14d4 --- /dev/null +++ b/search/enumvalues_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['nccl_0',['nccl',['../namespacedftfe_1_1utils_1_1mpi.html#aa9619263248b5e1feb33f75c9f6d911ba3d78fd82ff84926e806d44c172466be9',1,'dftfe::utils::mpi']]], + ['no_5fcheck_1',['NO_CHECK',['../namespacedftfe.html#a954ce72efb7db01d751b54db20ccf00da6bf6e695293507a237fe65e10a4ba2e8',1,'dftfe']]], + ['none_2',['NONE',['../namespacedftfe.html#aec9f58557c36d1bd23430bc23568c800ab50339a10e1de285ac99d4c3990b8693',1,'dftfe']]] +]; diff --git a/search/enumvalues_b.js b/search/enumvalues_b.js new file mode 100644 index 000000000..aadad9cf4 --- /dev/null +++ b/search/enumvalues_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['restart_0',['RESTART',['../classdftfe_1_1non_linear_solver.html#ae0e20e973c1797bd9ea9d06fb2aff9e7a393d5137bf83313de43e0ffdb59513b4',1,'dftfe::nonLinearSolver']]], + ['rho_1',['rho',['../namespacedftfe.html#a55e98bd838d76f5c67d7d7bc1cccee84a843a28dfdc5b2d5463ba2a7b83fdec7c',1,'dftfe']]] +]; diff --git a/search/enumvalues_c.js b/search/enumvalues_c.js new file mode 100644 index 000000000..a6910b817 --- /dev/null +++ b/search/enumvalues_c.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['scaled_5ffock_0',['SCALED_FOCK',['../namespacedftfe.html#aec9f58557c36d1bd23430bc23568c800aa78ddbc9f811a897f116a3d8a324a3a1',1,'dftfe']]], + ['sigmagradvalue_1',['sigmaGradValue',['../namespacedftfe.html#aca06a56192ad7c2be3b45fbddef239a7a3751137a69e981a5b124cc00959cb39d',1,'dftfe']]], + ['single_2',['single',['../namespacedftfe_1_1utils_1_1mpi.html#a0210bc35f26587376caf48af1eeb137aadd5c07036f2975ff4bce568b6511d3bc',1,'dftfe::utils::mpi']]], + ['success_3',['SUCCESS',['../classdftfe_1_1non_linear_solver.html#ae0e20e973c1797bd9ea9d06fb2aff9e7ac3eb2ff0ea3ba5a2fd29f81d5dd21e3a',1,'dftfe::nonLinearSolver::SUCCESS'],['../classdftfe_1_1eigen_solver_class.html#a9c442ebbb90a179cba7e4889d7fdd700ad0749aaba8b833466dfcbb0428e4f89c',1,'dftfe::eigenSolverClass::SUCCESS']]], + ['svd_4',['svd',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06a497aadc9a46708ab7fb255c9e44800e1',1,'dftfe::LAPACKSupport']]] +]; diff --git a/search/enumvalues_d.js b/search/enumvalues_d.js new file mode 100644 index 000000000..f7a81cdac --- /dev/null +++ b/search/enumvalues_d.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['unusable_0',['unusable',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a50176057fe971f54ce6bddd1f09e6d06a73076b6e7d4e1526cddaa7423b108080',1,'dftfe::LAPACKSupport']]], + ['update_5fdefault_1',['update_default',['../namespacedftfe_1_1basis.html#a59b594d5c0c4deefb65e504b45207898af4af425a714895abadf66ecf04c5c1a0',1,'dftfe::basis']]], + ['update_5fgradients_2',['update_gradients',['../namespacedftfe_1_1basis.html#a59b594d5c0c4deefb65e504b45207898aff140305bf0ad0a32a592251cd5799c5',1,'dftfe::basis']]], + ['update_5finversejacobians_3',['update_inversejacobians',['../namespacedftfe_1_1basis.html#a59b594d5c0c4deefb65e504b45207898ac84d0cdf144a28bc6d7c753a4264ea49',1,'dftfe::basis']]], + ['update_5fjxw_4',['update_jxw',['../namespacedftfe_1_1basis.html#a59b594d5c0c4deefb65e504b45207898aee5ee7a0292e2d74dca40a7df4d79002',1,'dftfe::basis']]], + ['update_5fquadpoints_5',['update_quadpoints',['../namespacedftfe_1_1basis.html#a59b594d5c0c4deefb65e504b45207898a54200e0d4b3813bf7d51fa7e40d99d9b',1,'dftfe::basis']]], + ['update_5ftranspose_6',['update_transpose',['../namespacedftfe_1_1basis.html#a59b594d5c0c4deefb65e504b45207898aa5dfe1fc7ae4c74d7cf29a46cf9dd752',1,'dftfe::basis']]], + ['update_5fvalues_7',['update_values',['../namespacedftfe_1_1basis.html#a59b594d5c0c4deefb65e504b45207898a095fedfd2ca7d7f5e9a7763b85034463',1,'dftfe::basis']]], + ['upper_5ftriangular_8',['upper_triangular',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#af3c45dcea64890f047b4dca87fdde9acab99738c18bb979ff47b22d1cac0d0727',1,'dftfe::LAPACKSupport']]] +]; diff --git a/search/enumvalues_e.js b/search/enumvalues_e.js new file mode 100644 index 000000000..21faaba87 --- /dev/null +++ b/search/enumvalues_e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['values_0',['values',['../namespacedftfe.html#aca06a56192ad7c2be3b45fbddef239a7af09cc7ee3a9a93273f4b80601cafb00c',1,'dftfe']]] +]; diff --git a/search/files_0.js b/search/files_0.js new file mode 100644 index 000000000..18d273b19 --- /dev/null +++ b/search/files_0.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['atomcenteredsphericalfunctionbase_2eh_0',['AtomCenteredSphericalFunctionBase.h',['../_atom_centered_spherical_function_base_8h.html',1,'']]], + ['atomcenteredsphericalfunctionbessel_2eh_1',['AtomCenteredSphericalFunctionBessel.h',['../_atom_centered_spherical_function_bessel_8h.html',1,'']]], + ['atomcenteredsphericalfunctioncontainer_2eh_2',['AtomCenteredSphericalFunctionContainer.h',['../_atom_centered_spherical_function_container_8h.html',1,'']]], + ['atomcenteredsphericalfunctioncoredensityspline_2eh_3',['AtomCenteredSphericalFunctionCoreDensitySpline.h',['../_atom_centered_spherical_function_core_density_spline_8h.html',1,'']]], + ['atomcenteredsphericalfunctiongaussian_2eh_4',['AtomCenteredSphericalFunctionGaussian.h',['../_atom_centered_spherical_function_gaussian_8h.html',1,'']]], + ['atomcenteredsphericalfunctionlocalpotentialspline_2eh_5',['AtomCenteredSphericalFunctionLocalPotentialSpline.h',['../_atom_centered_spherical_function_local_potential_spline_8h.html',1,'']]], + ['atomcenteredsphericalfunctionprojectorspline_2eh_6',['AtomCenteredSphericalFunctionProjectorSpline.h',['../_atom_centered_spherical_function_projector_spline_8h.html',1,'']]], + ['atomcenteredsphericalfunctionsinc_2eh_7',['AtomCenteredSphericalFunctionSinc.h',['../_atom_centered_spherical_function_sinc_8h.html',1,'']]], + ['atomcenteredsphericalfunctionspline_2eh_8',['AtomCenteredSphericalFunctionSpline.h',['../_atom_centered_spherical_function_spline_8h.html',1,'']]], + ['atomcenteredsphericalfunctionvalencedensityspline_2eh_9',['AtomCenteredSphericalFunctionValenceDensitySpline.h',['../_atom_centered_spherical_function_valence_density_spline_8h.html',1,'']]], + ['atomcenteredsphericalfunctionzoverr_2eh_10',['AtomCenteredSphericalFunctionZOverR.h',['../_atom_centered_spherical_function_z_over_r_8h.html',1,'']]], + ['atomiccenterednonlocaloperator_2eh_11',['AtomicCenteredNonLocalOperator.h',['../_atomic_centered_non_local_operator_8h.html',1,'']]], + ['atomiccenterednonlocaloperatorkernelsdevice_2eh_12',['AtomicCenteredNonLocalOperatorKernelsDevice.h',['../_atomic_centered_non_local_operator_kernels_device_8h.html',1,'']]], + ['atompseudowavefunctions_2eh_13',['AtomPseudoWavefunctions.h',['../_atom_pseudo_wavefunctions_8h.html',1,'']]] +]; diff --git a/search/files_1.js b/search/files_1.js new file mode 100644 index 000000000..65a5bc969 --- /dev/null +++ b/search/files_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['bfgsnonlinearsolver_2eh_0',['BFGSNonLinearSolver.h',['../_b_f_g_s_non_linear_solver_8h.html',1,'']]], + ['blaswrapper_2eh_1',['BLASWrapper.h',['../_b_l_a_s_wrapper_8h.html',1,'']]] +]; diff --git a/search/files_10.js b/search/files_10.js new file mode 100644 index 000000000..60559e0f0 --- /dev/null +++ b/search/files_10.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['scalapack_2etemplates_2eh_0',['scalapack.templates.h',['../scalapack_8templates_8h.html',1,'']]], + ['scalapackwrapper_2eh_1',['scalapackWrapper.h',['../scalapack_wrapper_8h.html',1,'']]], + ['solvevselfinbinsdevice_2eh_2',['solveVselfInBinsDevice.h',['../solve_vself_in_bins_device_8h.html',1,'']]], + ['sphericalharmonicutils_2eh_3',['sphericalHarmonicUtils.h',['../spherical_harmonic_utils_8h.html',1,'']]], + ['symmetry_2eh_4',['symmetry.h',['../symmetry_8h.html',1,'']]] +]; diff --git a/search/files_11.js b/search/files_11.js new file mode 100644 index 000000000..cb274daa8 --- /dev/null +++ b/search/files_11.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['triangulationmanager_2eh_0',['triangulationManager.h',['../triangulation_manager_8h.html',1,'']]], + ['typeconfig_2eh_1',['TypeConfig.h',['../_type_config_8h.html',1,'']]] +]; diff --git a/search/files_12.js b/search/files_12.js new file mode 100644 index 000000000..669b6088e --- /dev/null +++ b/search/files_12.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['vectorutilities_2eh_0',['vectorUtilities.h',['../vector_utilities_8h.html',1,'']]], + ['vselfbinsmanager_2eh_1',['vselfBinsManager.h',['../vself_bins_manager_8h.html',1,'']]] +]; diff --git a/search/files_2.js b/search/files_2.js new file mode 100644 index 000000000..c6af473e1 --- /dev/null +++ b/search/files_2.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['cgprpnonlinearsolver_2eh_0',['cgPRPNonLinearSolver.h',['../cg_p_r_p_non_linear_solver_8h.html',1,'']]], + ['chebyshevorthogonalizedsubspaceiterationsolver_2eh_1',['chebyshevOrthogonalizedSubspaceIterationSolver.h',['../chebyshev_orthogonalized_subspace_iteration_solver_8h.html',1,'']]], + ['chebyshevorthogonalizedsubspaceiterationsolverdevice_2eh_2',['chebyshevOrthogonalizedSubspaceIterationSolverDevice.h',['../chebyshev_orthogonalized_subspace_iteration_solver_device_8h.html',1,'']]], + ['compositedata_2eh_3',['CompositeData.h',['../_composite_data_8h.html',1,'']]], + ['constants_2eh_4',['constants.h',['../constants_8h.html',1,'']]], + ['constraintmatrixinfo_2eh_5',['constraintMatrixInfo.h',['../constraint_matrix_info_8h.html',1,'']]], + ['constraintmatrixinfodevice_2eh_6',['constraintMatrixInfoDevice.h',['../constraint_matrix_info_device_8h.html',1,'']]] +]; diff --git a/search/files_3.js b/search/files_3.js new file mode 100644 index 000000000..e714912bb --- /dev/null +++ b/search/files_3.js @@ -0,0 +1,28 @@ +var searchData= +[ + ['datatypeoverloads_2eh_0',['DataTypeOverloads.h',['../_data_type_overloads_8h.html',1,'']]], + ['dealiilinearsolver_2eh_1',['dealiiLinearSolver.h',['../dealii_linear_solver_8h.html',1,'']]], + ['dealiilinearsolverproblem_2eh_2',['dealiiLinearSolverProblem.h',['../dealii_linear_solver_problem_8h.html',1,'']]], + ['densitycalculator_2eh_3',['densityCalculator.h',['../density_calculator_8h.html',1,'']]], + ['densityfirstorderresponsecalculator_2eh_4',['densityFirstOrderResponseCalculator.h',['../density_first_order_response_calculator_8h.html',1,'']]], + ['deviceapicalls_2eh_5',['DeviceAPICalls.h',['../_device_a_p_i_calls_8h.html',1,'']]], + ['deviceblaswrapper_2eh_6',['DeviceBlasWrapper.h',['../_device_blas_wrapper_8h.html',1,'']]], + ['devicedatatypeoverloads_2ecu_2eh_7',['DeviceDataTypeOverloads.cu.h',['../_device_data_type_overloads_8cu_8h.html',1,'']]], + ['devicedatatypeoverloads_2eh_8',['DeviceDataTypeOverloads.h',['../_device_data_type_overloads_8h.html',1,'']]], + ['devicedatatypeoverloads_2ehip_2eh_9',['DeviceDataTypeOverloads.hip.h',['../_device_data_type_overloads_8hip_8h.html',1,'']]], + ['devicedirectcclwrapper_2eh_10',['deviceDirectCCLWrapper.h',['../device_direct_c_c_l_wrapper_8h.html',1,'']]], + ['deviceexceptions_2ecu_2eh_11',['DeviceExceptions.cu.h',['../_device_exceptions_8cu_8h.html',1,'']]], + ['deviceexceptions_2ehip_2eh_12',['DeviceExceptions.hip.h',['../_device_exceptions_8hip_8h.html',1,'']]], + ['devicekernellauncherconstants_2eh_13',['DeviceKernelLauncherConstants.h',['../_device_kernel_launcher_constants_8h.html',1,'']]], + ['devicekernelsgeneric_2eh_14',['deviceKernelsGeneric.h',['../device_kernels_generic_8h.html',1,'']]], + ['devicetypeconfig_2ecu_2eh_15',['DeviceTypeConfig.cu.h',['../_device_type_config_8cu_8h.html',1,'']]], + ['devicetypeconfig_2eh_16',['DeviceTypeConfig.h',['../_device_type_config_8h.html',1,'']]], + ['devicetypeconfig_2ehip_2eh_17',['DeviceTypeConfig.hip.h',['../_device_type_config_8hip_8h.html',1,'']]], + ['dft_2eh_18',['dft.h',['../dft_8h.html',1,'']]], + ['dftbase_2eh_19',['dftBase.h',['../dft_base_8h.html',1,'']]], + ['dftd_2eh_20',['dftd.h',['../dftd_8h.html',1,'']]], + ['dftfedatatypes_2eh_21',['dftfeDataTypes.h',['../dftfe_data_types_8h.html',1,'']]], + ['dftfewrapper_2eh_22',['dftfeWrapper.h',['../dftfe_wrapper_8h.html',1,'']]], + ['dftparameters_2eh_23',['dftParameters.h',['../dft_parameters_8h.html',1,'']]], + ['dftutils_2eh_24',['dftUtils.h',['../dft_utils_8h.html',1,'']]] +]; diff --git a/search/files_4.js b/search/files_4.js new file mode 100644 index 000000000..1fe4ae171 --- /dev/null +++ b/search/files_4.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['eigensolver_2eh_0',['eigenSolver.h',['../eigen_solver_8h.html',1,'']]], + ['elpascalamanager_2eh_1',['elpaScalaManager.h',['../elpa_scala_manager_8h.html',1,'']]], + ['energycalculator_2eh_2',['energyCalculator.h',['../energy_calculator_8h.html',1,'']]], + ['eshelbytensor_2eh_3',['eshelbyTensor.h',['../eshelby_tensor_8h.html',1,'']]], + ['eshelbytensorspinpolarized_2eh_4',['eshelbyTensorSpinPolarized.h',['../eshelby_tensor_spin_polarized_8h.html',1,'']]], + ['excdensitybaseclass_2eh_5',['excDensityBaseClass.h',['../exc_density_base_class_8h.html',1,'']]], + ['excdensityggaclass_2eh_6',['excDensityGGAClass.h',['../exc_density_g_g_a_class_8h.html',1,'']]], + ['excdensityldaclass_2eh_7',['excDensityLDAClass.h',['../exc_density_l_d_a_class_8h.html',1,'']]], + ['excdensitypositivitychecktypes_2eh_8',['excDensityPositivityCheckTypes.h',['../exc_density_positivity_check_types_8h.html',1,'']]], + ['exceptions_2eh_9',['Exceptions.h',['../_exceptions_8h.html',1,'']]], + ['excmanager_2eh_10',['excManager.h',['../exc_manager_8h.html',1,'']]], + ['excwavefunctionbaseclass_2eh_11',['excWavefunctionBaseClass.h',['../exc_wavefunction_base_class_8h.html',1,'']]], + ['excwavefunctionnoneclass_2eh_12',['excWavefunctionNoneClass.h',['../exc_wavefunction_none_class_8h.html',1,'']]] +]; diff --git a/search/files_5.js b/search/files_5.js new file mode 100644 index 000000000..68277d82c --- /dev/null +++ b/search/files_5.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['febasisoperations_2eh_0',['FEBasisOperations.h',['../_f_e_basis_operations_8h.html',1,'']]], + ['febasisoperationskernelsinternal_2eh_1',['FEBasisOperationsKernelsInternal.h',['../_f_e_basis_operations_kernels_internal_8h.html',1,'']]], + ['filereaders_2eh_2',['fileReaders.h',['../file_readers_8h.html',1,'']]], + ['force_2eh_3',['force.h',['../force_8h.html',1,'']]], + ['forcewfccontractions_2eh_4',['forceWfcContractions.h',['../force_wfc_contractions_8h.html',1,'']]], + ['forcewfccontractionsdevicekernels_2eh_5',['forceWfcContractionsDeviceKernels.h',['../force_wfc_contractions_device_kernels_8h.html',1,'']]] +]; diff --git a/search/files_6.js b/search/files_6.js new file mode 100644 index 000000000..ea114c120 --- /dev/null +++ b/search/files_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['geometryoptimizationclass_2eh_0',['geometryOptimizationClass.h',['../geometry_optimization_class_8h.html',1,'']]], + ['geooptcell_2eh_1',['geoOptCell.h',['../geo_opt_cell_8h.html',1,'']]], + ['geooption_2eh_2',['geoOptIon.h',['../geo_opt_ion_8h.html',1,'']]] +]; diff --git a/search/files_7.js b/search/files_7.js new file mode 100644 index 000000000..9b7ba9f87 --- /dev/null +++ b/search/files_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['headers_2eh_0',['headers.h',['../headers_8h.html',1,'']]] +]; diff --git a/search/files_8.js b/search/files_8.js new file mode 100644 index 000000000..2aa8dc011 --- /dev/null +++ b/search/files_8.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['kerkersolverproblem_2eh_0',['kerkerSolverProblem.h',['../kerker_solver_problem_8h.html',1,'']]], + ['kerkersolverproblemdevice_2eh_1',['kerkerSolverProblemDevice.h',['../kerker_solver_problem_device_8h.html',1,'']]], + ['kohnshamhamiltonianoperator_2eh_2',['KohnShamHamiltonianOperator.h',['../_kohn_sham_hamiltonian_operator_8h.html',1,'']]] +]; diff --git a/search/files_9.js b/search/files_9.js new file mode 100644 index 000000000..9cd9ebb34 --- /dev/null +++ b/search/files_9.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['lapack_5fsupport_2eh_0',['lapack_support.h',['../lapack__support_8h.html',1,'']]], + ['lbfgsnonlinearsolver_2eh_1',['LBFGSNonLinearSolver.h',['../_l_b_f_g_s_non_linear_solver_8h.html',1,'']]], + ['librarymdi_2eh_2',['libraryMDI.h',['../library_m_d_i_8h.html',1,'']]], + ['linearalgebraoperations_2eh_3',['linearAlgebraOperations.h',['../linear_algebra_operations_8h.html',1,'']]], + ['linearalgebraoperationsdevice_2eh_4',['linearAlgebraOperationsDevice.h',['../linear_algebra_operations_device_8h.html',1,'']]], + ['linearalgebraoperationsinternal_2eh_5',['linearAlgebraOperationsInternal.h',['../linear_algebra_operations_internal_8h.html',1,'']]], + ['linearsolver_2eh_6',['linearSolver.h',['../linear_solver_8h.html',1,'']]], + ['linearsolvercgdevice_2eh_7',['linearSolverCGDevice.h',['../linear_solver_c_g_device_8h.html',1,'']]], + ['linearsolverdevice_2eh_8',['linearSolverDevice.h',['../linear_solver_device_8h.html',1,'']]], + ['linearsolverproblemdevice_2eh_9',['linearSolverProblemDevice.h',['../linear_solver_problem_device_8h.html',1,'']]] +]; diff --git a/search/files_a.js b/search/files_a.js new file mode 100644 index 000000000..423de7372 --- /dev/null +++ b/search/files_a.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['mdiengine_2eh_0',['MDIEngine.h',['../_m_d_i_engine_8h.html',1,'']]], + ['memorymanager_2eh_1',['MemoryManager.h',['../_memory_manager_8h.html',1,'']]], + ['memoryspacetype_2eh_2',['MemorySpaceType.h',['../_memory_space_type_8h.html',1,'']]], + ['memorystorage_2eh_3',['MemoryStorage.h',['../_memory_storage_8h.html',1,'']]], + ['memorytransfer_2eh_4',['MemoryTransfer.h',['../_memory_transfer_8h.html',1,'']]], + ['memorytransferkernelsdevice_2eh_5',['MemoryTransferKernelsDevice.h',['../_memory_transfer_kernels_device_8h.html',1,'']]], + ['meshgenutils_2eh_6',['meshGenUtils.h',['../mesh_gen_utils_8h.html',1,'']]], + ['meshmovement_2eh_7',['meshMovement.h',['../mesh_movement_8h.html',1,'']]], + ['meshmovementaffinetransform_2eh_8',['meshMovementAffineTransform.h',['../mesh_movement_affine_transform_8h.html',1,'']]], + ['meshmovementgaussian_2eh_9',['meshMovementGaussian.h',['../mesh_movement_gaussian_8h.html',1,'']]], + ['mixingclass_2eh_10',['mixingClass.h',['../mixing_class_8h.html',1,'']]], + ['moleculardynamicsclass_2eh_11',['molecularDynamicsClass.h',['../molecular_dynamics_class_8h.html',1,'']]], + ['mpicommunicatorp2p_2eh_12',['MPICommunicatorP2P.h',['../_m_p_i_communicator_p2_p_8h.html',1,'']]], + ['mpicommunicatorp2pkernels_2eh_13',['MPICommunicatorP2PKernels.h',['../_m_p_i_communicator_p2_p_kernels_8h.html',1,'']]], + ['mpipatternp2p_2eh_14',['MPIPatternP2P.h',['../_m_p_i_pattern_p2_p_8h.html',1,'']]], + ['mpirequestersbase_2eh_15',['MPIRequestersBase.h',['../_m_p_i_requesters_base_8h.html',1,'']]], + ['mpirequestersnbx_2eh_16',['MPIRequestersNBX.h',['../_m_p_i_requesters_n_b_x_8h.html',1,'']]], + ['mpitags_2eh_17',['MPITags.h',['../_m_p_i_tags_8h.html',1,'']]], + ['mpiwriteonfile_2eh_18',['MPIWriteOnFile.h',['../_m_p_i_write_on_file_8h.html',1,'']]], + ['multivector_2eh_19',['MultiVector.h',['../_multi_vector_8h.html',1,'']]] +]; diff --git a/search/files_b.js b/search/files_b.js new file mode 100644 index 000000000..f0940d3ba --- /dev/null +++ b/search/files_b.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['nngga_2eh_0',['NNGGA.h',['../_n_n_g_g_a_8h.html',1,'']]], + ['nnlda_2eh_1',['NNLDA.h',['../_n_n_l_d_a_8h.html',1,'']]], + ['nonlinearsolver_2eh_2',['nonLinearSolver.h',['../non_linear_solver_8h.html',1,'']]], + ['nonlinearsolverproblem_2eh_3',['nonlinearSolverProblem.h',['../nonlinear_solver_problem_8h.html',1,'']]], + ['nudgedelasticbandclass_2eh_4',['nudgedElasticBandClass.h',['../nudged_elastic_band_class_8h.html',1,'']]] +]; diff --git a/search/files_c.js b/search/files_c.js new file mode 100644 index 000000000..06dadbcb7 --- /dev/null +++ b/search/files_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['oncvclass_2eh_0',['oncvClass.h',['../oncv_class_8h.html',1,'']]], + ['operator_2eh_1',['operator.h',['../operator_8h.html',1,'']]], + ['optimizedindexset_2eh_2',['OptimizedIndexSet.h',['../_optimized_index_set_8h.html',1,'']]] +]; diff --git a/search/files_d.js b/search/files_d.js new file mode 100644 index 000000000..ff1ecd417 --- /dev/null +++ b/search/files_d.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['periodictable_2eh_0',['PeriodicTable.h',['../_periodic_table_8h.html',1,'']]], + ['poissonsolverproblem_2eh_1',['poissonSolverProblem.h',['../poisson_solver_problem_8h.html',1,'']]], + ['poissonsolverproblemdevice_2eh_2',['poissonSolverProblemDevice.h',['../poisson_solver_problem_device_8h.html',1,'']]], + ['process_5fgrid_2eh_3',['process_grid.h',['../process__grid_8h.html',1,'']]], + ['pseudoconverter_2eh_4',['pseudoConverter.h',['../pseudo_converter_8h.html',1,'']]], + ['pseudopotentialtodftfeconverter_2ecc_5',['pseudoPotentialToDftfeConverter.cc',['../pseudo_potential_to_dftfe_converter_8cc.html',1,'']]], + ['pseudoutils_2eh_6',['pseudoUtils.h',['../pseudo_utils_8h.html',1,'']]] +]; diff --git a/search/files_e.js b/search/files_e.js new file mode 100644 index 000000000..91c75742e --- /dev/null +++ b/search/files_e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['quaddatacompositewrite_2eh_0',['QuadDataCompositeWrite.h',['../_quad_data_composite_write_8h.html',1,'']]] +]; diff --git a/search/files_f.js b/search/files_f.js new file mode 100644 index 000000000..c3ee5f0a6 --- /dev/null +++ b/search/files_f.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['readme_2emd_0',['README.md',['../_r_e_a_d_m_e_8md.html',1,'']]], + ['runparameters_2eh_1',['runParameters.h',['../run_parameters_8h.html',1,'']]] +]; diff --git a/search/functions_0.js b/search/functions_0.js new file mode 100644 index 000000000..10db14413 --- /dev/null +++ b/search/functions_0.js @@ -0,0 +1,50 @@ +var searchData= +[ + ['abs_0',['abs',['../namespacedftfe_1_1utils.html#ad4552f7270a0d908717d8773a15c426d',1,'dftfe::utils::abs(double a)'],['../namespacedftfe_1_1utils.html#ad5f75e28a1997f91f2e31ad20bc52658',1,'dftfe::utils::abs(float a)'],['../namespacedftfe_1_1utils.html#aac862b56ee93ec676261fd3b30d0eb72',1,'dftfe::utils::abs(cuDoubleComplex a)'],['../namespacedftfe_1_1utils.html#ac210a8f535f05ab1217533db3f485875',1,'dftfe::utils::abs(cuFloatComplex a)'],['../namespacedftfe_1_1utils.html#a38216533205864c03370f088aea62d1c',1,'dftfe::utils::abs(hipDoubleComplex a)'],['../namespacedftfe_1_1utils.html#a8b7003ef5691229b2d0d72d599723da0',1,'dftfe::utils::abs(hipFloatComplex a)']]], + ['accumaddlocallyownedcontrrecvbufferfromtargetprocs_1',['accumAddLocallyOwnedContrRecvBufferFromTargetProcs',['../classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels.html#a6c316c5616cd424ad17ce9eb1b0ac822',1,'dftfe::utils::MPICommunicatorP2PKernels']]], + ['accumulateaddlocallyowned_2',['accumulateAddLocallyOwned',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#ade408c71328c67f07f1c39b2856e23e3',1,'dftfe::utils::mpi::MPICommunicatorP2P::accumulateAddLocallyOwned()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ab203446168a9aa0d7e87c60840552689',1,'dftfe::linearAlgebra::MultiVector::accumulateAddLocallyOwned()']]], + ['accumulateaddlocallyownedbegin_3',['accumulateAddLocallyOwnedBegin',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#ae8d232988ecd860b3e2142cc009a3a04',1,'dftfe::utils::mpi::MPICommunicatorP2P::accumulateAddLocallyOwnedBegin()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ad7a36d116aa000cbcd0bf0e5a5129c68',1,'dftfe::linearAlgebra::MultiVector::accumulateAddLocallyOwnedBegin()']]], + ['accumulateaddlocallyownedend_4',['accumulateAddLocallyOwnedEnd',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a200dacffba340cafbc9de789221bd65a',1,'dftfe::utils::mpi::MPICommunicatorP2P::accumulateAddLocallyOwnedEnd()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a694fae78f2e2e396682f10366f4052ab',1,'dftfe::linearAlgebra::MultiVector::accumulateAddLocallyOwnedEnd()']]], + ['accumulateforcecontributiongammaatomsfloating_5',['accumulateForceContributionGammaAtomsFloating',['../classdftfe_1_1force_class.html#a9d1d00f812ff11a9595a931cc5d30120',1,'dftfe::forceClass']]], + ['accumulatefromcellnodaldata_6',['accumulateFromCellNodalData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a5fdc7f28aaeab8d6a5b6fc2482983f63',1,'dftfe::basis::FEBasisOperations']]], + ['accumulatefromcellnodaldatakernel_7',['accumulateFromCellNodalDataKernel',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aa3a7b0385930e82c2215848351767f1f',1,'dftfe::basis::FEBasisOperations']]], + ['add_8',['add',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a5b52d14c34a928dc597f25ee92cb4f42',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::add()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#aca286dacf130ec5477f447685f6d1c81',1,'dftfe::linearAlgebra::MultiVector::add(const ValueBaseType *valVec, const MultiVector &u)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#abc6647144c62132f41fead1ae79977e2',1,'dftfe::linearAlgebra::MultiVector::add(const ValueBaseType val, const MultiVector &u)'],['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a42d20c5ad908996be22d9bc6a452e5d4',1,'dftfe::ScaLAPACKMatrix::add()'],['../namespacedftfe_1_1utils.html#a573791729c93ac30cec9f7af5e1e8b0f',1,'dftfe::utils::add(unsigned int a, unsigned int b)'],['../namespacedftfe_1_1utils.html#a2623da22f7339d437a74d522f82de091',1,'dftfe::utils::add(unsigned long int a, unsigned long int b)'],['../namespacedftfe_1_1utils.html#ac443f7bad8b193e75bce01aa7e78c0ac',1,'dftfe::utils::add(int a, int b)'],['../namespacedftfe_1_1utils.html#a8ccd8a376c30e8fc684b8e5127610c94',1,'dftfe::utils::add(double a, double b)'],['../namespacedftfe_1_1utils.html#aef51a86e8e4694d81ec922228d4533d2',1,'dftfe::utils::add(float a, float b)'],['../namespacedftfe_1_1utils.html#a52224f6d3e567218e6d58a3bd2249d2d',1,'dftfe::utils::add(cuDoubleComplex a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#abbf68a475588415614dabd9492947c57',1,'dftfe::utils::add(cuFloatComplex a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#af5a26b2a5f36e02618d8f74023aebdf2',1,'dftfe::utils::add(double a, float b)'],['../namespacedftfe_1_1utils.html#ab61300f5261d90f8ea1e4545016caaaa',1,'dftfe::utils::add(float a, double b)'],['../namespacedftfe_1_1utils.html#a9f874d61b3ce99f7b7e8202c15e39ba5',1,'dftfe::utils::add(cuDoubleComplex a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#a5070f39e31a2a8ac91e16dec44eb156c',1,'dftfe::utils::add(cuFloatComplex a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#aed45a5e1885f96aab3f3c193b754e1a9',1,'dftfe::utils::add(hipDoubleComplex a, hipDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a0356ce0a2d8daa0789de0113bc35cc50',1,'dftfe::utils::add(hipFloatComplex a, hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#a8a5387ad002218f88a45d47044d088c9',1,'dftfe::utils::add(hipDoubleComplex a, hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#a7014a60efa2f43b3b9fdf472fb6d4b84',1,'dftfe::utils::add(hipFloatComplex a, hipDoubleComplex b)']]], + ['addandscale_9',['addAndScale',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a771707a4824859b04fc8fc507c4a1526',1,'dftfe::linearAlgebra::MultiVector']]], + ['addatomicrhoquadvaluesgradients_10',['addAtomicRhoQuadValuesGradients',['../classdftfe_1_1dft_class.html#a63cc1d4f225905e62d69f4615eb0442e',1,'dftfe::dftClass']]], + ['addenonlinearcorecorrectionstresscontribution_11',['addENonlinearCoreCorrectionStressContribution',['../classdftfe_1_1force_class.html#ae261f11c045b2f017434091972495abd',1,'dftfe::forceClass']]], + ['addenonlinearcorecorrectionstresscontributionspinpolarized_12',['addENonlinearCoreCorrectionStressContributionSpinPolarized',['../classdftfe_1_1force_class.html#a4a76b3d36612b8b3768adc25c8de83bc',1,'dftfe::forceClass']]], + ['addephitotsmearedstresscontribution_13',['addEPhiTotSmearedStressContribution',['../classdftfe_1_1force_class.html#ae0371481dc0415522475f6b0279adbb4',1,'dftfe::forceClass']]], + ['addepspstresscontribution_14',['addEPSPStressContribution',['../classdftfe_1_1force_class.html#a034ecf5674eebf76a7304936052a652d',1,'dftfe::forceClass']]], + ['addevselfsmearedstresscontribution_15',['addEVselfSmearedStressContribution',['../classdftfe_1_1force_class.html#a757557bbad7fa42a58c04579d7eb9b8b',1,'dftfe::forceClass']]], + ['addmixingvariable_16',['addMixingVariable',['../classdftfe_1_1_mixing_scheme.html#a7fbd7a3ab7ed2b6386cbdf6656318beb',1,'dftfe::MixingScheme']]], + ['addnonlocalcontribution_17',['addNonLocalContribution',['../namespacedftfe_1_1_atomic_centered_non_local_operator_kernels_device.html#a85eae2829aa518965850d0c29c9f7dbd',1,'dftfe::AtomicCenteredNonLocalOperatorKernelsDevice']]], + ['addvariabletoinhist_18',['addVariableToInHist',['../classdftfe_1_1_mixing_scheme.html#a490a9e2d06eff41f5e79e590f9928d43',1,'dftfe::MixingScheme']]], + ['addvariabletoresidualhist_19',['addVariableToResidualHist',['../classdftfe_1_1_mixing_scheme.html#a7752db5a71fed915e2f0d723a4c40f17',1,'dftfe::MixingScheme']]], + ['allocate_20',['allocate',['../classdftfe_1_1utils_1_1_memory_manager.html#a981500905019ef9b78e56d5713aade52',1,'dftfe::utils::MemoryManager::allocate()'],['../classdftfe_1_1utils_1_1_memory_manager_3_01_value_type_00_01_memory_space_1_1_h_o_s_t_01_4.html#af201536ce4ca5abc9a6dca688881817a',1,'dftfe::utils::MemoryManager< ValueType, MemorySpace::HOST >::allocate()']]], + ['aposteriorimeshgenerate_21',['aposterioriMeshGenerate',['../classdftfe_1_1dft_class.html#aa2db3a35f38977768e09cc214d7bcc91',1,'dftfe::dftClass']]], + ['applyallreduceoncconjtransx_22',['applyAllReduceOnCconjtransX',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a8b735c24d3d0c32f4ec903d374fc7c41',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['applycconjtransonx_23',['applyCconjtransOnX',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a128b581e50cb3d8c0d676494f20148e7',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['applyconvcconjtransx_24',['applyCOnVCconjtransX',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a593657a354eea1110e2c70ccec119341',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['applycvcconjtransonx_25',['applyCVCconjtransOnX',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a3fc8c55e25cf56a9488af87fc4d01456',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['applyhomogeneousdirichletbc_26',['applyHomogeneousDirichletBC',['../classdftfe_1_1dft_class.html#a1e31a4e4affb182a1043e7ebc0ecb89b',1,'dftfe::dftClass']]], + ['applykerkerpreconditionertototaldensityresidual_27',['applyKerkerPreconditionerToTotalDensityResidual',['../classdftfe_1_1dft_class.html#a6c48849dbb4d9b15c9f742587c90fcb8',1,'dftfe::dftClass']]], + ['applymultipoledirichletbc_28',['applyMultipoleDirichletBC',['../classdftfe_1_1dft_class.html#ab1c71723b87ddd2d6f5e791b9e79a0ea',1,'dftfe::dftClass']]], + ['applyperiodicbchigherordernodes_29',['applyPeriodicBCHigherOrderNodes',['../classdftfe_1_1dft_class.html#a2e1ed95d5c8e435864c3fd1ba4ee0be7',1,'dftfe::dftClass']]], + ['applyvcconjtransonx_30',['applyVCconjtransOnX',['../classdftfe_1_1_atomic_centered_non_local_operator.html#af2d45da243c92a979c321e14d8c0068a',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['applyvoncconjtransx_31',['applyVOnCconjtransX',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a9f19d62d13a0a006da7d6cfd33edbb07',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['applywavefunctiondependentvxc_32',['applyWaveFunctionDependentVxc',['../classdftfe_1_1exc_wavefunction_base_class.html#a5290a31b8b9289da921fa5a12220d337',1,'dftfe::excWavefunctionBaseClass::applyWaveFunctionDependentVxc()'],['../classdftfe_1_1exc_wavefunction_none_class.html#aaf4405c5e15b70d82bfe12b9642ccd65',1,'dftfe::excWavefunctionNoneClass::applyWaveFunctionDependentVxc()']]], + ['atomcenteredsphericalfunctionbessel_33',['AtomCenteredSphericalFunctionBessel',['../classdftfe_1_1_atom_centered_spherical_function_bessel.html#a0d17636c0858e1db7a030ea5af2a352f',1,'dftfe::AtomCenteredSphericalFunctionBessel']]], + ['atomcenteredsphericalfunctioncoredensityspline_34',['AtomCenteredSphericalFunctionCoreDensitySpline',['../classdftfe_1_1_atom_centered_spherical_function_core_density_spline.html#a373536a0dd2d86bd51f56a1cdc8eccba',1,'dftfe::AtomCenteredSphericalFunctionCoreDensitySpline']]], + ['atomcenteredsphericalfunctiongaussian_35',['AtomCenteredSphericalFunctionGaussian',['../classdftfe_1_1_atom_centered_spherical_function_gaussian.html#af2bf10390ff5f2ab9f22d639acada402',1,'dftfe::AtomCenteredSphericalFunctionGaussian']]], + ['atomcenteredsphericalfunctionlocalpotentialspline_36',['AtomCenteredSphericalFunctionLocalPotentialSpline',['../classdftfe_1_1_atom_centered_spherical_function_local_potential_spline.html#a33cb3d06e7e929fe7fae5a07fd35e2ae',1,'dftfe::AtomCenteredSphericalFunctionLocalPotentialSpline']]], + ['atomcenteredsphericalfunctiononeoverr_37',['AtomCenteredSphericalFunctionOneOverR',['../classdftfe_1_1_atom_centered_spherical_function_z_over_r.html#ae2e6fec8ccd97352d456cd0a4e8a5272',1,'dftfe::AtomCenteredSphericalFunctionZOverR']]], + ['atomcenteredsphericalfunctionprojectorspline_38',['AtomCenteredSphericalFunctionProjectorSpline',['../classdftfe_1_1_atom_centered_spherical_function_projector_spline.html#ae3ec1777699a250084ddcb85d3bafbae',1,'dftfe::AtomCenteredSphericalFunctionProjectorSpline']]], + ['atomcenteredsphericalfunctionsinc_39',['AtomCenteredSphericalFunctionSinc',['../classdftfe_1_1_atom_centered_spherical_function_sinc.html#a64123e195517f7833a3b3b16dd7e12f9',1,'dftfe::AtomCenteredSphericalFunctionSinc']]], + ['atomcenteredsphericalfunctionvalencedensityspline_40',['AtomCenteredSphericalFunctionValenceDensitySpline',['../classdftfe_1_1_atom_centered_spherical_function_valence_density_spline.html#a105e14f3121d48910e50439a50b9f0d1',1,'dftfe::AtomCenteredSphericalFunctionValenceDensitySpline']]], + ['atomiccenterednonlocaloperator_41',['AtomicCenteredNonLocalOperator',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a99d27e7123147c740707647893a5e7a5',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['atompseudowavefunctions_42',['AtomPseudoWavefunctions',['../classdftfe_1_1_atom_pseudo_wavefunctions.html#ac25f8f36e022c138dc0853bde42de731',1,'dftfe::AtomPseudoWavefunctions']]], + ['atomsupportinelement_43',['atomSupportInElement',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a13eb26af02aeccbf0ff3efc6a2925ba0',1,'dftfe::AtomCenteredSphericalFunctionContainer::atomSupportInElement()'],['../classdftfe_1_1_atomic_centered_non_local_operator.html#aa7d5113d2b676c3b8a35675e7fd52377',1,'dftfe::AtomicCenteredNonLocalOperator::atomSupportInElement()']]], + ['ax_44',['AX',['../classdftfe_1_1kerker_solver_problem.html#a32839116a83e5a699408bdf46944a0d8',1,'dftfe::kerkerSolverProblem::AX()'],['../classdftfe_1_1poisson_solver_problem.html#a080f87858752f6e4e1df13c8531e310c',1,'dftfe::poissonSolverProblem::AX()']]], + ['axpby_45',['axpby',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a001bb5b32ff6ea27a64fa2e884a0b2c0',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['axpystridedblockatomicadd_46',['axpyStridedBlockAtomicAdd',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#aabb2fbf74b5650f72728675b8335e7ac',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::axpyStridedBlockAtomicAdd(const dftfe::size_type contiguousBlockSize, const dftfe::size_type numContiguousBlocks, const ValueType *addFromVec, ValueType *addToVec, const dftfe::global_size_type *addToVecStartingContiguousBlockIds) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a8b1efa28fd5d35be4337bc9b400a93e2',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::axpyStridedBlockAtomicAdd(const dftfe::size_type contiguousBlockSize, const dftfe::size_type numContiguousBlocks, const ValueType1 a, const ValueType1 *s, const ValueType2 *addFromVec, ValueType2 *addToVec, const dftfe::global_size_type *addToVecStartingContiguousBlockIds) const']]] +]; diff --git a/search/functions_1.js b/search/functions_1.js new file mode 100644 index 000000000..237b1c638 --- /dev/null +++ b/search/functions_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['begin_0',['begin',['../classdftfe_1_1utils_1_1_memory_storage.html#aeae2e55c0e10f389bc65f700c6611719',1,'dftfe::utils::MemoryStorage::begin()'],['../classdftfe_1_1utils_1_1_memory_storage.html#a4ce210642221751dccbecd13fe305b4d',1,'dftfe::utils::MemoryStorage::begin() const'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#af8a4c6b84e2352de812cdae573757ad3',1,'dftfe::linearAlgebra::MultiVector::begin()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a60089cfc883178ee65d984e30b85fdd0',1,'dftfe::linearAlgebra::MultiVector::begin() const']]], + ['bfgsnonlinearsolver_1',['BFGSNonLinearSolver',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a7c779acbcd088400feb144b0f19f57c4',1,'dftfe::BFGSNonLinearSolver']]], + ['blaswrapper_2',['BLASWrapper',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#abc0b5c6e2945e72a5f1d8cc8b6e5023d',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['broadcastacrossintercommscalapackmat_3',['broadcastAcrossInterCommScaLAPACKMat',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a2558aa96842fff7e5a16c12a5bc92d23',1,'dftfe::linearAlgebraOperations::internal']]] +]; diff --git a/search/functions_10.js b/search/functions_10.js new file mode 100644 index 000000000..a8ae3122b --- /dev/null +++ b/search/functions_10.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['quaddatacompositewrite_0',['QuadDataCompositeWrite',['../classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html#a706fe0ad27eec6e077ce483cf8b9f40b',1,'dftfe::dftUtils::QuadDataCompositeWrite']]], + ['quadpoints_1',['quadPoints',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a0835948b8ed283252d137bea307ca3e0',1,'dftfe::basis::FEBasisOperations']]] +]; diff --git a/search/functions_11.js b/search/functions_11.js new file mode 100644 index 000000000..2596aafe0 --- /dev/null +++ b/search/functions_11.js @@ -0,0 +1,42 @@ +var searchData= +[ + ['rayleighritz_0',['rayleighRitz',['../namespacedftfe_1_1linear_algebra_operations.html#a6d413e7fa9852584fe53464b4c52b917',1,'dftfe::linearAlgebraOperations']]], + ['rayleighritzgep_1',['rayleighRitzGEP',['../namespacedftfe_1_1linear_algebra_operations.html#a1e50d3a2a5f747e04587bf6a651f97d4',1,'dftfe::linearAlgebraOperations']]], + ['rayleighritzgepspectrumsplitdirect_2',['rayleighRitzGEPSpectrumSplitDirect',['../namespacedftfe_1_1linear_algebra_operations.html#a6fecb8b6d7675660b6d9591ae7da2060',1,'dftfe::linearAlgebraOperations']]], + ['rayleighritzspectrumsplitdirect_3',['rayleighRitzSpectrumSplitDirect',['../namespacedftfe_1_1linear_algebra_operations.html#ae4021b3e2cbeae96bdbe4ca9ea11405b',1,'dftfe::linearAlgebraOperations']]], + ['readfile_4',['readFile',['../namespacedftfe_1_1dft_utils.html#a8c6d0d0249775853719a1e599f8fa707',1,'dftfe::dftUtils']]], + ['readkpointdata_5',['readkPointData',['../classdftfe_1_1dft_class.html#a8596fcae2fb3a3d83e78fdc308f2e204',1,'dftfe::dftClass']]], + ['readpsi_6',['readPSI',['../classdftfe_1_1dft_class.html#a6c33260b6f302f475d5c6db342434ca3',1,'dftfe::dftClass']]], + ['readpsifile_7',['readPsiFile',['../namespacedftfe_1_1dft_utils.html#a9cd072ebfa9f0046d25fb14684398796',1,'dftfe::dftUtils']]], + ['readpsiradialvalues_8',['readPSIRadialValues',['../classdftfe_1_1dft_class.html#a4acf0e880792b3652ce955762ad9d733',1,'dftfe::dftClass']]], + ['readrelaxationflagsfile_9',['readRelaxationFlagsFile',['../namespacedftfe_1_1dft_utils.html#aa5f6ccd68e9c4b58e055d60cf7d639fc',1,'dftfe::dftUtils']]], + ['realpart_10',['realPart',['../namespacedftfe_1_1utils.html#af397c74986c0a3da6b343a3f8cfb3d27',1,'dftfe::utils::realPart(const double x)'],['../namespacedftfe_1_1utils.html#a329fee6055d6ab0349e28d73e2cc39cb',1,'dftfe::utils::realPart(const float x)'],['../namespacedftfe_1_1utils.html#a17e0aa81a720251abed8169ac0270117',1,'dftfe::utils::realPart(const std::complex< double > x)'],['../namespacedftfe_1_1utils.html#ac842eff416fd8183670411de8a30bfc4',1,'dftfe::utils::realPart(const std::complex< float > x)']]], + ['realpartdevice_11',['realPartDevice',['../namespacedftfe_1_1utils.html#a7f189677d8a881de936a196765025e32',1,'dftfe::utils::realPartDevice(double a)'],['../namespacedftfe_1_1utils.html#a7ac38ab177210ca02e546c0db8101f5c',1,'dftfe::utils::realPartDevice(float a)'],['../namespacedftfe_1_1utils.html#ae98b64c742276241ee15b1973725ecbd',1,'dftfe::utils::realPartDevice(cuDoubleComplex a)'],['../namespacedftfe_1_1utils.html#a802442d76e55dbea34797983807d3671',1,'dftfe::utils::realPartDevice(cuFloatComplex a)'],['../namespacedftfe_1_1utils.html#a55f60c6c5b9896ac149b5949123b2996',1,'dftfe::utils::realPartDevice(hipDoubleComplex a)'],['../namespacedftfe_1_1utils.html#aa84ed5d5f5aaa9693e423ed1023edaff',1,'dftfe::utils::realPartDevice(hipFloatComplex a)']]], + ['recomputekpointcoordinates_12',['recomputeKPointCoordinates',['../classdftfe_1_1dft_class.html#aa44c7e39b2f8892809421fec346eb1ef',1,'dftfe::dftClass']]], + ['refinementalgorithma_13',['refinementAlgorithmA',['../classdftfe_1_1triangulation_manager.html#a8141ec28ab876d9b78f0e53c6f929e98',1,'dftfe::triangulationManager']]], + ['refineserialmesh_14',['refineSerialMesh',['../classdftfe_1_1triangulation_manager.html#a48ab7214b9743b44274cafc2040d20ba',1,'dftfe::triangulationManager']]], + ['reinit_15',['reinit',['../classdftfe_1_1dftfe_wrapper.html#a223674f555fdac2a0575a997bec81a62',1,'dftfe::dftfeWrapper::reinit(const std::string parameter_file, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const bool setDeviceToMPITaskBindingInternally=false, const std::string solverMode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool useDevice=false)'],['../classdftfe_1_1dftfe_wrapper.html#a80575d34c9b4c151630c6379973dee9a',1,'dftfe::dftfeWrapper::reinit(const std::string parameter_file, const std::string restartCoordsFile, const std::string restartDomainVectorsFile, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const bool setDeviceToMPITaskBindingInternally=false, const std::string solverMode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool useDevice=false, const bool isScfRestart=true)'],['../classdftfe_1_1dftfe_wrapper.html#a2553fb5e2318ca2ea3648d3b15e6f7c5',1,'dftfe::dftfeWrapper::reinit(const MPI_Comm &mpi_comm_parent, const bool useDevice, const std::vector< std::vector< double > > atomicPositionsCart, const std::vector< unsigned int > atomicNumbers, const std::vector< std::vector< double > > cell, const std::vector< bool > pbc, const std::vector< unsigned int > mpGrid=std::vector< unsigned int >{1, 1, 1}, const std::vector< bool > mpGridShift=std::vector< bool >{false, false, false}, const bool spinPolarizedDFT=false, const double startMagnetization=0.0, const double fermiDiracSmearingTemp=500.0, const unsigned int npkpt=0, const double meshSize=0.8, const double scfMixingParameter=0.2, const int verbosity=-1, const bool setDeviceToMPITaskBindingInternally=false)'],['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a2555fdd844fad949d7d75a841ec9cbad',1,'dftfe::basis::FEBasisOperations::reinit()'],['../classdftfe_1_1kerker_solver_problem.html#a298cf5c87f77192ab5bac2e68c21a357',1,'dftfe::kerkerSolverProblem::reinit()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a724dec06ae4d8a465390f9167e487159',1,'dftfe::linearAlgebra::MultiVector::reinit(std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P, const size_type numVectors, const ValueType initVal=0)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a347e3c4efbb0501729f5e38f74993ef3',1,'dftfe::linearAlgebra::MultiVector::reinit(const MultiVector &u)'],['../classdftfe_1_1poisson_solver_problem.html#a9c21522795634534fc53bcc14255d493',1,'dftfe::poissonSolverProblem::reinit()'],['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a1a08450144cb221e7ebaa5cf0ba1a02b',1,'dftfe::ScaLAPACKMatrix::reinit(const size_type n_rows, const size_type n_columns, const std::shared_ptr< const dftfe::ProcessGrid > &process_grid, const size_type row_block_size=32, const size_type column_block_size=32, const dftfe::LAPACKSupport::Property property=dftfe::LAPACKSupport::Property::general)'],['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a1144c2f751a2e2d6245dcde85d9958d1',1,'dftfe::ScaLAPACKMatrix::reinit(const size_type size, const std::shared_ptr< const dftfe::ProcessGrid > &process_grid, const size_type block_size=32, const dftfe::LAPACKSupport::Property property=dftfe::LAPACKSupport::Property::hermitian)']]], + ['reinitializeconstraints_16',['reinitializeConstraints',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a6026d5afb2ab06ce56e99998079cd1d9',1,'dftfe::basis::FEBasisOperations']]], + ['reinitializekohnshamdftoperator_17',['reInitializeKohnShamDFTOperator',['../classdftfe_1_1dft_class.html#aba391a33f542093d6c8f41ff3f212dd5',1,'dftfe::dftClass']]], + ['reinitkpointspinindex_18',['reinitkPointSpinIndex',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a0fbe3c558527a4dff6c59d66996f0874',1,'dftfe::KohnShamHamiltonianOperator::reinitkPointSpinIndex()'],['../classdftfe_1_1operator_d_f_t_class.html#a9a4a04e828f75df6a46e256686ca9540',1,'dftfe::operatorDFTClass::reinitkPointSpinIndex()']]], + ['reinitnumberwavefunctions_19',['reinitNumberWavefunctions',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a9188e221451eac13c160b1c51daf5bc9',1,'dftfe::KohnShamHamiltonianOperator::reinitNumberWavefunctions()'],['../classdftfe_1_1operator_d_f_t_class.html#abd939e3a66659160b7905cbfa6bc9054',1,'dftfe::operatorDFTClass::reinitNumberWavefunctions()']]], + ['reinitspectrumbounds_20',['reinitSpectrumBounds',['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#a34cc1a9a57e84e79e392841219886fff',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver']]], + ['rescalevelocities_21',['RescaleVelocities',['../classdftfe_1_1molecular_dynamics_class.html#a9f064dae8f3c00a23ba58b69c88609cd',1,'dftfe::molecularDynamicsClass']]], + ['resetextpothamflag_22',['resetExtPotHamFlag',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#afdbddb11a3ace28ad6952fad4079e0e4',1,'dftfe::KohnShamHamiltonianOperator']]], + ['resetmesh_23',['resetMesh',['../classdftfe_1_1triangulation_manager.html#a8d10e3842e326bd523d3d9401038ce32',1,'dftfe::triangulationManager']]], + ['resetrhonodalin_24',['resetRhoNodalIn',['../classdftfe_1_1dft_class.html#ac26846b6572f55561d77c40012d1c190',1,'dftfe::dftClass::resetRhoNodalIn()'],['../classdftfe_1_1dft_base.html#afb55667a7521ffe8a6b6aebce139ebc3',1,'dftfe::dftBase::resetRhoNodalIn()']]], + ['resetrhonodalsplitin_25',['resetRhoNodalSplitIn',['../classdftfe_1_1dft_class.html#a53e2f7fa31f3e73abb7363f956940630',1,'dftfe::dftClass::resetRhoNodalSplitIn()'],['../classdftfe_1_1dft_base.html#a62350a0841630fdbebac2931d15439da',1,'dftfe::dftBase::resetRhoNodalSplitIn()']]], + ['reshapefromnonaffinelayoutdevice_26',['reshapeFromNonAffineLayoutDevice',['../namespacedftfe_1_1basis_1_1_f_e_basis_operations_kernels_internal.html#aee12d773ebf2949e76d8f40b3fac02b1',1,'dftfe::basis::FEBasisOperationsKernelsInternal']]], + ['reshapefromnonaffinelayouthost_27',['reshapeFromNonAffineLayoutHost',['../namespacedftfe_1_1basis_1_1_f_e_basis_operations_kernels_internal.html#a0a3bc76ad5707d45ce032980d19495da',1,'dftfe::basis::FEBasisOperationsKernelsInternal']]], + ['reshapetononaffinelayoutdevice_28',['reshapeToNonAffineLayoutDevice',['../namespacedftfe_1_1basis_1_1_f_e_basis_operations_kernels_internal.html#a81d330766db87e6886c37fea075f1c66',1,'dftfe::basis::FEBasisOperationsKernelsInternal']]], + ['reshapetononaffinelayouthost_29',['reshapeToNonAffineLayoutHost',['../namespacedftfe_1_1basis_1_1_f_e_basis_operations_kernels_internal.html#a334ae3fcc83b7cd866c84b991d91c824',1,'dftfe::basis::FEBasisOperationsKernelsInternal']]], + ['resize_30',['resize',['../classdftfe_1_1utils_1_1_memory_storage.html#a444af8c7c6a92f83b0db6422075ac9b8',1,'dftfe::utils::MemoryStorage']]], + ['resizetempstorage_31',['resizeTempStorage',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a486122211d001f6d82c77176540784f6',1,'dftfe::basis::FEBasisOperations']]], + ['returnnormedvector_32',['ReturnNormedVector',['../classdftfe_1_1nudged_elastic_band_class.html#af06d3ee71b8a7e14e22ad540b6bf0950',1,'dftfe::nudgedElasticBandClass']]], + ['rhofieldinnerproduct_33',['rhofieldInnerProduct',['../classdftfe_1_1dft_class.html#a018c5f6c8e157fb0514bc4fe164fd718',1,'dftfe::dftClass']]], + ['rhofieldl2norm_34',['rhofieldl2Norm',['../classdftfe_1_1dft_class.html#a5fea4f6d292db28e63027eae61039503',1,'dftfe::dftClass']]], + ['run_35',['run',['../classdftfe_1_1dft_class.html#a4e674d1a1b488744ce10ba62e34d3dde',1,'dftfe::dftClass::run()'],['../classdftfe_1_1dft_base.html#a6a270166bb2f8dabcefa1cb7fabe58f9',1,'dftfe::dftBase::run()'],['../classdftfe_1_1dftfe_wrapper.html#a2d719af7bc23d4e4f471f9844f65074b',1,'dftfe::dftfeWrapper::run()'],['../classdftfe_1_1geo_opt_cell.html#a535b250bcee9c5f61a778238bd8a520a',1,'dftfe::geoOptCell::run()'],['../classdftfe_1_1geo_opt_ion.html#a75dbb301294056cd8e231513ffdb3984',1,'dftfe::geoOptIon::run()']]], + ['runmd_36',['runMD',['../classdftfe_1_1molecular_dynamics_class.html#ad50b54b4bc6f8afc490783ca7e92ad44',1,'dftfe::molecularDynamicsClass']]], + ['runopt_37',['runOpt',['../classdftfe_1_1geometry_optimization_class.html#a654861464517f6da7cb0be690bf1d2a7',1,'dftfe::geometryOptimizationClass']]], + ['runparameters_38',['runParameters',['../classdftfe_1_1run_parameters.html#ace05f085e50a0485502d8103cf6aa060',1,'dftfe::runParameters']]] +]; diff --git a/search/functions_12.js b/search/functions_12.js new file mode 100644 index 000000000..0d03e049e --- /dev/null +++ b/search/functions_12.js @@ -0,0 +1,66 @@ +var searchData= +[ + ['sadd_0',['sadd',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#aec239aa3014c3d36113e399632af8d13',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['save_1',['save',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a6d8501e5df74bcb6c921272fcb3b1936',1,'dftfe::BFGSNonLinearSolver::save()'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a189f6b2553901b5c64160b0b7be40f9a',1,'dftfe::cgPRPNonLinearSolver::save()'],['../classdftfe_1_1geo_opt_cell.html#a889f90082046defab1e68c1ff044c5ce',1,'dftfe::geoOptCell::save()'],['../classdftfe_1_1geo_opt_ion.html#afd5d287723853e77bf8411904cecd8da',1,'dftfe::geoOptIon::save()'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a35ce4645d180db0f1df68f38b8656bae',1,'dftfe::LBFGSNonLinearSolver::save()'],['../classdftfe_1_1non_linear_solver.html#aa81440478681e39d87f3665e4a62b7c6',1,'dftfe::nonLinearSolver::save()'],['../classdftfe_1_1nonlinear_solver_problem.html#aef5a7d70f38f60fc254553b3cf42c12d',1,'dftfe::nonlinearSolverProblem::save()'],['../classdftfe_1_1nudged_elastic_band_class.html#af51109e0dd719061f6032f308045e17e',1,'dftfe::nudgedElasticBandClass::save()']]], + ['savesupporttriangulations_2',['saveSupportTriangulations',['../classdftfe_1_1triangulation_manager.html#a5403284760785c6ce4c9ea9a92c7d296',1,'dftfe::triangulationManager']]], + ['savetriainfoandrhonodaldata_3',['saveTriaInfoAndRhoNodalData',['../classdftfe_1_1dft_class.html#a1c12b12cc1ed6b7b3ff78cdadef22130',1,'dftfe::dftClass']]], + ['savetriangulationssolutionvectors_4',['saveTriangulationsSolutionVectors',['../classdftfe_1_1triangulation_manager.html#a40210727e959e453c3f51950816a4a27',1,'dftfe::triangulationManager']]], + ['scalapackmatrix_5',['ScaLAPACKMatrix',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a877a61dc7a8aa371b9f7655268cf4cd3',1,'dftfe::ScaLAPACKMatrix::ScaLAPACKMatrix(const size_type n_rows, const size_type n_columns, const std::shared_ptr< const dftfe::ProcessGrid > &process_grid, const size_type row_block_size=32, const size_type column_block_size=32, const dftfe::LAPACKSupport::Property property=dftfe::LAPACKSupport::Property::general)'],['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a6025e77abed29ca914a56ae5e11f00e0',1,'dftfe::ScaLAPACKMatrix::ScaLAPACKMatrix(const size_type size, const std::shared_ptr< const dftfe::ProcessGrid > &process_grid, const size_type block_size=32, const dftfe::LAPACKSupport::Property property=dftfe::LAPACKSupport::Property::hermitian)']]], + ['scale_6',['scale',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a38f37020fabce832e4420917297a8c13',1,'dftfe::linearAlgebra::MultiVector']]], + ['scale_5fcolumns_7',['scale_columns',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#aab1e407c313486935ec3721ab3a964f8',1,'dftfe::ScaLAPACKMatrix']]], + ['scale_5fcolumns_5frealfactors_8',['scale_columns_realfactors',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a8bc3849a2ce63c21eff33ed6c31ce0b3',1,'dftfe::ScaLAPACKMatrix']]], + ['scale_5frows_9',['scale_rows',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#af2a0e3fdc8f1fd82872b936b8f411512',1,'dftfe::ScaLAPACKMatrix']]], + ['scale_5frows_5frealfactors_10',['scale_rows_realfactors',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a9281a7b0cfbe3a779e09aa5312229488',1,'dftfe::ScaLAPACKMatrix']]], + ['scaleandadd_11',['scaleAndAdd',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a9ce3abbe60bf23a9fc6007bed302251b',1,'dftfe::linearAlgebra::MultiVector']]], + ['scalehessian_12',['scaleHessian',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a0ee49a85038fccb65c54130e438e41e9',1,'dftfe::BFGSNonLinearSolver']]], + ['scalepreconditioner_13',['scalePreconditioner',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#aa2573093fc0b5b767e2163821b9fa76f',1,'dftfe::LBFGSNonLinearSolver']]], + ['scalescalapackmat_14',['scaleScaLAPACKMat',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a735a697df81b760e87196b3e137420e8',1,'dftfe::linearAlgebraOperations::internal']]], + ['send_5fto_5finactive_15',['send_to_inactive',['../classdftfe_1_1_process_grid.html#a525019deaeb398b8b9e954bad8a6eae6',1,'dftfe::ProcessGrid']]], + ['set_16',['set',['../classdftfe_1_1dft_class.html#af80af253ca8d462a2cb4ebbf8ebb9f67',1,'dftfe::dftClass::set()'],['../classdftfe_1_1dft_base.html#abc1f4594ddf0955da8e160b054e44a38',1,'dftfe::dftBase::set()'],['../classdftfe_1_1utils_1_1_memory_manager.html#ad5d17986a3964b33f5aa37d15e4ccce7',1,'dftfe::utils::MemoryManager::set()'],['../classdftfe_1_1utils_1_1_memory_manager_3_01_value_type_00_01_memory_space_1_1_h_o_s_t_01_4.html#aff907288187735001abc95b677255651',1,'dftfe::utils::MemoryManager< ValueType, MemorySpace::HOST >::set()'],['../classdftfe_1_1molecular_dynamics_class.html#a5d9444743904b5a324352e68de6c98b4',1,'dftfe::molecularDynamicsClass::set()'],['../classdftfe_1_1nudged_elastic_band_class.html#a62c297ceaf7e870e89559802abdd8580',1,'dftfe::nudgedElasticBandClass::set()']]], + ['set_5fproperty_17',['set_property',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a5c7da23c4243e9ace668a66239039bed',1,'dftfe::ScaLAPACKMatrix']]], + ['set_5fzero_18',['set_zero',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a857dd4a4d359b78e4a9ad64443bfa024',1,'dftfe::dftUtils::constraintMatrixInfo::set_zero(distributedCPUVec< T > &fieldVector, const unsigned int blockSize) const'],['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a618f6a084061f21f792c4dc764d73a2d',1,'dftfe::dftUtils::constraintMatrixInfo::set_zero(distributedCPUMultiVec< T > &fieldVector) const']]], + ['setautoparameters_19',['setAutoParameters',['../classdftfe_1_1dft_parameters.html#a4eb986c625ed4f9d706634d028ae4812',1,'dftfe::dftParameters']]], + ['setcommunicationprecision_20',['setCommunicationPrecision',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a3c90763aa8e044d4daa30aaa256e4502',1,'dftfe::utils::mpi::MPICommunicatorP2P::setCommunicationPrecision()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a24faaf13496ca9aafbf73796d29e6a9b',1,'dftfe::linearAlgebra::MultiVector::setCommunicationPrecision()']]], + ['setimagecoordinates_21',['setImageCoordinates',['../classdftfe_1_1_atom_centered_spherical_function_container.html#ae522ff49322e46da45bf6b1c967d7829',1,'dftfe::AtomCenteredSphericalFunctionContainer::setImageCoordinates()'],['../classdftfe_1_1oncv_class.html#a614b124743e0d485d7d64b878e426a1e',1,'dftfe::oncvClass::setImageCoordinates()']]], + ['setupelpahandleparameters_22',['setupELPAHandleParameters',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#af89cc23ee6f73c883aa9118a960de7a3',1,'dftfe::linearAlgebraOperations::internal']]], + ['setvalue_23',['setValue',['../classdftfe_1_1utils_1_1_memory_storage.html#ac04a60dba8d4cda976bcad4c1af8c4d5',1,'dftfe::utils::MemoryStorage::setValue()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a00bc8e3854065e263e3a6551310088fc',1,'dftfe::linearAlgebra::MultiVector::setValue()']]], + ['shapefunctionbasisdata_24',['shapeFunctionBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a4c39e8dc65470249cc63a83053443859',1,'dftfe::basis::FEBasisOperations']]], + ['shapefunctiondata_25',['shapeFunctionData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#af1c510984eb0b62540b6a3fd321babe5',1,'dftfe::basis::FEBasisOperations']]], + ['shapefunctiongradientbasisdata_26',['shapeFunctionGradientBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#af6e5362d54d03bd387b8cb12447b851e',1,'dftfe::basis::FEBasisOperations']]], + ['shapefunctiongradientdata_27',['shapeFunctionGradientData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a6d30e6517f8eb90d6ba6c4ff19b5932f',1,'dftfe::basis::FEBasisOperations']]], + ['signallocalsendcompletion_28',['signalLocalSendCompletion',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#ae6eb820306e12ee181fed52c1436acf7',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['size_29',['size',['../classdftfe_1_1utils_1_1_memory_storage.html#a8eb4504f8bee0b28881f0d65604f9f7e',1,'dftfe::utils::MemoryStorage::size()'],['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#ab2f86bd20cdb8d62c3d90555d274aafc',1,'dftfe::pseudoUtils::PeriodicTable::size()']]], + ['smearedcharge_30',['smearedCharge',['../namespacedftfe_1_1dft_utils.html#ab40366b16eed96067c605074c9ed4f07',1,'dftfe::dftUtils']]], + ['smearedchargedr_31',['smearedChargeDr',['../namespacedftfe_1_1dft_utils.html#a46110cc38e1a2d4cccfa5fcad5969791',1,'dftfe::dftUtils']]], + ['smearedpot_32',['smearedPot',['../namespacedftfe_1_1dft_utils.html#a15c9bd0524aa6c965278c90c8ff0d18c',1,'dftfe::dftUtils']]], + ['smearedpotdr_33',['smearedPotDr',['../namespacedftfe_1_1dft_utils.html#a209b19b28e8259ac7e0cd5dcc99704ac',1,'dftfe::dftUtils']]], + ['solution_34',['solution',['../classdftfe_1_1geo_opt_cell.html#a0b63235c81c90ac29c3cf07ff5b496d7',1,'dftfe::geoOptCell::solution()'],['../classdftfe_1_1geo_opt_ion.html#a513ee21951cdd9114752f43e6b045010',1,'dftfe::geoOptIon::solution()'],['../classdftfe_1_1nonlinear_solver_problem.html#a57432a0cd4697e3af47a04923c481ef9',1,'dftfe::nonlinearSolverProblem::solution()'],['../classdftfe_1_1nudged_elastic_band_class.html#a0980b28edb852b0b34a31d55c060b896',1,'dftfe::nudgedElasticBandClass::solution()']]], + ['solve_35',['solve',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a4834be342d730c5536c1c60c4b457bf4',1,'dftfe::BFGSNonLinearSolver::solve()'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a978ed675629e3570f2e6702a5d9bfcef',1,'dftfe::cgPRPNonLinearSolver::solve()'],['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#a09742c63c594a478ccaddc4412e7734a',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::solve(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, elpaScalaManager &elpaScala, dataTypes::number *eigenVectorsFlattened, dataTypes::number *eigenVectorsRotFracDensityFlattened, const unsigned int totalNumberWaveFunctions, const unsigned int localVectorSize, std::vector< double > &eigenValues, std::vector< double > &residuals, const MPI_Comm &interBandGroupComm, const MPI_Comm &mpiCommDomain, const bool computeResidual, const bool useMixedPrec=false, const bool isFirstScf=false)'],['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#a2f88acd848cb89f098ddc82799da0325',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver::solve(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, std::vector< distributedCPUVec< double > > &eigenVectors, std::vector< double > &eigenValues, std::vector< double > &residuals)'],['../classdftfe_1_1dealii_linear_solver.html#afeb3a3fd987a6c8dbfd070511edc11a5',1,'dftfe::dealiiLinearSolver::solve()'],['../classdftfe_1_1dft_class.html#a44c4ac530ac581a68d4aebba4dfefc4b',1,'dftfe::dftClass::solve()'],['../classdftfe_1_1dft_base.html#abd320fa08778b4b1bc46e837b5f1ccbb',1,'dftfe::dftBase::solve()'],['../classdftfe_1_1eigen_solver_class.html#acca612f89cfdedc15809d8e496592b9a',1,'dftfe::eigenSolverClass::solve()'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#afad3f1e3e7313d118fc1d2a124b2e10f',1,'dftfe::LBFGSNonLinearSolver::solve()'],['../classdftfe_1_1linear_solver.html#a1408df7f509ce8bdd7dad94ff19b6050',1,'dftfe::linearSolver::solve()'],['../classdftfe_1_1non_linear_solver.html#a2e2d921bc700a699ba30165cf78d212a',1,'dftfe::nonLinearSolver::solve()']]], + ['solvenoscf_36',['solveNoSCF',['../classdftfe_1_1dft_class.html#a6bdb1e539086424659b69727b89d1a19',1,'dftfe::dftClass']]], + ['solvevselfinbins_37',['solveVselfInBins',['../classdftfe_1_1vself_bins_manager.html#a59cb9728687be03b06be69786ef5ec64',1,'dftfe::vselfBinsManager']]], + ['solvevselfinbinsperturbeddomain_38',['solveVselfInBinsPerturbedDomain',['../classdftfe_1_1vself_bins_manager.html#ac07ffae341183478cedc5d94dd007720',1,'dftfe::vselfBinsManager']]], + ['sqrtmassvector_39',['sqrtMassVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a7aaf5c5d938594f16b9d59cc2ac4cd98',1,'dftfe::basis::FEBasisOperations']]], + ['sqrtmassvectorbasisdata_40',['sqrtMassVectorBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ae1f68723dc3a7c14b7dac7f97be56eee',1,'dftfe::basis::FEBasisOperations']]], + ['startlocalsend_41',['startLocalSend',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#aaa5098493d6e441db02af3e9c3e58315',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['state_5fname_42',['state_name',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a1ad6cab489e9639b5217b1d344e4ca7a',1,'dftfe::LAPACKSupport']]], + ['stressenlelementalcontribution_43',['stressEnlElementalContribution',['../classdftfe_1_1force_class.html#a72c6d9d107c5def20b29a335f2376456',1,'dftfe::forceClass']]], + ['stridedblockscale_44',['stridedBlockScale',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a470fcd5d521b497846e7add1803c25d2',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['stridedblockscalecopy_45',['stridedBlockScaleCopy',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#ab2af86eb85f5738fd3648f4b577f3a3f',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['stridedcopyconstantstride_46',['stridedCopyConstantStride',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#aeb37641a405cfb850658204f3706c33d',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['stridedcopyfromblock_47',['stridedCopyFromBlock',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#ad3fea279c3f93e2f5e13fe06faf8e043',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['stridedcopyfromblockconstantstride_48',['stridedCopyFromBlockConstantStride',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a9714f4fec3365cf4448895d0df17ba39',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['stridedcopytoblock_49',['stridedCopyToBlock',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a2f053b099d89a66b57aadf216994c869',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['stridedcopytoblockconstantstride_50',['stridedCopyToBlockConstantStride',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#ae81ecddd6a8a9df62283a11a548ab8e6',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['sub_51',['sub',['../namespacedftfe_1_1utils.html#af285b0f352d9ea596a066217c1dea45c',1,'dftfe::utils::sub(unsigned int a, unsigned int b)'],['../namespacedftfe_1_1utils.html#a1699f57dc042ff557bbfa7a4e7e23df4',1,'dftfe::utils::sub(unsigned long int a, unsigned long int b)'],['../namespacedftfe_1_1utils.html#a744899fe3b270ebc6edb4b69e421f388',1,'dftfe::utils::sub(int a, int b)'],['../namespacedftfe_1_1utils.html#aa6d08db45bf1cf423ffa40bac9ce9d81',1,'dftfe::utils::sub(double a, double b)'],['../namespacedftfe_1_1utils.html#aef3b80be11f8a00381b3ebceda0c624c',1,'dftfe::utils::sub(float a, float b)'],['../namespacedftfe_1_1utils.html#a4579dcf361aa52d65dcc250cde628587',1,'dftfe::utils::sub(cuDoubleComplex a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#ad93526c8e042450872672c296ba335ec',1,'dftfe::utils::sub(cuFloatComplex a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#a56029a4638d183d7e4ed7738dd0ddf44',1,'dftfe::utils::sub(hipDoubleComplex a, hipDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a139302928ca4fa468b8ddbf545ff385b',1,'dftfe::utils::sub(hipFloatComplex a, hipFloatComplex b)']]], + ['subscribe_52',['subscribe',['../classdftfe_1_1dealii_linear_solver_problem.html#abe9cc5ee76771f260dc527db4b4dc159',1,'dftfe::dealiiLinearSolverProblem::subscribe()'],['../classdftfe_1_1kerker_solver_problem.html#a6a60087b1bb2c42fe475276086bd92ab',1,'dftfe::kerkerSolverProblem::subscribe()'],['../classdftfe_1_1poisson_solver_problem.html#a0a57b1ab7a21ed34cd62c73ce3cc2404',1,'dftfe::poissonSolverProblem::subscribe()']]], + ['subspacerotation_53',['subspaceRotation',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a68bad9fd7afb389abf78b37629efd9e5',1,'dftfe::linearAlgebraOperations::internal']]], + ['subspacerotationcgsmixedprec_54',['subspaceRotationCGSMixedPrec',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a23ba10da48e0fb28d232bee3c9df411f',1,'dftfe::linearAlgebraOperations::internal']]], + ['subspacerotationmixedprec_55',['subspaceRotationMixedPrec',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a6d03dd66f5aaf2768bc1af6f8362cf3d',1,'dftfe::linearAlgebraOperations::internal']]], + ['subspacerotationspectrumsplit_56',['subspaceRotationSpectrumSplit',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a0905baf1d7c457180580c64f1a57d2ed',1,'dftfe::linearAlgebraOperations::internal']]], + ['subspacerotationspectrumsplitmixedprec_57',['subspaceRotationSpectrumSplitMixedPrec',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#afbf8d821857e0f111897ecdb8ce4db5a',1,'dftfe::linearAlgebraOperations::internal']]], + ['sumacrossintercommscalapackmat_58',['sumAcrossInterCommScaLAPACKMat',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#abbb04264506d10f84faf370ff41e9622',1,'dftfe::linearAlgebraOperations::internal']]], + ['svr_59',['svr',['../classdftfe_1_1molecular_dynamics_class.html#a252129e528db8582e34c17d0213bde86',1,'dftfe::molecularDynamicsClass']]], + ['swap_60',['swap',['../classdftfe_1_1utils_1_1_memory_storage.html#a673649b25448f73587021f756761aea0',1,'dftfe::utils::MemoryStorage::swap()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ac32ddffd17246347c688558d7cd48800',1,'dftfe::linearAlgebra::MultiVector::swap()']]], + ['symbol_61',['symbol',['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#a56c0dd3d4fba24fc42ec38e9311b2b4e',1,'dftfe::pseudoUtils::PeriodicTable']]], + ['symmetryclass_62',['symmetryClass',['../classdftfe_1_1symmetry_class.html#a556d7787d6fddc47747b3f1322865ae8',1,'dftfe::symmetryClass']]] +]; diff --git a/search/functions_13.js b/search/functions_13.js new file mode 100644 index 000000000..fe27032d5 --- /dev/null +++ b/search/functions_13.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['thisprocessid_0',['thisProcessId',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a2c31fb840cc600d3bceeacb368869b5c',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['throwexception_1',['throwException',['../namespacedftfe_1_1utils.html#a1e850c2ac1993e0c5b5677ecb4a49cd2',1,'dftfe::utils::throwException(bool condition, std::string msg="")'],['../namespacedftfe_1_1utils.html#ac54eca2707f27846f6964e10d603688e',1,'dftfe::utils::throwException(bool condition, std::string msg="")']]], + ['tmmult_2',['Tmmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a6f9a582f73de96239b2ffa4ead2934cd',1,'dftfe::ScaLAPACKMatrix']]], + ['tmtmult_3',['TmTmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#aac663b0fe6a673b3fef08226fdd24d9b',1,'dftfe::ScaLAPACKMatrix']]], + ['totalcharge_4',['totalCharge',['../classdftfe_1_1dft_class.html#aa6cd3e25aadba469e06f1c48f436d33a',1,'dftfe::dftClass::totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const distributedCPUVec< double > &rhoNodalField)'],['../classdftfe_1_1dft_class.html#a4898cf7ada220657c49787b354195d1b',1,'dftfe::dftClass::totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const std::map< dealii::CellId, std::vector< double > > *rhoQuadValues)'],['../classdftfe_1_1dft_class.html#a216a212b614055c667e1abab31655bc1',1,'dftfe::dftClass::totalCharge(const dealii::DoFHandler< 3 > &dofHandlerOfField, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoQuadValues)'],['../classdftfe_1_1dft_class.html#a6359281a53ca834231d91c5a64666e4f',1,'dftfe::dftClass::totalCharge(const dealii::MatrixFree< 3, double > &matrixFreeDataObject, const distributedCPUVec< double > &rhoNodalField)']]], + ['totalmagnetization_5',['totalMagnetization',['../classdftfe_1_1dft_class.html#aa09751f6845b52d425bdbe757f1087f8',1,'dftfe::dftClass']]], + ['transform_6',['transform',['../classdftfe_1_1mesh_movement_affine_transform.html#a6385bbaa67561110576ecf617d59a05d',1,'dftfe::meshMovementAffineTransform']]], + ['transformdomainboundingvectors_7',['transformDomainBoundingVectors',['../namespacedftfe_1_1dft_utils.html#a1f7afbc91240286b736b7d5b8b44114c',1,'dftfe::dftUtils']]], + ['triangulationmanager_8',['triangulationManager',['../classdftfe_1_1triangulation_manager.html#a17674b06487db0d720498947732c0f18',1,'dftfe::triangulationManager']]], + ['trivialsolveforstress_9',['trivialSolveForStress',['../classdftfe_1_1dft_class.html#a44940d629d757b238a3aaf2e90cb4f5f',1,'dftfe::dftClass::trivialSolveForStress()'],['../classdftfe_1_1dft_base.html#ab876a152d60a2dcd491f5f308226d947',1,'dftfe::dftBase::trivialSolveForStress()']]] +]; diff --git a/search/functions_14.js b/search/functions_14.js new file mode 100644 index 000000000..72c82cf70 --- /dev/null +++ b/search/functions_14.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['unsubscribe_0',['unsubscribe',['../classdftfe_1_1dealii_linear_solver_problem.html#a2adfa6e44f7621deee1024fd19d43cc6',1,'dftfe::dealiiLinearSolverProblem::unsubscribe()'],['../classdftfe_1_1kerker_solver_problem.html#afc73ee344193c5b99b52b344b2a8b1dc',1,'dftfe::kerkerSolverProblem::unsubscribe()'],['../classdftfe_1_1poisson_solver_problem.html#aac807806fb5ed86456b47b8b2898a729',1,'dftfe::poissonSolverProblem::unsubscribe()']]], + ['update_1',['update',['../classdftfe_1_1geo_opt_cell.html#af2cf10b9c50558d82db94539ec927383',1,'dftfe::geoOptCell::update()'],['../classdftfe_1_1geo_opt_ion.html#ac3241159eaff329289b6f0a78d84ebde',1,'dftfe::geoOptIon::update()'],['../classdftfe_1_1nonlinear_solver_problem.html#a81ca4f3595908a92b64750edcd6b1068',1,'dftfe::nonlinearSolverProblem::update()'],['../classdftfe_1_1nudged_elastic_band_class.html#a6d2d620d1855c1bf06764c5999e24823',1,'dftfe::nudgedElasticBandClass::update()']]], + ['updateatompositions_2',['updateAtomPositions',['../classdftfe_1_1dftfe_wrapper.html#a26c0c96d12c27974a83df8ef07f79c57',1,'dftfe::dftfeWrapper']]], + ['updateatompositionsandmovemesh_3',['updateAtomPositionsAndMoveMesh',['../classdftfe_1_1dft_class.html#a3d22fd6c8d30e469545ed8ad23b96554',1,'dftfe::dftClass::updateAtomPositionsAndMoveMesh()'],['../classdftfe_1_1dft_base.html#a141f823163a2e85369902c4b9dd67b1a',1,'dftfe::dftBase::updateAtomPositionsAndMoveMesh()']]], + ['updatebinsbc_4',['updateBinsBc',['../classdftfe_1_1vself_bins_manager.html#ae1227aa5898f520d3551197a986830ec',1,'dftfe::vselfBinsManager']]], + ['updatedirection_5',['updateDirection',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#ab7a2a4652b7421c2e990c6949de40ba5',1,'dftfe::cgPRPNonLinearSolver']]], + ['updateghostvalues_6',['updateGhostValues',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#af58c204da503454f522e84a50cb36298',1,'dftfe::utils::mpi::MPICommunicatorP2P::updateGhostValues()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ab399344072370e4a44f9f10d3ad86078',1,'dftfe::linearAlgebra::MultiVector::updateGhostValues()']]], + ['updateghostvaluesbegin_7',['updateGhostValuesBegin',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a7b196d90bc4055d62ea776ca92405d61',1,'dftfe::utils::mpi::MPICommunicatorP2P::updateGhostValuesBegin()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a15b81174350826d4fb17daa2d647b283',1,'dftfe::linearAlgebra::MultiVector::updateGhostValuesBegin()']]], + ['updateghostvaluesend_8',['updateGhostValuesEnd',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#ad94b8d8494b97a202315dfb6cb5cf2da',1,'dftfe::utils::mpi::MPICommunicatorP2P::updateGhostValuesEnd()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ab4f724ffa1de3a529952337d29b52a4c',1,'dftfe::linearAlgebra::MultiVector::updateGhostValuesEnd()']]], + ['updatehessian_9',['updateHessian',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#ab93ec934e140490c13187f971e9ccab6',1,'dftfe::BFGSNonLinearSolver']]], + ['updatehistory_10',['updateHistory',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a2c934cdf608b9ddb6be3a6cacc9c61bf',1,'dftfe::LBFGSNonLinearSolver']]], + ['updateprefinedconstraints_11',['updatePRefinedConstraints',['../classdftfe_1_1dft_class.html#a61c479407cab991f2a711b5c0347e868',1,'dftfe::dftClass']]], + ['updatesolution_12',['updateSolution',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a315d10d82309b48b1ad0ac3511bb42c7',1,'dftfe::BFGSNonLinearSolver::updateSolution()'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#ad10d1d9390073a7ad836f7a3dc9b24dc',1,'dftfe::cgPRPNonLinearSolver::updateSolution()'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#add50753c3cdc48bd5142d2130d1e109c',1,'dftfe::LBFGSNonLinearSolver::updateSolution()']]], + ['updatetriangulationvertices_13',['updateTriangulationVertices',['../classdftfe_1_1mesh_movement_class.html#a392861a690db2ee6bf4e35163f8a9593',1,'dftfe::meshMovementClass']]], + ['updatewavefunctiondependentvxc_14',['updateWaveFunctionDependentVxc',['../classdftfe_1_1exc_wavefunction_base_class.html#a8a585768d28efc491d74ea4824d7d989',1,'dftfe::excWavefunctionBaseClass::updateWaveFunctionDependentVxc()'],['../classdftfe_1_1exc_wavefunction_none_class.html#aa2166320920b4fb3387f69a63df979a8',1,'dftfe::excWavefunctionNoneClass::updateWaveFunctionDependentVxc()']]] +]; diff --git a/search/functions_15.js b/search/functions_15.js new file mode 100644 index 000000000..3eb48233b --- /dev/null +++ b/search/functions_15.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['value_0',['value',['../classdftfe_1_1geo_opt_cell.html#a4c8bab0fb3292edf21e95b2f98ce6666',1,'dftfe::geoOptCell::value()'],['../classdftfe_1_1geo_opt_ion.html#afdee89ce7340c9c604658b85a8ccf2d2',1,'dftfe::geoOptIon::value()'],['../classdftfe_1_1nonlinear_solver_problem.html#a3448d983593e8e98ee594e4285f1f465',1,'dftfe::nonlinearSolverProblem::value()'],['../classdftfe_1_1nudged_elastic_band_class.html#a4ff4c252d4769546fe6a23bd8f83880d',1,'dftfe::nudgedElasticBandClass::value()']]], + ['velocityverlet_1',['velocityVerlet',['../classdftfe_1_1molecular_dynamics_class.html#a055c38d818be180209967c1f3ac74050',1,'dftfe::molecularDynamicsClass']]], + ['verifycheckpointfileexists_2',['verifyCheckpointFileExists',['../namespacedftfe_1_1dft_utils.html#afbe78d7b628af457584ee707df366389',1,'dftfe::dftUtils']]], + ['vmult_3',['vmult',['../classdftfe_1_1dealii_linear_solver_problem.html#a03582fba7da4265a5f0e7352b65e5f6a',1,'dftfe::dealiiLinearSolverProblem::vmult()'],['../classdftfe_1_1kerker_solver_problem.html#a06bf14022e33615f5110a837d2660089',1,'dftfe::kerkerSolverProblem::vmult()'],['../classdftfe_1_1poisson_solver_problem.html#aa2752779731f4902b07ec96fa4b941e9',1,'dftfe::poissonSolverProblem::vmult()']]], + ['vselfbinsmanager_4',['vselfBinsManager',['../classdftfe_1_1vself_bins_manager.html#ac1d6f042d3dc7994a99ee3ef3bdfb7b9',1,'dftfe::vselfBinsManager']]] +]; diff --git a/search/functions_16.js b/search/functions_16.js new file mode 100644 index 000000000..fd76abe7a --- /dev/null +++ b/search/functions_16.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['wfccontractionsforcekernelsallh_0',['wfcContractionsForceKernelsAllH',['../namespacedftfe_1_1force.html#a294d942d6dd7f9cc3b96a52ca8a2cf22',1,'dftfe::force']]], + ['writebands_1',['writeBands',['../classdftfe_1_1dft_class.html#adadb52f82725a15c06a575cf7630c9e9',1,'dftfe::dftClass']]], + ['writedata_2',['writeData',['../classdftfe_1_1dft_utils_1_1_m_p_i_write_on_file.html#a6ae19a4cb6c3303caf0a22caeed07e2e',1,'dftfe::dftUtils::MPIWriteOnFile']]], + ['writedataintofile_3',['writeDataIntoFile',['../namespacedftfe_1_1dft_utils.html#ab7d8213bb53782772df6daaaddcc3fc5',1,'dftfe::dftUtils::writeDataIntoFile(const std::vector< std::vector< double > > &data, const std::string &fileName, const MPI_Comm &mpi_comm_parent)'],['../namespacedftfe_1_1dft_utils.html#a9ba81968d244114bab6bbaccbe64bdfd',1,'dftfe::dftUtils::writeDataIntoFile(const std::vector< std::vector< double > > &data, const std::string &fileName)']]], + ['writedatavtuparallellowestpoolid_4',['writeDataVTUParallelLowestPoolId',['../namespacedftfe_1_1dft_utils.html#ab2d0c7684eb485e417ddfb8a1c945836',1,'dftfe::dftUtils']]], + ['writedomainandatomcoordinates_5',['writeDomainAndAtomCoordinates',['../classdftfe_1_1dft_class.html#a3918d3472b084f92f7dd8735461a0daa',1,'dftfe::dftClass::writeDomainAndAtomCoordinates()'],['../classdftfe_1_1dft_class.html#a21182a87d79cef7d6100bde2bf9c436e',1,'dftfe::dftClass::writeDomainAndAtomCoordinates(const std::string Path) const'],['../classdftfe_1_1dft_base.html#a73d4175a99cc0ab5375bc71e46aea450',1,'dftfe::dftBase::writeDomainAndAtomCoordinates()=0'],['../classdftfe_1_1dft_base.html#ac7b6118827a36904146178af3426c3ef',1,'dftfe::dftBase::writeDomainAndAtomCoordinates(const std::string Path) const =0'],['../classdftfe_1_1dftfe_wrapper.html#ace395ea4730e404be8549f8b47108692',1,'dftfe::dftfeWrapper::writeDomainAndAtomCoordinates()']]], + ['writegselectrondensity_6',['writeGSElectronDensity',['../classdftfe_1_1dft_class.html#ae05e3d3e395a0c7195a408905abd5b30',1,'dftfe::dftClass::writeGSElectronDensity()'],['../classdftfe_1_1dft_base.html#a81e929d95a1e7eef56246ccb57fe7ceb',1,'dftfe::dftBase::writeGSElectronDensity()']]], + ['writemesh_7',['writeMesh',['../classdftfe_1_1dft_class.html#a12b4792692756f063516c270ff340192',1,'dftfe::dftClass::writeMesh()'],['../classdftfe_1_1dft_class.html#a535298615877f8f3adcae606b7f2b602',1,'dftfe::dftClass::writeMesh(std::string meshFileName)'],['../classdftfe_1_1dft_base.html#addd8918b0a2b31a20979686ab946375e',1,'dftfe::dftBase::writeMesh()'],['../classdftfe_1_1dftfe_wrapper.html#a53ae029e8da83f2e19620ef26f94e58b',1,'dftfe::dftfeWrapper::writeMesh()'],['../classdftfe_1_1geo_opt_cell.html#ae033e40f4a9baf62f194329e87b43e21',1,'dftfe::geoOptCell::writeMesh()']]], + ['writerestartfile_8',['writeRestartFile',['../classdftfe_1_1molecular_dynamics_class.html#a5190cef17b529388a3f78d103c1725c3',1,'dftfe::molecularDynamicsClass']]], + ['writerestartfiles_9',['WriteRestartFiles',['../classdftfe_1_1nudged_elastic_band_class.html#a32ca91d23647f1f9cb204ec424249666',1,'dftfe::nudgedElasticBandClass']]], + ['writerestartnhcfile_10',['writeRestartNHCfile',['../classdftfe_1_1molecular_dynamics_class.html#ab55628281f9424ac22d9bc8d66934d2b',1,'dftfe::molecularDynamicsClass']]], + ['writestructureenergyforcesdatapostprocess_11',['writeStructureEnergyForcesDataPostProcess',['../classdftfe_1_1dft_class.html#a2963e94fb9ac07e2dc10782c0a2223b3',1,'dftfe::dftClass::writeStructureEnergyForcesDataPostProcess()'],['../classdftfe_1_1dft_base.html#aba7ac87ecba1851b2f38bd313c14b8dc',1,'dftfe::dftBase::writeStructureEnergyForcesDataPostProcess()']]], + ['writetotaldisplacementfile_12',['writeTotalDisplacementFile',['../classdftfe_1_1molecular_dynamics_class.html#a0b01a063127c2986f9eea12b6ce707d0',1,'dftfe::molecularDynamicsClass']]] +]; diff --git a/search/functions_17.js b/search/functions_17.js new file mode 100644 index 000000000..246093415 --- /dev/null +++ b/search/functions_17.js @@ -0,0 +1,25 @@ +var searchData= +[ + ['xaxpy_0',['xaxpy',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#aaa04524c2ad4501b3986c17737bc6852',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xaxpy(const unsigned int n, const double *alpha, const double *x, const unsigned int incx, double *y, const unsigned int incy) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a15812023a16467b0dba46d0e1af75377',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xaxpy(const unsigned int n, const std::complex< double > *alpha, const std::complex< double > *x, const unsigned int incx, std::complex< double > *y, const unsigned int incy) const']]], + ['xcopy_1',['xcopy',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a32133d48e20a6be740e93816cc5c7a26',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xcopy(const unsigned int n, const double *x, const unsigned int incx, double *y, const unsigned int incy) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a65635da5382de6307612acb1e8776a33',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xcopy(const unsigned int n, const std::complex< double > *x, const unsigned int incx, std::complex< double > *y, const unsigned int incy) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#aee9c0d4bb0d7bc7ab2c814a63a7f3dcf',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xcopy(const unsigned int n, const float *x, const unsigned int incx, float *y, const unsigned int incy) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a7f58797ff65e87c032e63a60bee1a7eb',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xcopy(const unsigned int n, const std::complex< float > *x, const unsigned int incx, std::complex< float > *y, const unsigned int incy) const'],['../namespacedftfe.html#a0d322b954a8fb2c1281080253b7a82d2',1,'dftfe::xcopy(const unsigned int *n, const double *x, const unsigned int *incx, double *y, const unsigned int *incy)'],['../namespacedftfe.html#a4b20c20260a74738a998d138a073c159',1,'dftfe::xcopy(const unsigned int *n, const std::complex< double > *x, const unsigned int *incx, std::complex< double > *y, const unsigned int *incy)']]], + ['xdot_2',['xdot',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#aa8da547405625bda32add79f9ec7c0f9',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xdot(const unsigned int N, const double *X, const unsigned int INCX, const double *Y, const unsigned int INCY, double *result) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a3e18b8b504dc3aac3ab66b5f70648d7c',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xdot(const unsigned int N, const double *X, const unsigned int INCX, const double *Y, const unsigned int INCY, const MPI_Comm &mpi_communicator, double *result) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a5412caefd4823e7bf8d8fedf1b9e40ea',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xdot(const unsigned int N, const std::complex< double > *X, const unsigned int INCX, const std::complex< double > *Y, const unsigned int INCY, std::complex< double > *result) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a0f4db4a3e9c01364b6e09e5b2a108480',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xdot(const unsigned int N, const std::complex< double > *X, const unsigned int INCX, const std::complex< double > *Y, const unsigned int INCY, const MPI_Comm &mpi_communicator, std::complex< double > *result) const']]], + ['xgemm_3',['xgemm',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#aaaa5d342f964de874f7d8d141ec78717',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemm(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const float *alpha, const float *A, const unsigned int lda, const float *B, const unsigned int ldb, const float *beta, float *C, const unsigned int ldc) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a45ca0c2171da0e267cac7dc809169942',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemm(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< float > *alpha, const std::complex< float > *A, const unsigned int lda, const std::complex< float > *B, const unsigned int ldb, const std::complex< float > *beta, std::complex< float > *C, const unsigned int ldc) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a14c01d7bffb6d5700fbd0efea98a1ee8',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemm(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const double *alpha, const double *A, const unsigned int lda, const double *B, const unsigned int ldb, const double *beta, double *C, const unsigned int ldc) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#ad88c2fa3b749605b354c4a2658e963af',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemm(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< double > *alpha, const std::complex< double > *A, const unsigned int lda, const std::complex< double > *B, const unsigned int ldb, const std::complex< double > *beta, std::complex< double > *C, const unsigned int ldc) const'],['../namespacedftfe.html#a828f84688b0712b000dc44a95959d8e1',1,'dftfe::xgemm(const char *transA, const char *transB, const unsigned int *m, const unsigned int *n, const unsigned int *k, const double *alpha, const double *A, const unsigned int *lda, const double *B, const unsigned int *ldb, const double *beta, double *C, const unsigned int *ldc)'],['../namespacedftfe.html#a2dadfd9db8344c3f3678dec16f847ac1',1,'dftfe::xgemm(const char *transA, const char *transB, const unsigned int *m, const unsigned int *n, const unsigned int *k, const float *alpha, const float *A, const unsigned int *lda, const float *B, const unsigned int *ldb, const float *beta, float *C, const unsigned int *ldc)'],['../namespacedftfe.html#aa8e18f003e5d8812e4010339fff58b2f',1,'dftfe::xgemm(const char *transA, const char *transB, const unsigned int *m, const unsigned int *n, const unsigned int *k, const std::complex< double > *alpha, const std::complex< double > *A, const unsigned int *lda, const std::complex< double > *B, const unsigned int *ldb, const std::complex< double > *beta, std::complex< double > *C, const unsigned int *ldc)'],['../namespacedftfe.html#aef71ffd789e0a80b219b0a56927b135a',1,'dftfe::xgemm(const char *transA, const char *transB, const unsigned int *m, const unsigned int *n, const unsigned int *k, const std::complex< float > *alpha, const std::complex< float > *A, const unsigned int *lda, const std::complex< float > *B, const unsigned int *ldb, const std::complex< float > *beta, std::complex< float > *C, const unsigned int *ldc)']]], + ['xgemmbatched_4',['xgemmBatched',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a77e2597e311f16648370478009e2bfd6',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const double *alpha, const double *A[], const unsigned int lda, const double *B[], const unsigned int ldb, const double *beta, double *C[], const unsigned int ldc, const int batchCount) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#ac52a2d8a0ebe05b612433aa25af4e3ef',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< double > *alpha, const std::complex< double > *A[], const unsigned int lda, const std::complex< double > *B[], const unsigned int ldb, const std::complex< double > *beta, std::complex< double > *C[], const unsigned int ldc, const int batchCount) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#ae5c8331067dd669013be2bb600f4ccd4',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const float *alpha, const float *A[], const unsigned int lda, const float *B[], const unsigned int ldb, const float *beta, float *C[], const unsigned int ldc, const int batchCount) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a6eb406a2db22241ce98f7d026a40996a',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< float > *alpha, const std::complex< float > *A[], const unsigned int lda, const std::complex< float > *B[], const unsigned int ldb, const std::complex< float > *beta, std::complex< float > *C[], const unsigned int ldc, const int batchCount) const']]], + ['xgemmstridedbatched_5',['xgemmStridedBatched',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a28ab57e0bccafc4fcfab2c08a3755c85',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmStridedBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const double *alpha, const double *A, const unsigned int lda, long long int strideA, const double *B, const unsigned int ldb, long long int strideB, const double *beta, double *C, const unsigned int ldc, long long int strideC, const int batchCount) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a44b7839a93d68dc27dd1ccfe3b0dca0e',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmStridedBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< double > *alpha, const std::complex< double > *A, const unsigned int lda, long long int strideA, const std::complex< double > *B, const unsigned int ldb, long long int strideB, const std::complex< double > *beta, std::complex< double > *C, const unsigned int ldc, long long int strideC, const int batchCount) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a7c3d815ef554733ff006d8cc0109c9b8',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmStridedBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const std::complex< float > *alpha, const std::complex< float > *A, const unsigned int lda, long long int strideA, const std::complex< float > *B, const unsigned int ldb, long long int strideB, const std::complex< float > *beta, std::complex< float > *C, const unsigned int ldc, long long int strideC, const int batchCount) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a51edff5dcfb7f70540e52169ef0e2642',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemmStridedBatched(const char transA, const char transB, const unsigned int m, const unsigned int n, const unsigned int k, const float *alpha, const float *A, const unsigned int lda, long long int strideA, const float *B, const unsigned int ldb, long long int strideB, const float *beta, float *C, const unsigned int ldc, long long int strideC, const int batchCount) const']]], + ['xgemv_6',['xgemv',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a08ed9136db6617eb2ebb287e09d58867',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemv(const char transA, const unsigned int m, const unsigned int n, const double *alpha, const double *A, const unsigned int lda, const double *x, const unsigned int incx, const double *beta, double *y, const unsigned int incy) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a0281a84fc6dad783fa4ce5ac6e5dfaa6',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemv(const char transA, const unsigned int m, const unsigned int n, const float *alpha, const float *A, const unsigned int lda, const float *x, const unsigned int incx, const float *beta, float *y, const unsigned int incy) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a15cd5b9284040b42a822b21597fcc3c4',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemv(const char transA, const unsigned int m, const unsigned int n, const std::complex< double > *alpha, const std::complex< double > *A, const unsigned int lda, const std::complex< double > *x, const unsigned int incx, const std::complex< double > *beta, std::complex< double > *y, const unsigned int incy) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#ae4c13162872db4d012699930a9022683',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xgemv(const char transA, const unsigned int m, const unsigned int n, const std::complex< float > *alpha, const std::complex< float > *A, const unsigned int lda, const std::complex< float > *x, const unsigned int incx, const std::complex< float > *beta, std::complex< float > *y, const unsigned int incy) const']]], + ['xmlnodechildcount_7',['xmlNodeChildCount',['../namespacedftfe_1_1pseudo_utils.html#adcd1e13d9f23318a856d7fd419cec9de',1,'dftfe::pseudoUtils']]], + ['xmltagreaderattr_8',['XmlTagReaderAttr',['../namespacedftfe_1_1pseudo_utils.html#a75a8233dcc3a128d15abdf3533c83049',1,'dftfe::pseudoUtils']]], + ['xmltagreadermain_9',['XmlTagReaderMain',['../namespacedftfe_1_1pseudo_utils.html#a41aa029491b427fc0b872524d4d09f14',1,'dftfe::pseudoUtils']]], + ['xmltocoredensityfile_10',['xmltoCoreDensityFile',['../namespacedftfe_1_1pseudo_utils.html#a34d23bb0ab288d03aaaf3fb428ccb113',1,'dftfe::pseudoUtils']]], + ['xmltodenomfile_11',['xmltoDenomFile',['../namespacedftfe_1_1pseudo_utils.html#a7183d2fd2951b1888a6ec155323f5527',1,'dftfe::pseudoUtils']]], + ['xmltodensityfile_12',['xmltoDensityFile',['../namespacedftfe_1_1pseudo_utils.html#aa0bd155b029e18c2a87b2cfd258f31e5',1,'dftfe::pseudoUtils']]], + ['xmltolocalpotential_13',['xmltoLocalPotential',['../namespacedftfe_1_1pseudo_utils.html#acf9b5d684bea023db3e8521b757ebaaa',1,'dftfe::pseudoUtils']]], + ['xmltoorbitalfile_14',['xmltoOrbitalFile',['../namespacedftfe_1_1pseudo_utils.html#a79681219fa8dee1a8417571d1a04ab4b',1,'dftfe::pseudoUtils']]], + ['xmltoprojectorfile_15',['xmltoProjectorFile',['../namespacedftfe_1_1pseudo_utils.html#abbb6b8ca243c6057166cb3199d2f895e',1,'dftfe::pseudoUtils']]], + ['xmltosummaryfile_16',['xmltoSummaryFile',['../namespacedftfe_1_1pseudo_utils.html#a1518b8505a8bc835eb318a24167cceee',1,'dftfe::pseudoUtils']]], + ['xnrm2_17',['xnrm2',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#acd9ed1f7d17862914b249e9305bc61c9',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xnrm2(const unsigned int n, const double *x, const unsigned int incx, const MPI_Comm &mpi_communicator, double *result) const'],['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#a1a273a27eebfc9d757b24b173cb93214',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xnrm2(const unsigned int n, const std::complex< double > *x, const unsigned int incx, const MPI_Comm &mpi_communicator, double *result) const']]], + ['xscal_18',['xscal',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#af4f37ff18fda1200acacd53caa5ac709',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::xscal()'],['../namespacedftfe.html#a28ef5d3da7aac5f881ec00d1a40d5614',1,'dftfe::xscal(const unsigned int *n, const double *alpha, double *x, const unsigned int *inc)'],['../namespacedftfe.html#ad580fa3f6ab6426c92d6818b2326803d',1,'dftfe::xscal(const unsigned int *n, const std::complex< double > *alpha, std::complex< double > *x, const unsigned int *inc)']]], + ['xsymv_19',['xsymv',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#aae25438bd34c0b4a6291721b603d3297',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['xthx_20',['XtHX',['../namespacedftfe_1_1linear_algebra_operations.html#a2eb9fbf18509b95d0892fc25c7aa7496',1,'dftfe::linearAlgebraOperations::XtHX(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, std::vector< dataTypes::number > &ProjHam)'],['../namespacedftfe_1_1linear_algebra_operations.html#acae01905e82bfa7979ef685989bf0f63',1,'dftfe::linearAlgebraOperations::XtHX(operatorDFTClass< dftfe::utils::MemorySpace::HOST > &operatorMatrix, const dataTypes::number *X, const unsigned int numberComponents, const unsigned int numberLocalDofs, const std::shared_ptr< const dftfe::ProcessGrid > &processGrid, const MPI_Comm &mpiCommDomain, const MPI_Comm &interBandGroupComm, const dftParameters &dftParams, dftfe::ScaLAPACKMatrix< dataTypes::number > &projHamPar, const bool onlyHPrimePartForFirstOrderDensityMatResponse=false)']]], + ['xthxmixedprec_21',['XtHXMixedPrec',['../namespacedftfe_1_1linear_algebra_operations.html#a6999b6c6820532b37a4716a01c53e365',1,'dftfe::linearAlgebraOperations']]] +]; diff --git a/search/functions_18.js b/search/functions_18.js new file mode 100644 index 000000000..27ccce696 --- /dev/null +++ b/search/functions_18.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['z_0',['z',['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#aac0bf60a213cb4b098b624bcf8580203',1,'dftfe::pseudoUtils::PeriodicTable']]], + ['zadd_1',['zadd',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a6b2ff1dc6410222c2fca0d20fe8ef983',1,'dftfe::ScaLAPACKMatrix']]], + ['zcmcmult_2',['zCmCmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ae3aeb1d84498e30020980c34e3612ea9',1,'dftfe::ScaLAPACKMatrix']]], + ['zcmmult_3',['zCmmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a63411b9232cad71c462c8fa9e057bd56',1,'dftfe::ScaLAPACKMatrix']]], + ['zerooutghosts_4',['zeroOutGhosts',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#aa3f9c23298e7d13556da4a32de9c0def',1,'dftfe::linearAlgebra::MultiVector']]], + ['zmcmult_5',['zmCmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a86f3f5e5913f82d3e303e55728179b90',1,'dftfe::ScaLAPACKMatrix']]], + ['zmmult_6',['zmmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a2dce63d8bd4dccf4624d41350398107e',1,'dftfe::ScaLAPACKMatrix']]], + ['zmult_7',['zmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a88d041424c4ab89f58557c1c92e167c0',1,'dftfe::ScaLAPACKMatrix']]] +]; diff --git a/search/functions_19.js b/search/functions_19.js new file mode 100644 index 000000000..447f9adb9 --- /dev/null +++ b/search/functions_19.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['_7ebfgsnonlinearsolver_0',['~BFGSNonLinearSolver',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a0af0dce1ac0530187951b34d40dbe939',1,'dftfe::BFGSNonLinearSolver']]], + ['_7ecgprpnonlinearsolver_1',['~cgPRPNonLinearSolver',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a2d423b349da3e8ef803f704c0aa7d1f5',1,'dftfe::cgPRPNonLinearSolver']]], + ['_7echebyshevorthogonalizedsubspaceiterationsolver_2',['~chebyshevOrthogonalizedSubspaceIterationSolver',['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#ab48a466ffbe1cdfdd2662e821dcdd286',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver']]], + ['_7econstraintmatrixinfo_3',['~constraintMatrixInfo',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#afd96470c437cb192b72b41ffe423835d',1,'dftfe::dftUtils::constraintMatrixInfo']]], + ['_7edftbase_4',['~dftBase',['../classdftfe_1_1dft_base.html#a4dafda7f84155a31232f9f486c007988',1,'dftfe::dftBase']]], + ['_7edftclass_5',['~dftClass',['../classdftfe_1_1dft_class.html#a4b4f091db0ae2c72fcdf4a4b205372cf',1,'dftfe::dftClass']]], + ['_7edftfewrapper_6',['~dftfeWrapper',['../classdftfe_1_1dftfe_wrapper.html#acdb094872fec08447e6d508bea09549f',1,'dftfe::dftfeWrapper']]], + ['_7eeigensolverclass_7',['~eigenSolverClass',['../classdftfe_1_1eigen_solver_class.html#a2cfd349bac52c217c964afd00410ca9a',1,'dftfe::eigenSolverClass']]], + ['_7eelpascalamanager_8',['~elpaScalaManager',['../classdftfe_1_1elpa_scala_manager.html#af581fa155fe65e25a5c2949a48fbf30f',1,'dftfe::elpaScalaManager']]], + ['_7eexcdensityggaclass_9',['~excDensityGGAClass',['../classdftfe_1_1exc_density_g_g_a_class.html#a9c1b9d85b9fa1912d29f603ceed2db33',1,'dftfe::excDensityGGAClass']]], + ['_7eexcdensityldaclass_10',['~excDensityLDAClass',['../classdftfe_1_1exc_density_l_d_a_class.html#a27c8a894cc14c5db9c25fec22939b47c',1,'dftfe::excDensityLDAClass']]], + ['_7eexcmanager_11',['~excManager',['../classdftfe_1_1exc_manager.html#a2c1c882fed406b750f88144231cc5a9b',1,'dftfe::excManager']]], + ['_7eexcwavefunctionbaseclass_12',['~excWavefunctionBaseClass',['../classdftfe_1_1exc_wavefunction_base_class.html#a98e3d223e71bb66fa177c753601b73ba',1,'dftfe::excWavefunctionBaseClass']]], + ['_7efebasisoperations_13',['~FEBasisOperations',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a3536f38c5667cfdac1718efdc70f162d',1,'dftfe::basis::FEBasisOperations']]], + ['_7elbfgsnonlinearsolver_14',['~LBFGSNonLinearSolver',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#adbf97527c3394b91e07ad0012376f4ab',1,'dftfe::LBFGSNonLinearSolver']]], + ['_7ememorystorage_15',['~MemoryStorage',['../classdftfe_1_1utils_1_1_memory_storage.html#a5a81d138956b331642b19958251138e2',1,'dftfe::utils::MemoryStorage']]], + ['_7emeshmovementclass_16',['~meshMovementClass',['../classdftfe_1_1mesh_movement_class.html#a7b3820b3fbf12ddc1a497557c9a2a789',1,'dftfe::meshMovementClass']]], + ['_7empipatternp2p_17',['~MPIPatternP2P',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a0cf00e673b5fa956e42fdcb52165404b',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['_7empirequestersbase_18',['~MPIRequestersBase',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base.html#a181c8cb807d38305dafb0eeb3ef92308',1,'dftfe::utils::mpi::MPIRequestersBase']]], + ['_7emultivector_19',['~MultiVector',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a87a40ed298ce1f602e794a4e64b20981',1,'dftfe::linearAlgebra::MultiVector']]], + ['_7enonlinearsolver_20',['~nonLinearSolver',['../classdftfe_1_1non_linear_solver.html#aa2245adca4f04b972cdb9715769b405f',1,'dftfe::nonLinearSolver']]], + ['_7enonlinearsolverproblem_21',['~nonlinearSolverProblem',['../classdftfe_1_1nonlinear_solver_problem.html#a859578af1f37f26d4a5e2d5481c4ceab',1,'dftfe::nonlinearSolverProblem']]], + ['_7eoperatordftclass_22',['~operatorDFTClass',['../classdftfe_1_1operator_d_f_t_class.html#a9eed6c9d44eacadf603bc9bb5bda6cc8',1,'dftfe::operatorDFTClass']]], + ['_7eoptimizedindexset_23',['~OptimizedIndexSet',['../classdftfe_1_1utils_1_1_optimized_index_set.html#a7131d9ad589b09d6429b530d8f037c35',1,'dftfe::utils::OptimizedIndexSet']]], + ['_7eprocessgrid_24',['~ProcessGrid',['../classdftfe_1_1_process_grid.html#a89ae9102265a4950855f93db673fef17',1,'dftfe::ProcessGrid']]], + ['_7etriangulationmanager_25',['~triangulationManager',['../classdftfe_1_1triangulation_manager.html#aeeeb378e19dc801a35671951bbfb9a66',1,'dftfe::triangulationManager']]] +]; diff --git a/search/functions_2.js b/search/functions_2.js new file mode 100644 index 000000000..ef125b72c --- /dev/null +++ b/search/functions_2.js @@ -0,0 +1,212 @@ +var searchData= +[ + ['c_5fnum1dquad_0',['C_num1DQuad',['../namespacedftfe.html#a13fd02a4baac4d585d5b300bde905b89',1,'dftfe']]], + ['c_5fnum1dquadlpsp_1',['C_num1DQuadLPSP',['../namespacedftfe.html#af693a6d78be136c07aa0c6c3f0c25857',1,'dftfe']]], + ['c_5fnum1dquadnlpsp_2',['C_num1DQuadNLPSP',['../namespacedftfe.html#a73e2b419210f295d4c10c14bf6423dd5',1,'dftfe']]], + ['c_5fnum1dquadsmearedcharge_3',['C_num1DQuadSmearedCharge',['../namespacedftfe.html#a18bee64f59323bdde50df548fe343f2c',1,'dftfe']]], + ['c_5fnum1dquadsmearedchargehigh_4',['C_num1DQuadSmearedChargeHigh',['../namespacedftfe.html#a2df356a3cb539b2e94ecd296c0ad0614',1,'dftfe']]], + ['c_5fnum1dquadsmearedchargestress_5',['C_num1DQuadSmearedChargeStress',['../namespacedftfe.html#a2c811742344823fdee164771e83c7e43',1,'dftfe']]], + ['c_5fnumcopies1dquadlpsp_6',['C_numCopies1DQuadLPSP',['../namespacedftfe.html#ade137f80833458700db8be2681468570',1,'dftfe']]], + ['c_5fnumcopies1dquadnlpsp_7',['C_numCopies1DQuadNLPSP',['../namespacedftfe.html#a7c7b12a9d172ba6c66e1918f2211bbaf',1,'dftfe']]], + ['c_5fnumcopies1dquadsmearedcharge_8',['C_numCopies1DQuadSmearedCharge',['../namespacedftfe.html#a96bc2959bb3156f527ac197a8c87ea7a',1,'dftfe']]], + ['c_5fnumcopies1dquadsmearedchargehigh_9',['C_numCopies1DQuadSmearedChargeHigh',['../namespacedftfe.html#a8fccd69337c40ea6362df163ae76a044',1,'dftfe']]], + ['c_5fnumcopies1dquadsmearedchargestress_10',['C_numCopies1DQuadSmearedChargeStress',['../namespacedftfe.html#a257dbf1bba01657662104f4f96bfc25e',1,'dftfe']]], + ['c_5frhonodalpolyorder_11',['C_rhoNodalPolyOrder',['../namespacedftfe.html#a99864c153f664843edc7a27b70ac61f7',1,'dftfe']]], + ['calculateforceonimage_12',['CalculateForceonImage',['../classdftfe_1_1nudged_elastic_band_class.html#a9257d35d3b5ad9345f284edd578679cb',1,'dftfe::nudgedElasticBandClass']]], + ['calculateforceparallel_13',['CalculateForceparallel',['../classdftfe_1_1nudged_elastic_band_class.html#a7f0d81485ce18a331f66f01588af1068',1,'dftfe::nudgedElasticBandClass']]], + ['calculateforceperpendicular_14',['CalculateForceperpendicular',['../classdftfe_1_1nudged_elastic_band_class.html#a650d1350971f9941c2bb3f152e63ceba',1,'dftfe::nudgedElasticBandClass']]], + ['calculatenearestatomdistances_15',['calculateNearestAtomDistances',['../classdftfe_1_1dft_class.html#a8c401f173a72b692faa749ec49727939',1,'dftfe::dftClass']]], + ['calculatepathlength_16',['CalculatePathLength',['../classdftfe_1_1nudged_elastic_band_class.html#acd23065753962817bd09473b5aa8107b',1,'dftfe::nudgedElasticBandClass']]], + ['calculatepathtangent_17',['CalculatePathTangent',['../classdftfe_1_1nudged_elastic_band_class.html#a90a3e1c746f57c4f4f5ba8e82948738f',1,'dftfe::nudgedElasticBandClass']]], + ['calculatesmearedchargewidths_18',['calculateSmearedChargeWidths',['../classdftfe_1_1dft_class.html#a9fcbac29b3b715625df69b0283532427',1,'dftfe::dftClass']]], + ['calculatespringconstant_19',['CalculateSpringConstant',['../classdftfe_1_1nudged_elastic_band_class.html#a8287c47bc8392739cf1785a836b12681',1,'dftfe::nudgedElasticBandClass']]], + ['calculatespringforce_20',['CalculateSpringForce',['../classdftfe_1_1nudged_elastic_band_class.html#a70b97382141db346d572f186c16349b3',1,'dftfe::nudgedElasticBandClass']]], + ['cblacs_5fbarrier_21',['Cblacs_barrier',['../namespacedftfe.html#a122fdeeeb461620a39514f6290974842',1,'dftfe']]], + ['cblacs_5fexit_22',['Cblacs_exit',['../namespacedftfe.html#af5be78ddd85c3714b11426a499022b76',1,'dftfe']]], + ['cblacs_5fget_23',['Cblacs_get',['../namespacedftfe.html#a6534b08c9b44db85ee4de8af83ae12c6',1,'dftfe']]], + ['cblacs_5fgridexit_24',['Cblacs_gridexit',['../namespacedftfe.html#ac84a2cf440974178b487348e7cb647f9',1,'dftfe']]], + ['cblacs_5fgridinfo_25',['Cblacs_gridinfo',['../namespacedftfe.html#ad80e8232a1fc7714ba24f0abf8b2e6e4',1,'dftfe']]], + ['cblacs_5fgridinit_26',['Cblacs_gridinit',['../namespacedftfe.html#a8291e8e1a7605bb83408f110e6c0b847',1,'dftfe']]], + ['cblacs_5fpcoord_27',['Cblacs_pcoord',['../namespacedftfe.html#a9096c8d6eac258020bec18cd92dee80f',1,'dftfe']]], + ['cblacs_5fpinfo_28',['Cblacs_pinfo',['../namespacedftfe.html#acf540037d656215dc022bf05e5255f73',1,'dftfe']]], + ['cdgerv2d_29',['Cdgerv2d',['../namespacedftfe.html#a9c433c9c02a7293856090940a621c103',1,'dftfe']]], + ['cdgesd2d_30',['Cdgesd2d',['../namespacedftfe.html#a8d23816d4e244802afbe4c0f0540e105',1,'dftfe']]], + ['cellid_31',['cellID',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ae9d20b98e43a508cb788c9b0a534455d',1,'dftfe::basis::FEBasisOperations']]], + ['cellindex_32',['cellIndex',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a8a5d936dc321091af299af8cbac95709',1,'dftfe::basis::FEBasisOperations']]], + ['cellinversemassvector_33',['cellInverseMassVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a1a694c059ab6fb49f3201e3151a8ce43',1,'dftfe::basis::FEBasisOperations']]], + ['cellinversemassvectorbasisdata_34',['cellInverseMassVectorBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a2fcc54a125ce588c675d745dfc4b5a33',1,'dftfe::basis::FEBasisOperations']]], + ['cellinversesqrtmassvector_35',['cellInverseSqrtMassVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ad4cbee2f9a4488be086275e2e0a4e1ae',1,'dftfe::basis::FEBasisOperations']]], + ['cellinversesqrtmassvectorbasisdata_36',['cellInverseSqrtMassVectorBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#af89a33eaaae5b085c52ce16accc1d642',1,'dftfe::basis::FEBasisOperations']]], + ['cellmassmatrix_37',['cellMassMatrix',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#af5fd76f49f5b308de43079d8861b14bc',1,'dftfe::basis::FEBasisOperations']]], + ['cellmassmatrixbasisdata_38',['cellMassMatrixBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#af8b7671a4af85082fba467da36bbcde7',1,'dftfe::basis::FEBasisOperations']]], + ['cellmassvector_39',['cellMassVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a0c84683ff1123333bb30b3baf44fb01c',1,'dftfe::basis::FEBasisOperations']]], + ['cellmassvectorbasisdata_40',['cellMassVectorBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aa92a7d44f550136f11d2ee4892b55769',1,'dftfe::basis::FEBasisOperations']]], + ['cellsqrtmassvector_41',['cellSqrtMassVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a979356785aeb651740daf3ff953255e0',1,'dftfe::basis::FEBasisOperations']]], + ['cellsqrtmassvectorbasisdata_42',['cellSqrtMassVectorBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a957416b5d5a1cc03c1531d09aca60338',1,'dftfe::basis::FEBasisOperations']]], + ['cellstiffnessmatrix_43',['cellStiffnessMatrix',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a466e44a3c795df64bc010c3ba4b633f6',1,'dftfe::basis::FEBasisOperations']]], + ['cellstiffnessmatrixbasisdata_44',['cellStiffnessMatrixBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a2eb2f4a9551c21f7717ce63cdfb1eac9',1,'dftfe::basis::FEBasisOperations']]], + ['cellstypeflag_45',['cellsTypeFlag',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a182ad4e188808b47c915c1205660a2ed',1,'dftfe::basis::FEBasisOperations']]], + ['cgerv2d_46',['Cgerv2d',['../namespacedftfe.html#a04e4d97f239e0b9956f4845bee81977e',1,'dftfe::Cgerv2d(int, int, int, number *, int, int, int)'],['../namespacedftfe.html#a98a1ccbf0216f537b9de25a185d1558e',1,'dftfe::Cgerv2d(int context, int M, int N, double *A, int lda, int rsrc, int csrc)'],['../namespacedftfe.html#a6bf86fc7fe8ae20e11a768bd7c332ada',1,'dftfe::Cgerv2d(int context, int M, int N, float *A, int lda, int rsrc, int csrc)']]], + ['cgesd2d_47',['Cgesd2d',['../namespacedftfe.html#af61adbd56f59e8e2edc437eb48e9b9b8',1,'dftfe::Cgesd2d(int, int, int, number *, int, int, int)'],['../namespacedftfe.html#ae8fc4c48a94e2448534ca8b76a52790a',1,'dftfe::Cgesd2d(int context, int M, int N, double *A, int lda, int rdest, int cdest)'],['../namespacedftfe.html#aa2e0cbd48e31b670d39a253eecff8866',1,'dftfe::Cgesd2d(int context, int M, int N, float *A, int lda, int rdest, int cdest)']]], + ['cgprpnonlinearsolver_48',['cgPRPNonLinearSolver',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#aac1c94491ec3af84a823082eac62e856',1,'dftfe::cgPRPNonLinearSolver']]], + ['chebyshevfilter_49',['chebyshevFilter',['../namespacedftfe_1_1linear_algebra_operations.html#a11c562ce1dd29e6ab95d6087d8f125b7',1,'dftfe::linearAlgebraOperations']]], + ['chebyshevorthogonalizedsubspaceiterationsolver_50',['chebyshevOrthogonalizedSubspaceIterationSolver',['../classdftfe_1_1chebyshev_orthogonalized_subspace_iteration_solver.html#a89c63d828f3841b92e2e13b1675d39ed',1,'dftfe::chebyshevOrthogonalizedSubspaceIterationSolver']]], + ['check_5fparameters_51',['check_parameters',['../classdftfe_1_1dft_parameters.html#a166f01e993b958c7eec268548241d415',1,'dftfe::dftParameters']]], + ['checkconstraintsconsistency_52',['checkConstraintsConsistency',['../classdftfe_1_1triangulation_manager.html#a5f788b4faeea455b1d920b401c1bbad7',1,'dftfe::triangulationManager']]], + ['checkperiodicsurfacerefinementconsistency_53',['checkPeriodicSurfaceRefinementConsistency',['../classdftfe_1_1triangulation_manager.html#a565b8a3f11c4962037a7c40898785278',1,'dftfe::triangulationManager']]], + ['checkrestart_54',['checkRestart',['../classdftfe_1_1molecular_dynamics_class.html#af45d01df8cecc83bc29edd04cc1cba98',1,'dftfe::molecularDynamicsClass::checkRestart()'],['../classdftfe_1_1nudged_elastic_band_class.html#a7f179324e5c2d39426ee1d3a05dba36e',1,'dftfe::nudgedElasticBandClass::checkRestart()']]], + ['checkwolfe_55',['checkWolfe',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a0afeac45ca2c95573eb520c506b9bc2c',1,'dftfe::BFGSNonLinearSolver::checkWolfe()'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#ae780b063ee580cad94cda91b626f3769',1,'dftfe::LBFGSNonLinearSolver::checkWolfe()']]], + ['classifyinteriorsurfacenodesincell_56',['classifyInteriorSurfaceNodesInCell',['../namespacedftfe_1_1vector_tools.html#aef36d37d346a77547ebbfdad6ff975c9',1,'dftfe::vectorTools']]], + ['classifyinteriorsurfacenodesinglobalarray_57',['classifyInteriorSurfaceNodesInGlobalArray',['../namespacedftfe_1_1vector_tools.html#abe2433fc07b81e4cdfb66067f9264647',1,'dftfe::vectorTools']]], + ['clear_58',['clear',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a1abbc8b2e08f82ce118afce518629a62',1,'dftfe::dftUtils::constraintMatrixInfo::clear()'],['../classdftfe_1_1dftfe_wrapper.html#af7953d12570966cd8c714ca100d6b220',1,'dftfe::dftfeWrapper::clear()'],['../classdftfe_1_1exc_manager.html#ab757060667a98e7fe4bdf7b8991fe33e',1,'dftfe::excManager::clear()'],['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a8e5c3636aa3796d457ee5abbf6132f28',1,'dftfe::basis::FEBasisOperations::clear()'],['../classdftfe_1_1utils_1_1_memory_storage.html#a998f773c54881aa83edf83a21bf7d4a5',1,'dftfe::utils::MemoryStorage::clear()'],['../classdftfe_1_1poisson_solver_problem.html#a208add694f68451e4d7dadb63ee24782',1,'dftfe::poissonSolverProblem::clear()']]], + ['clearhistory_59',['clearHistory',['../classdftfe_1_1_mixing_scheme.html#a05f44fc9c96365483edf66f9546777c2',1,'dftfe::MixingScheme']]], + ['clearmaps_60',['clearMaps',['../classdftfe_1_1symmetry_class.html#a8d58acc3cbc12c3bfd33a4da5f5576b2',1,'dftfe::symmetryClass']]], + ['clearrhodata_61',['clearRhoData',['../classdftfe_1_1dft_class.html#aef8ce36a5ec9aa30f121f6bbea3fc519',1,'dftfe::dftClass']]], + ['clearscratchmultivectors_62',['clearScratchMultiVectors',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a72e7e61c341668f67ee7e654156cf0f7',1,'dftfe::basis::FEBasisOperations']]], + ['complexconj_63',['complexConj',['../namespacedftfe_1_1utils.html#a053e2c730762866c294a4f28ab31b2b9',1,'dftfe::utils::complexConj(const double x)'],['../namespacedftfe_1_1utils.html#ac352935e73b5afc211a924fa31515b7f',1,'dftfe::utils::complexConj(const float x)'],['../namespacedftfe_1_1utils.html#a673e365a8a9717b15757d5c55860b866',1,'dftfe::utils::complexConj(const std::complex< double > x)'],['../namespacedftfe_1_1utils.html#a4fd343c51fbbe126391b3fbbbcaa111e',1,'dftfe::utils::complexConj(const std::complex< float > x)']]], + ['compositedata_64',['CompositeData',['../classdftfe_1_1dft_utils_1_1_composite_data.html#abf075a97ea1ac713b7ecfbbc33c95e8b',1,'dftfe::dftUtils::CompositeData']]], + ['compute_5fcholesky_5ffactorization_65',['compute_cholesky_factorization',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a6e90313134e463ddf7374ee2023ba032',1,'dftfe::ScaLAPACKMatrix']]], + ['compute_5ffermienergy_66',['compute_fermienergy',['../classdftfe_1_1dft_class.html#ab1ea643191363b0c341204e8eac60076',1,'dftfe::dftClass']]], + ['compute_5ffermienergy_5fconstraintmagnetization_67',['compute_fermienergy_constraintMagnetization',['../classdftfe_1_1dft_class.html#ad25b1640ed3e3e232caeccb6dbaab11f',1,'dftfe::dftClass']]], + ['compute_5fldos_68',['compute_ldos',['../classdftfe_1_1dft_class.html#ad6253bc9fcf9dc36d0efbdae2e1f0dcb',1,'dftfe::dftClass']]], + ['compute_5flocalizationlength_69',['compute_localizationLength',['../classdftfe_1_1dft_class.html#a6f0f7e67103124bc348ffce471640b60',1,'dftfe::dftClass']]], + ['compute_5flu_5ffactorization_70',['compute_lu_factorization',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a8ce68e532d59d501135b8c49f0ad174f',1,'dftfe::ScaLAPACKMatrix']]], + ['compute_5fpdos_71',['compute_pdos',['../classdftfe_1_1dft_class.html#a95a8ba5326648defc9ae4c04cd3ca3e6',1,'dftfe::dftClass']]], + ['compute_5frhoout_72',['compute_rhoOut',['../classdftfe_1_1dft_class.html#aa00581f29262e212b41b91488fee4222',1,'dftfe::dftClass']]], + ['compute_5ftdos_73',['compute_tdos',['../classdftfe_1_1dft_class.html#a668a1681a61baa1a91e134bc68fbc633',1,'dftfe::dftClass']]], + ['computeadaptiveandersonmixingparameter_74',['computeAdaptiveAndersonMixingParameter',['../classdftfe_1_1_mixing_scheme.html#ad9e56f3e3f0003039168d2e624d42c44',1,'dftfe::MixingScheme']]], + ['computeandersonmixingcoeff_75',['computeAndersonMixingCoeff',['../classdftfe_1_1_mixing_scheme.html#a3e841e62f6e56306f5dd1cb3a1f53e72',1,'dftfe::MixingScheme']]], + ['computeandsymmetrize_5frhoout_76',['computeAndSymmetrize_rhoOut',['../classdftfe_1_1symmetry_class.html#a923fb69cbaf84f938713a65e4c96f65a',1,'dftfe::symmetryClass']]], + ['computeatomsforces_77',['computeAtomsForces',['../classdftfe_1_1force_class.html#a289d10877381adba3597723949aaeeb4',1,'dftfe::forceClass']]], + ['computeatomsforcesgaussiangenerator_78',['computeAtomsForcesGaussianGenerator',['../classdftfe_1_1force_class.html#a0c1baf34cf773178c7f2b651eeeb5dfd',1,'dftfe::forceClass']]], + ['computecellhamiltonianmatrix_79',['computeCellHamiltonianMatrix',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a65903ad4f66834bfb8a67f99707279f2',1,'dftfe::KohnShamHamiltonianOperator']]], + ['computecellhamiltonianmatrixextpotcontribution_80',['computeCellHamiltonianMatrixExtPotContribution',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a60e16f6dfe75a0d09e86d9b1a2548c17',1,'dftfe::KohnShamHamiltonianOperator']]], + ['computecelllocalindexsetmap_81',['computeCellLocalIndexSetMap',['../namespacedftfe_1_1vector_tools.html#a4910f06c8ad4251d016ee8a6b31ce04b',1,'dftfe::vectorTools::computeCellLocalIndexSetMap(const std::shared_ptr< const utils::mpi::MPIPatternP2P< dftfe::utils::MemorySpace::HOST > > &partitioner, const dealii::MatrixFree< 3, double > &matrix_free_data, const unsigned int mfDofHandlerIndex, const unsigned int blockSize, std::vector< std::vector< dealii::types::global_dof_index > > &flattenedArrayMacroCellLocalProcIndexId, std::vector< std::vector< dealii::types::global_dof_index > > &flattenedArrayCellLocalProcIndexId)'],['../namespacedftfe_1_1vector_tools.html#a2940dd81fe18f9b90a9778bb52d792a6',1,'dftfe::vectorTools::computeCellLocalIndexSetMap(const std::shared_ptr< const utils::mpi::MPIPatternP2P< dftfe::utils::MemorySpace::HOST > > &partitioner, const dealii::MatrixFree< 3, double > &matrix_free_data, const unsigned int mfDofHandlerIndex, const unsigned int blockSize, std::vector< dealii::types::global_dof_index > &flattenedArrayMacroCellLocalProcIndexId, std::vector< unsigned int > &normalCellIdToMacroCellIdMap, std::vector< unsigned int > &macroCellIdToNormalCellIdMap, std::vector< dealii::types::global_dof_index > &flattenedArrayCellLocalProcIndexId)'],['../namespacedftfe_1_1vector_tools.html#a2ddde54e6720c5a521c7c8ab57a0dfb1',1,'dftfe::vectorTools::computeCellLocalIndexSetMap(const std::shared_ptr< const utils::mpi::MPIPatternP2P< dftfe::utils::MemorySpace::HOST > > &partitioner, const dealii::MatrixFree< 3, double > &matrix_free_data, const unsigned int mfDofHandlerIndex, const unsigned int blockSize, std::vector< dealii::types::global_dof_index > &flattenedArrayCellLocalProcIndexId)']]], + ['computecellmassmatrix_82',['computeCellMassMatrix',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a12dfe49ca3c3793a0ed3c490fa4927e2',1,'dftfe::basis::FEBasisOperations']]], + ['computecellstiffnessmatrix_83',['computeCellStiffnessMatrix',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aaea1d90d6abba6687b0d064949b75396',1,'dftfe::basis::FEBasisOperations']]], + ['computecmatrixentries_84',['computeCMatrixEntries',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a7d0a8b8dc53a13c91990cb8702797b5c',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['computeconfigurationalforceeeshelbyeelectrophitot_85',['computeConfigurationalForceEEshelbyEElectroPhiTot',['../classdftfe_1_1force_class.html#a5b6229382c439086ea7bcff3d6d432d0',1,'dftfe::forceClass']]], + ['computeconfigurationalforceeeshelbytensorfpspfnllinfe_86',['computeConfigurationalForceEEshelbyTensorFPSPFnlLinFE',['../classdftfe_1_1force_class.html#a18b750d31d30f24e50d9b3f08164082f',1,'dftfe::forceClass']]], + ['computeconfigurationalforceeselflinfe_87',['computeConfigurationalForceEselfLinFE',['../classdftfe_1_1force_class.html#a2c29256e4705b43622af0f73cb3c7f37',1,'dftfe::forceClass']]], + ['computeconfigurationalforceeselfnosurfacelinfe_88',['computeConfigurationalForceEselfNoSurfaceLinFE',['../classdftfe_1_1force_class.html#a6661a80d363012653f41add13aac4619',1,'dftfe::forceClass']]], + ['computeconfigurationalforcephiextlinfe_89',['computeConfigurationalForcePhiExtLinFE',['../classdftfe_1_1force_class.html#ac30a961cd15b4731246d3f814ccd595e',1,'dftfe::forceClass']]], + ['computeconfigurationalforcetotallinfe_90',['computeConfigurationalForceTotalLinFE',['../classdftfe_1_1force_class.html#a6af45423fcb64c23b82bdea992226d8a',1,'dftfe::forceClass']]], + ['computedeltad_91',['computeDeltaD',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a7e148abbafa347569ce898ee0252c5af',1,'dftfe::cgPRPNonLinearSolver']]], + ['computedeltas_92',['computeDeltas',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a26f389399477411e2bd73cc0434442bf',1,'dftfe::cgPRPNonLinearSolver']]], + ['computedensitybasedenergydensity_93',['computeDensityBasedEnergyDensity',['../classdftfe_1_1exc_density_base_class.html#a86691254caff4cbc82ea2a5300f8c3dc',1,'dftfe::excDensityBaseClass::computeDensityBasedEnergyDensity()'],['../classdftfe_1_1exc_density_g_g_a_class.html#a47d9245c0218f296212e3b619339f45d',1,'dftfe::excDensityGGAClass::computeDensityBasedEnergyDensity()'],['../classdftfe_1_1exc_density_l_d_a_class.html#a211cba15562570d14f0dc1939245b426',1,'dftfe::excDensityLDAClass::computeDensityBasedEnergyDensity()']]], + ['computedensitybasedfxc_94',['computeDensityBasedFxc',['../classdftfe_1_1exc_density_base_class.html#ae4c3fb6a4e629abd478353c9a927bd12',1,'dftfe::excDensityBaseClass::computeDensityBasedFxc()'],['../classdftfe_1_1exc_density_g_g_a_class.html#a7c17e563a21fe71e85c2c7b32fd76af5',1,'dftfe::excDensityGGAClass::computeDensityBasedFxc()'],['../classdftfe_1_1exc_density_l_d_a_class.html#ae989036a9c41bae6608e42b10a5b5a79',1,'dftfe::excDensityLDAClass::computeDensityBasedFxc()']]], + ['computedensitybasedvxc_95',['computeDensityBasedVxc',['../classdftfe_1_1exc_density_base_class.html#a8f53adc86d6f28ec0ca340120dac7070',1,'dftfe::excDensityBaseClass::computeDensityBasedVxc()'],['../classdftfe_1_1exc_density_g_g_a_class.html#a1abd24bdd7e5221a62a11e78f82a4377',1,'dftfe::excDensityGGAClass::computeDensityBasedVxc()'],['../classdftfe_1_1exc_density_l_d_a_class.html#af135a1d6ae95e20b76f038afae56f539',1,'dftfe::excDensityLDAClass::computeDensityBasedVxc()']]], + ['computedftdcorrection_96',['computeDFTDCorrection',['../classdftfe_1_1dispersion_correction.html#a9678ff2882412d84267d8256bd2bf234',1,'dftfe::dispersionCorrection']]], + ['computedftfreeenergy_97',['computeDFTFreeEnergy',['../classdftfe_1_1dftfe_wrapper.html#aeecf15844b4e6fc0005f8a5ba321a1da',1,'dftfe::dftfeWrapper']]], + ['computediagonala_98',['computeDiagonalA',['../classdftfe_1_1kerker_solver_problem.html#a5db62e0f9189cc375a1f13bb071a4ce0',1,'dftfe::kerkerSolverProblem::computeDiagonalA()'],['../classdftfe_1_1poisson_solver_problem.html#a2db6195ac0129cd852cff44c06262965',1,'dftfe::poissonSolverProblem::computeDiagonalA()']]], + ['computedispresioncorrection_99',['computeDispresionCorrection',['../classdftfe_1_1dispersion_correction.html#ad07f240b59b757a39b913611fa7597b0',1,'dftfe::dispersionCorrection']]], + ['computeeigenresidualnorm_100',['computeEigenResidualNorm',['../namespacedftfe_1_1linear_algebra_operations.html#a1a9d6fec142e95c8885cd2e4f2ddc697',1,'dftfe::linearAlgebraOperations']]], + ['computeelementalnonlocalpseudoovdataforce_101',['computeElementalNonLocalPseudoOVDataForce',['../classdftfe_1_1force_class.html#ab2b773e679ab8e27e665096c658f8179',1,'dftfe::forceClass']]], + ['computeenergy_102',['computeEnergy',['../classdftfe_1_1energy_calculator.html#ad280192d061adcaff751e50959b2cc0f',1,'dftfe::energyCalculator']]], + ['computeentropicenergy_103',['computeEntropicEnergy',['../classdftfe_1_1energy_calculator.html#a1f47ac488d9823bb083a31bb6730e8b3',1,'dftfe::energyCalculator']]], + ['computeeta_104',['computeEta',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#ae775910470c51a65a373b4ff70011ad5',1,'dftfe::cgPRPNonLinearSolver']]], + ['computefloatingatomsforces_105',['computeFloatingAtomsForces',['../classdftfe_1_1force_class.html#a850c9d90e38060347cda17702e36e071',1,'dftfe::forceClass']]], + ['computehx_106',['computeHx',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#ad38d152f3b493423b7a643ba80232311',1,'dftfe::LBFGSNonLinearSolver']]], + ['computeincrement_107',['computeIncrement',['../classdftfe_1_1mesh_movement_affine_transform.html#a3bee91967e0e4f6fae3676c83d583b66',1,'dftfe::meshMovementAffineTransform::computeIncrement()'],['../classdftfe_1_1mesh_movement_gaussian_class.html#ae3bdfb1d098b810a802f8cb9931c3a25',1,'dftfe::meshMovementGaussianClass::computeIncrement(const std::vector< dealii::Point< 3 > > &controlPointLocations, const std::vector< dealii::Tensor< 1, 3, double > > &controlPointDisplacements, const std::vector< double > &gaussianWidthParameter, const std::vector< double > &flatTopWidthParameter)']]], + ['computeincrementtwostep_108',['computeIncrementTwoStep',['../classdftfe_1_1mesh_movement_gaussian_class.html#ab9a2bcda8b4c09c32454323277b379a6',1,'dftfe::meshMovementGaussianClass']]], + ['computeinversesqrtmassvector_109',['computeInverseSqrtMassVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a52706ca06f68ff021f4a29c64705c472',1,'dftfe::basis::FEBasisOperations']]], + ['computelocalrhoout_110',['computeLocalrhoOut',['../classdftfe_1_1symmetry_class.html#acfa44b9463428b03aea8d9046005f6b3',1,'dftfe::symmetryClass']]], + ['computemaximumhighestoccupiedstateresidualnorm_111',['computeMaximumHighestOccupiedStateResidualNorm',['../classdftfe_1_1dft_class.html#ae640a2abd1c3f9a6df5e9af53b82ec78',1,'dftfe::dftClass::computeMaximumHighestOccupiedStateResidualNorm(const std::vector< std::vector< double > > &residualNormWaveFunctionsAllkPoints, const std::vector< std::vector< double > > &eigenValuesAllkPoints, const double _fermiEnergy)'],['../classdftfe_1_1dft_class.html#a0761e0cda6b9f9a37b52245bbf1ebb17',1,'dftfe::dftClass::computeMaximumHighestOccupiedStateResidualNorm(const std::vector< std::vector< double > > &residualNormWaveFunctionsAllkPoints, const std::vector< std::vector< double > > &eigenValuesAllkPoints, const unsigned int highestState)']]], + ['computemeanvalueconstraint_112',['computeMeanValueConstraint',['../classdftfe_1_1poisson_solver_problem.html#a281466439e2358bbe58bafea27f61c06',1,'dftfe::poissonSolverProblem']]], + ['computemixingmatrices_113',['computeMixingMatrices',['../classdftfe_1_1_mixing_scheme.html#abb845cb32f3c910b7677c5266625f3a9',1,'dftfe::MixingScheme']]], + ['computemultipolemoments_114',['computeMultipoleMoments',['../classdftfe_1_1dft_class.html#a3714ddc8856200c7787bbd5466e902d2',1,'dftfe::dftClass']]], + ['computenewtonstep_115',['computeNewtonStep',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a55dbb50629e2baef41ccbbe8da63622a',1,'dftfe::BFGSNonLinearSolver']]], + ['computenonlocalpseudopotentialconstants_116',['computeNonlocalPseudoPotentialConstants',['../classdftfe_1_1oncv_class.html#a244be0f11494bbe292c8709ecdfc0898',1,'dftfe::oncvClass']]], + ['computeoffsetvectors_117',['computeOffsetVectors',['../namespacedftfe_1_1mesh_gen_utils.html#a4c04260faf47b3fc3b2990ca52b2ebf2',1,'dftfe::meshGenUtils']]], + ['computeoutputdensitydirectionalderivative_118',['computeOutputDensityDirectionalDerivative',['../classdftfe_1_1dft_class.html#acdefebabc3b1ec12db8c077c1e92b79a',1,'dftfe::dftClass']]], + ['computeperiodicfacenormals_119',['computePeriodicFaceNormals',['../namespacedftfe_1_1mesh_gen_utils.html#a8cd97500e6d1b1fcf250a0069bd68eb8',1,'dftfe::meshGenUtils']]], + ['computeresiduall2norm_120',['computeResidualL2Norm',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a124bb0c681b685fa3ccff00b8dc1d4d2',1,'dftfe::cgPRPNonLinearSolver']]], + ['computeresidualnodaldata_121',['computeResidualNodalData',['../classdftfe_1_1dft_class.html#a1e8592a69e1d772c5089f5a8bc8f99ca',1,'dftfe::dftClass']]], + ['computeresidualquaddata_122',['computeResidualQuadData',['../classdftfe_1_1dft_class.html#ac8dbae492f3f47c14cde2e57048e6a2f',1,'dftfe::dftClass']]], + ['computerfostep_123',['computeRFOStep',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#af138aa8db7da640b332f4b431714118b',1,'dftfe::BFGSNonLinearSolver']]], + ['computerhofirstorderresponse_124',['computeRhoFirstOrderResponse',['../namespacedftfe.html#afc3b2b8e94afc34a6303794cec0129b4',1,'dftfe']]], + ['computerhofrompsi_125',['computeRhoFromPSI',['../namespacedftfe.html#a50de40abd5bf9905f6d9107dfa02f291',1,'dftfe']]], + ['computerhogradrhofrominterpolatedvalues_126',['computeRhoGradRhoFromInterpolatedValues',['../namespacedftfe.html#ada3763aeaa732c641870f3c46a64968b',1,'dftfe']]], + ['computerhoinitialguessfrompsi_127',['computeRhoInitialGuessFromPSI',['../classdftfe_1_1dft_class.html#a547e20a49731c01009d4ed937c5bb18e',1,'dftfe::dftClass']]], + ['computerhonodalfirstorderresponsefrompsiandpsiprime_128',['computeRhoNodalFirstOrderResponseFromPSIAndPSIPrime',['../classdftfe_1_1dft_class.html#ac919adb07b374148118eff897e7b48fc',1,'dftfe::dftClass']]], + ['computerhonodalfrompsi_129',['computeRhoNodalFromPSI',['../classdftfe_1_1dft_class.html#a988133cac136e9cacf691b259e96127a',1,'dftfe::dftClass']]], + ['computerhonodalmassvector_130',['computeRhoNodalMassVector',['../classdftfe_1_1dft_class.html#ac94d727b8ebe8274dd9e697e2d88abc0',1,'dftfe::dftClass']]], + ['computerhoresponsefrominterpolatedvalues_131',['computeRhoResponseFromInterpolatedValues',['../namespacedftfe.html#a3a890cb7cabff57e0f089b301d38aacc',1,'dftfe']]], + ['computerhs_132',['computeRhs',['../classdftfe_1_1dealii_linear_solver_problem.html#a4edad82ddfed26efcc1d242ca4bf698e',1,'dftfe::dealiiLinearSolverProblem::computeRhs()'],['../classdftfe_1_1kerker_solver_problem.html#acb14312aef422e11b21070d9342ff8b9',1,'dftfe::kerkerSolverProblem::computeRhs()'],['../classdftfe_1_1poisson_solver_problem.html#a4bd27843fa4d2ff0927abc5a0b93eb2d',1,'dftfe::poissonSolverProblem::computeRhs()']]], + ['computesparsestructure_133',['computeSparseStructure',['../classdftfe_1_1_atom_centered_spherical_function_container.html#ad5bfe7302c2ba29f9e6e194bb01447ec',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['computestep_134',['computeStep',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a8eabd0433a0564f247ebe3e7e60ed89c',1,'dftfe::BFGSNonLinearSolver::computeStep()'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a5d2d2d2e0b9e9e86063ccaf9d812c29d',1,'dftfe::LBFGSNonLinearSolver::computeStep()']]], + ['computestepscale_135',['computeStepScale',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a0dcf24f75956fc467c1788d40969d73e',1,'dftfe::LBFGSNonLinearSolver']]], + ['computestress_136',['computeStress',['../classdftfe_1_1dft_class.html#ad4a66cc1d352fca53cfbf42dd4276972',1,'dftfe::dftClass::computeStress()'],['../classdftfe_1_1dft_base.html#a6b9faf3b6e83f93f4871b6cd2ed5fac6',1,'dftfe::dftBase::computeStress()'],['../classdftfe_1_1dftfe_wrapper.html#ad188c1077830a41b10b6c94d5a43f8e1',1,'dftfe::dftfeWrapper::computeStress()'],['../classdftfe_1_1force_class.html#aa19c28a56fed696796af7ba3b8a5b9ef',1,'dftfe::forceClass::computeStress(const dealii::MatrixFree< 3, double > &matrixFreeData, const dispersionCorrection &dispersionCorr, const unsigned int eigenDofHandlerIndex, const unsigned int smearedChargeQuadratureId, const unsigned int lpspQuadratureIdElectro, const dealii::MatrixFree< 3, double > &matrixFreeDataElectro, const unsigned int phiTotDofHandlerIndexElectro, const distributedCPUVec< double > &phiTotRhoOutElectro, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &rhoOutValues, const std::vector< dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > > &gradRhoOutValues, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &rhoTotalOutValuesLpsp, const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &gradRhoTotalOutValuesLpsp, const std::map< dealii::CellId, std::vector< double > > &pseudoVLocElectro, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &pseudoVLocAtomsElectro, const std::map< dealii::CellId, std::vector< double > > &rhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &gradRhoCoreValues, const std::map< dealii::CellId, std::vector< double > > &hessianRhoCoreValues, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms, const dealii::AffineConstraints< double > &hangingPlusPBCConstraintsElectro, const vselfBinsManager< FEOrder, FEOrderElectro > &vselfBinsManagerElectro)']]], + ['computestresseeshelbyeelectrophitot_137',['computeStressEEshelbyEElectroPhiTot',['../classdftfe_1_1force_class.html#af1d241edc5c6ae87a0557d5c15d2981c',1,'dftfe::forceClass']]], + ['computestresseeshelbyepspenlek_138',['computeStressEEshelbyEPSPEnlEk',['../classdftfe_1_1force_class.html#a9c1284f33dc5fadd746f0e9c732cddd4',1,'dftfe::forceClass']]], + ['computestresseself_139',['computeStressEself',['../classdftfe_1_1force_class.html#ac209810cecc13ce01f99b0ecea551262',1,'dftfe::forceClass']]], + ['computetotalnumberunknowns_140',['computeTotalNumberUnknowns',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a7bb90f7e15efc7aad6a2ddab565eb60a',1,'dftfe::cgPRPNonLinearSolver']]], + ['computetracexthx_141',['computeTraceXtHX',['../classdftfe_1_1dft_class.html#ab8a2284b0304e6e20d85b7ef98e379c1',1,'dftfe::dftClass']]], + ['computetracextkx_142',['computeTraceXtKX',['../classdftfe_1_1dft_class.html#aaccec3a8909f5d2bbb9263abf5631988',1,'dftfe::dftClass']]], + ['computetrustradius_143',['computeTrustRadius',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#ae933250fa74d21f28232979c2b8b748a',1,'dftfe::BFGSNonLinearSolver']]], + ['computeupdatestep_144',['computeUpdateStep',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a4a4c929d27e3f9a31a057f3264c8ed92',1,'dftfe::LBFGSNonLinearSolver']]], + ['computeveff_145',['computeVEff',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#ad2af084a460515f3615ec6a61a3f2273',1,'dftfe::KohnShamHamiltonianOperator']]], + ['computeveffexternalpotcorr_146',['computeVEffExternalPotCorr',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a882c8711bcd25886854c9b3edf4dac21',1,'dftfe::KohnShamHamiltonianOperator']]], + ['computeveffprime_147',['computeVEffPrime',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#aae03af07f6451f3f7939d20e3e74911b',1,'dftfe::KohnShamHamiltonianOperator']]], + ['computevolume_148',['computeVolume',['../classdftfe_1_1dft_class.html#a4094d121bc42b6237cbdffeb4e289e32',1,'dftfe::dftClass']]], + ['computevselffieldgateauxderfd_149',['computeVselfFieldGateauxDerFD',['../classdftfe_1_1dft_class.html#a6484a9f68e5aa6f4ce73843ab5dcb842',1,'dftfe::dftClass']]], + ['computewavefunctiondependentexcenergy_150',['computeWaveFunctionDependentExcEnergy',['../classdftfe_1_1exc_wavefunction_base_class.html#af68e3fda8e202c167a35fadd778de170',1,'dftfe::excWavefunctionBaseClass::computeWaveFunctionDependentExcEnergy()'],['../classdftfe_1_1exc_wavefunction_none_class.html#aed45b4171bbd0bb8fefe5f84c6eb4dc0',1,'dftfe::excWavefunctionNoneClass::computeWaveFunctionDependentExcEnergy()']]], + ['computeweightedcellmassmatrix_151',['computeWeightedCellMassMatrix',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a2ee61fb405bd52f8879de11a312335cc',1,'dftfe::basis::FEBasisOperations']]], + ['computeweightedcellnjgradnimatrix_152',['computeWeightedCellNjGradNiMatrix',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a71a0d1f34faa95585415244991913626',1,'dftfe::basis::FEBasisOperations']]], + ['computeweightedcellnjgradniplusnigradnjmatrix_153',['computeWeightedCellNjGradNiPlusNiGradNjMatrix',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a9c13d83fbd89cec84ee6fcc5065f6bee',1,'dftfe::basis::FEBasisOperations']]], + ['computexcenergyterms_154',['computeXCEnergyTerms',['../classdftfe_1_1energy_calculator.html#afd64fdb6845dc5c9c4e5e41264cc1314',1,'dftfe::energyCalculator']]], + ['computexcenergytermsspinpolarized_155',['computeXCEnergyTermsSpinPolarized',['../classdftfe_1_1energy_calculator.html#a4cdda59d285916318065c10827cedf46',1,'dftfe::energyCalculator']]], + ['configforcelinfefinalize_156',['configForceLinFEFinalize',['../classdftfe_1_1force_class.html#afa2ea536e29cb75ad160235f1b809d3d',1,'dftfe::forceClass']]], + ['configforcelinfeinit_157',['configForceLinFEInit',['../classdftfe_1_1force_class.html#a2842351f2741f6edacd137b2c2e13ac8',1,'dftfe::forceClass']]], + ['configuration_158',['configuration',['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#a5803e1ede7d82bd940e5abe3c0478bdf',1,'dftfe::pseudoUtils::PeriodicTable::configuration(int zval) const'],['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#a6051c728fcc0368aa816ec889b412e08',1,'dftfe::pseudoUtils::PeriodicTable::configuration(std::string symbol) const']]], + ['conj_159',['conj',['../namespacedftfe_1_1utils.html#ac7bf278127718832990825160c58fdc1',1,'dftfe::utils::conj(unsigned int a)'],['../namespacedftfe_1_1utils.html#a8217fa4de50b36f38dd6a8f06a77ca09',1,'dftfe::utils::conj(unsigned long int a)'],['../namespacedftfe_1_1utils.html#a6f5e0d52f3c1b6adefbf0981d32cdd27',1,'dftfe::utils::conj(int a)'],['../namespacedftfe_1_1utils.html#aea1debf65a9b4b656ce9fb003fff0573',1,'dftfe::utils::conj(float a)'],['../namespacedftfe_1_1utils.html#aa030736e1b3c288db0a57d8ad720cb21',1,'dftfe::utils::conj(double a)'],['../namespacedftfe_1_1utils.html#af3493ccad6dd3f957073ac9035e0b0c5',1,'dftfe::utils::conj(cuDoubleComplex a)'],['../namespacedftfe_1_1utils.html#a112447bc04ec4868dc5c702a40d6ea72',1,'dftfe::utils::conj(cuFloatComplex a)'],['../namespacedftfe_1_1utils.html#a6f36b79ad7ccb0c2abac7dcaebcc81d7',1,'dftfe::utils::conj(hipDoubleComplex a)'],['../namespacedftfe_1_1utils.html#a5984dc0c102d2ebd7281ee3c76400628',1,'dftfe::utils::conj(hipFloatComplex a)']]], + ['conjugate_160',['conjugate',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a46ffac5802f6c8aa4e4f8faf739b85f7',1,'dftfe::ScaLAPACKMatrix']]], + ['consistentperiodicboundaryrefinement_161',['consistentPeriodicBoundaryRefinement',['../classdftfe_1_1triangulation_manager.html#a662de7ec8d3fbe57cdb460133871d803',1,'dftfe::triangulationManager']]], + ['constraintmatrixinfo_162',['constraintMatrixInfo',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#ab0064a774fc33fea62956386123f8579',1,'dftfe::dftUtils::constraintMatrixInfo']]], + ['convert_163',['convert',['../namespacedftfe_1_1pseudo_utils.html#a553b785560dfddab9f1716e5d0f1d595',1,'dftfe::pseudoUtils']]], + ['convertcartesiantospherical_164',['convertCartesianToSpherical',['../namespacedftfe_1_1pseudo_utils.html#aade7fcbd6b4fce4925871823d2b76127',1,'dftfe::pseudoUtils::convertCartesianToSpherical()'],['../namespacedftfe_1_1spherical_harmonic_utils.html#a183c632ed23df58d62b186ea349207aa',1,'dftfe::sphericalHarmonicUtils::convertCartesianToSpherical()']]], + ['copy_165',['copy',['../classdftfe_1_1utils_1_1_memory_transfer.html#a243d3f87405eb1503456f85ab9d1fbd1',1,'dftfe::utils::MemoryTransfer::copy()'],['../classdftfe_1_1utils_1_1_memory_transfer_3_01_memory_space_1_1_h_o_s_t_00_01_memory_space_1_1_h_o_s_t_01_4.html#a336d7a356fef3808cfef07baecb9931e',1,'dftfe::utils::MemoryTransfer< MemorySpace::HOST, MemorySpace::HOST >::copy()']]], + ['copy_5fconjugate_5ftransposed_166',['copy_conjugate_transposed',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a04dd4e08159c26e5fae262f9ca8dc183',1,'dftfe::ScaLAPACKMatrix']]], + ['copy_5fto_167',['copy_to',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a2b846add6ba88a8e9b1f1af7750e3a9c',1,'dftfe::ScaLAPACKMatrix']]], + ['copy_5ftransposed_168',['copy_transposed',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ab607c0944accd8bc9b549e43c57f695a',1,'dftfe::ScaLAPACKMatrix']]], + ['copycomplexarrtorealarrs_169',['copyComplexArrToRealArrs',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#ab1a8289a2de109f862563cd7943fe18f',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['copyfile_170',['copyFile',['../namespacedftfe_1_1dft_utils.html#afdf53b76635604e4d222e23d82c54a95',1,'dftfe::dftUtils']]], + ['copyflatteneddealiivectosinglecompvec_171',['copyFlattenedDealiiVecToSingleCompVec',['../namespacedftfe_1_1vector_tools.html#ad8be7e32b2490c9d3211293ea4367b7c',1,'dftfe::vectorTools']]], + ['copyflattenedstlvectosinglecompvec_172',['copyFlattenedSTLVecToSingleCompVec',['../namespacedftfe_1_1vector_tools.html#ae9e994d96e1fbae2e10b12c1b77ed399',1,'dftfe::vectorTools']]], + ['copyfrom_173',['copyFrom',['../classdftfe_1_1utils_1_1_memory_storage.html#af9ade9288f870cce7544f80003760b26',1,'dftfe::utils::MemoryStorage::copyFrom(const MemoryStorage< ValueType, memorySpaceSrc > &srcMemoryStorage)'],['../classdftfe_1_1utils_1_1_memory_storage.html#aa75314324b8f615f44076c05d14548e4',1,'dftfe::utils::MemoryStorage::copyFrom(const MemoryStorage< ValueType, memorySpaceSrc > &srcMemoryStorage, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset)'],['../classdftfe_1_1utils_1_1_memory_storage.html#a9657794073bad0c6084e8c07c14bda52',1,'dftfe::utils::MemoryStorage::copyFrom(const ValueType *src)'],['../classdftfe_1_1utils_1_1_memory_storage.html#a8686cf2bd24fbeffbaf9c98a842dddea',1,'dftfe::utils::MemoryStorage::copyFrom(const ValueType *src, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset)'],['../classdftfe_1_1utils_1_1_memory_storage.html#aa4943b20cfcde137c1258950ded0b6ce',1,'dftfe::utils::MemoryStorage::copyFrom(const std::vector< ValueType > &src)'],['../classdftfe_1_1utils_1_1_memory_storage.html#a994cab8adfaf2185ea6cc428d7d76011',1,'dftfe::utils::MemoryStorage::copyFrom(const std::vector< ValueType > &src, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset)']]], + ['copyfromparallelnonlocalvectoallcellsvec_174',['copyFromParallelNonLocalVecToAllCellsVec',['../namespacedftfe_1_1_atomic_centered_non_local_operator_kernels_device.html#a3fca39e2db42311bf90e5364ea7ddce3',1,'dftfe::AtomicCenteredNonLocalOperatorKernelsDevice']]], + ['copyrealarrstocomplexarr_175',['copyRealArrsToComplexArr',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#aff4aa2f1cd6be7d5892f3ace03f29515',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >']]], + ['copysinglecompvectoflatteneddealiivec_176',['copySingleCompVecToFlattenedDealiiVec',['../namespacedftfe_1_1vector_tools.html#a0920ffac60d8dc52a5d0854f5a9a410b',1,'dftfe::vectorTools']]], + ['copysinglecompvectoflattenedstlvec_177',['copySingleCompVecToFlattenedSTLVec',['../namespacedftfe_1_1vector_tools.html#ab5808aada14eb28ffc011775be52e072',1,'dftfe::vectorTools']]], + ['copyto_178',['copyTo',['../classdftfe_1_1utils_1_1_memory_storage.html#ae58b42050a422a237bd2c93ff22414bb',1,'dftfe::utils::MemoryStorage::copyTo(MemoryStorage< ValueType, memorySpaceDst > &dstMemoryStorage) const'],['../classdftfe_1_1utils_1_1_memory_storage.html#ad64d52585f5234363ed700f06ff03e8f',1,'dftfe::utils::MemoryStorage::copyTo(MemoryStorage< ValueType, memorySpaceDst > &dstMemoryStorage, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset) const'],['../classdftfe_1_1utils_1_1_memory_storage.html#ae809a6c181b268ab01db861062cfc7df',1,'dftfe::utils::MemoryStorage::copyTo(ValueType *dst) const'],['../classdftfe_1_1utils_1_1_memory_storage.html#a3f8379532d334499cbd863fa0021fd2b',1,'dftfe::utils::MemoryStorage::copyTo(ValueType *dst, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset) const'],['../classdftfe_1_1utils_1_1_memory_storage.html#a520ba319687f1105bf4a6f5ae1ffc759',1,'dftfe::utils::MemoryStorage::copyTo(std::vector< ValueType > &dst) const'],['../classdftfe_1_1utils_1_1_memory_storage.html#afc3b0a0320dc03097b77a2182259eda3',1,'dftfe::utils::MemoryStorage::copyTo(std::vector< ValueType > &dst, const std::size_t N, const std::size_t srcOffset, const std::size_t dstOffset) const']]], + ['copytodealiiparallelnonlocalvec_179',['copyToDealiiParallelNonLocalVec',['../namespacedftfe_1_1_atomic_centered_non_local_operator_kernels_device.html#a7838441a85f29f713acf91123c2df2a7',1,'dftfe::AtomicCenteredNonLocalOperatorKernelsDevice']]], + ['copyvalue_180',['copyValue',['../namespacedftfe_1_1utils.html#a5b54b8d954cf7f7a6fefce0adffc03ec',1,'dftfe::utils::copyValue(double *a, const double b)'],['../namespacedftfe_1_1utils.html#aa62ba3f486de8602c6714ad814ac8b7d',1,'dftfe::utils::copyValue(float *a, const float b)'],['../namespacedftfe_1_1utils.html#abbd62a194d6e755b4244990590514771',1,'dftfe::utils::copyValue(cuDoubleComplex *a, const cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#ad642a6592074ff59592a482383d19240',1,'dftfe::utils::copyValue(cuFloatComplex *a, const cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#a4854f3648ec34c4df9a4b546eade78c5',1,'dftfe::utils::copyValue(float *a, const double b)'],['../namespacedftfe_1_1utils.html#a7cfc456950459801afaf21bf2b03e470',1,'dftfe::utils::copyValue(double *a, const float b)'],['../namespacedftfe_1_1utils.html#a97b7ee5b1ba526695fa88a591ddbd6d8',1,'dftfe::utils::copyValue(cuDoubleComplex *a, const cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#adc6b68aa7d6871a7a255c164b3468028',1,'dftfe::utils::copyValue(cuFloatComplex *a, const cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a79f307f373152b7a11b3cb370114c310',1,'dftfe::utils::copyValue(cuDoubleComplex *a, const double b)'],['../namespacedftfe_1_1utils.html#a1ea0aa4dc8f973de69fffcb53eb6d100',1,'dftfe::utils::copyValue(cuFloatComplex *a, const float b)'],['../namespacedftfe_1_1utils.html#ab0bae0eb8544b97400b79d90a88e1ef1',1,'dftfe::utils::copyValue(cuDoubleComplex *a, const float b)'],['../namespacedftfe_1_1utils.html#a52c374519930b83c7ee4f8fa15f6122d',1,'dftfe::utils::copyValue(cuFloatComplex *a, const double b)'],['../namespacedftfe_1_1utils.html#a6b32016979c35c9db3ecc0d615da0f54',1,'dftfe::utils::copyValue(hipDoubleComplex *a, const hipDoubleComplex b)'],['../namespacedftfe_1_1utils.html#aa8ff6c588a5deeb8e4a64f67213b3de1',1,'dftfe::utils::copyValue(hipFloatComplex *a, const hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#a15c61796cb013d60792251b6ae98ad44',1,'dftfe::utils::copyValue(hipDoubleComplex *a, const hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#ae069d8f151e70bc33d195047361b7109',1,'dftfe::utils::copyValue(hipFloatComplex *a, const hipDoubleComplex b)'],['../namespacedftfe_1_1utils.html#ae5dc95d6bd1ef5866f0ca72732da8952',1,'dftfe::utils::copyValue(hipDoubleComplex *a, const double b)'],['../namespacedftfe_1_1utils.html#a8c5170550280d38ca53ac66ea08ae986',1,'dftfe::utils::copyValue(hipFloatComplex *a, const float b)'],['../namespacedftfe_1_1utils.html#aeab4326566543eb367099e762e65cd11',1,'dftfe::utils::copyValue(hipDoubleComplex *a, const float b)'],['../namespacedftfe_1_1utils.html#a20f425804df75df7a9aa0adaf6d3e2f3',1,'dftfe::utils::copyValue(hipFloatComplex *a, const double b)']]], + ['copyvaluetype1arrtovaluetype2arr_181',['copyValueType1ArrToValueType2Arr',['../classdftfe_1_1linear_algebra_1_1_b_l_a_s_wrapper_3_01dftfe_1_1utils_1_1_memory_space_1_1_h_o_s_t_01_4.html#aac089d7846e364a3f9b96360b5c35bf2',1,'dftfe::linearAlgebra::BLASWrapper< dftfe::utils::MemorySpace::HOST >::copyValueType1ArrToValueType2Arr()'],['../classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels.html#a097cad60d91ece603253bfe014cf7d63',1,'dftfe::utils::MPICommunicatorP2PKernels::copyValueType1ArrToValueType2Arr()']]], + ['corenucleardensitypresent_182',['coreNuclearDensityPresent',['../classdftfe_1_1oncv_class.html#a94fe3b90df923da245c7cea8e1929ea0',1,'dftfe::oncvClass']]], + ['createatombins_183',['createAtomBins',['../classdftfe_1_1vself_bins_manager.html#a22bf860da00a54ad61404ec1d8cb1e8c',1,'dftfe::vselfBinsManager']]], + ['createatombinssanitycheck_184',['createAtomBinsSanityCheck',['../classdftfe_1_1vself_bins_manager.html#ad6061e11aa96ae2515c432b0cfee1e4e',1,'dftfe::vselfBinsManager']]], + ['createatomcenteredsphericalfunctionsfordensities_185',['createAtomCenteredSphericalFunctionsForDensities',['../classdftfe_1_1oncv_class.html#a18ff60320230b2b007c1f8c1ab9637d4',1,'dftfe::oncvClass']]], + ['createatomcenteredsphericalfunctionsforlocalpotential_186',['createAtomCenteredSphericalFunctionsForLocalPotential',['../classdftfe_1_1oncv_class.html#a454c2aa42259ac1802a9f5ec1e4cb0a2',1,'dftfe::oncvClass']]], + ['createatomcenteredsphericalfunctionsforprojectors_187',['createAtomCenteredSphericalFunctionsForProjectors',['../classdftfe_1_1oncv_class.html#ac4b2ead17fb2889606d7e7b4df45ad73',1,'dftfe::oncvClass']]], + ['createbandparallelizationindices_188',['createBandParallelizationIndices',['../namespacedftfe_1_1dft_utils.html#a9b61065c8203ed68095edcf1ae5cfc09',1,'dftfe::dftUtils']]], + ['createbinobjectsforce_189',['createBinObjectsForce',['../classdftfe_1_1force_class.html#a1bf2297f8ea44ad0858b987dabb0702a',1,'dftfe::forceClass']]], + ['createboundingboxforsphere_190',['createBoundingBoxForSphere',['../namespacedftfe_1_1dft_utils.html#aa26c95fb5d563176b7f5deb897febaa9',1,'dftfe::dftUtils']]], + ['createboundingboxtrialocallyowned_191',['createBoundingBoxTriaLocallyOwned',['../namespacedftfe_1_1vector_tools.html#a94de11beb762513ccc8a67a135488399',1,'dftfe::vectorTools']]], + ['createdealiivector_192',['createDealiiVector',['../namespacedftfe_1_1vector_tools.html#a2ceeb70d960a91711970d88de99b0146',1,'dftfe::vectorTools']]], + ['createglobaltolocalidmapsscalapackmat_193',['createGlobalToLocalIdMapsScaLAPACKMat',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#afaed6d79685ef81cd4312ed4ac61c158',1,'dftfe::linearAlgebraOperations::internal']]], + ['createkpointparallelizationindices_194',['createKpointParallelizationIndices',['../namespacedftfe_1_1dft_utils.html#aa4eb730fa103524c924c0e0860ade0b8',1,'dftfe::dftUtils']]], + ['createmasterchargeidtoimageidmaps_195',['createMasterChargeIdToImageIdMaps',['../classdftfe_1_1dft_class.html#a3585251402041d382edbe690e9ba17cb',1,'dftfe::dftClass']]], + ['createmultivector_196',['createMultiVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aeca3d40cc4d4671698e7fd3d1beac265',1,'dftfe::basis::FEBasisOperations']]], + ['createmultivectorfromdealiipartitioner_197',['createMultiVectorFromDealiiPartitioner',['../namespacedftfe_1_1linear_algebra.html#a80a955ddf22b83a2c100b958504010f2',1,'dftfe::linearAlgebra']]], + ['createparallelconstraintmatrixfromserial_198',['createParallelConstraintMatrixFromSerial',['../namespacedftfe_1_1vector_tools.html#a977b9d4c44854ce9555eaa4f57857c03',1,'dftfe::vectorTools']]], + ['createprefineddofhandler_199',['createpRefinedDofHandler',['../classdftfe_1_1dft_class.html#a6b537567bdf342769b03303a4788e62d',1,'dftfe::dftClass']]], + ['createprocessgridrectangularmatrix_200',['createProcessGridRectangularMatrix',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a6a31afb29381fc4e6b6fcefccaaedd17',1,'dftfe::linearAlgebraOperations::internal']]], + ['createprocessgridsquarematrix_201',['createProcessGridSquareMatrix',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a0bdaa7479769cdd6a30ab41d702f1fb9',1,'dftfe::linearAlgebraOperations::internal']]], + ['createscratchfolder_202',['createScratchFolder',['../classdftfe_1_1dftfe_wrapper.html#a810e943c0e3d9766360ad06e9b1d2d3a',1,'dftfe::dftfeWrapper']]], + ['createscratchmultivectors_203',['createScratchMultiVectors',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#accf06cffc1c3c03ad2ce259c588dafae',1,'dftfe::basis::FEBasisOperations']]], + ['cross_5fproduct_204',['cross_product',['../namespacedftfe_1_1dft_utils.html#ad782f8ca76042839b133fb34ad6ec681',1,'dftfe::dftUtils::cross_product()'],['../namespacedftfe_1_1mesh_gen_utils.html#a04c37654934c494e6bbd51777bcc8446',1,'dftfe::meshGenUtils::cross_product()']]], + ['crys2cart_205',['crys2cart',['../classdftfe_1_1symmetry_class.html#a1585560991e1d68f7918a845d4d324e2',1,'dftfe::symmetryClass']]], + ['csgerv2d_206',['Csgerv2d',['../namespacedftfe.html#a2dc58bb0b7f30e064c2fa44117c7d623',1,'dftfe']]], + ['csgesd2d_207',['Csgesd2d',['../namespacedftfe.html#a60f9d5cb0924f7a150d178001cb4e58b',1,'dftfe']]], + ['csys2blacs_5fhandle_208',['Csys2blacs_handle',['../namespacedftfe.html#a35a97131f618f7447b8d8177e89b515e',1,'dftfe']]] +]; diff --git a/search/functions_3.js b/search/functions_3.js new file mode 100644 index 000000000..aa0e26379 --- /dev/null +++ b/search/functions_3.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['data_0',['data',['../classdftfe_1_1utils_1_1_memory_storage.html#aac3f583e6cc54e0deaf65d8ef6a23c59',1,'dftfe::utils::MemoryStorage::data() noexcept'],['../classdftfe_1_1utils_1_1_memory_storage.html#aae2837b289ac474e333828e48c9aa2d4',1,'dftfe::utils::MemoryStorage::data() const noexcept'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ac1095f6e9be655b2ff885c0c2a8d2880',1,'dftfe::linearAlgebra::MultiVector::data()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a7d040bd7787f972dbd45d4d97edf87a3',1,'dftfe::linearAlgebra::MultiVector::data() const']]], + ['dealiilinearsolver_1',['dealiiLinearSolver',['../classdftfe_1_1dealii_linear_solver.html#a9586538036013497a0649a30265a8827',1,'dftfe::dealiiLinearSolver']]], + ['dealiilinearsolverproblem_2',['dealiiLinearSolverProblem',['../classdftfe_1_1dealii_linear_solver_problem.html#a97a0ecea80b757eeac064ea65c613644',1,'dftfe::dealiiLinearSolverProblem']]], + ['deallocate_3',['deallocate',['../classdftfe_1_1utils_1_1_memory_manager.html#a767c87fd102f8ad10e29a5e62aec0a53',1,'dftfe::utils::MemoryManager::deallocate()'],['../classdftfe_1_1utils_1_1_memory_manager_3_01_value_type_00_01_memory_space_1_1_h_o_s_t_01_4.html#ae104e0f016121fb3f39a2da72e6330d7',1,'dftfe::utils::MemoryManager< ValueType, MemorySpace::HOST >::deallocate()']]], + ['declexception1_4',['DeclException1',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a27b32f617606bdae5aa6fdab7dce23db',1,'dftfe::LAPACKSupport::DeclException1(ExcState, State,<< "The function cannot be called while the matrix is in state "<< state_name(arg1))'],['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a5cd8c229bdd3d04bf33365a8b98fbe3e',1,'dftfe::LAPACKSupport::DeclException1(ExcProperty, Property,<< "The function cannot be called with a "<< property_name(arg1)<< " matrix.")'],['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a6b4983d15660f64ef45e694a1e728440',1,'dftfe::LAPACKSupport::DeclException1(ExcMissing, std::string,<< "When you ran 'cmake' during installation of deal.II, "<< "no suitable installation of the BLAS or LAPACK library could "<< "be found. Consequently, the function <"<< arg1<< "> can not be called. Refer to the doc/readme.html "<< "file for information on how to ensure that deal.II "<< "picks up an existing BLAS and LAPACK installation at "<< "configuration time.")']]], + ['declexception2_5',['DeclException2',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#aef82ce9af9dc80dd3462be0800624348',1,'dftfe::LAPACKSupport']]], + ['declexceptionmsg_6',['DeclExceptionMsg',['../namespacedftfe_1_1dft_utils.html#adfc4fda60705bb297d20f1ed78ec2155',1,'dftfe::dftUtils::DeclExceptionMsg(ExcNotImplementedYet, "This functionality is not implemented yet or not needed to be implemented.")'],['../namespacedftfe_1_1dft_utils.html#af6662a00711ddc0f6bc8e37ab112ed5d',1,'dftfe::dftUtils::DeclExceptionMsg(ExcInternalError, "DFT-FE internal error.")']]], + ['deformcell_7',['deformCell',['../classdftfe_1_1dftfe_wrapper.html#ab0c58280c0480e66037638ffc2d51986',1,'dftfe::dftfeWrapper']]], + ['deformdomain_8',['deformDomain',['../classdftfe_1_1dft_class.html#a3092cea7c73c7b83cad342cb7f791ab7',1,'dftfe::dftClass::deformDomain()'],['../classdftfe_1_1dft_base.html#a4d292401c658852ccec9289136cd4a61',1,'dftfe::dftBase::deformDomain()']]], + ['densityextrapolation_9',['DensityExtrapolation',['../classdftfe_1_1molecular_dynamics_class.html#a2dfec9cd88235861d9fed750220355b9',1,'dftfe::molecularDynamicsClass']]], + ['densitymatrixeigenbasisfirstorderresponse_10',['densityMatrixEigenBasisFirstOrderResponse',['../namespacedftfe_1_1linear_algebra_operations.html#a9012f161a67342f72010e3e47e661c85',1,'dftfe::linearAlgebraOperations']]], + ['densitysplitextrapolation_11',['DensitySplitExtrapolation',['../classdftfe_1_1molecular_dynamics_class.html#a01734279e03fbe1e269b7abf3137ad0a',1,'dftfe::molecularDynamicsClass']]], + ['descinit_5f_12',['descinit_',['../namespacedftfe.html#af106f0c84c4a7b69fc89bf9602d59c13',1,'dftfe']]], + ['determineatomsofinterstpseudopotential_13',['determineAtomsOfInterstPseudopotential',['../classdftfe_1_1dft_class.html#ad420bf2a3e2c1ca648820f698f6ffef9',1,'dftfe::dftClass']]], + ['determineorbitalfilling_14',['determineOrbitalFilling',['../classdftfe_1_1dft_class.html#acb2b928891df533b6eec8405dcebc2a9',1,'dftfe::dftClass']]], + ['dftclass_15',['dftClass',['../classdftfe_1_1dft_class.html#a7ec2a2356b29e896301a343d0606bdc9',1,'dftfe::dftClass']]], + ['dftfewrapper_16',['dftfeWrapper',['../classdftfe_1_1dftfe_wrapper.html#a6f5e5a2f056a41b18ddffbd7de0a7483',1,'dftfe::dftfeWrapper::dftfeWrapper()'],['../classdftfe_1_1dftfe_wrapper.html#a9d5fd78c228751bf5e1fc819fda4b5b5',1,'dftfe::dftfeWrapper::dftfeWrapper(const std::string parameter_file, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const bool setDeviceToMPITaskBindingInternally=false, const std::string solverMode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool useDevice=false)'],['../classdftfe_1_1dftfe_wrapper.html#a3af7188c8d2626b13e3692e47fb6032d',1,'dftfe::dftfeWrapper::dftfeWrapper(const std::string parameter_file, const std::string restartCoordsFile, const std::string restartDomainVectorsFile, const MPI_Comm &mpi_comm_parent, const bool printParams=false, const bool setDeviceToMPITaskBindingInternally=false, const std::string solverMode="GS", const std::string restartFilesPath=".", const int _verbosity=1, const bool useDevice=false, const bool isScfRestart=true)'],['../classdftfe_1_1dftfe_wrapper.html#aa13ae8595df02e6cd38ea572ea7f6993',1,'dftfe::dftfeWrapper::dftfeWrapper(const MPI_Comm &mpi_comm_parent, const bool useDevice, const std::vector< std::vector< double > > atomicPositionsCart, const std::vector< unsigned int > atomicNumbers, const std::vector< std::vector< double > > cell, const std::vector< bool > pbc, const std::vector< unsigned int > mpGrid=std::vector< unsigned int >{1, 1, 1}, const std::vector< bool > mpGridShift=std::vector< bool >{false, false, false}, const bool spinPolarizedDFT=false, const double startMagnetization=0.0, const double fermiDiracSmearingTemp=500.0, const unsigned int npkpt=0, const double meshSize=0.8, const double scfMixingParameter=0.2, const int verbosity=-1, const bool setDeviceToMPITaskBindingInternally=false)']]], + ['dftparameters_17',['dftParameters',['../classdftfe_1_1dft_parameters.html#a649ae12e0807df03af06561d13e9a27a',1,'dftfe::dftParameters']]], + ['dgesv_5f_18',['dgesv_',['../namespacedftfe_1_1dft_utils.html#a2a7c59f741f731f16db9771b470e66c7',1,'dftfe::dftUtils']]], + ['dispersioncorrection_19',['dispersionCorrection',['../classdftfe_1_1dispersion_correction.html#a7b944c8421d038ba9359ed675462518e',1,'dftfe::dispersionCorrection']]], + ['distribute_20',['distribute',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#aae5b940241c022ac24e9c546a91f8cec',1,'dftfe::dftUtils::constraintMatrixInfo::distribute(distributedCPUVec< double > &fieldVector) const'],['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#aa8163dcab4764a016cc44fc2cecab0f5',1,'dftfe::dftUtils::constraintMatrixInfo::distribute(distributedCPUVec< T > &fieldVector, const unsigned int blockSize) const'],['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#af84f162f7e533fa1220d17882fd983f0',1,'dftfe::dftUtils::constraintMatrixInfo::distribute(distributedCPUMultiVec< T > &fieldVector) const'],['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a93ba35427b353d630dd46081a1437953',1,'dftfe::basis::FEBasisOperations::distribute()']]], + ['distribute_5fslave_5fto_5fmaster_21',['distribute_slave_to_master',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a95f1b2fadecdf98b4e283e0c770ab083',1,'dftfe::dftUtils::constraintMatrixInfo::distribute_slave_to_master(distributedCPUVec< T > &fieldVector, const unsigned int blockSize) const'],['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#ab3d5fb04ba78076f35d0df66a52ece46',1,'dftfe::dftUtils::constraintMatrixInfo::distribute_slave_to_master(distributedCPUMultiVec< T > &fieldVector) const']]], + ['distributeforcecontributionfnlgammaatoms_22',['distributeForceContributionFnlGammaAtoms',['../classdftfe_1_1force_class.html#a51d92c2bcfe34d233d86dac3b01ac9e8',1,'dftfe::forceClass']]], + ['distributeforcecontributionfpsplocalgammaatoms_23',['distributeForceContributionFPSPLocalGammaAtoms',['../classdftfe_1_1force_class.html#af92c2aed2fe12b37821f91467bcf454d',1,'dftfe::forceClass']]], + ['distributex_24',['distributeX',['../classdftfe_1_1dealii_linear_solver_problem.html#a55759d651b4bcadf7eb57b0b83d546a0',1,'dftfe::dealiiLinearSolverProblem::distributeX()'],['../classdftfe_1_1kerker_solver_problem.html#a1265745147339654ba0b60b2247ba3cd',1,'dftfe::kerkerSolverProblem::distributeX()'],['../classdftfe_1_1poisson_solver_problem.html#a298666149f5621be3454f5866e92cb54',1,'dftfe::poissonSolverProblem::distributeX()']]], + ['div_25',['div',['../namespacedftfe_1_1utils.html#a5e7b3752fb30f9f76173179dd8f50eaf',1,'dftfe::utils::div(unsigned int a, unsigned int b)'],['../namespacedftfe_1_1utils.html#afbe3ab98871188f2072f0c8ae8ce0ea5',1,'dftfe::utils::div(unsigned long int a, unsigned long int b)'],['../namespacedftfe_1_1utils.html#aaaa3834250738a4e827f814afe9d1ef6',1,'dftfe::utils::div(int a, int b)'],['../namespacedftfe_1_1utils.html#a2279979c305e7d21536f97cdaba40025',1,'dftfe::utils::div(double a, double b)'],['../namespacedftfe_1_1utils.html#a5e6b0c385de12d535e094888f26c3b39',1,'dftfe::utils::div(float a, float b)'],['../namespacedftfe_1_1utils.html#adee51576c4cec1272ee43678ccda2637',1,'dftfe::utils::div(cuDoubleComplex a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a8517d2be1bf5a5ed00e292cec4bfc038',1,'dftfe::utils::div(cuFloatComplex a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#afff417d04e7f7dc68b6a663e270f6d78',1,'dftfe::utils::div(cuFloatComplex a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a5805153eea93d364381bb618daed0675',1,'dftfe::utils::div(cuDoubleComplex a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#a58c915984c57daa85d959c27ac1493ae',1,'dftfe::utils::div(double a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#add50b4aa742683c688bd2aa4a71cc83d',1,'dftfe::utils::div(cuDoubleComplex a, double b)'],['../namespacedftfe_1_1utils.html#aba5a41a6b9590be1de7f01addc594a3c',1,'dftfe::utils::div(float a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#adc7df416cd2b5ebcbb944fe3a5d28fae',1,'dftfe::utils::div(cuFloatComplex a, float b)'],['../namespacedftfe_1_1utils.html#a71589022ae85f478dd3bc5828c3fc0d5',1,'dftfe::utils::div(double a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#a1a5344bc85ff5cc1b09add9f3a016522',1,'dftfe::utils::div(cuFloatComplex a, double b)'],['../namespacedftfe_1_1utils.html#a7eecc9b01172a90214946be2cd7dffda',1,'dftfe::utils::div(hipDoubleComplex a, hipDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a39b510a8ea8527c2f70f8a43a1acc357',1,'dftfe::utils::div(hipFloatComplex a, hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#a60b06facec462bb99acfdf559ecf3d56',1,'dftfe::utils::div(hipFloatComplex a, hipDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a562ebcb1fb1192686e175614441bf5da',1,'dftfe::utils::div(hipDoubleComplex a, hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#a3143124849ead17287fb565341948e8a',1,'dftfe::utils::div(double a, hipDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a6047b562aa109fbfa1aad70953c7e173',1,'dftfe::utils::div(hipDoubleComplex a, double b)'],['../namespacedftfe_1_1utils.html#ac5ff5557ea0542c30fcc135f62b42400',1,'dftfe::utils::div(float a, hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#aa6071619fb3cb1846241afbe4bba8a0a',1,'dftfe::utils::div(hipFloatComplex a, float b)'],['../namespacedftfe_1_1utils.html#a8ad3162b0dfcd5afd9d994480eff9642',1,'dftfe::utils::div(double a, hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#a95ee3e40cd60d2ebf89db7174038dd92',1,'dftfe::utils::div(hipFloatComplex a, double b)']]], + ['dot_26',['dot',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ad0d448da6d814b92517c6f07ff7969f4',1,'dftfe::linearAlgebra::MultiVector']]] +]; diff --git a/search/functions_4.js b/search/functions_4.js new file mode 100644 index 000000000..3851b9f71 --- /dev/null +++ b/search/functions_4.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['eigenpairs_5fhermitian_0',['eigenpairs_hermitian',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#af889f3eab21c47bee9dd4019a5db9c5a',1,'dftfe::ScaLAPACKMatrix']]], + ['eigenpairs_5fhermitian_5fby_5findex_1',['eigenpairs_hermitian_by_index',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#aa81dd4d98eafdd4fe40db0b0133f2165',1,'dftfe::ScaLAPACKMatrix']]], + ['eigenpairs_5fhermitian_5fby_5findex_5fmrrr_2',['eigenpairs_hermitian_by_index_MRRR',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a5599c27fc237ac7e69999ba6d7d913d9',1,'dftfe::ScaLAPACKMatrix']]], + ['eigenpairs_5fhermitian_5fmrrr_3',['eigenpairs_hermitian_MRRR',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ab4ae288a0acc2add361f98cfe8312aa8',1,'dftfe::ScaLAPACKMatrix']]], + ['eigensolverclass_4',['eigenSolverClass',['../classdftfe_1_1eigen_solver_class.html#add942b58e705efcd44067ca8ae932d40',1,'dftfe::eigenSolverClass']]], + ['element_5',['Element',['../structdftfe_1_1pseudo_utils_1_1_element.html#ad8152975474dc567546eaac70229110f',1,'dftfe::pseudoUtils::Element']]], + ['elpadeallocatehandles_6',['elpaDeallocateHandles',['../classdftfe_1_1elpa_scala_manager.html#a7b4b6d4a97b0a608d8ba2c5534b6b371',1,'dftfe::elpaScalaManager']]], + ['elpascalamanager_7',['elpaScalaManager',['../classdftfe_1_1elpa_scala_manager.html#a2ca0b6089b3f59a2d0e42f918e7ce9b2',1,'dftfe::elpaScalaManager']]], + ['end_8',['end',['../classdftfe_1_1utils_1_1_memory_storage.html#a6cfcdefa08c9fe96f230a1bd97b9e881',1,'dftfe::utils::MemoryStorage::end()'],['../classdftfe_1_1utils_1_1_memory_storage.html#a018363f19becdf162dc02901cfda21a8',1,'dftfe::utils::MemoryStorage::end() const'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a896eb2bbc51a5b7a6b700117443e6932',1,'dftfe::linearAlgebra::MultiVector::end()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a4d008ff333f0ab43a21b25f76f81c516',1,'dftfe::linearAlgebra::MultiVector::end() const']]], + ['energycalculator_9',['energyCalculator',['../classdftfe_1_1energy_calculator.html#ac44a9e03a54412aebb79fbab5582879e',1,'dftfe::energyCalculator']]], + ['excdensitybaseclass_10',['excDensityBaseClass',['../classdftfe_1_1exc_density_base_class.html#a99433e2dcb5c164d2df7bb2870db8c43',1,'dftfe::excDensityBaseClass']]], + ['excdensityggaclass_11',['excDensityGGAClass',['../classdftfe_1_1exc_density_g_g_a_class.html#abea3bf26e00a36a9f85671be95979d65',1,'dftfe::excDensityGGAClass::excDensityGGAClass(xc_func_type *funcXPtr, xc_func_type *funcCPtr, bool isSpinPolarized, bool scaleExchange, bool computeCorrelation, double scaleExchangeFactor)'],['../classdftfe_1_1exc_density_g_g_a_class.html#ae802a501a958de43cebcf057bbc81bca',1,'dftfe::excDensityGGAClass::excDensityGGAClass(xc_func_type *funcXPtr, xc_func_type *funcCPtr, bool isSpinPolarized, std::string modelXCInputFile, bool scaleExchange, bool computeCorrelation, double scaleExchangeFactor)']]], + ['excdensityldaclass_12',['excDensityLDAClass',['../classdftfe_1_1exc_density_l_d_a_class.html#a69cefe1e33ae070448ed32c34aa71939',1,'dftfe::excDensityLDAClass::excDensityLDAClass(xc_func_type *funcXPtr, xc_func_type *funcCPtr, bool isSpinPolarized, bool scaleExchange, bool computeCorrelation, double scaleExchangeFactor)'],['../classdftfe_1_1exc_density_l_d_a_class.html#a1fc2b191d178dd3046127dfca8664705',1,'dftfe::excDensityLDAClass::excDensityLDAClass(xc_func_type *funcXPtr, xc_func_type *funcCPtr, bool isSpinPolarized, std::string modelXCInputFile, bool scaleExchange, bool computeCorrelation, double scaleExchangeFactor)']]], + ['exchangelocallist_13',['exchangeLocalList',['../namespacedftfe_1_1pseudo_utils.html#a632cef0d925994de3ee116e41bd113a4',1,'dftfe::pseudoUtils']]], + ['exchangenumberingmap_14',['exchangeNumberingMap',['../namespacedftfe_1_1pseudo_utils.html#ab7952c0e9cd4cf03cf387aded99fc5d7',1,'dftfe::pseudoUtils']]], + ['excmanager_15',['excManager',['../classdftfe_1_1exc_manager.html#aa920e72cc6c3e25ead723ab1ca185d18',1,'dftfe::excManager']]], + ['excwavefunctionbaseclass_16',['excWavefunctionBaseClass',['../classdftfe_1_1exc_wavefunction_base_class.html#aedada949ec36757aef0d9fa0764edf42',1,'dftfe::excWavefunctionBaseClass']]], + ['excwavefunctionnoneclass_17',['excWavefunctionNoneClass',['../classdftfe_1_1exc_wavefunction_none_class.html#a6b8be2a5fb57ff0ed99968fd8c015ce1',1,'dftfe::excWavefunctionNoneClass']]], + ['extracttocellnodaldata_18',['extractToCellNodalData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a41ce1d0901d1a1ab161ad2ca23c1656b',1,'dftfe::basis::FEBasisOperations']]], + ['extracttocellnodaldatakernel_19',['extractToCellNodalDataKernel',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#af869ccd152a4c2bfdc69ecc5436a36d9',1,'dftfe::basis::FEBasisOperations']]] +]; diff --git a/search/functions_5.js b/search/functions_5.js new file mode 100644 index 000000000..42bcb470c --- /dev/null +++ b/search/functions_5.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['febasisoperations_0',['FEBasisOperations',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#adbb30c93ec2d8500c5d731fb6d77be4d',1,'dftfe::basis::FEBasisOperations']]], + ['fieldgradl2norm_1',['fieldGradl2Norm',['../classdftfe_1_1dft_class.html#a81387e05d7fe52554c2aba25dbfba0d1',1,'dftfe::dftClass']]], + ['fillparalleloverlapmatrix_2',['fillParallelOverlapMatrix',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a7374662bbb8cb4f1f06934af68f1b9d8',1,'dftfe::linearAlgebraOperations::internal']]], + ['fillparalleloverlapmatrixmixedprec_3',['fillParallelOverlapMatrixMixedPrec',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html#a88f2d97c179cd7082c44efd4bfc8a7db',1,'dftfe::linearAlgebraOperations::internal']]], + ['finalizeincrementfield_4',['finalizeIncrementField',['../classdftfe_1_1mesh_movement_class.html#a601dbcee450a5780fc95fd0aa1b858c5',1,'dftfe::meshMovementClass']]], + ['finalizekohnshamdftoperator_5',['finalizeKohnShamDFTOperator',['../classdftfe_1_1dft_class.html#a5557fffd3f96fa47f91dfad2bd3acf95',1,'dftfe::dftClass']]], + ['findclosestverticestodestinationpoints_6',['findClosestVerticesToDestinationPoints',['../classdftfe_1_1mesh_movement_class.html#a2e907489e90ae799d57c97b278da1207',1,'dftfe::meshMovementClass']]], + ['findmep_7',['findMEP',['../classdftfe_1_1nudged_elastic_band_class.html#a4a5bdb8cf2cfd7bed8705436f020f57d',1,'dftfe::nudgedElasticBandClass']]], + ['finish_8',['finish',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a8024f9fd7a865d33a1fed31e10555a84',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['fnlgammaatomselementalcontribution_9',['FnlGammaAtomsElementalContribution',['../classdftfe_1_1force_class.html#a57c273d5e3ceed5fc754068a4ef89bf1',1,'dftfe::forceClass']]], + ['fnlgammaxelementalcontribution_10',['FnlGammaxElementalContribution',['../classdftfe_1_1force_class.html#ab8307626a162a73df1210865551ff53a',1,'dftfe::forceClass']]], + ['fnonlinearcorecorrectiongammaatomselementalcontribution_11',['FNonlinearCoreCorrectionGammaAtomsElementalContribution',['../classdftfe_1_1force_class.html#a5a0d4d6108e9caffd3ff9862b5444543',1,'dftfe::forceClass::FNonlinearCoreCorrectionGammaAtomsElementalContribution(std::map< unsigned int, std::vector< double > > &forceContributionFNonlinearCoreCorrectionGammaAtoms, dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::VectorizedArray< double > > &vxcQuads, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &gradRhoCoreAtoms)'],['../classdftfe_1_1force_class.html#ae0ce682396c01b28d8d9701be7c99227',1,'dftfe::forceClass::FNonlinearCoreCorrectionGammaAtomsElementalContribution(std::map< unsigned int, std::vector< double > > &forceContributionFNonlinearCoreCorrectionGammaAtoms, dealii::FEEvaluation< 3, 1, C_num1DQuad< C_rhoNodalPolyOrder< FEOrder, FEOrderElectro >()>(), 3 > &forceEval, const dealii::MatrixFree< 3, double > &matrixFreeData, const unsigned int cell, const dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &derExcGradRho, const std::map< unsigned int, std::map< dealii::CellId, std::vector< double > > > &hessianRhoCoreAtoms)']]], + ['fnonlinearcorecorrectiongammaatomselementalcontributionspinpolarized_12',['FNonlinearCoreCorrectionGammaAtomsElementalContributionSpinPolarized',['../classdftfe_1_1force_class.html#a6f338532c0a381c9c13c3b7c62dc3fe0',1,'dftfe::forceClass']]], + ['forceclass_13',['forceClass',['../classdftfe_1_1force_class.html#a14b0b7000a00710a35dd8327e806fa74',1,'dftfe::forceClass']]], + ['fphitotsmearedchargesgammaatomselementalcontribution_14',['FPhiTotSmearedChargesGammaAtomsElementalContribution',['../classdftfe_1_1force_class.html#a27ce759c41077b9232c80ae9825d7ec4',1,'dftfe::forceClass']]], + ['fpsplocalgammaatomselementalcontribution_15',['FPSPLocalGammaAtomsElementalContribution',['../classdftfe_1_1force_class.html#ab469d7e8b6ef893de79c06aec80e8f6a',1,'dftfe::forceClass']]], + ['fvselfsmearedchargesgammaatomselementalcontribution_16',['FVselfSmearedChargesGammaAtomsElementalContribution',['../classdftfe_1_1force_class.html#ac7a6b13b799ce3a8d6ea4de02ce9bae0',1,'dftfe::forceClass']]] +]; diff --git a/search/functions_6.js b/search/functions_6.js new file mode 100644 index 000000000..91bbe85d4 --- /dev/null +++ b/search/functions_6.js @@ -0,0 +1,189 @@ +var searchData= +[ + ['gatherlocallyownedentriessendbuffertotargetprocs_0',['gatherLocallyOwnedEntriesSendBufferToTargetProcs',['../classdftfe_1_1utils_1_1_m_p_i_communicator_p2_p_kernels.html#ae1c332046bba50331d950e87f0049248',1,'dftfe::utils::MPICommunicatorP2PKernels']]], + ['generateautomaticmeshapriori_1',['generateAutomaticMeshApriori',['../classdftfe_1_1triangulation_manager.html#a6db96c0b47b43986e69ad03e5a067fd9',1,'dftfe::triangulationManager']]], + ['generatecoarsemesh_2',['generateCoarseMesh',['../classdftfe_1_1triangulation_manager.html#a63613fb68f1bf29670d7c094cc117fde',1,'dftfe::triangulationManager']]], + ['generatecoarsemeshesforrestart_3',['generateCoarseMeshesForRestart',['../classdftfe_1_1triangulation_manager.html#a35ab10e7f2b9c99ed596ede370916b16',1,'dftfe::triangulationManager']]], + ['generateimagecharges_4',['generateImageCharges',['../classdftfe_1_1dft_class.html#a31f6cd17e2dd532fe945e502a25f936d',1,'dftfe::dftClass']]], + ['generatemesh_5',['generateMesh',['../classdftfe_1_1triangulation_manager.html#ae298d2a96256b8bd015c597049d33303',1,'dftfe::triangulationManager']]], + ['generatempgrid_6',['generateMPGrid',['../classdftfe_1_1dft_class.html#a19961529f3d534fa18298f7f76e99531',1,'dftfe::dftClass']]], + ['generateresetmeshes_7',['generateResetMeshes',['../classdftfe_1_1triangulation_manager.html#a5e8b6aaf180aba7d8e3182786f676e7a',1,'dftfe::triangulationManager']]], + ['generateserialunmovedandparallelmovedunmovedmesh_8',['generateSerialUnmovedAndParallelMovedUnmovedMesh',['../classdftfe_1_1triangulation_manager.html#ae604ea69dd2af486a4b0dfe81588e85e',1,'dftfe::triangulationManager']]], + ['geometryoptimizationclass_9',['geometryOptimizationClass',['../classdftfe_1_1geometry_optimization_class.html#a05c3cfd77ad33cb7758b9a488ac0ed07',1,'dftfe::geometryOptimizationClass']]], + ['geooptcell_10',['geoOptCell',['../classdftfe_1_1geo_opt_cell.html#a9725a2266871b35b8d5535c5a3448ce2',1,'dftfe::geoOptCell']]], + ['geooption_11',['geoOptIon',['../classdftfe_1_1geo_opt_ion.html#ae95c55c80eab3491fe60988fa22f75af',1,'dftfe::geoOptIon']]], + ['get_5finterpool_5fcomm_12',['get_interpool_comm',['../classdftfe_1_1dft_utils_1_1_pool.html#a3c9a67abe1e1a8310cad03f46b4af4bd',1,'dftfe::dftUtils::Pool']]], + ['get_5fintrapool_5fcomm_13',['get_intrapool_comm',['../classdftfe_1_1dft_utils_1_1_pool.html#a16e43d70ad01abc5d84180e2d404da38',1,'dftfe::dftUtils::Pool']]], + ['get_5fprocess_5fgrid_5fcolumns_14',['get_process_grid_columns',['../classdftfe_1_1_process_grid.html#ac0f46f07c2de3b6564b8793d629e1bf3',1,'dftfe::ProcessGrid']]], + ['get_5fprocess_5fgrid_5frows_15',['get_process_grid_rows',['../classdftfe_1_1_process_grid.html#a070f58a1dd24772ba335fd6e0bf7116e',1,'dftfe::ProcessGrid']]], + ['get_5fproperty_16',['get_property',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a6213590579de7473604c7b7fc7fb1dcc',1,'dftfe::ScaLAPACKMatrix']]], + ['get_5fstate_17',['get_state',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a1b6277fcc0a927bb6bed309eaaef18cc',1,'dftfe::ScaLAPACKMatrix']]], + ['get_5fthis_5fprocess_5fcolumn_18',['get_this_process_column',['../classdftfe_1_1_process_grid.html#a7e3e0a60c5cdb5af1f705fc5574ef707',1,'dftfe::ProcessGrid']]], + ['get_5fthis_5fprocess_5frow_19',['get_this_process_row',['../classdftfe_1_1_process_grid.html#a0a402b73111bcf3639467bf70514143a',1,'dftfe::ProcessGrid']]], + ['getatomcenteredkpointindexedsphericalfnquadvalues_20',['getAtomCenteredKpointIndexedSphericalFnQuadValues',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a84f83b46caca0bfb80f788191bbcd54e',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getatomcenteredkpointtimessphericalfntimesdistfromatomquadvalues_21',['getAtomCenteredKpointTimesSphericalFnTimesDistFromAtomQuadValues',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a2f1d0336492e5eaa5918feeff5f275fb',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getatomcoordinates_22',['getAtomCoordinates',['../classdftfe_1_1_atom_centered_spherical_function_container.html#aa7d11836691e8c9729013e3abe3616fa',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['getatomicnumbers_23',['getAtomicNumbers',['../classdftfe_1_1_atom_centered_spherical_function_container.html#ae0d266ca2268a95e340b349c4a193841',1,'dftfe::AtomCenteredSphericalFunctionContainer::getAtomicNumbers()'],['../classdftfe_1_1dftfe_wrapper.html#a4bb128c03ef09e1b4bd1a3dca2e9b8b2',1,'dftfe::dftfeWrapper::getAtomicNumbers()']]], + ['getatomidbinidmaplocalallimages_24',['getAtomIdBinIdMapLocalAllImages',['../classdftfe_1_1vself_bins_manager.html#adb96700444c2a24e822808bb890ff509',1,'dftfe::vselfBinsManager']]], + ['getatomidincurrentprocessor_25',['getAtomIdInCurrentProcessor',['../classdftfe_1_1oncv_class.html#a2fa66c12a14bdce8840c7c6a95905814',1,'dftfe::oncvClass']]], + ['getatomidsbins_26',['getAtomIdsBins',['../classdftfe_1_1vself_bins_manager.html#ad7dc16b81e6779100b6231e6cc918bec',1,'dftfe::vselfBinsManager']]], + ['getatomidsincurrentprocess_27',['getAtomIdsInCurrentProcess',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a7c7ef4d53a0e4d88413bc7659ac2a3bb',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['getatomidsinelement_28',['getAtomIdsInElement',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a7d36e0177c10d0c493acf9140627b39d',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['getatomidtonontrivialsphericalfncellstartindex_29',['getAtomIdToNonTrivialSphericalFnCellStartIndex',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a028998f189c8c3c59f80c7a310e9a27b',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getatomimageidsbins_30',['getAtomImageIdsBins',['../classdftfe_1_1vself_bins_manager.html#a84a105106f0c8bde2eff23107cc731b4',1,'dftfe::vselfBinsManager']]], + ['getatomlocationscart_31',['getAtomLocationsCart',['../classdftfe_1_1dft_class.html#aef0c823cff5dab701dea490607d51364',1,'dftfe::dftClass::getAtomLocationsCart()'],['../classdftfe_1_1dft_base.html#a7d88b379db559eaeb4bf4a91e66567c5',1,'dftfe::dftBase::getAtomLocationsCart()']]], + ['getatomlocationsfrac_32',['getAtomLocationsFrac',['../classdftfe_1_1dft_class.html#aec3dcbf0cf1a7c84a51e18452aaa02f0',1,'dftfe::dftClass::getAtomLocationsFrac()'],['../classdftfe_1_1dft_base.html#a4263546ddfcd61bbd9a0b02d2e731c57',1,'dftfe::dftBase::getAtomLocationsFrac()']]], + ['getatompositionscart_33',['getAtomPositionsCart',['../classdftfe_1_1dftfe_wrapper.html#ad8882d3dc76b1b34893500c44a7d9a70',1,'dftfe::dftfeWrapper']]], + ['getatompositionsfrac_34',['getAtomPositionsFrac',['../classdftfe_1_1dftfe_wrapper.html#a043df110bc86ac36e0a6dd6e3eb65f83',1,'dftfe::dftfeWrapper']]], + ['getatomsforces_35',['getAtomsForces',['../classdftfe_1_1force_class.html#a561a0d1c86dc8af0ef9861f17615f26c',1,'dftfe::forceClass']]], + ['getatomtypes_36',['getAtomTypes',['../classdftfe_1_1dft_class.html#a1455926c513cbce6275d70b52740245a',1,'dftfe::dftClass::getAtomTypes()'],['../classdftfe_1_1dft_base.html#a901acff26b3f2059540ae6a9a50331f7',1,'dftfe::dftBase::getAtomTypes()']]], + ['getatomwisenumbercellsaccumulated_37',['getAtomWiseNumberCellsAccumulated',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a73690822ed01e25794e375699f4b8cc9',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getatomwisenumbercellsincompactsupport_38',['getAtomWiseNumberCellsInCompactSupport',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a3ca152279542abc052ea9dc9d111d3b3',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getblocksize_39',['getBlockSize',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#aa361225f97c01df823a0916696501878',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['getboundaryflagsbins_40',['getBoundaryFlagsBins',['../classdftfe_1_1vself_bins_manager.html#a4887d6b82123f485217d83d36adea58c',1,'dftfe::vselfBinsManager']]], + ['getboundaryflagsbinsonlychargeid_41',['getBoundaryFlagsBinsOnlyChargeId',['../classdftfe_1_1vself_bins_manager.html#a440a6efe552e14880fe777e052643f9d',1,'dftfe::vselfBinsManager']]], + ['getcell_42',['getCell',['../classdftfe_1_1dft_class.html#a67cd18b3b95bbc7b7403c7a7a127fe98',1,'dftfe::dftClass::getCell()'],['../classdftfe_1_1dft_base.html#ae8894911ab9825182f4c062b5ad619e0',1,'dftfe::dftBase::getCell()'],['../classdftfe_1_1dftfe_wrapper.html#ad3f6b5d56090f30005da6b13951f1fa1',1,'dftfe::dftfeWrapper::getCell()']]], + ['getcellidtoatomidslocalcompactsupportmap_43',['getCellIdToAtomIdsLocalCompactSupportMap',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a83d4a00e59959fa2b2e849eeae684e02',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getcellstress_44',['getCellStress',['../classdftfe_1_1dft_class.html#aba05e61c6786a517ce5dc07ceaa93acf',1,'dftfe::dftClass::getCellStress()'],['../classdftfe_1_1dft_base.html#af42b1f2a799a1c16d2a71770b9b656bb',1,'dftfe::dftBase::getCellStress()'],['../classdftfe_1_1dftfe_wrapper.html#a405a6bc429fb96ab5c5f86b3ec70fb57',1,'dftfe::dftfeWrapper::getCellStress()']]], + ['getcellvolume_45',['getCellVolume',['../classdftfe_1_1dft_class.html#add2ffcb7c3b99a19904aee11f557b902',1,'dftfe::dftClass::getCellVolume()'],['../classdftfe_1_1dft_base.html#a9be899150f9aef815cc7870d21d7dd0d',1,'dftfe::dftBase::getCellVolume()']]], + ['getchararray_46',['getCharArray',['../classdftfe_1_1dft_utils_1_1_composite_data.html#a1702165bc6bd0098bab2034e88cba916',1,'dftfe::dftUtils::CompositeData::getCharArray()'],['../classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html#a1e2a2262c38e84d7315a8029e0d30bd8',1,'dftfe::dftUtils::QuadDataCompositeWrite::getCharArray()']]], + ['getclosestatomidsbins_47',['getClosestAtomIdsBins',['../classdftfe_1_1vself_bins_manager.html#abd6af334d47707a3b9b1c665b29615e9',1,'dftfe::vselfBinsManager']]], + ['getclosestatomlocationsbins_48',['getClosestAtomLocationsBins',['../classdftfe_1_1vself_bins_manager.html#ae5c142f1d7129aaf3aeca200109d06c4',1,'dftfe::vselfBinsManager']]], + ['getcompositegeneratorval_49',['getCompositeGeneratorVal',['../namespacedftfe_1_1dft_utils.html#a41080f57d452717c89539d41150c991b',1,'dftfe::dftUtils']]], + ['getcosineangle_50',['getCosineAngle',['../namespacedftfe_1_1mesh_gen_utils.html#a526475d2e36bd9b6df44f734ede9ebbc',1,'dftfe::meshGenUtils::getCosineAngle(dealii::Tensor< 1, 3 > &Vector1, std::vector< double > &Vector2)'],['../namespacedftfe_1_1mesh_gen_utils.html#a7ba642c4d16ac2399e72ac5ad50112ff',1,'dftfe::meshGenUtils::getCosineAngle(std::vector< double > &Vector1, std::vector< double > &Vector2)']]], + ['getcouplingmatrix_51',['getCouplingMatrix',['../classdftfe_1_1oncv_class.html#ab03967e14c183bf089c35645259085b6',1,'dftfe::oncvClass']]], + ['getdataforsparsestructure_52',['getDataForSparseStructure',['../classdftfe_1_1_atom_centered_spherical_function_container.html#afe9ecb1443bbbf0190143c0b0f141912',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['getdebuglevel_53',['getDebugLevel',['../classdftfe_1_1non_linear_solver.html#ad03efe1123327c6f3fb0e6751bc389a1',1,'dftfe::nonLinearSolver']]], + ['getdensitybasedfamilytype_54',['getDensityBasedFamilyType',['../classdftfe_1_1exc_density_base_class.html#a9b5ca7a22a8dde0649ef0bceae56875c',1,'dftfe::excDensityBaseClass::getDensityBasedFamilyType()'],['../classdftfe_1_1exc_manager.html#a184b92ea85cc12067e65004de966c368',1,'dftfe::excManager::getDensityBasedFamilyType()']]], + ['getderivativevalue_55',['getDerivativeValue',['../classdftfe_1_1_atom_centered_spherical_function_base.html#aacef72bd797f7f027a74a94f1133d435',1,'dftfe::AtomCenteredSphericalFunctionBase::getDerivativeValue()'],['../classdftfe_1_1_atom_centered_spherical_function_bessel.html#a0617dac3c3acc96a365ca534f0a63dc8',1,'dftfe::AtomCenteredSphericalFunctionBessel::getDerivativeValue()'],['../classdftfe_1_1_atom_centered_spherical_function_gaussian.html#ac5bdf42dcd93117309887ad3157246fe',1,'dftfe::AtomCenteredSphericalFunctionGaussian::getDerivativeValue()'],['../classdftfe_1_1_atom_centered_spherical_function_sinc.html#a50207210a59eef866d1a09c82501b28a',1,'dftfe::AtomCenteredSphericalFunctionSinc::getDerivativeValue()'],['../classdftfe_1_1_atom_centered_spherical_function_spline.html#a7673d220d1e2b8ac5e75159158f6c607',1,'dftfe::AtomCenteredSphericalFunctionSpline::getDerivativeValue()'],['../classdftfe_1_1_atom_centered_spherical_function_z_over_r.html#a808107dbab0531ae86f12e8c853279c6',1,'dftfe::AtomCenteredSphericalFunctionZOverR::getDerivativeValue()']]], + ['getdftfebaseptr_56',['getDftfeBasePtr',['../classdftfe_1_1dftfe_wrapper.html#a540e44c8269a2cd921817030c8e05c7f',1,'dftfe::dftfeWrapper']]], + ['getdftfreeenergy_57',['getDFTFreeEnergy',['../classdftfe_1_1dftfe_wrapper.html#ab963656ed167b1b3f2b2cfe934108beb',1,'dftfe::dftfeWrapper']]], + ['getdofhandler_58',['getDofHandler',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a26ca26086d706e46309c84761e6aecfd',1,'dftfe::basis::FEBasisOperations']]], + ['geteelectroeshelbytensor_59',['getEElectroEshelbyTensor',['../namespacedftfe_1_1eshelby_tensor.html#aa5eed0a1e4289ecfd22f664d3cd2ce95',1,'dftfe::eshelbyTensor']]], + ['getelectronicentropicenergy_60',['getElectronicEntropicEnergy',['../classdftfe_1_1dftfe_wrapper.html#ae7c9171fef582de5f07cb28fe58e5740',1,'dftfe::dftfeWrapper']]], + ['getelocpspeshelbytensor_61',['getELocPspEshelbyTensor',['../namespacedftfe_1_1eshelby_tensor.html#af556efee5e4f8140193f973cb6f47eff',1,'dftfe::eshelbyTensor']]], + ['getelocxceshelbytensor_62',['getELocXcEshelbyTensor',['../namespacedftfe_1_1eshelby_tensor.html#af5829f7396d35efb69917e608caedf5d',1,'dftfe::eshelbyTensor::getELocXcEshelbyTensor()'],['../namespacedftfe_1_1eshelby_tensor_s_p.html#aca6760ff37ac8ce369016a1d4fed25b4',1,'dftfe::eshelbyTensorSP::getELocXcEshelbyTensor()']]], + ['getelpaautotunehandle_63',['getElpaAutoTuneHandle',['../classdftfe_1_1elpa_scala_manager.html#a4f33402d6657c3fafce8ca660b0f63f5',1,'dftfe::elpaScalaManager']]], + ['getelpahandle_64',['getElpaHandle',['../classdftfe_1_1elpa_scala_manager.html#abfb7e48e8d49f605b12a05ad961da8f5',1,'dftfe::elpaScalaManager']]], + ['getelpahandlepartialeigenvec_65',['getElpaHandlePartialEigenVec',['../classdftfe_1_1elpa_scala_manager.html#aa2100b8b390adb1a69ad77cd483767f3',1,'dftfe::elpaScalaManager']]], + ['getenergycorrection_66',['getEnergyCorrection',['../classdftfe_1_1dispersion_correction.html#a27f0e12a156fdcee6ed5ae425bb9b9e2',1,'dftfe::dispersionCorrection']]], + ['getentropicenergy_67',['getEntropicEnergy',['../classdftfe_1_1dft_class.html#a98f8c1f5830f7e1cfffb80b097e53cd4',1,'dftfe::dftClass::getEntropicEnergy()'],['../classdftfe_1_1dft_base.html#a9ac9d5a46e02de6f0ad10b2e430d563a',1,'dftfe::dftBase::getEntropicEnergy()']]], + ['getexcdensityobj_68',['getExcDensityObj',['../classdftfe_1_1exc_manager.html#a5816a49dfd654776d02fd6f086d7e92f',1,'dftfe::excManager::getExcDensityObj()'],['../classdftfe_1_1exc_manager.html#a800046c51d5e1c7e8dd5129cfc55d918',1,'dftfe::excManager::getExcDensityObj() const']]], + ['getexcwavefunctionobj_69',['getExcWavefunctionObj',['../classdftfe_1_1exc_manager.html#aa285dc0dc1c88ee87d037827f4754836',1,'dftfe::excManager::getExcWavefunctionObj()'],['../classdftfe_1_1exc_manager.html#a1c68b33e1927e8aaa7a75c3240f25298',1,'dftfe::excManager::getExcWavefunctionObj() const']]], + ['getflattenednonlocalcelldofindextoprocessdofindexmap_70',['getFlattenedNonLocalCellDofIndexToProcessDofIndexMap',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a37819b2af29cd711245075471543bfae',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getfnonlinearcorecorrection_71',['getFNonlinearCoreCorrection',['../namespacedftfe_1_1eshelby_tensor.html#a2bd9402ed74fe001f8c3bb6b7b9db768',1,'dftfe::eshelbyTensor::getFNonlinearCoreCorrection(const dealii::VectorizedArray< double > &vxc, const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradRhoCore)'],['../namespacedftfe_1_1eshelby_tensor.html#a917d8da89f1bff8bb3283d29ba407705',1,'dftfe::eshelbyTensor::getFNonlinearCoreCorrection(const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &derExcGradRho, const dealii::Tensor< 2, 3, dealii::VectorizedArray< double > > &hessianRhoCore)'],['../namespacedftfe_1_1eshelby_tensor_s_p.html#af4ce2768abbdf57cad862817e9da5c98',1,'dftfe::eshelbyTensorSP::getFNonlinearCoreCorrection()']]], + ['getforcecorrection_72',['getForceCorrection',['../classdftfe_1_1dispersion_correction.html#a3f197f9d375f671a056108ef0f02fac7',1,'dftfe::dispersionCorrection']]], + ['getforceonatoms_73',['getForceonAtoms',['../classdftfe_1_1dft_class.html#a438c8de7ce0dc4413d8e9708c7af6fe3',1,'dftfe::dftClass::getForceonAtoms()'],['../classdftfe_1_1dft_base.html#ab4c604becc53153486be44ef1eb17c24',1,'dftfe::dftBase::getForceonAtoms()']]], + ['getforcesatoms_74',['getForcesAtoms',['../classdftfe_1_1dftfe_wrapper.html#aba23244f85c7a6cd6371a473729e041b',1,'dftfe::dftfeWrapper']]], + ['getfpsplocal_75',['getFPSPLocal',['../namespacedftfe_1_1eshelby_tensor.html#acb8868b38c81bb95905042fcc488a132',1,'dftfe::eshelbyTensor']]], + ['getfractionalcoordinates_76',['getFractionalCoordinates',['../namespacedftfe_1_1dft_utils.html#aeac281264238a68abaf9dd7be44a6d3e',1,'dftfe::dftUtils']]], + ['getfreeenergy_77',['getFreeEnergy',['../classdftfe_1_1dft_class.html#a1b7ad06e558e64f1c1fd344614bb607c',1,'dftfe::dftClass::getFreeEnergy()'],['../classdftfe_1_1dft_base.html#ac80b75566ece1b6ef1f1b3dc05407d4f',1,'dftfe::dftBase::getFreeEnergy()']]], + ['getghostindices_78',['getGhostIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#afc0d9e1d3a74ac5b4e47606c350d01f7',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getghostlocalindices_79',['getGhostLocalIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#abcd7af0f089f1eb739da32f4f2550a2d',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getghostlocalindicesranges_80',['getGhostLocalIndicesRanges',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a088145e75e35c68f77486d144f4e0d77',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getghostprocids_81',['getGhostProcIds',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a4332a5faecf748b236d583c56feb5e54',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getglobaldofatomidsphericalfnpair_82',['getGlobalDofAtomIdSphericalFnPair',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a10004e7f4c59c343e30c3c91443e3fef',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getintegralvalue_83',['getIntegralValue',['../classdftfe_1_1_atom_centered_spherical_function_base.html#a98dd30e81e121516e20a6c76b08dedb0',1,'dftfe::AtomCenteredSphericalFunctionBase']]], + ['getinternalenergy_84',['getInternalEnergy',['../classdftfe_1_1dft_class.html#ab36b6254b95baa538706158037607f8e',1,'dftfe::dftClass::getInternalEnergy()'],['../classdftfe_1_1dft_base.html#a01e8b55e51c7a8990185951e6341fa9d',1,'dftfe::dftBase::getInternalEnergy()']]], + ['getinversesqrtmassvector_85',['getInverseSqrtMassVector',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#aaac572173e5012b84c322672b5b7b022',1,'dftfe::KohnShamHamiltonianOperator::getInverseSqrtMassVector()'],['../classdftfe_1_1operator_d_f_t_class.html#af104701d3ac79f47543f6b825824e39e',1,'dftfe::operatorDFTClass::getInverseSqrtMassVector()']]], + ['getlocaldofindicesimag_86',['getLocalDofIndicesImag',['../classdftfe_1_1dft_class.html#ad18bad34001ab8d6b15ffaaa0d0e0a13',1,'dftfe::dftClass']]], + ['getlocaldofindicesreal_87',['getLocalDofIndicesReal',['../classdftfe_1_1dft_class.html#a6b79aeb0e60d013af40a9541f3702812',1,'dftfe::dftClass']]], + ['getlocalidofdistributedvec_88',['getLocalIdOfDistributedVec',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a70dcd73bd9afb0ae902eaaa6c3ce3e23',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getlocallyownedrange_89',['getLocallyOwnedRange',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a4352ee360a8f7be1ea03d0e4cbf629e8',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getlocalprocdofindicesimag_90',['getLocalProcDofIndicesImag',['../classdftfe_1_1dft_class.html#ae38cfe44dca47e54a58bbf28dfb40f91',1,'dftfe::dftClass']]], + ['getlocalprocdofindicesreal_91',['getLocalProcDofIndicesReal',['../classdftfe_1_1dft_class.html#a3f6df1ec1b63b5c2ed40f79c816d65bf',1,'dftfe::dftClass']]], + ['getmatrixfreedata_92',['getMatrixFreeData',['../classdftfe_1_1dft_class.html#ad1793ad9ed5222692eebb6f1ed69c361',1,'dftfe::dftClass']]], + ['getmaximumnumberiterations_93',['getMaximumNumberIterations',['../classdftfe_1_1non_linear_solver.html#a6bd53949604d87d3ebd24802155a0289',1,'dftfe::nonLinearSolver']]], + ['getmaximumnumberofsphericalfunctions_94',['getMaximumNumberOfSphericalFunctions',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a24b37aab0dd6443a9c4c869311ed042a',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['getmaxsingleatomentries_95',['getMaxSingleAtomEntries',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a761bbbe738c725db2a12f32174d75f01',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getmpicommunicator_96',['getMPICommunicator',['../classdftfe_1_1elpa_scala_manager.html#a9fc7ce986a761710aebd003aaf0e3715',1,'dftfe::elpaScalaManager::getMPICommunicator()'],['../classdftfe_1_1geo_opt_cell.html#aa92ad2dd7b55f1159002473d9419f8f1',1,'dftfe::geoOptCell::getMPICommunicator()'],['../classdftfe_1_1geo_opt_ion.html#a5f528a5c71d21eec9dcdf6466d42003e',1,'dftfe::geoOptIon::getMPICommunicator()'],['../classdftfe_1_1nonlinear_solver_problem.html#aa7975ffa832002cd2ae29185590775be',1,'dftfe::nonlinearSolverProblem::getMPICommunicator()'],['../classdftfe_1_1nudged_elastic_band_class.html#aa1a4ac64243daaead4171b23c874da6e',1,'dftfe::nudgedElasticBandClass::getMPICommunicator()']]], + ['getmpicommunicatordomain_97',['getMPICommunicatorDomain',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#aedfdf03e94c426b9c20d028d027a92a2',1,'dftfe::KohnShamHamiltonianOperator::getMPICommunicatorDomain()'],['../classdftfe_1_1operator_d_f_t_class.html#aef2dab467472730486e6b55a843e3959',1,'dftfe::operatorDFTClass::getMPICommunicatorDomain()']]], + ['getmpidatatype_98',['getMPIDataType',['../classdftfe_1_1dft_utils_1_1_composite_data.html#ab637524ec4fa72ee7fd108069ac48f71',1,'dftfe::dftUtils::CompositeData::getMPIDataType()'],['../classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html#a3b4dfe355e570925189815808c225a16',1,'dftfe::dftUtils::QuadDataCompositeWrite::getMPIDataType()']]], + ['getmpipatternp2p_99',['getMPIPatternP2P',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#a14c223b2f88ed4a122fb9da5f762812a',1,'dftfe::utils::mpi::MPICommunicatorP2P::getMPIPatternP2P()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a33ce66548bbeb927bea3cfd1212d0a16',1,'dftfe::linearAlgebra::MultiVector::getMPIPatternP2P()']]], + ['getmultivector_100',['getMultiVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#add25136d4af4af94a9d884d5a5260d34',1,'dftfe::basis::FEBasisOperations']]], + ['getnonlocalelementtocellidvector_101',['getNonlocalElementToCellIdVector',['../classdftfe_1_1_atomic_centered_non_local_operator.html#aa6dbeab0ff3b0813d630ac8d8868671d',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getnonlocalelemidtolocalelemidmap_102',['getNonLocalElemIdToLocalElemIdMap',['../classdftfe_1_1_atomic_centered_non_local_operator.html#abb6330c167135fd110694be7bfd56fd3',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getnonlocaloperator_103',['getNonLocalOperator',['../classdftfe_1_1oncv_class.html#a2a4317dbef1da3cbe10eaa2f7705fe99',1,'dftfe::oncvClass']]], + ['getnontrivialallcellssphericalfnalphatoelemidmap_104',['getNonTrivialAllCellsSphericalFnAlphaToElemIdMap',['../classdftfe_1_1_atomic_centered_non_local_operator.html#aadd594648d8829bc1b9dc45676ab40cd',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getnontrivialsphericalfnscellstartindex_105',['getNonTrivialSphericalFnsCellStartIndex',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a42a63f86e880d795acff1173cd248693',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getnontrivialsphericalfnspercell_106',['getNonTrivialSphericalFnsPerCell',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a829a5d022586e9c3d03bacb1e6b8b62e',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getnumatomcenterssize_107',['getNumAtomCentersSize',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a411f556a781f31f28182df749defdad8',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['getnumbercharspercompositedata_108',['getNumberCharsPerCompositeData',['../classdftfe_1_1dft_utils_1_1_composite_data.html#a9a498eb8ee84ea740302d8953d1103b0',1,'dftfe::dftUtils::CompositeData::getNumberCharsPerCompositeData()'],['../classdftfe_1_1dft_utils_1_1_quad_data_composite_write.html#aedc374ba0b3d26525dd56aa28a99cacc',1,'dftfe::dftUtils::QuadDataCompositeWrite::getNumberCharsPerCompositeData()']]], + ['getnumberunknowns_109',['getNumberUnknowns',['../classdftfe_1_1geo_opt_cell.html#ab7a19d891948b672f1549898ba1ab143',1,'dftfe::geoOptCell::getNumberUnknowns()'],['../classdftfe_1_1geo_opt_ion.html#a83543f9a545ab663f5b080b4c2e7fb74',1,'dftfe::geoOptIon::getNumberUnknowns()'],['../classdftfe_1_1nonlinear_solver_problem.html#ab1d9fe730067d7e7f920b26daf06f117',1,'dftfe::nonlinearSolverProblem::getNumberUnknowns()'],['../classdftfe_1_1nudged_elastic_band_class.html#a4d3a72449fd22ec8186fa9cafdcdba78',1,'dftfe::nudgedElasticBandClass::getNumberUnknowns()']]], + ['getnumghostindicesinproc_110',['getNumGhostIndicesInProc',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a08afcd2b84f7250d8c9601b8187828ed',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getnumghostindicesinprocs_111',['getNumGhostIndicesInProcs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a98c66a9f2536eef72d7fdbfb08a1f3f2',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getnumownedindicesfortargetproc_112',['getNumOwnedIndicesForTargetProc',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a110721b1e6aea0e08dca76d8d959f0ae',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getnumownedindicesfortargetprocs_113',['getNumOwnedIndicesForTargetProcs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a6ee60981b6d41cd29394724e4c582af7',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getoverloadedconstraintmatrix_114',['getOverloadedConstraintMatrix',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a8f714b841381b2ee941bc2340e148855',1,'dftfe::KohnShamHamiltonianOperator::getOverloadedConstraintMatrix()'],['../classdftfe_1_1operator_d_f_t_class.html#abc1e4a9596aa573ad651cd0d0224ea5e',1,'dftfe::operatorDFTClass::getOverloadedConstraintMatrix()']]], + ['getoverloadedconstraintmatrixhost_115',['getOverloadedConstraintMatrixHost',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a7edbb384a976347ff0ae928a5adf947e',1,'dftfe::KohnShamHamiltonianOperator::getOverloadedConstraintMatrixHost()'],['../classdftfe_1_1operator_d_f_t_class.html#a821a2bd837c1d9e3946badaac6a02b92',1,'dftfe::operatorDFTClass::getOverloadedConstraintMatrixHost()']]], + ['getownedlocalindices_116',['getOwnedLocalIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a52e89faee260fddee14fd8c6412d1056',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getownedlocalindicesfortargetprocs_117',['getOwnedLocalIndicesForTargetProcs',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a300070950255d96542870b84dc94f194',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['getparallelmeshmoved_118',['getParallelMeshMoved',['../classdftfe_1_1triangulation_manager.html#a0e8b0eff1f03b6da4e2bd43fdf97744f',1,'dftfe::triangulationManager']]], + ['getparallelmeshunmoved_119',['getParallelMeshUnmoved',['../classdftfe_1_1triangulation_manager.html#a5390458da1af98472f7aaaf579fa25e8',1,'dftfe::triangulationManager']]], + ['getparametersobject_120',['getParametersObject',['../classdftfe_1_1dft_class.html#aab44255fa568411595ffc8ddf2c278e4',1,'dftfe::dftClass::getParametersObject()'],['../classdftfe_1_1dft_base.html#a0c4905daf2f1014991196d1711a3c3d2',1,'dftfe::dftBase::getParametersObject()']]], + ['getpartialoccupancy_121',['getPartialOccupancy',['../namespacedftfe_1_1dft_utils.html#a3b1d6099a85fe1168b8f7fd56b1a646d',1,'dftfe::dftUtils']]], + ['getpartialoccupancyder_122',['getPartialOccupancyDer',['../namespacedftfe_1_1dft_utils.html#aca959162fdbd949b5a6c8a24b5ff452f',1,'dftfe::dftUtils']]], + ['getpbc_123',['getPBC',['../classdftfe_1_1dftfe_wrapper.html#a57374f5f734264a67d2f3c9241f715ec',1,'dftfe::dftfeWrapper']]], + ['getperiodicimagecoordinateslist_124',['getPeriodicImageCoordinatesList',['../classdftfe_1_1_atom_centered_spherical_function_container.html#ab68ef8a09cd27367b8979e11c12b3ea9',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['getperturbedvselffieldbins_125',['getPerturbedVselfFieldBins',['../classdftfe_1_1vself_bins_manager.html#aa5d89fc0d05a58d01c4ec6957e4ede40',1,'dftfe::vselfBinsManager']]], + ['getphiexteshelbytensor_126',['getPhiExtEshelbyTensor',['../namespacedftfe_1_1eshelby_tensor.html#ae4943ba115afd83f3e7a0025780a2b3b',1,'dftfe::eshelbyTensor']]], + ['getposition_127',['getPosition',['../classdftfe_1_1utils_1_1_optimized_index_set.html#accc081bd8fccbdfd2158dc0be623571e',1,'dftfe::utils::OptimizedIndexSet::getPosition(const T &index, size_type &pos, bool &found) const'],['../classdftfe_1_1utils_1_1_optimized_index_set.html#a34d8be4f57a3e57a161eaee9e78c8077',1,'dftfe::utils::OptimizedIndexSet::getPosition(const OptimizedIndexSet< T > &rhs) const']]], + ['getprocessgriddftfescalawrapper_128',['getProcessGridDftfeScalaWrapper',['../classdftfe_1_1elpa_scala_manager.html#a03ef49385d301a5ca4080137f318f38c',1,'dftfe::elpaScalaManager']]], + ['getquantumnumberl_129',['getQuantumNumberl',['../classdftfe_1_1_atom_centered_spherical_function_base.html#a4e6d9ea3af31ac9a2b16b2e7a2dd4f25',1,'dftfe::AtomCenteredSphericalFunctionBase']]], + ['getquantumnumbern_130',['getQuantumNumbern',['../classdftfe_1_1_atom_centered_spherical_function_bessel.html#a389b7fc60bc9adf621abd0d9b4308fe2',1,'dftfe::AtomCenteredSphericalFunctionBessel::getQuantumNumbern()'],['../classdftfe_1_1_atom_centered_spherical_function_gaussian.html#ac5c831d74e7aaafebb3a101c62daff62',1,'dftfe::AtomCenteredSphericalFunctionGaussian::getQuantumNumbern()'],['../classdftfe_1_1_atom_centered_spherical_function_sinc.html#ac5fa6bb15c6a27eee070355cb578c1c8',1,'dftfe::AtomCenteredSphericalFunctionSinc::getQuantumNumbern()'],['../classdftfe_1_1_atom_pseudo_wavefunctions.html#a9991c3f263f7ac2e549ae64b1bcdfa0c',1,'dftfe::AtomPseudoWavefunctions::getQuantumNumbern()']]], + ['getradialcoredensity_131',['getRadialCoreDensity',['../classdftfe_1_1oncv_class.html#adbc0aa4980fec0e849cf543a8fd6aaae',1,'dftfe::oncvClass::getRadialCoreDensity(unsigned int Znum, double rad, std::vector< double > &Val)'],['../classdftfe_1_1oncv_class.html#ac12226142a9128cfe0c2e036b6afa4a9',1,'dftfe::oncvClass::getRadialCoreDensity(unsigned int Znum, double rad)']]], + ['getradialcutoff_132',['getRadialCutOff',['../classdftfe_1_1_atom_centered_spherical_function_base.html#a8f1ae34454f5b92a36c669b02f790c00',1,'dftfe::AtomCenteredSphericalFunctionBase']]], + ['getradialfunctionval_133',['getRadialFunctionVal',['../namespacedftfe_1_1pseudo_utils.html#a92c8700497662dd7074f4ada5f245a3a',1,'dftfe::pseudoUtils::getRadialFunctionVal()'],['../namespacedftfe_1_1spherical_harmonic_utils.html#a3ae5ab3a86d4bd9a292de6aa296c5504',1,'dftfe::sphericalHarmonicUtils::getRadialFunctionVal()']]], + ['getradiallocalpseudo_134',['getRadialLocalPseudo',['../classdftfe_1_1oncv_class.html#af3616fdfa7949d0443b0bd9880051e58',1,'dftfe::oncvClass']]], + ['getradialvalencedensity_135',['getRadialValenceDensity',['../classdftfe_1_1oncv_class.html#a6e86b53a87b21d0983740ed360b683f5',1,'dftfe::oncvClass::getRadialValenceDensity(unsigned int Znum, double rad, std::vector< double > &Val)'],['../classdftfe_1_1oncv_class.html#a69b1241cd6fc86f6198878d60279dfda',1,'dftfe::oncvClass::getRadialValenceDensity(unsigned int Znum, double rad)']]], + ['getradialvalue_136',['getRadialValue',['../classdftfe_1_1_atom_centered_spherical_function_base.html#a54078bc5daee9372852cb2e98882857c',1,'dftfe::AtomCenteredSphericalFunctionBase::getRadialValue()'],['../classdftfe_1_1_atom_centered_spherical_function_bessel.html#aec98ce0d41c048c58cfa842179715ea9',1,'dftfe::AtomCenteredSphericalFunctionBessel::getRadialValue()'],['../classdftfe_1_1_atom_centered_spherical_function_gaussian.html#ad2e49e21ca2d62f36e342c882a9581e7',1,'dftfe::AtomCenteredSphericalFunctionGaussian::getRadialValue()'],['../classdftfe_1_1_atom_centered_spherical_function_sinc.html#aaae97f41c916e578ae7d71c8e77f7dc2',1,'dftfe::AtomCenteredSphericalFunctionSinc::getRadialValue()'],['../classdftfe_1_1_atom_centered_spherical_function_spline.html#a51c6ceba09faf571b76194cec6b824a2',1,'dftfe::AtomCenteredSphericalFunctionSpline::getRadialValue()'],['../classdftfe_1_1_atom_centered_spherical_function_z_over_r.html#ac11de97fc708939047499e413f681501',1,'dftfe::AtomCenteredSphericalFunctionZOverR::getRadialValue()'],['../classdftfe_1_1_atom_pseudo_wavefunctions.html#af90de2553f63b35f26fe85cf4d995330',1,'dftfe::AtomPseudoWavefunctions::getRadialValue()']]], + ['getrequestingrankids_137',['getRequestingRankIds',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_base.html#a7e390ee3eacecc00e4968829fa21bd9f',1,'dftfe::utils::mpi::MPIRequestersBase::getRequestingRankIds()'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a7def9c106f88f6e3e9806b7a96ffb6bd',1,'dftfe::utils::mpi::MPIRequestersNBX::getRequestingRankIds()']]], + ['getrhonodalout_138',['getRhoNodalOut',['../classdftfe_1_1dft_class.html#ab20867aefbbce9ac36b7d4d8d4f06ce1',1,'dftfe::dftClass::getRhoNodalOut()'],['../classdftfe_1_1dft_base.html#a4b49c03e2c305ce7319a1f2dda1483df',1,'dftfe::dftBase::getRhoNodalOut()']]], + ['getrhonodalsplitout_139',['getRhoNodalSplitOut',['../classdftfe_1_1dft_class.html#ab14771c1444085d2bbb89c7c5e062daa',1,'dftfe::dftClass::getRhoNodalSplitOut()'],['../classdftfe_1_1dft_base.html#a28c0349208b040d8e5401e9e70f4e653',1,'dftfe::dftBase::getRhoNodalSplitOut()']]], + ['getrmaxcoredensity_140',['getRmaxCoreDensity',['../classdftfe_1_1oncv_class.html#ace9648cbfebefb97aa190afcb098a300',1,'dftfe::oncvClass']]], + ['getrmaxlocalpot_141',['getRmaxLocalPot',['../classdftfe_1_1oncv_class.html#a6622f839568e32485ed07bb5f66fd08a',1,'dftfe::oncvClass']]], + ['getrmaxvalencedensity_142',['getRmaxValenceDensity',['../classdftfe_1_1oncv_class.html#a7d3800e72b1e78b374a4b9ac706029c1',1,'dftfe::oncvClass']]], + ['getrminval_143',['getrMinVal',['../classdftfe_1_1_atom_centered_spherical_function_bessel.html#ab7c93b2386d19e74139e9e6d1362980a',1,'dftfe::AtomCenteredSphericalFunctionBessel::getrMinVal()'],['../classdftfe_1_1_atom_centered_spherical_function_gaussian.html#a1af26024c1a0aa01425b8dcf32404cb1',1,'dftfe::AtomCenteredSphericalFunctionGaussian::getrMinVal()'],['../classdftfe_1_1_atom_centered_spherical_function_sinc.html#a0ac165aea58013c0043863529850f3d8',1,'dftfe::AtomCenteredSphericalFunctionSinc::getrMinVal()'],['../classdftfe_1_1_atom_centered_spherical_function_spline.html#a9a5c598613f9d34f3c42562a077c4b33',1,'dftfe::AtomCenteredSphericalFunctionSpline::getrMinVal()'],['../classdftfe_1_1_atom_centered_spherical_function_z_over_r.html#af1c164f4c22a2ad36d44ea4884f1ca10',1,'dftfe::AtomCenteredSphericalFunctionZOverR::getrMinVal()'],['../classdftfe_1_1_atom_pseudo_wavefunctions.html#a789676ddf3ac735027a0e706e563c3c7',1,'dftfe::AtomPseudoWavefunctions::getrMinVal()']]], + ['getscalapackblocksize_144',['getScalapackBlockSize',['../classdftfe_1_1elpa_scala_manager.html#a8f5ddee28fdf6d685d3789bd54f51da2',1,'dftfe::elpaScalaManager']]], + ['getscratchfemultivector_145',['getScratchFEMultivector',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#af2a722bb5785ef1bd7a589858d62c3e3',1,'dftfe::KohnShamHamiltonianOperator::getScratchFEMultivector()'],['../classdftfe_1_1operator_d_f_t_class.html#afd86771e68ce670c5fd7b89a2aa4e62c',1,'dftfe::operatorDFTClass::getScratchFEMultivector()']]], + ['getserialmeshunmoved_146',['getSerialMeshUnmoved',['../classdftfe_1_1triangulation_manager.html#ad9084fa7531268e66d8b14735e1dbd73',1,'dftfe::triangulationManager']]], + ['getsparsitypattern_147',['getSparsityPattern',['../classdftfe_1_1_atom_centered_spherical_function_container.html#ae2967faf3fa3dbad592b72738458d121',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['getsphericalfntimesvectorflattenedvectorlocalids_148',['getSphericalFnTimesVectorFlattenedVectorLocalIds',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a78887f0a45b28315ecab16988bee3bec',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['getsphericalfunctions_149',['getSphericalFunctions',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a159dfbec61f522c436e7ac29ac0b53ab',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['getsphericalharmonicval_150',['getSphericalHarmonicVal',['../namespacedftfe_1_1pseudo_utils.html#ab994c096d849a2c2ea597c48cd3120ad',1,'dftfe::pseudoUtils::getSphericalHarmonicVal()'],['../namespacedftfe_1_1spherical_harmonic_utils.html#ac399cab41887c46f0e0cb997bd88a9b5',1,'dftfe::sphericalHarmonicUtils::getSphericalHarmonicVal()']]], + ['getsqrtmassvector_151',['getSqrtMassVector',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a0d6749960ffb28d97361958d864a6aa9',1,'dftfe::KohnShamHamiltonianOperator::getSqrtMassVector()'],['../classdftfe_1_1operator_d_f_t_class.html#a2e92ba54b33ac2e90d705c2d4ecdee9c',1,'dftfe::operatorDFTClass::getSqrtMassVector()']]], + ['getstoredadaptiveballradius_152',['getStoredAdaptiveBallRadius',['../classdftfe_1_1vself_bins_manager.html#a597b20011ff3b55472cd08adbd275a4a',1,'dftfe::vselfBinsManager']]], + ['getstress_153',['getStress',['../classdftfe_1_1force_class.html#a89300d1cc577e78e381e29426a8e981f',1,'dftfe::forceClass']]], + ['getstresscorrection_154',['getStressCorrection',['../classdftfe_1_1dispersion_correction.html#a29557331a7c21cacc72363349568546f',1,'dftfe::dispersionCorrection']]], + ['gettargetprocids_155',['getTargetProcIds',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a68fb7688f3dbfa750e5c40ef192a7464',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['gettolerance_156',['getTolerance',['../classdftfe_1_1non_linear_solver.html#a86a71cd616e82b4fc4a010447ae4cb0b',1,'dftfe::nonLinearSolver']]], + ['gettotalatomincurrentprocessor_157',['getTotalAtomInCurrentProcessor',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a85225288ce9c0c27ece5ac9f9c936b88',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['gettotalatomsandnonlocalelementsincurrentprocessor_158',['getTotalAtomsAndNonLocalElementsInCurrentProcessor',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a040a18a001d4feac841e90f110cac2fc',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['gettotalchargeforrhosplit_159',['getTotalChargeforRhoSplit',['../classdftfe_1_1dft_class.html#aeca29d52a809fbaa8ebebfdf89778796',1,'dftfe::dftClass::getTotalChargeforRhoSplit()'],['../classdftfe_1_1dft_base.html#ac755de640ef6723cdeb031e038b580b9',1,'dftfe::dftBase::getTotalChargeforRhoSplit()']]], + ['gettotalnonlocalelementsincurrentprocessor_160',['getTotalNonLocalElementsInCurrentProcessor',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a53d6e0d3a5dc54c2b33df787f79878a5',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['gettotalnonlocalentriescurrentprocessor_161',['getTotalNonLocalEntriesCurrentProcessor',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a5b0a3b6c488de3d4034f40800e05e9ab',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['gettotalnontrivialsphericalfnsoverallcells_162',['getTotalNonTrivialSphericalFnsOverAllCells',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a698e1189ab6b233dda83087473de645d',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['gettotalnumberofatomsincurrentprocessor_163',['getTotalNumberOfAtomsInCurrentProcessor',['../classdftfe_1_1oncv_class.html#aaad17813401b342aeed93c3007cc8691',1,'dftfe::oncvClass']]], + ['gettotalnumberofradialsphericalfunctions_164',['getTotalNumberOfRadialSphericalFunctions',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a31434cc00c7afe7807ae5ef1a17a5b1c',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['gettotalnumberofradialsphericalfunctionsperatom_165',['getTotalNumberOfRadialSphericalFunctionsPerAtom',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a1eee13633a46976ea10cd0e442bb9c04',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['gettotalnumberofsphericalfunctionsforatomid_166',['getTotalNumberOfSphericalFunctionsForAtomId',['../classdftfe_1_1oncv_class.html#a414a78c70dc7a9aaddf68781e8f357b4',1,'dftfe::oncvClass']]], + ['gettotalnumberofsphericalfunctionsincurrentprocessor_167',['getTotalNumberOfSphericalFunctionsInCurrentProcessor',['../classdftfe_1_1_atom_centered_spherical_function_container.html#ab6cb7ca667f673e5674b923cd9c355a9',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['gettotalnumberofsphericalfunctionsperatom_168',['getTotalNumberOfSphericalFunctionsPerAtom',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a339257c42991553326de1a8b3b9f57cd',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['gettotalsphericalfunctionindexstart_169',['getTotalSphericalFunctionIndexStart',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a08cf85e2c80b37bd7733822f96e8d518',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['getunknowncountflag_170',['getUnknownCountFlag',['../classdftfe_1_1geo_opt_cell.html#a9a68cbbd70a82f45996f1467c9ed0208',1,'dftfe::geoOptCell::getUnknownCountFlag()'],['../classdftfe_1_1geo_opt_ion.html#a956ddc51474b65d51e631e2acb355bf3',1,'dftfe::geoOptIon::getUnknownCountFlag()'],['../classdftfe_1_1nonlinear_solver_problem.html#a8199691b5b2cb164c078be900440a659',1,'dftfe::nonlinearSolverProblem::getUnknownCountFlag()'],['../classdftfe_1_1nudged_elastic_band_class.html#a6fa4140e9abab6987bb0e377fbc74e78',1,'dftfe::nudgedElasticBandClass::getUnknownCountFlag()']]], + ['getvalenceelectronnumbers_171',['getValenceElectronNumbers',['../classdftfe_1_1dftfe_wrapper.html#a73025873e24f3c62dc566dee33556d31',1,'dftfe::dftfeWrapper']]], + ['getvselfballeshelbytensor_172',['getVselfBallEshelbyTensor',['../namespacedftfe_1_1eshelby_tensor.html#a398a9349d9d31e7b17b86dbc80d25125',1,'dftfe::eshelbyTensor::getVselfBallEshelbyTensor(const dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > &gradVself)'],['../namespacedftfe_1_1eshelby_tensor.html#a632760011a8dc6401a95e074ad6cddcc',1,'dftfe::eshelbyTensor::getVselfBallEshelbyTensor(const dealii::Tensor< 1, 3, double > &gradVself)']]], + ['getvselffieldbins_173',['getVselfFieldBins',['../classdftfe_1_1vself_bins_manager.html#acfcb9299ef59b63e4b3b350a30923e80',1,'dftfe::vselfBinsManager']]], + ['getvselffieldderrbins_174',['getVselfFieldDerRBins',['../classdftfe_1_1vself_bins_manager.html#a813f7b3e680b81d674c1454cf2d0fca0',1,'dftfe::vselfBinsManager']]], + ['getwavefunctionbasedfamilytype_175',['getWavefunctionBasedFamilyType',['../classdftfe_1_1exc_manager.html#a2c87a6c0f6fc4b892814c422ecdfac4a',1,'dftfe::excManager::getWavefunctionBasedFamilyType()'],['../classdftfe_1_1exc_wavefunction_base_class.html#a83fc31bce9a012e0466c8a282cbe7a1a',1,'dftfe::excWavefunctionBaseClass::getWavefunctionBasedFamilyType()']]], + ['getx_176',['getX',['../classdftfe_1_1dealii_linear_solver_problem.html#a7814f5c0a0aa3ce01057acd4d29f560c',1,'dftfe::dealiiLinearSolverProblem::getX()'],['../classdftfe_1_1kerker_solver_problem.html#a77a0aafdca2c7726a24288a4821a7acc',1,'dftfe::kerkerSolverProblem::getX()'],['../classdftfe_1_1poisson_solver_problem.html#a07e8773c4f5c9c0bbf58452fc817611b',1,'dftfe::poissonSolverProblem::getX()']]], + ['ghostsize_177',['ghostSize',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#aac29fcb8f5ca940da0c86cda2497f43f',1,'dftfe::linearAlgebra::MultiVector']]], + ['global_5fcolumn_178',['global_column',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a11af4d9095e63de77c07fbcf1b34f367',1,'dftfe::ScaLAPACKMatrix']]], + ['global_5frow_179',['global_row',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ab49c06fe686f8b2de01a1cec28a3afb2',1,'dftfe::ScaLAPACKMatrix']]], + ['globalhandlesfinalize_180',['globalHandlesFinalize',['../classdftfe_1_1dftfe_wrapper.html#a6edc85d8ba059cb72698758d952444c9',1,'dftfe::dftfeWrapper']]], + ['globalhandlesinitialize_181',['globalHandlesInitialize',['../classdftfe_1_1dftfe_wrapper.html#a2eb91eab3aca3e592ce3fb8e53d01ac0',1,'dftfe::dftfeWrapper']]], + ['globalsize_182',['globalSize',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a89c298a1b9a03a6728f6fd26f25667d5',1,'dftfe::linearAlgebra::MultiVector']]], + ['globaltolocal_183',['globalToLocal',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a01ee60d4c7ba6011513140d34adc4e4b',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['gradient_184',['gradient',['../classdftfe_1_1geo_opt_cell.html#aeb71bf02a24e6b2e20de6bcf591ac0cf',1,'dftfe::geoOptCell::gradient()'],['../classdftfe_1_1geo_opt_ion.html#a4432b75f262f587ced47c2ec74289968',1,'dftfe::geoOptIon::gradient()'],['../classdftfe_1_1nonlinear_solver_problem.html#ab4406839bedb92f39ac663738c699bf1',1,'dftfe::nonlinearSolverProblem::gradient()'],['../classdftfe_1_1nudged_elastic_band_class.html#a70c9164a5d245c869a6c5c337210b9e7',1,'dftfe::nudgedElasticBandClass::gradient()']]], + ['gramschmidtorthogonalization_185',['gramSchmidtOrthogonalization',['../namespacedftfe_1_1linear_algebra_operations.html#a7c42c60cf8378c3d8bdb8d2d6a97cf00',1,'dftfe::linearAlgebraOperations']]] +]; diff --git a/search/functions_7.js b/search/functions_7.js new file mode 100644 index 000000000..e4792c5d5 --- /dev/null +++ b/search/functions_7.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['haveallincomingmsgsreceived_0',['haveAllIncomingMsgsReceived',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a9976370f3a761778aa4f93a219696ddb',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['havealllocalsendreceived_1',['haveAllLocalSendReceived',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#afe6d8fea4abc84150e1fbc00967d60bf',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['hx_2',['HX',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a8384aba434a02f5ad9f3214448ffb6eb',1,'dftfe::KohnShamHamiltonianOperator::HX()'],['../classdftfe_1_1operator_d_f_t_class.html#a0ec07e3744bb2b31f0cbc40ba7338efa',1,'dftfe::operatorDFTClass::HX()']]], + ['hxcheby_3',['HXCheby',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a1cc721aeeb002c69fa219fde4891e337',1,'dftfe::KohnShamHamiltonianOperator::HXCheby()'],['../classdftfe_1_1operator_d_f_t_class.html#a99ecf915c45c626b10cbc1d433fa0821',1,'dftfe::operatorDFTClass::HXCheby()']]], + ['hxrr_4',['HXRR',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a206ad76824e002d9b62df28f4717c4bc',1,'dftfe::KohnShamHamiltonianOperator']]] +]; diff --git a/search/functions_8.js b/search/functions_8.js new file mode 100644 index 000000000..2c2b9f16a --- /dev/null +++ b/search/functions_8.js @@ -0,0 +1,73 @@ +var searchData= +[ + ['iceil_5f_0',['iceil_',['../namespacedftfe.html#ac4070a1a5dc2bc96914c31be13b98037',1,'dftfe']]], + ['ilcm_5f_1',['ilcm_',['../namespacedftfe.html#aed3afb027370255ff9fb964eca4ec4ce',1,'dftfe']]], + ['imageerror_2',['ImageError',['../classdftfe_1_1nudged_elastic_band_class.html#acc92144acefe48137b54d9bf2c832a3e',1,'dftfe::nudgedElasticBandClass']]], + ['imagpart_3',['imagPart',['../namespacedftfe_1_1utils.html#aed61a5800334465a12d3b74a1d05e276',1,'dftfe::utils::imagPart(const double x)'],['../namespacedftfe_1_1utils.html#ab16e4e326821b23e375effb6110d9e8c',1,'dftfe::utils::imagPart(const float x)'],['../namespacedftfe_1_1utils.html#ae35ca17dde4837542c9a9ed655127fb0',1,'dftfe::utils::imagPart(const std::complex< double > x)'],['../namespacedftfe_1_1utils.html#a67ad4aadd9aae23351fae41a01e3545a',1,'dftfe::utils::imagPart(const std::complex< float > x)']]], + ['imagpartdevice_4',['imagPartDevice',['../namespacedftfe_1_1utils.html#ac495c3ee3482c45e4f7329ac1c873d9c',1,'dftfe::utils::imagPartDevice(double a)'],['../namespacedftfe_1_1utils.html#abeb54dc4120086f8f229e70c3b17f018',1,'dftfe::utils::imagPartDevice(float a)'],['../namespacedftfe_1_1utils.html#a0b3337020d958b4d0502192cc844f6d7',1,'dftfe::utils::imagPartDevice(cuDoubleComplex a)'],['../namespacedftfe_1_1utils.html#aa9ba4a8a0b7a5ee4808e84cbf398efaa',1,'dftfe::utils::imagPartDevice(cuFloatComplex a)'],['../namespacedftfe_1_1utils.html#ab4b591cf0ee10862af17814b05ced86b',1,'dftfe::utils::imagPartDevice(hipDoubleComplex a)'],['../namespacedftfe_1_1utils.html#af09a337b3066e3da64c3fc94795ae60e',1,'dftfe::utils::imagPartDevice(hipFloatComplex a)']]], + ['indxg2p_5f_5',['indxg2p_',['../namespacedftfe.html#ac42ff14b5f31ba507af7c3c2480a3089',1,'dftfe']]], + ['indxl2g_5f_6',['indxl2g_',['../namespacedftfe.html#a92144825dfcfd18241d585a3d3ca6e50',1,'dftfe']]], + ['init_7',['init',['../classdftfe_1_1_atom_centered_spherical_function_container.html#a05f2d1f56bcc4e02720ee36fab987128',1,'dftfe::AtomCenteredSphericalFunctionContainer::init()'],['../classdftfe_1_1dft_class.html#ad4499dece23f162aac7473a285733b9c',1,'dftfe::dftClass::init()'],['../classdftfe_1_1dft_base.html#a958ca745a65c58b46a4adc933494d354',1,'dftfe::dftBase::init()'],['../classdftfe_1_1exc_manager.html#afe95bcfcdb880be57fe39cc65c74d4a3',1,'dftfe::excManager::init()'],['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aab844ef88af3deb52f82464d79d73c17',1,'dftfe::basis::FEBasisOperations::init(dealii::MatrixFree< 3, ValueTypeBasisData > &matrixFreeData, std::vector< const dealii::AffineConstraints< ValueTypeBasisData > * > &constraintsVector, const unsigned int &dofHandlerID, const std::vector< unsigned int > &quadratureID, const std::vector< UpdateFlags > updateFlags)'],['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ac55998b99e5823d76c16395cae010aa6',1,'dftfe::basis::FEBasisOperations::init(const FEBasisOperations< ValueTypeBasisCoeff, ValueTypeBasisData, memorySpaceSrc > &basisOperationsSrc)'],['../classdftfe_1_1geometry_optimization_class.html#a8d8f59d0c7eb723eb69330d71edae3a2',1,'dftfe::geometryOptimizationClass::init()'],['../classdftfe_1_1geo_opt_cell.html#aef69c41c505114e8d698b13afd3c1e19',1,'dftfe::geoOptCell::init()'],['../classdftfe_1_1geo_opt_ion.html#ac0981793678f96961d982e3db9580b93',1,'dftfe::geoOptIon::init()'],['../classdftfe_1_1kerker_solver_problem.html#ab9b1e4c4099bf59192456f8ccf25adfa',1,'dftfe::kerkerSolverProblem::init()'],['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a46173d1e757bbeb61d1e238dd202fd8b',1,'dftfe::KohnShamHamiltonianOperator::init()'],['../classdftfe_1_1mesh_movement_class.html#a40257c449540ad14736c736c1eb1e27a',1,'dftfe::meshMovementClass::init()'],['../classdftfe_1_1nudged_elastic_band_class.html#a9921e5bd4953e173828cba20dc22d7bf',1,'dftfe::nudgedElasticBandClass::init()'],['../classdftfe_1_1operator_d_f_t_class.html#a673a9561bfee91a0d9b5754b10a143f3',1,'dftfe::operatorDFTClass::init()']]], + ['initalisecoordinates_8',['initaliseCoordinates',['../classdftfe_1_1_atom_centered_spherical_function_container.html#acd99b65cf6846390a4f0c51ee17f0e7a',1,'dftfe::AtomCenteredSphericalFunctionContainer']]], + ['initatomicrho_9',['initAtomicRho',['../classdftfe_1_1dft_class.html#a104763dfc2f40f21092300649eee7e6e',1,'dftfe::dftClass']]], + ['initboundaryconditions_10',['initBoundaryConditions',['../classdftfe_1_1dft_class.html#a0de1d9dd1b030bbc307a4d1a498c7926',1,'dftfe::dftClass']]], + ['initcorerho_11',['initCoreRho',['../classdftfe_1_1dft_class.html#a21130962085838fdf9c6fda4f9b77e3a',1,'dftfe::dftClass']]], + ['initdispersioncorrection_12',['initDispersionCorrection',['../classdftfe_1_1dispersion_correction.html#ad90170234d82c2abccdccd7ed626c7f2',1,'dftfe::dispersionCorrection']]], + ['initelectronicfields_13',['initElectronicFields',['../classdftfe_1_1dft_class.html#ab99264a6ced16003de321e730f385e4e',1,'dftfe::dftClass']]], + ['initialise_14',['initialise',['../classdftfe_1_1oncv_class.html#a54f3323bf59153052adf3059c171ed26',1,'dftfe::oncvClass']]], + ['initialiseflatteneddatastructure_15',['initialiseFlattenedDataStructure',['../classdftfe_1_1_atomic_centered_non_local_operator.html#afa3e39974ad698d3eb2dab9890744940',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['initialisefromrestartfile_16',['InitialiseFromRestartFile',['../classdftfe_1_1molecular_dynamics_class.html#a3be147b30d8a5074ca15595b9653034c',1,'dftfe::molecularDynamicsClass']]], + ['initialisefromrestartnhcfile_17',['InitialiseFromRestartNHCFile',['../classdftfe_1_1molecular_dynamics_class.html#a2fafc367a2bb14a75265111de3827d0a',1,'dftfe::molecularDynamicsClass']]], + ['initialisenonlocalcontribution_18',['initialiseNonLocalContribution',['../classdftfe_1_1oncv_class.html#a3bc3752e65bdd86742b773baef80a51c',1,'dftfe::oncvClass::initialiseNonLocalContribution(const std::vector< std::vector< double > > &atomLocations, const std::vector< int > &imageIds, const std::vector< std::vector< double > > &periodicCoords, const std::vector< double > &kPointWeights, const std::vector< double > &kPointCoordinates, const bool updateNonlocalSparsity)'],['../classdftfe_1_1oncv_class.html#a9fa5d93e74cfe3a8ded4ab8c189652e6',1,'dftfe::oncvClass::initialiseNonLocalContribution(const std::vector< std::vector< double > > &atomLocations, const std::vector< int > &imageIds, const std::vector< std::vector< double > > &periodicCoords, const std::vector< double > &kPointWeights, const std::vector< double > &kPointCoordinates, const bool updateNonlocalSparsity, const std::map< unsigned int, std::vector< int > > &sparsityPattern, const std::vector< std::vector< dealii::CellId > > &elementIdsInAtomCompactSupport, const std::vector< std::vector< unsigned int > > &elementIndexesInAtomCompactSupport, const std::vector< unsigned int > &atomIdsInCurrentProcess, unsigned int numberElements)']]], + ['initialiseoperatoractiononx_19',['initialiseOperatorActionOnX',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a7ce46b4b1fd39e63e89e7131bc7ae710',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['initialisepartitioner_20',['initialisePartitioner',['../classdftfe_1_1_atomic_centered_non_local_operator.html#aa07c86020e01273f15525639d5dc55e6',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['initialize_21',['initialize',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a9db89413f0cdaa5d656a498f001f2dff',1,'dftfe::dftUtils::constraintMatrixInfo::initialize()'],['../classdftfe_1_1dftfe_wrapper.html#a286748c16a6b353aaf2cd30196a370c0',1,'dftfe::dftfeWrapper::initialize()']]], + ['initializeconstraints_22',['initializeConstraints',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a309cbe7cc8637063880fd934b43c139c',1,'dftfe::basis::FEBasisOperations']]], + ['initializedirection_23',['initializeDirection',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a9b7d95a108a92a9f36ce976bf0d781f5',1,'dftfe::cgPRPNonLinearSolver']]], + ['initializeflattenedindexmaps_24',['initializeFlattenedIndexMaps',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ad23d66c29a340d766151d415145e260b',1,'dftfe::basis::FEBasisOperations']]], + ['initializehessian_25',['initializeHessian',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a992f4a89d42c6b7f74ecf820fc1b335b',1,'dftfe::BFGSNonLinearSolver']]], + ['initializeindexmaps_26',['initializeIndexMaps',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ad5942afe149a14f20b9909cadc48b014',1,'dftfe::basis::FEBasisOperations']]], + ['initializekohnshamdftoperator_27',['initializeKohnShamDFTOperator',['../classdftfe_1_1dft_class.html#aaef9ab3d3aeeb2138dc2026fdbb1807f',1,'dftfe::dftClass']]], + ['initializempipattern_28',['initializeMPIPattern',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a1de6b0d13f6040140452081df5b50b16',1,'dftfe::basis::FEBasisOperations']]], + ['initializepreconditioner_29',['initializePreconditioner',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a3c41f3e300ce422a08a0d9ba26b1b716',1,'dftfe::LBFGSNonLinearSolver']]], + ['initializescaledconstraints_30',['initializeScaledConstraints',['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#a9579996fae6fb8e87005adb0435e5e3e',1,'dftfe::dftUtils::constraintMatrixInfo::initializeScaledConstraints(const distributedCPUVec< double > &invSqrtMassVec)'],['../classdftfe_1_1dft_utils_1_1constraint_matrix_info.html#ae99ae4a0f73af19662477b3d9fd42766',1,'dftfe::dftUtils::constraintMatrixInfo::initializeScaledConstraints(const dftfe::utils::MemoryStorage< double, dftfe::utils::MemorySpace::HOST > &invSqrtMassVec)']]], + ['initializeshapefunctionandjacobianbasisdata_31',['initializeShapeFunctionAndJacobianBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aba877d7052542a0ca452a8793c3cfcc9',1,'dftfe::basis::FEBasisOperations']]], + ['initializeshapefunctionandjacobiandata_32',['initializeShapeFunctionAndJacobianData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ab3e94bdf3482ef18d7344d23666cb006',1,'dftfe::basis::FEBasisOperations']]], + ['initimagechargesupdatekpoints_33',['initImageChargesUpdateKPoints',['../classdftfe_1_1dft_class.html#a803d068a0fdc0c21ef9ac3442c67d51d',1,'dftfe::dftClass']]], + ['initincrementfield_34',['initIncrementField',['../classdftfe_1_1mesh_movement_class.html#a68ff885f785f2f2cae50f6771024c843',1,'dftfe::meshMovementClass']]], + ['initkpoints_35',['initKpoints',['../classdftfe_1_1_atomic_centered_non_local_operator.html#a0356889f92f29412388eb11dc2588df9',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['initlocalpotential_36',['initLocalPotential',['../classdftfe_1_1oncv_class.html#ab649f3ce7e8f7140673d9fbdd6f0069e',1,'dftfe::oncvClass']]], + ['initlocalpseudopotential_37',['initLocalPseudoPotential',['../classdftfe_1_1dft_class.html#a3f6bc7dcae0520b81a2b6487cc6f9671',1,'dftfe::dftClass']]], + ['initmoved_38',['initMoved',['../classdftfe_1_1force_class.html#adad153c519abad59aa25cab0b7de7e21',1,'dftfe::forceClass::initMoved()'],['../classdftfe_1_1mesh_movement_class.html#a1331833cc5f77c2ef8b4ae84a1e74f16',1,'dftfe::meshMovementClass::initMoved()']]], + ['initnoremesh_39',['initNoRemesh',['../classdftfe_1_1dft_class.html#aa72c6260d7536b50f1923ca41da326eb',1,'dftfe::dftClass']]], + ['initnscf_40',['initnscf',['../classdftfe_1_1dft_class.html#a369876f5f352e0c43f1bbd0eece4c9c5',1,'dftfe::dftClass']]], + ['initprefinedobjects_41',['initpRefinedObjects',['../classdftfe_1_1dft_class.html#a676d1e02218d26db361ce7fca06c3d72',1,'dftfe::dftClass']]], + ['initpseudodata_42',['initPseudoData',['../classdftfe_1_1force_class.html#add8242f2c10d9a7e33a959228e155cff',1,'dftfe::forceClass']]], + ['initpseudopotentialall_43',['initPseudoPotentialAll',['../classdftfe_1_1dft_class.html#ae7b278acb1eb7b10283318cc2c4e6a5c',1,'dftfe::dftClass']]], + ['initrho_44',['initRho',['../classdftfe_1_1dft_class.html#a8aef7a8490035bef07a7bf1ea43a1414',1,'dftfe::dftClass']]], + ['initsymmetry_45',['initSymmetry',['../classdftfe_1_1symmetry_class.html#a4eb709ef846654d529d871d4f28fa30a',1,'dftfe::symmetryClass']]], + ['initunmoved_46',['initUnmoved',['../classdftfe_1_1force_class.html#a384f85ba12982346cfd0870e49439846',1,'dftfe::forceClass']]], + ['initunmovedtriangulation_47',['initUnmovedTriangulation',['../classdftfe_1_1dft_class.html#a8c9b3f798b88659f406f873cc8f54f3d',1,'dftfe::dftClass']]], + ['inlocallyownedrange_48',['inLocallyOwnedRange',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#aa5c2eb07ba77efe1c676c31677ecb5c6',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['integratewithbasis_49',['integrateWithBasis',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a272c71dd38da86d603e24334d2bc7593',1,'dftfe::basis::FEBasisOperations']]], + ['integratewithbasiskernel_50',['integrateWithBasisKernel',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a86511d0a5562d4e44594ca9f86c7b91c',1,'dftfe::basis::FEBasisOperations']]], + ['interpolate_51',['interpolate',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a202b1890c0ea94db65a9d55655c52891',1,'dftfe::basis::FEBasisOperations']]], + ['interpolatedensitynodaldatatoquadraturedatageneral_52',['interpolateDensityNodalDataToQuadratureDataGeneral',['../classdftfe_1_1dft_class.html#a9570883ffa4d543cd4867ba40ded0e83',1,'dftfe::dftClass']]], + ['interpolatedensitynodaldatatoquadraturedatalpsp_53',['interpolateDensityNodalDataToQuadratureDataLpsp',['../classdftfe_1_1dft_class.html#aa96455392f0961f9812944bbab9133a1',1,'dftfe::dftClass']]], + ['interpolateelectronodaldatatoquadraturedatageneral_54',['interpolateElectroNodalDataToQuadratureDataGeneral',['../classdftfe_1_1dft_class.html#aed1fbb745aa0bf8b74bafe367794931a',1,'dftfe::dftClass']]], + ['interpolatekernel_55',['interpolateKernel',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#afcd968fdd6426a5ae17019fd72820f5a',1,'dftfe::basis::FEBasisOperations::interpolateKernel(const dftfe::linearAlgebra::MultiVector< ValueTypeBasisCoeff, memorySpace > &nodalData, ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients, const std::pair< unsigned int, unsigned int > cellRange) const'],['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a76b6b0ec3e442acf25a6ca43dd32162c',1,'dftfe::basis::FEBasisOperations::interpolateKernel(const ValueTypeBasisCoeff *nodalData, ValueTypeBasisCoeff *quadratureValues, ValueTypeBasisCoeff *quadratureGradients, const std::pair< unsigned int, unsigned int > cellRange) const']]], + ['intitialisepartitionerkpointsandcomputecmatrixentries_56',['intitialisePartitionerKPointsAndComputeCMatrixEntries',['../classdftfe_1_1_atomic_centered_non_local_operator.html#aeb5a9096d8ffca7811dd078b542a05c8',1,'dftfe::AtomicCenteredNonLocalOperator']]], + ['inverse_57',['inverse',['../namespacedftfe_1_1linear_algebra_operations.html#a23f3bab0880944554667262d1ce5b359',1,'dftfe::linearAlgebraOperations']]], + ['inversejacobians_58',['inverseJacobians',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a41bc92182d3bf1269f5417797f7d7536',1,'dftfe::basis::FEBasisOperations']]], + ['inversejacobiansbasisdata_59',['inverseJacobiansBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a461f57651be421aa539432f2412860b7',1,'dftfe::basis::FEBasisOperations']]], + ['inversemassvector_60',['inverseMassVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aab1158bee90ca82f173b4f217e305751',1,'dftfe::basis::FEBasisOperations']]], + ['inversemassvectorbasisdata_61',['inverseMassVectorBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#adf406f0b0bab3d1544750ec80588e7b7',1,'dftfe::basis::FEBasisOperations']]], + ['inversesqrtmassvector_62',['inverseSqrtMassVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a10148c4fc69b04325bb72bf95898b7ff',1,'dftfe::basis::FEBasisOperations']]], + ['inversesqrtmassvectorbasisdata_63',['inverseSqrtMassVectorBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a0a3362bf22d011d318b6824146b23c02',1,'dftfe::basis::FEBasisOperations']]], + ['invert_64',['invert',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a86e064ead5d748e9bfab51124535c735',1,'dftfe::ScaLAPACKMatrix']]], + ['is_5fprocess_5factive_65',['is_process_active',['../classdftfe_1_1_process_grid.html#a291c7432cd6a8b215a9ff18d8721f693',1,'dftfe::ProcessGrid']]], + ['iscompatible_66',['isCompatible',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a773f40a3792564b4e57f1071e656a958',1,'dftfe::utils::mpi::MPIPatternP2P::isCompatible()'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a2e1624b7163deb96a26d747b62e8b82b',1,'dftfe::linearAlgebra::MultiVector::isCompatible()']]], + ['isconverged_67',['isConverged',['../classdftfe_1_1geo_opt_cell.html#a88304029eedfadb7ba9f4c37f56e6932',1,'dftfe::geoOptCell::isConverged()'],['../classdftfe_1_1geo_opt_ion.html#a3a665f5b328cb5b01792664780bb2524',1,'dftfe::geoOptIon::isConverged()'],['../classdftfe_1_1nonlinear_solver_problem.html#a4fe8570a516d3fc119c460c9530bb390',1,'dftfe::nonlinearSolverProblem::isConverged()'],['../classdftfe_1_1nudged_elastic_band_class.html#a8e25700ef519442e7dffd4bd54967799',1,'dftfe::nudgedElasticBandClass::isConverged()']]], + ['isdatapresent_68',['isDataPresent',['../classdftfe_1_1_atom_centered_spherical_function_base.html#ad4219e32dfd703afd00edeac4f5adac6',1,'dftfe::AtomCenteredSphericalFunctionBase']]], + ['isghostentry_69',['isGhostEntry',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#aa9c323f0037592f1fcf8a9d3ff886f28',1,'dftfe::utils::mpi::MPIPatternP2P']]] +]; diff --git a/search/functions_9.js b/search/functions_9.js new file mode 100644 index 000000000..852896f6f --- /dev/null +++ b/search/functions_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['jxw_0',['JxW',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a801f0d7f73b94cf4d8bbb8e60f6d9088',1,'dftfe::basis::FEBasisOperations']]], + ['jxwbasisdata_1',['JxWBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#ac2bf2d374394255639a0a7650112c11a',1,'dftfe::basis::FEBasisOperations']]] +]; diff --git a/search/functions_a.js b/search/functions_a.js new file mode 100644 index 000000000..451541234 --- /dev/null +++ b/search/functions_a.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['kerkersolverproblem_0',['kerkerSolverProblem',['../classdftfe_1_1kerker_solver_problem.html#a5ee1ec2f9a2950e4deeeb6edc118b348',1,'dftfe::kerkerSolverProblem']]], + ['kohnshameigenspacecompute_1',['kohnShamEigenSpaceCompute',['../classdftfe_1_1dft_class.html#a10771c7d818e35f064d578e57d9754ec',1,'dftfe::dftClass']]], + ['kohnshameigenspacecomputenscf_2',['kohnShamEigenSpaceComputeNSCF',['../classdftfe_1_1dft_class.html#aed13f777722756e2c6c8ec50345098a8',1,'dftfe::dftClass']]], + ['kohnshameigenspacefirstorderdensitymatresponse_3',['kohnShamEigenSpaceFirstOrderDensityMatResponse',['../classdftfe_1_1dft_class.html#a36fda91987804120234a19934f14a74c',1,'dftfe::dftClass']]], + ['kohnshamhamiltonianoperator_4',['KohnShamHamiltonianOperator',['../classdftfe_1_1_kohn_sham_hamiltonian_operator.html#a1df48594f4bedf91cad0dbb46a0bfbc3',1,'dftfe::KohnShamHamiltonianOperator']]] +]; diff --git a/search/functions_b.js b/search/functions_b.js new file mode 100644 index 000000000..5cb43981d --- /dev/null +++ b/search/functions_b.js @@ -0,0 +1,33 @@ +var searchData= +[ + ['l2norm_0',['l2Norm',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a9ac79ee1dc416decda9c75162fca20eb',1,'dftfe::linearAlgebra::MultiVector']]], + ['l2projectionquaddensityminusatomicdensity_1',['l2ProjectionQuadDensityMinusAtomicDensity',['../classdftfe_1_1dft_class.html#a273909c752d6f0fc80e794b5ccf0075b',1,'dftfe::dftClass']]], + ['l2projectionquadtonodal_2',['l2ProjectionQuadToNodal',['../classdftfe_1_1dft_class.html#ac898e6ba67d97e38b9be439ecabae409',1,'dftfe::dftClass']]], + ['lanczoslowerupperboundeigenspectrum_3',['lanczosLowerUpperBoundEigenSpectrum',['../namespacedftfe_1_1linear_algebra_operations.html#a322502c3bf760cabc91854f8331fa71e',1,'dftfe::linearAlgebraOperations']]], + ['lbfgsnonlinearsolver_4',['LBFGSNonLinearSolver',['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a95795c23b5180958e2147849442de2ac',1,'dftfe::LBFGSNonLinearSolver']]], + ['lengthofhistory_5',['lengthOfHistory',['../classdftfe_1_1_mixing_scheme.html#a33e3e4d30549f45298088889341dab8e',1,'dftfe::MixingScheme']]], + ['linearsolver_6',['linearSolver',['../classdftfe_1_1linear_solver.html#a33487090706c6ea4df5b550843aa608d',1,'dftfe::linearSolver']]], + ['linesearch_7',['lineSearch',['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#a20da76a8080aeaf04af92bf1cb83b5dd',1,'dftfe::cgPRPNonLinearSolver']]], + ['lnorm_8',['LNorm',['../classdftfe_1_1nudged_elastic_band_class.html#a3593fe4caca6c5c316e73d257d98c535',1,'dftfe::nudgedElasticBandClass']]], + ['load_9',['load',['../classdftfe_1_1_b_f_g_s_non_linear_solver.html#a65a35df9a0a6ccaa03497ae646fa5e19',1,'dftfe::BFGSNonLinearSolver::load()'],['../classdftfe_1_1cg_p_r_p_non_linear_solver.html#ad8fbc76d611accc76c20c3901a8ccb52',1,'dftfe::cgPRPNonLinearSolver::load()'],['../classdftfe_1_1_l_b_f_g_s_non_linear_solver.html#a42c8eee573df2a9b4fe1e09a5c3d9bc1',1,'dftfe::LBFGSNonLinearSolver::load()']]], + ['loadpsifiles_10',['loadPSIFiles',['../classdftfe_1_1dft_class.html#a31da94dd22dfbbc3136588d8977d4260',1,'dftfe::dftClass']]], + ['loadsupporttriangulations_11',['loadSupportTriangulations',['../classdftfe_1_1triangulation_manager.html#a6b6fe245e9ffd6a9f5e278e7e2436805',1,'dftfe::triangulationManager']]], + ['loadtriainfoandrhonodaldata_12',['loadTriaInfoAndRhoNodalData',['../classdftfe_1_1dft_class.html#add854078fa83e7a8462373923c4d4ea0',1,'dftfe::dftClass']]], + ['loadtriangulationssolutionvectors_13',['loadTriangulationsSolutionVectors',['../classdftfe_1_1triangulation_manager.html#a00b82059f0d591e5a7cbf4bf949f229c',1,'dftfe::triangulationManager']]], + ['local_5fel_14',['local_el',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a0b8c6ee8de8a5891548743f50325b48d',1,'dftfe::ScaLAPACKMatrix::local_el(const unsigned int loc_row, const unsigned int loc_column) const'],['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a112944e3abfbe79f60b311a170a60de9',1,'dftfe::ScaLAPACKMatrix::local_el(const unsigned int loc_row, const unsigned int loc_column)']]], + ['local_5fm_15',['local_m',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a34aea7e92abd44b2a47142f2fa546671',1,'dftfe::ScaLAPACKMatrix']]], + ['local_5fn_16',['local_n',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a1022e93c172ae09f9f976f769435dc82',1,'dftfe::ScaLAPACKMatrix']]], + ['localghostsize_17',['localGhostSize',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#aad7f0c3a7d06dbe6e3f95b6803a2e370',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['locallyownedsize_18',['locallyOwnedSize',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#abda14af1c27877b59b8da19dd8236a7c',1,'dftfe::linearAlgebra::MultiVector']]], + ['localownedsize_19',['localOwnedSize',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a5a04593d736021b0e1b4f39f29faa13c',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['localsize_20',['localSize',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a95ee5193650150d642b7f751ec71c134',1,'dftfe::linearAlgebra::MultiVector']]], + ['localtoglobal_21',['localToGlobal',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a0aae8dcbce38023d86848b2532fcdd61',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['locateatomcorenodes_22',['locateAtomCoreNodes',['../classdftfe_1_1dft_class.html#a111f62935e76686ae3ed8a73cacefb90',1,'dftfe::dftClass']]], + ['locateatomcorenodesforce_23',['locateAtomCoreNodesForce',['../classdftfe_1_1force_class.html#a62018391fc6cd3b2ea1c19b8d6b02e90',1,'dftfe::forceClass']]], + ['locateatomsinbins_24',['locateAtomsInBins',['../classdftfe_1_1vself_bins_manager.html#a872f830ddc0d284b8194ef221e8ec1f3',1,'dftfe::vselfBinsManager']]], + ['locateperiodicpinnednodes_25',['locatePeriodicPinnedNodes',['../classdftfe_1_1dft_class.html#a20047365b4686ee2e01651418ce6176b',1,'dftfe::dftClass']]], + ['lowdenorthogonalization_26',['lowdenOrthogonalization',['../namespacedftfe_1_1linear_algebra_operations.html#a7fbcfc34fd019e4704b2a8ddf4b1bd94',1,'dftfe::linearAlgebraOperations']]], + ['lowrankapproxscfdielectricmatrixinv_27',['lowrankApproxScfDielectricMatrixInv',['../classdftfe_1_1dft_class.html#a6380af9e40e56f2d4365e8aa208b0719',1,'dftfe::dftClass']]], + ['lowrankapproxscfdielectricmatrixinvspinpolarized_28',['lowrankApproxScfDielectricMatrixInvSpinPolarized',['../classdftfe_1_1dft_class.html#a34f2ada95a1c1a7a20b3a9d911366804',1,'dftfe::dftClass']]], + ['lworkfromwork_29',['lworkFromWork',['../namespacedftfe.html#a5a9de5077c14618313dfa884a65c59db',1,'dftfe::lworkFromWork(std::vector< double > &work)'],['../namespacedftfe.html#a2bf7d4cacec598f188429ed1518475fb',1,'dftfe::lworkFromWork(std::vector< float > &work)'],['../namespacedftfe.html#a402d4494c85423bbdf6676a14ed42562',1,'dftfe::lworkFromWork(std::vector< std::complex< double > > &work)']]] +]; diff --git a/search/functions_c.js b/search/functions_c.js new file mode 100644 index 000000000..0939ecc4c --- /dev/null +++ b/search/functions_c.js @@ -0,0 +1,42 @@ +var searchData= +[ + ['m_0',['m',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a58e8a50bfee69f4bf767b41fd4621f52',1,'dftfe::ScaLAPACKMatrix']]], + ['makecomplex_1',['makeComplex',['../namespacedftfe_1_1utils.html#aaacbda8d186e1962f22208254b090057',1,'dftfe::utils::makeComplex(double realPart, double imagPart)'],['../namespacedftfe_1_1utils.html#a8ac6e6cb2cd0588d689befc8ef434e04',1,'dftfe::utils::makeComplex(float realPart, float imagPart)']]], + ['makedatatypedevicecompatible_2',['makeDataTypeDeviceCompatible',['../namespacedftfe_1_1utils.html#a7a1cd29b80e3fe5d280420de996315e8',1,'dftfe::utils::makeDataTypeDeviceCompatible(int *a)'],['../namespacedftfe_1_1utils.html#a08df0cd4aadf5df82cec12e103e8e8b9',1,'dftfe::utils::makeDataTypeDeviceCompatible(const int *a)'],['../namespacedftfe_1_1utils.html#ae303cc24132199268684f6f3253ba75f',1,'dftfe::utils::makeDataTypeDeviceCompatible(long int *a)'],['../namespacedftfe_1_1utils.html#aaa3f9c9491ab01be2f4d640b978ec3a2',1,'dftfe::utils::makeDataTypeDeviceCompatible(const long int *a)'],['../namespacedftfe_1_1utils.html#ad038cfc024c68794ab17ad3733959c4e',1,'dftfe::utils::makeDataTypeDeviceCompatible(unsigned int *a)'],['../namespacedftfe_1_1utils.html#a5b40c4124ecb41075e58807876c4da30',1,'dftfe::utils::makeDataTypeDeviceCompatible(const unsigned int *a)'],['../namespacedftfe_1_1utils.html#a97060128d2bcb54fe8953ca50a76cac5',1,'dftfe::utils::makeDataTypeDeviceCompatible(unsigned long int *a)'],['../namespacedftfe_1_1utils.html#a4ba5fd4ed7fe3832648ce3396e43c950',1,'dftfe::utils::makeDataTypeDeviceCompatible(const unsigned long int *a)'],['../namespacedftfe_1_1utils.html#a94b19bd8c7f3f4e8559d086805b1b2ae',1,'dftfe::utils::makeDataTypeDeviceCompatible(double *a)'],['../namespacedftfe_1_1utils.html#ae0133aebc103be688f0bb66a8204e941',1,'dftfe::utils::makeDataTypeDeviceCompatible(const double *a)'],['../namespacedftfe_1_1utils.html#a0537eb04643a83ced090a5a58cd4eea6',1,'dftfe::utils::makeDataTypeDeviceCompatible(float *a)'],['../namespacedftfe_1_1utils.html#ac40d9c1e4801701da9b1696d2819a220',1,'dftfe::utils::makeDataTypeDeviceCompatible(const float *a)'],['../namespacedftfe_1_1utils.html#a744e1645d9ef70875849ae6f4cdfd885',1,'dftfe::utils::makeDataTypeDeviceCompatible(std::complex< double > *a)'],['../namespacedftfe_1_1utils.html#aa2cd60a5b28347f01607d8b8624519a0',1,'dftfe::utils::makeDataTypeDeviceCompatible(const std::complex< double > *a)'],['../namespacedftfe_1_1utils.html#af6b64fe1e29492b52d98e01a5d1d1102',1,'dftfe::utils::makeDataTypeDeviceCompatible(std::complex< float > *a)'],['../namespacedftfe_1_1utils.html#a49256422281abd832bf025f9b3eec849',1,'dftfe::utils::makeDataTypeDeviceCompatible(const std::complex< float > *a)'],['../namespacedftfe_1_1utils.html#a543a5f6ce66449bc8a1932838adf9b7e',1,'dftfe::utils::makeDataTypeDeviceCompatible(int a)'],['../namespacedftfe_1_1utils.html#a23866963f61b778806b3bffe55733340',1,'dftfe::utils::makeDataTypeDeviceCompatible(long int a)'],['../namespacedftfe_1_1utils.html#adc50be81ab053cacbfc8d5b64183765b',1,'dftfe::utils::makeDataTypeDeviceCompatible(unsigned int a)'],['../namespacedftfe_1_1utils.html#ab163913b740eca35cca68a544f63b343',1,'dftfe::utils::makeDataTypeDeviceCompatible(unsigned long int a)'],['../namespacedftfe_1_1utils.html#a04950f81160aea55fd7f1fbce050e957',1,'dftfe::utils::makeDataTypeDeviceCompatible(double a)'],['../namespacedftfe_1_1utils.html#a03c49012882dfbd45b7dab77ce1d69fc',1,'dftfe::utils::makeDataTypeDeviceCompatible(float a)'],['../namespacedftfe_1_1utils.html#a7bcf7b985ffed5cbcacbaf2891fb3823',1,'dftfe::utils::makeDataTypeDeviceCompatible(std::complex< double > a)'],['../namespacedftfe_1_1utils.html#ac7a04746273fda89ec15451cc9e75f9c',1,'dftfe::utils::makeDataTypeDeviceCompatible(std::complex< float > a)']]], + ['markperiodicfacesnonorthogonal_3',['markPeriodicFacesNonOrthogonal',['../namespacedftfe_1_1mesh_gen_utils.html#a93d6f8f8f6598611e357f7d3d32c090c',1,'dftfe::meshGenUtils']]], + ['mass_4',['mass',['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#a161c2d6fee63f2bbe38eca17cc9f8daa',1,'dftfe::pseudoUtils::PeriodicTable::mass(int zval) const'],['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#ac327939e53776d2fa9b8736042b4f181',1,'dftfe::pseudoUtils::PeriodicTable::mass(std::string symbol) const']]], + ['massvector_5',['massVector',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a0689af03d17d42c4a1b1e30a0902dfe2',1,'dftfe::basis::FEBasisOperations']]], + ['massvectorbasisdata_6',['massVectorBasisData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a60133f0eed7281470f267b18bf584696',1,'dftfe::basis::FEBasisOperations']]], + ['matrixfreedata_7',['matrixFreeData',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#af7bd51a3a6146ec5d94bf4de738ec6e8',1,'dftfe::basis::FEBasisOperations']]], + ['mdnve_8',['mdNVE',['../classdftfe_1_1molecular_dynamics_class.html#aba514f7d8f632ae1870d1f5de6ec5386',1,'dftfe::molecularDynamicsClass']]], + ['mdnvtnosehoverchainsthermostat_9',['mdNVTnosehoverchainsThermostat',['../classdftfe_1_1molecular_dynamics_class.html#a35109ee98ca2960c784b13f56fa27bad',1,'dftfe::molecularDynamicsClass']]], + ['mdnvtrescalethermostat_10',['mdNVTrescaleThermostat',['../classdftfe_1_1molecular_dynamics_class.html#a8b7eafdd02eb5c99fc4674bcb9ed8c1d',1,'dftfe::molecularDynamicsClass']]], + ['mdnvtsvrthermostat_11',['mdNVTsvrThermostat',['../classdftfe_1_1molecular_dynamics_class.html#a4a9b377819e099986c44bf04c0d468a6',1,'dftfe::molecularDynamicsClass']]], + ['meanvalueconstraintdistribute_12',['meanValueConstraintDistribute',['../classdftfe_1_1poisson_solver_problem.html#a5bb985e12bbb1a453d10590799aa97e6',1,'dftfe::poissonSolverProblem']]], + ['meanvalueconstraintdistributeslavetomaster_13',['meanValueConstraintDistributeSlaveToMaster',['../classdftfe_1_1poisson_solver_problem.html#a35336e7f3879e35944e15d1b87908fb2',1,'dftfe::poissonSolverProblem']]], + ['meanvalueconstraintsetzero_14',['meanValueConstraintSetZero',['../classdftfe_1_1poisson_solver_problem.html#a38551ba64c40ea985b96df83ceb0a676',1,'dftfe::poissonSolverProblem']]], + ['memorystorage_15',['MemoryStorage',['../classdftfe_1_1utils_1_1_memory_storage.html#a816f1f06c424a9ec07b0eab4d265cad5',1,'dftfe::utils::MemoryStorage::MemoryStorage()=default'],['../classdftfe_1_1utils_1_1_memory_storage.html#af890cefee7279d03543554a16d313a95',1,'dftfe::utils::MemoryStorage::MemoryStorage(const MemoryStorage &u)'],['../classdftfe_1_1utils_1_1_memory_storage.html#ac37d91fae881c7aaffae5661c90a2910',1,'dftfe::utils::MemoryStorage::MemoryStorage(MemoryStorage &&u) noexcept'],['../classdftfe_1_1utils_1_1_memory_storage.html#a6889f89771c30ae23fe588ff35c63bb3',1,'dftfe::utils::MemoryStorage::MemoryStorage(std::size_t size, ValueType initVal=0)']]], + ['memorystoragefromstl_16',['memoryStorageFromSTL',['../namespacedftfe_1_1utils.html#ac07cb0a5493ca0895396e428081a1cfe',1,'dftfe::utils']]], + ['meshmovementaffinetransform_17',['meshMovementAffineTransform',['../classdftfe_1_1mesh_movement_affine_transform.html#aa82504dd00a1727527eb8487bee90d70',1,'dftfe::meshMovementAffineTransform']]], + ['meshmovementclass_18',['meshMovementClass',['../classdftfe_1_1mesh_movement_class.html#a11a93ca35ca3de8b60db373cf0cf2501',1,'dftfe::meshMovementClass']]], + ['meshmovementgaussianclass_19',['meshMovementGaussianClass',['../classdftfe_1_1mesh_movement_gaussian_class.html#ad87c0589fd2775b847d33f97bdb65914',1,'dftfe::meshMovementGaussianClass']]], + ['mixingscheme_20',['MixingScheme',['../classdftfe_1_1_mixing_scheme.html#aea80fc781ba944e73a4be8c36f8ee55b',1,'dftfe::MixingScheme']]], + ['mixvariable_21',['mixVariable',['../classdftfe_1_1_mixing_scheme.html#a2cd7a278514a64b881634eb39132d13c',1,'dftfe::MixingScheme']]], + ['mmult_22',['mmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#ab9cde52bed9faa050dce904c96eebce0',1,'dftfe::ScaLAPACKMatrix']]], + ['moleculardynamicsclass_23',['molecularDynamicsClass',['../classdftfe_1_1molecular_dynamics_class.html#accaf2f7c9ba1ee6c5155a8dd3088533c',1,'dftfe::molecularDynamicsClass']]], + ['movedmeshcheck_24',['movedMeshCheck',['../classdftfe_1_1mesh_movement_class.html#a3f6575159e4616a7cc1c9bfaf14d521d',1,'dftfe::meshMovementClass']]], + ['movefile_25',['moveFile',['../namespacedftfe_1_1dft_utils.html#ab276c85aa00451fe23367a4bda8b48c2',1,'dftfe::dftUtils']]], + ['movemesh_26',['moveMesh',['../classdftfe_1_1mesh_movement_affine_transform.html#af5389b0b653a2aa2204f32129f8b9bde',1,'dftfe::meshMovementAffineTransform::moveMesh()'],['../classdftfe_1_1mesh_movement_gaussian_class.html#a01f8043c0910aa892d4c003fea0b1fd8',1,'dftfe::meshMovementGaussianClass::moveMesh()']]], + ['movemeshtoatoms_27',['moveMeshToAtoms',['../classdftfe_1_1dft_class.html#adc7fd80efeaa869d464a2c5d2705b130',1,'dftfe::dftClass']]], + ['movemeshtwolevelelectro_28',['moveMeshTwoLevelElectro',['../classdftfe_1_1mesh_movement_gaussian_class.html#a2457759f5a0c300cc4b25e025e2dc032',1,'dftfe::meshMovementGaussianClass']]], + ['movemeshtwostep_29',['moveMeshTwoStep',['../classdftfe_1_1mesh_movement_gaussian_class.html#a10a91c70be4057aeaf005574b273daaa',1,'dftfe::meshMovementGaussianClass']]], + ['movesubdividedmesh_30',['moveSubdividedMesh',['../classdftfe_1_1mesh_movement_class.html#a46ffb5b9220045f23513f1ef7d4e7d98',1,'dftfe::meshMovementClass']]], + ['mpi_5ftype_5fid_31',['mpi_type_id',['../namespacedftfe_1_1data_types.html#aeb14c95c8bc2a7a3d73ecb906a910914',1,'dftfe::dataTypes::mpi_type_id(const int *)'],['../namespacedftfe_1_1data_types.html#a69e9bd7ebf1f1e8f934019710897ec72',1,'dftfe::dataTypes::mpi_type_id(const long int *)'],['../namespacedftfe_1_1data_types.html#ad291a8a271c285c921e8db948ee9dbe3',1,'dftfe::dataTypes::mpi_type_id(const unsigned int *)'],['../namespacedftfe_1_1data_types.html#a71fa81cb88b2486d7feb79344ef2040f',1,'dftfe::dataTypes::mpi_type_id(const unsigned long int *)'],['../namespacedftfe_1_1data_types.html#a457b289255a9d71261309106c5d05b5c',1,'dftfe::dataTypes::mpi_type_id(const unsigned long long int *)'],['../namespacedftfe_1_1data_types.html#a569414bed95910467a2f2a72b6aaecce',1,'dftfe::dataTypes::mpi_type_id(const float *)'],['../namespacedftfe_1_1data_types.html#ac6a44437a6b6e883343401a9f26d5b24',1,'dftfe::dataTypes::mpi_type_id(const double *)'],['../namespacedftfe_1_1data_types.html#ad063442c3676df51ab9e633b8c22e394',1,'dftfe::dataTypes::mpi_type_id(const long double *)'],['../namespacedftfe_1_1data_types.html#a38807d2c7cb531423cc87e2f8290bb41',1,'dftfe::dataTypes::mpi_type_id(const std::complex< float > *)'],['../namespacedftfe_1_1data_types.html#ad766a182f5638ff13983cd9ad66ce0bb',1,'dftfe::dataTypes::mpi_type_id(const std::complex< double > *)']]], + ['mpicommunicator_32',['mpiCommunicator',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#ab4d284d924bc3917ea71f52e40d8d44e',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['mpicommunicatorp2p_33',['MPICommunicatorP2P',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_communicator_p2_p.html#adc62184cc187b4167239df3feee5dc6f',1,'dftfe::utils::mpi::MPICommunicatorP2P']]], + ['mpipatternp2p_34',['MPIPatternP2P',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a0a8db9b51b0fd6fa4170e4b0a2aa24e1',1,'dftfe::utils::mpi::MPIPatternP2P::MPIPatternP2P(const std::pair< global_size_type, global_size_type > &locallyOwnedRange, const std::vector< dftfe::global_size_type > &ghostIndices, const MPI_Comm &mpiComm)'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a279c39f8272d4df97504081292914605',1,'dftfe::utils::mpi::MPIPatternP2P::MPIPatternP2P(const size_type size)']]], + ['mpirequestersnbx_35',['MPIRequestersNBX',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a3c226ee125cca7b99659fea6fe44876b',1,'dftfe::utils::mpi::MPIRequestersNBX::MPIRequestersNBX(const std::vector< size_type > &targetIDs, const MPI_Comm &comm)'],['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#a63da5b468e92b01eb7bd529b50fae7b4',1,'dftfe::utils::mpi::MPIRequestersNBX::MPIRequestersNBX()=default']]], + ['mtmult_36',['mTmult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a707a28c545abba69394929b0ff934fdd',1,'dftfe::ScaLAPACKMatrix']]], + ['mult_37',['mult',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a245caef57db69751ecdebc120ff4b456',1,'dftfe::ScaLAPACKMatrix::mult()'],['../namespacedftfe_1_1utils.html#ad361e6bfe0d291045938225ecd3dd6ea',1,'dftfe::utils::mult(unsigned int a, unsigned int b)'],['../namespacedftfe_1_1utils.html#adcda956285358e48e0c816e0724ce0e0',1,'dftfe::utils::mult(unsigned long int a, unsigned long int b)'],['../namespacedftfe_1_1utils.html#a3026372ab6ab0625ee78b56505cd4520',1,'dftfe::utils::mult(int a, int b)'],['../namespacedftfe_1_1utils.html#afb52371cacad3bbd6f7d7a1066cda349',1,'dftfe::utils::mult(double a, double b)'],['../namespacedftfe_1_1utils.html#a0ecbb7d7ee9ef5b7c940c2ca8c72fa6c',1,'dftfe::utils::mult(float a, float b)'],['../namespacedftfe_1_1utils.html#ae5c706e906bb78fa6967057ce9ee4486',1,'dftfe::utils::mult(float a, double b)'],['../namespacedftfe_1_1utils.html#a4dca74c83a4e7f6888558c68d68913d8',1,'dftfe::utils::mult(double a, float b)'],['../namespacedftfe_1_1utils.html#aedb9ad40e707fe086a4e91668bafba3a',1,'dftfe::utils::mult(cuDoubleComplex a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a374ca5a1a4ffd39b8d515e7fd87f68f3',1,'dftfe::utils::mult(cuFloatComplex a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#a72b128596ee1a77af07d94093bfa111f',1,'dftfe::utils::mult(cuFloatComplex a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a612a0c9d9e701debb83e871bcd2ca8ce',1,'dftfe::utils::mult(cuDoubleComplex a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#ac36334b69f52959d0b239df89f442e47',1,'dftfe::utils::mult(double a, cuDoubleComplex b)'],['../namespacedftfe_1_1utils.html#aeb1e15224578717c7339307a78876021',1,'dftfe::utils::mult(cuDoubleComplex a, double b)'],['../namespacedftfe_1_1utils.html#a6583040a0867baf045ac03dbf8517d5e',1,'dftfe::utils::mult(float a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#a3670a509193257192d8c11e7d66a2a30',1,'dftfe::utils::mult(cuFloatComplex a, float b)'],['../namespacedftfe_1_1utils.html#adc2942c935ac70e8033df8dc5f11a740',1,'dftfe::utils::mult(double a, cuFloatComplex b)'],['../namespacedftfe_1_1utils.html#a6bf7537ab0a41ee8982926efe3656365',1,'dftfe::utils::mult(cuFloatComplex a, double b)'],['../namespacedftfe_1_1utils.html#a60f42650f74eb6c378cae84c3c4b5b5c',1,'dftfe::utils::mult(hipDoubleComplex a, hipDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a260c252a26dedb4f5b12e558640cdc85',1,'dftfe::utils::mult(hipFloatComplex a, hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#a0dd4bbce759b46bd0428fa761ccab4ea',1,'dftfe::utils::mult(hipFloatComplex a, hipDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a3d313cf2e8a50f795fd0ac1d7cc73019',1,'dftfe::utils::mult(hipDoubleComplex a, hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#aa308830bb180cf7ea120f3ee8273c755',1,'dftfe::utils::mult(double a, hipDoubleComplex b)'],['../namespacedftfe_1_1utils.html#a31dde47f526d95f0c3aa76f2e2beef3f',1,'dftfe::utils::mult(hipDoubleComplex a, double b)'],['../namespacedftfe_1_1utils.html#ae3e3b0bd17bff0e2eac1ddab6ed847d6',1,'dftfe::utils::mult(float a, hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#ab04109eaf432a8726ac78e6d01b760c5',1,'dftfe::utils::mult(hipFloatComplex a, float b)'],['../namespacedftfe_1_1utils.html#a62f12f2d1f412c6a7ddab59ca3790528',1,'dftfe::utils::mult(double a, hipFloatComplex b)'],['../namespacedftfe_1_1utils.html#a76bfd1ab9791f496a60aad3e1054a537',1,'dftfe::utils::mult(hipFloatComplex a, double b)']]], + ['multivector_38',['MultiVector',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a9df1033e595ed9efe7ff76c17b486565',1,'dftfe::linearAlgebra::MultiVector::MultiVector()=default'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a3fed8a898375baa72b4893812938291c',1,'dftfe::linearAlgebra::MultiVector::MultiVector(const size_type size, const size_type numVectors, const ValueType initVal=0)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#adc396828ef298de8c6bcad7a04e87375',1,'dftfe::linearAlgebra::MultiVector::MultiVector(std::unique_ptr< typename MultiVector< ValueType, memorySpace >::Storage > storage, size_type numVectors)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a63d7db19987c9f2b9b41824f22f86e7d',1,'dftfe::linearAlgebra::MultiVector::MultiVector(std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P, const size_type numVectors, const ValueType initVal=0)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#af08086ba7cb2c37c63e7ae9ff64ec465',1,'dftfe::linearAlgebra::MultiVector::MultiVector(std::unique_ptr< typename MultiVector< ValueType, memorySpace >::Storage > &storage, std::shared_ptr< const utils::mpi::MPIPatternP2P< memorySpace > > mpiPatternP2P, const size_type numVectors)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a81170404c7cd6f2a226fe4fd09455c3d',1,'dftfe::linearAlgebra::MultiVector::MultiVector(const std::pair< global_size_type, global_size_type > locallyOwnedRange, const std::vector< global_size_type > &ghostIndices, const MPI_Comm &mpiComm, const size_type numVectors, ValueType initVal=0)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a1ac941c1afb8eebd2dc35db4ea3945b6',1,'dftfe::linearAlgebra::MultiVector::MultiVector(const std::pair< global_size_type, global_size_type > locallyOwnedRange, const MPI_Comm &mpiComm, const size_type numVectors, const ValueType initVal=0)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#adbf7fc76824da2a7540df1d4a2f6dfb5',1,'dftfe::linearAlgebra::MultiVector::MultiVector(const global_size_type globalSize, const MPI_Comm &mpiComm, const size_type numVectors, const ValueType initVal=0)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#ae4ff9bc39e8df13bce72f6cde957a003',1,'dftfe::linearAlgebra::MultiVector::MultiVector(const MultiVector &u)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#aeef426256413c1d82318d49038914705',1,'dftfe::linearAlgebra::MultiVector::MultiVector(const MultiVector &u, const ValueType initVal=0)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#a5b25af355ea6306c7dc8f21dd6683145',1,'dftfe::linearAlgebra::MultiVector::MultiVector(MultiVector &&u) noexcept']]] +]; diff --git a/search/functions_d.js b/search/functions_d.js new file mode 100644 index 000000000..a359cb32f --- /dev/null +++ b/search/functions_d.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['n_0',['n',['../classdftfe_1_1_sca_l_a_p_a_c_k_matrix.html#a41c494fd3964387d621a45c8f25e664d',1,'dftfe::ScaLAPACKMatrix']]], + ['ncells_1',['nCells',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a8038aba6dff161be6faa2dffe0cd7aed',1,'dftfe::basis::FEBasisOperations']]], + ['ndofspercell_2',['nDofsPerCell',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#abf087d5350a4a461df31596570eeb529',1,'dftfe::basis::FEBasisOperations']]], + ['nglobalindices_3',['nGlobalIndices',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#a82b80390d551c7cb29d42206f08cc044',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['nmpiprocesses_4',['nmpiProcesses',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_pattern_p2_p.html#aa2f96b19290ef765ff84ca46ef0a23f1',1,'dftfe::utils::mpi::MPIPatternP2P']]], + ['nonlinearsolver_5',['nonLinearSolver',['../classdftfe_1_1non_linear_solver.html#acb2fee7d397c0f1fcca01edff29bc1dc',1,'dftfe::nonLinearSolver']]], + ['nonlinearsolverproblem_6',['nonlinearSolverProblem',['../classdftfe_1_1nonlinear_solver_problem.html#a6f468b90032ab9339b639b20109706f5',1,'dftfe::nonlinearSolverProblem']]], + ['noremeshrhodatainit_7',['noRemeshRhoDataInit',['../classdftfe_1_1dft_class.html#a8700a1fe1f162afd6f700665e2e6db01',1,'dftfe::dftClass']]], + ['normalizeatomicrhoquadvalues_8',['normalizeAtomicRhoQuadValues',['../classdftfe_1_1dft_class.html#a7c4b33d6f4abd6d43d60d64e0f58970d',1,'dftfe::dftClass']]], + ['normalizerhoinquadvalues_9',['normalizeRhoInQuadValues',['../classdftfe_1_1dft_class.html#a780c37bcf31872e66eaed0c483cbc7b4',1,'dftfe::dftClass']]], + ['normalizerhooutquadvalues_10',['normalizeRhoOutQuadValues',['../classdftfe_1_1dft_class.html#adc0168fbf67ed4d6548d763260237372',1,'dftfe::dftClass']]], + ['nosehoverchains_11',['NoseHoverChains',['../classdftfe_1_1molecular_dynamics_class.html#ada336d8717658e87d6b7436443b9b252',1,'dftfe::molecularDynamicsClass']]], + ['nosehoverextendedlagrangian_12',['NoseHoverExtendedLagrangian',['../classdftfe_1_1molecular_dynamics_class.html#a8c5b0138a53a601f7e7e9c8998c7668d',1,'dftfe::molecularDynamicsClass']]], + ['nowneddofs_13',['nOwnedDofs',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#affa4970ca92f2e17df8666042aac7b8a',1,'dftfe::basis::FEBasisOperations']]], + ['nquadspercell_14',['nQuadsPerCell',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#a11e568f61bd04e68e6cc855ca9f446cd',1,'dftfe::basis::FEBasisOperations']]], + ['nrelaventdofs_15',['nRelaventDofs',['../classdftfe_1_1basis_1_1_f_e_basis_operations.html#aa3a9e40ced6c16218300fd906d89bf6c',1,'dftfe::basis::FEBasisOperations']]], + ['nscf_16',['nscf',['../classdftfe_1_1dft_class.html#a6154e277f8cd6b1fb06f0c7efde6a9cf',1,'dftfe::dftClass']]], + ['nudgedelasticbandclass_17',['nudgedElasticBandClass',['../classdftfe_1_1nudged_elastic_band_class.html#a7d68888d8bc88ed6efdd698683c92b34',1,'dftfe::nudgedElasticBandClass']]], + ['numroc_5f_18',['numroc_',['../namespacedftfe.html#ab4551d8b31f0faf036189b071760a55e',1,'dftfe']]], + ['numvectors_19',['numVectors',['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#af0e04101e332772819e1860193c549f6',1,'dftfe::linearAlgebra::MultiVector']]] +]; diff --git a/search/functions_e.js b/search/functions_e.js new file mode 100644 index 000000000..bcda9d267 --- /dev/null +++ b/search/functions_e.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['oncvclass_0',['oncvClass',['../classdftfe_1_1oncv_class.html#a3c6f58b62a3100ebd6e3e0978f5bf2df',1,'dftfe::oncvClass']]], + ['operator_21_3d_1',['operator!=',['../classdftfe_1_1dealii_linear_solver_problem.html#ab505308c2a47b84efddc2298f5d0b141',1,'dftfe::dealiiLinearSolverProblem::operator!=()'],['../classdftfe_1_1kerker_solver_problem.html#ab434f839021844216ceaa1bce2d84bf4',1,'dftfe::kerkerSolverProblem::operator!=()'],['../classdftfe_1_1poisson_solver_problem.html#aa4252fce0d7ccd44f2220aef7a217521',1,'dftfe::poissonSolverProblem::operator!=()']]], + ['operator_26_2',['operator&',['../namespacedftfe_1_1basis.html#a968aecdead1f0467074cacbbedc3492c',1,'dftfe::basis']]], + ['operator_26_3d_3',['operator&=',['../namespacedftfe_1_1basis.html#aae43e26dc49262b93899c9a9edccc420',1,'dftfe::basis']]], + ['operator_3d_4',['operator=',['../classdftfe_1_1utils_1_1_memory_storage.html#ac4e3dd36624251164ff929fe6e67a71b',1,'dftfe::utils::MemoryStorage::operator=(const MemoryStorage &rhs)'],['../classdftfe_1_1utils_1_1_memory_storage.html#a0c57b7d1e9e4c9f95c3dbdd73fff9f0a',1,'dftfe::utils::MemoryStorage::operator=(MemoryStorage &&rhs) noexcept'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#add96302dfff873a70466a452066fbad1',1,'dftfe::linearAlgebra::MultiVector::operator=(const MultiVector &u)'],['../classdftfe_1_1linear_algebra_1_1_multi_vector.html#af882bffcec0872a8b97ab7530eaabeb3',1,'dftfe::linearAlgebra::MultiVector::operator=(MultiVector &&u)']]], + ['operator_3d_3d_5',['operator==',['../classdftfe_1_1utils_1_1_optimized_index_set.html#a53dfa9d6fd66e0ca486d2d7158ccc2ef',1,'dftfe::utils::OptimizedIndexSet']]], + ['operator_5b_5d_6',['operator[]',['../classdftfe_1_1utils_1_1_memory_storage.html#abea95dd493fb885a5e5cc04d4dcb6a9a',1,'dftfe::utils::MemoryStorage::operator[](std::size_t i)'],['../classdftfe_1_1utils_1_1_memory_storage.html#a67dd18067d1916d6cbb2f43e188854e8',1,'dftfe::utils::MemoryStorage::operator[](std::size_t i) const']]], + ['operator_7c_7',['operator|',['../namespacedftfe_1_1basis.html#a1e087bcab2de5ca7747d1d306c752a29',1,'dftfe::basis']]], + ['operator_7c_3d_8',['operator|=',['../namespacedftfe_1_1basis.html#a2cc9c04d0f959faadd30c609ced094f6',1,'dftfe::basis']]], + ['optimizedindexset_9',['OptimizedIndexSet',['../classdftfe_1_1utils_1_1_optimized_index_set.html#ae1cdc43da5fc7bfc110dde70d2833d53',1,'dftfe::utils::OptimizedIndexSet']]], + ['outputdensity_10',['outputDensity',['../classdftfe_1_1dft_class.html#a322b869a95fb23bac01545b9674e6231',1,'dftfe::dftClass']]], + ['outputwfc_11',['outputWfc',['../classdftfe_1_1dft_class.html#aa98dec6aabc64f3712e1b95efe685928',1,'dftfe::dftClass']]] +]; diff --git a/search/functions_f.js b/search/functions_f.js new file mode 100644 index 000000000..cfb75c5da --- /dev/null +++ b/search/functions_f.js @@ -0,0 +1,93 @@ +var searchData= +[ + ['parse_5fparameters_0',['parse_parameters',['../classdftfe_1_1dft_parameters.html#ad2c123d6b835c6f891773455f2e58890',1,'dftfe::dftParameters::parse_parameters()'],['../classdftfe_1_1run_parameters.html#a2e398eed3eafd1748e44dcc9b73c74e9',1,'dftfe::runParameters::parse_parameters()']]], + ['pdgeadd_5f_1',['pdgeadd_',['../namespacedftfe.html#a221815568916358c46a411f2eaf8a622',1,'dftfe']]], + ['pdgels_5f_2',['pdgels_',['../namespacedftfe.html#adaa498bcbb07c15a2d5be67a678b63a0',1,'dftfe']]], + ['pdgemm_5f_3',['pdgemm_',['../namespacedftfe.html#afcd4617f3c829f0e97e950caf20324af',1,'dftfe']]], + ['pdgemr2d_5f_4',['pdgemr2d_',['../namespacedftfe.html#ab6a7b32848fa87d641a74bac65272d2b',1,'dftfe']]], + ['pdgesv_5f_5',['pdgesv_',['../namespacedftfe.html#a24d2ddff1d3f167c76d65b35a5e5b6b8',1,'dftfe']]], + ['pdgesvd_5f_6',['pdgesvd_',['../namespacedftfe.html#a3828b64eb1e8fb649d3c25da1614e384',1,'dftfe']]], + ['pdgetrf_5f_7',['pdgetrf_',['../namespacedftfe.html#a2fc8e14dce993b4584b79ac2c3c3b71f',1,'dftfe']]], + ['pdgetri_5f_8',['pdgetri_',['../namespacedftfe.html#a002f688ca93979940594131a843fdfd4',1,'dftfe']]], + ['pdlacpy_5f_9',['pdlacpy_',['../namespacedftfe.html#af38708a1d214262c1cee343f229abb50',1,'dftfe']]], + ['pdlamch_5f_10',['pdlamch_',['../namespacedftfe.html#abe6d16eb94b0fae6f7a1d1451c14fc92',1,'dftfe']]], + ['pdlange_5f_11',['pdlange_',['../namespacedftfe.html#a129935f715565db171f51520d37c82c4',1,'dftfe']]], + ['pdlansy_5f_12',['pdlansy_',['../namespacedftfe.html#ab5a9ea1c809dbc2b0b8b432a1b87e27f',1,'dftfe']]], + ['pdpocon_5f_13',['pdpocon_',['../namespacedftfe.html#a8bf82b760bdb3444929c5af5d27dd6ac',1,'dftfe']]], + ['pdpotrf_5f_14',['pdpotrf_',['../namespacedftfe.html#ae253dc496641780227d5acaab9c8c0ce',1,'dftfe']]], + ['pdpotri_5f_15',['pdpotri_',['../namespacedftfe.html#a52e4e94cb6d6249b0f172d6154da1511',1,'dftfe']]], + ['pdsyev_5f_16',['pdsyev_',['../namespacedftfe.html#aa7486105b406d173f93a86a6cf1eca74',1,'dftfe']]], + ['pdsyevr_5f_17',['pdsyevr_',['../namespacedftfe.html#abe69a61918297c8a21e31f773208c864',1,'dftfe']]], + ['pdsyevx_5f_18',['pdsyevx_',['../namespacedftfe.html#a10d901b8632df151002719691be7cc6c',1,'dftfe']]], + ['pdtran_5f_19',['pdtran_',['../namespacedftfe.html#a03f4d6b17504d2d3a551f5d24ecc7f42',1,'dftfe']]], + ['pdtrtri_5f_20',['pdtrtri_',['../namespacedftfe.html#a7d5dca590290c8d280d24bec6dd2ab8a',1,'dftfe']]], + ['periodictable_21',['PeriodicTable',['../classdftfe_1_1pseudo_utils_1_1_periodic_table.html#a36d2c3f1a82480a1508892e68836246f',1,'dftfe::pseudoUtils::PeriodicTable']]], + ['pgeadd_22',['pgeadd',['../namespacedftfe.html#afdd26b38e3abc3ad89e430d2a53536a7',1,'dftfe::pgeadd(const char *, const int *, const int *, const number *, const number *, const int *, const int *, const int *, const number *, number *, const int *, const int *, const int *)'],['../namespacedftfe.html#a91b91b634ef14b719abdcbef5eaaad96',1,'dftfe::pgeadd(const char *transa, const int *m, const int *n, const double *alpha, const double *A, const int *IA, const int *JA, const int *DESCA, const double *beta, double *C, const int *IC, const int *JC, const int *DESCC)'],['../namespacedftfe.html#a84a7dd6cf4fd128ee1d34fb47058b7fe',1,'dftfe::pgeadd(const char *transa, const int *m, const int *n, const float *alpha, const float *A, const int *IA, const int *JA, const int *DESCA, const float *beta, float *C, const int *IC, const int *JC, const int *DESCC)'],['../namespacedftfe.html#ad39ada61604562f57251ff1e558715b2',1,'dftfe::pgeadd(const char *transa, const int *m, const int *n, const std::complex< double > *alpha, const std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const std::complex< double > *beta, std::complex< double > *C, const int *IC, const int *JC, const int *DESCC)']]], + ['pgels_23',['pgels',['../namespacedftfe.html#a112407716e799336e6b3ad50a5efdfc0',1,'dftfe::pgels(const char *, const int *, const int *, const int *, number *, const int *, const int *, const int *, number *, const int *, const int *, const int *, number *, int *, int *)'],['../namespacedftfe.html#aea79ff1e095a9afb70318d2735a38f2f',1,'dftfe::pgels(const char *trans, const int *m, const int *n, const int *nrhs, double *A, const int *ia, const int *ja, const int *desca, double *B, const int *ib, const int *jb, const int *descb, double *work, int *lwork, int *info)'],['../namespacedftfe.html#a2e5a1f4b7c53f2b2dafa96b49dc13eb8',1,'dftfe::pgels(const char *trans, const int *m, const int *n, const int *nrhs, float *A, const int *ia, const int *ja, const int *desca, float *B, const int *ib, const int *jb, const int *descb, float *work, int *lwork, int *info)']]], + ['pgemm_24',['pgemm',['../namespacedftfe.html#a8d336cef46adcf6849917899962d692d',1,'dftfe::pgemm(const char *, const char *, const int *, const int *, const int *, const number *, const number *, const int *, const int *, const int *, const number *, const int *, const int *, const int *, const number *, number *, const int *, const int *, const int *)'],['../namespacedftfe.html#a2c210836f55cb564535dad222ae661f7',1,'dftfe::pgemm(const char *transa, const char *transb, const int *m, const int *n, const int *k, const double *alpha, const double *A, const int *IA, const int *JA, const int *DESCA, const double *B, const int *IB, const int *JB, const int *DESCB, const double *beta, double *C, const int *IC, const int *JC, const int *DESCC)'],['../namespacedftfe.html#a8f4f52028ff3bd8f536c29b24cf3f241',1,'dftfe::pgemm(const char *transa, const char *transb, const int *m, const int *n, const int *k, const float *alpha, const float *A, const int *IA, const int *JA, const int *DESCA, const float *B, const int *IB, const int *JB, const int *DESCB, const float *beta, float *C, const int *IC, const int *JC, const int *DESCC)'],['../namespacedftfe.html#afc75a88042e8f1ee4c221ca9c4df1d41',1,'dftfe::pgemm(const char *transa, const char *transb, const int *m, const int *n, const int *k, const std::complex< double > *alpha, const std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const std::complex< double > *B, const int *IB, const int *JB, const int *DESCB, const std::complex< double > *beta, std::complex< double > *C, const int *IC, const int *JC, const int *DESCC)']]], + ['pgemr2d_25',['pgemr2d',['../namespacedftfe.html#a272ad794eff91576c54c419065248b92',1,'dftfe::pgemr2d(const int *, const int *, const number *, const int *, const int *, const int *, number *, const int *, const int *, const int *, const int *)'],['../namespacedftfe.html#a0d41de33f389e36adbde65ed72d17080',1,'dftfe::pgemr2d(const int *m, const int *n, const double *A, const int *ia, const int *ja, const int *desca, double *B, const int *ib, const int *jb, const int *descb, const int *ictxt)'],['../namespacedftfe.html#a65e5019f3cc820c91a9e14557462eb24',1,'dftfe::pgemr2d(const int *m, const int *n, const float *A, const int *ia, const int *ja, const int *desca, float *B, const int *ib, const int *jb, const int *descb, const int *ictxt)']]], + ['pgesv_26',['pgesv',['../namespacedftfe.html#aed108ac8e3143e165daa3283371cab92',1,'dftfe::pgesv(const int *, const int *, number *, const int *, const int *, const int *, int *, number *, const int *, const int *, const int *, int *)'],['../namespacedftfe.html#a43ed640aef24c39d75b50e56a9973306',1,'dftfe::pgesv(const int *n, const int *nrhs, double *A, const int *ia, const int *ja, const int *desca, int *ipiv, double *B, const int *ib, const int *jb, const int *descb, int *info)'],['../namespacedftfe.html#af7b90ddff0648b33530802fe0e185940',1,'dftfe::pgesv(const int *n, const int *nrhs, float *A, const int *ia, const int *ja, const int *desca, int *ipiv, float *B, const int *ib, const int *jb, const int *descb, int *info)']]], + ['pgesvd_27',['pgesvd',['../namespacedftfe.html#a78a21f07e26ab56ae98447575766d710',1,'dftfe::pgesvd(const char *, const char *, const int *, const int *, number *, const int *, const int *, const int *, number *, number *, const int *, const int *, const int *, number *, const int *, const int *, const int *, number *, int *, int *)'],['../namespacedftfe.html#a702d07195b3c4de1fd2fb6edadd45f6b',1,'dftfe::pgesvd(const char *jobu, const char *jobvt, const int *m, const int *n, double *A, const int *ia, const int *ja, const int *desca, double *S, double *U, const int *iu, const int *ju, const int *descu, double *VT, const int *ivt, const int *jvt, const int *descvt, double *work, int *lwork, int *info)'],['../namespacedftfe.html#ade8c7099b967d41bdd95dc4c2fc6084b',1,'dftfe::pgesvd(const char *jobu, const char *jobvt, const int *m, const int *n, float *A, const int *ia, const int *ja, const int *desca, float *S, float *U, const int *iu, const int *ju, const int *descu, float *VT, const int *ivt, const int *jvt, const int *descvt, float *work, int *lwork, int *info)']]], + ['pgetrf_28',['pgetrf',['../namespacedftfe.html#a0bfc1b810074011bfc368e0d5d4a6775',1,'dftfe::pgetrf(const int *, const int *, number *, const int *, const int *, const int *, int *, int *)'],['../namespacedftfe.html#a0b5c7ebe9617b7312adf84ae9d1e542a',1,'dftfe::pgetrf(const int *m, const int *n, double *A, const int *IA, const int *JA, const int *DESCA, int *ipiv, int *INFO)'],['../namespacedftfe.html#a15525b6afbf5973ebf1441f9889e3906',1,'dftfe::pgetrf(const int *m, const int *n, float *A, const int *IA, const int *JA, const int *DESCA, int *ipiv, int *INFO)'],['../namespacedftfe.html#a58920373808ba6a67aed71aa2b8d7296',1,'dftfe::pgetrf(const int *m, const int *n, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *ipiv, int *INFO)']]], + ['pgetri_29',['pgetri',['../namespacedftfe.html#a2a82c250c7cbedc80087765993a11c35',1,'dftfe::pgetri(const int *, number *, const int *, const int *, const int *, const int *, number *, int *, int *, int *, int *)'],['../namespacedftfe.html#ac8a67b3750253f78fc52ba35ae3f324a',1,'dftfe::pgetri(const int *N, double *A, const int *IA, const int *JA, const int *DESCA, const int *ipiv, double *work, int *lwork, int *iwork, int *liwork, int *info)'],['../namespacedftfe.html#aa8c6870c06ad57f04670dc1a2c79fb99',1,'dftfe::pgetri(const int *N, float *A, const int *IA, const int *JA, const int *DESCA, const int *ipiv, float *work, int *lwork, int *iwork, int *liwork, int *info)'],['../namespacedftfe.html#ae27b54f2104e5e68e64a93a5debadd4d',1,'dftfe::pgetri(const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const int *ipiv, std::complex< double > *work, int *lwork, int *iwork, int *liwork, int *info)']]], + ['placpy_30',['placpy',['../namespacedftfe.html#ae3cb1e0e295bca56859a16490440a325',1,'dftfe::placpy(const char *, const int *, const int *, const number *, const int *, const int *, const int *, number *, const int *, const int *, const int *)'],['../namespacedftfe.html#adfad87ce6d870ce68f891d9f78259f99',1,'dftfe::placpy(const char *uplo, const int *m, const int *n, const double *A, const int *ia, const int *ja, const int *desca, double *B, const int *ib, const int *jb, const int *descb)'],['../namespacedftfe.html#aebf89d4c7cf4bd70b5a00aa17d9fe465',1,'dftfe::placpy(const char *uplo, const int *m, const int *n, const float *A, const int *ia, const int *ja, const int *desca, float *B, const int *ib, const int *jb, const int *descb)']]], + ['plamch_31',['plamch',['../namespacedftfe.html#a55e6fd19ddc6233eb3ac483ba1070182',1,'dftfe::plamch(const int *, const char *, number &)'],['../namespacedftfe.html#ab781cc657bbeef30b13a2d518b791d4c',1,'dftfe::plamch(const int *ictxt, const char *cmach, double &val)'],['../namespacedftfe.html#a296ef8e4e175fcafc09da6c7290a9af2',1,'dftfe::plamch(const int *ictxt, const char *cmach, float &val)']]], + ['plange_32',['plange',['../namespacedftfe.html#ad23cd959a767d2f7b4b4aeebe0495138',1,'dftfe::plange(const char *, const int *, const int *, const number *, const int *, const int *, const int *, number *)'],['../namespacedftfe.html#abaabb5a8fc7eb54497850ad8c4d52ca5',1,'dftfe::plange(const char *norm, const int *m, const int *n, const double *A, const int *ia, const int *ja, const int *desca, double *work)'],['../namespacedftfe.html#a6b807efc4c3b3401f93481e7234e0b56',1,'dftfe::plange(const char *norm, const int *m, const int *n, const float *A, const int *ia, const int *ja, const int *desca, float *work)']]], + ['plansy_33',['plansy',['../namespacedftfe.html#a097c1dee8268bf876a177fa6d43c8fe3',1,'dftfe::plansy(const char *, const char *, const int *, const number *, const int *, const int *, const int *, number *)'],['../namespacedftfe.html#ae0c1473f1b617c8fd4a576670d5c4844',1,'dftfe::plansy(const char *norm, const char *uplo, const int *N, const double *A, const int *IA, const int *JA, const int *DESCA, double *work)'],['../namespacedftfe.html#adad36b88d98e9f19f2cb68231acf62dd',1,'dftfe::plansy(const char *norm, const char *uplo, const int *N, const float *A, const int *IA, const int *JA, const int *DESCA, float *work)']]], + ['poissonsolverproblem_34',['poissonSolverProblem',['../classdftfe_1_1poisson_solver_problem.html#ad04efb96d4e69c663f8a13605a80ea5f',1,'dftfe::poissonSolverProblem']]], + ['pool_35',['Pool',['../classdftfe_1_1dft_utils_1_1_pool.html#ab25f9a7e1ce0aa8ca1a13601af0c5c16',1,'dftfe::dftUtils::Pool']]], + ['popoldhistory_36',['popOldHistory',['../classdftfe_1_1_mixing_scheme.html#a366b186ea5c549d5b7fa8b8f8d03a942',1,'dftfe::MixingScheme']]], + ['pplacgv_37',['pplacgv',['../namespacedftfe.html#a8b096c1092d1287ee77384a89bf2f622',1,'dftfe::pplacgv(const int *N, double *A, const int *IA, const int *JA, const int *DESCA, const int *INCX)'],['../namespacedftfe.html#aea3bd3b855a2e41f9f6bd33bd58c0384',1,'dftfe::pplacgv(const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const int *INCX)']]], + ['ppocon_38',['ppocon',['../namespacedftfe.html#aa5927e9c2685f74fa2aecba7c72c59eb',1,'dftfe::ppocon(const char *, const int *, const number *, const int *, const int *, const int *, const number *, number *, number *, const int *, int *, const int *, int *)'],['../namespacedftfe.html#ae11e2bff9e957910e53bc176d74d678a',1,'dftfe::ppocon(const char *uplo, const int *N, const double *A, const int *IA, const int *JA, const int *DESCA, const double *ANORM, double *RCOND, double *WORK, const int *LWORK, int *IWORK, const int *LIWORK, int *INFO)'],['../namespacedftfe.html#a4c3ea15b6ab2a3eeace2183891710395',1,'dftfe::ppocon(const char *uplo, const int *N, const float *A, const int *IA, const int *JA, const int *DESCA, const float *ANORM, float *RCOND, float *WORK, const int *LWORK, int *IWORK, const int *LIWORK, int *INFO)']]], + ['ppotrf_39',['ppotrf',['../namespacedftfe.html#a82f094d35499ff5b5111b4e567f6fd2b',1,'dftfe::ppotrf(const char *, const int *, number *, const int *, const int *, const int *, int *)'],['../namespacedftfe.html#aa9ae2dfa7b85d40116af4811b157aeda',1,'dftfe::ppotrf(const char *UPLO, const int *N, double *A, const int *IA, const int *JA, const int *DESCA, int *INFO)'],['../namespacedftfe.html#a5a5d3bf0beda03b448c0a852c5b5476b',1,'dftfe::ppotrf(const char *UPLO, const int *N, float *A, const int *IA, const int *JA, const int *DESCA, int *INFO)'],['../namespacedftfe.html#ae4b3104b0ac41519ef30bedb200b15c2',1,'dftfe::ppotrf(const char *UPLO, const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *INFO)']]], + ['ppotri_40',['ppotri',['../namespacedftfe.html#a80d803b1a175c1b084d5d3cefe51d0ea',1,'dftfe::ppotri(const char *, const int *, number *, const int *, const int *, const int *, int *)'],['../namespacedftfe.html#aeecde09b5a36c746f0302d74202d4162',1,'dftfe::ppotri(const char *UPLO, const int *N, double *A, const int *IA, const int *JA, const int *DESCA, int *INFO)'],['../namespacedftfe.html#a98edc4289f32ac1fc0aa859b7abd0f93',1,'dftfe::ppotri(const char *UPLO, const int *N, float *A, const int *IA, const int *JA, const int *DESCA, int *INFO)'],['../namespacedftfe.html#aa5dda9c735f776cde314186b94e4f6f9',1,'dftfe::ppotri(const char *UPLO, const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *INFO)']]], + ['precondition_41',['precondition',['../classdftfe_1_1geo_opt_cell.html#ac89fb1efead7b14abc19cc67e5a719df',1,'dftfe::geoOptCell::precondition()'],['../classdftfe_1_1geo_opt_ion.html#a16e8a34fdb36346a775a400e8dc9909a',1,'dftfe::geoOptIon::precondition()'],['../classdftfe_1_1nonlinear_solver_problem.html#ab69b0c16859fddb24baafb6c514a2612',1,'dftfe::nonlinearSolverProblem::precondition()'],['../classdftfe_1_1nudged_elastic_band_class.html#a3c0151986f8e1654aac12331dd96afd9',1,'dftfe::nudgedElasticBandClass::precondition()']]], + ['precondition_5fjacobi_42',['precondition_Jacobi',['../classdftfe_1_1dealii_linear_solver_problem.html#a2541479df511b5944bc50bdc84220af1',1,'dftfe::dealiiLinearSolverProblem::precondition_Jacobi()'],['../classdftfe_1_1kerker_solver_problem.html#a6fa5d47c3621b14a018c889ed585e2ff',1,'dftfe::kerkerSolverProblem::precondition_Jacobi()'],['../classdftfe_1_1poisson_solver_problem.html#afe95860f258b4ed2a56dedb3fc1ecd61',1,'dftfe::poissonSolverProblem::precondition_Jacobi()']]], + ['print_5fparameters_43',['print_parameters',['../classdftfe_1_1run_parameters.html#a9cb638fb2ddc454b9719df55156de137',1,'dftfe::runParameters']]], + ['printatomsforces_44',['printAtomsForces',['../classdftfe_1_1force_class.html#afe454b4a084001b8f063505a701c5f75',1,'dftfe::forceClass']]], + ['printcurrentmemoryusage_45',['printCurrentMemoryUsage',['../namespacedftfe_1_1dft_utils.html#aa50216d4c39752e65055aff5ec377421',1,'dftfe::dftUtils']]], + ['printstress_46',['printStress',['../classdftfe_1_1force_class.html#a52cd02f7190c7df0a35accb7f5563b75',1,'dftfe::forceClass']]], + ['probeandreceiveincomingmsg_47',['probeAndReceiveIncomingMsg',['../classdftfe_1_1utils_1_1mpi_1_1_m_p_i_requesters_n_b_x.html#acfdf3a750a9e5d713eab717ad2247377',1,'dftfe::utils::mpi::MPIRequestersNBX']]], + ['processgrid_48',['ProcessGrid',['../classdftfe_1_1_process_grid.html#ad69936ac27b59ff0da6e79ab82b8458d',1,'dftfe::ProcessGrid::ProcessGrid(const MPI_Comm &mpi_communicator, const unsigned int n_rows, const unsigned int n_columns)'],['../classdftfe_1_1_process_grid.html#ac9d06ef72e49506314f77ebd06ad2880',1,'dftfe::ProcessGrid::ProcessGrid(const MPI_Comm &mpi_communicator, const unsigned int n_rows_matrix, const unsigned int n_columns_matrix, const unsigned int row_block_size, const unsigned int column_block_size)'],['../classdftfe_1_1_process_grid.html#a50c2fee674f7f9d7d9473d023b8158a4',1,'dftfe::ProcessGrid::ProcessGrid(const MPI_Comm &mpi_communicator, const std::pair< unsigned int, unsigned int > &grid_dimensions)']]], + ['processgridelpasetup_49',['processGridELPASetup',['../classdftfe_1_1elpa_scala_manager.html#a8e659cb2f7aab167c168269aadd9c25c',1,'dftfe::elpaScalaManager']]], + ['projectpreviousgroundstaterho_50',['projectPreviousGroundStateRho',['../classdftfe_1_1dft_class.html#aa1d8f721637c84e6676435baedf97b51',1,'dftfe::dftClass']]], + ['property_5fname_51',['property_name',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html#a4f0bba6ecbb502d68dbe13ec7b8e3852',1,'dftfe::LAPACKSupport']]], + ['pseudogramschmidtorthogonalization_52',['pseudoGramSchmidtOrthogonalization',['../namespacedftfe_1_1linear_algebra_operations.html#aece2d5de1c664b00010ff47f5633e6af',1,'dftfe::linearAlgebraOperations']]], + ['pseudopotentialtodftfeparser_53',['pseudoPotentialToDftfeParser',['../namespacedftfe_1_1pseudo_utils.html#ac8685a900ed9ef8301bb7a892df2179b',1,'dftfe::pseudoUtils']]], + ['psgeadd_5f_54',['psgeadd_',['../namespacedftfe.html#a233629b7a5e4d911de61898d349c6832',1,'dftfe']]], + ['psgels_5f_55',['psgels_',['../namespacedftfe.html#afd819e4e2c97e5a87871f0b3ef4fbf31',1,'dftfe']]], + ['psgemm_5f_56',['psgemm_',['../namespacedftfe.html#a712e6c38908c491a443b52778df44966',1,'dftfe']]], + ['psgemr2d_5f_57',['psgemr2d_',['../namespacedftfe.html#a0f575fdd814ce60d6c1b281159982ff6',1,'dftfe']]], + ['psgesv_5f_58',['psgesv_',['../namespacedftfe.html#aef3583562b2a9bb4a4470be8bf13927e',1,'dftfe']]], + ['psgesvd_5f_59',['psgesvd_',['../namespacedftfe.html#a0e761ff7b7e2af56709a3810a9328c30',1,'dftfe']]], + ['psgetrf_5f_60',['psgetrf_',['../namespacedftfe.html#abde5ab01317e19ac8feeca5602339d51',1,'dftfe']]], + ['psgetri_5f_61',['psgetri_',['../namespacedftfe.html#a9e0a4b60e5d7a3a2d9c56d7bcca7b3a1',1,'dftfe']]], + ['pslacpy_5f_62',['pslacpy_',['../namespacedftfe.html#a341659efbe4ac80f340443830891e557',1,'dftfe']]], + ['pslamch_5f_63',['pslamch_',['../namespacedftfe.html#a7c61818e9eb2bdbcfb0d8ebdb1945c12',1,'dftfe']]], + ['pslange_5f_64',['pslange_',['../namespacedftfe.html#af4b521c6694c2682ef70694b20f8ec6d',1,'dftfe']]], + ['pslansy_5f_65',['pslansy_',['../namespacedftfe.html#a619f9a1e5a3dc5e2542db2542ea4159b',1,'dftfe']]], + ['pspocon_5f_66',['pspocon_',['../namespacedftfe.html#a9bd6a7d349646376a1d62ba9decf7212',1,'dftfe']]], + ['pspotrf_5f_67',['pspotrf_',['../namespacedftfe.html#a7b312f4ec912904f739e3884959ae74f',1,'dftfe']]], + ['pspotri_5f_68',['pspotri_',['../namespacedftfe.html#aff107ce3bc9296f14c90a2577146aa94',1,'dftfe']]], + ['pssyev_5f_69',['pssyev_',['../namespacedftfe.html#aafa91b6b369496e0a7507d591ee82705',1,'dftfe']]], + ['pssyevr_5f_70',['pssyevr_',['../namespacedftfe.html#accde1d8ea16247a5878e9e56e1fa3ad0',1,'dftfe']]], + ['pssyevx_5f_71',['pssyevx_',['../namespacedftfe.html#af7898cfd26024e906c28470ee08d0bd2',1,'dftfe']]], + ['pstran_5f_72',['pstran_',['../namespacedftfe.html#af852f56eb67805d3bda3a2eef708c5bf',1,'dftfe']]], + ['pstrtri_5f_73',['pstrtri_',['../namespacedftfe.html#a44af8d71d934a11b0d3606bf008f7b7b',1,'dftfe']]], + ['psyev_74',['psyev',['../namespacedftfe.html#a9212c7fb18bf41e1c82806c961723eb1',1,'dftfe::psyev(const char *, const char *, const int *, number *, const int *, const int *, int *, number *, number *, const int *, const int *, int *, number *, const int *, int *)'],['../namespacedftfe.html#af884916c0085983907eea996a93a03b7',1,'dftfe::psyev(const char *jobz, const char *uplo, const int *m, double *A, const int *ia, const int *ja, int *desca, double *w, double *z, const int *iz, const int *jz, int *descz, double *work, const int *lwork, int *info)'],['../namespacedftfe.html#a5d0daa3e23f36e0fd27e377764eadf91',1,'dftfe::psyev(const char *jobz, const char *uplo, const int *m, float *A, const int *ia, const int *ja, int *desca, float *w, float *z, const int *iz, const int *jz, int *descz, float *work, const int *lwork, int *info)'],['../namespacedftfe.html#ac27316aba8c7537bafd262860944315f',1,'dftfe::psyev(const char *jobz, const char *uplo, const int *m, std::complex< double > *A, const int *ia, const int *ja, int *desca, double *w, std::complex< double > *z, const int *iz, const int *jz, int *descz, std::complex< double > *work, const int *lwork, int *info)']]], + ['psyevr_75',['psyevr',['../namespacedftfe.html#a44550e6398adcb9da90a7a65b752f4ee',1,'dftfe::psyevr(const char *, const char *, const char *, const int *, number *, const int *, const int *, const int *, const number *, const number *, const int *, const int *, int *, int *, number *, number *, const int *, const int *, const int *, number *, int *, int *, int *, int *)'],['../namespacedftfe.html#acd965b3bbe4dde64598a6ed3dc46e5b8',1,'dftfe::psyevr(const char *jobz, const char *range, const char *uplo, const int *n, double *A, const int *IA, const int *JA, const int *DESCA, const double *VL, const double *VU, const int *IL, const int *IU, int *m, int *nz, double *w, double *Z, const int *IZ, const int *JZ, const int *DESCZ, double *work, int *lwork, int *iwork, int *liwork, int *info)'],['../namespacedftfe.html#a4b2dcc4078e80bc55b24ff266a1b8f0d',1,'dftfe::psyevr(const char *jobz, const char *range, const char *uplo, const int *n, float *A, const int *IA, const int *JA, const int *DESCA, const float *VL, const float *VU, const int *IL, const int *IU, int *m, int *nz, float *w, float *Z, const int *IZ, const int *JZ, const int *DESCZ, float *work, int *lwork, int *iwork, int *liwork, int *info)'],['../namespacedftfe.html#a34d5ce5825e4e308f2b1347788bdbe39',1,'dftfe::psyevr(const char *jobz, const char *range, const char *uplo, const int *n, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, const double *VL, const double *VU, const int *IL, const int *IU, int *m, int *nz, double *w, std::complex< double > *Z, const int *IZ, const int *JZ, const int *DESCZ, std::complex< double > *work, int *lwork, int *iwork, int *liwork, int *info)']]], + ['psyevx_76',['psyevx',['../namespacedftfe.html#ae6b3f7a14db57859c2170e4989be43a5',1,'dftfe::psyevx(const char *, const char *, const char *, const int *, number *, const int *, const int *, const int *, number *, number *, const int *, const int *, number *, const int *, const int *, number *, number *, number *, const int *, const int *, const int *, number *, int *, int *, int *, int *, int *, number *, int *)'],['../namespacedftfe.html#a4dc0fcbc7223c16144ba443a7647f792',1,'dftfe::psyevx(const char *jobz, const char *range, const char *uplo, const int *n, double *A, const int *ia, const int *ja, const int *desca, double *VL, double *VU, const int *il, const int *iu, double *abstol, const int *m, const int *nz, double *w, double *orfac, double *Z, const int *iz, const int *jz, const int *descz, double *work, int *lwork, int *iwork, int *liwork, int *ifail, int *iclustr, double *gap, int *info)'],['../namespacedftfe.html#a0006c6888819df527ff7b92e4145fdb8',1,'dftfe::psyevx(const char *jobz, const char *range, const char *uplo, const int *n, float *A, const int *ia, const int *ja, const int *desca, float *VL, float *VU, const int *il, const int *iu, float *abstol, const int *m, const int *nz, float *w, float *orfac, float *Z, const int *iz, const int *jz, const int *descz, float *work, int *lwork, int *iwork, int *liwork, int *ifail, int *iclustr, float *gap, int *info)'],['../namespacedftfe.html#a1a33afc6f2d7c215d7c2d113c37f5301',1,'dftfe::psyevx(const char *jobz, const char *range, const char *uplo, const int *n, std::complex< double > *A, const int *ia, const int *ja, const int *desca, double *VL, double *VU, const int *il, const int *iu, double *abstol, const int *m, const int *nz, double *w, double *orfac, std::complex< double > *Z, const int *iz, const int *jz, const int *descz, std::complex< double > *work, int *lwork, int *iwork, int *liwork, int *ifail, int *iclustr, double *gap, int *info)']]], + ['ptran_77',['ptran',['../namespacedftfe.html#aaa18ee2e667e738f05105ba1979c395e',1,'dftfe::ptran(const int *, const int *, const number *, const number *, const int *, const int *, const int *, const number *, number *, const int *, const int *, const int *)'],['../namespacedftfe.html#a98685733ad047591946bd51a8844b7e8',1,'dftfe::ptran(const int *m, const int *n, const double *alpha, const double *A, const int *IA, const int *JA, const int *DESCA, const double *beta, double *C, const int *IC, const int *JC, const int *DESCC)'],['../namespacedftfe.html#a7ab71b8b4cfaac911ab85653483f4f16',1,'dftfe::ptran(const int *m, const int *n, const float *alpha, const float *A, const int *IA, const int *JA, const int *DESCA, const float *beta, float *C, const int *IC, const int *JC, const int *DESCC)']]], + ['ptrtri_78',['ptrtri',['../namespacedftfe.html#ab4f556dfb6d365a893dd2f7f00e1ba62',1,'dftfe::ptrtri(const char *, const char *, const int *, number *, const int *, const int *, const int *, int *)'],['../namespacedftfe.html#a2046eb0b50ef0d58d9d489a5bc03ce58',1,'dftfe::ptrtri(const char *UPLO, const char *DIAG, const int *N, double *A, const int *IA, const int *JA, const int *DESCA, int *INFO)'],['../namespacedftfe.html#aa83bcf277f70cb2d021b3bba42a6dcb9',1,'dftfe::ptrtri(const char *UPLO, const char *DIAG, const int *N, float *A, const int *IA, const int *JA, const int *DESCA, int *INFO)'],['../namespacedftfe.html#a08023849926ba95ad99ad39f7ffc0c62',1,'dftfe::ptrtri(const char *UPLO, const char *DIAG, const int *N, std::complex< double > *A, const int *IA, const int *JA, const int *DESCA, int *INFO)']]], + ['pzgeadd_5f_79',['pzgeadd_',['../namespacedftfe.html#aaf96e3cb8da123837a2377856357f67e',1,'dftfe']]], + ['pzgemm_5f_80',['pzgemm_',['../namespacedftfe.html#ac983f66dcae225deff57ab9240317432',1,'dftfe']]], + ['pzgetrf_5f_81',['pzgetrf_',['../namespacedftfe.html#a7c568a3b74e953fcf5b3e42a9a88e5aa',1,'dftfe']]], + ['pzgetri_5f_82',['pzgetri_',['../namespacedftfe.html#a3c535a126efb2a7819e59c35d2f5ba43',1,'dftfe']]], + ['pzheev_5f_83',['pzheev_',['../namespacedftfe.html#a4c528a0b8b8e334819754e69c8481299',1,'dftfe']]], + ['pzheevr_5f_84',['pzheevr_',['../namespacedftfe.html#ae0e0243bcf842451ed42faba81fb2c4a',1,'dftfe']]], + ['pzheevx_5f_85',['pzheevx_',['../namespacedftfe.html#a53980a0e19402e09d15af41be52cd979',1,'dftfe']]], + ['pzlacgv_5f_86',['pzlacgv_',['../namespacedftfe.html#ac6a9217aa19c7367285078037d4f5583',1,'dftfe']]], + ['pzpotrf_5f_87',['pzpotrf_',['../namespacedftfe.html#a8c350b90b550b87a811af738e9dccb64',1,'dftfe']]], + ['pzpotri_5f_88',['pzpotri_',['../namespacedftfe.html#a3f7be7ce745104479b872684e5cd467c',1,'dftfe']]], + ['pztrtri_5f_89',['pztrtri_',['../namespacedftfe.html#aea480fc447349ffb0996fb46220cabd8',1,'dftfe']]] +]; diff --git a/search/mag.svg b/search/mag.svg new file mode 100644 index 000000000..ffb6cf0d0 --- /dev/null +++ b/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/search/mag_d.svg b/search/mag_d.svg new file mode 100644 index 000000000..4122773f9 --- /dev/null +++ b/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/search/mag_sel.svg b/search/mag_sel.svg new file mode 100644 index 000000000..553dba877 --- /dev/null +++ b/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/search/mag_seld.svg b/search/mag_seld.svg new file mode 100644 index 000000000..c906f84c8 --- /dev/null +++ b/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/search/namespaces_0.js b/search/namespaces_0.js new file mode 100644 index 000000000..04b8e2a93 --- /dev/null +++ b/search/namespaces_0.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['dftfe_0',['dftfe',['../namespacedftfe.html',1,'']]], + ['dftfe_3a_3aatomiccenterednonlocaloperatorkernelsdevice_1',['AtomicCenteredNonLocalOperatorKernelsDevice',['../namespacedftfe_1_1_atomic_centered_non_local_operator_kernels_device.html',1,'dftfe']]], + ['dftfe_3a_3abasis_2',['basis',['../namespacedftfe_1_1basis.html',1,'dftfe']]], + ['dftfe_3a_3abasis_3a_3afebasisoperationskernelsinternal_3',['FEBasisOperationsKernelsInternal',['../namespacedftfe_1_1basis_1_1_f_e_basis_operations_kernels_internal.html',1,'dftfe::basis']]], + ['dftfe_3a_3adatatypes_4',['dataTypes',['../namespacedftfe_1_1data_types.html',1,'dftfe']]], + ['dftfe_3a_3adftutils_5',['dftUtils',['../namespacedftfe_1_1dft_utils.html',1,'dftfe']]], + ['dftfe_3a_3aeshelbytensor_6',['eshelbyTensor',['../namespacedftfe_1_1eshelby_tensor.html',1,'dftfe']]], + ['dftfe_3a_3aeshelbytensorsp_7',['eshelbyTensorSP',['../namespacedftfe_1_1eshelby_tensor_s_p.html',1,'dftfe']]], + ['dftfe_3a_3aforce_8',['force',['../namespacedftfe_1_1force.html',1,'dftfe']]], + ['dftfe_3a_3alapacksupport_9',['LAPACKSupport',['../namespacedftfe_1_1_l_a_p_a_c_k_support.html',1,'dftfe']]], + ['dftfe_3a_3alinearalgebra_10',['linearAlgebra',['../namespacedftfe_1_1linear_algebra.html',1,'dftfe']]], + ['dftfe_3a_3alinearalgebraoperations_11',['linearAlgebraOperations',['../namespacedftfe_1_1linear_algebra_operations.html',1,'dftfe']]], + ['dftfe_3a_3alinearalgebraoperations_3a_3ainternal_12',['internal',['../namespacedftfe_1_1linear_algebra_operations_1_1internal.html',1,'dftfe::linearAlgebraOperations']]], + ['dftfe_3a_3ameshgenutils_13',['meshGenUtils',['../namespacedftfe_1_1mesh_gen_utils.html',1,'dftfe']]], + ['dftfe_3a_3apseudoutils_14',['pseudoUtils',['../namespacedftfe_1_1pseudo_utils.html',1,'dftfe']]], + ['dftfe_3a_3asphericalharmonicutils_15',['sphericalHarmonicUtils',['../namespacedftfe_1_1spherical_harmonic_utils.html',1,'dftfe']]], + ['dftfe_3a_3atypes_16',['types',['../namespacedftfe_1_1types.html',1,'dftfe']]], + ['dftfe_3a_3autils_17',['utils',['../namespacedftfe_1_1utils.html',1,'dftfe']]], + ['dftfe_3a_3autils_3a_3ampi_18',['mpi',['../namespacedftfe_1_1utils_1_1mpi.html',1,'dftfe::utils']]], + ['dftfe_3a_3avectortools_19',['vectorTools',['../namespacedftfe_1_1vector_tools.html',1,'dftfe']]] +]; diff --git a/search/pages_0.js b/search/pages_0.js new file mode 100644 index 000000000..01a296cfc --- /dev/null +++ b/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_3a_20density_20functional_20theory_20with_20finite_20elements_0',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]] +]; diff --git a/search/pages_1.js b/search/pages_1.js new file mode 100644 index 000000000..78b7d467f --- /dev/null +++ b/search/pages_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['density_20functional_20theory_20with_20finite_20elements_0',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['dft_20fe_20_3a_20density_20functional_20theory_20with_20finite_20elements_1',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]] +]; diff --git a/search/pages_2.js b/search/pages_2.js new file mode 100644 index 000000000..3333b6685 --- /dev/null +++ b/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['elements_0',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]] +]; diff --git a/search/pages_3.js b/search/pages_3.js new file mode 100644 index 000000000..781f9548e --- /dev/null +++ b/search/pages_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['fe_20_3a_20density_20functional_20theory_20with_20finite_20elements_0',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['finite_20elements_1',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]], + ['functional_20theory_20with_20finite_20elements_2',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]] +]; diff --git a/search/pages_4.js b/search/pages_4.js new file mode 100644 index 000000000..2337484ab --- /dev/null +++ b/search/pages_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['theory_20with_20finite_20elements_0',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]] +]; diff --git a/search/pages_5.js b/search/pages_5.js new file mode 100644 index 000000000..8458b9f2c --- /dev/null +++ b/search/pages_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['with_20finite_20elements_0',['DFT-FE : Density Functional Theory With Finite-Elements',['../index.html',1,'']]] +]; diff --git a/search/related_0.js b/search/related_0.js new file mode 100644 index 000000000..d50105f35 --- /dev/null +++ b/search/related_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['dftclass_3c_20feorder_2c_20feorderelectro_2c_20memoryspace_20_3e_0',['dftClass< FEOrder, FEOrderElectro, memorySpace >',['../classdftfe_1_1force_class.html#a1d36a89b82e9854f2cc09882b337012b',1,'dftfe::forceClass::dftClass< FEOrder, FEOrderElectro, memorySpace >'],['../classdftfe_1_1symmetry_class.html#a1d36a89b82e9854f2cc09882b337012b',1,'dftfe::symmetryClass::dftClass< FEOrder, FEOrderElectro, memorySpace >']]], + ['dftfe_3a_3ascalapackmatrix_1',['ScaLAPACKMatrix',['../classdftfe_1_1_process_grid.html#a1091e8c7fbacd2a5c44a470826d17f83',1,'dftfe::ProcessGrid']]] +]; diff --git a/search/related_1.js b/search/related_1.js new file mode 100644 index 000000000..3c4a5ad93 --- /dev/null +++ b/search/related_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['forceclass_3c_20feorder_2c_20feorderelectro_2c_20memoryspace_20_3e_0',['forceClass< FEOrder, FEOrderElectro, memorySpace >',['../classdftfe_1_1dft_class.html#ab89cd27acacc873f839fdb1bef63a322',1,'dftfe::dftClass']]] +]; diff --git a/search/related_2.js b/search/related_2.js new file mode 100644 index 000000000..2c91ed26a --- /dev/null +++ b/search/related_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['symmetryclass_3c_20feorder_2c_20feorderelectro_2c_20memoryspace_20_3e_0',['symmetryClass< FEOrder, FEOrderElectro, memorySpace >',['../classdftfe_1_1dft_class.html#ab86ed7b4ddca96789d09f5a3d7e82bd8',1,'dftfe::dftClass']]] +]; diff --git a/search/search.css b/search/search.css new file mode 100644 index 000000000..19f76f9d5 --- /dev/null +++ b/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/search/search.js b/search/search.js new file mode 100644 index 000000000..666af01e5 --- /dev/null +++ b/search/search.js @@ -0,0 +1,694 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +const SEARCH_COOKIE_NAME = ''+'search_grp'; + +const searchResults = new SearchResults(); + +/* A class handling everything associated with the search panel. + + Parameters: + name - The name of the global variable that will be + storing this instance. Is needed to be able to set timeouts. + resultPath - path to use for external files +*/ +function SearchBox(name, resultsPath, extension) { + if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } + if (!extension || extension == "") { extension = ".html"; } + + function getXPos(item) { + let x = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + x += item.offsetLeft; + item = item.offsetParent; + } + } + return x; + } + + function getYPos(item) { + let y = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + y += item.offsetTop; + item = item.offsetParent; + } + } + return y; + } + + // ---------- Instance variables + this.name = name; + this.resultsPath = resultsPath; + this.keyTimeout = 0; + this.keyTimeoutLength = 500; + this.closeSelectionTimeout = 300; + this.lastSearchValue = ""; + this.lastResultsPage = ""; + this.hideTimeout = 0; + this.searchIndex = 0; + this.searchActive = false; + this.extension = extension; + + // ----------- DOM Elements + + this.DOMSearchField = () => document.getElementById("MSearchField"); + this.DOMSearchSelect = () => document.getElementById("MSearchSelect"); + this.DOMSearchSelectWindow = () => document.getElementById("MSearchSelectWindow"); + this.DOMPopupSearchResults = () => document.getElementById("MSearchResults"); + this.DOMPopupSearchResultsWindow = () => document.getElementById("MSearchResultsWindow"); + this.DOMSearchClose = () => document.getElementById("MSearchClose"); + this.DOMSearchBox = () => document.getElementById("MSearchBox"); + + // ------------ Event Handlers + + // Called when focus is added or removed from the search field. + this.OnSearchFieldFocus = function(isActive) { + this.Activate(isActive); + } + + this.OnSearchSelectShow = function() { + const searchSelectWindow = this.DOMSearchSelectWindow(); + const searchField = this.DOMSearchSelect(); + + const left = getXPos(searchField); + const top = getYPos(searchField) + searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + + // stop selection hide timer + if (this.hideTimeout) { + clearTimeout(this.hideTimeout); + this.hideTimeout=0; + } + return false; // to avoid "image drag" default event + } + + this.OnSearchSelectHide = function() { + this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this), + this.closeSelectionTimeout); + } + + // Called when the content of the search field is changed. + this.OnSearchFieldChange = function(evt) { + if (this.keyTimeout) { // kill running timer + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + } + + const e = evt ? evt : window.event; // for IE + if (e.keyCode==40 || e.keyCode==13) { + if (e.shiftKey==1) { + this.OnSearchSelectShow(); + const win=this.DOMSearchSelectWindow(); + for (let i=0;i do a search + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) { // Up + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } else if (e.keyCode==13 || e.keyCode==27) { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() { + this.keyTimeout = 0; + + // strip leading whitespace + const searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + const code = searchValue.toLowerCase().charCodeAt(0); + let idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) { // surrogate pair + idxChar = searchValue.substr(0, 2); + } + + let jsFile; + let idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) { + const hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + const loadJS = function(url, impl, loc) { + const scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + const domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + const domSearchBox = this.DOMSearchBox(); + const domPopupSearchResults = this.DOMPopupSearchResults(); + const domSearchClose = this.DOMSearchClose(); + const resultsPath = this.resultsPath; + + const handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') { + domSearchClose.style.display = 'inline-block'; + let left = getXPos(domSearchBox) + 150; + let top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + const maxWidth = document.body.clientWidth; + const maxHeight = document.body.clientHeight; + let width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + let height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } else if (!isActive) { // directly remove the panel + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults() { + + function convertToId(search) { + let result = ''; + for (let i=0;i. + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) { + const parentElement = document.getElementById(id); + let element = parentElement.firstChild; + + while (element && element!=parentElement) { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) { + element = element.firstChild; + } else if (element.nextSibling) { + element = element.nextSibling; + } else { + do { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) { + const element = this.FindChildElement(id); + if (element) { + if (element.style.display == 'block') { + element.style.display = 'none'; + } else { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) { + if (!search) { // get search word from URL + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + const resultRows = document.getElementsByTagName("div"); + let matches = 0; + + let i = 0; + while (i < resultRows.length) { + const row = resultRows.item(i); + if (row.className == "SRResult") { + let rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) { + row.style.display = 'block'; + matches++; + } else { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) { // no results + document.getElementById("NoMatches").style.display='block'; + } else { // at least one result + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) { + if (e.type == "keydown") { + this.repeatOn = false; + this.lastKey = e.keyCode; + } else if (e.type == "keypress") { + if (!this.repeatOn) { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } else if (e.type == "keyup") { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + const newIndex = itemIndex-1; + let focusItem = this.NavPrev(newIndex); + if (focusItem) { + let child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') { // children visible + let n=0; + let tmpElem; + for (;;) { // search for last child + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) { + focusItem = tmpElem; + } else { // found it! + break; + } + n++; + } + } + } + if (focusItem) { + focusItem.focus(); + } else { // return focus to search field + document.getElementById("MSearchField").focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = itemIndex+1; + let focusItem; + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') { // children visible + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } else if (this.lastKey==39) { // Right + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } else if (this.lastKey==37) { // Left + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + if (childIndex>0) { + const newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } else { // already at first child, jump to parent + document.getElementById('Item'+itemIndex).focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = childIndex+1; + let elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) { // last child, jump to parent next parent + elem = this.NavNext(itemIndex+1); + } + if (elem) { + elem.focus(); + } + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } +} + +function createResults(resultsPath) { + + function setKeyActions(elem,action) { + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); + } + + function setClassAttr(elem,attr) { + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); + } + + const results = document.getElementById("SRResults"); + results.innerHTML = ''; + searchData.forEach((elem,index) => { + const id = elem[0]; + const srResult = document.createElement('div'); + srResult.setAttribute('id','SR_'+id); + setClassAttr(srResult,'SRResult'); + const srEntry = document.createElement('div'); + setClassAttr(srEntry,'SREntry'); + const srLink = document.createElement('a'); + srLink.setAttribute('id','Item'+index); + setKeyActions(srLink,'return searchResults.Nav(event,'+index+')'); + setClassAttr(srLink,'SRSymbol'); + srLink.innerHTML = elem[1][0]; + srEntry.appendChild(srLink); + if (elem[1].length==2) { // single result + srLink.setAttribute('href',resultsPath+elem[1][1][0]); + srLink.setAttribute('onclick','searchBox.CloseResultsWindow()'); + if (elem[1][1][1]) { + srLink.setAttribute('target','_parent'); + } else { + srLink.setAttribute('target','_blank'); + } + const srScope = document.createElement('span'); + setClassAttr(srScope,'SRScope'); + srScope.innerHTML = elem[1][1][2]; + srEntry.appendChild(srScope); + } else { // multiple results + srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); + const srChildren = document.createElement('div'); + setClassAttr(srChildren,'SRChildren'); + for (let c=0; c + + + + + + +DFT-FE: workspace/include/solveVselfInBinsDevice.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    solveVselfInBinsDevice.h File Reference
    +
    + + + + + diff --git a/solve_vself_in_bins_device_8h_source.html b/solve_vself_in_bins_device_8h_source.html new file mode 100644 index 000000000..5f25dc46c --- /dev/null +++ b/solve_vself_in_bins_device_8h_source.html @@ -0,0 +1,184 @@ + + + + + + + +DFT-FE: workspace/include/solveVselfInBinsDevice.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    solveVselfInBinsDevice.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
    +
    4// authors.
    +
    5//
    +
    6// This file is part of the DFT-FE code.
    +
    7//
    +
    8// The DFT-FE code is free software; you can use it, redistribute
    +
    9// it, and/or modify it under the terms of the GNU Lesser General
    +
    10// Public License as published by the Free Software Foundation; either
    +
    11// version 2.1 of the License, or (at your option) any later version.
    +
    12// The full text of the license can be found in the file LICENSE at
    +
    13// the top level of the DFT-FE distribution.
    +
    14//
    +
    15// ---------------------------------------------------------------------
    +
    16//
    +
    17
    +
    18#if defined(DFTFE_WITH_DEVICE)
    +
    19# ifndef solveVselfInBinsDevice_H_
    +
    20# define solveVselfInBinsDevice_H_
    +
    21
    + +
    23# include <headers.h>
    +
    24# include <BLASWrapper.h>
    +
    25namespace dftfe
    +
    26{
    +
    27 namespace poissonDevice
    +
    28 {
    +
    29 void
    +
    30 solveVselfInBins(
    +
    31 const dftfe::utils::MemoryStorage<double,
    + +
    33 &cellGradNIGradNJIntergralDevice,
    +
    34 const std::shared_ptr<
    + +
    36 & BLASWrapperPtr,
    +
    37 const dealii::MatrixFree<3, double> & matrixFreeData,
    +
    38 const unsigned int mfDofHandlerIndex,
    +
    39 const dealii::AffineConstraints<double> &hangingPeriodicConstraintMatrix,
    +
    40 const double * rhsFlattenedH,
    +
    41 const double * diagonalAH,
    +
    42 const double * inhomoIdsColoredVecFlattenedH,
    +
    43 const unsigned int localSize,
    +
    44 const unsigned int ghostSize,
    +
    45 const unsigned int numberBins,
    +
    46 const MPI_Comm & mpiCommParent,
    +
    47 const MPI_Comm & mpiCommDomain,
    +
    48 double * xH,
    +
    49 const int verbosity,
    +
    50 const unsigned int maxLinearSolverIterations,
    +
    51 const double absLinearSolverTolerance,
    +
    52 const bool isElectroFEOrderDifferentFromFEOrder = false);
    +
    53
    +
    54 void
    +
    55 cgSolver(
    + +
    57 dftUtils::constraintMatrixInfoDevice &constraintsMatrixDataInfoDevice,
    +
    58 const double * bD,
    +
    59 const double * diagonalAD,
    +
    60 const dftfe::utils::MemoryStorage<double,
    + +
    62 &poissonCellStiffnessMatricesD,
    +
    63 const dftfe::utils::MemoryStorage<double,
    + +
    65 &inhomoIdsColoredVecFlattenedD,
    +
    66 const dftfe::utils::MemoryStorage<dealii::types::global_dof_index,
    + +
    68 & cellLocalProcIndexIdMapD,
    +
    69 const unsigned int localSize,
    +
    70 const unsigned int ghostSize,
    +
    71 const unsigned int numberBins,
    +
    72 const unsigned int totalLocallyOwnedCells,
    +
    73 const unsigned int numberNodesPerElement,
    +
    74 const int debugLevel,
    +
    75 const unsigned int maxIter,
    +
    76 const double absTol,
    +
    77 const MPI_Comm & mpiCommParent,
    +
    78 const MPI_Comm & mpiCommDomain,
    +
    79 distributedDeviceVec<double> &x);
    +
    80 } // namespace poissonDevice
    +
    81} // namespace dftfe
    +
    82# endif
    +
    83#endif
    + +
    Definition BLASWrapper.h:34
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    +
    Definition MemoryStorage.h:33
    + + + +
    Definition pseudoPotentialToDftfeConverter.cc:34
    +
    + + + + diff --git a/spherical_harmonic_utils_8h.html b/spherical_harmonic_utils_8h.html new file mode 100644 index 000000000..b82edf065 --- /dev/null +++ b/spherical_harmonic_utils_8h.html @@ -0,0 +1,110 @@ + + + + + + + +DFT-FE: workspace/include/sphericalHarmonicUtils.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    sphericalHarmonicUtils.h File Reference
    +
    + + + + + diff --git a/spherical_harmonic_utils_8h_source.html b/spherical_harmonic_utils_8h_source.html new file mode 100644 index 000000000..01a1d912b --- /dev/null +++ b/spherical_harmonic_utils_8h_source.html @@ -0,0 +1,196 @@ + + + + + + + +DFT-FE: workspace/include/sphericalHarmonicUtils.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    sphericalHarmonicUtils.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
    +
    4// authors.
    +
    5//
    +
    6// This file is part of the DFT-FE code.
    +
    7//
    +
    8// The DFT-FE code is free software; you can use it, redistribute
    +
    9// it, and/or modify it under the terms of the GNU Lesser General
    +
    10// Public License as published by the Free Software Foundation; either
    +
    11// version 2.1 of the License, or (at your option) any later version.
    +
    12// The full text of the license can be found in the file LICENSE at
    +
    13// the top level of the DFT-FE distribution.
    +
    14//
    +
    15// ---------------------------------------------------------------------
    +
    16//
    +
    17// @author Vishal Subramanian, Kartick Ramakrishnan, Sambit Das
    +
    18//
    +
    19#ifndef DFTFE_SPHERICALHARMONICUTILS_H
    +
    20#define DFTFE_SPHERICALHARMONICUTILS_H
    +
    21
    +
    22namespace dftfe
    +
    23{
    +
    +
    24 namespace sphericalHarmonicUtils
    +
    25 {
    +
    26 inline void
    +
    + +
    28 double & splineVal,
    +
    29 const alglib::spline1dinterpolant *spline)
    +
    30 {
    +
    31 splineVal = alglib::spline1dcalc(*spline, radialCoordinate);
    +
    32 return;
    +
    33 }
    +
    +
    34
    +
    35 inline void
    +
    + +
    37 const double phi,
    +
    38 const int l,
    +
    39 const int m,
    +
    40 double & sphericalHarmonicVal)
    +
    41 {
    +
    42 if (m < 0)
    + +
    44 std::sqrt(2.0) * boost::math::spherical_harmonic_i(l, -m, theta, phi);
    +
    45
    +
    46 else if (m == 0)
    + +
    48 boost::math::spherical_harmonic_r(l, m, theta, phi);
    +
    49
    +
    50 else if (m > 0)
    + +
    52 std::sqrt(2.0) * boost::math::spherical_harmonic_r(l, m, theta, phi);
    +
    53
    +
    54 return;
    +
    55 }
    +
    +
    56
    +
    57 inline void
    +
    + +
    59 double &r,
    +
    60 double &theta,
    +
    61 double &phi)
    +
    62 {
    +
    63 double tolerance = 1e-12;
    +
    64 r = std::sqrt(x[0] * x[0] + x[1] * x[1] + x[2] * x[2]);
    +
    65
    +
    66 if (std::fabs(r - 0.0) <= tolerance)
    +
    67 {
    +
    68 theta = 0.0;
    +
    69 phi = 0.0;
    +
    70 }
    +
    71 else
    +
    72 {
    +
    73 theta = std::acos(x[2] / r);
    +
    74 //
    +
    75 // check if theta = 0 or PI (i.e, whether the point is on the Z-axis)
    +
    76 // If yes, assign phi = 0.0.
    +
    77 // NOTE: In case theta = 0 or PI, phi is undetermined. The actual
    +
    78 // value of phi doesn't matter in computing the enriched function
    +
    79 // value or its gradient. We assign phi = 0.0 here just as a dummy
    +
    80 // value
    +
    81 //
    +
    82 if (fabs(theta - 0.0) >= tolerance && fabs(theta - M_PI) >= tolerance)
    +
    83 phi = std::atan2(x[1], x[0]);
    +
    84 else
    +
    85 phi = 0.0;
    +
    86 }
    +
    87 }
    +
    +
    88 } // end of namespace sphericalHarmonicUtils
    +
    +
    89} // end of namespace dftfe
    +
    90#endif // DFTFE_SPHERICALHARMONICUTILS_H
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    +
    void convertCartesianToSpherical(double *x, double &r, double &theta, double &phi)
    Definition sphericalHarmonicUtils.h:58
    +
    void getRadialFunctionVal(const double radialCoordinate, double &splineVal, const alglib::spline1dinterpolant *spline)
    Definition sphericalHarmonicUtils.h:27
    +
    void getSphericalHarmonicVal(const double theta, const double phi, const int l, const int m, double &sphericalHarmonicVal)
    Definition sphericalHarmonicUtils.h:36
    +
    Definition pseudoPotentialToDftfeConverter.cc:34
    +
    + + + + diff --git a/splitbar.png b/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/splitbard.png b/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/structdftfe_1_1pseudo_utils_1_1_element-members.html b/structdftfe_1_1pseudo_utils_1_1_element-members.html new file mode 100644 index 000000000..707d803cd --- /dev/null +++ b/structdftfe_1_1pseudo_utils_1_1_element-members.html @@ -0,0 +1,96 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dftfe::pseudoUtils::Element Member List
    +
    +
    + +

    This is the complete list of members for dftfe::pseudoUtils::Element, including all inherited members.

    + + + + + + +
    configdftfe::pseudoUtils::Element
    Element(int zz, std::string s, std::string c, double m)dftfe::pseudoUtils::Elementinline
    massdftfe::pseudoUtils::Element
    symboldftfe::pseudoUtils::Element
    zdftfe::pseudoUtils::Element
    + + + + diff --git a/structdftfe_1_1pseudo_utils_1_1_element.html b/structdftfe_1_1pseudo_utils_1_1_element.html new file mode 100644 index 000000000..87bd86419 --- /dev/null +++ b/structdftfe_1_1pseudo_utils_1_1_element.html @@ -0,0 +1,211 @@ + + + + + + + +DFT-FE: dftfe::pseudoUtils::Element Struct Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::pseudoUtils::Element Struct Reference
    +
    +
    + +

    #include <PeriodicTable.h>

    + + + + +

    +Public Member Functions

     Element (int zz, std::string s, std::string c, double m)
     
    + + + + + + + + + +

    +Public Attributes

    int z
     
    std::string symbol
     
    std::string config
     
    double mass
     
    +

    Constructor & Destructor Documentation

    + +

    ◆ Element()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    dftfe::pseudoUtils::Element::Element (int zz,
    std::string s,
    std::string c,
    double m )
    +
    +inline
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ config

    + +
    +
    + + + + +
    std::string dftfe::pseudoUtils::Element::config
    +
    + +
    +
    + +

    ◆ mass

    + +
    +
    + + + + +
    double dftfe::pseudoUtils::Element::mass
    +
    + +
    +
    + +

    ◆ symbol

    + +
    +
    + + + + +
    std::string dftfe::pseudoUtils::Element::symbol
    +
    + +
    +
    + +

    ◆ z

    + +
    +
    + + + + +
    int dftfe::pseudoUtils::Element::z
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/structdftfe_1_1utils_1_1mpi_1_1single_prec_type-members.html b/structdftfe_1_1utils_1_1mpi_1_1single_prec_type-members.html new file mode 100644 index 000000000..42988d40e --- /dev/null +++ b/structdftfe_1_1utils_1_1mpi_1_1single_prec_type-members.html @@ -0,0 +1,92 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dftfe::utils::mpi::singlePrecType< T > Member List
    +
    +
    + +

    This is the complete list of members for dftfe::utils::mpi::singlePrecType< T >, including all inherited members.

    + + +
    type typedefdftfe::utils::mpi::singlePrecType< T >
    + + + + diff --git a/structdftfe_1_1utils_1_1mpi_1_1single_prec_type.html b/structdftfe_1_1utils_1_1mpi_1_1single_prec_type.html new file mode 100644 index 000000000..0863445e6 --- /dev/null +++ b/structdftfe_1_1utils_1_1mpi_1_1single_prec_type.html @@ -0,0 +1,119 @@ + + + + + + + +DFT-FE: dftfe::utils::mpi::singlePrecType< T > Struct Template Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::utils::mpi::singlePrecType< T > Struct Template Reference
    +
    +
    + +

    #include <MPICommunicatorP2P.h>

    + + + + +

    +Public Types

    typedeftype
     
    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T >
    + + + + +
    typedef T dftfe::utils::mpi::singlePrecType< T >::type
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/structdftfe_1_1utils_1_1mpi_1_1single_prec_type_3_01double_01_4-members.html b/structdftfe_1_1utils_1_1mpi_1_1single_prec_type_3_01double_01_4-members.html new file mode 100644 index 000000000..22ea5f797 --- /dev/null +++ b/structdftfe_1_1utils_1_1mpi_1_1single_prec_type_3_01double_01_4-members.html @@ -0,0 +1,92 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dftfe::utils::mpi::singlePrecType< double > Member List
    +
    +
    + +

    This is the complete list of members for dftfe::utils::mpi::singlePrecType< double >, including all inherited members.

    + + +
    type typedefdftfe::utils::mpi::singlePrecType< double >
    + + + + diff --git a/structdftfe_1_1utils_1_1mpi_1_1single_prec_type_3_01double_01_4.html b/structdftfe_1_1utils_1_1mpi_1_1single_prec_type_3_01double_01_4.html new file mode 100644 index 000000000..e83afbbc6 --- /dev/null +++ b/structdftfe_1_1utils_1_1mpi_1_1single_prec_type_3_01double_01_4.html @@ -0,0 +1,117 @@ + + + + + + + +DFT-FE: dftfe::utils::mpi::singlePrecType< double > Struct Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::utils::mpi::singlePrecType< double > Struct Reference
    +
    +
    + +

    #include <MPICommunicatorP2P.h>

    + + + + +

    +Public Types

    typedef float type
     
    +

    Member Typedef Documentation

    + +

    ◆ type

    + + +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/structdftfe_1_1utils_1_1mpi_1_1single_prec_type_3_01std_1_1complex_3_01double_01_4_01_4-members.html b/structdftfe_1_1utils_1_1mpi_1_1single_prec_type_3_01std_1_1complex_3_01double_01_4_01_4-members.html new file mode 100644 index 000000000..875b93c72 --- /dev/null +++ b/structdftfe_1_1utils_1_1mpi_1_1single_prec_type_3_01std_1_1complex_3_01double_01_4_01_4-members.html @@ -0,0 +1,92 @@ + + + + + + + +DFT-FE: Member List + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    dftfe::utils::mpi::singlePrecType< std::complex< double > > Member List
    +
    +
    + +

    This is the complete list of members for dftfe::utils::mpi::singlePrecType< std::complex< double > >, including all inherited members.

    + + +
    type typedefdftfe::utils::mpi::singlePrecType< std::complex< double > >
    + + + + diff --git a/structdftfe_1_1utils_1_1mpi_1_1single_prec_type_3_01std_1_1complex_3_01double_01_4_01_4.html b/structdftfe_1_1utils_1_1mpi_1_1single_prec_type_3_01std_1_1complex_3_01double_01_4_01_4.html new file mode 100644 index 000000000..0b7c85f0f --- /dev/null +++ b/structdftfe_1_1utils_1_1mpi_1_1single_prec_type_3_01std_1_1complex_3_01double_01_4_01_4.html @@ -0,0 +1,117 @@ + + + + + + + +DFT-FE: dftfe::utils::mpi::singlePrecType< std::complex< double > > Struct Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    dftfe::utils::mpi::singlePrecType< std::complex< double > > Struct Reference
    +
    +
    + +

    #include <MPICommunicatorP2P.h>

    + + + + +

    +Public Types

    typedef std::complex< floattype
     
    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    + + + + +
    typedef std::complex<float> dftfe::utils::mpi::singlePrecType< std::complex< double > >::type
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/symmetry_8h.html b/symmetry_8h.html new file mode 100644 index 000000000..a4a1eaaa3 --- /dev/null +++ b/symmetry_8h.html @@ -0,0 +1,114 @@ + + + + + + + +DFT-FE: workspace/include/symmetry.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    symmetry.h File Reference
    +
    +
    +
    #include <complex>
    +#include <deque>
    +#include <iomanip>
    +#include <iostream>
    +#include <numeric>
    +#include <sstream>
    +#include "constants.h"
    +#include "dft.h"
    +#include "headers.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  dftfe::symmetryClass< FEOrder, FEOrderElectro, memorySpace >
     density symmetrization based on irreducible Brillouin zone calculation, only relevant for calculations using point group symmetries More...
     
    + + + +

    +Namespaces

    namespace  dftfe
     
    +
    + + + + diff --git a/symmetry_8h_source.html b/symmetry_8h_source.html new file mode 100644 index 000000000..466be2d3e --- /dev/null +++ b/symmetry_8h_source.html @@ -0,0 +1,308 @@ + + + + + + + +DFT-FE: workspace/include/symmetry.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    symmetry.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
    +
    4// authors.
    +
    5//
    +
    6// This file is part of the DFT-FE code.
    +
    7//
    +
    8// The DFT-FE code is free software; you can use it, redistribute
    +
    9// it, and/or modify it under the terms of the GNU Lesser General
    +
    10// Public License as published by the Free Software Foundation; either
    +
    11// version 2.1 of the License, or (at your option) any later version.
    +
    12// The full text of the license can be found in the file LICENSE at
    +
    13// the top level of the DFT-FE distribution.
    +
    14//
    +
    15
    +
    16#ifndef symmetry_H_
    +
    17#define symmetry_H_
    +
    18#include <complex>
    +
    19#include <deque>
    +
    20#include <iomanip>
    +
    21#include <iostream>
    +
    22#include <numeric>
    +
    23#include <sstream>
    +
    24
    +
    25#include "constants.h"
    +
    26#include "dft.h"
    +
    27#include "headers.h"
    +
    28
    +
    29namespace dftfe
    +
    30{
    +
    31 /**
    +
    32 * @brief density symmetrization based on irreducible Brillouin zone calculation, only relevant for calculations using point group symmetries
    +
    33 *
    +
    34 * @author Krishnendu Ghosh, krisg@umich.edu
    +
    35 */
    +
    36
    +
    37 template <unsigned int FEOrder,
    +
    38 unsigned int FEOrderElectro,
    + +
    + +
    41 {
    +
    42 // template <unsigned int T1, unsigned int T2>
    + +
    44
    +
    45 public:
    +
    46 /**
    +
    47 * symmetryClass constructor
    +
    48 */
    + + + + +
    53 /**
    +
    54 * Main driver routine to generate and communicate mapping tables
    +
    55 */
    +
    56 void
    + +
    58 /**
    +
    59 * computes total density by summing over all the symmetry transformed
    +
    60 * points
    +
    61 */
    +
    62 void
    + +
    64 /**
    +
    65 * computes density at all the transformed points received from other
    +
    66 * processors and scatters the density back to the corresponding processors
    +
    67 */
    +
    68 void
    + +
    70 /**
    +
    71 * Wipes out mapping tables between relaxation steps
    +
    72 */
    +
    73 void
    + +
    75 /**
    +
    76 * quick snippet to go back and forth between crystal and cartesian
    +
    77 * coordinates
    +
    78 * @param [in] p point that is to be transformed
    +
    79 * @param [in] flag type of coordinate transformation, 1 takes crys. to cart. -1 takes cart. to crys.
    +
    80 */
    +
    81 dealii::Point<3> crys2cart(dealii::Point<3> p, int flag);
    +
    82
    +
    83
    +
    84 private:
    + +
    86 /**
    +
    87 * dealii based FE data structres
    +
    88 */
    +
    89 dealii::FE_Q<3> FE;
    +
    90 /**
    +
    91 * compute-time logger
    +
    92 */
    +
    93 dealii::TimerOutput computing_timer;
    +
    94 /**
    +
    95 * parallel objects
    +
    96 */
    + +
    98 const unsigned int n_mpi_processes;
    +
    99 const unsigned int this_mpi_process;
    +
    100 dealii::ConditionalOStream pcout;
    +
    101 /**
    +
    102 * Space group symmetry related data
    +
    103 */
    +
    104 std::vector<std::vector<std::vector<double>>> symmMat;
    +
    105 unsigned int numSymm;
    +
    106 double translation[500][3];
    +
    107 std::vector<std::vector<int>> symmUnderGroup;
    +
    108 std::vector<int> numSymmUnderGroup;
    +
    109 /**
    +
    110 * Data members required for storing mapping tables locally
    +
    111 */
    +
    112 std::map<dealii::CellId,
    +
    113 std::vector<std::tuple<int, std::vector<double>, int>>>
    + +
    115 std::vector<std::vector<std::vector<std::tuple<int, int, int>>>>
    + +
    117 std::map<int, typename dealii::DoFHandler<3>::active_cell_iterator>
    + +
    119 std::map<dealii::CellId, int> globalCellId;
    +
    120 std::vector<int> ownerProcGlobal;
    +
    121 /**
    +
    122 * Data members required for communicating mapping tables
    +
    123 */
    +
    124 std::vector<std::vector<std::vector<std::vector<int>>>> mappedGroupSend0;
    +
    125 std::vector<std::vector<std::vector<std::vector<int>>>> mappedGroupSend2;
    +
    126 std::vector<std::vector<std::vector<std::vector<std::vector<double>>>>>
    + +
    128 std::vector<std::vector<std::vector<int>>> mappedGroupRecvd0;
    +
    129 std::vector<std::vector<std::vector<int>>> mappedGroupRecvd2;
    +
    130 std::vector<std::vector<std::vector<std::vector<double>>>>
    + +
    132 std::vector<std::vector<std::vector<std::vector<int>>>> send_buf_size;
    +
    133 std::vector<std::vector<std::vector<std::vector<int>>>> recv_buf_size;
    +
    134 std::vector<std::vector<std::vector<std::vector<double>>>> rhoRecvd,
    + +
    136 std::vector<std::vector<std::vector<std::vector<int>>>> groupOffsets;
    +
    137 /**
    +
    138 * Data sizes and offsets required for MPI scattering and gathering of
    +
    139 * mapping tables and symmetrized density They have to be data members since
    +
    140 * the same sizes and offsets are used in both communication mapping tables
    +
    141 * and symmetrized density
    +
    142 */
    +
    143 unsigned int totPoints;
    + + + +
    147 std::vector<int> recvdData0, recvdData2, recvdData3;
    +
    148 std::vector<std::vector<double>> recvdData1;
    + +
    150 //
    +
    151 };
    +
    +
    152} // namespace dftfe
    +
    153#endif
    +
    This class is the primary interface location of all other parts of the DFT-FE code for all steps invo...
    Definition dft.h:109
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    +
    density symmetrization based on irreducible Brillouin zone calculation, only relevant for calculation...
    Definition symmetry.h:41
    +
    const MPI_Comm interpoolcomm
    Definition symmetry.h:97
    +
    double translation[500][3]
    Definition symmetry.h:106
    +
    dftClass< FEOrder, FEOrderElectro, memorySpace > * dftPtr
    Definition symmetry.h:85
    +
    std::vector< int > recvdData2
    Definition symmetry.h:147
    +
    const unsigned int n_mpi_processes
    Definition symmetry.h:98
    +
    dealii::Point< 3 > crys2cart(dealii::Point< 3 > p, int flag)
    +
    std::vector< std::vector< std::vector< std::vector< std::vector< double > > > > > mappedGroupSend1
    Definition symmetry.h:127
    +
    std::vector< int > send_scatterGrad_size
    Definition symmetry.h:145
    +
    std::vector< std::vector< double > > recvdData1
    Definition symmetry.h:148
    +
    std::vector< int > recvdData3
    Definition symmetry.h:147
    +
    std::vector< std::vector< std::vector< double > > > symmMat
    Definition symmetry.h:104
    +
    std::vector< std::vector< std::vector< std::vector< double > > > > mappedGroupRecvd1
    Definition symmetry.h:131
    +
    std::vector< int > recv_size
    Definition symmetry.h:144
    +
    std::vector< int > mpi_offsets1
    Definition symmetry.h:146
    +
    std::vector< int > numSymmUnderGroup
    Definition symmetry.h:108
    +
    std::vector< std::vector< int > > symmUnderGroup
    Definition symmetry.h:107
    +
    std::vector< std::vector< std::vector< std::vector< int > > > > mappedGroupSend0
    Definition symmetry.h:124
    +
    std::vector< int > mpi_scatter_offset
    Definition symmetry.h:144
    + +
    std::vector< std::vector< std::vector< std::vector< int > > > > recv_buf_size
    Definition symmetry.h:133
    +
    std::map< int, typename dealii::DoFHandler< 3 >::active_cell_iterator > dealIICellId
    Definition symmetry.h:118
    +
    symmetryClass(dftClass< FEOrder, FEOrderElectro, memorySpace > *_dftPtr, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &_interpoolcomm)
    +
    dealii::ConditionalOStream pcout
    Definition symmetry.h:100
    +
    std::map< dealii::CellId, std::vector< std::tuple< int, std::vector< double >, int > > > cellMapTable
    Definition symmetry.h:114
    +
    dealii::TimerOutput computing_timer
    Definition symmetry.h:93
    +
    std::vector< int > mpiGrad_offsets1
    Definition symmetry.h:146
    +
    std::vector< std::vector< std::vector< std::tuple< int, int, int > > > > mappedGroup
    Definition symmetry.h:116
    +
    std::vector< std::vector< std::vector< std::vector< int > > > > mappedGroupSend2
    Definition symmetry.h:125
    +
    std::vector< int > recvGrad_size1
    Definition symmetry.h:149
    +
    std::vector< std::vector< std::vector< std::vector< int > > > > send_buf_size
    Definition symmetry.h:132
    +
    dealii::FE_Q< 3 > FE
    Definition symmetry.h:89
    + +
    std::vector< int > recv_size0
    Definition symmetry.h:149
    +
    void computeAndSymmetrize_rhoOut()
    +
    const MPI_Comm d_mpiCommParent
    Definition symmetry.h:97
    +
    std::vector< int > send_scatter_size
    Definition symmetry.h:144
    +
    const MPI_Comm mpi_communicator
    Definition symmetry.h:97
    +
    std::vector< int > ownerProcGlobal
    Definition symmetry.h:120
    +
    std::vector< std::vector< std::vector< int > > > mappedGroupRecvd2
    Definition symmetry.h:129
    +
    std::vector< int > mpi_offsets0
    Definition symmetry.h:146
    + +
    unsigned int totPoints
    Definition symmetry.h:143
    +
    std::vector< int > recvdData0
    Definition symmetry.h:147
    +
    std::vector< std::vector< std::vector< int > > > mappedGroupRecvd0
    Definition symmetry.h:128
    +
    unsigned int numSymm
    Definition symmetry.h:105
    +
    std::vector< std::vector< std::vector< std::vector< double > > > > gradRhoRecvd
    Definition symmetry.h:135
    +
    std::map< dealii::CellId, int > globalCellId
    Definition symmetry.h:119
    +
    std::vector< std::vector< std::vector< std::vector< double > > > > rhoRecvd
    Definition symmetry.h:134
    +
    std::vector< std::vector< std::vector< std::vector< int > > > > groupOffsets
    Definition symmetry.h:136
    +
    std::vector< int > mpi_scatterGrad_offset
    Definition symmetry.h:145
    +
    const unsigned int this_mpi_process
    Definition symmetry.h:99
    +
    std::vector< int > recv_size1
    Definition symmetry.h:149
    + + + +
    MemorySpace
    Definition MemorySpaceType.h:33
    +
    Definition pseudoPotentialToDftfeConverter.cc:34
    +
    + + + + diff --git a/sync_off.png b/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/sync_on.png b/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/tab_a.png b/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/tab_ad.png b/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/tab_s.png b/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/tab_sd.png b/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/tabs.css b/tabs.css new file mode 100644 index 000000000..fe4854aa5 --- /dev/null +++ b/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file diff --git a/triangulation_manager_8h.html b/triangulation_manager_8h.html new file mode 100644 index 000000000..ed7157620 --- /dev/null +++ b/triangulation_manager_8h.html @@ -0,0 +1,107 @@ + + + + + + + +DFT-FE: workspace/include/triangulationManager.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    triangulationManager.h File Reference
    +
    +
    +
    #include "headers.h"
    +#include "dftParameters.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  dftfe::triangulationManager
     This class generates and stores adaptive finite element meshes for the real-space dft problem. More...
     
    + + + +

    +Namespaces

    namespace  dftfe
     
    +
    + + + + diff --git a/triangulation_manager_8h_source.html b/triangulation_manager_8h_source.html new file mode 100644 index 000000000..10b134faf --- /dev/null +++ b/triangulation_manager_8h_source.html @@ -0,0 +1,475 @@ + + + + + + + +DFT-FE: workspace/include/triangulationManager.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    triangulationManager.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
    +
    4// authors.
    +
    5//
    +
    6// This file is part of the DFT-FE code.
    +
    7//
    +
    8// The DFT-FE code is free software; you can use it, redistribute
    +
    9// it, and/or modify it under the terms of the GNU Lesser General
    +
    10// Public License as published by the Free Software Foundation; either
    +
    11// version 2.1 of the License, or (at your option) any later version.
    +
    12// The full text of the license can be found in the file LICENSE at
    +
    13// the top level of the DFT-FE distribution.
    +
    14//
    +
    15// ---------------------------------------------------------------------
    +
    16
    +
    17#ifndef triangulationManager_H_
    +
    18#define triangulationManager_H_
    +
    19#include "headers.h"
    +
    20#include "dftParameters.h"
    +
    21
    +
    22
    +
    23namespace dftfe
    +
    24{
    +
    25 /**
    +
    26 * @brief This class generates and stores adaptive finite element meshes for the real-space dft problem.
    +
    27 *
    +
    28 * The class uses an adpative mesh generation strategy to generate finite
    +
    29 * element mesh for given domain based on five input parameters: BASE MESH
    +
    30 * SIZE, ATOM BALL RADIUS, MESH SIZE ATOM BALL, MESH SIZE NEAR ATOM and MAX
    +
    31 * REFINEMENT STEPS (Refer to utils/dftParameters.cc for their corresponding
    +
    32 * internal variable names). Additionaly, this class also applies periodicity
    +
    33 * to mesh. The class stores two types of meshes: moved and unmoved. They are
    +
    34 * essentially the same meshes, except that we move the nodes of the moved
    +
    35 * mesh (in the meshMovement class) such that the atoms lie on the nodes.
    +
    36 * However, once the mesh is moved, dealii has issues using that mesh for
    +
    37 * further refinement, which is why we also carry an unmoved triangulation.
    +
    38 *
    +
    39 * @author Phani Motamarri, Sambit Das, Krishnendu Ghosh
    +
    40 */
    +
    + +
    42 {
    +
    43 public:
    +
    44 /** @brief Constructor.
    +
    45 *
    +
    46 * @param mpi_comm_parent parent mpi communicator
    +
    47 * @param mpi_comm_domain domain decomposition mpi communicator
    +
    48 * @param interpool_comm mpi interpool communicator over k points
    +
    49 * @param interBandGroupComm mpi interpool communicator over band groups
    +
    50 */
    + + +
    53 const MPI_Comm & interpoolcomm,
    + +
    55 const unsigned int FEOrder,
    + +
    57
    +
    58
    +
    59 /**
    +
    60 * triangulationManager destructor
    +
    61 */
    + +
    63
    +
    64 /** @brief generates parallel moved and unmoved meshes, and serial unmoved mesh.
    +
    65 *
    +
    66 * @param atomLocations vector containing cartesian coordinates at atoms with
    +
    67 * respect to origin (center of domain).
    +
    68 * @param imageAtomLocations vector containing cartesian coordinates of image
    +
    69 * atoms with respect to origin.
    +
    70 * @param domainBoundingVectors vector of domain bounding vectors (refer to
    +
    71 * description of input parameters.
    +
    72 * @param generateSerialMesh bool to toggle to generation of serial tria
    +
    73 */
    +
    74 void
    + +
    76 const std::vector<std::vector<double>> &atomLocations,
    +
    77 const std::vector<std::vector<double>> &imageAtomLocations,
    +
    78 const std::vector<int> & imageIds,
    +
    79 const std::vector<double> & nearestAtomDistances,
    +
    80 const std::vector<std::vector<double>> &domainBoundingVectors,
    +
    81 const bool generateSerialTria);
    +
    82
    +
    83
    +
    84
    +
    85 /** @brief generates the coarse meshes for restart.
    +
    86 *
    +
    87 * @param atomLocations vector containing cartesian coordinates at atoms with
    +
    88 * respect to origin (center of domain).
    +
    89 * @param imageAtomLocations vector containing cartesian coordinates of image
    +
    90 * atoms with respect to origin.
    +
    91 * @param domainBoundingVectors vector of domain bounding vectors (refer to
    +
    92 * description of input parameters.
    +
    93 * @param generateSerialMesh bool to toggle to generation of serial tria
    +
    94 */
    +
    95 void
    + +
    97 const std::vector<std::vector<double>> &atomLocations,
    +
    98 const std::vector<std::vector<double>> &imageAtomLocations,
    +
    99 const std::vector<int> & imageIds,
    +
    100 const std::vector<double> & nearestAtomDistances,
    +
    101 const std::vector<std::vector<double>> &domainBoundingVectors,
    +
    102 const bool generateSerialTria);
    +
    103
    +
    104
    +
    105 /**
    +
    106 * @brief returns generates A-posteriori refined mesh
    +
    107 *
    +
    108 * @param dofHandler corresponds to starting mesh which has to refined
    +
    109 * @param parallelTriangulation corresponds to starting triangulation
    +
    110 * @param eigenVectorsArrayIn solution vectors used to compute errors in each cell required for refinement
    +
    111 * @param FEOrder finite-element interpolating polynomial
    +
    112 */
    +
    113 void
    + +
    115 const dealii::DoFHandler<3> & dofHandler,
    +
    116 dealii::parallel::distributed::Triangulation<3> &parallelTriangulation,
    + +
    118 const unsigned int FEOrder);
    +
    119
    +
    120
    +
    121 /**
    +
    122 * @brief returns constant reference to serial unmoved triangulation
    +
    123 *
    +
    124 */
    +
    125 dealii::parallel::distributed::Triangulation<3> &
    + +
    127
    +
    128 /**
    +
    129 * @brief returns reference to parallel moved triangulation
    +
    130 *
    +
    131 */
    +
    132 dealii::parallel::distributed::Triangulation<3> &
    + +
    134
    +
    135 /**
    +
    136 * @brief returns constant reference to parallel unmoved triangulation
    +
    137 *
    +
    138 */
    +
    139 dealii::parallel::distributed::Triangulation<3> &
    + +
    141
    +
    142 /**
    +
    143 * @brief resets the vertices of meshB moved to vertices of meshA.
    +
    144 *
    +
    145 */
    + +
    147 dealii::parallel::distributed::Triangulation<3> &parallelTriangulationA,
    +
    148 dealii::parallel::distributed::Triangulation<3> &parallelTriangulationB);
    +
    149
    +
    150 /**
    +
    151 * @brief generates reset meshes to the last mesh generated by auto mesh approach. This
    +
    152 * is used in Gaussian update of meshes during electrostatics
    +
    153 */
    +
    154 void
    + +
    156 const std::vector<std::vector<double>> &domainBoundingVectors,
    +
    157 const bool generateSerialTria);
    +
    158
    +
    159
    +
    160 /**
    +
    161 * @brief serialize the triangulations and the associated solution vectors
    +
    162 *
    +
    163 * @param [input]feOrder finite element polynomial order of the dofHandler on which solution
    +
    164 * vectors are based upon
    +
    165 * @param [input]nComponents number of components of the dofHandler on which solution
    +
    166 * vectors are based upon
    +
    167 * @param [input]solutionVectors vector of parallel distributed solution vectors to be serialized
    +
    168 * @param [input]interpoolComm This communicator is used to ensure serialization
    +
    169 * happens only in k point pool
    +
    170 * @param [input]interBandGroupComm This communicator to ensure serialization happens
    +
    171 * only in band group
    +
    172 */
    +
    173 void
    + +
    175 std::string path,
    +
    176 const unsigned int feOrder,
    +
    177 const unsigned int nComponents,
    +
    178 const std::vector<const distributedCPUVec<double> *> &solutionVectors,
    +
    179 const MPI_Comm & interpoolComm,
    + +
    181
    +
    182 /**
    +
    183 * @brief de-serialize the triangulations and the associated solution vectors
    +
    184 *
    +
    185 * @param [input]feOrder finite element polynomial order of the dofHandler on which solution
    +
    186 * vectors to be de-serialized are based upon
    +
    187 * @param [input]nComponents number of components of the dofHandler on which solution
    +
    188 * vectors to be de-serialized are based upon
    +
    189 * @param [output]solutionVectors vector of parallel distributed de-serialized solution vectors. The
    +
    190 * vector length must match the input vector length used in the call to
    +
    191 * saveTriangulationSolutionVectors
    +
    192 */
    +
    193 void
    + +
    195 std::string path,
    +
    196 const unsigned int feOrder,
    +
    197 const unsigned int nComponents,
    + +
    199
    +
    200 private:
    +
    201 /**
    +
    202 * @brief internal function which generates a parallel and serial mesh using a adaptive refinement strategy.
    +
    203 *
    +
    204 */
    + +
    206 dealii::parallel::distributed::Triangulation<3> &parallelTriangulation,
    +
    207 dealii::parallel::distributed::Triangulation<3> &serialTriangulation,
    +
    208 const bool generateSerialTria = false);
    +
    209
    +
    210
    +
    211 /**
    +
    212 * @brief internal function which generates a coarse mesh which is required for the load function call in
    +
    213 * restarts.
    +
    214 *
    +
    215 */
    + +
    217 dealii::parallel::distributed::Triangulation<3> &parallelTriangulation);
    +
    218
    +
    219 /**
    +
    220 * @brief internal function which sets refinement flags based on a custom created algorithm
    +
    221 *
    +
    222 * @return bool boolean flag is any local cell has refinement flag set
    +
    223 */
    + +
    225 dealii::parallel::distributed::Triangulation<3> &parallelTriangulation,
    +
    226 std::vector<unsigned int> & locallyOwnedCellsRefineFlags,
    +
    227 std::map<dealii::CellId, unsigned int> &cellIdToCellRefineFlagMapLocal,
    +
    228 const bool smoothenCellsOnPeriodicBoundary = false,
    +
    229 const double smootheningFactor = 2.0);
    +
    230
    +
    231 /**
    +
    232 * @brief internal function which sets refinement flags to have consistent refinement across periodic
    +
    233 * boundary
    +
    234 *
    +
    235 * @return bool boolean flag is any local cell has refinement flag set
    +
    236 */
    + +
    238 dealii::parallel::distributed::Triangulation<3> &parallelTriangulation,
    +
    239 std::vector<unsigned int> & locallyOwnedCellsRefineFlags,
    +
    240 std::map<dealii::CellId, unsigned int> &cellIdToCellRefineFlagMapLocal);
    +
    241
    +
    242 /**
    +
    243 * @brief check that triangulation has consistent refinement across periodic boundary including
    +
    244 * for ghost cells
    +
    245 *
    +
    246 */
    + +
    248 dealii::parallel::distributed::Triangulation<3> &parallelTriangulation);
    +
    249
    +
    250
    +
    251 /**
    +
    252 * @brief check that FEOrder=1 dofHandler using the triangulation has parallel consistent
    +
    253 * combined hanging node and periodic constraints
    +
    254 *
    +
    255 */
    + +
    257 dealii::parallel::distributed::Triangulation<3> &parallelTriangulation);
    +
    258
    +
    259
    +
    260 /**
    +
    261 * @brief internal function which refines the serial mesh based on refinement flags from parallel mesh.
    +
    262 * This ensures that we get the same mesh in serial and parallel.
    +
    263 *
    +
    264 */
    +
    265 void
    + +
    267 const std::map<dealii::CellId, unsigned int>
    + +
    269 const MPI_Comm &mpi_comm,
    +
    270 dealii::parallel::distributed::Triangulation<3> &serialTriangulation,
    +
    271 const dealii::parallel::distributed::Triangulation<3>
    + +
    273 std::vector<bool> &serialTriaCurrentRefinement);
    +
    274
    +
    275 /**
    +
    276 * @brief internal function to serialize support triangulations. No solution data is attached to them
    +
    277 */
    +
    278 void
    + +
    280
    +
    281 /**
    +
    282 * @brief internal function to de-serialize support triangulations. No solution data is read from them
    +
    283 */
    +
    284 void
    + +
    286
    +
    287 //
    +
    288 // data members
    +
    289 //
    +
    290 dealii::parallel::distributed::Triangulation<3>
    + +
    292 dealii::parallel::distributed::Triangulation<3>
    + +
    294 dealii::parallel::distributed::Triangulation<3>
    + +
    296
    +
    297 std::vector<std::vector<bool>> d_parallelTriaCurrentRefinement;
    +
    298 std::vector<std::vector<bool>> d_serialTriaCurrentRefinement;
    +
    299
    +
    300
    +
    301 std::vector<std::vector<double>> d_atomPositions;
    +
    302 std::vector<std::vector<double>> d_imageAtomPositions;
    +
    303 std::vector<int> d_imageIds;
    +
    304 std::vector<double> d_nearestAtomDistances;
    +
    305 std::vector<std::vector<double>> d_domainBoundingVectors;
    +
    306 const unsigned int d_max_refinement_steps = 40;
    +
    307
    +
    308 /// FEOrder to be used for checking parallel consistency of periodic+hanging
    +
    309 /// node constraints
    +
    310 const unsigned int d_FEOrder;
    +
    311
    + +
    313
    +
    314 //
    +
    315 // parallel objects
    +
    316 //
    + + + + +
    321 const unsigned int this_mpi_process;
    +
    322 const unsigned int n_mpi_processes;
    +
    323 dealii::ConditionalOStream pcout;
    +
    324
    +
    325 //
    +
    326 // compute-time logger
    +
    327 //
    +
    328 dealii::TimerOutput computing_timer;
    +
    329 };
    +
    +
    330
    +
    331} // namespace dftfe
    +
    332#endif
    +
    Namespace which declares the input parameters and the functions to parse them from the input paramete...
    Definition dftParameters.h:35
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    +
    This class generates and stores adaptive finite element meshes for the real-space dft problem.
    Definition triangulationManager.h:42
    +
    void loadTriangulationsSolutionVectors(std::string path, const unsigned int feOrder, const unsigned int nComponents, std::vector< distributedCPUVec< double > * > &solutionVectors)
    de-serialize the triangulations and the associated solution vectors
    +
    dealii::parallel::distributed::Triangulation< 3 > & getParallelMeshMoved()
    returns reference to parallel moved triangulation
    +
    std::vector< int > d_imageIds
    Definition triangulationManager.h:303
    +
    std::vector< std::vector< bool > > d_parallelTriaCurrentRefinement
    Definition triangulationManager.h:297
    +
    triangulationManager(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &interpoolcomm, const MPI_Comm &interBandGroupComm, const unsigned int FEOrder, const dftParameters &dftParams)
    Constructor.
    +
    const MPI_Comm interpoolcomm
    Definition triangulationManager.h:319
    +
    std::vector< std::vector< double > > d_domainBoundingVectors
    Definition triangulationManager.h:305
    +
    std::vector< std::vector< double > > d_atomPositions
    Definition triangulationManager.h:301
    +
    void generateCoarseMeshesForRestart(const std::vector< std::vector< double > > &atomLocations, const std::vector< std::vector< double > > &imageAtomLocations, const std::vector< int > &imageIds, const std::vector< double > &nearestAtomDistances, const std::vector< std::vector< double > > &domainBoundingVectors, const bool generateSerialTria)
    generates the coarse meshes for restart.
    +
    void saveTriangulationsSolutionVectors(std::string path, const unsigned int feOrder, const unsigned int nComponents, const std::vector< const distributedCPUVec< double > * > &solutionVectors, const MPI_Comm &interpoolComm, const MPI_Comm &interBandGroupComm)
    serialize the triangulations and the associated solution vectors
    +
    const dftParameters & d_dftParams
    Definition triangulationManager.h:312
    +
    const unsigned int d_FEOrder
    Definition triangulationManager.h:310
    +
    void refineSerialMesh(const std::map< dealii::CellId, unsigned int > &cellIdToCellRefineFlagMapLocal, const MPI_Comm &mpi_comm, dealii::parallel::distributed::Triangulation< 3 > &serialTriangulation, const dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation, std::vector< bool > &serialTriaCurrentRefinement)
    internal function which refines the serial mesh based on refinement flags from parallel mesh....
    +
    dealii::parallel::distributed::Triangulation< 3 > & getParallelMeshUnmoved()
    returns constant reference to parallel unmoved triangulation
    +
    void saveSupportTriangulations(std::string path)
    internal function to serialize support triangulations. No solution data is attached to them
    +
    bool checkPeriodicSurfaceRefinementConsistency(dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation)
    check that triangulation has consistent refinement across periodic boundary including for ghost cells
    +
    const unsigned int this_mpi_process
    Definition triangulationManager.h:321
    +
    void generateResetMeshes(const std::vector< std::vector< double > > &domainBoundingVectors, const bool generateSerialTria)
    generates reset meshes to the last mesh generated by auto mesh approach. This is used in Gaussian upd...
    +
    bool checkConstraintsConsistency(dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation)
    check that FEOrder=1 dofHandler using the triangulation has parallel consistent combined hanging node...
    +
    void generateCoarseMesh(dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation)
    internal function which generates a coarse mesh which is required for the load function call in resta...
    +
    bool consistentPeriodicBoundaryRefinement(dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation, std::vector< unsigned int > &locallyOwnedCellsRefineFlags, std::map< dealii::CellId, unsigned int > &cellIdToCellRefineFlagMapLocal)
    internal function which sets refinement flags to have consistent refinement across periodic boundary
    +
    void loadSupportTriangulations(std::string path)
    internal function to de-serialize support triangulations. No solution data is read from them
    +
    void generateAutomaticMeshApriori(const dealii::DoFHandler< 3 > &dofHandler, dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation, const std::vector< distributedCPUVec< double > > &eigenVectorsArrayIn, const unsigned int FEOrder)
    returns generates A-posteriori refined mesh
    +
    dealii::ConditionalOStream pcout
    Definition triangulationManager.h:323
    +
    const MPI_Comm interBandGroupComm
    Definition triangulationManager.h:320
    +
    bool refinementAlgorithmA(dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation, std::vector< unsigned int > &locallyOwnedCellsRefineFlags, std::map< dealii::CellId, unsigned int > &cellIdToCellRefineFlagMapLocal, const bool smoothenCellsOnPeriodicBoundary=false, const double smootheningFactor=2.0)
    internal function which sets refinement flags based on a custom created algorithm
    +
    void resetMesh(dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulationA, dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulationB)
    resets the vertices of meshB moved to vertices of meshA.
    +
    dealii::parallel::distributed::Triangulation< 3 > d_parallelTriangulationUnmoved
    Definition triangulationManager.h:291
    +
    std::vector< std::vector< bool > > d_serialTriaCurrentRefinement
    Definition triangulationManager.h:298
    +
    const unsigned int d_max_refinement_steps
    Definition triangulationManager.h:306
    +
    dealii::TimerOutput computing_timer
    Definition triangulationManager.h:328
    +
    dealii::parallel::distributed::Triangulation< 3 > d_serialTriangulationUnmoved
    Definition triangulationManager.h:295
    +
    const unsigned int n_mpi_processes
    Definition triangulationManager.h:322
    +
    const MPI_Comm mpi_communicator
    Definition triangulationManager.h:318
    +
    const MPI_Comm d_mpiCommParent
    Definition triangulationManager.h:317
    +
    std::vector< std::vector< double > > d_imageAtomPositions
    Definition triangulationManager.h:302
    +
    dealii::parallel::distributed::Triangulation< 3 > & getSerialMeshUnmoved()
    returns constant reference to serial unmoved triangulation
    +
    void generateMesh(dealii::parallel::distributed::Triangulation< 3 > &parallelTriangulation, dealii::parallel::distributed::Triangulation< 3 > &serialTriangulation, const bool generateSerialTria=false)
    internal function which generates a parallel and serial mesh using a adaptive refinement strategy.
    +
    void generateSerialUnmovedAndParallelMovedUnmovedMesh(const std::vector< std::vector< double > > &atomLocations, const std::vector< std::vector< double > > &imageAtomLocations, const std::vector< int > &imageIds, const std::vector< double > &nearestAtomDistances, const std::vector< std::vector< double > > &domainBoundingVectors, const bool generateSerialTria)
    generates parallel moved and unmoved meshes, and serial unmoved mesh.
    + +
    std::vector< double > d_nearestAtomDistances
    Definition triangulationManager.h:304
    +
    dealii::parallel::distributed::Triangulation< 3 > d_parallelTriangulationMoved
    Definition triangulationManager.h:293
    + + +
    Definition pseudoPotentialToDftfeConverter.cc:34
    +
    + + + + diff --git a/vector_utilities_8h.html b/vector_utilities_8h.html new file mode 100644 index 000000000..8ae4d74ef --- /dev/null +++ b/vector_utilities_8h.html @@ -0,0 +1,141 @@ + + + + + + + +DFT-FE: workspace/include/vectorUtilities.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    vectorUtilities.h File Reference
    +
    +
    +
    #include <headers.h>
    +#include <operator.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + +

    +Namespaces

    namespace  dftfe
     
    namespace  dftfe::vectorTools
     Contains generic utils functions related to custom partitioned flattened dealii vector.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    void dftfe::vectorTools::createParallelConstraintMatrixFromSerial (const dealii::Triangulation< 3, 3 > &serTria, const dealii::DoFHandler< 3 > &dofHandlerPar, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const std::vector< std::vector< double > > &domainBoundingVectors, dealii::AffineConstraints< double > &periodicHangingConstraints, dealii::AffineConstraints< double > &onlyHangingConstraints, const int verbosity, const bool periodicX, const bool periodicY, const bool periodicZ)
     Create constraint matrix using serial mesh. Temporary fix for a bug (Issue #7053) in deal.ii until it is resolved.
     
    template<typename T >
    void dftfe::vectorTools::createDealiiVector (const std::shared_ptr< const dealii::Utilities::MPI::Partitioner > &partitioner, const unsigned int blockSize, distributedCPUVec< T > &flattenedArray)
     Creates a custom partitioned flattened dealii vector. stores multiple components asociated with a node sequentially.
     
    void dftfe::vectorTools::computeCellLocalIndexSetMap (const std::shared_ptr< const utils::mpi::MPIPatternP2P< dftfe::utils::MemorySpace::HOST > > &partitioner, const dealii::MatrixFree< 3, double > &matrix_free_data, const unsigned int mfDofHandlerIndex, const unsigned int blockSize, std::vector< std::vector< dealii::types::global_dof_index > > &flattenedArrayMacroCellLocalProcIndexId, std::vector< std::vector< dealii::types::global_dof_index > > &flattenedArrayCellLocalProcIndexId)
     Creates a cell local index set map for flattened array.
     
    void dftfe::vectorTools::computeCellLocalIndexSetMap (const std::shared_ptr< const utils::mpi::MPIPatternP2P< dftfe::utils::MemorySpace::HOST > > &partitioner, const dealii::MatrixFree< 3, double > &matrix_free_data, const unsigned int mfDofHandlerIndex, const unsigned int blockSize, std::vector< dealii::types::global_dof_index > &flattenedArrayMacroCellLocalProcIndexId, std::vector< unsigned int > &normalCellIdToMacroCellIdMap, std::vector< unsigned int > &macroCellIdToNormalCellIdMap, std::vector< dealii::types::global_dof_index > &flattenedArrayCellLocalProcIndexId)
     Creates a cell local index set map for flattened array.
     
    void dftfe::vectorTools::computeCellLocalIndexSetMap (const std::shared_ptr< const utils::mpi::MPIPatternP2P< dftfe::utils::MemorySpace::HOST > > &partitioner, const dealii::MatrixFree< 3, double > &matrix_free_data, const unsigned int mfDofHandlerIndex, const unsigned int blockSize, std::vector< dealii::types::global_dof_index > &flattenedArrayCellLocalProcIndexId)
     Creates a cell local index set map for flattened array.
     
    void dftfe::vectorTools::copyFlattenedSTLVecToSingleCompVec (const double *flattenedArray, const unsigned int totalNumberComponents, const unsigned int localVectorSize, const std::pair< unsigned int, unsigned int > componentIndexRange, std::vector< distributedCPUVec< double > > &componentVectors)
     Copies a single field component from a flattenedArray STL vector containing multiple component fields to a single field parallel distributed vector.
     
    void dftfe::vectorTools::copyFlattenedDealiiVecToSingleCompVec (const distributedCPUVec< double > &flattenedArray, const unsigned int totalNumberComponents, const std::pair< unsigned int, unsigned int > componentIndexRange, std::vector< distributedCPUVec< double > > &componentVectors, const bool isFlattenedDealiiGhostValuesUpdated=false)
     Copies a single field component from a flattenedArray parallel distributed vector containing multiple component fields to a single field parallel distributed vector.
     
    void dftfe::vectorTools::copySingleCompVecToFlattenedDealiiVec (distributedCPUVec< double > &flattenedArray, const unsigned int totalNumberComponents, const std::pair< unsigned int, unsigned int > componentIndexRange, const std::vector< distributedCPUVec< double > > &componentVectors)
     Copies to a flattenedArray parallel distributed vector containing multiple component fields from a single field parallel distributed vector.
     
    void dftfe::vectorTools::copySingleCompVecToFlattenedSTLVec (std::vector< double > &flattenedArray, const unsigned int totalNumberComponents, const std::pair< unsigned int, unsigned int > componentIndexRange, const std::vector< distributedCPUVec< double > > &componentVectors)
     Copies to a flattenedArray stl vector containing multiple component fields from a single field parallel distributed vector.
     
    std::pair< dealii::Point< 3 >, dealii::Point< 3 > > dftfe::vectorTools::createBoundingBoxTriaLocallyOwned (const dealii::DoFHandler< 3 > &dofHandler)
     
    void dftfe::vectorTools::classifyInteriorSurfaceNodesInCell (const dealii::MatrixFree< 3, double > &matrix_free_data, const unsigned int mfDofHandlerIndex, std::vector< unsigned int > &nodesPerCellClassificationMap)
     
    void dftfe::vectorTools::classifyInteriorSurfaceNodesInGlobalArray (const dealii::MatrixFree< 3, double > &matrix_free_data, const unsigned int mfDofHandlerIndex, const dealii::AffineConstraints< double > &constraintMatrix, std::vector< unsigned int > &nodesPerCellClassificationMap, std::vector< unsigned int > &globalArrayClassificationMap)
     
    +
    + + + + diff --git a/vector_utilities_8h_source.html b/vector_utilities_8h_source.html new file mode 100644 index 000000000..807592c32 --- /dev/null +++ b/vector_utilities_8h_source.html @@ -0,0 +1,550 @@ + + + + + + + +DFT-FE: workspace/include/vectorUtilities.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    vectorUtilities.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
    +
    4// authors.
    +
    5//
    +
    6// This file is part of the DFT-FE code.
    +
    7//
    +
    8// The DFT-FE code is free software; you can use it, redistribute
    +
    9// it, and/or modify it under the terms of the GNU Lesser General
    +
    10// Public License as published by the Free Software Foundation; either
    +
    11// version 2.1 of the License, or (at your option) any later version.
    +
    12// The full text of the license can be found in the file LICENSE at
    +
    13// the top level of the DFT-FE distribution.
    +
    14//
    +
    15// ---------------------------------------------------------------------
    +
    16
    +
    17
    +
    18#ifndef vectorUtilities_h
    +
    19#define vectorUtilities_h
    +
    20
    +
    21#include <headers.h>
    +
    22#include <operator.h>
    +
    23
    +
    24
    +
    25
    +
    26namespace dftfe
    +
    27{
    +
    28 /**
    +
    29 * @brief Contains generic utils functions related to custom partitioned flattened dealii vector
    +
    30 *
    +
    31 * @author Phani Motamarri, Sambit Das
    +
    32 */
    +
    +
    33 namespace vectorTools
    +
    34 {
    +
    35 /** @brief Create constraint matrix using serial mesh.
    +
    36 * Temporary fix for a bug (Issue #7053) in deal.ii until it is resolved.
    +
    37 *
    +
    38 * @param[in] serial Triangulation which must be exactly same as the
    +
    39 * parallel triangulation associated with dofHandlerPar
    +
    40 * @param[in] parallel DofHandler
    +
    41 * @param[out] periodic hanging constraints.
    +
    42 * @param[out] only hanging constraints
    +
    43 */
    +
    44 void
    + +
    46 const dealii::Triangulation<3, 3> & serTria,
    +
    47 const dealii::DoFHandler<3> & dofHandlerPar,
    + + +
    50 const std::vector<std::vector<double>> &domainBoundingVectors,
    +
    51 dealii::AffineConstraints<double> & periodicHangingConstraints,
    +
    52 dealii::AffineConstraints<double> & onlyHangingConstraints,
    +
    53 const int verbosity,
    +
    54 const bool periodicX,
    +
    55 const bool periodicY,
    +
    56 const bool periodicZ);
    +
    57
    +
    58
    +
    59 /** @brief Creates a custom partitioned flattened dealii vector.
    +
    60 * stores multiple components asociated with a node sequentially.
    +
    61 *
    +
    62 * @param partitioner associated with single component vector
    +
    63 * @param blockSize number of components associated with each node
    +
    64 *
    +
    65 * @return flattenedArray custom partitioned dealii vector
    +
    66 */
    +
    67 template <typename T>
    +
    68 void
    + +
    70 const std::shared_ptr<const dealii::Utilities::MPI::Partitioner>
    + +
    72 const unsigned int blockSize,
    + +
    74
    +
    75
    +
    76
    +
    77 /** @brief Creates a cell local index set map for flattened array
    +
    78 *
    +
    79 * @param partitioner associated with the flattened array
    +
    80 * @param matrix_free_data object pointer associated with the matrix free data structure
    +
    81 * @param blockSize number of components associated with each node
    +
    82 *
    +
    83 * @return flattenedArrayMacroCellLocalProcIndexId macrocell's subcell local proc index map
    +
    84 * @return flattenedArrayCellLocalProcIndexId cell local proc index map
    +
    85 */
    +
    86 void
    + +
    88 const std::shared_ptr<
    + + +
    91 const dealii::MatrixFree<3, double> &matrix_free_data,
    +
    92 const unsigned int mfDofHandlerIndex,
    +
    93 const unsigned int blockSize,
    +
    94 std::vector<std::vector<dealii::types::global_dof_index>>
    + +
    96 std::vector<std::vector<dealii::types::global_dof_index>>
    + +
    98
    +
    99
    +
    100 /** @brief Creates a cell local index set map for flattened array
    +
    101 *
    +
    102 * @param partitioner associated with the flattened array
    +
    103 * @param matrix_free_data object pointer associated with the matrix free data structure
    +
    104 * @param blockSize number of components associated with each node
    +
    105 *
    +
    106 * @return flattenedArrayMacroCellLocalProcIndexId macrocell's subcell local proc index map
    +
    107 * @return flattenedArrayCellLocalProcIndexId cell local proc index map
    +
    108 */
    +
    109 void
    + +
    111 const std::shared_ptr<
    + +
    113 & partitioner,
    +
    114 const dealii::MatrixFree<3, double> &matrix_free_data,
    +
    115 const unsigned int mfDofHandlerIndex,
    +
    116 const unsigned int blockSize,
    +
    117 std::vector<dealii::types::global_dof_index>
    + +
    119 std::vector<unsigned int> &normalCellIdToMacroCellIdMap,
    +
    120 std::vector<unsigned int> &macroCellIdToNormalCellIdMap,
    +
    121 std::vector<dealii::types::global_dof_index>
    + +
    123
    +
    124 /** @brief Creates a cell local index set map for flattened array
    +
    125 *
    +
    126 * @param partitioner associated with the flattened array
    +
    127 * @param matrix_free_data object pointer associated with the matrix free data structure
    +
    128 * @param blockSize number of components associated with each node
    +
    129 *
    +
    130 * @return flattenedArrayMacroCellLocalProcIndexId macrocell's subcell local proc index map
    +
    131 * @return flattenedArrayCellLocalProcIndexId cell local proc index map
    +
    132 */
    +
    133 void
    + +
    135 const std::shared_ptr<
    + +
    137 & partitioner,
    +
    138 const dealii::MatrixFree<3, double> &matrix_free_data,
    +
    139 const unsigned int mfDofHandlerIndex,
    +
    140 const unsigned int blockSize,
    +
    141 std::vector<dealii::types::global_dof_index>
    + +
    143
    +
    144
    +
    145#ifdef USE_COMPLEX
    +
    146 /** @brief Copies a single field component from a flattenedArray STL
    +
    147 * vector containing multiple component fields to a 2-component field (real
    +
    148 * and complex) parallel distributed vector.
    +
    149 *
    +
    150 * @param[in] flattenedArray flattened STL vector with multiple component
    +
    151 * fields
    +
    152 * @param[in] totalNumberComponents total number of component fiels in
    +
    153 * flattenedArray
    +
    154 * @param[in] componentIndexRange desired range field components
    +
    155 * [componentIndexRange.first,componentIndexRange.second)
    +
    156 * @param[in] localProcDofIndicesReal local dof indices in the current
    +
    157 * processor which correspond to component-1 of 2-component parallel
    +
    158 * distributed array
    +
    159 * @param[in] localProcDofIndicesImag local dof indices in the current
    +
    160 * processor which correspond to component-2 of 2-component parallel
    +
    161 * distributed array
    +
    162 * @param[out] componentVectors vector of two component field parallel
    +
    163 * distributed vectors with the values corresponding to fields of
    +
    164 * componentIndexRange of flattenedArray. componentVectors is expected to be
    +
    165 * of the size componentIndexRange.second-componentIndexRange.first.
    +
    166 * Further, each entry of componentVectors is assumed to be already
    +
    167 * initialized with the 2-component version of the same single component
    +
    168 * partitioner used in the creation of the flattenedArray partitioner.
    +
    169 */
    +
    170 void
    + +
    172 const std::complex<double> * flattenedArray,
    +
    173 const unsigned int totalNumberComponents,
    +
    174 const unsigned int localVectorSize,
    +
    175 const std::pair<unsigned int, unsigned int> componentIndexRange,
    +
    176 const std::vector<dealii::types::global_dof_index>
    + +
    178 const std::vector<dealii::types::global_dof_index>
    + + +
    181
    +
    182 void
    + +
    184 const std::complex<double> * flattenedArray,
    +
    185 const unsigned int totalNumberComponents,
    +
    186 const unsigned int localVectorSize,
    +
    187 const std::pair<unsigned int, unsigned int> componentIndexRange,
    +
    188
    + +
    190
    +
    191#else
    +
    192 /** @brief Copies a single field component from a flattenedArray STL
    +
    193 * vector containing multiple component fields to a single field parallel
    +
    194 * distributed vector.
    +
    195 *
    +
    196 * @param[in] flattenedArray flattened STL vector with multiple component
    +
    197 * fields
    +
    198 * @param[in] totalNumberComponents total number of component fiels in
    +
    199 * flattenedArray
    +
    200 * @param[in] componentIndexRange desired range field components
    +
    201 * [componentIndexRange.first,componentIndexRange.second)
    +
    202 * @param[out] componentVectors vector of parallel distributed vectors with
    +
    203 * fields corresponding to componentIndexRange. componentVectors is expected
    +
    204 * to be of the size componentIndexRange.second-componentIndexRange.first.
    +
    205 * Further, each entry of componentVectors is assumed to be already
    +
    206 * initialized with the same single component partitioner used in the
    +
    207 * creation of the flattenedArray partitioner.
    +
    208 */
    +
    209 void
    + +
    211 const double * flattenedArray,
    +
    212 const unsigned int totalNumberComponents,
    +
    213 const unsigned int localVectorSize,
    +
    214 const std::pair<unsigned int, unsigned int> componentIndexRange,
    + +
    216
    +
    217#endif
    +
    218
    +
    219#ifdef USE_COMPLEX
    +
    220 /** @brief Copies a single field component from a flattenedArray parallel distributed
    +
    221 * vector containing multiple component fields to a 2-component field (real
    +
    222 * and complex) parallel distributed vector.
    +
    223 *
    +
    224 * @param[in] flattenedArray flattened parallel distributed vector with
    +
    225 * multiple component fields
    +
    226 * @param[in] totalNumberComponents total number of component fiels in
    +
    227 * flattenedArray
    +
    228 * @param[in] componentIndexRange desired range field components
    +
    229 * [componentIndexRange.first,componentIndexRange.second)
    +
    230 * @param[in] localProcDofIndicesReal local dof indices in the current
    +
    231 * processor which correspond to component-1 of 2-component parallel
    +
    232 * distributed array
    +
    233 * @param[in] localProcDofIndicesImag local dof indices in the current
    +
    234 * processor which correspond to component-2 of 2-component parallel
    +
    235 * distributed array
    +
    236 * @param[out] componentVectors vector of two component field parallel
    +
    237 * distributed vectors with the values corresponding to fields of
    +
    238 * componentIndexRange of flattenedArray. componentVectors is expected to be
    +
    239 * of the size componentIndexRange.second-componentIndexRange.first.
    +
    240 * Further, each entry of componentVectors is assumed to be already
    +
    241 * initialized with the 2-component version of the same single component
    +
    242 * partitioner used in the creation of the flattenedArray partitioner.
    +
    243 * @param[in] isFlattenedDealiiGhostValuesUpdated default is false. Use
    +
    244 * true for optimization if update ghost values has already been called in
    +
    245 * the flattened dealii vec.
    +
    246 */
    +
    247 void
    + +
    249 const distributedCPUVec<std::complex<double>> &flattenedArray,
    +
    250 const unsigned int totalNumberComponents,
    +
    251 const std::pair<unsigned int, unsigned int> componentIndexRange,
    +
    252 const std::vector<dealii::types::global_dof_index>
    + +
    254 const std::vector<dealii::types::global_dof_index>
    + + +
    257 const bool isFlattenedDealiiGhostValuesUpdated = false);
    +
    258
    +
    259#else
    +
    260 /** @brief Copies a single field component from a flattenedArray parallel distributed
    +
    261 * vector containing multiple component fields to a single field parallel
    +
    262 * distributed vector.
    +
    263 *
    +
    264 * @param[in] flattenedArray flattened parallel distributed vector with
    +
    265 * multiple component fields
    +
    266 * @param[in] totalNumberComponents total number of component fiels in
    +
    267 * flattenedArray
    +
    268 * @param[in] componentIndexRange desired range field components
    +
    269 * [componentIndexRange.first,componentIndexRange.second)
    +
    270 * @param[out] componentVectors vector of parallel distributed vectors with
    +
    271 * fields corresponding to componentIndexRange. componentVectors is expected
    +
    272 * to be of the size componentIndexRange.second-componentIndexRange.first.
    +
    273 * Further, each entry of componentVectors is assumed to be already
    +
    274 * initialized with the same single component partitioner used in the
    +
    275 * creation of the flattenedArray partitioner.
    +
    276 * @param[in] isFlattenedDealiiGhostValuesUpdated default is false. Use
    +
    277 * true for optimization if update ghost values has already been called in
    +
    278 * the flattened dealii vec.
    +
    279 */
    +
    280 void
    + + +
    283 const unsigned int totalNumberComponents,
    +
    284 const std::pair<unsigned int, unsigned int> componentIndexRange,
    + +
    286 const bool isFlattenedDealiiGhostValuesUpdated = false);
    +
    287
    +
    288#endif
    +
    289
    +
    290#ifdef USE_COMPLEX
    +
    291 /** @brief Copies to a flattenedArray parallel distributed
    +
    292 * vector containing multiple component fields from a 2-component field
    +
    293 * (real and complex) parallel distributed vector.
    +
    294 *
    +
    295 * @param[out] flattenedArray flattened parallel distributed vector with
    +
    296 * multiple component fields
    +
    297 * @param[in] totalNumberComponents total number of component fiels in
    +
    298 * flattenedArray
    +
    299 * @param[in] componentIndexRange desired range field components
    +
    300 * [componentIndexRange.first,componentIndexRange.second)
    +
    301 * @param[in] localProcDofIndicesReal local dof indices in the current
    +
    302 * processor which correspond to component-1 of 2-component parallel
    +
    303 * distributed array
    +
    304 * @param[in] localProcDofIndicesImag local dof indices in the current
    +
    305 * processor which correspond to component-2 of 2-component parallel
    +
    306 * distributed array
    +
    307 * @param[in] componentVectors vector of two component field parallel
    +
    308 * distributed vectors with the values corresponding to fields of
    +
    309 * componentIndexRange of flattenedArray. componentVectors is expected to be
    +
    310 * of the size componentIndexRange.second-componentIndexRange.first.
    +
    311 * Further, each entry of componentVectors is assumed to be already
    +
    312 * initialized with the 2-component version of the same single component
    +
    313 * partitioner used in the creation of the flattenedArray partitioner.
    +
    314 */
    +
    315 void
    + +
    317 distributedCPUVec<std::complex<double>> & flattenedArray,
    +
    318 const unsigned int totalNumberComponents,
    +
    319 const std::pair<unsigned int, unsigned int> componentIndexRange,
    +
    320 const std::vector<dealii::types::global_dof_index>
    + +
    322 const std::vector<dealii::types::global_dof_index>
    + +
    324 const std::vector<distributedCPUVec<double>> &componentVectors);
    +
    325
    +
    326#else
    +
    327 /** @brief Copies to a flattenedArray parallel distributed
    +
    328 * vector containing multiple component fields from a single field parallel
    +
    329 * distributed vector.
    +
    330 *
    +
    331 * @param[out] flattenedArray flattened parallel distributed vector with
    +
    332 * multiple component fields
    +
    333 * @param[in] totalNumberComponents total number of component fiels in
    +
    334 * flattenedArray
    +
    335 * @param[in] componentIndexRange desired range field components
    +
    336 * [componentIndexRange.first,componentIndexRange.second)
    +
    337 * @param[in] componentVectors vector of parallel distributed vectors with
    +
    338 * fields corresponding to componentIndexRange. componentVectors is expected
    +
    339 * to be of the size componentIndexRange.second-componentIndexRange.first.
    +
    340 * Further, each entry of componentVectors is assumed to be already
    +
    341 * initialized with the same single component partitioner used in the
    +
    342 * creation of the flattenedArray partitioner.
    +
    343 */
    +
    344 void
    + + +
    347 const unsigned int totalNumberComponents,
    +
    348 const std::pair<unsigned int, unsigned int> componentIndexRange,
    +
    349 const std::vector<distributedCPUVec<double>> &componentVectors);
    +
    350
    +
    351#endif
    +
    352
    +
    353#ifdef USE_COMPLEX
    +
    354 /** @brief Copies to a flattenedArray stl
    +
    355 * vector containing multiple component fields from a 2-component field
    +
    356 * (real and complex) parallel distributed vector.
    +
    357 *
    +
    358 * @param[out] flattenedArray flattened stl vector with multiple component
    +
    359 * fields
    +
    360 * @param[in] totalNumberComponents total number of component fiels in
    +
    361 * flattenedArray
    +
    362 * @param[in] componentIndexRange desired range field components
    +
    363 * [componentIndexRange.first,componentIndexRange.second)
    +
    364 * @param[in] localProcDofIndicesReal local dof indices in the current
    +
    365 * processor which correspond to component-1 of 2-component parallel
    +
    366 * distributed array
    +
    367 * @param[in] localProcDofIndicesImag local dof indices in the current
    +
    368 * processor which correspond to component-2 of 2-component parallel
    +
    369 * distributed array
    +
    370 * @param[in] componentVectors vector of two component field parallel
    +
    371 * distributed vectors with the values corresponding to fields of
    +
    372 * componentIndexRange of flattenedArray. componentVectors is expected to be
    +
    373 * of the size componentIndexRange.second-componentIndexRange.first.
    +
    374 * Further, each entry of componentVectors is assumed to be already
    +
    375 * initialized with the 2-component version of the same single component
    +
    376 * partitioner used in the creation of the flattenedArray partitioner.
    +
    377 */
    +
    378 void
    + +
    380 std::vector<std::complex<double>> & flattenedArray,
    +
    381 const unsigned int totalNumberComponents,
    +
    382 const std::pair<unsigned int, unsigned int> componentIndexRange,
    +
    383 const std::vector<dealii::types::global_dof_index>
    + +
    385 const std::vector<dealii::types::global_dof_index>
    + +
    387 const std::vector<distributedCPUVec<double>> &componentVectors);
    +
    388
    +
    389#else
    +
    390 /** @brief Copies to a flattenedArray stl
    +
    391 * vector containing multiple component fields from a single field parallel
    +
    392 * distributed vector.
    +
    393 *
    +
    394 * @param[out] flattenedArray flattened stl vector with multiple component
    +
    395 * fields
    +
    396 * @param[in] totalNumberComponents total number of component fiels in
    +
    397 * flattenedArray
    +
    398 * @param[in] componentIndexRange desired range field components
    +
    399 * [componentIndexRange.first,componentIndexRange.second)
    +
    400 * @param[in] componentVectors vector of parallel distributed vectors with
    +
    401 * fields corresponding to componentIndexRange. componentVectors is expected
    +
    402 * to be of the size componentIndexRange.second-componentIndexRange.first.
    +
    403 * Further, each entry of componentVectors is assumed to be already
    +
    404 * initialized with the same single component partitioner used in the
    +
    405 * creation of the flattenedArray partitioner.
    +
    406 */
    +
    407 void
    + +
    409 std::vector<double> & flattenedArray,
    +
    410 const unsigned int totalNumberComponents,
    +
    411 const std::pair<unsigned int, unsigned int> componentIndexRange,
    +
    412 const std::vector<distributedCPUVec<double>> &componentVectors);
    +
    413
    +
    414#endif
    +
    415
    +
    416 std::pair<dealii::Point<3>, dealii::Point<3>>
    +
    417 createBoundingBoxTriaLocallyOwned(const dealii::DoFHandler<3> &dofHandler);
    +
    418
    +
    419
    +
    420 void
    + +
    422 const dealii::MatrixFree<3, double> &matrix_free_data,
    +
    423 const unsigned int mfDofHandlerIndex,
    +
    424 std::vector<unsigned int> & nodesPerCellClassificationMap);
    +
    425
    +
    426
    +
    427 void
    + +
    429 const dealii::MatrixFree<3, double> & matrix_free_data,
    +
    430 const unsigned int mfDofHandlerIndex,
    +
    431 const dealii::AffineConstraints<double> &constraintMatrix,
    +
    432 std::vector<unsigned int> & nodesPerCellClassificationMap,
    +
    433 std::vector<unsigned int> & globalArrayClassificationMap);
    +
    434
    +
    435
    +
    436
    +
    437 } // namespace vectorTools
    +
    +
    438} // namespace dftfe
    +
    439#endif
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    +
    A class template to store the communication pattern (i.e., which entries/nodes to receive from which ...
    Definition MPIPatternP2P.h:57
    + +
    void copySingleCompVecToFlattenedDealiiVec(distributedCPUVec< double > &flattenedArray, const unsigned int totalNumberComponents, const std::pair< unsigned int, unsigned int > componentIndexRange, const std::vector< distributedCPUVec< double > > &componentVectors)
    Copies to a flattenedArray parallel distributed vector containing multiple component fields from a si...
    +
    void createDealiiVector(const std::shared_ptr< const dealii::Utilities::MPI::Partitioner > &partitioner, const unsigned int blockSize, distributedCPUVec< T > &flattenedArray)
    Creates a custom partitioned flattened dealii vector. stores multiple components asociated with a nod...
    +
    void computeCellLocalIndexSetMap(const std::shared_ptr< const utils::mpi::MPIPatternP2P< dftfe::utils::MemorySpace::HOST > > &partitioner, const dealii::MatrixFree< 3, double > &matrix_free_data, const unsigned int mfDofHandlerIndex, const unsigned int blockSize, std::vector< std::vector< dealii::types::global_dof_index > > &flattenedArrayMacroCellLocalProcIndexId, std::vector< std::vector< dealii::types::global_dof_index > > &flattenedArrayCellLocalProcIndexId)
    Creates a cell local index set map for flattened array.
    +
    std::pair< dealii::Point< 3 >, dealii::Point< 3 > > createBoundingBoxTriaLocallyOwned(const dealii::DoFHandler< 3 > &dofHandler)
    +
    void createParallelConstraintMatrixFromSerial(const dealii::Triangulation< 3, 3 > &serTria, const dealii::DoFHandler< 3 > &dofHandlerPar, const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const std::vector< std::vector< double > > &domainBoundingVectors, dealii::AffineConstraints< double > &periodicHangingConstraints, dealii::AffineConstraints< double > &onlyHangingConstraints, const int verbosity, const bool periodicX, const bool periodicY, const bool periodicZ)
    Create constraint matrix using serial mesh. Temporary fix for a bug (Issue #7053) in deal....
    +
    void copySingleCompVecToFlattenedSTLVec(std::vector< double > &flattenedArray, const unsigned int totalNumberComponents, const std::pair< unsigned int, unsigned int > componentIndexRange, const std::vector< distributedCPUVec< double > > &componentVectors)
    Copies to a flattenedArray stl vector containing multiple component fields from a single field parall...
    +
    void classifyInteriorSurfaceNodesInGlobalArray(const dealii::MatrixFree< 3, double > &matrix_free_data, const unsigned int mfDofHandlerIndex, const dealii::AffineConstraints< double > &constraintMatrix, std::vector< unsigned int > &nodesPerCellClassificationMap, std::vector< unsigned int > &globalArrayClassificationMap)
    +
    void copyFlattenedDealiiVecToSingleCompVec(const distributedCPUVec< double > &flattenedArray, const unsigned int totalNumberComponents, const std::pair< unsigned int, unsigned int > componentIndexRange, std::vector< distributedCPUVec< double > > &componentVectors, const bool isFlattenedDealiiGhostValuesUpdated=false)
    Copies a single field component from a flattenedArray parallel distributed vector containing multiple...
    +
    void copyFlattenedSTLVecToSingleCompVec(const double *flattenedArray, const unsigned int totalNumberComponents, const unsigned int localVectorSize, const std::pair< unsigned int, unsigned int > componentIndexRange, std::vector< distributedCPUVec< double > > &componentVectors)
    Copies a single field component from a flattenedArray STL vector containing multiple component fields...
    +
    void classifyInteriorSurfaceNodesInCell(const dealii::MatrixFree< 3, double > &matrix_free_data, const unsigned int mfDofHandlerIndex, std::vector< unsigned int > &nodesPerCellClassificationMap)
    +
    Definition pseudoPotentialToDftfeConverter.cc:34
    +
    dealii::LinearAlgebra::distributed::Vector< elem_type, dealii::MemorySpace::Host > distributedCPUVec
    Definition headers.h:97
    + +
    + + + + diff --git a/vself_bins_manager_8h.html b/vself_bins_manager_8h.html new file mode 100644 index 000000000..8a5713368 --- /dev/null +++ b/vself_bins_manager_8h.html @@ -0,0 +1,109 @@ + + + + + + + +DFT-FE: workspace/include/vselfBinsManager.h File Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    vselfBinsManager.h File Reference
    +
    +
    +
    #include <headers.h>
    +#include "constraintMatrixInfo.h"
    +#include "dftParameters.h"
    +#include "FEBasisOperations.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  dftfe::vselfBinsManager< FEOrder, FEOrderElectro >
     Categorizes atoms into bins for efficient solution of nuclear electrostatic self-potential. template parameter FEOrderElectro is the finite element polynomial order. More...
     
    + + + +

    +Namespaces

    namespace  dftfe
     
    +
    + + + + diff --git a/vself_bins_manager_8h_source.html b/vself_bins_manager_8h_source.html new file mode 100644 index 000000000..786c00cb2 --- /dev/null +++ b/vself_bins_manager_8h_source.html @@ -0,0 +1,523 @@ + + + + + + + +DFT-FE: workspace/include/vselfBinsManager.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    DFT-FE 1.1.0-pre +
    +
    Density Functional Theory With Finite-Elements
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    vselfBinsManager.h
    +
    +
    +Go to the documentation of this file.
    1// ---------------------------------------------------------------------
    +
    2//
    +
    3// Copyright (c) 2017-2022 The Regents of the University of Michigan and DFT-FE
    +
    4// authors.
    +
    5//
    +
    6// This file is part of the DFT-FE code.
    +
    7//
    +
    8// The DFT-FE code is free software; you can use it, redistribute
    +
    9// it, and/or modify it under the terms of the GNU Lesser General
    +
    10// Public License as published by the Free Software Foundation; either
    +
    11// version 2.1 of the License, or (at your option) any later version.
    +
    12// The full text of the license can be found in the file LICENSE at
    +
    13// the top level of the DFT-FE distribution.
    +
    14//
    +
    15// ---------------------------------------------------------------------
    +
    16//
    +
    17
    +
    18#include <headers.h>
    + +
    20#include "dftParameters.h"
    +
    21#include "FEBasisOperations.h"
    +
    22
    +
    23#ifndef vselfBinsManager_H_
    +
    24# define vselfBinsManager_H_
    +
    25
    +
    26namespace dftfe
    +
    27{
    +
    28 /**
    +
    29 * @brief Categorizes atoms into bins for efficient solution of nuclear electrostatic self-potential.
    +
    30 * template parameter FEOrderElectro is the finite element polynomial order.
    +
    31 *
    +
    32 * @author Sambit Das, Phani Motamarri
    +
    33 */
    +
    34 template <unsigned int FEOrder, unsigned int FEOrderElectro>
    +
    + +
    36 {
    +
    37 public:
    +
    38 /**
    +
    39 * @brief Constructor
    +
    40 *
    +
    41 * @param mpi_comm_parent parent mpi communicator
    +
    42 * @param mpi_comm_domain domain decomposition mpi communicator
    +
    43 */
    + + + + +
    48
    +
    49
    +
    50 /**
    +
    51 * @brief Categorize atoms into bins based on self-potential ball radius
    +
    52 * around each atom such that no two atoms in each bin has overlapping
    +
    53 * balls.
    +
    54 *
    +
    55 * @param[out] constraintsVector constraintsVector to which the vself bins
    +
    56 * solve constraint matrices will be pushed back
    +
    57 * @param[in] dofHandler DofHandler object
    +
    58 * @param[in] constraintMatrix dealii::AffineConstraints<double> which was
    +
    59 * used for the total electrostatics solve
    +
    60 * @param[in] atomLocations global atom locations and charge values data
    +
    61 * @param[in] imagePositions image atoms positions data
    +
    62 * @param[in] imageIds image atoms Ids data
    +
    63 * @param[in] imageCharges image atoms charge values data
    +
    64 * @param[in] radiusAtomBall self-potential ball radius
    +
    65 */
    +
    66 void
    + +
    68 std::vector<const dealii::AffineConstraints<double> *> &constraintsVector,
    +
    69 const dealii::AffineConstraints<double> &onlyHangingNodeConstraints,
    +
    70 const dealii::DoFHandler<3> & dofHandler,
    +
    71 const dealii::AffineConstraints<double> &constraintMatrix,
    +
    72 const std::vector<std::vector<double>> & atomLocations,
    +
    73 const std::vector<std::vector<double>> & imagePositions,
    +
    74 const std::vector<int> & imageIds,
    +
    75 const std::vector<double> & imageCharges,
    +
    76 const double radiusAtomBall);
    +
    77
    +
    78 /**
    +
    79 * @brief Categorize atoms into bins based on self-potential ball radius
    +
    80 * around each atom such that no two atoms in each bin has overlapping
    +
    81 * balls.
    +
    82 *
    +
    83 * @param[out] constraintsVector constraintsVector to which the vself bins
    +
    84 * solve constraint matrices will be pushed back
    +
    85 * @param[in] dofHandler DofHandler object
    +
    86 * @param[in] constraintMatrix dealii::AffineConstraints<double> which was
    +
    87 * used for the total electrostatics solve
    +
    88 * @param[in] atomLocations global atom locations and charge values data
    +
    89 * @param[in] imagePositions image atoms positions data
    +
    90 * @param[in] imageIds image atoms Ids data
    +
    91 * @param[in] imageCharges image atoms charge values data
    +
    92 */
    +
    93 void
    + +
    95 std::vector<const dealii::AffineConstraints<double> *> &constraintsVector,
    +
    96 const dealii::AffineConstraints<double> &onlyHangingNodeConstraints,
    +
    97 const dealii::DoFHandler<3> & dofHandler,
    +
    98 const dealii::AffineConstraints<double> &constraintMatrix,
    +
    99 const std::vector<std::vector<double>> & atomLocations,
    +
    100 const std::vector<std::vector<double>> & imagePositions,
    +
    101 const std::vector<int> & imageIds,
    +
    102 const std::vector<double> & imageCharges,
    +
    103 const bool vselfPerturbationUpdateForStress = false);
    +
    104
    +
    105
    +
    106 /**
    +
    107 * @brief Solve nuclear electrostatic self-potential of atoms in each bin one-by-one
    +
    108 *
    +
    109 * @param[in] matrix_free_data MatrixFree object
    +
    110 * @param[in] offset MatrixFree object starting offset for vself bins solve
    +
    111 * @param[out] phiExt sum of the self-potential fields of all atoms and
    +
    112 * image atoms
    +
    113 * @param[in] phiExtConstraintMatrix constraintMatrix corresponding to
    +
    114 * phiExt
    +
    115 * @param[in] imagePositions image atoms positions data
    +
    116 * @param[in] imageIds image atoms Ids data
    +
    117 * @param[in] imageCharges image atoms charge values data *
    +
    118 * @param[out] localVselfs peak self-potential values of atoms in the local
    +
    119 * processor
    +
    120 */
    +
    121 void
    + +
    123 const std::shared_ptr<
    + +
    125 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
    + + + + + + + + + + + + + + + + + + + + + + + + +
    150
    +
    151# ifdef DFTFE_WITH_DEVICE
    +
    152 /**
    +
    153 * @brief Solve nuclear electrostatic self-potential of atoms in each bin one-by-one
    +
    154 *
    +
    155 * @param[in] matrix_free_data MatrixFree object
    +
    156 * @param[in] offset MatrixFree object starting offset for vself bins solve
    +
    157 * @param[out] phiExt sum of the self-potential fields of all atoms and
    +
    158 * image atoms
    +
    159 * @param[in] phiExtConstraintMatrix constraintMatrix corresponding to
    +
    160 * phiExt
    +
    161 * @param[in] imagePositions image atoms positions data
    +
    162 * @param[in] imageIds image atoms Ids data
    +
    163 * @param[in] imageCharges image atoms charge values data *
    +
    164 * @param[out] localVselfs peak self-potential values of atoms in the local
    +
    165 * processor
    +
    166 */
    +
    167 void
    + +
    169 const std::shared_ptr<
    + +
    171 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
    + + + + +
    176 const dftfe::utils::MemoryStorage<double,
    +
    177 dftfe::utils::MemorySpace::DEVICE>
    + + +
    180 dftfe::linearAlgebra::BLASWrapper<dftfe::utils::MemorySpace::DEVICE>>
    + + + + + + + + + + + + + + + + + + + + + + +
    203
    +
    204
    +
    205# endif
    +
    206
    +
    207 /**
    +
    208 * @brief Solve nuclear electrostatic self-potential of atoms in each bin in a perturbed domain (used for cell stress calculation)
    +
    209 *
    +
    210 */
    +
    211 void
    + +
    213 const std::shared_ptr<
    + +
    215 FEBasisOperations<double, double, dftfe::utils::MemorySpace::HOST>>
    + + + + + +
    221 const dftfe::utils::MemoryStorage<double,
    +
    222 dftfe::utils::MemorySpace::DEVICE>
    + + +
    225 dftfe::linearAlgebra::BLASWrapper<dftfe::utils::MemorySpace::DEVICE>>
    + +
    227# endif
    + + + + + + + +
    235
    +
    236 /// get const reference map of binIds and atomIds
    +
    237 const std::map<int, std::set<int>> &
    + +
    239
    +
    240 /// get const reference map of binIds and atomIds
    +
    241 const std::map<int, std::set<int>> &
    + +
    243
    +
    244 /// get const reference to map of global dof index and vself solve boundary
    +
    245 /// flag in each bin
    +
    246 const std::vector<std::map<dealii::types::global_dof_index, int>> &
    + +
    248
    +
    249 /// get const reference to map of global dof index and vself solve boundary
    +
    250 /// flag in each bin
    +
    251 const std::vector<std::map<dealii::types::global_dof_index, int>> &
    + +
    253
    +
    254 /// get const reference to map of global dof index and vself field initial
    +
    255 /// value in each bin
    +
    256 const std::vector<std::map<dealii::types::global_dof_index, int>> &
    + +
    258
    +
    259 /// get const reference to map of global dof index and vself field initial
    +
    260 /// value in each bin
    +
    261 const std::vector<
    +
    262 std::map<dealii::types::global_dof_index, dealii::Point<3>>> &
    + +
    264
    +
    265 /// get const reference to solved vself fields
    +
    266 const std::vector<distributedCPUVec<double>> &
    + +
    268
    +
    269 /// get const reference to del{vself}/del{R_i} fields
    +
    270 const std::vector<distributedCPUVec<double>> &
    + +
    272
    +
    273 /// perturbation of vself solution field to be used to evaluate the
    +
    274 /// Gateaux derivative of vself field with respect to affine strain
    +
    275 /// components using central finite difference
    +
    276 const std::vector<distributedCPUVec<double>> &
    + +
    278
    +
    279 /// get const reference to d_atomIdBinIdMapLocalAllImages
    +
    280 const std::map<unsigned int, unsigned int> &
    + +
    282
    +
    283 /// get stored adaptive ball radius
    +
    284 double
    + +
    286
    +
    287
    +
    288 private:
    +
    289 /**
    +
    290 * @brief locate underlying fem nodes for atoms in bins.
    +
    291 *
    +
    292 */
    +
    293 void
    +
    294 locateAtomsInBins(const dealii::DoFHandler<3> &dofHandler);
    +
    295
    +
    296 /**
    +
    297 * @brief sanity check for Dirichlet boundary conditions on the vself balls in each bin
    +
    298 *
    +
    299 */
    +
    300 void
    + +
    302 const dealii::DoFHandler<3> & dofHandler,
    +
    303 const dealii::AffineConstraints<double> &onlyHangingNodeConstraints);
    +
    304
    +
    305 /// storage for input atomLocations argument in createAtomBins function
    +
    306 std::vector<std::vector<double>> d_atomLocations;
    +
    307
    +
    308 /// storage for optimized constraints handling object
    + +
    310
    +
    311 /// vector of constraint matrices for vself bins
    +
    312 std::vector<dealii::AffineConstraints<double>> d_vselfBinConstraintMatrices;
    +
    313
    +
    314 /// map of binIds and atomIds
    +
    315 std::map<int, std::set<int>> d_bins;
    +
    316
    +
    317 /// map of binIds and atomIds and imageIds
    +
    318 std::map<int, std::set<int>> d_binsImages;
    +
    319
    +
    320 /// map of global dof index and vself solve boundary flag (chargeId or
    +
    321 // imageId+numberGlobalCharges) in each bin
    +
    322 std::vector<std::map<dealii::types::global_dof_index, int>> d_boundaryFlag;
    +
    323
    +
    324 /// map of global dof index and vself solve boundary flag (only chargeId)in
    +
    325 /// each bin
    +
    326 std::vector<std::map<dealii::types::global_dof_index, int>>
    + +
    328
    +
    329 /// map of global dof index to location of closest charge
    +
    330 std::vector<std::map<dealii::types::global_dof_index, dealii::Point<3>>>
    + +
    332
    +
    333 /// map of global dof index and vself field initial value in each bin
    +
    334 std::vector<std::map<dealii::types::global_dof_index, double>>
    + +
    336
    +
    337 /// map of global dof index and vself field initial value in each bin
    +
    338 std::vector<std::map<dealii::types::global_dof_index, int>>
    + +
    340
    +
    341 /// Internal data: stores the map of atom Id (only in the local processor)
    +
    342 /// to the vself bin Id. Populated in solve vself in Bins
    +
    343 std::map<unsigned int, unsigned int> d_atomIdBinIdMapLocalAllImages;
    +
    344
    +
    345 /// solved vself solution field for each bin
    +
    346 std::vector<distributedCPUVec<double>> d_vselfFieldBins;
    +
    347
    +
    348 /// solved del{vself}/del{R_i} solution field for each bin
    +
    349 std::vector<distributedCPUVec<double>> d_vselfFieldDerRBins;
    +
    350
    +
    351 /// perturbation of vself solution field to be used to evaluate the
    +
    352 /// Gateaux derivative of vself field with respect to affine strain
    +
    353 /// components using central finite difference
    +
    354 std::vector<distributedCPUVec<double>> d_vselfFieldPerturbedBins;
    +
    355
    +
    356 // std::vector<double> d_inhomoIdsColoredVecFlattened;
    +
    357
    +
    358 /// Map of locally relevant global dof index and the atomic charge in each
    +
    359 /// bin
    +
    360 std::vector<std::map<dealii::types::global_dof_index, double>> d_atomsInBin;
    +
    361
    +
    362 /// Vself ball radius. This is stored after the first call to createAtomBins
    +
    363 /// and reused for subsequent calls
    + +
    365
    + +
    367
    + + + +
    371 const unsigned int n_mpi_processes;
    +
    372 const unsigned int this_mpi_process;
    +
    373 dealii::ConditionalOStream pcout;
    +
    374 };
    +
    +
    375
    +
    376} // namespace dftfe
    +
    377#endif // vselfBinsManager_H_
    + +
    Namespace which declares the input parameters and the functions to parse them from the input paramete...
    Definition dftParameters.h:35
    +
    Overloads dealii's distribute and distribute_local_to_global functions associated with constraints cl...
    Definition constraintMatrixInfo.h:42
    +
    Base class for building the DFT operator and the action of operator on a vector.
    Definition operator.h:45
    +
    Categorizes atoms into bins for efficient solution of nuclear electrostatic self-potential....
    Definition vselfBinsManager.h:36
    +
    const MPI_Comm d_mpiInterCommKpts
    Definition vselfBinsManager.h:370
    +
    std::vector< std::map< dealii::types::global_dof_index, int > > d_boundaryFlagOnlyChargeId
    Definition vselfBinsManager.h:327
    +
    std::vector< dealii::AffineConstraints< double > > d_vselfBinConstraintMatrices
    vector of constraint matrices for vself bins
    Definition vselfBinsManager.h:312
    +
    void createAtomBins(std::vector< const dealii::AffineConstraints< double > * > &constraintsVector, const dealii::AffineConstraints< double > &onlyHangingNodeConstraints, const dealii::DoFHandler< 3 > &dofHandler, const dealii::AffineConstraints< double > &constraintMatrix, const std::vector< std::vector< double > > &atomLocations, const std::vector< std::vector< double > > &imagePositions, const std::vector< int > &imageIds, const std::vector< double > &imageCharges, const double radiusAtomBall)
    Categorize atoms into bins based on self-potential ball radius around each atom such that no two atom...
    +
    std::vector< std::map< dealii::types::global_dof_index, double > > d_atomsInBin
    Definition vselfBinsManager.h:360
    +
    const std::vector< std::map< dealii::types::global_dof_index, int > > & getBoundaryFlagsBinsOnlyChargeId() const
    +
    const std::vector< std::map< dealii::types::global_dof_index, int > > & getBoundaryFlagsBins() const
    +
    std::map< int, std::set< int > > d_binsImages
    map of binIds and atomIds and imageIds
    Definition vselfBinsManager.h:318
    +
    double getStoredAdaptiveBallRadius() const
    get stored adaptive ball radius
    +
    void solveVselfInBins(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int offset, const unsigned int matrixFreeQuadratureIdAX, const dealii::AffineConstraints< double > &hangingPeriodicConstraintMatrix, const std::vector< std::vector< double > > &imagePositions, const std::vector< int > &imageIds, const std::vector< double > &imageCharges, std::vector< std::vector< double > > &localVselfs, std::map< dealii::CellId, std::vector< double > > &bQuadValuesAllAtoms, std::map< dealii::CellId, std::vector< int > > &bQuadAtomIdsAllAtoms, std::map< dealii::CellId, std::vector< int > > &bQuadAtomIdsAllAtomsImages, std::map< dealii::CellId, std::vector< unsigned int > > &bCellNonTrivialAtomIds, std::vector< std::map< dealii::CellId, std::vector< unsigned int > > > &bCellNonTrivialAtomIdsBins, std::map< dealii::CellId, std::vector< unsigned int > > &bCellNonTrivialAtomImageIds, std::vector< std::map< dealii::CellId, std::vector< unsigned int > > > &bCellNonTrivialAtomImageIdsBins, const std::vector< double > &smearingWidths, std::vector< double > &smearedChargeScaling, const unsigned int smearedChargeQuadratureId, const bool useSmearedCharges=false, const bool isVselfPerturbationSolve=false)
    Solve nuclear electrostatic self-potential of atoms in each bin one-by-one.
    +
    std::vector< std::map< dealii::types::global_dof_index, double > > d_vselfBinField
    map of global dof index and vself field initial value in each bin
    Definition vselfBinsManager.h:335
    +
    std::vector< distributedCPUVec< double > > d_vselfFieldPerturbedBins
    Definition vselfBinsManager.h:354
    +
    std::map< int, std::set< int > > d_bins
    map of binIds and atomIds
    Definition vselfBinsManager.h:315
    +
    const std::vector< distributedCPUVec< double > > & getVselfFieldDerRBins() const
    get const reference to del{vself}/del{R_i} fields
    +
    const std::map< int, std::set< int > > & getAtomImageIdsBins() const
    get const reference map of binIds and atomIds
    +
    void locateAtomsInBins(const dealii::DoFHandler< 3 > &dofHandler)
    locate underlying fem nodes for atoms in bins.
    +
    std::vector< std::map< dealii::types::global_dof_index, int > > d_boundaryFlag
    map of global dof index and vself solve boundary flag (chargeId or
    Definition vselfBinsManager.h:322
    +
    dealii::ConditionalOStream pcout
    Definition vselfBinsManager.h:373
    +
    std::vector< std::map< dealii::types::global_dof_index, int > > d_closestAtomBin
    map of global dof index and vself field initial value in each bin
    Definition vselfBinsManager.h:339
    +
    const MPI_Comm d_mpiCommParent
    Definition vselfBinsManager.h:368
    +
    const std::vector< distributedCPUVec< double > > & getPerturbedVselfFieldBins() const
    +
    const unsigned int n_mpi_processes
    Definition vselfBinsManager.h:371
    +
    const dftParameters & d_dftParams
    Definition vselfBinsManager.h:366
    +
    std::vector< distributedCPUVec< double > > d_vselfFieldDerRBins
    solved del{vself}/del{R_i} solution field for each bin
    Definition vselfBinsManager.h:349
    +
    double d_storedAdaptiveBallRadius
    Definition vselfBinsManager.h:364
    +
    const std::vector< std::map< dealii::types::global_dof_index, int > > & getClosestAtomIdsBins() const
    +
    void solveVselfInBinsPerturbedDomain(const std::shared_ptr< dftfe::basis::FEBasisOperations< double, double, dftfe::utils::MemorySpace::HOST > > &basisOperationsPtr, const unsigned int mfBaseDofHandlerIndex, const unsigned int matrixFreeQuadratureIdAX, const unsigned int offset, const dealii::AffineConstraints< double > &hangingPeriodicConstraintMatrix, const std::vector< std::vector< double > > &imagePositions, const std::vector< int > &imageIds, const std::vector< double > &imageCharges, const std::vector< double > &smearingWidths, const unsigned int smearedChargeQuadratureId, const bool useSmearedCharges=false)
    Solve nuclear electrostatic self-potential of atoms in each bin in a perturbed domain (used for cell ...
    +
    vselfBinsManager(const MPI_Comm &mpi_comm_parent, const MPI_Comm &mpi_comm_domain, const MPI_Comm &mpi_intercomm_kpts, const dftParameters &dftParams)
    Constructor.
    +
    const std::vector< distributedCPUVec< double > > & getVselfFieldBins() const
    get const reference to solved vself fields
    +
    void createAtomBinsSanityCheck(const dealii::DoFHandler< 3 > &dofHandler, const dealii::AffineConstraints< double > &onlyHangingNodeConstraints)
    sanity check for Dirichlet boundary conditions on the vself balls in each bin
    +
    const std::map< int, std::set< int > > & getAtomIdsBins() const
    get const reference map of binIds and atomIds
    +
    const std::map< unsigned int, unsigned int > & getAtomIdBinIdMapLocalAllImages() const
    get const reference to d_atomIdBinIdMapLocalAllImages
    +
    std::vector< distributedCPUVec< double > > d_vselfFieldBins
    solved vself solution field for each bin
    Definition vselfBinsManager.h:346
    +
    std::vector< std::vector< double > > d_atomLocations
    storage for input atomLocations argument in createAtomBins function
    Definition vselfBinsManager.h:306
    +
    void updateBinsBc(std::vector< const dealii::AffineConstraints< double > * > &constraintsVector, const dealii::AffineConstraints< double > &onlyHangingNodeConstraints, const dealii::DoFHandler< 3 > &dofHandler, const dealii::AffineConstraints< double > &constraintMatrix, const std::vector< std::vector< double > > &atomLocations, const std::vector< std::vector< double > > &imagePositions, const std::vector< int > &imageIds, const std::vector< double > &imageCharges, const bool vselfPerturbationUpdateForStress=false)
    Categorize atoms into bins based on self-potential ball radius around each atom such that no two atom...
    +
    std::map< unsigned int, unsigned int > d_atomIdBinIdMapLocalAllImages
    Definition vselfBinsManager.h:343
    +
    const MPI_Comm mpi_communicator
    Definition vselfBinsManager.h:369
    +
    const std::vector< std::map< dealii::types::global_dof_index, dealii::Point< 3 > > > & getClosestAtomLocationsBins() const
    +
    const unsigned int this_mpi_process
    Definition vselfBinsManager.h:372
    +
    std::vector< std::map< dealii::types::global_dof_index, dealii::Point< 3 > > > d_dofClosestChargeLocationMap
    map of global dof index to location of closest charge
    Definition vselfBinsManager.h:331
    +
    dftUtils::constraintMatrixInfo d_constraintsOnlyHangingInfo
    storage for optimized constraints handling object
    Definition vselfBinsManager.h:309
    + + + +
    Definition FEBasisOperations.h:31
    +
    Definition pseudoPotentialToDftfeConverter.cc:34
    +
    + + + +